Skip to content

Commit

Permalink
Pass state Array4 in initdata instead of separate Array4 for each ent…
Browse files Browse the repository at this point in the history
…ry. (#54)

* Update the Case/* pelelm_initdata to take in state Array4 instead of separate entries.

* Update call to pelelm_initdata to take in state_arr instead of separate entries.

* Update Efield folder.

* Update UnitTest folder.

* Update RegTest/EB* cases.

* Update the remainder of the tests.

* Activate fpe in HotBubble regtest 2D.

* Add a couple of HoBubble regtests.

* Need to keep the aux Array4.

* Update submods.

* Missing change to state Array4

* Remove deprecated include of pmf.H
  • Loading branch information
esclapez authored Feb 22, 2022
1 parent 83d0124 commit 0e49e06
Show file tree
Hide file tree
Showing 24 changed files with 366 additions and 387 deletions.
62 changes: 62 additions & 0 deletions .github/workflows/linux.yml
Original file line number Diff line number Diff line change
Expand Up @@ -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]
Expand Down
31 changes: 11 additions & 20 deletions Exec/Cases/CounterFlow/pelelm_prob.H
Original file line number Diff line number Diff line change
Expand Up @@ -14,11 +14,7 @@ AMREX_GPU_DEVICE
AMREX_FORCE_INLINE
void pelelm_initdata(int i, int j, int k,
int is_incompressible,
amrex::Array4<amrex::Real> const& vel,
amrex::Array4<amrex::Real> const& rho,
amrex::Array4<amrex::Real> const& rhoY,
amrex::Array4<amrex::Real> const& rhoH,
amrex::Array4<amrex::Real> const& temp,
amrex::Array4<amrex::Real> const& state,
amrex::Array4<amrex::Real> const& aux,
amrex::GeometryData const& geomdata,
ProbParm const& prob_parm,
Expand All @@ -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<amrex::Real, NUM_SPECIES + 4> 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),
Expand All @@ -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);
}
}

Expand Down
24 changes: 10 additions & 14 deletions Exec/Cases/NormalJet_OpenDomain/pelelm_prob.H
Original file line number Diff line number Diff line change
Expand Up @@ -16,11 +16,7 @@ AMREX_FORCE_INLINE
void
pelelm_initdata (int i, int j, int k,
int is_incompressible,
amrex::Array4<amrex::Real> const& vel,
amrex::Array4<amrex::Real> const& rho,
amrex::Array4<amrex::Real> const& rhoY,
amrex::Array4<amrex::Real> const& rhoH,
amrex::Array4<amrex::Real> const& temp,
amrex::Array4<amrex::Real> const& state,
amrex::Array4<amrex::Real> const& aux,
amrex::GeometryData const& geomdata,
ProbParm const& prob_parm,
Expand All @@ -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);
}
}

Expand Down
28 changes: 12 additions & 16 deletions Exec/Cases/PremBunsen2D/pelelm_prob.H
Original file line number Diff line number Diff line change
Expand Up @@ -15,11 +15,7 @@ AMREX_GPU_DEVICE
AMREX_FORCE_INLINE
void pelelm_initdata(int i, int j, int k,
int is_incompressible,
amrex::Array4<amrex::Real> const& vel,
amrex::Array4<amrex::Real> const& rho,
amrex::Array4<amrex::Real> const& rhoY,
amrex::Array4<amrex::Real> const& rhoH,
amrex::Array4<amrex::Real> const& temp,
amrex::Array4<amrex::Real> const& state,
amrex::Array4<amrex::Real> const& aux,
amrex::GeometryData const& geomdata,
ProbParm const& prob_parm,
Expand Down Expand Up @@ -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) {
Expand All @@ -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];
}
Expand All @@ -76,33 +72,33 @@ 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,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);
}
}

Expand Down
26 changes: 11 additions & 15 deletions Exec/Cases/PremBunsen3D/pelelm_prob.H
Original file line number Diff line number Diff line change
Expand Up @@ -15,11 +15,7 @@ AMREX_GPU_DEVICE
AMREX_FORCE_INLINE
void pelelm_initdata(int i, int j, int k,
int is_incompressible,
amrex::Array4<amrex::Real> const& vel,
amrex::Array4<amrex::Real> const& rho,
amrex::Array4<amrex::Real> const& rhoY,
amrex::Array4<amrex::Real> const& rhoH,
amrex::Array4<amrex::Real> const& temp,
amrex::Array4<amrex::Real> const& state,
amrex::Array4<amrex::Real> const& aux,
amrex::GeometryData const& geomdata,
ProbParm const& prob_parm,
Expand Down Expand Up @@ -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);
Expand All @@ -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);
}
}

Expand Down
22 changes: 9 additions & 13 deletions Exec/Cases/TripleFlame/pelelm_prob.H
Original file line number Diff line number Diff line change
Expand Up @@ -49,11 +49,7 @@ AMREX_FORCE_INLINE
void
pelelm_initdata (int i, int j, int k,
int is_incompressible,
amrex::Array4<amrex::Real> const& vel,
amrex::Array4<amrex::Real> const& rho,
amrex::Array4<amrex::Real> const& rhoY,
amrex::Array4<amrex::Real> const& rhoH,
amrex::Array4<amrex::Real> const& temp,
amrex::Array4<amrex::Real> const& state,
amrex::Array4<amrex::Real> const& aux,
amrex::GeometryData const& geomdata,
ProbParm const& prob_parm,
Expand Down Expand Up @@ -94,28 +90,28 @@ 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)) ));
for (int n = 0; n < NUM_SPECIES; ++n) {
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);
}
}

Expand Down
Loading

0 comments on commit 0e49e06

Please sign in to comment.