WAVEWATCH III  beta 0.0.1
w3iorsmd Module Reference

Read/write restart files. More...

Functions/Subroutines

subroutine w3iors (INXOUT, NDSR, DUMFPI, IMOD, FLRSTRT)
 Reads/writes restart files. More...
 

Variables

logical oarst
 

Detailed Description

Read/write restart files.

Author
H. L. Tolman
Date
22-Mar-2021

Function/Subroutine Documentation

◆ w3iors()

subroutine w3iorsmd::w3iors ( character, dimension(*), intent(in)  INXOUT,
integer  NDSR,
real, intent(inout)  DUMFPI,
integer, intent(in), optional  IMOD,
logical, intent(in), optional  FLRSTRT 
)

Reads/writes restart files.

     The file is opened within the routine, the name is pre-defined
     and the unit number is given in the parameter list. The restart
     file is written using UNFORMATTED write statements. The routine
     generates new names when called more than once. File names are :

                                 restart000.FILEXT
                                 restart001.FILEXT
                                 restart002.FILEXT etc.

     Optionally, a second stream of restart files is generated given
     a secondary stride definad by an additional start/end time line
     triggered by an optional argument added to the end of the stan-
     dard restart request line (a sixth argument flag set to T). File
     names include a time-tag prefix:

                                YYYYMMDD.HHMMSS.restart.FILEXT

     The file to be read thus always is unnumbered, whereas all
     written files are automatically numbered.
Parameters
[in]INXOUTTest string for read/write.
[in,out]NDSRFile unit number.
[in]DUMFPIDummy values for FPIS for cold start.
[in]IMODOptional grid number, defaults to 1.
[in]FLRSTRTA second request for restart files (optional TRUE).
Author
H. L. Tolman
Date
22-Mar-2021

Definition at line 113 of file w3iorsmd.F90.

113  !/
114  !/ +-----------------------------------+
115  !/ | WAVEWATCH III NOAA/NCEP |
116  !/ | H. L. Tolman |
117  !/ | FORTRAN 90 |
118  !/ | Last update : 22-Mar-2021 |
119  !/ +-----------------------------------+
120  !/
121  !/ 12-Jan-1999 : Final FORTRAN 77 ( version 1.18 )
122  !/ 27-Dec-1999 : Upgrade to FORTRAN 90 ( version 2.00 )
123  !/ 30-Apr-2002 : Add ice for transparencies. ( version 2.20 )
124  !/ 13-Nov-2002 : Add stress as vector. ( version 3.00 )
125  !/ 19-Aug-2003 : Output server options added. ( version 3.04 )
126  !/ 09-Dec-2004 : Multiple grid version. ( version 3.06 )
127  !/ 24-Jun-2005 : Adding MAPST2. ( version 3.07 )
128  !/ 27-Jun-2006 : Adding file name preamble. ( version 3.09 )
129  !/ 05-Jul-2006 : Consolidate stress arrays. ( version 3.09 )
130  !/ 08-May-2007 : Starting from calm as an option. ( version 3.11 )
131  !/ 17-May-2007 : Adding NTPROC/NAPROC separation. ( version 3.11 )
132  !/ 22-Jun-2007 : Dedicated output processes. ( version 3.11 )
133  !/ 15-Apr-2008 : Clean up for distribution. ( version 3.14 )
134  !/ 21-Apr-2008 : Remove PGI bug internal files. ( version 3.14 )
135  !/ 29-May-2009 : Preparing distribution version. ( version 3.14 )
136  !/ 30-Oct-2009 : Output file name with 3 digit id. ( version 3.14 )
137  !/ (W. E. Rogers, NRL)
138  !/ 14-Nov-2013 : Remove cold start init. UST(DIR). ( version 4.13 )
139  !/ 31-May-2016 : Optimize restart file size for un- ( version 5.10 )
140  !/ structured grid and restart read.
141  !/ (M. Ward, NCI, S. Zieger, BOM)
142  !/ 10-Mar-2017 : File access mode changed to 'STREAM'( version 6.02 )
143  !/ (S. Zieger, BOM)
144  !/ 09-Aug-2017 : Bug fix for MPI restart read issue ( version 6.02 )
145  !/ (T. Campbell, NRL)
146  !/ 05-Jun-2018 : Add PDLIB/TIMINGS/DEBUGIO ( version 6.04 )
147  !/ DEBUGINIT/MPI
148  !/ 19-Dec-2019 : Optional second stream of ( version 7.00 )
149  !/ restart files
150  !/ (Roberto Padilla-Hernandez & J.H. Alves)
151  !/ 25-Sep-2020 : Extra fields for coupled restart ( version 7.10 )
152  !/ 22-Mar-2021 : Add new coupling fields in restart ( version 7.13 )
153  !/ 18-May-2021 : Read by default all extra restart ( version 7.13 )
154  !/
155  !/ Copyright 2009-2013 National Weather Service (NWS),
156  !/ National Oceanic and Atmospheric Administration. All rights
157  !/ reserved. WAVEWATCH III is a trademark of the NWS.
158  !/ No unauthorized use without permission.
159  !/
160  ! 1. Purpose :
161  !
162  ! Reads/writes restart files.
163  !
164  ! 2. Method :
165  !
166  ! The file is opened within the routine, the name is pre-defined
167  ! and the unit number is given in the parameter list. The restart
168  ! file is written using UNFORMATTED write statements. The routine
169  ! generates new names when called more than once. File names are :
170  !
171  ! restart000.FILEXT
172  ! restart001.FILEXT
173  ! restart002.FILEXT etc.
174  !
175  ! Optionally, a second stream of restart files is generated given
176  ! a secondary stride definad by an additional start/end time line
177  ! triggered by an optional argument added to the end of the stan-
178  ! dard restart request line (a sixth argument flag set to T). File
179  ! names include a time-tag prefix:
180  !
181  ! YYYYMMDD.HHMMSS.restart.FILEXT
182  !
183  ! The file to be read thus always is unnumbered, whereas all
184  ! written files are automatically numbered.
185  !
186  ! 3. Parameters :
187  !
188  ! Parameter list
189  ! ----------------------------------------------------------------
190  ! INXOUT C*(*) I Test string for read/write, valid are:
191  ! 'READ' Reading of a restart file.
192  ! 'HOT' Writing a full restart from the model.
193  ! 'COLD' Writing a cold start file.
194  ! 'WIND' Initialize fields using first wind
195  ! field.
196  ! 'CALM' Starting from calm conditions.
197  ! NDSR Int. I/O File unit number.
198  ! DUMFPI Real I Dummy values for FPIS for cold start.
199  ! RSTYPE Int. O Type of input field,
200  ! 0 : cold start,
201  ! 1 : cold start with fetch-limited spectra,
202  ! 2 : full restart,
203  ! 3 : for writing file.
204  ! 4 : starting from calm.
205  ! IMOD Int. I Optional grid number, defaults to 1.
206  ! FLRSTRT LOGIC I OTIONAL TRUE: A second request for restart files
207  ! ----------------------------------------------------------------
208  !
209  ! 4. Subroutines used :
210  !
211  ! See module documentation.
212  !
213  ! 5. Called by :
214  !
215  ! Name Type Module Description
216  ! ----------------------------------------------------------------
217  ! W3INIT Subr. W3INITMD Wave model initialization routine.
218  ! W3WAVE Subr. W3WAVEMD Actual wave model routine.
219  ! WW3_STRT Prog. N/A Initial conditions program.
220  ! ----------------------------------------------------------------
221  !
222  ! 6. Error messages :
223  !
224  ! Tests on INXOUT, file status and on array dimensions.
225  !
226  ! 7. Remarks :
227  !
228  ! - MAPSTA is dumped as it contains information on inactive points.
229  ! Note that the original MAPSTA is dumped in the model def. file
230  ! for use in the initial conditions (and output) programs.
231  ! - Note that MAPSTA and MAPST2 data is combinded in the file.
232  ! - The depth is recalculated in a write to avoid floating point
233  ! errors in W3STRT.
234  ! - Fields and field info read by all, written by las processor
235  ! only.
236  ! - The MPP version of the model will perform a gather here to
237  ! maximize hiding of communication with IO.
238  !
239  ! 8. Structure :
240  !
241  ! +---------------------------------------------------------------+
242  ! | initialisations |
243  ! | test INXOUT |
244  ! | open file |
245  ! +---------------------------------------------------------------|
246  ! | WRITE ? |
247  ! | Y N |
248  ! |-------------------------------|-------------------------------|
249  ! | Write identifiers and | Write identifiers and |
250  ! | dimensions. | dimensions. |
251  ! | | Check ident. and dimensions. |
252  ! +-------------------------------+-------------------------------|
253  ! | Full restart ? |
254  ! | Y N |
255  ! |-------------------------------|-------------------------------|
256  ! | read/write/test time | |
257  ! +-------------------------------+-------------------------------|
258  ! | WRITE ? |
259  ! | Y N |
260  ! |-------------------------------|-------------------------------|
261  ! | TYPE = 'WIND' ? | TYPE = 'WIND' ? |
262  ! | Y N | Y N |
263  ! |---------------|---------------|---------------|---------------|
264  ! | close file | write spectra | gen. fetch-l. | read spectra |
265  ! | RETURN | | spectra. | |
266  ! |---------------+---------------+---------------+---------------|
267  ! | WRITE ? |
268  ! | Y N |
269  ! |-------------------------------|-------------------------------|
270  ! | TYPE = 'FULL' ? | TYPE = 'FULL' ? |
271  ! | Y N | Y N |
272  ! |---------------|---------------|---------------|---------------|
273  ! | write level & | ( prep. level | read level & | initalize l.& |
274  ! | (ice) map & | for test | (ice) map.& | times |
275  ! | times | output ) | times | ( no ice ) |
276  ! +---------------+---------------+---------------+-------------- +
277  !
278  ! 9. Switches :
279  !
280  ! !/SEED Linear input / seeding option.
281  ! !/LNx
282  !
283  ! !/SHRD Switch for shared / distributed memory architecture.
284  ! !/DIST Id.
285  ! !/MPI Id.
286  !
287  ! !/S Enable subroutine tracing.
288  ! !/T Enable test output
289  !
290  ! 10. Source code :
291  !
292  !/ ------------------------------------------------------------------- /
293  USE w3gdatmd, ONLY: w3setg, w3setref, rstype
294  USE w3odatmd, ONLY: w3seto
295  USE w3adatmd, ONLY: w3seta, w3xeta, nsealm
296  USE w3adatmd, ONLY: cx, cy, hs, wlm, t0m1, t01, fp0, thm, charn,&
297  tauwix, tauwiy, tws, tauox, tauoy, bhd, &
298  phioc, tusx, tusy, ussx, ussy, tauice, &
299  uba, ubd, phibbl, taubbl, tauocx, tauocy, &
300  wnmean
301  !/
302  USE w3gdatmd, ONLY: nx, ny, nsea, nseal, nspec, mapsta, mapst2, &
304  USE w3triamd, ONLY: set_ug_iobp
305  USE w3wdatmd
306 #ifdef W3_WRST
307  USE w3idatmd, ONLY: wxn, wyn, w3seti
308  USE w3idatmd, ONLY: wxnwrst, wynwrst
309 #endif
310  USE w3odatmd, ONLY: ndse, ndst, iaproc, naproc, naperr, naprst, &
311  ifile => ifile4, fnmpre, ntproc, iostyp, &
313 #ifdef W3_MPI
314  USE w3odatmd, ONLY: nrqrs, nblkrs, rsblks, irqrs, irqrss, &
315  vaaux
316  USE w3adatmd, ONLY: mpi_comm_wcmp
317 #endif
318  !/
319  USE w3servmd, ONLY: extcde
320  USE constants, only: lpdlib, file_endian
322  USE w3gdatmd, ONLY: nk, nth
323 #ifdef W3_TIMINGS
324  USE w3parall, ONLY: print_my_time
325 #endif
326 #ifdef W3_PDLIB
327  USE pdlib_field_vec
328 #endif
329 #ifdef W3_S
330  USE w3servmd, ONLY: strace
331 #endif
332  !
333  IMPLICIT NONE
334  !
335 #ifdef W3_MPI
336  include "mpif.h"
337 #endif
338  !/
339  !/ ------------------------------------------------------------------- /
340  !/ Parameter list
341  !/
342  INTEGER :: NDSR
343  ! INTEGER, INTENT(IN) :: NDSR
344  INTEGER, INTENT(IN), OPTIONAL :: IMOD
345  REAL, INTENT(INOUT) :: DUMFPI
346  CHARACTER, INTENT(IN) :: INXOUT*(*)
347  LOGICAL, INTENT(IN),OPTIONAL :: FLRSTRT
348  !/
349  !/ ------------------------------------------------------------------- /
350  !/ Local parameters
351  !/
352  INTEGER, PARAMETER :: LRB = 4
353  !
354  INTEGER :: IGRD, I, J, LRECL, NSIZE, IERR, &
355  NSEAT, MSPEC, TTIME(2), ISEA, JSEA, &
356  NREC, NPART, IPART, IX, IY, IXL, IP, &
357  NPRTX2, NPRTY2, IYL, ITMP
358  INTEGER, ALLOCATABLE :: MAPTMP(:,:)
359 #ifdef W3_S
360  INTEGER, SAVE :: IENT = 0
361 #endif
362 #ifdef W3_MPI
363  INTEGER :: IERR_MPI, IH, IB, ISEA0, ISEAN, &
364  NRQ, NSEAL_MIN
365 #endif
366  INTEGER(KIND=8) :: RPOS
367 #ifdef W3_MPI
368  INTEGER, ALLOCATABLE :: STAT1(:,:), STAT2(:,:)
369  REAL, ALLOCATABLE :: VGBUFF(:), VLBUFF(:)
370 #endif
371  REAL(KIND=lrb), ALLOCATABLE :: writebuff(:), tmp(:), tmp2(:)
372 
373  LOGICAL :: WRITE, IOSFLG
374  LOGICAL :: FLOGOA(NOGRP,NGRPP)
375  LOGICAL :: NDSROPN
376  CHARACTER(LEN=4) :: TYPE
377  CHARACTER(LEN=10) :: VERTST
378  ! CHARACTER(LEN=21) :: FNAME
379  CHARACTER(LEN=40) :: FNAME
380  CHARACTER(LEN=26) :: IDTST
381  CHARACTER(LEN=30) :: TNAME
382  CHARACTER(LEN=15) :: TIMETAG
383  !/
384  !/ ------------------------------------------------------------------- /
385  !/
386 #ifdef W3_S
387  CALL strace (ient, 'W3IORS')
388 #endif
389  !
390  !
391  ! Constant NDSR for using mpiifort in ZEUS ... paralell runs crashing
392  ! because compiler doesn't accept reciclyng of UNIT for FORMATTED or
393  ! UNFORMATTED files in OPEN
394  !
395  ! NDSR = 525
396 
397  iosflg = iostyp .GT. 0
398  !
399  ! test parameter list input ------------------------------------------ *
400  !
401  IF ( PRESENT(imod) ) THEN
402  igrd = imod
403  ELSE
404  igrd = 1
405  END IF
406  !
407  CALL w3seto ( igrd, ndse, ndst )
408  CALL w3setg ( igrd, ndse, ndst )
409  CALL w3setw ( igrd, ndse, ndst )
410 #ifdef W3_WRST
411  CALL w3seti ( igrd, ndse, ndst )
412 #endif
413  !
414  IF (inxout.NE.'READ' .AND. inxout.NE.'HOT' .AND. &
415  inxout.NE.'COLD' .AND. inxout.NE.'WIND' .AND. &
416  inxout.NE.'CALM' ) THEN
417  IF ( iaproc .EQ. naperr ) WRITE (ndse,900) inxout
418  CALL extcde ( 1 )
419  END IF
420  !
421  WRITE = inxout .NE. 'READ'
422  IF ( inxout .EQ. 'HOT' ) THEN
423  TYPE = 'FULL'
424  ELSE
425  TYPE = inxout
426  END IF
427  !
428 #ifdef W3_T
429  WRITE (ndst,9000) inxout, WRITE, ntproc, naproc, iaproc, naprst
430 #endif
431  !
432  ! initializations ---------------------------------------------------- *
433  !
434  IF ( .NOT.dinit ) THEN
435  IF ( iaproc .LE. naproc ) THEN
436  CALL w3dimw ( imod, ndse, ndst )
437  ELSE
438  CALL w3dimw ( imod, ndse, ndst, .false. )
439  END IF
440  END IF
441  !
442  IF ( iaproc .LE. naproc ) va(:,0) = 0.
443  !
444  lrecl = max( lrb*nspec , &
445  lrb*(6+(25/lrb)+(9/lrb)+(29/lrb)+(3/lrb)) )
446  nsize = lrecl / lrb
447  ! --- Allocate buffer array with zeros (used to
448  ! fill bytes up to size LRECL). ---
449  ALLOCATE(writebuff(nsize))
450  writebuff(:) = 0.
451  !
452  ! Allocate memory to receive fields needed for coupling
453  IF (oarst) THEN
454  ALLOCATE(tmp(nsea))
455  ALLOCATE(tmp2(nsea))
456  ENDIF
457  !
458  ! open file ---------------------------------------------------------- *
459  !
460  i = len_trim(filext)
461  j = len_trim(fnmpre)
462  !
463  !CHECKPOINT RESTART FILE
464  itmp=0
465  IF ( PRESENT(flrstrt) ) THEN
466  IF (flrstrt) THEN
467  WRITE(timetag,"(i8.8,'.'i6.6)")time(1),time(2)
468  fname=timetag//'.restart.'//filext(:i)
469  itmp=1
470  END IF
471  END IF
472  IF(itmp.NE.1)THEN ! FNAME is not set above, so do it here
473  IF ( ifile.EQ.0 ) THEN
474  fname = 'restart.'//filext(:i)
475  ELSE
476  fname = 'restartNNN.'//filext(:i)
477  IF ( WRITE .AND. iaproc.EQ.naprst ) &
478  WRITE (fname(8:10),'(I3.3)') ifile
479  END IF
480  END IF
481 
482  ifile = ifile + 1
483  !
484 #ifdef W3_T
485  WRITE (ndst,9001) fname, lrecl
486 #endif
487  !
488 
489  IF(ndst.EQ.ndsr)THEN
490  IF ( iaproc .EQ. naperr ) &
491  WRITE(ndse,'(A,I8)')'UNIT NUMBERS OF RESTART FILE AND '&
492  //'TEST OUTPUT ARE THE SAME : ',ndst
493  CALL extcde ( 15 )
494  ENDIF
495 
496  IF ( WRITE ) THEN
497  IF ( .NOT.iosflg .OR. iaproc.EQ.naprst ) &
498  OPEN (ndsr,file=fnmpre(:j)//fname,form='UNFORMATTED', convert=file_endian, &
499  access='STREAM',err=800,iostat=ierr)
500  ELSE
501  OPEN (ndsr,file=fnmpre(:j)//fname,form='UNFORMATTED', convert=file_endian, &
502  access='STREAM',err=800,iostat=ierr, &
503  status='OLD',action='READ')
504  END IF
505  !
506  ! test info ---------------------------------------------------------- *
507  !
508  IF ( WRITE ) THEN
509  !
510  IF ( iaproc .EQ. naprst ) THEN
511  ! Because data has mixed data types we do not know how many
512  ! bytes remain to fill up to LRECL. ---
513  ! --- Make the entire record zero ---
514  writebuff(:) = 0.
515  WRITE (ndsr,pos=1) writebuff
516  ! --- Replace zeros with data ---
517  WRITE (ndsr,pos=1) idstr, verini, gname, TYPE, NSEA, &
518  NSPEC, FLOGRR
519  END IF
520  rstype = 3
521  !
522  ELSE
523  READ (ndsr,pos=1,err=802,iostat=ierr) &
524  idtst, vertst, tname, TYPE, NSEAT, MSPEC, FLOGOA
525  !
526  IF ( idtst .NE. idstr ) THEN
527  IF ( iaproc .EQ. naperr ) &
528  WRITE (ndse,901) idtst, idstr
529  CALL extcde ( 10 )
530  END IF
531  IF ( vertst .NE. verini ) THEN
532  IF ( iaproc .EQ. naperr ) &
533  WRITE (ndse,902) vertst, verini
534  CALL extcde ( 11 )
535  END IF
536  IF ( tname .NE. gname ) THEN
537  IF ( iaproc .EQ. naperr ) &
538  WRITE (ndse,903) tname, gname
539  END IF
540  IF (type.NE.'FULL' .AND. type.NE.'COLD' .AND. &
541  type.NE.'WIND' .AND. type.NE.'CALM' ) THEN
542  IF ( iaproc .EQ. naperr ) &
543  WRITE (ndse,904) TYPE
544  CALL extcde ( 12 )
545  END IF
546  IF (nseat.NE.nsea .OR. nspec.NE.mspec) THEN
547  IF ( iaproc .EQ. naperr ) &
548  WRITE (ndse,905) mspec, nseat, nspec, nsea
549  CALL extcde ( 13 )
550  END IF
551  IF (type.EQ.'FULL') THEN
552  rstype = 2
553  ELSE IF (type.EQ.'WIND') THEN
554  rstype = 1
555  ELSE IF (type.EQ.'CALM') THEN
556  rstype = 4
557  ELSE
558  rstype = 0
559  END IF
560 
561  IF (.NOT. WRITE .AND. oarst .AND. iaproc .EQ. naproc) THEN
562  DO i=1, nogrp
563  DO j=1, ngrpp
564  IF (flogrr(i,j) .AND. .NOT. flogoa(i,j)) THEN
565  WRITE(screen,1000) i, j
566  ENDIF
567  ENDDO
568  ENDDO
569  ENDIF
570  !
571  END IF
572  !
573 100 CONTINUE
574  !
575 #ifdef W3_T
576  WRITE (ndst,9002) idstr, verini, gname, TYPE, &
577  NSEA, NSEAL, NSPEC
578 #endif
579  !
580  ! TIME if required --------------------------------------------------- *
581  !
582  IF (type.EQ.'FULL') THEN
583  rpos = 1_8 + lrecl*(2-1_8)
584  IF ( WRITE ) THEN
585  IF ( iaproc .EQ. naprst ) THEN
586  writebuff(:) = 0.
587  WRITE (ndsr,pos=rpos) writebuff
588  WRITE (ndsr,pos=rpos) time
589  END IF
590  ELSE
591  READ (ndsr,pos=rpos,err=802,iostat=ierr) ttime
592  IF (time(1).NE.ttime(1) .OR. time(2).NE.ttime(2)) THEN
593  IF ( iaproc .EQ. naperr ) &
594  WRITE (ndse,906) ttime, time
595  CALL extcde ( 20 )
596  END IF
597  END IF
598  !
599 #ifdef W3_T
600  WRITE (ndst,9003) time
601  ELSE
602  WRITE (ndst,9004)
603 #endif
604  !
605  END IF
606  !
607  ! Spectra ------------------------------------------------------------ *
608  ! ( Bail out if write for TYPE.EQ.'WIND' )
609  !
610  IF ( WRITE ) THEN
611  IF ( type.EQ.'WIND' .OR. type.EQ.'CALM' ) THEN
612  IF ( .NOT.iosflg .OR. iaproc.EQ.naprst ) THEN
613  CLOSE ( ndsr )
614  END IF
615 #ifdef W3_T
616  WRITE (ndst,9005) TYPE
617 #endif
618  ! Clean up file handles and allocated arrays
619  INQUIRE (unit=ndsr, opened=ndsropn)
620  IF (ndsropn) CLOSE(ndsr)
621  IF (ALLOCATED(writebuff)) DEALLOCATE(writebuff)
622  IF (ALLOCATED(tmp)) DEALLOCATE(tmp)
623  IF (ALLOCATED(tmp2)) DEALLOCATE(tmp2)
624 
625  RETURN
626  ELSE IF ( iaproc.LE.naproc .OR. iaproc.EQ. naprst ) THEN
627  !
628  ! Original non-server version writing of spectra
629  !
630  IF ( .NOT.iosflg .OR. (naproc.EQ.1.AND.naprst.EQ.1) ) THEN
631 #ifdef W3_MPI
632  DO jsea=1, nseal
633  CALL init_get_isea(isea, jsea)
634  nrec = isea + 2
635  rpos = 1_8 + lrecl*(nrec-1_8)
636  writebuff(:) = 0.
637  writebuff(1:nspec) = va(1:nspec,jsea)
638  WRITE (ndsr,pos=rpos,err=803,iostat=ierr) writebuff
639  END DO
640 #else
641  DO jsea=1, nsea
642  isea = jsea
643  nrec = isea + 2
644  rpos = 1_8 + lrecl*(nrec-1_8)
645  writebuff(:) = 0.
646  writebuff(1:nspec) = va(1:nspec,jsea)
647  WRITE (ndsr,pos=rpos,err=803,iostat=ierr) writebuff
648  END DO
649 #endif
650  !
651  ! I/O server version writing of spectra ( !/MPI )
652  !
653 #ifdef W3_MPI
654  ELSE
655  !
656  IF (lpdlib) THEN
657 #endif
658 #ifdef W3_TIMINGS
659  CALL print_my_time("Before UNST_PDLIB_WRITE_TO_FILE")
660 #endif
661 #ifdef W3_PDLIB
662  CALL unst_pdlib_write_to_file(ndsr)
663 #endif
664 #ifdef W3_TIMINGS
665  CALL print_my_time("After UNST_PDLIB_WRITE_TO_FILE")
666 #endif
667 #ifdef W3_MPI
668  ELSE
669 
670  IF ( iaproc .NE. naprst ) THEN
671  nrq = 1
672  ELSE IF ( naprst .LE. naproc ) THEN
673  nrq = naproc - 1
674  ELSE
675  nrq = naproc
676  END IF
677  !
678  ALLOCATE ( stat1(mpi_status_size,nrq) )
679  IF ( iaproc .EQ. naprst ) CALL mpi_startall &
680  ( nrq, irqrss, ierr_mpi )
681  !
682  DO ib=1, nblkrs
683  isea0 = 1 + (ib-1)*rsblks*naproc
684  isean = min( nsea , ib*rsblks*naproc )
685  !
686  IF ( iaproc .EQ. naprst ) THEN
687  !
688  ih = 1 + nrq * (ib-1)
689  CALL mpi_waitall &
690  ( nrq, irqrss(ih), stat1, ierr_mpi )
691  IF ( ib .LT. nblkrs ) THEN
692  ih = 1 + nrq * ib
693  CALL mpi_startall &
694  ( nrq, irqrss(ih), ierr_mpi )
695  END IF
696  !
697  DO isea=isea0, isean
698  nrec = isea + 2
699  CALL init_get_jsea_isproc(isea, jsea, ip)
700  rpos = 1_8 + lrecl*(nrec-1_8)
701  writebuff(:) = 0.
702  IF ( ip .EQ. naprst ) THEN
703  writebuff(1:nspec) = va(1:nspec,jsea)
704  ELSE
705  jsea = jsea - 2*((ib-1)/2)*rsblks
706  writebuff(1:nspec) = vaaux(1:nspec,jsea,ip)
707  END IF
708  WRITE (ndsr,pos=rpos,err=803,iostat=ierr) &
709  writebuff
710  END DO
711  !
712  ELSE
713  !
714  CALL mpi_startall &
715  ( 1, irqrss(ib), ierr_mpi )
716  CALL mpi_waitall &
717  ( 1, irqrss(ib), stat1, ierr_mpi )
718  !
719  END IF
720  END DO
721  !
722  DEALLOCATE ( stat1 )
723  END IF
724 #endif
725  !
726  END IF
727  !
728  END IF
729  ELSE
730  !
731  ! Reading spectra
732  !
733  IF ( type.EQ.'WIND' .OR. type.EQ.'CALM' ) THEN
734 #ifdef W3_T
735  WRITE (ndst,9020) TYPE
736 #endif
737  ELSE
738  IF (lpdlib) THEN
739 #ifdef W3_TIMINGS
740  CALL print_my_time("Before UNST_PDLIB_READ_FROM_FILE")
741 #endif
742 #ifdef W3_PDLIB
743  CALL unst_pdlib_read_from_file(ndsr)
744 #endif
745 #ifdef W3_TIMINGS
746  CALL print_my_time("After UNST_PDLIB_READ_FROM_FILE")
747 #endif
748  ELSE
749 #ifdef W3_MPI
750  nseal_min = 1 + (nsea-naproc)/naproc
751  IF ( naproc.GT.1 ) THEN
752  !/ ----------- Large number of small-sized record reads will tend ---- *
753  !/ to perform badly on most file systems. We read this part
754  !/ using streams and scatter the results using MPI.
755  !/ ( M. WARD, NCI )
756  !
757  ! Begin computational proc. only section ---------------- *
758  IF ( iaproc.LE.naproc ) THEN
759  !
760  ! Main loop --------------------------------------------- *
761  ALLOCATE( vgbuff( nsize * naproc ) )
762  ALLOCATE( vlbuff( nsize ) )
763  !
764  DO jsea = 1, nseal_min
765  ! Read NAPROC records into buffer VGBUFF. ------------- *
766  IF ( iaproc .EQ. naproc ) THEN
767  rpos = 1_8 + (2 + (jsea - 1_8) * naproc) * lrecl
768  READ(ndsr, pos=rpos,err=802,iostat=ierr) vgbuff(:)
769  ELSE
770  vgbuff(:) = 0.
771  END IF
772  ! Distribute one record to each rank.
773  CALL mpi_scatter(vgbuff, nsize, mpi_real, &
774  vlbuff, nsize, mpi_real, &
775  naproc-1, mpi_comm_wcmp, ierr )
776  ! Transfer the spectral content of VLBUFF to VA. ------ *
777  va(1:nspec,jsea) = vlbuff(1:nspec)
778  END DO
779  !
780  ! Include remainder values (switch to record format) ---- *
781  jsea = nseal_min + 1
782  IF ( jsea.EQ.nseal ) THEN
783  CALL init_get_isea(isea, jsea)
784  nrec = isea + 2
785  rpos = 1_8 + lrecl*(nrec-1_8)
786  READ (ndsr, pos=rpos, err=802, iostat=ierr) &
787  (va(i,jsea), i=1,nspec)
788  END IF
789  !
790  DEALLOCATE( vgbuff )
791  DEALLOCATE( vlbuff )
792  !
793  ! End computational proc. only section ------------------ *
794  END IF
795  !
796  ELSE
797 #endif
798  va = 0.
799  DO jsea=1, nsea
800  CALL init_get_isea(isea, jsea)
801  nrec = isea + 2
802  rpos = 1_8 + lrecl*(nrec-1_8)
803  READ (ndsr,pos=rpos,err=802,iostat=ierr) &
804  (va(i,jsea),i=1,nspec)
805  ENDDO
806 #ifdef W3_MPI
807  END IF
808 #endif
809  END IF
810  END IF
811  END IF
812 
813  va = max(0.,va)
814  !
815 #ifdef W3_T
816  WRITE (ndst,9006)
817 #endif
818  !
819  ! Water level etc. if required --------------------------------------- *
820  ! ( For cold start write test output and cold start initialize
821  ! water levels. Note that MAPSTA overwrites the one read from the
822  ! model definition file, so that it need not be initialized. )
823  !
824  nrec = nsea + 3
825  npart = 1 + (nsea-1)/nsize
826  nprtx2 = 1 + (nx-1)/nsize
827  nprty2 = 1 + (ny-1)/nsize
828  !
829  IF ( WRITE ) THEN
830  !
831  IF (type.EQ.'FULL') THEN
832  !
833  IF ( iaproc .EQ. naprst ) THEN
834  !
835 #ifdef W3_MPI
836  if (associated(irqrs)) then
837  ALLOCATE ( stat2(mpi_status_size,nrqrs) )
838  CALL mpi_waitall &
839  ( nrqrs, irqrs , stat2, ierr_mpi )
840  DEALLOCATE ( stat2 )
841  end if
842 #endif
843  !
844  rpos = 1_8 + lrecl*(nrec-1_8)
845  writebuff(:) = 0.
846  WRITE (ndsr,pos=rpos,err=803,iostat=ierr) writebuff
847  WRITE (ndsr,pos=rpos,err=803,iostat=ierr) &
848  tlev, tice, trho, tic1, tic5
849  DO ipart=1,npart
850  nrec = nrec + 1
851  rpos = 1_8 + lrecl*(nrec-1_8)
852  WRITE (ndsr,pos=rpos,err=803,iostat=ierr) writebuff
853  WRITE (ndsr,pos=rpos,err=803,iostat=ierr) &
854  (wlv(isea),isea=1+(ipart-1)*nsize, &
855  min(nsea,ipart*nsize))
856  END DO
857  DO ipart=1,npart
858  nrec = nrec + 1
859  rpos = 1_8 + lrecl*(nrec-1_8)
860  WRITE (ndsr,pos=rpos,err=803,iostat=ierr) writebuff
861  WRITE (ndsr,pos=rpos,err=803,iostat=ierr) &
862  (ice(isea),isea=1+(ipart-1)*nsize, &
863  min(nsea,ipart*nsize))
864  END DO
865 
866 #ifdef W3_WRST
867  ! The WRST switch saves the values of wind in the
868  ! restart file and then uses the wind for the first
869  ! time step here. This is needed when coupling with
870  ! an atm model that does not have 10m wind speeds at
871  ! initialization. If there is no restart, wind is zero
872 #endif
873 
874 #ifdef W3_WRST
875  DO ix=1, nx
876  DO ipart=1,nprty2
877  nrec = nrec + 1
878  rpos = 1_8 + lrecl*(nrec-1_8)
879  WRITE (ndsr,pos=rpos,err=803,iostat=ierr) writebuff
880  WRITE (ndsr,pos=rpos,err=803,iostat=ierr) &
881  (wxn(ix,iyl),iyl=1+(ipart-1)*nsize, &
882  min(ny,ipart*nsize))
883  END DO
884  END DO
885  DO ix=1, nx
886  DO ipart=1,nprty2
887  nrec = nrec + 1
888  rpos = 1_8 + lrecl*(nrec-1_8)
889  WRITE (ndsr,pos=rpos,err=803,iostat=ierr) writebuff
890  WRITE (ndsr,pos=rpos,err=803,iostat=ierr) &
891  (wyn(ix,iyl),iyl=1+(ipart-1)*nsize, &
892  min(ny,ipart*nsize))
893  END DO
894  END DO
895 #endif
896  ALLOCATE ( maptmp(ny,nx) )
897  maptmp = mapsta + 8*mapst2
898  DO iy=1, ny
899  DO ipart=1,nprtx2
900  nrec = nrec + 1
901  rpos = 1_8 + lrecl*(nrec-1_8)
902  WRITE (ndsr,pos=rpos,err=803,iostat=ierr) &
903  writebuff
904  WRITE (ndsr,pos=rpos,err=803,iostat=ierr) &
905  (maptmp(iy,ixl),ixl=1+(ipart-1)*nsize, &
906  min(nx,ipart*nsize))
907  END DO
908  END DO
909  DEALLOCATE ( maptmp )
910  DO ipart=1,npart
911  nrec = nrec + 1
912  rpos = 1_8 + lrecl*(nrec-1_8)
913  WRITE (ndsr,pos=rpos,err=803,iostat=ierr) writebuff
914  WRITE (ndsr,pos=rpos,err=803,iostat=ierr) &
915  (ust(isea),isea=1+(ipart-1)*nsize, &
916  min(nsea,ipart*nsize))
917  END DO
918  DO ipart=1,npart
919  nrec = nrec + 1
920  rpos = 1_8 + lrecl*(nrec-1_8)
921  WRITE (ndsr,pos=rpos,err=803,iostat=ierr) writebuff
922  WRITE (ndsr,pos=rpos,err=803,iostat=ierr) &
923  (ustdir(isea),isea=1+(ipart-1)*nsize, &
924  min(nsea,ipart*nsize))
925  END DO
926  DO ipart=1,npart
927  nrec = nrec + 1
928  rpos = 1_8 + lrecl*(nrec-1_8)
929  WRITE (ndsr,pos=rpos,err=803,iostat=ierr) writebuff
930  WRITE (ndsr,pos=rpos,err=803,iostat=ierr) &
931  (asf(isea),isea=1+(ipart-1)*nsize, &
932  min(nsea,ipart*nsize))
933  END DO
934  DO ipart=1,npart
935  nrec = nrec + 1
936  rpos = 1_8 + lrecl*(nrec-1_8)
937  WRITE (ndsr,pos=rpos,err=803,iostat=ierr) writebuff
938  WRITE (ndsr,pos=rpos,err=803,iostat=ierr) &
939  (fpis(isea),isea=1+(ipart-1)*nsize, &
940  min(nsea,ipart*nsize))
941  END DO
942  IF (oarst) THEN
943 #ifdef W3_MPI
944  CALL w3xeta ( igrd, ndse, ndst )
945 #endif
946  !
947  IF ( flogrr(1,2) ) THEN
948  WRITE(ndsr,err=803,iostat=ierr) cx(1:nsea)
949  WRITE(ndsr,err=803,iostat=ierr) cy(1:nsea)
950  ENDIF
951  IF ( flogrr(1,12) ) &
952  WRITE(ndsr,err=803,iostat=ierr) icef(1:nsea)
953  IF ( flogrr(2,1) ) &
954  WRITE(ndsr,err=803,iostat=ierr) hs(1:nsea)
955  IF ( flogrr(2,2) ) &
956  WRITE(ndsr,err=803,iostat=ierr) wlm(1:nsea)
957  IF ( flogrr(2,4) ) &
958  WRITE(ndsr,err=803,iostat=ierr) t0m1(1:nsea)
959  IF ( flogrr(2,5) ) &
960  WRITE(ndsr,err=803,iostat=ierr) t01(1:nsea)
961  IF ( flogrr(2,6) ) &
962  WRITE(ndsr,err=803,iostat=ierr) fp0(1:nsea)
963  IF ( flogrr(2,7) ) &
964  WRITE(ndsr,err=803,iostat=ierr) thm(1:nsea)
965  IF ( flogrr(2,19) ) &
966  WRITE(ndsr,err=803,iostat=ierr) wnmean(1:nsea)
967  IF ( flogrr(5,2) ) &
968  WRITE(ndsr,err=803,iostat=ierr) charn(1:nsea)
969  IF ( flogrr(5,5) ) THEN
970  WRITE(ndsr,err=803,iostat=ierr) tauwix(1:nsea)
971  WRITE(ndsr,err=803,iostat=ierr) tauwiy(1:nsea)
972  ENDIF
973  IF ( flogrr(5,11) ) &
974  WRITE(ndsr,err=803,iostat=ierr) tws(1:nsea)
975  IF ( flogrr(6,2) ) THEN
976  WRITE(ndsr,err=803,iostat=ierr) tauox(1:nsea)
977  WRITE(ndsr,err=803,iostat=ierr) tauoy(1:nsea)
978  ENDIF
979  IF ( flogrr(6,3) ) &
980  WRITE(ndsr,err=803,iostat=ierr) bhd(1:nsea)
981  IF ( flogrr(6,4) ) &
982  WRITE(ndsr,err=803,iostat=ierr) phioc(1:nsea)
983  IF ( flogrr(6,5) ) THEN
984  WRITE(ndsr,err=803,iostat=ierr) tusx(1:nsea)
985  WRITE(ndsr,err=803,iostat=ierr) tusy(1:nsea)
986  ENDIF
987  IF ( flogrr(6,6) ) THEN
988  WRITE(ndsr,err=803,iostat=ierr) ussx(1:nsea)
989  WRITE(ndsr,err=803,iostat=ierr) ussy(1:nsea)
990  ENDIF
991  IF ( flogrr(6,10) ) THEN
992  WRITE(ndsr,err=803,iostat=ierr) tauice(1:nsea,1)
993  WRITE(ndsr,err=803,iostat=ierr) tauice(1:nsea,2)
994  ENDIF
995  IF ( flogrr(6,13) ) THEN
996  WRITE(ndsr,err=803,iostat=ierr) tauocx(1:nsea)
997  WRITE(ndsr,err=803,iostat=ierr) tauocy(1:nsea)
998  ENDIF
999  IF ( flogrr(7,2) ) THEN
1000  WRITE(ndsr,err=803,iostat=ierr) uba(1:nsea)
1001  WRITE(ndsr,err=803,iostat=ierr) ubd(1:nsea)
1002  ENDIF
1003  IF ( flogrr(7,4) ) &
1004  WRITE(ndsr,err=803,iostat=ierr) phibbl(1:nsea)
1005  IF ( flogrr(7,5) ) THEN
1006  WRITE(ndsr,err=803,iostat=ierr) taubbl(1:nsea,1)
1007  WRITE(ndsr,err=803,iostat=ierr) taubbl(1:nsea,2)
1008  ENDIF
1009  !
1010 #ifdef W3_MPI
1011  CALL w3seta ( igrd, ndse, ndst )
1012 #endif
1013  ENDIF
1014 #ifdef W3_T
1015  WRITE (ndst,9007)
1016  ELSE
1017  DO isea=1, nsea
1018  wlv(isea) = 0.
1019  ice(isea) = 0.
1020  END DO
1021  WRITE (ndst,9008)
1022 #endif
1023  END IF
1024  END IF
1025  ELSE
1026  IF (type.EQ.'FULL') THEN
1027  rpos = 1_8 + lrecl*(nrec-1_8)
1028  READ (ndsr,pos=rpos,err=802,iostat=ierr) &
1029  tlev, tice, trho, tic1, tic5
1030  DO ipart=1,npart
1031  nrec = nrec + 1
1032  rpos = 1_8 + lrecl*(nrec-1_8)
1033  READ (ndsr,pos=rpos,err=802,iostat=ierr) &
1034  (wlv(isea),isea=1+(ipart-1)*nsize, &
1035  min(nsea,ipart*nsize))
1036  END DO
1037  DO ipart=1,npart
1038  nrec = nrec + 1
1039  rpos = 1_8 + lrecl*(nrec-1_8)
1040  READ (ndsr,pos=rpos,err=802,iostat=ierr) &
1041  (ice(isea),isea=1+(ipart-1)*nsize, &
1042  min(nsea,ipart*nsize))
1043  END DO
1044 #ifdef W3_WRST
1045  DO ix=1, nx
1046  DO ipart=1,nprty2
1047  nrec = nrec + 1
1048  rpos = 1_8 + lrecl*(nrec-1_8)
1049  READ (ndsr,pos=rpos,err=802,iostat=ierr) &
1050  (wxnwrst(ix,iyl),iyl=1+(ipart-1)*nsize, &
1051  min(ny,ipart*nsize))
1052  END DO
1053  END DO
1054  DO ix=1, nx
1055  DO ipart=1,nprty2
1056  nrec = nrec + 1
1057  rpos = 1_8 + lrecl*(nrec-1_8)
1058  READ (ndsr,pos=rpos,err=802,iostat=ierr) &
1059  (wynwrst(ix,iyl),iyl=1+(ipart-1)*nsize, &
1060  min(ny,ipart*nsize))
1061  END DO
1062  END DO
1063 #endif
1064  ALLOCATE ( maptmp(ny,nx) )
1065  DO iy=1, ny
1066  DO ipart=1,nprtx2
1067  nrec = nrec + 1
1068  rpos = 1_8 + lrecl*(nrec-1_8)
1069  READ (ndsr,pos=rpos,err=802,iostat=ierr) &
1070  (maptmp(iy,ixl),ixl=1+(ipart-1)*nsize, &
1071  min(nx,ipart*nsize))
1072  END DO
1073  END DO
1074  mapsta = mod(maptmp+2,8) - 2
1075  mapst2 = (maptmp-mapsta) / 8
1076  DEALLOCATE ( maptmp )
1077  !
1078  ! Updates reflections maps:
1079  !
1080  IF (gtype.EQ.ungtype) THEN
1081  !AR: not needed since already initialized on w3iogr CALL SET_UG_IOBP
1082 #ifdef W3_REF1
1083  ELSE
1084  CALL w3setref
1085 #endif
1086  ENDIF
1087  !
1088  DO ipart=1,npart
1089  nrec = nrec + 1
1090  rpos = 1_8 + lrecl*(nrec-1_8)
1091  READ (ndsr,pos=rpos,err=802,iostat=ierr) &
1092  (ust(isea),isea=1+(ipart-1)*nsize, &
1093  min(nsea,ipart*nsize))
1094  END DO
1095  DO ipart=1,npart
1096  nrec = nrec + 1
1097  rpos = 1_8 + lrecl*(nrec-1_8)
1098  READ (ndsr,pos=rpos,err=802,iostat=ierr) &
1099  (ustdir(isea),isea=1+(ipart-1)*nsize, &
1100  min(nsea,ipart*nsize))
1101  END DO
1102  DO ipart=1,npart
1103  nrec = nrec + 1
1104  rpos = 1_8 + lrecl*(nrec-1_8)
1105  READ (ndsr,pos=rpos,err=802,iostat=ierr) &
1106  (asf(isea),isea=1+(ipart-1)*nsize, &
1107  min(nsea,ipart*nsize))
1108  END DO
1109  DO ipart=1,npart
1110  nrec = nrec + 1
1111  rpos = 1_8 + lrecl*(nrec-1_8)
1112  READ (ndsr,pos=rpos,err=802,iostat=ierr) &
1113  (fpis(isea),isea=1+(ipart-1)*nsize, &
1114  min(nsea,ipart*nsize))
1115  END DO
1116  IF (oarst) THEN
1117  IF ( flogoa(1,2) ) THEN
1118  READ (ndsr,err=802,iostat=ierr) cx(1:nsea)
1119  READ (ndsr,err=802,iostat=ierr) cy(1:nsea)
1120  ENDIF
1121  IF ( flogoa(1,12) ) THEN
1122  READ (ndsr,err=802,iostat=ierr) icef(1:nsea)
1123  ENDIF
1124  IF ( flogoa(2,1) ) THEN
1125  READ (ndsr,err=802,iostat=ierr) tmp(1:nsea)
1126  DO i=1, nsealm
1127  j = iaproc + (i-1)*naproc
1128  IF (j .LE. nsea) hs(i) = tmp(j)
1129  ENDDO
1130  ENDIF
1131  IF ( flogoa(2,2) ) THEN
1132  READ (ndsr,err=802,iostat=ierr) tmp(1:nsea)
1133  DO i=1, nsealm
1134  j = iaproc + (i-1)*naproc
1135  IF (j .LE. nsea) wlm(i) = tmp(j)
1136  ENDDO
1137  ENDIF
1138  IF ( flogoa(2,4) ) THEN
1139  READ (ndsr,err=802,iostat=ierr) tmp(1:nsea)
1140  DO i=1, nsealm
1141  j = iaproc + (i-1)*naproc
1142  IF (j .LE. nsea) t0m1(i) = tmp(j)
1143  ENDDO
1144  ENDIF
1145  IF ( flogoa(2,5) ) THEN
1146  READ (ndsr,err=802,iostat=ierr) tmp(1:nsea)
1147  DO i=1, nsealm
1148  j = iaproc + (i-1)*naproc
1149  IF (j .LE. nsea) t01(i) = tmp(j)
1150  ENDDO
1151  ENDIF
1152  IF ( flogoa(2,6) ) THEN
1153  READ (ndsr,err=802,iostat=ierr) tmp(1:nsea)
1154  DO i=1, nsealm
1155  j = iaproc + (i-1)*naproc
1156  IF (j .LE. nsea) fp0(i) = tmp(j)
1157  ENDDO
1158  ENDIF
1159  IF ( flogoa(2,7) ) THEN
1160  READ (ndsr,err=802,iostat=ierr) tmp(1:nsea)
1161  DO i=1, nsealm
1162  j = iaproc + (i-1)*naproc
1163  IF (j .LE. nsea) thm(i) = tmp(j)
1164  ENDDO
1165  ENDIF
1166  IF ( flogoa(2,19) ) THEN
1167  READ (ndsr,err=802,iostat=ierr) tmp(1:nsea)
1168  DO i=1, nsealm
1169  j = iaproc + (i-1)*naproc
1170  IF (j .LE. nsea) wnmean(i) = tmp(j)
1171  ENDDO
1172  ENDIF
1173  IF ( flogoa(5,2) ) THEN
1174  READ (ndsr,err=802,iostat=ierr) tmp(1:nsea)
1175  DO i=1, nsealm
1176  j = iaproc + (i-1)*naproc
1177  IF (j .LE. nsea) charn(i) = tmp(j)
1178  ENDDO
1179  ENDIF
1180  IF ( flogoa(5,5) ) THEN
1181  READ (ndsr,err=802,iostat=ierr) tmp(1:nsea)
1182  READ (ndsr,err=802,iostat=ierr) tmp2(1:nsea)
1183  DO i=1, nsealm
1184  j = iaproc + (i-1)*naproc
1185  IF (j .LE. nsea) THEN
1186  tauwix(i) = tmp(j)
1187  tauwiy(i) = tmp2(j)
1188  ENDIF
1189  ENDDO
1190  ENDIF
1191  IF ( flogoa(5,11) ) THEN
1192  READ (ndsr,err=802,iostat=ierr) tmp(1:nsea)
1193  DO i=1, nsealm
1194  j = iaproc + (i-1)*naproc
1195  IF (j .LE. nsea) tws(i) = tmp(j)
1196  ENDDO
1197  ENDIF
1198  IF ( flogoa(6,2) ) THEN
1199  READ (ndsr,err=802,iostat=ierr) tmp(1:nsea)
1200  READ (ndsr,err=802,iostat=ierr) tmp2(1:nsea)
1201  DO i=1, nsealm
1202  j = iaproc + (i-1)*naproc
1203  IF (j .LE. nsea) THEN
1204  tauox(i) = tmp(j)
1205  tauoy(i) = tmp2(j)
1206  ENDIF
1207  ENDDO
1208  ENDIF
1209  IF ( flogoa(6,3) ) THEN
1210  READ (ndsr,err=802,iostat=ierr) tmp(1:nsea)
1211  DO i=1, nsealm
1212  j = iaproc + (i-1)*naproc
1213  IF (j .LE. nsea) bhd(i) = tmp(j)
1214  ENDDO
1215  ENDIF
1216  IF ( flogoa(6,4) ) THEN
1217  READ (ndsr,err=802,iostat=ierr) tmp(1:nsea)
1218  DO i=1, nsealm
1219  j = iaproc + (i-1)*naproc
1220  IF (j .LE. nsea) phioc(i) = tmp(j)
1221  ENDDO
1222  ENDIF
1223  IF ( flogoa(6,5) ) THEN
1224  READ (ndsr,err=802,iostat=ierr) tmp(1:nsea)
1225  READ (ndsr,err=802,iostat=ierr) tmp2(1:nsea)
1226  DO i=1, nsealm
1227  j = iaproc + (i-1)*naproc
1228  IF (j .LE. nsea) THEN
1229  tusx(i) = tmp(j)
1230  tusy(i) = tmp2(j)
1231  ENDIF
1232  ENDDO
1233  ENDIF
1234  IF ( flogoa(6,6) ) THEN
1235  READ (ndsr,err=802,iostat=ierr) tmp(1:nsea)
1236  READ (ndsr,err=802,iostat=ierr) tmp2(1:nsea)
1237  DO i=1, nsealm
1238  j = iaproc + (i-1)*naproc
1239  IF (j .LE. nsea) THEN
1240  ussx(i) = tmp(j)
1241  ussy(i) = tmp2(j)
1242  ENDIF
1243  ENDDO
1244  ENDIF
1245  IF ( flogoa(6,10) ) THEN
1246  READ (ndsr,err=802,iostat=ierr) tmp(1:nsea)
1247  READ (ndsr,err=802,iostat=ierr) tmp2(1:nsea)
1248  DO i=1, nsealm
1249  j = iaproc + (i-1)*naproc
1250  IF (j .LE. nsea) THEN
1251  tauice(i,1) = tmp(j)
1252  tauice(i,2) = tmp2(j)
1253  ENDIF
1254  ENDDO
1255  ENDIF
1256  IF ( flogoa(6,13) ) THEN
1257  READ (ndsr,err=802,iostat=ierr) tmp(1:nsea)
1258  READ (ndsr,err=802,iostat=ierr) tmp2(1:nsea)
1259  DO i=1, nsealm
1260  j = iaproc + (i-1)*naproc
1261  IF (j .LE. nsea) THEN
1262  tauocx(i) = tmp(j)
1263  tauocy(i) = tmp2(j)
1264  ENDIF
1265  ENDDO
1266  ENDIF
1267  IF ( flogoa(7,2) ) THEN
1268  READ (ndsr,err=802,iostat=ierr) tmp(1:nsea)
1269  READ (ndsr,err=802,iostat=ierr) tmp2(1:nsea)
1270  DO i=1, nsealm
1271  j = iaproc + (i-1)*naproc
1272  IF (j .LE. nsea) THEN
1273  uba(i) = tmp(j)
1274  ubd(i) = tmp2(j)
1275  ENDIF
1276  ENDDO
1277  ENDIF
1278  IF ( flogoa(7,4) ) THEN
1279  READ (ndsr,err=802,iostat=ierr) tmp(1:nsea)
1280  DO i=1, nsealm
1281  j = iaproc + (i-1)*naproc
1282  IF (j .LE. nsea) phibbl(i) = tmp(j)
1283  ENDDO
1284  ENDIF
1285  IF ( flogoa(7,5) ) THEN
1286  READ (ndsr,err=802,iostat=ierr) tmp(1:nsea)
1287  READ (ndsr,err=802,iostat=ierr) tmp2(1:nsea)
1288  DO i=1, nsealm
1289  j = iaproc + (i-1)*naproc
1290  IF (j .LE. nsea) THEN
1291  taubbl(i,1) = tmp(j)
1292  taubbl(i,2) = tmp2(j)
1293  ENDIF
1294  ENDDO
1295  ENDIF
1296  ENDIF
1297 #ifdef W3_T
1298  WRITE (ndst,9007)
1299 #endif
1300  ELSE
1301  tlev(1) = -1
1302  tlev(2) = 0
1303  tice(1) = -1
1304  tice(2) = 0
1305  trho(1) = -1
1306  tic1(1) = -1
1307  tic1(2) = 0
1308  tic5(1) = -1
1309  tic5(2) = 0
1310 #ifdef W3_WRST
1311  wxnwrst = 0.
1312  wynwrst = 0.
1313 #endif
1314  wlv = 0.
1315  ice = 0.
1316  asf = 1.
1317  fpis = dumfpi
1318 
1319  ! Initialize coupled fields if no restart is present
1320  IF (oarst) THEN
1321  cx = 0.
1322  cy = 0.
1323  icef = 0.
1324  hs = 0.
1325  wlm = 0.
1326  t0m1 = 0.
1327  t01 = 0.
1328  fp0 = 1.
1329  thm = 0.
1330  wnmean = 0.
1331  charn = 0.0185
1332  tauwix = 0.
1333  tauwiy = 0.
1334  tws = 0.
1335  tauox = 0.
1336  tauoy = 0.
1337  bhd = 0.
1338  phioc = 0.
1339  tusx = 0.
1340  tusy = 0.
1341  ussx = 0.
1342  ussy = 0.
1343  tauocx = 0.
1344  tauocy = 0.
1345  tauice = 0.
1346  uba = 0.
1347  ubd = 0.
1348  phibbl = 0.
1349  taubbl = 0.
1350  ENDIF
1351 #ifdef W3_T
1352  WRITE (ndst,9008)
1353 #endif
1354  END IF
1355  END IF
1356  !
1357  ! Close file --------------------------------------------------------- *
1358  !
1359  IF (write) THEN
1360  IF ( .NOT.iosflg .OR. iaproc.EQ.naprst ) THEN
1361  CLOSE ( ndsr )
1362  END IF
1363  ELSE
1364  CLOSE ( ndsr )
1365  END IF
1366  !
1367  IF (ALLOCATED(writebuff)) DEALLOCATE(writebuff)
1368  IF (ALLOCATED(tmp)) DEALLOCATE(tmp)
1369  IF (ALLOCATED(tmp2)) DEALLOCATE(tmp2)
1370  !
1371  RETURN
1372  !
1373  ! Escape locations read errors :
1374  !
1375 800 CONTINUE
1376 #ifdef W3_LN0
1377  TYPE = 'WIND'
1378  rstype = 1
1379 #endif
1380 #ifdef W3_SEED
1381  TYPE = 'CALM'
1382  rstype = 4
1383 #endif
1384 #ifdef W3_LN1
1385  TYPE = 'CALM'
1386  rstype = 4
1387 #endif
1388  IF ( iaproc .EQ. naperr ) WRITE (ndse,990) TYPE, IERR
1389  GOTO 100
1390  !
1391 801 CONTINUE
1392  IF ( iaproc .EQ. naperr ) WRITE (ndse,991)
1393  CALL extcde ( 30 )
1394  !
1395 802 CONTINUE
1396  IF ( iaproc .EQ. naperr ) WRITE (ndse,992) ierr
1397  CALL extcde ( 31 )
1398  !
1399 803 CONTINUE
1400  IF ( iaproc .EQ. naperr ) WRITE (ndse,993) ierr, rpos
1401  CALL extcde ( 31 )
1402  !
1403  !
1404  ! Formats
1405  !
1406 900 FORMAT (/' *** WAVEWATCH III ERROR IN W3IORS :'/ &
1407  ' ILLEGAL INXOUT VALUE: ',a/)
1408 901 FORMAT (/' *** WAVEWATCH III ERROR IN W3IORS :'/ &
1409  ' ILLEGAL IDSTR, READ : ',a/ &
1410  ' CHECK : ',a/)
1411 902 FORMAT (/' *** WAVEWATCH III ERROR IN W3IORS :'/ &
1412  ' ILLEGAL VERINI, READ : ',a/ &
1413  ' CHECK : ',a/)
1414 903 FORMAT (/' *** WAVEWATCH III WARNING IN W3IORS :'/ &
1415  ' ILLEGAL GNAME, READ : ',a/ &
1416  ' CHECK : ',a/)
1417 904 FORMAT (/' *** WAVEWATCH III ERROR IN W3IORS :'/ &
1418  ' ILLEGAL TYPE : ',a/)
1419 905 FORMAT (/' *** WAVEWATCH III ERROR IN W3IORS :'/ &
1420  ' CONFLICTING NSPEC, NSEA GRID : ',2i8/ &
1421  ' EXPECTED : ',2i8/)
1422 906 FORMAT (/' *** WAVEWATCH III ERROR IN W3IORS :'/ &
1423  ' CONFLICTING TIMES: FILE : ',i10.8,i8.6/ &
1424  ' MODEL : ',i10.8,i8.6/)
1425  !
1426 990 FORMAT (/' *** WAVEWATCH III WARNING IN W3IORS : '/ &
1427  ' NO READABLE RESTART FILE, ', &
1428  'INITIALIZE WITH ''',a,''' INSTEAD'/ &
1429  ' IOSTAT =',i5/)
1430 991 FORMAT (/' *** WAVEWATCH III ERROR IN W3IORS : '/ &
1431  ' PREMATURE END OF FILE'/)
1432 992 FORMAT (/' *** WAVEWATCH III ERROR IN W3IORS : '/ &
1433  ' ERROR IN READING FROM FILE'/ &
1434  ' IOSTAT =',i5/)
1435 993 FORMAT (/' *** WAVEWATCH III ERROR IN W3IORS : '/ &
1436  ' ERROR IN WRITING TO FILE'/ &
1437  ' IOSTAT =',i5,', POS =',i11 /)
1438 1000 FORMAT (/' *** WAVEWATCH III WARNING IN W3IORS : '/ &
1439  ' REQUESTED EXTRA RESTART GROUP',i2,' FIELD',i2, / &
1440  ' IS NOT PRESENT IN THE RESTART FILE.'/ &
1441  ' THIS MAY CAUSE INSTABILITIES IN COUPLED CONFIGURATIONS')
1442  !
1443  !
1444 #ifdef W3_T
1445 9000 FORMAT (' TEST W3IORS : TEST PARAMETERS :'/ &
1446  ' INXOUT : ',a,/ &
1447  ' WRITE : ',l10/ &
1448  ' NTPROC : ',i10/ &
1449  ' NAPROC : ',i10/ &
1450  ' IAPROC : ',i10/ &
1451  ' NAPRST : ',i10)
1452 9001 FORMAT (' FNAME : ',a/ &
1453  ' LRECL : ',i10)
1454 9002 FORMAT (' IDSTR : ',a/ &
1455  ' VERINI : ',a/ &
1456  ' GNAME : ',a/ &
1457  ' TYPE : ',a/ &
1458  ' NSEA : ',i10/ &
1459  ' NSEAL : ',i10/ &
1460  ' NSPEC : ',i10)
1461 9003 FORMAT (' TEST W3IORS :',i10.8,i8.6,' UTC')
1462 9004 FORMAT (' TEST W3IORS : TIME NOT AVAILABLE ')
1463 9005 FORMAT (' TEST W3IORS : NO SPECTRA, TYPE=''',a,''' ')
1464 9006 FORMAT (' TEST W3IORS : SPECTRA PROCESSED ')
1465 9007 FORMAT (' TEST W3IORS : WATER LEVELS ETC. PROCESSED ')
1466 9008 FORMAT (' TEST W3IORS : WATER LEVELS ETC. PROCESSED (DUMMY)')
1467  !
1468 9020 FORMAT (' TEST W3IORS : RSTYPE = ',a,', PERFORMED BY W3INIT')
1469 #endif
1470  !/
1471  !/ End of W3IORS ----------------------------------------------------- /
1472  !/

References w3wdatmd::asf, w3adatmd::bhd, w3adatmd::charn, w3adatmd::cx, w3adatmd::cy, w3wdatmd::dinit, w3servmd::extcde(), file(), constants::file_endian, w3gdatmd::filext, w3odatmd::flogrr, w3odatmd::fnmpre, w3adatmd::fp0, w3wdatmd::fpis, w3gdatmd::gname, w3gdatmd::gtype, w3adatmd::hs, w3odatmd::iaproc, w3wdatmd::ice, w3wdatmd::icef, w3odatmd::ifile4, include(), w3parall::init_get_isea(), w3parall::init_get_jsea_isproc(), w3odatmd::iostyp, w3odatmd::irqrs, w3odatmd::irqrss, constants::lpdlib, w3gdatmd::mapst2, w3gdatmd::mapsta, w3adatmd::mpi_comm_wcmp, w3odatmd::naperr, w3odatmd::naproc, w3odatmd::naprst, w3odatmd::nblkrs, w3odatmd::ndse, w3odatmd::ndst, w3odatmd::ngrpp, w3gdatmd::nk, w3odatmd::nogrp, w3odatmd::nrqrs, w3gdatmd::nsea, w3gdatmd::nseal, w3adatmd::nsealm, w3gdatmd::nspec, w3gdatmd::nth, w3odatmd::ntproc, w3gdatmd::nx, w3gdatmd::ny, oarst, w3adatmd::phibbl, w3adatmd::phioc, w3parall::print_my_time(), w3odatmd::rsblks, w3gdatmd::rstype, w3odatmd::screen, w3triamd::set_ug_iobp(), w3servmd::strace(), w3adatmd::t01, w3adatmd::t0m1, w3adatmd::taubbl, w3adatmd::tauice, w3adatmd::tauocx, w3adatmd::tauocy, w3adatmd::tauox, w3adatmd::tauoy, w3adatmd::tauwix, w3adatmd::tauwiy, w3adatmd::thm, w3wdatmd::tic1, w3wdatmd::tic5, w3wdatmd::tice, w3wdatmd::time, w3wdatmd::tlev, w3wdatmd::trho, w3adatmd::tusx, w3adatmd::tusy, w3adatmd::tws, w3adatmd::uba, w3adatmd::ubd, w3gdatmd::ungtype, pdlib_field_vec::unst_pdlib_read_from_file(), pdlib_field_vec::unst_pdlib_write_to_file(), w3adatmd::ussx, w3adatmd::ussy, w3wdatmd::ust, w3wdatmd::ustdir, w3wdatmd::va, w3odatmd::vaaux, w3wdatmd::w3dimw(), w3adatmd::w3seta(), w3gdatmd::w3setg(), w3idatmd::w3seti(), w3odatmd::w3seto(), w3gdatmd::w3setref(), w3wdatmd::w3setw(), w3adatmd::w3xeta(), w3adatmd::wlm, w3wdatmd::wlv, w3adatmd::wnmean, w3idatmd::wxn, and w3idatmd::wyn.

Referenced by w3exgi(), w3grid_interp(), w3initmd::w3init(), w3strt(), w3uprstr(), and w3wavemd::w3wave().

Variable Documentation

◆ oarst

logical w3iorsmd::oarst

Definition at line 68 of file w3iorsmd.F90.

68  LOGICAL :: OARST

Referenced by w3iors(), w3initmd::w3mpio(), and w3shel().

w3gdatmd::nk
integer, pointer nk
Definition: w3gdatmd.F90:1230
w3odatmd::iostyp
integer iostyp
Definition: w3odatmd.F90:321
pdlib_field_vec::unst_pdlib_write_to_file
subroutine unst_pdlib_write_to_file(NDWRITE)
Definition: pdlib_field_vec.F90:609
w3gdatmd::nseal
integer, pointer nseal
Definition: w3gdatmd.F90:1097
include
cmake src_list cmake include(${CMAKE_CURRENT_SOURCE_DIR}/cmake/check_switches.cmake) check_switches("$
Definition: CMakeLists.txt:15
w3adatmd::charn
real, dimension(:), pointer charn
Definition: w3adatmd.F90:603
w3wdatmd::fpis
real, dimension(:), pointer fpis
Definition: w3wdatmd.F90:183
w3adatmd::nsealm
integer, pointer nsealm
Definition: w3adatmd.F90:686
w3triamd
Reads triangle and unstructured grid information.
Definition: w3triamd.F90:21
w3adatmd
Define data structures to set up wave model auxiliary data for several models simultaneously.
Definition: w3adatmd.F90:26
w3gdatmd::nspec
integer, pointer nspec
Definition: w3gdatmd.F90:1230
w3adatmd::ussy
real, dimension(:), pointer ussy
Definition: w3adatmd.F90:607
w3gdatmd::ungtype
integer, parameter ungtype
Definition: w3gdatmd.F90:626
w3wdatmd
Define data structures to set up wave model dynamic data for several models simultaneously.
Definition: w3wdatmd.F90:18
w3adatmd::tauice
real, dimension(:,:), pointer tauice
Definition: w3adatmd.F90:607
w3adatmd::tws
real, dimension(:), pointer tws
Definition: w3adatmd.F90:603
w3adatmd::tusx
real, dimension(:), pointer tusx
Definition: w3adatmd.F90:607
w3adatmd::tusy
real, dimension(:), pointer tusy
Definition: w3adatmd.F90:607
w3odatmd::ntproc
integer, pointer ntproc
Definition: w3odatmd.F90:457
w3wdatmd::icef
real, dimension(:), pointer icef
Definition: w3wdatmd.F90:183
w3adatmd::t01
real, dimension(:), pointer t01
Definition: w3adatmd.F90:587
w3wdatmd::wlv
real, dimension(:), pointer wlv
Definition: w3wdatmd.F90:183
w3odatmd::iaproc
integer, pointer iaproc
Definition: w3odatmd.F90:457
w3odatmd::ngrpp
integer, parameter ngrpp
Definition: w3odatmd.F90:324
w3wdatmd::time
integer, dimension(:), pointer time
Definition: w3wdatmd.F90:172
w3adatmd::tauocy
real, dimension(:), pointer tauocy
Definition: w3adatmd.F90:607
w3odatmd::ifile4
integer, pointer ifile4
Definition: w3odatmd.F90:521
w3adatmd::hs
real, dimension(:), pointer hs
Definition: w3adatmd.F90:587
w3gdatmd::gname
character(len=30), pointer gname
Definition: w3gdatmd.F90:1223
w3gdatmd::ny
integer, pointer ny
Definition: w3gdatmd.F90:1097
w3adatmd::uba
real, dimension(:), pointer uba
Definition: w3adatmd.F90:614
w3odatmd::fnmpre
character(len=80) fnmpre
Definition: w3odatmd.F90:330
w3wdatmd::va
real, dimension(:,:), pointer va
Definition: w3wdatmd.F90:183
w3adatmd::tauwix
real, dimension(:), pointer tauwix
Definition: w3adatmd.F90:603
w3wdatmd::trho
integer, dimension(:), pointer trho
Definition: w3wdatmd.F90:172
w3wdatmd::tlev
integer, dimension(:), pointer tlev
Definition: w3wdatmd.F90:172
w3gdatmd::w3setg
subroutine w3setg(IMOD, NDSE, NDST)
Definition: w3gdatmd.F90:2152
w3adatmd::w3xeta
subroutine w3xeta(IMOD, NDSE, NDST)
Reduced version of W3SETA to point to expended output arrays.
Definition: w3adatmd.F90:3118
w3adatmd::tauwiy
real, dimension(:), pointer tauwiy
Definition: w3adatmd.F90:603
w3adatmd::taubbl
real, dimension(:,:), pointer taubbl
Definition: w3adatmd.F90:614
scrip_timers::status
character(len=8), dimension(max_timers), save status
Definition: scrip_timers.f:63
w3odatmd::ndse
integer, pointer ndse
Definition: w3odatmd.F90:456
w3iorsmd::oarst
logical oarst
Definition: w3iorsmd.F90:68
w3adatmd::w3seta
subroutine w3seta(IMOD, NDSE, NDST)
Select one of the WAVEWATCH III grids / models.
Definition: w3adatmd.F90:2645
w3gdatmd::rstype
integer, pointer rstype
Definition: w3gdatmd.F90:1095
w3idatmd::wxn
real, dimension(:,:), pointer wxn
Definition: w3idatmd.F90:243
w3odatmd::naperr
integer, pointer naperr
Definition: w3odatmd.F90:457
w3odatmd::nblkrs
integer, pointer nblkrs
Definition: w3odatmd.F90:523
w3adatmd::phibbl
real, dimension(:), pointer phibbl
Definition: w3adatmd.F90:614
constants::lpdlib
logical lpdlib
LPDLIB Logical for using the PDLIB library.
Definition: constants.F90:101
w3odatmd::flogrr
logical, dimension(:,:), pointer flogrr
Definition: w3odatmd.F90:478
w3gdatmd::nsea
integer, pointer nsea
Definition: w3gdatmd.F90:1097
w3servmd
Definition: w3servmd.F90:3
pdlib_field_vec::unst_pdlib_read_from_file
subroutine unst_pdlib_read_from_file(NDREAD)
Definition: pdlib_field_vec.F90:396
w3wdatmd::tic1
integer, dimension(:), pointer tic1
Definition: w3wdatmd.F90:172
w3wdatmd::w3setw
subroutine w3setw(IMOD, NDSE, NDST)
Select one of the WAVEWATCH III grids / models.
Definition: w3wdatmd.F90:660
w3odatmd::w3seto
subroutine w3seto(IMOD, NDSERR, NDSTST)
Definition: w3odatmd.F90:1523
w3gdatmd::nth
integer, pointer nth
Definition: w3gdatmd.F90:1230
w3odatmd::vaaux
real, dimension(:,:,:), pointer vaaux
Definition: w3odatmd.F90:525
w3odatmd
Definition: w3odatmd.F90:3
w3odatmd::rsblks
integer, pointer rsblks
Definition: w3odatmd.F90:523
w3adatmd::bhd
real, dimension(:), pointer bhd
Definition: w3adatmd.F90:607
w3adatmd::cy
real, dimension(:), pointer cy
Definition: w3adatmd.F90:584
w3odatmd::screen
integer, pointer screen
Definition: w3odatmd.F90:456
w3adatmd::wlm
real, dimension(:), pointer wlm
Definition: w3adatmd.F90:587
w3odatmd::naproc
integer, pointer naproc
Definition: w3odatmd.F90:457
w3parall::print_my_time
subroutine print_my_time(string)
Print timings.
Definition: w3parall.F90:200
w3adatmd::wnmean
real, dimension(:), pointer wnmean
Definition: w3adatmd.F90:587
w3idatmd::w3seti
subroutine w3seti(IMOD, NDSE, NDST)
Select one of the WAVEWATCH III grids / models.
Definition: w3idatmd.F90:819
w3adatmd::phioc
real, dimension(:), pointer phioc
Definition: w3adatmd.F90:607
file
file(STRINGS ${CMAKE_BINARY_DIR}/switch switch_strings) separate_arguments(switches UNIX_COMMAND $
Definition: CMakeLists.txt:3
w3odatmd::nrqrs
integer, pointer nrqrs
Definition: w3odatmd.F90:523
w3gdatmd::w3setref
subroutine w3setref
Definition: w3gdatmd.F90:3294
w3wdatmd::w3dimw
subroutine w3dimw(IMOD, NDSE, NDST, F_ONLY)
Initialize an individual data grid at the proper dimensions.
Definition: w3wdatmd.F90:343
w3odatmd::irqrs
integer, dimension(:), pointer irqrs
Definition: w3odatmd.F90:524
w3servmd::strace
subroutine strace(IENT, SNAME)
Definition: w3servmd.F90:148
w3gdatmd::gtype
integer, pointer gtype
Definition: w3gdatmd.F90:1094
w3idatmd
Define data structures to set up wave model input data for several models simultaneously.
Definition: w3idatmd.F90:16
w3wdatmd::ice
real, dimension(:), pointer ice
Definition: w3wdatmd.F90:183
pdlib_field_vec
Definition: pdlib_field_vec.F90:1
w3adatmd::tauox
real, dimension(:), pointer tauox
Definition: w3adatmd.F90:607
w3parall::init_get_jsea_isproc
subroutine init_get_jsea_isproc(ISEA, JSEA, ISPROC)
Set JSEA for all schemes.
Definition: w3parall.F90:1163
w3odatmd::ndst
integer, pointer ndst
Definition: w3odatmd.F90:456
w3wdatmd::ust
real, dimension(:), pointer ust
Definition: w3wdatmd.F90:183
constants
Define some much-used constants for global use (all defined as PARAMETER).
Definition: constants.F90:20
w3adatmd::tauoy
real, dimension(:), pointer tauoy
Definition: w3adatmd.F90:607
w3odatmd::nogrp
integer, parameter nogrp
Definition: w3odatmd.F90:323
w3adatmd::fp0
real, dimension(:), pointer fp0
Definition: w3adatmd.F90:587
w3gdatmd
Definition: w3gdatmd.F90:16
w3adatmd::ussx
real, dimension(:), pointer ussx
Definition: w3adatmd.F90:607
constants::file_endian
character(*), parameter file_endian
FILE_ENDIAN Filled by preprocessor with 'big_endian', 'little_endian', or 'native'.
Definition: constants.F90:86
w3odatmd::irqrss
integer, dimension(:), pointer irqrss
Definition: w3odatmd.F90:524
w3wdatmd::ustdir
real, dimension(:), pointer ustdir
Definition: w3wdatmd.F90:183
w3adatmd::thm
real, dimension(:), pointer thm
Definition: w3adatmd.F90:587
w3adatmd::cx
real, dimension(:), pointer cx
Definition: w3adatmd.F90:584
w3gdatmd::nx
integer, pointer nx
Definition: w3gdatmd.F90:1097
w3wdatmd::tic5
integer, dimension(:), pointer tic5
Definition: w3wdatmd.F90:172
w3triamd::set_ug_iobp
subroutine set_ug_iobp()
Redefines the values of the boundary points and angle pointers based on the MAPSTA array.
Definition: w3triamd.F90:2811
w3parall
Parallel routines for implicit solver.
Definition: w3parall.F90:22
w3odatmd::naprst
integer, pointer naprst
Definition: w3odatmd.F90:457
w3adatmd::t0m1
real, dimension(:), pointer t0m1
Definition: w3adatmd.F90:587
w3idatmd::wyn
real, dimension(:,:), pointer wyn
Definition: w3idatmd.F90:243
w3gdatmd::mapsta
integer, dimension(:,:), pointer mapsta
Definition: w3gdatmd.F90:1163
w3wdatmd::tice
integer, dimension(:), pointer tice
Definition: w3wdatmd.F90:172
w3adatmd::tauocx
real, dimension(:), pointer tauocx
Definition: w3adatmd.F90:607
w3gdatmd::mapst2
integer, dimension(:,:), pointer mapst2
Definition: w3gdatmd.F90:1163
w3parall::init_get_isea
subroutine init_get_isea(ISEA, JSEA)
Set ISEA for all schemes.
Definition: w3parall.F90:1398
w3adatmd::ubd
real, dimension(:), pointer ubd
Definition: w3adatmd.F90:614
w3wdatmd::dinit
logical, pointer dinit
Definition: w3wdatmd.F90:195
w3wdatmd::asf
real, dimension(:), pointer asf
Definition: w3wdatmd.F90:183
w3gdatmd::filext
character(len=13), pointer filext
Definition: w3gdatmd.F90:1224
w3adatmd::mpi_comm_wcmp
integer, pointer mpi_comm_wcmp
Definition: w3adatmd.F90:676