7 use coupler_types_mod,
only: coupler_2d_bc_type
8 use time_manager_mod,
only : time_type
9 use field_manager_mod,
only: fm_string_len
12 implicit none ;
private 20 real,
pointer,
dimension(:,:,:,:) :: field => null()
22 real,
allocatable,
dimension(:,:) :: trunoff
23 logical :: requires_restart = .true.
24 character(len=fm_string_len) :: src_file
25 character(len=fm_string_len) :: src_var_name
26 character(len=fm_string_len) :: src_var_unit
27 character(len=fm_string_len) :: src_var_gridspec
28 integer :: src_var_record
29 logical :: requires_src_info = .false.
30 real :: src_var_unit_conversion = 1.0
31 real :: src_var_valid_min = 0.0
51 public :: g_tracer_flux_init
55 public :: g_tracer_get_common
56 public :: g_tracer_set_common
57 public :: g_tracer_set_csdiag
58 public :: g_tracer_send_diag
59 public :: g_tracer_get_name
60 public :: g_tracer_get_alias
61 public :: g_tracer_get_next
62 public :: g_tracer_is_prog
69 module procedure g_tracer_set_real
70 module procedure g_tracer_set_2d
71 module procedure g_tracer_set_3d
72 module procedure g_tracer_set_4d
79 module procedure g_tracer_get_4d_val
80 module procedure g_tracer_get_3d_val
81 module procedure g_tracer_get_2d_val
82 module procedure g_tracer_get_real
83 module procedure g_tracer_get_string
90 module procedure g_tracer_get_4d
91 module procedure g_tracer_get_3d
92 module procedure g_tracer_get_2d
98 subroutine g_tracer_flux_init(g_tracer)
100 end subroutine g_tracer_flux_init
103 subroutine g_tracer_set_csdiag(diag_CS)
104 type(g_diag_ctrl),
target,
intent(in) :: diag_cs
105 end subroutine g_tracer_set_csdiag
107 subroutine g_tracer_set_common(isc,iec,jsc,jec,isd,ied,jsd,jed,nk,ntau,axes,grid_tmask,grid_kmt,init_time)
108 integer,
intent(in) :: isc
109 integer,
intent(in) :: iec
110 integer,
intent(in) :: jsc
111 integer,
intent(in) :: jec
112 integer,
intent(in) :: isd
113 integer,
intent(in) :: ied
114 integer,
intent(in) :: jsd
115 integer,
intent(in) :: jed
116 integer,
intent(in) :: nk
117 integer,
intent(in) :: ntau
118 integer,
intent(in) :: axes(3)
119 real,
dimension(isd:,jsd:,:),
intent(in) :: grid_tmask
120 integer,
dimension(isd:,jsd:),
intent(in) :: grid_kmt
121 type(time_type),
intent(in) :: init_time
122 end subroutine g_tracer_set_common
124 subroutine g_tracer_get_common(isc,iec,jsc,jec,isd,ied,jsd,jed,nk,ntau,&
125 axes,grid_tmask,grid_mask_coast,grid_kmt,init_time,diag_CS)
126 integer,
intent(out) :: isc
127 integer,
intent(out) :: iec
128 integer,
intent(out) :: jsc
129 integer,
intent(out) :: jec
130 integer,
intent(out) :: isd
131 integer,
intent(out) :: ied
132 integer,
intent(out) :: jsd
133 integer,
intent(out) :: jed
134 integer,
intent(out) :: nk
135 integer,
intent(out) :: ntau
136 integer,
optional,
intent(out) :: axes(3)
137 type(time_type),
optional,
intent(out) :: init_time
138 real,
optional,
dimension(:,:,:),
pointer :: grid_tmask
139 integer,
optional,
dimension(:,:),
pointer :: grid_mask_coast
140 integer,
optional,
dimension(:,:),
pointer :: grid_kmt
141 type(g_diag_ctrl),
optional,
pointer :: diag_cs
142 end subroutine g_tracer_get_common
145 subroutine g_tracer_get_4d(g_tracer_list,name,member,array_ptr)
146 character(len=*),
intent(in) :: name
147 character(len=*),
intent(in) :: member
148 type(g_tracer_type),
pointer :: g_tracer_list
149 real,
dimension(:,:,:,:),
pointer :: array_ptr
150 end subroutine g_tracer_get_4d
153 subroutine g_tracer_get_3d(g_tracer_list,name,member,array_ptr)
154 character(len=*),
intent(in) :: name
155 character(len=*),
intent(in) :: member
156 type(g_tracer_type),
pointer :: g_tracer_list
157 real,
dimension(:,:,:),
pointer :: array_ptr
158 end subroutine g_tracer_get_3d
161 subroutine g_tracer_get_2d(g_tracer_list,name,member,array_ptr)
162 character(len=*),
intent(in) :: name
163 character(len=*),
intent(in) :: member
164 type(g_tracer_type),
pointer :: g_tracer_list
165 real,
dimension(:,:),
pointer :: array_ptr
166 end subroutine g_tracer_get_2d
169 subroutine g_tracer_get_4d_val(g_tracer_list,name,member,array,isd,jsd)
170 character(len=*),
intent(in) :: name
171 character(len=*),
intent(in) :: member
172 type(g_tracer_type),
pointer :: g_tracer_list
173 integer,
intent(in) :: isd
174 integer,
intent(in) :: jsd
175 real,
dimension(isd:,jsd:,:,:),
intent(out):: array
176 end subroutine g_tracer_get_4d_val
179 subroutine g_tracer_get_3d_val(g_tracer_list,name,member,array,isd,jsd,ntau,positive)
180 character(len=*),
intent(in) :: name
181 character(len=*),
intent(in) :: member
182 type(g_tracer_type),
pointer :: g_tracer_list
183 integer,
intent(in) :: isd
184 integer,
intent(in) :: jsd
185 integer,
optional,
intent(in) :: ntau
186 logical,
optional,
intent(in) :: positive
187 real,
dimension(isd:,jsd:,:),
intent(out):: array
189 character(len=fm_string_len),
parameter :: sub_name =
'g_tracer_get_3D_val' 190 end subroutine g_tracer_get_3d_val
193 subroutine g_tracer_get_2d_val(g_tracer_list,name,member,array,isd,jsd)
194 character(len=*),
intent(in) :: name
195 character(len=*),
intent(in) :: member
196 type(g_tracer_type),
pointer :: g_tracer_list
197 integer,
intent(in) :: isd
198 integer,
intent(in) :: jsd
199 real,
dimension(isd:,jsd:),
intent(out):: array
200 end subroutine g_tracer_get_2d_val
203 subroutine g_tracer_get_real(g_tracer_list,name,member,value)
204 character(len=*),
intent(in) :: name
205 character(len=*),
intent(in) :: member
206 type(g_tracer_type),
pointer :: g_tracer_list
207 real,
intent(out)::
value 208 end subroutine g_tracer_get_real
211 subroutine g_tracer_get_string(g_tracer_list,name,member,string)
212 character(len=*),
intent(in) :: name
213 character(len=*),
intent(in) :: member
214 type(g_tracer_type),
pointer :: g_tracer_list
215 character(len=fm_string_len),
intent(out) :: string
216 end subroutine g_tracer_get_string
219 subroutine g_tracer_set_2d(g_tracer_list,name,member,array,isd,jsd,weight)
220 character(len=*),
intent(in) :: name
221 character(len=*),
intent(in) :: member
222 type(g_tracer_type),
pointer :: g_tracer_list
223 integer,
intent(in) :: isd
224 integer,
intent(in) :: jsd
225 real,
dimension(isd:,jsd:),
intent(in) :: array
226 real,
optional ,
intent(in) :: weight
227 end subroutine g_tracer_set_2d
230 subroutine g_tracer_set_3d(g_tracer_list,name,member,array,isd,jsd,ntau)
231 character(len=*),
intent(in) :: name
232 character(len=*),
intent(in) :: member
233 type(g_tracer_type),
pointer :: g_tracer_list
234 integer,
intent(in) :: isd
235 integer,
intent(in) :: jsd
236 integer,
optional,
intent(in) :: ntau
237 real,
dimension(isd:,jsd:,:),
intent(in) :: array
238 end subroutine g_tracer_set_3d
241 subroutine g_tracer_set_4d(g_tracer_list,name,member,array,isd,jsd)
242 character(len=*),
intent(in) :: name
243 character(len=*),
intent(in) :: member
244 type(g_tracer_type),
pointer :: g_tracer_list
245 integer,
intent(in) :: isd
246 integer,
intent(in) :: jsd
247 real,
dimension(isd:,jsd:,:,:),
intent(in) :: array
248 end subroutine g_tracer_set_4d
251 subroutine g_tracer_set_real(g_tracer_list,name,member,value)
252 character(len=*),
intent(in) :: name
253 character(len=*),
intent(in) :: member
254 type(g_tracer_type),
pointer :: g_tracer_list
255 real,
intent(in) ::
value 256 end subroutine g_tracer_set_real
258 subroutine g_tracer_send_diag(g_tracer_list,model_time,tau)
261 type(time_type),
intent(in) :: model_time
262 integer,
intent(in) :: tau
263 end subroutine g_tracer_send_diag
266 subroutine g_tracer_get_name(g_tracer,string)
268 character(len=*),
intent(out) :: string
269 end subroutine g_tracer_get_name
272 subroutine g_tracer_get_alias(g_tracer,string)
274 character(len=*),
intent(out) :: string
275 end subroutine g_tracer_get_alias
278 function g_tracer_is_prog(g_tracer)
279 logical :: g_tracer_is_prog
281 end function g_tracer_is_prog
284 subroutine g_tracer_get_next(g_tracer,g_tracer_next)
287 end subroutine g_tracer_get_next
295 subroutine g_tracer_vertdiff_g(g_tracer, h_old, ea, eb, dt, kg_m2_to_H, m_to_H, tau, mom)
296 type(g_tracer_type),
pointer :: g_tracer
298 real,
dimension(g_tracer_com%isd:,g_tracer_com%jsd:,:),
intent(in) :: h_old
300 real,
dimension(g_tracer_com%isd:,g_tracer_com%jsd:,:),
intent(in) :: ea
302 real,
dimension(g_tracer_com%isd:,g_tracer_com%jsd:,:),
intent(in) :: eb
303 real,
intent(in) :: dt
304 real,
intent(in) :: kg_m2_to_H
306 real,
intent(in) :: m_to_H
308 integer,
intent(in) :: tau
309 logical,
intent(in),
optional :: mom
310 end subroutine g_tracer_vertdiff_g
The following type fields are common to ALL generic tracers and hence has to be instantiated only onc...
Reverse of interface g_tracer_set_values for getting the tracer member arrays in the argument value...
Set the values of various (array) members of the tracer node g_tracer_type.
g_tracer_utils module consists of core utility subroutines to be used by all generic tracer modules...
Each generic tracer node is an instant of a FORTRAN type with the following member variables...
Return the pointer to the requested field of a particular tracer.