Custom LFM resolution configurations is an advanced topic. We do not recommend and do not support custom grid resolutions. |
This page documents how to create configuration files for arbitrary resolution size and processor counts. You are in the right place if your resolution/processor count is not one of the pre-configured resolutions shipped with the LFM.
To compile the code for an arbitrary grid size and number of processors, you must run a configuration script to set up the appropriate (*.inc
) include files required by the Fortran subroutines.
We intend on dynamically allocating arrays (FORTRAN allocatable arrays) for a future release of the code. In the interim, you must run the configuration script before compiling and running parallel LFM. |
The first step is to edit "param.h
" file to reflect your choices. If you are new to the code, it is probably best to start with a pre-made file included in the LTR-para/LFM-para/src/param/
as a template. The standard naming convention is param-nixnjxnk-np.h
where ni
, nj
, nk
are the grid resolution and np
is the number of processors. My favorite template to start with is "param-53x48x64-8.h
" which has i,j,k
grid resolution = 53x48x64 on 8 processors.
/* dimensioning information for MHD code */ #define N_I 53 #define N_J 48 #define N_K 64 #define N_ORDER 8 #define NUMBER_OF_PROCESSORS 8 #define NUMBER_OF_MHD 8 #define NUMBER_OF_ION 1 #define NION_I 49 #define NION_J 35 |
where
N_I, N_J, N_K
are the sizes of your computational grid,N_ORDER
is the numerical order of the scheme,NUMBER_OF_PROCESSORS
is the total number of processors to be used by the both the magnetospheric and ionospheric portions of the simulation,NUMBER_OF_MHD
is the number of processors working on the MHD calculation should equal total number of processorsNUMBER_OF_ION
is the number of processors working on the ionospheric portionNION_I, NION_J
are the sizes of the ionospheric grid and by default are N_J+1
and N_K/2+3
. You probably want to leave NION_I = N_J+1
and NION_J = (N_K/2)+3
to avoid errors while running the code.Once param.h is in place:
MSETUP
program:
cd path/to/LTR-para setenv MACHINE computername gmake MSETUP |
mpirun \-np NUMBER_OF_PROCESSORS MSETUP > MSETUP.info |
create-param.pl
to create the (*.inc) include files need by the parallel version of the LFM:
perl create-param.pl MSETUP.info |
mv param-tmp.inc param-nixnjxnk-np.inc mv ion-param-tmp.inc ion-param-nixnjxnk-np.inc ln -sf param-nixnjxnk-np.inc param.inc ln -sf ion-param-nixnjxnk-np.inc ion-param.inc |