## define types of field variables and the layout here as macros
#  for SEPWAVElib
#%

#define WFIELD(uu) real uu(ntsteps,ncomp,nz+2*nbound1,nx+2*nbound2,ny+2*nbound3)

#define WFIELDLAY(uuu) #mf$layout uuu(:serial,:serial,:news,:news,:news)

#define WAVE(uu) real uu(ncomp,nz+2*nbound1,nx+2*nbound2,ny+2*nbound3)

#define WAVELAY(uuu) #mf$layout uuu(:serial,:news,:news,:news)

#define COMPWFIELD1(uu) complex uu(nz/2+nbound1,nx+2*nbound2,ny+2*nbound3)

#define COMPWFIELD2(uu) complex uu(nz+2*nbound1,nx/2+nbound2,ny+2*nbound3)

#define COMPWFIELD3(uu) complex uu(nz+2*nbound1,nx+2*nbound2,ny/2+nbound3)

#define COMPWFIELDLAY(uuu) #mf$layout uuu(:news,:news,:news)

#define MODEL(uuu) real uuu(nz+2*nbound1,nx+2*nbound2,ny+2*nbound3)

#define MODELLAY(uuu) #mf$layout uuu(:news,:news,:news)

# should this be ntcomp ? instead of ndim*ncomp

#define TENSORFIELD(uu) real uu(ntsteps,ntcomp,nz+2*nbound1,nx+2*nbound2,ny+2*nbound3)

#define TENSORFIELDLAY(uuu) #mf$layout uuu(:serial,:serial,:news,:news,:news)

#define TENSOR(uu) real uu(ntcomp,nz+2*nbound1,nx+2*nbound2,ny+2*nbound3)

#define TENSORLAY(uuu) #mf$layout uuu(:serial,:news,:news,:news)

#define DENS(uu) real uu(nrho,nz+2*nbound1,nx+2*nbound2,ny+2*nbound3)

#define DENSLAY(uuu) #mf$layout uuu(:serial,:news,:news,:news)

#define STIFF(uu) real uu(nstiff,nz+2*nbound1,nx+2*nbound2,ny+2*nbound3)

#define STIFFLAY(uuu) #mf$layout uuu(:serial,:news,:news,:news)

#define BOUND(uuu) integer uuu(nz+2*nbound1,nx+2*nbound2,ny+2*nbound3)

#define BOUNDLAY(uuu) #mf$layout uuu(:news,:news,:news)

#define ONEWAY(uu) real uu(ncomp,nz+2*nbound1,nx+2*nbound2,ny+2*nbound3)

#define ONEWAYLAY(uu) #mf$layout uu(:serial,:news,:news,:news)

# we shoudl not full dimension it, but rather align it with u

#define SEIS(uu) real uu(ncomp,nz+2*nbound1,nx+2*nbound2,ny+2*nbound3)

#define SEISLAY(uuu) #mf$layout uuu(:serial,:serial,:news,:news)


## define the boundary types

#define INTERIOR 0
#define FREE     1 
#define TOP      2 
#define BOTTOM   3
#define LEFT     4 
#define RIGHT    5 
#define EXPDAMP  6
#define FREBND   7 


### define medium types
#define ACOUSTIC  1
#define ISOTROPIC 2
#define CUBIC     3
#define TRANSISO  4
#define ORTHO     5
#define MONO      6
#define TRICLINIC 7

### define derivative types
#define FINDER    1
#define FOUDER    2

### define source types
#define ACCEL     0
#define PRESSURE  1
#define SHEAR     2
#define DOUBLET   3
