32 implicit none ;
private 34 #include <MOM_memory.h> 40 real,
dimension(:,:,:),
pointer :: p => null()
43 real,
dimension(:,:),
pointer :: p => null()
50 real,
allocatable,
dimension(:,:) :: &
51 sst, & !< The sea surface temperature in C.
52 sss, & !< The sea surface salinity in psu.
53 sfc_density, & !< The mixed layer density in kg m-3.
54 hml, & !< The mixed layer depth in m.
55 u, & !< The mixed layer zonal velocity in m s-1.
56 v, & !< The mixed layer meridional velocity in m s-1.
57 sea_lev, & !< The sea level in m. If a reduced surface gravity is
64 real,
pointer,
dimension(:,:) :: &
65 taux_shelf => null(), &
66 tauy_shelf => null(), &
75 internal_heat => null()
84 logical :: arrays_allocated = .false.
93 real,
pointer :: t(:,:,:) => null()
94 real,
pointer :: s(:,:,:) => null()
95 type(
eos_type),
pointer :: eqn_of_state => null()
103 real,
pointer,
dimension(:,:) :: &
108 salt_deficit => null(), &
112 tempxpme => null(), &
118 internal_heat => null()
129 real,
pointer,
dimension(:,:,:) :: &
130 u => null(), v => null(), h => null()
131 real,
pointer,
dimension(:,:,:) :: &
132 uh => null(), vh => null(), &
133 cau => null(), cav => null(), &
134 pfu => null(), pfv => null(), diffu => null(), diffv => null(), &
135 t => null(), s => null(), &
136 pbce => null(), u_accel_bt => null(), v_accel_bt => null(), &
137 u_av => null(), v_av => null(), u_prev => null(), v_prev => null()
145 real,
pointer :: diffu(:,:,:) => null()
146 real,
pointer :: diffv(:,:,:) => null()
147 real,
pointer :: cau(:,:,:) => null()
148 real,
pointer :: cav(:,:,:) => null()
149 real,
pointer :: pfu(:,:,:) => null()
150 real,
pointer :: pfv(:,:,:) => null()
151 real,
pointer :: du_dt_visc(:,:,:) => null()
152 real,
pointer :: dv_dt_visc(:,:,:) => null()
153 real,
pointer :: du_dt_dia(:,:,:) => null()
154 real,
pointer :: dv_dt_dia(:,:,:) => null()
155 real,
pointer :: du_other(:,:,:) => null()
156 real,
pointer :: dv_other(:,:,:) => null()
160 real,
pointer :: gradkeu(:,:,:) => null()
161 real,
pointer :: gradkev(:,:,:) => null()
162 real,
pointer :: rv_x_v(:,:,:) => null()
163 real,
pointer :: rv_x_u(:,:,:) => null()
172 real,
pointer :: uh(:,:,:) => null()
173 real,
pointer :: vh(:,:,:) => null()
174 real,
pointer :: uhgm(:,:,:) => null()
175 real,
pointer :: vhgm(:,:,:) => null()
178 real,
pointer :: diapyc_vel(:,:,:) => null()
187 real,
pointer,
dimension(:,:) :: &
188 bbl_thick_u => null(), &
190 bbl_thick_v => null(), &
192 kv_bbl_u => null(), &
194 kv_bbl_v => null(), &
196 ustar_bbl => null(), &
202 taux_shelf => null(), &
203 tauy_shelf => null(), &
204 tbl_thick_shelf_u => null(), &
206 tbl_thick_shelf_v => null(), &
208 kv_tbl_shelf_u => null(), &
210 kv_tbl_shelf_v => null(), &
212 nkml_visc_u => null(), &
219 nkml_visc_v => null(), &
222 real,
pointer,
dimension(:,:,:) :: &
227 kd_extra_t => null(), &
230 kd_extra_s => null(), &
248 real,
pointer,
dimension(:,:) :: &
275 real,
pointer,
dimension(:,:,:) :: &
278 type(group_pass_type) :: pass_polarity_bt, pass_fa_uv
288 logical,
optional,
intent(in) :: alloc_faces
290 integer :: isd, ied, jsd, jed, IsdB, IedB, JsdB, JedB
291 isd = g%isd ; ied = g%ied ; jsd = g%jsd ; jed = g%jed
292 isdb = g%IsdB ; iedb = g%IedB ; jsdb = g%JsdB ; jedb = g%JedB
294 if (
associated(bt_cont))
call mom_error(fatal, &
295 "alloc_BT_cont_type called with an associated BT_cont_type pointer.")
298 allocate(bt_cont%FA_u_WW(isdb:iedb,jsd:jed)) ; bt_cont%FA_u_WW(:,:) = 0.0
299 allocate(bt_cont%FA_u_W0(isdb:iedb,jsd:jed)) ; bt_cont%FA_u_W0(:,:) = 0.0
300 allocate(bt_cont%FA_u_E0(isdb:iedb,jsd:jed)) ; bt_cont%FA_u_E0(:,:) = 0.0
301 allocate(bt_cont%FA_u_EE(isdb:iedb,jsd:jed)) ; bt_cont%FA_u_EE(:,:) = 0.0
302 allocate(bt_cont%uBT_WW(isdb:iedb,jsd:jed)) ; bt_cont%uBT_WW(:,:) = 0.0
303 allocate(bt_cont%uBT_EE(isdb:iedb,jsd:jed)) ; bt_cont%uBT_EE(:,:) = 0.0
305 allocate(bt_cont%FA_v_SS(isd:ied,jsdb:jedb)) ; bt_cont%FA_v_SS(:,:) = 0.0
306 allocate(bt_cont%FA_v_S0(isd:ied,jsdb:jedb)) ; bt_cont%FA_v_S0(:,:) = 0.0
307 allocate(bt_cont%FA_v_N0(isd:ied,jsdb:jedb)) ; bt_cont%FA_v_N0(:,:) = 0.0
308 allocate(bt_cont%FA_v_NN(isd:ied,jsdb:jedb)) ; bt_cont%FA_v_NN(:,:) = 0.0
309 allocate(bt_cont%vBT_SS(isd:ied,jsdb:jedb)) ; bt_cont%vBT_SS(:,:) = 0.0
310 allocate(bt_cont%vBT_NN(isd:ied,jsdb:jedb)) ; bt_cont%vBT_NN(:,:) = 0.0
312 if (
present(alloc_faces))
then ;
if (alloc_faces)
then 313 allocate(bt_cont%h_u(isdb:iedb,jsd:jed,1:g%ke)) ; bt_cont%h_u(:,:,:) = 0.0
314 allocate(bt_cont%h_v(isd:ied,jsdb:jedb,1:g%ke)) ; bt_cont%h_v(:,:,:) = 0.0
323 if (.not.
associated(bt_cont))
return 325 deallocate(bt_cont%FA_u_WW) ;
deallocate(bt_cont%FA_u_W0)
326 deallocate(bt_cont%FA_u_E0) ;
deallocate(bt_cont%FA_u_EE)
327 deallocate(bt_cont%uBT_WW) ;
deallocate(bt_cont%uBT_EE)
329 deallocate(bt_cont%FA_v_SS) ;
deallocate(bt_cont%FA_v_S0)
330 deallocate(bt_cont%FA_v_N0) ;
deallocate(bt_cont%FA_v_NN)
331 deallocate(bt_cont%vBT_SS) ;
deallocate(bt_cont%vBT_NN)
333 if (
associated(bt_cont%h_u))
deallocate(bt_cont%h_u)
334 if (
associated(bt_cont%h_v))
deallocate(bt_cont%h_v)
343 character(len=*),
intent(in) :: mesg
354 integer :: is, ie, js, je, nz
355 is = g%isc ; ie = g%iec ; js = g%jsc ; je = g%jec ; nz = g%ke
360 if (
associated(tv%T)) &
361 call hchksum(tv%T, mesg//
" tv%T",g%HI)
362 if (
associated(tv%S)) &
363 call hchksum(tv%S, mesg//
" tv%S",g%HI)
364 if (
associated(tv%frazil)) &
365 call hchksum(tv%frazil, mesg//
" tv%frazil",g%HI)
366 if (
associated(tv%salt_deficit)) &
367 call hchksum(tv%salt_deficit, mesg//
" tv%salt_deficit",g%HI)
368 if (
associated(tv%TempxPmE)) &
369 call hchksum(tv%TempxPmE, mesg//
" tv%TempxPmE",g%HI)
The following structure contains pointers to various fields which may be used describe the surface st...
subroutine, public alloc_bt_cont_type(BT_cont, G, alloc_faces)
alloc_BT_cont_type allocates the arrays contained within a BT_cont_type and initializes them to 0...
Ocean grid type. See mom_grid for details.
subroutine, public mom_thermovar_chksum(mesg, tv, G)
MOM_thermovar_chksum does diagnostic checksums on various elements of a thermo_var_ptrs type for debu...
Provides the ocean grid type.
The vertvisc_type structure contains vertical viscosities, drag coefficients, and related fields...
This module contains I/O framework code.
The accel_diag_ptrs structure contains pointers to arrays with accelerations, which can later be used...
The BT_cont_type structure contains information about the summed layer transports and how they will v...
subroutine, public dealloc_bt_cont_type(BT_cont)
dealloc_BT_cont_type deallocates the arrays contained within a BT_cont_type.
The cont_diag_ptrs structure contains pointers to arrays with transports, which can later be used for...
The ocean_internal_state structure contains pointers to all of the prognostic variables allocated in ...
Provides subroutines for quantities specific to the equation of state.
Type for describing a variable, typically a tracer.
The MOM_domain_type contains information about the domain decompositoin.
The thermo_var_ptrs structure contains pointers to an assortment of thermodynamic fields that may be ...
subroutine, public get_domain_extent(Domain, isc, iec, jsc, jec, isd, ied, jsd, jed, isg, ieg, jsg, jeg, idg_offset, jdg_offset, symmetric, local_indexing, index_offset)
subroutine, public mom_error(level, message, all_print)
A control structure for the equation of state.