WAVEWATCH III  beta 0.0.1
w3snl5md Module Reference

Interface module for GKE (resonant & quasi-resonant four-wave interactions). More...

Functions/Subroutines

subroutine, public w3snl5 (A, CG, WN, FMEAN, T1ABS, U10, UDIR, JSEA, S, D, KURT)
 Interface to CalcQRSNL subroutine of the GKE module. More...
 
subroutine, public insnl5
 Initialization for the GKE module (Prepare wavenumber grid & kernel coefficients). More...
 
logical function hasnan (NK, NTH, ARR2D)
 Check if the 2D array ARR2D contains NaN. More...
 

Detailed Description

Interface module for GKE (resonant & quasi-resonant four-wave interactions).

Author
O. Gramstad
Q. Liu
Date
07-Jun-2021

Function/Subroutine Documentation

◆ hasnan()

logical function w3snl5md::hasnan ( integer, intent(in)  NK,
integer, intent(in)  NTH,
real, dimension(nk, nth), intent(in)  ARR2D 
)

Check if the 2D array ARR2D contains NaN.

Parameters
NK
NTH
ARR2D
Returns
HasNaN
Author
Q. Liu
Date
25-Apr-2019

Definition at line 887 of file w3snl5md.F90.

887  !/
888  !/ +-----------------------------------+
889  !/ | WAVEWATCH III NOAA/NCEP |
890  !/ | Q. Liu |
891  !/ | FORTRAN 90 |
892  !/ | Last update : 25-Apr-2019 |
893  !/ +-----------------------------------+
894  !/
895  !/ 24-Apr-2019 : Origination. ( version 7.13 )
896  !/ ( Q. Liu )
897  !/
898  ! 1. Purpose :
899  ! Check if the 2D array `ARR2D` contains NaN (see also w3gsrumd.ftn)
900  !/
901  IMPLICIT NONE
902  !
903  INTEGER, INTENT(IN) :: NK, NTH ! # OF FREQ. & DIRC.
904  REAL, INTENT(IN) :: ARR2D(NK, NTH)
905  LOGICAL :: HasNaN
906  !/
907  hasnan = .true.
908  !
909  IF ( all(arr2d .GE. -huge(arr2d(1, 1))) .AND. &
910  all(arr2d .LE. huge(arr2d(1, 1))) ) THEN
911  hasnan = .false.
912  END IF
913  !
914  RETURN
915  !/

Referenced by w3snl5().

◆ insnl5()

subroutine, public w3snl5md::insnl5

Initialization for the GKE module (Prepare wavenumber grid & kernel coefficients).

Author
Q. Liu
Date
27-Feb-2019

Definition at line 435 of file w3snl5md.F90.

435  !/
436  !/ +-----------------------------------+
437  !/ | WAVEWATCH III NOAA/NCEP |
438  !/ | Q. Liu |
439  !/ | FORTRAN 90 |
440  !/ | Last update : 27-Feb-2019 |
441  !/ +-----------------------------------+
442  !/
443  !/ 27-Feb-2019 : Origination. ( version 7.13 )
444  !/ ( Q. Liu )
445  !/
446  ! 1. Purpose :
447  !
448  ! Initialization for the GKE module (Prepare wavenumber grid & kernel
449  ! coefficients)
450  !
451  ! 2. Method :
452  ! See subrs. PrepKGrid & PrepKernelIO of gkeModule.f90
453  !
454  ! 3. Parameters :
455  !
456  ! 4. Subroutines used :
457  ! ----------------------------------------------------------------
458  ! Name Type Module Description
459  ! ----------------------------------------------------------------
460  ! STRACE Subr. W3SERVMD Subroutine tracing.
461  ! PrepKernelIO Subr. gkeModule KGrid & Kernel Coeff.
462  !
463  ! 5. Called by :
464  ! ----------------------------------------------------------------
465  ! Name Type Module Description
466  ! ----------------------------------------------------------------
467  ! W3IOGR Subr. W3IOGRMD Model definition file management.
468  ! ----------------------------------------------------------------
469  !
470  ! 6. Error messages :
471  !
472  ! 7. Remarks :
473  !
474  ! 8. Structure :
475  !
476  ! See source code.
477  !
478  ! 9. Switches :
479  !
480  ! !/S Enable subroutine tracing.
481  !
482  ! 10. Source code :
483  !
484  !/ ------------------------------------------------------------------- /
485  USE w3gkemd, ONLY: qr_depth, qr_oml, qi_disc, qi_kev, qi_nnz, &
487  USE w3gdatmd, ONLY: nk, nth, sig, th, &
489  qi5ipl, qi5pmx
490  USE w3odatmd, ONLY: iaproc, napout, screen
491  USE w3servmd, ONLY: extcde
492 #ifdef W3_S
493  USE w3servmd, ONLY: strace
494 #endif
495  !/
496  IMPLICIT NONE
497  !/
498  !/ ------------------------------------------------------------------- /
499  !/ Parameter list
500  !/
501  !/
502  !/ ------------------------------------------------------------------- /
503  !/ Local parameters
504  !/
505 #ifdef W3_S
506  INTEGER, SAVE :: IENT = 0
507 #endif
508  !/
509  !/ ------------------------------------------------------------------- /
510  !/
511 #ifdef W3_S
512  CALL strace (ient, 'INSNL5')
513 #endif
514  !
515  ! Set important parameters for GKE module (QR[I]5DPT/OML/DIS/KEV are
516  ! defined in ww3_grid.inp, and QI5NNZ is not known yet)
517  qr_depth = qr5dpt
518  qr_oml = qr5oml
519  qi_disc = qi5dis
520  qi_kev = qi5kev
522  !
523  ! Prepare (kx, ky) grid & kernel coefficients
524  CALL prepkernelio(nk, nth, sig(1:nk), th, 'WRITE')
525  !
526  ! Store qi_NNZ to QI5NNZ (which will be used to initialize the
527  ! QC5INT0 array)
528  qi5nnz = qi_nnz
529  !
530  ! Q. Liu (TODO)
531  IF (iaproc .EQ. napout) THEN
532  WRITE(screen, '(A, F6.1)') " ⊚ → [WW3 SNL₅]: water depth : ", qr_depth
533  WRITE(screen, '(A, F7.2)') " ⊚ → [WW3 SNL₅]: ω λc cut off : ", qr_oml
534  WRITE(screen, '(A, I4)' ) " ⊚ → [WW3 SNL₅]: Discretiza. : ", qi_disc
535  WRITE(screen, '(A, I4)' ) " ⊚ → [WW3 SNL₅]: GKE version : ", qi_kev
536  WRITE(screen, '(A, I12)' ) " ⊚ → [WW3 SNL₅]: # of quartets : ", qi_nnz
537  WRITE(screen, '(A, I4)' ) " ⊚ → [WW3 SNL₅]: interpol. : ", qi_interp
538  WRITE(screen, '(A, I4)' ) " ⊚ → [WW3 SNL₅]: phase mixing : ", qi5pmx
539  END IF
540  !/
541  !/ End of INSNL5 ----------------------------------------------------- /
542  !/

References w3servmd::dist_sphere(), w3gdatmd::dsii, w3gdatmd::dth, w3gdatmd::ecos, w3gdatmd::esin, w3servmd::extcde(), file(), w3gdatmd::flagll, w3odatmd::iaproc, w3odatmd::iptint, w3gdatmd::mapfs, w3gdatmd::mapsta, w3odatmd::napout, w3gdatmd::nk, w3odatmd::nopts, w3gdatmd::nth, w3gkemd::prepkernelio(), w3odatmd::ptloc, w3odatmd::ptnme, w3gdatmd::qi5dis, w3gdatmd::qi5ipl, w3gdatmd::qi5kev, w3gdatmd::qi5nnz, w3gdatmd::qi5pmx, w3gkemd::qi_disc, w3gkemd::qi_interp, w3gkemd::qi_kev, w3gkemd::qi_nnz, w3gdatmd::qr5dpt, w3gdatmd::qr5oml, w3gkemd::qr_depth, w3gkemd::qr_oml, w3odatmd::screen, w3gdatmd::sig, w3servmd::strace(), w3gdatmd::th, constants::tpi, w3dispmd::wavnu1(), w3gdatmd::xgrd, and w3gdatmd::ygrd.

Referenced by w3iogrmd::w3iogr().

◆ w3snl5()

subroutine, public w3snl5md::w3snl5 ( real, dimension(nth, nk), intent(in)  A,
real, dimension(nk), intent(in)  CG,
real, dimension(nk), intent(in)  WN,
real, intent(in)  FMEAN,
integer, dimension(2), intent(in)  T1ABS,
real, intent(in)  U10,
real, intent(in)  UDIR,
integer, intent(in)  JSEA,
real, dimension(nth,nk), intent(out)  S,
real, dimension(nth,nk), intent(out)  D,
real, intent(out)  KURT 
)

Interface to CalcQRSNL subroutine of the GKE module.

Parameters
[in]A
[in]CG
[in]WN
[in]FMEAN
[in]T1ABS
[in]U10
[in]UDIR
[in]JSEA
[out]S
[out]D
[out]KURT
Author
O. Gramstad
Q. Liu
Date
24-Apr-2019

Definition at line 100 of file w3snl5md.F90.

100  !/
101  !/ +-----------------------------------+
102  !/ | WAVEWATCH III NOAA/NCEP |
103  !/ | O. Gramstad |
104  !/ | Q. Liu |
105  !/ | FORTRAN 90 |
106  !/ | Last update : 24-Apr-2019 |
107  !/ +-----------------------------------+
108  !/
109  !/ 24-Sep-2013 : Origination. ( version 3.14 )
110  !/ 24-Sep-2013 : GKE for resonant & quasi-resonant four-wave
111  !/ interactions ( O. Gramstad )
112  !/ 27-Feb-2019 : Full implementation of GKE ( version 7.13 )
113  !/ ( Q. Liu )
114  !/ 21-Apr-2019 : Phase mixing option ( version 7.13 )
115  !/ ( Q. Liu )
116  !/ 24-Apr-2019 : Phase mixing option (b_T) ( version 7.13 )
117  !/ ( Q. Liu )
118  !/ 02-May-2019 : Organize screen output & disable binary output
119  !/ ( version 7.13 )
120  !/ ( Q. Liu )
121  !/
122  !/
123  ! 1. Purpose :
124  !
125  ! Interface to CalcQRSNL subr. of the GKE module. Please refer to
126  ! -------------
127  ! gkeModule.f90 for further details.
128  ! -------------
129  !
130  ! ◆ Different times used in this module
131  !
132  ! |----o---------o----o--|-|--o-----o------o-----o------o----> (t)
133  ! ^ ^ ^ ^ ^ T1ABS (absol. current time step)¹
134  ! | | | |
135  ! | | | v t0 (relat. time, previous time step)
136  ! | |<------->|
137  ! | | PM_IVAL (phase mixing interval, relat. time)
138  ! | |
139  ! | v PM_PREV (phase mixing, appear quasi-periodically)
140  ! | (relat. time)
141  ! |
142  ! v TBEG (absol. begining time, defined by ww3_shel.inp)
143  !
144  ! ¹ Because of using the dynamic integration scheme, T1ABS
145  ! is related to, but not the same as, TIME in w3wdatmd.ftn
146  ! 2. Method :
147  !
148  ! 3. Parameters :
149  !
150  ! 4. Subroutines used :
151  !
152  ! Name Type Module Description
153  ! ----------------------------------------------------------------
154  ! STRACE Subr. W3SERVMD Subroutine tracing.
155  ! ----------------------------------------------------------------
156  !
157  ! 5. Called by :
158  !
159  ! Name Type Module Description
160  ! ----------------------------------------------------------------
161  ! W3SRCE Subr. W3SRCEMD Source term integration.
162  ! W3EXPO Subr. N/A Point output post-processor.
163  ! GXEXPO Subr. N/A GrADS point output post-processor.
164  ! ----------------------------------------------------------------
165  !
166  ! 6. Error messages :
167  !
168  ! None.
169  !
170  ! 7. Remarks :
171  !
172  ! 8. Structure :
173  !
174  ! See source code.
175  !
176  ! 9. Switches :
177  !
178  ! !/S Enable subroutine tracing.
179  !
180  ! 10. Source code :
181  !
182  !/ ------------------------------------------------------------------- /
183  USE constants, ONLY: grav, tpi
184  USE w3gkemd, ONLY: calcqrsnl, qr_depth
185  USE w3gdatmd, ONLY: nk, nth, nspec, sig, th, &
186  gtype, rlgtype, clgtype, &
188  USE w3wdatmd, ONLY: qi5tbeg, qr5tim0, qr5cvk0, qc5int0, &
189  qr5tmix
190  USE w3odatmd, ONLY: flout, nopts, tosnl5, tolast, &
192  USE w3parall, ONLY: init_get_isea
193  USE w3timemd, ONLY: dsec21
194  USE w3servmd, ONLY: extcde
195 #ifdef W3_S
196  USE w3servmd, ONLY: strace
197 #endif
198  !/
199  IMPLICIT NONE
200  !/
201  !/ ------------------------------------------------------------------- /
202  !/ Parameter list
203  !/
204  REAL, INTENT(IN) :: A(NTH, NK) ! N(θ, k)
205  REAL, INTENT(IN) :: CG(NK) ! Cg(k)
206  REAL, INTENT(IN) :: WN(NK) ! WN(k)
207  REAL, INTENT(IN) :: FMEAN ! 1/T_{0, -1}
208  INTEGER, INTENT(IN) :: T1ABS(2) ! Absol. t1
209  REAL, INTENT(IN) :: U10 ! Wind velocity
210  REAL, INTENT(IN) :: UDIR ! φ (in rad)
211  INTEGER, INTENT(IN) :: JSEA ! Local sea point count
212  REAL, INTENT(OUT) :: S(NTH,NK), & ! Snl
213  D(NTH,NK), & ! Dnl
214  KURT ! Kurtosis
215 
216  !/ ------------------------------------------------------------------- /
217  !/ Local parameters
218  REAL, PARAMETER :: BTLOW = 10., bthgh = 500.
219  REAL :: T0REL, T1REL, TDEL1, TDEL2
220  REAL :: Cvk1(NSPEC), SNL(NSPEC), DNL(NSPEC)
221  REAL :: Cvk0(NSPEC)
222  COMPLEX :: INPQR0(QI5NNZ)
223  INTEGER :: IK, ITH, ISPEC, ISEA, JLOC
224  INTEGER, ALLOCATABLE :: PDIFF(:)
225  LOGICAL, SAVE :: FSTOUT = .true.
226  REAL :: FACTOR(NK), A2(NK, NTH), S2(NK, NTH)
227  REAL :: PM_PREV, PM_IVAL, PM_DELT
228  REAL :: WBT, BTINV
229  INTEGER :: IUNT
230 #ifdef W3_S
231  INTEGER, SAVE :: IENT = 0
232 #endif
233 
234  !/
235  !/ ------------------------------------------------------------------- /
236  !/
237 #ifdef W3_S
238  CALL strace (ient, 'W3SNL5')
239 #endif
240  !
241  !/ ------------------------------------------------------------------- /
242  ! Read in wave info. @ the previous time step t0
243  ! Array initialization is done in w3wdat/w3setw (called by w3initmd)
244  t0rel = qr5tim0(jsea) ! t0 (nsea)
245  cvk0 = qr5cvk0(:, jsea) ! Cvk (ns, nsea) @ t0
246  inpqr0 = qc5int0(:, jsea) ! Inpqr (nnz, nsea) @ t0
247  !
248  ! Calc. Relative time for T1ABS (QI5TBEG as the reference)
249  t1rel = dsec21(qi5tbeg, t1abs) ! in second
250  !
251  ! W3WAVEMD: IF ( IT.EQ.0 ) DTG = 1 → T1REL = -1 (the first step of
252  ! integration; TIME = TCALC/TOFRST, DTG = 0 → 1, QI5TBEG = TIME - 1)
253  IF(t1rel < 0.) t1rel = 0.
254  !
255  ! Three options for phase mixing
256  IF (qi5pmx .EQ. 0) THEN
257  ! 1) 0: no phase mixing
258 #ifdef W3_TS
259  IF (iaproc .EQ. napout) &
260  WRITE(screen, '(A, 2(I10.8, I7.6), E12.3)') &
261  " ⊚ → [WW3 SNL₅] QI5TBEG, T1ABS, T1REL:", &
262  qi5tbeg, t1abs, t1rel
263 #endif
264  ELSE
265 #ifdef W3_TS
266  IF (iaproc .EQ. napout) &
267  WRITE(screen, '(A, 2(I10.8, I7.6), E12.3)', advance='no') &
268  " ⊚ → [WW3 SNL₅] QI5TBEG, T1ABS, T1REL, T1REL[P]:", &
269  qi5tbeg, t1abs, t1rel
270 #endif
271  !
272  ! Calc. Phase mixing interval
273  IF (qi5pmx .GT. 0) THEN
274  ! 2) N: mix phase by every N characteristic wave periods
275  IF (abs(fmean) < 1e-7) THEN ! FMEAN may be 0.
276  pm_ival = real(qi5pmx) * 1. ! then, assume FMEAN = 1.
277  ELSE
278  pm_ival = real(qi5pmx) * (1. / fmean)
279  END IF
280  !
281  ELSE IF (qi5pmx .LT. 0) THEN
282  ! 3) < 0: mix phase based on dominant wave breaking probability bT
283  ! Calc bT
284  wbt = calc_wbtv2(a, cg, wn, qr5dpt, u10, udir) ! [0, 1.]
285  ! Mix phase by every 1/bT periods
286  ! Odin used bT < 1/15. (0.066) → BTLOW = 15 and PM_IVAL > 150 s
287  btinv = max(btlow, min(1./max(1e-6, wbt), bthgh))
288  IF (abs(fmean) < 1e-7) THEN ! FMEAN may be 0.
289  pm_ival = btinv * 1. ! then, assume FMEAN = 1.
290  ELSE
291  pm_ival = btinv * (1. / fmean)
292  END IF
293  END IF
294  !
295  ! Previous phase mixing time (relat. to TBEG)
296  ! QR5TMIX has already been initialized in w3wdatmd as zero.
297  pm_prev = qr5tmix(jsea)
298  ! Update t1 if necessary
299  pm_delt = t1rel - pm_prev
300  IF (pm_delt .GE. pm_ival) THEN
301  qr5tmix(jsea) = t1rel ! relat. to TBEG → PM_PREV
302  t1rel = 0.
303  ELSE
304  t1rel = pm_delt
305  END IF
306 #ifdef W3_TS
307  IF (iaproc .EQ. napout) THEN
308  WRITE(screen, '(F9.1)') t1rel
309  IF (qi5pmx .LT. 0 ) WRITE(screen, '(A, F6.3)') '↔ bT: ', wbt
310  ENDIF
311 #endif
312  END IF
313  !
314  ! Calc. Cvk1 from A (C(\bm{k}) = g N(k, θ) / k)
315  DO ik = 1, nk
316  DO ith = 1, nth
317  ispec = ith + (ik-1) * nth
318  cvk1(ispec) = a(ith, ik) / wn(ik) * grav
319  END DO
320  END DO
321  !
322  ! CalcQRSNL(nk, nth, sig, th, t0, t1, Cvk0, Cvk1, Inpqr0, Snl, Dnl, Kurt)
323  ! Depth is needed for reading in kernels at the first run
324  qr_depth = qr5dpt
325  CALL calcqrsnl(nk, nth, sig(1:nk), th, &
326  t0rel, t1rel, cvk0, cvk1, &
327  inpqr0, snl, dnl, kurt)
328  !
329  ! Tranform back from C(k) to N(k)
330  ! TODO D(ITH, IK) (See NL2 for reference)
331  d = 0.0
332  DO ik = 1, nk
333  DO ith = 1, nth
334  ispec = ith + (ik-1) * nth
335  s(ith, ik) = snl(ispec) * wn(ik) / grav
336  END DO
337  END DO
338  !
339  ! Store wave info. @ t1 → t0
340  qr5tim0(jsea) = t0rel
341  qr5cvk0(:, jsea) = cvk0
342  qc5int0(:, jsea) = inpqr0
343  !
344  ! Point output (Snl term)
345  ! First ouput action (Find nearest grid points & generate binary files)
346  IF (fstout) THEN
347  CALL inpout
348  fstout = .false.
349  IF (iaproc .EQ. napout) THEN
350  WRITE(screen, *)
351  WRITE(screen, '(A)') &
352  ' ⊚ → [WW3 SNL₅] Point ouptut initialization'
353  WRITE(screen, '(A, I4)') &
354  ' ⊚ → [WW3 SNL₅] # of valid points: ', nsel
355  WRITE(screen, *)
356  END IF
357  END IF
358  !
359  ! Calc FACTOR used for Jacobian tranformation from N(k, θ) to E(f, θ)
360  factor = tpi / cg * sig(1:nk)
361  !
362  ! Regular grid & curvilinear grid
363  IF ( ((gtype .EQ. rlgtype) .OR. (gtype .EQ. clgtype)) &
364  .AND. flout(2) .AND. nsel .GT. 0) THEN
365  tdel1 = dsec21(t1abs, tosnl5)
366  tdel2 = dsec21(t1abs, tolast(:, 2)) ! not really useful since
367  ! TOSNL5 can never catch
368  ! TOLAST
369  ! Output time
370  IF (abs(tdel1) < 1e-6 .OR. abs(tdel2) < 1e-6) THEN
371  ! JSEA→ ISEA
372  CALL init_get_isea(isea, jsea)
373  ! Find the loc of ISEA at PSEA (nearest sea grid point)
374  IF (ALLOCATED(pdiff)) DEALLOCATE(pdiff); ALLOCATE(pdiff(nsel))
375  pdiff = abs(psea(1:nsel) - isea)
376  IF (any(pdiff .EQ. 0)) THEN
377  jloc = minloc(pdiff, 1)
378 #ifdef W3_TS
379  IF (iaproc .EQ. napout) &
380  WRITE(screen, '(3A, I10.8, I7.6)') &
381  '✓ Point output for |', pnms(jloc), '| @', t1abs
382 #endif
383 
384  ! N(θ, k) → F(f, θ) & S(θ, k) → S(f, θ)
385  DO ith = 1, nth
386  a2(:, ith) = a(ith, :) * factor
387  s2(:, ith) = s(ith, :) * factor
388  END DO
389  ! NaN Check
390  IF (hasnan(nk, nth, a2) .OR. hasnan(nk, nth, s2)) THEN
391  IF (iaproc .EQ. napout) &
392  WRITE(screen, *) '★★★ Warning: find NaN in E(f, θ) &
393  & or Snl(f, θ) !'
394  END IF
395  ! unit no.
396  iunt = 500 + jloc
397  ! Store data (binary)
398  ! OPEN(IUNT, FILE='NL5_'//trim(PNMS(JLOC))//'_src.bin', &
399  ! form='unformatted', convert=file_endian, ACCESS='stream', &
400  ! STATUS='old', POSITION='append', ACTION='write')
401  ! WRITE(IUNT) T1ABS
402  ! WRITE(IUNT) KURT
403  ! WRITE(IUNT) A2
404  ! WRITE(IUNT) S2
405  ! CLOSE(IUNT)
406  ! Store data (ascii)
407  OPEN(iunt, file='NL5_'//trim(pnms(jloc))//'_src.dat', &
408  form='formatted', status='old', &
409  position='append', action='write')
410  WRITE(iunt, '(I10.8, I7.6)') t1abs
411  WRITE(iunt, '(ES11.3)') kurt
412  WRITE(iunt, 113) a2
413  WRITE(iunt, 113) s2
414  CLOSE(iunt)
415  !
416  END IF
417  END IF
418  END IF
419  ! Format
420 113 FORMAT ((10es11.3))
421  !/
422  !/ End of W3SNL5 ----------------------------------------------------- /
423  !/

References w3gkemd::calcqrsnl(), w3gdatmd::clgtype, w3timemd::dsec21(), w3servmd::extcde(), file(), w3odatmd::flout, constants::grav, w3gdatmd::gtype, hasnan(), w3odatmd::iaproc, w3parall::init_get_isea(), w3odatmd::napout, w3gdatmd::nk, w3odatmd::nopts, w3gdatmd::nspec, w3gdatmd::nth, w3wdatmd::qc5int0, w3gdatmd::qi5nnz, w3gdatmd::qi5pmx, w3wdatmd::qi5tbeg, w3wdatmd::qr5cvk0, w3gdatmd::qr5dpt, w3wdatmd::qr5tim0, w3wdatmd::qr5tmix, w3gkemd::qr_depth, w3gdatmd::rlgtype, w3odatmd::screen, w3gdatmd::sig, w3servmd::strace(), w3gdatmd::th, w3odatmd::tolast, w3odatmd::tosnl5, and constants::tpi.

Referenced by w3srcemd::w3srce().

w3gdatmd::qr5oml
real, pointer qr5oml
Definition: w3gdatmd.F90:1371
w3gdatmd::nk
integer, pointer nk
Definition: w3gdatmd.F90:1230
w3wdatmd::qr5tim0
real, dimension(:), pointer qr5tim0
Definition: w3wdatmd.F90:180
w3timemd::dsec21
real function dsec21(TIME1, TIME2)
Definition: w3timemd.F90:333
w3odatmd::tosnl5
integer, dimension(:), pointer tosnl5
Definition: w3odatmd.F90:462
w3gdatmd::qi5ipl
integer, pointer qi5ipl
Definition: w3gdatmd.F90:1372
w3gdatmd::nspec
integer, pointer nspec
Definition: w3gdatmd.F90:1230
w3wdatmd
Define data structures to set up wave model dynamic data for several models simultaneously.
Definition: w3wdatmd.F90:18
w3odatmd::nopts
integer, pointer nopts
Definition: w3odatmd.F90:484
w3gdatmd::rlgtype
integer, parameter rlgtype
Definition: w3gdatmd.F90:624
w3gdatmd::sig
real, dimension(:), pointer sig
Definition: w3gdatmd.F90:1234
w3wdatmd::qc5int0
complex, dimension(:, :), pointer qc5int0
Definition: w3wdatmd.F90:181
w3gkemd::qr_depth
real, public qr_depth
Definition: w3gkemd.F90:165
w3odatmd::iaproc
integer, pointer iaproc
Definition: w3odatmd.F90:457
w3gdatmd::th
real, dimension(:), pointer th
Definition: w3gdatmd.F90:1234
scrip_timers::status
character(len=8), dimension(max_timers), save status
Definition: scrip_timers.f:63
w3wdatmd::qr5tmix
real, dimension(:), pointer qr5tmix
Definition: w3wdatmd.F90:180
w3gdatmd::clgtype
integer, parameter clgtype
Definition: w3gdatmd.F90:625
w3servmd
Definition: w3servmd.F90:3
w3wdatmd::qr5cvk0
real, dimension(:, :), pointer qr5cvk0
Definition: w3wdatmd.F90:180
w3gdatmd::nth
integer, pointer nth
Definition: w3gdatmd.F90:1230
w3gdatmd::qi5nnz
integer(kind=8), pointer qi5nnz
Definition: w3gdatmd.F90:1373
w3odatmd
Definition: w3odatmd.F90:3
w3gkemd::qi_kev
integer, public qi_kev
Definition: w3gkemd.F90:176
w3gkemd::qr_oml
real, public qr_oml
Definition: w3gkemd.F90:167
w3gkemd::prepkernelio
subroutine, public prepkernelio(nk, nth, sig, th, act)
Definition: w3gkemd.F90:1202
w3odatmd::screen
integer, pointer screen
Definition: w3odatmd.F90:456
w3odatmd::tolast
integer, dimension(:,:), pointer tolast
Definition: w3odatmd.F90:464
w3gkemd::qi_interp
integer, public qi_interp
Definition: w3gkemd.F90:180
file
file(STRINGS ${CMAKE_BINARY_DIR}/switch switch_strings) separate_arguments(switches UNIX_COMMAND $
Definition: CMakeLists.txt:3
w3wdatmd::qi5tbeg
integer, dimension(:), pointer qi5tbeg
Definition: w3wdatmd.F90:179
w3odatmd::flout
logical, dimension(:), pointer flout
Definition: w3odatmd.F90:468
constants::tpi
real, parameter tpi
TPI 2*Pi.
Definition: constants.F90:72
w3gkemd::qi_disc
integer, public qi_disc
Definition: w3gkemd.F90:172
w3servmd::strace
subroutine strace(IENT, SNAME)
Definition: w3servmd.F90:148
w3gdatmd::gtype
integer, pointer gtype
Definition: w3gdatmd.F90:1094
w3gdatmd::qi5kev
integer, pointer qi5kev
Definition: w3gdatmd.F90:1372
w3odatmd::napout
integer, pointer napout
Definition: w3odatmd.F90:457
constants
Define some much-used constants for global use (all defined as PARAMETER).
Definition: constants.F90:20
w3gdatmd::qi5dis
integer, pointer qi5dis
Definition: w3gdatmd.F90:1372
w3gdatmd
Definition: w3gdatmd.F90:16
w3servmd::extcde
subroutine extcde(IEXIT, UNIT, MSG, FILE, LINE, COMM)
Definition: w3servmd.F90:736
w3gdatmd::qi5pmx
integer, pointer qi5pmx
Definition: w3gdatmd.F90:1372
w3gkemd
Definition: w3gkemd.F90:3
w3gdatmd::qr5dpt
real, pointer qr5dpt
Definition: w3gdatmd.F90:1371
w3gkemd::calcqrsnl
subroutine, public calcqrsnl(nk, nth, sig, th, t0, t1, Cvk0, Cvk1, Inpqr0, Snl, Dnl, Kurt)
Definition: w3gkemd.F90:1625
w3timemd
Definition: w3timemd.F90:3
w3parall
Parallel routines for implicit solver.
Definition: w3parall.F90:22
w3gkemd::qi_nnz
integer(kind=8), public qi_nnz
Definition: w3gkemd.F90:209
constants::grav
real, parameter grav
GRAV Acc.
Definition: constants.F90:61
w3parall::init_get_isea
subroutine init_get_isea(ISEA, JSEA)
Set ISEA for all schemes.
Definition: w3parall.F90:1398