WAVEWATCH III  beta 0.0.1
w3nmlprncmd.F90
Go to the documentation of this file.
1 #include "w3macros.h"
2 !/ ------------------------------------------------------------------- /
3 MODULE w3nmlprncmd
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_prnc.nml for ww3_prnc program
18  !
19  !/ ------------------------------------------------------------------- /
20 
21  ! module defaults
22  IMPLICIT NONE
23 
24  PUBLIC
25 
26  ! field structure
28  LOGICAL :: ice_param1
29  LOGICAL :: ice_param2
30  LOGICAL :: ice_param3
31  LOGICAL :: ice_param4
32  LOGICAL :: ice_param5
33  LOGICAL :: mud_density
34  LOGICAL :: mud_thickness
35  LOGICAL :: mud_viscosity
36  LOGICAL :: water_levels
37  LOGICAL :: currents
38  LOGICAL :: winds
39  LOGICAL :: winds_ast
40  LOGICAL :: atm_momentum
41  LOGICAL :: air_density
42  LOGICAL :: ice_conc
43  LOGICAL :: ice_berg
44  LOGICAL :: data_assim
45  END TYPE nml_field_t
46 
47  ! grid structure
49  LOGICAL :: asis
50  LOGICAL :: latlon
51  END TYPE nml_grid_t
52 
53  ! forcing structure
55  CHARACTER(15) :: timestart
56  CHARACTER(15) :: timestop
57  TYPE(nml_field_t) :: field
58  TYPE(nml_grid_t) :: grid
59  CHARACTER(256) :: tidal
60  END TYPE nml_forcing_t
61 
62  ! file structure
64  CHARACTER(256) :: filename
65  CHARACTER(100) :: longitude
66  CHARACTER(100) :: latitude
67  CHARACTER(100) :: var(3)
68  CHARACTER(15) :: timeshift
69  END TYPE nml_file_t
70 
71 
72  ! miscellaneous
73  CHARACTER(256) :: msg
74  INTEGER :: ndsn
75 
76 
77 
78 
79 CONTAINS
80  !/ ------------------------------------------------------------------- /
81  SUBROUTINE w3nmlprnc (NDSI, INFILE, NML_FORCING, NML_FILE, IERR)
82  !/
83  !/ +-----------------------------------+
84  !/ | WAVEWATCH III NOAA/NCEP |
85  !/ | M. Accensi |
86  !/ | |
87  !/ | FORTRAN 90 |
88  !/ | Last update : 04-Jan-2018 |
89  !/ +-----------------------------------+
90  !/
91  !
92  ! 1. Purpose :
93  !
94  ! Reads all the namelist to define the forcing field
95  !
96  ! 2. Method :
97  !
98  ! See source term routines.
99  !
100  ! 3. Parameters :
101  !
102  ! Parameter list
103  ! ----------------------------------------------------------------
104  ! NDSI Int.
105  ! INFILE Char.
106  ! NML_FORCING type.
107  ! NML_FILE type.
108  ! IERR Int.
109  ! ----------------------------------------------------------------
110  !
111  ! 4. Subroutines used :
112  !
113  ! Name TYPE Module Description
114  ! ----------------------------------------------------------------
115  ! STRACE Subr. W3SERVMD SUBROUTINE tracing.
116  ! READ_FORCING_NML
117  ! ----------------------------------------------------------------
118  !
119  ! 5. Called by :
120  !
121  ! Name TYPE Module Description
122  ! ----------------------------------------------------------------
123  ! WW3_PRNC Prog. N/A Preprocess forcing fields.
124  ! ----------------------------------------------------------------
125  !
126  ! 6. Error messages :
127  !
128  ! None.
129  !
130  ! 7. Remarks :
131  !
132  ! 8. Structure :
133  !
134  ! See source code.
135  !
136  ! 9. Switches :
137  !
138  ! 10. Source code :
139  !
140  !/ ------------------------------------------------------------------- /
141 
142  USE w3odatmd, ONLY: ndse
143 #ifdef W3_S
144  USE w3servmd, ONLY: strace
145 #endif
146 
147  IMPLICIT NONE
148 
149  INTEGER, INTENT(IN) :: NDSI
150  CHARACTER*(*), INTENT(IN) :: INFILE
151  TYPE(nml_forcing_t), INTENT(INOUT) :: NML_FORCING
152  TYPE(nml_file_t), INTENT(INOUT) :: NML_FILE
153  INTEGER, INTENT(OUT) :: IERR
154 #ifdef W3_S
155  INTEGER, SAVE :: IENT = 0
156 #endif
157 
158  ierr = 0
159 #ifdef W3_S
160  CALL strace (ient, 'W3NMLPRNC')
161 #endif
162 
163  ! open namelist log file
164  ndsn = 3
165  OPEN (ndsn, file=trim(infile)//'.log', form='formatted', iostat=ierr)
166  IF (ierr.NE.0) THEN
167  WRITE (ndse,'(A)') 'ERROR: open full nml file '//trim(infile)//'.log failed'
168  RETURN
169  END IF
170 
171  ! open input file
172  OPEN (ndsi, file=trim(infile), form='formatted', status='old', iostat=ierr)
173  IF (ierr.NE.0) THEN
174  WRITE (ndse,'(A)') 'ERROR: open input file '//trim(infile)//' failed'
175  RETURN
176  END IF
177 
178  ! read forcing namelist
179  CALL read_forcing_nml (ndsi, nml_forcing)
180  CALL report_forcing_nml (nml_forcing)
181 
182  ! read file namelist
183  CALL read_file_nml (ndsi, nml_file)
184  CALL report_file_nml (nml_file)
185 
186  ! close namelist files
187  CLOSE (ndsi)
188  CLOSE (ndsn)
189 
190  END SUBROUTINE w3nmlprnc
191 
192 
193  !/ ------------------------------------------------------------------- /
194 
195 
196 
197 
198 
199 
200  !/ ------------------------------------------------------------------- /
201 
202  SUBROUTINE read_forcing_nml (NDSI, NML_FORCING)
203  !/
204  !/ +-----------------------------------+
205  !/ | WAVEWATCH III NOAA/NCEP |
206  !/ | M. Accensi |
207  !/ | |
208  !/ | FORTRAN 90 |
209  !/ | Last update : 22-Mar-2021 |
210  !/ +-----------------------------------+
211  !/
212  ! 1. Purpose :
213  !
214  !
215  ! 2. Method :
216  !
217  ! See source term routines.
218  !
219  ! 3. Parameters :
220  !
221  ! Parameter list
222  ! ----------------------------------------------------------------
223  ! NDSI Int.
224  ! NML_FORCING Type.
225  ! ----------------------------------------------------------------
226  !
227  ! 4. Subroutines used :
228  !
229  ! Name TYPE Module Description
230  ! ----------------------------------------------------------------
231  ! STRACE Subr. W3SERVMD SUBROUTINE tracing.
232  ! ----------------------------------------------------------------
233  !
234  ! 5. Called by :
235  !
236  ! Name TYPE Module Description
237  ! ----------------------------------------------------------------
238  ! W3NMLPRNC Subr. N/A Namelist configuration routine.
239  ! ----------------------------------------------------------------
240  !
241  ! 6. Error messages :
242  !
243  ! None.
244  !
245  ! 7. Remarks :
246  !
247  ! 8. Structure :
248  !
249  ! See source code.
250  !
251  ! 9. Switches :
252  !
253  ! 10. Source code :
254  !
255  !/ ------------------------------------------------------------------- /
256 
257  USE w3odatmd, ONLY: ndse
258  USE w3servmd, ONLY: extcde
259 #ifdef W3_S
260  USE w3servmd, ONLY: strace
261 #endif
262 
263  IMPLICIT NONE
264 
265  INTEGER, INTENT(IN) :: NDSI
266  TYPE(nml_forcing_t), INTENT(INOUT) :: NML_FORCING
267 
268  ! locals
269  INTEGER :: IERR
270  TYPE(nml_forcing_t) :: FORCING
271  namelist /forcing_nml/ forcing
272 #ifdef W3_S
273  INTEGER, SAVE :: IENT = 0
274 #endif
275 
276  ierr = 0
277 #ifdef W3_S
278  CALL strace (ient, 'READ_FORCING_NML')
279 #endif
280 
281  ! set default values for forcing structure
282  forcing%TIMESTART = '19000101 000000'
283  forcing%TIMESTOP = '29001231 000000'
284  !
285  forcing%FIELD%ICE_PARAM1 = .false.
286  forcing%FIELD%ICE_PARAM2 = .false.
287  forcing%FIELD%ICE_PARAM3 = .false.
288  forcing%FIELD%ICE_PARAM4 = .false.
289  forcing%FIELD%ICE_PARAM5 = .false.
290  forcing%FIELD%MUD_DENSITY = .false.
291  forcing%FIELD%MUD_THICKNESS = .false.
292  forcing%FIELD%MUD_VISCOSITY = .false.
293  forcing%FIELD%WATER_LEVELS = .false.
294  forcing%FIELD%CURRENTS = .false.
295  forcing%FIELD%WINDS = .false.
296  forcing%FIELD%WINDS_AST = .false.
297  forcing%FIELD%ATM_MOMENTUM = .false.
298  forcing%FIELD%AIR_DENSITY = .false.
299  forcing%FIELD%ICE_CONC = .false.
300  forcing%FIELD%ICE_BERG = .false.
301  forcing%FIELD%DATA_ASSIM = .false.
302  !
303  forcing%GRID%LATLON = .false.
304  forcing%GRID%ASIS = .false.
305  !
306  forcing%TIDAL = 'unset'
307 
308 
309  ! read forcing namelist
310  rewind(ndsi)
311  READ (ndsi, nml=forcing_nml, iostat=ierr, iomsg=msg)
312  IF (ierr.NE.0) THEN
313  WRITE (ndse,'(A,/A)') &
314  'ERROR: READ_FORCING_NML: namelist read error', &
315  'ERROR: '//trim(msg)
316  CALL extcde (1)
317  END IF
318 
319  ! set/check RETURN values
320  IF (forcing%TIDAL.NE.'unset') THEN
321  IF (.NOT. forcing%FIELD%WATER_LEVELS .AND. .NOT. forcing%FIELD%CURRENTS) THEN
322  WRITE (ndse,'(A,I3)') 'ERROR: TIDAL must only be used on FIELD%WATER_LEVELS or FIELD%CURRENTS'
323  CALL extcde (2)
324  ELSE IF (.NOT. forcing%GRID%ASIS) THEN
325  WRITE (ndse,'(A,I3)') 'ERROR: TIDAL must only be used on GRID%ASIS'
326  CALL extcde (3)
327  END IF
328  END IF
329 
330  ! save namelist
331  nml_forcing = forcing
332 
333  END SUBROUTINE read_forcing_nml
334 
335  !/ ------------------------------------------------------------------- /
336 
337 
338 
339  !/ ------------------------------------------------------------------- /
340 
341  SUBROUTINE read_file_nml (NDSI, NML_FILE)
342  !/
343  !/ +-----------------------------------+
344  !/ | WAVEWATCH III NOAA/NCEP |
345  !/ | M. Accensi |
346  !/ | |
347  !/ | FORTRAN 90 |
348  !/ | Last update : 04-Jan-2018 |
349  !/ +-----------------------------------+
350  !/
351  ! 1. Purpose :
352  !
353  !
354  ! 2. Method :
355  !
356  ! See source term routines.
357  !
358  ! 3. Parameters :
359  !
360  ! Parameter list
361  ! ----------------------------------------------------------------
362  ! NDSI Int.
363  ! NML_FILE Type.
364  ! ----------------------------------------------------------------
365  !
366  ! 4. Subroutines used :
367  !
368  ! Name TYPE Module Description
369  ! ----------------------------------------------------------------
370  ! STRACE Subr. W3SERVMD SUBROUTINE tracing.
371  ! ----------------------------------------------------------------
372  !
373  ! 5. Called by :
374  !
375  ! Name TYPE Module Description
376  ! ----------------------------------------------------------------
377  ! W3NMLPRNC Subr. N/A Namelist configuration routine.
378  ! ----------------------------------------------------------------
379  !
380  ! 6. Error messages :
381  !
382  ! None.
383  !
384  ! 7. Remarks :
385  !
386  ! 8. Structure :
387  !
388  ! See source code.
389  !
390  ! 9. Switches :
391  !
392  ! 10. Source code :
393  !
394  !/ ------------------------------------------------------------------- /
395 
396  USE w3odatmd, ONLY: ndse
397  USE w3servmd, ONLY: extcde
398 #ifdef W3_S
399  USE w3servmd, ONLY: strace
400 #endif
401 
402  IMPLICIT NONE
403 
404  INTEGER, INTENT(IN) :: NDSI
405  TYPE(nml_file_t), INTENT(INOUT) :: NML_FILE
406 
407  ! locals
408  INTEGER :: IERR
409  TYPE(nml_file_t) :: FILE
410  namelist /file_nml/ file
411 #ifdef W3_S
412  INTEGER, SAVE :: IENT = 0
413 #endif
414 
415  ierr = 0
416 #ifdef W3_S
417  CALL strace (ient, 'READ_FILE_NML')
418 #endif
419 
420  ! set default values for file structure
421  file%FILENAME = 'unset'
422  file%LONGITUDE = 'unset'
423  file%LATITUDE = 'unset'
424  file%VAR(1) = 'unset'
425  file%VAR(2) = 'unset'
426  file%VAR(3) = 'unset'
427  file%TIMESHIFT = '00000000 000000'
428 
429  ! read file namelist
430  rewind(ndsi)
431  READ (ndsi, nml=file_nml, iostat=ierr, iomsg=msg)
432  IF (ierr.NE.0) THEN
433  WRITE (ndse,'(A,/A)') &
434  'ERROR: READ_FILE_NML: namelist read error', &
435  'ERROR: '//trim(msg)
436  CALL extcde (4)
437  END IF
438 
439  ! save namelist
440  nml_file = file
441 
442  END SUBROUTINE read_file_nml
443 
444  !/ ------------------------------------------------------------------- /
445 
446 
447 
448 
449 
450 
451 
452  !/ ------------------------------------------------------------------- /
453 
454  SUBROUTINE report_forcing_nml (NML_FORCING)
455  !/
456  !/ +-----------------------------------+
457  !/ | WAVEWATCH III NOAA/NCEP |
458  !/ | M. Accensi |
459  !/ | FORTRAN 90 |
460  !/ | Last update : 22-Mar-2021 |
461  !/ +-----------------------------------+
462  !/
463  !/
464  ! 1. Purpose :
465  !
466  !
467  ! 2. Method :
468  !
469  ! See source term routines.
470  !
471  ! 3. Parameters :
472  !
473  ! Parameter list
474  ! ----------------------------------------------------------------
475  ! NML_FORCING Type.
476  ! ----------------------------------------------------------------
477  !
478  ! 4. Subroutines used :
479  !
480  ! Name TYPE Module Description
481  ! ----------------------------------------------------------------
482  ! STRACE Subr. W3SERVMD SUBROUTINE tracing.
483  ! ----------------------------------------------------------------
484  !
485  ! 5. Called by :
486  !
487  ! Name TYPE Module Description
488  ! ----------------------------------------------------------------
489  ! W3NMLPRNC Subr. N/A Namelist configuration routine.
490  ! ----------------------------------------------------------------
491  !
492  ! 6. Error messages :
493  !
494  ! None.
495  !
496  ! 7. Remarks :
497  !
498  ! 8. Structure :
499  !
500  ! See source code.
501  !
502  ! 9. Switches :
503  !
504  ! 10. Source code :
505  !
506  !/ ------------------------------------------------------------------- /
507 
508 #ifdef W3_S
509  USE w3servmd, ONLY: strace
510 #endif
511 
512  IMPLICIT NONE
513 
514  TYPE(nml_forcing_t), INTENT(IN) :: NML_FORCING
515 #ifdef W3_S
516  INTEGER, SAVE :: IENT = 0
517 #endif
518 
519 #ifdef W3_S
520  CALL strace (ient, 'REPORT_FORCING_NML')
521 #endif
522 
523  WRITE (msg,'(A)') 'FORCING % '
524  WRITE (ndsn,'(A)')
525  WRITE (ndsn,10) trim(msg),'TIMESTART = ', trim(nml_forcing%TIMESTART)
526  WRITE (ndsn,10) trim(msg),'TIMESTOP = ', trim(nml_forcing%TIMESTOP)
527 
528  WRITE (ndsn,13) trim(msg),'FIELD % ICE_PARAM1 = ', nml_forcing%FIELD%ICE_PARAM1
529  WRITE (ndsn,13) trim(msg),'FIELD % ICE_PARAM2 = ', nml_forcing%FIELD%ICE_PARAM2
530  WRITE (ndsn,13) trim(msg),'FIELD % ICE_PARAM3 = ', nml_forcing%FIELD%ICE_PARAM3
531  WRITE (ndsn,13) trim(msg),'FIELD % ICE_PARAM4 = ', nml_forcing%FIELD%ICE_PARAM4
532  WRITE (ndsn,13) trim(msg),'FIELD % ICE_PARAM5 = ', nml_forcing%FIELD%ICE_PARAM5
533  WRITE (ndsn,13) trim(msg),'FIELD % MUD_DENSITY = ', nml_forcing%FIELD%MUD_DENSITY
534  WRITE (ndsn,13) trim(msg),'FIELD % MUD_THICKNESS = ', nml_forcing%FIELD%MUD_THICKNESS
535  WRITE (ndsn,13) trim(msg),'FIELD % MUD_VISCOSITY = ', nml_forcing%FIELD%MUD_VISCOSITY
536  WRITE (ndsn,13) trim(msg),'FIELD % WATER_LEVELS = ', nml_forcing%FIELD%WATER_LEVELS
537  WRITE (ndsn,13) trim(msg),'FIELD % CURRENTS = ', nml_forcing%FIELD%CURRENTS
538  WRITE (ndsn,13) trim(msg),'FIELD % WINDS = ', nml_forcing%FIELD%WINDS
539  WRITE (ndsn,13) trim(msg),'FIELD % WINDS_AST = ', nml_forcing%FIELD%WINDS_AST
540  WRITE (ndsn,13) trim(msg),'FIELD % ATM_MOMENTUM = ', nml_forcing%FIELD%ATM_MOMENTUM
541  WRITE (ndsn,13) trim(msg),'FIELD % AIR_DENSITY = ', nml_forcing%FIELD%AIR_DENSITY
542  WRITE (ndsn,13) trim(msg),'FIELD % ICE_CONC = ', nml_forcing%FIELD%ICE_CONC
543  WRITE (ndsn,13) trim(msg),'FIELD % ICE_BERG = ', nml_forcing%FIELD%ICE_BERG
544  WRITE (ndsn,13) trim(msg),'FIELD % DATA_ASSIM = ', nml_forcing%FIELD%DATA_ASSIM
545 
546  WRITE (ndsn,13) trim(msg),'GRID % ASIS = ', nml_forcing%GRID%ASIS
547  WRITE (ndsn,13) trim(msg),'GRID % LATLON = ', nml_forcing%GRID%LATLON
548 
549  WRITE (ndsn,10) trim(msg),'TIDAL = ', trim(nml_forcing%TIDAL)
550 
551 
552 10 FORMAT (a,2x,a,a)
553 13 FORMAT (a,2x,a,l1)
554 
555  END SUBROUTINE report_forcing_nml
556 
557  !/ ------------------------------------------------------------------- /
558 
559 
560 
561 
562 
563 
564  !/ ------------------------------------------------------------------- /
565 
566  SUBROUTINE report_file_nml (NML_FILE)
567  !/
568  !/ +-----------------------------------+
569  !/ | WAVEWATCH III NOAA/NCEP |
570  !/ | M. Accensi |
571  !/ | FORTRAN 90 |
572  !/ | Last update : 04-Jan-2018 |
573  !/ +-----------------------------------+
574  !/
575  !/
576  ! 1. Purpose :
577  !
578  !
579  ! 2. Method :
580  !
581  ! See source term routines.
582  !
583  ! 3. Parameters :
584  !
585  ! Parameter list
586  ! ----------------------------------------------------------------
587  ! NML_FILE Type.
588  ! ----------------------------------------------------------------
589  !
590  ! 4. Subroutines used :
591  !
592  ! Name TYPE Module Description
593  ! ----------------------------------------------------------------
594  ! STRACE Subr. W3SERVMD SUBROUTINE tracing.
595  ! ----------------------------------------------------------------
596  !
597  ! 5. Called by :
598  !
599  ! Name TYPE Module Description
600  ! ----------------------------------------------------------------
601  ! W3NMLPRNC Subr. N/A Namelist configuration routine.
602  ! ----------------------------------------------------------------
603  !
604  ! 6. Error messages :
605  !
606  ! None.
607  !
608  ! 7. Remarks :
609  !
610  ! 8. Structure :
611  !
612  ! See source code.
613  !
614  ! 9. Switches :
615  !
616  ! 10. Source code :
617  !
618  !/ ------------------------------------------------------------------- /
619 
620 #ifdef W3_S
621  USE w3servmd, ONLY: strace
622 #endif
623 
624  IMPLICIT NONE
625 
626  TYPE(nml_file_t), INTENT(IN) :: NML_FILE
627 #ifdef W3_S
628  INTEGER, SAVE :: IENT = 0
629 #endif
630 
631 #ifdef W3_S
632  CALL strace (ient, 'REPORT_FILE_NML')
633 #endif
634 
635  WRITE (msg,'(A)') 'FILE % '
636  WRITE (ndsn,'(A)')
637  WRITE (ndsn,10) trim(msg),'FILENAME = ', trim(nml_file%FILENAME)
638  WRITE (ndsn,10) trim(msg),'LONGITUDE = ', trim(nml_file%LONGITUDE)
639  WRITE (ndsn,10) trim(msg),'LATITUDE = ', trim(nml_file%LATITUDE)
640  WRITE (ndsn,10) trim(msg),'VAR(1) = ', trim(nml_file%VAR(1))
641  WRITE (ndsn,10) trim(msg),'VAR(2) = ', trim(nml_file%VAR(2))
642  WRITE (ndsn,10) trim(msg),'VAR(3) = ', trim(nml_file%VAR(3))
643  WRITE (ndsn,10) trim(msg),'TIMESHIFT = ', trim(nml_file%TIMESHIFT)
644 
645 10 FORMAT (a,2x,a,a)
646 
647 
648  END SUBROUTINE report_file_nml
649 
650  !/ ------------------------------------------------------------------- /
651 
652 
653 
654 
655 
656 END MODULE w3nmlprncmd
657 
658 !/ ------------------------------------------------------------------- /
w3nmlprncmd::read_forcing_nml
subroutine read_forcing_nml(NDSI, NML_FORCING)
Definition: w3nmlprncmd.F90:203
w3nmlprncmd::nml_file_t
Definition: w3nmlprncmd.F90:63
w3nmlprncmd::nml_field_t
Definition: w3nmlprncmd.F90:27
w3nmlprncmd::read_file_nml
subroutine read_file_nml(NDSI, NML_FILE)
Definition: w3nmlprncmd.F90:342
w3nmlprncmd::report_forcing_nml
subroutine report_forcing_nml(NML_FORCING)
Definition: w3nmlprncmd.F90:455
w3nmlprncmd::nml_grid_t
Definition: w3nmlprncmd.F90:48
w3odatmd::ndse
integer, pointer ndse
Definition: w3odatmd.F90:456
w3nmlprncmd::msg
character(256) msg
Definition: w3nmlprncmd.F90:73
w3servmd
Definition: w3servmd.F90:3
w3nmlprncmd::nml_forcing_t
Definition: w3nmlprncmd.F90:54
w3odatmd
Definition: w3odatmd.F90:3
file
file(STRINGS ${CMAKE_BINARY_DIR}/switch switch_strings) separate_arguments(switches UNIX_COMMAND $
Definition: CMakeLists.txt:3
w3nmlprncmd::w3nmlprnc
subroutine w3nmlprnc(NDSI, INFILE, NML_FORCING, NML_FILE, IERR)
Definition: w3nmlprncmd.F90:82
w3servmd::strace
subroutine strace(IENT, SNAME)
Definition: w3servmd.F90:148
w3nmlprncmd::report_file_nml
subroutine report_file_nml(NML_FILE)
Definition: w3nmlprncmd.F90:567
w3servmd::extcde
subroutine extcde(IEXIT, UNIT, MSG, FILE, LINE, COMM)
Definition: w3servmd.F90:736
w3nmlprncmd
Definition: w3nmlprncmd.F90:3
w3nmlprncmd::ndsn
integer ndsn
Definition: w3nmlprncmd.F90:74