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