Skip to content

Commit 4cd0940

Browse files
committed
Add Engle24Auto XUV model with per-timestep dispatch
Introduces a new sXUVModel value, Engle24Auto, that lets vplanet pick between the Engle (2024) Early (M >= 0.4 Msun) and MidLate (M < 0.4 Msun) coefficient sets at every integration timestep based on the current stellar mass. Both coefficient blocks must be set in star.in. Motivation: when CXUVFC's vconverge runs draw stellar mass from a Gaussian prior that straddles the 0.4 Msun model boundary, every sample should use the calibration that matches its drawn mass. Forcing one model up front biases the posterior for boundary stars (Wolf 327, TOI-406, TOI-2095, TOI-700, TOI-4438) and outright fails for stars whose mean is at or beyond the calibration bound (TRAPPIST-1, M=0.0898; Teegarden, M=0.097; GJ 4274, M=0.18; GJ 3473, M=0.36 sigma=0.016). Verification bounds: Auto accepts dMass in (0.075, 0.75) Msun -- a 25% extrapolation margin around the calibrated union range [0.1, 0.6] -- and exits beyond that to flag truly unphysical inputs. Changes: - src/stellar.h: define STELLAR_MODEL_ENGLE24AUTO (=9). - src/stellar.c: parse "engle24a*" in ReadXUVModel; add VerifyXUVEngleAuto (relaxes VerifyTwoEngleOptionsNotSet, applies the 25% safety bound); dispatch Auto in VerifyXUVEngle and per-timestep in fnPropsAuxStellar based on body[].dMass. - tests/Stellar/EngleAutoMidLate/: benchmark test that Auto at M=0.181 reproduces the existing EngleXUV (MidLate) numerics bit-identically, proving correct dispatch in the MidLate regime. - tests/Stellar/EngleAutoEarly/: benchmark test at M=0.5 with the full Auto coefficient set populated -- proves correct dispatch in the Early regime. Both test files generated via tests/maketest.py.
1 parent ba854fd commit 4cd0940

8 files changed

Lines changed: 293 additions & 1 deletion

File tree

src/stellar.c

Lines changed: 31 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -269,11 +269,13 @@ void ReadXUVModel(BODY *body, CONTROL *control, FILES *files, OPTIONS *options,
269269
body[iFile - 1].iXUVModel = STELLAR_MODEL_ENGLE24EARLY;
270270
} else if (!memcmp(sLower(cTmp), "engle24m", 8)) {
271271
body[iFile - 1].iXUVModel = STELLAR_MODEL_ENGLE24MIDLATE;
272+
} else if (!memcmp(sLower(cTmp), "engle24a", 8)) {
273+
body[iFile - 1].iXUVModel = STELLAR_MODEL_ENGLE24AUTO;
272274
} else {
273275
if (control->Io.iVerbose >= VERBERR) {
274276
fprintf(stderr,
275277
"ERROR: Unknown argument to %s: %s. Options are RIBAS, REINERS, "
276-
"ENGLE24EARLY, ENGLE24MIDLATE, or NONE.\n",
278+
"ENGLE24EARLY, ENGLE24MIDLATE, ENGLE24AUTO, or NONE.\n",
277279
options->cName, cTmp);
278280
}
279281
LineExit(files->Infile[iFile].cIn, lTmp);
@@ -1677,6 +1679,17 @@ void fnPropsAuxStellar(BODY *body, EVOLVE *evolve, IO *io, UPDATE *update,
16771679
body[iBody].dLXUV = fdLXUVEngle(
16781680
body, body[iBody].dXUVEngleMidLateA, body[iBody].dXUVEngleMidLateB,
16791681
body[iBody].dXUVEngleMidLateC, body[iBody].dXUVEngleMidLateD, iBody);
1682+
} else if (body[iBody].iXUVModel == STELLAR_MODEL_ENGLE24AUTO) {
1683+
/* Per-timestep dispatch on stellar mass. Boundary at 0.4 Msun. */
1684+
if (body[iBody].dMass >= 0.4 * MSUN) {
1685+
body[iBody].dLXUV = fdLXUVEngle(
1686+
body, body[iBody].dXUVEngleEarlyA, body[iBody].dXUVEngleEarlyB,
1687+
body[iBody].dXUVEngleEarlyC, body[iBody].dXUVEngleEarlyD, iBody);
1688+
} else {
1689+
body[iBody].dLXUV = fdLXUVEngle(
1690+
body, body[iBody].dXUVEngleMidLateA, body[iBody].dXUVEngleMidLateB,
1691+
body[iBody].dXUVEngleMidLateC, body[iBody].dXUVEngleMidLateD, iBody);
1692+
}
16801693
} else {
16811694

16821695
// Constant XUV fraction
@@ -1904,12 +1917,29 @@ void VerifyXUVEngleMidLate(BODY *body, CONTROL *control, FILES *files,
19041917
OPT_XUVMODEL, OPT_XUVENGLEEARLYD, iBody);
19051918
}
19061919

1920+
void VerifyXUVEngleAuto(BODY *body, CONTROL *control, FILES *files,
1921+
OPTIONS *options, int iBody) {
1922+
/* Engle24Auto: pick Early or MidLate per-timestep based on dMass. Allow
1923+
up to 25% extrapolation outside the calibrated union range
1924+
[0.1, 0.6] M_sun, but exit for masses more than 25% out of bounds. */
1925+
char cModel[LINE] = "ENGLE24AUTO XUV";
1926+
double dMinSafe = 0.075;
1927+
double dMaxSafe = 0.750;
1928+
1929+
VerifyEngleMassSpectralType(body, control, files, options, cModel,
1930+
dMaxSafe, dMinSafe, OPT_XUVMODEL, iBody);
1931+
/* No VerifyTwoEngleOptionsNotSet calls — Auto requires BOTH Early
1932+
and MidLate coefficient blocks to be present in star.in. */
1933+
}
1934+
19071935
void VerifyXUVEngle(BODY *body, CONTROL *control, FILES *files,
19081936
OPTIONS *options, int iBody) {
19091937
if (body[iBody].iXUVModel == STELLAR_MODEL_ENGLE24EARLY) {
19101938
VerifyXUVEngleEarly(body, control, files, options, iBody);
19111939
} else if (body[iBody].iXUVModel == STELLAR_MODEL_ENGLE24MIDLATE) {
19121940
VerifyXUVEngleMidLate(body, control, files, options, iBody);
1941+
} else if (body[iBody].iXUVModel == STELLAR_MODEL_ENGLE24AUTO) {
1942+
VerifyXUVEngleAuto(body, control, files, options, iBody);
19131943
}
19141944
}
19151945

src/stellar.h

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,11 @@
4545
7 /**< XUV evolution from Engle (2024) for M0-M2 dwarfs */
4646
#define STELLAR_MODEL_ENGLE24MIDLATE \
4747
8 /**< XUV evolution from Engle (2024) for M2.6-M6.5 dwarfs */
48+
#define STELLAR_MODEL_ENGLE24AUTO \
49+
9 /**< XUV evolution from Engle (2024) with per-timestep model selection \
50+
based on stellar mass. Both Early and MidLate coefficient sets must \
51+
be provided in star.in; dispatch uses Early for dMass >= 0.4 Msun, \
52+
MidLate otherwise. Mass safety bound: 0.075 < dMass < 0.75 Msun. */
4853

4954
#define STELLAR_DJDT_NONE \
5055
0 /**< No stellar angular momentum loss via magnetic braking */
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
# Engle24Auto -- Early dispatch test fixture (M = 0.5 Msun).
2+
# At M = 0.5 > 0.40 Msun, Auto-mode dispatch must select the Early
3+
# coefficient set. Companion fixture `star_early.in` runs the same setup
4+
# with sXUVModel = Engle24Early directly; the test asserts the resulting
5+
# .log files agree, proving dispatch correctness in the Early regime.
6+
7+
sName star
8+
saModules stellar
9+
10+
dMass 0.5
11+
dRotPeriod -10
12+
dAge 1e9
13+
14+
sStellarModel baraffe
15+
sXUVModel Engle24Auto
16+
sMagBrakingModel reiners
17+
18+
# Engle (2024) Early coefficients (active for M = 0.5 >= 0.4)
19+
dXUVEngleEarlyA -0.4896
20+
dXUVEngleEarlyB -3.2128
21+
dXUVEngleEarlyC -0.4469
22+
dXUVEngleEarlyD -0.2985
23+
24+
# Engle (2024) MidLate coefficients (present but unused for M=0.5)
25+
dXUVEngleMidLateA -0.1456
26+
dXUVEngleMidLateB -2.8876
27+
dXUVEngleMidLateC -1.8187
28+
dXUVEngleMidLateD 0.3545
29+
30+
saOutputOrder Time -Luminosity -LXUVStellar -LXUVTot
Lines changed: 78 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,78 @@
1+
from benchmark import Benchmark, benchmark
2+
import astropy.units as u
3+
4+
@benchmark(
5+
{
6+
"log.initial.system.Age": {"value": 3.155760e+16, "unit": u.sec},
7+
"log.initial.system.Time": {"value": 0.000000, "unit": u.sec},
8+
"log.initial.system.TotAngMom": {"value": 1.316702e+41, "unit": (u.kg * u.m ** 2) / u.sec},
9+
"log.initial.system.TotEnergy": {"value": -1.236883e+41, "unit": u.Joule},
10+
"log.initial.system.PotEnergy": {"value": -1.236888e+41, "unit": u.Joule},
11+
"log.initial.system.KinEnergy": {"value": 4.787665e+35, "unit": u.Joule},
12+
"log.initial.system.DeltaTime": {"value": 0.000000, "unit": u.sec},
13+
"log.initial.star.Mass": {"value": 9.942080e+29, "unit": u.kg},
14+
"log.initial.star.Radius": {"value": 3.200220e+08, "unit": u.m},
15+
"log.initial.star.RadGyra": {"value": 0.421689},
16+
"log.initial.star.RotAngMom": {"value": 1.316702e+41, "unit": (u.kg * u.m ** 2) / u.sec},
17+
"log.initial.star.RotVel": {"value": 2327.265658, "unit": u.m / u.sec},
18+
"log.initial.star.BodyType": {"value": 0.000000},
19+
"log.initial.star.RotRate": {"value": 7.272205e-06, "unit": 1 / u.sec},
20+
"log.initial.star.RotPer": {"value": 8.640000e+05, "unit": u.sec},
21+
"log.initial.star.Density": {"value": 7241.843562, "unit": u.kg / u.m ** 3},
22+
"log.initial.star.HZLimitDryRunaway": {"value": 2.534228e+10, "unit": u.m},
23+
"log.initial.star.HZLimRecVenus": {"value": 2.247260e+10, "unit": u.m},
24+
"log.initial.star.HZLimRunaway": {"value": 2.975872e+10, "unit": u.m},
25+
"log.initial.star.HZLimMoistGreenhouse": {"value": 2.973489e+10, "unit": u.m},
26+
"log.initial.star.HZLimMaxGreenhouse": {"value": 5.547642e+10, "unit": u.m},
27+
"log.initial.star.HZLimEarlyMars": {"value": 6.050631e+10, "unit": u.m},
28+
"log.initial.star.Instellation": {"value": -1.000000, "unit": u.kg / u.sec ** 3},
29+
"log.initial.star.CriticalSemiMajorAxis": {"value": -1.000000, "unit": u.m},
30+
"log.initial.star.LXUVTot": {"value": 1.569641e-05, "unit": u.LSUN},
31+
"log.initial.star.LostEnergy": {"value": 5.562685e-309, "unit": u.Joule},
32+
"log.initial.star.LostAngMom": {"value": 5.562685e-309, "unit": (u.kg * u.m ** 2) / u.sec},
33+
"log.initial.star.EscapeVelocity": {"value": 6.439704e+05, "unit": u.m / u.sec},
34+
"log.initial.star.Luminosity": {"value": 0.034834, "unit": u.LSUN},
35+
"log.initial.star.LXUVStellar": {"value": 1.569641e-05, "unit": u.LSUN},
36+
"log.initial.star.Temperature": {"value": 3680.001536, "unit": u.K},
37+
"log.initial.star.LXUVFrac": {"value": 0.000451},
38+
"log.initial.star.RossbyNumber": {"value": 0.209553},
39+
"log.initial.star.DRotPerDtStellar": {"value": 7.073788e-11},
40+
"log.initial.star.WindTorque": {"value": 1.078018e+25},
41+
"log.final.system.Age": {"value": 3.098080e+17, "unit": u.sec, "rtol": 1e-4},
42+
"log.final.system.Time": {"value": 2.782504e+17, "unit": u.sec, "rtol": 1e-4},
43+
"log.final.system.TotAngMom": {"value": 1.317902e+41, "unit": (u.kg * u.m ** 2) / u.sec, "rtol": 1e-4},
44+
"log.final.system.TotEnergy": {"value": -1.235338e+41, "unit": u.Joule, "rtol": 1e-4},
45+
"log.final.system.PotEnergy": {"value": -1.208001e+41, "unit": u.Joule, "rtol": 1e-4},
46+
"log.final.system.KinEnergy": {"value": 4.875508e+34, "unit": u.Joule, "rtol": 1e-4},
47+
"log.final.star.Mass": {"value": 9.942080e+29, "unit": u.kg, "rtol": 1e-4},
48+
"log.final.star.Radius": {"value": 3.276747e+08, "unit": u.m, "rtol": 1e-4},
49+
"log.final.star.RadGyra": {"value": 0.418088, "rtol": 1e-4},
50+
"log.final.star.RotAngMom": {"value": 4.265542e+40, "unit": (u.kg * u.m ** 2) / u.sec, "rtol": 1e-4},
51+
"log.final.star.RotVel": {"value": 749.063438, "unit": u.m / u.sec, "rtol": 1e-4},
52+
"log.final.star.BodyType": {"value": 0.000000, "rtol": 1e-4},
53+
"log.final.star.RotRate": {"value": 2.285997e-06, "unit": 1 / u.sec, "rtol": 1e-4},
54+
"log.final.star.RotPer": {"value": 2.748553e+06, "unit": u.sec, "rtol": 1e-4},
55+
"log.final.star.Density": {"value": 6746.210879, "unit": u.kg / u.m ** 3, "rtol": 1e-4},
56+
"log.final.star.HZLimitDryRunaway": {"value": 2.609042e+10, "unit": u.m, "rtol": 1e-4},
57+
"log.final.star.HZLimRecVenus": {"value": 2.313092e+10, "unit": u.m, "rtol": 1e-4},
58+
"log.final.star.HZLimRunaway": {"value": 3.063255e+10, "unit": u.m, "rtol": 1e-4},
59+
"log.final.star.HZLimMoistGreenhouse": {"value": 3.060595e+10, "unit": u.m, "rtol": 1e-4},
60+
"log.final.star.HZLimMaxGreenhouse": {"value": 5.708049e+10, "unit": u.m, "rtol": 1e-4},
61+
"log.final.star.HZLimEarlyMars": {"value": 6.225591e+10, "unit": u.m, "rtol": 1e-4},
62+
"log.final.star.Instellation": {"value": -1.000000, "unit": u.kg / u.sec ** 3, "rtol": 1e-4},
63+
"log.final.star.CriticalSemiMajorAxis": {"value": -1.000000, "unit": u.m, "rtol": 1e-4},
64+
"log.final.star.LXUVTot": {"value": 1.959178e-06, "unit": u.LSUN, "rtol": 1e-4},
65+
"log.final.star.LostEnergy": {"value": -2.733782e+39, "unit": u.Joule, "rtol": 1e-4},
66+
"log.final.star.LostAngMom": {"value": 8.913482e+40, "unit": (u.kg * u.m ** 2) / u.sec, "rtol": 1e-4},
67+
"log.final.star.EscapeVelocity": {"value": 6.364062e+05, "unit": u.m / u.sec, "rtol": 1e-4},
68+
"log.final.star.Luminosity": {"value": 0.036921, "unit": u.LSUN, "rtol": 1e-4},
69+
"log.final.star.LXUVStellar": {"value": 1.959178e-06, "unit": u.LSUN, "rtol": 1e-4},
70+
"log.final.star.Temperature": {"value": 3689.002929, "unit": u.K, "rtol": 1e-4},
71+
"log.final.star.LXUVFrac": {"value": 5.306436e-05, "rtol": 1e-4},
72+
"log.final.star.RossbyNumber": {"value": 0.669712, "rtol": 1e-4},
73+
"log.final.star.DRotPerDtStellar": {"value": 2.418466e-12, "rtol": 1e-4},
74+
"log.final.star.WindTorque": {"value": 3.753272e+22, "rtol": 1e-4},
75+
}
76+
)
77+
class Test_EngleAutoEarly(Benchmark):
78+
pass
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
sSystemName star
2+
iVerbose 0
3+
bOverwrite 1
4+
5+
saBodyFiles star.in
6+
7+
sUnitMass solar
8+
sUnitLength AU
9+
sUnitTime YEARS
10+
sUnitAngle d
11+
12+
bDoLog 1
13+
iDigits 6
14+
dMinValue 1e-10
15+
16+
bDoForward 1
17+
bVarDt 1
18+
dEta 0.01
19+
dStopTime 1e10
20+
dOutputTime 1e9
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
# Engle24Auto XUV model — MidLate dispatch test.
2+
# Same physical setup as tests/Stellar/EngleXUV (M=0.181, P_rot=-122d) but
3+
# with sXUVModel = Engle24Auto. Because M < 0.40 Msun, Auto-mode dispatch
4+
# must select the MidLate coefficient set; numerical results should be
5+
# bit-identical to the EngleXUV benchmark. Engle24Early coefficients are
6+
# also present (required by Auto mode) but should not influence the result.
7+
8+
sName star
9+
saModules stellar
10+
11+
dMass 0.181
12+
dRotPeriod -122
13+
dAge 1e9
14+
15+
sStellarModel baraffe
16+
sXUVModel Engle24Auto
17+
sMagBrakingModel reiners
18+
19+
# Engle (2024) Early coefficients (unused for M=0.181 < 0.4)
20+
dXUVEngleEarlyA -0.4896
21+
dXUVEngleEarlyB -3.2128
22+
dXUVEngleEarlyC -0.4469
23+
dXUVEngleEarlyD -0.2985
24+
25+
# Engle (2024) MidLate coefficients (active for M=0.181 < 0.4)
26+
dXUVEngleMidLateA -0.1456
27+
dXUVEngleMidLateB -2.8876
28+
dXUVEngleMidLateC -1.8187
29+
dXUVEngleMidLateD 0.3545
30+
31+
saOutputOrder Time -Luminosity -LXUVStellar -LXUVTot
Lines changed: 78 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,78 @@
1+
from benchmark import Benchmark, benchmark
2+
import astropy.units as u
3+
4+
@benchmark(
5+
{
6+
"log.initial.system.Age": {"value": 3.155760e+16, "unit": u.sec},
7+
"log.initial.system.Time": {"value": 0.000000, "unit": u.sec},
8+
"log.initial.system.TotAngMom": {"value": 8.694238e+38, "unit": (u.kg * u.m ** 2) / u.sec},
9+
"log.initial.system.TotEnergy": {"value": -3.754922e+40, "unit": u.Joule},
10+
"log.initial.system.PotEnergy": {"value": -3.754922e+40, "unit": u.Joule},
11+
"log.initial.system.KinEnergy": {"value": 2.591241e+32, "unit": u.Joule},
12+
"log.initial.system.DeltaTime": {"value": 0.000000, "unit": u.sec},
13+
"log.initial.star.Mass": {"value": 3.599033e+29, "unit": u.kg},
14+
"log.initial.star.Radius": {"value": 1.381422e+08, "unit": u.m},
15+
"log.initial.star.RadGyra": {"value": 0.460833},
16+
"log.initial.star.RotAngMom": {"value": 8.694238e+38, "unit": (u.kg * u.m ** 2) / u.sec},
17+
"log.initial.star.RotVel": {"value": 82.344140, "unit": u.m / u.sec},
18+
"log.initial.star.BodyType": {"value": 0.000000},
19+
"log.initial.star.RotRate": {"value": 5.960824e-07, "unit": 1 / u.sec},
20+
"log.initial.star.RotPer": {"value": 1.054080e+07, "unit": u.sec},
21+
"log.initial.star.Density": {"value": 3.259252e+04, "unit": u.kg / u.m ** 3},
22+
"log.initial.star.HZLimitDryRunaway": {"value": 8.356400e+09, "unit": u.m},
23+
"log.initial.star.HZLimRecVenus": {"value": 7.485986e+09, "unit": u.m},
24+
"log.initial.star.HZLimRunaway": {"value": 9.873134e+09, "unit": u.m},
25+
"log.initial.star.HZLimMoistGreenhouse": {"value": 9.905190e+09, "unit": u.m},
26+
"log.initial.star.HZLimMaxGreenhouse": {"value": 1.882335e+10, "unit": u.m},
27+
"log.initial.star.HZLimEarlyMars": {"value": 2.052890e+10, "unit": u.m},
28+
"log.initial.star.Instellation": {"value": -1.000000, "unit": u.kg / u.sec ** 3},
29+
"log.initial.star.CriticalSemiMajorAxis": {"value": -1.000000, "unit": u.m},
30+
"log.initial.star.LXUVTot": {"value": 4.906221e-06, "unit": u.LSUN},
31+
"log.initial.star.LostEnergy": {"value": 5.562685e-309, "unit": u.Joule},
32+
"log.initial.star.LostAngMom": {"value": 5.562685e-309, "unit": (u.kg * u.m ** 2) / u.sec},
33+
"log.initial.star.EscapeVelocity": {"value": 5.897214e+05, "unit": u.m / u.sec},
34+
"log.initial.star.Luminosity": {"value": 0.003787, "unit": u.LSUN},
35+
"log.initial.star.LXUVStellar": {"value": 4.906221e-06, "unit": u.LSUN},
36+
"log.initial.star.Temperature": {"value": 3212.579977, "unit": u.K},
37+
"log.initial.star.LXUVFrac": {"value": 0.001295},
38+
"log.initial.star.RossbyNumber": {"value": 2.012152},
39+
"log.initial.star.DRotPerDtStellar": {"value": 5.277006e-12},
40+
"log.initial.star.WindTorque": {"value": 4.352568e+20},
41+
"log.final.system.Age": {"value": 3.108426e+17, "unit": u.sec, "rtol": 1e-4},
42+
"log.final.system.Time": {"value": 2.792850e+17, "unit": u.sec, "rtol": 1e-4},
43+
"log.final.system.TotAngMom": {"value": 8.931191e+38, "unit": (u.kg * u.m ** 2) / u.sec, "rtol": 1e-4},
44+
"log.final.system.TotEnergy": {"value": -3.698928e+40, "unit": u.Joule, "rtol": 1e-4},
45+
"log.final.system.PotEnergy": {"value": -3.674712e+40, "unit": u.Joule, "rtol": 1e-4},
46+
"log.final.system.KinEnergy": {"value": 2.108611e+32, "unit": u.Joule, "rtol": 1e-4},
47+
"log.final.star.Mass": {"value": 3.599033e+29, "unit": u.kg, "rtol": 1e-4},
48+
"log.final.star.Radius": {"value": 1.411575e+08, "unit": u.m, "rtol": 1e-4},
49+
"log.final.star.RadGyra": {"value": 0.460733, "rtol": 1e-4},
50+
"log.final.star.RotAngMom": {"value": 8.012348e+38, "unit": (u.kg * u.m ** 2) / u.sec, "rtol": 1e-4},
51+
"log.final.star.RotVel": {"value": 74.296896, "unit": u.m / u.sec, "rtol": 1e-4},
52+
"log.final.star.BodyType": {"value": 0.000000, "rtol": 1e-4},
53+
"log.final.star.RotRate": {"value": 5.263403e-07, "unit": 1 / u.sec, "rtol": 1e-4},
54+
"log.final.star.RotPer": {"value": 1.193750e+07, "unit": u.sec, "rtol": 1e-4},
55+
"log.final.star.Density": {"value": 3.054816e+04, "unit": u.kg / u.m ** 3, "rtol": 1e-4},
56+
"log.final.star.HZLimitDryRunaway": {"value": 8.540511e+09, "unit": u.m, "rtol": 1e-4},
57+
"log.final.star.HZLimRecVenus": {"value": 7.649893e+09, "unit": u.m, "rtol": 1e-4},
58+
"log.final.star.HZLimRunaway": {"value": 1.008994e+10, "unit": u.m, "rtol": 1e-4},
59+
"log.final.star.HZLimMoistGreenhouse": {"value": 1.012207e+10, "unit": u.m, "rtol": 1e-4},
60+
"log.final.star.HZLimMaxGreenhouse": {"value": 1.923039e+10, "unit": u.m, "rtol": 1e-4},
61+
"log.final.star.HZLimEarlyMars": {"value": 2.097284e+10, "unit": u.m, "rtol": 1e-4},
62+
"log.final.star.Instellation": {"value": -1.000000, "unit": u.kg / u.sec ** 3, "rtol": 1e-4},
63+
"log.final.star.CriticalSemiMajorAxis": {"value": -1.000000, "unit": u.m, "rtol": 1e-4},
64+
"log.final.star.LXUVTot": {"value": 2.529287e-07, "unit": u.LSUN, "rtol": 1e-4},
65+
"log.final.star.LostEnergy": {"value": -2.421681e+38, "unit": u.Joule, "rtol": 1e-4},
66+
"log.final.star.LostAngMom": {"value": 9.188425e+37, "unit": (u.kg * u.m ** 2) / u.sec, "rtol": 1e-4},
67+
"log.final.star.EscapeVelocity": {"value": 5.833888e+05, "unit": u.m / u.sec, "rtol": 1e-4},
68+
"log.final.star.Luminosity": {"value": 0.003956, "unit": u.LSUN, "rtol": 1e-4},
69+
"log.final.star.LXUVStellar": {"value": 2.529287e-07, "unit": u.LSUN, "rtol": 1e-4},
70+
"log.final.star.Temperature": {"value": 3219.534123, "unit": u.K, "rtol": 1e-4},
71+
"log.final.star.LXUVFrac": {"value": 6.393251e-05, "rtol": 1e-4},
72+
"log.final.star.RossbyNumber": {"value": 2.286901, "rtol": 1e-4},
73+
"log.final.star.DRotPerDtStellar": {"value": 3.905842e-12, "rtol": 1e-4},
74+
"log.final.star.WindTorque": {"value": 2.621569e+20, "rtol": 1e-4},
75+
}
76+
)
77+
class Test_EngleAutoMidLate(Benchmark):
78+
pass
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
sSystemName star
2+
iVerbose 0
3+
bOverwrite 1
4+
5+
saBodyFiles star.in
6+
7+
sUnitMass solar
8+
sUnitLength AU
9+
sUnitTime YEARS
10+
sUnitAngle d
11+
12+
bDoLog 1
13+
iDigits 6
14+
dMinValue 1e-10
15+
16+
bDoForward 1
17+
bVarDt 1
18+
dEta 0.01
19+
dStopTime 1e10
20+
dOutputTime 1e9

0 commit comments

Comments
 (0)