FV3 Bundle
mpp_parameter.F90
Go to the documentation of this file.
1 !***********************************************************************
2 !* GNU Lesser General Public License
3 !*
4 !* This file is part of the GFDL Flexible Modeling System (FMS).
5 !*
6 !* FMS is free software: you can redistribute it and/or modify it under
7 !* the terms of the GNU Lesser General Public License as published by
8 !* the Free Software Foundation, either version 3 of the License, or (at
9 !* your option) any later version.
10 !*
11 !* FMS is distributed in the hope that it will be useful, but WITHOUT
12 !* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
13 !* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
14 !* for more details.
15 !*
16 !* You should have received a copy of the GNU Lesser General Public
17 !* License along with FMS. If not, see <http://www.gnu.org/licenses/>.
18 !***********************************************************************
20 #include <fms_platform.h>
21 
22  implicit none
23  private
24 
25 ! Include variable "version" to be written to log file.
26 #include<file_version.h>
27  public version
28 
29  !--- public paramters which is used by mpp_mod and its components.
30  !--- All othere modules should import these parameters from mpp_mod.
37  public :: default_tag
44 
45  !--- public paramters which is used by mpp_domains_mod and its components.
46  !--- All othere modules should import these parameters from mpp_domains_mod.
53  public :: max_domain_fields, max_tiles
56 
57  !--- public paramters which is used by mpp_domains_mod and its components.
58  !--- All othere modules should import these parameters from mpp_io_mod.
63 
64  !--- The following paramters are used by mpp_mod and its components.
65  integer, parameter :: maxpes=2048 !used for dimensioning stuff that might be indexed by pe
66  integer, parameter :: mpp_verbose=1, mpp_debug=2
67  integer, parameter :: all_pes=-1, any_pe=-2, null_pe=-3
68  integer, parameter :: note=0, warning=1, fatal=2
69  integer, parameter :: max_clocks=400, max_event_types=5, max_events=40000
70  integer, parameter :: event_allreduce=1, event_broadcast=2, event_recv=3, event_send=4, event_wait=5
71  integer, parameter :: event_alltoall=6
72  integer, parameter :: event_type_create=7, event_type_free=8
73  integer, parameter :: mpp_clock_sync=1, mpp_clock_detailed=2
74  integer :: default_tag = 1
75  !--- implimented to centralize _FILL_ values for land_model.F90 into mpp_mod
76  !------- instead of multiple includes of netcdf.inc and manual assignments
77  integer(INT_KIND) , parameter :: mpp_fill_int = -2147483647 !NF_FILL_INT
78  real(DOUBLE_KIND) , parameter :: mpp_fill_double = 9.9692099683868690e+36 !NF_FILL_DOUBLE
79  real(FLOAT_KIND) , parameter :: mpp_fill_float = 9.9692099683868690e+36 !NF_FILL_DOUBLE
80  !--- predefined clock granularities, but you can use any integer
81  !--- using CLOCK_LOOP and above may distort coarser-grain measurements
82  integer, parameter :: clock_component=1 !component level, e.g model, exchange
83  integer, parameter :: clock_subcomponent=11 !top level within a model component, e.g dynamics, physics
84  integer, parameter :: clock_module_driver=21 !module driver level, e.g adriver that calls multiple
85  !related physics routines
86  integer, parameter :: clock_module=31 !module level, e.g main subroutine of a physics module
87  integer, parameter :: clock_routine=41 !level of individual subroutine or function
88  integer, parameter :: clock_loop=51 !loops or blocks within a routine
89  integer, parameter :: clock_infra=61 !infrastructure level, e.g halo update
90  integer, parameter :: max_bins=20
91  integer(LONG_KIND), parameter :: mpp_wait=-1, mpp_ready=-2
92 
93  !--- The following paramters are used by mpp_domains_mod and its components.
94  integer, parameter :: global=0, cyclic=1
95  integer, parameter :: west=2, east=3, south=4, north=5, scalar_bit=6, center=7, corner=8
96  integer, parameter :: south_west=7, south_east=8, north_west=9, north_east=10
97  integer, parameter :: edgeonly = 11
98  integer, parameter :: nonsymedge = 12
99  integer, parameter :: send=1, recv=2
101  integer, parameter :: agrid=0, bgrid=1, cgrid=2, dgrid=3
102  integer, parameter :: bgrid_ne=bgrid+2**north+2**east
103  integer, parameter :: bgrid_sw=bgrid+2**south+2**west
104  integer, parameter :: cgrid_ne=cgrid+2**north+2**east
105  integer, parameter :: cgrid_sw=cgrid+2**south+2**west
106  integer, parameter :: dgrid_ne=dgrid+2**north+2**east
107  integer, parameter :: dgrid_sw=dgrid+2**south+2**west
108  integer, parameter :: fold_west_edge = 2**west, fold_east_edge = 2**east
109  integer, parameter :: fold_south_edge=2**south, fold_north_edge=2**north
110  integer, parameter :: wupdate=2**west, eupdate=2**east, supdate=2**south, nupdate=2**north
112  integer, parameter :: edgeupdate=2**edgeonly, nonsymedgeupdate=2**nonsymedge
113  integer, parameter :: zero=0, ninety=90, minus_ninety=-90, one_hundred_eighty=180
114  integer, parameter :: nonblock_update_tag = 2
115 
116 ! DOMAIN_ID_BASE acts as a counter increment for domains as they are defined. It's used in
117 ! combination with the flag parameter defined above to create a unique identifier for
118 ! each Domain+flags combination. Therefore, the value of any flag must not exceed DOMAIN_ID_BASE.
119 ! integer(LONG_KIND), parameter :: DOMAIN_ID_BASE=INT( 2**(4*LONG_KIND),KIND=LONG_KIND )
120  integer(LONG_KIND), parameter :: domain_id_base=z'0000000100000000' ! Workaround for 64bit init problem
121  integer, parameter :: non_bitwise_exact_sum=0
122  integer, parameter :: bitwise_exact_sum=1
123  integer, parameter :: bitwise_efp_sum=2
124  integer, parameter :: mpp_domain_time=mpp_debug+1
125  integer, parameter :: max_domain_fields=100
126  integer, parameter :: max_tiles=10
127 
128  !--- The following paramters are used by mpp_io_mod and its components.
129  integer, parameter :: mpp_wronly=100, mpp_rdonly=101, mpp_append=102, mpp_overwr=103 !action on open
130  integer, parameter :: mpp_ascii=200, mpp_ieee32=201, mpp_native=202, mpp_netcdf=203 !format
131  integer, parameter :: mpp_sequential=300, mpp_direct=301 !access
132  integer, parameter :: mpp_single=400, mpp_multi=401 !threading, fileset
133  integer, parameter :: mpp_delete=501, mpp_collect=502 !action on close
134  integer, parameter :: nullunit=-1 !returned by PEs not participating in
135  !IO after a collective call with threading
136  !equal to MPP_SINGLE
137  !--- unique tag used in FMS
138  integer, parameter :: comm_tag_1 = 1, comm_tag_2 = 2, comm_tag_3 = 3, comm_tag_4 = 4
139  integer, parameter :: comm_tag_5 = 5, comm_tag_6 = 6, comm_tag_7 = 7, comm_tag_8 = 8
140  integer, parameter :: comm_tag_9 = 9, comm_tag_10 = 10, comm_tag_11 = 11, comm_tag_12 = 12
141  integer, parameter :: comm_tag_13 = 13, comm_tag_14 = 14, comm_tag_15 = 15, comm_tag_16 = 16
142  integer, parameter :: comm_tag_17 = 17, comm_tag_18 = 18, comm_tag_19 = 19, comm_tag_20 = 20
143 
144  integer, parameter :: root_global = 9
145  integer, parameter :: global_root_only = 2**root_global
146  real(DOUBLE_KIND), parameter :: nulltime=-1.
147 #ifdef LARGE_FILE
148  integer(LONG_KIND), parameter :: max_file_size = 4294967295
149 #else
150  integer(LONG_KIND), parameter :: max_file_size = 2147483647
151 #endif
152 
153  !#####################################################################
154 
155 end module mpp_parameter_mod
integer, parameter, public max_event_types
integer, parameter bgrid
integer, parameter, public nonblock_update_tag
integer, parameter, public bgrid_ne
integer, parameter, public clock_loop
integer, parameter, public mpp_wronly
integer, parameter, public comm_tag_13
integer, parameter, public nupdate
integer, parameter, public cgrid_sw
integer, parameter, public mpp_ieee32
integer, parameter, public one_hundred_eighty
integer, parameter, public comm_tag_9
integer, parameter, public mpp_ascii
integer, public default_tag
integer, parameter, public note
real(fp), parameter, public zero
integer, parameter, public null_pe
integer, parameter, public comm_tag_14
real(double_kind), parameter, public mpp_fill_double
integer, parameter, public dgrid_ne
integer, parameter, public nullunit
integer, parameter, public non_bitwise_exact_sum
integer, parameter, public global_data_domain
integer, parameter recv
integer, parameter, public mpp_clock_sync
integer, parameter, public mpp_collect
integer, parameter, public corner
integer, parameter, public mpp_rdonly
integer, parameter, public mpp_delete
integer, parameter, public comm_tag_11
integer, parameter, public comm_tag_5
integer, parameter, public mpp_domain_time
integer, parameter, public comm_tag_10
integer, parameter, public scalar_bit
integer, parameter, public clock_module
integer, parameter, public bgrid_sw
integer, parameter, public mpp_clock_detailed
integer, parameter, public comm_tag_19
integer, parameter, public bitwise_exact_sum
integer, parameter, public comm_tag_20
integer, parameter, public event_alltoall
integer, parameter, public global_root_only
integer, parameter, public event_send
real(float_kind), parameter, public mpp_fill_float
integer, parameter, public mpp_sequential
integer, parameter, public wupdate
integer, parameter, public fold_south_edge
integer, parameter, public yupdate
integer, parameter send
integer(long_kind), parameter, public mpp_wait
integer, parameter, public west
integer, parameter, public mpp_native
integer, parameter, public mpp_single
integer, parameter, public agrid
integer, parameter, public comm_tag_6
integer, parameter, public clock_component
integer, parameter, public comm_tag_3
integer, parameter, public global
integer, parameter, public mpp_debug
integer, parameter, public mpp_netcdf
integer, parameter, public center
integer, parameter, public comm_tag_2
integer, parameter, public mpp_overwr
integer, parameter, public event_allreduce
integer, parameter, public south_west
integer, parameter, public cyclic_global_domain
integer, parameter, public max_events
integer, parameter, public any_pe
integer, parameter, public fold_east_edge
integer, parameter, public nonsymedge
integer(int_kind), parameter, public mpp_fill_int
integer, parameter, public mpp_multi
integer, parameter, public nonsymedgeupdate
integer, parameter, public east
real(double_kind), parameter, public nulltime
integer, parameter, public supdate
integer, parameter, public fold_north_edge
integer, parameter, public max_bins
integer, parameter, public max_tiles
integer(long_kind), parameter, public max_file_size
integer, parameter, public comm_tag_12
integer, parameter, public all_pes
integer, parameter, public maxpes
integer, parameter, public comm_tag_15
integer, parameter, public event_type_create
integer, parameter, public max_clocks
integer, parameter, public event_recv
integer, parameter, public event_broadcast
integer, parameter, public edgeupdate
integer, parameter, public mpp_verbose
integer, parameter, public comm_tag_18
integer, parameter, public xupdate
integer(long_kind), parameter, public domain_id_base
integer, parameter, public fold_west_edge
integer, parameter, public clock_subcomponent
integer, parameter, public minus_ninety
integer, parameter, public event_type_free
integer, parameter, public north
integer, parameter, public event_wait
integer, parameter, public mpp_direct
integer, parameter dgrid
integer, parameter, public fatal
integer, parameter, public cyclic
integer, parameter, public comm_tag_7
integer, parameter, public eupdate
integer, parameter, public max_domain_fields
integer, parameter, public edgeonly
integer, parameter, public bitwise_efp_sum
integer, parameter, public root_global
integer, parameter, public comm_tag_4
integer, parameter, public warning
integer, parameter, public clock_module_driver
integer, parameter, public north_east
integer, parameter, public south
integer, parameter, public ninety
integer, parameter, public north_west
integer, parameter, public clock_routine
integer, parameter, public scalar_pair
integer, parameter, public comm_tag_16
integer, parameter, public clock_infra
integer(long_kind), parameter, public mpp_ready
integer, parameter, public cgrid_ne
integer, parameter, public comm_tag_8
integer, parameter, public comm_tag_1
integer, parameter, public comm_tag_17
integer, parameter, public mpp_append
integer, parameter cgrid
integer, parameter, public south_east
integer, parameter, public dgrid_sw