Skip to content
Merged
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: 9 additions & 7 deletions nse_solver/nse_eqns.H
Original file line number Diff line number Diff line change
Expand Up @@ -250,7 +250,7 @@ void nse_fcn(amrex::Array1D<amrex::Real, 1, 3>& x,
auto nse_state = state_data.state;
nse_state.mu_p = x(1);
nse_state.mu_n = x(2);
nse_state.T = x(3);
nse_state.T = x(3) * 1.0e9_rt;

// Finish evaluating NSE X_k

Expand Down Expand Up @@ -384,7 +384,7 @@ void nse_jcn(amrex::Array1D<amrex::Real, 1, 3>& x,
auto nse_state = state_data.state;
nse_state.mu_p = x(1);
nse_state.mu_n = x(2);
nse_state.T = x(3);
nse_state.T = x(3) * 1.0e9_rt;

const amrex::Real T_in = nse_state.T;
const amrex::Real e_in = state_data.state.e;
Expand Down Expand Up @@ -471,20 +471,20 @@ void nse_jcn(amrex::Array1D<amrex::Real, 1, 3>& x,

amrex::Real dX_dmu_p = nse_state.xn[n] * zion[n] * ikTMeV;
amrex::Real dX_dmu_n = nse_state.xn[n] * (aion[n] - zion[n]) * ikTMeV;
amrex::Real dX_dT = nse_state.xn[n] *
amrex::Real dX_dT9 = 1.0e9_rt * nse_state.xn[n] *
(dpf_dT / pf - du_c_dT + (1.5_rt - (zion[n] * nse_state.mu_p +
(aion[n] - zion[n]) * nse_state.mu_n +
network::bion(n+1)) * ikTMeV) / T_in);

fjac(1, 1) += dX_dmu_p;
fjac(1, 2) += dX_dmu_n;
fjac(1, 3) += dX_dT;
fjac(1, 3) += dX_dT9;
fjac(2, 1) += zion[n] * aion_inv[n] * dX_dmu_p;
fjac(2, 2) += zion[n] * aion_inv[n] * dX_dmu_n;
fjac(2, 3) += zion[n] * aion_inv[n] * dX_dT;
fjac(2, 3) += zion[n] * aion_inv[n] * dX_dT9;
fjac(3, 1) += aion_inv[n] * dX_dmu_p;
fjac(3, 2) += aion_inv[n] * dX_dmu_n;
fjac(3, 3) += aion_inv[n] * dX_dT;
fjac(3, 3) += aion_inv[n] * dX_dT9;
}

//
Expand All @@ -501,13 +501,15 @@ void nse_jcn(amrex::Array1D<amrex::Real, 1, 3>& x,
eos_state.T = T_in;
eos(eos_input_rt, eos_state);

amrex::Real de_dT9 = 1.0e9_rt * eos_state.dedT;

fjac(3, 1) = - eos_state.abar * eos_state.abar *
(eos_state.dedA + Ye * eos_state.dedZ) * fjac(3, 1) / e_in;

fjac(3, 2) = - eos_state.abar * eos_state.abar *
(eos_state.dedA + Ye * eos_state.dedZ) * fjac(3, 2) / e_in;

fjac(3, 3) = (eos_state.dedT - eos_state.abar * eos_state.abar *
fjac(3, 3) = (de_dT9 - eos_state.abar * eos_state.abar *
(eos_state.dedA + Ye * eos_state.dedZ) * fjac(3, 3)) / e_in;
}

Expand Down
22 changes: 8 additions & 14 deletions nse_solver/nse_solver.H
Original file line number Diff line number Diff line change
Expand Up @@ -56,17 +56,9 @@ void nse_hybrid_solver(nse_solver_data<T>& state_data,
// mode = 1: scales internally
// mode = 2: scales based on user-supplied diag

if constexpr(neqs == 2){
hj.mode = 1;
} else {
hj.mode = 2;

// Scale variable, this is to work with hj.mode = 2

hj.diag(1) = 1.0_rt;
hj.diag(2) = 1.0_rt;
hj.diag(3) = 1e9_rt;
}
// Choose mode 1 for all.
// If T is unknown, we manually scale to work with T9
hj.mode = 1;

// random flag number for evaluation in for loop;

Expand All @@ -85,7 +77,8 @@ void nse_hybrid_solver(nse_solver_data<T>& state_data,
outer_x(1) = state_data.state.mu_p;
outer_x(2) = state_data.state.mu_n;
if constexpr (neqs == 3) {
outer_x(3) = state_data.state.T;
// For temperature, solve for T9.
outer_x(3) = state_data.state.T * 1.e-9_rt;
}

// fine tuning initial guesses
Expand Down Expand Up @@ -115,7 +108,7 @@ void nse_hybrid_solver(nse_solver_data<T>& state_data,
bool converged = true;

if constexpr (neqs == 3) {
if (hj.x(3) < 1.0e9_rt || hj.x(3) >= 2e10_rt) {
if (hj.x(3) < 1.0_rt || hj.x(3) >= 20.0_rt) {
// If temperature is too low or even negative.
// Or if the temperature is too high
// Then the solved Temperature is not correct.
Expand All @@ -134,7 +127,8 @@ void nse_hybrid_solver(nse_solver_data<T>& state_data,
state_data.state.mu_p = hj.x(1);
state_data.state.mu_n = hj.x(2);
if constexpr (neqs == 3) {
state_data.state.T = hj.x(3);
// Convert to T from T9
state_data.state.T = hj.x(3) * 1.e9_rt;
}
return;
}
Expand Down
2 changes: 1 addition & 1 deletion unit_test/nse_net_cell/burn_cell.H
Original file line number Diff line number Diff line change
Expand Up @@ -126,7 +126,7 @@ void burn_cell_c()

// See the result of constraint eq and jacobian using the solved input

amrex::Array1D<amrex::Real, 1, 3> x {nse_state.mu_p, nse_state.mu_n, nse_state.T};
amrex::Array1D<amrex::Real, 1, 3> x {nse_state.mu_p, nse_state.mu_n, nse_state.T * 1.e-9};
amrex::Array1D<amrex::Real, 1, 3> f;
amrex::Array2D<amrex::Real, 1, 3, 1, 3> jac;
int flag = 0;
Expand Down
12 changes: 6 additions & 6 deletions unit_test/nse_net_cell/ci-benchmarks/nse_net_unit_test.out
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
Initializing AMReX (25.09-20-g6e2d7bbde65e)...
AMReX (25.09-20-g6e2d7bbde65e) initialized
Initializing AMReX (24.10-342-g82fa0de69508)...
AMReX (24.10-342-g82fa0de69508) initialized
starting the single zone burn...
reading in network electron-capture / beta-decay tables...
chemical potential of proton is -3
Expand Down Expand Up @@ -33,13 +33,13 @@ change in T: 6000000000 6069144727
change in abar: 7.026880148 6.26238884
recovered energy: 2.784234255e+18 2.784234255e+18
Constraint Eqns using solved input are: -4.135580767e-15 0 -2.220446049e-16
Constraint Jacobian using solved input are: 19.70206532 19.80498652 3.069602949e-09 9.82702147 9.875043853 1.533907452e-09 0.2616834419 0.2616834419 7.450188201e-10
Constraint Jacobian using solved input are: 19.70206532 19.80498652 3.069602949 9.82702147 9.875043853 1.533907452 0.2616834419 0.2616834419 0.7450188201
-----------------------------------------------
Using nse.solve_nse_e_mode == 2 :
change in T: 6000000000 6069144727
change in abar: 7.026880148 6.26238884
recovered energy: 2.784234255e+18 2.784234255e+18
Constraint Eqns using solved input are: 1.218192214e-12 4.196643033e-14 8.792966355e-14
Constraint Jacobian using solved input are: 19.70206532 19.80498652 3.069602949e-09 9.82702147 9.875043853 1.533907452e-09 0.2616834419 0.2616834419 7.450188201e-10
Constraint Eqns using solved input are: -6.831202271e-13 -3.014255512e-14 -3.907985047e-13
Constraint Jacobian using solved input are: 19.70206532 19.80498652 3.069602949 9.82702147 9.875043853 1.533907452 0.2616834419 0.2616834419 0.7450188201
-----------------------------------------------
AMReX (25.09-20-g6e2d7bbde65e) finalized
AMReX (24.10-342-g82fa0de69508) finalized
Loading