source: CPL/oasis3-mct/branches/OASIS3-MCT_5.0_branch/lib/psmile/src/mod_oasis_data.F90 @ 6331

Last change on this file since 6331 was 6331, checked in by aclsce, 17 months ago

Moved oasis-mct_5.0 in oasis3-mct/branches directory.

File size: 3.7 KB
Line 
1
2!> Provides a common location for several OASIS variables
3
4MODULE mod_oasis_data
5!     - - - - - - - - - - - - - - - - - - - - - - - - - - -
6!
7!
8  USE mod_oasis_kinds
9
10  IMPLICIT NONE
11
12  public
13
14! public prism_data_zero
15
16#include <mpif.h>
17
18! GENERAL
19
20  INTEGER(kind=ip_intwp_p)  :: nulprt, nulprt1, nulet  ! unit numbers for log files
21  INTEGER(kind=ip_i4_p)     :: OASIS_debug
22  INTEGER(kind=ip_i4_p)     :: TIMER_debug
23  character(len=ic_med)     :: cdf_filetype
24
25  logical                   :: enddef_called   ! true when enddef is called, for error checking
26  logical                   :: ET_debug
27
28  INTEGER(kind=ip_i4_p)     :: size_namfld
29  CHARACTER(len=ic_lvar), POINTER :: total_namsrcfld(:), total_namdstfld(:)
30
31! Models
32
33  ! These are identical on all MPI tasks
34  INTEGER(kind=ip_i4_p),parameter :: prism_mmodels = 20
35  ! Prime number definition for MPI intercommunicator tag generation
36  INTEGER(kind=ip_i4_p),parameter :: prime_nbs(prism_mmodels) = (/ 2,  3,  5, 7, 11, 13, 17, &
37                                                                & 19, 23, 29, 31, 37, 41, 43, &
38                                                                & 47, 53, 59, 61, 67, 71 /)
39  INTEGER(kind=ip_i4_p)           :: prism_nmodels    ! number of models
40  INTEGER(kind=ip_i4_p)           :: prism_amodels    ! number of active models
41  character(len=ic_lvar)          :: prism_modnam(prism_mmodels)  ! model names
42  logical                         :: prism_modcpl(prism_mmodels)  ! model coupling flags
43
44  ! These are task specific
45  character(len=ic_lvar):: compnm         ! name of model on TASK
46  integer(kind=ip_i4_p) :: compid         ! integer id associated with model on TASK
47  logical               :: oasis_coupled  ! flag whether this TASK is coupled
48
49
50! MPI
51
52  INTEGER(kind=ip_i4_p) :: mpi_comm_global_world
53  INTEGER(kind=ip_i4_p) :: mpi_rank_world
54  INTEGER(kind=ip_i4_p) :: mpi_size_world
55  INTEGER(kind=ip_i4_p) :: mpi_comm_global
56  INTEGER(kind=ip_i4_p) :: mpi_rank_global
57  INTEGER(kind=ip_i4_p) :: mpi_size_global
58  INTEGER(kind=ip_i4_p) :: mpi_comm_local
59  INTEGER(kind=ip_i4_p) :: mpi_rank_local
60  INTEGER(kind=ip_i4_p) :: mpi_size_local
61  INTEGER(kind=ip_i4_p) :: mpi_root_local
62  INTEGER(kind=ip_i4_p) :: mpi_comm_map
63  INTEGER(kind=ip_i4_p) :: mpi_rank_map
64  INTEGER(kind=ip_i4_p) :: mpi_size_map
65  INTEGER(kind=ip_i4_p) :: mpi_root_map
66  LOGICAL               :: mpi_in_map
67  CHARACTER(len=MPI_MAX_PROCESSOR_NAME) :: mpi_node_name
68  INTEGER(kind=ip_i4_p) :: mpi_err
69  INTEGER(kind=ip_i4_p),allocatable :: mpi_root_global(:)  ! for each model, the root rank in comm_world
70  INTEGER(kind=ip_i4_p),allocatable :: mpi_comp_size(:)    ! for each model, the size of the local comm
71  character(len=ic_lvar),pointer :: compnmlist(:)
72
73! PARAMETERS
74
75  character(len=*) ,parameter :: cspval = "spval_undef"
76  real(ip_double_p),parameter :: rspval = 1.0e36
77  integer(ip_i4_p) ,parameter :: ispval = -999999
78
79  real(ip_double_p),parameter :: prism_pi = 3.14159265358979323846
80  real(ip_double_p),parameter :: eradius = 6371229.    ! meters
81
82!------------------------------------------------------------
83CONTAINS
84!------------------------------------------------------------
85
86!< Initialize the module data
87
88  SUBROUTINE oasis_data_zero()
89
90  IMPLICIT NONE
91
92  character(len=*),parameter :: subname = '(oasis_data_zero)'
93
94  nulprt = 6
95  nulprt1 = 6
96  nulet = 60
97  OASIS_debug = 0
98  TIMER_debug = 0
99  ET_debug = .FALSE.
100  compid = -1
101  compnm = trim(cspval)
102  oasis_coupled = .false.
103  mpi_comm_global = -1
104  mpi_rank_global = -1
105  mpi_size_global = -1
106  mpi_comm_local = -1
107  mpi_rank_local = -1
108  mpi_size_local = -1
109  enddef_called = .false.
110 
111END SUBROUTINE oasis_data_zero
112
113!------------------------------------------------------------
114END MODULE mod_oasis_data
115
116
Note: See TracBrowser for help on using the repository browser.