Skip to content

Developer notes

Before you will extend Bifrost code make sure you read coding style document

Naming convention

Modules are called _mod. All modules should contain an initialisation procedure called init_, where for instance data should be read in.

Only setup file that does not depend on the paralization scheme is params, all other should make sure read/write should be done by the master only!

Local sizes are xs-xe,ys-ye,zs-ze for the trustworthy grid, while boudnary points are xsb-xeb,ysb-yeb,zsb-zeb, making the points in x-direction distributed as:

       |    mb    |          xr           |   mb    |
       xsb ----- xs ---------  ---------- xe ----- xeb
       |                    xrb                     |

All major procedures that uses input procedures needs to have a subroutine called resolve_params_<procedure>(name,value) and should have a call to read_params(<procedure>) with <procedure> being mhd,hd,radiation, eos, etc. These are not meant for large io operations, but only for reading the text input file generated for/by IDL or Python The case statements in the resolve_params_<proc> should contain only lowercase letters, the variable names in the .in file are converted to lowercase before being parsed to the respective resolve_params_<proc>.

init_<hd,mhd,...> should make a check to see if the required number of work arrays are allocated, and allocate more if they are not - see example in mhd_mpi.f90