ROMS
Loading...
Searching...
No Matches
mod_floats Module Reference

Data Types

type  t_drifter
 

Functions/Subroutines

subroutine, public allocate_floats (ldrifter)
 
subroutine, public deallocate_floats (ng)
 

Variables

type(t_drifter), dimension(:), allocatable drifter
 
logical, dimension(:), allocatable fprint
 
integer, parameter itstr = 0
 
integer, parameter ixgrd = 1
 
integer, parameter iygrd = 2
 
integer, parameter izgrd = 3
 
integer, parameter iflon = 4
 
integer, parameter iflat = 5
 
integer, parameter idpth = 6
 
integer, parameter ixrhs = 7
 
integer, parameter iyrhs = 8
 
integer, parameter izrhs = 9
 
integer, parameter ifden = 10
 
integer, parameter ifakt = 11
 
integer, parameter ifdak = 12
 
integer, parameter i1ohz = 13
 
integer, parameter isizf = 14
 
integer, parameter ibrhs = 15
 
integer, parameter iswim = 16
 
integer, parameter iwbio = 17
 
integer, parameter iwsin = 18
 
integer, dimension(:), allocatable iftvar
 
integer, parameter flt_lagran = 1
 
integer, parameter flt_isobar = 2
 
integer, parameter flt_geopot = 3
 
integer flt_iseed
 
integer, dimension(:), allocatable frrec
 

Function/Subroutine Documentation

◆ allocate_floats()

subroutine, public mod_floats::allocate_floats ( logical, intent(in) ldrifter)

Definition at line 142 of file mod_floats.F.

143!
144!=======================================================================
145! !
146! This routine eihter allocates and initialize all variables in !
147! the DRIFTER structure (Ldrifter=.TRUE.) or other parameters in !
148! the module that are independent of Nfloats (Ldrifter=.FALSE.). !
149! !
150!=======================================================================
151!
152 USE mod_scalars
153!
154! Imported variable declarations.
155!
156 logical, intent(in) :: Ldrifter
157!
158! Local variable declarations.
159!
160 integer :: ng, i, ic, iflt
161
162 real(r8), parameter :: IniVal = 0.0_r8
163!
164!-----------------------------------------------------------------------
165! Allocate Langrangian drifters structure.
166!-----------------------------------------------------------------------
167!
168 IF (ldrifter) THEN
169
170 allocate ( drifter(ngrids) )
171!
172! Allocate variables.
173!
174 DO ng=1,ngrids
175 allocate ( drifter(ng) % bounded(nfloats(ng)) )
176 dmem(ng)=dmem(ng)+real(nfloats(ng),r8)
177
178# if defined SOLVE3D && defined FLOAT_STICKY
179 allocate ( drifter(ng) % stuck(nfloats(ng)) )
180 dmem(ng)=dmem(ng)+real(nfloats(ng),r8)
181# endif
182
183 allocate ( drifter(ng) % Findex(0:nfloats(ng)) )
184 dmem(ng)=dmem(ng)+real(nfloats(ng)+1,r8)
185
186 allocate ( drifter(ng) % Ftype(nfloats(ng)) )
187 dmem(ng)=dmem(ng)+real(nfloats(ng),r8)
188
189 allocate ( drifter(ng) % Flon(nfloats(ng)) )
190 dmem(ng)=dmem(ng)+real(nfloats(ng),r8)
191
192 allocate ( drifter(ng) % Flat(nfloats(ng)) )
193 dmem(ng)=dmem(ng)+real(nfloats(ng),r8)
194
195 allocate ( drifter(ng) % Fz0(nfloats(ng)) )
196 dmem(ng)=dmem(ng)+real(nfloats(ng),r8)
197
198 allocate ( drifter(ng) % Tinfo(0:izrhs,nfloats(ng)) )
199 dmem(ng)=dmem(ng)+real((izrhs+1)*nfloats(ng),r8)
200
201# if defined SOLVE3D && defined FLOAT_VWALK
202 allocate ( drifter(ng) % rwalk(nfloats(ng)) )
203 dmem(ng)=dmem(ng)+real(nfloats(ng),r8)
204# endif
205
206 allocate ( drifter(ng) % track(nfv(ng),0:nft,nfloats(ng)) )
207 dmem(ng)=dmem(ng)+real(nfv(ng)*(nft+1)*nfloats(ng),r8)
208 END DO
209 END IF
210!
211!-----------------------------------------------------------------------
212! Lagrangian drifters parameters.
213!-----------------------------------------------------------------------
214!
215 IF (.not.ldrifter) THEN
216 allocate ( fprint(ngrids) )
217 allocate ( frrec(ngrids) )
218
219# ifdef SOLVE3D
220 allocate ( iftvar(mt) )
221# endif
222 END IF
223!
224!-----------------------------------------------------------------------
225! Initialize Langrangian drifters structure.
226!-----------------------------------------------------------------------
227!
228 IF (ldrifter) THEN
229 DO ng=1,ngrids
230 drifter(ng) % Findex(0) = 0
231 DO iflt=1,nfloats(ng)
232 drifter(ng) % bounded(iflt) = .false.
233# if defined SOLVE3D && defined FLOAT_STICKY
234 drifter(ng) % stuck(iflt) = .false.
235# endif
236 drifter(ng) % Findex(iflt) = 0
237 drifter(ng) % Ftype(iflt) = 0
238 drifter(ng) % Flon(iflt) = inival
239 drifter(ng) % Flat(iflt) = inival
240 drifter(ng) % Fz0(iflt) = 0
241# if defined SOLVE3D && defined FLOAT_VWALK
242 drifter(ng) % rwalk = inival
243# endif
244 DO i=0,izrhs
245 drifter(ng) % Tinfo(i,iflt) = inival
246 END DO
247 DO i=1,nfv(ng)
248 drifter(ng) % track(i,0,iflt) = inival
249 drifter(ng) % track(i,1,iflt) = inival
250 drifter(ng) % track(i,2,iflt) = inival
251 drifter(ng) % track(i,3,iflt) = inival
252 drifter(ng) % track(i,4,iflt) = inival
253 END DO
254 END DO
255 END DO
256 END IF
257!
258!-----------------------------------------------------------------------
259! Initialize Langrangian drifters parameters.
260!-----------------------------------------------------------------------
261!
262 IF (.not.ldrifter) THEN
263# ifdef FLOAT_VWALK
264 flt_iseed=149876
265# endif
266 DO ng=1,ngrids
267 fprint(ng)=.true.
268 END DO
269
270# ifdef SOLVE3D
271!
272! Indices for tracer variables in the floats array track.
273!
274# ifdef FLOAT_OYSTER
275# ifdef FLOAT_VWALK
276 ic=18
277# else
278 ic=16
279# endif
280# else
281# ifdef FLOAT_VWALK
282 ic=12
283# else
284 ic=10
285# endif
286# endif
287 DO i=1,mt
288 ic=ic+1
289 iftvar(i)=ic
290 END DO
291# endif
292 END IF
293!
294 RETURN

References mod_param::dmem, drifter, flt_iseed, fprint, frrec, iftvar, izrhs, mod_param::mt, mod_param::nfloats, mod_param::nft, mod_param::nfv, and mod_param::ngrids.

Referenced by read_fltpar().

Here is the caller graph for this function:

◆ deallocate_floats()

subroutine, public mod_floats::deallocate_floats ( integer, intent(in) ng)

Definition at line 297 of file mod_floats.F.

298!
299!=======================================================================
300! !
301! This routine dealocates all variables in module for all nested !
302! grids. !
303! !
304!=======================================================================
305!
306 USE mod_param, ONLY : ngrids
307# ifdef SUBOBJECT_DEALLOCATION
308 USE destroy_mod, ONLY : destroy
309# endif
310!
311! Imported variable declarations.
312!
313 integer, intent(in) :: ng
314!
315! Local variable declarations.
316!
317 character (len=*), parameter :: MyFile = &
318 & __FILE__//", deallocate_floats"
319
320# ifdef SUBOBJECT_DEALLOCATION
321!
322!-----------------------------------------------------------------------
323! Deallocate each variable in the derived-type T_DRIFTER structure
324! separately.
325!-----------------------------------------------------------------------
326!
327 IF (.not.destroy(ng, drifter(ng)%bounded, myfile, &
328 & __line__, 'DRIFTER(ng)%bounded')) RETURN
329
330# if defined SOLVE3D && defined FLOAT_STICKY
331 IF (.not.destroy(ng, drifter(ng)%stuck, myfile, &
332 & __line__, 'DRIFTER(ng)%stuck')) RETURN
333# endif
334
335 IF (.not.destroy(ng, drifter(ng)%Findex, myfile, &
336 & __line__, 'DRIFTER(ng)%Findex')) RETURN
337
338 IF (.not.destroy(ng, drifter(ng)%Ftype, myfile, &
339 & __line__, 'DRIFTER(ng)%Ftype')) RETURN
340
341 IF (.not.destroy(ng, drifter(ng)%Flon, myfile, &
342 & __line__, 'DRIFTER(ng)%Flon')) RETURN
343
344 IF (.not.destroy(ng, drifter(ng)%Flat, myfile, &
345 & __line__, 'DRIFTER(ng)%Flat')) RETURN
346
347 IF (.not.destroy(ng, drifter(ng)%Fz0, myfile, &
348 & __line__, 'DRIFTER(ng)%Fz0')) RETURN
349
350 IF (.not.destroy(ng, drifter(ng)%Tinfo, myfile, &
351 & __line__, 'DRIFTER(ng)%Tinfo')) RETURN
352
353# if defined SOLVE3D && defined FLOAT_VWALK
354 IF (.not.destroy(ng, drifter(ng)%rwalk, myfile, &
355 & __line__, 'DRIFTER(ng)%rwalk')) RETURN
356# endif
357
358 IF (.not.destroy(ng, drifter(ng)%track, myfile, &
359 & __line__, 'DRIFTER(ng)%track')) RETURN
360# endif
361!
362!-----------------------------------------------------------------------
363! Deallocate T_DRIFTER structure.
364!-----------------------------------------------------------------------
365!
366 IF (ng.eq.ngrids) THEN
367 IF (allocated(drifter)) deallocate ( drifter )
368 END IF
369!
370!-----------------------------------------------------------------------
371! Deallocate other variables in module.
372!-----------------------------------------------------------------------
373!
374 IF (allocated(fprint)) deallocate ( fprint )
375
376 IF (allocated(frrec)) deallocate ( frrec )
377
378# ifdef SOLVE3D
379 IF (allocated(iftvar)) deallocate ( iftvar )
380# endif
381!
382 RETURN
integer ngrids
Definition mod_param.F:113

References drifter, fprint, frrec, iftvar, and mod_param::ngrids.

Variable Documentation

◆ drifter

◆ flt_geopot

integer, parameter mod_floats::flt_geopot = 3

Definition at line 127 of file mod_floats.F.

127 integer, parameter :: flt_Geopot = 3

Referenced by step_floats_mod::step_floats_tile().

◆ flt_iseed

integer mod_floats::flt_iseed

Definition at line 133 of file mod_floats.F.

133 integer :: flt_iseed

Referenced by allocate_floats().

◆ flt_isobar

integer, parameter mod_floats::flt_isobar = 2

Definition at line 126 of file mod_floats.F.

126 integer, parameter :: flt_Isobar = 2

Referenced by step_floats_mod::step_floats_tile().

◆ flt_lagran

integer, parameter mod_floats::flt_lagran = 1

Definition at line 125 of file mod_floats.F.

125 integer, parameter :: flt_Lagran = 1

Referenced by step_floats_mod::step_floats_tile().

◆ fprint

logical, dimension(:), allocatable mod_floats::fprint

Definition at line 76 of file mod_floats.F.

76 logical, allocatable :: Fprint(:)

Referenced by allocate_floats(), and deallocate_floats().

◆ frrec

integer, dimension(:), allocatable mod_floats::frrec

Definition at line 138 of file mod_floats.F.

138 integer, allocatable :: frrec(:)

Referenced by allocate_floats(), deallocate_floats(), def_floats_mod::def_floats_nf90(), def_floats_mod::def_floats_pio(), and output().

◆ i1ohz

integer, parameter mod_floats::i1ohz = 13

Definition at line 97 of file mod_floats.F.

97 integer, parameter :: i1oHz = 13 ! 1/Hz

Referenced by step_floats_mod::step_floats_tile(), and vwalk_floats_mod::vwalk_floats_tile().

◆ ibrhs

integer, parameter mod_floats::ibrhs = 15

Definition at line 99 of file mod_floats.F.

99 integer, parameter :: ibrhs = 15 ! behavior RHS

Referenced by biology_floats_mod::oyster_floats_tile().

◆ idpth

integer, parameter mod_floats::idpth = 6

◆ ifakt

integer, parameter mod_floats::ifakt = 11

Definition at line 92 of file mod_floats.F.

92 integer, parameter :: ifakt = 11 ! diffusivity, Akt

Referenced by vwalk_floats_mod::vwalk_floats_tile().

◆ ifdak

integer, parameter mod_floats::ifdak = 12

Definition at line 93 of file mod_floats.F.

93 integer, parameter :: ifdak = 12 ! d(Akt)/d(s)

Referenced by vwalk_floats_mod::vwalk_floats_tile().

◆ ifden

integer, parameter mod_floats::ifden = 10

Definition at line 90 of file mod_floats.F.

90 integer, parameter :: ifden = 10 ! density anomaly

Referenced by step_floats_mod::step_floats_tile(), wrt_floats_mod::wrt_floats_nf90(), and wrt_floats_mod::wrt_floats_pio().

◆ iflat

integer, parameter mod_floats::iflat = 5

Definition at line 85 of file mod_floats.F.

85 integer, parameter :: iflat = 5 ! latitude location

Referenced by step_floats_mod::step_floats_tile(), wrt_floats_mod::wrt_floats_nf90(), and wrt_floats_mod::wrt_floats_pio().

◆ iflon

integer, parameter mod_floats::iflon = 4

Definition at line 84 of file mod_floats.F.

84 integer, parameter :: iflon = 4 ! longitude location

Referenced by step_floats_mod::step_floats_tile(), wrt_floats_mod::wrt_floats_nf90(), and wrt_floats_mod::wrt_floats_pio().

◆ iftvar

integer, dimension(:), allocatable mod_floats::iftvar

◆ isizf

integer, parameter mod_floats::isizf = 14

Definition at line 98 of file mod_floats.F.

98 integer, parameter :: isizf = 14 ! larvae size (length)

Referenced by biology_floats_mod::oyster_floats_tile(), wrt_floats_mod::wrt_floats_nf90(), and wrt_floats_mod::wrt_floats_pio().

◆ iswim

integer, parameter mod_floats::iswim = 16

Definition at line 100 of file mod_floats.F.

100 integer, parameter :: iswim = 16 ! swimming time

Referenced by biology_floats_mod::oyster_floats_tile(), wrt_floats_mod::wrt_floats_nf90(), and wrt_floats_mod::wrt_floats_pio().

◆ itstr

integer, parameter mod_floats::itstr = 0

Definition at line 80 of file mod_floats.F.

80 integer, parameter :: itstr = 0 ! release time

Referenced by biology_floats_mod::oyster_floats_tile(), step_floats_mod::step_floats_tile(), and vwalk_floats_mod::vwalk_floats_tile().

◆ iwbio

integer, parameter mod_floats::iwbio = 17

◆ iwsin

integer, parameter mod_floats::iwsin = 18

Definition at line 102 of file mod_floats.F.

102 integer, parameter :: iwsin = 18 ! sinking velocity

Referenced by biology_floats_mod::oyster_floats_tile(), wrt_floats_mod::wrt_floats_nf90(), and wrt_floats_mod::wrt_floats_pio().

◆ ixgrd

◆ ixrhs

integer, parameter mod_floats::ixrhs = 7

Definition at line 87 of file mod_floats.F.

87 integer, parameter :: ixrhs = 7 ! x-slope

Referenced by def_floats_mod::def_floats_nf90(), def_floats_mod::def_floats_pio(), and step_floats_mod::step_floats_tile().

◆ iygrd

◆ iyrhs

integer, parameter mod_floats::iyrhs = 8

Definition at line 88 of file mod_floats.F.

88 integer, parameter :: iyrhs = 8 ! y-slope

Referenced by def_floats_mod::def_floats_nf90(), def_floats_mod::def_floats_pio(), and step_floats_mod::step_floats_tile().

◆ izgrd

◆ izrhs

integer, parameter mod_floats::izrhs = 9

Definition at line 89 of file mod_floats.F.

89 integer, parameter :: izrhs = 9 ! z-slope

Referenced by allocate_floats(), def_floats_mod::def_floats_nf90(), and def_floats_mod::def_floats_pio().