Command line tools for use with open source MESA stellar evolution code.
I don't think this tool is done yet, but I wanted to get it out there. So far
requires ruby, MesaScript, thor, and a working mesa directory accessed by
$MESA_DIR.
Enter
gem install mesa_cli
or if that doesn't work, enter
sudo gem install mesa_cli
into your terminal. You should be done now!
If, for some reason, the rubygems installation doesn't work, you may clone this
repository and install the single file mesa (located in mesa_cli/bin/mesa)
as detailed below.
-
Make sure you have Ruby 1.8.7 or higher (1.9.3 recommended)
-
Install mesascript.
-
Install the Thor gem via
sudo gem install thor
-
Place
mesafile in your path
To get quick information, type mesa help to list the commands and see what
they do. For detailed information on a particular command, type mesa help command to learn about an individual command (replacing the word "command"
with the actual subcommand name). Brief summaries of commands are below.
To use, just type
mesa default NAMELIST_NAME
where namelist name is the name of a MESA star namelist, like star_job,
controls, or pgstar.
This command will open the proper defaults file for the corresponding namelist
using whatever editor your system has set in the EDITOR variable. For
instance,
mesa default star_job
will open $MESA_DIR/star/defaults/star_job.defaults in vim or whatever default editor you've set up.
To use, just type
mesa install VERSION_NUMBER [DIR_NAME] --shell=MYSHELL
This will do a fresh checkout of mesa (version number given by VERSION_NUMBER) into a directory (named DIR_NAME, default is mesa-rXXXX, where XXXX is the version number). After the checkout, mesa will install, and your login scripts will be updated to point MESA_DIR to this new installation directory.
By default, the shell is assumed to be bash, so ~/.bash_profile and
~/.bashrc will be checked for instances of MESA_DIR= in these files, which
are then updated to point to the new installation path. If no such assignments
are found, one will be added to ~/.bash_profile (if that file does not
exist, it will be added to ~/.bashrc, if it exists). There is a --shell=
option, but it is currently useless since there is only one shell option.
Currently there is no support for the C shell, but this will be an feature in a future version. For a basic installation with no mucking around of shell scripts, add the --basic or -b flag.
Some examples:
mesa install 9999
will download and install mesa revision 9999 into a directory named
mesa-r9999 in the current directory. It will then try to find the files
~/.bash_profile and ~/.bashrc. If it finds them, it will first try to
update any lines conatining MESA_DIR= to point them to the new,
fully-qualified path to mesa-r9999. If no such lines are added, it will add
the appropriate line (export MESA_DIR=/PATH/TO/mesa-r9999) at the end of one
of those scripts, preferring ~/.bash_profile.
mesa install $HOME/mesa_installations/my_latest_mesa 9999
will download and install mesa revision 9999 into the directory
$HOME/mesa_installations/my_latest_mesa. Then it will set MESA_DIR in
login scripts as in the previous example.
mesa install 9999 -b
will download and install mesa revision 9999 into a directory named
mesa-r9999 in the current directory. It will not attempt to change login
scripts.
mesa install $HOME/mesa_installations/my_latest_mesa 9999 -b
will download and install mesa revision 9999 into the directory
$HOME/mesa_installations/my_latest_mesa. It will not attempt to change login
scripts.
To use, just type
mesa new DIR_NAME
where DIR_NAME is the name of a new MESA work directory.
This makes a copy of $MESA_DIR/star/work into a directory with the name
chosen. With no name (i.e. just typing mesa new), the directory will just be
called work. The inlist_project will be renamed to inlist_DIR_NAME. If
MesaScript is available, the main inlist file will be pointed to the newly-
renamed inlist_project, and a MesaScript version of the new inlist_project
will be made that compiles to inlist_project.
The -s or --simple option will just copy the work directory and rename the
directory only. No renaming of inlists or creation of MesaScript files will be
done.
The -p or --pgstar option will also point the main inlist file to the
newly-named inlist_project file for the pgstar namelist instead of the
default inlist_pgstar.
To use, just type
mesa point INLIST_TO_POINT_TO
where INLIST_TO_POINT_TO is the name of an inlist that you would like your local inlist file to point to. Currently this can only allow you to point to one inlist. By default, this will not point to the new inlist for the pgstar namelist, but it will for both of the star_job and controls namelists.
The -p or --pgstar option will also point the main inlist file to the
INLIST_TO_POINT_TO file for the pgstar namelist.
To use, just type
mesa rates REACTION_NAME OUTFILE
where REACTION_NAME is the name of a reaction found in $MESA_DIR/data/rates_data/cache, without the preceding r_ and optionally specifying _1, _2, or whatever other option is available. For instance, c12_pg_n13 is a valid REACTION_NAME, as is c12_pg_n13_1. If no ending number is specified, _1 is assumed.
OUTFILE is an optional argument that specifies a file name where the rate data will be written to. If it is omitted, the data is simply written to the standard output.
To use, just type
mesa test TEST_CASE DIR_NAME
where TEST_CASE is the name of a test case in $MESA_DIR/star/test_suite and DIR_NAME is the name of a directory to be created that will contain a copy of the proper test suite case.
The second argument is optional, and if omitted, the new directory will have
the same name as the original test suite case. If neither argument is given, a
list of every file in $MESA_DIR/star/test_suite is output. The listing
behavior can also be forced by adding the -l or --list option to the call.
Work directories made in this way are "de-test-suited" in that calls back to
inlist_test_suite are deleted along with any other attempts to change the value of mesa_dir. All local path definitions (ones using ../../ or the
like) will be made fully qualified. For example, ../../../ will be turned
into $MESA_DIR/. Thus, references to other inlists, like
inlist_massive_defaults or models, like those found in
$MESA_DIR/data/star_data, should remain intact. IF THESE EXTERNAL REFERENCES
CONTAIN LOCAL PATHS, THINGS WILL BREAK. The only inlist that is strictly barred
from this process is inlist_test_suite which currently only serves to set
the mesa_dir via a local path, so references to this inlist are always
deleted.
To use, just type
mesa version
This will just print out the version number of mesa that is currently installed in your MESA_DIR.