kap module controls
The MESA/kap parameters are given default values here. The actual values as modified by your inlist are stored in the Kap_General_Info data structure. They can be accessed by code at runtime using the kap_handle to get a pointer to it.
Base metallicity
Zbase
The base metallicity for the opacity tables. This provides the reference metallicity necessary to calculate element variations. Physically, this usually corresponds to the initial metallicity of the model and remains static during the entirety of a calculation. Variations in metallicity from nuclear burning and mixing should not alter Zbase as its purpose is to serve as a reference metallicity for C and O enhancement during Helium burning.
See use_Zbase_for_Type1
. By default, Zbase does not typically affect the
outer regions of a stellar model when the surface metallicity remains
below the initial metallicity (Z < Zbase). Zbase is typically
only used for Type2 opacities which operate deeper in the stellar interior.
Specific scenarios such as high Z accretion onto a metal poor model
can produce a situation where (Z > Zbase). During this scenario
the surface metallicity can be enhanced beyond the initial metallicity.
Users can opt to exclusively adopt Type1 opacities in this scenario with
the use_Zbase_for_Type1
flag.
NOTE: For wind schemes that scale with metallicity, we use Zbase rather than Z (as long as Zbase > 0). This is because wind mass loss rate is primarily determined by iron opacity, which is unlikely to change during the evolution.
Zbase must be set if using kapCN, AESOPUS, or Type2 opacities or else MESA well draw an error.
Zbase = -1
Table selection
kap_file_prefix
Select the set of opacity tables for higher temperature, hydrogen-rich conditions. Also referred to as Type1 tables. See Blend controls to understand precisely when these tables are used.
These tables use the value of Zbase
for Z, unless use_Zbase_for_Type1 = .false.
.
The Type1 tables cover a wider range of X and have a higher resolution in Z for each X than Type2. The OPAL/OP Type1 tables are for 126 (X,Z) pairs from the following sets:
X: 0.0, 0.1, 0.2, 0.35, 0.5, 0.7, 0.8, 0.9, 0.95, 1-Z
Z: 0.0, 1e-4, 3e-4, 1e-3, 2e-3, 4e-3, 1e-2, 2e-2, 3e-2, 4e-2, 6e-2, 8e-1, 1e-1
The OPLIB Type1 tables offer additional table density, for 1194 (X,Z) pairs from the following sets:
X: 0.0, 0.000001, 0.00001, 0.0001, 0.001, 0.01, 0.05, 0.1,
0.15, 0.2, 0.25, 0.3, 0.35, 0.4, 0.45, 0.5,
0.55, 0.6, 0.65, 0.7, 0.75, 0.8, 0.85, 0.9,
0.91, 0.92, 0.93, 0.94, 0.95, 0.96, 0.97,
0.98, 0.99, 1-Z
Z: 0.0, 0.000001, 0.00001, 0.00003, 0.00007, 0.0001,
0.0003, 0.0007, 0.001, 0.002, 0.003, 0.004,0.006,
0.008, 0.01, 0.012, 0.014, 0.015, 0.016, 0.017, 0.018,
0.019, 0.02, 0.021, 0.022, 0.023, 0.024, 0.025, 0.026,
0.028, 0.03, 0.035, 0.04, 0.05, 0.06, 0.07, 0.08,
0.09, 0.1, 0.15, 0.2
Available options:
'gn93'
'gs98'
'a09'
'OP_gs98'
'OP_a09_nans_removed_by_hand'
'oplib_gs98
’'oplib_agss09
’'oplib_aag21
’'oplib_mb22
’
kap_file_prefix = 'gs98'
kap_CO_prefix
Select the set of opacity tables for higher temperature, hydrogen-poor/metal-rich conditions.
Also referred to as Type2 tables.
Critically, Type2 tables account for C and O enhancement during and after He burning.
See Blend controls to understand precisely when these tables are used.
abundances previous to any CO enhancement.
Ignored if use_Type2_opacities = .false.
.
These tables use the value of Zbase
as the base metallicity.
The Type2 tables are for (X,Z) pairs from the following sets:
X: 0.0, 0.03, 0.10, 0.35, 0.70
Z: 0.00, 0.001, 0.004, 0.01, 0.02, 0.03, 0.05, 0.1
Available options:
'gn93_co'
'gs98_co'
'a09_co'
kap_CO_prefix = 'gs98_co'
kap_lowT_prefix
Select a set of opacity tables for lower temperatures.
Available options:
'lowT_fa05_mb22'
'lowT_fa05_aag21'
'lowT_Freedman11'
'lowT_fa05_gs98'
'lowT_fa05_gn93'
'lowT_fa05_a09p'
'lowT_af94_gn93'
'lowT_rt14_ag89'
'kapCN'
'AESOPUS'
kap_CN
uses tables from
Lederer, M. T.; Aringer, B. (2009)Low temperature Rosseland opacities with varied abundances of carbon and nitrogen
'AESOPUS'
uses tables from AESOPUS
Marigo, P.; Aringer, B. (2009)Low-temperature gas opacity. ÆSOPUS: a versatile and quick computational tool
Specify which file using AESOPUS_filename
.
The file is first looked for in the work directory. If not found, then data/kap_data is searched.
Currently one set of opacities is provided, with the filename 'AESOPUS_AGSS09.h5'
.
To see more detail about the composition details of the tables set show_info = .true.
.
You can generate your own tables with their web interface at http://stev.oapd.inaf.it/cgi-bin/aesopus . See kap/preprocessor/AESOPUS/README for information on preparing the tables for MESA.
kap_lowT_prefix = 'lowT_fa05_gs98'
AESOPUS_filename = '' ! used only if kap_lowT_prefix = 'AESOPUS'
Blend controls
use_Zbase_for_Type1
If true, then if use_Type2_opacities = .true.
, Type1 opacities will be computed
using Zbase
instead of Z
when Z > Zbase. This helps with blending from Type1 to Type2.
Ignored if use_Type2_opacities = .false.
.
use_Zbase_for_Type1 = .true.
use_Type2_opacities
Select whether to use Type2 opacity tables (see kap_CO_prefix).
Even when true, in regions where hydrogen is
above a given threshold, or the metallicity is not significantly higher than
Zbase
, Type1 tables are used instead, with blending regions to smoothly
transition from one to the other (see following controls).
use_Type2_opacities = .true.
kap_Type2_full_off_X
kap_Type2_full_on_X
Switch to Type1 if X too large.
Type2 is full off for X >= kap_Type2_full_off_X
Type2 can be full on for X <= kap_Type2_full_on_X
.
kap_Type2_full_off_X = 1d-3
kap_Type2_full_on_X = 1d-6
kap_Type2_full_off_dZ
kap_Type2_full_on_dZ
Switch to Type1 if dZ too small (dZ = Z - Zbase)
.
Type2 is full off for dZ <= kap_Type2_full_off_dZ
.
Type2 can be full on for dZ >= kap_Type2_full_on_dZ
.
kap_Type2_full_off_dZ = 0.001d0
kap_Type2_full_on_dZ = 0.01d0
X and dZ terms are multiplied to get actual fraction of Type2.
The fraction of Type2 is calculated for each cell depending on the X and dZ for that cell.
So you can be using Type1 in cells where X is large or dZ is small,
while at the same time you can be using Type2 where X is small and dZ is large.
When frac_Type2
is > 0 and < 1, then both Type1 and Type2 are evaluated and
combined linearly as (1-frac_Type2)*kap_type1 + frac_Type2*kap_type2
.
Add kap_frac_Type2
to your profile columns list to see frac_Type2
for each cell.
kap_blend_logT_upper_bdy
kap_blend_logT_lower_bdy
Region to blend between higher temperature tables (see kap_file_prefix and kap_CO_prefix) and lower temperature tables (see kap_lowT_prefix).
The upper/lower blend boundary will be clipped to the true extent
of the opacity tables. The upper boundary will be min of
kap_blend_logT_upper_bdy
and the max logT for lowT tables.
The lower boundary will be max of kap_blend_logT_lower_bdy
and min logT for highT tables. The typical min logT of the
higher temperature tables tables is 3.75. Check your tables to
be sure.
It is probably a good idea to keep the blend away from H ionization. logT upper of about 3.9 or a bit less will do that.
kap_blend_logT_upper_bdy = 3.88d0
kap_blend_logT_lower_bdy = 3.80d0
Interpolation options
cubic_interpolation_in_X
type of interpolation in X. true is cubic; false is linear.
cubic_interpolation_in_X = .false.
cubic_interpolation_in_Z
type of interpolation in Z. true is cubic; false is linear.
cubic_interpolation_in_Z = .false.
Custom tables
If the prefix options in Table selection above do not match one of the available options,
MESA still searches for files in data/kap_data
with the given prefix.
This allows for custom tables. However, the user must also indicate
the X and Z values for which the tables are provided.
Separate controls exist for each class of prefix.
user_num_kap_Xs
Number of X values.
! user_num_kap_Xs = 10
user_kap_Xs
X values for the tables (length user_num_kap_Xs
).
Values such that X + Z > 1 will have X reduced to 1-Z.
Choose user_num_kap_Xs_for_this_Z
such that at most 1 X value for each Z will be reduced in this way.
! user_kap_Xs = 0.0d0, 0.1d0, 0.2d0, 0.35d0, 0.5d0, 0.7d0, 0.8d0, 0.9d0, 0.95d0, 1.0d0
user_num_kap_Zs
Number of Z values.
! user_num_kap_Zs = 13
user_kap_Zs
Z values for the tables (length user_num_kap_Zs
).
! user_kap_Zs = 0.000d0, 0.0001d0, 0.0003d0, 0.001d0, 0.002d0, 0.004d0, 0.01d0, 0.02d0, 0.03d0, 0.04d0, 0.06d0, 0.08d0, 0.100d0
user_num_kap_Xs_for_this_Z
At different values of Z, the number of values of X may change. In particular, tables with X > 1-Z
will not exist.
Use the first N (<= user_num_kap_Xs
) X values for the tables of the corresponding Z (length user_num_kap_Zs
).
! user_num_kap_Xs_for_this_Z = 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 9, 9, 8
user_num_kap_CO_Xs
Number of X values.
! user_num_kap_CO_Xs = 5
user_kap_CO_Xs
X values for the tables (length user_num_kap_CO_Xs
).
! user_kap_CO_Xs = 0.00d0, 0.03d0, 0.10d0, 0.35d0, 0.70d0
user_num_kap_CO_Zs
Number of Z values.
! user_num_kap_CO_Zs = 8
user_kap_CO_Zs
Z values for the tables (length user_num_kap_CO_Zs
).
! user_kap_CO_Zs = 0.000d0, 0.001d0, 0.004d0, 0.010d0, 0.020d0, 0.030d0, 0.050d0, 0.100d0
user_num_kap_CO_Xs_for_this_Z
At different values of Z, the number of values of X may change. In particular, tables with X > 1-Z
will not exist.
Use the first N (<= user_num_kap_CO_Xs
) X values for the tables of the corresponding Z (length user_num_kap_CO_Zs
).
! user_num_kap_CO_Xs_for_this_Z = 5, 5, 5, 5, 5, 5, 5, 5
user_num_kap_lowT_Xs
Number of X values.
! user_num_kap_lowT_Xs = 10
user_kap_lowT_Xs
X values for the tables (length user_num_kap_lowT_Xs
).
Values such that X + Z > 1 will have X reduced to 1-Z.
Choose user_num_kap_lowT_Xs_for_this_Z
such that at most 1 X value for each Z will be reduced in this way.
! user_kap_lowT_Xs = 0.0d0, 0.1d0, 0.2d0, 0.35d0, 0.5d0, 0.7d0, 0.8d0, 0.9d0, 0.95d0, 1.0d0
user_num_kap_lowT_Zs
Number of Z values.
! user_num_kap_lowT_Zs = 13
user_kap_lowT_Zs
Z values for the tables (length user_num_kap_lowT_Zs
).
! user_kap_lowT_Zs = 0.000d0, 0.0001d0, 0.0003d0, 0.001d0, 0.002d0, 0.004d0, 0.01d0, 0.02d0, 0.03d0, 0.04d0, 0.06d0, 0.08d0, 0.100d0
user_num_kap_lowT_Xs_for_this_Z
At different values of Z, the number of values of X may change. In particular, tables with X > 1-Z
will not exist.
Use the first N (<= user_num_kap_lowT_Xs
) X values for the tables of the corresponding Z (length user_num_kap_lowT_Zs
).
! user_num_kap_lowT_Xs_for_this_Z = 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 9, 9, 8
Conductive opacity options
include_electron_conduction
add conduction opacities to radiative opacities
include_electron_conduction = .true.
use_blouin_conductive_opacities
Use fits from Blouin et al. (2020) for H and He in the regime of moderate coupling and moderate degeneracy.
use_blouin_conductive_opacities = .true.
Miscellaneous controls
show_info
if true, then output additional information as the opacities are loaded. this is particularly useful to see the detailed composition coverage of the AESOPUS opacity files.
show_info = .false.
Other hooks
Control whether to use other hooks. See kap/other
.
use_other_elect_cond_opacity
Replace electron conduction opacity routine
use_other_elect_cond_opacity = .false.
use_other_compton_opacity
Replace Compton opacity routine
use_other_compton_opacity = .false.
use_other_radiative_opacity
Replace radiative opacity routine. The standard routine evaluates the opacity using the low-T and high-T tables.
use_other_radiative_opacity = .false.
User controls
These are arrays of size(10) that can be used to pass in custom information to kap
kap_ctrl(:) = 0d0
kap_integer_ctrl(:) = 0
kap_logical_ctrl(:) = .false.
kap_character_ctrl(:) = ''
Extra inlist controls
One can split a kap inlist into pieces using the following parameters. It works recursively, so the extras can read extras too.
read_extra_kap_inlist(1..5)
extra_kap_inlist_name(1..5)
If read_extra_kap_inlist(i)
is true, then read &eos
from the file extra_kap_inlist_name(i)
.
read_extra_kap_inlist(:) = .false.
extra_kap_inlist_name(:) = 'undefined'
Debugging controls
Specify a range of calls for which to receive debugging information.
dbg = .false.
logT_lo = -1d99
logT_hi = 1d99
logRho_lo = -1d99
logRho_hi = 1d99
X_lo = -1d99
X_hi = 1d99
Z_lo = -1d99
Z_hi = 1d99