-
Notifications
You must be signed in to change notification settings - Fork 57
Expand file tree
/
Copy pathstellar.h
More file actions
236 lines (207 loc) · 10.8 KB
/
Copy pathstellar.h
File metadata and controls
236 lines (207 loc) · 10.8 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
/**
@file stellar.h
@brief Subroutines that control the evolution of the star.
@author Rodrigo Luger ([rodluger@gmail.com](mailto:rodluger@gmail.com>))
@date May 12 2015
*/
#define LSUN 3.846e26 /**< Solar luminosity (W) */
#define TSUN 5778. /**< Solar TEff (K) */
#define RM12OMEGACRIT \
8.56e-6 /**< Critical angular velocity (1/s) from Reiners & Mohanty (2012) \
*/
#define RM12OMEGACRITFULLYCONVEC \
1.82e-6 /**< Critical angular velocity (1/s) for fully convective stars, \
Reiners & Mohanty (2012) */
#define RM12CONST \
(2.66e3 * 46.416) /**< dJ/dt constant [(kg^5 m^-10 s^-3)^1/3] from Reiners & \
Mohanty (2012) */
#define SK72CONST \
5.0e-25 /**< dJ/dt constant from Skumanich 1972 (Repetto+2014) */
#define MATT15T0 6.3e23 /**< Matt+2015 T0 constant in Joules */
#define MATT15X 10.0 /**< Matt+2015 saturation ratio threshold */
#define MATT15R0SUN 2.168 /**< Matt+2015 solar Rossby number */
#define MATT15TAUCZ 1.115e6 /**< Matt+2015 solar TauCZ value in s */
#define MATT15OMEGASUN \
2.6e-6 /**< Matt+2015 solar angular rotation frequency in s^-1 */
#define BREIM21OMEGASUN 2.6e-6 /**< Breimann+21 solar rot rate (rad/s) */
#define BREIM21TAUSUN 1.115e6 /**< Breimann+21 solar TauCZ value (s) */
/**< Be sure that TauCZ above is consistent with turnover timescale used. */
#define BREIM21KS 450.0 /**< Breimann+21 ks torque parameter */
#define BREIM21PS 0.2 /**< Breimann+21 ps torque parameter */
#define BREIM21P 2.0 /**< Breimann+21 p torque parameter */
#define BREIM21T0 6.3e23 /**< Breimann+21 solar torque const (Joules) */
#define ROSSBYCRIT \
2.08 /**< Critical Rossby number above which magnetic braking shuts off \
according to van Saders+2018 */
#define STELLAR_MODEL_NONE 0
#define STELLAR_MODEL_BARAFFE 1
#define STELLAR_MODEL_REINERS 2
#define STELLAR_MODEL_CONST 3
#define STELLAR_MODEL_RIBAS 4
#define STELLAR_MODEL_PROXIMACEN 5
#define STELLAR_MODEL_SINEWAVE 6
#define STELLAR_MODEL_ENGLE24EARLY \
7 /**< XUV evolution from Engle (2024) for M0-M2 dwarfs */
#define STELLAR_MODEL_ENGLE24MIDLATE \
8 /**< XUV evolution from Engle (2024) for M2.6-M6.5 dwarfs */
#define STELLAR_MODEL_ENGLE24AUTO \
9 /**< XUV evolution from Engle (2024) with per-timestep model selection \
based on stellar mass. Both Early and MidLate coefficient sets must \
be provided in star.in; dispatch uses Early for dMass >= 0.4 Msun, \
MidLate otherwise. Mass safety bound: 0.075 < dMass < 0.75 Msun. */
#define STELLAR_DJDT_NONE \
0 /**< No stellar angular momentum loss via magnetic braking */
#define STELLAR_DJDT_RM12 1 /**< dJ/dt according to Reiners & Mohanty 2012 */
#define STELLAR_DJDT_SK72 \
2 /**< dJ/dt according to Skumanich 1972 empirical law */
#define STELLAR_DJDT_MA15 3 /**< dJ/dt according to Matt+2015 */
#define STELLAR_DJDT_BR21 4 /**< dJ/dt according to Breimann+2021 */
#define STELLAR_DJDT_ENGLE23EARLY \
5 /**< Rotation evolution from Engle & Guinan (2023) for M0-M2 dwarfs */
#define STELLAR_DJDT_ENGLE23MID \
6 /**< Rotation evolution from Engle & Guinan (2023) for M2.5-M3.5 dwarfs */
#define STELLAR_DJDT_ENGLE23LATE \
7 /**< Rotation evolution from Engle & Guinan (2023) for M4-M6.5 dwarfs */
#define HZ_MODEL_KOPPARAPU 1
#define DRYRGFLUX 415 /**< W/m^2 from Abe et al. (2011) */
/* Options Info */
#define OPTSTARTSTELLAR 1500 /**< Start of Stellar options */
#define OPTENDSTELLAR 1600 /**< End of Stellar options */
#define OPT_SATXUVFRAC 1511 /**< Saturation XUV luminosity fraction */
#define OPT_STELLARMODEL 1512 /**< Luminosity evolution model */
#define OPT_WINDMODEL 1514 /**< Wind model */
#define OPT_XUVMODEL 1515 /**< XUV evol model */
#define OPT_HALTENDBARAFFEFGRID \
1516 /**< Halt when we reach the end of the Baraffe grid? */
#define OPT_SATXUVTIME 1517 /**< XUV saturation time */
#define OPT_XUVBETA 1518 /**< XUV power law decay exponent */
#define OPT_ROSSBYCUT 1519 /** Whether or not to apply Rossby cut to dJ/dt */
#define OPT_HZMODEL 1520 /**< Habitable zone model */
#define OPT_MAGBRAKINGMODEL 1521 /**< Magnetic braking model */
#define OPT_EVOVLERG \
1522 /**< Whether or not to evolve stellar radius of gyration */
#define OPT_LUMAMPLITUDE 1550
#define OPT_LUMPERIOD 1555
#define OPT_LUMPHASE 1560
#define OPT_XUVENGLEEARLYA 1570
#define OPT_XUVENGLEEARLYB 1571
#define OPT_XUVENGLEEARLYC 1572
#define OPT_XUVENGLEEARLYD 1573
#define OPT_XUVENGLEMIDLATEA 1574
#define OPT_XUVENGLEMIDLATEB 1575
#define OPT_XUVENGLEMIDLATEC 1576
#define OPT_XUVENGLEMIDLATED 1577
#define OPT_ROTENGLEEARLYA 1580
#define OPT_ROTENGLEEARLYB 1581
#define OPT_ROTENGLEEARLYC 1582
#define OPT_ROTENGLEEARLYD 1583
#define OPT_ROTENGLEMIDA 1584
#define OPT_ROTENGLEMIDB 1585
#define OPT_ROTENGLEMIDC 1586
#define OPT_ROTENGLEMIDD 1587
#define OPT_ROTENGLELATEA 1588
#define OPT_ROTENGLELATEB 1589
#define OPT_ROTENGLELATEC 1590
#define OPT_ROTENGLELATED 1591
/* Halt Functions */
#define STELLARHALTSYSEND 5
#define STELLARHALTBODYEND 5
/* Output Functinos */
/* Stellar 1200 - 1299 */
#define OUTSTARTSTELLAR 1500
#define OUTENDSTELLAR 1600
/* Body Properties due to stellar evol */
#define OUT_LUMINOSITY 1510
#define OUT_LXUV 1511
#define OUT_TEMPERATURE 1512
#define OUT_LXUVFRAC 1513
#define OUT_ROSSBYNUMBER 1514
#define OUT_DROTPERDTSTELLAR 1515
#define OUT_WINDTORQUE 1516
/* @cond DOXYGEN_OVERRIDE */
void InitializeControlStellar(CONTROL *);
void AddModuleStellar(CONTROL *, MODULE *, int, int);
void BodyCopyStellar(BODY *, BODY *, int, int, int);
void InitializeUpdateTmpBodyStellar(BODY *, CONTROL *, UPDATE *, int);
/* Options Functions */
void HelpOptionsStellar(OPTIONS *);
void InitializeOptionsStellar(OPTIONS *, fnReadOption[]);
void ReadOptionsStellar(BODY *, CONTROL *, FILES *, OPTIONS *, SYSTEM *,
fnReadOption[], int);
int fbHaltEndBaraffeGrid(BODY *, EVOLVE *, HALT *, IO *, UPDATE *,
fnUpdateVariable ***, int);
void CountHaltsStellar(HALT *, int *);
/* Verify Functions */
void VerifyStellar(BODY *, CONTROL *, FILES *, OPTIONS *, OUTPUT *, SYSTEM *,
UPDATE *, int, int);
void VerifyRotationStellar(BODY *, CONTROL *, OPTIONS *, char[], int);
void InitializeVplanetStellar(CONTROL *, MODULE *);
void fnPropsAuxStellar(BODY *, EVOLVE *, IO *, UPDATE *, int);
void VerifyHaltStellar(BODY *, CONTROL *, OPTIONS *, int, int *);
void VerifyRotationStellar(BODY *, CONTROL *, OPTIONS *, char[], int);
/* Update functions */
void InitializeUpdateStellar(BODY *, UPDATE *, int);
void FinalizeUpdateEccStellar(BODY *, UPDATE *, int *, int, int, int);
void FinalizeUpdateNumIsotopeStellar(BODY *, UPDATE *, int *, int, int, int);
void FinalizeUpdateOblStellar(BODY *, UPDATE *, int *, int, int, int);
void FinalizeUpdateRotStellar(BODY *, UPDATE *, int *, int, int, int);
void FinalizeUpdateSemiStellar(BODY *, UPDATE *, int *, int, int, int);
void FinalizeUpdateLuminosityStellar(BODY *, UPDATE *, int *, int, int, int);
void FinalizeUpdateTemperatureStellar(BODY *, UPDATE *, int *, int, int, int);
void FinalizeUpdateRadiusStellar(BODY *, UPDATE *, int *, int, int, int);
void InitializeOutputStellar(OUTPUT *, fnWriteOutput[]);
void InitializeOutputFunctionStellar(OUTPUT *, int, int);
void FinalizeOutputFunctionStellar(OUTPUT *, int, int);
void WriteLuminosity(BODY *, CONTROL *, OUTPUT *, SYSTEM *, UNITS *, UPDATE *,
int, double *, char**);
void WriteTemperature(BODY *, CONTROL *, OUTPUT *, SYSTEM *, UNITS *, UPDATE *,
int, double *, char**);
void WriteLXUV(BODY *, CONTROL *, OUTPUT *, SYSTEM *, UNITS *, UPDATE *, int,
double *, char**);
void WriteLXUVFrac(BODY *, CONTROL *, OUTPUT *, SYSTEM *, UNITS *, UPDATE *,
int, double *, char**);
void WriteRossbyNumber(BODY *, CONTROL *, OUTPUT *, SYSTEM *, UNITS *, UPDATE *,
int, double *, char**);
void WriteWindTorque(BODY *, CONTROL *, OUTPUT *, SYSTEM *, UNITS *, UPDATE *,
int, double *, char**);
void WriteDRotPerDtStellar(BODY *, CONTROL *, OUTPUT *, SYSTEM *, UNITS *,
UPDATE *, int, double *, char**);
/* Logging Functions */
void LogOptionsStellar(CONTROL *, FILE *);
void LogStellar(BODY *, CONTROL *, OUTPUT *, SYSTEM *, UPDATE *,
fnWriteOutput[], FILE *);
void LogBodyStellar(BODY *, CONTROL *, OUTPUT *, SYSTEM *, UPDATE *,
fnWriteOutput[], FILE *, int);
/* Stellar functions */
void fnForceBehaviorStellar(BODY *, MODULE *, EVOLVE *, IO *, SYSTEM *,
UPDATE *, fnUpdateVariable ***fnUpdate, int, int);
double fdLuminosity(BODY *, SYSTEM *, int *);
double fdLuminosityFunctionBaraffe(double, double);
double fdLuminosityFunctionProximaCen(double, double);
double fdLuminosityFunctionSineWave(BODY *, int);
double fdRadius(BODY *, SYSTEM *, int *);
double fdRadGyra(BODY *, SYSTEM *, int *);
double fdRadiusFunctionBaraffe(double, double);
double fdRadGyraFunctionBaraffe(double, double);
double fdRadiusFunctionProximaCen(double, double);
double fdDRotRateDt(BODY *, SYSTEM *, int *);
double fdDRotRateDtCon(BODY *, SYSTEM *, int *);
double fdDRotRateDtRadGyra(BODY *, SYSTEM *, int *);
double fdDRotRateDtMagBrake(BODY *, SYSTEM *, int *);
double fdTemperature(BODY *, SYSTEM *, int *);
double fdTemperatureFunctionBaraffe(double, double);
double fdTemperatureFunctionProximaCen(double, double);
double fdDJDtMagBrakingStellar(BODY *, SYSTEM *, int *);
double fdDRadiusDtStellar(BODY *, SYSTEM *, int *);
double fdDRadGyraDtStellar(BODY *, SYSTEM *, int *);
double fdDEDtPotConStellar(BODY *, SYSTEM *, int *);
double fdDEDtRotConStellar(BODY *, SYSTEM *, int *);
double fdDEDtRotRadGyraStellar(BODY *, SYSTEM *, int *);
double fdDEDtRotBrakeStellar(BODY *, SYSTEM *, int *);
double fdDEDtStellar(BODY *, SYSTEM *, int *);
double fdCranmerSaar2011TauCZ(double);
double fdRotationPeriodEngle(BODY *, int);
double fdLXUVEngle(BODY *, double, double, double, double, int);
/* Dummy functions */
double fdSurfEnFluxStellar(BODY *, SYSTEM *, UPDATE *, int, int);
/* @endcond */