WAVEWATCH III  beta 0.0.1
w3nmlmultimd.F90
Go to the documentation of this file.
1 #include "w3macros.h"
2 !/ ------------------------------------------------------------------- /
4  !/
5  !/ +-----------------------------------+
6  !/ | WAVEWATCH III NOAA/NCEP |
7  !/ | M. Accensi |
8  !/ | |
9  !/ | FORTRAN 90 |
10  !/ | Last update : 22-Mar-2021 |
11  !/ +-----------------------------------+
12  !/
13  !/ For updates see subroutines.
14  !/
15  ! 1. Purpose :
16  !
17  ! Manages namelists from configuration file ww3_multi.nml for ww3_multi program
18  !
19  !/ ------------------------------------------------------------------- /
20 
21  ! module defaults
22  IMPLICIT NONE
23 
24  PUBLIC
25 
26  ! domain definition structure
28  INTEGER :: nrinp
29  INTEGER :: nrgrd
30  LOGICAL :: unipts
31  INTEGER :: iostyp
32  LOGICAL :: upproc
33  LOGICAL :: pshare
34  LOGICAL :: flghg1
35  LOGICAL :: flghg2
36  CHARACTER(15) :: start
37  CHARACTER(15) :: stop
38  END TYPE nml_domain_t
39 
40 
41 
42  ! model grid data structure
44  CHARACTER(13) :: water_levels
45  CHARACTER(13) :: currents
46  CHARACTER(13) :: winds
47  CHARACTER(13) :: atm_momentum
48  CHARACTER(13) :: air_density
49  CHARACTER(13) :: ice_conc
50  CHARACTER(13) :: ice_param1
51  CHARACTER(13) :: ice_param2
52  CHARACTER(13) :: ice_param3
53  CHARACTER(13) :: ice_param4
54  CHARACTER(13) :: ice_param5
55  CHARACTER(13) :: mud_density
56  CHARACTER(13) :: mud_thickness
57  CHARACTER(13) :: mud_viscosity
58  END TYPE nml_model_forcing_t
59  !
61  CHARACTER(13) :: mean
62  CHARACTER(13) :: spec1d
63  CHARACTER(13) :: spec2d
64  END TYPE nml_model_assim_t
65  !
67  INTEGER :: rank_id
68  INTEGER :: group_id
69  REAL(4) :: comm_frac(2)
70  LOGICAL :: bound_flag
71  END TYPE nml_model_resource_t
72  !
74  CHARACTER(13) :: name
75  TYPE(nml_model_forcing_t) :: forcing
76  TYPE(nml_model_assim_t) :: assim
77  TYPE(nml_model_resource_t) :: resource
78  END TYPE nml_model_grid_t
79 
80 
81 
82  ! input grid data structure
84  LOGICAL :: water_levels
85  LOGICAL :: currents
86  LOGICAL :: winds
87  LOGICAL :: atm_momentum
88  LOGICAL :: air_density
89  LOGICAL :: ice_conc
90  LOGICAL :: ice_param1
91  LOGICAL :: ice_param2
92  LOGICAL :: ice_param3
93  LOGICAL :: ice_param4
94  LOGICAL :: ice_param5
95  LOGICAL :: mud_density
96  LOGICAL :: mud_thickness
97  LOGICAL :: mud_viscosity
98  END TYPE nml_input_forcing_t
99  !
101  LOGICAL :: mean
102  LOGICAL :: spec1d
103  LOGICAL :: spec2d
104  END TYPE nml_input_assim_t
105  !
107  CHARACTER(13) :: name
108  TYPE(nml_input_forcing_t) :: forcing
109  TYPE(nml_input_assim_t) :: assim
110  END TYPE nml_input_grid_t
111 
112 
113 
114  ! output type structure
116  CHARACTER(1024) :: list
117  END TYPE nml_field_t
118  !
120  CHARACTER(13) :: name
121  CHARACTER(64) :: file
122  END TYPE nml_point_t
123  !
125  LOGICAL :: format
126  END TYPE nml_track_t
127  !
129  INTEGER :: x0
130  INTEGER :: xn
131  INTEGER :: nx
132  INTEGER :: y0
133  INTEGER :: yn
134  INTEGER :: ny
135  LOGICAL :: format
136  END TYPE nml_partition_t
137  !
138 #ifdef W3_COU
140  CHARACTER(1024) :: sent
141  CHARACTER(1024) :: received
142  LOGICAL :: couplet0
143  END TYPE nml_coupling_t
144 #endif
145  !
147  CHARACTER(1024) :: extra
148  END TYPE nml_restart_t
149  !
151  TYPE(nml_point_t) :: point
152  TYPE(nml_field_t) :: field
153  TYPE(nml_track_t) :: track
154  TYPE(nml_partition_t) :: partition
155 #ifdef W3_COU
156  TYPE(nml_coupling_t) :: coupling
157 #endif
158  TYPE(nml_restart_t) :: restart
159  END TYPE nml_output_type_t
160 
161 
162 
163  ! output date structure
165  CHARACTER(15) :: start
166  CHARACTER(15) :: stride
167  CHARACTER(15) :: stop
168  CHARACTER(1) :: outffile
169  !
170  END TYPE nml_output_time_t
171  !
173  TYPE(nml_output_time_t) :: field
174  TYPE(nml_output_time_t) :: point
175  TYPE(nml_output_time_t) :: track
176  TYPE(nml_output_time_t) :: restart
177  TYPE(nml_output_time_t) :: restart2
178  TYPE(nml_output_time_t) :: boundary
179  TYPE(nml_output_time_t) :: partition
180 #ifdef W3_COU
181  TYPE(nml_output_time_t) :: coupling
182 #endif
183  END TYPE nml_output_date_t
184 
185 
186 
187  ! homogeneous input structure
189  INTEGER :: n_mov
190  INTEGER :: n_tot
191  END TYPE nml_homog_count_t
192  !
194  CHARACTER(15) :: name
195  CHARACTER(15) :: date
196  REAL :: value1
197  REAL :: value2
198  REAL :: value3
199  END TYPE nml_homog_input_t
200 
201 
202  ! miscellaneous
203  CHARACTER(256) :: msg
204  INTEGER :: ndsn
205 
206 
207 
208 CONTAINS
209  !/ ------------------------------------------------------------------- /
210  SUBROUTINE w3nmlmultidef (MPI_COMM, NDSI, INFILE, NML_DOMAIN, IERR)
211  !/
212  !/ +-----------------------------------+
213  !/ | WAVEWATCH III NOAA/NCEP |
214  !/ | M. Accensi |
215  !/ | F. Ardhuin |
216  !/ | FORTRAN 90 |
217  !/ | Last update : 15-May-2018 |
218  !/ +-----------------------------------+
219  !/
220  !/ 09-Aug-2016 : Adding comments ( version 5.12 )
221  !/ 15-May-2018 : Update namelist ( version 6.05 )
222  !
223  ! 1. Purpose :
224  !
225  ! Reads the domain definition namelist to define the number of
226  ! model and forcing grids
227  !
228  ! 2. Method :
229  !
230  ! See source term routines.
231  !
232  ! 3. Parameters :
233  !
234  ! Parameter list
235  ! ----------------------------------------------------------------
236  ! MPI_COMM Int. Public Communicator used in the wave MODEL.
237  ! NDSI Int.
238  ! INFILE Char.
239  ! NML_DOMAIN type.
240  ! IERR Int.
241  ! ----------------------------------------------------------------
242  !
243  ! 4. Subroutines used :
244  !
245  ! Name Type Module Description
246  ! ----------------------------------------------------------------
247  ! STRACE Subr. W3SERVMD SUBROUTINE tracing.
248  ! READ_DOMAIN_NML
249  ! ----------------------------------------------------------------
250  !
251  ! 5. Called by :
252  !
253  ! Name Type Module Description
254  ! ----------------------------------------------------------------
255  ! WMINITNML Subr. N/A Model configuration routine.
256  ! ----------------------------------------------------------------
257  !
258  ! 6. Error messages :
259  !
260  ! None.
261  !
262  ! 7. Remarks :
263  !
264  ! 8. Structure :
265  !
266  ! See source code.
267  !
268  ! 9. Switches :
269  !
270  ! !/MPI Uses MPI communications
271  !
272  ! 10. Source code :
273  !
274  !/ ------------------------------------------------------------------- /
275  USE wmmdatmd, ONLY: mdse, improc, nmplog
276 #ifdef W3_MPI
277  USE wmmdatmd, ONLY: mpi_comm_mwave
278 #endif
279 #ifdef W3_S
280  USE w3servmd, ONLY: strace
281 #endif
282 
283  IMPLICIT NONE
284 
285  INTEGER, INTENT(IN) :: MPI_COMM, NDSI
286  CHARACTER*(*), INTENT(IN) :: INFILE
287  TYPE(nml_domain_t), INTENT(OUT) :: NML_DOMAIN
288  INTEGER, INTENT(OUT) :: IERR
289 
290  ! locals
291 #ifdef W3_MPI
292  INTEGER :: IERR_MPI
293 #endif
294 #ifdef W3_S
295  INTEGER, SAVE :: IENT = 0
296 #endif
297 
298  ierr = 0
299 #ifdef W3_S
300  CALL strace (ient, 'W3NMLMULTIDEF')
301 #endif
302 
303 #ifdef W3_MPI
304  mpi_comm_mwave = mpi_comm
305  CALL mpi_comm_rank ( mpi_comm_mwave, improc, ierr_mpi )
306  improc = improc + 1
307 #endif
308 
309  ! open namelist log file
310  IF ( nmplog .EQ. improc ) THEN
311  ndsn = 3
312  OPEN (ndsn, file=trim(infile)//'.log', form='formatted', iostat=ierr)
313  IF (ierr.NE.0) THEN
314  WRITE (mdse,'(A)') 'ERROR: open full nml file '//trim(infile)//'.log failed'
315  RETURN
316  END IF
317  END IF
318 
319  ! open input file
320  OPEN (ndsi, file=trim(infile), form='formatted', status='old', iostat=ierr)
321  IF (ierr.NE.0) THEN
322  WRITE (mdse,'(A)') 'ERROR: open input file '//trim(infile)//' failed'
323  RETURN
324  END IF
325 
326  ! read domain def namelist
327  CALL read_domain_nml (ndsi, nml_domain)
328  IF ( nmplog .EQ. improc ) CALL report_domain_nml (nml_domain)
329 
330  ! close namelist files
331  CLOSE (ndsi)
332  IF ( nmplog .EQ. improc ) CLOSE (ndsn)
333 
334  END SUBROUTINE w3nmlmultidef
335 
336  !/ ------------------------------------------------------------------- /
337 
338 
339 
340 
341 
342 
343  !/ ------------------------------------------------------------------- /
344 
345  SUBROUTINE w3nmlmulticonf (MPI_COMM, NDSI, INFILE, NML_DOMAIN, &
346  NML_INPUT_GRID, NML_MODEL_GRID, &
347  NML_OUTPUT_TYPE, NML_OUTPUT_DATE, &
348  NML_HOMOG_COUNT, NML_HOMOG_INPUT, IERR)
349  !/
350  !/ +-----------------------------------+
351  !/ | WAVEWATCH III NOAA/NCEP |
352  !/ | M. Accensi |
353  !/ | F. Ardhuin |
354  !/ | FORTRAN 90 |
355  !/ | Last update : 15-May-2018 |
356  !/ +-----------------------------------+
357  !/
358  !/ 09-Aug-2016 : Adding comments ( version 5.12 )
359  !/ 15-May-2018 : Update namelist ( version 6.05 )
360 
361  ! 1. Purpose :
362  !
363  ! Reads all the namelist to define the multi grid
364  !
365  ! 2. Method :
366  !
367  ! See source term routines.
368  !
369  ! 3. Parameters :
370  !
371  ! Parameter list
372  ! ----------------------------------------------------------------
373  ! MPI_COMM Int. Public Communicator used in the wave MODEL.
374  ! NDSI
375  ! INFILE
376  ! NML_DOMAIN
377  ! NML_INPUT_GRID
378  ! NML_MODEL_GRID
379  ! NML_OUTPUT_TYPE
380  ! NML_OUTPUT_DATE
381  ! NML_HOMOG_COUNT
382  ! NML_HOMOG_INPUT
383  ! IERR
384  ! ----------------------------------------------------------------
385  !
386  ! 4. Subroutines used :
387  !
388  ! Name Type Module Description
389  ! ----------------------------------------------------------------
390  ! STRACE Subr. W3SERVMD SUBROUTINE tracing.
391  ! READ_INPUT_GRID_NML
392  ! REPORT_INPUT_GRID_NML
393  ! READ_MODEL_GRID_NML
394  ! REPORT_MODEL_GRID_NML
395  ! READ_OUTPUT_TYPE_NML
396  ! REPORT_OUTPUT_TYPE_NML
397  ! READ_OUTPUT_DATE_NML
398  ! REPORT_OUTPUT_DATE_NML
399  ! READ_HOMOGENEOUS_NML
400  ! REPORT_HOMOGENEOUS_NML
401  ! ----------------------------------------------------------------
402  !
403  ! 5. Called by :
404  !
405  ! Name Type Module Description
406  ! ----------------------------------------------------------------
407  ! WMINITNML Subr. N/A Model configuration routine.
408  ! ----------------------------------------------------------------
409  !
410  ! 6. Error messages :
411  !
412  ! None.
413  !
414  ! 7. Remarks :
415  !
416  ! 8. Structure :
417  !
418  ! See source code.
419  !
420  ! 9. Switches :
421  !
422  ! !/MPI Uses MPI communications
423  !
424  ! 10. Source code :
425  !
426  !/ ------------------------------------------------------------------- /
427 
428  USE wmmdatmd, ONLY: mdse, improc, nmplog
429 #ifdef W3_MPI
430  USE wmmdatmd, ONLY: mpi_comm_mwave
431 #endif
432 #ifdef W3_S
433  USE w3servmd, ONLY: strace
434 #endif
435 
436  IMPLICIT NONE
437 
438  INTEGER, INTENT(IN) :: MPI_COMM, NDSI
439  CHARACTER*(*), INTENT(IN) :: INFILE
440  TYPE(nml_domain_t), INTENT(INOUT) :: NML_DOMAIN
441  TYPE(nml_input_grid_t), INTENT(INOUT) :: NML_INPUT_GRID(:)
442  TYPE(nml_model_grid_t), INTENT(INOUT) :: NML_MODEL_GRID(:)
443  TYPE(nml_output_type_t), INTENT(INOUT) :: NML_OUTPUT_TYPE(:)
444  TYPE(nml_output_date_t), INTENT(INOUT) :: NML_OUTPUT_DATE(:)
445  TYPE(nml_homog_count_t), INTENT(INOUT) :: NML_HOMOG_COUNT
446  TYPE(nml_homog_input_t), ALLOCATABLE, INTENT(INOUT) :: NML_HOMOG_INPUT(:)
447  INTEGER, INTENT(OUT) :: IERR
448 
449  ! locals
450 #ifdef W3_MPI
451  INTEGER :: IERR_MPI
452 #endif
453 #ifdef W3_S
454  INTEGER, SAVE :: IENT = 0
455 #endif
456 
457  ierr = 0
458 #ifdef W3_S
459  CALL strace (ient, 'W3NMLMULTICONF')
460 #endif
461 
462 #ifdef W3_MPI
463  mpi_comm_mwave = mpi_comm
464  CALL mpi_comm_rank ( mpi_comm_mwave, improc, ierr_mpi )
465  improc = improc + 1
466 #endif
467 
468  ! open namelist log file
469  IF ( nmplog .EQ. improc ) THEN
470  ndsn = 3
471  OPEN (ndsn, file=trim(infile)//'.log', form='formatted', status='old', iostat=ierr)
472  IF (ierr.NE.0) THEN
473  WRITE (mdse,'(A)') 'ERROR: open full nml file '//trim(infile)//'.log failed'
474  RETURN
475  END IF
476  END IF
477 
478  ! open input file
479  OPEN (ndsi, file=trim(infile), form='formatted', status='old', iostat=ierr)
480  IF (ierr.NE.0) THEN
481  WRITE (mdse,'(A)') 'ERROR: open INPUT file '//trim(infile)//' failed'
482  RETURN
483  END IF
484 
485  ! read input grid namelist
486  CALL read_input_grid_nml (ndsi, nml_domain%NRINP, nml_input_grid)
487  IF ( nmplog .EQ. improc ) CALL report_input_grid_nml (nml_domain%NRINP, nml_input_grid)
488 
489  ! read model grid namelist
490  CALL read_model_grid_nml (ndsi, nml_domain%NRGRD, nml_model_grid)
491  IF ( nmplog .EQ. improc ) CALL report_model_grid_nml (nml_domain%NRGRD, nml_model_grid)
492 
493  ! read output type namelist
494  CALL read_output_type_nml (ndsi, nml_domain%NRGRD, nml_output_type)
495  IF ( nmplog .EQ. improc ) CALL report_output_type_nml (nml_domain%NRGRD, nml_output_type)
496 
497  ! read output date namelist
498  CALL read_output_date_nml (ndsi, nml_domain%NRGRD, nml_output_date)
499  IF ( nmplog .EQ. improc ) CALL report_output_date_nml (nml_domain%NRGRD,nml_output_date)
500 
501  ! read homogeneous namelist
502  CALL read_homogeneous_nml (ndsi, nml_homog_count, nml_homog_input)
503  IF ( nmplog .EQ. improc ) CALL report_homogeneous_nml (nml_homog_count, nml_homog_input)
504 
505 
506  ! close namelist files
507  CLOSE (ndsi)
508  IF ( nmplog .EQ. improc ) CLOSE (ndsn)
509 
510  END SUBROUTINE w3nmlmulticonf
511 
512  !/ ------------------------------------------------------------------- /
513 
514 
515 
516 
517 
518 
519  !/ ------------------------------------------------------------------- /
520 
521  SUBROUTINE read_domain_nml (NDSI, NML_DOMAIN)
522  !/
523  !/ +-----------------------------------+
524  !/ | WAVEWATCH III NOAA/NCEP |
525  !/ | M. Accensi |
526  !/ | F. Ardhuin |
527  !/ | FORTRAN 90 |
528  !/ | Last update : 15-May-2018 |
529  !/ +-----------------------------------+
530  !/
531  !/ 09-Aug-2016 : Adding comments ( version 5.12 )
532  !/ 15-May-2018 : Update namelist ( version 6.05 )
533 
534  ! 1. Purpose :
535  !
536  !
537  ! 2. Method :
538  !
539  ! See source term routines.
540  !
541  ! 3. Parameters :
542  !
543  ! Parameter list
544  ! ----------------------------------------------------------------
545  ! NDSI Int.
546  ! NML_DOMAIN Type.
547  ! ----------------------------------------------------------------
548  !
549  ! 4. Subroutines used :
550  !
551  ! Name Type Module Description
552  ! ----------------------------------------------------------------
553  ! STRACE Subr. W3SERVMD SUBROUTINE tracing.
554  ! ----------------------------------------------------------------
555  !
556  ! 5. Called by :
557  !
558  ! Name Type Module Description
559  ! ----------------------------------------------------------------
560  ! W3NMLMULTIDEF Subr. N/A Namelist configuration routine.
561  ! ----------------------------------------------------------------
562  !
563  ! 6. Error messages :
564  !
565  ! None.
566  !
567  ! 7. Remarks :
568  !
569  ! 8. Structure :
570  !
571  ! See source code.
572  !
573  ! 9. Switches :
574  !
575  ! !/MPI Uses MPI communications
576  !
577  ! 10. Source code :
578  !
579  !/ ------------------------------------------------------------------- /
580 
581  USE wmmdatmd, ONLY: mdse
582  USE w3servmd, ONLY: extcde
583 #ifdef W3_S
584  USE w3servmd, ONLY: strace
585 #endif
586 
587  IMPLICIT NONE
588 
589  INTEGER, INTENT(IN) :: NDSI
590  TYPE(nml_domain_t), INTENT(OUT) :: NML_DOMAIN
591 
592  ! locals
593  INTEGER :: IERR
594  TYPE(nml_domain_t) :: DOMAIN
595  namelist /domain_nml/ domain
596 #ifdef W3_S
597  INTEGER, SAVE :: IENT = 0
598 #endif
599 
600  ierr = 0
601 #ifdef W3_S
602  CALL strace (ient, 'READ_DOMAIN_NML')
603 #endif
604 
605  ! set default values for model definition data
606  domain%NRINP = 0
607  domain%NRGRD = 1
608  domain%UNIPTS = .false.
609  domain%IOSTYP = 1
610  domain%UPPROC = .false.
611  domain%PSHARE = .false.
612  domain%FLGHG1 = .false.
613  domain%FLGHG2 = .false.
614  domain%START = '19680606 000000'
615  domain%STOP = '19680607 000000'
616 
617  ! read model def namelist
618  rewind(ndsi)
619  READ (ndsi, nml=domain_nml, iostat=ierr, iomsg=msg)
620  IF (ierr.GT.0) THEN
621  WRITE (mdse,'(A,/A)') &
622  'ERROR: READ_DOMAIN_NML: namelist read error', &
623  'ERROR: '//trim(msg)
624  CALL extcde (1)
625  END IF
626 
627  ! set/check return values
628  IF (domain%NRINP.LT.0) THEN
629  WRITE (mdse,'(A,I3)') 'ERROR: BAD NRINP INPUT: ',domain%NRINP
630  CALL extcde (2)
631  END IF
632  IF (domain%NRGRD.LE.0) THEN
633  WRITE (mdse,'(A,I3)') 'ERROR: BAD NRGRD INPUT: ',domain%NRGRD
634  CALL extcde (3)
635  END IF
636  IF (domain%IOSTYP.LT.0.or.domain%IOSTYP.GT.3) THEN
637  WRITE (mdse,'(A,I3)') 'ERROR: BAD IOSTYP INPUT: ',domain%IOSTYP
638  CALL extcde (4)
639  END IF
640 
641  ! save namelist
642  nml_domain = domain
643 
644  END SUBROUTINE read_domain_nml
645 
646  !/ ------------------------------------------------------------------- /
647 
648 
649 
650 
651 
652 
653  !/ ------------------------------------------------------------------- /
654 
655  SUBROUTINE read_input_grid_nml (NDSI, NRINP, NML_INPUT_GRID)
656  !/
657  !/ +-----------------------------------+
658  !/ | WAVEWATCH III NOAA/NCEP |
659  !/ | M. Accensi |
660  !/ | FORTRAN 90 |
661  !/ | Last update : 22-Mar-2021 |
662  !/ +-----------------------------------+
663  !/
664  !/ 09-Aug-2016 : Adding comments ( version 5.12 )
665  !/ 15-May-2018 : Update namelist ( version 6.05 )
666  !/ 22-Mar-2021 : Update namelist, new input fields ( version 7.13 )
667  !/
668  ! 1. Purpose :
669  !
670  !
671  ! 2. Method :
672  !
673  ! See source term routines.
674  !
675  ! 3. Parameters :
676  !
677  ! Parameter list
678  ! ----------------------------------------------------------------
679  ! NDSI Int.
680  ! NRINP Int.
681  ! NML_INPUT_GRID Type.
682  ! ----------------------------------------------------------------
683  !
684  ! 4. Subroutines used :
685  !
686  ! Name Type Module Description
687  ! ----------------------------------------------------------------
688  ! STRACE Subr. W3SERVMD SUBROUTINE tracing.
689  ! ----------------------------------------------------------------
690  !
691  ! 5. Called by :
692  !
693  ! Name Type Module Description
694  ! ----------------------------------------------------------------
695  ! W3NMLMULTICONF Subr. N/A Namelist configuration routine.
696  ! ----------------------------------------------------------------
697  !
698  ! 6. Error messages :
699  !
700  ! None.
701  !
702  ! 7. Remarks :
703  !
704  ! 8. Structure :
705  !
706  ! See source code.
707  !
708  ! 9. Switches :
709  !
710  ! !/MPI Uses MPI communications
711  !
712  ! 10. Source code :
713  !
714  !/ ------------------------------------------------------------------- /
715 
716  USE wmmdatmd, ONLY: mdse
717  USE w3servmd, ONLY: extcde
718 #ifdef W3_S
719  USE w3servmd, ONLY: strace
720 #endif
721 
722  IMPLICIT NONE
723 
724  INTEGER, INTENT(IN) :: NDSI, NRINP
725  TYPE(nml_input_grid_t), INTENT(INOUT) :: NML_INPUT_GRID(NRINP)
726 
727  ! locals
728  INTEGER :: IERR, I
729  INTEGER, PARAMETER :: MAX_NRINP = 99
730  TYPE(nml_input_grid_t) :: INPUT(MAX_NRINP)
731  namelist /input_grid_nml/ input
732 #ifdef W3_S
733  INTEGER, SAVE :: IENT = 0
734 #endif
735 
736  ierr = 0
737 #ifdef W3_S
738  CALL strace (ient, 'READ_INPUT_GRID_NML')
739 #endif
740 
741  ! test NRINP
742  IF (nrinp.GT.max_nrinp) THEN
743  WRITE (mdse,'(A,/A,I6,/A,I6)') &
744  'ERROR: READ_INPUT_GRID_NML: NRINP > MAX_NRINP', &
745  'ERROR: READ_INPUT_GRID_NML: NRINP = ', nrinp, &
746  'ERROR: READ_INPUT_GRID_NML: MAX_NRINP = ',max_nrinp
747  CALL extcde (6)
748  END IF
749 
750  ! if no input grids, then exit
751  IF (nrinp.EQ.0) RETURN
752 
753  ! set default values for grid INPUT data
754  DO i = 1,nrinp
755  input(i)%NAME = 'unset'
756  input(i)%FORCING%WATER_LEVELS = .false.
757  input(i)%FORCING%CURRENTS = .false.
758  input(i)%FORCING%WINDS = .false.
759  input(i)%FORCING%ATM_MOMENTUM = .false.
760  input(i)%FORCING%AIR_DENSITY = .false.
761  input(i)%FORCING%ICE_CONC = .false.
762  input(i)%FORCING%ICE_PARAM1 = .false.
763  input(i)%FORCING%ICE_PARAM2 = .false.
764  input(i)%FORCING%ICE_PARAM3 = .false.
765  input(i)%FORCING%ICE_PARAM4 = .false.
766  input(i)%FORCING%ICE_PARAM5 = .false.
767  input(i)%FORCING%MUD_DENSITY = .false.
768  input(i)%FORCING%MUD_THICKNESS = .false.
769  input(i)%FORCING%MUD_VISCOSITY = .false.
770  input(i)%ASSIM%MEAN = .false.
771  input(i)%ASSIM%SPEC1D = .false.
772  input(i)%ASSIM%SPEC2D = .false.
773  END DO
774 
775  ! read input grid namelist
776  rewind(ndsi)
777  READ (ndsi, nml=input_grid_nml, iostat=ierr, iomsg=msg)
778  IF (ierr.GT.0) THEN
779  WRITE (mdse,'(A,/A)') &
780  'ERROR: READ_INPUT_GRID_NML: namelist read error', &
781  'ERROR: '//trim(msg)
782  CALL extcde (7)
783  END IF
784 
785  ! set/check RETURN values
786  DO i = 1,nrinp
787  IF (trim(input(i)%NAME).EQ.'unset') THEN
788  WRITE (mdse,10) 'ERROR: READ_INPUT_GRID_NML: REQUIRED INPUT(',i,')%NAME NOT SET'
789  CALL extcde (8)
790  END IF
791  END DO
792 
793  ! save namelist
794  nml_input_grid = input(1:nrinp)
795 
796 10 FORMAT (a,i0,a)
797 
798  END SUBROUTINE read_input_grid_nml
799 
800  !/ ------------------------------------------------------------------- /
801 
802 
803 
804 
805 
806 
807  !/ ------------------------------------------------------------------- /
808 
809  SUBROUTINE read_model_grid_nml (NDSI, NRGRD, NML_MODEL_GRID)
810  !/
811  !/ +-----------------------------------+
812  !/ | WAVEWATCH III NOAA/NCEP |
813  !/ | M. Accensi |
814  !/ | FORTRAN 90 |
815  !/ | Last update : 22-Mar-2021 |
816  !/ +-----------------------------------+
817  !/
818  !/ 09-Aug-2016 : Adding comments ( version 5.12 )
819  !/ 15-May-2018 : Update namelist ( version 6.05 )
820  !/ 22-Mar-2021 : Update namelist, new input fields ( version 7.13 )
821  !/
822  ! 1. Purpose :
823  !
824  !
825  ! 2. Method :
826  !
827  ! See source term routines.
828  !
829  ! 3. Parameters :
830  !
831  ! Parameter list
832  ! ----------------------------------------------------------------
833  ! NDSI Int.
834  ! NRGRD Int.
835  ! NML_MODEL_GRID Type.
836  ! ----------------------------------------------------------------
837  !
838  ! 4. Subroutines used :
839  !
840  ! Name Type Module Description
841  ! ----------------------------------------------------------------
842  ! STRACE Subr. W3SERVMD SUBROUTINE tracing.
843  ! ----------------------------------------------------------------
844  !
845  ! 5. Called by :
846  !
847  ! Name Type Module Description
848  ! ----------------------------------------------------------------
849  ! W3NMLMULTICONF Subr. N/A Namelist configuration routine.
850  ! ----------------------------------------------------------------
851  !
852  ! 6. Error messages :
853  !
854  ! None.
855  !
856  ! 7. Remarks :
857  !
858  ! 8. Structure :
859  !
860  ! See source code.
861  !
862  ! 9. Switches :
863  !
864  ! !/MPI Uses MPI communications
865  !
866  ! 10. Source code :
867  !
868  !/ ------------------------------------------------------------------- /
869 
870  USE wmmdatmd, ONLY: mdse
871  USE w3servmd, ONLY: extcde
872 #ifdef W3_S
873  USE w3servmd, ONLY: strace
874 #endif
875 
876  IMPLICIT NONE
877 
878  INTEGER, INTENT(IN) :: NDSI, NRGRD
879  TYPE(nml_model_grid_t), INTENT(INOUT) :: NML_MODEL_GRID(NRGRD)
880 
881  ! locals
882  INTEGER :: IERR, I
883  INTEGER, PARAMETER :: MAX_NRGRD = 99
884  TYPE(nml_model_grid_t) :: MODEL(MAX_NRGRD)
885  namelist /model_grid_nml/ model
886 #ifdef W3_S
887  INTEGER, SAVE :: IENT = 0
888 #endif
889 
890  ierr = 0
891 #ifdef W3_S
892  CALL strace (ient, 'READ_MODEL_GRID_NML')
893 #endif
894 
895  ! test NRGRD
896  IF (nrgrd.GT.max_nrgrd) THEN
897  WRITE (mdse,'(A,/A,I6,/A,I6)') &
898  'ERROR: READ_MODEL_GRID_NML: NRGRD > MAX_NRGRD', &
899  'ERROR: READ_MODEL_GRID_NML: NRGRD = ', nrgrd, &
900  'ERROR: READ_MODEL_GRID_NML: MAX_NRGRD = ',max_nrgrd
901  CALL extcde (9)
902  END IF
903 
904  ! if no model grids, then exit
905  IF (nrgrd.EQ.0) RETURN
906 
907  ! set default values for model input data
908  DO i = 1,nrgrd
909  model(i)%NAME = 'unset'
910  model(i)%FORCING%WATER_LEVELS = 'no'
911  model(i)%FORCING%CURRENTS = 'no'
912  model(i)%FORCING%WINDS = 'no'
913  model(i)%FORCING%ATM_MOMENTUM = 'no'
914  model(i)%FORCING%AIR_DENSITY = 'no'
915  model(i)%FORCING%ICE_CONC = 'no'
916  model(i)%FORCING%ICE_PARAM1 = 'no'
917  model(i)%FORCING%ICE_PARAM2 = 'no'
918  model(i)%FORCING%ICE_PARAM3 = 'no'
919  model(i)%FORCING%ICE_PARAM4 = 'no'
920  model(i)%FORCING%ICE_PARAM5 = 'no'
921  model(i)%FORCING%MUD_DENSITY = 'no'
922  model(i)%FORCING%MUD_THICKNESS = 'no'
923  model(i)%FORCING%MUD_VISCOSITY = 'no'
924  model(i)%ASSIM%MEAN = 'no'
925  model(i)%ASSIM%SPEC1D = 'no'
926  model(i)%ASSIM%SPEC2D = 'no'
927  model(i)%RESOURCE%RANK_ID = i
928  model(i)%RESOURCE%GROUP_ID = 1
929  model(i)%RESOURCE%COMM_FRAC = (/0.00,1.00/)
930  model(i)%RESOURCE%BOUND_FLAG = .false.
931  END DO
932 
933  ! read model namelist
934  rewind(ndsi)
935  READ (ndsi, nml=model_grid_nml, iostat=ierr, iomsg=msg)
936  IF (ierr.NE.0) THEN
937  WRITE (mdse,'(A,/A)') &
938  'ERROR: READ_MODEL_GRID_NML: namelist read error', &
939  'ERROR: '//trim(msg)
940  CALL extcde (10)
941  END IF
942 
943  ! set/check return values
944  DO i = 1,nrgrd
945  IF (trim(model(i)%NAME).EQ.'unset') THEN
946  WRITE (mdse,10) 'ERROR: READ_MODEL_GRID_NML: required MODEL(',i,')%NAME not set'
947  CALL extcde (11)
948  END IF
949  END DO
950 
951  ! save namelist
952  nml_model_grid = model(1:nrgrd)
953 
954 10 FORMAT (a,i0,a)
955 
956  END SUBROUTINE read_model_grid_nml
957 
958  !/ ------------------------------------------------------------------- /
959 
960 
961 
962 
963 
964 
965  !/ ------------------------------------------------------------------- /
966 
967  SUBROUTINE read_output_type_nml (NDSI, NRGRD, NML_OUTPUT_TYPE)
968  !/
969  !/ +-----------------------------------+
970  !/ | WAVEWATCH III NOAA/NCEP |
971  !/ | M. Accensi |
972  !/ | FORTRAN 90 |
973  !/ | Last update : 25-Sep-2020 |
974  !/ +-----------------------------------+
975  !/
976  !/ 09-Aug-2016 : Adding comments ( version 5.12 )
977  !/ 15-May-2018 : Update namelist ( version 6.05 )
978  !/ 25-Sep-2020 : Update namelist ( version 7.10 )
979  !/
980  ! 1. Purpose :
981  !
982  !
983  ! 2. Method :
984  !
985  ! See source term routines.
986  !
987  ! 3. Parameters :
988  !
989  ! Parameter list
990  ! ----------------------------------------------------------------
991  ! NDSI Int.
992  ! NRGRD Int.
993  ! NML_OUTPUT_TYPE Type.
994  ! ----------------------------------------------------------------
995  !
996  ! 4. Subroutines used :
997  !
998  ! Name Type Module Description
999  ! ----------------------------------------------------------------
1000  ! STRACE Subr. W3SERVMD SUBROUTINE tracing.
1001  ! ----------------------------------------------------------------
1002  !
1003  ! 5. Called by :
1004  !
1005  ! Name Type Module Description
1006  ! ----------------------------------------------------------------
1007  ! W3NMLMULTICONF Subr. N/A Namelist configuration routine.
1008  ! ----------------------------------------------------------------
1009  !
1010  ! 6. Error messages :
1011  !
1012  ! None.
1013  !
1014  ! 7. Remarks :
1015  !
1016  ! 8. Structure :
1017  !
1018  ! See source code.
1019  !
1020  ! 9. Switches :
1021  !
1022  ! !/MPI Uses MPI communications
1023  !
1024  ! 10. Source code :
1025  !
1026  !/ ------------------------------------------------------------------- /
1027 
1028  USE wmmdatmd, ONLY: mdse
1029  USE w3servmd, ONLY: extcde
1030 #ifdef W3_S
1031  USE w3servmd, ONLY: strace
1032 #endif
1033 
1034  IMPLICIT NONE
1035 
1036  INTEGER, INTENT(IN) :: NDSI, NRGRD
1037  TYPE(nml_output_type_t), INTENT(INOUT) :: NML_OUTPUT_TYPE(NRGRD)
1038 
1039  ! locals
1040  INTEGER :: IERR, I
1041  INTEGER, PARAMETER :: MAX_NRGRD = 99
1042  TYPE(nml_output_type_t) :: ALLTYPE
1043  TYPE(nml_output_type_t) :: ITYPE(MAX_NRGRD)
1044  namelist /output_type_nml/ alltype, itype
1045 #ifdef W3_S
1046  INTEGER, SAVE :: IENT = 0
1047 #endif
1048 
1049  ierr = 0
1050 #ifdef W3_S
1051  CALL strace (ient, 'READ_OUTPUT_TYPE_NML')
1052 #endif
1053 
1054  ! if no model grids, then exit
1055  IF (nrgrd.EQ.0) RETURN
1056 
1057  ! set default values for output type data
1058  DO i=1,nrgrd
1059  itype(i)%FIELD%LIST = 'unset'
1060  itype(i)%POINT%NAME = 'unset'
1061  itype(i)%POINT%FILE = 'points.list'
1062  itype(i)%TRACK%FORMAT = .true.
1063  itype(i)%PARTITION%X0 = 0
1064  itype(i)%PARTITION%XN = 0
1065  itype(i)%PARTITION%NX = 0
1066  itype(i)%PARTITION%Y0 = 0
1067  itype(i)%PARTITION%YN = 0
1068  itype(i)%PARTITION%NY = 0
1069  itype(i)%PARTITION%FORMAT = .true.
1070 #ifdef W3_COU
1071  itype(i)%COUPLING%SENT = 'unset'
1072  itype(i)%COUPLING%RECEIVED = 'unset'
1073  itype(i)%COUPLING%COUPLET0 = .false.
1074 #endif
1075  itype(i)%RESTART%EXTRA = 'unset'
1076  END DO
1077  alltype%FIELD%LIST = 'unset'
1078  alltype%POINT%NAME = 'unset'
1079  alltype%POINT%FILE = 'points.list'
1080  alltype%TRACK%FORMAT = .true.
1081  alltype%PARTITION%X0 = 0
1082  alltype%PARTITION%XN = 0
1083  alltype%PARTITION%NX = 0
1084  alltype%PARTITION%Y0 = 0
1085  alltype%PARTITION%YN = 0
1086  alltype%PARTITION%NY = 0
1087  alltype%PARTITION%FORMAT = .true.
1088 #ifdef W3_COU
1089  alltype%COUPLING%SENT = 'unset'
1090  alltype%COUPLING%RECEIVED = 'unset'
1091  alltype%COUPLING%COUPLET0 = .false.
1092 #endif
1093  alltype%RESTART%EXTRA = 'unset'
1094 
1095 
1096  ! read OUTPUT_TYPE namelist
1097  rewind(ndsi)
1098  READ (ndsi, nml=output_type_nml, iostat=ierr, iomsg=msg)
1099  IF (ierr.GT.0) THEN
1100  WRITE (mdse,'(A,/A)') &
1101  'ERROR: READ_OUTPUT_TYPE_NML: namelist read error', &
1102  'ERROR: '//trim(msg)
1103  CALL extcde (12)
1104  END IF
1105 
1106  ! propagate general type on all grids
1107  DO i=1,nrgrd
1108  itype(i) = alltype
1109  END DO
1110 
1111  ! read OUTPUT_TYPE namelist
1112  rewind(ndsi)
1113  READ (ndsi, nml=output_type_nml, iostat=ierr, iomsg=msg)
1114  IF (ierr.GT.0) THEN
1115  WRITE (mdse,'(A,/A)') &
1116  'ERROR: READ_OUTPUT_TYPE_NML: namelist read error', &
1117  'ERROR: '//trim(msg)
1118  CALL extcde (13)
1119  END IF
1120 
1121  ! save namelist
1122  nml_output_type = itype(1:nrgrd)
1123 
1124 
1125  END SUBROUTINE read_output_type_nml
1126 
1127  !/ ------------------------------------------------------------------- /
1128 
1129 
1130 
1131 
1132 
1133 
1134  !/ ------------------------------------------------------------------- /
1135 
1136  SUBROUTINE read_output_date_nml (NDSI, NRGRD, NML_OUTPUT_DATE)
1137  !/
1138  !/ +-----------------------------------+
1139  !/ | WAVEWATCH III NOAA/NCEP |
1140  !/ | M. Accensi |
1141  !/ | FORTRAN 90 |
1142  !/ | Last update : 15-May-2018 |
1143  !/ +-----------------------------------+
1144  !/
1145  !/ 09-Aug-2016 : Adding comments ( version 5.12 )
1146  !/ 15-May-2018 : Update namelist ( version 6.05 )
1147  !/
1148  ! 1. Purpose :
1149  !
1150  !
1151  ! 2. Method :
1152  !
1153  ! See source term routines.
1154  !
1155  ! 3. Parameters :
1156  !
1157  ! Parameter list
1158  ! ----------------------------------------------------------------
1159  ! NDSI Int.
1160  ! NRGRD Int.
1161  ! NML_OUTPUT_DATE Type.
1162  ! ----------------------------------------------------------------
1163  !
1164  ! 4. Subroutines used :
1165  !
1166  ! Name Type Module Description
1167  ! ----------------------------------------------------------------
1168  ! STRACE Subr. W3SERVMD SUBROUTINE tracing.
1169  ! ----------------------------------------------------------------
1170  !
1171  ! 5. Called by :
1172  !
1173  ! Name Type Module Description
1174  ! ----------------------------------------------------------------
1175  ! W3NMLMULTICONF Subr. N/A Namelist configuration routine.
1176  ! ----------------------------------------------------------------
1177  !
1178  ! 6. Error messages :
1179  !
1180  ! None.
1181  !
1182  ! 7. Remarks :
1183  !
1184  ! 8. Structure :
1185  !
1186  ! See source code.
1187  !
1188  ! 9. Switches :
1189  !
1190  ! !/MPI Uses MPI communications
1191  !
1192  ! 10. Source code :
1193  !
1194  !/ ------------------------------------------------------------------- /
1195 
1196  USE wmmdatmd, ONLY: mdse
1197  USE w3servmd, ONLY: extcde
1198 #ifdef W3_S
1199  USE w3servmd, ONLY: strace
1200 #endif
1201 
1202  IMPLICIT NONE
1203 
1204  INTEGER, INTENT(IN) :: NDSI, NRGRD
1205  TYPE(nml_output_date_t), INTENT(INOUT) :: NML_OUTPUT_DATE(NRGRD)
1206 
1207  ! locals
1208  INTEGER :: IERR, I
1209  INTEGER, PARAMETER :: MAX_NRGRD = 99
1210  TYPE(nml_output_date_t) :: ALLDATE
1211  TYPE(nml_output_date_t) :: IDATE(MAX_NRGRD)
1212  namelist /output_date_nml/ alldate, idate
1213 #ifdef W3_S
1214  INTEGER, SAVE :: IENT = 0
1215 #endif
1216 
1217  ierr = 0
1218 #ifdef W3_S
1219  CALL strace (ient, 'READ_OUTPUT_DATE_NML')
1220 #endif
1221 
1222  ! if no model grids, then exit
1223  IF (nrgrd.EQ.0) RETURN
1224 
1225  ! set default values for OUTPUT_DATE input data
1226  DO i=1,nrgrd
1227  idate(i)%FIELD%START = '19680606 000000'
1228  idate(i)%FIELD%STRIDE = '0'
1229  idate(i)%FIELD%STOP = '19680607 000000'
1230  idate(i)%FIELD%OUTFFILE = '0'
1231  idate(i)%POINT%OUTFFILE = '0'
1232  idate(i)%POINT%START = '19680606 000000'
1233  idate(i)%POINT%STRIDE = '0'
1234  idate(i)%POINT%STOP = '19680607 000000'
1235  idate(i)%TRACK%START = '19680606 000000'
1236  idate(i)%TRACK%STRIDE = '0'
1237  idate(i)%TRACK%STOP = '19680607 000000'
1238  idate(i)%RESTART%START = '19680606 000000'
1239  idate(i)%RESTART%STRIDE = '0'
1240  idate(i)%RESTART%STOP = '19680607 000000'
1241  idate(i)%RESTART2%START = '19680606 000000'
1242  idate(i)%RESTART2%STRIDE = '0'
1243  idate(i)%RESTART2%STOP = '19680607 000000'
1244  idate(i)%BOUNDARY%START = '19680606 000000'
1245  idate(i)%BOUNDARY%STRIDE = '0'
1246  idate(i)%BOUNDARY%STOP = '19680607 000000'
1247  idate(i)%PARTITION%START = '19680606 000000'
1248  idate(i)%PARTITION%STRIDE = '0'
1249  idate(i)%PARTITION%STOP = '19680607 000000'
1250 #ifdef W3_COU
1251  idate(i)%COUPLING%START = '19680606 000000'
1252  idate(i)%COUPLING%STRIDE = '0'
1253  idate(i)%COUPLING%STOP = '19680607 000000'
1254 #endif
1255  END DO
1256  alldate%FIELD%START = '19680606 000000'
1257  alldate%FIELD%STRIDE = '0'
1258  alldate%FIELD%STOP = '19680607 000000'
1259  alldate%FIELD%OUTFFILE = '0'
1260  alldate%POINT%START = '19680606 000000'
1261  alldate%POINT%STRIDE = '0'
1262  alldate%POINT%STOP = '19680607 000000'
1263  alldate%POINT%OUTFFILE = '0'
1264  alldate%TRACK%START = '19680606 000000'
1265  alldate%TRACK%STRIDE = '0'
1266  alldate%TRACK%STOP = '19680607 000000'
1267  alldate%RESTART%START = '19680606 000000'
1268  alldate%RESTART%STRIDE = '0'
1269  alldate%RESTART%STOP = '19680607 000000'
1270  alldate%RESTART2%START = '19680606 000000'
1271  alldate%RESTART2%STRIDE = '0'
1272  alldate%RESTART2%STOP = '19680607 000000'
1273  alldate%BOUNDARY%START = '19680606 000000'
1274  alldate%BOUNDARY%STRIDE = '0'
1275  alldate%BOUNDARY%STOP = '19680607 000000'
1276  alldate%PARTITION%START = '19680606 000000'
1277  alldate%PARTITION%STRIDE = '0'
1278  alldate%PARTITION%STOP = '19680607 000000'
1279 #ifdef W3_COU
1280  alldate%COUPLING%START = '19680606 000000'
1281  alldate%COUPLING%STRIDE = '0'
1282  alldate%COUPLING%STOP = '19680607 000000'
1283 #endif
1284 
1285 
1286  ! read OUTPUT_DATE namelist
1287  rewind(ndsi)
1288  READ (ndsi, nml=output_date_nml, iostat=ierr, iomsg=msg)
1289  IF (ierr.GT.0) THEN
1290  WRITE (mdse,'(A,/A)') &
1291  'ERROR: READ_OUTPUT_DATE_NML: namelist read error', &
1292  'ERROR: '//trim(msg)
1293  CALL extcde (14)
1294  END IF
1295 
1296  ! propagate general date to all grids
1297  DO i=1,nrgrd
1298  idate(i) = alldate
1299  END DO
1300 
1301  ! read OUTPUT_DATE namelist
1302  rewind(ndsi)
1303  READ (ndsi, nml=output_date_nml, iostat=ierr, iomsg=msg)
1304  IF (ierr.GT.0) THEN
1305  WRITE (mdse,'(A,/A)') &
1306  'ERROR: READ_OUTPUT_DATE_NML: namelist read error', &
1307  'ERROR: '//trim(msg)
1308  CALL extcde (15)
1309  END IF
1310 
1311  ! save namelist
1312  nml_output_date = idate(1:nrgrd)
1313 
1314 
1315  END SUBROUTINE read_output_date_nml
1316 
1317  !/ ------------------------------------------------------------------- /
1318 
1319 
1320 
1321 
1322 
1323 
1324  !/ ------------------------------------------------------------------- /
1325 
1326  SUBROUTINE read_homogeneous_nml (NDSI, NML_HOMOG_COUNT, NML_HOMOG_INPUT)
1327  !/
1328  !/ +-----------------------------------+
1329  !/ | WAVEWATCH III NOAA/NCEP |
1330  !/ | M. Accensi |
1331  !/ | FORTRAN 90 |
1332  !/ | Last update : 15-May-2018 |
1333  !/ +-----------------------------------+
1334  !/
1335  !/ 09-Aug-2016 : Adding comments ( version 5.12 )
1336  !/ 15-May-2018 : Update namelist ( version 6.05 )
1337  !/
1338  ! 1. Purpose :
1339  !
1340  !
1341  ! 2. Method :
1342  !
1343  ! See source term routines.
1344  !
1345  ! 3. Parameters :
1346  !
1347  ! Parameter list
1348  ! ----------------------------------------------------------------
1349  ! NDSI Int.
1350  ! NML_HOMOG_COUNT Type.
1351  ! NML_HOMOG_INPUT Type.
1352  ! ----------------------------------------------------------------
1353  !
1354  ! 4. Subroutines used :
1355  !
1356  ! Name Type Module Description
1357  ! ----------------------------------------------------------------
1358  ! STRACE Subr. W3SERVMD SUBROUTINE tracing.
1359  ! ----------------------------------------------------------------
1360  !
1361  ! 5. Called by :
1362  !
1363  ! Name Type Module Description
1364  ! ----------------------------------------------------------------
1365  ! W3NMLMULTICONF Subr. N/A Namelist configuration routine.
1366  ! ----------------------------------------------------------------
1367  !
1368  ! 6. Error messages :
1369  !
1370  ! None.
1371  !
1372  ! 7. Remarks :
1373  !
1374  ! 8. Structure :
1375  !
1376  ! See source code.
1377  !
1378  ! 9. Switches :
1379  !
1380  ! !/MPI Uses MPI communications
1381  !
1382  ! 10. Source code :
1383  !
1384  !/ ------------------------------------------------------------------- /
1385 
1386  USE wmmdatmd, ONLY: mdse
1387  USE w3servmd, ONLY: extcde
1388 #ifdef W3_S
1389  USE w3servmd, ONLY: strace
1390 #endif
1391 
1392  IMPLICIT NONE
1393 
1394  INTEGER, INTENT(IN) :: NDSI
1395  TYPE(nml_homog_count_t), INTENT(OUT) :: NML_HOMOG_COUNT
1396  TYPE(nml_homog_input_t), ALLOCATABLE, INTENT(OUT) :: NML_HOMOG_INPUT(:)
1397 
1398  ! locals
1399  INTEGER :: IERR, I
1400  TYPE(nml_homog_count_t) :: HOMOG_COUNT
1401  namelist /homog_count_nml/ homog_count
1402  TYPE(nml_homog_input_t), ALLOCATABLE :: HOMOG_INPUT(:)
1403  namelist /homog_input_nml/ homog_input
1404 #ifdef W3_S
1405  INTEGER, SAVE :: IENT = 0
1406 #endif
1407 
1408  ierr = 0
1409 #ifdef W3_S
1410  CALL strace (ient, 'READ_HOMOGENEOUS_NML')
1411 #endif
1412 
1413 
1414  ! set default values for homogeneous number structure
1415  homog_count%N_MOV = 0
1416  homog_count%N_TOT = 0
1417 
1418 
1419  ! read homogeneous count namelist
1420  rewind(ndsi)
1421  READ (ndsi, nml=homog_count_nml, iostat=ierr, iomsg=msg)
1422  IF (ierr.GT.0) THEN
1423  WRITE (mdse,'(A,/A)') &
1424  'ERROR: READ_HOMOGENEOUS_NML: namelist HOMOG_COUNT read error', &
1425  'ERROR: '//trim(msg)
1426  CALL extcde (16)
1427  END IF
1428 
1429  ! allocate the total count of homogeneous input
1430  homog_count%N_TOT = homog_count%N_MOV
1431  ALLOCATE(homog_input(homog_count%N_TOT))
1432  ALLOCATE(nml_homog_input(homog_count%N_TOT))
1433 
1434  ! set default values for homogeneous structure
1435  IF (homog_count%N_TOT .NE. 0 ) THEN
1436  DO i=1,homog_count%N_TOT
1437  homog_input(i)%NAME = 'unset'
1438  homog_input(i)%DATE = '19680606 000000'
1439  homog_input(i)%VALUE1 = 0.
1440  homog_input(i)%VALUE2 = 0.
1441  homog_input(i)%VALUE3 = 0.
1442  END DO
1443  END IF
1444 
1445  ! read homogeneous input namelist
1446  rewind(ndsi)
1447  READ (ndsi, nml=homog_input_nml, iostat=ierr, iomsg=msg)
1448  IF (ierr.GT.0) THEN
1449  WRITE (mdse,'(A,/A)') &
1450  'ERROR: READ_HOMOGENEOUS_NML: namelist HOMOG_INPUT_NML read error', &
1451  'ERROR: '//trim(msg)
1452  CALL extcde (17)
1453  END IF
1454 
1455  ! save namelist
1456  nml_homog_count = homog_count
1457  nml_homog_input = homog_input
1458 
1459 
1460  END SUBROUTINE read_homogeneous_nml
1461 
1462  !/ ------------------------------------------------------------------- /
1463 
1464 
1465 
1466 
1467 
1468 
1469 
1470 
1471 
1472  !/ ------------------------------------------------------------------- /
1473 
1474  SUBROUTINE report_domain_nml (NML_DOMAIN)
1475  !/
1476  !/ +-----------------------------------+
1477  !/ | WAVEWATCH III NOAA/NCEP |
1478  !/ | M. Accensi |
1479  !/ | FORTRAN 90 |
1480  !/ | Last update : 15-May-2018 |
1481  !/ +-----------------------------------+
1482  !/
1483  !/ 09-Aug-2016 : Adding comments ( version 5.12 )
1484  !/ 15-May-2018 : Update namelist ( version 6.05 )
1485  !/
1486  ! 1. Purpose :
1487  !
1488  !
1489  ! 2. Method :
1490  !
1491  ! See source term routines.
1492  !
1493  ! 3. Parameters :
1494  !
1495  ! Parameter list
1496  ! ----------------------------------------------------------------
1497  ! NML_DOMAIN Type.
1498  ! ----------------------------------------------------------------
1499  !
1500  ! 4. Subroutines used :
1501  !
1502  ! Name Type Module Description
1503  ! ----------------------------------------------------------------
1504  ! STRACE Subr. W3SERVMD SUBROUTINE tracing.
1505  ! ----------------------------------------------------------------
1506  !
1507  ! 5. Called by :
1508  !
1509  ! Name Type Module Description
1510  ! ----------------------------------------------------------------
1511  ! W3NMLMULTICONF Subr. N/A Namelist configuration routine.
1512  ! ----------------------------------------------------------------
1513  !
1514  ! 6. Error messages :
1515  !
1516  ! None.
1517  !
1518  ! 7. Remarks :
1519  !
1520  ! 8. Structure :
1521  !
1522  ! See source code.
1523  !
1524  ! 9. Switches :
1525  !
1526  ! !/MPI Uses MPI communications
1527  !
1528  ! 10. Source code :
1529  !
1530  !/ ------------------------------------------------------------------- /
1531 
1532 #ifdef W3_S
1533  USE w3servmd, ONLY: strace
1534 #endif
1535 
1536  IMPLICIT NONE
1537 
1538  TYPE(nml_domain_t), INTENT(IN) :: NML_DOMAIN
1539 #ifdef W3_S
1540  INTEGER, SAVE :: IENT = 0
1541 #endif
1542 
1543 #ifdef W3_S
1544  CALL strace (ient, 'REPORT_DOMAIN_NML')
1545 #endif
1546 
1547  WRITE (msg,'(A)') 'DOMAIN % '
1548  WRITE (ndsn,'(A)')
1549  WRITE (ndsn,11) trim(msg),'NRINP = ', nml_domain%NRINP
1550  WRITE (ndsn,11) trim(msg),'NRGRD = ', nml_domain%NRGRD
1551  WRITE (ndsn,13) trim(msg),'UNIPTS = ', nml_domain%UNIPTS
1552  WRITE (ndsn,11) trim(msg),'IOSTYP = ', nml_domain%IOSTYP
1553  WRITE (ndsn,13) trim(msg),'UPPROC = ', nml_domain%UPPROC
1554  WRITE (ndsn,13) trim(msg),'PSHARE = ', nml_domain%PSHARE
1555  WRITE (ndsn,13) trim(msg),'FLGHG1 = ', nml_domain%FLGHG1
1556  WRITE (ndsn,13) trim(msg),'FLGHG2 = ', nml_domain%FLGHG2
1557  WRITE (ndsn,10) trim(msg),'START = ', trim(nml_domain%START)
1558  WRITE (ndsn,10) trim(msg),'STOP = ', trim(nml_domain%STOP)
1559 
1560 10 FORMAT (a,2x,a,a)
1561 11 FORMAT (a,2x,a,i8)
1562 13 FORMAT (a,2x,a,l1)
1563 
1564  END SUBROUTINE report_domain_nml
1565 
1566  !/ ------------------------------------------------------------------- /
1567 
1568 
1569 
1570 
1571 
1572 
1573  !/ ------------------------------------------------------------------- /
1574 
1575  SUBROUTINE report_input_grid_nml (NRINP, NML_INPUT_GRID)
1576  !/
1577  !/ +-----------------------------------+
1578  !/ | WAVEWATCH III NOAA/NCEP |
1579  !/ | M. Accensi |
1580  !/ | FORTRAN 90 |
1581  !/ | Last update : 22-Mar-2021 |
1582  !/ +-----------------------------------+
1583  !/
1584  !/ 09-Aug-2016 : Adding comments ( version 5.12 )
1585  !/ 15-May-2018 : Update namelist ( version 6.05 )
1586  !/ 22-Mar-2021 : Update namelist, new input fields ( version 7.13 )
1587  !/
1588  ! 1. Purpose :
1589  !
1590  !
1591  ! 2. Method :
1592  !
1593  ! See source term routines.
1594  !
1595  ! 3. Parameters :
1596  !
1597  ! Parameter list
1598  ! ----------------------------------------------------------------
1599  ! NRINP Int.
1600  ! NML_INPUT_GRID Type.
1601  ! ----------------------------------------------------------------
1602  !
1603  ! 4. Subroutines used :
1604  !
1605  ! Name Type Module Description
1606  ! ----------------------------------------------------------------
1607  ! STRACE Subr. W3SERVMD SUBROUTINE tracing.
1608  ! ----------------------------------------------------------------
1609  !
1610  ! 5. Called by :
1611  !
1612  ! Name Type Module Description
1613  ! ----------------------------------------------------------------
1614  ! W3NMLMULTICONF Subr. N/A Namelist configuration routine.
1615  ! ----------------------------------------------------------------
1616  !
1617  ! 6. Error messages :
1618  !
1619  ! None.
1620  !
1621  ! 7. Remarks :
1622  !
1623  ! 8. Structure :
1624  !
1625  ! See source code.
1626  !
1627  ! 9. Switches :
1628  !
1629  ! !/MPI Uses MPI communications
1630  !
1631  ! 10. Source code :
1632  !
1633  !/ ------------------------------------------------------------------- /
1634 
1635 #ifdef W3_S
1636  USE w3servmd, ONLY: strace
1637 #endif
1638 
1639  IMPLICIT NONE
1640 
1641  INTEGER, INTENT(IN) :: NRINP
1642  TYPE(nml_input_grid_t), INTENT(IN) :: NML_INPUT_GRID(NRINP)
1643 
1644  ! locals
1645  INTEGER :: I
1646 #ifdef W3_S
1647  INTEGER, SAVE :: IENT = 0
1648 #endif
1649 
1650 #ifdef W3_S
1651  CALL strace (ient, 'REPORT_INPUT_GRID_NML')
1652 #endif
1653 
1654  DO i = 1,nrinp
1655  WRITE (msg,'(A,I0.2,A)') 'INPUT GRID ',i,' % '
1656  WRITE (ndsn,'(A)')
1657  WRITE (ndsn,10) trim(msg),'NAME = ', trim(nml_input_grid(i)%NAME)
1658  WRITE (ndsn,13) trim(msg),'FORCING % WATER_LEVELS = ', nml_input_grid(i)%FORCING%WATER_LEVELS
1659  WRITE (ndsn,13) trim(msg),'FORCING % CURRENTS = ', nml_input_grid(i)%FORCING%CURRENTS
1660  WRITE (ndsn,13) trim(msg),'FORCING % WINDS = ', nml_input_grid(i)%FORCING%WINDS
1661  WRITE (ndsn,13) trim(msg),'FORCING % ATM_MOMENTUM = ', nml_input_grid(i)%FORCING%ATM_MOMENTUM
1662  WRITE (ndsn,13) trim(msg),'FORCING % AIR_DENSITY = ', nml_input_grid(i)%FORCING%AIR_DENSITY
1663  WRITE (ndsn,13) trim(msg),'FORCING % ICE_CONC = ', nml_input_grid(i)%FORCING%ICE_CONC
1664  WRITE (ndsn,13) trim(msg),'FORCING % ICE_PARAM1 = ', nml_input_grid(i)%FORCING%ICE_PARAM1
1665  WRITE (ndsn,13) trim(msg),'FORCING % ICE_PARAM2 = ', nml_input_grid(i)%FORCING%ICE_PARAM2
1666  WRITE (ndsn,13) trim(msg),'FORCING % ICE_PARAM3 = ', nml_input_grid(i)%FORCING%ICE_PARAM3
1667  WRITE (ndsn,13) trim(msg),'FORCING % ICE_PARAM4 = ', nml_input_grid(i)%FORCING%ICE_PARAM4
1668  WRITE (ndsn,13) trim(msg),'FORCING % ICE_PARAM5 = ', nml_input_grid(i)%FORCING%ICE_PARAM5
1669  WRITE (ndsn,13) trim(msg),'FORCING % MUD_DENSITY = ', nml_input_grid(i)%FORCING%MUD_DENSITY
1670  WRITE (ndsn,13) trim(msg),'FORCING % MUD_THICKNESS = ', nml_input_grid(i)%FORCING%MUD_THICKNESS
1671  WRITE (ndsn,13) trim(msg),'FORCING % MUD_VISCOSITY = ', nml_input_grid(i)%FORCING%MUD_VISCOSITY
1672  WRITE (ndsn,13) trim(msg),'ASSIM % MEAN = ', nml_input_grid(i)%ASSIM%MEAN
1673  WRITE (ndsn,13) trim(msg),'ASSIM % SPEC1D = ', nml_input_grid(i)%ASSIM%SPEC1D
1674  WRITE (ndsn,13) trim(msg),'ASSIM % SPEC2D = ', nml_input_grid(i)%ASSIM%SPEC2D
1675  END DO
1676  WRITE (*,*)
1677 
1678 10 FORMAT (a,2x,a,a)
1679 13 FORMAT (a,2x,a,l1)
1680 
1681  END SUBROUTINE report_input_grid_nml
1682 
1683  !/ ------------------------------------------------------------------- /
1684 
1685 
1686 
1687 
1688 
1689 
1690  !/ ------------------------------------------------------------------- /
1691 
1692  SUBROUTINE report_model_grid_nml (NRGRD, NML_MODEL_GRID)
1693  !/
1694  !/ +-----------------------------------+
1695  !/ | WAVEWATCH III NOAA/NCEP |
1696  !/ | M. Accensi |
1697  !/ | FORTRAN 90 |
1698  !/ | Last update : 22-Mar-2021 |
1699  !/ +-----------------------------------+
1700  !/
1701  !/ 09-Aug-2016 : Adding comments ( version 5.12 )
1702  !/ 15-May-2018 : Update namelist ( version 6.05 )
1703  !/ 22-Mar-2021 : Update namelist, new input fields ( version 7.13 )
1704  !/
1705  ! 1. Purpose :
1706  !
1707  !
1708  ! 2. Method :
1709  !
1710  ! See source term routines.
1711  !
1712  ! 3. Parameters :
1713  !
1714  ! Parameter list
1715  ! ----------------------------------------------------------------
1716  ! NRGRD Int.
1717  ! NML_MODEL_GRID Type.
1718  ! ----------------------------------------------------------------
1719  !
1720  ! 4. Subroutines used :
1721  !
1722  ! Name Type Module Description
1723  ! ----------------------------------------------------------------
1724  ! STRACE Subr. W3SERVMD SUBROUTINE tracing.
1725  ! ----------------------------------------------------------------
1726  !
1727  ! 5. Called by :
1728  !
1729  ! Name Type Module Description
1730  ! ----------------------------------------------------------------
1731  ! W3NMLMULTICONF Subr. N/A Namelist configuration routine.
1732  ! ----------------------------------------------------------------
1733  !
1734  ! 6. Error messages :
1735  !
1736  ! None.
1737  !
1738  ! 7. Remarks :
1739  !
1740  ! 8. Structure :
1741  !
1742  ! See source code.
1743  !
1744  ! 9. Switches :
1745  !
1746  ! !/MPI Uses MPI communications
1747  !
1748  ! 10. Source code :
1749  !
1750  !/ ------------------------------------------------------------------- /
1751 
1752 #ifdef W3_S
1753  USE w3servmd, ONLY: strace
1754 #endif
1755 
1756  IMPLICIT NONE
1757 
1758  INTEGER, INTENT(IN) :: NRGRD
1759  TYPE(nml_model_grid_t), INTENT(IN) :: NML_MODEL_GRID(NRGRD)
1760 
1761  ! locals
1762  INTEGER :: I
1763 #ifdef W3_S
1764  INTEGER, SAVE :: IENT = 0
1765 #endif
1766 
1767 #ifdef W3_S
1768  CALL strace (ient, 'REPORT_MODEL_GRID_NML')
1769 #endif
1770 
1771  DO i = 1,nrgrd
1772  WRITE (msg,'(A,I0.4,A)') 'MODEL GRID ',i,' % '
1773  WRITE (ndsn,'(A)')
1774  WRITE (ndsn,10) trim(msg),'NAME = ', trim(nml_model_grid(i)%NAME)
1775  WRITE (ndsn,10) trim(msg),'FORCING % WATER_LEVELS = ', trim(nml_model_grid(i)%FORCING%WATER_LEVELS)
1776  WRITE (ndsn,10) trim(msg),'FORCING % CURRENTS = ', trim(nml_model_grid(i)%FORCING%CURRENTS)
1777  WRITE (ndsn,10) trim(msg),'FORCING % WINDS = ', trim(nml_model_grid(i)%FORCING%WINDS)
1778  WRITE (ndsn,10) trim(msg),'FORCING % ATM_MOMENTUM = ', trim(nml_model_grid(i)%FORCING%ATM_MOMENTUM)
1779  WRITE (ndsn,10) trim(msg),'FORCING % AIR_DENSITY = ', trim(nml_model_grid(i)%FORCING%AIR_DENSITY)
1780  WRITE (ndsn,10) trim(msg),'FORCING % ICE_CONC = ', trim(nml_model_grid(i)%FORCING%ICE_CONC)
1781  WRITE (ndsn,10) trim(msg),'FORCING % ICE_PARAM1 = ', trim(nml_model_grid(i)%FORCING%ICE_PARAM1)
1782  WRITE (ndsn,10) trim(msg),'FORCING % ICE_PARAM2 = ', trim(nml_model_grid(i)%FORCING%ICE_PARAM2)
1783  WRITE (ndsn,10) trim(msg),'FORCING % ICE_PARAM3 = ', trim(nml_model_grid(i)%FORCING%ICE_PARAM3)
1784  WRITE (ndsn,10) trim(msg),'FORCING % ICE_PARAM4 = ', trim(nml_model_grid(i)%FORCING%ICE_PARAM4)
1785  WRITE (ndsn,10) trim(msg),'FORCING % ICE_PARAM5 = ', trim(nml_model_grid(i)%FORCING%ICE_PARAM5)
1786  WRITE (ndsn,10) trim(msg),'FORCING % MUD_DENSITY = ', trim(nml_model_grid(i)%FORCING%MUD_DENSITY)
1787  WRITE (ndsn,10) trim(msg),'FORCING % MUD_THICKNESS = ', trim(nml_model_grid(i)%FORCING%MUD_THICKNESS)
1788  WRITE (ndsn,10) trim(msg),'FORCING % MUD_VISCOSITY = ', trim(nml_model_grid(i)%FORCING%MUD_VISCOSITY)
1789  WRITE (ndsn,10) trim(msg),'ASSIM % MEAN = ', trim(nml_model_grid(i)%ASSIM%MEAN)
1790  WRITE (ndsn,10) trim(msg),'ASSIM % SPEC1D = ', trim(nml_model_grid(i)%ASSIM%SPEC1D)
1791  WRITE (ndsn,10) trim(msg),'ASSIM % SPEC2D = ', trim(nml_model_grid(i)%ASSIM%SPEC2D)
1792  WRITE (ndsn,11) trim(msg),'RESOURCE % RANK_ID = ', nml_model_grid(i)%RESOURCE%RANK_ID
1793  WRITE (ndsn,11) trim(msg),'RESOURCE % GROUP_ID = ', nml_model_grid(i)%RESOURCE%GROUP_ID
1794  WRITE (ndsn,12) trim(msg),'RESOURCE % COMM_FRAC = ', nml_model_grid(i)%RESOURCE%COMM_FRAC(1), &
1795  nml_model_grid(i)%RESOURCE%COMM_FRAC(2)
1796  WRITE (ndsn,13) trim(msg),'RESOURCE % BOUND_FLAG = ', nml_model_grid(i)%RESOURCE%BOUND_FLAG
1797  END DO
1798  WRITE (ndsn,'(A)')
1799 
1800 10 FORMAT (a,2x,a,a)
1801 11 FORMAT (a,2x,a,i8)
1802 12 FORMAT (a,2x,a,'(',f5.2,',',f5.2,' )')
1803 13 FORMAT (a,2x,a,l1)
1804 
1805  END SUBROUTINE report_model_grid_nml
1806 
1807  !/ ------------------------------------------------------------------- /
1808 
1809 
1810 
1811 
1812 
1813 
1814  !/ ------------------------------------------------------------------- /
1815 
1816  SUBROUTINE report_output_type_nml (NRGRD, NML_OUTPUT_TYPE)
1817  !/
1818  !/ +-----------------------------------+
1819  !/ | WAVEWATCH III NOAA/NCEP |
1820  !/ | M. Accensi |
1821  !/ | FORTRAN 90 |
1822  !/ | Last update : 25-Sep-2020 |
1823  !/ +-----------------------------------+
1824  !/
1825  !/ 09-Aug-2016 : Adding comments ( version 5.12 )
1826  !/ 15-May-2018 : Update namelist ( version 6.05 )
1827  !/ 25-Sep-2020 : Update namelist ( version 7.10 )
1828  !/
1829  ! 1. Purpose :
1830  !
1831  !
1832  ! 2. Method :
1833  !
1834  ! See source term routines.
1835  !
1836  ! 3. Parameters :
1837  !
1838  ! Parameter list
1839  ! ----------------------------------------------------------------
1840  ! NRGRD Int.
1841  ! NML_OUTPUT_TYPE Type.
1842  ! ----------------------------------------------------------------
1843  !
1844  ! 4. Subroutines used :
1845  !
1846  ! Name Type Module Description
1847  ! ----------------------------------------------------------------
1848  ! STRACE Subr. W3SERVMD SUBROUTINE tracing.
1849  ! ----------------------------------------------------------------
1850  !
1851  ! 5. Called by :
1852  !
1853  ! Name Type Module Description
1854  ! ----------------------------------------------------------------
1855  ! W3NMLMULTICONF Subr. N/A Namelist configuration routine.
1856  ! ----------------------------------------------------------------
1857  !
1858  ! 6. Error messages :
1859  !
1860  ! None.
1861  !
1862  ! 7. Remarks :
1863  !
1864  ! 8. Structure :
1865  !
1866  ! See source code.
1867  !
1868  ! 9. Switches :
1869  !
1870  ! !/MPI Uses MPI communications
1871  !
1872  ! 10. Source code :
1873  !
1874  !/ ------------------------------------------------------------------- /
1875 
1876 #ifdef W3_S
1877  USE w3servmd, ONLY: strace
1878 #endif
1879 
1880  IMPLICIT NONE
1881 
1882  INTEGER, INTENT(IN) :: NRGRD
1883  TYPE(nml_output_type_t), INTENT(IN) :: NML_OUTPUT_TYPE(NRGRD)
1884 
1885  ! locals
1886  INTEGER :: I
1887 #ifdef W3_S
1888  INTEGER, SAVE :: IENT = 0
1889 #endif
1890 
1891 #ifdef W3_S
1892  CALL strace (ient, 'REPORT_OUTPUT_TYPE_NML')
1893 #endif
1894 
1895  DO i=1,nrgrd
1896  WRITE (msg,'(A,I1,A)') 'OUTPUT TYPE MODEL GRID',i, ' % '
1897  WRITE (ndsn,'(A)')
1898  WRITE (ndsn,10) trim(msg),'FIELD % LIST = ', trim(nml_output_type(i)%FIELD%LIST)
1899  WRITE (ndsn,10) trim(msg),'POINT % NAME = ', trim(nml_output_type(i)%POINT%NAME)
1900  WRITE (ndsn,10) trim(msg),'POINT % FILE = ', trim(nml_output_type(i)%POINT%FILE)
1901  WRITE (ndsn,13) trim(msg),'TRACK % FORMAT = ', nml_output_type(i)%TRACK%FORMAT
1902  WRITE (ndsn,11) trim(msg),'PARTITION % X0 = ', nml_output_type(i)%PARTITION%X0
1903  WRITE (ndsn,11) trim(msg),'PARTITION % XN = ', nml_output_type(i)%PARTITION%XN
1904  WRITE (ndsn,11) trim(msg),'PARTITION % NX = ', nml_output_type(i)%PARTITION%NX
1905  WRITE (ndsn,11) trim(msg),'PARTITION % Y0 = ', nml_output_type(i)%PARTITION%Y0
1906  WRITE (ndsn,11) trim(msg),'PARTITION % YN = ', nml_output_type(i)%PARTITION%YN
1907  WRITE (ndsn,11) trim(msg),'PARTITION % NY = ', nml_output_type(i)%PARTITION%NY
1908  WRITE (ndsn,13) trim(msg),'PARTITION % FORMAT = ', nml_output_type(i)%PARTITION%FORMAT
1909 #ifdef W3_COU
1910  WRITE (ndsn,10) trim(msg),'COUPLING % SENT = ', trim(nml_output_type(i)%COUPLING%SENT)
1911  WRITE (ndsn,10) trim(msg),'COUPLING % RECEIVED = ', trim(nml_output_type(i)%COUPLING%RECEIVED)
1912  WRITE (ndsn,13) trim(msg),'COUPLING % COUPLET0 = ', nml_output_type(i)%COUPLING%COUPLET0
1913 #endif
1914  WRITE (ndsn,10) trim(msg),'RESTART % EXTRA = ', trim(nml_output_type(i)%RESTART%EXTRA)
1915  END DO
1916  WRITE (ndsn,'(A)')
1917 
1918 10 FORMAT (a,2x,a,a)
1919 11 FORMAT (a,2x,a,i8)
1920 13 FORMAT (a,2x,a,l1)
1921 
1922  END SUBROUTINE report_output_type_nml
1923 
1924  !/ ------------------------------------------------------------------- /
1925 
1926 
1927 
1928 
1929 
1930 
1931  !/ ------------------------------------------------------------------- /
1932 
1933  SUBROUTINE report_output_date_nml (NRGRD, NML_OUTPUT_DATE)
1934  !/
1935  !/ +-----------------------------------+
1936  !/ | WAVEWATCH III NOAA/NCEP |
1937  !/ | M. Accensi |
1938  !/ | FORTRAN 90 |
1939  !/ | Last update : 15-May-2018 |
1940  !/ +-----------------------------------+
1941  !/
1942  !/ 09-Aug-2016 : Adding comments ( version 5.12 )
1943  !/ 15-May-2018 : Update namelist ( version 6.05 )
1944  !/
1945  ! 1. Purpose :
1946  !
1947  !
1948  ! 2. Method :
1949  !
1950  ! See source term routines.
1951  !
1952  ! 3. Parameters :
1953  !
1954  ! Parameter list
1955  ! ----------------------------------------------------------------
1956  ! NRGRD Int.
1957  ! NML_OUTPUT_DATE Type.
1958  ! ----------------------------------------------------------------
1959  !
1960  ! 4. Subroutines used :
1961  !
1962  ! Name Type Module Description
1963  ! ----------------------------------------------------------------
1964  ! STRACE Subr. W3SERVMD SUBROUTINE tracing.
1965  ! ----------------------------------------------------------------
1966  !
1967  ! 5. Called by :
1968  !
1969  ! Name Type Module Description
1970  ! ----------------------------------------------------------------
1971  ! W3NMLMULTICONF Subr. N/A Namelist configuration routine.
1972  ! ----------------------------------------------------------------
1973  !
1974  ! 6. Error messages :
1975  !
1976  ! None.
1977  !
1978  ! 7. Remarks :
1979  !
1980  ! 8. Structure :
1981  !
1982  ! See source code.
1983  !
1984  ! 9. Switches :
1985  !
1986  ! !/MPI Uses MPI communications
1987  !
1988  ! 10. Source code :
1989  !
1990  !/ ------------------------------------------------------------------- /
1991 
1992 #ifdef W3_S
1993  USE w3servmd, ONLY: strace
1994 #endif
1995 
1996  IMPLICIT NONE
1997 
1998  INTEGER, INTENT(IN) :: NRGRD
1999  TYPE(nml_output_date_t), INTENT(IN) :: NML_OUTPUT_DATE(NRGRD)
2000 
2001  ! locals
2002  INTEGER :: I
2003 #ifdef W3_S
2004  INTEGER, SAVE :: IENT = 0
2005 #endif
2006 
2007 #ifdef W3_S
2008  CALL strace (ient, 'REPORT_OUTPUT_DATE_NML')
2009 #endif
2010 
2011  DO i=1,nrgrd
2012  WRITE (msg,'(A,I1,A)') 'OUTPUT DATE MODEL GRID',i, ' % '
2013  WRITE (ndsn,'(A)')
2014  WRITE (ndsn,10) trim(msg),'FIELD % START = ', trim(nml_output_date(i)%FIELD%START)
2015  WRITE (ndsn,10) trim(msg),'FIELD % STRIDE = ', trim(nml_output_date(i)%FIELD%STRIDE)
2016  WRITE (ndsn,10) trim(msg),'FIELD % STOP = ', trim(nml_output_date(i)%FIELD%STOP)
2017  WRITE (ndsn,10) trim(msg),'POINT % START = ', trim(nml_output_date(i)%POINT%START)
2018  WRITE (ndsn,10) trim(msg),'POINT % STRIDE = ', trim(nml_output_date(i)%POINT%STRIDE)
2019  WRITE (ndsn,10) trim(msg),'POINT % STOP = ', trim(nml_output_date(i)%POINT%STOP)
2020  WRITE (ndsn,10) trim(msg),'TRACK % START = ', trim(nml_output_date(i)%TRACK%START)
2021  WRITE (ndsn,10) trim(msg),'TRACK % STRIDE = ', trim(nml_output_date(i)%TRACK%STRIDE)
2022  WRITE (ndsn,10) trim(msg),'TRACK % STOP = ', trim(nml_output_date(i)%TRACK%STOP)
2023  WRITE (ndsn,10) trim(msg),'RESTART % START = ', trim(nml_output_date(i)%RESTART%START)
2024  WRITE (ndsn,10) trim(msg),'RESTART % STRIDE = ', trim(nml_output_date(i)%RESTART%STRIDE)
2025  WRITE (ndsn,10) trim(msg),'RESTART % STOP = ', trim(nml_output_date(i)%RESTART%STOP)
2026  WRITE (ndsn,10) trim(msg),'RESTART2 % START = ', trim(nml_output_date(i)%RESTART2%START)
2027  WRITE (ndsn,10) trim(msg),'RESTART2 % STRIDE = ', trim(nml_output_date(i)%RESTART2%STRIDE)
2028  WRITE (ndsn,10) trim(msg),'RESTART2 % STOP = ', trim(nml_output_date(i)%RESTART2%STOP)
2029  WRITE (ndsn,10) trim(msg),'BOUNDARY % START = ', trim(nml_output_date(i)%BOUNDARY%START)
2030  WRITE (ndsn,10) trim(msg),'BOUNDARY % STRIDE = ', trim(nml_output_date(i)%BOUNDARY%STRIDE)
2031  WRITE (ndsn,10) trim(msg),'BOUNDARY % STOP = ', trim(nml_output_date(i)%BOUNDARY%STOP)
2032  WRITE (ndsn,10) trim(msg),'PARTITION % START = ', trim(nml_output_date(i)%PARTITION%START)
2033  WRITE (ndsn,10) trim(msg),'PARTITION % STRIDE = ', trim(nml_output_date(i)%PARTITION%STRIDE)
2034  WRITE (ndsn,10) trim(msg),'PARTITION % STOP = ', trim(nml_output_date(i)%PARTITION%STOP)
2035 #ifdef W3_COU
2036  WRITE (ndsn,10) trim(msg),'COUPLING % START = ', trim(nml_output_date(i)%COUPLING%START)
2037  WRITE (ndsn,10) trim(msg),'COUPLING % STRIDE = ', trim(nml_output_date(i)%COUPLING%STRIDE)
2038  WRITE (ndsn,10) trim(msg),'COUPLING % STOP = ', trim(nml_output_date(i)%COUPLING%STOP)
2039 #endif
2040  END DO
2041  WRITE (ndsn,'(A)')
2042 
2043 10 FORMAT (a,2x,a,a)
2044 
2045  END SUBROUTINE report_output_date_nml
2046 
2047  !/ ------------------------------------------------------------------- /
2048 
2049 
2050 
2051 
2052 
2053 
2054  !/ ------------------------------------------------------------------- /
2055 
2056  SUBROUTINE report_homogeneous_nml (NML_HOMOG_COUNT, NML_HOMOG_INPUT)
2057  !/
2058  !/ +-----------------------------------+
2059  !/ | WAVEWATCH III NOAA/NCEP |
2060  !/ | M. Accensi |
2061  !/ | FORTRAN 90 |
2062  !/ | Last update : 15-May-2018 |
2063  !/ +-----------------------------------+
2064  !/
2065  !/ 09-Aug-2016 : Adding comments ( version 5.12 )
2066  !/ 15-May-2018 : Update namelist ( version 6.05 )
2067  !/
2068  ! 1. Purpose :
2069  !
2070  !
2071  ! 2. Method :
2072  !
2073  ! See source term routines.
2074  !
2075  ! 3. Parameters :
2076  !
2077  ! Parameter list
2078  ! ----------------------------------------------------------------
2079  ! NML_HOMOG_COUNT Type.
2080  ! NML_HOMOG_INPUT Type.
2081  ! ----------------------------------------------------------------
2082  !
2083  ! 4. Subroutines used :
2084  !
2085  ! Name Type Module Description
2086  ! ----------------------------------------------------------------
2087  ! STRACE Subr. W3SERVMD SUBROUTINE tracing.
2088  ! ----------------------------------------------------------------
2089  !
2090  ! 5. Called by :
2091  !
2092  ! Name Type Module Description
2093  ! ----------------------------------------------------------------
2094  ! W3NMLMULTICONF Subr. N/A Namelist configuration routine.
2095  ! ----------------------------------------------------------------
2096  !
2097  ! 6. Error messages :
2098  !
2099  ! None.
2100  !
2101  ! 7. Remarks :
2102  !
2103  ! 8. Structure :
2104  !
2105  ! See source code.
2106  !
2107  ! 9. Switches :
2108  !
2109  ! !/MPI Uses MPI communications
2110  !
2111  ! 10. Source code :
2112  !
2113  !/ ------------------------------------------------------------------- /
2114 
2115 #ifdef W3_S
2116  USE w3servmd, ONLY: strace
2117 #endif
2118 
2119  IMPLICIT NONE
2120 
2121  TYPE(nml_homog_count_t), INTENT(IN) :: NML_HOMOG_COUNT
2122  TYPE(nml_homog_input_t), INTENT(IN) :: NML_HOMOG_INPUT(NML_HOMOG_COUNT%N_TOT)
2123 
2124  ! locals
2125  INTEGER :: I
2126 #ifdef W3_S
2127  INTEGER, SAVE :: IENT = 0
2128 #endif
2129 
2130 #ifdef W3_S
2131  CALL strace (ient, 'REPORT_HOMOGENEOUS_NML')
2132 #endif
2133 
2134  WRITE (msg,'(A)') 'HOMOG_COUNT % '
2135  WRITE (ndsn,'(A)')
2136  WRITE (ndsn,11) trim(msg),'N_MOV = ', nml_homog_count%N_MOV
2137 
2138  IF (nml_homog_count%N_TOT .NE. 0) THEN
2139  DO i=1,nml_homog_count%N_TOT
2140  WRITE (msg,'(A,I5,A)') 'HOMOG_INPUT(',i,') % '
2141  WRITE (ndsn,'(A)')
2142  WRITE (ndsn,10) trim(msg),'NAME = ', trim(nml_homog_input(i)%NAME)
2143  WRITE (ndsn,10) trim(msg),'DATE = ', trim(nml_homog_input(i)%DATE)
2144  WRITE (ndsn,14) trim(msg),'VALUE1 = ', nml_homog_input(i)%VALUE1
2145  WRITE (ndsn,14) trim(msg),'VALUE2 = ', nml_homog_input(i)%VALUE2
2146  WRITE (ndsn,14) trim(msg),'VALUE3 = ', nml_homog_input(i)%VALUE3
2147  WRITE (ndsn,'(A)')
2148  END DO
2149  END IF
2150 
2151 
2152 10 FORMAT (a,2x,a,a)
2153 11 FORMAT (a,2x,a,i8)
2154 14 FORMAT (a,2x,a,f8.2)
2155 
2156 
2157  END SUBROUTINE report_homogeneous_nml
2158 
2159  !/ ------------------------------------------------------------------- /
2160 
2161 
2162 
2163 
2164 
2165 END MODULE w3nmlmultimd
2166 
2167 !/ ------------------------------------------------------------------- /
w3nmlmultimd::nml_output_date_t
Definition: w3nmlmultimd.F90:172
w3nmlmultimd::nml_homog_count_t
Definition: w3nmlmultimd.F90:188
w3nmlmultimd::read_output_date_nml
subroutine read_output_date_nml(NDSI, NRGRD, NML_OUTPUT_DATE)
Definition: w3nmlmultimd.F90:1137
wmmdatmd::mdse
integer mdse
MDSE.
Definition: wmmdatmd.F90:316
w3nmlmultimd::read_input_grid_nml
subroutine read_input_grid_nml(NDSI, NRINP, NML_INPUT_GRID)
Definition: w3nmlmultimd.F90:656
w3nmlmultimd::nml_input_assim_t
Definition: w3nmlmultimd.F90:100
w3nmlmultimd::nml_homog_input_t
Definition: w3nmlmultimd.F90:193
w3nmlmultimd::nml_model_grid_t
Definition: w3nmlmultimd.F90:73
w3nmlmultimd::nml_output_type_t
Definition: w3nmlmultimd.F90:150
w3nmlmultimd::nml_input_grid_t
Definition: w3nmlmultimd.F90:106
w3nmlmultimd::read_output_type_nml
subroutine read_output_type_nml(NDSI, NRGRD, NML_OUTPUT_TYPE)
Definition: w3nmlmultimd.F90:968
w3nmlmultimd::ndsn
integer ndsn
Definition: w3nmlmultimd.F90:204
w3nmlmultimd::nml_partition_t
Definition: w3nmlmultimd.F90:128
wmmdatmd::nmplog
integer nmplog
NMPLOG.
Definition: wmmdatmd.F90:323
wmmdatmd::improc
integer improc
IMPROC.
Definition: wmmdatmd.F90:322
w3nmlmultimd::read_domain_nml
subroutine read_domain_nml(NDSI, NML_DOMAIN)
Definition: w3nmlmultimd.F90:522
w3nmlmultimd::msg
character(256) msg
Definition: w3nmlmultimd.F90:203
w3nmlmultimd::w3nmlmultidef
subroutine w3nmlmultidef(MPI_COMM, NDSI, INFILE, NML_DOMAIN, IERR)
Definition: w3nmlmultimd.F90:211
w3nmlmultimd::w3nmlmulticonf
subroutine w3nmlmulticonf(MPI_COMM, NDSI, INFILE, NML_DOMAIN, NML_INPUT_GRID, NML_MODEL_GRID, NML_OUTPUT_TYPE, NML_OUTPUT_DATE, NML_HOMOG_COUNT, NML_HOMOG_INPUT, IERR)
Definition: w3nmlmultimd.F90:349
w3nmlmultimd::report_homogeneous_nml
subroutine report_homogeneous_nml(NML_HOMOG_COUNT, NML_HOMOG_INPUT)
Definition: w3nmlmultimd.F90:2057
w3nmlmultimd::nml_point_t
Definition: w3nmlmultimd.F90:119
w3nmlmultimd::read_model_grid_nml
subroutine read_model_grid_nml(NDSI, NRGRD, NML_MODEL_GRID)
Definition: w3nmlmultimd.F90:810
w3servmd
Definition: w3servmd.F90:3
w3nmlmultimd::nml_model_forcing_t
Definition: w3nmlmultimd.F90:43
w3nmlmultimd::nml_input_forcing_t
Definition: w3nmlmultimd.F90:83
w3nmlmultimd::nml_domain_t
Definition: w3nmlmultimd.F90:27
file
file(STRINGS ${CMAKE_BINARY_DIR}/switch switch_strings) separate_arguments(switches UNIX_COMMAND $
Definition: CMakeLists.txt:3
w3nmlmultimd
Definition: w3nmlmultimd.F90:3
w3nmlmultimd::nml_model_resource_t
Definition: w3nmlmultimd.F90:66
w3nmlmultimd::nml_track_t
Definition: w3nmlmultimd.F90:124
w3nmlmultimd::nml_field_t
Definition: w3nmlmultimd.F90:115
w3servmd::strace
subroutine strace(IENT, SNAME)
Definition: w3servmd.F90:148
w3nmlmultimd::nml_coupling_t
Definition: w3nmlmultimd.F90:139
w3nmlmultimd::report_output_type_nml
subroutine report_output_type_nml(NRGRD, NML_OUTPUT_TYPE)
Definition: w3nmlmultimd.F90:1817
w3nmlmultimd::nml_model_assim_t
Definition: w3nmlmultimd.F90:60
wmmdatmd
Define data structures to set up wave model dynamic data for several models simultaneously.
Definition: wmmdatmd.F90:16
w3nmlmultimd::read_homogeneous_nml
subroutine read_homogeneous_nml(NDSI, NML_HOMOG_COUNT, NML_HOMOG_INPUT)
Definition: w3nmlmultimd.F90:1327
w3servmd::extcde
subroutine extcde(IEXIT, UNIT, MSG, FILE, LINE, COMM)
Definition: w3servmd.F90:736
w3nmlmultimd::report_output_date_nml
subroutine report_output_date_nml(NRGRD, NML_OUTPUT_DATE)
Definition: w3nmlmultimd.F90:1934
w3nmlmultimd::nml_output_time_t
Definition: w3nmlmultimd.F90:164
w3nmlmultimd::nml_restart_t
Definition: w3nmlmultimd.F90:146
w3nmlmultimd::report_model_grid_nml
subroutine report_model_grid_nml(NRGRD, NML_MODEL_GRID)
Definition: w3nmlmultimd.F90:1693
w3nmlmultimd::report_input_grid_nml
subroutine report_input_grid_nml(NRINP, NML_INPUT_GRID)
Definition: w3nmlmultimd.F90:1576
wmmdatmd::mpi_comm_mwave
integer mpi_comm_mwave
MPI_COMM_MWAVE.
Definition: wmmdatmd.F90:344
w3nmlmultimd::report_domain_nml
subroutine report_domain_nml(NML_DOMAIN)
Definition: w3nmlmultimd.F90:1475