XBeach
|
00001 module spaceparamsdef 00002 use mnemmodule 00003 implicit none 00004 save 00005 type spacepars 00006 include 'spacedecl.inc' 00007 #ifdef USEMPI 00008 ! 00009 ! administration of the lay-out of the distributed matrices 00010 ! In the following: p is the MPI-process number: p = 0 .. numprocs-1 00011 ! The array indices start with 1, so, for example, is(2) describes 00012 ! the situation for process rank 1. 00013 ! a is the global matrix, b is a local matrix on process p. 00014 ! 00015 ! is(:) and js(:) describe the location of the submatrix in process p: 00016 ! b(1,1) coincides with a(is(p+1),js(p+1)) 00017 ! 00018 ! lm(:) and ln(:) describe the extend of b: 00019 ! the dimensions of b on p are (lm(p+1),ln(p+1)) 00020 ! b concides with 00021 ! a(is(p+1):is(p+1)+lm(p+1)-1,js(p+1):js(p+1)+ln(p+1)-1) 00022 ! 00023 ! isleft(:), isright(:), istop(:), isbot(:) tell if 00024 ! matrix b respectively map from a: 00025 ! the first column 00026 ! the last column 00027 ! the first row 00028 ! lhe last row 00029 ! 00030 ! the values are determined in subroutine space_distribute_space 00031 ! 00032 integer, dimension(:), pointer :: is => NULL() 00033 integer, dimension(:), pointer :: js => NULL() 00034 integer, dimension(:), pointer :: lm => NULL() 00035 integer, dimension(:), pointer :: ln => NULL() 00036 logical, dimension(:), pointer :: isleft => NULL() 00037 logical, dimension(:), pointer :: isright => NULL() 00038 logical, dimension(:), pointer :: istop => NULL() 00039 logical, dimension(:), pointer :: isbot => NULL() 00040 00041 ! The following are determined in spaceparams, look there for a description 00042 integer, dimension(:), allocatable :: icgs(:) 00043 integer, dimension(:), allocatable :: icge(:) 00044 integer, dimension(:), allocatable :: jcgs(:) 00045 integer, dimension(:), allocatable :: jcge(:) 00046 integer, dimension(:), allocatable :: icls(:) 00047 integer, dimension(:), allocatable :: icle(:) 00048 integer, dimension(:), allocatable :: jcls(:) 00049 integer, dimension(:), allocatable :: jcle(:) 00050 00051 logical, dimension(numvars) :: collected 00052 logical, dimension(numvars) :: precollected 00053 00054 #endif 00055 end type spacepars 00056 00057 integer, public :: imin_ee,imax_ee,jmin_ee,jmax_ee 00058 integer, public :: imin_uu,imax_uu,jmin_uu,jmax_uu 00059 integer, public :: imin_vv,imax_vv,jmin_vv,jmax_vv 00060 integer, public :: imin_zs,imax_zs,jmin_zs,jmax_zs 00061 end module spaceparamsdef