Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 8 additions & 8 deletions integration/integrator_setup_sdc.H
Original file line number Diff line number Diff line change
Expand Up @@ -19,9 +19,9 @@ struct state_backup_t {
amrex::Real T_in{};
amrex::Real rhoe_in{};
#ifndef AMREX_USE_GPU
amrex::Real xn_in[NumSpec]{};
amrex::Real rhoxn_in[NumSpec]{};
#ifdef AUX_THERMO
amrex::Real aux_in[NumAux]{};
amrex::Real rhoaux_in[NumAux]{};
#endif
#endif
};
Expand Down Expand Up @@ -115,11 +115,11 @@ state_backup_t integrator_backup (const BurnT& state) {

#ifndef AMREX_USE_GPU
for (int n = 0; n < NumSpec; ++n) {
state_save.xn_in[n] = state.y[SFS+n] / state.y[SRHO];
state_save.rhoxn_in[n] = state.y[SFS+n];
}
#ifdef AUX_THERMO
for (int n = 0; n < NumAux; ++n) {
state_save.aux_in[n] = state.y[SFX+n] / state.y[SRHO];
state_save.rhoaux_in[n] = state.y[SFX+n];
}
#endif
#endif
Expand Down Expand Up @@ -223,14 +223,14 @@ void integrator_cleanup (IntegratorT& int_state, BurnT& state,
std::cout << "dens start = " << std::setprecision(OUTDIGITS) << state.rho_orig << std::endl;
std::cout << "temp start = " << std::setprecision(OUTDIGITS) << state_save.T_in << std::endl;
std::cout << "rhoe start = " << std::setprecision(OUTDIGITS) << state_save.rhoe_in << std::endl;
std::cout << "xn start = ";
for (const auto X : state_save.xn_in) {
std::cout << "rho xn start = ";
for (const auto X : state_save.rhoxn_in) {
std::cout << std::setprecision(OUTDIGITS) << X << " ";
}
std::cout << std::endl;
#ifdef AUX_THERMO
std::cout << "aux start = ";
for (const auto aux : state_save.aux_in) {
std::cout << "rho aux start = ";
for (const auto aux : state_save.rhoaux_in) {
std::cout << std::setprecision(OUTDIGITS) << aux << " ";
}
std::cout << std::endl;
Expand Down
3 changes: 3 additions & 0 deletions unit_test/burn_cell_sdc/_parameters
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,9 @@ nsteps int 100
# do we recompute the aux quantities? or do we take them as given in the inputs?
recompute_aux bool 0

# are mass fractions (and aux) density weighted? e.g. rho X
mass_fraction_rho_weighted bool 0

density real 1.e7
temperature real 3.e9
rhoe real -1.e0
Expand Down
27 changes: 20 additions & 7 deletions unit_test/burn_cell_sdc/burn_cell.H
Original file line number Diff line number Diff line change
Expand Up @@ -20,10 +20,11 @@ void burn_cell_c()

massfractions[n-1] = get_xn(n, unit_test_rp::uniform_xn);

if (massfractions[n-1] < 0 || massfractions[n-1] > 1) {
amrex::Error("mass fraction for " + short_spec_names_cxx[n-1] + " not initialized in the interval [0,1]!");
if (! unit_test_rp::mass_fraction_rho_weighted) {
if (massfractions[n-1] < 0 || massfractions[n-1] > 1) {
amrex::Error("mass fraction for " + short_spec_names_cxx[n-1] + " not initialized in the interval [0,1]!");
}
}

}


Expand Down Expand Up @@ -214,8 +215,14 @@ void burn_cell_c()
eos_state.rho = unit_test_rp::density;
eos_state.T = unit_test_rp::temperature;

for (int n = 0; n < NumSpec; n++) {
eos_state.xn[n] = massfractions[n];
if (unit_test_rp::mass_fraction_rho_weighted) {
for (int n = 0; n < NumSpec; n++) {
eos_state.xn[n] = massfractions[n] / unit_test_rp::density;
}
} else {
for (int n = 0; n < NumSpec; n++) {
eos_state.xn[n] = massfractions[n];
}
}
#ifdef AUX_THERMO
if (unit_test_rp::recompute_aux) {
Expand All @@ -235,8 +242,14 @@ void burn_cell_c()
burn_state.rho = eos_state.rho;
burn_state.T = eos_state.T;

for (int n = 0; n < NumSpec; n++) {
burn_state.y[SFS+n] = burn_state.rho * eos_state.xn[n];
if (unit_test_rp::mass_fraction_rho_weighted) {
for (int n = 0; n < NumSpec; n++) {
burn_state.y[SFS+n] = massfractions[n];
}
} else {
for (int n = 0; n < NumSpec; n++) {
burn_state.y[SFS+n] = burn_state.rho * eos_state.xn[n];
}
}

#if NAUX_NET > 0
Expand Down
31 changes: 21 additions & 10 deletions unit_test/burn_cell_sdc/parse_integration_failure.py
Original file line number Diff line number Diff line change
Expand Up @@ -59,6 +59,8 @@ def doit(string):
A_X_k = None
A_aux_k = None

X_is_rho_weighted = False

for line in string:
if line.startswith("dens start"):
is_vode = True
Expand All @@ -82,10 +84,19 @@ def doit(string):
_tmp = line.split("=")[-1]
xn = [float(q) for q in _tmp.split()]

elif line.startswith("rho xn start"):
_tmp = line.split("=")[-1]
xn = [float(q) for q in _tmp.split()]
if_rho_weights = True

elif line.startswith("aux start"):
_tmp = line.split("=")[-1]
aux = [float(q) for q in _tmp.split()]

elif line.startswith("rho aux start"):
_tmp = line.split("=")[-1]
aux = [float(q) for q in _tmp.split()]

elif line.startswith("A(rho)"):
A_rho = float(line.split("=")[-1])

Expand Down Expand Up @@ -131,40 +142,40 @@ def doit(string):
_tmp = line.split("=")[-1]
A_aux_k = [float(q) for q in _tmp.split()]

print(f"unit_test.density = {density}")
print(f"unit_test.temperature = {temperature}")
print(f"unit_test.density = {density:30.20g}")
print(f"unit_test.temperature = {temperature:30.20g}")
if rhoe:
print(f"unit_test.rhoe = {rhoe}")
print(f"unit_test.rhoe = {rhoe:30.20g}")

if tmax:
print(f"unit_test.tmax = {tmax}")
print(f"unit_test.tmax = {tmax:30.20g}")

print("")

for n, X in enumerate(xn):
print(f"unit_test.X{n+1} = {X}")
print(f"unit_test.X{n+1} = {X:30.20g}")

print("")

if aux:
for n, a in enumerate(aux):
print(f"unit_test.Aux{n+1} = {a}")
print(f"unit_test.Aux{n+1} = {a:30.20g}")

print("")

print(f"unit_test.Adv_rho = {A_rho}")
print(f"unit_test.Adv_rhoe = {A_rhoe}")
print(f"unit_test.Adv_rho = {A_rho:30.20g}")
print(f"unit_test.Adv_rhoe = {A_rhoe:30.20g}")

print("")

for n, A in enumerate(A_X_k):
print(f"unit_test.Adv_X{n+1} = {A}")
print(f"unit_test.Adv_X{n+1} = {A:30.20g}")

if A_aux_k:
print("")

for n, A in enumerate(A_aux_k):
print(f"unit_test.Adv_Aux{n+1} = {A}")
print(f"unit_test.Adv_Aux{n+1} = {A:30.20g}")


if __name__ == "__main__":
Expand Down
Loading