Page 1 Source Listing W3IOPP 2014-09-16 17:02 w3iopomd.f90 1 !/ ------------------------------------------------------------------- / 2 MODULE W3IOPOMD 3 !/ 4 !/ +-----------------------------------+ 5 !/ | WAVEWATCH III NOAA/NCEP | 6 !/ | H. L. Tolman | 7 !/ | FORTRAN 90 | 8 !/ | Last update : 11-Nov-2013 | 9 !/ +-----------------------------------+ 10 !/ 11 !/ 25-Jan-2001 : Origination. ( version 2.00 ) 12 !/ 24-Jan-2001 : Flat grid version. ( version 2.06 ) 13 !/ 11-Jun-2001 : Clean-up. ( version 2.11 ) 14 !/ 10-Nov-2004 : Multiple grid version. ( version 3.06 ) 15 !/ 27-Jun-2006 : Adding file name preamble. ( version 3.09 ) 16 !/ 25-Jul-2006 : Adding grid ID per point. ( version 3.10 ) 17 !/ 01-May-2007 : Move O7a output from W3INIT. ( version 3.11 ) 18 !/ 29-May-2009 : Preparing distribution version. ( version 3.14 ) 19 !/ 30-Oct-2009 : Implement run-time grid selection. ( version 3.14 ) 20 !/ (W. E. Rogers & T. J. Campbell, NRL) 21 !/ 30-Oct-2009 : Implement curvilinear grid type. ( version 3.14 ) 22 !/ (W. E. Rogers & T. J. Campbell, NRL) 23 !/ 29-Oct-2010 : Implement unstructured grid ( version 3.14.4 ) 24 !/ (A. Roland and F. Ardhuin) 25 !/ 06-Dec-2010 : Change from GLOBAL (logical) to ICLOSE (integer) to 26 !/ specify index closure for a grid. ( version 3.14 ) 27 !/ (T. J. Campbell, NRL) 28 !/ 12-Jun-2012 : Add /RTD option or rotated grid option. 29 !/ (Jian-Guo Li) ( version 4.06 ) 30 !/ 02-Sep-2012 : Clean up of open BC for UG grids ( version 4.07 ) 31 !/ 25-Feb-2013 : ITOUT=0 bug correction for UG grids ( version 4.08 ) 32 !/ 11-Nov-2013 : SMC and rotated grid incorporated in the main 33 !/ trunk ( version 4.13 ) 34 !/ 35 !/ Copyright 2009 National Weather Service (NWS), 36 !/ National Oceanic and Atmospheric Administration. All rights 37 !/ reserved. WAVEWATCH III is a trademark of the NWS. 38 !/ No unauthorized use without permission. 39 !/ 40 ! 1. Purpose : 41 ! 42 ! Process point output. 43 ! 44 ! 2. Variables and types : 45 ! 46 ! Name Type Scope Description 47 ! ---------------------------------------------------------------- 48 ! VEROPT C*10 Private Point output file version number. 49 ! IDSTR C*32 Private Point output file ID string. 50 ! ---------------------------------------------------------------- 51 ! 52 ! 3. Subroutines and functions : 53 ! 54 ! Name Type Scope Description 55 ! ---------------------------------------------------------------- 56 ! W3IOPP Subr. Public Preprocessing of point output req. 57 ! W3IOPE Subr. Public Extract point data from grid. Page 2 Source Listing W3IOPP 2014-09-16 17:02 w3iopomd.f90 58 ! W3IOPO Subr. Public Point data IO. 59 ! ---------------------------------------------------------------- 60 ! 61 ! 4. Subroutines and functions used : 62 ! 63 ! Name Type Module Description 64 ! ---------------------------------------------------------------- 65 ! W3SETO Subr. W3ODATMD Data structure management. 66 ! W3SETG Subr. W3GDATMD Data structure management. 67 ! W3SETW Subr. W3WDATMD Data structure management. 68 ! W3DMO2 Subr. W3ODATMD Data structure management. 69 ! STRACE Subr. W3SERVMD Subroutine tracing. 70 ! EXTCDE Subr. W3SERVMD Program abort with exit code. 71 ! MPI_STARTALL, MPIWAITALL 72 ! Subr. MPI persistent communication routines. 73 ! ---------------------------------------------------------------- 74 ! 75 ! 5. Remarks : 76 ! 77 ! - Allocation of allocatable arrays takes place at different 78 ! places throughout the code, in W3IOPP on write, and in 79 ! W3IOPO on read. 80 ! 81 ! 6. Switches : 82 ! 83 ! !/S Enable subroutine tracing. 84 ! !/T Enable test output. 85 ! 86 ! !/SHRD Switch for shared / distributed memory architecture. 87 ! !/DIST Id. 88 ! !/MPI MPI message passing. 89 ! 90 ! !/O7a Diagnostic output for output points. 91 ! 92 ! 7. Source code : 93 ! 94 !/ ------------------------------------------------------------------- / 95 PUBLIC 96 !/ 97 !/ Private parameter statements (ID strings) 98 !/ 99 CHARACTER(LEN=10), PARAMETER, PRIVATE :: VEROPT = 'III 2.01 ' 100 CHARACTER(LEN=31), PARAMETER, PRIVATE :: & 101 IDSTR = 'WAVEWATCH III POINT OUTPUT FILE' 102 !/ 103 CONTAINS 104 !/ ------------------------------------------------------------------- / 105 SUBROUTINE W3IOPP ( NPT, XPT, YPT, PNAMES, IMOD ) 106 !/ 107 !/ +-----------------------------------+ 108 !/ | WAVEWATCH III NOAA/NCEP | 109 !/ | H. L. Tolman | 110 !/ | FORTRAN 90 | 111 !/ | Last update : 02-Sep-2012 | 112 !/ +-----------------------------------+ 113 !/ 114 !/ 14-Jan-1999 : Distributed FORTRAN 77 version. ( version 1.18 ) Page 3 Source Listing W3IOPP 2014-09-16 17:02 w3iopomd.f90 115 !/ 30-Dec-1999 : Upgrade to FORTRAN 90 ( version 2.00 ) 116 !/ Major changes to logistics. 117 !/ 24-Jan-2001 : Flat grid version. ( version 2.06 ) 118 !/ 09-Nov-2004 : Multiple grid version. ( version 3.06 ) 119 !/ 25-Jul-2006 : Adding grid ID per point. ( version 3.10 ) 120 !/ 01-May-2007 : Move O7a output from W3INIT. ( version 3.11 ) 121 !/ 30-Oct-2009 : Implement run-time grid selection. ( version 3.14 ) 122 !/ (W. E. Rogers & T. J. Campbell, NRL) 123 !/ 30-Oct-2009 : Implement curvilinear grid type. ( version 3.14 ) 124 !/ (W. E. Rogers & T. J. Campbell, NRL) 125 !/ 06-Dec-2010 : Change from GLOBAL (logical) to ICLOSE (integer) to 126 !/ specify index closure for a grid. ( version 3.14 ) 127 !/ (T. J. Campbell, NRL) 128 !/ 12-Jun-2012 : Add /RTD option or rotated grid option. 129 !/ (Jian-Guo Li) ( version 4.06 ) 130 !/ 02-Sep-2012 : Clean up of open BC for UG grids ( version 4.07 ) 131 !/ 132 ! 1. Purpose : 133 ! 134 ! Preprocessing of point output. 135 ! 136 ! 2. Method : 137 ! 138 ! Check location of points in grid and calculate interpolation 139 ! factors. 140 ! 141 ! 3. Parameters : 142 ! 143 ! Parameter list 144 ! ---------------------------------------------------------------- 145 ! NPT Int. I Number of output points in input. 146 ! XPT R.A. I/O X (longitude) coordinates of output points. 147 ! YPT R.A. I/O Id. Y. 148 ! PNAMES C*10 I Names of output points. 149 ! IMOD Int. I Grid ID number. 150 ! ---------------------------------------------------------------- 151 ! 152 ! Local data 153 ! ---------------------------------------------------------------- 154 ! ACC Real "Accuracy" factor to determine if output point 155 ! is grid point. 156 ! ---------------------------------------------------------------- 157 ! 158 ! 4. Subroutines used : 159 ! 160 ! See module documentation. 161 ! 162 ! 5. Called by : 163 ! 164 ! Name Type Module Description 165 ! ---------------------------------------------------------------- 166 ! W3INIT Subr. W3INITMD Wave model initialization routine. 167 ! ---------------------------------------------------------------- 168 ! 169 ! 6. Error messages : 170 ! 171 ! - Warnings for points out of the grid or on land. Page 4 Source Listing W3IOPP 2014-09-16 17:02 w3iopomd.f90 172 ! 173 ! 7. Remarks : 174 ! 175 ! - The output points are obtained by bi-linear interpolation from 176 ! the spectra at the grid points. Given the possibility of ice 177 ! coverage, the actual interpolation factors can only be 178 ! determined at the actual output time. Hence only the basic 179 ! bilinear interpolation factors are stored. 180 ! - Implementation of the /O7a diagnostic output section for curvilinear 181 ! grids is currently incomplete and non-functional. 182 ! 183 ! 8. Structure : 184 ! 185 ! ------------------------------------------- 186 ! Determine grid range 187 ! do for all defined points 188 ! ----------------------------------------- 189 ! Check if point within grid 190 ! Calculate interpolation data 191 ! Check if point not on land 192 ! Store interpolation data 193 ! ------------------------------------------- 194 ! 195 ! 9. Switches : 196 ! 197 ! !/S Enable subroutine tracing. 198 ! !/T Test output. 199 ! 200 ! !/O7a Diagnostic output for output points. 201 ! 202 ! 10. Source code : 203 ! 204 !/ ------------------------------------------------------------------- / 205 USE W3GSRUMD 206 USE W3GDATMD, ONLY: NTH, NK, NSPEC, NX, NY, X0, Y0, SX, GSU,& 207 RLGTYPE, CLGTYPE, UNGTYPE, GTYPE, FLAGLL, & 208 ICLOSE,ICLOSE_NONE,ICLOSE_SMPL,ICLOSE_TRPL, & 209 MAPSTA, MAPFS, FILEXT, ZB, TRNX, TRNY 210 USE W3GDATMD, ONLY: XYB, TRIGP,MAXX, MAXY, DXYMAX 211 USE W3ODATMD, ONLY: W3DMO2 212 USE W3ODATMD, ONLY: NDSE, NDST, IAPROC, NAPERR, NAPOUT, SCREEN, & 213 NOPTS, PTLOC, PTNME, GRDID, IPTINT, PTIFAC 214 USE W3SERVMD, ONLY: EXTCDE 215 USE W3TRIAMD 216 ! 217 IMPLICIT NONE 218 !/ 219 !/ ------------------------------------------------------------------- / 220 !/ Parameter list 221 !/ 222 INTEGER, INTENT(IN) :: NPT, IMOD 223 REAL, INTENT(INOUT) :: XPT(NPT), YPT(NPT) 224 CHARACTER(LEN=10),INTENT(IN) :: PNAMES(NPT) 225 !/ 226 !/ ------------------------------------------------------------------- / 227 !/ Local parameters 228 !/ Page 5 Source Listing W3IOPP 2014-09-16 17:02 w3iopomd.f90 229 LOGICAL :: INGRID 230 INTEGER :: IPT, J, K 231 INTEGER :: IX1, IY1, IXS, IYS 232 INTEGER :: IX(4), IY(4) ! Indices of points used in interp. 233 REAL :: RD(4) ! Interpolation coefficient 234 REAL, PARAMETER :: ACC = 0.05 235 REAL :: FACTOR 236 INTEGER :: ITOUT ! Triangle index in unstructured grids 237 ! 238 !/ 239 !/ 240 !/ ------------------------------------------------------------------- / 241 !/ 242 ! 243 IF ( FLAGLL ) THEN 244 FACTOR = 1. 245 ELSE 246 FACTOR = 1.E-3 247 END IF 248 ! 249 CALL W3DMO2 ( IMOD, NDSE, NDST, NPT ) 250 GRDID = FILEXT 251 ! 252 NOPTS = 0 253 ! 254 ! Removed by F.A. 2011/04/04 /T CALL W3GSUP( GSU, NDST ) 255 ! 256 ! Loop over output points 257 ! 258 DO IPT=1, NPT 259 ! 260 ! Check if point within grid and compute interpolation weights 261 ! 262 IF (GTYPE .NE. UNGTYPE) THEN 263 INGRID = W3GRMP( GSU, XPT(IPT), YPT(IPT), IX, IY, RD ) 264 ELSE 265 CALL IS_IN_UNGRID_INTERP(IPT, XPT, YPT, itout, IX, IY, RD) 266 INGRID = (ITOUT.GT.0) 267 END IF 268 ! 269 IF ( .NOT.INGRID ) THEN 270 IF ( IAPROC .EQ. NAPERR ) THEN 271 IF ( FLAGLL ) THEN 272 WRITE (NDSE,1000) XPT(IPT), YPT(IPT), PNAMES(IPT) 273 ELSE 274 WRITE (NDSE,1001) XPT(IPT), YPT(IPT), PNAMES(IPT) 275 END IF 276 END IF 277 CYCLE 278 END IF 279 ! 280 ! Check if point not on land 281 ! 282 IF ( MAPSTA(IY(1),IX(1)) .EQ. 0 .AND. & 283 MAPSTA(IY(2),IX(2)) .EQ. 0 .AND. & 284 MAPSTA(IY(3),IX(3)) .EQ. 0 .AND. & 285 MAPSTA(IY(4),IX(4)) .EQ. 0 ) THEN Page 6 Source Listing W3IOPP 2014-09-16 17:02 w3iopomd.f90 286 IF ( IAPROC .EQ. NAPERR ) THEN 287 IF ( FLAGLL ) THEN 288 WRITE (NDSE,1002) XPT(IPT), YPT(IPT), PNAMES(IPT) 289 ELSE 290 WRITE (NDSE,1003) XPT(IPT), YPT(IPT), PNAMES(IPT) 291 END IF 292 END IF 293 CYCLE 294 END IF 295 ! 296 ! Store interpolation data 297 ! 298 NOPTS = NOPTS + 1 299 ! 300 PTLOC (1,NOPTS) = XPT(IPT) 301 PTLOC (2,NOPTS) = YPT(IPT) 302 ! 303 DO K = 1,4 304 IPTINT(1,K,NOPTS) = IX(K) 305 IPTINT(2,K,NOPTS) = IY(K) 306 PTIFAC(K,NOPTS) = RD(K) 307 END DO 308 309 PTNME(NOPTS) = PNAMES(IPT) 310 ! 311 END DO ! End loop over output points (IPT). 312 ! 313 ! Diagnostic output 314 ! 315 316 ! 317 RETURN 318 ! 319 ! Formats 320 ! 321 1000 FORMAT (/' *** WAVEWATCH-III WARNING :'/ & 322 ' OUTPUT POINT OUT OF GRID : ',2F10.3,2X,A/ & 323 ' POINT SKIPPPED '/) 324 1001 FORMAT (/' *** WAVEWATCH-III WARNING :'/ & 325 ' OUTPUT POINT OUT OF GRID : ',2E10.3,2X,A/ & 326 ' POINT SKIPPPED '/) 327 ! 328 1002 FORMAT (/' *** WAVEWATCH-III WARNING :'/ & 329 ' OUTPUT POINT ON LAND : ',2F10.3,2X,A/ & 330 ' POINT SKIPPPED '/) 331 1003 FORMAT (/' *** WAVEWATCH-III WARNING :'/ & 332 ' OUTPUT POINT ON LAND : ',2E10.3,2X,A/ & 333 ' POINT SKIPPPED '/) 334 ! 335 !/ 336 !/ End of W3IOPP ----------------------------------------------------- / 337 !/ 338 END SUBROUTINE W3IOPP Page 7 Source Listing W3IOPP 2014-09-16 17:02 Entry Points w3iopomd.f90 ENTRY POINTS Name w3iopomd_mp_w3iopp_ SYMBOL CROSS REFERENCE Name Object Declared Type Bytes Dimen Elements Attributes References 1000 Label 321 272 1001 Label 324 274 1002 Label 328 288 1003 Label 331 290 ACC Param 234 R(4) 4 scalar CLGTYPE Param 207 I(4) 4 scalar 207 DXYMAX Local 210 R(4) 4 scalar PTR 210 EXTCDE Subr 214 214 FACTOR Local 235 R(4) 4 scalar 244,246 FILEXT Local 209 CHAR 10 scalar PTR 209,250 FLAGLL Local 207 L(4) 4 scalar 207,243,271,287 GRDID Local 213 CHAR 10 1 1 PTR 213,250 GSU Local 206 T_GSU 8 scalar PTR 206,263 GTYPE Local 207 I(4) 4 scalar PTR 207,262 IAPROC Local 212 I(4) 4 scalar PTR 212,270,286 ICLOSE Local 208 I(4) 4 scalar PTR 208 ICLOSE_NONE Param 208 I(4) 4 scalar 208 ICLOSE_SMPL Param 208 I(4) 4 scalar 208 ICLOSE_TRPL Param 208 I(4) 4 scalar 208 IMOD Dummy 105 I(4) 4 scalar ARG,IN 249 INGRID Local 229 L(4) 4 scalar 263,266,269 IPT Local 230 I(4) 4 scalar 258,263,265,272,274,288,290,300,30 1,309 IPTINT Local 213 I(4) 4 3 1 PTR 213,304,305 IS_IN_UNGRID_INTERP Subr 265 265 ITOUT Local 236 I(4) 4 scalar 265,266 IX Local 232 I(4) 4 1 4 263,265,282,283,284,285,304 IX1 Local 231 I(4) 4 scalar IXS Local 231 I(4) 4 scalar IY Local 232 I(4) 4 1 4 263,265,282,283,284,285,305 IY1 Local 231 I(4) 4 scalar IYS Local 231 I(4) 4 scalar J Local 230 I(4) 4 scalar K Local 230 I(4) 4 scalar 303,304,305,306 MAPFS Local 209 I(4) 4 2 1 PTR 209 MAPSTA Local 209 I(4) 4 2 1 PTR 209,282,283,284,285 MAXX Local 210 R(4) 4 scalar PTR 210 MAXY Local 210 R(4) 4 scalar PTR 210 NAPERR Local 212 I(4) 4 scalar PTR 212,270,286 NAPOUT Local 212 I(4) 4 scalar PTR 212 NDSE Local 212 I(4) 4 scalar PTR 212,249,272,274,288,290 NDST Local 212 I(4) 4 scalar PTR 212,249 NK Local 206 I(4) 4 scalar PTR 206 NOPTS Local 213 I(4) 4 scalar PTR 213,252,298,300,301,304,305,306,30 Page 8 Source Listing W3IOPP 2014-09-16 17:02 Symbol Table w3iopomd.f90 Name Object Declared Type Bytes Dimen Elements Attributes References 9 NPT Dummy 105 I(4) 4 scalar ARG,IN 223,224,249,258 NSPEC Local 206 I(4) 4 scalar PTR 206 NTH Local 206 I(4) 4 scalar PTR 206 NX Local 206 I(4) 4 scalar PTR 206 NY Local 206 I(4) 4 scalar PTR 206 PNAMES Dummy 105 CHAR 10 1 0 ARG,IN 272,274,288,290,309 PTIFAC Local 213 R(4) 4 2 1 PTR 213,306 PTLOC Local 213 R(4) 4 2 1 PTR 213,300,301 PTNME Local 213 CHAR 10 1 1 PTR 213,309 RD Local 233 R(4) 4 1 4 263,265,306 RLGTYPE Param 207 I(4) 4 scalar 207 SCREEN Local 212 I(4) 4 scalar PTR 212 SX Local 206 R(4) 4 scalar PTR 206 TRIGP Local 210 I(4) 4 2 1 PTR 210 TRNX Local 209 R(4) 4 2 1 PTR 209 TRNY Local 209 R(4) 4 2 1 PTR 209 UNGTYPE Param 207 I(4) 4 scalar 207,262 W3DMO2 Subr 211 211,249 W3GDATMD Module 206 206,210 W3GRMP Local 263 scalar 263 W3GRMP_R4 Func 263 L(4) 4 scalar PRIV 263 W3GSRUMD Module 205 205 W3IOPP Subr 105 W3ODATMD Module 211 211,212 W3SERVMD Module 214 214 W3TRIAMD Module 215 215 X0 Local 206 R(4) 4 scalar PTR 206 XPT Dummy 105 R(4) 4 1 0 ARG,TGT,INOUT 263,265,272,274,288,290,300 XYB Local 210 R(8) 8 2 1 PTR 210 Y0 Local 206 R(4) 4 scalar PTR 206 YPT Dummy 105 R(4) 4 1 0 ARG,TGT,INOUT 263,265,272,274,288,290,301 ZB Local 209 R(4) 4 1 1 PTR 209 Page 9 Source Listing W3IOPP 2014-09-16 17:02 w3iopomd.f90 339 !/ ------------------------------------------------------------------- / 340 SUBROUTINE W3IOPE ( A ) 341 !/ 342 !/ +-----------------------------------+ 343 !/ | WAVEWATCH III NOAA/NCEP | 344 !/ | H. L. Tolman | 345 !/ | FORTRAN 90 | 346 !/ | Last update : 30-Oct-2009 | 347 !/ +-----------------------------------+ 348 !/ 349 !/ 12-Jan-1999 : Distributed FORTRAN 77 version. ( version 1.18 ) 350 !/ 25-Jan-2000 : Upgrade to FORTRAN 90 ( version 2.00 ) 351 !/ Major changes to logistics. 352 !/ 11-Jun-2001 : Clean-up. ( version 2.11 ) 353 !/ 09-Nov-2004 : Multiple grid version. ( version 3.06 ) 354 !/ 30-Oct-2009 : Implement curvilinear grid type. ( version 3.14 ) 355 !/ (W. E. Rogers & T. J. Campbell, NRL) 356 !/ 29-Oct-2010 : Implement unstructured grids ( version 3.14.4 ) 357 !/ (A. Roland and F. Ardhuin) 358 !/ 12-Jun-2012 : Add /RTD option or rotated grid option. 359 !/ (Jian-Guo Li) ( version 4.06 ) 360 !/ 361 ! 1. Purpose : 362 ! 363 ! Extract point output data and store in output COMMONs. This 364 ! action is taken from an earlier version of W3IOPO so that the 365 ! point output postprocessor does not need the full sea-point 366 ! grid to be able to run. 367 ! Note that the output spectrum is F(f,theta). Interpolation 368 ! is performed for this spectrum. 369 ! 370 ! 3. Parameters : 371 ! 372 ! Parameter list 373 ! ---------------------------------------------------------------- 374 ! A R.A. I Action spectra on storage grid. 375 ! ---------------------------------------------------------------- 376 ! 377 ! 4. Subroutines used : 378 ! 379 ! See module documentation. 380 ! 381 ! 5. Called by : 382 ! 383 ! Name Type Module Description 384 ! ---------------------------------------------------------------- 385 ! W3WAVE Subr. W3WAVEMD Actual wave model routine. 386 ! ---------------------------------------------------------------- 387 ! 388 ! 6. Error messages : 389 ! 390 ! None. 391 ! 392 ! 7. Remarks : 393 ! 394 ! - To allow for dynamic ice edges, interpolation factors are 395 ! calculated for every time step separately. Page 10 Source Listing W3IOPE 2014-09-16 17:02 w3iopomd.f90 396 ! - Wind current and depth data are interpolated ignoring ice, 397 ! spectrum is interpolated removing ice points. 398 ! - Spectra are left in par list to allow for change of shape of 399 ! arrays. 400 ! - IMOD is not passed to this routine. Since it is used only 401 ! in W3WAVE, it is assumed that the pointer are set 402 ! appropriately outside this routine. 403 ! 404 ! 8. Structure : 405 ! 406 ! See source code. 407 ! 408 ! 9. Switches : 409 ! 410 ! !/SHRD Switch for shared / distributed memory architecture. 411 ! !/DIST Id. 412 ! !/MPI Switch for message passing method. 413 ! 414 ! !/S Enable subroutine tracing. 415 ! !/T Test output. 416 ! 417 ! 10. Source code : 418 ! 419 !/ ------------------------------------------------------------------- / 420 USE CONSTANTS 421 USE W3GDATMD, ONLY: NK, NTH, SIG, NX, NY, NSEA, NSEAL, & 422 MAPSTA, MAPFS 423 USE W3ADATMD, ONLY: CG, DW, UA, UD, AS, CX, CY, SP => SPPNT 424 USE W3ODATMD, ONLY: NDST, NOPTS, IPTINT, PTIFAC, IL, IW, II, & 425 DPO, WAO, WDO, ASO, CAO, CDO, SPCO 426 USE W3SERVMD, ONLY: EXTCDE 427 ! 428 IMPLICIT NONE 429 ! 430 !/ 431 !/ ------------------------------------------------------------------- / 432 !/ Parameter list 433 !/ 434 REAL, INTENT(IN) :: A(NTH,NK,0:NSEAL) 435 !/ 436 !/ ------------------------------------------------------------------- / 437 !/ Local parameters 438 !/ 439 INTEGER :: I, IX1, IY1, IX(4), IY(4), J, IS(4), & 440 IM(4), IK, ITH, ISP 441 REAL :: RD(4), RDS, RDI, FACRD, & 442 WNDX, WNDY, CURX, CURY, FAC1(NK), & 443 FAC2(NK), FAC3(NK), FAC4(NK) 444 !/ 445 !/ ------------------------------------------------------------------- / 446 !/ 447 ! 448 CX(0) = 0. 449 CY(0) = 0. 450 ! 451 ! Loop over spectra -------------------------------------------------- * 452 ! Page 11 Source Listing W3IOPE 2014-09-16 17:02 w3iopomd.f90 453 DO I=1, NOPTS 454 ! 455 ! Unpack interpolation data 456 ! 457 IX(:) = IPTINT(1,:,I) 458 IY(:) = IPTINT(2,:,I) 459 RD(:) = PTIFAC(:,I) 460 ! 461 ! Correct for land and ice and get sea point counters 462 ! 463 IL(I) = 0 464 IW(I) = 0 465 II(I) = 0 466 RDS = 0. 467 RDI = 0. 468 ! 469 DO J=1, 4 470 IS(J) = MAPFS (IY(J),IX(J)) 471 IM(J) = MAPSTA(IY(J),IX(J)) 472 IF ( IM(J).GT.0 ) THEN 473 IW(I) = IW(I) + 1 474 RDS = RDS + RD(J) 475 ELSE 476 IF ( IM(J).LT.0 ) THEN 477 II(I) = II(I) + 1 478 RDI = RDI + RD(J) 479 ELSE 480 IL(I) = IL(I) + 1 481 RD(J) = 0. 482 END IF 483 END IF 484 END DO 485 ! 486 ! Depth, wind and current, ignore ice 487 ! 488 IF ( RDS+RDI .GT. 1.E-7 ) THEN 489 FACRD = 1. / (RDS+RDI) 490 RD = RD * FACRD 491 END IF 492 ! 493 ! Interpolate depth wind and current 494 ! 495 DPO(I) = RD(1)*DW(IS(1)) + RD(2)*DW(IS(2)) + & 496 RD(3)*DW(IS(3)) + RD(4)*DW(IS(4)) 497 ! 498 WNDX = RD(1) * UA(IS(1)) * COS(UD(IS(1))) + & 499 RD(2) * UA(IS(2)) * COS(UD(IS(2))) + & 500 RD(3) * UA(IS(3)) * COS(UD(IS(3))) + & 501 RD(4) * UA(IS(4)) * COS(UD(IS(4))) 502 WNDY = RD(1) * UA(IS(1)) * SIN(UD(IS(1))) + & 503 RD(2) * UA(IS(2)) * SIN(UD(IS(2))) + & 504 RD(3) * UA(IS(3)) * SIN(UD(IS(3))) + & 505 RD(4) * UA(IS(4)) * SIN(UD(IS(4))) 506 ! 507 WAO(I) = SQRT ( WNDX**2 + WNDY**2 ) 508 IF ( WAO(I).GT.1.E-7 ) THEN 509 WDO(I) = ATAN2(WNDY,WNDX) Page 12 Source Listing W3IOPE 2014-09-16 17:02 w3iopomd.f90 510 ELSE 511 WDO(I) = 0. 512 END IF 513 ! 514 ASO(I) = RD(1)*AS(IS(1)) + RD(2)*AS(IS(2)) + & 515 RD(3)*AS(IS(3)) + RD(4)*AS(IS(4)) 516 ! 517 CURX = RD(1)*CX(IS(1)) + RD(2)*CX(IS(2)) + & 518 RD(3)*CX(IS(3)) + RD(4)*CX(IS(4)) 519 CURY = RD(1)*CY(IS(1)) + RD(2)*CY(IS(2)) + & 520 RD(3)*CY(IS(3)) + RD(4)*CY(IS(4)) 521 ! 522 CAO(I) = SQRT ( CURX**2 + CURY**2 ) 523 IF ( CAO(I).GT.1.E-7 ) THEN 524 CDO(I) = ATAN2(CURY,CURX) 525 ELSE 526 CDO(I) = 0. 527 END IF 528 ! 529 ! Interp. weights for spectra, no ice points (spectra by def. zero) 530 ! 531 IF ( RDS .GT. 1.E-7 ) THEN 532 FACRD = (RDS+RDI) / RDS 533 RD = RD * FACRD 534 END IF 535 ! 536 ! Extract spectra, shared memory version 537 ! (done in separate step for MPP compatibility) 538 ! 539 DO J=1, 4 540 DO IK=1, NK 541 DO ITH=1, NTH 542 SP(ITH,IK,J) = A(ITH,IK,IS(J)) 543 END DO 544 END DO 545 END DO 546 ! 547 ! Extract spectra, distributed memory version(s) 548 ! 549 ! Interpolate spectrum 550 ! 551 DO IK=1, NK 552 FAC1(IK) = TPI * SIG(IK) / CG(IK,IS(1)) 553 FAC2(IK) = TPI * SIG(IK) / CG(IK,IS(2)) 554 FAC3(IK) = TPI * SIG(IK) / CG(IK,IS(3)) 555 FAC4(IK) = TPI * SIG(IK) / CG(IK,IS(4)) 556 END DO 557 ! 558 DO IK=1,NK 559 DO ITH=1,NTH 560 ISP = ITH + (IK-1)*NTH 561 SPCO(ISP,I) = RD(1) * SP(ITH,IK,1) * FAC1(IK) & 562 + RD(2) * SP(ITH,IK,2) * FAC2(IK) & 563 + RD(3) * SP(ITH,IK,3) * FAC3(IK) & 564 + RD(4) * SP(ITH,IK,4) * FAC4(IK) 565 END DO 566 END DO Page 13 Source Listing W3IOPE 2014-09-16 17:02 w3iopomd.f90 567 ! 568 569 ! FA COMMENTED OUT: BUG 570 !At line 1974 of file w3arrymd.f90 571 !Fortran runtime error: Index '52' of dimension 1 of array 'pnum2' above upper bound of 51 572 ! 573 END DO 574 ! 575 RETURN 576 ! 577 ! Formats 578 ! 579 !/ 580 !/ End of W3IOPE ----------------------------------------------------- / 581 !/ 582 END SUBROUTINE W3IOPE ENTRY POINTS Name w3iopomd_mp_w3iope_ SYMBOL CROSS REFERENCE Name Object Declared Type Bytes Dimen Elements Attributes References A Dummy 340 R(4) 4 3 0 ARG,IN 542 AS Local 423 R(4) 4 1 1 PTR 423,514,515 ASO Local 425 R(4) 4 1 1 PTR 425,514 ATAN2 Func 509 scalar 509,524 CAO Local 425 R(4) 4 1 1 PTR 425,522,523 CDO Local 425 R(4) 4 1 1 PTR 425,524,526 CG Local 423 R(4) 4 2 1 PTR 423,552,553,554,555 CONSTANTS Module 420 420 COS Func 498 scalar 498,499,500,501 CURX Local 442 R(4) 4 scalar 517,522,524 CURY Local 442 R(4) 4 scalar 519,522,524 CX Local 423 R(4) 4 1 1 PTR 423,448,517,518 CY Local 423 R(4) 4 1 1 PTR 423,449,519,520 DPO Local 425 R(4) 4 1 1 PTR 425,495 DW Local 423 R(4) 4 1 1 PTR 423,495,496 EXTCDE Subr 426 426 FAC1 Local 442 R(4) 4 1 0 552,561 FAC2 Local 443 R(4) 4 1 0 553,562 FAC3 Local 443 R(4) 4 1 0 554,563 FAC4 Local 443 R(4) 4 1 0 555,564 FACRD Local 441 R(4) 4 scalar 489,490,532,533 I Local 439 I(4) 4 scalar 453,457,458,459,463,464,465,473,47 7,480,495,507,508,509,511,514,522, 523,524,526,561 II Local 424 I(4) 4 1 1 PTR 424,465,477 IK Local 440 I(4) 4 scalar 540,542,551,552,553,554,555,558,56 0,561,562,563,564 IL Local 424 I(4) 4 1 1 PTR 424,463,480 Page 14 Source Listing W3IOPE 2014-09-16 17:02 Symbol Table w3iopomd.f90 Name Object Declared Type Bytes Dimen Elements Attributes References IM Local 440 I(4) 4 1 4 471,472,476 IPTINT Local 424 I(4) 4 3 1 PTR 424,457,458 IS Local 439 I(4) 4 1 4 470,495,496,498,499,500,501,502,50 3,504,505,514,515,517,518,519,520, 542,552,553,554,555 ISP Local 440 I(4) 4 scalar 560,561 ITH Local 440 I(4) 4 scalar 541,542,559,560,561,562,563,564 IW Local 424 I(4) 4 1 1 PTR 424,464,473 IX Local 439 I(4) 4 1 4 457,470,471 IX1 Local 439 I(4) 4 scalar IY Local 439 I(4) 4 1 4 458,470,471 IY1 Local 439 I(4) 4 scalar J Local 439 I(4) 4 scalar 469,470,471,472,474,476,478,481,53 9,542 MAPFS Local 422 I(4) 4 2 1 PTR 422,470 MAPSTA Local 422 I(4) 4 2 1 PTR 422,471 NDST Local 424 I(4) 4 scalar PTR 424 NK Local 421 I(4) 4 scalar PTR 421,434,442,443,540,551,558 NOPTS Local 424 I(4) 4 scalar PTR 424,453 NSEA Local 421 I(4) 4 scalar PTR 421 NSEAL Local 421 I(4) 4 scalar PTR 421,434 NTH Local 421 I(4) 4 scalar PTR 421,434,541,559,560 NX Local 421 I(4) 4 scalar PTR 421 NY Local 421 I(4) 4 scalar PTR 421 PTIFAC Local 424 R(4) 4 2 1 PTR 424,459 RD Local 441 R(4) 4 1 4 459,474,478,481,490,495,496,498,49 9,500,501,502,503,504,505,514,515, 517,518,519,520,533,561,562,563,56 4 RDI Local 441 R(4) 4 scalar 467,478,488,489,532 RDS Local 441 R(4) 4 scalar 466,474,488,489,531,532 SIG Local 421 R(4) 4 1 1 PTR 421,552,553,554,555 SIN Func 502 scalar 502,503,504,505 SP Local 423 R(4) 4 3 1 PTR 542,561,562,563,564 SPCO Local 425 R(4) 4 2 1 PTR 425,561 SQRT Func 507 scalar 507,522 TPI Param 552 R(4) 4 scalar 552,553,554,555 UA Local 423 R(4) 4 1 1 PTR 423,498,499,500,501,502,503,504,50 5 UD Local 423 R(4) 4 1 1 PTR 423,498,499,500,501,502,503,504,50 5 W3ADATMD Module 423 423 W3GDATMD Module 421 421 W3IOPE Subr 340 W3ODATMD Module 424 424 W3SERVMD Module 426 426 WAO Local 425 R(4) 4 1 1 PTR 425,507,508 WDO Local 425 R(4) 4 1 1 PTR 425,509,511 WNDX Local 442 R(4) 4 scalar 498,507,509 WNDY Local 442 R(4) 4 scalar 502,507,509 Page 15 Source Listing W3IOPE 2014-09-16 17:02 w3iopomd.f90 583 !/ ------------------------------------------------------------------- / 584 SUBROUTINE W3IOPO ( INXOUT, NDSOP, IOTST, IMOD ) 585 !/ 586 !/ +-----------------------------------+ 587 !/ | WAVEWATCH III NOAA/NCEP | 588 !/ | H. L. Tolman | 589 !/ | FORTRAN 90 | 590 !/ | Last update : 25-Jul-2006 | 591 !/ +-----------------------------------+ 592 !/ 593 !/ 07-Jan-1999 : Distributed FORTRAN 77 version. ( version 1.18 ) 594 !/ 30-Dec-1999 : Upgrade to FORTRAN 90 ( version 2.00 ) 595 !/ Major changes to logistics. 596 !/ 10-Nov-2004 : Multiple grid version. ( version 3.06 ) 597 !/ 27-Jun-2006 : Adding file name preamble. ( version 3.09 ) 598 !/ 25-Jul-2006 : Adding grid ID per point. ( version 3.10 ) 599 !/ 600 ! 1. Purpose : 601 ! 602 ! Read/write point output. 603 ! 604 ! 3. Parameters : 605 ! 606 ! Parameter list 607 ! ---------------------------------------------------------------- 608 ! INXOUT C*(*) I Test string for read/write, valid are: 609 ! 'READ' and 'WRITE'. 610 ! NDSOP Int. I File unit number. 611 ! IOTST Int. O Test indictor for reading. 612 ! 0 : Data read. 613 ! -1 : Past end of file. 614 ! IMOD I(O) I Model number for W3GDAT etc. 615 ! ---------------------------------------------------------------- 616 ! 617 ! 4. Subroutines used : 618 ! 619 ! See module documentation. 620 ! 621 ! 5. Called by : 622 ! 623 ! Name Type Module Description 624 ! ---------------------------------------------------------------- 625 ! W3WAVE Subr. W3WAVEMD Actual wave model routine. 626 ! WW3_OUTP Prog. N/A Postprocessing for point output. 627 ! GX_OUTP Prog. N/A Grads postprocessing for point output. 628 ! ---------------------------------------------------------------- 629 ! 630 ! 6. Error messages : 631 ! 632 ! Tests on INXOUT, file status and on array dimensions. 633 ! 634 ! 7. Remarks : 635 ! 636 ! - The output file has the pre-defined name 'out_pnt.FILEXT'. 637 ! - In MPP version of model data is supposed to be gatherd at the 638 ! correct processor before the routine is called. 639 ! - No error output filtering needed. Page 16 Source Listing W3IOPO 2014-09-16 17:02 w3iopomd.f90 640 ! 641 ! 8. Structure : 642 ! 643 ! See source code. 644 ! 645 ! 9. Switches : 646 ! 647 ! !/SHRD Switch for shared / distributed memory architecture. 648 ! !/DIST Id. 649 ! 650 ! !/S Enable subroutine tracing. 651 ! !/T Test output. 652 ! 653 ! 10. Source code : 654 ! 655 !/ ------------------------------------------------------------------- / 656 USE W3GDATMD, ONLY: W3SETG 657 USE W3WDATMD, ONLY: W3SETW 658 USE W3ODATMD, ONLY: W3SETO, W3DMO2 659 !/ 660 USE W3GDATMD, ONLY: NTH, NK, NSPEC, FILEXT 661 USE W3WDATMD, ONLY: TIME 662 USE W3ODATMD, ONLY: NDST, NDSE, IPASS => IPASS2, NOPTS, IPTINT, & 663 IL, IW, II, PTLOC, PTIFAC, DPO, WAO, WDO, & 664 ASO, CAO, CDO, SPCO, PTNME, O2INIT, FNMPRE, & 665 GRDID 666 !/ 667 USE W3SERVMD, ONLY: EXTCDE 668 ! 669 IMPLICIT NONE 670 !/ 671 !/ ------------------------------------------------------------------- / 672 !/ Parameter list 673 !/ 674 INTEGER, INTENT(IN) :: NDSOP 675 INTEGER, INTENT(OUT) :: IOTST 676 INTEGER, INTENT(IN), OPTIONAL :: IMOD 677 CHARACTER, INTENT(IN) :: INXOUT*(*) 678 !/ 679 !/ ------------------------------------------------------------------- / 680 !/ local parameters 681 !/ 682 INTEGER :: IGRD, IERR, MK, MTH, I, J 683 LOGICAL,SAVE :: WRITE 684 CHARACTER(LEN=31) :: IDTST 685 CHARACTER(LEN=10) :: VERTST 686 !/ 687 !/ ------------------------------------------------------------------- / 688 !/ 689 IPASS = IPASS + 1 690 IOTST = 0 691 ! 692 ! test input parameters ---------------------------------------------- * 693 ! 694 IF ( PRESENT(IMOD) ) THEN 695 IGRD = IMOD 696 ELSE Page 17 Source Listing W3IOPO 2014-09-16 17:02 w3iopomd.f90 697 IGRD = 1 698 END IF 699 ! 700 CALL W3SETO ( IGRD, NDSE, NDST ) 701 CALL W3SETG ( IGRD, NDSE, NDST ) 702 CALL W3SETW ( IGRD, NDSE, NDST ) 703 ! 704 IF (INXOUT.NE.'READ' .AND. INXOUT.NE.'WRITE' ) THEN 705 WRITE (NDSE,900) INXOUT 706 CALL EXTCDE ( 1 ) 707 END IF 708 ! 709 IF ( IPASS.EQ.1 ) THEN 710 WRITE = INXOUT.EQ.'WRITE' 711 ELSE 712 IF ( WRITE .AND. INXOUT.EQ.'READ' ) THEN 713 WRITE (NDSE,901) INXOUT 714 CALL EXTCDE ( 2 ) 715 END IF 716 END IF 717 ! 718 ! open file ---------------------------------------------------------- * 719 ! 720 IF ( IPASS.EQ.1 ) THEN 721 ! 722 I = LEN_TRIM(FILEXT) 723 J = LEN_TRIM(FNMPRE) 724 ! 725 IF ( WRITE ) THEN 726 OPEN (NDSOP,FILE=FNMPRE(:J)//'out_pnt.'//FILEXT(:I), & 727 FORM='UNFORMATTED',ERR=800,IOSTAT=IERR) 728 ELSE 729 OPEN (NDSOP,FILE=FNMPRE(:J)//'out_pnt.'//FILEXT(:I), & 730 FORM='UNFORMATTED',ERR=800,IOSTAT=IERR,STATUS='OLD') 731 END IF 732 ! 733 REWIND ( NDSOP ) 734 ! 735 ! test info ---------------------------------------------------------- * 736 ! ( IPASS = 1 ) 737 ! 738 IF ( WRITE ) THEN 739 WRITE (NDSOP) & 740 IDSTR, VEROPT, NK, NTH, NOPTS 741 ELSE 742 READ (NDSOP,END=801,ERR=802,IOSTAT=IERR) & 743 IDTST, VERTST, MK, MTH, NOPTS 744 ! 745 IF ( IDTST .NE. IDSTR ) THEN 746 WRITE (NDSE,902) IDTST, IDSTR 747 CALL EXTCDE ( 10 ) 748 END IF 749 IF ( VERTST .NE. VEROPT ) THEN 750 WRITE (NDSE,903) VERTST, VEROPT 751 CALL EXTCDE ( 11 ) 752 END IF 753 IF (NK.NE.MK .OR. NTH.NE.MTH) THEN Page 18 Source Listing W3IOPO 2014-09-16 17:02 w3iopomd.f90 754 WRITE (NDSE,904) MK, MTH, NK, NTH 755 CALL EXTCDE ( 12 ) 756 END IF 757 IF ( .NOT. O2INIT ) & 758 CALL W3DMO2 ( IGRD, NDSE, NDST, NOPTS ) 759 END IF 760 ! 761 ! Point specific info ------------------------------------------------ * 762 ! ( IPASS = 1 ) 763 ! 764 IF ( WRITE ) THEN 765 WRITE (NDSOP) & 766 ((PTLOC(J,I),J=1,2),I=1,NOPTS), (PTNME(I),I=1,NOPTS) 767 ELSE 768 READ (NDSOP,END=801,ERR=802,IOSTAT=IERR) & 769 ((PTLOC(J,I),J=1,2),I=1,NOPTS), (PTNME(I),I=1,NOPTS) 770 END IF 771 ! 772 END IF 773 ! 774 ! TIME --------------------------------------------------------------- * 775 ! 776 IF ( WRITE ) THEN 777 WRITE (NDSOP) TIME 778 ELSE 779 READ (NDSOP,END=803,ERR=802,IOSTAT=IERR) TIME 780 END IF 781 ! 782 ! Loop over spectra -------------------------------------------------- * 783 ! 784 DO I=1, NOPTS 785 ! 786 IF ( WRITE ) THEN 787 WRITE (NDSOP) & 788 IW(I), II(I), IL(I), DPO(I), WAO(I), WDO(I), & 789 ASO(I), CAO(I), CDO(I), GRDID(I), & 790 (SPCO(J,I),J=1,NSPEC) 791 ELSE 792 READ (NDSOP,END=801,ERR=802,IOSTAT=IERR) & 793 IW(I), II(I), IL(I), DPO(I), WAO(I), WDO(I), & 794 ASO(I), CAO(I), CDO(I), GRDID(I), & 795 (SPCO(J,I),J=1,NSPEC) 796 END IF 797 ! 798 END DO 799 ! 800 RETURN 801 ! 802 ! Escape locations read errors 803 ! 804 800 CONTINUE 805 WRITE (NDSE,1000) IERR 806 CALL EXTCDE ( 20 ) 807 ! 808 801 CONTINUE 809 WRITE (NDSE,1001) 810 CALL EXTCDE ( 21 ) Page 19 Source Listing W3IOPO 2014-09-16 17:02 w3iopomd.f90 811 ! 812 802 CONTINUE 813 WRITE (NDSE,1002) IERR 814 CALL EXTCDE ( 22 ) 815 ! 816 803 CONTINUE 817 IOTST = -1 818 RETURN 819 ! 820 ! Formats 821 ! 822 900 FORMAT (/' *** WAVEWATCH III ERROR IN W3IOPO :'/ & 823 ' ILEGAL INXOUT VALUE: ',A/) 824 901 FORMAT (/' *** WAVEWATCH III ERROR IN W3IOPO :'/ & 825 ' MIXED READ/WRITE, LAST REQUEST: ',A/) 826 902 FORMAT (/' *** WAVEWATCH III ERROR IN W3IOPO :'/ & 827 ' ILEGAL IDSTR, READ : ',A/ & 828 ' CHECK : ',A/) 829 903 FORMAT (/' *** WAVEWATCH III ERROR IN W3IOPO :'/ & 830 ' ILEGAL VEROPT, READ : ',A/ & 831 ' CHECK : ',A/) 832 904 FORMAT (/' *** WAVEWATCH III ERROR IN W3IOPO :'/ & 833 ' ERROR IN SPECTRA, MK, MTH : ',2I8/ & 834 ' ARRAY DIMENSIONS : ',2I8/) 835 ! 836 1000 FORMAT (/' *** WAVEWATCH III ERROR IN W3IOPO : '/ & 837 ' ERROR IN OPENING FILE'/ & 838 ' IOSTAT =',I5/) 839 1001 FORMAT (/' *** WAVEWATCH III ERROR IN W3IOPO : '/ & 840 ' PREMATURE END OF FILE'/) 841 1002 FORMAT (/' *** WAVEWATCH III ERROR IN W3IOPO : '/ & 842 ' ERROR IN READING FROM FILE'/ & 843 ' IOSTAT =',I5/) 844 ! 845 846 ! 847 !/ 848 !/ End of W3IOPO ----------------------------------------------------- / 849 !/ 850 END SUBROUTINE W3IOPO Page 20 Source Listing W3IOPO 2014-09-16 17:02 Entry Points w3iopomd.f90 ENTRY POINTS Name w3iopomd_mp_w3iopo_ SYMBOL CROSS REFERENCE Name Object Declared Type Bytes Dimen Elements Attributes References 1000 Label 836 805 1001 Label 839 809 1002 Label 841 813 800 Label 804 727,730 801 Label 808 742,768,792 802 Label 812 742,768,779,792 803 Label 816 779 900 Label 822 705 901 Label 824 713 902 Label 826 746 903 Label 829 750 904 Label 832 754 ASO Local 664 R(4) 4 1 1 PTR 664,789,794 CAO Local 664 R(4) 4 1 1 PTR 664,789,794 CDO Local 664 R(4) 4 1 1 PTR 664,789,794 DPO Local 663 R(4) 4 1 1 PTR 663,788,793 EXTCDE Subr 667 667,706,714,747,751,755,806,810,81 4 FILEXT Local 660 CHAR 10 scalar PTR 660,722,726,729 FNMPRE Local 664 CHAR 80 scalar 664,723,726,729 GRDID Local 665 CHAR 10 1 1 PTR 665,789,794 I Local 682 I(4) 4 scalar 722,726,729,766,769,784,788,789,79 0,793,794,795 IDSTR Param 740 CHAR 31 scalar PRIV 101,740,745,746 IDTST Local 684 CHAR 31 scalar 743,745,746 IERR Local 682 I(4) 4 scalar 727,730,742,768,779,792,805,813 IGRD Local 682 I(4) 4 scalar 695,697,700,701,702,758 II Local 663 I(4) 4 1 1 PTR 663,788,793 IL Local 663 I(4) 4 1 1 PTR 663,788,793 IMOD Dummy 584 I(4) 4 scalar ARG,IN 694,695 INXOUT Dummy 584 CHAR scalar ARG,IN 704,705,710,712,713 IOTST Dummy 584 I(4) 4 scalar ARG,OUT 690,817 IPASS Local 662 I(4) 4 scalar PTR 689,709,720 IPTINT Local 662 I(4) 4 3 1 PTR 662 IW Local 663 I(4) 4 1 1 PTR 663,788,793 J Local 682 I(4) 4 scalar 723,726,729,766,769,790,795 LEN_TRIM Func 722 scalar 722,723 MK Local 682 I(4) 4 scalar 743,753,754 MTH Local 682 I(4) 4 scalar 743,753,754 NDSE Local 662 I(4) 4 scalar PTR 662,700,701,702,705,713,746,750,75 4,758,805,809,813 NDSOP Dummy 584 I(4) 4 scalar ARG,IN 726,729,733,739,742,765,768,777,77 9,787,792 NDST Local 662 I(4) 4 scalar PTR 662,700,701,702,758 Page 21 Source Listing W3IOPO 2014-09-16 17:02 Symbol Table w3iopomd.f90 Name Object Declared Type Bytes Dimen Elements Attributes References NK Local 660 I(4) 4 scalar PTR 660,740,753,754 NOPTS Local 662 I(4) 4 scalar PTR 662,740,743,758,766,769,784 NSPEC Local 660 I(4) 4 scalar PTR 660,790,795 NTH Local 660 I(4) 4 scalar PTR 660,740,753,754 O2INIT Local 664 L(4) 4 scalar PTR 664,757 PRESENT Func 694 scalar 694 PTIFAC Local 663 R(4) 4 2 1 PTR 663 PTLOC Local 663 R(4) 4 2 1 PTR 663,766,769 PTNME Local 664 CHAR 10 1 1 PTR 664,766,769 SPCO Local 664 R(4) 4 2 1 PTR 664,790,795 TIME Local 661 I(4) 4 1 1 PTR 661,777,779 VEROPT Param 740 CHAR 10 scalar PRIV 99,740,749,750 VERTST Local 685 CHAR 10 scalar 743,749,750 W3DMO2 Subr 658 658,758 W3GDATMD Module 656 656,660 W3IOPO Subr 584 W3ODATMD Module 658 658,662 W3SERVMD Module 667 667 W3SETG Subr 656 656,701 W3SETO Subr 658 658,700 W3SETW Subr 657 657,702 W3WDATMD Module 657 657,661 WAO Local 663 R(4) 4 1 1 PTR 663,788,793 WDO Local 663 R(4) 4 1 1 PTR 663,788,793 WRITE Local 683 L(4) 4 scalar 710,712,725,738,764,776,786 Page 22 Source Listing W3IOPO 2014-09-16 17:02 w3iopomd.f90 851 !/ 852 !/ End of module W3IOPOMD -------------------------------------------- / 853 !/ 854 END MODULE W3IOPOMD SYMBOL CROSS REFERENCE Name Object Declared Type Bytes Dimen Elements Attributes References W3IOPOMD Module 2 Page 23 Source Listing W3IOPO 2014-09-16 17:02 Subprograms/Common Blocks w3iopomd.f90 SUBPROGRAMS/COMMON BLOCKS Name Object Declared Type Bytes Dimen Elements Attributes References W3IOPE Subr 340 W3IOPO Subr 584 W3IOPOMD Module 2 W3IOPP Subr 105 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 nocc_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 __pentium4 -D __pentium4__ -D __tune_pentium4__ -D __SSE2__ -D __SSE3__ -D __SSSE3__ -D __SSE4_1__ -D __SSE4_2__ -D __SSE__ -D __MMX__ -D __AVX__ -double_size 64 no -d_lines no -Qdyncom -error_limit 30 no -f66 no -f77rtl no -fast -fpscomp nofilesfromcmd -fpscomp nogeneral Page 24 Source Listing W3IOPO 2014-09-16 17:02 w3iopomd.f90 -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 -O2 no -pad_source -real_size 32 no -recursive -reentrancy none 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 : /gpfs/gp1/usrx/local/intel/composer_xe_2011_sp1.11.339/compiler/include/,.f,./.f,/usrx/local/intel/composerxe/mkl/include/.f, /usrx/local/intel/composerxe/tbb/include/.f,/gpfs/gp1/usrx/local/intel/composer_xe_2011_sp1.11.339/compiler/include/intel64/.f, /gpfs/gp1/usrx/local/intel/composer_xe_2011_sp1.11.339/compiler/include/.f,/usr/local/include/.f,/usr/lib/gcc/x86_64-redhat-linux/4.4.7/include/.f, /usr/include/.f,/usr/include/.f -list filename : w3iopomd.lst -o filename : none COMPILER: Intel(R) Fortran 12.1-2100