Skip to content

Commit

Permalink
Merge branch 'development' into dg/moisture_model
Browse files Browse the repository at this point in the history
  • Loading branch information
debog authored Mar 5, 2024
2 parents 035a13b + e6833b6 commit d5cd9c0
Show file tree
Hide file tree
Showing 4 changed files with 14 additions and 4 deletions.
2 changes: 1 addition & 1 deletion Source/ERF.H
Original file line number Diff line number Diff line change
Expand Up @@ -707,7 +707,7 @@ private:
// mynn pbl lengthscale
"Lpbl",
// moisture vars
"qt", "qv", "qc", "qi", "qp", "qrain", "qsnow", "qgraup"
"qt", "qv", "qc", "qi", "qp", "qrain", "qsnow", "qgraup", "rain_accum",
#ifdef ERF_COMPUTE_ERROR
,"xvel_err", "yvel_err", "zvel_err", "pp_err"
#endif
Expand Down
2 changes: 1 addition & 1 deletion Source/Microphysics/Kessler/Init_Kessler.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ void Kessler::Init (const MultiFab& cons_in,
m_gtoe = grids;

MicVarMap.resize(m_qmoist_size);
MicVarMap = {MicVar_Kess::qt, MicVar_Kess::qv, MicVar_Kess::qcl, MicVar_Kess::qp};
MicVarMap = {MicVar_Kess::qt, MicVar_Kess::qv, MicVar_Kess::qcl, MicVar_Kess::qp, MicVar_Kess::rain_accum};

// initialize microphysics variables
for (auto ivar = 0; ivar < MicVar_Kess::NumVars; ++ivar) {
Expand Down
3 changes: 2 additions & 1 deletion Source/Microphysics/Kessler/Kessler.H
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,7 @@ namespace MicVar_Kess {
// precipitating vars
qp, // total precip
// derived vars
rain_accum,
NumVars
};
}
Expand Down Expand Up @@ -127,7 +128,7 @@ public:

private:
// Number of qmoist variables (qt, qv, qcl, qp)
int m_qmoist_size = 4;
int m_qmoist_size = 5;

// Number of qstate variables
int m_qstate_size = 3;
Expand Down
11 changes: 10 additions & 1 deletion Source/Microphysics/Kessler/Kessler.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,8 @@ if(solverChoice.moisture_type == MoistureType::Kessler){
auto pres = mic_fab_vars[MicVar_Kess::pres];
auto theta = mic_fab_vars[MicVar_Kess::theta];
auto rho = mic_fab_vars[MicVar_Kess::rho];
auto rain_accum = mic_fab_vars[MicVar_Kess::rain_accum];


auto dz = m_geom.CellSize(2);
auto domain = m_geom.Domain();
Expand All @@ -30,9 +32,13 @@ if(solverChoice.moisture_type == MoistureType::Kessler){
auto dm = tabs->DistributionMap();
fz.define(convert(ba, IntVect(0,0,1)), dm, 1, 0); // No ghost cells

Real dtn = dt;

for ( MFIter mfi(fz, TilingIfNotGPU()); mfi.isValid(); ++mfi ){
auto rho_array = mic_fab_vars[MicVar_Kess::rho]->array(mfi);
auto qp_array = mic_fab_vars[MicVar_Kess::qp]->array(mfi);
auto rain_accum_array = mic_fab_vars[MicVar_Kess::rain_accum]->array(mfi);

auto fz_array = fz.array(mfi);
const Box& tbz = mfi.tilebox();

Expand All @@ -57,13 +63,16 @@ if(solverChoice.moisture_type == MoistureType::Kessler){

fz_array(i,j,k) = rho_avg*V_terminal*qp_avg;

if(k==k_lo){
rain_accum_array(i,j,k) = rain_accum_array(i,j,k) + rho_avg*qp_avg*V_terminal*dtn/1000.0*1000.0; // Divide by rho_water and convert to mm
}

/*if(k==0){
fz_array(i,j,k) = 0;
}*/
});
}

Real dtn = dt;

for ( MFIter mfi(*tabs,TilingIfNotGPU()); mfi.isValid(); ++mfi) {
auto qv_array = mic_fab_vars[MicVar_Kess::qv]->array(mfi);
Expand Down

0 comments on commit d5cd9c0

Please sign in to comment.