Common Tasks
This page describes commonly-encountered development tasks.
Inlist Options
Adding a new option
Note
The simplest approach is often to find a similar existing option and follow the pattern revealed by searching for the occurrences of that option in the source code.
This guide applies to star-related options (star_job
, controls
, and pgstar
).
First, add an entry of the relevant type in the appropriate .inc
file in star_data/private
.
star_job
:star_job_controls.inc
controls
:star_controls.inc
pgstar
:pgstar_controls.inc
Next, add an entry with the default option value and some
documentation (see Format for MESA defaults files) into the appropriate *.defaults
file in star/defaults
.
star_job
:star_job.defaults
controls
:controls.defaults
pgstar
:pgstar.defaults
Finally, update the appropriate *_io.f90
files in
star/private
, which are responsible for reading/writing the Fortran
namelists.
star_job
:star_job_ctrls_io.f90
controls
:ctrls_io.f90
pgstar
:pgstar_ctrls_io.f90
This will require several edits.
Add your option to the
namelist
declaration near the start of that file.Add code transferring your option from the value read by the namelist to the
star_info
structure in thestore_*
routine.For the case of
star_job
andcontrols
, add code transferring your option from thestar_info
structure to the namelist value in theset_*_for_writing
routine. This is what is used to enable the options save_star_job_namelist and save_controls_namelist.
History/Profile Output
Note
The simplest approach is often to find a similar existing output and follow the pattern revealed by searching for the occurrences of that quantity in the source tree.
Adding a history column
First, update star/private/star_history_def.f90
. Here, you need
to define the integer parameter of the form h_my_new_column
internally used to identify the column. Later in the file, assign the
name it will be given via an assignment like
history_column_name(h_my_new_column) = 'my_new_column'
.
Next, update star/private/history.f90
to add a new case in the
switch statement, case(h_my_new_column)
. The code in this case
should set the variable val
to the desired output value.
Finally, add the new column to star/defaults/history_columns.list
along with a short comment about what this column means. It should
likely be commented out (off by default).
Adding a profile column
First, update star/private/star_profile_def.f90
. Here, you need
to define the integer parameter of the form p_my_new_column
internally used to identify the column. Later in the file, assign the
name it will be given via an assignment like
profile_column_name(p_my_new_column) = 'my_new_column'
.
Next, update star/private/profile_getval.f90
to add a new case in
the switch statement, case(p_my_new_column)
. The code in this
case should set the variable val
to the desired output value
corresponding to cell k
.
Finally, add the new column to star/defaults/profile_columns.list
along with a short comment about what this column means. It should
likely be commented out (off by default).