diff --git a/Source/DataStructs/SpongeStruct.H b/Source/DataStructs/SpongeStruct.H index 8f8615d8e..4c51dd5a1 100644 --- a/Source/DataStructs/SpongeStruct.H +++ b/Source/DataStructs/SpongeStruct.H @@ -36,10 +36,13 @@ struct SpongeChoice { pp.query("zlo_sponge_end" , zlo_sponge_end); pp.query("zhi_sponge_start", zhi_sponge_start); + pp.query("sponge_use_basestate", use_basestate); // alternative to specifying a constant sponge_density (and sponge_temperature) pp.query("sponge_density" , sponge_density); pp.query("sponge_x_velocity" , sponge_x_velocity); pp.query("sponge_y_velocity" , sponge_y_velocity); pp.query("sponge_z_velocity" , sponge_z_velocity); + pp.query("sponge_temperature", sponge_temperature); + pp.query("sponge_damp_temperature", damp_temperature); } void display() @@ -63,6 +66,10 @@ struct SpongeChoice { amrex::Real xlo_sponge_end, xhi_sponge_start; amrex::Real ylo_sponge_end, yhi_sponge_start; amrex::Real zlo_sponge_end, zhi_sponge_start; - amrex::Real sponge_density, sponge_x_velocity, sponge_y_velocity, sponge_z_velocity; + + bool use_basestate = false; + bool damp_temperature = false; + amrex::Real sponge_density, sponge_temperature; + amrex::Real sponge_x_velocity, sponge_y_velocity, sponge_z_velocity; }; #endif diff --git a/Source/SourceTerms/ERF_ApplySpongeZoneBCs.cpp b/Source/SourceTerms/ERF_ApplySpongeZoneBCs.cpp index c8c391446..c0fde74de 100644 --- a/Source/SourceTerms/ERF_ApplySpongeZoneBCs.cpp +++ b/Source/SourceTerms/ERF_ApplySpongeZoneBCs.cpp @@ -13,7 +13,9 @@ ApplySpongeZoneBCsForCC ( const Geometry geom, const Box& bx, const Array4& cell_rhs, - const Array4& cell_data) + const Array4& cell_data, + const Array4& rho0, + const Array4& p0) { // Domain cell size and real bounds auto dx = geom.CellSizeArray(); @@ -35,8 +37,12 @@ ApplySpongeZoneBCsForCC ( const Real zlo_sponge_end = spongeChoice.zlo_sponge_end; const Real zhi_sponge_start = spongeChoice.zhi_sponge_start; + const bool damp_to_rhse = spongeChoice.use_basestate; const Real sponge_density = spongeChoice.sponge_density; + const bool damp_temperature = spongeChoice.damp_temperature; + const Real sponge_temperature = spongeChoice.sponge_temperature; + // Domain valid box const Box& domain = geom.Domain(); int domlo_x = domain.smallEnd(0); @@ -63,18 +69,26 @@ ApplySpongeZoneBCsForCC ( Real y = ProbLoArr[1] + (jj+0.5) * dx[1]; Real z = ProbLoArr[2] + (kk+0.5) * dx[2]; + Real rho_ref = (damp_to_rhse) ? rho0(i,j,k) : sponge_density; + Real rhotheta_ref = (damp_to_rhse) ? getRhoThetagivenP(p0(i,j,k)) + : sponge_density*sponge_temperature; + // x left sponge if(use_xlo_sponge_damping){ if (x < xlo_sponge_end) { Real xi = (xlo_sponge_end - x) / (xlo_sponge_end - ProbLoArr[0]); - cell_rhs(i, j, k, 0) -= sponge_strength * xi * xi * (cell_data(i, j, k, 0) - sponge_density); + cell_rhs(i, j, k, 0) -= sponge_strength * xi * xi * (cell_data(i, j, k, 0) - rho_ref); + if (damp_temperature) + cell_rhs(i, j, k, 1) -= sponge_strength * xi * xi * (cell_data(i, j, k, 1) - rhotheta_ref); } } // x right sponge if(use_xhi_sponge_damping){ if (x > xhi_sponge_start) { Real xi = (x - xhi_sponge_start) / (ProbHiArr[0] - xhi_sponge_start); - cell_rhs(i, j, k, 0) -= sponge_strength * xi * xi * (cell_data(i, j, k, 0) - sponge_density); + cell_rhs(i, j, k, 0) -= sponge_strength * xi * xi * (cell_data(i, j, k, 0) - rho_ref); + if (damp_temperature) + cell_rhs(i, j, k, 1) -= sponge_strength * xi * xi * (cell_data(i, j, k, 1) - rhotheta_ref); } } @@ -82,29 +96,37 @@ ApplySpongeZoneBCsForCC ( if(use_ylo_sponge_damping){ if (y < ylo_sponge_end) { Real xi = (ylo_sponge_end - y) / (ylo_sponge_end - ProbLoArr[1]); - cell_rhs(i, j, k, 0) -= sponge_strength * xi * xi * (cell_data(i, j, k, 0) - sponge_density); + cell_rhs(i, j, k, 0) -= sponge_strength * xi * xi * (cell_data(i, j, k, 0) - rho_ref); + if (damp_temperature) + cell_rhs(i, j, k, 1) -= sponge_strength * xi * xi * (cell_data(i, j, k, 1) - rhotheta_ref); } } - // x right sponge + // y right sponge if(use_yhi_sponge_damping){ if (y > yhi_sponge_start) { Real xi = (y - yhi_sponge_start) / (ProbHiArr[1] - yhi_sponge_start); - cell_rhs(i, j, k, 0) -= sponge_strength * xi * xi * (cell_data(i, j, k, 0) - sponge_density); + cell_rhs(i, j, k, 0) -= sponge_strength * xi * xi * (cell_data(i, j, k, 0) - rho_ref); + if (damp_temperature) + cell_rhs(i, j, k, 1) -= sponge_strength * xi * xi * (cell_data(i, j, k, 1) - rhotheta_ref); } } - // x left sponge + // z left sponge if(use_zlo_sponge_damping){ if (z < zlo_sponge_end) { Real xi = (zlo_sponge_end - z) / (zlo_sponge_end - ProbLoArr[2]); - cell_rhs(i, j, k, 0) -= sponge_strength * xi * xi * (cell_data(i, j, k, 0) - sponge_density); + cell_rhs(i, j, k, 0) -= sponge_strength * xi * xi * (cell_data(i, j, k, 0) - rho_ref); + if (damp_temperature) + cell_rhs(i, j, k, 1) -= sponge_strength * xi * xi * (cell_data(i, j, k, 1) - rhotheta_ref); } } - // x right sponge + // z right sponge if(use_zhi_sponge_damping){ if (z > zhi_sponge_start) { Real xi = (z - zhi_sponge_start) / (ProbHiArr[2] - zhi_sponge_start); - cell_rhs(i, j, k, 0) -= sponge_strength * xi * xi * (cell_data(i, j, k, 0) - sponge_density); + cell_rhs(i, j, k, 0) -= sponge_strength * xi * xi * (cell_data(i, j, k, 0) - rho_ref); + if (damp_temperature) + cell_rhs(i, j, k, 1) -= sponge_strength * xi * xi * (cell_data(i, j, k, 1) - rhotheta_ref); } } }); @@ -122,7 +144,8 @@ ApplySpongeZoneBCsForMom ( const Array4& rho_w_rhs, const Array4& rho_u, const Array4& rho_v, - const Array4& rho_w) + const Array4& rho_w, + const Array4& rho0) { // Domain cell size and real bounds auto dx = geom.CellSizeArray(); @@ -144,6 +167,7 @@ ApplySpongeZoneBCsForMom ( const Real zlo_sponge_end = spongeChoice.zlo_sponge_end; const Real zhi_sponge_start = spongeChoice.zhi_sponge_start; + const bool damp_to_rhse = spongeChoice.use_basestate; const Real sponge_density = spongeChoice.sponge_density; const Real sponge_x_velocity = spongeChoice.sponge_x_velocity; const Real sponge_y_velocity = spongeChoice.sponge_y_velocity; @@ -175,18 +199,20 @@ ApplySpongeZoneBCsForMom ( Real y = ProbLoArr[1] + (jj+0.5) * dx[1]; Real z = ProbLoArr[2] + (kk+0.5) * dx[2]; + Real rho_ref = (damp_to_rhse) ? rho0(i,j,k) : sponge_density; + // x lo sponge if(use_xlo_sponge_damping){ if (x < xlo_sponge_end) { Real xi = (xlo_sponge_end - x) / (xlo_sponge_end - ProbLoArr[0]); - rho_u_rhs(i, j, k) -= sponge_strength * xi * xi * (rho_u(i, j, k) - sponge_density*sponge_x_velocity); + rho_u_rhs(i, j, k) -= sponge_strength * xi * xi * (rho_u(i, j, k) - rho_ref*sponge_x_velocity); } } // x hi sponge if(use_xhi_sponge_damping){ if (x > xhi_sponge_start) { Real xi = (x - xhi_sponge_start) / (ProbHiArr[0] - xhi_sponge_start); - rho_u_rhs(i, j, k) -= sponge_strength * xi * xi * (rho_u(i, j, k) - sponge_density*sponge_x_velocity); + rho_u_rhs(i, j, k) -= sponge_strength * xi * xi * (rho_u(i, j, k) - rho_ref*sponge_x_velocity); } } @@ -194,14 +220,14 @@ ApplySpongeZoneBCsForMom ( if(use_ylo_sponge_damping){ if (y < ylo_sponge_end) { Real xi = (ylo_sponge_end - y) / (ylo_sponge_end - ProbLoArr[1]); - rho_u_rhs(i, j, k) -= sponge_strength * xi * xi * (rho_u(i, j, k) - sponge_density*sponge_x_velocity); + rho_u_rhs(i, j, k) -= sponge_strength * xi * xi * (rho_u(i, j, k) - rho_ref*sponge_x_velocity); } } // x right sponge if(use_yhi_sponge_damping){ if (y > yhi_sponge_start) { Real xi = (y - yhi_sponge_start) / (ProbHiArr[1] - yhi_sponge_start); - rho_u_rhs(i, j, k) -= sponge_strength * xi * xi * (rho_u(i, j, k) - sponge_density*sponge_x_velocity); + rho_u_rhs(i, j, k) -= sponge_strength * xi * xi * (rho_u(i, j, k) - rho_ref*sponge_x_velocity); } } @@ -209,7 +235,7 @@ ApplySpongeZoneBCsForMom ( if(use_zlo_sponge_damping){ if (z < zlo_sponge_end) { Real xi = (zlo_sponge_end - z) / (zlo_sponge_end - ProbLoArr[2]); - rho_u_rhs(i, j, k) -= sponge_strength * xi * xi * (rho_u(i, j, k) - sponge_density*sponge_x_velocity); + rho_u_rhs(i, j, k) -= sponge_strength * xi * xi * (rho_u(i, j, k) - rho_ref*sponge_x_velocity); } } @@ -218,7 +244,7 @@ ApplySpongeZoneBCsForMom ( if(use_zhi_sponge_damping){ if (z > zhi_sponge_start) { Real xi = (z - zhi_sponge_start) / (ProbHiArr[2] - zhi_sponge_start); - rho_u_rhs(i, j, k) -= sponge_strength * xi * xi * (rho_u(i, j, k) - sponge_density*sponge_x_velocity); + rho_u_rhs(i, j, k) -= sponge_strength * xi * xi * (rho_u(i, j, k) - rho_ref*sponge_x_velocity); } } }); @@ -234,18 +260,20 @@ ApplySpongeZoneBCsForMom ( Real y = ProbLoArr[1] + jj * dx[1]; Real z = ProbLoArr[2] + (kk+0.5) * dx[2]; + Real rho_ref = (damp_to_rhse) ? rho0(i,j,k) : sponge_density; + // x lo sponge if(use_xlo_sponge_damping){ if (x < xlo_sponge_end) { Real xi = (xlo_sponge_end - x) / (xlo_sponge_end - ProbLoArr[0]); - rho_v_rhs(i, j, k) -= sponge_strength * xi * xi * (rho_v(i, j, k) - sponge_density*sponge_y_velocity); + rho_v_rhs(i, j, k) -= sponge_strength * xi * xi * (rho_v(i, j, k) - rho_ref*sponge_y_velocity); } } // x hi sponge if(use_xhi_sponge_damping){ if (x > xhi_sponge_start) { Real xi = (x - xhi_sponge_start) / (ProbHiArr[0] - xhi_sponge_start); - rho_v_rhs(i, j, k) -= sponge_strength * xi * xi * (rho_v(i, j, k) - sponge_density*sponge_y_velocity); + rho_v_rhs(i, j, k) -= sponge_strength * xi * xi * (rho_v(i, j, k) - rho_ref*sponge_y_velocity); } } @@ -253,14 +281,14 @@ ApplySpongeZoneBCsForMom ( if(use_ylo_sponge_damping){ if (y < ylo_sponge_end) { Real xi = (ylo_sponge_end - y) / (ylo_sponge_end - ProbLoArr[1]); - rho_v_rhs(i, j, k) -= sponge_strength * xi * xi * (rho_v(i, j, k) - sponge_density*sponge_y_velocity); + rho_v_rhs(i, j, k) -= sponge_strength * xi * xi * (rho_v(i, j, k) - rho_ref*sponge_y_velocity); } } // x right sponge if(use_yhi_sponge_damping){ if (y > yhi_sponge_start) { Real xi = (y - yhi_sponge_start) / (ProbHiArr[1] - yhi_sponge_start); - rho_v_rhs(i, j, k) -= sponge_strength * xi * xi * (rho_v(i, j, k) - sponge_density*sponge_y_velocity); + rho_v_rhs(i, j, k) -= sponge_strength * xi * xi * (rho_v(i, j, k) - rho_ref*sponge_y_velocity); } } @@ -268,7 +296,7 @@ ApplySpongeZoneBCsForMom ( if(use_zlo_sponge_damping){ if (z < zlo_sponge_end) { Real xi = (zlo_sponge_end - z) / (zlo_sponge_end - ProbLoArr[2]); - rho_v_rhs(i, j, k) -= sponge_strength * xi * xi * (rho_v(i, j, k) - sponge_density*sponge_y_velocity); + rho_v_rhs(i, j, k) -= sponge_strength * xi * xi * (rho_v(i, j, k) - rho_ref*sponge_y_velocity); } } @@ -277,7 +305,7 @@ ApplySpongeZoneBCsForMom ( if(use_zhi_sponge_damping){ if (z > zhi_sponge_start) { Real xi = (z - zhi_sponge_start) / (ProbHiArr[2] - zhi_sponge_start); - rho_v_rhs(i, j, k) -= sponge_strength * xi * xi * (rho_v(i, j, k) - sponge_density*sponge_y_velocity); + rho_v_rhs(i, j, k) -= sponge_strength * xi * xi * (rho_v(i, j, k) - rho_ref*sponge_y_velocity); } } }); @@ -293,18 +321,20 @@ ApplySpongeZoneBCsForMom ( Real y = ProbLoArr[1] + (jj+0.5) * dx[1]; Real z = ProbLoArr[2] + kk * dx[2]; + Real rho_ref = (damp_to_rhse) ? rho0(i,j,k) : sponge_density; + // x left sponge if(use_xlo_sponge_damping){ if (x < xlo_sponge_end) { Real xi = (xlo_sponge_end - x) / (xlo_sponge_end - ProbLoArr[0]); - rho_w_rhs(i, j, k) -= sponge_strength * xi * xi * (rho_w(i, j, k) - sponge_density*sponge_z_velocity); + rho_w_rhs(i, j, k) -= sponge_strength * xi * xi * (rho_w(i, j, k) - rho_ref*sponge_z_velocity); } } // x right sponge if(use_xhi_sponge_damping){ if (x > xhi_sponge_start) { Real xi = (x - xhi_sponge_start) / (ProbHiArr[0] - xhi_sponge_start); - rho_w_rhs(i, j, k) -= sponge_strength * xi * xi * (rho_w(i, j, k) - sponge_density*sponge_z_velocity); + rho_w_rhs(i, j, k) -= sponge_strength * xi * xi * (rho_w(i, j, k) - rho_ref*sponge_z_velocity); } } @@ -312,14 +342,14 @@ ApplySpongeZoneBCsForMom ( if(use_ylo_sponge_damping){ if (y < ylo_sponge_end) { Real xi = (ylo_sponge_end - y) / (ylo_sponge_end - ProbLoArr[1]); - rho_w_rhs(i, j, k) -= sponge_strength * xi * xi * (rho_w(i, j, k) - sponge_density*sponge_z_velocity); + rho_w_rhs(i, j, k) -= sponge_strength * xi * xi * (rho_w(i, j, k) - rho_ref*sponge_z_velocity); } } // x right sponge if(use_yhi_sponge_damping){ if (y > yhi_sponge_start) { Real xi = (y - yhi_sponge_start) / (ProbHiArr[1] - yhi_sponge_start); - rho_w_rhs(i, j, k) -= sponge_strength * xi * xi * (rho_w(i, j, k) - sponge_density*sponge_z_velocity); + rho_w_rhs(i, j, k) -= sponge_strength * xi * xi * (rho_w(i, j, k) - rho_ref*sponge_z_velocity); } } @@ -327,7 +357,7 @@ ApplySpongeZoneBCsForMom ( if(use_zlo_sponge_damping){ if (z < zlo_sponge_end) { Real xi = (zlo_sponge_end - z) / (zlo_sponge_end - ProbLoArr[2]); - rho_w_rhs(i, j, k) -= sponge_strength * xi * xi * (rho_w(i, j, k) - sponge_density*sponge_z_velocity); + rho_w_rhs(i, j, k) -= sponge_strength * xi * xi * (rho_w(i, j, k) - rho_ref*sponge_z_velocity); } } @@ -336,7 +366,7 @@ ApplySpongeZoneBCsForMom ( if(use_zhi_sponge_damping){ if (z > zhi_sponge_start) { Real xi = (z - zhi_sponge_start) / (ProbHiArr[2] - zhi_sponge_start); - rho_w_rhs(i, j, k) -= sponge_strength * xi * xi * (rho_w(i, j, k) - sponge_density*sponge_z_velocity); + rho_w_rhs(i, j, k) -= sponge_strength * xi * xi * (rho_w(i, j, k) - rho_ref*sponge_z_velocity); } } }); diff --git a/Source/SourceTerms/ERF_make_mom_sources.cpp b/Source/SourceTerms/ERF_make_mom_sources.cpp index aebc09595..4752c61fd 100644 --- a/Source/SourceTerms/ERF_make_mom_sources.cpp +++ b/Source/SourceTerms/ERF_make_mom_sources.cpp @@ -41,6 +41,7 @@ void make_mom_sources (int /*level*/, int /*nrk*/, Real dt, Real time, Vector& S_data, const MultiFab & S_prim, + const MultiFab & base_state, const MultiFab & /*xvel*/, const MultiFab & /*yvel*/, MultiFab & xmom_src, @@ -205,6 +206,9 @@ void make_mom_sources (int /*level*/, const Array4& rho_v = S_data[IntVars::ymom].array(mfi); const Array4& rho_w = S_data[IntVars::zmom].array(mfi); + MultiFab r_hse(base_state, make_alias, 0, 1); // r_0 is first component + const Array4& rho0_arr = r_hse.const_array(mfi); + const Array4< Real>& xmom_src_arr = xmom_src.array(mfi); const Array4< Real>& ymom_src_arr = ymom_src.array(mfi); const Array4< Real>& zmom_src_arr = zmom_src.array(mfi); @@ -410,13 +414,15 @@ void make_mom_sources (int /*level*/, // ***************************************************************************** if(solverChoice.spongeChoice.sponge_type == "input_sponge") { - ApplySpongeZoneBCsForMom_ReadFromFile(solverChoice.spongeChoice, geom, tbx, tby, cell_data, - xmom_src_arr, ymom_src_arr, rho_u, rho_v, d_sponge_ptrs_at_lev); + ApplySpongeZoneBCsForMom_ReadFromFile(solverChoice.spongeChoice, geom, tbx, tby, + cell_data, xmom_src_arr, ymom_src_arr, + rho_u, rho_v, d_sponge_ptrs_at_lev); } else { ApplySpongeZoneBCsForMom(solverChoice.spongeChoice, geom, tbx, tby, tbz, - xmom_src_arr, ymom_src_arr, zmom_src_arr, rho_u, rho_v, rho_w); + xmom_src_arr, ymom_src_arr, zmom_src_arr, + rho_u, rho_v, rho_w, rho0_arr); } } // mfi diff --git a/Source/SourceTerms/ERF_make_sources.cpp b/Source/SourceTerms/ERF_make_sources.cpp index 2800592d7..7759f749e 100644 --- a/Source/SourceTerms/ERF_make_sources.cpp +++ b/Source/SourceTerms/ERF_make_sources.cpp @@ -33,6 +33,7 @@ void make_sources (int level, int /*nrk*/, Real dt, Real time, Vector& S_data, const MultiFab & S_prim, + const MultiFab & base_state, MultiFab & source, #ifdef ERF_USE_RRTMGP const MultiFab* qheating_rates, @@ -182,6 +183,11 @@ void make_sources (int level, const Array4 & cell_prim = S_prim.array(mfi); const Array4 & cell_src = source.array(mfi); + MultiFab r_hse(base_state, make_alias, 0, 1); // r_0 is first component + MultiFab p_hse(base_state, make_alias, 1, 1); // p_0 is second componentt + const Array4 & rho0_arr = r_hse.const_array(mfi); + const Array4 & p0_arr = p_hse.const_array(mfi); + #ifdef ERF_USE_RRTMGP // ************************************************************************************* // 2. Add radiation source terms to (rho theta) @@ -348,7 +354,8 @@ void make_sources (int level, // 7. Add sponging // ************************************************************************************* if(!(solverChoice.spongeChoice.sponge_type == "input_sponge")){ - ApplySpongeZoneBCsForCC(solverChoice.spongeChoice, geom, bx, cell_src, cell_data); + ApplySpongeZoneBCsForCC(solverChoice.spongeChoice, geom, bx, cell_src, cell_data, + rho0_arr, p0_arr); } // ************************************************************************************* diff --git a/Source/SourceTerms/Src_headers.H b/Source/SourceTerms/Src_headers.H index fee64e7db..6922a446b 100644 --- a/Source/SourceTerms/Src_headers.H +++ b/Source/SourceTerms/Src_headers.H @@ -27,6 +27,7 @@ void make_sources (int level, int nrk, amrex::Real dt, amrex::Real time, amrex::Vector& S_data, const amrex::MultiFab& S_prim, + const amrex::MultiFab& base_state, amrex::MultiFab& cc_source, #if defined(ERF_USE_RRTMGP) const amrex::MultiFab* qheating_rates, @@ -46,6 +47,7 @@ void make_mom_sources (int level, int nrk, amrex::Real dt, amrex::Real time, amrex::Vector& S_data, const amrex::MultiFab& S_prim, + const amrex::MultiFab& base_state, const amrex::MultiFab& xvel, const amrex::MultiFab& yvel, amrex::MultiFab& xmom_source, @@ -98,7 +100,9 @@ void ApplySpongeZoneBCsForCC (const SpongeChoice& spongeChoice, const amrex::Geometry geom, const amrex::Box& bx, const amrex::Array4& cell_rhs, - const amrex::Array4& cell_data); + const amrex::Array4& cell_data, + const amrex::Array4& rho0, + const amrex::Array4& p0); void ApplySpongeZoneBCsForMom (const SpongeChoice& spongeChoice, const amrex::Geometry geom, @@ -110,16 +114,17 @@ void ApplySpongeZoneBCsForMom (const SpongeChoice& spongeChoice, const amrex::Array4& rho_w_rhs, const amrex::Array4& rho_u, const amrex::Array4& rho_v, - const amrex::Array4& rho_w); + const amrex::Array4& rho_w, + const amrex::Array4& rho0); void ApplySpongeZoneBCsForMom_ReadFromFile (const SpongeChoice& spongeChoice, - const amrex::Geometry geom, - const amrex::Box& tbx, - const amrex::Box& tby, - const amrex::Array4& cell_data, - const amrex::Array4& rho_u_rhs, - const amrex::Array4& rho_v_rhs, - const amrex::Array4& rho_u, - const amrex::Array4& rho_v, - const amrex::Vector d_sponge_ptrs_at_lev); + const amrex::Geometry geom, + const amrex::Box& tbx, + const amrex::Box& tby, + const amrex::Array4& cell_data, + const amrex::Array4& rho_u_rhs, + const amrex::Array4& rho_v_rhs, + const amrex::Array4& rho_u, + const amrex::Array4& rho_v, + const amrex::Vector d_sponge_ptrs_at_lev); #endif diff --git a/Source/TimeIntegration/TI_slow_rhs_fun.H b/Source/TimeIntegration/TI_slow_rhs_fun.H index 59e715ad9..94d72e21a 100644 --- a/Source/TimeIntegration/TI_slow_rhs_fun.H +++ b/Source/TimeIntegration/TI_slow_rhs_fun.H @@ -39,7 +39,7 @@ Real* dptr_v_geos = solverChoice.have_geo_wind_profile ? d_v_geos[level].data(): nullptr; // Construct the source terms for the cell-centered (conserved) variables - make_sources(level, nrk, slow_dt, old_stage_time, S_data, S_prim, cc_src, + make_sources(level, nrk, slow_dt, old_stage_time, S_data, S_prim, base_state[level], cc_src, #if defined(ERF_USE_RRTMGP) qheating_rates[level].get(), #endif @@ -110,6 +110,7 @@ MultiFab* p0_new = &p_hse_new; make_mom_sources(level, nrk, slow_dt, old_stage_time, S_data, S_prim, + base_state[level], xvel_new, yvel_new, xmom_src, ymom_src, zmom_src, r0_new, fine_geom, solverChoice, @@ -213,6 +214,7 @@ } else { // If not moving_terrain make_mom_sources(level, nrk, slow_dt, old_stage_time, S_data, S_prim, + base_state[level], xvel_new, yvel_new, xmom_src, ymom_src, zmom_src, r0, fine_geom, solverChoice, @@ -411,7 +413,7 @@ Real* dptr_u_geos = solverChoice.have_geo_wind_profile ? d_u_geos[level].data(): nullptr; Real* dptr_v_geos = solverChoice.have_geo_wind_profile ? d_v_geos[level].data(): nullptr; - make_sources(level, nrk, slow_dt, old_stage_time, S_data, S_prim, cc_src, + make_sources(level, nrk, slow_dt, old_stage_time, S_data, S_prim, base_state[level], cc_src, #if defined(ERF_USE_RRTMGP) qheating_rates[level], #endif @@ -422,7 +424,7 @@ input_sounding_data, turbPert); int n_qstate = micro->Get_Qstate_Size(); - make_mom_sources(level, nrk, slow_dt, old_stage_time, S_data, S_prim, + make_mom_sources(level, nrk, slow_dt, old_stage_time, S_data, S_prim, base_state[level], xvel_new, yvel_new, xmom_src, ymom_src, zmom_src, r0, fine_geom, solverChoice,