13 integer,
parameter :: regridding_layer = 1
14 integer,
parameter :: regridding_zstar = 2
15 integer,
parameter :: regridding_rho = 3
16 integer,
parameter :: regridding_sigma = 4
17 integer,
parameter :: regridding_arbitrary = 5
18 integer,
parameter :: regridding_hycom1 = 6
19 integer,
parameter :: regridding_slight = 7
21 integer,
parameter :: regridding_sigma_shelf_zstar = 8
23 integer,
parameter :: regridding_adaptive = 9
25 character(len=*),
parameter :: regridding_layer_string =
"LAYER"
26 character(len=*),
parameter :: regridding_zstar_string_old =
"Z*"
27 character(len=*),
parameter :: regridding_zstar_string =
"ZSTAR"
28 character(len=*),
parameter :: regridding_rho_string =
"RHO"
29 character(len=*),
parameter :: regridding_sigma_string =
"SIGMA"
30 character(len=*),
parameter :: regridding_arbitrary_string =
"ARB"
31 character(len=*),
parameter :: regridding_hycom1_string =
"HYCOM1"
32 character(len=*),
parameter :: regridding_slight_string =
"SLIGHT"
33 character(len=*),
parameter :: regridding_sigma_shelf_zstar_string =
"SIGMA_SHELF_ZSTAR"
34 character(len=*),
parameter :: regridding_adaptive_string =
"ADAPTIVE"
35 character(len=*),
parameter :: default_coordinate_mode = regridding_layer_string
39 module procedure coordinateunitsi
40 module procedure coordinateunitss
45 module procedure state_dependent_char
46 module procedure state_dependent_int
53 function coordinatemode(string)
54 integer :: coordinatemode
55 character(len=*),
intent(in) :: string
56 select case ( uppercase(trim(string)) )
57 case (trim(regridding_layer_string)); coordinatemode = regridding_layer
58 case (trim(regridding_zstar_string)); coordinatemode = regridding_zstar
59 case (trim(regridding_zstar_string_old)); coordinatemode = regridding_zstar
60 case (trim(regridding_rho_string)); coordinatemode = regridding_rho
61 case (trim(regridding_sigma_string)); coordinatemode = regridding_sigma
62 case (trim(regridding_hycom1_string)); coordinatemode = regridding_hycom1
63 case (trim(regridding_slight_string)); coordinatemode = regridding_slight
64 case (trim(regridding_arbitrary_string)); coordinatemode = regridding_arbitrary
65 case (trim(regridding_sigma_shelf_zstar_string)); coordinatemode = regridding_sigma_shelf_zstar
66 case (trim(regridding_adaptive_string)); coordinatemode = regridding_adaptive
67 case default ;
call mom_error(fatal,
"coordinateMode: "//&
68 "Unrecognized choice of coordinate ("//trim(string)//
").")
70 end function coordinatemode
74 function coordinateunitsi(coordMode)
75 character(len=16) :: coordinateunitsi
76 integer,
intent(in) :: coordmode
77 select case ( coordmode )
78 case (regridding_layer); coordinateunitsi =
"kg m^-3"
79 case (regridding_zstar); coordinateunitsi =
"m"
80 case (regridding_sigma_shelf_zstar); coordinateunitsi =
"m"
81 case (regridding_rho); coordinateunitsi =
"kg m^-3"
82 case (regridding_sigma); coordinateunitsi =
"Non-dimensional"
83 case (regridding_hycom1); coordinateunitsi =
"m"
84 case (regridding_slight); coordinateunitsi =
"m"
85 case (regridding_adaptive); coordinateunitsi =
"m"
86 case default ;
call mom_error(fatal,
"coordinateUnts: "//&
87 "Unrecognized coordinate mode.")
89 end function coordinateunitsi
93 function coordinateunitss(string)
94 character(len=16) :: coordinateunitss
95 character(len=*),
intent(in) :: string
97 coordmode = coordinatemode(string)
98 coordinateunitss = coordinateunitsi(coordmode)
99 end function coordinateunitss
102 logical function state_dependent_char(string)
103 character(len=*),
intent(in) :: string
105 state_dependent_char = state_dependent_int( coordinatemode(string) )
107 end function state_dependent_char
110 logical function state_dependent_int(mode)
111 integer,
intent(in) :: mode
113 case (regridding_layer); state_dependent_int = .true.
114 case (regridding_zstar); state_dependent_int = .false.
115 case (regridding_sigma_shelf_zstar); state_dependent_int = .false.
116 case (regridding_rho); state_dependent_int = .true.
117 case (regridding_sigma); state_dependent_int = .false.
118 case (regridding_hycom1); state_dependent_int = .true.
119 case (regridding_slight); state_dependent_int = .true.
120 case (regridding_adaptive); state_dependent_int = .true.
121 case default ;
call mom_error(fatal,
"state_dependent: "//&
122 "Unrecognized choice of coordinate.")
124 end function state_dependent_int