Skip to content

Commit 495d3f5

Browse files
authored
add jac_cell unit test (#1618)
this simply displays the analytic and numerical Jacobian elements for comparison
1 parent 4c8331d commit 495d3f5

File tree

10 files changed

+478
-0
lines changed

10 files changed

+478
-0
lines changed

.github/workflows/jac_cell.yml

+45
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
name: jac_cell
2+
3+
on: [pull_request]
4+
jobs:
5+
nse_table:
6+
runs-on: ubuntu-latest
7+
steps:
8+
- uses: actions/checkout@v4
9+
with:
10+
fetch-depth: 0
11+
12+
- name: Get AMReX
13+
run: |
14+
mkdir external
15+
cd external
16+
git clone https://github.com/AMReX-Codes/amrex.git
17+
cd amrex
18+
git checkout development
19+
echo 'AMREX_HOME=$(GITHUB_WORKSPACE)/external/amrex' >> $GITHUB_ENV
20+
echo $AMREX_HOME
21+
if [[ -n "${AMREX_HOME}" ]]; then exit 1; fi
22+
cd ../..
23+
24+
- name: Install dependencies
25+
run: |
26+
sudo apt-get update -y -qq
27+
sudo apt-get -qq -y install curl cmake jq clang g++>=9.3.0
28+
29+
- name: Compile jac_cell
30+
run: |
31+
cd unit_test/jac_cell
32+
make -j 4
33+
34+
- name: Run jac_cell
35+
run: |
36+
cd unit_test/jac_cell
37+
./main3d.gnu.ex inputs_aprox13 > test.out
38+
39+
- name: Compare to stored output
40+
run: |
41+
cd unit_test/jac_cell
42+
diff -I "^Initializing AMReX" -I "^AMReX" test.out ci-benchmarks/jac_cell_aprox13.out
43+
44+
45+

sphinx_docs/source/unit_tests.rst

+7
Original file line numberDiff line numberDiff line change
@@ -131,6 +131,13 @@ One-zone tests
131131
given a $\rho$, $T$, and $X_k$, call the equation of state and print out
132132
the thermodynamic information.
133133

134+
* ``jac_cell`` :
135+
136+
for a single thermodynamic state, compute the analytic Jacobian
137+
(using the functions provided by the network) and a numerical
138+
finite-difference approximation to the Jacobian and output them,
139+
element-by-element, to the display.
140+
134141
* ``nse_table_cell`` :
135142

136143
given a $\rho$, $T$, and $Y_e$, evaluate the NSE state via table interpolation

unit_test/jac_cell/GNUmakefile

+39
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
PRECISION = DOUBLE
2+
PROFILE = FALSE
3+
4+
DEBUG = FALSE
5+
6+
DIM = 3
7+
8+
COMP = gnu
9+
10+
USE_MPI = FALSE
11+
USE_OMP = FALSE
12+
13+
USE_REACT = TRUE
14+
15+
EBASE = main
16+
17+
BL_NO_FORT = TRUE
18+
19+
# define the location of the Microphysics top directory
20+
MICROPHYSICS_HOME := ../..
21+
22+
# This sets the EOS directory
23+
EOS_DIR := helmholtz
24+
25+
# This sets the network directory
26+
NETWORK_DIR := aprox13
27+
28+
CONDUCTIVITY_DIR := stellar
29+
30+
INTEGRATOR_DIR = VODE
31+
32+
EXTERN_SEARCH += . ..
33+
34+
Bpack := ./Make.package
35+
Blocs := .
36+
37+
include $(MICROPHYSICS_HOME)/unit_test/Make.unit_test
38+
39+

unit_test/jac_cell/Make.package

+2
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
CEXE_sources += main.cpp
2+
CEXE_headers += jac_cell.H

unit_test/jac_cell/README.md

+5
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
# jac_cell
2+
3+
For a single thermodynamic condition, evaluate the Jacobian using both
4+
the analytic version from the network and the finite-difference
5+
numerical approximation.

unit_test/jac_cell/_parameters

+21
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
@namespace: unit_test
2+
3+
run_prefix string ""
4+
5+
small_temp real 1.e5
6+
small_dens real 1.e5
7+
8+
# the final time to integrate to
9+
tmax real 1.e-2
10+
11+
# first output time -- we will output in nsteps logarithmically spaced steps between [tfirst, tmax]
12+
tfirst real 0.0
13+
14+
# number of steps (logarithmically spaced)
15+
nsteps int 100
16+
17+
density real 1.e7
18+
19+
temperature real 3.e9
20+
21+
skip_initial_normalization bool 0
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,214 @@
1+
Initializing AMReX (24.07-16-gdcb9cc0383dc)...
2+
AMReX (24.07-16-gdcb9cc0383dc) initialized
3+
starting the single zone burn...
4+
J( 1, 1) = -22.83252156 -22.76871089
5+
J( 1, 2) = -7074.184809 -7070.885902
6+
J( 1, 3) = -146332.0024 -146331.961
7+
J( 1, 4) = -2840218.246 -2840216.758
8+
J( 1, 5) = -1480087.416 -1480081.685
9+
J( 1, 6) = -150293.5967 -150288.8284
10+
J( 1, 7) = -155563.9558 -155558.7711
11+
J( 1, 8) = -90256.26203 -90254.79555
12+
J( 1, 9) = -4338.739586 -4338.971348
13+
J( 1, 10) = -1367.526773 -1364.641738
14+
J( 1, 11) = -754.4182788 -751.4739669
15+
J( 1, 12) = -164.8910475 -163.1314012
16+
J( 1, 13) = 0.177283612 8.045249939e-06
17+
J( 1, 14) = 2.036804679e-18 2.036804635e-18
18+
19+
J( 2, 1) = 22.83252156 22.76871089
20+
J( 2, 2) = -21223.06355 -21215.80687
21+
J( 2, 3) = -0.1431906097 0.01577663496
22+
J( 2, 4) = -0.1527366503 0
23+
J( 2, 5) = -0.1591006774 0
24+
J( 2, 6) = -0.1636464111 0
25+
J( 2, 7) = -0.1670557113 0
26+
J( 2, 8) = -0.1697073892 0
27+
J( 2, 9) = -0.1718287316 0
28+
J( 2, 10) = -0.1735643754 0
29+
J( 2, 11) = -0.1750107452 0
30+
J( 2, 12) = -0.1762345965 0
31+
J( 2, 13) = -0.177283612 0
32+
J( 2, 14) = -2.036804679e-18 -2.036804635e-18
33+
34+
J( 3, 1) = -5.632962675e-25 -5.570411722e-25
35+
J( 3, 2) = 28286.69277 28286.69277
36+
J( 3, 3) = -585327.8861 -585327.8861
37+
J( 3, 4) = 6128.217777 6128.217777
38+
J( 3, 5) = -1.739488553e-26 0
39+
J( 3, 6) = -1.789188226e-26 0
40+
J( 3, 7) = -1.826462981e-26 0
41+
J( 3, 8) = -1.855454457e-26 0
42+
J( 3, 9) = -1.878647638e-26 0
43+
J( 3, 10) = -1.897623876e-26 0
44+
J( 3, 11) = -1.913437409e-26 0
45+
J( 3, 12) = -1.92681809e-26 0
46+
J( 3, 13) = -1.938287245e-26 0
47+
J( 3, 14) = -2.226890848e-43 -2.226890927e-43
48+
49+
J( 4, 1) = -1.366807088e-23 -1.347708423e-23
50+
J( 4, 2) = 4.753870727e-12 1.2621475e-25
51+
J( 4, 3) = 731659.8313 731659.8313
52+
J( 4, 4) = -14216404.34 -14216404.34
53+
J( 4, 5) = 0.003363940593 0.003363940593
54+
J( 4, 6) = -1.093051048e-24 0
55+
J( 4, 7) = -1.115822945e-24 0
56+
J( 4, 8) = -1.13353442e-24 0
57+
J( 4, 9) = -1.1477036e-24 0
58+
J( 4, 10) = -1.159296566e-24 0
59+
J( 4, 11) = -1.168957371e-24 0
60+
J( 4, 12) = -1.177131898e-24 0
61+
J( 4, 13) = -1.184138635e-24 0
62+
J( 4, 14) = -1.360452377e-41 -1.360452352e-41
63+
64+
J( 5, 1) = 8.302657095e-24 8.170002764e-24
65+
J( 5, 2) = 3.153014201e-25 1.88760336e-28
66+
J( 5, 3) = 3.547140976e-25 1.88760336e-28
67+
J( 5, 4) = 17050492.88 17050492.88
68+
J( 5, 5) = -8880490.115 -8880490.115
69+
J( 5, 6) = 0.0001669112793 0.0001669112793
70+
J( 5, 7) = -5.810350496e-23 0
71+
J( 5, 8) = -5.809693618e-23 0
72+
J( 5, 9) = -5.809168116e-23 0
73+
J( 5, 10) = -5.808738159e-23 0
74+
J( 5, 11) = -5.808379862e-23 0
75+
J( 5, 12) = -5.808076688e-23 0
76+
J( 5, 13) = -5.807816824e-23 0
77+
J( 5, 14) = 5.045605543e-42 5.045605749e-42
78+
79+
J( 6, 1) = 9.417373366e-24 9.308549997e-24
80+
J( 6, 2) = 7.540626412e-25 2.20220392e-28
81+
J( 6, 3) = 6.930014139e-18 2.204043829e-28
82+
J( 6, 4) = 5.942221324e-23 0
83+
J( 6, 5) = 10360571.8 10360571.8
84+
J( 6, 6) = -1052021.799 -1052021.799
85+
J( 6, 7) = 2.618223472 2.618223472
86+
J( 6, 8) = 5.952275493e-23 0
87+
J( 6, 9) = 5.953532264e-23 0
88+
J( 6, 10) = 5.954560531e-23 0
89+
J( 6, 11) = 5.955417421e-23 0
90+
J( 6, 12) = 5.956142481e-23 0
91+
J( 6, 13) = 5.956763961e-23 0
92+
J( 6, 14) = 1.206687442e-41 1.206687398e-41
93+
94+
J( 7, 1) = -4.433213398e-26 -4.216253314e-26
95+
J( 7, 2) = -1.713032535e-26 0
96+
J( 7, 3) = 9.755839735e-19 2.590167837e-32
97+
J( 7, 4) = -2.055639042e-26 0
98+
J( 7, 5) = -2.141290668e-26 0
99+
J( 7, 6) = 1202310.628 1202310.628
100+
J( 7, 7) = -1244476.153 -1244476.153
101+
J( 7, 8) = 10.56270301 10.56270301
102+
J( 7, 9) = -2.312593922e-26 0
103+
J( 7, 10) = -2.335953456e-26 0
104+
J( 7, 11) = -2.355419735e-26 0
105+
J( 7, 12) = -2.371891202e-26 0
106+
J( 7, 13) = -2.386009602e-26 0
107+
J( 7, 14) = -2.741277362e-43 -2.741278343e-43
108+
109+
J( 8, 1) = 5.935462112e-25 5.877272628e-25
110+
J( 8, 2) = 4.909905946e-26 0
111+
J( 8, 3) = 5.523644189e-26 0
112+
J( 8, 4) = 5.891887135e-26 0
113+
J( 8, 5) = 6.137382433e-26 0
114+
J( 8, 6) = 6.312736216e-26 0
115+
J( 8, 7) = 1400032.306 1400032.306
116+
J( 8, 8) = -812316.926 -812316.926
117+
J( 8, 9) = 1.524756764 1.524756764
118+
J( 8, 10) = 6.69532629e-26 0
119+
J( 8, 11) = 6.751120676e-26 0
120+
J( 8, 12) = 6.79833131e-26 0
121+
J( 8, 13) = 6.838797568e-26 0
122+
J( 8, 14) = 7.857068531e-43 7.857069044e-43
123+
124+
J( 9, 1) = 8.75876269e-25 8.591697512e-25
125+
J( 9, 2) = 1.000399222e-25 0
126+
J( 9, 3) = 1.125449125e-25 0
127+
J( 9, 4) = 1.200479066e-25 0
128+
J( 9, 5) = 1.250499028e-25 0
129+
J( 9, 6) = 1.286227571e-25 0
130+
J( 9, 7) = 1.313023979e-25 0
131+
J( 9, 8) = 902561.1588 902561.1588
132+
J( 9, 9) = -43393.10183 -43393.10183
133+
J( 9, 10) = 136.1591093 136.1591093
134+
J( 9, 11) = 1.37554893e-25 0
135+
J( 9, 12) = 1.385168154e-25 0
136+
J( 9, 13) = 1.393413202e-25 0
137+
J( 9, 14) = 1.600887132e-42 1.600887039e-42
138+
139+
J( 10, 1) = 3.341465689e-26 3.256971428e-26
140+
J( 10, 2) = 3.653921958e-27 0
141+
J( 10, 3) = 4.110662202e-27 0
142+
J( 10, 4) = 4.384706349e-27 0
143+
J( 10, 5) = 4.567402447e-27 0
144+
J( 10, 6) = 4.69789966e-27 0
145+
J( 10, 7) = 4.79577257e-27 0
146+
J( 10, 8) = 4.871895944e-27 0
147+
J( 10, 9) = 47730.54842 47730.54842
148+
J( 10, 10) = -15310.60916 -15310.60916
149+
J( 10, 11) = 0.002383888334 0.002383888334
150+
J( 10, 12) = 5.059276557e-27 0
151+
J( 10, 13) = 5.089391298e-27 0
152+
J( 10, 14) = 5.847182318e-44 5.847181188e-44
153+
154+
J( 11, 1) = 7.727968776e-27 7.52140159e-27
155+
J( 11, 2) = 1.166347238e-27 0
156+
J( 11, 3) = 1.312140643e-27 0
157+
J( 11, 4) = 1.399616686e-27 0
158+
J( 11, 5) = 1.457934048e-27 0
159+
J( 11, 6) = 1.499589306e-27 0
160+
J( 11, 7) = 1.53083075e-27 0
161+
J( 11, 8) = 1.555129651e-27 0
162+
J( 11, 9) = 1.574568772e-27 0
163+
J( 11, 10) = 16539.09179 16539.09179
164+
J( 11, 11) = -9017.692804 -9017.692804
165+
J( 11, 12) = 0.000548515294 0.000548515294
166+
J( 11, 13) = 1.624555082e-27 0
167+
J( 11, 14) = 1.866445159e-44 1.866444877e-44
168+
169+
J( 12, 1) = 7.899733031e-27 7.648455578e-27
170+
J( 12, 2) = 1.384355059e-27 0
171+
J( 12, 3) = 1.557399442e-27 0
172+
J( 12, 4) = 1.661226071e-27 0
173+
J( 12, 5) = 1.730443824e-27 0
174+
J( 12, 6) = 1.779885076e-27 0
175+
J( 12, 7) = 1.816966015e-27 0
176+
J( 12, 8) = 1.845806746e-27 0
177+
J( 12, 9) = 1.86887933e-27 0
178+
J( 12, 10) = 1.887756899e-27 0
179+
J( 12, 11) = 9769.164387 9769.164387
180+
J( 12, 12) = -2120.709403 -2120.709403
181+
J( 12, 13) = 0.0001045882492 0.0001045882492
182+
J( 12, 14) = 2.215311799e-44 2.215311465e-44
183+
184+
J( 13, 1) = 2.36704737e-27 2.283840256e-27
185+
J( 13, 2) = 4.518871185e-28 0
186+
J( 13, 3) = 5.083730083e-28 0
187+
J( 13, 4) = 5.422645422e-28 0
188+
J( 13, 5) = 5.648588981e-28 0
189+
J( 13, 6) = 5.809977238e-28 0
190+
J( 13, 7) = 5.93101843e-28 0
191+
J( 13, 8) = 6.02516158e-28 0
192+
J( 13, 9) = 6.1004761e-28 0
193+
J( 13, 10) = 6.16209707e-28 0
194+
J( 13, 11) = 6.213447879e-28 0
195+
J( 13, 12) = 2283.840256 2283.840256
196+
J( 13, 13) = -0.0001126334991 -0.0001126334991
197+
J( 13, 14) = 7.231315828e-45 7.231315425e-45
198+
199+
J( 14, 1) = 1.335535433e+19 1.331810907e+19
200+
J( 14, 2) = 1.672678172e+22 1.221628179e+22
201+
J( 14, 3) = 1.764169333e+23 1.669883326e+23
202+
J( 14, 4) = 6.38519349e+24 6.382691446e+24
203+
J( 14, 5) = 3.575435081e+24 3.56443165e+24
204+
J( 14, 6) = 2.522960852e+23 2.518972785e+23
205+
J( 14, 7) = 2.567887496e+23 2.492143743e+23
206+
J( 14, 8) = 1.63734141e+23 1.532779936e+23
207+
J( 14, 9) = 1.46197563e+22 5.363178614e+21
208+
J( 14, 10) = 1.41303877e+22 2.541660459e+21
209+
J( 14, 11) = 7.680250114e+21 1.43978686e+21
210+
J( 14, 12) = 6.72190453e+21 3.147552442e+20
211+
J( 14, 13) = -1.03705583e+17 -1.56260658e+13
212+
J( 14, 14) = -1.191469501 -1.191474366
213+
214+
AMReX (24.07-16-gdcb9cc0383dc) finalized

unit_test/jac_cell/inputs_aprox13

+38
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
unit_test.run_prefix = "react_aprox13_"
2+
3+
unit_test.small_temp = 1.e5
4+
unit_test.small_dens = 1.e5
5+
6+
integrator.burner_verbose = 0
7+
8+
# Set which jacobian to use
9+
# 1 = analytic jacobian
10+
# 2 = numerical jacobian
11+
12+
integrator.jacobian = 2
13+
14+
integrator.renormalize_abundances = 0
15+
16+
integrator.rtol_spec = 1.0e-6
17+
integrator.rtol_enuc = 1.0e-6
18+
integrator.atol_spec = 1.0e-6
19+
integrator.atol_enuc = 1.0e-6
20+
21+
unit_test.tmax = 1.e-2
22+
23+
unit_test.density = 1.e6
24+
unit_test.temperature = 3.e9
25+
26+
unit_test.X1 = 1.0
27+
unit_test.X2 = 0.0
28+
unit_test.X3 = 0.0
29+
unit_test.X4 = 0.0
30+
unit_test.X5 = 0.0
31+
unit_test.X6 = 0.0
32+
unit_test.X7 = 0.0
33+
unit_test.X8 = 0.0
34+
unit_test.X9 = 0.0
35+
unit_test.X10 = 0.0
36+
unit_test.X11 = 0.0
37+
unit_test.X12 = 0.0
38+
unit_test.X13 = 0.0

0 commit comments

Comments
 (0)