Skip to content

Commit d71d3e2

Browse files
Modify the order of diffusion and microphysics. Add radiation filter. Test 6Q1Q2 large scale forcing.
1 parent d9b66d9 commit d71d3e2

File tree

4 files changed

+26
-31
lines changed

4 files changed

+26
-31
lines changed

src/Iteration.cpp

Lines changed: 14 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -296,18 +296,6 @@ void vvm::Iteration::TimeMarching(vvm &model) {
296296
vvm::BoundaryProcess2D_all(model);
297297
model.t_poisson[(model.step-1)%model.TIMEROUTPUTSIZE] = timer.elapsed();
298298

299-
timer.reset();
300-
updateMean(model);
301-
#if defined(DIFFUSION_VVM)
302-
vvm::NumericalProcess::DiffusionAll(model);
303-
#else
304-
vvm::Turbulence::RKM_RKH(model);
305-
#endif
306-
// Nudging process to damp the gravity wave
307-
// vvm::NumericalProcess::Nudge_theta(model);
308-
// if (model.CASE != 2) vvm::NumericalProcess::Nudge_zeta(model);
309-
// vvm::NumericalProcess::Nudge_qv(model);
310-
model.t_diffusion[(model.step-1)%model.TIMEROUTPUTSIZE] = timer.elapsed();
311299

312300
timer.reset();
313301
#if defined(WATER)
@@ -377,7 +365,7 @@ void vvm::Iteration::TimeMarching(vvm &model) {
377365
birimp1d = model.birimp[i];
378366
zi_all1d = model.zi_all[i];
379367
ssat_all1d = model.ssat_all[i];
380-
w_all1d = model.w_all[i];
368+
w_all1d = model.w[i];
381369
pb_all1d = model.pb_all[i];
382370
dz_all1d = model.dz_all[i];
383371
precip_liq1d = &model.precip_liq[i];
@@ -416,6 +404,19 @@ void vvm::Iteration::TimeMarching(vvm &model) {
416404
vvm::BoundaryProcess2D_all(model);
417405
model.t_microphysics[(model.step-1)%model.TIMEROUTPUTSIZE] = timer.elapsed();
418406

407+
timer.reset();
408+
updateMean(model);
409+
#if defined(DIFFUSION_VVM)
410+
vvm::NumericalProcess::DiffusionAll(model);
411+
#else
412+
vvm::Turbulence::RKM_RKH(model);
413+
#endif
414+
// Nudging process to damp the gravity wave
415+
vvm::NumericalProcess::Nudge_theta(model);
416+
if (model.CASE != 2) vvm::NumericalProcess::Nudge_zeta(model);
417+
vvm::NumericalProcess::Nudge_qv(model);
418+
model.t_diffusion[(model.step-1)%model.TIMEROUTPUTSIZE] = timer.elapsed();
419+
419420
#if defined(TIMEFILTER)
420421
vvm::NumericalProcess::timeFilterAll(model);
421422
#endif

src/Rrtmgp.cpp

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -132,7 +132,7 @@ void vvm::Radiation::solve_radiation(vvm &model) {
132132
p_lay({i,k}) = model.pb[k];
133133
t_lay({i,k}) = model.th[i][k] * model.pib[k];
134134
o3_lay({i,k}) = std::max(o3_min, g1 * std::pow(model.pb[k]/100., g2) * std::exp(-model.pb[k]/100. / g3) * 1e-6);
135-
h2o_lay({i,k}) = model.qv[i][k];
135+
h2o_lay({i,k}) = std::max(model.qv[i][k], 0.);
136136
}
137137
for (int k = 1; k <= n_lev-1; k++) {
138138
p_lev({i,k}) = model.pb_lev[k];
@@ -177,7 +177,6 @@ void vvm::Radiation::solve_radiation(vvm &model) {
177177
rei({i,k}) = std::min(std::max(model.diag_effi[i][k], effimin), effimax); // (m)
178178
}
179179
}
180-
printf("a1\n");
181180

182181

183182
// No aerosol in this run
@@ -308,8 +307,6 @@ void vvm::Radiation::solve_radiation(vvm &model) {
308307
// Status::print_message("Solving the longwave radiation.");
309308
printf("Solving the longwave radiation.\n");
310309

311-
auto time_start = std::chrono::high_resolution_clock::now();
312-
313310
rad_lw.solve(
314311
switch_fluxes,
315312
switch_cloud_optics,
@@ -388,7 +385,6 @@ void vvm::Radiation::solve_radiation(vvm &model) {
388385
}
389386
}
390387
}
391-
printf("test3\n");
392388

393389

394390
////// RUN THE SHORTWAVE SOLVER //////
@@ -465,8 +461,6 @@ void vvm::Radiation::solve_radiation(vvm &model) {
465461
// Solve the radiation.
466462
Status::print_message("Solving the shortwave radiation.");
467463

468-
auto time_start = std::chrono::high_resolution_clock::now();
469-
470464
rad_sw.solve(
471465
switch_fluxes,
472466
switch_cloud_optics,

src/Turbulent.cpp

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -79,11 +79,11 @@ void vvm::Turbulence::Mparam(vvm &model, double **var_now, double **var_future)
7979
// model.rhou[k-1] * 0.5 * (model.RKM[i][k-1] + model.RKM[i-1][k-1]) * (model.rhow[k]*var_now[i][k] - model.rhow[k-1]*var_now[i][k-1]));
8080

8181
var_future[i][k] += model.rdx2 * model.dt *
82-
(0.5 * (model.RKM[i][k] + model.RKM[i][k-1]) * (var_now[i+1][k] - var_now[i][k]) -
83-
0.5 * (model.RKM[i-1][k] + model.RKM[i-1][k-1]) * (var_now[i][k] - var_now[i-1][k]))
84-
+ model.rdz2 * model.dt *
85-
(0.5 * (model.RKM[i][k] + model.RKM[i-1][k]) * (var_now[i][k+1] - var_now[i][k]) -
86-
0.5 * (model.RKM[i][k-1] + model.RKM[i-1][k-1]) * (var_now[i][k] - var_now[i][k-1]));
82+
(0.5 * (model.RKM[i][k] + model.RKM[i][k-1]) * (var_future[i+1][k] - var_future[i][k]) -
83+
0.5 * (model.RKM[i-1][k] + model.RKM[i-1][k-1]) * (var_future[i][k] - var_future[i-1][k]))
84+
+ model.rdz2 * model.dt / model.rhow[k] *
85+
(model.rhou[k] * 0.5 * (model.RKM[i][k] + model.RKM[i-1][k]) * (var_future[i][k+1] - var_future[i][k]) -
86+
model.rhou[k-1] * 0.5 * (model.RKM[i][k-1] + model.RKM[i-1][k-1]) * (var_future[i][k] - var_future[i][k-1]));
8787
}
8888
}
8989
return;
@@ -103,11 +103,11 @@ void vvm::Turbulence::Hparam(vvm &model, double **var_now, double **var_future)
103103
// model.rhow[k] * 0.5 * (model.RKH[i][k] + model.RKH[i][k-1]) * (model.rhou[k]*var_now[i][k] - model.rhou[k-1]*var_now[i][k-1]));
104104

105105
var_future[i][k] += model.rdx2 * model.dt *
106-
(0.5 * (model.RKH[i+1][k] + model.RKH[i][k]) * (var_now[i+1][k] - var_now[i][k]) -
107-
0.5 * (model.RKH[i][k] + model.RKH[i-1][k]) * (var_now[i][k] - var_now[i-1][k]))
108-
+ model.rdz2 * model.dt *
109-
(0.5 * (model.RKH[i][k+1] + model.RKH[i][k]) * (var_now[i][k+1] - var_now[i][k]) -
110-
0.5 * (model.RKH[i][k] + model.RKH[i][k-1]) * (var_now[i][k] - var_now[i][k-1]));
106+
(0.5 * (model.RKH[i+1][k] + model.RKH[i][k]) * (var_future[i+1][k] - var_future[i][k]) -
107+
0.5 * (model.RKH[i][k] + model.RKH[i-1][k]) * (var_future[i][k] - var_future[i-1][k]))
108+
+ model.rdz2 * model.dt / model.rhou[k] *
109+
(model.rhow[k+1] * 0.5 * (model.RKH[i][k+1] + model.RKH[i][k]) * (var_future[i][k+1] - var_future[i][k]) -
110+
model.rhow[k] * 0.5 * (model.RKH[i][k] + model.RKH[i][k-1]) * (var_future[i][k] - var_future[i][k-1]));
111111
}
112112
}
113113
return;

vvm_config.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
VVM_OUTPUTPATH=/home/Aaron/NextACC/2DVVM/DATA/6Q1Q2_radiation_nonudge_correctthv/
1+
VVM_OUTPUTPATH=/home/Aaron/NextACC/2DVVM/DATA/0417/6Q1Q2_nonudge_RKHMrho/
22
VVM_XRANGE=100000 # Domain for x [m]
33
VVM_ZRANGE=20000 # Domain for z [m]
44
VVM_DT=3 # dt [s]

0 commit comments

Comments
 (0)