Skip to content

Commit 8106adc

Browse files
authored
pow(x, 1/3) to cbrt(x) (#1705)
1 parent 22c1543 commit 8106adc

File tree

12 files changed

+195
-197
lines changed

12 files changed

+195
-197
lines changed

EOS/helmholtz/actual_eos.H

+2-2
Original file line numberDiff line numberDiff line change
@@ -686,8 +686,8 @@ void apply_coulomb_corrections (T& state)
686686
amrex::Real dsdd = z * dxnidd;
687687
[[maybe_unused]] amrex::Real dsda = z * dxnida;
688688

689-
amrex::Real lami = 1.0e0_rt / std::pow(s, onethird);
690-
amrex::Real inv_lami = 1.0e0_rt / lami;
689+
amrex::Real inv_lami = std::cbrt(s);
690+
amrex::Real lami = 1.0e0_rt / inv_lami;
691691
z = -onethird * lami;
692692
amrex::Real lamidd = z * dsdd / s;
693693
[[maybe_unused]] amrex::Real lamida = z * dsda / s;

EOS/ztwd/actual_eos.H

+7-7
Original file line numberDiff line numberDiff line change
@@ -176,7 +176,7 @@ void actual_eos (I input, T& state)
176176

177177
// Solve for the pressure and energy:
178178

179-
x = std::pow(dens / B, 1.0_rt / 3.0_rt);
179+
x = std::cbrt(dens / B);
180180
pres = pressure(x);
181181
eint = enth - pres / dens;
182182

@@ -188,7 +188,7 @@ void actual_eos (I input, T& state)
188188

189189
// Solve for the pressure, energy and enthalpy:
190190

191-
x = std::pow(dens / B, 1.0_rt / 3.0_rt);
191+
x = std::cbrt(dens / B);
192192
pres = pressure(x);
193193
enth = enthalpy(x, B);
194194
eint = enth - pres / dens;
@@ -203,7 +203,7 @@ void actual_eos (I input, T& state)
203203

204204
pres_iter(pres, dens, B);
205205

206-
x = std::pow(dens / B, 1.0_rt / 3.0_rt);
206+
x = std::cbrt(dens / B);
207207
enth = enthalpy(x, B);
208208
eint = enth - pres / dens;
209209

@@ -215,7 +215,7 @@ void actual_eos (I input, T& state)
215215

216216
// Solve for the enthalpy and energy:
217217

218-
x = std::pow(dens / B, 1.0_rt / 3.0_rt);
218+
x = std::cbrt(dens / B);
219219
enth = enthalpy(x, B);
220220
eint = enth - pres / dens;
221221

@@ -227,7 +227,7 @@ void actual_eos (I input, T& state)
227227

228228
// Solve for the pressure and enthalpy:
229229

230-
x = std::pow(dens / B, 1.0_rt / 3.0_rt);
230+
x = std::cbrt(dens / B);
231231
pres = pressure(x);
232232
enth = enthalpy(x, B);
233233

@@ -241,7 +241,7 @@ void actual_eos (I input, T& state)
241241

242242
pres_iter(pres, dens, B);
243243

244-
x = std::pow(dens / B, 1.0_rt / 3.0_rt);
244+
x = std::cbrt(dens / B);
245245
enth = enthalpy(x, B);
246246
eint = enth - pres / dens;
247247

@@ -318,7 +318,7 @@ void actual_eos (I input, T& state)
318318

319319
// Density derivatives are computed using the chain rule, e.g. dpdr = dpdx * dxdr.
320320

321-
x = std::pow(dens / B, 1.0_rt / 3.0_rt);
321+
x = std::cbrt(dens / B);
322322
dxdr = (1.0_rt / 3.0_rt) * x / dens;
323323

324324
Real dpdr = dxdr * dpdx(x);

conductivity/stellar/actual_conductivity.H

+4-4
Original file line numberDiff line numberDiff line change
@@ -299,7 +299,7 @@ actual_conductivity (T& state)
299299
// from yakovlev & urpin soviet astro 1980 24 303 and
300300
// potekhin et al. 1997 aa 323 415 for degenerate regimes
301301
if (dlog10 > drel10) {
302-
amrex::Real xmas = meff * std::pow(state.xne, third);
302+
amrex::Real xmas = meff * std::cbrt(state.xne);
303303
amrex::Real ymas = std::sqrt(1.0_rt + xmas*xmas);
304304
amrex::Real wfac = weid * state.T/ymas * state.xne;
305305
amrex::Real cint = 1.0_rt;
@@ -311,10 +311,10 @@ actual_conductivity (T& state)
311311
// electron-electron collision frequency and thermal conductivity
312312
amrex::Real tpe = xec * std::sqrt(state.xne/ymas);
313313
amrex::Real yg = rt3 * tpe/state.T;
314-
amrex::Real xrel = 1.009_rt * std::pow(zbar/abar * state.rho * 1.0e-6_rt, third);
314+
amrex::Real xrel = 1.009_rt * std::cbrt(zbar/abar * state.rho * 1.0e-6_rt);
315315
amrex::Real beta2 = xrel*xrel/(1.0_rt + xrel*xrel);
316-
amrex::Real jy = (1.0_rt + 6.0_rt/(5.0_rt*xrel*xrel) + 2.0_rt/(5.0_rt*xrel*xrel*xrel*xrel))
317-
* ( yg*yg*yg / (3.0_rt * amrex::Math::powi<3>(1.0_rt + 0.07414_rt * yg))
316+
amrex::Real jy = (1.0_rt + 6.0_rt/(5.0_rt*xrel*xrel) + 2.0_rt/(5.0_rt*amrex::Math::powi<4>(xrel)))
317+
* ( amrex::Math::powi<3>(yg) / (3.0_rt * amrex::Math::powi<3>(1.0_rt + 0.07414_rt * yg))
318318
* std::log((2.81_rt - 0.810_rt*beta2 + yg)/yg)
319319
+ std::pow(M_PI, 5/6.0_rt) * amrex::Math::powi<4>(yg/(13.91_rt + yg)));
320320
amrex::Real vee = 0.511_rt * state.T*state.T * xmas/(ymas*ymas) * std::sqrt(xmas/ymas) * jy;

integration/BackwardEuler/be_integrator.H

+1-1
Original file line numberDiff line numberDiff line change
@@ -271,7 +271,7 @@ int be_integrator (BurnT& state, BeT& be)
271271
// can we potentially increase the timestep?
272272
// backward-Euler has a local truncation error of dt**2
273273

274-
amrex::Real dt_new = dt_sub * std::pow(1.0_rt / rel_error, 0.5_rt);
274+
amrex::Real dt_new = dt_sub * std::sqrt(1.0_rt / rel_error);
275275
dt_sub = std::clamp(dt_new, dt_sub / 2.0, 2.0 * dt_sub);
276276

277277
} else {

integration/RKC/rkc.H

+4-6
Original file line numberDiff line numberDiff line change
@@ -126,8 +126,6 @@ int rkclow (BurnT& state, RkcT& rstate)
126126
const amrex::Real onep1 = 1.1_rt;
127127
const amrex::Real p4 = 0.4_rt;
128128
const amrex::Real p8 = 0.8_rt;
129-
const amrex::Real one3rd = 1.0_rt/3.0_rt;
130-
const amrex::Real two3rd = 2.0_rt/3.0_rt;
131129

132130
// Initialize on the first call.
133131

@@ -265,7 +263,7 @@ int rkclow (BurnT& state, RkcT& rstate)
265263
if (err > 1.0_rt) {
266264
// Step is rejected.
267265
rstate.nrejct++;
268-
absh = p8 * absh / std::pow(err, one3rd);
266+
absh = p8 * absh / std::cbrt(err);
269267
if (absh < hmin) {
270268
return IERR_DT_UNDERFLOW;
271269
} else {
@@ -296,13 +294,13 @@ int rkclow (BurnT& state, RkcT& rstate)
296294
}
297295
amrex::Real fac = 10.0_rt;
298296
if (rstate.naccpt == 1) {
299-
amrex::Real temp2 = std::pow(err, one3rd);
297+
amrex::Real temp2 = std::cbrt(err);
300298
if (p8 < fac * temp2) {
301299
fac = p8/temp2;
302300
}
303301
} else {
304-
amrex::Real temp1 = p8 * absh * std::pow(errold, one3rd);
305-
amrex::Real temp2 = std::abs(hold) * std::pow(err, two3rd);
302+
amrex::Real temp1 = p8 * absh * std::cbrt(errold);
303+
amrex::Real temp2 = std::abs(hold) * amrex::Math::powi<2>(std::cbrt(err));
306304
if (temp1 < fac * temp2) {
307305
fac = temp1 / temp2;
308306
}

unit_test/burn_cell/ci-benchmarks/aprox13_RKC_unit_test.out

+23-23
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
Initializing AMReX (23.08-206-g798ca3356d16)...
2-
AMReX (23.08-206-g798ca3356d16) initialized
1+
Initializing AMReX (23.05-658-g0165b6743355)...
2+
AMReX (23.05-658-g0165b6743355) initialized
33
starting the single zone burn...
44
Maximum Time (s): 0.01
55
State Density (g/cm^3): 1000000
@@ -33,8 +33,8 @@ RHS at t = 0
3333
Ni56 3.938787868e-40
3434
------------------------------------
3535
successful? 1
36-
- Hnuc = 8.55839024e+18
37-
- added e = 8.55839024e+16
36+
- Hnuc = 8.558390237e+18
37+
- added e = 8.558390237e+16
3838
- final T = 1516425860
3939
------------------------------------
4040
e initial = 1.284393683e+17
@@ -43,31 +43,31 @@ e final = 2.140232707e+17
4343
new mass fractions:
4444
He4 0.8760723967
4545
C12 0.1064099566
46-
O16 0.0001403204362
46+
O16 0.0001403204361
4747
Ne20 8.129701234e-05
48-
Mg24 0.0002972369573
48+
Mg24 0.0002972369574
4949
Si28 0.01113151728
50-
S32 0.005297014805
51-
Ar36 0.0005641483217
52-
Ca40 6.109847214e-06
53-
Ti44 2.004306753e-09
54-
Cr48 3.2721052e-14
55-
Fe52 7.126143425e-20
56-
Ni56 1.224820426e-26
50+
S32 0.005297014784
51+
Ar36 0.0005641483118
52+
Ca40 6.109846937e-06
53+
Ti44 2.004306574e-09
54+
Cr48 3.272104685e-14
55+
Fe52 7.126141581e-20
56+
Ni56 1.22481994e-26
5757
------------------------------------
5858
species creation rates:
5959
omegadot(He4): -12.39276033
6060
omegadot(C12): 10.64099566
61-
omegadot(O16): 0.01403204362
61+
omegadot(O16): 0.01403204361
6262
omegadot(Ne20): 0.008129701234
63-
omegadot(Mg24): 0.02972369573
63+
omegadot(Mg24): 0.02972369574
6464
omegadot(Si28): 1.113151728
65-
omegadot(S32): 0.5297014805
66-
omegadot(Ar36): 0.05641483217
67-
omegadot(Ca40): 0.0006109847214
68-
omegadot(Ti44): 2.004306753e-07
69-
omegadot(Cr48): 3.2721052e-12
70-
omegadot(Fe52): 7.126143424e-18
71-
omegadot(Ni56): 1.224720426e-24
65+
omegadot(S32): 0.5297014784
66+
omegadot(Ar36): 0.05641483118
67+
omegadot(Ca40): 0.0006109846937
68+
omegadot(Ti44): 2.004306574e-07
69+
omegadot(Cr48): 3.272104685e-12
70+
omegadot(Fe52): 7.126141581e-18
71+
omegadot(Ni56): 1.22471994e-24
7272
number of steps taken: 255
73-
AMReX (23.08-206-g798ca3356d16) finalized
73+
AMReX (23.05-658-g0165b6743355) finalized
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
Initializing AMReX (24.07-16-gdcb9cc0383dc)...
2-
AMReX (24.07-16-gdcb9cc0383dc) initialized
1+
Initializing AMReX (23.05-658-g0165b6743355)...
2+
AMReX (23.05-658-g0165b6743355) initialized
33
starting the single zone burn...
44
Maximum Time (s): 0.01585
55
State Density (g/cm^3): 1000000000
@@ -13,21 +13,21 @@ RHS at t = 0
1313
ash 0.01230280576
1414
------------------------------------
1515
successful? 1
16-
- Hnuc = 5.277400893e+17
17-
- added e = 8.364680415e+15
18-
- final T = 1433712612
16+
- Hnuc = 5.277036926e+17
17+
- added e = 8.364103527e+15
18+
- final T = 1433684587
1919
------------------------------------
2020
e initial = 1.253426044e+18
21-
e final = 1.261790725e+18
21+
e final = 1.261790148e+18
2222
------------------------------------
2323
new mass fractions:
24-
C12 0.9657895158
24+
C12 0.9657918752
2525
O16 1e-30
26-
ash 0.03421048417
26+
ash 0.03420812477
2727
------------------------------------
2828
species creation rates:
29-
omegadot(C12): -2.158390168
30-
omegadot(O16): 8.840999775e-44
31-
omegadot(ash): 2.158390168
29+
omegadot(C12): -2.15824131
30+
omegadot(O16): 7.735874803e-44
31+
omegadot(ash): 2.15824131
3232
number of steps taken: 381
33-
AMReX (24.07-16-gdcb9cc0383dc) finalized
33+
AMReX (23.05-658-g0165b6743355) finalized
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
Initializing AMReX (23.11-4-ga7afcba3cffd)...
2-
AMReX (23.11-4-ga7afcba3cffd) initialized
1+
Initializing AMReX (23.05-658-g0165b6743355)...
2+
AMReX (23.05-658-g0165b6743355) initialized
33
starting the single zone burn...
44
reading in network electron-capture / beta-decay tables...
55
Maximum Time (s): 0.01
@@ -30,37 +30,37 @@ RHS at t = 0
3030
S32 1323519.174
3131
------------------------------------
3232
successful? 1
33-
- Hnuc = 4.111466233e+19
34-
- added e = 4.111466233e+17
35-
- final T = 6536235789
33+
- Hnuc = 4.520819292e+19
34+
- added e = 4.520819292e+17
35+
- final T = 6714483735
3636
------------------------------------
3737
e initial = 5.995956082e+17
38-
e final = 1.010742231e+18
38+
e final = 1.051677537e+18
3939
------------------------------------
4040
new mass fractions:
41-
H1 0.007813581548
42-
He4 9.986703417e-31
43-
O16 7.812412175e-07
44-
O20 0.009524501615
45-
F20 0.00952319448
46-
Ne20 9.986703417e-31
47-
Mg24 8.489446236e-12
48-
Al27 9.986703417e-31
49-
Si28 0.2115906158
50-
P31 9.986703417e-31
51-
S32 0.7615473253
41+
H1 0.009195917106
42+
He4 9.999999989e-31
43+
O16 5.670739329e-07
44+
O20 0.009949514518
45+
F20 0.009948148298
46+
Ne20 9.076266252e-14
47+
Mg24 1.62767428e-09
48+
Al27 9.999999989e-31
49+
Si28 0.2969684506
50+
P31 9.999999989e-31
51+
S32 0.6739374007
5252
------------------------------------
5353
species creation rates:
54-
omegadot(H1): -0.2186418452
54+
omegadot(H1): -0.08040828943
5555
omegadot(He4): -3
56-
omegadot(O16): -49.99992188
57-
omegadot(O20): -0.04754983851
58-
omegadot(F20): -0.04768055199
56+
omegadot(O16): -49.99994329
57+
omegadot(O20): -0.005048548176
58+
omegadot(F20): -0.005185170248
5959
omegadot(Ne20): -30
60-
omegadot(Mg24): -9.999999999
60+
omegadot(Mg24): -9.999999837
6161
omegadot(Al27): -1
62-
omegadot(Si28): 20.15906158
62+
omegadot(Si28): 28.69684506
6363
omegadot(P31): -1
64-
omegadot(S32): 75.15473253
65-
number of steps taken: 9639
66-
AMReX (23.11-4-ga7afcba3cffd) finalized
64+
omegadot(S32): 66.39374007
65+
number of steps taken: 45595
66+
AMReX (23.05-658-g0165b6743355) finalized

0 commit comments

Comments
 (0)