iwave.h File Reference

Wave simulation struct. More...

#include "utils.h"
#include "usempi.h"
#include "exchangeinfo.h"
#include "parser.h"
#include "fd.h"

Go to the source code of this file.

Classes

struct  s_PARALLELINFO
 Parallel information (MPI, MPI Cartesian grid, OpenMP). More...
struct  s_IWAVE
 Wave simulation struct. More...

Typedefs

typedef s_PARALLELINFO PARALLELINFO
 Parallel information (MPI, MPI Cartesian grid, OpenMP).
typedef s_IWAVE IWAVE
 Wave simulation struct.

Functions

int initparallel (int ts)
 Stores MPI and OMP data for global access.
void initparallel_global (int)
 Stores global MPI and OMP data for global access.
int initparallel_local (PARARRAY, FILE *)
 Stores local (group, remote) MPI and OMP data for global access.
int initpinfo (PARALLELINFO *pinfo, FILE *stream)
 Initializes those parts of the parallel info struct which are indep of phys grid dimn - depend only on cart comm.
int initexch (PARALLELINFO *pinfo, int ndim, FILE *stream)
int destroypinfo (PARALLELINFO *pinfo, int fabort)
 resets data exchange info
int iwave_construct (IWAVE *state, PARARRAY *pars, FILE *stream, IWaveInfo const &ic)
 IWAVE struct constructor.
void iwave_printf (IWAVE *state, PARARRAY *pars, FILE *stream, IWaveInfo const &ic)
 Dump information of all arrays including the allocated, computational virtual, send and recv ones as well as parallel info.
void iwave_dynamic_init (IWAVE *state, int it, IWaveInfo const &ic)
 Resets all dynamical fields zeros, time index = it and internal step index = 0.
void iwave_destroy (IWAVE *state, FD_MODELDEST d)
 STORAGE DEALLOCATION for IMODEL struct and frees the communicator and destroys the send and recv info.
void quietexit (PARARRAY *pars, FILE **stream)
 Normal exit.
void abortexit (int err, PARARRAY *pars, FILE **stream)
 Cleans up environment and exits.
int initoutstream (FILE **stream, int rk, int sz)
 Initializes parallel output stream.
int readinput (PARARRAY **pars, FILE *stream, int argc, char **argv)
 Initializes input parameter structures and populates them.
void readparpars (PARARRAY *pars, int *stats, int *nopts, int *printact, FILE *out)
 Reads miscellaneous flags from param array, such as stats, nopts and printact.
void storeparallel (PARALLELINFO *pinfo)
 Static storage of MPI comm params.
int setrecvexchange (IMODEL *model, PARALLELINFO *pinfo, FILE *stream, IWaveInfo const &ic)
 Sets up parallel information for communication - sets the MPI_DATATYPE for sending and receiving.
int dump_pi (PARARRAY *pars, PARALLELINFO *pinfo, FILE *stream)
 Dumps parallel info.
void dump_ac (PARARRAY *pars, IMODEL *model, FILE *stream)
 Dumps information of all arrays including the allocated, and computational virtual ones.
void dump_rs (PARARRAY *pars, IMODEL *model, FILE *stream, int sends, IWaveInfo const &ic, PARALLELINFO *pinfo)
 Dumps information of all arrays including the send and recv virtual ones.


Detailed Description

Wave simulation struct.

Contains the IMODEL struct and the parallel information.

Definition in file iwave.h.


Typedef Documentation

typedef struct s_PARALLELINFO PARALLELINFO

Parallel information (MPI, MPI Cartesian grid, OpenMP).

Assumption: cartesian grid for 1D/2D/3D.

typedef struct s_IWAVE IWAVE

Wave simulation struct.

It includes:


Function Documentation

int initparallel ( int  ts  ) 

Stores MPI and OMP data for global access.

Parameters:
[in] ts - (int) thread support level

void initparallel_global ( int   ) 

Stores global MPI and OMP data for global access.

Parameters:
[in] ts - (int) thread support level

int initparallel_local ( PARARRAY  ,
FILE *   
)

Stores local (group, remote) MPI and OMP data for global access.

reads cartesian grid info

Parameters:
[in] ts - (int) thread support level

int initpinfo ( PARALLELINFO pinfo,
FILE *  stream 
)

Initializes those parts of the parallel info struct which are indep of phys grid dimn - depend only on cart comm.

Called in iwave_construct.

Parameters:
[out] pinfo - (PARALLELINFO *) parallel info struct
[in] stream - (FILE *) file pointer where to dump run-time message

int initexch ( PARALLELINFO pinfo,
int  ndim,
FILE *  stream 
)

int destroypinfo ( PARALLELINFO pinfo,
int  fabort 
)

resets data exchange info

Parameters:
[out] pinfo - (PARALLELINFO *) parallel info pointer
[in] fabort - (int) physical grid dimension (as opposed to MPI cart comm dim)

int iwave_construct ( IWAVE state,
PARARRAY pars,
FILE *  stream,
IWaveInfo const &  ic 
)

IWAVE struct constructor.

Does the following operations: - parallel info (PARALLELINFO) related operation: - initializes the parallel info struct, references initpinfo - determines the number of processes in each dimension and asgnrk in PARALLELINFO, references readparallel - creates MPI Cartesian grid and computes neighbor processor ranks - model struct (IMODEL) related operation: - sets model struct defaults, references im_construct - initializes model struct, references minit - read other misc flags of an IWAVE struct, references readparpars - create model struct, references IMODEL::mcrea: - read grid info - make action list - create stencil - compute size of the domain on its host processor according to the parallel info Cartesian grid dimensions (cdims) and Cartesian rank (crank) - allocated memory, NOTE: STORAGE ALLOCATION occurs only once, that is for IMODEL::ld_a and set the dimension information for IMODEL::ld_r[i], IMODEL::ld_s[i], but let
IMODEL::ld_r[i]._s[j]._s = IMODEL::ld_s[i]._s[j]._s = IMODEL::ld_a[i]._s[j]._s,
where the first '_s' is RARR type and the second '_s' is (ireal *) type - etc - set up paralle information for communication - set the MPI_DATATYPE for sending and receiving: - let
PARALLELINFO::reinfo[ia][i].buf = IMODEL::ld_r[i]._s[ia]._s (two pointers)
PARALLELINFO::seinfo[ia][i].buf = IMODEL::ld_s[i]._s[ia]._s (two pointers) - constructor the EXCHANGEINFO::type, which the vector datatype striding the continuous memory to the pieces for communication (send and receive)

NOTE: as mentioned before, STORAGE ALLOCATION occurs only once, that is for IMODEL::ld_a. All other domains in IMODEL struct is of different dimension information, but refer to the same chunk of physical memories of (ireal *) type with IMODEL::ld_a.

Parameters:
[out] state - (IWAVE *) IWAVE struct pointer
[in] pars - (PARARRAY *) parameter array pointer
[in] stream - (FILE *) file pointer for dumping run-time message and warning
[in] minit - a function pointer that initializes an IMODEL struct. References IMODEL::minit
Returns:
0 on successful completion, else error code as in base/include/utils.h.

void iwave_printf ( IWAVE state,
PARARRAY pars,
FILE *  stream,
IWaveInfo const &  ic 
)

Dump information of all arrays including the allocated, computational virtual, send and recv ones as well as parallel info.

void iwave_dynamic_init ( IWAVE state,
int  it,
IWaveInfo const &  ic 
)

Resets all dynamical fields zeros, time index = it and internal step index = 0.

void iwave_destroy ( IWAVE state,
FD_MODELDEST  d 
)

STORAGE DEALLOCATION for IMODEL struct and frees the communicator and destroys the send and recv info.

Parameters:
state - (IWAVE *) target IWAVE struct

void quietexit ( PARARRAY pars,
FILE **  stream 
)

Normal exit.

should only be called after everything is done, so assume stream exists.

void abortexit ( int  err,
PARARRAY pars,
FILE **  stream 
)

Cleans up environment and exits.

int initoutstream ( FILE **  stream,
int  rk,
int  sz 
)

Initializes parallel output stream.

Called in driver.

Parameters:
[out] stream - (FILE **) a pointer of FILE pointer
[in] rk - (int) rank in MPI_COMM_WORLD
[in] sz - (int) number of processes in the group of MPI_COMM_WORLD
Returns:
0 on successful completion, else error code as in base/include/utils.h.

int readinput ( PARARRAY **  pars,
FILE *  stream,
int  argc,
char **  argv 
)

Initializes input parameter structures and populates them.

Called in driver.

void readparpars ( PARARRAY pars,
int *  stats,
int *  nopts,
int *  printact,
FILE *  out 
)

Reads miscellaneous flags from param array, such as stats, nopts and printact.

Called in iwave_construct.

void storeparallel ( PARALLELINFO pinfo  ) 

Static storage of MPI comm params.

int setrecvexchange ( IMODEL model,
PARALLELINFO pinfo,
FILE *  stream,
IWaveInfo const &  ic 
)

Sets up parallel information for communication - sets the MPI_DATATYPE for sending and receiving.

Calls rd_setexchangeinfo.

int dump_pi ( PARARRAY pars,
PARALLELINFO pinfo,
FILE *  stream 
)

Dumps parallel info.

void dump_ac ( PARARRAY pars,
IMODEL model,
FILE *  stream 
)

Dumps information of all arrays including the allocated, and computational virtual ones.

void dump_rs ( PARARRAY pars,
IMODEL model,
FILE *  stream,
int  sends,
IWaveInfo const &  ic,
PARALLELINFO pinfo 
)

Dumps information of all arrays including the send and recv virtual ones.


Generated on 5 Jan 2017 for IWAVECORE by  doxygen 1.4.7