Page 1 Source Listing W3WAVE 2014-09-16 16:49 w3wavemd.f90 1 !/ ------------------------------------------------------------------- / 2 MODULE W3WAVEMD 3 !/ 4 !/ +-----------------------------------+ 5 !/ | WAVEWATCH III NOAA/NCEP | 6 !/ | H. L. Tolman | 7 !/ | FORTRAN 90 | 8 !/ | Last update : 14-Nov-2013 | 9 !/ +-----------------------------------+ 10 !/ 11 !/ 04-Feb-2000 : Origination. ( version 2.00 ) 12 !/ For upgrades see subroutines. 13 !/ 14-Feb-2000 : Exact-NL added. ( version 2.01 ) 14 !/ 05-Jan-2001 : Bug fix to allow model to run ( version 2.05 ) 15 !/ without output. 16 !/ 24-Jan-2001 : Flat grid version. ( version 2.06 ) 17 !/ 09-Feb-2001 : Third propagation scheme added. ( version 2.08 ) 18 !/ 23-Feb-2001 : Check for barrier after source 19 !/ terms added ( W3NMIN ). ( delayed version 2.07 ) 20 !/ 16-Mar-2001 : Fourth propagation scheme added. ( version 2.09 ) 21 !/ 30-Mar-2001 : Sub-grid obstacles added. ( version 2.10 ) 22 !/ 23-May-2001 : Clean up and bug fixes. ( version 2.11 ) 23 !/ 10-Dec-2001 : Sub-grid obstacles for UQ schemes. ( version 2.14 ) 24 !/ 11-Jan-2002 : Sub-grid ice. ( version 2.15 ) 25 !/ 24-Jan-2002 : Zero time step dor data ass. ( version 2.17 ) 26 !/ 18-Feb-2002 : Point output diagnostics added. ( version 2.18 ) 27 !/ 30-Apr-2002 : Add field output types 17-18. ( version 2.20 ) 28 !/ 09-May-2002 : Switch clean up. ( version 2.21 ) 29 !/ 13-Nov-2002 : Add stress vector. ( version 3.00 ) 30 !/ 26-Dec-2002 : Moving grid version. ( version 3.02 ) 31 !/ 01-Aug-2003 : Moving grid GSE correction. ( version 3.03 ) 32 !/ 20-Aug-2003 : Output server options added. ( version 3.04 ) 33 !/ 07-Oct-2003 : Output options for NN training. ( version 3.05 ) 34 !/ 29-Dec-2004 : Multiple grid version. ( version 3.06 ) 35 !/ W3INIT, W3MPII-O and WWVER moved to w3initmd.ftn 36 !/ 04-Feb-2005 : Add STAMP to par list of W3WAVE. ( version 3.07 ) 37 !/ 04-May-2005 : Change to MPI_COMM_WAVE. ( version 3.07 ) 38 !/ 28-Jun-2005 : Adding map recalc for W3ULEV call. ( version 3.07 ) 39 !/ 07-Sep-2005 : Updated boundary conditions. ( version 3.08 ) 40 !/ Fix NRQSG1/2 = 0 array bound issue. 41 !/ 13-Jun-2006 : Split STORE in G/SSTORE ( version 3.09 ) 42 !/ 26-Jun-2006 : Add output type 6. ( version 3.09 ) 43 !/ 04-Jul-2006 : Consolidate stress arrays. ( version 3.09 ) 44 !/ 18-Oct-2006 : Partitioned spectral data output. ( version 3.10 ) 45 !/ 02-Feb-2007 : Add FLAGST test. ( version 3.10 ) 46 !/ 02-Apr-2007 : Add partitioned field data. ( version 3.11 ) 47 !/ 07-May-2007 : Bug fix SKIP_O treatment. ( version 3.11 ) 48 !/ 17-May-2007 : Adding NTPROC/NAPROC separation. ( version 3.11 ) 49 !/ 08-Oct-2007 : Adding AS CX-Y to W3SRCE par. list. ( version 3.13 ) 50 !/ 22-Feb-2008 : Initialize VGX-Y properly. ( version 3.13 ) 51 !/ 10-Apr-2008 : Bug fix writing log file (MPI). ( version 3.13 ) 52 !/ 29-May-2009 : Preparing distribution version. ( version 3.14 ) 53 !/ 30-Oct-2009 : Implement run-time grid selection. ( version 3.14 ) 54 !/ (W. E. Rogers & T. J. Campbell, NRL) 55 !/ 30-Oct-2009 : Implement curvilinear grid type. ( version 3.14 ) 56 !/ (W. E. Rogers & T. J. Campbell, NRL) 57 !/ 29-Mar-2010 : Adding coupling, ice in W3SRCE. ( version 3.14_SHOM ) Page 2 Source Listing W3WAVE 2014-09-16 16:49 w3wavemd.f90 58 !/ 16-May-2010 : Adding transparencies in W3SCRE ( version 3.14_SHOM ) 59 !/ 23-Jun-2011 : Movable bed bottom friction BT4 ( version 4.04 ) 60 !/ 03-Nov-2011 : Shoreline reflection on unst. grids ( version 4.04 ) 61 !/ 02-Jul-2011 : Update for PALM coupling ( version 4.07 ) 62 !/ 06-Mar-2012 : Initializing ITEST as needed. ( version 4.07 ) 63 !/ 02-Jul-2012 : Update for PALM coupling ( version 4.07 ) 64 !/ 02-Sep-2012 : Clean up of open BC for UG grids ( version 4.08 ) 65 !/ 03-Sep-2012 : Fix format 902. ( version 4.10 ) 66 !/ 07-Dec-2012 : Wrap W3SRCE with TMPn to limit WARN ( version 4.OF ) 67 !/ 10-Dec-2012 : Modify field output MPI for new ( version 4.OF ) 68 !/ structure and smaller memory footprint. 69 !/ 26-Dec-2012 : Move FIELD init. to W3GATH. ( version 4.OF ) 70 !/ 14-Nov-2013 : Remove orphaned work arrays. ( version 4.13 ) 71 !/ 72 !/ Copyright 2009-2013 National Weather Service (NWS), 73 !/ National Oceanic and Atmospheric Administration. All rights 74 !/ reserved. WAVEWATCH III is a trademark of the NWS. 75 !/ No unauthorized use without permission. 76 !/ 77 ! 1. Purpose : 78 ! 79 ! 2. Variables and types : 80 ! 81 ! 3. Subroutines and functions : 82 ! 83 ! Name Type Scope Description 84 ! ---------------------------------------------------------------- 85 ! W3WAVE Subr. Public Actual wave model. 86 ! W3GATH Subr. Public Data transpose before propagation. 87 ! W3SCAT Subr. Public Data transpose after propagation. 88 ! W3NMIN Subr. Public Calculate minimum number of sea 89 ! points per processor. 90 ! ---------------------------------------------------------------- 91 ! 92 ! 4. Subroutines and functions used : 93 ! 94 ! Name Type Module Description 95 ! ---------------------------------------------------------------- 96 ! W3SETx Subr. W3xDATMD Point to data structure. 97 ! 98 ! W3UCUR Subr. W3UPDTMD Interpolate current fields in time. 99 ! W3UWND Subr. W3UPDTMD Interpolate wind fields in time. 100 ! W3UINI Subr. W3UPDTMD Update initial conditions if init. 101 ! with initial wind conditions. 102 ! W3UBPT Subr. W3UPDTMD Update boundary points. 103 ! W3UICE Subr. W3UPDTMD Update ice coverage. 104 ! W3ULEV Subr. W3UPDTMD Transform the wavenumber grid. 105 ! W3DDXY Subr. W3UPDTMD Calculate dirivatives of the depth. 106 ! W3DCXY Subr. W3UPDTMD Calculate dirivatives of the current. 107 ! 108 ! W3MAPn Subr. W3PROnMD Preparation for ropagation schemes. 109 ! W3XYPn Subr. W3PROnMD Longitude-latitude ("XY") propagation. 110 ! W3KTPn Subr. W3PROnMD Intra-spectral ("k-theta") propagation. 111 ! 112 ! W3SRCE Subr. W3SRCEMD Source term integration and calculation. 113 ! 114 ! W3IOGR Subr. W3IOGRMD Reading/writing model definition file. Page 3 Source Listing W3WAVE 2014-09-16 16:49 w3wavemd.f90 115 ! W3OUTG Subr. W3IOGOMD Generate gridded output fields. 116 ! W3IOGO Subr. W3IOGOMD Read/write gridded output. 117 ! W3IOPE Subr. W3IOPOMD Extract point output. 118 ! W3IOPO Subr. W3IOPOMD Read/write point output. 119 ! W3IOTR Subr. W3IOTRMD Process spectral output along tracks. 120 ! W3IORS Subr. W3IORSMD Read/write restart files. 121 ! W3IOBC Subr. W3IOBCMD Read/write boundary conditions. 122 ! W3CPRT Subr. W3IOSFMD Partition spectra. 123 ! W3IOSF Subr. Id. Write partitioned spectral data. 124 ! 125 ! STRACE Subr. W3SERVMD Subroutine tracing. 126 ! WWTIME Subr. Id. System time in readable format. 127 ! EXTCDE Subr. Id. Program abort. 128 ! 129 ! TICK21 Subr. W3TIMEMD Advance the clock. 130 ! DSEC21 Func. Id. Difference between times. 131 ! STME21 Subr. Id. Time in readable format. 132 ! 133 ! MPI_BARRIER, MPI_STARTALL, MPI_WAITALL 134 ! Subr. Basic MPI routines. 135 ! ---------------------------------------------------------------- 136 ! 137 ! 5. Remarks : 138 ! 139 ! 6. Switches : 140 ! 141 ! !/SHRD Switch for shared / distributed memory architecture. 142 ! !/DIST Id. 143 ! !/MPI Id. 144 ! 145 ! !/PR1 First order propagation schemes. 146 ! !/PR2 ULTIMATE QUICKEST scheme. 147 ! !/PR3 Averaged ULTIMATE QUICKEST scheme. 148 ! !/PRX User-defined scheme. 149 ! 150 ! !/S Enable subroutine tracing. 151 ! !/T Test output. 152 ! !/MPIT Test output for MPI specific code. 153 ! 154 ! 7. Source code : 155 ! 156 !/ ------------------------------------------------------------------- / 157 USE W3ADATMD, ONLY: MPIBUF 158 ! 159 PUBLIC 160 !/ 161 CONTAINS 162 !/ ------------------------------------------------------------------- / 163 SUBROUTINE W3WAVE ( IMOD, TEND, STAMP, NO_OUT ) 164 !/ 165 !/ +-----------------------------------+ 166 !/ | WAVEWATCH III NOAA/NCEP | 167 !/ | H. L. Tolman | 168 !/ | FORTRAN 90 | 169 !/ | Last update : 10-Dec-2012 | 170 !/ +-----------------------------------+ 171 !/ Page 4 Source Listing W3WAVE 2014-09-16 16:49 w3wavemd.f90 172 !/ 17-Mar-1999 : Distributed FORTRAN 77 version. ( version 1.18 ) 173 !/ 04-Feb-2000 : Upgrade to FORTRAN 90 ( version 2.00 ) 174 !/ Major changes to logistics. 175 !/ 05-Jan-2001 : Bug fix to allow model to run ( version 2.05 ) 176 !/ without output. 177 !/ 24-Jan-2001 : Flat grid version. ( version 2.06 ) 178 !/ 09-Feb-2001 : Third propagation scheme added. ( version 2.08 ) 179 !/ 23-Feb-2001 : Check for barrier after source 180 !/ terms added ( W3NMIN ). ( delayed version 2.07 ) 181 !/ 16-Mar-2001 : Fourth propagation scheme added. ( version 2.09 ) 182 !/ 30-Mar-2001 : Sub-grid obstacles added. ( version 2.10 ) 183 !/ 23-May-2001 : Barrier added for dry run, changed ( version 2.10 ) 184 !/ declaration of FLIWND. 185 !/ 10-Dec-2001 : Sub-grid obstacles for UQ schemes. ( version 2.14 ) 186 !/ 11-Jan-2002 : Sub-grid ice. ( version 2.15 ) 187 !/ 24-Jan-2002 : Zero time step dor data ass. ( version 2.17 ) 188 !/ 09-May-2002 : Switch clean up. ( version 2.21 ) 189 !/ 13-Nov-2002 : Add stress vector. ( version 3.00 ) 190 !/ 26-Dec-2002 : Moving grid version. ( version 3.02 ) 191 !/ 01-Aug-2003 : Moving grid GSE correction. ( version 3.03 ) 192 !/ 07-Oct-2003 : Output options for NN training. ( version 3.05 ) 193 !/ 29-Dec-2004 : Multiple grid version. ( version 3.06 ) 194 !/ 04-Feb-2005 : Add STAMP to par list. ( version 3.07 ) 195 !/ 04-May-2005 : Change to MPI_COMM_WAVE. ( version 3.07 ) 196 !/ 28-Jun-2005 : Adding map recalc for W3ULEV call. ( version 3.07 ) 197 !/ 07-Sep-2005 : Updated boundary conditions. ( version 3.08 ) 198 !/ 26-Jun-2006 : Add output type 6. ( version 3.09 ) 199 !/ 04-Jul-2006 : Consolidate stress arrays. ( version 3.09 ) 200 !/ 18-Oct-2006 : Partitioned spectral data output. ( version 3.10 ) 201 !/ 02-Feb-2007 : Add FLAGST test. ( version 3.10 ) 202 !/ 02-Apr-2007 : Add partitioned field data. ( version 3.11 ) 203 !/ Improve MPI_WAITALL call tests/allocations. 204 !/ 07-May-2007 : Bug fix SKIP_O treatment. ( version 3.11 ) 205 !/ 17-May-2007 : Adding NTPROC/NAPROC separation. ( version 3.11 ) 206 !/ 08-Oct-2007 : Adding AS CX-Y to W3SRCE par. list. ( version 3.13 ) 207 !/ 22-Feb-2008 : Initialize VGX-Y properly. ( version 3.13 ) 208 !/ 10-Apr-2008 : Bug fix writing log file (MPI). ( version 3.13 ) 209 !/ 30-Oct-2009 : Implement run-time grid selection. ( version 3.14 ) 210 !/ (W. E. Rogers & T. J. Campbell, NRL) 211 !/ 30-Oct-2009 : Implement curvilinear grid type. ( version 3.14 ) 212 !/ (W. E. Rogers & T. J. Campbell, NRL) 213 !/ 31-Mar-2010 : Add reflections ( version 3.14.4 ) 214 !/ 29-Oct-2010 : Implement unstructured grids ( version 3.14.4 ) 215 !/ (A. Roland and F. Ardhuin) 216 !/ 06-Mar-2011 : Output of max. CFL (F.Ardhuin) ( version 3.14.4 ) 217 !/ 05-Apr-2011 : Implement iteration for DTMAX <1s ( version 3.14.4 ) 218 !/ 02-Jul-2012 : Update for PALM coupling ( version 4.07 ) 219 !/ 02-Sep-2012 : Clean up of open BC for UG grids ( version 4.08 ) 220 !/ 03-Sep-2012 : Fix format 902. ( version 4.10 ) 221 !/ 10-Dec-2012 : Modify field output MPI for new ( version 4.OF ) 222 !/ structure and smaller memory footprint. 223 !/ 16-Nov-2013 : Allows reflection on curvi. grids ( version 4.13 ) 224 !/ 225 ! 1. Purpose : 226 ! 227 ! Run WAVEWATCH III for a given time interval. 228 ! Page 5 Source Listing W3WAVE 2014-09-16 16:49 w3wavemd.f90 229 ! 3. Parameters : 230 ! 231 ! Parameter list 232 ! ---------------------------------------------------------------- 233 ! IMOD Int. I Model number. 234 ! TEND I.A. I Ending time of integration. 235 ! STAMP Log. I Print time stamp (optional, defaults to T). 236 ! NO_OUT Log. I Skip output (optional, defaults to F). 237 ! Skip at ending time only! 238 ! ---------------------------------------------------------------- 239 ! 240 ! Local parameters : Flags 241 ! ---------------------------------------------------------------- 242 ! FLOUTG Log. Flag for running W3OUTG. 243 ! FLPART Log. Flag for running W3CPRT. 244 ! FLZERO Log. Flag for zero time interval. 245 ! FLAG0 Log. Flag for processors without tasks. 246 ! ---------------------------------------------------------------- 247 ! 248 ! 4. Subroutines used : 249 ! 250 ! See module documentation. 251 ! 252 ! 5. Called by : 253 ! 254 ! Any program shell or integrated model which uses WAVEWATCH III. 255 ! 256 ! 6. Error messages : 257 ! 258 ! 7. Remarks : 259 ! 260 ! - Currents are updated before winds as currents are used in wind 261 ! and USTAR processing. 262 ! - Ice and water levels can be updated only once per call. 263 ! - If ice or water level time are undefined, the update 264 ! takes place asap, otherwise around the "half-way point" 265 ! betweem the old and new times. 266 ! - To increase accuracy, the calculation o fthe intra-sprectral 267 ! propagation is performed around the spatial propagation. 268 ! 269 ! 8. Structure : 270 ! 271 ! ----------------------------------------------------------- 272 ! 0. Initializations 273 ! a Point to data structures 274 ! b Subroutine tracing 275 ! c Local parameter initialization 276 ! d Test output 277 ! 1. Check the consistency of the input. 278 ! a Ending time versus initial time. 279 ! b Water level time. 280 ! c Current time interval. 281 ! d Wind time interval. 282 ! e Ice time. 283 ! 2. Determine next time from ending and output 284 ! time and get corresponding time step. 285 ! 3. Loop over time steps (see below). Page 6 Source Listing W3WAVE 2014-09-16 16:49 w3wavemd.f90 286 ! 4. Perform output to file if requested. 287 ! a Check if time is output time. 288 ! b Processing and MPP preparations. ( W3CPRT, W3OUTG ) 289 ! c Reset next output time. 290 ! -------------- loop over output types ------------------ 291 ! d Perform output. ( W3IOxx ) 292 ! e Update next output time. 293 ! -------------------- end loop -------------------------- 294 ! 5. Update log file. 295 ! 6. If time is not ending time, branch back to 2. 296 ! ----------------------------------------------------------- 297 ! 298 ! Section 3. 299 ! ---------------------------------------------------------- 300 ! 3.1 Interpolate winds and currents. ( W3UCUR, W3DCXY ) 301 ! ( W3UWND ) 302 ! ( W3UINI ) 303 ! 3.2 Update boundary conditions. ( W3IOBC, W3UBPT ) 304 ! 3.3 Update ice coverage (if new ice map). ( W3UICE ) 305 ! 3.4 Transform grid (if new water level). ( W3ULEV ) 306 ! 3.5 Update maps and dirivatives. ( W3MAPn, W3DDXY ) 307 ! ( W3NMIN, W3UTRN ) 308 ! Update grid advection vector. 309 ! 3.6 Perform propagation 310 ! a Preparations. 311 ! b Intra spectral part 1. ( W3KTPn ) 312 ! c Longitude-latitude ( W3GATH, W3XYPn W3SCAT ) 313 ! b Intra spectral part 2. ( W3KTPn ) 314 ! 3.7 Calculate and integrate source terms. ( W3SRCE ) 315 ! 3.8 Update global time step. 316 ! ---------------------------------------------------------- 317 ! 318 ! 9. Switches : 319 ! 320 ! See module documentation. 321 ! 322 ! 10. Source code : 323 ! 324 !/ ------------------------------------------------------------------- / 325 USE CONSTANTS 326 !/ 327 USE W3GDATMD 328 USE W3WDATMD 329 USE W3ADATMD 330 USE W3IDATMD 331 USE W3ODATMD 332 !/ 333 USE W3UPDTMD 334 USE W3SRCEMD 335 USE W3PRO3MD 336 USE W3PROFSMD 337 !/ 338 USE W3TRIAMD 339 USE W3IOGRMD 340 USE W3IOGOMD 341 USE W3IOPOMD 342 USE W3IOTRMD Page 7 Source Listing W3WAVE 2014-09-16 16:49 w3wavemd.f90 343 USE W3IORSMD 344 USE W3IOBCMD 345 USE W3IOSFMD 346 !/ 347 USE W3SERVMD 348 USE W3TIMEMD 349 350 ! 351 IMPLICIT NONE 352 ! 353 INCLUDE "mpif.h" 354 !/ 355 !/ ------------------------------------------------------------------- / 356 !/ Parameter list 357 !/ 896 INTEGER, INTENT(IN) :: IMOD, TEND(2) 897 LOGICAL, INTENT(IN), OPTIONAL :: STAMP, NO_OUT 898 !/ 899 !/ ------------------------------------------------------------------- / 900 !/ Local parameters : 901 !/ 902 INTEGER :: TCALC(2), IT, IT0, NT, ITEST, & 903 ITLOC, ITLOCH, NTLOC, ISEA, JSEA, & 904 IX, IY, ISPEC, J, TOUT(2), TLST(2), & 905 REFLED(6), IK, ITH, IS, NKCFL 906 INTEGER :: JJ, NDSOFLG 907 INTEGER :: IERR_MPI, NRQMAX 908 INTEGER, ALLOCATABLE :: STATCO(:,:), STATIO(:,:) 909 REAL :: DTTST, DTTST1, DTTST2, DTTST3, & 910 DTL0, DTI0, DTGA, DTG, DTRES, & 911 FAC, VGX, VGY, FACK, FACTH, & 912 FACX, SXM, SYM, XXX, REFLEC(4), & 913 DELX, DELY, DELA, DEPTH, D50, PSIC 914 ! 915 REAL, ALLOCATABLE :: FIELD(:) 916 REAL :: TMP1(4), TMP2(3), TMP3(2) 917 ! 918 ! Orphaned arrays from old data structure 919 ! 920 REAL, ALLOCATABLE :: TAUWX(:), TAUWY(:) 921 LOGICAL :: FLACT, FLZERO, FLFRST, FLMAP, TSTAMP,& 922 SKIP_O, FLAG_O, FLDDIR, READBC, & 923 FLAG0=.FALSE., FLOUTG, FLPFLD, & 924 FLPART, LOCAL, FLOUTG2 925 LOGICAL :: FLGMPI(0:6) 926 LOGICAL :: UGDTUPDATE ! true if time step should be updated for UG schemes 927 CHARACTER(LEN=8) :: STTIME 928 CHARACTER(LEN=11) :: IDACT 929 CHARACTER(LEN=13) :: OUTID 930 CHARACTER(LEN=23) :: IDTIME 931 932 933 CHARACTER(LEN=30) :: FOUTNAME 934 ! 935 !/ 936 !/ ------------------------------------------------------------------- / 937 ! 0. Initializations Page 8 Source Listing W3WAVE 2014-09-16 16:49 w3wavemd.f90 938 ! 0.a Set pointers to data structure 939 ! 940 IF ( IOUTP .NE. IMOD ) CALL W3SETO ( IMOD, NDSE, NDST ) 941 IF ( IGRID .NE. IMOD ) CALL W3SETG ( IMOD, NDSE, NDST ) 942 IF ( IWDATA .NE. IMOD ) CALL W3SETW ( IMOD, NDSE, NDST ) 943 IF ( IADATA .NE. IMOD ) CALL W3SETA ( IMOD, NDSE, NDST ) 944 IF ( IIDATA .NE. IMOD ) CALL W3SETI ( IMOD, NDSE, NDST ) 945 ! 946 ALLOCATE(TAUWX(NSEAL), TAUWY(NSEAL)) 947 ! 948 IF ( PRESENT(STAMP) ) THEN 949 TSTAMP = STAMP 950 ELSE 951 TSTAMP = .TRUE. 952 END IF 953 ! 954 IF ( PRESENT(NO_OUT) ) THEN 955 SKIP_O = NO_OUT 956 ELSE 957 SKIP_O = .FALSE. 958 END IF 959 ! 960 ! 0.b Subroutine tracing 961 ! 962 ! 0.c Local parameter initialization 963 ! 964 IPASS = IPASS + 1 965 IDACT = ' ' 966 OUTID = ' ' 967 FLACT = ITIME .EQ. 0 968 FLMAP = ITIME .EQ. 0 969 FLDDIR = ITIME .EQ. 0 .AND. ( FLCTH .OR. FLCK ) 970 ! 971 FLPFLD = .FALSE. 972 DO J=1,8 973 FLPFLD = FLPFLD .OR. FLOGRD(4,J) .OR. FLOGR2(4,J) 974 END DO 975 ! 976 IF ( IAPROC .EQ. NAPLOG ) BACKSPACE ( NDSO ) 977 ! 978 IF ( FLCOLD ) THEN 979 DTDYN = 0. 980 FCUT = SIG(NK) * TPIINV 981 END IF 982 ! 983 ALLOCATE ( FIELD(1-NY:NY*(NX+2)) ) 984 ! FIELD(:) = 0. 985 ! 986 LOCAL = IAPROC .LE. NAPROC 987 UGDTUPDATE = .FALSE. 988 IF (FLAGLL) THEN 989 FACX = 1./(DERA * RADIUS) 990 ELSE 991 FACX = 1. 992 END IF 993 ! 994 NDSOFLG = 99 Page 9 Source Listing W3WAVE 2014-09-16 16:49 w3wavemd.f90 995 ! 996 TAUWX = 0. 997 TAUWY = 0. 998 ! 999 ! 0.d Test output 1000 ! 1001 ! 1. Check the consistency of the input ----------------------------- / 1002 ! 1.a Ending time versus initial time 1003 ! 1004 DTTST = DSEC21 ( TIME , TEND ) 1005 FLZERO = DTTST .EQ. 0. 1006 IF ( DTTST .LT. 0. ) THEN 1007 IF ( IAPROC .EQ. NAPERR ) WRITE (NDSE,1000) 1008 CALL EXTCDE ( 1 ) 1009 END IF 1010 ! 1011 ! 1.b Water level time 1012 ! 1013 IF ( FLLEV ) THEN 1014 IF ( TLEV(1) .GE. 0. ) THEN 1015 DTL0 = DSEC21 ( TLEV , TLN ) 1016 ELSE 1017 DTL0 = 1. 1018 END IF 1019 IF ( DTL0 .LT. 0. ) THEN 1020 IF ( IAPROC .EQ. NAPERR ) WRITE (NDSE,1001) 1021 CALL EXTCDE ( 2 ) 1022 END IF 1023 ELSE 1024 DTL0 = 0. 1025 END IF 1026 ! 1027 ! 1.c Current interval 1028 ! 1029 IF ( FLCUR ) THEN 1030 DTTST1 = DSEC21 ( TC0 , TCN ) 1031 DTTST2 = DSEC21 ( TC0 , TIME ) 1032 DTTST3 = DSEC21 ( TEND , TCN ) 1033 IF ( DTTST1.LT.0. .OR. DTTST2.LT.0. .OR. DTTST3.LT.0. ) THEN 1034 IF ( IAPROC .EQ. NAPERR ) WRITE (NDSE,1002) 1035 CALL EXTCDE ( 3 ) 1036 END IF 1037 IF ( DTTST2.EQ.0..AND. ITIME.EQ.0 ) THEN 1038 IDACT(7:7) = 'F' 1039 TOFRST = TIME 1040 END IF 1041 END IF 1042 ! 1043 ! 1.d Wind interval 1044 ! 1045 IF ( FLWIND ) THEN 1046 DTTST1 = DSEC21 ( TW0 , TWN ) 1047 DTTST2 = DSEC21 ( TW0 , TIME ) 1048 DTTST3 = DSEC21 ( TEND , TWN ) 1049 IF ( DTTST1.LT.0. .OR. DTTST2.LT.0. .OR. DTTST3.LT.0. ) THEN 1050 IF ( IAPROC .EQ. NAPERR ) WRITE (NDSE,1003) 1051 CALL EXTCDE ( 4 ) Page 10 Source Listing W3WAVE 2014-09-16 16:49 w3wavemd.f90 1052 END IF 1053 IF ( DTTST2.EQ.0..AND. ITIME.EQ.0 ) THEN 1054 IDACT(3:3) = 'F' 1055 TOFRST = TIME 1056 END IF 1057 END IF 1058 ! 1059 ! 1.e Ice time 1060 ! 1061 IF ( FLICE ) THEN 1062 IF ( TICE(1) .GE. 0 ) THEN 1063 DTI0 = DSEC21 ( TICE , TIN ) 1064 ELSE 1065 DTI0 = 1. 1066 END IF 1067 IF ( DTI0 .LT. 0. ) THEN 1068 IF ( IAPROC .EQ. NAPERR ) WRITE (NDSE,1004) 1069 CALL EXTCDE ( 5 ) 1070 END IF 1071 ELSE 1072 DTI0 = 0. 1073 END IF 1074 ! 1075 ! 2. Determine next time from ending and output --------------------- / 1076 ! time and get corresponding time step. 1077 ! 1078 FLFRST = .TRUE. 1079 DO 1080 ! 1081 ! 2.a Update group velocity and wavenumber from ice parameters ------ / 1082 ! from W3SIC3MD module. ----------------------------------------- / 1083 ! 1084 IF ( TOFRST(1) .GT. 0 ) THEN 1085 DTTST = DSEC21 ( TEND , TOFRST ) 1086 ELSE 1087 DTTST = 0. 1088 ENDIF 1089 ! 1090 IF ( DTTST.GE.0. ) THEN 1091 TCALC = TEND 1092 ELSE 1093 TCALC = TOFRST 1094 END IF 1095 ! 1096 DTTST = DSEC21 ( TIME , TCALC ) 1097 NT = 1 + INT ( DTTST / DTMAX - 0.001 ) 1098 DTGA = DTTST / REAL(NT) 1099 IF ( DTTST .EQ. 0. ) THEN 1100 IT0 = 0 1101 IF ( .NOT.FLZERO ) ITIME = ITIME - 1 1102 NT = 0 1103 ELSE 1104 IT0 = 1 1105 END IF 1106 ! 1107 ! ==================================================================== / 1108 ! Page 11 Source Listing W3WAVE 2014-09-16 16:49 w3wavemd.f90 1109 ! 3. Loop over time steps 1110 ! 1111 DTRES = 0. 1112 ! 1113 DO IT=IT0, NT 1114 ! 1115 ITIME = ITIME + 1 1116 DTG = REAL(NINT(DTGA+DTRES+0.0001)) 1117 DTRES = DTRES + DTGA - DTG 1118 IF ( ABS(DTRES) .LT. 0.001 ) DTRES = 0. 1119 CALL TICK21 ( TIME , DTG ) 1120 ! 1121 IF ( TSTAMP .AND. SCREEN.NE.NDSO .AND. IAPROC.EQ.NAPOUT ) THEN 1122 CALL WWTIME ( STTIME ) 1123 CALL STME21 ( TIME , IDTIME ) 1124 WRITE (SCREEN,950) IDTIME, STTIME 1125 END IF 1126 ! 1127 VGX = 0. 1128 VGY = 0. 1129 IF(FLAGS(8)) THEN 1130 DTTST1 = DSEC21 ( TIME, TGN ) 1131 DTTST2 = DSEC21 ( TG0, TGN ) 1132 FAC = DTTST1 / MAX ( 1. , DTTST2 ) 1133 VGX = (FAC*GA0+(1.-FAC)*GAN) * & 1134 COS(FAC*GD0+(1.-FAC)*GDN) 1135 VGY = (FAC*GA0+(1.-FAC)*GAN) * & 1136 SIN(FAC*GD0+(1.-FAC)*GDN) 1137 END IF 1138 ! 1139 ! 3.1 Interpolate winds and currents. 1140 ! (Initialize wave fields with winds) 1141 ! 1142 IF ( FLCUR ) THEN 1143 ! 1144 1145 CALL W3UCUR ( FLFRST ) 1146 1147 IF (GTYPE .NE. UNGTYPE) THEN 1148 CALL W3DZXY(CX(1:UBOUND(CX,1)),'m/s',DCXDX, DCXDY) !CX GRADIENT 1149 CALL W3DZXY(CY(1:UBOUND(CY,1)),'m/s',DCYDX, DCYDY) !CY GRADIENT 1150 ELSE 1151 CALL UG_GRADIENTS(CX, DCXDX, DCXDY) 1152 CALL UG_GRADIENTS(CY, DCYDX, DCYDY) 1153 UGDTUPDATE=.TRUE. 1154 END IF 1155 ! 1156 ELSE IF ( FLFRST ) THEN 1157 UGDTUPDATE=.TRUE. 1158 CX = 0. 1159 CY = 0. 1160 END IF ! FLCUR 1161 ! 1162 IF ( FLWIND ) THEN 1163 IF ( FLFRST ) ASF = 1. 1164 CALL W3UWND ( FLFRST, VGX, VGY ) 1165 ELSE IF ( FLFRST ) THEN Page 12 Source Listing W3WAVE 2014-09-16 16:49 w3wavemd.f90 1166 U10 = 0.01 1167 U10D = 0. 1168 UST = 0.05 1169 USTDIR = 0.05 1170 END IF 1171 ! 1172 IF ( FLIWND .AND. LOCAL ) CALL W3UINI ( VA ) 1173 ! 1174 ! 3.2 Update boundary conditions if boundary flag is true (FLBPI) 1175 ! 1176 IF ( FLBPI .AND. LOCAL ) THEN 1177 ! 1178 DO 1179 IF ( TBPIN(1) .EQ. -1 ) THEN 1180 READBC = .TRUE. 1181 IDACT(1:1) = 'F' 1182 ELSE 1183 READBC = DSEC21(TIME,TBPIN).LT.0. 1184 IF (READBC.AND.IDACT(1:1).EQ.' ') IDACT(1:1) = 'X' 1185 END IF 1186 FLACT = READBC .OR. FLACT 1187 IF ( READBC ) THEN 1188 CALL W3IOBC ( 'READ', NDS(9), TBPI0, TBPIN, & 1189 ITEST, IMOD ) 1190 IF ( ITEST .NE. 1 ) CALL W3UBPT 1191 ELSE 1192 ITEST = 0 1193 END IF 1194 IF ( ITEST .LT. 0 ) IDACT(1:1) = 'L' 1195 IF ( ITEST .GT. 0 ) IDACT(1:1) = ' ' 1196 IF ( .NOT. (READBC.AND.FLBPI) ) EXIT 1197 END DO 1198 ! 1199 END IF 1200 ! 1201 ! 3.3 Update ice coverage (if new ice map). 1202 ! Need to be run on output nodes too, to update MAPSTx 1203 ! 1204 IF ( FLICE .AND. DTI0.NE.0. ) THEN 1205 ! 1206 IF ( TICE(1).GE.0 ) THEN 1207 IF ( DTI0 .LT. 0. ) THEN 1208 IDACT(9:9) = 'B' 1209 ELSE 1210 DTTST = DSEC21 ( TIME, TIN ) 1211 IF ( DTTST .LE. 0.5*DTI0 ) IDACT(9:9) = 'U' 1212 END IF 1213 ELSE 1214 IDACT(9:9) = 'I' 1215 END IF 1216 ! 1217 IF ( IDACT(9:9).NE.' ' ) THEN 1218 CALL W3UICE ( VA, VA ) 1219 DTI0 = 0. 1220 FLACT = .TRUE. 1221 FLMAP = .TRUE. 1222 END IF Page 13 Source Listing W3WAVE 2014-09-16 16:49 w3wavemd.f90 1223 ! 1224 END IF 1225 ! 1226 ! 3.4 Transform grid (if new water level). 1227 ! 1228 IF ( FLLEV .AND. DTL0.NE.0. ) THEN 1229 ! 1230 IF ( TLEV(1).GE.0 ) THEN 1231 IF ( DTL0 .LT. 0. ) THEN 1232 IDACT(5:5) = 'B' 1233 ELSE 1234 DTTST = DSEC21 ( TIME, TLN ) 1235 IF ( DTTST .LE. 0.5*DTL0 ) IDACT(5:5) = 'U' 1236 END IF 1237 ELSE 1238 IDACT(5:5) = 'I' 1239 END IF 1240 ! 1241 IF ( IDACT(5:5).NE.' ' ) THEN 1242 1243 CALL W3ULEV ( VA, VA ) 1244 1245 UGDTUPDATE=.TRUE. 1246 DTL0 = 0. 1247 FLACT = .TRUE. 1248 FLMAP = .TRUE. 1249 FLDDIR = FLDDIR .OR. FLCTH .OR. FLCK 1250 END IF 1251 ! 1252 END IF 1253 ! 1254 ! 3.5 Update maps and derivatives. 1255 ! 1256 IF ( FLMAP ) THEN 1257 CALL W3MAP3 1258 CALL W3UTRN ( TRNX, TRNY ) 1259 CALL W3MAPT 1260 CALL W3NMIN ( MAPSTA, FLAG0 ) 1261 IF ( FLAG0 .AND. IAPROC.EQ.NAPERR ) WRITE (NDSE,1030) IMOD 1262 FLMAP = .FALSE. 1263 END IF 1264 ! 1265 IF ( FLDDIR ) THEN 1266 IF (GTYPE .NE. UNGTYPE) THEN 1267 CALL W3DZXY(DW(1:UBOUND(DW,1)),'m',DDDX,DDDY) !DEPTH (DW) GRADIENT 1268 ELSE 1269 CALL UG_GRADIENTS(DW, DDDX, DDDY) 1270 END IF 1271 FLDDIR = .FALSE. 1272 END IF 1273 ! 1274 ! Calculate PHASE SPEED GRADIENT. 1275 DCDX = 0. 1276 DCDY = 0. 1277 ! 1278 FLIWND = .FALSE. 1279 FLFRST = .FALSE. Page 14 Source Listing W3WAVE 2014-09-16 16:49 w3wavemd.f90 1280 ! 1281 IF ( FLZERO ) THEN 1282 GOTO 400 1283 END IF 1284 IF ( FLDRY .OR. IT.EQ.0 .OR. IAPROC.GT.NAPROC ) THEN 1285 GOTO 380 1286 END IF 1287 ! 1288 ! Estimation of the local maximum CFL for XY propagation 1289 ! 1290 IF ( FLOGRD(9,3).AND. UGDTUPDATE ) THEN 1291 NKCFL=NK 1292 DO JSEA=1, NSEAL 1293 ISEA = IAPROC + (JSEA-1)*NAPROC 1294 IF (GTYPE .EQ. UNGTYPE) THEN 1295 CALL W3CFLUG ( ISEA, NKCFL, FACX, FACX, DTG, & 1296 MAPFS, CFLXYMAX(JSEA), VGX, VGY ) 1297 ELSE 1298 CALL W3CFLXY ( ISEA, DTG, MAPSTA, MAPFS, & 1299 CFLXYMAX(JSEA), VGX, VGY ) 1300 END IF 1301 END DO 1302 END IF 1303 ! 1304 ! 3.6 Perform Propagation = = = = = = = = = = = = = = = = = = = = = = = 1305 ! 3.6.1 Preparations 1306 ! 1307 1308 NTLOC = 1 + INT( DTG/DTCFLI - 0.001 ) 1309 ! 1310 FACTH = DTG / (DTH*REAL(NTLOC)) 1311 FACK = DTG / REAL(NTLOC) 1312 ITLOCH = ( NTLOC + 1 - MOD(ITIME,2) ) / 2 1313 ! 1314 ! 3.6.2 Intra-spectral part 1 1315 ! 1316 IF ( FLCTH .OR. FLCK ) THEN 1317 DO ITLOC=1, ITLOCH 1318 !$OMP PARALLEL DO PRIVATE (JSEA,ISEA,IX,IY,DEPTH) SCHEDULE (DYNAMIC,1) 1319 DO JSEA=1, NSEAL 1320 ISEA = IAPROC + (JSEA-1)*NAPROC 1321 IX = MAPSF(ISEA,1) 1322 IY = MAPSF(ISEA,2) 1323 1324 IF ( MAPSTA(IY,IX) .EQ. 1 ) THEN 1325 DEPTH = MAX ( DMIN , DW(ISEA) ) 1326 CALL W3KTP3 ( ISEA, FACTH, FACK, CTHG0S(ISEA), & 1327 CG(:,ISEA), WN(:,ISEA), DEPTH, & 1328 DDDX(IY,IX), DDDY(IY,IX), CX(ISEA), & 1329 CY(ISEA), DCXDX(IY,IX), DCXDY(IY,IX), & 1330 DCYDX(IY,IX), DCYDY(IY,IX), & 1331 DCDX(:,IY,IX), DCDY(:,IY,IX), VA(:,JSEA), & 1332 CFLTHMAX(JSEA), CFLKMAX(JSEA) ) 1333 END IF 1334 END DO 1335 END DO 1336 END IF Page 15 Source Listing W3WAVE 2014-09-16 16:49 w3wavemd.f90 1337 ! 1338 ! 3.6.3 Longitude-latitude 1339 ! (time step correction in routine) 1340 ! 1341 IF ( FLCX .OR. FLCY ) THEN 1342 ! 1343 IF ( NRQSG1 .GT. 0 ) THEN 1344 CALL MPI_STARTALL (NRQSG1, IRQSG1(1,1), IERR_MPI) 1345 CALL MPI_STARTALL (NRQSG1, IRQSG1(1,2), IERR_MPI) 1346 END IF 1347 ! 1348 1349 DO ISPEC=1, NSPEC 1350 IF ( IAPPRO(ISPEC) .EQ. IAPROC ) THEN 1351 CALL W3GATH ( ISPEC, FIELD ) 1352 IF (GTYPE .NE. UNGTYPE) THEN 1353 CALL W3XYP3 ( ISPEC, DTG, MAPSTA, MAPFS, FIELD, VGX, VGY ) 1354 ELSE IF (GTYPE .EQ. UNGTYPE) THEN 1355 CALL W3XYPUG ( ISPEC, FACX, FACX, DTG, & 1356 FIELD, VGX, VGY, UGDTUPDATE ) 1357 END IF 1358 CALL W3SCAT ( ISPEC, MAPSTA, FIELD ) 1359 END IF 1360 END DO 1361 ! 1362 IF ( NRQSG1 .GT. 0 ) THEN 1363 ALLOCATE ( STATCO(MPI_STATUS_SIZE,NRQSG1) ) 1364 CALL MPI_WAITALL (NRQSG1, IRQSG1(1,1), STATCO, & 1365 IERR_MPI) 1366 CALL MPI_WAITALL (NRQSG1, IRQSG1(1,2), STATCO, & 1367 IERR_MPI) 1368 DEALLOCATE ( STATCO ) 1369 END IF 1370 ! 1371 ! End of test FLCX.OR.FLCY 1372 ! 1373 END IF 1374 ! 1375 ! 3.6.4 Intra-spectral part 2 1376 ! 1377 IF ( FLCTH .OR. FLCK ) THEN 1378 DO ITLOC=ITLOCH+1, NTLOC 1379 !$OMP PARALLEL DO PRIVATE (JSEA,ISEA,IX,IY,DEPTH) SCHEDULE (DYNAMIC,1) 1380 DO JSEA=1, NSEAL 1381 ISEA = IAPROC + (JSEA-1)*NAPROC 1382 IX = MAPSF(ISEA,1) 1383 IY = MAPSF(ISEA,2) 1384 1385 DEPTH = MAX ( DMIN , DW(ISEA) ) 1386 IF ( MAPSTA(IY,IX) .EQ. 1 ) THEN 1387 CALL W3KTP3 ( ISEA, FACTH, FACK, CTHG0S(ISEA), & 1388 CG(:,ISEA), WN(:,ISEA), DEPTH, & 1389 DDDX(IY,IX), DDDY(IY,IX), CX(ISEA), & 1390 CY(ISEA), DCXDX(IY,IX), DCXDY(IY,IX), & 1391 DCYDX(IY,IX), DCYDY(IY,IX), & 1392 DCDX(:,IY,IX), DCDY(:,IY,IX), VA(:,JSEA), & 1393 CFLTHMAX(JSEA), CFLKMAX(JSEA) ) Page 16 Source Listing W3WAVE 2014-09-16 16:49 w3wavemd.f90 1394 END IF 1395 END DO 1396 END DO 1397 END IF 1398 ! 1399 UGDTUPDATE = .FALSE. 1400 ! 1401 ! 3.6 End propapgation = = = = = = = = = = = = = = = = = = = = = = = = 1402 ! 1403 ! 3.7 Calculate and integrate source terms. 1404 ! 1405 IF ( FLSOU ) THEN 1406 ! 1407 1408 D50=0.0002 1409 REFLEC(:)=0. 1410 REFLED(:)=0. 1411 PSIC=0. 1412 ! 1413 !$OMP PARALLEL DO PRIVATE (JSEA,ISEA,IX,IY,DELA,DELX,DELY,TMP1,TMP2,TMP3) SCHEDULE (DYNAMIC,1) 1414 DO JSEA=1, NSEAL 1415 ISEA = IAPROC + (JSEA-1)*NAPROC 1416 IX = MAPSF(ISEA,1) 1417 IY = MAPSF(ISEA,2) 1418 DELA=1. 1419 DELX=1. 1420 DELY=1. 1421 ! 1422 IF ( MAPSTA(IY,IX).EQ.1 .AND. FLAGST(ISEA) ) THEN 1423 TMP1 = WHITECAP(JSEA,1:4) 1424 TMP2 = BEDFORMS(JSEA,1:3) 1425 TMP3 = TAUBBL(JSEA,1:2) 1426 1427 CALL W3SRCE ( IX, IY, IMOD, VA(:,JSEA), & 1428 ALPHA(1:NK,JSEA), WN(1:NK,ISEA), & 1429 CG(1:NK,ISEA), DW(ISEA), U10(ISEA), & 1430 U10D(ISEA), AS(ISEA), UST(ISEA), & 1431 USTDIR(ISEA), ICE(ISEA), CX(ISEA), CY(ISEA),& 1432 REFLEC, REFLED, DELX, DELY, DELA, & 1433 TRNX(IY,IX), TRNY(IY,IX), BERG(ISEA), & 1434 FPIS(ISEA), DTDYN(JSEA), & 1435 FCUT(JSEA), DTG, TAUWX(JSEA), TAUWY(JSEA), & 1436 TAUOX(JSEA), TAUOY(JSEA), TAUWIX(JSEA), & 1437 TAUWIY(JSEA), TAUWNX(JSEA), & 1438 TAUWNY(JSEA), PHIAW(JSEA), CHARN(JSEA), & 1439 PHIOC(JSEA), TMP1, D50, PSIC, TMP2, & 1440 PHIBBL(JSEA), TMP3 ) 1441 WHITECAP(JSEA,1:4) = TMP1 1442 BEDFORMS(JSEA,1:3) = TMP2 1443 TAUBBL(JSEA,1:2) = TMP3 1444 ELSE 1445 UST (ISEA) = UNDEF 1446 USTDIR(ISEA) = UNDEF 1447 DTDYN (JSEA) = UNDEF 1448 FCUT (JSEA) = UNDEF 1449 END IF 1450 Page 17 Source Listing W3WAVE 2014-09-16 16:49 w3wavemd.f90 1451 END DO 1452 ! 1453 ! This barrier is from older code versions. It has been removed in 3.11 1454 ! to optimize IO2/3 settings. May be needed on some systems still 1455 ! 1456 !!/MPI IF (FLAG0) CALL MPI_BARRIER (MPI_COMM_WCMP,IERR_MPI) 1457 !!/MPI ELSE 1458 !!/MPI CALL MPI_BARRIER (MPI_COMM_WCMP,IERR_MPI) 1459 ! 1460 END IF 1461 ! 1462 ! End of interations for DTMAX < 1s 1463 ! 1464 ! PALM COUPLER Calls 1465 ! 1466 1467 ! 1468 ! this may be the mistake 1469 !modif ac 060410 1470 !fin modif ac 1471 ! 1472 ! 3.8 Update global time step. 1473 ! (Branch point FLDRY, IT=0) 1474 ! 1475 380 CONTINUE 1476 ! 1477 IF (IT.NE.NT) THEN 1478 DTTST = DSEC21 ( TIME , TCALC ) 1479 DTG = DTTST / REAL(NT-IT) 1480 END IF 1481 ! 1482 IF ( FLACT .AND. IT.NE.NT .AND. IAPROC.EQ.NAPLOG ) THEN 1483 CALL STME21 ( TIME , IDTIME ) 1484 IF ( IDLAST .NE. TIME(1) ) THEN 1485 WRITE (NDSO,900) ITIME, IPASS, IDTIME(01:19), & 1486 IDACT, OUTID 1487 IDLAST = TIME(1) 1488 ELSE 1489 WRITE (NDSO,901) ITIME, IPASS, IDTIME(12:19), & 1490 IDACT, OUTID 1491 END IF 1492 FLACT = .FALSE. 1493 IDACT = ' ' 1494 END IF 1495 ! 1496 END DO 1497 ! 1498 ! End of loop over time steps 1499 ! ==================================================================== / 1500 ! 1501 400 CONTINUE 1502 ! 1503 ! 4. Perform output to file if requested ---------------------------- / 1504 ! 4.a Check if time is output time 1505 ! Delay if data assimilation time. 1506 ! 1507 IF ( TOFRST(1) .EQ. -1 ) THEN Page 18 Source Listing W3WAVE 2014-09-16 16:49 w3wavemd.f90 1508 DTTST = 1. 1509 ELSE 1510 DTTST = DSEC21 ( TIME, TOFRST ) 1511 END IF 1512 ! 1513 IF ( TDN(1) .EQ. -1 ) THEN 1514 DTTST1 = 1. 1515 ELSE 1516 DTTST1 = DSEC21 ( TIME, TDN ) 1517 END IF 1518 ! 1519 DTTST2 = DSEC21 ( TIME, TEND ) 1520 FLAG_O = .NOT.SKIP_O .OR. ( SKIP_O .AND. DTTST2.NE.0. ) 1521 ! 1522 IF ( DTTST.LE.0. .AND. DTTST1.NE.0. .AND. FLAG_O ) THEN 1523 ! 1524 ! 4.b Processing and MPP preparations 1525 ! 1526 IF ( FLOUT(1) ) THEN 1527 FLOUTG = DSEC21(TIME,TONEXT(:,1)).EQ.0. 1528 ELSE 1529 FLOUTG = .FALSE. 1530 END IF 1531 ! 1532 IF ( FLOUT(7) ) THEN 1533 FLOUTG2 = DSEC21(TIME,TONEXT(:,7)).EQ.0. 1534 ELSE 1535 FLOUTG2 = .FALSE. 1536 END IF 1537 ! 1538 FLPART = .FALSE. 1539 IF ( FLOUT(1) .AND. FLPFLD ) & 1540 FLPART = FLPART .OR. DSEC21(TIME,TONEXT(:,1)).EQ.0. 1541 IF ( FLOUT(6) ) & 1542 FLPART = FLPART .OR. DSEC21(TIME,TONEXT(:,6)).EQ.0. 1543 ! 1544 IF ( LOCAL .AND. FLPART ) CALL W3CPRT ( IMOD ) 1545 IF ( LOCAL .AND. (FLOUTG .OR. FLOUTG2) ) & 1546 CALL W3OUTG ( VA, FLPFLD, FLOUTG, FLOUTG2 ) 1547 ! 1548 FLGMPI = .FALSE. 1549 NRQMAX = 0 1550 ! 1551 IF ( (FLOUT(1) .OR. FLOUT(7)) .AND. NRQGO.NE.0 ) THEN 1552 IF ( DSEC21(TIME,TONEXT(:,1)).EQ.0. ) THEN 1553 CALL MPI_STARTALL ( NRQGO, IRQGO , IERR_MPI ) 1554 FLGMPI(0) = .TRUE. 1555 NRQMAX = MAX ( NRQMAX , NRQGO ) 1556 END IF 1557 END IF 1558 ! 1559 IF ( (FLOUT(1) .OR. FLOUT(7)) .AND. NRQGO2.NE.0 ) THEN 1560 IF ( DSEC21(TIME,TONEXT(:,1)).EQ.0. ) THEN 1561 CALL MPI_STARTALL ( NRQGO2, IRQGO2, IERR_MPI ) 1562 FLGMPI(1) = .TRUE. 1563 NRQMAX = MAX ( NRQMAX , NRQGO2 ) 1564 END IF Page 19 Source Listing W3WAVE 2014-09-16 16:49 w3wavemd.f90 1565 END IF 1566 ! 1567 IF ( FLOUT(2) .AND. NRQPO.NE.0 ) THEN 1568 IF ( DSEC21(TIME,TONEXT(:,2)).EQ.0. ) THEN 1569 CALL MPI_STARTALL ( NRQPO, IRQPO1, IERR_MPI ) 1570 FLGMPI(2) = .TRUE. 1571 NRQMAX = MAX ( NRQMAX , NRQPO ) 1572 END IF 1573 END IF 1574 ! 1575 IF ( FLOUT(4) .AND. NRQRS.NE.0 ) THEN 1576 IF ( DSEC21(TIME,TONEXT(:,4)).EQ.0. ) THEN 1577 CALL MPI_STARTALL ( NRQRS, IRQRS , IERR_MPI ) 1578 FLGMPI(4) = .TRUE. 1579 NRQMAX = MAX ( NRQMAX , NRQRS ) 1580 END IF 1581 END IF 1582 ! 1583 IF ( FLOUT(5) .AND. NRQBP.NE.0 ) THEN 1584 IF ( DSEC21(TIME,TONEXT(:,5)).EQ.0. ) THEN 1585 CALL MPI_STARTALL ( NRQBP , IRQBP1, IERR_MPI ) 1586 FLGMPI(5) = .TRUE. 1587 NRQMAX = MAX ( NRQMAX , NRQBP ) 1588 END IF 1589 END IF 1590 ! 1591 IF ( FLOUT(5) .AND. NRQBP2.NE.0 .AND. & 1592 IAPROC.EQ.NAPBPT) THEN 1593 IF ( DSEC21(TIME,TONEXT(:,5)).EQ.0. ) THEN 1594 CALL MPI_STARTALL (NRQBP2,IRQBP2,IERR_MPI) 1595 NRQMAX = MAX ( NRQMAX , NRQBP2 ) 1596 END IF 1597 END IF 1598 ! 1599 IF ( NRQMAX .NE. 0 ) ALLOCATE & 1600 ( STATIO(MPI_STATUS_SIZE,NRQMAX) ) 1601 ! 1602 ! 4.c Reset next output time 1603 ! 1604 TOFRST(1) = -1 1605 TOFRST(2) = 0 1606 ! 1607 DO J=1, NOTYPE 1608 IF ( FLOUT(J) ) THEN 1609 ! 1610 ! 4.d Perform output 1611 ! 1612 TOUT(:) = TONEXT(:,J) 1613 DTTST = DSEC21 ( TIME, TOUT ) 1614 ! 1615 IF ( DTTST .EQ. 0. ) THEN 1616 IF ( J .EQ. 1 ) THEN 1617 IF ( IAPROC .EQ. NAPFLD ) THEN 1618 IF ( FLGMPI(1) ) CALL MPI_WAITALL & 1619 ( NRQGO2, IRQGO2, STATIO, IERR_MPI ) 1620 FLGMPI(1) = .FALSE. 1621 CALL W3IOGO & Page 20 Source Listing W3WAVE 2014-09-16 16:49 w3wavemd.f90 1622 ( 'WRITE', NDS(7), ITEST, IMOD ) 1623 ! 1624 ! Generate output flag file for fields and SBS coupling. 1625 ! 1626 JJ = LEN_TRIM ( FILEXT ) 1627 CALL STME21 ( TIME, IDTIME ) 1628 FOUTNAME = 'Field_done.' // IDTIME(1:4) & 1629 // IDTIME(6:7) // IDTIME(9:10) & 1630 // IDTIME(12:13) // '.' // FILEXT(1:JJ) 1631 OPEN( UNIT=NDSOFLG, FILE=FOUTNAME) 1632 CLOSE( NDSOFLG ) 1633 END IF 1634 !! ELSE IF ( J .EQ. 7 ) THEN 1635 !! IF ( IAPROC .EQ. NAPFLD ) THEN 1636 !!!/MPI IF ( FLGMPI(1) ) CALL MPI_WAITALL & 1637 !!!/MPI ( NRQGO2, IRQGO2, STATIO, IERR_MPI ) 1638 !!!/MPI FLGMPI(1) = .FALSE. 1639 !!! 1640 !!! WARNING: COUPLER CALLS SHOULD BE HERE ... 1641 !!! 1642 !! END IF 1643 ELSE IF ( J .EQ. 2 ) THEN 1644 ! 1645 ! Point output 1646 ! 1647 IF ( IAPROC .EQ. NAPPNT ) THEN 1648 ! 1649 ! Gets the necessary spectral data 1650 ! 1651 CALL W3IOPE ( VA ) 1652 CALL W3IOPO ( 'WRITE', NDS(8), ITEST, IMOD ) 1653 END IF 1654 ! 1655 ELSE IF ( J .EQ. 3 ) THEN 1656 ! 1657 ! Track output 1658 ! 1659 CALL W3IOTR ( NDS(11), NDS(12), VA, IMOD ) 1660 ELSE IF ( J .EQ. 4 ) THEN 1661 CALL W3IORS ('HOT', NDS(6), XXX, ITEST, IMOD ) 1662 ELSE IF ( J .EQ. 5 ) THEN 1663 IF ( IAPROC .EQ. NAPBPT ) THEN 1664 IF (NRQBP2.NE.0) CALL MPI_WAITALL & 1665 ( NRQBP2, IRQBP2,STATIO, IERR_MPI ) 1666 CALL W3IOBC ( 'WRITE', NDS(10), & 1667 TIME, TIME, ITEST, IMOD ) 1668 END IF 1669 ELSE IF ( J .EQ. 6 ) THEN 1670 CALL W3IOSF ( NDS(13), IMOD ) 1671 END IF 1672 ! 1673 CALL TICK21 ( TOUT, DTOUT(J) ) 1674 TONEXT(:,J) = TOUT 1675 TLST = TOLAST(:,J) 1676 DTTST = DSEC21 ( TOUT , TLST ) 1677 FLOUT(J) = DTTST.GE.0. 1678 IF ( FLOUT(J) ) THEN Page 21 Source Listing W3WAVE 2014-09-16 16:49 w3wavemd.f90 1679 OUTID(2*J-1:2*J-1) = 'X' 1680 ELSE 1681 OUTID(2*J-1:2*J-1) = 'L' 1682 END IF 1683 END IF 1684 ! 1685 ! 4.e Update next output time 1686 ! 1687 IF ( FLOUT(J) ) THEN 1688 IF ( TOFRST(1).EQ.-1 ) THEN 1689 TOFRST = TOUT 1690 ELSE 1691 DTTST = DSEC21 ( TOUT , TOFRST ) 1692 IF ( DTTST.GT.0.) THEN 1693 TOFRST = TOUT 1694 END IF 1695 END IF 1696 END IF 1697 ! 1698 END IF 1699 ! 1700 END DO 1701 ! 1702 IF ( FLGMPI(0) ) CALL MPI_WAITALL & 1703 ( NRQGO, IRQGO , STATIO, IERR_MPI ) 1704 IF ( FLGMPI(2) ) CALL MPI_WAITALL & 1705 ( NRQPO, IRQPO1, STATIO, IERR_MPI ) 1706 IF ( FLGMPI(4) ) CALL MPI_WAITALL & 1707 ( NRQRS, IRQRS , STATIO, IERR_MPI ) 1708 IF ( FLGMPI(5) ) CALL MPI_WAITALL & 1709 ( NRQBP, IRQBP1, STATIO, IERR_MPI ) 1710 IF ( NRQMAX .NE. 0 ) DEALLOCATE ( STATIO ) 1711 ! 1712 ! This barrier is from older code versions. It has been removed in 3.11 1713 ! to optimize IO2/3 settings. May be needed on some systems still 1714 ! 1715 !!/MPI IF (FLDRY) CALL MPI_BARRIER (MPI_COMM_WAVE,IERR_MPI) 1716 ! 1717 END IF 1718 ! 1719 ! 5. Update log file ------------------------------------------------ / 1720 ! 1721 IF ( IAPROC.EQ.NAPLOG ) THEN 1722 ! 1723 CALL STME21 ( TIME , IDTIME ) 1724 IF ( FLCUR ) THEN 1725 DTTST = DSEC21 ( TIME , TCN ) 1726 IF ( DTTST .EQ. 0. ) IDACT(7:7) = 'X' 1727 END IF 1728 IF ( FLWIND ) THEN 1729 DTTST = DSEC21 ( TIME , TWN ) 1730 IF ( DTTST .EQ. 0. ) IDACT(3:3) = 'X' 1731 END IF 1732 IF ( TDN(1) .GT. 0 ) THEN 1733 DTTST = DSEC21 ( TIME , TDN ) 1734 IF ( DTTST .EQ. 0. ) IDACT(11:11) = 'X' 1735 END IF Page 22 Source Listing W3WAVE 2014-09-16 16:49 w3wavemd.f90 1736 ! 1737 IF ( IDLAST.NE.TIME(1) ) THEN 1738 WRITE (NDSO,900) ITIME, IPASS, IDTIME(1:19), & 1739 IDACT, OUTID 1740 IDLAST = TIME(1) 1741 ELSE 1742 WRITE (NDSO,901) ITIME, IPASS, IDTIME(12:19), & 1743 IDACT, OUTID 1744 END IF 1745 ! 1746 END IF 1747 ! 1748 IDACT = ' ' 1749 OUTID = ' ' 1750 FLACT = .FALSE. 1751 ! 1752 ! 6. If time is not ending time, branch back to 2 ------------------- / 1753 ! 1754 DTTST = DSEC21 ( TIME, TEND ) 1755 IF ( DTTST .EQ. 0. ) EXIT 1756 1757 END DO 1758 ! 1759 IF ( IAPROC .EQ. NAPLOG ) WRITE (NDSO,902) 1760 ! 1761 DEALLOCATE ( FIELD ) 1762 ! 1763 DEALLOCATE(TAUWX, TAUWY) 1764 ! 1765 RETURN 1766 ! 1767 ! Formats 1768 ! 1769 900 FORMAT (8X,I6,' |',I4,' | ', A19 ,' | ',A,' | ',A,' |') 1770 901 FORMAT (8X,I6,' |',I4,' | ',11X,A8,' | ',A,' | ',A,' |') 1771 902 FORMAT (8X,'--------+------+---------------------+' & 1772 ,'-------------+---------------+') 1773 ! 1774 950 FORMAT (' WAVEWATCH III calculating for ',A,' at ',A) 1775 ! 1776 1000 FORMAT (/' *** WAVEWATCH III ERROR IN W3WAVE :'/ & 1777 ' ENDING TIME BEFORE STARTING TIME '/) 1778 1001 FORMAT (/' *** WAVEWATCH III ERROR IN W3WAVE :'/ & 1779 ' NEW WATER LEVEL BEFORE OLD WATER LEVEL '/) 1780 1002 FORMAT (/' *** WAVEWATCH III ERROR IN W3WAVE :'/ & 1781 ' ILLEGAL CURRENT INTERVAL '/) 1782 1003 FORMAT (/' *** WAVEWATCH III ERROR IN W3WAVE :'/ & 1783 ' ILLEGAL WIND INTERVAL '/) 1784 1004 FORMAT (/' *** WAVEWATCH III ERROR IN W3WAVE :'/ & 1785 ' NEW ICE FIELD BEFORE OLD ICE FIELD '/) 1786 1030 FORMAT (/' *** WAVEWATCH III WARING IN W3WAVE :'/ & 1787 ' AT LEAST ONE PROCESSOR HAS 0 ACTIVE POINTS', & 1788 ' IN GRID',I3) 1789 ! 1790 !/ 1791 !/ End of W3WAVE ----------------------------------------------------- / 1792 !/ Page 23 Source Listing W3WAVE 2014-09-16 16:49 w3wavemd.f90 1793 END SUBROUTINE W3WAVE ENTRY POINTS Name w3wavemd_mp_w3wave_ SYMBOL CROSS REFERENCE Name Object Declared Type Bytes Dimen Elements Attributes References 1000 Label 1238 469 1001 Label 1240 482 1002 Label 1242 496 1003 Label 1244 512 1004 Label 1246 530 1030 Label 1248 723 380 Label 937 747 400 Label 963 744 900 Label 1231 947,1200 901 Label 1232 951,1204 902 Label 1233 1221 950 Label 1236 586 ABS Func 580 scalar 580 ALPHA Local 890 R(4) 4 2 1 PTR 890 AS Local 892 R(4) 4 1 1 PTR 892 ASF Local 625 R(4) 4 1 1 PTR 625 BEDFORMS Local 886 R(4) 4 2 1 PTR 886,904 BERG Local 895 R(4) 4 1 1 PTR 895 CFLKMAX Local 794 R(4) 4 1 1 PTR 794,855 CFLTHMAX Local 794 R(4) 4 1 1 PTR 794,855 CFLXYMAX Local 758 R(4) 4 1 1 PTR 758,761 CG Local 789 R(4) 4 2 1 PTR 789,850,891 CHARN Local 900 R(4) 4 1 1 PTR 900 CONSTANTS Module 325 325 COS Func 596 scalar 596 CTHG0S Local 788 R(4) 4 1 1 PTR 788,849 CX Local 610 R(4) 4 1 1 PTR 610,613,620,790,851,893 CY Local 611 R(4) 4 1 1 PTR 611,614,621,791,852,893 D50 Local 375 R(4) 4 scalar 870,901 DCDX Local 737 R(4) 4 3 1 PTR 737,793,854 DCDY Local 738 R(4) 4 3 1 PTR 738,793,854 DCXDX Local 610 R(4) 4 2 1 PTR 610,613,791,852 DCXDY Local 610 R(4) 4 2 1 PTR 610,613,791,852 DCYDX Local 611 R(4) 4 2 1 PTR 611,614,792,853 DCYDY Local 611 R(4) 4 2 1 PTR 611,614,792,853 DDDX Local 729 R(4) 4 2 1 PTR 729,731,790,851 DDDY Local 729 R(4) 4 2 1 PTR 729,731,790,851 DELA Local 375 R(4) 4 scalar 875,880,894 DELX Local 375 R(4) 4 scalar 875,881,894 DELY Local 375 R(4) 4 scalar 875,882,894 DEPTH Local 375 R(4) 4 scalar 780,787,789,841,847,850 DERA Param 451 R(4) 4 scalar 451 DMIN Local 787 R(4) 4 scalar PTR 787,847 Page 24 Source Listing W3WAVE 2014-09-16 16:49 Symbol Table w3wavemd.f90 Name Object Declared Type Bytes Dimen Elements Attributes References DSEC21 Func 466 R(4) 4 scalar 466,477,492,493,494,508,509,510,52 5,547,558,592,593,645,672,696,940, 972,978,981,989,995,1002,1004,1014 ,1022,1030,1038,1046,1055,1075,113 8,1153,1187,1191,1195,1216 DTCFLI Local 770 R(4) 4 scalar PTR 770 DTDYN Local 441 R(4) 4 1 1 PTR 441,896,909 DTG Local 372 R(4) 4 scalar 578,579,581,757,760,770,772,773,81 5,817,897,941 DTGA Local 372 R(4) 4 scalar 560,578,579 DTH Local 772 R(4) 4 scalar PTR 772 DTI0 Local 372 R(4) 4 scalar 525,527,529,534,666,669,673,681 DTL0 Local 372 R(4) 4 scalar 477,479,481,486,690,693,697,708 DTMAX Local 559 R(4) 4 scalar PTR 559 DTOUT Local 1135 R(4) 4 1 1 PTR 1135 DTRES Local 372 R(4) 4 scalar 573,578,579,580 DTTST Local 371 R(4) 4 scalar 466,467,468,547,549,552,558,559,56 0,561,672,673,696,697,940,941,970, 972,984,1075,1077,1138,1139,1153,1 154,1187,1188,1191,1192,1195,1196, 1216,1217 DTTST1 Local 371 R(4) 4 scalar 492,495,508,511,592,594,976,978,98 4 DTTST2 Local 371 R(4) 4 scalar 493,495,499,509,511,515,593,594,98 1,982 DTTST3 Local 371 R(4) 4 scalar 494,495,510,511 DW Local 729 R(4) 4 1 1 PTR 729,731,787,847,891 EXTCDE Subr 470 470,483,497,513,531 FAC Local 373 R(4) 4 scalar 594,595,596,597,598 FACK Local 373 R(4) 4 scalar 773,788,849 FACTH Local 373 R(4) 4 scalar 772,788,849 FACX Local 374 R(4) 4 scalar 451,453,757,817 FCUT Local 442 R(4) 4 1 1 PTR 442,897,910 FIELD Local 377 R(4) 4 1 1 ALC 445,813,815,818,820,1223 FILEXT Local 1088 CHAR 10 scalar PTR 1088,1092 FLACT Local 383 L(4) 4 scalar 429,648,682,709,944,954,1212 FLAG0 Local 385 L(4) 4 scalar 385,722,723 FLAGLL Local 450 L(4) 4 scalar 450 FLAGS Local 591 L(4) 4 1 1 PTR 591 FLAGST Local 884 L(4) 4 1 1 PTR 884 FLAG_O Local 384 L(4) 4 scalar 982,984 FLBPI Local 638 L(4) 4 scalar PTR 638,658 FLCK Local 431 L(4) 4 scalar PTR 431,711,778,839 FLCOLD Local 440 L(4) 4 scalar PTR 440 FLCTH Local 431 L(4) 4 scalar PTR 431,711,778,839 FLCUR Local 491 L(4) 4 scalar PTR 491,604,1186 FLCX Local 803 L(4) 4 scalar PTR 803 FLCY Local 803 L(4) 4 scalar PTR 803 FLDDIR Local 384 L(4) 4 scalar 431,711,727,733 FLDRY Local 746 L(4) 4 scalar PTR 746 FLFRST Local 383 L(4) 4 scalar 540,607,618,625,626,627,741 FLGMPI Local 387 L(4) 4 1 7 1010,1016,1024,1032,1040,1048,1080 ,1082,1164,1166,1168,1170 FLICE Local 523 L(4) 4 scalar PTR 523,666 FLIWND Local 634 L(4) 4 scalar PTR 634,740 Page 25 Source Listing W3WAVE 2014-09-16 16:49 Symbol Table w3wavemd.f90 Name Object Declared Type Bytes Dimen Elements Attributes References FLLEV Local 475 L(4) 4 scalar PTR 475,690 FLMAP Local 383 L(4) 4 scalar 430,683,710,718,724 FLOGR2 Local 435 L(4) 4 2 1 PTR 435 FLOGRD Local 435 L(4) 4 2 1 PTR 435,752 FLOUT Local 988 L(4) 4 1 1 PTR 988,994,1001,1003,1013,1021,1029,1 037,1045,1053,1070,1139,1140,1149 FLOUTG Local 385 L(4) 4 scalar 989,991,1007,1008 FLOUTG2 Local 386 L(4) 4 scalar 995,997,1007,1008 FLPART Local 386 L(4) 4 scalar 1000,1002,1004,1006 FLPFLD Local 385 L(4) 4 scalar 433,435,1001,1008 FLSOU Local 867 L(4) 4 scalar PTR 867 FLWIND Local 507 L(4) 4 scalar PTR 507,624,1190 FLZERO Local 383 L(4) 4 scalar 467,563,743 FOUTNAME Local 395 CHAR 30 scalar 1090,1093 FPIS Local 896 R(4) 4 1 1 PTR 896 GA0 Local 595 R(4) 4 scalar PTR 595,597 GAN Local 595 R(4) 4 scalar PTR 595,597 GD0 Local 596 R(4) 4 scalar PTR 596,598 GDN Local 596 R(4) 4 scalar PTR 596,598 GTYPE Local 609 I(4) 4 scalar PTR 609,728,756,814,816 IADATA Local 405 I(4) 4 scalar 405 IAPPRO Local 812 I(4) 4 1 1 PTR 812 IAPROC Local 438 I(4) 4 scalar PTR 438,448,469,482,496,512,530,583,72 3,746,755,782,812,843,877,944,1054 ,1079,1109,1125,1183,1221 ICE Local 893 R(4) 4 1 1 PTR 893 IDACT Local 390 CHAR 11 scalar 427,500,516,643,646,656,657,670,67 3,676,679,694,697,700,703,948,952, 955,1188,1192,1196,1201,1205,1210 IDLAST Local 946 I(4) 4 scalar PTR 946,949,1199,1202 IDTIME Local 392 CHAR 23 scalar 585,586,945,947,951,1089,1090,1091 ,1092,1185,1200,1204 IERR_MPI Local 369 I(4) 4 scalar 806,807,827,829,1015,1023,1031,103 9,1047,1056,1081,1127,1165,1167,11 69,1171 IGRID Local 403 I(4) 4 scalar 403 IIDATA Local 406 I(4) 4 scalar 406 IK Local 367 I(4) 4 scalar IMOD Dummy 163 I(4) 4 scalar ARG,IN 402,403,404,405,406,651,723,889,10 06,1084,1114,1121,1123,1129,1132 INT Func 559 scalar 559,770 IOUTP Local 402 I(4) 4 scalar 402 IPASS Local 426 I(4) 4 scalar PTR 426,947,951,1200,1204 IRQBP1 Local 1047 I(4) 4 1 1 PTR 1047,1171 IRQBP2 Local 1056 I(4) 4 1 1 PTR 1056,1127 IRQGO Local 1015 I(4) 4 1 1 PTR 1015,1165 IRQGO2 Local 1023 I(4) 4 1 1 PTR 1023,1081 IRQPO1 Local 1031 I(4) 4 1 1 PTR 1031,1167 IRQRS Local 1039 I(4) 4 1 1 PTR 1039,1169 IRQSG1 Local 806 I(4) 4 2 1 PTR 806,807,826,828 IS Local 367 I(4) 4 scalar ISEA Local 365 I(4) 4 scalar 755,757,760,780,782,783,784,787,78 8,789,790,791,841,843,844,845,847, 849,850,851,852,875,877,878,879,88 4,890,891,892,893,895,896,907,908 Page 26 Source Listing W3WAVE 2014-09-16 16:49 Symbol Table w3wavemd.f90 Name Object Declared Type Bytes Dimen Elements Attributes References ISPEC Local 366 I(4) 4 scalar 811,812,813,815,817,820 IT Local 364 I(4) 4 scalar 575,746,939,941,944 IT0 Local 364 I(4) 4 scalar 562,566,575 ITEST Local 364 I(4) 4 scalar 651,652,654,656,657,1084,1114,1123 ,1129 ITH Local 367 I(4) 4 scalar ITIME Local 429 I(4) 4 scalar PTR 429,430,431,499,515,563,577,774,94 7,951,1200,1204 ITLOC Local 365 I(4) 4 scalar 779,840 ITLOCH Local 365 I(4) 4 scalar 774,779,840 IWDATA Local 404 I(4) 4 scalar 404 IX Local 366 I(4) 4 scalar 780,783,786,790,791,792,793,841,84 4,848,851,852,853,854,875,878,884, 889,895 IY Local 366 I(4) 4 scalar 780,784,786,790,791,792,793,841,84 5,848,851,852,853,854,875,879,884, 889,895 J Local 366 I(4) 4 scalar 434,435,1069,1070,1074,1078,1105,1 117,1122,1124,1131,1135,1136,1137, 1139,1140,1141,1143,1149 JJ Local 368 I(4) 4 scalar 1088,1092 JSEA Local 365 I(4) 4 scalar 754,755,758,761,780,781,782,793,79 4,841,842,843,854,855,875,876,877, 885,886,887,889,890,896,897,898,89 9,900,901,902,903,904,905,909,910 LEN_TRIM Func 1088 scalar 1088 LOCAL Local 386 L(4) 4 scalar 448,634,638,1006,1007 MAPFS Local 758 I(4) 4 2 1 PTR 758,760,815 MAPSF Local 783 I(4) 4 2 1 PTR 783,784,844,845,878,879 MAPSTA Local 722 I(4) 4 2 1 PTR 722,760,786,815,820,848,884 MAX Func 594 scalar 594,787,847,1017,1025,1033,1041,10 49,1057 MOD Func 774 scalar 774 MPIPRIV1 Common 532 28 MPIPRIV2 Common 534 24 MPIPRIVC Common 537 2 MPI_2COMPLEX Param 332 I(4) 4 scalar MPI_2DOUBLE_COMPLEX Param 338 I(4) 4 scalar MPI_2DOUBLE_PRECISION Param 334 I(4) 4 scalar MPI_2INT Param 415 I(4) 4 scalar MPI_2INTEGER Param 330 I(4) 4 scalar MPI_2REAL Param 336 I(4) 4 scalar MPI_ADDRESS_KIND Param 372 I(4) 4 scalar MPI_ANY_SOURCE Param 300 I(4) 4 scalar MPI_ANY_TAG Param 302 I(4) 4 scalar MPI_APPNUM Param 269 I(4) 4 scalar MPI_ARGVS_NULL Scalar 83 CHAR 1 2 1 COM MPI_ARGV_NULL Scalar 84 CHAR 1 1 1 COM MPI_BAND Param 217 I(4) 4 scalar MPI_BOR Param 221 I(4) 4 scalar MPI_BOTTOM Scalar 517 I(4) 4 scalar COM MPI_BSEND_OVERHEAD Param 296 I(4) 4 scalar MPI_BXOR Param 225 I(4) 4 scalar MPI_BYTE Param 342 I(4) 4 scalar MPI_CART Param 308 I(4) 4 scalar Page 27 Source Listing W3WAVE 2014-09-16 16:49 Symbol Table w3wavemd.f90 Name Object Declared Type Bytes Dimen Elements Attributes References MPI_CHAR Param 375 I(4) 4 scalar MPI_CHARACTER Param 340 I(4) 4 scalar MPI_COMBINER_CONTIGUOUS Param 423 I(4) 4 scalar MPI_COMBINER_DARRAY Param 445 I(4) 4 scalar MPI_COMBINER_DUP Param 421 I(4) 4 scalar MPI_COMBINER_F90_COMPLEX Param 449 I(4) 4 scalar MPI_COMBINER_F90_INTEGER Param 451 I(4) 4 scalar MPI_COMBINER_F90_REAL Param 447 I(4) 4 scalar MPI_COMBINER_HINDEXED Param 435 I(4) 4 scalar MPI_COMBINER_HINDEXED_INTE GER Param 433 I(4) 4 scalar MPI_COMBINER_HVECTOR Param 429 I(4) 4 scalar MPI_COMBINER_HVECTOR_INTEG ER Param 427 I(4) 4 scalar MPI_COMBINER_INDEXED Param 431 I(4) 4 scalar MPI_COMBINER_INDEXED_BLOCK Param 437 I(4) 4 scalar MPI_COMBINER_NAMED Param 419 I(4) 4 scalar MPI_COMBINER_RESIZED Param 453 I(4) 4 scalar MPI_COMBINER_STRUCT Param 441 I(4) 4 scalar MPI_COMBINER_STRUCT_INTEGE R Param 439 I(4) 4 scalar MPI_COMBINER_SUBARRAY Param 443 I(4) 4 scalar MPI_COMBINER_VECTOR Param 425 I(4) 4 scalar MPI_COMM_DUP_FN Subr 521 scalar MPI_COMM_NULL Param 239 I(4) 4 scalar MPI_COMM_NULL_COPY_FN Subr 522 scalar MPI_COMM_NULL_DELETE_FN Subr 521 scalar MPI_COMM_SELF Param 235 I(4) 4 scalar MPI_COMM_WORLD Param 233 I(4) 4 scalar MPI_COMPLEX Param 318 I(4) 4 scalar MPI_COMPLEX16 Param 368 I(4) 4 scalar MPI_COMPLEX32 Param 370 I(4) 4 scalar MPI_COMPLEX8 Param 366 I(4) 4 scalar MPI_CONGRUENT Param 201 I(4) 4 scalar MPI_CONVERSION_FN_NULL Subr 527 scalar MPI_DATATYPE_NULL Param 249 I(4) 4 scalar 359 MPI_DISPLACEMENT_CURRENT Param 515 I(8) 8 scalar MPI_DISTRIBUTE_BLOCK Param 507 I(4) 4 scalar MPI_DISTRIBUTE_CYCLIC Param 509 I(4) 4 scalar MPI_DISTRIBUTE_DFLT_DARG Param 513 I(4) 4 scalar MPI_DISTRIBUTE_NONE Param 511 I(4) 4 scalar MPI_DOUBLE Param 397 I(4) 4 scalar MPI_DOUBLE_COMPLEX Param 320 I(4) 4 scalar MPI_DOUBLE_INT Param 409 I(4) 4 scalar MPI_DOUBLE_PRECISION Param 326 I(4) 4 scalar MPI_DUP_FN Subr 518 scalar MPI_ERRCODES_IGNORE Scalar 82 I(4) 4 1 1 COM MPI_ERRHANDLER_NULL Param 253 I(4) 4 scalar MPI_ERROR Param 76 I(4) 4 scalar MPI_ERRORS_ARE_FATAL Param 195 I(4) 4 scalar MPI_ERRORS_RETURN Param 197 I(4) 4 scalar MPI_ERR_ACCESS Param 189 I(4) 4 scalar MPI_ERR_AMODE Param 173 I(4) 4 scalar MPI_ERR_ARG Param 109 I(4) 4 scalar MPI_ERR_ASSERT Param 131 I(4) 4 scalar Page 28 Source Listing W3WAVE 2014-09-16 16:49 Symbol Table w3wavemd.f90 Name Object Declared Type Bytes Dimen Elements Attributes References MPI_ERR_BAD_FILE Param 163 I(4) 4 scalar MPI_ERR_BASE Param 97 I(4) 4 scalar MPI_ERR_BUFFER Param 115 I(4) 4 scalar MPI_ERR_COMM Param 137 I(4) 4 scalar MPI_ERR_CONVERSION Param 193 I(4) 4 scalar MPI_ERR_COUNT Param 93 I(4) 4 scalar MPI_ERR_DIMS Param 179 I(4) 4 scalar MPI_ERR_DISP Param 125 I(4) 4 scalar MPI_ERR_DUP_DATAREP Param 117 I(4) 4 scalar MPI_ERR_FILE Param 91 I(4) 4 scalar MPI_ERR_FILE_EXISTS Param 133 I(4) 4 scalar MPI_ERR_FILE_IN_USE Param 165 I(4) 4 scalar MPI_ERR_GROUP Param 145 I(4) 4 scalar MPI_ERR_INFO Param 159 I(4) 4 scalar MPI_ERR_INFO_KEY Param 103 I(4) 4 scalar MPI_ERR_INFO_NOKEY Param 129 I(4) 4 scalar MPI_ERR_INFO_VALUE Param 153 I(4) 4 scalar MPI_ERR_INTERN Param 185 I(4) 4 scalar MPI_ERR_IN_STATUS Param 101 I(4) 4 scalar MPI_ERR_IO Param 187 I(4) 4 scalar MPI_ERR_KEYVAL Param 139 I(4) 4 scalar MPI_ERR_LASTCODE Param 121 I(4) 4 scalar MPI_ERR_LOCKTYPE Param 105 I(4) 4 scalar MPI_ERR_NAME Param 141 I(4) 4 scalar MPI_ERR_NOT_SAME Param 155 I(4) 4 scalar MPI_ERR_NO_MEM Param 161 I(4) 4 scalar MPI_ERR_NO_SPACE Param 191 I(4) 4 scalar MPI_ERR_NO_SUCH_FILE Param 181 I(4) 4 scalar MPI_ERR_OP Param 107 I(4) 4 scalar MPI_ERR_OTHER Param 87 I(4) 4 scalar MPI_ERR_PENDING Param 135 I(4) 4 scalar MPI_ERR_PORT Param 127 I(4) 4 scalar MPI_ERR_QUOTA Param 171 I(4) 4 scalar MPI_ERR_RANK Param 177 I(4) 4 scalar MPI_ERR_READ_ONLY Param 111 I(4) 4 scalar MPI_ERR_REQUEST Param 143 I(4) 4 scalar MPI_ERR_RMA_CONFLICT Param 99 I(4) 4 scalar MPI_ERR_RMA_SYNC Param 157 I(4) 4 scalar MPI_ERR_ROOT Param 175 I(4) 4 scalar MPI_ERR_SERVICE Param 183 I(4) 4 scalar MPI_ERR_SIZE Param 113 I(4) 4 scalar MPI_ERR_SPAWN Param 95 I(4) 4 scalar MPI_ERR_TAG Param 151 I(4) 4 scalar MPI_ERR_TOPOLOGY Param 147 I(4) 4 scalar MPI_ERR_TRUNCATE Param 123 I(4) 4 scalar MPI_ERR_TYPE Param 149 I(4) 4 scalar MPI_ERR_UNKNOWN Param 167 I(4) 4 scalar MPI_ERR_UNSUPPORTED_DATARE P Param 119 I(4) 4 scalar MPI_ERR_UNSUPPORTED_OPERAT ION Param 169 I(4) 4 scalar MPI_ERR_WIN Param 89 I(4) 4 scalar MPI_FILE_NULL Param 243 I(4) 4 scalar MPI_FLOAT Param 395 I(4) 4 scalar MPI_FLOAT_INT Param 407 I(4) 4 scalar Page 29 Source Listing W3WAVE 2014-09-16 16:49 Symbol Table w3wavemd.f90 Name Object Declared Type Bytes Dimen Elements Attributes References MPI_GRAPH Param 306 I(4) 4 scalar MPI_GROUP_EMPTY Param 237 I(4) 4 scalar MPI_GROUP_NULL Param 245 I(4) 4 scalar MPI_HOST Param 259 I(4) 4 scalar MPI_IDENT Param 199 I(4) 4 scalar MPI_INFO_NULL Param 255 I(4) 4 scalar MPI_INT Param 387 I(4) 4 scalar MPI_INTEGER Param 328 I(4) 4 scalar MPI_INTEGER1 Param 350 I(4) 4 scalar MPI_INTEGER16 Param 358 I(4) 4 scalar MPI_INTEGER2 Param 352 I(4) 4 scalar MPI_INTEGER4 Param 354 I(4) 4 scalar MPI_INTEGER8 Param 356 I(4) 4 scalar MPI_IN_PLACE Scalar 517 I(4) 4 scalar COM MPI_IO Param 261 I(4) 4 scalar MPI_KEYVAL_INVALID Param 294 I(4) 4 scalar MPI_LAND Param 215 I(4) 4 scalar MPI_LASTUSEDCODE Param 267 I(4) 4 scalar MPI_LB Param 346 I(4) 4 scalar MPI_LOCK_EXCLUSIVE Param 314 I(4) 4 scalar MPI_LOCK_SHARED Param 316 I(4) 4 scalar MPI_LOGICAL Param 322 I(4) 4 scalar MPI_LONG Param 391 I(4) 4 scalar MPI_LONG_DOUBLE Param 399 I(4) 4 scalar MPI_LONG_DOUBLE_INT Param 417 I(4) 4 scalar MPI_LONG_INT Param 411 I(4) 4 scalar MPI_LONG_LONG Param 405 I(4) 4 scalar MPI_LONG_LONG_INT Param 401 I(4) 4 scalar MPI_LOR Param 219 I(4) 4 scalar MPI_LXOR Param 223 I(4) 4 scalar MPI_MAX Param 207 I(4) 4 scalar MPI_MAXLOC Param 229 I(4) 4 scalar MPI_MAX_DATAREP_STRING Param 289 I(4) 4 scalar MPI_MAX_ERROR_STRING Param 277 I(4) 4 scalar MPI_MAX_INFO_KEY Param 283 I(4) 4 scalar MPI_MAX_INFO_VAL Param 285 I(4) 4 scalar MPI_MAX_OBJECT_NAME Param 281 I(4) 4 scalar MPI_MAX_PORT_NAME Param 279 I(4) 4 scalar MPI_MAX_PROCESSOR_NAME Param 287 I(4) 4 scalar MPI_MIN Param 209 I(4) 4 scalar MPI_MINLOC Param 227 I(4) 4 scalar MPI_MODE_APPEND Param 493 I(4) 4 scalar MPI_MODE_CREATE Param 489 I(4) 4 scalar MPI_MODE_DELETE_ON_CLOSE Param 485 I(4) 4 scalar MPI_MODE_EXCL Param 491 I(4) 4 scalar MPI_MODE_NOCHECK Param 461 I(4) 4 scalar MPI_MODE_NOPRECEDE Param 467 I(4) 4 scalar MPI_MODE_NOPUT Param 465 I(4) 4 scalar MPI_MODE_NOSTORE Param 463 I(4) 4 scalar MPI_MODE_NOSUCCEED Param 469 I(4) 4 scalar MPI_MODE_RDONLY Param 479 I(4) 4 scalar MPI_MODE_RDWR Param 481 I(4) 4 scalar MPI_MODE_SEQUENTIAL Param 495 I(4) 4 scalar MPI_MODE_UNIQUE_OPEN Param 487 I(4) 4 scalar MPI_MODE_WRONLY Param 483 I(4) 4 scalar Page 30 Source Listing W3WAVE 2014-09-16 16:49 Symbol Table w3wavemd.f90 Name Object Declared Type Bytes Dimen Elements Attributes References MPI_NULL_COPY_FN Subr 518 scalar MPI_NULL_DELETE_FN Subr 518 scalar MPI_OFFSET_KIND Param 372 I(4) 4 scalar MPI_OP_NULL Param 247 I(4) 4 scalar MPI_ORDER_C Param 503 I(4) 4 scalar MPI_ORDER_FORTRAN Param 505 I(4) 4 scalar MPI_PACKED Param 348 I(4) 4 scalar MPI_PROC_NULL Param 298 I(4) 4 scalar MPI_PROD Param 213 I(4) 4 scalar MPI_REAL Param 324 I(4) 4 scalar MPI_REAL16 Param 364 I(4) 4 scalar MPI_REAL4 Param 360 I(4) 4 scalar MPI_REAL8 Param 362 I(4) 4 scalar MPI_REPLACE Param 231 I(4) 4 scalar MPI_REQUEST_NULL Param 251 I(4) 4 scalar MPI_ROOT Param 304 I(4) 4 scalar MPI_SEEK_CUR Param 499 I(4) 4 scalar MPI_SEEK_END Param 501 I(4) 4 scalar MPI_SEEK_SET Param 497 I(4) 4 scalar MPI_SHORT Param 383 I(4) 4 scalar MPI_SHORT_INT Param 413 I(4) 4 scalar MPI_SIGNED_CHAR Param 377 I(4) 4 scalar MPI_SIMILAR Param 203 I(4) 4 scalar MPI_SOURCE Param 76 I(4) 4 scalar MPI_STARTALL Subr 806 806,807,1015,1023,1031,1039,1047,1 056 MPI_STATUSES_IGNORE Scalar 81 I(4) 4 2 5 COM MPI_STATUS_IGNORE Scalar 80 I(4) 4 1 5 COM MPI_STATUS_SIZE Param 78 I(4) 4 scalar 80,81,825,1062 MPI_SUBVERSION Param 312 I(4) 4 scalar MPI_SUCCESS Param 85 I(4) 4 scalar MPI_SUM Param 211 I(4) 4 scalar MPI_TAG Param 76 I(4) 4 scalar MPI_TAG_UB Param 257 I(4) 4 scalar MPI_THREAD_FUNNELED Param 473 I(4) 4 scalar MPI_THREAD_MULTIPLE Param 477 I(4) 4 scalar MPI_THREAD_SERIALIZED Param 475 I(4) 4 scalar MPI_THREAD_SINGLE Param 471 I(4) 4 scalar MPI_TYPECLASS_COMPLEX Param 459 I(4) 4 scalar MPI_TYPECLASS_INTEGER Param 457 I(4) 4 scalar MPI_TYPECLASS_REAL Param 455 I(4) 4 scalar MPI_TYPE_DUP_FN Subr 525 scalar MPI_TYPE_NULL_COPY_FN Subr 526 scalar MPI_TYPE_NULL_DELETE_FN Subr 525 scalar MPI_UB Param 344 I(4) 4 scalar MPI_UNDEFINED Param 291 I(4) 4 scalar MPI_UNDEFINED_RANK Param 291 I(4) 4 scalar MPI_UNEQUAL Param 205 I(4) 4 scalar MPI_UNIVERSE_SIZE Param 265 I(4) 4 scalar MPI_UNSIGNED Param 389 I(4) 4 scalar MPI_UNSIGNED_CHAR Param 379 I(4) 4 scalar MPI_UNSIGNED_LONG Param 393 I(4) 4 scalar MPI_UNSIGNED_LONG_LONG Param 403 I(4) 4 scalar MPI_UNSIGNED_SHORT Param 385 I(4) 4 scalar MPI_VERSION Param 310 I(4) 4 scalar Page 31 Source Listing W3WAVE 2014-09-16 16:49 Symbol Table w3wavemd.f90 Name Object Declared Type Bytes Dimen Elements Attributes References MPI_WAITALL Subr 826 826,828,1080,1126,1164,1166,1168,1 170 MPI_WCHAR Param 381 I(4) 4 scalar MPI_WIN_BASE Param 271 I(4) 4 scalar MPI_WIN_DISP_UNIT Param 275 I(4) 4 scalar MPI_WIN_DUP_FN Subr 523 scalar MPI_WIN_NULL Param 241 I(4) 4 scalar MPI_WIN_NULL_COPY_FN Subr 524 scalar MPI_WIN_NULL_DELETE_FN Subr 523 scalar MPI_WIN_SIZE Param 273 I(4) 4 scalar MPI_WTICK Func 519 R(8) 8 scalar MPI_WTIME Func 519 R(8) 8 scalar MPI_WTIME_IS_GLOBAL Param 263 I(4) 4 scalar NAPBPT Local 1054 I(4) 4 scalar PTR 1054,1125 NAPERR Local 469 I(4) 4 scalar PTR 469,482,496,512,530,723 NAPFLD Local 1079 I(4) 4 scalar PTR 1079 NAPLOG Local 438 I(4) 4 scalar PTR 438,944,1183,1221 NAPOUT Local 583 I(4) 4 scalar PTR 583 NAPPNT Local 1109 I(4) 4 scalar PTR 1109 NAPROC Local 448 I(4) 4 scalar PTR 448,746,755,782,843,877 NDS Local 650 I(4) 4 1 1 PTR 650,1084,1114,1121,1123,1128,1132 NDSE Local 402 I(4) 4 scalar PTR 402,403,404,405,406,469,482,496,51 2,530,723 NDSO Local 438 I(4) 4 scalar PTR 438,583,947,951,1200,1204,1221 NDSOFLG Local 368 I(4) 4 scalar 456,1093,1094 NDST Local 402 I(4) 4 scalar PTR 402,403,404,405,406 NINT Func 578 scalar 578 NK Local 442 I(4) 4 scalar PTR 442,753,890,891 NKCFL Local 367 I(4) 4 scalar 753,757 NOTYPE Local 1069 I(4) 4 scalar 1069 NO_OUT Dummy 163 L(4) 4 scalar ARG,IN 416,417 NRQBP Local 1045 I(4) 4 scalar PTR 1045,1047,1049,1171 NRQBP2 Local 1053 I(4) 4 scalar PTR 1053,1056,1057,1126,1127 NRQGO Local 1013 I(4) 4 scalar PTR 1013,1015,1017,1165 NRQGO2 Local 1021 I(4) 4 scalar PTR 1021,1023,1025,1081 NRQMAX Local 369 I(4) 4 scalar 1011,1017,1025,1033,1041,1049,1057 ,1061,1062,1172 NRQPO Local 1029 I(4) 4 scalar PTR 1029,1031,1033,1167 NRQRS Local 1037 I(4) 4 scalar PTR 1037,1039,1041,1169 NRQSG1 Local 805 I(4) 4 scalar PTR 805,806,807,824,825,826,828 NSEAL Local 408 I(4) 4 scalar PTR 408,754,781,842,876 NSPEC Local 811 I(4) 4 scalar PTR 811 NT Local 364 I(4) 4 scalar 559,560,564,575,939,941,944 NTLOC Local 365 I(4) 4 scalar 770,772,773,774,840 NX Local 445 I(4) 4 scalar PTR 445 NY Local 445 I(4) 4 scalar PTR 445 OUTID Local 391 CHAR 13 scalar 428,948,952,1141,1143,1201,1205,12 11 PHIAW Local 900 R(4) 4 1 1 PTR 900 PHIBBL Local 902 R(4) 4 1 1 PTR 902 PHIOC Local 901 R(4) 4 1 1 PTR 901 PMPI_WTICK Func 520 R(8) 8 scalar PMPI_WTIME Func 520 R(8) 8 scalar PRESENT Func 410 scalar 410,416 PSIC Local 375 R(4) 4 scalar 873,901 Page 32 Source Listing W3WAVE 2014-09-16 16:49 Symbol Table w3wavemd.f90 Name Object Declared Type Bytes Dimen Elements Attributes References RADIUS Param 451 R(4) 4 scalar 451 READBC Local 384 L(4) 4 scalar 642,645,646,648,649,658 REAL Func 560 scalar 560,578,772,773,941 REFLEC Local 374 R(4) 4 1 4 871,894 REFLED Local 367 I(4) 4 1 6 872,894 SCREEN Local 583 I(4) 4 scalar PTR 583,586 SIG Local 442 R(4) 4 1 1 PTR 442 SIN Func 598 scalar 598 SKIP_O Local 384 L(4) 4 scalar 417,419,982 STAMP Dummy 163 L(4) 4 scalar ARG,IN 410,411 STATCO Local 370 I(4) 4 2 1 ALC 825,826,828,830 STATIO Local 370 I(4) 4 2 1 ALC 1062,1081,1127,1165,1167,1169,1171 ,1172 STME21 Subr 585 585,945,1089,1185 STTIME Local 389 CHAR 8 scalar 584,586 SXM Local 374 R(4) 4 scalar SYM Local 374 R(4) 4 scalar TAUBBL Local 887 R(4) 4 2 1 PTR 887,905 TAUOX Local 898 R(4) 4 1 1 PTR 898 TAUOY Local 898 R(4) 4 1 1 PTR 898 TAUWIX Local 898 R(4) 4 1 1 PTR 898 TAUWIY Local 899 R(4) 4 1 1 PTR 899 TAUWNX Local 899 R(4) 4 1 1 PTR 899 TAUWNY Local 900 R(4) 4 1 1 PTR 900 TAUWX Local 382 R(4) 4 1 1 ALC 408,458,897,1225 TAUWY Local 382 R(4) 4 1 1 ALC 408,459,897,1225 TBPI0 Local 650 I(4) 4 1 1 PTR 650 TBPIN Local 641 I(4) 4 1 1 PTR 641,645,650 TC0 Local 492 I(4) 4 1 1 PTR 492,493 TCALC Local 364 I(4) 4 1 2 553,555,558,940 TCN Local 492 I(4) 4 1 1 PTR 492,494,1187 TDN Local 975 I(4) 4 1 1 PTR 975,978,1194,1195 TEND Dummy 163 I(4) 4 1 2 ARG,IN 466,494,510,547,553,981,1216 TG0 Local 593 I(4) 4 1 1 PTR 593 TGN Local 592 I(4) 4 1 1 PTR 592,593 TICE Local 524 I(4) 4 1 1 PTR 524,525,668 TICK21 Subr 581 581,1135 TIME Local 466 I(4) 4 1 1 PTR 466,493,501,509,517,558,581,585,59 2,645,672,696,940,945,946,949,972, 978,981,989,995,1002,1004,1014,102 2,1030,1038,1046,1055,1075,1089,11 29,1185,1187,1191,1195,1199,1202,1 216 TIN Local 525 I(4) 4 1 1 PTR 525,672 TLEV Local 476 I(4) 4 1 1 PTR 476,477,692 TLN Local 477 I(4) 4 1 1 PTR 477,696 TLST Local 366 I(4) 4 1 2 1137,1138 TMP1 Local 378 R(4) 4 1 4 875,885,901,903 TMP2 Local 378 R(4) 4 1 3 875,886,901,904 TMP3 Local 378 R(4) 4 1 2 875,887,902,905 TOFRST Local 501 I(4) 4 1 1 PTR 501,517,546,547,555,969,972,1066,1 067,1150,1151,1153,1155 TOLAST Local 1137 I(4) 4 2 1 PTR 1137 TONEXT Local 989 I(4) 4 2 1 PTR 989,995,1002,1004,1014,1022,1030,1 038,1046,1055,1074,1136 Page 33 Source Listing W3WAVE 2014-09-16 16:49 Symbol Table w3wavemd.f90 Name Object Declared Type Bytes Dimen Elements Attributes References TOUT Local 366 I(4) 4 1 2 1074,1075,1135,1136,1138,1151,1153 ,1155 TPIINV Param 442 R(4) 4 scalar 442 TRNX Local 720 R(4) 4 2 1 PTR 720,895 TRNY Local 720 R(4) 4 2 1 PTR 720,895 TSTAMP Local 383 L(4) 4 scalar 411,413,583 TW0 Local 508 I(4) 4 1 1 PTR 508,509 TWN Local 508 I(4) 4 1 1 PTR 508,510,1191 U10 Local 628 R(4) 4 1 1 PTR 628,891 U10D Local 629 R(4) 4 1 1 PTR 629,892 UBOUND Func 610 scalar 610,611,729 UGDTUPDATE Local 388 L(4) 4 scalar 449,615,619,707,752,818,861 UG_GRADIENTS Subr 613 613,614,731 UNDEF Local 907 R(4) 4 scalar 907,908,909,910 UNGTYPE Param 609 I(4) 4 scalar 609,728,756,814,816 UST Local 630 R(4) 4 1 1 PTR 630,892,907 USTDIR Local 631 R(4) 4 1 1 PTR 631,893,908 VA Local 634 R(4) 4 2 1 PTR 634,680,705,793,854,889,1008,1113, 1121 VGX Local 373 R(4) 4 scalar 589,595,626,758,761,815,818 VGY Local 373 R(4) 4 scalar 590,597,626,758,761,815,818 W3ADATMD Module 329 329 W3CFLUG Subr 757 757 W3CFLXY Subr 760 760 W3CPRT Subr 1006 1006 W3DZXY Subr 610 610,611,729 W3GDATMD Module 327 327 W3IDATMD Module 330 330 W3IOBC Subr 650 650,1128 W3IOBCMD Module 344 344 W3IOGO Subr 1083 1083 W3IOGOMD Module 340 340 W3IOGRMD Module 339 339 W3IOPE Subr 1113 1113 W3IOPO Subr 1114 1114 W3IOPOMD Module 341 341 W3IORS Subr 1123 1123 W3IORSMD Module 343 343 W3IOSF Subr 1132 1132 W3IOSFMD Module 345 345 W3IOTR Subr 1121 1121 W3IOTRMD Module 342 342 W3KTP3 Subr 788 788,849 W3MAP3 Subr 719 719 W3MAPT Subr 721 721 W3ODATMD Module 331 331 W3OUTG Subr 1008 1008 W3PRO3MD Module 335 335 W3PROFSMD Module 336 336 W3SERVMD Module 347 347 W3SETA Subr 405 405 W3SETG Subr 403 403 W3SETI Subr 406 406 W3SETO Subr 402 402 W3SETW Subr 404 404 Page 34 Source Listing W3WAVE 2014-09-16 16:49 Symbol Table w3wavemd.f90 Name Object Declared Type Bytes Dimen Elements Attributes References W3SRCE Subr 889 889 W3SRCEMD Module 334 334 W3TIMEMD Module 348 348 W3TRIAMD Module 338 338 W3UBPT Subr 652 652 W3UCUR Subr 607 607 W3UICE Subr 680 680 W3UINI Subr 634 634 W3ULEV Subr 705 705 W3UPDTMD Module 333 333 W3UTRN Subr 720 720 W3UWND Subr 626 626 W3WAVE Subr 163 W3WDATMD Module 328 328 W3XYP3 Subr 815 815 W3XYPUG Subr 817 817 WHITECAP Local 885 R(4) 4 2 1 PTR 885,903 WN Local 789 R(4) 4 2 1 PTR 789,850,890 WWTIME Subr 584 584 XXX Local 374 R(4) 4 scalar 1123 Page 35 Source Listing W3WAVE 2014-09-16 16:49 w3wavemd.f90 1794 !/ ------------------------------------------------------------------- / 1795 SUBROUTINE W3GATH ( ISPEC, FIELD ) 1796 !/ 1797 !/ +-----------------------------------+ 1798 !/ | WAVEWATCH III NOAA/NCEP | 1799 !/ | H. L. Tolman | 1800 !/ | FORTRAN 90 | 1801 !/ | Last update : 26-Dec-2012 | 1802 !/ +-----------------------------------+ 1803 !/ 1804 !/ 04-Jan-1999 : Distributed FORTRAN 77 version. ( version 1.18 ) 1805 !/ 13-Jan-2000 : Upgrade to FORTRAN 90 ( version 2.00 ) 1806 !/ Major changes to logistics. 1807 !/ 29-Dec-2004 : Multiple grid version. ( version 3.06 ) 1808 !/ 13-Jun-2006 : Split STORE in G/SSTORE ( version 3.09 ) 1809 !/ 26-Dec-2012 : Move FIELD init. to W3GATH. ( version 4.OF ) 1810 !/ 1811 ! 1. Purpose : 1812 ! 1813 ! Gather spectral bin information into a propagation field array. 1814 ! 1815 ! 2. Method : 1816 ! 1817 ! Direct copy or communication calls (MPP version). 1818 ! 1819 ! 3. Parameters : 1820 ! 1821 ! Parameter list 1822 ! ---------------------------------------------------------------- 1823 ! ISPEC Int. I Spectral bin considered. 1824 ! FIELD R.A. O Full field to be propagated. 1825 ! ---------------------------------------------------------------- 1826 ! 1827 ! 4. Subroutines used : 1828 ! 1829 ! Name Type Module Description 1830 ! ---------------------------------------------------------------- 1831 ! STRACE Subr. W3SERVMD Subroutine tracing. 1832 ! 1833 ! MPI_STARTALL, MPI_WAITALL 1834 ! Subr. mpif.h MPI persistent comm. routines (!/MPI). 1835 ! ---------------------------------------------------------------- 1836 ! 1837 ! 5. Called by : 1838 ! 1839 ! Name Type Module Description 1840 ! ---------------------------------------------------------------- 1841 ! W3WAVE Subr. W3WAVEMD Actual wave model routine. 1842 ! ---------------------------------------------------------------- 1843 ! 1844 ! 6. Error messages : 1845 ! 1846 ! None. 1847 ! 1848 ! 7. Remarks : 1849 ! 1850 ! - The field is extracted but not converted. Page 36 Source Listing W3GATH 2014-09-16 16:49 w3wavemd.f90 1851 ! - MPI version requires posing of send and receive calls in 1852 ! W3WAVE to match local calls. 1853 ! - MPI version does not require an MPI_TESTALL call for the 1854 ! posted gather operation as MPI_WAITALL is mandatory to 1855 ! reset persistent communication for next time step. 1856 ! - MPI version allows only two new pre-fetch postings per 1857 ! call to minimize chances to be slowed down by gathers that 1858 ! are not yet needed, while maximizing the pre-loading 1859 ! during the early (low-frequency) calls to the routine 1860 ! where the amount of calculation needed for proagation is 1861 ! the largest. 1862 ! 1863 ! 8. Structure : 1864 ! 1865 ! See source code. 1866 ! 1867 ! 9. Switches : 1868 ! 1869 ! !/SHRD Switch for message passing method. 1870 ! !/MPI Id. 1871 ! 1872 ! !/S Enable subroutine tracing. 1873 ! !/MPIT MPI test output. 1874 ! 1875 ! 10. Source code : 1876 ! 1877 !/ ------------------------------------------------------------------- / 1878 !/ 1879 USE W3GDATMD, ONLY: NSPEC, NX, NY, NSEA, NSEAL, MAPSF, DMIN 1880 USE W3WDATMD, ONLY: A => VA 1881 USE W3ADATMD, ONLY: MPIBUF, BSTAT, IBFLOC, ISPLOC, BISPL, & 1882 NSPLOC, NRQSG2, IRQSG2, GSTORE 1883 USE W3ODATMD, ONLY: NDST, IAPROC, NAPROC, NOTYPE 1884 !/ 1885 IMPLICIT NONE 1886 ! 1887 INCLUDE "mpif.h" 1888 !/ 1889 !/ ------------------------------------------------------------------- / 1890 !/ Parameter list 1891 !/ 2430 INTEGER, INTENT(IN) :: ISPEC 2431 REAL, INTENT(OUT) :: FIELD(1-NY:NY*(NX+2)) 2432 !/ 2433 !/ ------------------------------------------------------------------- / 2434 !/ Local parameters 2435 !/ 2436 INTEGER :: STATUS(MPI_STATUS_SIZE,NSPEC), & 2437 IOFF, IERR_MPI, JSEA, ISEA, & 2438 IXY, IS0, IB0, NPST, J 2439 !/ 2440 !/ ------------------------------------------------------------------- / 2441 !/ 2442 ! 2443 FIELD = 0. 2444 ! 2445 ! 1. Shared memory version ------------------------------------------ / Page 37 Source Listing W3GATH 2014-09-16 16:49 w3wavemd.f90 2446 ! 2447 ! 2. Distributed memory version ( MPI ) ----------------------------- / 2448 ! 2.a Update counters 2449 ! 2450 ISPLOC = ISPLOC + 1 2451 IBFLOC = IBFLOC + 1 2452 IF ( IBFLOC .GT. MPIBUF ) IBFLOC = 1 2453 ! 2454 ! 2.b Check status of present buffer 2455 ! 2.b.1 Scatter (send) still in progress, wait to end 2456 ! 2457 IF ( BSTAT(IBFLOC) .EQ. 2 ) THEN 2458 IOFF = 1 + (BISPL(IBFLOC)-1)*NRQSG2 2459 IF ( NRQSG2 .GT. 0 ) CALL & 2460 MPI_WAITALL ( NRQSG2, IRQSG2(IOFF,2), & 2461 STATUS, IERR_MPI ) 2462 BSTAT(IBFLOC) = 0 2463 END IF 2464 ! 2465 ! 2.b.2 Gather (recv) not yet posted, post now 2466 ! 2467 IF ( BSTAT(IBFLOC) .EQ. 0 ) THEN 2468 BSTAT(IBFLOC) = 1 2469 BISPL(IBFLOC) = ISPLOC 2470 IOFF = 1 + (ISPLOC-1)*NRQSG2 2471 IF ( NRQSG2 .GT. 0 ) CALL & 2472 MPI_STARTALL ( NRQSG2, IRQSG2(IOFF,1), IERR_MPI ) 2473 END IF 2474 ! 2475 ! 2.c Put local spectral densities in store 2476 ! 2477 DO JSEA=1, NSEAL 2478 GSTORE(IAPROC+(JSEA-1)*NAPROC,IBFLOC) = A(ISPEC,JSEA) 2479 END DO 2480 ! 2481 ! 2.d Wait for remote spectral densities 2482 ! 2483 IOFF = 1 + (BISPL(IBFLOC)-1)*NRQSG2 2484 IF ( NRQSG2 .GT. 0 ) CALL & 2485 MPI_WAITALL ( NRQSG2, IRQSG2(IOFF,1), STATUS, IERR_MPI ) 2486 ! 2487 ! 2.e Convert storage array to field. 2488 ! 2489 DO ISEA=1, NSEA 2490 IXY = MAPSF(ISEA,3) 2491 FIELD(IXY) = GSTORE(ISEA,IBFLOC) 2492 END DO 2493 ! 2494 ! 2.f Pre-fetch data in available buffers 2495 ! 2496 IS0 = ISPLOC 2497 IB0 = IBFLOC 2498 NPST = 0 2499 ! 2500 DO J=1, MPIBUF-1 2501 IS0 = IS0 + 1 2502 IF ( IS0 .GT. NSPLOC ) EXIT Page 38 Source Listing W3GATH 2014-09-16 16:49 w3wavemd.f90 2503 IB0 = 1 + MOD(IB0,MPIBUF) 2504 IF ( BSTAT(IB0) .EQ. 0 ) THEN 2505 BSTAT(IB0) = 1 2506 BISPL(IB0) = IS0 2507 IOFF = 1 + (IS0-1)*NRQSG2 2508 IF ( NRQSG2 .GT. 0 ) CALL & 2509 MPI_STARTALL ( NRQSG2, IRQSG2(IOFF,1), IERR_MPI ) 2510 NPST = NPST + 1 2511 END IF 2512 IF ( NPST .GE. 2 ) EXIT 2513 END DO 2514 ! 2515 ! 2.g Test output 2516 ! 2517 RETURN 2518 ! 2519 ! Formats 2520 ! 2521 !/ 2522 !/ End of W3GATH ----------------------------------------------------- / 2523 !/ 2524 END SUBROUTINE W3GATH ENTRY POINTS Name w3wavemd_mp_w3gath_ Page 39 Source Listing W3GATH 2014-09-16 16:49 Symbol Table w3wavemd.f90 SYMBOL CROSS REFERENCE Name Object Declared Type Bytes Dimen Elements Attributes References A Local 1342 R(4) 4 2 1 PTR 1402 BISPL Local 1343 I(4) 4 1 1 PTR 1343,1382,1393,1407,1430 BSTAT Local 1343 I(4) 4 1 1 PTR 1343,1381,1386,1391,1392,1428,1429 DMIN Local 1341 R(4) 4 scalar PTR 1341 FIELD Dummy 1257 R(4) 4 1 0 ARG,OUT 1367,1415 GSTORE Local 1344 R(4) 4 2 1 PTR 1344,1402,1415 IAPROC Local 1345 I(4) 4 scalar PTR 1345,1402 IB0 Local 1362 I(4) 4 scalar 1421,1427,1428,1429,1430 IBFLOC Local 1343 I(4) 4 scalar PTR 1343,1375,1376,1381,1382,1386,1391 ,1392,1393,1402,1407,1415,1421 IERR_MPI Local 1361 I(4) 4 scalar 1385,1396,1409,1433 IOFF Local 1361 I(4) 4 scalar 1382,1384,1394,1396,1407,1409,1431 ,1433 IRQSG2 Local 1344 I(4) 4 2 1 PTR 1344,1384,1396,1409,1433 IS0 Local 1362 I(4) 4 scalar 1420,1425,1426,1430,1431 ISEA Local 1361 I(4) 4 scalar 1413,1414,1415 ISPEC Dummy 1257 I(4) 4 scalar ARG,IN 1402 ISPLOC Local 1343 I(4) 4 scalar PTR 1343,1374,1393,1394,1420 IXY Local 1362 I(4) 4 scalar 1414,1415 J Local 1362 I(4) 4 scalar 1424 JSEA Local 1361 I(4) 4 scalar 1401,1402 MAPSF Local 1341 I(4) 4 2 1 PTR 1341,1414 MOD Func 1427 scalar 1427 MPIBUF Param 1343 I(4) 4 scalar 1343,1376,1424,1427 MPIPRIV1 Common 532 28 MPIPRIV2 Common 534 24 MPIPRIVC Common 537 2 MPI_2COMPLEX Param 332 I(4) 4 scalar MPI_2DOUBLE_COMPLEX Param 338 I(4) 4 scalar MPI_2DOUBLE_PRECISION Param 334 I(4) 4 scalar MPI_2INT Param 415 I(4) 4 scalar MPI_2INTEGER Param 330 I(4) 4 scalar MPI_2REAL Param 336 I(4) 4 scalar MPI_ADDRESS_KIND Param 372 I(4) 4 scalar MPI_ANY_SOURCE Param 300 I(4) 4 scalar MPI_ANY_TAG Param 302 I(4) 4 scalar MPI_APPNUM Param 269 I(4) 4 scalar MPI_ARGVS_NULL Scalar 83 CHAR 1 2 1 COM MPI_ARGV_NULL Scalar 84 CHAR 1 1 1 COM MPI_BAND Param 217 I(4) 4 scalar MPI_BOR Param 221 I(4) 4 scalar MPI_BOTTOM Scalar 517 I(4) 4 scalar COM MPI_BSEND_OVERHEAD Param 296 I(4) 4 scalar MPI_BXOR Param 225 I(4) 4 scalar MPI_BYTE Param 342 I(4) 4 scalar MPI_CART Param 308 I(4) 4 scalar MPI_CHAR Param 375 I(4) 4 scalar MPI_CHARACTER Param 340 I(4) 4 scalar MPI_COMBINER_CONTIGUOUS Param 423 I(4) 4 scalar MPI_COMBINER_DARRAY Param 445 I(4) 4 scalar MPI_COMBINER_DUP Param 421 I(4) 4 scalar Page 40 Source Listing W3GATH 2014-09-16 16:49 Symbol Table w3wavemd.f90 Name Object Declared Type Bytes Dimen Elements Attributes References MPI_COMBINER_F90_COMPLEX Param 449 I(4) 4 scalar MPI_COMBINER_F90_INTEGER Param 451 I(4) 4 scalar MPI_COMBINER_F90_REAL Param 447 I(4) 4 scalar MPI_COMBINER_HINDEXED Param 435 I(4) 4 scalar MPI_COMBINER_HINDEXED_INTE GER Param 433 I(4) 4 scalar MPI_COMBINER_HVECTOR Param 429 I(4) 4 scalar MPI_COMBINER_HVECTOR_INTEG ER Param 427 I(4) 4 scalar MPI_COMBINER_INDEXED Param 431 I(4) 4 scalar MPI_COMBINER_INDEXED_BLOCK Param 437 I(4) 4 scalar MPI_COMBINER_NAMED Param 419 I(4) 4 scalar MPI_COMBINER_RESIZED Param 453 I(4) 4 scalar MPI_COMBINER_STRUCT Param 441 I(4) 4 scalar MPI_COMBINER_STRUCT_INTEGE R Param 439 I(4) 4 scalar MPI_COMBINER_SUBARRAY Param 443 I(4) 4 scalar MPI_COMBINER_VECTOR Param 425 I(4) 4 scalar MPI_COMM_DUP_FN Subr 521 scalar MPI_COMM_NULL Param 239 I(4) 4 scalar MPI_COMM_NULL_COPY_FN Subr 522 scalar MPI_COMM_NULL_DELETE_FN Subr 521 scalar MPI_COMM_SELF Param 235 I(4) 4 scalar MPI_COMM_WORLD Param 233 I(4) 4 scalar MPI_COMPLEX Param 318 I(4) 4 scalar MPI_COMPLEX16 Param 368 I(4) 4 scalar MPI_COMPLEX32 Param 370 I(4) 4 scalar MPI_COMPLEX8 Param 366 I(4) 4 scalar MPI_CONGRUENT Param 201 I(4) 4 scalar MPI_CONVERSION_FN_NULL Subr 527 scalar MPI_DATATYPE_NULL Param 249 I(4) 4 scalar 359 MPI_DISPLACEMENT_CURRENT Param 515 I(8) 8 scalar MPI_DISTRIBUTE_BLOCK Param 507 I(4) 4 scalar MPI_DISTRIBUTE_CYCLIC Param 509 I(4) 4 scalar MPI_DISTRIBUTE_DFLT_DARG Param 513 I(4) 4 scalar MPI_DISTRIBUTE_NONE Param 511 I(4) 4 scalar MPI_DOUBLE Param 397 I(4) 4 scalar MPI_DOUBLE_COMPLEX Param 320 I(4) 4 scalar MPI_DOUBLE_INT Param 409 I(4) 4 scalar MPI_DOUBLE_PRECISION Param 326 I(4) 4 scalar MPI_DUP_FN Subr 518 scalar MPI_ERRCODES_IGNORE Scalar 82 I(4) 4 1 1 COM MPI_ERRHANDLER_NULL Param 253 I(4) 4 scalar MPI_ERROR Param 76 I(4) 4 scalar MPI_ERRORS_ARE_FATAL Param 195 I(4) 4 scalar MPI_ERRORS_RETURN Param 197 I(4) 4 scalar MPI_ERR_ACCESS Param 189 I(4) 4 scalar MPI_ERR_AMODE Param 173 I(4) 4 scalar MPI_ERR_ARG Param 109 I(4) 4 scalar MPI_ERR_ASSERT Param 131 I(4) 4 scalar MPI_ERR_BAD_FILE Param 163 I(4) 4 scalar MPI_ERR_BASE Param 97 I(4) 4 scalar MPI_ERR_BUFFER Param 115 I(4) 4 scalar MPI_ERR_COMM Param 137 I(4) 4 scalar MPI_ERR_CONVERSION Param 193 I(4) 4 scalar Page 41 Source Listing W3GATH 2014-09-16 16:49 Symbol Table w3wavemd.f90 Name Object Declared Type Bytes Dimen Elements Attributes References MPI_ERR_COUNT Param 93 I(4) 4 scalar MPI_ERR_DIMS Param 179 I(4) 4 scalar MPI_ERR_DISP Param 125 I(4) 4 scalar MPI_ERR_DUP_DATAREP Param 117 I(4) 4 scalar MPI_ERR_FILE Param 91 I(4) 4 scalar MPI_ERR_FILE_EXISTS Param 133 I(4) 4 scalar MPI_ERR_FILE_IN_USE Param 165 I(4) 4 scalar MPI_ERR_GROUP Param 145 I(4) 4 scalar MPI_ERR_INFO Param 159 I(4) 4 scalar MPI_ERR_INFO_KEY Param 103 I(4) 4 scalar MPI_ERR_INFO_NOKEY Param 129 I(4) 4 scalar MPI_ERR_INFO_VALUE Param 153 I(4) 4 scalar MPI_ERR_INTERN Param 185 I(4) 4 scalar MPI_ERR_IN_STATUS Param 101 I(4) 4 scalar MPI_ERR_IO Param 187 I(4) 4 scalar MPI_ERR_KEYVAL Param 139 I(4) 4 scalar MPI_ERR_LASTCODE Param 121 I(4) 4 scalar MPI_ERR_LOCKTYPE Param 105 I(4) 4 scalar MPI_ERR_NAME Param 141 I(4) 4 scalar MPI_ERR_NOT_SAME Param 155 I(4) 4 scalar MPI_ERR_NO_MEM Param 161 I(4) 4 scalar MPI_ERR_NO_SPACE Param 191 I(4) 4 scalar MPI_ERR_NO_SUCH_FILE Param 181 I(4) 4 scalar MPI_ERR_OP Param 107 I(4) 4 scalar MPI_ERR_OTHER Param 87 I(4) 4 scalar MPI_ERR_PENDING Param 135 I(4) 4 scalar MPI_ERR_PORT Param 127 I(4) 4 scalar MPI_ERR_QUOTA Param 171 I(4) 4 scalar MPI_ERR_RANK Param 177 I(4) 4 scalar MPI_ERR_READ_ONLY Param 111 I(4) 4 scalar MPI_ERR_REQUEST Param 143 I(4) 4 scalar MPI_ERR_RMA_CONFLICT Param 99 I(4) 4 scalar MPI_ERR_RMA_SYNC Param 157 I(4) 4 scalar MPI_ERR_ROOT Param 175 I(4) 4 scalar MPI_ERR_SERVICE Param 183 I(4) 4 scalar MPI_ERR_SIZE Param 113 I(4) 4 scalar MPI_ERR_SPAWN Param 95 I(4) 4 scalar MPI_ERR_TAG Param 151 I(4) 4 scalar MPI_ERR_TOPOLOGY Param 147 I(4) 4 scalar MPI_ERR_TRUNCATE Param 123 I(4) 4 scalar MPI_ERR_TYPE Param 149 I(4) 4 scalar MPI_ERR_UNKNOWN Param 167 I(4) 4 scalar MPI_ERR_UNSUPPORTED_DATARE P Param 119 I(4) 4 scalar MPI_ERR_UNSUPPORTED_OPERAT ION Param 169 I(4) 4 scalar MPI_ERR_WIN Param 89 I(4) 4 scalar MPI_FILE_NULL Param 243 I(4) 4 scalar MPI_FLOAT Param 395 I(4) 4 scalar MPI_FLOAT_INT Param 407 I(4) 4 scalar MPI_GRAPH Param 306 I(4) 4 scalar MPI_GROUP_EMPTY Param 237 I(4) 4 scalar MPI_GROUP_NULL Param 245 I(4) 4 scalar MPI_HOST Param 259 I(4) 4 scalar MPI_IDENT Param 199 I(4) 4 scalar Page 42 Source Listing W3GATH 2014-09-16 16:49 Symbol Table w3wavemd.f90 Name Object Declared Type Bytes Dimen Elements Attributes References MPI_INFO_NULL Param 255 I(4) 4 scalar MPI_INT Param 387 I(4) 4 scalar MPI_INTEGER Param 328 I(4) 4 scalar MPI_INTEGER1 Param 350 I(4) 4 scalar MPI_INTEGER16 Param 358 I(4) 4 scalar MPI_INTEGER2 Param 352 I(4) 4 scalar MPI_INTEGER4 Param 354 I(4) 4 scalar MPI_INTEGER8 Param 356 I(4) 4 scalar MPI_IN_PLACE Scalar 517 I(4) 4 scalar COM MPI_IO Param 261 I(4) 4 scalar MPI_KEYVAL_INVALID Param 294 I(4) 4 scalar MPI_LAND Param 215 I(4) 4 scalar MPI_LASTUSEDCODE Param 267 I(4) 4 scalar MPI_LB Param 346 I(4) 4 scalar MPI_LOCK_EXCLUSIVE Param 314 I(4) 4 scalar MPI_LOCK_SHARED Param 316 I(4) 4 scalar MPI_LOGICAL Param 322 I(4) 4 scalar MPI_LONG Param 391 I(4) 4 scalar MPI_LONG_DOUBLE Param 399 I(4) 4 scalar MPI_LONG_DOUBLE_INT Param 417 I(4) 4 scalar MPI_LONG_INT Param 411 I(4) 4 scalar MPI_LONG_LONG Param 405 I(4) 4 scalar MPI_LONG_LONG_INT Param 401 I(4) 4 scalar MPI_LOR Param 219 I(4) 4 scalar MPI_LXOR Param 223 I(4) 4 scalar MPI_MAX Param 207 I(4) 4 scalar MPI_MAXLOC Param 229 I(4) 4 scalar MPI_MAX_DATAREP_STRING Param 289 I(4) 4 scalar MPI_MAX_ERROR_STRING Param 277 I(4) 4 scalar MPI_MAX_INFO_KEY Param 283 I(4) 4 scalar MPI_MAX_INFO_VAL Param 285 I(4) 4 scalar MPI_MAX_OBJECT_NAME Param 281 I(4) 4 scalar MPI_MAX_PORT_NAME Param 279 I(4) 4 scalar MPI_MAX_PROCESSOR_NAME Param 287 I(4) 4 scalar MPI_MIN Param 209 I(4) 4 scalar MPI_MINLOC Param 227 I(4) 4 scalar MPI_MODE_APPEND Param 493 I(4) 4 scalar MPI_MODE_CREATE Param 489 I(4) 4 scalar MPI_MODE_DELETE_ON_CLOSE Param 485 I(4) 4 scalar MPI_MODE_EXCL Param 491 I(4) 4 scalar MPI_MODE_NOCHECK Param 461 I(4) 4 scalar MPI_MODE_NOPRECEDE Param 467 I(4) 4 scalar MPI_MODE_NOPUT Param 465 I(4) 4 scalar MPI_MODE_NOSTORE Param 463 I(4) 4 scalar MPI_MODE_NOSUCCEED Param 469 I(4) 4 scalar MPI_MODE_RDONLY Param 479 I(4) 4 scalar MPI_MODE_RDWR Param 481 I(4) 4 scalar MPI_MODE_SEQUENTIAL Param 495 I(4) 4 scalar MPI_MODE_UNIQUE_OPEN Param 487 I(4) 4 scalar MPI_MODE_WRONLY Param 483 I(4) 4 scalar MPI_NULL_COPY_FN Subr 518 scalar MPI_NULL_DELETE_FN Subr 518 scalar MPI_OFFSET_KIND Param 372 I(4) 4 scalar MPI_OP_NULL Param 247 I(4) 4 scalar MPI_ORDER_C Param 503 I(4) 4 scalar Page 43 Source Listing W3GATH 2014-09-16 16:49 Symbol Table w3wavemd.f90 Name Object Declared Type Bytes Dimen Elements Attributes References MPI_ORDER_FORTRAN Param 505 I(4) 4 scalar MPI_PACKED Param 348 I(4) 4 scalar MPI_PROC_NULL Param 298 I(4) 4 scalar MPI_PROD Param 213 I(4) 4 scalar MPI_REAL Param 324 I(4) 4 scalar MPI_REAL16 Param 364 I(4) 4 scalar MPI_REAL4 Param 360 I(4) 4 scalar MPI_REAL8 Param 362 I(4) 4 scalar MPI_REPLACE Param 231 I(4) 4 scalar MPI_REQUEST_NULL Param 251 I(4) 4 scalar MPI_ROOT Param 304 I(4) 4 scalar MPI_SEEK_CUR Param 499 I(4) 4 scalar MPI_SEEK_END Param 501 I(4) 4 scalar MPI_SEEK_SET Param 497 I(4) 4 scalar MPI_SHORT Param 383 I(4) 4 scalar MPI_SHORT_INT Param 413 I(4) 4 scalar MPI_SIGNED_CHAR Param 377 I(4) 4 scalar MPI_SIMILAR Param 203 I(4) 4 scalar MPI_SOURCE Param 76 I(4) 4 scalar MPI_STARTALL Subr 1396 1396,1433 MPI_STATUSES_IGNORE Scalar 81 I(4) 4 2 5 COM MPI_STATUS_IGNORE Scalar 80 I(4) 4 1 5 COM MPI_STATUS_SIZE Param 78 I(4) 4 scalar 80,81,1360 MPI_SUBVERSION Param 312 I(4) 4 scalar MPI_SUCCESS Param 85 I(4) 4 scalar MPI_SUM Param 211 I(4) 4 scalar MPI_TAG Param 76 I(4) 4 scalar MPI_TAG_UB Param 257 I(4) 4 scalar MPI_THREAD_FUNNELED Param 473 I(4) 4 scalar MPI_THREAD_MULTIPLE Param 477 I(4) 4 scalar MPI_THREAD_SERIALIZED Param 475 I(4) 4 scalar MPI_THREAD_SINGLE Param 471 I(4) 4 scalar MPI_TYPECLASS_COMPLEX Param 459 I(4) 4 scalar MPI_TYPECLASS_INTEGER Param 457 I(4) 4 scalar MPI_TYPECLASS_REAL Param 455 I(4) 4 scalar MPI_TYPE_DUP_FN Subr 525 scalar MPI_TYPE_NULL_COPY_FN Subr 526 scalar MPI_TYPE_NULL_DELETE_FN Subr 525 scalar MPI_UB Param 344 I(4) 4 scalar MPI_UNDEFINED Param 291 I(4) 4 scalar MPI_UNDEFINED_RANK Param 291 I(4) 4 scalar MPI_UNEQUAL Param 205 I(4) 4 scalar MPI_UNIVERSE_SIZE Param 265 I(4) 4 scalar MPI_UNSIGNED Param 389 I(4) 4 scalar MPI_UNSIGNED_CHAR Param 379 I(4) 4 scalar MPI_UNSIGNED_LONG Param 393 I(4) 4 scalar MPI_UNSIGNED_LONG_LONG Param 403 I(4) 4 scalar MPI_UNSIGNED_SHORT Param 385 I(4) 4 scalar MPI_VERSION Param 310 I(4) 4 scalar MPI_WAITALL Subr 1384 1384,1409 MPI_WCHAR Param 381 I(4) 4 scalar MPI_WIN_BASE Param 271 I(4) 4 scalar MPI_WIN_DISP_UNIT Param 275 I(4) 4 scalar MPI_WIN_DUP_FN Subr 523 scalar MPI_WIN_NULL Param 241 I(4) 4 scalar Page 44 Source Listing W3GATH 2014-09-16 16:49 Symbol Table w3wavemd.f90 Name Object Declared Type Bytes Dimen Elements Attributes References MPI_WIN_NULL_COPY_FN Subr 524 scalar MPI_WIN_NULL_DELETE_FN Subr 523 scalar MPI_WIN_SIZE Param 273 I(4) 4 scalar MPI_WTICK Func 519 R(8) 8 scalar MPI_WTIME Func 519 R(8) 8 scalar MPI_WTIME_IS_GLOBAL Param 263 I(4) 4 scalar NAPROC Local 1345 I(4) 4 scalar PTR 1345,1402 NDST Local 1345 I(4) 4 scalar PTR 1345 NOTYPE Local 1345 I(4) 4 scalar 1345 NPST Local 1362 I(4) 4 scalar 1422,1434,1436 NRQSG2 Local 1344 I(4) 4 scalar PTR 1344,1382,1383,1384,1394,1395,1396 ,1407,1408,1409,1431,1432,1433 NSEA Local 1341 I(4) 4 scalar PTR 1341,1413 NSEAL Local 1341 I(4) 4 scalar PTR 1341,1401 NSPEC Local 1341 I(4) 4 scalar PTR 1341,1360 NSPLOC Local 1344 I(4) 4 scalar PTR 1344,1426 NX Local 1341 I(4) 4 scalar PTR 1341,1355 NY Local 1341 I(4) 4 scalar PTR 1341,1355 PMPI_WTICK Func 520 R(8) 8 scalar PMPI_WTIME Func 520 R(8) 8 scalar STATUS Local 1360 I(4) 4 2 0 1385,1409 W3ADATMD Module 1343 1343 W3GATH Subr 1257 813 W3GDATMD Module 1341 1341 W3ODATMD Module 1345 1345 W3WDATMD Module 1342 1342 Page 45 Source Listing W3GATH 2014-09-16 16:49 w3wavemd.f90 2525 !/ ------------------------------------------------------------------- / 2526 SUBROUTINE W3SCAT ( ISPEC, MAPSTA, FIELD ) 2527 !/ 2528 !/ +-----------------------------------+ 2529 !/ | WAVEWATCH III NOAA/NCEP | 2530 !/ | H. L. Tolman | 2531 !/ | FORTRAN 90 | 2532 !/ | Last update : 13-Jun-2006 | 2533 !/ +-----------------------------------+ 2534 !/ 2535 !/ 04-Jan-1999 : Distributed FORTRAN 77 version. ( version 1.18 ) 2536 !/ 13-Jan-2000 : Upgrade to FORTRAN 90 ( version 2.00 ) 2537 !/ Major changes to logistics. 2538 !/ 28-Dec-2004 : Multiple grid version. ( version 3.06 ) 2539 !/ 07-Sep-2005 : Updated boundary conditions. ( version 3.08 ) 2540 !/ 13-Jun-2006 : Split STORE in G/SSTORE ( version 3.09 ) 2541 !/ 2542 ! 1. Purpose : 2543 ! 2544 ! 'Scatter' data back to spectral storage after propagation. 2545 ! 2546 ! 2. Method : 2547 ! 2548 ! Direct copy or communication calls (MPP version). 2549 ! See also W3GATH. 2550 ! 2551 ! 3. Parameters : 2552 ! 2553 ! Parameter list 2554 ! ---------------------------------------------------------------- 2555 ! ISPEC Int. I Spectral bin considered. 2556 ! MAPSTA I.A. I Status map for spatial grid. 2557 ! FIELD R.A. I Full field to be propagated. 2558 ! ---------------------------------------------------------------- 2559 ! 2560 ! 4. Subroutines used : 2561 ! 2562 ! Name Type Module Description 2563 ! ---------------------------------------------------------------- 2564 ! STRACE Subr. W3SERVMD Subroutine tracing. 2565 ! 2566 ! MPI_STARTALL, MPI_WAITALL, MPI_TESTALL 2567 ! Subr. mpif.h MPI persistent comm. routines (!/MPI). 2568 ! ---------------------------------------------------------------- 2569 ! 2570 ! 5. Called by : 2571 ! 2572 ! Name Type Module Description 2573 ! ---------------------------------------------------------------- 2574 ! W3WAVE Subr. W3WAVEMD Actual wave model routine. 2575 ! ---------------------------------------------------------------- 2576 ! 2577 ! 6. Error messages : 2578 ! 2579 ! None. 2580 ! 2581 ! 7. Remarks : Page 46 Source Listing W3SCAT 2014-09-16 16:49 w3wavemd.f90 2582 ! 2583 ! - The field is put back but not converted ! 2584 ! - MPI persistent communication calls initialize in W3MPII. 2585 ! - See W3GATH and W3MPII for additional comments on data 2586 ! buffering. 2587 ! 2588 ! 8. Structure : 2589 ! 2590 ! See source code. 2591 ! 2592 ! 9. Switches : 2593 ! 2594 ! !/SHRD Switch for message passing method. 2595 ! !/MPI Id. 2596 ! 2597 ! !/S Enable subroutine tracing. 2598 ! !/MPIT MPI test output. 2599 ! 2600 ! 10. Source code : 2601 ! 2602 !/ ------------------------------------------------------------------- / 2603 !/ 2604 USE W3GDATMD, ONLY: NSPEC, NX, NY, NSEA, NSEAL, MAPSF 2605 USE W3WDATMD, ONLY: A => VA 2606 USE W3ADATMD, ONLY: MPIBUF, BSTAT, IBFLOC, ISPLOC, BISPL, & 2607 NSPLOC, NRQSG2, IRQSG2, SSTORE 2608 USE W3ODATMD, ONLY: NDST 2609 USE W3ODATMD, ONLY: IAPROC, NAPROC 2610 !/ 2611 IMPLICIT NONE 2612 ! 2613 INCLUDE "mpif.h" 2614 !/ 2615 !/ ------------------------------------------------------------------- / 2616 !/ Parameter list 2617 !/ 3156 INTEGER, INTENT(IN) :: ISPEC, MAPSTA(NY*NX) 3157 REAL, INTENT(IN) :: FIELD(1-NY:NY*(NX+2)) 3158 !/ 3159 !/ ------------------------------------------------------------------- / 3160 !/ Local parameters 3161 !/ 3162 INTEGER :: ISEA, IXY, IOFF, IERR_MPI, J, & 3163 STATUS(MPI_STATUS_SIZE,NSPEC), & 3164 JSEA, IB0 3165 LOGICAL :: DONE 3166 !/ 3167 !/ ------------------------------------------------------------------- / 3168 !/ 3169 ! 3170 ! 1. Shared memory version ------------------------------------------ * 3171 ! 3172 ! 2. Distributed memory version ( MPI ) ----------------------------- * 3173 ! 2.a Initializations 3174 ! 3175 ! 2.b Convert full grid to sea grid, active points only 3176 ! Page 47 Source Listing W3SCAT 2014-09-16 16:49 w3wavemd.f90 3177 DO ISEA=1, NSEA 3178 IXY = MAPSF(ISEA,3) 3179 IF ( MAPSTA(IXY) .GE. 1 ) SSTORE(ISEA,IBFLOC) = FIELD(IXY) 3180 END DO 3181 ! 3182 ! 2.c Send spectral densities to appropriate remote 3183 ! 3184 IOFF = 1 + (ISPLOC-1)*NRQSG2 3185 IF ( NRQSG2 .GT. 0 ) CALL & 3186 MPI_STARTALL ( NRQSG2, IRQSG2(IOFF,2), IERR_MPI ) 3187 BSTAT(IBFLOC) = 2 3188 ! 3189 ! 2.d Save locally stored results 3190 ! 3191 DO JSEA=1, NSEAL 3192 ISEA = IAPROC+(JSEA-1)*NAPROC 3193 IXY = MAPSF(ISEA,3) 3194 IF (MAPSTA(IXY) .GE. 1) A(ISPEC,JSEA) = SSTORE(ISEA,IBFLOC) 3195 END DO 3196 ! 3197 ! 2.e Check if any sends have finished 3198 ! 3199 IB0 = IBFLOC 3200 ! 3201 DO J=1, MPIBUF 3202 IB0 = 1 + MOD(IB0,MPIBUF) 3203 IF ( BSTAT(IB0) .EQ. 2 ) THEN 3204 IOFF = 1 + (BISPL(IB0)-1)*NRQSG2 3205 IF ( NRQSG2 .GT. 0 ) THEN 3206 CALL MPI_TESTALL ( NRQSG2, IRQSG2(IOFF,2), DONE, & 3207 STATUS, IERR_MPI ) 3208 ELSE 3209 DONE = .TRUE. 3210 END IF 3211 IF ( DONE .AND. NRQSG2.GT.0 ) CALL & 3212 MPI_WAITALL ( NRQSG2, IRQSG2(IOFF,2), & 3213 STATUS, IERR_MPI ) 3214 IF ( DONE ) THEN 3215 BSTAT(IB0) = 0 3216 END IF 3217 END IF 3218 END DO 3219 ! 3220 ! 2.f Last component, finish message passing, reset buffer control 3221 ! 3222 IF ( ISPLOC .EQ. NSPLOC ) THEN 3223 ! 3224 DO IB0=1, MPIBUF 3225 IF ( BSTAT(IB0) .EQ. 2 ) THEN 3226 IOFF = 1 + (BISPL(IB0)-1)*NRQSG2 3227 IF ( NRQSG2 .GT. 0 ) CALL & 3228 MPI_WAITALL ( NRQSG2, IRQSG2(IOFF,2), & 3229 STATUS, IERR_MPI ) 3230 BSTAT(IB0) = 0 3231 END IF 3232 END DO 3233 ! Page 48 Source Listing W3SCAT 2014-09-16 16:49 w3wavemd.f90 3234 ISPLOC = 0 3235 IBFLOC = 0 3236 ! 3237 END IF 3238 ! 3239 ! 2.g Test output 3240 ! 3241 RETURN 3242 ! 3243 ! Formats 3244 ! 3245 !/ 3246 !/ End of W3SCAT ----------------------------------------------------- / 3247 !/ 3248 END SUBROUTINE W3SCAT ENTRY POINTS Name w3wavemd_mp_w3scat_ SYMBOL CROSS REFERENCE Name Object Declared Type Bytes Dimen Elements Attributes References A Local 1529 R(4) 4 2 1 PTR 1580 BISPL Local 1530 I(4) 4 1 1 PTR 1530,1590,1612 BSTAT Local 1530 I(4) 4 1 1 PTR 1530,1573,1589,1601,1611,1616 DONE Local 1551 L(4) 4 scalar 1592,1595,1597,1600 FIELD Dummy 1450 R(4) 4 1 0 ARG,IN 1565 IAPROC Local 1533 I(4) 4 scalar PTR 1533,1578 IB0 Local 1550 I(4) 4 scalar 1585,1588,1589,1590,1601,1610,1611 ,1612,1616 IBFLOC Local 1530 I(4) 4 scalar PTR 1530,1565,1573,1580,1585,1621 IERR_MPI Local 1548 I(4) 4 scalar 1572,1593,1599,1615 IOFF Local 1548 I(4) 4 scalar 1570,1572,1590,1592,1598,1612,1614 IRQSG2 Local 1531 I(4) 4 2 1 PTR 1531,1572,1592,1598,1614 ISEA Local 1548 I(4) 4 scalar 1563,1564,1565,1578,1579,1580 ISPEC Dummy 1450 I(4) 4 scalar ARG,IN 1580 ISPLOC Local 1530 I(4) 4 scalar PTR 1530,1570,1608,1620 IXY Local 1548 I(4) 4 scalar 1564,1565,1579,1580 J Local 1548 I(4) 4 scalar 1587 JSEA Local 1550 I(4) 4 scalar 1577,1578,1580 MAPSF Local 1528 I(4) 4 2 1 PTR 1528,1564,1579 MAPSTA Dummy 1450 I(4) 4 1 0 ARG,IN 1565,1580 MOD Func 1588 scalar 1588 MPIBUF Param 1530 I(4) 4 scalar 1530,1587,1588,1610 MPIPRIV1 Common 532 28 MPIPRIV2 Common 534 24 MPIPRIVC Common 537 2 MPI_2COMPLEX Param 332 I(4) 4 scalar MPI_2DOUBLE_COMPLEX Param 338 I(4) 4 scalar MPI_2DOUBLE_PRECISION Param 334 I(4) 4 scalar MPI_2INT Param 415 I(4) 4 scalar Page 49 Source Listing W3SCAT 2014-09-16 16:49 Symbol Table w3wavemd.f90 Name Object Declared Type Bytes Dimen Elements Attributes References MPI_2INTEGER Param 330 I(4) 4 scalar MPI_2REAL Param 336 I(4) 4 scalar MPI_ADDRESS_KIND Param 372 I(4) 4 scalar MPI_ANY_SOURCE Param 300 I(4) 4 scalar MPI_ANY_TAG Param 302 I(4) 4 scalar MPI_APPNUM Param 269 I(4) 4 scalar MPI_ARGVS_NULL Scalar 83 CHAR 1 2 1 COM MPI_ARGV_NULL Scalar 84 CHAR 1 1 1 COM MPI_BAND Param 217 I(4) 4 scalar MPI_BOR Param 221 I(4) 4 scalar MPI_BOTTOM Scalar 517 I(4) 4 scalar COM MPI_BSEND_OVERHEAD Param 296 I(4) 4 scalar MPI_BXOR Param 225 I(4) 4 scalar MPI_BYTE Param 342 I(4) 4 scalar MPI_CART Param 308 I(4) 4 scalar MPI_CHAR Param 375 I(4) 4 scalar MPI_CHARACTER Param 340 I(4) 4 scalar MPI_COMBINER_CONTIGUOUS Param 423 I(4) 4 scalar MPI_COMBINER_DARRAY Param 445 I(4) 4 scalar MPI_COMBINER_DUP Param 421 I(4) 4 scalar MPI_COMBINER_F90_COMPLEX Param 449 I(4) 4 scalar MPI_COMBINER_F90_INTEGER Param 451 I(4) 4 scalar MPI_COMBINER_F90_REAL Param 447 I(4) 4 scalar MPI_COMBINER_HINDEXED Param 435 I(4) 4 scalar MPI_COMBINER_HINDEXED_INTE GER Param 433 I(4) 4 scalar MPI_COMBINER_HVECTOR Param 429 I(4) 4 scalar MPI_COMBINER_HVECTOR_INTEG ER Param 427 I(4) 4 scalar MPI_COMBINER_INDEXED Param 431 I(4) 4 scalar MPI_COMBINER_INDEXED_BLOCK Param 437 I(4) 4 scalar MPI_COMBINER_NAMED Param 419 I(4) 4 scalar MPI_COMBINER_RESIZED Param 453 I(4) 4 scalar MPI_COMBINER_STRUCT Param 441 I(4) 4 scalar MPI_COMBINER_STRUCT_INTEGE R Param 439 I(4) 4 scalar MPI_COMBINER_SUBARRAY Param 443 I(4) 4 scalar MPI_COMBINER_VECTOR Param 425 I(4) 4 scalar MPI_COMM_DUP_FN Subr 521 scalar MPI_COMM_NULL Param 239 I(4) 4 scalar MPI_COMM_NULL_COPY_FN Subr 522 scalar MPI_COMM_NULL_DELETE_FN Subr 521 scalar MPI_COMM_SELF Param 235 I(4) 4 scalar MPI_COMM_WORLD Param 233 I(4) 4 scalar MPI_COMPLEX Param 318 I(4) 4 scalar MPI_COMPLEX16 Param 368 I(4) 4 scalar MPI_COMPLEX32 Param 370 I(4) 4 scalar MPI_COMPLEX8 Param 366 I(4) 4 scalar MPI_CONGRUENT Param 201 I(4) 4 scalar MPI_CONVERSION_FN_NULL Subr 527 scalar MPI_DATATYPE_NULL Param 249 I(4) 4 scalar 359 MPI_DISPLACEMENT_CURRENT Param 515 I(8) 8 scalar MPI_DISTRIBUTE_BLOCK Param 507 I(4) 4 scalar MPI_DISTRIBUTE_CYCLIC Param 509 I(4) 4 scalar MPI_DISTRIBUTE_DFLT_DARG Param 513 I(4) 4 scalar Page 50 Source Listing W3SCAT 2014-09-16 16:49 Symbol Table w3wavemd.f90 Name Object Declared Type Bytes Dimen Elements Attributes References MPI_DISTRIBUTE_NONE Param 511 I(4) 4 scalar MPI_DOUBLE Param 397 I(4) 4 scalar MPI_DOUBLE_COMPLEX Param 320 I(4) 4 scalar MPI_DOUBLE_INT Param 409 I(4) 4 scalar MPI_DOUBLE_PRECISION Param 326 I(4) 4 scalar MPI_DUP_FN Subr 518 scalar MPI_ERRCODES_IGNORE Scalar 82 I(4) 4 1 1 COM MPI_ERRHANDLER_NULL Param 253 I(4) 4 scalar MPI_ERROR Param 76 I(4) 4 scalar MPI_ERRORS_ARE_FATAL Param 195 I(4) 4 scalar MPI_ERRORS_RETURN Param 197 I(4) 4 scalar MPI_ERR_ACCESS Param 189 I(4) 4 scalar MPI_ERR_AMODE Param 173 I(4) 4 scalar MPI_ERR_ARG Param 109 I(4) 4 scalar MPI_ERR_ASSERT Param 131 I(4) 4 scalar MPI_ERR_BAD_FILE Param 163 I(4) 4 scalar MPI_ERR_BASE Param 97 I(4) 4 scalar MPI_ERR_BUFFER Param 115 I(4) 4 scalar MPI_ERR_COMM Param 137 I(4) 4 scalar MPI_ERR_CONVERSION Param 193 I(4) 4 scalar MPI_ERR_COUNT Param 93 I(4) 4 scalar MPI_ERR_DIMS Param 179 I(4) 4 scalar MPI_ERR_DISP Param 125 I(4) 4 scalar MPI_ERR_DUP_DATAREP Param 117 I(4) 4 scalar MPI_ERR_FILE Param 91 I(4) 4 scalar MPI_ERR_FILE_EXISTS Param 133 I(4) 4 scalar MPI_ERR_FILE_IN_USE Param 165 I(4) 4 scalar MPI_ERR_GROUP Param 145 I(4) 4 scalar MPI_ERR_INFO Param 159 I(4) 4 scalar MPI_ERR_INFO_KEY Param 103 I(4) 4 scalar MPI_ERR_INFO_NOKEY Param 129 I(4) 4 scalar MPI_ERR_INFO_VALUE Param 153 I(4) 4 scalar MPI_ERR_INTERN Param 185 I(4) 4 scalar MPI_ERR_IN_STATUS Param 101 I(4) 4 scalar MPI_ERR_IO Param 187 I(4) 4 scalar MPI_ERR_KEYVAL Param 139 I(4) 4 scalar MPI_ERR_LASTCODE Param 121 I(4) 4 scalar MPI_ERR_LOCKTYPE Param 105 I(4) 4 scalar MPI_ERR_NAME Param 141 I(4) 4 scalar MPI_ERR_NOT_SAME Param 155 I(4) 4 scalar MPI_ERR_NO_MEM Param 161 I(4) 4 scalar MPI_ERR_NO_SPACE Param 191 I(4) 4 scalar MPI_ERR_NO_SUCH_FILE Param 181 I(4) 4 scalar MPI_ERR_OP Param 107 I(4) 4 scalar MPI_ERR_OTHER Param 87 I(4) 4 scalar MPI_ERR_PENDING Param 135 I(4) 4 scalar MPI_ERR_PORT Param 127 I(4) 4 scalar MPI_ERR_QUOTA Param 171 I(4) 4 scalar MPI_ERR_RANK Param 177 I(4) 4 scalar MPI_ERR_READ_ONLY Param 111 I(4) 4 scalar MPI_ERR_REQUEST Param 143 I(4) 4 scalar MPI_ERR_RMA_CONFLICT Param 99 I(4) 4 scalar MPI_ERR_RMA_SYNC Param 157 I(4) 4 scalar MPI_ERR_ROOT Param 175 I(4) 4 scalar MPI_ERR_SERVICE Param 183 I(4) 4 scalar Page 51 Source Listing W3SCAT 2014-09-16 16:49 Symbol Table w3wavemd.f90 Name Object Declared Type Bytes Dimen Elements Attributes References MPI_ERR_SIZE Param 113 I(4) 4 scalar MPI_ERR_SPAWN Param 95 I(4) 4 scalar MPI_ERR_TAG Param 151 I(4) 4 scalar MPI_ERR_TOPOLOGY Param 147 I(4) 4 scalar MPI_ERR_TRUNCATE Param 123 I(4) 4 scalar MPI_ERR_TYPE Param 149 I(4) 4 scalar MPI_ERR_UNKNOWN Param 167 I(4) 4 scalar MPI_ERR_UNSUPPORTED_DATARE P Param 119 I(4) 4 scalar MPI_ERR_UNSUPPORTED_OPERAT ION Param 169 I(4) 4 scalar MPI_ERR_WIN Param 89 I(4) 4 scalar MPI_FILE_NULL Param 243 I(4) 4 scalar MPI_FLOAT Param 395 I(4) 4 scalar MPI_FLOAT_INT Param 407 I(4) 4 scalar MPI_GRAPH Param 306 I(4) 4 scalar MPI_GROUP_EMPTY Param 237 I(4) 4 scalar MPI_GROUP_NULL Param 245 I(4) 4 scalar MPI_HOST Param 259 I(4) 4 scalar MPI_IDENT Param 199 I(4) 4 scalar MPI_INFO_NULL Param 255 I(4) 4 scalar MPI_INT Param 387 I(4) 4 scalar MPI_INTEGER Param 328 I(4) 4 scalar MPI_INTEGER1 Param 350 I(4) 4 scalar MPI_INTEGER16 Param 358 I(4) 4 scalar MPI_INTEGER2 Param 352 I(4) 4 scalar MPI_INTEGER4 Param 354 I(4) 4 scalar MPI_INTEGER8 Param 356 I(4) 4 scalar MPI_IN_PLACE Scalar 517 I(4) 4 scalar COM MPI_IO Param 261 I(4) 4 scalar MPI_KEYVAL_INVALID Param 294 I(4) 4 scalar MPI_LAND Param 215 I(4) 4 scalar MPI_LASTUSEDCODE Param 267 I(4) 4 scalar MPI_LB Param 346 I(4) 4 scalar MPI_LOCK_EXCLUSIVE Param 314 I(4) 4 scalar MPI_LOCK_SHARED Param 316 I(4) 4 scalar MPI_LOGICAL Param 322 I(4) 4 scalar MPI_LONG Param 391 I(4) 4 scalar MPI_LONG_DOUBLE Param 399 I(4) 4 scalar MPI_LONG_DOUBLE_INT Param 417 I(4) 4 scalar MPI_LONG_INT Param 411 I(4) 4 scalar MPI_LONG_LONG Param 405 I(4) 4 scalar MPI_LONG_LONG_INT Param 401 I(4) 4 scalar MPI_LOR Param 219 I(4) 4 scalar MPI_LXOR Param 223 I(4) 4 scalar MPI_MAX Param 207 I(4) 4 scalar MPI_MAXLOC Param 229 I(4) 4 scalar MPI_MAX_DATAREP_STRING Param 289 I(4) 4 scalar MPI_MAX_ERROR_STRING Param 277 I(4) 4 scalar MPI_MAX_INFO_KEY Param 283 I(4) 4 scalar MPI_MAX_INFO_VAL Param 285 I(4) 4 scalar MPI_MAX_OBJECT_NAME Param 281 I(4) 4 scalar MPI_MAX_PORT_NAME Param 279 I(4) 4 scalar MPI_MAX_PROCESSOR_NAME Param 287 I(4) 4 scalar MPI_MIN Param 209 I(4) 4 scalar Page 52 Source Listing W3SCAT 2014-09-16 16:49 Symbol Table w3wavemd.f90 Name Object Declared Type Bytes Dimen Elements Attributes References MPI_MINLOC Param 227 I(4) 4 scalar MPI_MODE_APPEND Param 493 I(4) 4 scalar MPI_MODE_CREATE Param 489 I(4) 4 scalar MPI_MODE_DELETE_ON_CLOSE Param 485 I(4) 4 scalar MPI_MODE_EXCL Param 491 I(4) 4 scalar MPI_MODE_NOCHECK Param 461 I(4) 4 scalar MPI_MODE_NOPRECEDE Param 467 I(4) 4 scalar MPI_MODE_NOPUT Param 465 I(4) 4 scalar MPI_MODE_NOSTORE Param 463 I(4) 4 scalar MPI_MODE_NOSUCCEED Param 469 I(4) 4 scalar MPI_MODE_RDONLY Param 479 I(4) 4 scalar MPI_MODE_RDWR Param 481 I(4) 4 scalar MPI_MODE_SEQUENTIAL Param 495 I(4) 4 scalar MPI_MODE_UNIQUE_OPEN Param 487 I(4) 4 scalar MPI_MODE_WRONLY Param 483 I(4) 4 scalar MPI_NULL_COPY_FN Subr 518 scalar MPI_NULL_DELETE_FN Subr 518 scalar MPI_OFFSET_KIND Param 372 I(4) 4 scalar MPI_OP_NULL Param 247 I(4) 4 scalar MPI_ORDER_C Param 503 I(4) 4 scalar MPI_ORDER_FORTRAN Param 505 I(4) 4 scalar MPI_PACKED Param 348 I(4) 4 scalar MPI_PROC_NULL Param 298 I(4) 4 scalar MPI_PROD Param 213 I(4) 4 scalar MPI_REAL Param 324 I(4) 4 scalar MPI_REAL16 Param 364 I(4) 4 scalar MPI_REAL4 Param 360 I(4) 4 scalar MPI_REAL8 Param 362 I(4) 4 scalar MPI_REPLACE Param 231 I(4) 4 scalar MPI_REQUEST_NULL Param 251 I(4) 4 scalar MPI_ROOT Param 304 I(4) 4 scalar MPI_SEEK_CUR Param 499 I(4) 4 scalar MPI_SEEK_END Param 501 I(4) 4 scalar MPI_SEEK_SET Param 497 I(4) 4 scalar MPI_SHORT Param 383 I(4) 4 scalar MPI_SHORT_INT Param 413 I(4) 4 scalar MPI_SIGNED_CHAR Param 377 I(4) 4 scalar MPI_SIMILAR Param 203 I(4) 4 scalar MPI_SOURCE Param 76 I(4) 4 scalar MPI_STARTALL Subr 1572 1572 MPI_STATUSES_IGNORE Scalar 81 I(4) 4 2 5 COM MPI_STATUS_IGNORE Scalar 80 I(4) 4 1 5 COM MPI_STATUS_SIZE Param 78 I(4) 4 scalar 80,81,1549 MPI_SUBVERSION Param 312 I(4) 4 scalar MPI_SUCCESS Param 85 I(4) 4 scalar MPI_SUM Param 211 I(4) 4 scalar MPI_TAG Param 76 I(4) 4 scalar MPI_TAG_UB Param 257 I(4) 4 scalar MPI_TESTALL Subr 1592 1592 MPI_THREAD_FUNNELED Param 473 I(4) 4 scalar MPI_THREAD_MULTIPLE Param 477 I(4) 4 scalar MPI_THREAD_SERIALIZED Param 475 I(4) 4 scalar MPI_THREAD_SINGLE Param 471 I(4) 4 scalar MPI_TYPECLASS_COMPLEX Param 459 I(4) 4 scalar MPI_TYPECLASS_INTEGER Param 457 I(4) 4 scalar Page 53 Source Listing W3SCAT 2014-09-16 16:49 Symbol Table w3wavemd.f90 Name Object Declared Type Bytes Dimen Elements Attributes References MPI_TYPECLASS_REAL Param 455 I(4) 4 scalar MPI_TYPE_DUP_FN Subr 525 scalar MPI_TYPE_NULL_COPY_FN Subr 526 scalar MPI_TYPE_NULL_DELETE_FN Subr 525 scalar MPI_UB Param 344 I(4) 4 scalar MPI_UNDEFINED Param 291 I(4) 4 scalar MPI_UNDEFINED_RANK Param 291 I(4) 4 scalar MPI_UNEQUAL Param 205 I(4) 4 scalar MPI_UNIVERSE_SIZE Param 265 I(4) 4 scalar MPI_UNSIGNED Param 389 I(4) 4 scalar MPI_UNSIGNED_CHAR Param 379 I(4) 4 scalar MPI_UNSIGNED_LONG Param 393 I(4) 4 scalar MPI_UNSIGNED_LONG_LONG Param 403 I(4) 4 scalar MPI_UNSIGNED_SHORT Param 385 I(4) 4 scalar MPI_VERSION Param 310 I(4) 4 scalar MPI_WAITALL Subr 1598 1598,1614 MPI_WCHAR Param 381 I(4) 4 scalar MPI_WIN_BASE Param 271 I(4) 4 scalar MPI_WIN_DISP_UNIT Param 275 I(4) 4 scalar MPI_WIN_DUP_FN Subr 523 scalar MPI_WIN_NULL Param 241 I(4) 4 scalar MPI_WIN_NULL_COPY_FN Subr 524 scalar MPI_WIN_NULL_DELETE_FN Subr 523 scalar MPI_WIN_SIZE Param 273 I(4) 4 scalar MPI_WTICK Func 519 R(8) 8 scalar MPI_WTIME Func 519 R(8) 8 scalar MPI_WTIME_IS_GLOBAL Param 263 I(4) 4 scalar NAPROC Local 1533 I(4) 4 scalar PTR 1533,1578 NDST Local 1532 I(4) 4 scalar PTR 1532 NRQSG2 Local 1531 I(4) 4 scalar PTR 1531,1570,1571,1572,1590,1591,1592 ,1597,1598,1612,1613,1614 NSEA Local 1528 I(4) 4 scalar PTR 1528,1563 NSEAL Local 1528 I(4) 4 scalar PTR 1528,1577 NSPEC Local 1528 I(4) 4 scalar PTR 1528,1549 NSPLOC Local 1531 I(4) 4 scalar PTR 1531,1608 NX Local 1528 I(4) 4 scalar PTR 1528,1542,1543 NY Local 1528 I(4) 4 scalar PTR 1528,1542,1543 PMPI_WTICK Func 520 R(8) 8 scalar PMPI_WTIME Func 520 R(8) 8 scalar SSTORE Local 1531 R(4) 4 2 1 PTR 1531,1565,1580 STATUS Local 1549 I(4) 4 2 0 1593,1599,1615 W3ADATMD Module 1530 1530 W3GDATMD Module 1528 1528 W3ODATMD Module 1532 1532,1533 W3SCAT Subr 1450 820 W3WDATMD Module 1529 1529 Page 54 Source Listing W3SCAT 2014-09-16 16:49 w3wavemd.f90 3249 !/ ------------------------------------------------------------------- / 3250 SUBROUTINE W3NMIN ( MAPSTA, FLAG0 ) 3251 !/ 3252 !/ +-----------------------------------+ 3253 !/ | WAVEWATCH III NOAA/NCEP | 3254 !/ | H. L. Tolman | 3255 !/ | FORTRAN 90 | 3256 !/ | Last update : 28-Dec-2004 | 3257 !/ +-----------------------------------+ 3258 !/ 3259 !/ 23-Feb-2001 : Origination. ( version 2.07 ) 3260 !/ 28-Dec-2004 : Multiple grid version. ( version 3.06 ) 3261 !/ 3262 ! 1. Purpose : 3263 ! 3264 ! Check minimum number of active sea points at given processor to 3265 ! evaluate the need for a MPI_BARRIER call. 3266 ! 3267 ! 2. Method : 3268 ! 3269 ! Evaluate mapsta. 3270 ! 3271 ! 3. Parameters : 3272 ! 3273 ! Parameter list 3274 ! ---------------------------------------------------------------- 3275 ! MAPSTA I.A. I Status map for spatial grid. 3276 ! FLAG0 log. O Flag to identify 0 as minimum. 3277 ! ---------------------------------------------------------------- 3278 ! 3279 ! 4. Subroutines used : 3280 ! 3281 ! Name Type Module Description 3282 ! ---------------------------------------------------------------- 3283 ! STRACE Subr. W3SERVMD Subroutine tracing. 3284 ! ---------------------------------------------------------------- 3285 ! 3286 ! 5. Called by : 3287 ! 3288 ! Name Type Module Description 3289 ! ---------------------------------------------------------------- 3290 ! W3WAVE Subr. W3WAVEMD Actual wave model routine. 3291 ! ---------------------------------------------------------------- 3292 ! 3293 ! 6. Error messages : 3294 ! 3295 ! None. 3296 ! 3297 ! 7. Remarks : 3298 ! 3299 ! 8. Structure : 3300 ! 3301 ! See source code. 3302 ! 3303 ! 9. Switches : 3304 ! 3305 ! !/S Enable subroutine tracing. Page 55 Source Listing W3NMIN 2014-09-16 16:49 w3wavemd.f90 3306 ! !/T Test output. 3307 ! 3308 ! 10. Source code : 3309 ! 3310 !/ ------------------------------------------------------------------- / 3311 !/ 3312 USE W3GDATMD, ONLY: NX, NY, NSEA, MAPSF 3313 USE W3ODATMD, ONLY: NDST, NAPROC 3314 !/ 3315 IMPLICIT NONE 3316 !/ 3317 !/ ------------------------------------------------------------------- / 3318 !/ Parameter list 3319 !/ 3320 INTEGER, INTENT(IN) :: MAPSTA(NY*NX) 3321 LOGICAL, INTENT(OUT) :: FLAG0 3322 !/ 3323 !/ ------------------------------------------------------------------- / 3324 !/ Local parameters 3325 !/ 3326 INTEGER :: NMIN, IPROC, NLOC, ISEA, IXY 3327 !/ 3328 !/ ------------------------------------------------------------------- / 3329 !/ 3330 ! 3331 NMIN = NSEA 3332 ! 3333 DO IPROC=1, NAPROC 3334 NLOC = 0 3335 DO ISEA=IPROC, NSEA, NAPROC 3336 IXY = MAPSF(ISEA,3) 3337 IF ( MAPSTA(IXY) .EQ. 1 ) NLOC = NLOC + 1 3338 END DO 3339 NMIN = MIN ( NMIN , NLOC ) 3340 END DO 3341 ! 3342 FLAG0 = NMIN .EQ. 0 3343 ! 3344 RETURN 3345 ! 3346 ! Formats 3347 ! 3348 !/ 3349 !/ End of W3NMIN ----------------------------------------------------- / 3350 !/ 3351 END SUBROUTINE W3NMIN Page 56 Source Listing W3NMIN 2014-09-16 16:49 Entry Points w3wavemd.f90 ENTRY POINTS Name w3wavemd_mp_w3nmin_ SYMBOL CROSS REFERENCE Name Object Declared Type Bytes Dimen Elements Attributes References FLAG0 Dummy 1636 L(4) 4 scalar ARG,OUT 1728 IPROC Local 1712 I(4) 4 scalar 1719,1721 ISEA Local 1712 I(4) 4 scalar 1721,1722 IXY Local 1712 I(4) 4 scalar 1722,1723 MAPSF Local 1698 I(4) 4 2 1 PTR 1698,1722 MAPSTA Dummy 1636 I(4) 4 1 0 ARG,IN 1723 MIN Func 1725 scalar 1725 NAPROC Local 1699 I(4) 4 scalar PTR 1699,1719,1721 NDST Local 1699 I(4) 4 scalar PTR 1699 NLOC Local 1712 I(4) 4 scalar 1720,1723,1725 NMIN Local 1712 I(4) 4 scalar 1717,1725,1728 NSEA Local 1698 I(4) 4 scalar PTR 1698,1717,1721 NX Local 1698 I(4) 4 scalar PTR 1698,1706 NY Local 1698 I(4) 4 scalar PTR 1698,1706 W3GDATMD Module 1698 1698 W3NMIN Subr 1636 722 W3ODATMD Module 1699 1699 Page 57 Source Listing W3NMIN 2014-09-16 16:49 w3wavemd.f90 3352 !/ 3353 !/ End of module W3WAVEMD -------------------------------------------- / 3354 !/ 3355 END MODULE W3WAVEMD SYMBOL CROSS REFERENCE Name Object Declared Type Bytes Dimen Elements Attributes References MPIBUF Param 157 I(4) 4 scalar 157 W3ADATMD Module 157 157 W3WAVEMD Module 2 Page 58 Source Listing W3NMIN 2014-09-16 16:49 Subprograms/Common Blocks w3wavemd.f90 SUBPROGRAMS/COMMON BLOCKS Name Object Declared Type Bytes Dimen Elements Attributes References MPIPRIV1 Common 532 28 MPIPRIV2 Common 534 24 MPIPRIVC Common 537 2 W3GATH Subr 1257 813 W3NMIN Subr 1636 722 W3SCAT Subr 1450 820 W3WAVE Subr 163 W3WAVEMD Module 2 COMPILER OPTIONS BEING USED -align nocommons -align nodcommons -align noqcommons -align records -align nosequence -align norec1byte -align norec2byte -align norec4byte -align norec8byte -align norec16byte -altparam -assume accuracy_sensitive -assume nobscc -assume nobuffered_io -assume byterecl -assume cc_omp -assume nocstring -assume nodummy_aliases -assume nofpe_summary -assume noieee_fpe_flags -assume nominus0 -assume noold_boz -assume old_unit_star -assume old_ldout_format -assume noold_logical_ldio -assume old_maxminloc -assume old_xor -assume protect_constants -assume noprotect_parens -assume split_common -assume source_include -assume nostd_intent_in -assume nostd_mod_proc_name -assume norealloc_lhs -assume underscore -assume no2underscores -auto no -auto_scalar no -bintext -ccdefault default -check noargs -check noarg_temp_created -check nobounds -check noformat -check nooutput_conversion -check nooverflow -check nopointers -check power -check noshape -check nounderflow -check nouninitialized -coarray-num-procs 0 no -coarray-config-file -convert big_endian -cross_reference -D __INTEL_COMPILER=1210 -D __unix__ -D __unix -D __linux__ -D __linux -D __gnu_linux__ -D unix -D linux -D __ELF__ -D __x86_64 -D __x86_64__ -D _MT -D __INTEL_COMPILER_BUILD_DATE=20120612 -D _OPENMP=201107 -D __pentium4 -D __pentium4__ -D __tune_pentium4__ -D __SSE2__ -D __SSE3__ -D __SSSE3__ -D __SSE4_1__ -D __SSE4_2__ -D __SSE__ -D __MMX__ -D __AVX__ Page 59 Source Listing W3NMIN 2014-09-16 16:49 w3wavemd.f90 -double_size 64 no -d_lines no -Qdyncom -error_limit 30 no -f66 no -f77rtl no -fast -fpscomp nofilesfromcmd -fpscomp nogeneral -fpscomp noioformat -fpscomp noldio_spacing -fpscomp nologicals no -fpconstant -fpe3 -fprm nearest no -ftz -fp_model noprecise -fp_model fast -fp_model nostrict -fp_model nosource -fp_model nodouble -fp_model noextended -fp_model novery_fast -fp_model noexcept -fp_model nono_except -heap_arrays 0 no -threadprivate_compat -free -g0 -iface nomixed_str_len_arg -iface nono_mixed_str_len_arg no -intconstant -integer_size 32 no -mixed_str_len_arg no -module -names lowercase no -noinclude -openmp -O2 no -pad_source -real_size 32 no -recursive -reentrancy threaded no -sharable_localsaves -vec=simd -show noinclude -show map -show options no -syntax_only no -threadcom no -U no -vms -w noall -w nonone -w alignments -w noargument_checking -w nodeclarations -w general -w noignore_bounds -w noignore_loc -w nointerfaces -w notruncated_source -w uncalled -w uninitialized -w nounused -w usage -includepath : /usrx/local/intel/composerxe/tbb/include/,/usr/include/,./,/usrx/local/intel/impi/4.0.3.008/intel64/include/, /usrx/local/intel/impi/4.0.3.008/intel64/include/,/usrx/local/intel/composerxe/mkl/include/,/usrx/local/intel/composerxe/tbb/include/, /gpfs/gp1/usrx/local/intel/composer_xe_2011_sp1.11.339/compiler/include/intel64/,/gpfs/gp1/usrx/local/intel/composer_xe_2011_sp1.11.339/compiler/include/, /usr/local/include/,/usr/lib/gcc/x86_64-redhat-linux/4.4.7/include/,/usr/include/,/usr/include/ -list filename : w3wavemd.lst -o filename : none COMPILER: Intel(R) Fortran 12.1-2100