WAVEWATCH III  beta 0.0.1
w3iogrmd.F90
Go to the documentation of this file.
1 
8 
9 #include "w3macros.h"
10 !/ ------------------------------------------------------------------- /
20 MODULE w3iogrmd
21  !/
22  !/ +-----------------------------------+
23  !/ | WAVEWATCH III NOAA/NCEP |
24  !/ | H. L. Tolman |
25  !/ ! F. Ardhuin !
26  !/ | FORTRAN 90 |
27  !/ | Last update : 15-Apr-2020 |
28  !/ +-----------------------------------+
29  !/
30  !/ For updates see W3IOGR documentation.
31  !/
32  ! 1. Purpose :
33  !
34  ! Reading/writing of model definition file .
35  !
36  ! 2. Variables and types :
37  !
38  ! Name Type Scope Description
39  ! ----------------------------------------------------------------
40  ! VERGRD C*10 Private Model definition file version number.
41  ! IDSTR C*35 Private Model definition file ID string.
42  ! ----------------------------------------------------------------
43  !
44  ! 3. Subroutines and functions :
45  !
46  ! Name Type Scope Description
47  ! ----------------------------------------------------------------
48  ! W3IOGR Subr. Public Read/write model definition file.
49  ! ----------------------------------------------------------------
50  !
51  ! 4. Subroutines and functions used :
52  !
53  ! Name Type Module Description
54  ! ----------------------------------------------------------------
55  ! W3SETG Subr. W3GDATMD Point to data structure for spatial gr.
56  ! W3DIMX Subr. Id. Set up arrays for spatial grid.
57  ! W3DIMS Subr. Id. Set array dimensions for a spec. grid.
58  ! W3SETO Subr. W3ODATMD Point to data structure for spatial gr.
59  ! W3DMO5 Subr. Id. Set array dimensions.
60  ! INPTAB Subr. W3SRC2MD Fill interpolation tables for
61  ! dispersion relation.
62  ! DISTAB Subr. W3DISPMD Input coefficient lookup table.
63  ! INSNL1 Subr. W3SNL1MD Initialization of the DIA.
64  ! INSNL2 Subr. W3SNL2MD Initialization of WRT.
65  ! INSNL3 Subr. W3SNL3MD Initialization of GMD.
66  ! INSNL5 Subr. W3SNL5MD Initialization of GKE.
67  ! INSNLS Subr. W3SNLSMD Initialization of nonlinear `smoother'.
68  ! STRACE Subr. W3SERVMD Subroutine tracing.
69  ! EXTCDE Subr. W3SERVMD Abort program with exit code.
70  ! ----------------------------------------------------------------
71  !
72  ! 5. Remarks :
73  !
74  ! - Arrays allocated here on read or ing ww3_grid on write.
75  !
76  ! 6. Switches :
77  !
78  ! See subroutine.
79  !
80  ! 7. Source code :
81  !
82  !/ ------------------------------------------------------------------- /
83  ! module default
84  implicit none
85 
86  PUBLIC
87  !/
88  !/ Private parameter statements (ID strings)
89  !/
90  CHARACTER(LEN=10), PARAMETER, PRIVATE :: VERGRD = '2021-08-06'
91  CHARACTER(LEN=35), PARAMETER, PRIVATE :: &
92  IDSTR = 'WAVEWATCH III MODEL DEFINITION FILE'
93  !/
94  !/ Public variables
95  !/
96  !/
97 CONTAINS
98  !/ ------------------------------------------------------------------- /
114 
115  SUBROUTINE w3iogr ( INXOUT, NDSM, IMOD, FEXT &
116 #ifdef W3_ASCII
117  ,NDSA &
118 #endif
119  )
120  !/
121  !/ +-----------------------------------+
122  !/ | WAVEWATCH III NOAA/NCEP |
123  !/ | H. L. Tolman |
124  !/ ! F. Ardhuin !
125  !/ | FORTRAN 90 |
126  !/ | Last update : 19-Oct-2020 |
127  !/ +-----------------------------------+
128  !/
129  !/ 14-Jan-1999 : Distributed FORTRAN 77 version. ( version 1.18 )
130  !/ 04-Feb-2000 : Upgrade to FORTRAN 90 ( version 2.00 )
131  !/ Major changes to logistics.
132  !/ 14-Feb-2000 : Exact-NL added. ( version 2.01 )
133  !/ 09-Jan-2001 : Flat grid option. ( version 2.06 )
134  !/ 02-Feb-2001 : Exact-NL version 3.0 ( version 2.07 )
135  !/ 27-Feb-2001 : Third propagation scheme added. ( version 2.08 )
136  !/ 16-Mar-2001 : Fourth propagation scheme added. ( version 2.09 )
137  !/ 29-Mar-2001 : Sub-grid islands added. ( version 2.10 )
138  !/ 11-Jan-2002 : Sub-grid ice added. ( version 2.15 )
139  !/ 09-May-2002 : Switch clean up. ( version 2.21 )
140  !/ 27-Aug-2002 : Exact-NL version 4.0 ( version 2.22 )
141  !/ 26-Nov-2002 : Adding first VDIA and MDIA. ( version 3.01 )
142  !/ 01-Aug-2003 : Adding moving grid GSE correction. ( version 3.03 )
143  !/ 08-Mar-2004 : Multiple grid version. ( version 3.06 )
144  !/ 04-May-2005 : Change to MPI_COMM_WAVE. ( version 3.07 )
145  !/ 24-Jun-2005 : Add MAPST2 processing. ( version 3.07 )
146  !/ 09-Nov-2005 : Remove soft boundary options. ( version 3.08 )
147  !/ 23-Jun-2006 : Add W3SLN1 parameters. ( version 3.09 )
148  !/ 27-Jun-2006 : Adding file name preamble. ( version 3.09 )
149  !/ 25-Jul-2006 : Reorder for 'GRID' option to read ( version 3.10 )
150  !/ spectral data also.
151  !/ 28-Oct-2006 : Add partitioning pars. ( version 3.10 )
152  !/ 26-Mar-2007 : Add partitioning pars. ( version 3.11 )
153  !/ 16-Apr-2006 : Add Miche limiter pars. ( version 3.11 )
154  !/ 25-Apr-2007 : Adding Battjes-Janssen Sdb. ( version 3.11 )
155  !/ 09-Oct-2007 : Adding WAM cycle 4+ Sin and Sds. ( version 3.13 )
156  !/ 29-May-2009 : Preparing distribution version. ( version 3.14 )
157  !/ 30-Oct-2009 : Fix ndst arg in call to w3dmo5. ( version 3.14 )
158  !/ (T. J. Campbell, NRL)
159  !/ 30-Oct-2009 : Implement curvilinear grid type. ( version 3.14 )
160  !/ (W. E. Rogers & T. J. Campbell, NRL)
161  !/ 23-Dec-2009 : Addition of COU namelists ( version 3.14 )
162  !/ 31-Oct-2010 : Implement unstructured grids ( version 3.14 )
163  !/ (A. Roland and F. Ardhuin)
164  !/ 06-Dec-2010 : Change from GLOBAL (logical) to ICLOSE (integer) to
165  !/ specify index closure for a grid. ( version 3.14 )
166  !/ (T. J. Campbell, NRL)
167  !/ 12-Jun-2012 : Add /RTD option or rotated grid option.
168  !/ (Jian-Guo Li) ( version 4.06 )
169  !/ 13-Jul-2012 : Move GMD (SNL3) and nonlinear filter (SNLS)
170  !/ from 3.15 (HLT). ( version 4.08 )
171  !/ 12-Dec-2012 : Adding SMC grid. JG_Li ( version 4.08 )
172  !/ 19-Dec-2012 : Add NOSWLL to file. ( version 4.11 )
173  !/ 01-Jul-2013 : Document UQ / UNO switches in file ( version 4.12 )
174  !/ 10-Sep-2013 : Add IG1 parameters ( version 4.12 )
175  !/ 16-Sep-2013 : Add Arctic part in SMC grid. ( version 4.12 )
176  !/ 11-Nov-2013 : Make SMC and RTD grids compatible. ( version 4.13 )
177  !/ 06-Mar-2014 : Writes out a help message on error ( version 4.18 )
178  !/ 10-Mar-2014 : Add IC2 parameters ( version 5.01 )
179  !/ 29-May-2014 : Add IC3 parameters ( version 5.01 )
180  !/ 20-Aug-2016 : Add IOBPA ( version 5.12 )
181  !/ 08-Mar-2018 : Add FSWND for SMC grid. ( version 6.02 )
182  !/ 05-Jun-2018 : Add PDLIB/DEBUGINIT and implcit scheme parameters
183  !/ for unstructured grids ( version 6.04 )
184  !/ 27-Jul-2018 : Added PTMETH and PTFCUT parameters ( version 6.05 )
185  !/ (C. Bunney, UKMO)
186  !/ 18-Aug-2018 : S_{ice} IC5 (Q. Liu) ( version 6.06 )
187  !/ 26-Aug-2018 : UOST (Mentaschi et al. 2015, 2018) ( version 6.06 )
188  !/ 15-Apr-2020 : Adds optional opt-out for CFL on BC ( version 7.08 )
189  !/ 18-Jun-2020 : Adds 360-day calendar option ( version 7.08 )
190  !/ 19-Oct-2020 : Add AIRCMIN, AIRGB parameters ( version 7.08 )
191  !/ 07-07-2021 : S_{nl} GKE NL5 (Q. Liu) ( version 7.12 )
192  !/ 19-Jul-2021 : Momentum and air density support ( version 7.14 )
193  !/
194  !/ Copyright 2009-2013 National Weather Service (NWS),
195  !/ National Oceanic and Atmospheric Administration. All rights
196  !/ reserved. WAVEWATCH III is a trademark of the NWS.
197  !/ No unauthorized use without permission.
198  !/
199  ! 1. Purpose :
200  !
201  ! Reading and writing of the model definition file.
202  !
203  ! 2. Method :
204  !
205  ! The file is opened within the routine, the name is pre-defined
206  ! and the unit number is given in the parameter list. The model
207  ! definition file is written using UNFORMATTED write statements.
208  !
209  ! 3. Parameters :
210  !
211  ! Parameter list
212  ! ----------------------------------------------------------------
213  ! INXOUT C*(*) I Test string for read/write, valid are:
214  ! 'READ', 'WRITE' and 'GRID'.
215  ! NDSM Int. I File unit number.
216  ! NDSA Int. I File unit number. ascii
217  ! IMOD Int. I Model number for W3GDAT etc.
218  ! FEXT C*(*) I File extension to be used.
219  ! ----------------------------------------------------------------
220  !
221  ! 4. Subroutines used :
222  !
223  ! See above.
224  !
225  ! 5. Called by :
226  !
227  ! Name Type Module Description
228  ! ----------------------------------------------------------------
229  ! W3INIT Subr. W3INITMD Wave model initialization routine.
230  ! ...... Prog. N/A All WAVEWATCH III aux programs and
231  ! drivers.
232  ! ----------------------------------------------------------------
233  !
234  ! 6. Error messages :
235  !
236  ! Tests on INXOUT, file status and on array dimensions.
237  !
238  ! 7. Remarks :
239  !
240  ! - The model definition file has the pre-defined name
241  ! 'mod_def.FILEXT'.
242  !
243  ! 8. Structure :
244  !
245  ! See source code.
246  !
247  ! 9. Switches :
248  !
249  ! !/MPI MPI calls
250  !
251  ! !/LNn Select source terms
252  ! !/STn
253  ! !/NLn
254  ! !/BTn
255  ! !/DBn
256  ! !/TRn
257  ! !/BSn
258  ! !/XXn
259  !
260  ! !/S Enable subroutine tracing.
261  ! !/T Enable test output
262  !
263  ! 10. Source code :
264  !
265  !/ ------------------------------------------------------------------- /
266  use w3servmd, only : print_memcheck
267 
268  USE constants
269  USE w3gdatmd
270 #ifdef W3_MPI
271  USE w3adatmd, ONLY: mpi_comm_wave
272 #endif
273  USE w3odatmd
274 #ifdef W3_ST2
275  USE w3src2md, ONLY: inptab
276 #endif
277 #ifdef W3_ST3
278  USE w3src3md, ONLY: insin3
279 #endif
280 #ifdef W3_ST4
281  USE w3src4md, ONLY: insin4, taut, tauhft, tauhft2, &
282  delu, deltauw, delust, &
283  delalp, deltail, &
284  dikcumul
285 #endif
286 #ifdef W3_NL1
287  USE w3snl1md, ONLY: insnl1, insnlgqm
288 #endif
289 #ifdef W3_NL2
290  USE w3snl2md, ONLY: insnl2
291 #endif
292 #ifdef W3_NL3
293  USE w3snl3md, ONLY: insnl3
294 #endif
295 #ifdef W3_NL5
296  USE w3snl5md, ONLY: insnl5
297 #endif
298 #ifdef W3_NLS
299  USE w3snlsmd, ONLY: insnls
300 #endif
301 #ifdef W3_IS2
302  USE w3sis2md, ONLY: insis2
303 #endif
304  USE w3timemd, ONLY: caltype
305  USE w3servmd, ONLY: extcde
306 #ifdef W3_S
307  USE w3servmd, ONLY: strace
308 #endif
309  USE w3dispmd
310 #ifdef W3_UOST
311  USE w3uostmd, ONLY: uost_initgrid
312 #endif
313  !
314 #ifdef W3_MPI
315  include "mpif.h"
316 #endif
317  !/
318  !/ ------------------------------------------------------------------- /
319  !/ Parameter list
320  !/
321  INTEGER, INTENT(IN) :: NDSM
322  INTEGER, INTENT(IN), OPTIONAL :: IMOD
323  CHARACTER, INTENT(IN) :: INXOUT*(*)
324  CHARACTER, INTENT(IN), OPTIONAL :: FEXT*(*)
325 #ifdef W3_ASCII
326  INTEGER, INTENT(IN), OPTIONAL :: NDSA
327 #endif
328  !/
329  !/ ------------------------------------------------------------------- /
330  !/ Local parameters
331  !/
332  INTEGER :: IGRD, IERR, I, J, MTH, MK, ISEA, IX, IY
333  INTEGER :: IEXT, IPRE
334 #ifdef W3_ST4
335  INTEGER :: IK, ITH, IK2, ITH2
336 #endif
337  INTEGER, ALLOCATABLE :: MAPTMP(:,:)
338 #ifdef W3_MPI
339  INTEGER :: IERR_MPI, IP
340 #endif
341 #ifdef W3_S
342  INTEGER, SAVE :: IENT = 0
343 #endif
344 #ifdef W3_T
345  INTEGER :: K
346 #endif
347  LOGICAL :: WRITE, FLTEST = .false., testll, &
348  flsnl2 = .false.
349  LOGICAL, SAVE :: FLINP = .false. , fldisp = .false., &
350  flis = .false.
351  CHARACTER(LEN=10) :: VERTST
352  CHARACTER(LEN=13) :: TEMPXT
353  CHARACTER(LEN=30) :: TNAME0, TNAME1, TNAME2, TNAME3, &
354  TNAME4, TNAME5, TNAME6, &
355  TNAMEP, TNAMEG, TNAMEF, TNAMEI
356  CHARACTER(LEN=30) :: FNAME0, FNAME1, FNAME2, FNAME3, &
357  FNAME4, FNAME5, FNAME6, &
358  FNAMEP, FNAMEG, FNAMEF, FNAMEI
359  CHARACTER(LEN=35) :: IDTST
360  CHARACTER(LEN=60) :: MESSAGE(5)
361  LOGICAL :: GLOBAL
362 
363  REAL, ALLOCATABLE :: XGRD4(:,:), YGRD4(:,:)
364 
365  integer :: memunit
366  !/
367  !/ ------------------------------------------------------------------- /
368  !/
369  memunit = 740+iaproc
370 #ifdef W3_S
371  CALL strace (ient, 'W3IOGR')
372 #endif
373  !
374  call print_memcheck(memunit, 'memcheck_____:'//' WIOGR SECTION 1')
375 
376  message =(/ ' MOD DEF FILE WAS GENERATED WITH A DIFFERENT ', &
377  ' WW3 VERSION OR USING A DIFFERENT SWITCH FILE. ', &
378  ' MAKE SURE WW3_GRID IS COMPILED WITH SAME SWITCH', &
379  ' AS WW3_SHEL OR WW3_MULTI, RUN WW3_GRID AGAIN ', &
380  ' AND THEN TRY AGAIN THE PROGRAM YOU JUST USED. '/)
381  !
382  tnamef = '------------------------------'
383  tname0 = '------------------------------'
384  tname1 = '------------------------------'
385  tname2 = '------------------------------'
386  tname3 = '------------------------------'
387  tname4 = '------------------------------'
388  tname5 = '------------------------------'
389  tname6 = '------------------------------'
390  tnamep = '------------------------------'
391  tnameg = '------------------------------'
392  tnamei = '------------------------------'
393  !
394 #ifdef W3_FLX1
395  tnamef = 'Wu (1980) '
396 #endif
397 #ifdef W3_FLX2
398  tnamef = 'Tolman and Chalikov (1996) '
399 #endif
400 #ifdef W3_FLX3
401  tnamef = 'T and C(1996) with cap on Cd '
402 #endif
403 #ifdef W3_FLX4
404  tnamef = 'Hwang (2011) with cap on Cd '
405 #endif
406 #ifdef W3_FLX5
407  tnamef = 'Direct use of stress '
408 #endif
409 #ifdef W3_LN0
410  tname0 = 'Not defined '
411 #endif
412 #ifdef W3_LN1
413  tname0 = 'Cavaleri and M.-R. (1982) '
414 #endif
415 #ifdef W3_ST0
416  tname1 = 'Not defined '
417 #endif
418 #ifdef W3_ST1
419  tname1 = 'WAM cycles 1 through 3 '
420 #endif
421 #ifdef W3_ST2
422  tname1 = 'Tolman and Chalikov (1996) '
423 #endif
424 #ifdef W3_ST3
425  tname1 = 'WAM cycle 4+ '
426 #endif
427 #ifdef W3_ST4
428  tname1 = 'Ardhuin et al. (2009+) '
429 #endif
430 #ifdef W3_ST6
431  tname1 = 'BYDB input and dissipation '
432 #endif
433 #ifdef W3_NL0
434  tname2 = 'Not defined '
435 #endif
436 #ifdef W3_NL1
437  tname2 = 'Discrete Interaction Approx. '
438 #endif
439 #ifdef W3_NL2
440  tname2 = 'Exact nonlinear interactions '
441 #endif
442 #ifdef W3_NL3
443  tname2 = 'Generalized Multiple DIA '
444 #endif
445 #ifdef W3_NL4
446  tname2 = 'Two Scaled Approximation '
447 #endif
448 #ifdef W3_NL5
449  tname2 = 'Generalized Kinetic Equation '
450 #endif
451 #ifdef W3_BT0
452  tname3 = 'Not defined '
453 #endif
454 #ifdef W3_BT1
455  tname3 = 'JONSWAP '
456 #endif
457 #ifdef W3_BT4
458  tname3 = 'SHOWEX '
459 #endif
460 #ifdef W3_BT8
461  tname3 = 'Muddy Bed (D & L) '
462 #endif
463 #ifdef W3_IC1
464  tnamei = 'Ice sink term (uniform k_i) '
465 #endif
466 #ifdef W3_IC2
467  tnamei = 'Ice sink term (Lui et al) '
468 #endif
469 #ifdef W3_IC3
470  tnamei = 'Ice sink term (Wang and Shen) '
471 #endif
472 #ifdef W3_IC4
473  tnamei = 'Ice sink term (empirical) '
474 #endif
475 #ifdef W3_IC5
476  tnamei = 'Ice sink term (eff. medium) '
477 #endif
478 #ifdef W3_DB0
479  tname4 = 'Not defined '
480 #endif
481 #ifdef W3_DB1
482  tname4 = 'Battjes and Janssen (1978) '
483 #endif
484 #ifdef W3_TR0
485  tname5 = 'Not defined '
486 #endif
487 #ifdef W3_BS0
488  tname6 = 'Not defined '
489 #endif
490 #ifdef W3_PR0
491  tnamep = 'No propagation '
492 #endif
493 #ifdef W3_PR1
494  tnamep = 'First order upstream '
495 #endif
496 #ifdef W3_UQ
497  tnamep = '3rd order UQ scheme '
498 #endif
499 #ifdef W3_UNO
500  tnamep = '2nd order UNO scheme '
501 #endif
502 #ifdef W3_PR0
503  tnameg = 'No GSE aleviation '
504 #endif
505 #ifdef W3_PR1
506  tnameg = 'No GSE aleviation (1up prop) '
507 #endif
508 #ifdef W3_PR2
509  tnameg = 'Diffusion operator '
510 #endif
511 #ifdef W3_PR3
512  tnameg = 'Averaging operator '
513 #endif
514  !
515  fnamef = tnamef
516  fname0 = tname0
517  fname1 = tname1
518  fname2 = tname2
519  fname3 = tname3
520  fname4 = tname4
521  fname5 = tname5
522  fname6 = tname6
523  fnamep = tnamep
524  fnameg = tnameg
525  fnamei = tnamei
526  !
527 #ifdef W3_T
528  fltest = .true.
529 #endif
530 #ifdef W3_NL2
531  flsnl2 = .true.
532 #endif
533  !
534  ! test input parameters ---------------------------------------------- *
535  !
536  IF ( PRESENT(imod) ) THEN
537  igrd = imod
538  ELSE
539  igrd = 1
540  END IF
541  !
542  IF ( PRESENT(fext) ) THEN
543  tempxt = fext
544  ELSE
545  tempxt = 'ww3'
546  END IF
547  !
548  IF (inxout.NE.'READ' .AND. inxout.NE.'WRITE' &
549  .AND. inxout.NE.'GRID') THEN
550  IF ( iaproc .EQ. naperr ) WRITE (ndse,900) inxout
551  CALL extcde ( 1 )
552  END IF
553  !
554  WRITE = inxout .EQ. 'WRITE'
555  !
556 #ifdef W3_T
557  WRITE (ndst,9000) inxout, WRITE, ndsm, igrd, tempxt
558 #endif
559  !
560  CALL w3seto ( igrd, ndse, ndst )
561  CALL w3setg ( igrd, ndse, ndst )
562  filext = tempxt
563  call print_memcheck(memunit, 'memcheck_____:'//' WIOGR SECTION 2')
564  !
565  ! open file ---------------------------------------------------------- *
566  !
567  iext = len_trim(filext)
568  ipre = len_trim(fnmpre)
569  !
570  !AR: ADD DEBUGFLAG WRITE(*,*) 'FILE=', FNMPRE(:IPRE)//'mod_def.'//FILEXT(:IEXT)
571  IF ( WRITE ) THEN
572  OPEN (ndsm,file=fnmpre(:ipre)//'mod_def.'//filext(:iext), &
573  form='UNFORMATTED', convert=file_endian,err=800,iostat=ierr)
574 #ifdef W3_ASCII
575  OPEN (ndsa,file=fnmpre(:ipre)//'mod_def.'//filext(:iext)//'.txt', &
576  form='FORMATTED',err=800,iostat=ierr)
577 #endif
578  ELSE
579  OPEN (ndsm,file=fnmpre(:ipre)//'mod_def.'//filext(:iext), &
580  form='UNFORMATTED', convert=file_endian,status='OLD',err=800,iostat=ierr)
581  ENDIF
582  !
583  rewind( ndsm )
584  !
585  ! Dimensions and test information --------------------------------------
586  !
587  IF ( WRITE ) THEN
588  WRITE (ndsm) &
589  idstr, vergrd, nx, ny, nsea, nth, nk, &
590  nbi, nfbpo, gname, fname0, fname1, fname2, fname3, &
591  fname4, fname5, fname6, fnamep, fnameg, &
592  fnamef, fnamei
593 #ifdef W3_ASCII
594  WRITE (ndsa,*) &
595  'IDSTR, VERGRD, NX, NY, NSEA, NTH, NK, &
596  NBI, NFBPO, GNAME, FNAME0, FNAME1, FNAME2, FNAME3, &
597  FNAME4, FNAME5, FNAME6, FNAMEP, FNAMEG, &
598  FNAMEF, FNAMEI:', &
599  idstr, vergrd, nx, ny, nsea, nth, nk, &
600  nbi, nfbpo, gname, fname0, fname1, fname2, fname3, &
601  fname4, fname5, fname6, fnamep, fnameg, &
602  fnamef, fnamei
603 #endif
604  !
605 #ifdef W3_SMC
606  WRITE (ndsm) ncel, nufc, nvfc, nrlv, mrfct
607 #ifdef W3_ASCII
608  WRITE (ndsa,*) 'NCel, NUFc, NVFc, NRLv, MRFct:', &
609  ncel, nufc, nvfc, nrlv, mrfct
610 #endif
611  WRITE (ndsm) nglo, narc, nbgl, nbac, nbsmc
612 #ifdef W3_ASCII
613  WRITE (ndsa,*) 'NGLO, NARC, NBGL, NBAC, NBSMC:', &
614  nglo, narc, nbgl, nbac, nbsmc
615 #endif
616 #endif
617  !
618  WRITE (ndsm) &
619  (nbo(i),i=0,nfbpo), (nbo2(i),i=0,nfbpo)
620 #ifdef W3_ASCII
621  WRITE (ndsa,*) &
622  '(NBO(I),I=0,NFBPO), (NBO2(I),I=0,NFBPO):', &
623  (nbo(i),i=0,nfbpo), (nbo2(i),i=0,nfbpo)
624 #endif
625 #ifdef W3_T
626  WRITE (ndst,9001) idstr, vergrd, nx, ny, nsea, nth, nk, &
627  nbi, nfbpo, 9, gname, fname0, fname1, fname2, fname3, &
628  fname4, fname5, fname6, fnamep, fnameg, &
629  fnamef, fnamei
630  WRITE (ndst,9002) (nbo(i),i=0,nfbpo)
631  WRITE (ndst,9003) (nbo2(i),i=0,nfbpo)
632 #endif
633  ELSE
634  READ (ndsm,END=801,ERR=802,IOSTAT=IERR) &
635  idtst, vertst, nx, ny, nsea, mth, mk, &
636  nbi, nfbpo, gname, fname0, fname1, fname2, fname3, &
637  fname4, fname5, fname6, fnamep, fnameg, &
638  fnamef, fnamei
639  !
640 #ifdef W3_SMC
641  READ (ndsm,END=801,ERR=802,IOSTAT=IERR) &
642  ncel, nufc, nvfc, nrlv, mrfct
643  READ (ndsm,END=801,ERR=802,IOSTAT=IERR) &
644  nglo, narc, nbgl, nbac, nbsmc
645 #endif
646  !
647  nk = mk
648  nth = mth
649  nk2 = nk + 2
650  nspec = nk * nth
651 #ifdef W3_T
652  WRITE (ndst,9001) idstr, vergrd, nx, ny, nsea, nth, nk, &
653  nbi, nfbpo, 9, gname, fname0, fname1, fname2, fname3, &
654  fname4, fname5, fname6, fnamep, fnameg, &
655  fnamef, fnamei
656 #endif
657  !
658  IF ( idtst .NE. idstr ) THEN
659  IF ( iaproc .EQ. naperr ) &
660  WRITE (ndse,901) idtst, idstr
661  CALL extcde ( 10 )
662  END IF
663  IF ( vertst .NE. vergrd ) THEN
664  IF ( iaproc .EQ. naperr ) &
665  WRITE (ndse,902) vertst, vergrd
666  CALL extcde ( 11 )
667  END IF
668  IF ( nfbpo .GT. 9 ) THEN
669  IF ( iaproc .EQ. naperr ) &
670  WRITE (ndse,904) nfbpo, 9
671  CALL extcde ( 13 )
672  END IF
673  IF ( fname0 .NE. tname0 ) THEN
674  IF ( iaproc .EQ. naperr ) &
675  WRITE (ndse,905) 0, filext(:iext), fname0, tname0, &
676  message
677  CALL extcde ( 14 )
678  END IF
679  IF ( fname1 .NE. tname1 ) THEN
680  IF ( iaproc .EQ. naperr ) &
681  WRITE (ndse,905) 1, filext(:iext), fname1, tname1, &
682  message
683  CALL extcde ( 15 )
684  END IF
685  IF ( fname2 .NE. tname2 ) THEN
686  IF ( iaproc .EQ. naperr ) &
687  WRITE (ndse,905) 2, filext(:iext), fname2, tname2, &
688  message
689  CALL extcde ( 16 )
690  END IF
691  IF ( fname3 .NE. tname3 ) THEN
692  IF ( iaproc .EQ. naperr ) &
693  WRITE (ndse,905) 3, filext(:iext), fname3, tname3, &
694  message
695  CALL extcde ( 17 )
696  END IF
697  IF ( fnamei .NE. tnamei ) THEN
698  IF ( iaproc .EQ. naperr ) &
699  WRITE (ndse,905) 3, filext(:iext), fnamei, tnamei, &
700  message
701  CALL extcde ( 17 )
702  END IF
703  IF ( fname4 .NE. tname4 ) THEN
704  IF ( iaproc .EQ. naperr ) &
705  WRITE (ndse,905) 4, filext(:iext), fname4, tname4, &
706  message
707  CALL extcde ( 18 )
708  END IF
709  IF ( fname5 .NE. tname5 ) THEN
710  IF ( iaproc .EQ. naperr ) &
711  WRITE (ndse,905) 5, filext(:iext), fname5, tname5, &
712  message
713  CALL extcde ( 19 )
714  END IF
715  IF ( fname6 .NE. tname6 ) THEN
716  IF ( iaproc .EQ. naperr ) &
717  WRITE (ndse,905) 6, filext(:iext), fname6, tname6, &
718  message
719  CALL extcde ( 20 )
720  END IF
721  IF ( fnamep .NE. tnamep ) THEN
722  IF ( iaproc .EQ. naperr ) &
723  WRITE (ndse,906) fnamep, tnamep
724  CALL extcde ( 22 )
725  END IF
726  IF ( fnameg .NE. tnameg ) THEN
727  IF ( iaproc .EQ. naperr ) &
728  WRITE (ndse,907) fnameg, tnameg, message
729  CALL extcde ( 22 )
730  END IF
731  IF ( fnamef .NE. tnamef ) THEN
732  IF ( iaproc .EQ. naperr ) &
733  WRITE (ndse,908) filext(:iext), fnamef, tnamef, message
734  CALL extcde ( 24 )
735  END IF
736  !
737  READ (ndsm,END=801,ERR=802,IOSTAT=IERR) &
738  (nbo(i),i=0,nfbpo), (nbo2(i),i=0,nfbpo)
739 #ifdef W3_T
740  WRITE (ndst,9002) (nbo(i),i=0,nfbpo)
741  WRITE (ndst,9003) (nbo2(i),i=0,nfbpo)
742 #endif
743  !
744  ENDIF
745  call print_memcheck(memunit, 'memcheck_____:'//' WIOGR SECTION 3')
746  !
747  ! Parameters in modules --------------------------------------------- *
748  ! Module W3GDAT GRID
749  !
750  ALLOCATE ( maptmp(ny,nx) )
751  !
752  IF ( WRITE ) THEN
753  maptmp = mapsta + 8*mapst2
754  WRITE (ndsm) &
755  gtype, flagll, iclose
756 #ifdef W3_ASCII
757  WRITE (ndsa,*) &
758  'GTYPE, FLAGLL, ICLOSE:', &
759  gtype, flagll, iclose
760 #endif
761  !
762  ! Writes different kind of information depending on grid type
763  !
764  SELECT CASE ( gtype )
765  !!Li SMCTYPE shares info with RLGTYPE. JGLi12Oct2020
766  CASE ( rlgtype, smctype )
767  WRITE (ndsm) &
768  sx, sy, x0, y0
769 #ifdef W3_ASCII
770  WRITE (ndsa,*) &
771  'SX, SY, X0, Y0:', &
772  sx, sy, x0, y0
773 #endif
774  CASE ( clgtype )
775  WRITE (ndsm) &
776  REAL(XGRD), REAL(YGRD)
777 #ifdef W3_ASCII
778  WRITE (ndsa,*) &
779  'REAL(XGRD), REAL(YGRD):', &
780  REAL(XGRD), REAL(YGRD)
781 #endif
782  CASE (ungtype)
783  WRITE (ndsm) &
784  fsn, fspsi,fsfct,fsnimp,fstotalimp,fstotalexp, &
785  fsbccfl, fsrefraction, fsfreqshift, fssource, &
786  do_change_wlv, solverthr_stp, crit_dep_stp, &
787  ntri,countot, countri, nnz, &
788  b_jgs_terminate_maxiter, &
789  b_jgs_terminate_difference, &
790  b_jgs_terminate_norm, &
791  b_jgs_limiter, &
792  b_jgs_block_gauss_seidel, &
793  b_jgs_use_jacobi, &
794  b_jgs_maxiter, &
795  b_jgs_pmin, &
796  b_jgs_diff_thr, &
797  b_jgs_norm_thr, &
798  b_jgs_nlevel, &
799  b_jgs_source_nonlinear
800 #ifdef W3_ASCII
801  WRITE (ndsa,*) &
802  'FSN, FSPSI,FSFCT,FSNIMP,FSTOTALIMP,FSTOTALEXP, &
803  FSBCCFL, FSREFRACTION, FSFREQSHIFT, FSSOURCE, &
804  DO_CHANGE_WLV, SOLVERTHR_STP, CRIT_DEP_STP, &
805  NTRI,COUNTOT, COUNTRI, NNZ, &
806  B_JGS_TERMINATE_MAXITER, &
807  B_JGS_TERMINATE_DIFFERENCE, &
808  B_JGS_TERMINATE_NORM, &
809  B_JGS_LIMITER, &
810  B_JGS_BLOCK_GAUSS_SEIDEL, &
811  B_JGS_USE_JACOBI, &
812  B_JGS_MAXITER, &
813  B_JGS_PMIN, &
814  B_JGS_DIFF_THR, &
815  B_JGS_NORM_THR, &
816  B_JGS_NLEVEL, &
817  B_JGS_SOURCE_NONLINEAR:', &
818  fsn, fspsi,fsfct,fsnimp,fstotalimp,fstotalexp, &
819  fsbccfl, fsrefraction, fsfreqshift, fssource, &
820  do_change_wlv, solverthr_stp, crit_dep_stp, &
821  ntri,countot, countri, nnz, &
822  b_jgs_terminate_maxiter, &
823  b_jgs_terminate_difference, &
824  b_jgs_terminate_norm, &
825  b_jgs_limiter, &
826  b_jgs_block_gauss_seidel, &
827  b_jgs_use_jacobi, &
828  b_jgs_maxiter, &
829  b_jgs_pmin, &
830  b_jgs_diff_thr, &
831  b_jgs_norm_thr, &
832  b_jgs_nlevel, &
833  b_jgs_source_nonlinear
834 #endif
835  !Init COUNTCON and IOBDP to zero, it needs to be set somewhere or
836  !removed
837  countcon=0
838  iobdp=0
839  WRITE (ndsm) &
840  x0, y0, sx, sy, dxymax, xgrd, ygrd, trigp, tria, &
841  len, ien, angle0, angle, si, maxx, maxy, &
842  dxymax, index_cell, ccon, countcon, ie_cell, &
843  pos_cell, iobp, iobpa, iobdp, iobpd, iaa, jaa, posi
844 #ifdef W3_ASCII
845  WRITE (ndsa,*) &
846  'X0, Y0, SX, SY, DXYMAX, XGRD, YGRD, TRIGP, TRIA, &
847  LEN, IEN, ANGLE0, ANGLE, SI, MAXX, MAXY, &
848  DXYMAX, INDEX_CELL, CCON, COUNTCON, IE_CELL, &
849  POS_CELL, IOBP, IOBPA, IOBDP, IOBPD, IAA, JAA, POSI:', &
850  x0, y0, sx, sy, dxymax, xgrd, ygrd, trigp, tria, &
851  len, ien, angle0, angle, si, maxx, maxy, &
852  dxymax, index_cell, ccon, countcon, ie_cell, &
853  pos_cell, iobp, iobpa, iobdp, iobpd, iaa, jaa, posi
854 #endif
855  END SELECT !GTYPE
856  !
857  WRITE (ndsm) &
858  zb, maptmp, mapfs, mapsf, trflag
859 #ifdef W3_ASCII
860  WRITE (ndsa,*) &
861  'ZB, MAPTMP, MAPFS, MAPSF, TRFLAG:', &
862  zb, maptmp, mapfs, mapsf, trflag
863 #endif
864  !
865 #ifdef W3_SMC
866  IF( gtype .EQ. smctype ) THEN
867  WRITE (ndsm) nlvcel, nlvufc, nlvvfc
868  WRITE (ndsm) ijkcel, ijkufc, ijkvfc, ismcbp
869  WRITE (ndsm) iclbac
870  WRITE (ndsm) angarc
871  WRITE (ndsm) ctrnx, ctrny, clatf
872 #ifdef W3_ASCII
873  WRITE (ndsa,*) 'NLvCel, NLvUFc, NLvVFc:', &
874  nlvcel, nlvufc, nlvvfc
875  WRITE (ndsa,*) 'IJKCel, IJKUFc, IJKVFc, ISMCBP:', &
876  ijkcel, ijkufc, ijkvfc, ismcbp
877  WRITE (ndsa,*) 'ICLBAC:', &
878  iclbac
879  WRITE (ndsa,*) 'ANGARC:', &
880  angarc
881  WRITE (ndsa,*) 'CTRNX, CTRNY, CLATF:', &
882  ctrnx, ctrny, clatf
883 #endif
884  IF ( fltest ) THEN
885  WRITE (ndse,"(' NRLv, MRFct and NBSMC values are',3I9)") nrlv, mrfct, nbsmc
886  WRITE (ndse,"(' IJKCel, IJKUFc, IJKVFc Write for',3I9)") ncel, nufc, nvfc
887  WRITE (ndse,"(' CTRNXY transparency write for 2x', I9)") ncel
888  ENDIF
889  ENDIF
890 #endif
891  !
892  IF ( trflag .NE. 0 ) WRITE (ndsm) trnx, trny
893 #ifdef W3_ASCII
894  IF ( trflag .NE. 0 ) WRITE (ndsa,*) 'TRNX, TRNY:', trnx, trny
895 #endif
896  WRITE (ndsm) &
897  dtcfl, dtcfli, dtmax, dtmin, dmin, ctmax, &
898  fice0, ficen, ficel, pfmove, fldry, flcx, flcy, flcth, &
899  flck, flsou, flbpi, flbpo, clats, clatis, cthg0s, &
900  stexu, steyu, stedu, iicehmin, iicehinit, iicedisp, &
901  icescales(1:4), caltype, cmprtrck, iicehfac, iicehdisp,&
902  iiceddisp, iicefdisp, btbeta, &
903  aaircmin, aairgb
904 #ifdef W3_ASCII
905  WRITE (ndsa,*) &
906  'DTCFL, DTCFLI, DTMAX, DTMIN, DMIN, CTMAX, &
907  FICE0, FICEN, FICEL, PFMOVE, FLDRY, FLCX, FLCY, FLCTH, &
908  FLCK, FLSOU, FLBPI, FLBPO, CLATS, CLATIS, CTHG0S, &
909  STEXU, STEYU, STEDU, IICEHMIN, IICEHINIT, IICEDISP, &
910  ICESCALES(1:4), CALTYPE, CMPRTRCK, IICEHFAC, IICEHDISP,&
911  IICEDDISP, IICEFDISP, BTBETA, &
912  AAIRCMIN, AAIRGB:', &
913  dtcfl, dtcfli, dtmax, dtmin, dmin, ctmax, &
914  fice0, ficen, ficel, pfmove, fldry, flcx, flcy, flcth, &
915  flck, flsou, flbpi, flbpo, clats, clatis, cthg0s, &
916  stexu, steyu, stedu, iicehmin, iicehinit, iicedisp, &
917  icescales(1:4), caltype, cmprtrck, iicehfac, iicehdisp,&
918  iiceddisp, iicefdisp, btbeta, &
919  aaircmin, aairgb
920 #endif
921 
922  WRITE(ndsm)gridshift
923 #ifdef W3_ASCII
924  WRITE(ndsa,*)'GRIDSHIFT:', &
925  gridshift
926 #endif
927 #ifdef W3_SEC1
928  WRITE (ndsm) nitersec1
929 #ifdef W3_ASCII
930  WRITE (ndsa,*) 'NITERSEC1:', &
931  nitersec1
932 #endif
933 #endif
934 #ifdef W3_RTD
935  !! Add rotated Polat/lon and AnglD to mod_def JGLi12Jun2012
936  WRITE (ndsm) polat, polon, angld, flagunr
937 #ifdef W3_ASCII
938  WRITE (ndsa,*) 'PoLat, PoLon, AnglD, FLAGUNR:', &
939  polat, polon, angld, flagunr
940 #endif
941 
942 #endif
943  !! WRITE(NDSM) &
944  !! COUG_2D, COUG_RAD3D, COUG_US3D
945  ELSE
946  call print_memcheck(memunit, 'memcheck_____:'//' WIOGR SECTION 4')
947 
948  READ (ndsm,END=801,ERR=802,IOSTAT=IERR) &
949  gtype, flagll, iclose
950  !!Li IF (.NOT.GINIT) CALL W3DIMX ( IGRD, NX, NY, NSEA, NDSE, NDST )
951  IF (.NOT.ginit) CALL w3dimx ( igrd, nx, ny, nsea, ndse, ndst &
952 #ifdef W3_SMC
953  , ncel, nufc, nvfc, nrlv, nbsmc &
954  , narc, nbac, nspec &
955 #endif
956  )
957  !
958  ! Reads different kind of information depending on grid type
959  !
960  SELECT CASE ( gtype )
961  !!Li SMCTYPE shares info with RLGTYPE. JGLi12Oct2020
962  CASE ( rlgtype, smctype )
963  READ (ndsm,END=801,ERR=802,IOSTAT=IERR) &
964  sx, sy, x0, y0
965  DO ix=1,nx
966  xgrd(:,ix) = real(x0 + real(ix-1)*sx)
967  END DO
968  DO iy=1,ny
969  ygrd(iy,:) = real(y0 + real(iy-1)*sy)
970  END DO
971  CASE ( clgtype )
972  ALLOCATE(xgrd4(ny,nx),ygrd4(ny,nx)); xgrd4 = 0.; ygrd4 = 0.
973  READ (ndsm,END=801,ERR=802,IOSTAT=IERR) &
974  xgrd4, ygrd4
975  xgrd = xgrd4
976  ygrd = ygrd4
977  DEALLOCATE(xgrd4, ygrd4)
978  !Set SX, SY, X0, Y0 to large values if curvilinear grid
979  x0 = huge(x0); y0 = huge(y0)
980  sx = huge(sx); sy = huge(sy)
981  CASE (ungtype)
982  READ (ndsm,END=801,ERR=802,IOSTAT=IERR) &
983  fsn, fspsi,fsfct,fsnimp,fstotalimp,fstotalexp, &
984  fsbccfl, fsrefraction, fsfreqshift, fssource, &
985  do_change_wlv, solverthr_stp, crit_dep_stp, &
986  ntri,countot, countri, nnz, &
987  b_jgs_terminate_maxiter, &
988  b_jgs_terminate_difference, &
989  b_jgs_terminate_norm, &
990  b_jgs_limiter, &
991  b_jgs_block_gauss_seidel, &
992  b_jgs_use_jacobi, &
993  b_jgs_maxiter, &
994  b_jgs_pmin, &
995  b_jgs_diff_thr, &
996  b_jgs_norm_thr, &
997  b_jgs_nlevel, &
998  b_jgs_source_nonlinear
999  IF (.NOT. guginit) THEN
1000  CALL w3dimug ( igrd, ntri, nx, countot, nnz, ndse, ndst )
1001  END IF
1002  call print_memcheck(memunit, 'memcheck_____:'//' WIOGR SECTION 5')
1003 
1004  READ (ndsm,END=801,ERR=802,IOSTAT=IERR) &
1005  x0, y0, sx, sy, dxymax, xgrd, ygrd, trigp, tria, &
1006  len, ien, angle0, angle, si, maxx, maxy, &
1007  dxymax, index_cell, ccon, countcon, ie_cell, &
1008  pos_cell, iobp, iobpa, iobdp, iobpd, iaa, jaa, posi
1009  call print_memcheck(memunit, 'memcheck_____:'//' WIOGR SECTION 6')
1010 
1011  END SELECT !GTYPE
1012  !
1013  IF (gtype.NE.ungtype) CALL w3gntx ( igrd, ndse, ndst )
1014  READ (ndsm,END=801,ERR=802,IOSTAT=IERR) &
1015  zb, maptmp, mapfs, mapsf, trflag
1016  !
1017 #ifdef W3_SMC
1018  IF( gtype .EQ. smctype ) THEN
1019  READ (ndsm,END=801,ERR=802,IOSTAT=IERR) &
1020  nlvcel, nlvufc, nlvvfc
1021  READ (ndsm,END=801,ERR=802,IOSTAT=IERR) &
1022  ijkcel, ijkufc, ijkvfc, ismcbp
1023  DO j=lbound(ijkcel,2), ubound(ijkcel,2)
1024  ijkcel3(j) = ijkcel(3,j)
1025  ijkcel4(j) = ijkcel(4,j)
1026  END DO
1027  DO j=lbound(ijkvfc,2), ubound(ijkvfc,2)
1028  ijkvfc5(j) = ijkvfc(5,j)
1029  ijkvfc6(j) = ijkvfc(6,j)
1030  END DO
1031  DO j=lbound(ijkufc,2), ubound(ijkufc,2)
1032  ijkufc5(j) = ijkufc(5,j)
1033  ijkufc6(j) = ijkufc(6,j)
1034  END DO
1035  READ (ndsm,END=801,ERR=802,IOSTAT=IERR) &
1036  iclbac
1037  READ (ndsm,END=801,ERR=802,IOSTAT=IERR) &
1038  angarc
1039  READ (ndsm,END=801,ERR=802,IOSTAT=IERR) &
1040  ctrnx, ctrny, clatf
1041  ENDIF
1042 #endif
1043  !
1044  mapsta = mod(maptmp+2,8) - 2
1045  mapst2 = (maptmp-mapsta) / 8
1046  mapsf(:,3) = mapsf(:,2) + (mapsf(:,1)-1)*ny
1047  IF ( trflag .NE. 0 ) THEN
1048  READ (ndsm,END=801,ERR=802,IOSTAT=IERR) TRNX, trny
1049  END IF
1050 #ifdef W3_UOST
1051  ! UOST (Unresolved Obstacles Source Term) is enabled.
1052  ! setting TRNX, TRNY to null values
1053  trnx = 1
1054  trny = 1
1055 #endif
1056 
1057  READ (ndsm,END=801,ERR=802,IOSTAT=IERR) &
1058  dtcfl, dtcfli, dtmax, dtmin, dmin, ctmax, &
1059  fice0, ficen, ficel, pfmove, fldry, flcx, flcy, &
1060  flcth, flck, flsou, flbpi, flbpo, clats, clatis, &
1061  cthg0s, stexu, steyu, stedu, iicehmin, iicehinit, &
1062  iicedisp, icescales(1:4), caltype, cmprtrck, iicehfac, &
1063  iiceddisp, iicehdisp, iicefdisp, btbeta, &
1064  aaircmin, aairgb
1065 
1066  READ(ndsm,END=801,ERR=802,IOSTAT=IERR)gridshift
1067 #ifdef W3_SEC1
1068  READ (ndsm,END=801,ERR=802,IOSTAT=IERR) nitersec1
1069 #endif
1070  !
1071 #ifdef W3_RTD
1072  !! Read rotated Polat/lon and AnglD from mod_def JGLi12Jun2012
1073  READ (ndsm,END=801,ERR=802,IOSTAT=IERR) PoLat, PoLon, AnglD, flagunr
1074 
1075 #endif
1076  !
1077  END IF
1078  call print_memcheck(memunit, 'memcheck_____:'//' WIOGR SECTION 7')
1079  !
1080 #ifdef W3_T
1081  WRITE (ndst,9010) gtype, flagll, iclose, sx, sy, x0, y0, trflag
1082  WRITE (ndst,9011) 'MAPSTA'
1083  DO iy=min(ny,20), 1, -1
1084  WRITE (ndst,9012) (mapsta(iy,ix),ix=1,min(nx,30))
1085  END DO
1086  WRITE (ndst,9011) 'MAPST2'
1087  DO iy=min(ny,20), 1, -1
1088  WRITE (ndst,9012) (mapst2(iy,ix),ix=1,min(nx,30))
1089  END DO
1090  WRITE (ndst,9011) 'MAPFS'
1091  DO iy=min(ny,20), 1, -1
1092  WRITE (ndst,9013) (mapfs(iy,ix),ix=1,min(nx,12))
1093  END DO
1094  IF ( trflag .NE. 0 ) THEN
1095  WRITE (ndst,9011) 'TRNX'
1096  DO iy=min(ny,20), 1, -1
1097  WRITE (ndst,9014) (trnx(iy,ix),ix=1,min(nx,12))
1098  END DO
1099  WRITE (ndst,9011) 'TRNY'
1100  DO iy=min(ny,20), 1, -1
1101  WRITE (ndst,9014) (trny(iy,ix),ix=1,min(nx,12))
1102  END DO
1103  END IF
1104 #endif
1105  !
1106  DEALLOCATE ( maptmp )
1107  !
1108 #ifdef W3_T
1109  WRITE (ndst,9015) dtcfl, dtcfli, dtmax, dtmin, &
1110  dmin, ctmax, fice0, ficen, ficel, pfmove, &
1111  stexu, steyu, stedu
1112  WRITE (ndst,9016) fldry, flcx, flcy, flcth, flck, &
1113  flsou, flbpi, flbpo
1114  WRITE (ndst,9017) (clats(isea),isea=1,1), &
1115  (clatis(isea),isea=1,1), (cthg0s(iy),isea=1,1)
1116 #endif
1117  !
1118  ! Spectral parameters ------------------------------------------------ *
1119  ! Module W3GDATMD SGRD
1120  !
1121  IF ( WRITE ) THEN
1122  WRITE (ndsm) &
1123  mapwn, mapth, dth, th, esin, ecos, es2, esc, ec2, &
1124  xfr, fr1, sig, sig2, dsip, dsii, dden, dden2, fte, &
1125  ftf, ftwn, fttr, ftwl, facti1, facti2, fachfa, fachfe
1126 #ifdef W3_ASCII
1127  WRITE (ndsa,*) &
1128  'MAPWN, MAPTH, DTH, TH, ESIN, ECOS, ES2, ESC, EC2, &
1129  XFR, FR1, SIG, SIG2, DSIP, DSII, DDEN, DDEN2, FTE, &
1130  FTF, FTWN, FTTR, FTWL, FACTI1, FACTI2, FACHFA, FACHFE:', &
1131  mapwn, mapth, dth, th, esin, ecos, es2, esc, ec2, &
1132  xfr, fr1, sig, sig2, dsip, dsii, dden, dden2, fte, &
1133  ftf, ftwn, fttr, ftwl, facti1, facti2, fachfa, fachfe
1134 #endif
1135  ELSE
1136  IF (.NOT.sinit) CALL w3dims ( igrd, nk, nth, ndse, ndst )
1137  READ (ndsm,END=801,ERR=802,IOSTAT=IERR) &
1138  mapwn, mapth, dth, th, esin, ecos, es2, esc, ec2, &
1139  xfr, fr1, sig, sig2, dsip, dsii, dden, dden2, fte, &
1140  ftf, ftwn, fttr, ftwl, facti1, facti2, fachfa, fachfe
1141  END IF
1142 
1143  !
1144 #ifdef W3_T
1145  WRITE (ndst,9030) (mapwn(i),i=1,8), (mapth(i),i=1,8), dth*rade, &
1146  (th(i)*rade,i=1,4), (esin(i),i=1,4), (ecos(i),i=1,4), &
1147  xfr, sig(1)*tpiinv, sig(nk)*tpiinv, fte, ftf, ftwn, fttr, &
1148  ftwl, facti1, facti2, fachfa, fachfe
1149 #endif
1150  !
1151  !
1152  ! Output flags for 3D parameters ------------------------------------- *
1153  ! Module W3GDATMD
1154  IF ( WRITE ) THEN
1155  WRITE (ndsm) &
1156  e3df, p2msf, us3df,usspf, ussp_wn
1157 #ifdef W3_ASCII
1158  WRITE (ndsa,*) &
1159  'E3DF, P2MSF, US3DF,USSPF, USSP_WN:', &
1160  e3df, p2msf, us3df,usspf, ussp_wn
1161 #endif
1162  ELSE
1163  READ (ndsm,END=801,ERR=802,IOSTAT=IERR) &
1164  e3df, p2msf, us3df,usspf, ussp_wn
1165  END IF
1166 
1167  IF ( inxout .EQ. 'GRID' ) THEN
1168  CLOSE (ndsm)
1169  RETURN
1170  END IF
1171  !
1172  ! Parameters for output boundary points ------------------------------ *
1173  ! Module W3ODATMD OUT5
1174  !
1175  IF ( WRITE ) THEN
1176  WRITE (ndsm) &
1177  xbpo, ybpo, rdbpo, ipbpo, isbpo
1178 #ifdef W3_ASCII
1179  WRITE (ndsa,*) &
1180  'XBPO, YBPO, RDBPO, IPBPO, ISBPO:', &
1181  xbpo, ybpo, rdbpo, ipbpo, isbpo
1182 #endif
1183  ELSE
1184  CALL w3dmo5 ( igrd, ndse, ndst, 2 )
1185  READ (ndsm,END=801,ERR=802,IOSTAT=IERR) &
1186  xbpo, ybpo, rdbpo, ipbpo, isbpo
1187  END IF
1188  !
1189 #ifdef W3_T
1190  WRITE (ndst,9020)
1191  DO i=1, nfbpo
1192  WRITE (ndst,9021) i
1193  DO j=nbo(i-1)+1,nbo(i)
1194  WRITE (ndst,9022) j-nbo(i-1), (ipbpo(j,k),k=1,4), &
1195  (rdbpo(j,k),k=1,4)
1196  END DO
1197  WRITE (ndst,9023) (isbpo(j),j=nbo2(i-1)+1,nbo2(i))
1198  END DO
1199 #endif
1200  !
1201  ! Parameters for spectral partitioning ------------------------------ *
1202  ! Module W3ODATMD OUT6
1203  !
1204  IF ( WRITE ) THEN
1205  WRITE (ndsm) &
1206  ihmax, hspmin, wsmult, wscut, flcomb, noswll, &
1207  ptmeth, ptfcut
1208 #ifdef W3_ASCII
1209  WRITE (ndsa,*) &
1210  'IHMAX, HSPMIN, WSMULT, WSCUT, FLCOMB, NOSWLL, &
1211  PTMETH, PTFCUT:', &
1212  ihmax, hspmin, wsmult, wscut, flcomb, noswll, &
1213  ptmeth, ptfcut
1214 #endif
1215  ELSE
1216  READ (ndsm,END=801,ERR=802,IOSTAT=IERR) &
1217  ihmax, hspmin, wsmult, wscut, flcomb, noswll, &
1218  ptmeth, ptfcut
1219  END IF
1220  !
1221 #ifdef W3_T
1222  WRITE (ndst,9025) ihmax, hspmin, wsmult, wscut, flcomb, noswll
1223 #endif
1224  !
1225  ! Numerical parameters ----------------------------------------------- *
1226  ! Module W3GDATMD NPAR
1227  !
1228  IF ( WRITE ) THEN
1229  WRITE (ndsm) &
1230  facp, xrel, xflt, fxfm, fxpm, xft, xfc, facsd, fhmax, &
1231  ffacberg, delab, fwtable
1232 #ifdef W3_ASCII
1233  WRITE (ndsa,*) &
1234  'FACP, XREL, XFLT, FXFM, FXPM, XFT, XFC, FACSD, FHMAX, &
1235  FFACBERG, DELAB, FWTABLE:', &
1236  facp, xrel, xflt, fxfm, fxpm, xft, xfc, facsd, fhmax, &
1237  ffacberg, delab, fwtable
1238 #endif
1239 #ifdef W3_RWND
1240  WRITE (ndsm) &
1241  rwindc
1242 #ifdef W3_ASCII
1243  WRITE (ndsa,*) &
1244  'RWINDC:', &
1245  rwindc
1246 #endif
1247 #endif
1248 #ifdef W3_WCOR
1249  WRITE (ndsm) &
1250  wwcor
1251 #ifdef W3_ASCII
1252  WRITE (ndsa,*) &
1253  'WWCOR:', &
1254  wwcor
1255 #endif
1256 #endif
1257 #ifdef W3_REF1
1258  WRITE (ndsm) &
1259  rref, refpars, reflc, refld
1260 #ifdef W3_ASCII
1261  WRITE (ndsa,*) &
1262  'RREF, REFPARS, REFLC, REFLD:', &
1263  rref, refpars, reflc, refld
1264 #endif
1265 #endif
1266 #ifdef W3_IG1
1267  WRITE (ndsm) &
1268  igpars(1:12)
1269 #ifdef W3_ASCII
1270  WRITE (ndsa,*) &
1271  'IGPARS(1:12):', &
1272  igpars(1:12)
1273 #endif
1274 #endif
1275 #ifdef W3_IC2
1276  WRITE (ndsm) &
1277  ic2pars(1:8)
1278 #ifdef W3_ASCII
1279  WRITE (ndsa,*) &
1280  'IC2PARS(1:8):', &
1281  ic2pars(1:8)
1282 #endif
1283 #endif
1284 #ifdef W3_IC3
1285  WRITE (ndsm) &
1286  ic3pars
1287 #ifdef W3_ASCII
1288  WRITE (ndsa,*) &
1289  'IC3PARS:', &
1290  ic3pars
1291 #endif
1292 #endif
1293 #ifdef W3_IC4
1294  WRITE (ndsm) &
1295  ic4pars,ic4_ki,ic4_fc,ic4_cn,ic4_fmin,ic4_kibk
1296 #ifdef W3_ASCII
1297  WRITE (ndsa,*) &
1298  'IC4PARS,IC4_KI,IC4_FC,IC4_CN,IC4_FMIN,IC4_KIBK:', &
1299  ic4pars,ic4_ki,ic4_fc,ic4_cn,ic4_fmin,ic4_kibk
1300 #endif
1301 #endif
1302 #ifdef W3_IC5
1303  WRITE (ndsm) &
1304  ic5pars
1305 #ifdef W3_ASCII
1306  WRITE (ndsa,*) &
1307  'IC5PARS:', &
1308  ic5pars
1309 #endif
1310 #endif
1311  ELSE
1312  READ (ndsm,END=801,ERR=802,IOSTAT=IERR) &
1313  facp, xrel, xflt, fxfm, fxpm, xft, xfc, facsd, fhmax, &
1314  ffacberg, delab, fwtable
1315 #ifdef W3_RWND
1316  READ (ndsm,END=801,ERR=802,IOSTAT=IERR) &
1317  rwindc
1318 #endif
1319 #ifdef W3_WCOR
1320  READ (ndsm,END=801,ERR=802,IOSTAT=IERR) &
1321  wwcor
1322 #endif
1323 #ifdef W3_REF1
1324  READ (ndsm,END=801,ERR=802,IOSTAT=IERR) &
1325  rref, refpars, reflc, refld
1326 #endif
1327 #ifdef W3_IG1
1328  READ (ndsm,END=801,ERR=802,IOSTAT=IERR) &
1329  igpars(1:12)
1330 #endif
1331 #ifdef W3_IC2
1332  READ (ndsm,END=801,ERR=802,IOSTAT=IERR) &
1333  ic2pars(1:8)
1334 #endif
1335 #ifdef W3_IC3
1336  READ (ndsm,END=801,ERR=802,IOSTAT=IERR) &
1337  ic3pars
1338 #endif
1339 #ifdef W3_IC4
1340  READ (ndsm,END=801,ERR=802,IOSTAT=IERR) &
1341  ic4pars,ic4_ki,ic4_fc,ic4_cn,ic4_fmin,ic4_kibk
1342 #endif
1343 #ifdef W3_IC5
1344  READ (ndsm,END=801,ERR=802,IOSTAT=IERR) &
1345  ic5pars
1346 #endif
1347  END IF
1348  !
1349 #ifdef W3_T
1350  WRITE (ndst,9040) facp, xrel, xflt, fxfm, fxpm, xft, xfc, &
1351  facsd, fhmax
1352 #endif
1353  !
1354  ! Source term parameters --------------------------------------------- *
1355  ! Module W3GDATMD SFLP
1356  ! Module W3GDATMD SLNP
1357  ! Module W3GDATMD SRCP
1358  ! Module W3GDATMD SNLP
1359  ! Module W3GDATMD SBTP
1360  !
1361 #ifdef W3_FLX2
1362  IF ( WRITE ) THEN
1363  WRITE (ndsm) nittin, cinxsi
1364 #ifdef W3_ASCII
1365  WRITE (ndsa,*)' NITTIN, CINXSI:', &
1366  nittin, cinxsi
1367 #endif
1368  ELSE
1369  READ (ndsm,END=801,ERR=802,IOSTAT=IERR) NITTIN, cinxsi
1370  END IF
1371  IF ( fltest ) WRITE (ndst,9048) nittin, cinxsi
1372 #endif
1373  !
1374 #ifdef W3_FLX3
1375  IF ( WRITE ) THEN
1376  WRITE (ndsm) &
1377  nittin, cinxsi, cd_max, cap_id
1378 #ifdef W3_ASCII
1379  WRITE (ndsa,*) &
1380  'NITTIN, CINXSI, CD_MAX, CAP_ID:', &
1381  nittin, cinxsi, cd_max, cap_id
1382 #endif
1383  ELSE
1384  READ (ndsm,END=801,ERR=802,IOSTAT=IERR) &
1385  nittin, cinxsi, cd_max, cap_id
1386  END IF
1387  IF ( fltest ) WRITE (ndst,9048) nittin, cap_id, cinxsi, cd_max
1388 #endif
1389  !
1390 #ifdef W3_FLX4
1391  IF ( WRITE ) THEN
1392  WRITE (ndsm) flx4a0
1393 #ifdef W3_ASCII
1394  WRITE (ndsa,*)' FLX4A0:', &
1395  flx4a0
1396 #endif
1397  ELSE
1398  READ (ndsm,END=801,ERR=802,IOSTAT=IERR) flx4a0
1399  END IF
1400 #endif
1401  !
1402  !
1403 #ifdef W3_LN1
1404  IF ( WRITE ) THEN
1405  WRITE (ndsm) slnc1, fspm, fshf
1406 #ifdef W3_ASCII
1407  WRITE (ndsa,*)' SLNC1, FSPM, FSHF:', &
1408  slnc1, fspm, fshf
1409 #endif
1410  ELSE
1411  READ (ndsm,END=801,ERR=802,IOSTAT=IERR) SLNC1, FSPM, fshf
1412  END IF
1413  IF ( fltest ) WRITE (ndst,9049) slnc1, fspm, fshf
1414 #endif
1415  !
1416 #ifdef W3_ST1
1417  IF ( WRITE ) THEN
1418  WRITE (ndsm) sinc1, sdsc1
1419 #ifdef W3_ASCII
1420  WRITE (ndsa,*)' SINC1, SDSC1:', &
1421  sinc1, sdsc1
1422 #endif
1423  ELSE
1424  READ (ndsm,END=801,ERR=802,IOSTAT=IERR) SINC1, sdsc1
1425  END IF
1426  IF ( fltest ) WRITE (ndst,9050) sinc1, sdsc1
1427 #endif
1428  !
1429 #ifdef W3_ST2
1430  IF ( WRITE ) THEN
1431  WRITE (ndsm) &
1432  zwind, fswell, &
1433  shstab, ofstab, ccng, ccps, ffng, ffps, &
1434  cdsa0, cdsa1, cdsa2, sdsaln, &
1435  cdsb0, cdsb1, cdsb2, cdsb3, fpimin, xfh, xf1, xf2
1436 #ifdef W3_ASCII
1437  WRITE (ndsa,*) &
1438  'ZWIND, FSWELL, &
1439  SHSTAB, OFSTAB, CCNG, CCPS, FFNG, FFPS, &
1440  CDSA0, CDSA1, CDSA2, SDSALN, &
1441  CDSB0, CDSB1, CDSB2, CDSB3, FPIMIN, XFH, XF1, XF2:',&
1442  zwind, fswell, &
1443  shstab, ofstab, ccng, ccps, ffng, ffps, &
1444  cdsa0, cdsa1, cdsa2, sdsaln, &
1445  cdsb0, cdsb1, cdsb2, cdsb3, fpimin, xfh, xf1, xf2
1446 #endif
1447  ELSE
1448  READ (ndsm,END=801,ERR=802,IOSTAT=IERR) &
1449  zwind, fswell, &
1450  shstab, ofstab, ccng, ccps, ffng, ffps, &
1451  cdsa0, cdsa1, cdsa2, sdsaln, &
1452  cdsb0, cdsb1, cdsb2, cdsb3, fpimin, xfh, xf1, xf2
1453  IF ( .NOT. flinp ) CALL inptab
1454  flinp = .true.
1455  END IF
1456  IF ( fltest ) WRITE (ndst,9050) &
1457  zwind, fswell, cdsa0, cdsa1, cdsa2, &
1458  sdsaln, cdsb0, cdsb1, cdsb2, cdsb3, fpimin, xfh, xf1, &
1459  xf2, shstab, ofstab, ccng, ccps, ffng, ffps
1460 #endif
1461  !
1462 #ifdef W3_ST3
1463  IF ( WRITE ) THEN
1464  WRITE (ndsm) &
1465  zzwnd, aalpha, zz0max, bbeta, ssinthp, zzalp, &
1466  sswellf, ssdsc1, wwnmeanp, wwnmeanptail, sstxftf, &
1467  sstxftftail, sstxftwn, &
1468  ddelta1, ddelta2, sstxftf, sstxftwn, &
1469  ffxpm, ffxfm
1470 #ifdef W3_ASCII
1471  WRITE (ndsa,*) &
1472  'ZZWND, AALPHA, ZZ0MAX, BBETA, SSINTHP, ZZALP, &
1473  SSWELLF, SSDSC1, WWNMEANP, WWNMEANPTAIL, SSTXFTF, &
1474  SSTXFTFTAIL, SSTXFTWN, &
1475  DDELTA1, DDELTA2, SSTXFTF, SSTXFTWN, &
1476  FFXPM, FFXFM:', &
1477  zzwnd, aalpha, zz0max, bbeta, ssinthp, zzalp, &
1478  sswellf, ssdsc1, wwnmeanp, wwnmeanptail, sstxftf, &
1479  sstxftftail, sstxftwn, &
1480  ddelta1, ddelta2, sstxftf, sstxftwn, &
1481  ffxpm, ffxfm
1482 #endif
1483  ELSE
1484  READ (ndsm,END=801,ERR=802,IOSTAT=IERR) &
1485  zzwnd, aalpha, zz0max, bbeta, ssinthp, zzalp, &
1486  sswellf, ssdsc1, wwnmeanp, wwnmeanptail, sstxftf, &
1487  sstxftftail, sstxftwn, &
1488  ddelta1, ddelta2, sstxftf, sstxftwn, &
1489  ffxpm, ffxfm
1490  IF ( .NOT. flinp ) THEN
1491  CALL insin3
1492  flinp = .true.
1493  END IF
1494  END IF
1495 #endif
1496  !
1497 #ifdef W3_ST4
1498  IF ( WRITE ) THEN
1499  CALL insin4(.true.)
1500  WRITE (ndsm) &
1501  zzwnd, aalpha, zz0max, bbeta, ssinthp, zzalp, &
1502  ttauwshelter, sswellfpar, sswellf, ssinbr, &
1503  zz0rat, ssdsc, &
1504  ssdsiso, ssdsbr, ssdsbt, ssdsbm, ssdsp, &
1505  ssdscos, ssdsdth, wwnmeanp, wwnmeanptail,sstxftf, &
1506  sstxftftail, sstxftwn, sstxftf, sstxftwn, &
1507  ssdsbrf1, ssdsbrf2, ssdsbrfdf,ssdsbck, ssdsabk, &
1508  ssdspbk, ssdsbint, ffxpm, ffxfm, ffxfa, &
1509  ssdshck, &
1510  iktab, dcki, qbi, satindices, satweights, &
1511  dikcumul, cumulw, sintailpar, capchnk
1512 #ifdef W3_ASCII
1513  WRITE (ndsa,*) &
1514  'ZZWND, AALPHA, ZZ0MAX, BBETA, SSINTHP, ZZALP, &
1515  TTAUWSHELTER, SSWELLFPAR, SSWELLF, SSINBR, &
1516  ZZ0RAT, SSDSC, &
1517  SSDSISO, SSDSBR, SSDSBT, SSDSBM, SSDSP, &
1518  SSDSCOS, SSDSDTH, WWNMEANP, WWNMEANPTAIL,SSTXFTF, &
1519  SSTXFTFTAIL, SSTXFTWN, SSTXFTF, SSTXFTWN, &
1520  SSDSBRF1, SSDSBRF2, SSDSBRFDF,SSDSBCK, SSDSABK, &
1521  SSDSPBK, SSDSBINT, FFXPM, FFXFM, FFXFA, &
1522  SSDSHCK, &
1523  IKTAB, DCKI, QBI, SATINDICES, SATWEIGHTS, &
1524  DIKCUMUL, CUMULW, SINTAILPAR, CAPCHNK:', &
1525  zzwnd, aalpha, zz0max, bbeta, ssinthp, zzalp, &
1526  ttauwshelter, sswellfpar, sswellf, ssinbr, &
1527  zz0rat, ssdsc, &
1528  ssdsiso, ssdsbr, ssdsbt, ssdsbm, ssdsp, &
1529  ssdscos, ssdsdth, wwnmeanp, wwnmeanptail,sstxftf, &
1530  sstxftftail, sstxftwn, sstxftf, sstxftwn, &
1531  ssdsbrf1, ssdsbrf2, ssdsbrfdf,ssdsbck, ssdsabk, &
1532  ssdspbk, ssdsbint, ffxpm, ffxfm, ffxfa, &
1533  ssdshck, &
1534  iktab, dcki, qbi, satindices, satweights, &
1535  dikcumul, cumulw, sintailpar, capchnk
1536 #endif
1537  IF (sintailpar(1).GT.0.5) THEN
1538  WRITE (ndsm) delust, deltail, deltauw, delu, delalp, &
1539  taut, tauhft
1540  IF (ttauwshelter.GT.0) WRITE (ndsm) tauhft2
1541 #ifdef W3_ASCII
1542  WRITE (ndsa,*) 'DELUST, DELTAIL, DELTAUW, DELU, DELALP,&
1543  TAUT, TAUHFT:', &
1544  delust, deltail, deltauw, delu, delalp, &
1545  taut, tauhft
1546  IF (ttauwshelter.GT.0) WRITE (ndsa,*) 'TAUHFT2:', tauhft2
1547 #endif
1548  END IF
1549  ELSE
1550  READ (ndsm,END=801,ERR=802,IOSTAT=IERR) &
1551  zzwnd, aalpha, zz0max, bbeta, ssinthp, zzalp, &
1552  ttauwshelter, sswellfpar, sswellf, ssinbr, &
1553  zz0rat, ssdsc, &
1554  ssdsiso, ssdsbr, ssdsbt, ssdsbm, ssdsp, &
1555  ssdscos, ssdsdth, wwnmeanp, wwnmeanptail,sstxftf, &
1556  sstxftftail, sstxftwn, sstxftf, sstxftwn, &
1557  ssdsbrf1, ssdsbrf2, ssdsbrfdf,ssdsbck, ssdsabk, &
1558  ssdspbk, ssdsbint, ffxpm, ffxfm, ffxfa, &
1559  ssdshck, &
1560  iktab, dcki, qbi, satindices, satweights, &
1561  dikcumul, cumulw, sintailpar, capchnk
1562  IF (sintailpar(1).GT.0.5) THEN
1563  CALL insin4(.false.)
1564  READ (ndsm,END=801,ERR=802,IOSTAT=IERR) &
1565  delust, deltail, deltauw, delu, delalp, &
1566  taut, tauhft
1567  IF (ttauwshelter.GT.0) READ(ndsm,END=801,ERR=802,IOSTAT=IERR) tauhft2
1568  END IF
1569  END IF
1570 #endif
1571  !
1572 #ifdef W3_ST6
1573  IF ( WRITE ) THEN
1574  WRITE (ndsm) sin6a0, sds6et, sds6a1, sds6a2, &
1575  sds6p1, sds6p2, swl6s6, swl6b1, swl6cstb1, &
1576  sin6ws, sin6fc
1577 #ifdef W3_ASCII
1578  WRITE (ndsa,*) 'SIN6A0, SDS6ET, SDS6A1, SDS6A2, &
1579  SDS6P1, SDS6P2, SWL6S6, SWL6B1, SWL6CSTB1, &
1580  SIN6WS, SIN6FC:', &
1581  sin6a0, sds6et, sds6a1, sds6a2, &
1582  sds6p1, sds6p2, swl6s6, swl6b1, swl6cstb1, &
1583  sin6ws, sin6fc
1584 #endif
1585  ELSE
1586  READ (ndsm,END=801,ERR=802,IOSTAT=IERR) &
1587  sin6a0, sds6et, sds6a1, sds6a2, &
1588  sds6p1, sds6p2, swl6s6, swl6b1, swl6cstb1, &
1589  sin6ws, sin6fc
1590  END IF
1591 #endif
1592  !
1593  ! ... Nonlinear interactions
1594  !
1595 #ifdef W3_NL1
1596  IF ( WRITE ) THEN
1597  WRITE (ndsm) &
1598  snlc1, lam, kdcon, kdmn, snls1, snls2, snls3, &
1599  iqtpe, nltail, gqnf1, gqnt1, &
1600  gqnq_om2, gqthrsat, gqthrcou, gqamp
1601 #ifdef W3_ASCII
1602  WRITE (ndsa,*) &
1603  'SNLC1, LAM, KDCON, KDMN, SNLS1, SNLS2, SNLS3, &
1604  IQTPE, NLTAIL, GQNF1, GQNT1, &
1605  GQNQ_OM2, GQTHRSAT, GQTHRCOU, GQAMP:', &
1606  snlc1, lam, kdcon, kdmn, snls1, snls2, snls3, &
1607  iqtpe, nltail, gqnf1, gqnt1, &
1608  gqnq_om2, gqthrsat, gqthrcou, gqamp
1609 #endif
1610  ELSE
1611  READ (ndsm,END=801,ERR=802,IOSTAT=IERR) &
1612  snlc1, lam, kdcon, kdmn, snls1, snls2, snls3, &
1613  iqtpe, nltail, gqnf1, gqnt1, &
1614  gqnq_om2, gqthrsat, gqthrcou, gqamp
1615  END IF
1616  IF ( fltest ) WRITE (ndst,9051) snlc1, lam, &
1617  kdcon, kdmn, snls1, snls2, snls3, &
1618  iqtpe, nltail, gqnf1, gqnt1, gqnq_om2, &
1619  gqthrsat, gqthrcou, gqamp
1620 #endif
1621  !
1622 #ifdef W3_NL2
1623  IF ( WRITE ) THEN
1624  WRITE (ndsm) iqtpe, nltail, ndpths
1625  WRITE (ndsm) dpthnl
1626 #ifdef W3_ASCII
1627  WRITE (ndsa,*) 'IQTPE, NLTAIL, NDPTHS:', &
1628  iqtpe, nltail, ndpths
1629  WRITE (ndsa,*) 'DPTHNL:', &
1630  dpthnl
1631 #endif
1632  ELSE
1633  READ (ndsm,END=801,ERR=802,IOSTAT=IERR) &
1634  iqtpe, nltail, ndpths
1635  ALLOCATE ( mpars(igrd)%SNLPS%DPTHNL(ndpths) )
1636  dpthnl => mpars(igrd)%SNLPS%DPTHNL
1637  pinit = .true.
1638  READ (ndsm,END=801,ERR=802,IOSTAT=IERR) dpthnl
1639  END IF
1640  IF ( fltest ) WRITE (ndst,9051) iqtpe, nltail, ndpths
1641  IF ( fltest ) WRITE (ndst,9151) dpthnl
1642 #endif
1643  !
1644 #ifdef W3_NL3
1645  IF ( WRITE ) THEN
1646  WRITE (ndsm) snlnq, snlmsc, snlnsc, snlsfd, snlsfs
1647  WRITE (ndsm) snll(1:snlnq), snlm(1:snlnq), &
1648  snlt(1:snlnq), snlcd(1:snlnq), &
1649  snlcs(1:snlnq)
1650 #ifdef W3_ASCII
1651  WRITE (ndsa,*) 'SNLNQ, SNLMSC, SNLNSC, SNLSFD, SNLSFS:',&
1652  snlnq, snlmsc, snlnsc, snlsfd, snlsfs
1653  WRITE (ndsa,*) 'SNLL(1:SNLNQ), SNLM(1:SNLNQ), &
1654  SNLT(1:SNLNQ), SNLCD(1:SNLNQ), &
1655  SNLCS(1:SNLNQ):', &
1656  snll(1:snlnq), snlm(1:snlnq), &
1657  snlt(1:snlnq), snlcd(1:snlnq), &
1658  snlcs(1:snlnq)
1659 #endif
1660  ELSE
1661  READ (ndsm,END=801,ERR=802,IOSTAT=IERR) &
1662  snlnq, snlmsc, snlnsc, snlsfd, snlsfs
1663  ALLOCATE ( mpars(igrd)%SNLPS%SNLL(snlnq), &
1664  mpars(igrd)%SNLPS%SNLM(snlnq), &
1665  mpars(igrd)%SNLPS%SNLT(snlnq), &
1666  mpars(igrd)%SNLPS%SNLCD(snlnq), &
1667  mpars(igrd)%SNLPS%SNLCS(snlnq) )
1668  snll => mpars(igrd)%SNLPS%SNLL
1669  snlm => mpars(igrd)%SNLPS%SNLM
1670  snlt => mpars(igrd)%SNLPS%SNLT
1671  snlcd => mpars(igrd)%SNLPS%SNLCD
1672  snlcs => mpars(igrd)%SNLPS%SNLCS
1673  pinit = .true.
1674  READ (ndsm,END=801,ERR=802,IOSTAT=IERR) &
1675  snll, snlm, snlt, snlcd, snlcs
1676  END IF
1677  IF ( fltest ) WRITE (ndst,9051) snlnq, snlmsc, snlnsc, &
1678  snlsfd, snlsfs
1679  IF ( fltest ) THEN
1680  DO i=1, snlnq
1681  WRITE (ndst,9151) snll(i), snlm(i), snlt(i), &
1682  snlcd(i), snlcs(i)
1683  END DO
1684  END IF
1685 #endif
1686  !
1687 #ifdef W3_NL4
1688  IF ( WRITE ) THEN
1689  WRITE (ndsm) itsa, ialt
1690 #ifdef W3_ASCII
1691  WRITE (ndsa,*) 'ITSA, IALT:', &
1692  itsa, ialt
1693 #endif
1694  ELSE
1695  READ (ndsm,END=801,ERR=802,IOSTAT=IERR) &
1696  itsa, ialt
1697  END IF
1698  IF ( fltest ) WRITE (ndst,9051) itsa, ialt
1699 #endif
1700  !
1701  ! (QL: INXOUT = Grid option ?)
1702 #ifdef W3_NL5
1703  IF (write) THEN
1704  CALL insnl5
1705  WRITE (ndsm) qr5dpt, qr5oml, qi5dis, qi5kev, &
1706  qi5nnz, qi5ipl, qi5pmx
1707 #ifdef W3_ASCII
1708  WRITE (ndsa,*) 'QR5DPT, QR5OML, QI5DIS, QI5KEV, &
1709  QI5NNZ, QI5IPL, QI5PMX:', &
1710  qr5dpt, qr5oml, qi5dis, qi5kev, &
1711  qi5nnz, qi5ipl, qi5pmx
1712 #endif
1713  ELSE
1714  READ (ndsm,END=801,ERR=802,IOSTAT=IERR) &
1715  qr5dpt, qr5oml, qi5dis, qi5kev, &
1716  qi5nnz, qi5ipl, qi5pmx
1717  END IF
1718  IF ( fltest ) WRITE (ndst,9051) qr5dpt, qr5oml, qi5dis, &
1719  qi5kev, qi5nnz, qi5ipl, &
1720  qi5pmx
1721 #endif
1722  !
1723 #ifdef W3_NLS
1724  IF ( WRITE ) THEN
1725  WRITE (ndsm) &
1726  cnlsa, cnlsc, cnlsfm, cnlsc1, cnlsc2, cnlsc3
1727 #ifdef W3_ASCII
1728  WRITE (ndsa,*) &
1729  'CNLSA, CNLSC, CNLSFM, CNLSC1, CNLSC2, CNLSC3:', &
1730  cnlsa, cnlsc, cnlsfm, cnlsc1, cnlsc2, cnlsc3
1731 #endif
1732  ELSE
1733  READ (ndsm,END=801,ERR=802,IOSTAT=IERR) &
1734  cnlsa, cnlsc, cnlsfm, cnlsc1, cnlsc2, cnlsc3
1735  END IF
1736  IF ( fltest ) WRITE (ndst,9251) &
1737  cnlsa, cnlsc, cnlsfm, cnlsc1, cnlsc2, cnlsc3
1738 #endif
1739  !
1740 #ifdef W3_NL1
1741  IF ( .NOT. WRITE ) THEN
1742  IF (iqtpe.GT.0) THEN
1743  CALL insnl1 ( igrd )
1744  ELSE
1745  CALL insnlgqm
1746  END IF
1747  END IF
1748 #endif
1749 #ifdef W3_NL3
1750  IF ( .NOT. WRITE ) CALL insnl3
1751 #endif
1752 #ifdef W3_NLS
1753  IF ( .NOT. WRITE ) CALL insnls
1754 #endif
1755  !
1756  ! Layered barriers needed for file management in xnl_init
1757  !
1758 #ifdef W3_MPI
1759  IF ( flsnl2 .AND. .NOT.WRITE ) THEN
1760  DO ip=1, iaproc-1
1761  CALL mpi_barrier ( mpi_comm_wave, ierr_mpi )
1762  END DO
1763  END IF
1764 #endif
1765 #ifdef W3_NL2
1766  IF ( .NOT. WRITE ) CALL insnl2
1767 #endif
1768 #ifdef W3_MPI
1769  IF ( flsnl2 .AND. .NOT.WRITE ) THEN
1770  DO ip=iaproc, naproc-1
1771  CALL mpi_barrier ( mpi_comm_wave, ierr_mpi )
1772  END DO
1773  END IF
1774 #endif
1775  !
1776  ! ... Bottom friction ...
1777  !
1778 #ifdef W3_BT1
1779  IF ( WRITE ) THEN
1780  WRITE (ndsm) sbtc1
1781 #ifdef W3_ASCII
1782  WRITE (ndsa,*) 'SBTC1:', sbtc1
1783 #endif
1784  ELSE
1785  READ (ndsm,END=801,ERR=802,IOSTAT=IERR) sbtc1
1786  END IF
1787  IF ( fltest ) WRITE (ndst,9052) sbtc1
1788 #endif
1789  !
1790  !
1791 #ifdef W3_BT4
1792  IF ( WRITE ) THEN
1793  WRITE (ndsm) &
1794  sbtcx, sed_d50, sed_psic
1795 #ifdef W3_ASCII
1796  WRITE (ndsa,*) &
1797  'SBTCX, SED_D50, SED_PSIC:', &
1798  sbtcx, sed_d50, sed_psic
1799 #endif
1800  ELSE
1801  READ (ndsm,END=801,ERR=802,IOSTAT=IERR) &
1802  sbtcx, sed_d50, sed_psic
1803  END IF
1804 #endif
1805  !
1806  ! ... Depth induced breaking ...
1807  !
1808  call print_memcheck(memunit, 'memcheck_____:'//' WIOGR SECTION 8')
1809 #ifdef W3_DB1
1810  IF ( WRITE ) THEN
1811  WRITE (ndsm) &
1812  sdbc1, sdbc2, fdonly
1813 #ifdef W3_ASCII
1814  WRITE (ndsa,*) &
1815  'SDBC1, SDBC2, FDONLY:', &
1816  sdbc1, sdbc2, fdonly
1817 #endif
1818  ELSE
1819  READ (ndsm,END=801,ERR=802,IOSTAT=IERR) &
1820  sdbc1, sdbc2, fdonly
1821  END IF
1822  !
1823  IF ( fltest ) WRITE (ndst,9053) sdbc1, sdbc2, fdonly
1824 #endif
1825 
1826 #ifdef W3_UOST
1827  IF ( WRITE ) THEN
1828  WRITE (ndsm) uostfilelocal, uostfileshadow, &
1829  uostfactorlocal, uostfactorshadow
1830 #ifdef W3_ASCII
1831  WRITE (ndsa,*) 'UOSTFILELOCAL, UOSTFILESHADOW, &
1832  UOSTFACTORLOCAL, UOSTFACTORSHADOW:', &
1833  uostfilelocal, uostfileshadow, &
1834  uostfactorlocal, uostfactorshadow
1835 #endif
1836  ELSE
1837  READ (ndsm,END=801,ERR=802,IOSTAT=IERR) &
1838  uostfilelocal, uostfileshadow, &
1839  uostfactorlocal, uostfactorshadow
1840  CALL uost_initgrid(igrd, uostfilelocal, uostfileshadow, &
1841  uostfactorlocal, uostfactorshadow)
1842 #endif
1843 
1844 #ifdef W3_UOST
1845  END IF
1846 #endif
1847 
1848  !
1849 #ifdef W3_IS1
1850  IF ( WRITE ) THEN
1851  WRITE (ndsm) is1c1, is1c2
1852 #ifdef W3_ASCII
1853  WRITE (ndsa,*) 'IS1C1, IS1C2:', is1c1, is1c2
1854 #endif
1855  ELSE
1856  READ (ndsm,END=801,ERR=802,IOSTAT=IERR) IS1C1, is1c2
1857  END IF
1858 #endif
1859  !
1860 #ifdef W3_IS2
1861  IF ( WRITE ) THEN
1862  WRITE (ndsm) is2pars
1863 #ifdef W3_ASCII
1864  WRITE (ndsa,*) 'IS3PARS:', is2pars
1865 #endif
1866  ELSE
1867  READ (ndsm,END=801,ERR=802,IOSTAT=IERR) is2pars
1868  IF ( .NOT. flis ) THEN
1869  CALL insis2
1870  flis = .true.
1871  END IF
1872  END IF
1873 #endif
1874  !
1875  ! Propagation scheme ------------------------------------------------- *
1876  ! Module W3GDATMD PROP
1877  !
1878 #ifdef W3_PR2
1879  IF ( WRITE ) THEN
1880  WRITE (ndsm) dtme, clatmn
1881 #ifdef W3_ASCII
1882  WRITE (ndsa,*) 'DTME, CLATMN:', dtme, clatmn
1883 #endif
1884  ELSE
1885  READ (ndsm,END=801,ERR=802,IOSTAT=IERR) &
1886  dtme, clatmn
1887  END IF
1888  !
1889  IF ( fltest ) WRITE (ndst,9060) dtme, clatmn
1890 #endif
1891  !
1892 #ifdef W3_PR3
1893  IF ( WRITE ) THEN
1894  WRITE (ndsm) wdcg, wdth
1895 #ifdef W3_ASCII
1896  WRITE (ndsa,*) 'WDCG, WDTH:', wdcg, wdth
1897 #endif
1898  ELSE
1899  READ (ndsm,END=801,ERR=802,IOSTAT=IERR) &
1900  wdcg, wdth
1901  END IF
1902  !
1903  IF ( fltest ) WRITE (ndst,9060) wdcg, wdth
1904 #endif
1905  !
1906 #ifdef W3_SMC
1907  IF ( WRITE ) THEN
1908  WRITE(ndsm) dtms, refran, funo3, fverg, fswnd, arctc
1909 #ifdef W3_ASCII
1910  WRITE(ndsa,*) 'DTMS, Refran, FUNO3, FVERG, FSWND, ARCTC:', &
1911  dtms, refran, funo3, fverg, fswnd, arctc
1912 #endif
1913  ELSE
1914  READ (ndsm,END=801,ERR=802,IOSTAT=IERR) &
1915  dtms, refran, funo3, fverg, fswnd, arctc
1916  END IF
1917  !
1918  IF ( fltest ) WRITE (ndst,9260) dtms, refran
1919 #endif
1920  !
1921 #ifdef W3_FLD1
1922  IF ( WRITE ) THEN
1923  WRITE (ndsm) tail_id, tail_lev, tail_tran1, tail_tran2
1924 #ifdef W3_ASCII
1925  WRITE (ndsa,*) 'TAIL_ID, TAIL_LEV, TAIL_TRAN1, TAIL_TRAN2:', &
1926  tail_id, tail_lev, tail_tran1, tail_tran2
1927 #endif
1928  ELSE
1929  READ (ndsm,END=801,ERR=802,IOSTAT=IERR) &
1930  tail_id, tail_lev, tail_tran1, tail_tran2
1931  END IF
1932 #endif
1933 #ifdef W3_FLD2
1934  IF ( WRITE ) THEN
1935  WRITE (ndsm) tail_id, tail_lev, tail_tran1, tail_tran2
1936 #ifdef W3_ASCII
1937  WRITE (ndsa,*) 'TAIL_ID, TAIL_LEV, TAIL_TRAN1, TAIL_TRAN2:', &
1938  tail_id, tail_lev, tail_tran1, tail_tran2
1939 #endif
1940  ELSE
1941  READ (ndsm,END=801,ERR=802,IOSTAT=IERR) &
1942  tail_id, tail_lev, tail_tran1, tail_tran2
1943  END IF
1944 #endif
1945  !
1946  ! Interpolation tables ( fill locally ) ----------------------------- *
1947  ! Module W3DISPMD
1948  !
1949  IF ( .NOT.WRITE .AND. .NOT.fldisp ) THEN
1950 #ifdef W3_T
1951  WRITE (ndst,9070)
1952 #endif
1953  CALL distab
1954  fldisp = .true.
1955  END IF
1956  !
1957  CLOSE ( ndsm )
1958 #ifdef W3_ASCII
1959  IF ( WRITE ) THEN
1960  CLOSE ( ndsa )
1961  END IF
1962 #endif
1963  call print_memcheck(memunit, 'memcheck_____:'//' WIOGR SECTION 9')
1964  !
1965  RETURN
1966  !
1967  ! Escape locations read errors --------------------------------------- *
1968  !
1969 800 CONTINUE
1970  IF ( iaproc .EQ. naperr ) WRITE (ndse,1000) filext(:iext), ierr
1971  CALL extcde ( 50 )
1972  !
1973 801 CONTINUE
1974  IF ( iaproc .EQ. naperr ) WRITE (ndse,1001) filext(:iext)
1975  CALL extcde ( 51 )
1976  !
1977 802 CONTINUE
1978  IF ( iaproc .EQ. naperr ) WRITE (ndse,1002) filext(:iext), ierr, &
1979  message
1980  CALL extcde ( 52 )
1981  !
1982  ! Formats
1983  !
1984 900 FORMAT (/' *** WAVEWATCH III ERROR IN W3IOGR :'/ &
1985  ' ILEGAL INXOUT VALUE: ',a/)
1986 901 FORMAT (/' *** WAVEWATCH III ERROR IN W3IOGR :'/ &
1987  ' ILEGAL IDSTR, READ : ',a/ &
1988  ' CHECK : ',a/)
1989 902 FORMAT (/' *** WAVEWATCH III ERROR IN W3IOGR :'/ &
1990  ' ILEGAL VERGRD, READ : ',a/ &
1991  ' CHECK : ',a/)
1992 904 FORMAT (/' *** WAVEWATCH III ERROR IN W3IOGR :'/ &
1993  ' ILEGAL NFBPO READ : ',i8/ &
1994  ' CHECK : ',i8/)
1995 905 FORMAT (/' *** WAVEWATCH III ERROR IN W3IOGR :'/ &
1996  ' UNEXPECTED SOURCE TERM IDENTIFIER',i2/ &
1997  ' IN mod_def.',a,' FILE : ',a/ &
1998  ' EXPECTED FROM switch FILE : ',a,/ &
1999  5(a,/) /)
2000  ! ' CHECK CONSISTENCY OF SWITCHES IN PROGRAMS'/)
2001 906 FORMAT (/' *** WAVEWATCH III ERROR IN W3IOGR :'/ &
2002  ' UNEXPECTED PROPAGATION SCHEME IDENTIFIER'/ &
2003  ' IN FILE :',a/ &
2004  ' EXPECTED :',a/ &
2005  ' CHECK CONSISTENCY OF SWITCHES IN PROGRAMS'/)
2006 907 FORMAT (/' *** WAVEWATCH III ERROR IN W3IOGR :'/ &
2007  ' UNEXPECTED GSE ALEVIATION IDENTIFIER'/ &
2008  ' IN FILE :',a/ &
2009  ' EXPECTED :',a/ &
2010  , 5(a,/) /)
2011  ! ' CHECK CONSISTENCY OF SWITCHES IN PROGRAMS'/)
2012 908 FORMAT (/' *** WAVEWATCH III ERROR IN W3IOGR :'/ &
2013  ' UNEXPECTED FLUX PARAMETERIZATION IDENTIFIER'/ &
2014  ' IN mod_def.',a,' :',a/ &
2015  ' EXPECTED :',a/ &
2016  , 5(a,/) /)
2017  ! ' CHECK CONSISTENCY OF SWITCHES IN PROGRAMS'/)
2018  !
2019 1000 FORMAT (/' *** WAVEWATCH III ERROR IN W3IOGR : '/ &
2020  ' ERROR IN OPENING mod_def.',a,' FILE'/ &
2021  ' IOSTAT =',i5/)
2022 1001 FORMAT (/' *** WAVEWATCH III ERROR IN W3IOGR : '/ &
2023  ' PREMATURE END OF mod_def.',a,' FILE'/)
2024 1002 FORMAT (/' *** WAVEWATCH III ERROR IN W3IOGR : '/, &
2025  ' ERROR IN READING FROM mod_def.',a,' FILE'/ &
2026  ' IOSTAT =',i5, &
2027  5(a,/) /)
2028  !
2029 #ifdef W3_T
2030 9000 FORMAT (' TEST W3IOGR : INXOUT = ',a,', WRITE = ',l1, &
2031  ', UNIT =',i3,', IGRD =',i3,', FEXT = ',a)
2032 9001 FORMAT (' TEST W3IOGR : TEST PARAMETERS :'/ &
2033  ' IDSTR : ',a/ &
2034  ' VERGRD : ',a/ &
2035  ' NX/Y/SEA : ',3i10/ &
2036  ' NTH,NK : ',2i10/ &
2037  ' NBI : ',i10/ &
2038  ' NFBPO : ',2i10/ &
2039  ' GNAME : ',a/ &
2040  ' FNAME0 : ',a/ &
2041  ' FNAME1 : ',a/ &
2042  ' FNAME2 : ',a/ &
2043  ' FNAME3 : ',a/ &
2044  ' FNAME4 : ',a/ &
2045  ' FNAME5 : ',a/ &
2046  ' FNAME6 : ',a/ &
2047  ' FNAMEP : ',a/ &
2048  ' FNAMEG : ',a/ &
2049  ' FNAMEF : ',a/ &
2050  ' FNAMEI : ',a)
2051 9002 FORMAT (' NBO : ',10i5)
2052 9003 FORMAT (' NBO2 : ',10i5)
2053  !
2054 9010 FORMAT (' TEST W3IOGR : MODULE W3GDATMD GRID'/ &
2055  ' GTYPE : ',i9/ &
2056  ' FLAGLL : ',l9/ &
2057  ' ICLOSE : ',i9/ &
2058  ' SX, SY : ',2e10.3/ &
2059  ' X0, Y0 : ',2e10.3/ &
2060  ' TRFLAG : ',i9)
2061 9011 FORMAT (' LOWER LEFT PART OF ',a)
2062 9012 FORMAT (' ',4x,30i2)
2063 9013 FORMAT (' ',12i6)
2064 9014 FORMAT (' ',12f6.2)
2065 9015 FORMAT (' STEPS : ',4f8.1/ &
2066  ' DEPTH : ',f8.1,f10.3/ &
2067  ' FICE0/N: ',f9.2,f8.2/ &
2068  ' FICEL : ',f9.1 / &
2069  ' PFMOVE : ',f9.2 / &
2070  ' STEXU : ',f9.2 / &
2071  ' STEYU : ',f9.2 / &
2072  ' STEDU : ',f9.2)
2073  !
2074 9016 FORMAT (' FLAGS : ',8l2)
2075 9017 FORMAT (' CLATS : ',3f8.3,' ...'/ &
2076  ' CLATIS : ',3f8.3,' ...'/ &
2077  ' CTHG0S : ',3e11.3,' ...')
2078  !
2079 9020 FORMAT (' TEST W3IOGR : MODULE W3ODATMD OUT5')
2080 9021 FORMAT (' INTERPOLATION DATA : FILE ',i1)
2081 9022 FORMAT (' ',i5,2x,4i4,2x,4f5.2)
2082 9023 FORMAT (' ',10i7)
2083 9025 FORMAT (' TEST W3IOGR : MODULE W3ODATMD OUT6'/ &
2084  ' PARTITIONING DATA :',i5,3e10.3,l4,2x,i4)
2085  !
2086 9030 FORMAT (' TEST W3IOGR : MODULE W3GDATMD SGRD'/ &
2087  ' MAPWN : ',8i4,' ...'/ &
2088  ' MAPTH : ',8i4,' ...'/ &
2089  ' DTH : ',f6.1/ &
2090  ' TH : ',4f6.1,' ...'/ &
2091  ' ESIN : ',4f6.3,' ...'/ &
2092  ' ECOS : ',4f6.3,' ...'/ &
2093  ' XFR : ',f6.3/ &
2094  ' FR : ',f6.3,' ...',f6.3/ &
2095  ' FACs : ',6e10.3/ &
2096  ' ',3e10.3)
2097  !
2098 9040 FORMAT (' TEST W3IOGR : MODULE W3GDATMD NPAR'/ &
2099  ' FACs : ',5e10.3/ &
2100  ' ',4e10.3)
2101 #endif
2102  !
2103 #ifdef W3_FLX2
2104 9048 FORMAT (' TEST W3IOGR : MODULE W3GDATMD SFLP'/ &
2105  ' FLUXES : ',i5,3x,e10.3)
2106 #endif
2107 #ifdef W3_FLX3
2108 9048 FORMAT (' TEST W3IOGR : MODULE W3GDATMD SFLP'/ &
2109  ' FLUXES : ',2i5,3x,2e10.3)
2110 #endif
2111  !
2112 #ifdef W3_LN1
2113 9049 FORMAT (' TEST W3IOGR : MODULE W3GDATMD SLNP'/ &
2114  ' INPUT : ',3e10.3)
2115 #endif
2116  !
2117 #ifdef W3_ST1
2118 9050 FORMAT (' TEST W3IOGR : MODULE W3GDATMD SRCP'/ &
2119  ' INPUT : ',e10.3/ &
2120  ' DISSIP : ',e10.3)
2121 #endif
2122 #ifdef W3_ST2
2123 9050 FORMAT (' TEST W3IOGR : MODULE W3GDATMD SRCP'/ &
2124  ' INPUT : ',2e10.3/ &
2125  ' DISSIP : ',4e10.3/ &
2126  ' ',5e10.3/ &
2127  ' ',3e10.3/ &
2128  ' STAB2 : ',6e10.3)
2129 #endif
2130  !
2131 #ifdef W3_NL1
2132 9051 FORMAT (' TEST W3IOGR : MODULE W3GDATMD SNLP'/ &
2133  ' DATA : ',2e10.3/ &
2134  ' ',5e10.3)
2135 #endif
2136  !
2137 #ifdef W3_NL2
2138 9051 FORMAT (' TEST W3IOGR : MODULE W3GDATMD SNLP'/ &
2139  ' DATA : ',i4,f5.1,i4)
2140 9151 FORMAT (' ',5f7.1)
2141 #endif
2142  !
2143 #ifdef W3_NL3
2144 9051 FORMAT (' TEST W3IOGR : MODULE W3GDATMD SNLP'/ &
2145  ' DATA : ',i4,4f8.3)
2146 9151 FORMAT (' ',2f8.3,f6.1,2e12.4)
2147 #endif
2148  !
2149 #ifdef W3_NL4
2150 9051 FORMAT (' TEST W3IOGR : MODULE W3GDATMD SNLP'/ &
2151  ' DATA : ',i4,i4)
2152 #endif
2153  !
2154 #ifdef W3_NL5
2155 9051 FORMAT (' TEST W3IOGR : MODULE W3GDATMD SNLP'/ &
2156  ' DATA : ', f7.1, f8.2, 2i2.1, i12, 2i2.1)
2157 #endif
2158  !
2159 #ifdef W3_NLS
2160 9251 FORMAT (' TEST W3IOGR : MODULE W3GDATMD SNLP (NLS)'/ &
2161  ' DATA : ',f8.3,e12.4,4f8.3)
2162 #endif
2163  !
2164 #ifdef W3_BT1
2165 9052 FORMAT (' TEST W3IOGR : MODULE W3GDATMD SBTP'/ &
2166  ' DATA : ',e10.3)
2167 #endif
2168  !
2169 #ifdef W3_DB1
2170 9053 FORMAT (' TEST W3IOGR : MODULE W3GDATMD SDBP'/ &
2171  ' DATA : ',2e10.3,l4)
2172 #endif
2173  !
2174 #ifdef W3_PR2
2175 9060 FORMAT (' TEST W3IOGR : MODULE W3GDATMD PROP'/ &
2176  ' DATA : ',2e10.3)
2177 #endif
2178  !
2179 #ifdef W3_PR3
2180 9060 FORMAT (' TEST W3IOGR : MODULE W3GDATMD PROP'/ &
2181  ' DATA : ',2f6.2)
2182 #endif
2183  !
2184 #ifdef W3_SMC
2185 9260 FORMAT (' TEST W3IOGR : MODULE W3GDATMD SMCG'/ &
2186  ' DATA : ',3e10.3)
2187 #endif
2188  !
2189 #ifdef W3_T
2190 9070 FORMAT (' TEST W3IOGR : DISPERSION INTEPOLATION TABLES')
2191 #endif
2192  !/
2193  !/ End of W3IOGR ----------------------------------------------------- /
2194  !/
2195  END SUBROUTINE w3iogr
2196  !/
2197  !/ End of module W3IOGRMD -------------------------------------------- /
2198  !/
2199 END MODULE w3iogrmd
w3gdatmd::nk
integer, pointer nk
Definition: w3gdatmd.F90:1230
w3odatmd::nbo
integer, dimension(:), pointer nbo
Definition: w3odatmd.F90:531
w3src3md::insin3
subroutine insin3
Initialization for source term routine.
Definition: w3src3md.F90:727
include
cmake src_list cmake include(${CMAKE_CURRENT_SOURCE_DIR}/cmake/check_switches.cmake) check_switches("$
Definition: CMakeLists.txt:15
w3snl2md::insnl2
subroutine insnl2
Preprocessing for nonlinear interactions (Xnl).
Definition: w3snl2md.F90:295
w3uostmd
Parmeterization of the unresolved obstacles.
Definition: w3uostmd.F90:22
w3adatmd
Define data structures to set up wave model auxiliary data for several models simultaneously.
Definition: w3adatmd.F90:26
w3snl1md::insnlgqm
subroutine insnlgqm
Definition: w3snl1md.F90:1500
w3gdatmd::mrfct
integer, pointer mrfct
Definition: w3gdatmd.F90:1167
w3src4md::delust
real delust
Definition: w3src4md.F90:96
w3odatmd::iaproc
integer, pointer iaproc
Definition: w3odatmd.F90:457
w3gdatmd::gname
character(len=30), pointer gname
Definition: w3gdatmd.F90:1223
w3gdatmd::ny
integer, pointer ny
Definition: w3gdatmd.F90:1097
w3odatmd::fnmpre
character(len=80) fnmpre
Definition: w3odatmd.F90:330
w3odatmd::nbi
integer, pointer nbi
Definition: w3odatmd.F90:530
w3src4md::taut
real, dimension(:,:), allocatable taut
Definition: w3src4md.F90:95
w3src4md::tauhft2
real, dimension(:,:,:), allocatable tauhft2
Definition: w3src4md.F90:95
w3gdatmd::nglo
integer, pointer nglo
Definition: w3gdatmd.F90:1168
w3gdatmd::w3setg
subroutine w3setg(IMOD, NDSE, NDST)
Definition: w3gdatmd.F90:2152
w3odatmd::ndse
integer, pointer ndse
Definition: w3odatmd.F90:456
w3gdatmd::nbsmc
integer, pointer nbsmc
Definition: w3gdatmd.F90:1168
w3gdatmd::nufc
integer, pointer nufc
Definition: w3gdatmd.F90:1167
w3odatmd::naperr
integer, pointer naperr
Definition: w3odatmd.F90:457
w3src4md::insin4
subroutine insin4(FLTABS)
Initialization for source term routine.
Definition: w3src4md.F90:1012
w3gdatmd::nvfc
integer, pointer nvfc
Definition: w3gdatmd.F90:1167
w3src4md::deltail
real deltail
Definition: w3src4md.F90:98
w3gdatmd::nsea
integer, pointer nsea
Definition: w3gdatmd.F90:1097
w3src4md::delalp
real delalp
Definition: w3src4md.F90:96
w3servmd
Definition: w3servmd.F90:3
w3gdatmd::nbac
integer, pointer nbac
Definition: w3gdatmd.F90:1168
w3odatmd::nbo2
integer, dimension(:), pointer nbo2
Definition: w3odatmd.F90:531
w3timemd::caltype
character, public caltype
Definition: w3timemd.F90:79
w3sis2md::insis2
subroutine, public insis2
Fill tables used for scattering.
Definition: w3sis2md.F90:104
w3odatmd::w3seto
subroutine w3seto(IMOD, NDSERR, NDSTST)
Definition: w3odatmd.F90:1523
w3servmd::print_memcheck
subroutine print_memcheck(iun, msg)
Write memory statistics if requested.
Definition: w3servmd.F90:2033
w3snlsmd
Nonlinear interaction based ‘smoother’ for high frequencies.
Definition: w3snlsmd.F90:21
w3gdatmd::nth
integer, pointer nth
Definition: w3gdatmd.F90:1230
w3odatmd
Definition: w3odatmd.F90:3
w3odatmd::nfbpo
integer, pointer nfbpo
Definition: w3odatmd.F90:530
w3src4md::dikcumul
integer dikcumul
Definition: w3src4md.F90:101
w3iogrmd::w3iogr
subroutine w3iogr(INXOUT, NDSM, IMOD, FEXT ifdef W3_ASCII
Reading and writing of the model definition file.
Definition: w3iogrmd.F90:117
w3gdatmd::nbgl
integer, pointer nbgl
Definition: w3gdatmd.F90:1168
file
file(STRINGS ${CMAKE_BINARY_DIR}/switch switch_strings) separate_arguments(switches UNIX_COMMAND $
Definition: CMakeLists.txt:3
w3iogrmd
Reading/writing of model definition file.
Definition: w3iogrmd.F90:20
w3src2md::inptab
subroutine inptab
Generate an interpolation table for the air-sea interaction parameter of Chalikov and Belevich (1993)...
Definition: w3src2md.F90:848
w3uostmd::uost_initgrid
subroutine, public uost_initgrid(IGRID, FILELOCAL, FILESHADOW, LOCALFACTOR, SHADOWFACTOR)
Allocate the UOST variables for a given grid, and load them from file.
Definition: w3uostmd.F90:123
w3servmd::strace
subroutine strace(IENT, SNAME)
Definition: w3servmd.F90:148
w3sis2md
Floe-size dependant scattering of waves in the marginal ice zone.
Definition: w3sis2md.F90:33
w3src4md::tauhft
real, dimension(:,:), allocatable tauhft
Definition: w3src4md.F90:95
w3src4md::deltauw
real deltauw
Definition: w3src4md.F90:96
w3snl5md::insnl5
subroutine, public insnl5
Initialization for the GKE module (Prepare wavenumber grid & kernel coefficients).
Definition: w3snl5md.F90:435
w3odatmd::ndst
integer, pointer ndst
Definition: w3odatmd.F90:456
w3adatmd::mpi_comm_wave
integer, pointer mpi_comm_wave
Definition: w3adatmd.F90:676
w3gdatmd::narc
integer, pointer narc
Definition: w3gdatmd.F90:1168
constants
Define some much-used constants for global use (all defined as PARAMETER).
Definition: constants.F90:20
w3gdatmd
Definition: w3gdatmd.F90:16
w3snl1md::insnl1
subroutine insnl1(IMOD)
Preprocessing for nonlinear interactions (weights).
Definition: w3snl1md.F90:483
constants::file_endian
character(*), parameter file_endian
FILE_ENDIAN Filled by preprocessor with 'big_endian', 'little_endian', or 'native'.
Definition: constants.F90:86
w3servmd::extcde
subroutine extcde(IEXIT, UNIT, MSG, FILE, LINE, COMM)
Definition: w3servmd.F90:736
w3snl3md
Generalized and optimized multiple DIA implementation.
Definition: w3snl3md.F90:24
w3snl5md
Interface module for GKE (resonant & quasi-resonant four-wave interactions).
Definition: w3snl5md.F90:25
w3gdatmd::ncel
integer, pointer ncel
Definition: w3gdatmd.F90:1167
w3src3md
The 'WAM4+' source terms based on P.A.E.M.
Definition: w3src3md.F90:30
w3src4md
The 'SHOM/Ifremer' source terms based on P.A.E.M.
Definition: w3src4md.F90:28
w3snl1md
Bundles routines to calculate nonlinear wave-wave interactions according to the Discrete Interaction ...
Definition: w3snl1md.F90:25
w3snl2md
Interface module to exact nonlinear interactions.
Definition: w3snl2md.F90:23
w3src2md
Tolman and Chalikov (1996) input and dissipation source terms.
Definition: w3src2md.F90:16
w3snl3md::insnl3
subroutine insnl3
Initialization for generalized multiple DIA routine.
Definition: w3snl3md.F90:788
w3snlsmd::insnls
subroutine insnls
Initializations for the Snl / filter source term for high frequencies.
Definition: w3snlsmd.F90:667
w3gdatmd::nrlv
integer, pointer nrlv
Definition: w3gdatmd.F90:1167
w3src4md::delu
real delu
Definition: w3src4md.F90:96
w3gdatmd::nx
integer, pointer nx
Definition: w3gdatmd.F90:1097
w3timemd
Definition: w3timemd.F90:3
w3dispmd
Definition: w3dispmd.F90:3
w3gdatmd::filext
character(len=13), pointer filext
Definition: w3gdatmd.F90:1224