From 23e6cf42cfcdb31b3e5ecb2a4b5fd9e9b019f948 Mon Sep 17 00:00:00 2001 From: Lucas Esclapez Date: Tue, 22 Feb 2022 14:25:30 -0700 Subject: [PATCH 01/12] Update the Case/* pelelm_initdata to take in state Array4 instead of separate entries. --- Exec/Cases/CounterFlow/pelelm_prob.H | 31 +++++++------------ Exec/Cases/NormalJet_OpenDomain/pelelm_prob.H | 24 ++++++-------- Exec/Cases/PremBunsen2D/pelelm_prob.H | 28 +++++++---------- Exec/Cases/PremBunsen3D/pelelm_prob.H | 26 +++++++--------- Exec/Cases/TripleFlame/pelelm_prob.H | 22 ++++++------- 5 files changed, 53 insertions(+), 78 deletions(-) diff --git a/Exec/Cases/CounterFlow/pelelm_prob.H b/Exec/Cases/CounterFlow/pelelm_prob.H index d18c09ad..599ff270 100644 --- a/Exec/Cases/CounterFlow/pelelm_prob.H +++ b/Exec/Cases/CounterFlow/pelelm_prob.H @@ -14,11 +14,7 @@ AMREX_GPU_DEVICE AMREX_FORCE_INLINE void pelelm_initdata(int i, int j, int k, int is_incompressible, - amrex::Array4 const& vel, - amrex::Array4 const& rho, - amrex::Array4 const& rhoY, - amrex::Array4 const& rhoH, - amrex::Array4 const& temp, + amrex::Array4 const& state, amrex::Array4 const& aux, amrex::GeometryData const& geomdata, ProbParm const& prob_parm, @@ -43,17 +39,12 @@ void pelelm_initdata(int i, int j, int k, constexpr amrex::Real Pi = 3.14159265358979323846264338327950288; auto eos = pele::physics::PhysicsType::eos(); - amrex::GpuArray pmf_vals = {0.0}; - amrex::Real u[3] = {0.0}; - amrex::Real molefrac[NUM_SPECIES] = {0.0}; amrex::Real massfrac[NUM_SPECIES] = {0.0}; - amrex::Real y1, y2; - amrex::Real splitx = prob_lo[0] + 0.5 * Lx; massfrac[N2_ID] = 0.767; massfrac[O2_ID] = 0.233; - temp(i,j,k) = 298.0; + state(i,j,k,TEMP) = 298.0; if (prob_parm.do_ignit) { amrex::Real radiusSq = AMREX_D_TERM( (x-xc) * (x-xc), @@ -62,31 +53,31 @@ void pelelm_initdata(int i, int j, int k, amrex::Real radius = std::sqrt(radiusSq); amrex::Real mixingWidth = 0.1*prob_parm.ignitSphereRad; amrex::Real mixingFunction = 0.5 * ( 1.0 + std::tanh((prob_parm.ignitSphereRad - radius)/mixingWidth)); - temp(i,j,k) = mixingFunction * prob_parm.ignitT + (1.0 - mixingFunction) * 298.0; + state(i,j,k,TEMP) = mixingFunction * prob_parm.ignitT + (1.0 - mixingFunction) * 298.0; massfrac[CH4_ID] = 0.02; massfrac[O2_ID] = 0.233 * (1.0 - massfrac[CH4_ID]); massfrac[N2_ID] = 1.0 - massfrac[CH4_ID] - massfrac[O2_ID]; } - AMREX_D_TERM(vel(i,j,k,0) = 0.0;, - vel(i,j,k,1) = 0.1;, - vel(i,j,k,2) = 0.0); + AMREX_D_TERM(state(i,j,k,VELX) = 0.0;, + state(i,j,k,VELY) = 0.1;, + state(i,j,k,VELZ) = 0.0); amrex::Real P_cgs = prob_parm.P_mean * 10.0; // Density amrex::Real rho_cgs = 0.0; - eos.PYT2R(P_cgs, massfrac, temp(i,j,k), rho_cgs); - rho(i,j,k) = rho_cgs * 1.0e3; + eos.PYT2R(P_cgs, massfrac, state(i,j,k,TEMP), rho_cgs); + state(i,j,k,DENSITY) = rho_cgs * 1.0e3; // Enthalpy amrex::Real h_cgs = 0.0; - eos.TY2H(temp(i,j,k), massfrac, h_cgs); - rhoH(i,j,k) = h_cgs * 1.0e-4 * rho(i,j,k); + eos.TY2H(state(i,j,k,TEMP), massfrac, h_cgs); + state(i,j,k,RHOH) = h_cgs * 1.0e-4 * state(i,j,k,DENSITY); // Species mass for (int n = 0; n < NUM_SPECIES; n++) { - rhoY(i,j,k,n) = massfrac[n] * rho(i,j,k); + state(i,j,k,FIRSTSPEC+n) = massfrac[n] * state(i,j,k,DENSITY); } } diff --git a/Exec/Cases/NormalJet_OpenDomain/pelelm_prob.H b/Exec/Cases/NormalJet_OpenDomain/pelelm_prob.H index f30490b0..99693bdf 100644 --- a/Exec/Cases/NormalJet_OpenDomain/pelelm_prob.H +++ b/Exec/Cases/NormalJet_OpenDomain/pelelm_prob.H @@ -16,11 +16,7 @@ AMREX_FORCE_INLINE void pelelm_initdata (int i, int j, int k, int is_incompressible, - amrex::Array4 const& vel, - amrex::Array4 const& rho, - amrex::Array4 const& rhoY, - amrex::Array4 const& rhoH, - amrex::Array4 const& temp, + amrex::Array4 const& state, amrex::Array4 const& aux, amrex::GeometryData const& geomdata, ProbParm const& prob_parm, @@ -30,28 +26,28 @@ pelelm_initdata (int i, int j, int k, amrex::Real massfrac[NUM_SPECIES] = {0.0}; - temp(i,j,k) = prob_parm.T_ox; + state(i,j,k,TEMP) = prob_parm.T_ox; for (int n = 0; n < NUM_SPECIES; n++) { massfrac[n] = prob_parm.Y_ox[n]; } - vel(i,j,k,0) = 0.0; - vel(i,j,k,1) = 0.0; - vel(i,j,k,2) = 1.0; + state(i,j,k,VELX) = 0.0; + state(i,j,k,VELY) = 0.0; + state(i,j,k,VELZ) = 1.0; amrex::Real rho_cgs, P_cgs; P_cgs = prob_parm.P_mean * 10.0; - eos.PYT2R(P_cgs, massfrac, temp(i,j,k), rho_cgs); - rho(i,j,k) = rho_cgs * 1.0e3; // CGS -> MKS conversion + eos.PYT2R(P_cgs, massfrac, state(i,j,k,TEMP), rho_cgs); + state(i,j,k,DENSITY) = rho_cgs * 1.0e3; // CGS -> MKS conversion - eos.TY2H(temp(i,j,k), massfrac, rhoH(i,j,k)); - rhoH(i,j,k) *= 1.0e-4 * rho(i,j,k); // CGS -> MKS conversion + eos.TY2H(state(i,j,k,TEMP), massfrac, state(i,j,k,RHOH)); + state(i,j,k,RHOH) *= 1.0e-4 * state(i,j,k,DENSITY); // CGS -> MKS conversion for (int n = 0; n < NUM_SPECIES; n++) { - rhoY(i,j,k,n) = massfrac[n] * rho(i,j,k); + state(i,j,k,FIRSTSPEC+n) = massfrac[n] * state(i,j,k,DENSITY); } } diff --git a/Exec/Cases/PremBunsen2D/pelelm_prob.H b/Exec/Cases/PremBunsen2D/pelelm_prob.H index afe59d43..2bb5a607 100644 --- a/Exec/Cases/PremBunsen2D/pelelm_prob.H +++ b/Exec/Cases/PremBunsen2D/pelelm_prob.H @@ -15,11 +15,7 @@ AMREX_GPU_DEVICE AMREX_FORCE_INLINE void pelelm_initdata(int i, int j, int k, int is_incompressible, - amrex::Array4 const& vel, - amrex::Array4 const& rho, - amrex::Array4 const& rhoY, - amrex::Array4 const& rhoH, - amrex::Array4 const& temp, + amrex::Array4 const& state, amrex::Array4 const& aux, amrex::GeometryData const& geomdata, ProbParm const& prob_parm, @@ -50,7 +46,7 @@ void pelelm_initdata(int i, int j, int k, massfrac[N2_ID] = 0.767; massfrac[O2_ID] = 0.233; - temp(i,j,k) = 298.0; + state(i,j,k,TEMP) = 298.0; if ( x >= splitx ) { if ( (x-splitx) < ( std::sqrt((y+0.0009) / 0.01))/100.0) { @@ -61,7 +57,7 @@ void pelelm_initdata(int i, int j, int k, y2 += prob_parm.standoff; pele::physics::PMF::pmf(pmf_data,y2, y2, pmf_vals); - temp(i,j,k) = pmf_vals[0]; + state(i,j,k,TEMP) = pmf_vals[0]; for (int n = 0; n < NUM_SPECIES; n++){ massfrac[n] = pmf_vals[3 + n]; } @@ -76,7 +72,7 @@ void pelelm_initdata(int i, int j, int k, y2 += prob_parm.standoff; pele::physics::PMF::pmf(pmf_data, y2, y2, pmf_vals); - temp(i,j,k) = pmf_vals[0]; + state(i,j,k,TEMP) = pmf_vals[0]; for (int n = 0; n < NUM_SPECIES; n++){ massfrac[n] = pmf_vals[3 + n]; } @@ -84,25 +80,25 @@ void pelelm_initdata(int i, int j, int k, } } - AMREX_D_TERM(vel(i,j,k,0) = 0.0;, - vel(i,j,k,1) = 0.1;, - vel(i,j,k,2) = 0.0); + AMREX_D_TERM(state(i,j,k,VELX) = 0.0;, + state(i,j,k,VELX) = 0.1;, + state(i,j,k,VELX) = 0.0); amrex::Real P_cgs = prob_parm.P_mean * 10.0; // Density amrex::Real rho_cgs = 0.0; - eos.PYT2R(P_cgs, massfrac, temp(i,j,k), rho_cgs); - rho(i,j,k) = rho_cgs * 1.0e3; + eos.PYT2R(P_cgs, massfrac, state(i,j,k,TEMP), rho_cgs); + state(i,j,k,DENSITY) = rho_cgs * 1.0e3; // Enthalpy amrex::Real h_cgs = 0.0; - eos.TY2H(temp(i,j,k), massfrac, h_cgs); - rhoH(i,j,k) = h_cgs * 1.0e-4 * rho(i,j,k); + eos.TY2H(state(i,j,k,TEMP), massfrac, h_cgs); + state(i,j,k,RHOH) = h_cgs * 1.0e-4 * state(i,j,k,DENSITY); // Species mass for (int n = 0; n < NUM_SPECIES; n++) { - rhoY(i,j,k,n) = massfrac[n] * rho(i,j,k); + state(i,j,k,FIRSTSPEC+n) = massfrac[n] * state(i,j,k,DENSITY); } } diff --git a/Exec/Cases/PremBunsen3D/pelelm_prob.H b/Exec/Cases/PremBunsen3D/pelelm_prob.H index eb0995e6..3d83f427 100644 --- a/Exec/Cases/PremBunsen3D/pelelm_prob.H +++ b/Exec/Cases/PremBunsen3D/pelelm_prob.H @@ -15,11 +15,7 @@ AMREX_GPU_DEVICE AMREX_FORCE_INLINE void pelelm_initdata(int i, int j, int k, int is_incompressible, - amrex::Array4 const& vel, - amrex::Array4 const& rho, - amrex::Array4 const& rhoY, - amrex::Array4 const& rhoH, - amrex::Array4 const& temp, + amrex::Array4 const& state, amrex::Array4 const& aux, amrex::GeometryData const& geomdata, ProbParm const& prob_parm, @@ -52,7 +48,7 @@ void pelelm_initdata(int i, int j, int k, massfrac[N2_ID] = 0.767; massfrac[O2_ID] = 0.233; - temp(i,j,k) = 298.0; + state(i,j,k,TEMP) = 298.0; if ( (rad_xy) < ( std::sqrt((z+0.0009) / 0.01))/100.0) { amrex::Real pl1_angle = std::atan(0.01/prob_parm.slot_width); @@ -62,32 +58,32 @@ void pelelm_initdata(int i, int j, int k, y2 += prob_parm.standoff; pele::physics::PMF::pmf(pmf_data,y2, y2, pmf_vals); - temp(i,j,k) = pmf_vals[0]; + state(i,j,k,TEMP) = pmf_vals[0]; for (int n = 0; n < NUM_SPECIES; n++){ massfrac[n] = pmf_vals[3 + n]; } //eos.X2Y(molefrac, massfrac); } - AMREX_D_TERM(vel(i,j,k,0) = 0.0;, - vel(i,j,k,1) = 0.1;, - vel(i,j,k,2) = 0.0); + AMREX_D_TERM(state(i,j,k,VELX) = 0.0;, + state(i,j,k,VELY) = 0.1;, + state(i,j,k,VELZ) = 0.0); amrex::Real P_cgs = prob_parm.P_mean * 10.0; // Density amrex::Real rho_cgs = 0.0; - eos.PYT2R(P_cgs, massfrac, temp(i,j,k), rho_cgs); - rho(i,j,k) = rho_cgs * 1.0e3; + eos.PYT2R(P_cgs, massfrac, state(i,j,k,TEMP), rho_cgs); + state(i,j,k,DENSITY) = rho_cgs * 1.0e3; // Enthalpy amrex::Real h_cgs = 0.0; - eos.TY2H(temp(i,j,k), massfrac, h_cgs); - rhoH(i,j,k) = h_cgs * 1.0e-4 * rho(i,j,k); + eos.TY2H(state(i,j,k,TEMP), massfrac, h_cgs); + state(i,j,k,RHOH) = h_cgs * 1.0e-4 * state(i,j,k,DENSITY); // Species mass for (int n = 0; n < NUM_SPECIES; n++) { - rhoY(i,j,k,n) = massfrac[n] * rho(i,j,k); + state(i,j,k,FIRSTSPEC+n) = massfrac[n] * state(i,j,k,DENSITY); } } diff --git a/Exec/Cases/TripleFlame/pelelm_prob.H b/Exec/Cases/TripleFlame/pelelm_prob.H index 0e7e057c..9466b8b7 100644 --- a/Exec/Cases/TripleFlame/pelelm_prob.H +++ b/Exec/Cases/TripleFlame/pelelm_prob.H @@ -49,11 +49,7 @@ AMREX_FORCE_INLINE void pelelm_initdata (int i, int j, int k, int is_incompressible, - amrex::Array4 const& vel, - amrex::Array4 const& rho, - amrex::Array4 const& rhoY, - amrex::Array4 const& rhoH, - amrex::Array4 const& temp, + amrex::Array4 const& state, amrex::Array4 const& aux, amrex::GeometryData const& geomdata, ProbParm const& prob_parm, @@ -94,7 +90,7 @@ pelelm_initdata (int i, int j, int k, amrex::Real Gaussian_T = std::exp( - (rad*rad) / (2.0 * ( Gauss_T_width * ( 1.0 + (y - y_lo) / 0.03)) * ( Gauss_T_width * ( 1.0 + (y - y_lo) / 0.03)) )); - temp(i,j,k) = prob_parm.T_in + (Gauss_maxT-prob_parm.T_in) * Gaussian_T; + state(i,j,k,TEMP) = prob_parm.T_in + (Gauss_maxT-prob_parm.T_in) * Gaussian_T; amrex::Real Gaussian_spec = std::exp( - (rad*rad) / (2.0 * ( Gauss_Spec_width * ( 1.0 + (y - y_lo) / 0.03)) * ( Gauss_Spec_width * ( 1.0 + (y - y_lo) / 0.03)) )); @@ -102,20 +98,20 @@ pelelm_initdata (int i, int j, int k, massfrac[n] = (1.0 - Gaussian_spec) * massfrac[n] + Gaussian_spec * air_Y[n]; } - vel(i,j,k,0) = 0.0; - vel(i,j,k,1) = prob_parm.V_in; + state(i,j,k,VELX) = 0.0; + state(i,j,k,VELY) = prob_parm.V_in; amrex::Real rho_cgs, P_cgs; P_cgs = prob_parm.P_mean * 10.0; - eos.PYT2R(P_cgs, massfrac, temp(i,j,k), rho_cgs); - rho(i,j,k) = rho_cgs * 1.0e3; // CGS -> MKS conversion + eos.PYT2R(P_cgs, massfrac, state(i,j,k,TEMP), rho_cgs); + state(i,j,k,DENSITY) = rho_cgs * 1.0e3; // CGS -> MKS conversion - eos.TY2H(temp(i,j,k), massfrac, rhoH(i,j,k)); - rhoH(i,j,k) = rhoH(i,j,k) * 1.0e-4 * rho(i,j,k); // CGS -> MKS conversion + eos.TY2H(state(i,j,k,TEMP), massfrac, state(i,j,k,RHOH)); + state(i,j,k,RHOH) *= 1.0e-4 * state(i,j,k,DENSITY); // CGS -> MKS conversion for (int n = 0; n < NUM_SPECIES; n++) { - rhoY(i,j,k,n) = massfrac[n] * rho(i,j,k); + state(i,j,k,FIRSTSPEC+n) = massfrac[n] * state(i,j,k,DENSITY); } } From 3f4e518e2fd57d3ad9c8c20a76629320f7e83f89 Mon Sep 17 00:00:00 2001 From: Lucas Esclapez Date: Tue, 22 Feb 2022 14:26:23 -0700 Subject: [PATCH 02/12] Update call to pelelm_initdata to take in state_arr instead of separate entries. --- Source/PeleLMInit.cpp | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) diff --git a/Source/PeleLMInit.cpp b/Source/PeleLMInit.cpp index 68cd5723..10d6b003 100644 --- a/Source/PeleLMInit.cpp +++ b/Source/PeleLMInit.cpp @@ -302,11 +302,7 @@ void PeleLM::initLevelData(int lev) { { const Box& bx = mfi.tilebox(); FArrayBox DummyFab(bx,1); - auto const &vel_arr = ldata_p->state.array(mfi,VELX); - auto const &rho_arr = (m_incompressible) ? DummyFab.array() : ldata_p->state.array(mfi,DENSITY); - auto const &rhoY_arr = (m_incompressible) ? DummyFab.array() : ldata_p->state.array(mfi,FIRSTSPEC); - auto const &rhoH_arr = (m_incompressible) ? DummyFab.array() : ldata_p->state.array(mfi,RHOH); - auto const &temp_arr = (m_incompressible) ? DummyFab.array() : ldata_p->state.array(mfi,TEMP); + auto const &state_arr = ldata_p->state.array(mfi); auto const &aux_arr = (m_nAux > 0) ? ldata_p->auxiliaries.array(mfi) : DummyFab.array(); #ifdef PELE_USE_EFIELD auto const &ne_arr = ldata_p->nE.array(mfi); @@ -315,8 +311,7 @@ void PeleLM::initLevelData(int lev) { amrex::ParallelFor(bx, [=,m_incompressible=m_incompressible] AMREX_GPU_DEVICE (int i, int j, int k) noexcept { - pelelm_initdata(i, j, k, m_incompressible, vel_arr, rho_arr, - rhoY_arr, rhoH_arr, temp_arr, aux_arr, + pelelm_initdata(i, j, k, m_incompressible, state_arr, #ifdef PELE_USE_EFIELD ne_arr, phiV_arr, #endif From 2731995a7d8e43acc08193a2594bb25b7c8bc587 Mon Sep 17 00:00:00 2001 From: Lucas Esclapez Date: Tue, 22 Feb 2022 14:31:47 -0700 Subject: [PATCH 03/12] Update Efield folder. --- Exec/Efield/FlameSheetIons/pelelm_prob.H | 26 ++++++++++-------------- Exec/Efield/IonizedAirWave/pelelm_prob.H | 24 +++++++++------------- 2 files changed, 21 insertions(+), 29 deletions(-) diff --git a/Exec/Efield/FlameSheetIons/pelelm_prob.H b/Exec/Efield/FlameSheetIons/pelelm_prob.H index dc88cef5..0ddd8036 100644 --- a/Exec/Efield/FlameSheetIons/pelelm_prob.H +++ b/Exec/Efield/FlameSheetIons/pelelm_prob.H @@ -17,11 +17,7 @@ AMREX_GPU_DEVICE AMREX_FORCE_INLINE void pelelm_initdata(int i, int j, int k, int is_incompressible, - amrex::Array4 const& vel, - amrex::Array4 const& rho, - amrex::Array4 const& rhoY, - amrex::Array4 const& rhoH, - amrex::Array4 const& temp, + amrex::Array4 const& state, amrex::Array4 const& aux, amrex::Array4 const& nE, amrex::Array4 const& phiV, @@ -67,7 +63,7 @@ void pelelm_initdata(int i, int j, int k, y1 += 0.5*dx[1]; pele::physics::PMF::pmf(pmf_data,y1, y1, pmf_vals); - temp(i,j,k) = pmf_vals[0];; + state(i,j,k,TEMP) = pmf_vals[0];; for (int n = 0; n < NUM_SPECIES; n++){ massfrac[n] = pmf_vals[3 + n]; @@ -115,28 +111,28 @@ void pelelm_initdata(int i, int j, int k, nE(i,j,k) = std::max(1.0e-24,chargeDist/elemCharge); - AMREX_D_TERM(vel(i,j,k,0) = 0.0;, - vel(i,j,k,1) = pmf_vals[1];, - vel(i,j,k,2) = 0.0); + AMREX_D_TERM(state(i,j,k,VELX) = 0.0;, + state(i,j,k,VELY) = pmf_vals[1];, + state(i,j,k,VELZ) = 0.0); amrex::Real P_cgs = prob_parm.P_mean * 10.0; // Density amrex::Real rho_cgs = 0.0; - eos.PYT2R(P_cgs, massfrac, temp(i,j,k), rho_cgs); - rho(i,j,k) = rho_cgs * 1.0e3; + eos.PYT2R(P_cgs, massfrac, state(i,j,k,TEMP), rho_cgs); + state(i,j,k,DENSITY) = rho_cgs * 1.0e3; // Enthalpy amrex::Real h_cgs = 0.0; - eos.TY2H(temp(i,j,k), massfrac, h_cgs); - rhoH(i,j,k) = h_cgs * 1.0e-4 * rho(i,j,k); + eos.TY2H(state(i,j,k,TEMP), massfrac, h_cgs); + state(i,j,k,RHOH) = h_cgs * 1.0e-4 * state(i,j,k,DENSITY); // Species mass for (int n = 0; n < NUM_SPECIES; n++) { - rhoY(i,j,k,n) = massfrac[n] * rho(i,j,k); + state(i,j,k,FIRSTSPEC+n) = massfrac[n] * state(i,j,k,DENSITY); } - nE(i,j,k) *= rho(i,j,k); + nE(i,j,k) *= state(i,j,k,DENSITY); phiV(i,j,k) = 0.0; } diff --git a/Exec/Efield/IonizedAirWave/pelelm_prob.H b/Exec/Efield/IonizedAirWave/pelelm_prob.H index 716958a8..21353afa 100644 --- a/Exec/Efield/IonizedAirWave/pelelm_prob.H +++ b/Exec/Efield/IonizedAirWave/pelelm_prob.H @@ -15,11 +15,7 @@ AMREX_GPU_DEVICE AMREX_FORCE_INLINE void pelelm_initdata(int i, int j, int k, int is_incompressible, - amrex::Array4 const& vel, - amrex::Array4 const& rho, - amrex::Array4 const& rhoY, - amrex::Array4 const& rhoH, - amrex::Array4 const& temp, + amrex::Array4 const& state, amrex::Array4 const& aux, amrex::Array4 const& nE, amrex::Array4 const& phiV, @@ -64,32 +60,32 @@ void pelelm_initdata(int i, int j, int k, PMF::pmf(pmf_data,y1, y2, pmf_vals); - temp(i,j,k) = pmf_vals[0];; + state(i,j,k,TEMP) = pmf_vals[0];; for (int n = 0; n < NUM_SPECIES; n++){ molefrac[n] = pmf_vals[3 + n]; } eos.X2Y(molefrac, massfrac); - AMREX_D_TERM(vel(i,j,k,0) = 0.0;, - vel(i,j,k,1) = pmf_vals[1]*1e-2;, - vel(i,j,k,2) = 0.0); + AMREX_D_TERM(state(i,j,k,VELX) = 0.0;, + state(i,j,k,VELY) = pmf_vals[1]*1e-2;, + state(i,j,k,VELZ) = 0.0); amrex::Real P_cgs = prob_parm.P_mean * 10.0; // Density amrex::Real rho_cgs = 0.0; - eos.PYT2R(P_cgs, massfrac, temp(i,j,k), rho_cgs); - rho(i,j,k) = rho_cgs * 1.0e3; + eos.PYT2R(P_cgs, massfrac, state(i,j,k,TEMP), rho_cgs); + state(i,j,k,DENSITY) = rho_cgs * 1.0e3; // Enthalpy amrex::Real h_cgs = 0.0; - eos.TY2H(temp(i,j,k), massfrac, h_cgs); - rhoH(i,j,k) = h_cgs * 1.0e-4 * rho(i,j,k); + eos.TY2H(state(i,j,k,TEMP), massfrac, h_cgs); + state(i,j,k,RHOH) = h_cgs * 1.0e-4 * state(i,j,k,DENSITY); // Species mass for (int n = 0; n < NUM_SPECIES; n++) { - rhoY(i,j,k,n) = massfrac[n] * rho(i,j,k); + state(i,j,k,FIRSTSPEC+n) = massfrac[n] * state(i,j,k,DENSITY); } amrex::Real yc = 0.5 * (prob_hi[1] + prob_lo[1]); From 6cde2ef346ae534f67a255eba2c9a5b2d7a9afed Mon Sep 17 00:00:00 2001 From: Lucas Esclapez Date: Tue, 22 Feb 2022 14:33:45 -0700 Subject: [PATCH 04/12] Update UnitTest folder. --- Exec/UnitTests/DodecaneLu/pelelm_prob.H | 26 +++++++++++-------------- 1 file changed, 11 insertions(+), 15 deletions(-) diff --git a/Exec/UnitTests/DodecaneLu/pelelm_prob.H b/Exec/UnitTests/DodecaneLu/pelelm_prob.H index db1653af..96ee578b 100644 --- a/Exec/UnitTests/DodecaneLu/pelelm_prob.H +++ b/Exec/UnitTests/DodecaneLu/pelelm_prob.H @@ -15,11 +15,7 @@ AMREX_GPU_DEVICE AMREX_FORCE_INLINE void pelelm_initdata(int i, int j, int k, int /*is_incompressible*/, - amrex::Array4 const& vel, - amrex::Array4 const& rho, - amrex::Array4 const& rhoY, - amrex::Array4 const& rhoH, - amrex::Array4 const& temp, + amrex::Array4 const& state, amrex::Array4 const& /*aux*/, amrex::GeometryData const& geomdata, ProbParm const& prob_parm, @@ -81,36 +77,36 @@ void pelelm_initdata(int i, int j, int k, pele::physics::PMF::pmf(pmf_data,y1, y2, pmf_vals); - temp(i,j,k) = pmf_vals[0];; + state(i,j,k,TEMP) = pmf_vals[0];; for (int n = 0; n < NUM_SPECIES; n++){ molefrac[n] = pmf_vals[3 + n]; } eos.X2Y(molefrac, massfrac); - vel(i,j,k,0) = 0.0; + state(i,j,k,VELX) = 0.0; #if ( AMREX_SPACEDIM == 2 ) - vel(i,j,k,1) = pmf_vals[1]*1e-2; + state(i,j,k,VELY) = pmf_vals[1]*1e-2; #elif ( AMREX_SPACEDIM == 3 ) - vel(i,j,k,1) = 0.0; - vel(i,j,k,2) = pmf_vals[1]*1e-2; + state(i,j,k,VELY) = 0.0; + state(i,j,k,VELZ) = pmf_vals[1]*1e-2; #endif amrex::Real P_cgs = prob_parm.P_mean * 10.0; // Density amrex::Real rho_cgs = 0.0; - eos.PYT2R(P_cgs, massfrac, temp(i,j,k), rho_cgs); - rho(i,j,k) = rho_cgs * 1.0e3; + eos.PYT2R(P_cgs, massfrac, state(i,j,k,TEMP), rho_cgs); + state(i,j,k,DENSITY) = rho_cgs * 1.0e3; // Enthalpy amrex::Real h_cgs = 0.0; - eos.TY2H(temp(i,j,k), massfrac, h_cgs); - rhoH(i,j,k) = h_cgs * 1.0e-4 * rho(i,j,k); + eos.TY2H(state(i,j,k,TEMP), massfrac, h_cgs); + state(i,j,k,RHOH) = h_cgs * 1.0e-4 * state(i,j,k,DENSITY); // Species mass for (int n = 0; n < NUM_SPECIES; n++) { - rhoY(i,j,k,n) = massfrac[n] * rho(i,j,k); + state(i,j,k,FIRSTSPEC+n) = massfrac[n] * state(i,j,k,DENSITY); } } From d60bf55fd170da473788a7da32335919b4cbcf44 Mon Sep 17 00:00:00 2001 From: Lucas Esclapez Date: Tue, 22 Feb 2022 14:42:50 -0700 Subject: [PATCH 05/12] Update RegTest/EB* cases. --- .../EB_ChallengeProblem/pelelm_prob.H | 26 ++++----- Exec/RegTests/EB_EnclosedFlame/pelelm_prob.H | 28 +++++----- Exec/RegTests/EB_EnclosedVortex/pelelm_prob.H | 24 ++++----- .../EB_FlowPastCylinder/pelelm_prob.H | 54 +++++++++---------- 4 files changed, 58 insertions(+), 74 deletions(-) diff --git a/Exec/RegTests/EB_ChallengeProblem/pelelm_prob.H b/Exec/RegTests/EB_ChallengeProblem/pelelm_prob.H index 39a195dd..72e61585 100644 --- a/Exec/RegTests/EB_ChallengeProblem/pelelm_prob.H +++ b/Exec/RegTests/EB_ChallengeProblem/pelelm_prob.H @@ -15,12 +15,8 @@ AMREX_GPU_DEVICE AMREX_FORCE_INLINE void pelelm_initdata(int i, int j, int k, int is_incompressible, - amrex::Array4 const& vel, - amrex::Array4 const& rho, - amrex::Array4 const& rhoY, - amrex::Array4 const& rhoH, - amrex::Array4 const& temp, - amrex::Array4 const& aux, + amrex::Array4 const& state, + amrex::Array4 const& /*aux*/, amrex::GeometryData const& geomdata, ProbParm const& prob_parm, pele::physics::PMF::PmfData::DataContainer const * pmf_data) @@ -48,31 +44,31 @@ void pelelm_initdata(int i, int j, int k, massfrac[O2_ID] = 0.233; massfrac[N2_ID] = 0.767; - temp(i,j,k) = prob_parm.T_mean; + state(i,j,k,TEMP) = prob_parm.T_mean; amrex::Real r_xy = std::sqrt(x*x+y*y); amrex::Real angle = std::atan2(y,x); amrex::Real angular_vel = r_xy * 400.0 * std::tanh(300*(0.012-r_xy)); - vel(i,j,k,0) = angular_vel * std::sin(angle); - vel(i,j,k,1) = -angular_vel * std::cos(angle); - vel(i,j,k,2) = 0.0; + state(i,j,k,VELX) = angular_vel * std::sin(angle); + state(i,j,k,VELY) = -angular_vel * std::cos(angle); + state(i,j,k,VELZ) = 0.0; amrex::Real P_cgs = prob_parm.P_mean * 10.0; // Density amrex::Real rho_cgs = 0.0; - eos.PYT2R(P_cgs, massfrac, temp(i,j,k), rho_cgs); - rho(i,j,k) = rho_cgs * 1.0e3; + eos.PYT2R(P_cgs, massfrac, state(i,j,k,TEMP), rho_cgs); + state(i,j,k,DENSITY) = rho_cgs * 1.0e3; // Enthalpy amrex::Real h_cgs = 0.0; - eos.TY2H(temp(i,j,k), massfrac, h_cgs); - rhoH(i,j,k) = h_cgs * 1.0e-4 * rho(i,j,k); + eos.TY2H(state(i,j,k,TEMP), massfrac, h_cgs); + state(i,j,k,RHOH) = h_cgs * 1.0e-4 * state(i,j,k,DENSITY); // Species mass for (int n = 0; n < NUM_SPECIES; n++) { - rhoY(i,j,k,n) = massfrac[n] * rho(i,j,k); + state(i,j,k,FIRSTSPEC+n) = massfrac[n] * state(i,j,k,DENSITY); } } diff --git a/Exec/RegTests/EB_EnclosedFlame/pelelm_prob.H b/Exec/RegTests/EB_EnclosedFlame/pelelm_prob.H index 9a00e124..a3445b27 100644 --- a/Exec/RegTests/EB_EnclosedFlame/pelelm_prob.H +++ b/Exec/RegTests/EB_EnclosedFlame/pelelm_prob.H @@ -15,12 +15,8 @@ AMREX_GPU_DEVICE AMREX_FORCE_INLINE void pelelm_initdata(int i, int j, int k, int is_incompressible, - amrex::Array4 const& vel, - amrex::Array4 const& rho, - amrex::Array4 const& rhoY, - amrex::Array4 const& rhoH, - amrex::Array4 const& temp, - amrex::Array4 const& aux, + amrex::Array4 const& state, + amrex::Array4 const& /*aux*/, amrex::GeometryData const& geomdata, ProbParm const& prob_parm, pele::physics::PMF::PmfData::DataContainer const * pmf_data) @@ -86,36 +82,36 @@ void pelelm_initdata(int i, int j, int k, pele::physics::PMF::pmf(pmf_data,y1, y1, pmf_vals); - temp(i,j,k) = pmf_vals[0];; + state(i,j,k,TEMP) = pmf_vals[0];; for (int n = 0; n < NUM_SPECIES; n++){ molefrac[n] = pmf_vals[3 + n]; } eos.X2Y(molefrac, massfrac); - vel(i,j,k,0) = 0.1; + state(i,j,k,VELX) = 0.1; #if ( AMREX_SPACEDIM == 2 ) - vel(i,j,k,1) = 0.1; + state(i,j,k,VELY) = 0.1; #elif ( AMREX_SPACEDIM == 3 ) - vel(i,j,k,1) = 0.1; - vel(i,j,k,2) = 0.0; + state(i,j,k,VELY) = 0.1; + state(i,j,k,VELZ) = 0.0; #endif amrex::Real P_cgs = prob_parm.P_mean * 10.0; // Density amrex::Real rho_cgs = 0.0; - eos.PYT2R(P_cgs, massfrac, temp(i,j,k), rho_cgs); - rho(i,j,k) = rho_cgs * 1.0e3; + eos.PYT2R(P_cgs, massfrac, state(i,j,k,TEMP), rho_cgs); + state(i,j,k,DENSITY) = rho_cgs * 1.0e3; // Enthalpy amrex::Real h_cgs = 0.0; - eos.TY2H(temp(i,j,k), massfrac, h_cgs); - rhoH(i,j,k) = h_cgs * 1.0e-4 * rho(i,j,k); + eos.TY2H(state(i,j,k,TEMP), massfrac, h_cgs); + state(i,j,k,RHOH) = h_cgs * 1.0e-4 * state(i,j,k,DENSITY); // Species mass for (int n = 0; n < NUM_SPECIES; n++) { - rhoY(i,j,k,n) = massfrac[n] * rho(i,j,k); + state(i,j,k,FIRSTSPEC+n) = massfrac[n] * state(i,j,k,DENSITY); } } diff --git a/Exec/RegTests/EB_EnclosedVortex/pelelm_prob.H b/Exec/RegTests/EB_EnclosedVortex/pelelm_prob.H index 65cccac2..5d956d5a 100644 --- a/Exec/RegTests/EB_EnclosedVortex/pelelm_prob.H +++ b/Exec/RegTests/EB_EnclosedVortex/pelelm_prob.H @@ -14,11 +14,7 @@ AMREX_GPU_DEVICE AMREX_FORCE_INLINE void pelelm_initdata(int i, int j, int k, int is_incompressible, - amrex::Array4 const& vel, - amrex::Array4 const& rho, - amrex::Array4 const& rhoY, - amrex::Array4 const& rhoH, - amrex::Array4 const& temp, + amrex::Array4 const& state, amrex::Array4 const& aux, amrex::GeometryData const& geomdata, ProbParm const& prob_parm, @@ -60,29 +56,29 @@ void pelelm_initdata(int i, int j, int k, const amrex::Real v_vort = prob_parm.forcevort*deltax/r_sq * exp(-d_sq/r_sq/2.); const amrex::Real w_vort = 0.; - temp(i,j,k) = prob_parm.T_mean; + state(i,j,k,TEMP) = prob_parm.T_mean; - vel(i,j,k,0) = u_vort; - vel(i,j,k,1) = v_vort; + state(i,j,k,VELX) = u_vort; + state(i,j,k,VELY) = v_vort; #if ( AMREX_SPACEDIM == 3 ) - vel(i,j,k,2) = w_vort; + state(i,j,k,VELZ) = w_vort; #endif amrex::Real P_cgs = prob_parm.P_mean * 10.0; // Density amrex::Real rho_cgs = 0.0; - eos.PYT2R(P_cgs, massfrac, temp(i,j,k), rho_cgs); - rho(i,j,k) = rho_cgs * 1.0e3; + eos.PYT2R(P_cgs, massfrac, state(i,j,k,TEMP), rho_cgs); + state(i,j,k,DENSITY) = rho_cgs * 1.0e3; // Enthalpy amrex::Real h_cgs = 0.0; - eos.TY2H(temp(i,j,k), massfrac, h_cgs); - rhoH(i,j,k) = h_cgs * 1.0e-4 * rho(i,j,k); + eos.TY2H(state(i,j,k,TEMP), massfrac, h_cgs); + state(i,j,k,RHOH) = h_cgs * 1.0e-4 * state(i,j,k,DENSITY); // Species mass for (int n = 0; n < NUM_SPECIES; n++) { - rhoY(i,j,k,n) = massfrac[n] * rho(i,j,k); + state(i,j,k,FIRSTSPEC+n) = massfrac[n] * state(i,j,k,DENSITY); } } diff --git a/Exec/RegTests/EB_FlowPastCylinder/pelelm_prob.H b/Exec/RegTests/EB_FlowPastCylinder/pelelm_prob.H index f94a80cb..256c8576 100644 --- a/Exec/RegTests/EB_FlowPastCylinder/pelelm_prob.H +++ b/Exec/RegTests/EB_FlowPastCylinder/pelelm_prob.H @@ -14,11 +14,7 @@ AMREX_GPU_DEVICE AMREX_FORCE_INLINE void pelelm_initdata(int i, int j, int k, int is_incompressible, - amrex::Array4 const& vel, - amrex::Array4 const& rho, - amrex::Array4 const& rhoY, - amrex::Array4 const& rhoH, - amrex::Array4 const& temp, + amrex::Array4 const& state, amrex::Array4 const& aux, amrex::GeometryData const& geomdata, ProbParm const& prob_parm, @@ -49,56 +45,56 @@ void pelelm_initdata(int i, int j, int k, switch(prob_parm.meanFlowDir) { case 1 : - AMREX_D_TERM(vel(i,j,k,0) = prob_parm.meanFlowMag;, - vel(i,j,k,1) = 0.0;, - vel(i,j,k,2) = 0.0); + AMREX_D_TERM(state(i,j,k,VELX) = prob_parm.meanFlowMag;, + state(i,j,k,VELY) = 0.0;, + state(i,j,k,VELZ) = 0.0); break; case -1 : - AMREX_D_TERM(vel(i,j,k,0) = -prob_parm.meanFlowMag;, - vel(i,j,k,1) = 0.0;, - vel(i,j,k,2) = 0.0); + AMREX_D_TERM(state(i,j,k,VELX) = -prob_parm.meanFlowMag;, + state(i,j,k,VELY) = 0.0;, + state(i,j,k,VELZ) = 0.0); break; case 2 : - AMREX_D_TERM(vel(i,j,k,0) = 0.0;, - vel(i,j,k,1) = prob_parm.meanFlowMag;, - vel(i,j,k,2) = 0.0); + AMREX_D_TERM(state(i,j,k,VELX) = 0.0;, + state(i,j,k,VELY) = prob_parm.meanFlowMag;, + state(i,j,k,VELZ) = 0.0); break; case -2 : - AMREX_D_TERM(vel(i,j,k,0) = 0.0;, - vel(i,j,k,1) = -prob_parm.meanFlowMag;, - vel(i,j,k,2) = 0.0); + AMREX_D_TERM(state(i,j,k,VELX) = 0.0;, + state(i,j,k,VELY) = -prob_parm.meanFlowMag;, + state(i,j,k,VELZ) = 0.0); break; case 3 : - AMREX_D_TERM(vel(i,j,k,0) = prob_parm.meanFlowMag;, - vel(i,j,k,1) = prob_parm.meanFlowMag;, - vel(i,j,k,2) = 0.0); + AMREX_D_TERM(state(i,j,k,VELX) = prob_parm.meanFlowMag;, + state(i,j,k,VELY) = prob_parm.meanFlowMag;, + state(i,j,k,VELZ) = 0.0); break; case -3 : - AMREX_D_TERM(vel(i,j,k,0) = -prob_parm.meanFlowMag;, - vel(i,j,k,1) = -prob_parm.meanFlowMag;, - vel(i,j,k,2) = 0.0); + AMREX_D_TERM(state(i,j,k,VELX) = -prob_parm.meanFlowMag;, + state(i,j,k,VELY) = -prob_parm.meanFlowMag;, + state(i,j,k,VELZ) = 0.0); break; } if (is_incompressible) return; - temp(i,j,k) = prob_parm.T_mean; + state(i,j,k,TEMP) = prob_parm.T_mean; amrex::Real P_cgs = prob_parm.P_mean * 10.0; // Density amrex::Real rho_cgs = 0.0; - eos.PYT2R(P_cgs, massfrac, temp(i,j,k), rho_cgs); - rho(i,j,k) = rho_cgs * 1.0e3; + eos.PYT2R(P_cgs, massfrac, state(i,j,k,TEMP), rho_cgs); + state(i,j,k,DENSITY) = rho_cgs * 1.0e3; // Enthalpy amrex::Real h_cgs = 0.0; - eos.TY2H(temp(i,j,k), massfrac, h_cgs); - rhoH(i,j,k) = h_cgs * 1.0e-4 * rho(i,j,k); + eos.TY2H(state(i,j,k,TEMP), massfrac, h_cgs); + state(i,j,k,RHOH) = h_cgs * 1.0e-4 * state(i,j,k,DENSITY); // Species mass for (int n = 0; n < NUM_SPECIES; n++) { - rhoY(i,j,k,n) = massfrac[n] * rho(i,j,k); + state(i,j,k,FIRSTSPEC+n) = massfrac[n] * state(i,j,k,DENSITY); } } From 68870b31c64804afcc9d3adb07c617791c06a6b5 Mon Sep 17 00:00:00 2001 From: Lucas Esclapez Date: Tue, 22 Feb 2022 14:58:13 -0700 Subject: [PATCH 06/12] Update the remainder of the tests. --- Exec/RegTests/EnclosedFlame/pelelm_prob.H | 26 ++-- Exec/RegTests/FlameSheet/pelelm_prob.H | 26 ++-- Exec/RegTests/HotBubble/pelelm_prob.H | 26 ++-- Exec/RegTests/PeriodicCases/pelelm_prob.H | 182 +++++++++++----------- Exec/RegTests/TurbInflow/pelelm_prob.H | 26 ++-- Exec/RegTests/Unit/pelelm_prob.H | 44 +++--- 6 files changed, 153 insertions(+), 177 deletions(-) diff --git a/Exec/RegTests/EnclosedFlame/pelelm_prob.H b/Exec/RegTests/EnclosedFlame/pelelm_prob.H index c4efba31..e1901cbf 100644 --- a/Exec/RegTests/EnclosedFlame/pelelm_prob.H +++ b/Exec/RegTests/EnclosedFlame/pelelm_prob.H @@ -15,11 +15,7 @@ AMREX_GPU_DEVICE AMREX_FORCE_INLINE void pelelm_initdata(int i, int j, int k, int is_incompressible, - amrex::Array4 const& vel, - amrex::Array4 const& rho, - amrex::Array4 const& rhoY, - amrex::Array4 const& rhoH, - amrex::Array4 const& temp, + amrex::Array4 const& state, amrex::Array4 const& aux, amrex::GeometryData const& geomdata, ProbParm const& prob_parm, @@ -89,36 +85,36 @@ void pelelm_initdata(int i, int j, int k, amrex::Real ymean = 0.5 * (y1+y2); pele::physics::PMF::pmf(pmf_data,ymean, ymean, pmf_vals); - temp(i,j,k) = pmf_vals[0];; + state(i,j,k,TEMP) = pmf_vals[0];; for (int n = 0; n < NUM_SPECIES; n++){ molefrac[n] = pmf_vals[3 + n]; } eos.X2Y(molefrac, massfrac); - vel(i,j,k,0) = 0.0; + state(i,j,k,VELX) = 0.0; #if ( AMREX_SPACEDIM == 2 ) - vel(i,j,k,1) = pmf_vals[1]*1e-2; + state(i,j,k,VELY) = pmf_vals[1]*1e-2; #elif ( AMREX_SPACEDIM == 3 ) - vel(i,j,k,1) = 0.0; - vel(i,j,k,2) = pmf_vals[1]*1e-2; + state(i,j,k,VELY) = 0.0; + state(i,j,k,VELZ) = pmf_vals[1]*1e-2; #endif amrex::Real P_cgs = prob_parm.P_mean * 10.0; // Density amrex::Real rho_cgs = 0.0; - eos.PYT2R(P_cgs, massfrac, temp(i,j,k), rho_cgs); - rho(i,j,k) = rho_cgs * 1.0e3; + eos.PYT2R(P_cgs, massfrac, state(i,j,k,TEMP), rho_cgs); + state(i,j,k,DENSITY) = rho_cgs * 1.0e3; // Enthalpy amrex::Real h_cgs = 0.0; - eos.TY2H(temp(i,j,k), massfrac, h_cgs); - rhoH(i,j,k) = h_cgs * 1.0e-4 * rho(i,j,k); + eos.TY2H(state(i,j,k,TEMP), massfrac, h_cgs); + state(i,j,k,RHOH) = h_cgs * 1.0e-4 * state(i,j,k,DENSITY); // Species mass for (int n = 0; n < NUM_SPECIES; n++) { - rhoY(i,j,k,n) = massfrac[n] * rho(i,j,k); + state(i,j,k,FIRSTSPEC+n) = massfrac[n] * state(i,j,k,DENSITY); } } diff --git a/Exec/RegTests/FlameSheet/pelelm_prob.H b/Exec/RegTests/FlameSheet/pelelm_prob.H index db1653af..96ee578b 100644 --- a/Exec/RegTests/FlameSheet/pelelm_prob.H +++ b/Exec/RegTests/FlameSheet/pelelm_prob.H @@ -15,11 +15,7 @@ AMREX_GPU_DEVICE AMREX_FORCE_INLINE void pelelm_initdata(int i, int j, int k, int /*is_incompressible*/, - amrex::Array4 const& vel, - amrex::Array4 const& rho, - amrex::Array4 const& rhoY, - amrex::Array4 const& rhoH, - amrex::Array4 const& temp, + amrex::Array4 const& state, amrex::Array4 const& /*aux*/, amrex::GeometryData const& geomdata, ProbParm const& prob_parm, @@ -81,36 +77,36 @@ void pelelm_initdata(int i, int j, int k, pele::physics::PMF::pmf(pmf_data,y1, y2, pmf_vals); - temp(i,j,k) = pmf_vals[0];; + state(i,j,k,TEMP) = pmf_vals[0];; for (int n = 0; n < NUM_SPECIES; n++){ molefrac[n] = pmf_vals[3 + n]; } eos.X2Y(molefrac, massfrac); - vel(i,j,k,0) = 0.0; + state(i,j,k,VELX) = 0.0; #if ( AMREX_SPACEDIM == 2 ) - vel(i,j,k,1) = pmf_vals[1]*1e-2; + state(i,j,k,VELY) = pmf_vals[1]*1e-2; #elif ( AMREX_SPACEDIM == 3 ) - vel(i,j,k,1) = 0.0; - vel(i,j,k,2) = pmf_vals[1]*1e-2; + state(i,j,k,VELY) = 0.0; + state(i,j,k,VELZ) = pmf_vals[1]*1e-2; #endif amrex::Real P_cgs = prob_parm.P_mean * 10.0; // Density amrex::Real rho_cgs = 0.0; - eos.PYT2R(P_cgs, massfrac, temp(i,j,k), rho_cgs); - rho(i,j,k) = rho_cgs * 1.0e3; + eos.PYT2R(P_cgs, massfrac, state(i,j,k,TEMP), rho_cgs); + state(i,j,k,DENSITY) = rho_cgs * 1.0e3; // Enthalpy amrex::Real h_cgs = 0.0; - eos.TY2H(temp(i,j,k), massfrac, h_cgs); - rhoH(i,j,k) = h_cgs * 1.0e-4 * rho(i,j,k); + eos.TY2H(state(i,j,k,TEMP), massfrac, h_cgs); + state(i,j,k,RHOH) = h_cgs * 1.0e-4 * state(i,j,k,DENSITY); // Species mass for (int n = 0; n < NUM_SPECIES; n++) { - rhoY(i,j,k,n) = massfrac[n] * rho(i,j,k); + state(i,j,k,FIRSTSPEC+n) = massfrac[n] * state(i,j,k,DENSITY); } } diff --git a/Exec/RegTests/HotBubble/pelelm_prob.H b/Exec/RegTests/HotBubble/pelelm_prob.H index 09387ee7..4aa928e6 100644 --- a/Exec/RegTests/HotBubble/pelelm_prob.H +++ b/Exec/RegTests/HotBubble/pelelm_prob.H @@ -14,11 +14,7 @@ AMREX_GPU_DEVICE AMREX_FORCE_INLINE void pelelm_initdata(int i, int j, int k, int is_incompressible, - amrex::Array4 const& vel, - amrex::Array4 const& rho, - amrex::Array4 const& rhoY, - amrex::Array4 const& rhoH, - amrex::Array4 const& temp, + amrex::Array4 const& state, amrex::Array4 const& aux, amrex::GeometryData const& geomdata, ProbParm const& prob_parm, @@ -44,33 +40,33 @@ void pelelm_initdata(int i, int j, int k, massfrac[O2_ID] = 0.233; massfrac[N2_ID] = 0.767; - temp(i,j,k) = prob_parm.T_mean; + state(i,j,k,TEMP) = prob_parm.T_mean; amrex::Real x_c = prob_lo[0]+0.5*Lx; amrex::Real rad = std::sqrt((y-prob_parm.bubble_y0)*(y-prob_parm.bubble_y0)+ (x-x_c)*(x-x_c)); if (rad <= prob_parm.bubble_rad) { - temp(i,j,k) =prob_parm.T_bubble; + state(i,j,k,TEMP) =prob_parm.T_bubble; } - AMREX_D_TERM(vel(i,j,k,0) = 0.0;, - vel(i,j,k,1) = 0.0;, - vel(i,j,k,2) = 0.0); + AMREX_D_TERM(state(i,j,k,VELX) = 0.0;, + state(i,j,k,VELY) = 0.0;, + state(i,j,k,VELZ) = 0.0); amrex::Real P_cgs = prob_parm.P_mean * 10.0; // Density amrex::Real rho_cgs = 0.0; - eos.PYT2R(P_cgs, massfrac, temp(i,j,k), rho_cgs); - rho(i,j,k) = rho_cgs * 1.0e3; + eos.PYT2R(P_cgs, massfrac, state(i,j,k,TEMP), rho_cgs); + state(i,j,k,DENSITY) = rho_cgs * 1.0e3; // Enthalpy amrex::Real h_cgs = 0.0; - eos.TY2H(temp(i,j,k), massfrac, h_cgs); - rhoH(i,j,k) = h_cgs * 1.0e-4 * rho(i,j,k); + eos.TY2H(state(i,j,k,TEMP), massfrac, h_cgs); + state(i,j,k,RHOH) = h_cgs * 1.0e-4 * state(i,j,k,DENSITY); // Species mass for (int n = 0; n < NUM_SPECIES; n++) { - rhoY(i,j,k,n) = massfrac[n] * rho(i,j,k); + state(i,j,k,FIRSTSPEC+n) = massfrac[n] * state(i,j,k,DENSITY); } } diff --git a/Exec/RegTests/PeriodicCases/pelelm_prob.H b/Exec/RegTests/PeriodicCases/pelelm_prob.H index a8a323ef..f2c71fb6 100644 --- a/Exec/RegTests/PeriodicCases/pelelm_prob.H +++ b/Exec/RegTests/PeriodicCases/pelelm_prob.H @@ -14,11 +14,7 @@ AMREX_GPU_DEVICE AMREX_FORCE_INLINE void pelelm_initdata(int i, int j, int k, int is_incompressible, - amrex::Array4 const& vel, - amrex::Array4 const& rho, - amrex::Array4 const& rhoY, - amrex::Array4 const& rhoH, - amrex::Array4 const& temp, + amrex::Array4 const& state, amrex::Array4 const& aux, amrex::GeometryData const& geomdata, ProbParm const& prob_parm, @@ -68,78 +64,78 @@ void pelelm_initdata(int i, int j, int k, switch(prob_parm.meanFlowDir) { case 1 : - AMREX_D_TERM(vel(i,j,k,0) = prob_parm.meanFlowMag + u_vort;, - vel(i,j,k,1) = v_vort;, - vel(i,j,k,2) = 0.0); + AMREX_D_TERM(state(i,j,k,VELX) = prob_parm.meanFlowMag + u_vort;, + state(i,j,k,VELY) = v_vort;, + state(i,j,k,VELZ) = 0.0); break; case -1 : - AMREX_D_TERM(vel(i,j,k,0) = -prob_parm.meanFlowMag + u_vort;, - vel(i,j,k,1) = v_vort;, - vel(i,j,k,2) = 0.0); + AMREX_D_TERM(state(i,j,k,VELX) = -prob_parm.meanFlowMag + u_vort;, + state(i,j,k,VELY) = v_vort;, + state(i,j,k,VELZ) = 0.0); break; case 2 : - AMREX_D_TERM(vel(i,j,k,0) = u_vort;, - vel(i,j,k,1) = prob_parm.meanFlowMag + v_vort;, - vel(i,j,k,2) = 0.0); + AMREX_D_TERM(state(i,j,k,VELX) = u_vort;, + state(i,j,k,VELY) = prob_parm.meanFlowMag + v_vort;, + state(i,j,k,VELZ) = 0.0); break; case -2 : - AMREX_D_TERM(vel(i,j,k,0) = u_vort;, - vel(i,j,k,1) = -prob_parm.meanFlowMag + v_vort;, - vel(i,j,k,2) = 0.0); + AMREX_D_TERM(state(i,j,k,VELX) = u_vort;, + state(i,j,k,VELY) = -prob_parm.meanFlowMag + v_vort;, + state(i,j,k,VELZ) = 0.0); break; case 3 : - AMREX_D_TERM(vel(i,j,k,0) = prob_parm.meanFlowMag + u_vort;, - vel(i,j,k,1) = prob_parm.meanFlowMag + v_vort;, - vel(i,j,k,2) = 0.0); + AMREX_D_TERM(state(i,j,k,VELX) = prob_parm.meanFlowMag + u_vort;, + state(i,j,k,VELY) = prob_parm.meanFlowMag + v_vort;, + state(i,j,k,VELZ) = 0.0); break; case -3 : - AMREX_D_TERM(vel(i,j,k,0) = -prob_parm.meanFlowMag + u_vort;, - vel(i,j,k,1) = -prob_parm.meanFlowMag + v_vort;, - vel(i,j,k,2) = 0.0); + AMREX_D_TERM(state(i,j,k,VELX) = -prob_parm.meanFlowMag + u_vort;, + state(i,j,k,VELY) = -prob_parm.meanFlowMag + v_vort;, + state(i,j,k,VELZ) = 0.0); break; } if (is_incompressible) return; - temp(i,j,k) = prob_parm.T_mean; + state(i,j,k,TEMP) = prob_parm.T_mean; } else if ( prob_parm.probType == 1 ) { // CoGau switch(prob_parm.meanFlowDir) { case 1 : - AMREX_D_TERM(vel(i,j,k,0) = prob_parm.meanFlowMag;, - vel(i,j,k,1) = 0.0;, - vel(i,j,k,2) = 0.0); - break; - case -1 : - AMREX_D_TERM(vel(i,j,k,0) = -prob_parm.meanFlowMag;, - vel(i,j,k,1) = 0.0;, - vel(i,j,k,2) = 0.0); - break; - case 2 : - AMREX_D_TERM(vel(i,j,k,0) = 0.0;, - vel(i,j,k,1) = prob_parm.meanFlowMag;, - vel(i,j,k,2) = 0.0); - break; - case -2 : - AMREX_D_TERM(vel(i,j,k,0) = 0.0;, - vel(i,j,k,1) = -prob_parm.meanFlowMag;, - vel(i,j,k,2) = 0.0); - break; - case 3 : - AMREX_D_TERM(vel(i,j,k,0) = prob_parm.meanFlowMag;, - vel(i,j,k,1) = prob_parm.meanFlowMag;, - vel(i,j,k,2) = 0.0); - break; - case -3 : - AMREX_D_TERM(vel(i,j,k,0) = -prob_parm.meanFlowMag;, - vel(i,j,k,1) = -prob_parm.meanFlowMag;, - vel(i,j,k,2) = 0.0); + AMREX_D_TERM(state(i,j,k,VELX) = prob_parm.meanFlowMag;, + state(i,j,k,VELY) = 0.0;, + state(i,j,k,VELZ) = 0.0); + break; + case -1 : + AMREX_D_TERM(state(i,j,k,VELX) = -prob_parm.meanFlowMag;, + state(i,j,k,VELY) = 0.0;, + state(i,j,k,VELZ) = 0.0); + break; + case 2 : + AMREX_D_TERM(state(i,j,k,VELX) = 0.0;, + state(i,j,k,VELY) = prob_parm.meanFlowMag;, + state(i,j,k,VELZ) = 0.0); + break; + case -2 : + AMREX_D_TERM(state(i,j,k,VELX) = 0.0;, + state(i,j,k,VELY) = -prob_parm.meanFlowMag;, + state(i,j,k,VELZ) = 0.0); + break; + case 3 : + AMREX_D_TERM(state(i,j,k,VELX) = prob_parm.meanFlowMag;, + state(i,j,k,VELY) = prob_parm.meanFlowMag;, + state(i,j,k,VELZ) = 0.0); + break; + case -3 : + AMREX_D_TERM(state(i,j,k,VELX) = -prob_parm.meanFlowMag;, + state(i,j,k,VELY) = -prob_parm.meanFlowMag;, + state(i,j,k,VELZ) = 0.0); break; } if (is_incompressible) return; - temp(i,j,k) = prob_parm.T_mean; + state(i,j,k,TEMP) = prob_parm.T_mean; const amrex::Real deltax = x - prob_parm.xgauss; const amrex::Real deltay = y - prob_parm.ygauss; const amrex::Real d_sq = deltax*deltax + deltay*deltay; @@ -156,40 +152,40 @@ void pelelm_initdata(int i, int j, int k, switch(prob_parm.meanFlowDir) { case 1 : - AMREX_D_TERM(vel(i,j,k,0) = prob_parm.meanFlowMag;, - vel(i,j,k,1) = 0.0;, - vel(i,j,k,2) = 0.0); - break; - case -1 : - AMREX_D_TERM(vel(i,j,k,0) = -prob_parm.meanFlowMag;, - vel(i,j,k,1) = 0.0;, - vel(i,j,k,2) = 0.0); - break; - case 2 : - AMREX_D_TERM(vel(i,j,k,0) = 0.0;, - vel(i,j,k,1) = prob_parm.meanFlowMag;, - vel(i,j,k,2) = 0.0); - break; - case -2 : - AMREX_D_TERM(vel(i,j,k,0) = 0.0;, - vel(i,j,k,1) = -prob_parm.meanFlowMag;, - vel(i,j,k,2) = 0.0); - break; - case 3 : - AMREX_D_TERM(vel(i,j,k,0) = prob_parm.meanFlowMag;, - vel(i,j,k,1) = prob_parm.meanFlowMag;, - vel(i,j,k,2) = 0.0); - break; - case -3 : - AMREX_D_TERM(vel(i,j,k,0) = -prob_parm.meanFlowMag;, - vel(i,j,k,1) = -prob_parm.meanFlowMag;, - vel(i,j,k,2) = 0.0); + AMREX_D_TERM(state(i,j,k,VELX) = prob_parm.meanFlowMag;, + state(i,j,k,VELY) = 0.0;, + state(i,j,k,VELZ) = 0.0); + break; + case -1 : + AMREX_D_TERM(state(i,j,k,VELX) = -prob_parm.meanFlowMag;, + state(i,j,k,VELY) = 0.0;, + state(i,j,k,VELZ) = 0.0); + break; + case 2 : + AMREX_D_TERM(state(i,j,k,VELX) = 0.0;, + state(i,j,k,VELY) = prob_parm.meanFlowMag;, + state(i,j,k,VELZ) = 0.0); + break; + case -2 : + AMREX_D_TERM(state(i,j,k,VELX) = 0.0;, + state(i,j,k,VELY) = -prob_parm.meanFlowMag;, + state(i,j,k,VELZ) = 0.0); + break; + case 3 : + AMREX_D_TERM(state(i,j,k,VELX) = prob_parm.meanFlowMag;, + state(i,j,k,VELY) = prob_parm.meanFlowMag;, + state(i,j,k,VELZ) = 0.0); + break; + case -3 : + AMREX_D_TERM(state(i,j,k,VELX) = -prob_parm.meanFlowMag;, + state(i,j,k,VELY) = -prob_parm.meanFlowMag;, + state(i,j,k,VELZ) = 0.0); break; } if (is_incompressible) return; - temp(i,j,k) = prob_parm.T_mean; + state(i,j,k,TEMP) = prob_parm.T_mean; const amrex::Real deltax = x - prob_parm.xgauss; const amrex::Real deltay = y - prob_parm.ygauss; const amrex::Real rad = std::sqrt(deltax*deltax + deltay*deltay); @@ -198,19 +194,19 @@ void pelelm_initdata(int i, int j, int k, massfrac[sp1_ID] += massfrac[sp1_ID] * prob_parm.ampgauss * eta; massfrac[sp2_ID] = 1.0 - massfrac[sp1_ID]; } else if ( prob_parm.gauss_type == 1 ) { // Temp - temp(i,j,k) = prob_parm.T_mean * ( 1.0 + prob_parm.ampgauss * eta ); + state(i,j,k,TEMP) = prob_parm.T_mean * ( 1.0 + prob_parm.ampgauss * eta ); } else { amrex::Abort("Unknown tanh_type: should be either Temp or Spec"); } } else if ( prob_parm.probType == 2 ) { // DiffGau - AMREX_D_TERM(vel(i,j,k,0) = 0.0;, - vel(i,j,k,1) = 0.0;, - vel(i,j,k,2) = 0.0); + AMREX_D_TERM(state(i,j,k,VELX) = 0.0;, + state(i,j,k,VELY) = 0.0;, + state(i,j,k,VELZ) = 0.0); if (is_incompressible) return; - temp(i,j,k) = prob_parm.T_mean; + state(i,j,k,TEMP) = prob_parm.T_mean; // Set up the Gaussian as the solution of the diffusion of a delta dirac initial distribution // after time gaussTime of a diffusion process with constant diffusion coeff. gaussDiff. Use ampgauss // to avoid undershoot/overshoot of the 2-species mixture. @@ -224,7 +220,7 @@ void pelelm_initdata(int i, int j, int k, massfrac[sp2_ID] = 1.0 - massfrac[sp1_ID]; } else if ( prob_parm.gauss_type == 1 ) { //Temp // TODO: find a better way, one with an analytical solution - temp(i,j,k) = prob_parm.T_mean * ( 1.0 + prob_parm.ampgauss * std::exp(-d_sq/r_sq) ); + state(i,j,k,TEMP) = prob_parm.T_mean * ( 1.0 + prob_parm.ampgauss * std::exp(-d_sq/r_sq) ); } else { amrex::Abort("Unknown gauss_type: should be either Temp or Spec"); } @@ -234,17 +230,17 @@ void pelelm_initdata(int i, int j, int k, // Density amrex::Real rho_cgs = 0.0; - eos.PYT2R(P_cgs, massfrac, temp(i,j,k), rho_cgs); - rho(i,j,k) = rho_cgs * 1.0e3; + eos.PYT2R(P_cgs, massfrac, state(i,j,k,TEMP), rho_cgs); + state(i,j,k,DENSITY) = rho_cgs * 1.0e3; // Enthalpy amrex::Real h_cgs = 0.0; - eos.TY2H(temp(i,j,k), massfrac, h_cgs); - rhoH(i,j,k) = h_cgs * 1.0e-4 * rho(i,j,k); + eos.TY2H(state(i,j,k,TEMP), massfrac, h_cgs); + state(i,j,k,RHOH) = h_cgs * 1.0e-4 * state(i,j,k,DENSITY); // Species mass for (int n = 0; n < NUM_SPECIES; n++) { - rhoY(i,j,k,n) = massfrac[n] * rho(i,j,k); + state(i,j,k,FIRSTSPEC+n) = massfrac[n] * state(i,j,k,DENSITY); } } diff --git a/Exec/RegTests/TurbInflow/pelelm_prob.H b/Exec/RegTests/TurbInflow/pelelm_prob.H index 8aac7143..89b626e6 100644 --- a/Exec/RegTests/TurbInflow/pelelm_prob.H +++ b/Exec/RegTests/TurbInflow/pelelm_prob.H @@ -14,11 +14,7 @@ AMREX_GPU_DEVICE AMREX_FORCE_INLINE void pelelm_initdata(int i, int j, int k, int is_incompressible, - amrex::Array4 const& vel, - amrex::Array4 const& rho, - amrex::Array4 const& rhoY, - amrex::Array4 const& rhoH, - amrex::Array4 const& temp, + amrex::Array4 const& state, amrex::Array4 const& aux, amrex::GeometryData const& geomdata, ProbParm const& prob_parm, @@ -48,30 +44,30 @@ void pelelm_initdata(int i, int j, int k, massfrac[N2_ID] = 0.767; - AMREX_D_TERM(vel(i,j,k,0) = 0.0;, - vel(i,j,k,1) = 0.0;, - vel(i,j,k,2) = 0.0); - vel(i,j,k,prob_parm.meanFlowDir) = prob_parm.meanFlowMag; + AMREX_D_TERM(state(i,j,k,VELX) = 0.0;, + state(i,j,k,VELY) = 0.0;, + state(i,j,k,VELZ) = 0.0); + state(i,j,k,VELX+prob_parm.meanFlowDir) = prob_parm.meanFlowMag; if (is_incompressible) return; - temp(i,j,k) = prob_parm.T_mean; + state(i,j,k,TEMP) = prob_parm.T_mean; amrex::Real P_cgs = prob_parm.P_mean * 10.0; // Density amrex::Real rho_cgs = 0.0; - eos.PYT2R(P_cgs, massfrac, temp(i,j,k), rho_cgs); - rho(i,j,k) = rho_cgs * 1.0e3; + eos.PYT2R(P_cgs, massfrac, state(i,j,k,TEMP), rho_cgs); + state(i,j,k,DENSITY) = rho_cgs * 1.0e3; // Enthalpy amrex::Real h_cgs = 0.0; - eos.TY2H(temp(i,j,k), massfrac, h_cgs); - rhoH(i,j,k) = h_cgs * 1.0e-4 * rho(i,j,k); + eos.TY2H(state(i,j,k,TEMP), massfrac, h_cgs); + state(i,j,k,RHOH) = h_cgs * 1.0e-4 * state(i,j,k,DENSITY); // Species mass for (int n = 0; n < NUM_SPECIES; n++) { - rhoY(i,j,k,n) = massfrac[n] * rho(i,j,k); + state(i,j,k,FIRSTSPEC+n) = massfrac[n] * state(i,j,k,DENSITY); } } diff --git a/Exec/RegTests/Unit/pelelm_prob.H b/Exec/RegTests/Unit/pelelm_prob.H index 9dd17054..c2c0907c 100644 --- a/Exec/RegTests/Unit/pelelm_prob.H +++ b/Exec/RegTests/Unit/pelelm_prob.H @@ -15,11 +15,7 @@ AMREX_GPU_DEVICE AMREX_FORCE_INLINE void pelelm_initdata(int i, int j, int k, int is_incompressible, - amrex::Array4 const& vel, - amrex::Array4 const& rho, - amrex::Array4 const& rhoY, - amrex::Array4 const& rhoH, - amrex::Array4 const& temp, + amrex::Array4 const& state, amrex::Array4 const& aux, amrex::GeometryData const& geomdata, ProbParm const& prob_parm, @@ -57,22 +53,22 @@ void pelelm_initdata(int i, int j, int k, const amrex::Real v_vort = prob_parm.forcevort*deltax/r_sq * exp(-d_sq/r_sq/2.); const amrex::Real w_vort = 0.; - AMREX_D_TERM(vel(i,j,k,0) = prob_parm.meanFlowMag + u_vort;, - vel(i,j,k,1) = v_vort;, - vel(i,j,k,2) = 0.0); + AMREX_D_TERM(state(i,j,k,VELX) = prob_parm.meanFlowMag + u_vort;, + state(i,j,k,VELY) = v_vort;, + state(i,j,k,VELZ) = 0.0); if (is_incompressible) return; - temp(i,j,k) = prob_parm.T_mean; + state(i,j,k,TEMP) = prob_parm.T_mean; } else if ( prob_parm.probType == 1 ) { // CoGau - AMREX_D_TERM(vel(i,j,k,0) = prob_parm.meanFlowMag;, - vel(i,j,k,1) = 0.0;, - vel(i,j,k,2) = 0.0); + AMREX_D_TERM(state(i,j,k,VELX) = prob_parm.meanFlowMag;, + state(i,j,k,VELY) = 0.0;, + state(i,j,k,VELZ) = 0.0); if (is_incompressible) return; - temp(i,j,k) = prob_parm.T_mean; + state(i,j,k,TEMP) = prob_parm.T_mean; const amrex::Real deltax = x - prob_parm.xgauss; const amrex::Real deltay = y - prob_parm.ygauss; const amrex::Real d_sq = deltax*deltax + deltay*deltay; @@ -81,19 +77,19 @@ void pelelm_initdata(int i, int j, int k, massfrac[O2_ID] += massfrac[O2_ID] * prob_parm.ampgauss * std::exp(-d_sq/r_sq); massfrac[N2_ID] = 1.0 - massfrac[O2_ID]; } else if ( prob_parm.gauss_type == 1 ) { // Temp - temp(i,j,k) = prob_parm.T_mean * ( 1.0 + prob_parm.ampgauss * std::exp(-d_sq/r_sq) ); + state(i,j,k,TEMP) = prob_parm.T_mean * ( 1.0 + prob_parm.ampgauss * std::exp(-d_sq/r_sq) ); } else { amrex::Abort("Unknown gauss_type: should be either Temp or Spec"); } } else if ( prob_parm.probType == 2 ) { // DifGau - AMREX_D_TERM(vel(i,j,k,0) = 0.0;, - vel(i,j,k,1) = 0.0;, - vel(i,j,k,2) = 0.0); + AMREX_D_TERM(state(i,j,k,VELX) = 0.0;, + state(i,j,k,VELY) = 0.0;, + state(i,j,k,VELZ) = 0.0); if (is_incompressible) return; - temp(i,j,k) = prob_parm.T_mean; + state(i,j,k,TEMP) = prob_parm.T_mean; const amrex::Real deltax = x - prob_parm.xgauss; const amrex::Real deltay = y - prob_parm.ygauss; const amrex::Real d_sq = deltax*deltax + deltay*deltay; @@ -102,7 +98,7 @@ void pelelm_initdata(int i, int j, int k, massfrac[O2_ID] += massfrac[O2_ID] * prob_parm.ampgauss * std::exp(-d_sq/r_sq); massfrac[N2_ID] = 1.0 - massfrac[O2_ID]; } else if ( prob_parm.gauss_type == 1 ) { //Temp - temp(i,j,k) = prob_parm.T_mean * ( 1.0 + prob_parm.ampgauss * std::exp(-d_sq/r_sq) ); + state(i,j,k,TEMP) = prob_parm.T_mean * ( 1.0 + prob_parm.ampgauss * std::exp(-d_sq/r_sq) ); } else { amrex::Abort("Unknown gauss_type: should be either Temp or Spec"); } @@ -112,17 +108,17 @@ void pelelm_initdata(int i, int j, int k, // Density amrex::Real rho_cgs = 0.0; - eos.PYT2R(P_cgs, massfrac, temp(i,j,k), rho_cgs); - rho(i,j,k) = rho_cgs * 1.0e3; + eos.PYT2R(P_cgs, massfrac, state(i,j,k,TEMP), rho_cgs); + state(i,j,k,DENSITY) = rho_cgs * 1.0e3; // Enthalpy amrex::Real h_cgs = 0.0; - eos.TY2H(temp(i,j,k), massfrac, h_cgs); - rhoH(i,j,k) = h_cgs * 1.0e-4 * rho(i,j,k); + eos.TY2H(state(i,j,k,TEMP), massfrac, h_cgs); + state(i,j,k,RHOH) = h_cgs * 1.0e-4 * state(i,j,k,DENSITY); // Species mass for (int n = 0; n < NUM_SPECIES; n++) { - rhoY(i,j,k,n) = massfrac[n] * rho(i,j,k); + state(i,j,k,FIRSTSPEC+n) = massfrac[n] * state(i,j,k,DENSITY); } } From fe3e909612e433941b15a4ff245638e177ebde68 Mon Sep 17 00:00:00 2001 From: Lucas Esclapez Date: Tue, 22 Feb 2022 15:10:59 -0700 Subject: [PATCH 07/12] Activate fpe in HotBubble regtest 2D. --- Exec/RegTests/HotBubble/input.2d-regt | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Exec/RegTests/HotBubble/input.2d-regt b/Exec/RegTests/HotBubble/input.2d-regt index d7b475ed..b81e54a9 100644 --- a/Exec/RegTests/HotBubble/input.2d-regt +++ b/Exec/RegTests/HotBubble/input.2d-regt @@ -75,6 +75,6 @@ amr.gtemp.max_level = 4 amr.gtemp.adjacent_difference_greater = 10.0 amr.gtemp.field_name = temp -#amrex.fpe_trap_invalid = 1 -#amrex.fpe_trap_zero = 1 -#amrex.fpe_trap_overflow = 1 +amrex.fpe_trap_invalid = 1 +amrex.fpe_trap_zero = 1 +amrex.fpe_trap_overflow = 1 From a1a4334d73b08c1ea4d66b22e958d38705bcc661 Mon Sep 17 00:00:00 2001 From: Lucas Esclapez Date: Tue, 22 Feb 2022 15:13:12 -0700 Subject: [PATCH 08/12] Add a couple of HoBubble regtests. --- .github/workflows/linux.yml | 62 +++++++++++++++++++++++++++++++++++++ 1 file changed, 62 insertions(+) diff --git a/.github/workflows/linux.yml b/.github/workflows/linux.yml index f6253973..9c3cd68f 100644 --- a/.github/workflows/linux.yml +++ b/.github/workflows/linux.yml @@ -120,6 +120,68 @@ jobs: run: | ./PeleLMeX2d.gnu.ex input.2d_CoVo amr.max_step=2 amr.plot_int=-1 amr.check_int=-1 + # Build and Run the HoBubble RegTest with GNU7.5 and MPI support + HB2D_MPIRun: + name: GNU@7.5 MPI Run [HB2D] + runs-on: ubuntu-latest + env: + {CXXFLAGS: "-Werror -Wshadow -Woverloaded-virtual -Wunreachable-code"} + steps: + - name: Cancel previous runs + uses: styfle/cancel-workflow-action@0.6.0 + with: + access_token: ${{github.token}} + - uses: actions/checkout@v2 + - name: System Dependencies + run: .github/workflows/dependencies/dependencies.sh + - name: Repo Dependencies + run: Utils/CloneDeps.sh + - name: Build + env: + AMREX_HOME: ${GITHUB_WORKSPACE}/build/amrex + PELE_PHYSICS_HOME: ${GITHUB_WORKSPACE}/build/PelePhysics + PELELM_HOME: ${GITHUB_WORKSPACE} + AMREX_HYDRO_HOME: ${GITHUB_WORKSPACE}/build/AMReX-Hydro + working-directory: ./Exec/RegTests/HotBubble/ + run: | + make TPL COMP=gnu USE_MPI=TRUE + make -j 2 COMP=gnu USE_MPI=TRUE + - name: Run + working-directory: ./Exec/RegTests/HotBubble/ + run: | + ./PeleLMeX2d.gnu.MPI.ex input.2d-regt amr.max_step=20 amr.plot_int=-1 amr.check_int=-1 + + # Build and Run the HoBubble RegTest with GNU7.5 in DEBUG + HB2D_DBGRun: + name: GNU@7.5 DEBUG Run [HB2DDBG] + runs-on: ubuntu-latest + env: + {CXXFLAGS: "-Werror -Wshadow -Woverloaded-virtual -Wunreachable-code"} + steps: + - name: Cancel previous runs + uses: styfle/cancel-workflow-action@0.6.0 + with: + access_token: ${{github.token}} + - uses: actions/checkout@v2 + - name: System Dependencies + run: .github/workflows/dependencies/dependencies.sh + - name: Repo Dependencies + run: Utils/CloneDeps.sh + - name: Build + env: + AMREX_HOME: ${GITHUB_WORKSPACE}/build/amrex + PELE_PHYSICS_HOME: ${GITHUB_WORKSPACE}/build/PelePhysics + PELELM_HOME: ${GITHUB_WORKSPACE} + AMREX_HYDRO_HOME: ${GITHUB_WORKSPACE}/build/AMReX-Hydro + working-directory: ./Exec/RegTests/HotBubble/ + run: | + make TPL COMP=gnu DEBUG=TRUE USE_MPI=FALSE + make -j 2 COMP=gnu DEBUG=TRUE USE_MPI=FALSE + - name: Run + working-directory: ./Exec/RegTests/HotBubble/ + run: | + ./PeleLMeX2d.gnu.DEBUG.ex input.2d-regt amr.max_step=20 amr.plot_int=-1 amr.check_int=-1 + # Build and Run the EnclosedFlame RegTest with GNU7.5 and MPI support EF2D_MPIRun: name: GNU@7.5 MPI Run [EF2D] From f8d3d86262eff53c79174e9f7ace6ec1c7ba6cc5 Mon Sep 17 00:00:00 2001 From: Lucas Esclapez Date: Tue, 22 Feb 2022 15:13:47 -0700 Subject: [PATCH 09/12] Need to keep the aux Array4. --- Source/PeleLMInit.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Source/PeleLMInit.cpp b/Source/PeleLMInit.cpp index 10d6b003..ffbc5607 100644 --- a/Source/PeleLMInit.cpp +++ b/Source/PeleLMInit.cpp @@ -311,7 +311,7 @@ void PeleLM::initLevelData(int lev) { amrex::ParallelFor(bx, [=,m_incompressible=m_incompressible] AMREX_GPU_DEVICE (int i, int j, int k) noexcept { - pelelm_initdata(i, j, k, m_incompressible, state_arr, + pelelm_initdata(i, j, k, m_incompressible, state_arr, aux_arr, #ifdef PELE_USE_EFIELD ne_arr, phiV_arr, #endif From 6ad1c84bcba0cc59ed84e5beb70ddf9cf75e4440 Mon Sep 17 00:00:00 2001 From: Lucas Esclapez Date: Tue, 22 Feb 2022 15:14:50 -0700 Subject: [PATCH 10/12] Update submods. --- Submodules/AMReX-Hydro | 2 +- Submodules/amrex | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Submodules/AMReX-Hydro b/Submodules/AMReX-Hydro index 4fb04d80..3503c9a7 160000 --- a/Submodules/AMReX-Hydro +++ b/Submodules/AMReX-Hydro @@ -1 +1 @@ -Subproject commit 4fb04d80a2a88e0acaf9e8f0695d4cb850000ae9 +Subproject commit 3503c9a7cab9d243b6805042fee62bb0edacb389 diff --git a/Submodules/amrex b/Submodules/amrex index 76d08651..aa0dc39f 160000 --- a/Submodules/amrex +++ b/Submodules/amrex @@ -1 +1 @@ -Subproject commit 76d08651adb987e3fba6b232e806c5e7c365a8d9 +Subproject commit aa0dc39f50f714a76a7b5df630a641cc4e411642 From a3919e0813c41ec1150635aa439195365dddd581 Mon Sep 17 00:00:00 2001 From: Lucas Esclapez Date: Tue, 22 Feb 2022 15:20:16 -0700 Subject: [PATCH 11/12] Missing change to state Array4 --- Exec/RegTests/PeriodicCases/pelelm_prob.H | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Exec/RegTests/PeriodicCases/pelelm_prob.H b/Exec/RegTests/PeriodicCases/pelelm_prob.H index f2c71fb6..8fc88c65 100644 --- a/Exec/RegTests/PeriodicCases/pelelm_prob.H +++ b/Exec/RegTests/PeriodicCases/pelelm_prob.H @@ -144,7 +144,7 @@ void pelelm_initdata(int i, int j, int k, massfrac[sp1_ID] += massfrac[sp1_ID] * prob_parm.ampgauss * std::exp(-d_sq/r_sq); massfrac[sp2_ID] = 1.0 - massfrac[sp1_ID]; } else if ( prob_parm.gauss_type == 1 ) { // Temp - temp(i,j,k) = prob_parm.T_mean * ( 1.0 + prob_parm.ampgauss * std::exp(-d_sq/r_sq) ); + state(i,j,k,TEMP) = prob_parm.T_mean * ( 1.0 + prob_parm.ampgauss * std::exp(-d_sq/r_sq) ); } else { amrex::Abort("Unknown gauss_type: should be either Temp or Spec"); } From 777a7ba73e0ee9bc68b6ef5da680edb38aea05ca Mon Sep 17 00:00:00 2001 From: Lucas Esclapez Date: Tue, 22 Feb 2022 15:20:46 -0700 Subject: [PATCH 12/12] Remove deprecated include of pmf.H --- Exec/RegTests/HotBubble/pelelm_prob.cpp | 1 - 1 file changed, 1 deletion(-) diff --git a/Exec/RegTests/HotBubble/pelelm_prob.cpp b/Exec/RegTests/HotBubble/pelelm_prob.cpp index 8bae2648..4df0214d 100644 --- a/Exec/RegTests/HotBubble/pelelm_prob.cpp +++ b/Exec/RegTests/HotBubble/pelelm_prob.cpp @@ -1,6 +1,5 @@ #include #include -#include void PeleLM::readProbParm() {