Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Pass state Array4 in initdata instead of separate Array4 for each entry. #54

Merged
merged 12 commits into from
Feb 22, 2022
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