program [key1=]val1 [key2=]val2 .!.!. runprogram [key1=]val1 [key2=]val2 .!.!. run program ...
A good start is the manual page programs(8NEMO) , which lists programs thematically, and index(1NEMO) , which lists them alphabetically (CAVEAT: these pages are often out of date).
NEMO is very much integrated into the Unix(tm) operating system, so users are expected to use standard Unix commands as glue between the various tasks (cat, ls, rm, cp, awk, mongo, sm, etc.). Understanding of shell scripting (sh,csh,python,perl,...) can be very useful. Several example shell scripts exist in the source code to demonstrate how experiments can be orchestrated. We use mostly csh, bash and python. Yes, csh too.
The easiest way is to add the appropriate line to your .cshrc or .bashrc
file:
source $NEMO/nemo_start.sh or for the die hards source $NEMO/nemo_start.ssh
If you need more control over your environment, there are other methods described elsewhere (The NEMO Users/Programmers Guide, Appendix A), or consult one of your local friendly NEMO users.
mkplummer - 10 | snapprint -
NEMO programs all work by using a series of keyword=value pairs on the commandline. If the order of the supplied keywords is the same as the program expects them, the keyword= part can be omitted, simply to save some keystrokes. There is a consistent ordering of keywords in most programs that allows experienced users to use such (and other) shortcuts. Python uses the same principle with the un-named arguments. (e.g. in= the first one, out= the second one etc.). Keywords can be used in minimum match, but this is not recommended for shell scripts. To make shell scripts robust, it is recommended you add the keyword= part for all but the first one or two.
NEMO programs make a distinction between program keywords (keywords unique to a program) and system keywords (a fixed set of keywords that each NEMO program understands). The system keywords that you are likely to use are help= and yapp=, and to a lesser degree debug= and error=. The help= gives various types of inline aid from a program. There is also online help on a program, for which unix man(1) command (or any of it’s derived friends) is normally used. The yapp= sets the graphics device used by programs who use a graphics device. You nemo_start may have given you a default.
Each system keyword can be defaulted by setting it’s equivalent environment variable (in upper case!). Program keywords can be abbreviated to uniqueness.
Examples: Consider
the program mkplummer, a program which creates an N-body realization of
a Plummer sphere To get online help, one types (we included three legacy
program options, --man, --help, --version):
man mkplummer mkplummer --manand to get various types of inline help:
mkplummer help= mkplummer help=h mkplummer help=’?’ mkplummer --help mkplummer -hand to get the version:
mkplummer help=V mkplummer --versionNote the literal quotes around the question-mark needed if you use a regular Unix shell as interface. The first help= reminds you of the order of the program keywords and their default values. The second form, help=h prints out a small one-line reminder what each keyword means. The last form help=’?’ lists various options the user interface understands, this one is not program dependant.
If you chain NEMO programs, pipes can be a very efficient way
to prevent large amounts of disk access. Most keywords that operate on
files (notably in=, out=, as long as stropen(3NEMO)
is used) can use standard
piped I/O by using the dash (-) to name the keyword, e.g.
mkplummer - 10 | snapprintwould create a snapshot of 10 bodies on the fly, and print positions and velocities to the user using snapprint. The alternative would have been
mkplummer out=tmp nbody=10 snapprint in=tmp rm tmp
You will find a few common user keywords for this: outdir= is always a required keyword, and needs to be a non-existing directory in which the data is written. For some programs there is an exe= keyword, in order to change the name of the non-NEMO program to be run. This is always assumed to be in the standard Unix search path ($PATH).
Although these run* programs use a fairly common method to run the non-NEMO programs, they have not all been unified as is proposed in run(3NEMO) .
Various man(1NEMO) pages explain programs(1) , subroutine libraries(3) file formats(5) and system management(8) .
NEMO homepage http://www.astro.umd.edu/nemo.