WAVEWATCH III  beta 0.0.1
wmmdatmd Module Reference

Define data structures to set up wave model dynamic data for several models simultaneously. More...

Data Types

type  bpst
 
type  eqst
 
type  hgst
 
type  mdata
 

Functions/Subroutines

subroutine wmndat (NDSE, NDST)
 Set up the number of grids to be used. More...
 
subroutine wmdimd (IMOD, NDSE, NDST, J)
 Initialize an individual data grid at the proper dimensions. More...
 
subroutine wmdimm (IMOD, NDSE, NDST)
 Initialize an individual data grid at the proper dimensions. More...
 
subroutine wmsetm (IMOD, NDSE, NDST)
 Select one of the WAVEWATCH III grids / models. More...
 
subroutine init_get_jsea_isproc_glob (ISEA, J, JSEA, ISPROC)
 Introduce mapping for ISPROC and JSEA when using PDLIB in the Multigrid approach. More...
 

Variables

integer nmdata = -1
 NMDATA. More...
 
integer imdata = -1
 IMDATA. More...
 
integer mdsi = 8
 MDSI. More...
 
integer mdso = 9
 MDSO. More...
 
integer mdss = 6
 MDSS. More...
 
integer mdst = 6
 MDST. More...
 
integer mdse = 6
 MDSE. More...
 
integer mdsup
 MDSUP. More...
 
integer mdsupa
 MDSUPA. More...
 
integer nmproc = 1
 NMPROC. More...
 
integer improc = 1
 IMPROC. More...
 
integer nmplog = 1
 NMPLOG. More...
 
integer nmpscr = 1
 NMPSCR. More...
 
integer nmptst = 1
 NMPTST. More...
 
integer nmperr = 1
 NMPERR. More...
 
integer nmpupt = 1
 NMPUPT. More...
 
integer, dimension(2) stime
 STIME. More...
 
integer, dimension(2) etime
 ETIME. More...
 
integer nrgrd
 NRGRD. More...
 
integer nrinp
 NRINP. More...
 
integer nrgrp
 NRGRP. More...
 
integer nmvmax
 NMVMAX. More...
 
integer ngrpsmc
 NGRPSMC. More...
 
integer, dimension(8) clkdt1
 CLKDT1. More...
 
integer, dimension(8) clkdt2
 CLKDT2. More...
 
integer, dimension(8) clkdt3
 CLKDT3. More...
 
integer mdsp
 MDSP. More...
 
integer mpi_comm_mwave
 MPI_COMM_MWAVE. More...
 
integer, parameter mtagb = 0
 MTAGB. More...
 
integer, parameter mtag0 = 1000
 MTAG0. More...
 
integer, parameter mtag1 = 40000
 MTAG1. More...
 
integer, parameter mtag2 = 1000000
 MTAG2. More...
 
integer, parameter mtag_ub = 2**21-1
 MPI_TAG_UB on Cray XC40. More...
 
integer, dimension(:,:), allocatable mdsf
 MDSF. More...
 
integer, dimension(:), allocatable grank
 GRANK. More...
 
integer, dimension(:), allocatable grgrp
 GRGRP. More...
 
integer, dimension(:,:), allocatable ingrp
 INGRP. More...
 
integer, dimension(:,:), allocatable grdhgh
 GRDHGH. More...
 
integer, dimension(:,:), allocatable grdeql
 GRDEQL. More...
 
integer, dimension(:,:), allocatable grdlow
 GRDLOW. More...
 
integer, dimension(:,:), allocatable allprc
 ALLPRC. More...
 
integer, dimension(:,:), allocatable modmap
 MODMAP. More...
 
integer, dimension(:,:), allocatable tsync
 TSYNC. More...
 
integer, dimension(:,:), allocatable tmax
 TMAX. More...
 
integer, dimension(:,:), allocatable toutp
 TOUTP. More...
 
integer, dimension(:,:), allocatable tdata
 TDATA. More...
 
integer, dimension(:), allocatable grstat
 GRSTAT. More...
 
integer, dimension(:,:), allocatable nbi2g
 NBI2G. More...
 
integer, dimension(:,:), allocatable inpmap
 INPMAP. More...
 
integer, dimension(:), allocatable nbista
 NBISTA. More...
 
integer, dimension(:), allocatable hghsta
 HGHSTA. More...
 
integer, dimension(:), allocatable eqlsta
 EQLSTA. More...
 
real clkfin
 CLKFIN. More...
 
real, dimension(:), allocatable dtres
 DTRES. More...
 
logical flgbdi =.FALSE.
 FLGBDI. More...
 
logical flghg1
 FLGHG1. More...
 
logical flghg2
 FLGHG2. More...
 
logical, dimension(:,:), allocatable respec
 RESPEC. More...
 
logical, dimension(:), allocatable bcdump
 BCDUMP. More...
 
logical, dimension(:), allocatable iflsti
 IFLSTI. More...
 
logical, dimension(:), allocatable iflstl
 IFLSTL. More...
 
logical, dimension(:), allocatable iflstr
 IFLSTR. More...
 
character(len=3), dimension(:,:), allocatable idinp
 IDINP. More...
 
type(mdata), dimension(:), allocatable, target mdatas
 MDATAS. More...
 
type(bpst), dimension(:,:), allocatable, target bpstge
 BPSTGE. More...
 
type(hgst), dimension(:,:), allocatable, target hgstge
 HGSTGE. More...
 
type(eqst), dimension(:,:), allocatable, target eqstge
 EQSTGE. More...
 
integer, dimension(:), pointer rcld
 RCLD. More...
 
integer, dimension(:), pointer ndt
 NDT. More...
 
integer, pointer nmv
 NMV. More...
 
integer, dimension(:,:,:), pointer tmv
 TMV. More...
 
integer, dimension(:,:), pointer nbi2s
 NBI2S. More...
 
integer, dimension(:,:), pointer mapmsk
 MAPMSK. More...
 
integer, dimension(:), pointer uptmap
 UPTMAP. More...
 
integer, pointer mpi_comm_grd
 MPI_COMM_GRD. More...
 
integer, pointer mpi_comm_bct
 MPI_COMM_BCT. More...
 
integer, pointer croot
 CROOT. More...
 
real, dimension(:,:), pointer data0
 DATA0. More...
 
real, dimension(:,:), pointer data1
 DATA1. More...
 
real, dimension(:,:), pointer data2
 DATA2. More...
 
real, dimension(:,:), pointer amv
 AMV. More...
 
real, dimension(:,:), pointer dmv
 DMV. More...
 
real, dimension(:,:), pointer mapbdi
 MAPBDI. More...
 
real, dimension(:,:), pointer mapodi
 MAPODI. More...
 
integer, dimension(:), pointer sea_ipgl
 SEA_IPGL. More...
 
integer, dimension(:), pointer sea_ipgl_to_proc
 SEA_IPGL_TO_PROC. More...
 
logical, pointer minit
 MINIT. More...
 
logical, pointer fllstl
 FLLSTL. More...
 
logical, pointer fllstr
 FLLSTR. More...
 
logical, pointer fllsti
 FLLSTI. More...
 
logical, pointer fldat0
 FLDAT0. More...
 
logical, pointer fldat1
 FLDAT1. More...
 
logical, pointer fldat2
 FLDAT2. More...
 
logical, pointer fbcast
 FBCAST. More...
 

Detailed Description

Define data structures to set up wave model dynamic data for several models simultaneously.

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

Function/Subroutine Documentation

◆ init_get_jsea_isproc_glob()

subroutine wmmdatmd::init_get_jsea_isproc_glob ( integer, intent(in)  ISEA,
integer, intent(in)  J,
integer, intent(out)  JSEA,
integer, intent(out)  ISPROC 
)

Introduce mapping for ISPROC and JSEA when using PDLIB in the Multigrid approach.

Parameters
[in]ISEA
[in]J
[out]JSEA
[out]ISPROC
Author
Aron Roland
Date
14-Jun-2018

Definition at line 1333 of file wmmdatmd.F90.

1333  !/
1334  !/ +-----------------------------------+
1335  !/ | WAVEWATCH III NOAA/NCEP |
1336  !/ | Aron Roland |
1337  !/ | FORTRAN 90 |
1338  !/ | Last update : 14-Jun-2018 |
1339  !/ +-----------------------------------+
1340  !/
1341  !/ 06-Jun-2018 : Origination. ( version 6.04 )
1342  !/
1343  ! 1. Purpose : Introduce mapping for ISPROC and JSEA when using PDLIB
1344  ! in the Multigrid approach
1345  !
1346  ! 2. Method :
1347  ! 3. Parameters :
1348  !
1349  ! Parameter list
1350  ! ----------------------------------------------------------------
1351  ! ----------------------------------------------------------------
1352  !
1353  ! 4. Subroutines used :
1354  !
1355  ! Name Type Module Description
1356  ! ----------------------------------------------------------------
1357  ! STRACE Subr. W3SERVMD Subroutine tracing.
1358  ! ----------------------------------------------------------------
1359  !
1360  ! 5. Called by :
1361  !
1362  ! Name Type Module Description
1363  ! ----------------------------------------------------------------
1364  ! ----------------------------------------------------------------
1365  !
1366  ! 6. Error messages :
1367  ! 7. Remarks
1368  ! 8. Structure :
1369  ! 9. Switches :
1370  !
1371  ! !/S Enable subroutine tracing.
1372  !
1373  ! 10. Source code :
1374  !
1375  USE constants, ONLY: lpdlib
1376  USE w3odatmd, ONLY: outpts
1377  USE w3gdatmd, ONLY: gtype, grids, ungtype
1378 #ifdef W3_S
1379  USE w3servmd, ONLY: strace
1380 #endif
1381  !/
1382  IMPLICIT NONE
1383  !/ ------------------------------------------------------------------- /
1384  !/ Parameter list
1385  !/
1386  integer, intent(in) :: ISEA, J
1387  integer, intent(out) :: JSEA, ISPROC
1388  integer nb
1389  !/
1390  !/ ------------------------------------------------------------------- /
1391  !/ Local parameters
1392  !/
1393 #ifdef W3_S
1394  INTEGER, SAVE :: IENT = 0
1395 #endif
1396  !/
1397  !/ ------------------------------------------------------------------- /
1398  !/
1399 #ifdef W3_S
1400  CALL strace (ient, 'INIT_GET_JSEA_ISPROC_GLOB')
1401 #endif
1402  IF (.NOT. lpdlib) THEN
1403  nb=outpts(j)%NAPROC
1404  jsea = 1 + (isea-1)/nb
1405  isproc=1
1406 #ifdef W3_DIST
1407  isproc = mdatas(j)%CROOT - 1 + isea - (jsea-1)*nb
1408 #endif
1409  ELSE
1410 #ifdef W3_PDLIB
1411  IF (grids(j)%GTYPE .ne. ungtype) THEN
1412  nb=outpts(j)%NAPROC
1413  jsea = 1 + (isea-1)/nb
1414  isproc = mdatas(j)%CROOT - 1 + isea - (jsea-1)*nb
1415  ELSE
1416  jsea = mdatas(j)%SEA_IPGL(isea)
1417  isproc = mdatas(j)%SEA_IPGL_TO_PROC(isea)
1418  ENDIF
1419 #endif
1420  ENDIF
1421  !/
1422  !/ End of INIT_GET_JSEA_ISPROC_GLOB ---------------------------------- /
1423  !/

References w3gdatmd::grids, w3gdatmd::gtype, constants::lpdlib, mdatas, w3odatmd::outpts, w3servmd::strace(), and w3gdatmd::ungtype.

Referenced by wmgridmd::wmgeql(), wmgridmd::wmghgh(), and wminiomd::wmiobg().

◆ wmdimd()

subroutine wmmdatmd::wmdimd ( integer, intent(in)  IMOD,
integer, intent(in)  NDSE,
integer, intent(in)  NDST,
integer, intent(in)  J 
)

Initialize an individual data grid at the proper dimensions.

Allocate directly into the structure array. Note that this cannot be done through the pointer alias!

Parameters
[in]IMODModel number to point to.
[in]NDSEError output unit number.
[in]NDSTTest output unit number.
[in]JData set [1,2,3].
Author
H. L. Tolman
Date
10-Dec-2014

Definition at line 787 of file wmmdatmd.F90.

787  !/
788  !/ +-----------------------------------+
789  !/ | WAVEWATCH III NOAA/NCEP |
790  !/ | H. L. Tolman |
791  !/ | FORTRAN 90 |
792  !/ | Last update : 10-Dec-2014 !
793  !/ +-----------------------------------+
794  !/
795  !/ 22-Feb-2005 : Origination. ( version 3.07 )
796  !/ 10-Dec-2014 : Add checks for allocate status ( version 5.04 )
797  !/
798  ! 1. Purpose :
799  !
800  ! Initialize an individual data grid at the proper dimensions.
801  !
802  ! 2. Method :
803  !
804  ! Allocate directly into the structure array. Note that
805  ! this cannot be done through the pointer alias!
806  !
807  ! 3. Parameters :
808  !
809  ! Parameter list
810  ! ----------------------------------------------------------------
811  ! IMOD Int. I Model number to point to.
812  ! NDSE Int. I Error output unit number.
813  ! NDST Int. I Test output unit number.
814  ! J Int. I Data set [1,2,3].
815  ! ----------------------------------------------------------------
816  !
817  ! 4. Subroutines used :
818  !
819  ! See module documentation.
820  !
821  ! 5. Called by :
822  !
823  ! Name Type Module Description
824  ! ----------------------------------------------------------------
825  ! ----------------------------------------------------------------
826  !
827  ! 6. Error messages :
828  !
829  ! - Check on input parameters.
830  ! - Check on previous allocation.
831  !
832  ! 7. Remarks :
833  !
834  ! - WMSETM needs to be called after allocation to point to
835  ! proper allocated arrays.
836  !
837  ! 8. Structure :
838  !
839  ! See source code.
840  !
841  ! 9. Switches :
842  !
843  ! !/S Enable subroutine tracing.
844  ! !/T Enable test output
845  !
846  ! 10. Source code :
847  !
848  !/ ------------------------------------------------------------------- /
849  USE w3gdatmd, ONLY: ngrids, igrid, w3setg
850  USE w3odatmd, ONLY: naproc
851  USE w3servmd, ONLY: extcde
852 #ifdef W3_S
853  USE w3servmd, ONLY: strace
854 #endif
855  !
856  IMPLICIT NONE
857  !
858  !/
859  !/ ------------------------------------------------------------------- /
860  !/ Parameter list
861  !/
862  INTEGER, INTENT(IN) :: IMOD, NDSE, NDST, J
863  !/
864  !/ ------------------------------------------------------------------- /
865  !/ Local parameters
866  !/
867  INTEGER :: JGRID
868 #ifdef W3_S
869  INTEGER, SAVE :: IENT = 0
870 #endif
871  !/
872 #ifdef W3_S
873  CALL strace (ient, 'WMDIMD')
874 #endif
875  !
876  ! -------------------------------------------------------------------- /
877  ! 1. Test input and module status
878  !
879  IF ( ngrids .EQ. -1 ) THEN
880  WRITE (ndse,1001)
881  CALL extcde (1)
882  END IF
883  !
884  IF ( imod.LT.1 .OR. imod.GT.nmdata ) THEN
885  WRITE (ndse,1002) imod, nmdata
886  CALL extcde (2)
887  END IF
888  !
889  IF ( mdatas(imod)%MINIT ) THEN
890  WRITE (ndse,1003)
891  CALL extcde (3)
892  END IF
893  !
894 #ifdef W3_T
895  WRITE (ndst,9000) imod
896 #endif
897  !
898  jgrid = igrid
899  IF ( jgrid .NE. imod ) CALL w3setg ( imod, ndse, ndst )
900  !
901  ! -------------------------------------------------------------------- /
902  ! 2. Allocate arrays
903  !
904  IF ( j .EQ. 0 ) THEN
905  ALLOCATE ( mdatas(imod)%TMV(2,-7:4,nmv) , &
906  mdatas(imod)%AMV(nmv,-7:4) , &
907  mdatas(imod)%DMV(nmv,-7:4) , stat=istat )
908  check_alloc_status( istat )
909  END IF
910  !
911  IF ( j .EQ. 1 ) THEN
912  IF ( fldat0 ) DEALLOCATE ( mdatas(imod)%DATA0 )
913  ALLOCATE ( mdatas(imod)%DATA0(rcld(j),ndt(j)), stat=istat )
914  check_alloc_status( istat )
915  fldat0 = .true.
916  END IF
917  !
918  IF ( j .EQ. 2 ) THEN
919  IF ( fldat1 ) DEALLOCATE ( mdatas(imod)%DATA1 )
920  ALLOCATE ( mdatas(imod)%DATA1(rcld(j),ndt(j)), stat=istat )
921  check_alloc_status( istat )
922  fldat1 = .true.
923  END IF
924  !
925  IF ( j .EQ. 3 ) THEN
926  IF ( fldat2 ) DEALLOCATE ( mdatas(imod)%DATA2 )
927  ALLOCATE ( mdatas(imod)%DATA2(rcld(j),ndt(j)), stat=istat )
928  check_alloc_status( istat )
929  fldat2 = .true.
930  END IF
931  !
932 #ifdef W3_T
933  WRITE (ndst,9001)
934 #endif
935  !
936  ! -------------------------------------------------------------------- /
937  ! 3. Point to allocated arrays
938  !
939  CALL wmsetm ( imod, ndse, ndst )
940  !
941  IF ( j .EQ. 0 ) THEN
942  tmv = 0
943  amv = 0.
944  dmv = 0.
945  END IF
946  !
947 #ifdef W3_T
948  WRITE (ndst,9002)
949 #endif
950  !
951  ! -------------------------------------------------------------------- /
952  ! 5. Restore previous grid setting if necessary
953  !
954  IF ( jgrid .NE. imod ) CALL w3setg ( jgrid, ndse, ndst )
955  !
956  RETURN
957  !
958  ! Formats
959  !
960 1001 FORMAT (/' *** ERROR WMDIMD : GRIDS NOT INITIALIZED *** '/ &
961  ' RUN W3NMOD FIRST '/)
962 1002 FORMAT (/' *** ERROR WMDIMD : ILLEGAL MODEL NUMBER *** '/ &
963  ' IMOD = ',i10/ &
964  ' NMDATA = ',i10/)
965 1003 FORMAT (/' *** ERROR WMDIMD : ARRAY(S) ALREADY ALLOCATED *** ')
966  !
967 #ifdef W3_T
968 9000 FORMAT (' TEST WMDIMD : MODEL ',i4,' DIM. AT ',2i5,i7)
969 9001 FORMAT (' TEST WMDIMD : ARRAYS ALLOCATED')
970 9002 FORMAT (' TEST WMDIMD : POINTERS RESET')
971 #endif
972  !/
973  !/ End of WMDIMD ----------------------------------------------------- /
974  !/

References amv, dmv, w3servmd::extcde(), fldat0, fldat1, fldat2, w3gdatmd::igrid, mdatas, w3odatmd::naproc, ndt, w3gdatmd::ngrids, nmdata, nmv, rcld, w3servmd::strace(), tmv, w3gdatmd::w3setg(), and wmsetm().

Referenced by wminitmd::wminit(), wminitmd::wminitnml(), and wmupdtmd::wmupd1().

◆ wmdimm()

subroutine wmmdatmd::wmdimm ( integer, intent(in)  IMOD,
integer, intent(in)  NDSE,
integer, intent(in)  NDST 
)

Initialize an individual data grid at the proper dimensions.

Allocate directly into the structure array. Note that this cannot be done through the pointer alias!

Parameters
[in]IMODModel number to point to.
[in]NDSEError output unit number.
[in]NDSTTest output unit number.
Author
H. L. Tolman
Date
22-Feb-2005

Definition at line 990 of file wmmdatmd.F90.

990  !/
991  !/ +-----------------------------------+
992  !/ | WAVEWATCH III NOAA/NCEP |
993  !/ | H. L. Tolman |
994  !/ | FORTRAN 90 |
995  !/ | Last update : 22-Feb-2005 !
996  !/ +-----------------------------------+
997  !/
998  !/ 22-Feb-2005 : Origination. ( version 3.07 )
999  !/
1000  ! 1. Purpose :
1001  !
1002  ! Initialize an individual data grid at the proper dimensions.
1003  !
1004  ! 2. Method :
1005  !
1006  ! Allocate directly into the structure array. Note that
1007  ! this cannot be done through the pointer alias!
1008  !
1009  ! 3. Parameters :
1010  !
1011  ! Parameter list
1012  ! ----------------------------------------------------------------
1013  ! IMOD Int. I Model number to point to.
1014  ! NDSE Int. I Error output unit number.
1015  ! NDST Int. I Test output unit number.
1016  ! ----------------------------------------------------------------
1017  !
1018  ! 4. Subroutines used :
1019  !
1020  ! See module documentation.
1021  !
1022  ! 5. Called by :
1023  !
1024  ! Name Type Module Description
1025  ! ----------------------------------------------------------------
1026  ! ----------------------------------------------------------------
1027  !
1028  ! 6. Error messages :
1029  !
1030  ! - Check on input parameters.
1031  ! - Check on previous allocation.
1032  !
1033  ! 7. Remarks :
1034  !
1035  ! - WMSETM needs to be called after allocation to point to
1036  ! proper allocated arrays.
1037  !
1038  ! 8. Structure :
1039  !
1040  ! See source code.
1041  !
1042  ! 9. Switches :
1043  !
1044  ! !/S Enable subroutine tracing.
1045  ! !/T Enable test output
1046  !
1047  ! 10. Source code :
1048  !
1049  !/ ------------------------------------------------------------------- /
1050  USE w3gdatmd, ONLY: ngrids, igrid, w3setg
1051  USE w3odatmd, ONLY: naproc
1052  USE w3servmd, ONLY: extcde
1053 #ifdef W3_S
1054  USE w3servmd, ONLY: strace
1055 #endif
1056  !
1057  IMPLICIT NONE
1058  !
1059  !/
1060  !/ ------------------------------------------------------------------- /
1061  !/ Parameter list
1062  !/
1063  INTEGER, INTENT(IN) :: IMOD, NDSE, NDST
1064  !/
1065  !/ ------------------------------------------------------------------- /
1066  !/ Local parameters
1067  !/
1068  INTEGER :: JGRID
1069 #ifdef W3_S
1070  INTEGER, SAVE :: IENT = 0
1071 #endif
1072  !/
1073 #ifdef W3_S
1074  CALL strace (ient, 'WMDIMM')
1075 #endif
1076  !
1077  ! -------------------------------------------------------------------- /
1078  ! 1. Test input and module status
1079  !
1080  IF ( ngrids .EQ. -1 ) THEN
1081  WRITE (ndse,1001)
1082  CALL extcde (1)
1083  END IF
1084  !
1085  IF ( imod.LT.1 .OR. imod.GT.nmdata ) THEN
1086  WRITE (ndse,1002) imod, nmdata
1087  CALL extcde (2)
1088  END IF
1089  !
1090  IF ( mdatas(imod)%MINIT ) THEN
1091  WRITE (ndse,1003)
1092  CALL extcde (3)
1093  END IF
1094  !
1095 #ifdef W3_T
1096  WRITE (ndst,9000) imod
1097 #endif
1098  !
1099  jgrid = igrid
1100  IF ( jgrid .NE. imod ) CALL w3setg ( imod, ndse, ndst )
1101  !
1102  ! -------------------------------------------------------------------- /
1103  ! 2. Allocate arrays
1104  !
1105  ! ALLOCATE ( MDATAS(IMOD)%...
1106  !
1107 #ifdef W3_T
1108  WRITE (ndst,9001)
1109 #endif
1110  !
1111  ! -------------------------------------------------------------------- /
1112  ! 3. Point to allocated arrays
1113  !
1114  CALL wmsetm ( imod, ndse, ndst )
1115  !
1116 #ifdef W3_T
1117  WRITE (ndst,9002)
1118 #endif
1119  !
1120  ! -------------------------------------------------------------------- /
1121  ! 4. Update flag
1122  !
1123  minit = .true.
1124  !
1125 #ifdef W3_T
1126  WRITE (ndst,9003)
1127 #endif
1128  !
1129  ! -------------------------------------------------------------------- /
1130  ! 5. Restore previous grid setting if necessary
1131  !
1132  IF ( jgrid .NE. imod ) CALL w3setg ( jgrid, ndse, ndst )
1133  !
1134  RETURN
1135  !
1136  ! Formats
1137  !
1138 1001 FORMAT (/' *** ERROR WMDIMM : GRIDS NOT INITIALIZED *** '/ &
1139  ' RUN W3NMOD FIRST '/)
1140 1002 FORMAT (/' *** ERROR WMDIMM : ILLEGAL MODEL NUMBER *** '/ &
1141  ' IMOD = ',i10/ &
1142  ' NMDATA = ',i10/)
1143 1003 FORMAT (/' *** ERROR WMDIMM : ARRAY(S) ALREADY ALLOCATED *** ')
1144  !
1145 #ifdef W3_T
1146 9000 FORMAT (' TEST WMDIMM : MODEL ',i4,' DIM. AT ',2i5,i7)
1147 9001 FORMAT (' TEST WMDIMM : ARRAYS ALLOCATED')
1148 9002 FORMAT (' TEST WMDIMM : POINTERS RESET')
1149 9003 FORMAT (' TEST WMDIMM : FLAGS SET')
1150 #endif
1151  !/
1152  !/ End of WMDIMM ----------------------------------------------------- /
1153  !/

References w3servmd::extcde(), w3gdatmd::igrid, mdatas, minit, w3odatmd::naproc, w3gdatmd::ngrids, nmdata, w3servmd::strace(), w3gdatmd::w3setg(), and wmsetm().

◆ wmndat()

subroutine wmmdatmd::wmndat ( integer, intent(in)  NDSE,
integer, intent(in)  NDST 
)

Set up the number of grids to be used.

Use data stored in NGRIDS in W3GDATMD.

Parameters
[in]NDSEError output unit number.
[in]NDSTTest output unit number.
Author
H. L. Tolman
Date
22-Mar-2021

Definition at line 584 of file wmmdatmd.F90.

584  !/
585  !/ +-----------------------------------+
586  !/ | WAVEWATCH III NOAA/NCEP |
587  !/ | H. L. Tolman |
588  !/ | FORTRAN 90 |
589  !/ | Last update : 22-Mar-2021 !
590  !/ +-----------------------------------+
591  !/
592  !/ 22-Feb-2005 : Origination. ( version 3.07 )
593  !/ 16-Dec-2005 : Add staging of boundary data. ( version 3.08 )
594  !/ Add HGSTGE data. ( version 3.08 )
595  !/ 24-Mar-2006 : Add EQSTGE data. ( version 3.09 )
596  !/ 25-May-2006 : Add STIME in BPSTGE. ( version 3.09 )
597  !/ 12-Jan-2007 : Add FLSTI and FLLSTL. ( version 3.10 )
598  !/ 22-Jan-2007 : Add NAVMAX. ( version 3.10 )
599  !/ 10-Dec-2014 : Add checks for allocate status ( version 5.04 )
600  !/ 22-Mar-2021 : Support for air density input ( version 7.13 )
601  !/
602  ! 1. Purpose :
603  !
604  ! Set up the number of grids to be used.
605  !
606  ! 2. Method :
607  !
608  ! Use data stored in NGRIDS in W3GDATMD.
609  !
610  ! 3. Parameters :
611  !
612  ! Parameter list
613  ! ----------------------------------------------------------------
614  ! NDSE Int. I Error output unit number.
615  ! NDST Int. I Test output unit number.
616  ! ----------------------------------------------------------------
617  !
618  ! 4. Subroutines used :
619  !
620  ! See module documentation.
621  !
622  ! 5. Called by :
623  !
624  ! Any program that uses this grid structure.
625  !
626  ! 6. Error messages :
627  !
628  ! - Error checks on previous setting of variable NGRIDS.
629  !
630  ! 7. Remarks :
631  !
632  ! 8. Structure :
633  !
634  ! 9. Switches :
635  !
636  ! !/S Enable subroutine tracing.
637  ! !/T Enable test output
638  !
639  ! 10. Source code :
640  !
641  !/ ------------------------------------------------------------------- /
642  USE w3gdatmd, ONLY: ngrids
643  USE w3servmd, ONLY: extcde
644 #ifdef W3_S
645  USE w3servmd, ONLY: strace
646 #endif
647  !
648  IMPLICIT NONE
649  !/
650  !/ ------------------------------------------------------------------- /
651  !/ Parameter list
652  !/
653  INTEGER, INTENT(IN) :: NDSE, NDST
654  !/
655  !/ ------------------------------------------------------------------- /
656  !/ Local parameters
657  !/
658  INTEGER :: I, J
659 #ifdef W3_S
660  INTEGER, SAVE :: IENT = 0
661 #endif
662  !/
663 #ifdef W3_S
664  CALL strace (ient, 'WMNDAT')
665 #endif
666  !
667  ! -------------------------------------------------------------------- /
668  ! 1. Test input and module status
669  !
670  IF ( ngrids .EQ. -1 ) THEN
671  WRITE (ndse,1001) ngrids
672  CALL extcde (1)
673  END IF
674  !
675  ! -------------------------------------------------------------------- /
676  ! 2. Set variable and allocate arrays
677  !
678  ALLOCATE ( mdatas(ngrids), bpstge(ngrids,ngrids), &
679  hgstge(ngrids,ngrids), eqstge(ngrids,ngrids), &
680  bcdump(nrgrd), iflsti(nrinp), iflstl(nrinp), &
681  iflstr(nrinp), stat=istat )
682  check_alloc_status( istat )
683 #ifdef W3_MPI
684  ALLOCATE ( nbista(ngrids), hghsta(ngrids), eqlsta(ngrids), &
685  stat=istat )
686  check_alloc_status( istat )
687 #endif
688  nmdata = ngrids
689  !
690  ! -------------------------------------------------------------------- /
691  ! 3. Initialize parameters
692  !
693 #ifdef W3_MPI
694  nbista = 0
695  hghsta = 0
696  eqlsta = 0
697 #endif
698  !
699  iflsti = .false.
700  iflstl = .false.
701  iflstr = .false.
702  !
703  DO i=1, ngrids
704  mdatas(i)%MINIT = .false.
705  mdatas(i)%MSKINI = .false.
706  mdatas(i)%FLDAT0 = .false.
707  mdatas(i)%FLDAT1 = .false.
708  mdatas(i)%FLDAT2 = .false.
709 #ifdef W3_MPI
710  mdatas(i)%MPI_COMM_GRD = -99
711  mdatas(i)%MPI_COMM_BCT = -99
712 #endif
713  DO j=1, ngrids
714  bpstge(i,j)%VTIME(1) = -1
715  bpstge(i,j)%VTIME(2) = 0
716 #ifdef W3_MPI
717  bpstge(i,j)%STIME(1) = -1
718  bpstge(i,j)%STIME(2) = 0
719 #endif
720  bpstge(i,j)%INIT = .false.
721 #ifdef W3_MPI
722  bpstge(i,j)%NRQBPS = 0
723 #endif
724  hgstge(i,j)%VTIME(1) = -1
725  hgstge(i,j)%VTIME(2) = 0
726  hgstge(i,j)%XTIME(1) = -1
727  hgstge(i,j)%XTIME(2) = 0
728  hgstge(i,j)%NTOT = 0
729  hgstge(i,j)%NREC = 0
730  hgstge(i,j)%NRC1 = 0
731  hgstge(i,j)%NSND = 0
732  hgstge(i,j)%NSN1 = 0
733  hgstge(i,j)%NSMX = 0
734 #ifdef W3_MPI
735  hgstge(i,j)%NRQHGS = 0
736  hgstge(i,j)%NRQOUT = 0
737 #endif
738  hgstge(i,j)%INIT = .false.
739  eqstge(i,j)%VTIME(1) = -1
740  eqstge(i,j)%VTIME(2) = 0
741  eqstge(i,j)%NTOT = 0
742  eqstge(i,j)%NREC = 0
743  eqstge(i,j)%NSND = 0
744  eqstge(i,j)%NAVMAX = 1
745 #ifdef W3_MPI
746  eqstge(i,j)%NRQEQS = 0
747  eqstge(i,j)%NRQOUT = 0
748 #endif
749  eqstge(i,j)%INIT = .false.
750  END DO
751  END DO
752  !
753 #ifdef W3_T
754  WRITE (ndst,9000) ngrids
755 #endif
756  !
757  RETURN
758  !
759  ! Formats
760  !
761 1001 FORMAT (/' *** ERROR WMNDAT : NGRIDS NOT YET SET *** '/ &
762  ' NGRIDS = ',i10/ &
763  ' RUN W3NMOD FIRST'/)
764  !
765 #ifdef W3_T
766 9000 FORMAT (' TEST WMNDAT : SETTING UP FOR ',i4,' GRIDS')
767 #endif
768  !/
769  !/ End of WMNDAT ----------------------------------------------------- /
770  !/

References bcdump, bpstge, eqlsta, eqstge, w3servmd::extcde(), hghsta, hgstge, iflsti, iflstl, iflstr, mdatas, nbista, w3gdatmd::ngrids, nmdata, nrgrd, nrinp, and w3servmd::strace().

Referenced by wminitmd::wminit(), and wminitmd::wminitnml().

◆ wmsetm()

subroutine wmmdatmd::wmsetm ( integer, intent(in)  IMOD,
integer, intent(in)  NDSE,
integer, intent(in)  NDST 
)

Select one of the WAVEWATCH III grids / models.

Point pointers to the proper variables in the proper element of the GRIDS array.

Parameters
[in]IMODModel number to point to.
[in]NDSEError output unit number.
[in]NDSTTest output unit number.
Author
H. L. Tolman
Date
22-Mar-2021

Definition at line 1169 of file wmmdatmd.F90.

1169  !/
1170  !/ +-----------------------------------+
1171  !/ | WAVEWATCH III NOAA/NCEP |
1172  !/ | H. L. Tolman |
1173  !/ | FORTRAN 90 |
1174  !/ | Last update : 22-Mar-2021 !
1175  !/ +-----------------------------------+
1176  !/
1177  !/ 13-Jun-2005 : Origination. ( version 3.07 )
1178  !/ 22-Mar-2021 : Support for air density input ( version 7.13 )
1179  !/
1180  ! 1. Purpose :
1181  !
1182  ! Select one of the WAVEWATCH III grids / models.
1183  !
1184  ! 2. Method :
1185  !
1186  ! Point pointers to the proper variables in the proper element of
1187  ! the GRIDS array.
1188  !
1189  ! 3. Parameters :
1190  !
1191  ! Parameter list
1192  ! ----------------------------------------------------------------
1193  ! IMOD Int. I Model number to point to.
1194  ! NDSE Int. I Error output unit number.
1195  ! NDST Int. I Test output unit number.
1196  ! ----------------------------------------------------------------
1197  !
1198  ! 4. Subroutines used :
1199  !
1200  ! See module documentation.
1201  !
1202  ! 5. Called by :
1203  !
1204  ! Many subroutines in the WAVEWATCH system.
1205  !
1206  ! 6. Error messages :
1207  !
1208  ! Checks on parameter list IMOD.
1209  !
1210  ! 7. Remarks :
1211  !
1212  ! 8. Structure :
1213  !
1214  ! 9. Switches :
1215  !
1216  ! !/S Enable subroutine tracing.
1217  ! !/T Enable test output
1218  !
1219  ! 10. Source code :
1220  !
1221  !/ ------------------------------------------------------------------- /
1222  USE w3servmd, ONLY: extcde
1223 #ifdef W3_S
1224  USE w3servmd, ONLY: strace
1225 #endif
1226  !
1227  IMPLICIT NONE
1228  !/
1229  !/ ------------------------------------------------------------------- /
1230  !/ Parameter list
1231  !/
1232  INTEGER, INTENT(IN) :: IMOD, NDSE, NDST
1233  !/
1234  !/ ------------------------------------------------------------------- /
1235  !/ Local parameters
1236  !/
1237 #ifdef W3_S
1238  INTEGER, SAVE :: IENT = 0
1239 #endif
1240  !/
1241 #ifdef W3_S
1242  CALL strace (ient, 'WMSETM')
1243 #endif
1244  !
1245  ! -------------------------------------------------------------------- /
1246  ! 1. Test input and module status
1247  !
1248  IF ( nmdata .EQ. -1 ) THEN
1249  WRITE (ndse,1001)
1250  CALL extcde (1)
1251  END IF
1252  !
1253  IF ( imod.LT.1 .OR. imod.GT.nmdata ) THEN
1254  WRITE (ndse,1002) imod, nmdata
1255  CALL extcde (2)
1256  END IF
1257  !
1258 #ifdef W3_T
1259  WRITE (ndst,9000) imod
1260 #endif
1261  !
1262  ! -------------------------------------------------------------------- /
1263  ! 2. Set model numbers
1264  !
1265  imdata = imod
1266  !
1267  ! -------------------------------------------------------------------- /
1268  ! 3. Set pointers
1269  !
1270  !
1271  nmv => mdatas(imod)%NMV
1272  tmv => mdatas(imod)%TMV
1273  amv => mdatas(imod)%AMV
1274  dmv => mdatas(imod)%DMV
1275 #ifdef W3_MPI
1276  mpi_comm_grd => mdatas(imod)%MPI_COMM_GRD
1277  mpi_comm_bct => mdatas(imod)%MPI_COMM_BCT
1278  croot => mdatas(imod)%CROOT
1279  fbcast => mdatas(imod)%FBCAST
1280 #endif
1281  rcld => mdatas(imod)%RCLD
1282  ndt => mdatas(imod)%NDT
1283  data0 => mdatas(imod)%DATA0
1284  data1 => mdatas(imod)%DATA1
1285  data2 => mdatas(imod)%DATA2
1286  nbi2s => mdatas(imod)%NBI2S
1287  mapmsk => mdatas(imod)%MAPMSK
1288  minit => mdatas(imod)%MINIT
1289  fllstl => mdatas(imod)%FLLSTL
1290  fllsti => mdatas(imod)%FLLSTI
1291  fllstr => mdatas(imod)%FLLSTR
1292  mapbdi => mdatas(imod)%MAPBDI
1293  mapodi => mdatas(imod)%MAPODI
1294 #ifdef W3_PDLIB
1295  sea_ipgl => mdatas(imod)%SEA_IPGL
1296  sea_ipgl_to_proc => mdatas(imod)%SEA_IPGL_TO_PROC
1297 #endif
1298  uptmap => mdatas(imod)%UPTMAP
1299  !
1300  RETURN
1301  !
1302  ! Formats
1303  !
1304 1001 FORMAT (/' *** ERROR WMSETM : GRIDS NOT INITIALIZED *** '/ &
1305  ' RUN W3NMOD FIRST '/)
1306 1002 FORMAT (/' *** ERROR WMSETM : ILLEGAL MODEL NUMBER *** '/ &
1307  ' IMOD = ',i10/ &
1308  ' NMDATA = ',i10/)
1309  !
1310 #ifdef W3_T
1311 9000 FORMAT (' TEST WMSETM : MODEL ',i4,' SELECTED')
1312 #endif
1313  !/
1314  !/ End of WMSETM ----------------------------------------------------- /
1315  !/

References amv, croot, data0, data1, data2, dmv, w3servmd::extcde(), fbcast, fllsti, fllstl, fllstr, imdata, mapbdi, mapmsk, mapodi, mdatas, minit, mpi_comm_bct, mpi_comm_grd, nbi2s, ndt, nmdata, nmv, rcld, sea_ipgl, sea_ipgl_to_proc, w3servmd::strace(), tmv, and uptmap.

Referenced by wmesmfmd::createexpmesh(), wmdimd(), wmdimm(), wmgridmd::wmgeql(), wmgridmd::wmghgh(), wminitmd::wminit(), wminitmd::wminitnml(), wminiomd::wmiobs(), wmiopomd::wmiopo(), wmiopomd::wmiopp(), wmgridmd::wmsmceql(), wmupdtmd::wmupdt(), and wmwavemd::wmwave().

Variable Documentation

◆ allprc

integer, dimension(:,:), allocatable wmmdatmd::allprc

ALLPRC.

Definition at line 360 of file wmmdatmd.F90.

360  INTEGER, ALLOCATABLE :: ALLPRC(:,:)

Referenced by wmwavemd::wmbcst(), wminitmd::wminit(), wminitmd::wminitnml(), wminiomd::wmiobs(), and wmiopomd::wmiopo().

◆ amv

real, dimension(:,:), pointer wmmdatmd::amv

AMV.

Definition at line 550 of file wmmdatmd.F90.

550  REAL, POINTER :: AMV(:,:)

Referenced by wmdimd(), wminitmd::wminit(), wminitmd::wminitnml(), wmsetm(), wmupdtmd::wmupd1(), and wmwavemd::wmwave().

◆ bcdump

logical, dimension(:), allocatable wmmdatmd::bcdump

BCDUMP.

Definition at line 382 of file wmmdatmd.F90.

382  LOGICAL, ALLOCATABLE :: BCDUMP(:)

Referenced by wminitmd::wminit(), wminitmd::wminitnml(), wminiomd::wmiobg(), and wmndat().

◆ bpstge

type(bpst), dimension(:,:), allocatable, target wmmdatmd::bpstge

BPSTGE.

Definition at line 529 of file wmmdatmd.F90.

529  TYPE(BPST), TARGET, ALLOCATABLE :: BPSTGE(:,:)

Referenced by wminiomd::wmiobf(), wminiomd::wmiobg(), wminiomd::wmiobs(), and wmndat().

◆ clkdt1

integer, dimension(8) wmmdatmd::clkdt1

CLKDT1.

Definition at line 336 of file wmmdatmd.F90.

336  INTEGER :: CLKDT1(8)

Referenced by wmfinlmd::wmfinl(), wminitmd::wminit(), and wminitmd::wminitnml().

◆ clkdt2

integer, dimension(8) wmmdatmd::clkdt2

CLKDT2.

Definition at line 337 of file wmmdatmd.F90.

337  INTEGER :: CLKDT2(8)

Referenced by wmfinlmd::wmfinl(), wminitmd::wminit(), and wminitmd::wminitnml().

◆ clkdt3

integer, dimension(8) wmmdatmd::clkdt3

CLKDT3.

Definition at line 338 of file wmmdatmd.F90.

338  INTEGER :: CLKDT3(8)

Referenced by wmfinlmd::wmfinl().

◆ clkfin

real wmmdatmd::clkfin

CLKFIN.

Definition at line 376 of file wmmdatmd.F90.

376  REAL :: CLKFIN

Referenced by wmfinlmd::wmfinl(), wminitmd::wminit(), and wminitmd::wminitnml().

◆ croot

integer, pointer wmmdatmd::croot

CROOT.

Definition at line 545 of file wmmdatmd.F90.

545  INTEGER, POINTER :: CROOT

Referenced by wmwavemd::wmbcst(), wmgridmd::wmgeql(), wmgridmd::wmghgh(), wminitmd::wminit(), wminitmd::wminitnml(), wmsetm(), and wmwavemd::wmwave().

◆ data0

real, dimension(:,:), pointer wmmdatmd::data0

DATA0.

Definition at line 547 of file wmmdatmd.F90.

547  REAL, POINTER :: DATA0(:,:)

Referenced by wmsetm(), and wmupdtmd::wmupd1().

◆ data1

real, dimension(:,:), pointer wmmdatmd::data1

DATA1.

Definition at line 548 of file wmmdatmd.F90.

548  REAL, POINTER :: DATA1(:,:)

Referenced by wmsetm(), and wmupdtmd::wmupd1().

◆ data2

real, dimension(:,:), pointer wmmdatmd::data2

DATA2.

Definition at line 549 of file wmmdatmd.F90.

549  REAL, POINTER :: DATA2(:,:)

Referenced by wmsetm(), and wmupdtmd::wmupd1().

◆ dmv

real, dimension(:,:), pointer wmmdatmd::dmv

DMV.

Definition at line 551 of file wmmdatmd.F90.

551  REAL, POINTER :: DMV(:,:)

Referenced by wmdimd(), wminitmd::wminit(), wminitmd::wminitnml(), wmsetm(), wmupdtmd::wmupd1(), and wmwavemd::wmwave().

◆ dtres

real, dimension(:), allocatable wmmdatmd::dtres

DTRES.

Definition at line 377 of file wmmdatmd.F90.

377  REAL, ALLOCATABLE :: DTRES(:)

Referenced by wminitmd::wminit(), wminitmd::wminitnml(), and wmwavemd::wmwave().

◆ eqlsta

integer, dimension(:), allocatable wmmdatmd::eqlsta

EQLSTA.

Definition at line 373 of file wmmdatmd.F90.

373  INTEGER, ALLOCATABLE :: EQLSTA(:)

Referenced by wminiomd::wmioeg(), and wmndat().

◆ eqstge

type(eqst), dimension(:,:), allocatable, target wmmdatmd::eqstge

EQSTGE.

Definition at line 531 of file wmmdatmd.F90.

531  TYPE(EQST), TARGET, ALLOCATABLE :: EQSTGE(:,:)

Referenced by wmgridmd::wmgeql(), wminiomd::wmioef(), wminiomd::wmioeg(), wminiomd::wmioes(), wmndat(), and wmgridmd::wmsmceql().

◆ etime

integer, dimension(2) wmmdatmd::etime

◆ fbcast

logical, pointer wmmdatmd::fbcast

FBCAST.

Definition at line 568 of file wmmdatmd.F90.

568  LOGICAL, POINTER :: FBCAST

Referenced by wminitmd::wminit(), wminitmd::wminitnml(), wmsetm(), and wmwavemd::wmwave().

◆ fldat0

logical, pointer wmmdatmd::fldat0

FLDAT0.

Definition at line 563 of file wmmdatmd.F90.

563  LOGICAL, POINTER :: FLDAT0

Referenced by wmdimd().

◆ fldat1

logical, pointer wmmdatmd::fldat1

FLDAT1.

Definition at line 564 of file wmmdatmd.F90.

564  LOGICAL, POINTER :: FLDAT1

Referenced by wmdimd().

◆ fldat2

logical, pointer wmmdatmd::fldat2

FLDAT2.

Definition at line 565 of file wmmdatmd.F90.

565  LOGICAL, POINTER :: FLDAT2

Referenced by wmdimd().

◆ flgbdi

logical wmmdatmd::flgbdi =.FALSE.

FLGBDI.

Definition at line 378 of file wmmdatmd.F90.

378  LOGICAL :: FLGBDI=.false.

Referenced by wmgridmd::wmghgh().

◆ flghg1

logical wmmdatmd::flghg1

◆ flghg2

logical wmmdatmd::flghg2

FLGHG2.

Definition at line 380 of file wmmdatmd.F90.

380  LOGICAL :: FLGHG2

Referenced by wminitmd::wminit(), wminitmd::wminitnml(), wminiomd::wmiohg(), wminiomd::wmiohs(), and wmwavemd::wmwave().

◆ fllsti

logical, pointer wmmdatmd::fllsti

FLLSTI.

Definition at line 562 of file wmmdatmd.F90.

562  LOGICAL, POINTER :: FLLSTI

Referenced by wmsetm(), wmupdtmd::wmupd1(), wmupdtmd::wmupdt(), and wmwavemd::wmwave().

◆ fllstl

logical, pointer wmmdatmd::fllstl

FLLSTL.

Definition at line 560 of file wmmdatmd.F90.

560  LOGICAL, POINTER :: FLLSTL

Referenced by wmsetm(), wmupdtmd::wmupd1(), wmupdtmd::wmupdt(), and wmwavemd::wmwave().

◆ fllstr

logical, pointer wmmdatmd::fllstr

FLLSTR.

Definition at line 561 of file wmmdatmd.F90.

561  LOGICAL, POINTER :: FLLSTR

Referenced by wmsetm(), wmupdtmd::wmupd1(), wmupdtmd::wmupdt(), and wmwavemd::wmwave().

◆ grank

integer, dimension(:), allocatable wmmdatmd::grank

GRANK.

Definition at line 353 of file wmmdatmd.F90.

353  INTEGER, ALLOCATABLE :: GRANK(:)

Referenced by wmgridmd::wmgeql(), wmgridmd::wmghgh(), wmgridmd::wmglow(), wminitmd::wminit(), wminitmd::wminitnml(), wmgridmd::wmsmceql(), and wmwavemd::wmwave().

◆ grdeql

integer, dimension(:,:), allocatable wmmdatmd::grdeql

GRDEQL.

Definition at line 357 of file wmmdatmd.F90.

357  INTEGER, ALLOCATABLE :: GRDEQL(:,:)

Referenced by wmgridmd::wmgeql(), wminitmd::wminit(), wminitmd::wminitnml(), wmgridmd::wmsmceql(), and wmwavemd::wmwave().

◆ grdhgh

integer, dimension(:,:), allocatable wmmdatmd::grdhgh

GRDHGH.

Definition at line 356 of file wmmdatmd.F90.

356  INTEGER, ALLOCATABLE :: GRDHGH(:,:)

Referenced by wmgridmd::wmghgh(), wmgridmd::wmglow(), wminitmd::wminit(), wminitmd::wminitnml(), and wmwavemd::wmwave().

◆ grdlow

integer, dimension(:,:), allocatable wmmdatmd::grdlow

GRDLOW.

Definition at line 359 of file wmmdatmd.F90.

359  INTEGER, ALLOCATABLE :: GRDLOW(:,:)

Referenced by wmgridmd::wmglow(), wminitmd::wminit(), wminitmd::wminitnml(), and wmwavemd::wmwave().

◆ grgrp

integer, dimension(:), allocatable wmmdatmd::grgrp

GRGRP.

Definition at line 354 of file wmmdatmd.F90.

354  INTEGER, ALLOCATABLE :: GRGRP(:)

Referenced by wmgridmd::wmgeql(), wminitmd::wminit(), wminitmd::wminitnml(), and wmgridmd::wmsmceql().

◆ grstat

integer, dimension(:), allocatable wmmdatmd::grstat

GRSTAT.

Definition at line 366 of file wmmdatmd.F90.

366  INTEGER, ALLOCATABLE :: GRSTAT(:)

Referenced by wminitmd::wminit(), wminitmd::wminitnml(), and wmwavemd::wmwave().

◆ hghsta

integer, dimension(:), allocatable wmmdatmd::hghsta

HGHSTA.

Definition at line 372 of file wmmdatmd.F90.

372  INTEGER, ALLOCATABLE :: HGHSTA(:)

Referenced by wminiomd::wmiohg(), and wmndat().

◆ hgstge

type(hgst), dimension(:,:), allocatable, target wmmdatmd::hgstge

HGSTGE.

Definition at line 530 of file wmmdatmd.F90.

530  TYPE(HGST), TARGET, ALLOCATABLE :: HGSTGE(:,:)

Referenced by wmgridmd::wmghgh(), wminiomd::wmiohf(), wminiomd::wmiohg(), wminiomd::wmiohs(), and wmndat().

◆ idinp

character(len=3), dimension(:,:), allocatable wmmdatmd::idinp

IDINP.

Definition at line 386 of file wmmdatmd.F90.

386  CHARACTER(LEN=3), ALLOCATABLE :: IDINP(:,:)

Referenced by wminitmd::wminit(), wminitmd::wminitnml(), wmupdtmd::wmupd2(), and wmupdtmd::wmupdt().

◆ iflsti

logical, dimension(:), allocatable wmmdatmd::iflsti

IFLSTI.

Definition at line 383 of file wmmdatmd.F90.

383  LOGICAL, ALLOCATABLE :: IFLSTI(:)

Referenced by wmndat(), and wmupdtmd::wmupdt().

◆ iflstl

logical, dimension(:), allocatable wmmdatmd::iflstl

IFLSTL.

Definition at line 384 of file wmmdatmd.F90.

384  LOGICAL, ALLOCATABLE :: IFLSTL(:)

Referenced by wmndat(), and wmupdtmd::wmupdt().

◆ iflstr

logical, dimension(:), allocatable wmmdatmd::iflstr

IFLSTR.

Definition at line 385 of file wmmdatmd.F90.

385  LOGICAL, ALLOCATABLE :: IFLSTR(:)

Referenced by wmndat(), and wmupdtmd::wmupdt().

◆ imdata

integer wmmdatmd::imdata = -1

IMDATA.

Definition at line 311 of file wmmdatmd.F90.

311  INTEGER :: IMDATA = -1

Referenced by wmsetm().

◆ improc

◆ ingrp

integer, dimension(:,:), allocatable wmmdatmd::ingrp

INGRP.

Definition at line 355 of file wmmdatmd.F90.

355  INTEGER, ALLOCATABLE :: INGRP(:,:)

Referenced by wminitmd::wminit(), wminitmd::wminitnml(), and wmwavemd::wmwave().

◆ inpmap

integer, dimension(:,:), allocatable wmmdatmd::inpmap

INPMAP.

Definition at line 368 of file wmmdatmd.F90.

368  INTEGER, ALLOCATABLE :: INPMAP(:,:)

Referenced by wminitmd::wminit(), wminitmd::wminitnml(), and wmupdtmd::wmupdt().

◆ mapbdi

real, dimension(:,:), pointer wmmdatmd::mapbdi

MAPBDI.

Definition at line 553 of file wmmdatmd.F90.

553  REAL, POINTER :: MAPBDI(:,:)

Referenced by wmgridmd::wmghgh(), and wmsetm().

◆ mapmsk

integer, dimension(:,:), pointer wmmdatmd::mapmsk

MAPMSK.

Definition at line 540 of file wmmdatmd.F90.

540  INTEGER, POINTER :: MAPMSK(:,:)

Referenced by wmgridmd::wmghgh(), wmsetm(), and wmwavemd::wmwave().

◆ mapodi

real, dimension(:,:), pointer wmmdatmd::mapodi

MAPODI.

Definition at line 554 of file wmmdatmd.F90.

554  REAL, POINTER :: MAPODI(:,:)

Referenced by wmgridmd::wmgeql(), and wmsetm().

◆ mdatas

type(mdata), dimension(:), allocatable, target wmmdatmd::mdatas

◆ mdse

◆ mdsf

integer, dimension(:,:), allocatable wmmdatmd::mdsf

MDSF.

Definition at line 352 of file wmmdatmd.F90.

352  INTEGER, ALLOCATABLE :: MDSF(:,:)

Referenced by w3sbs1(), wminitmd::wminit(), wminitmd::wminitnml(), and wmupdtmd::wmupd1().

◆ mdsi

integer wmmdatmd::mdsi = 8

MDSI.

Definition at line 312 of file wmmdatmd.F90.

312  INTEGER :: MDSI = 8

Referenced by w3mlti(), wminitmd::wminit(), and wminitmd::wminitnml().

◆ mdso

integer wmmdatmd::mdso = 9

◆ mdsp

integer wmmdatmd::mdsp

MDSP.

Definition at line 341 of file wmmdatmd.F90.

341  INTEGER :: MDSP

Referenced by wmfinlmd::wmfinl(), wminitmd::wminit(), wminitmd::wminitnml(), and wmwavemd::wmwave().

◆ mdss

◆ mdst

◆ mdsup

integer wmmdatmd::mdsup

MDSUP.

Definition at line 317 of file wmmdatmd.F90.

317  INTEGER :: MDSUP

Referenced by wminitmd::wminit(), wminitmd::wminitnml(), and wmiopomd::wmiopo().

◆ mdsupa

integer wmmdatmd::mdsupa

MDSUPA.

Definition at line 319 of file wmmdatmd.F90.

319  INTEGER :: MDSUPA

Referenced by wminitmd::wminit(), wminitmd::wminitnml(), and wmiopomd::wmiopo().

◆ minit

logical, pointer wmmdatmd::minit

MINIT.

Definition at line 559 of file wmmdatmd.F90.

559  LOGICAL, POINTER :: MINIT

Referenced by wmdimm(), and wmsetm().

◆ modmap

integer, dimension(:,:), allocatable wmmdatmd::modmap

MODMAP.

Definition at line 361 of file wmmdatmd.F90.

361  INTEGER, ALLOCATABLE :: MODMAP(:,:)

Referenced by wminitmd::wminit(), and wminitmd::wminitnml().

◆ mpi_comm_bct

integer, pointer wmmdatmd::mpi_comm_bct

MPI_COMM_BCT.

Definition at line 544 of file wmmdatmd.F90.

544  INTEGER, POINTER :: MPI_COMM_BCT

Referenced by wminitmd::wminit(), wminitmd::wminitnml(), wmsetm(), and wmwavemd::wmwave().

◆ mpi_comm_grd

integer, pointer wmmdatmd::mpi_comm_grd

MPI_COMM_GRD.

Definition at line 543 of file wmmdatmd.F90.

543  INTEGER, POINTER :: MPI_COMM_GRD

Referenced by wminitmd::wminit(), wminitmd::wminitnml(), wmiopomd::wmiopo(), wmiopomd::wmiopp(), wmsetm(), and wmwavemd::wmwave().

◆ mpi_comm_mwave

◆ mtag0

integer, parameter wmmdatmd::mtag0 = 1000

MTAG0.

Definition at line 346 of file wmmdatmd.F90.

346  INTEGER, PARAMETER :: MTAG0 = 1000

Referenced by wminiomd::wmiobg(), wminiomd::wmiobs(), and wmiopomd::wmiopo().

◆ mtag1

integer, parameter wmmdatmd::mtag1 = 40000

MTAG1.

Definition at line 347 of file wmmdatmd.F90.

347  INTEGER, PARAMETER :: MTAG1 = 40000

Referenced by wminiomd::wmiobs(), wminiomd::wmiohg(), and wminiomd::wmiohs().

◆ mtag2

integer, parameter wmmdatmd::mtag2 = 1000000

MTAG2.

Definition at line 348 of file wmmdatmd.F90.

348  INTEGER, PARAMETER :: MTAG2 = 1000000

Referenced by wminiomd::wmioeg(), wminiomd::wmioes(), and wminiomd::wmiohs().

◆ mtag_ub

integer, parameter wmmdatmd::mtag_ub = 2**21-1

MPI_TAG_UB on Cray XC40.

Definition at line 349 of file wmmdatmd.F90.

349  INTEGER, PARAMETER :: MTAG_UB = 2**21-1

Referenced by wminiomd::wmioes().

◆ mtagb

integer, parameter wmmdatmd::mtagb = 0

MTAGB.

Definition at line 345 of file wmmdatmd.F90.

345  INTEGER, PARAMETER :: MTAGB = 0

Referenced by wmwavemd::wmbcst(), and wmwavemd::wmwout().

◆ nbi2g

integer, dimension(:,:), allocatable wmmdatmd::nbi2g

NBI2G.

Definition at line 367 of file wmmdatmd.F90.

367  INTEGER, ALLOCATABLE :: NBI2G(:,:)

Referenced by wmgridmd::wmglow(), wminiomd::wmiobg(), and wminiomd::wmiobs().

◆ nbi2s

integer, dimension(:,:), pointer wmmdatmd::nbi2s

NBI2S.

Definition at line 539 of file wmmdatmd.F90.

539  INTEGER, POINTER :: NBI2S(:,:)

Referenced by wmgridmd::wmglow(), wminiomd::wmiobg(), wminiomd::wmiobs(), and wmsetm().

◆ nbista

integer, dimension(:), allocatable wmmdatmd::nbista

NBISTA.

Definition at line 371 of file wmmdatmd.F90.

371  INTEGER, ALLOCATABLE :: NBISTA(:)

Referenced by wminiomd::wmiobg(), and wmndat().

◆ ndt

integer, dimension(:), pointer wmmdatmd::ndt

NDT.

Definition at line 536 of file wmmdatmd.F90.

536  INTEGER, POINTER :: NDT(:)

Referenced by wmdimd(), wmsetm(), and wmupdtmd::wmupd1().

◆ ngrpsmc

integer wmmdatmd::ngrpsmc

NGRPSMC.

Definition at line 334 of file wmmdatmd.F90.

334  INTEGER :: NGRPSMC

Referenced by wminitmd::wminit(), wminitmd::wminitnml(), and wminiomd::wmioeg().

◆ nmdata

integer wmmdatmd::nmdata = -1

NMDATA.

Definition at line 310 of file wmmdatmd.F90.

310  INTEGER :: NMDATA = -1

Referenced by wmdimd(), wmdimm(), wmndat(), and wmsetm().

◆ nmperr

◆ nmplog

integer wmmdatmd::nmplog = 1

◆ nmproc

◆ nmpscr

◆ nmptst

integer wmmdatmd::nmptst = 1

NMPTST.

Definition at line 325 of file wmmdatmd.F90.

325  INTEGER :: NMPTST = 1

Referenced by wmwavemd::wmwave().

◆ nmpupt

integer wmmdatmd::nmpupt = 1

NMPUPT.

Definition at line 327 of file wmmdatmd.F90.

327  INTEGER :: NMPUPT = 1

Referenced by wminitmd::wminit(), wminitmd::wminitnml(), and wmiopomd::wmiopo().

◆ nmv

integer, pointer wmmdatmd::nmv

NMV.

Definition at line 537 of file wmmdatmd.F90.

537  INTEGER, POINTER :: NMV

Referenced by wmdimd(), wminitmd::wminit(), wminitmd::wminitnml(), wmsetm(), wmupdtmd::wmupd1(), and wmwavemd::wmwave().

◆ nmvmax

integer wmmdatmd::nmvmax

NMVMAX.

Definition at line 333 of file wmmdatmd.F90.

333  INTEGER :: NMVMAX

Referenced by wminitmd::wminit(), wminitmd::wminitnml(), and wmupdtmd::wmupd1().

◆ nrgrd

◆ nrgrp

integer wmmdatmd::nrgrp

NRGRP.

Definition at line 332 of file wmmdatmd.F90.

332  INTEGER :: NRGRP

Referenced by wminitmd::wminit(), wminitmd::wminitnml(), and wmwavemd::wmwave().

◆ nrinp

integer wmmdatmd::nrinp

NRINP.

Definition at line 331 of file wmmdatmd.F90.

331  INTEGER :: NRINP

Referenced by wminitmd::wminit(), wminitmd::wminitnml(), and wmndat().

◆ rcld

integer, dimension(:), pointer wmmdatmd::rcld

RCLD.

Definition at line 535 of file wmmdatmd.F90.

535  INTEGER, POINTER :: RCLD(:)

Referenced by wmdimd(), wmsetm(), and wmupdtmd::wmupd1().

◆ respec

logical, dimension(:,:), allocatable wmmdatmd::respec

RESPEC.

Definition at line 381 of file wmmdatmd.F90.

381  LOGICAL, ALLOCATABLE :: RESPEC(:,:)

Referenced by wminiomd::wmiobg(), wminiomd::wmiobs(), wminiomd::wmioeg(), wminiomd::wmiohg(), wmiopomd::wmiopo(), and wmgridmd::wmrspc().

◆ sea_ipgl

integer, dimension(:), pointer wmmdatmd::sea_ipgl

SEA_IPGL.

Definition at line 556 of file wmmdatmd.F90.

556  INTEGER, POINTER :: SEA_IPGL(:)

Referenced by wmsetm().

◆ sea_ipgl_to_proc

integer, dimension(:), pointer wmmdatmd::sea_ipgl_to_proc

SEA_IPGL_TO_PROC.

Definition at line 557 of file wmmdatmd.F90.

557  INTEGER, POINTER :: SEA_IPGL_TO_PROC(:)

Referenced by wmsetm().

◆ stime

integer, dimension(2) wmmdatmd::stime

STIME.

Definition at line 328 of file wmmdatmd.F90.

328  INTEGER :: STIME(2)

Referenced by wmesmfmd::setservices(), w3sbs1(), wminitmd::wminit(), wminitmd::wminitnml(), and wmwavemd::wmwave().

◆ tdata

integer, dimension(:,:), allocatable wmmdatmd::tdata

TDATA.

Definition at line 365 of file wmmdatmd.F90.

365  INTEGER, ALLOCATABLE :: TDATA(:,:)

Referenced by wminitmd::wminit(), wminitmd::wminitnml(), and wmwavemd::wmwave().

◆ tmax

integer, dimension(:,:), allocatable wmmdatmd::tmax

TMAX.

Definition at line 363 of file wmmdatmd.F90.

363  INTEGER, ALLOCATABLE :: TMAX(:,:)

Referenced by wminitmd::wminit(), wminitmd::wminitnml(), and wmwavemd::wmwave().

◆ tmv

integer, dimension(:,:,:), pointer wmmdatmd::tmv

TMV.

Definition at line 538 of file wmmdatmd.F90.

538  INTEGER, POINTER :: TMV(:,:,:)

Referenced by wmdimd(), wminitmd::wminit(), wminitmd::wminitnml(), wmsetm(), wmupdtmd::wmupd1(), and wmwavemd::wmwave().

◆ toutp

integer, dimension(:,:), allocatable wmmdatmd::toutp

TOUTP.

Definition at line 364 of file wmmdatmd.F90.

364  INTEGER, ALLOCATABLE :: TOUTP(:,:)

Referenced by wminitmd::wminit(), wminitmd::wminitnml(), wminiomd::wmiohg(), wminiomd::wmiohs(), and wmwavemd::wmwave().

◆ tsync

integer, dimension(:,:), allocatable wmmdatmd::tsync

TSYNC.

Definition at line 362 of file wmmdatmd.F90.

362  INTEGER, ALLOCATABLE :: TSYNC(:,:)

Referenced by wminitmd::wminit(), wminitmd::wminitnml(), wminiomd::wmioes(), wminiomd::wmiohs(), and wmwavemd::wmwave().

◆ uptmap

integer, dimension(:), pointer wmmdatmd::uptmap

UPTMAP.

Definition at line 541 of file wmmdatmd.F90.

541  INTEGER, POINTER :: UPTMAP(:)

Referenced by wmiopomd::wmiopo(), and wmsetm().

w3gdatmd::ungtype
integer, parameter ungtype
Definition: w3gdatmd.F90:626
w3gdatmd::grids
type(grid), dimension(:), allocatable, target grids
Definition: w3gdatmd.F90:1088
wmmdatmd::mpi_comm_grd
integer, pointer mpi_comm_grd
MPI_COMM_GRD.
Definition: wmmdatmd.F90:543
w3gdatmd::w3setg
subroutine w3setg(IMOD, NDSE, NDST)
Definition: w3gdatmd.F90:2152
constants::lpdlib
logical lpdlib
LPDLIB Logical for using the PDLIB library.
Definition: constants.F90:101
w3servmd
Definition: w3servmd.F90:3
w3odatmd
Definition: w3odatmd.F90:3
w3odatmd::naproc
integer, pointer naproc
Definition: w3odatmd.F90:457
w3gdatmd::igrid
integer igrid
Definition: w3gdatmd.F90:618
w3servmd::strace
subroutine strace(IENT, SNAME)
Definition: w3servmd.F90:148
w3gdatmd::gtype
integer, pointer gtype
Definition: w3gdatmd.F90:1094
constants
Define some much-used constants for global use (all defined as PARAMETER).
Definition: constants.F90:20
w3gdatmd
Definition: w3gdatmd.F90:16
w3odatmd::outpts
type(output), dimension(:), allocatable, target outpts
Definition: w3odatmd.F90:452
w3gdatmd::ngrids
integer ngrids
Definition: w3gdatmd.F90:618