Page 1 Source Listing WAVEPREP 2014-09-16 17:01 multiwaveprep.f90 1 !/ ------------------------------------------------------------------- / 2 PROGRAM WAVEPREP 3 !/ 4 !/ +-----------------------------------+ 5 !/ | WAVEWATCH III NOAA/NCEP | 6 !/ | H. L. Tolman | 7 !/ | A. Chawla | 8 !/ | FORTRAN 90 | 9 !/ | Last update : 11-Nov-2013 | 10 !/ +-----------------------------------+ 11 !/ 12 !/ 14-Jan-1999 : Final FORTRAN 77 ( version 1.18 ) 13 !/ 18-Jan-2000 : Upgrade to FORTRAN 90 ( version 2.00 ) 14 !/ 11-Jan-2001 : Flat grid option added ( version 2.06 ) 15 !/ 17-Jul-2001 : Clean-up ( version 2.11 ) 16 !/ 24-Jan-2002 : Add data for data assimilation. ( version 2.17 ) 17 !/ 30-Apr-2002 : Fix 'AI' bug for 1-D fields. ( version 2.20 ) 18 !/ 24-Apr-2003 : Fix bug for NDAT = 0 in data. ( version 3.03 ) 19 !/ 24-Dec-2004 : Multiple grid version. ( version 3.06 ) 20 !/ 28-Jun-2006 : Adding file name preamble. ( version 3.09 ) 21 !/ 25-Sep-2007 : Switch header of file on or off, ( version 3.13 ) 22 !/ Times to file (!/O15) (A. Chawla) 23 !/ 29-May-2009 : Preparing distribution version. ( version 3.14 ) 24 !/ 30-Oct-2009 : Implement run-time grid selection. ( version 3.14 ) 25 !/ (W. E. Rogers & T. J. Campbell, NRL) 26 !/ 30-Oct-2009 : Implement curvilinear grid type. ( version 3.14 ) 27 !/ (W. E. Rogers & T. J. Campbell, NRL) 28 !/ 15-May-2010 : Add ISI (icebergs and sea ice). ( version 3.14.4 ) 29 !/ 29-Oct-2010 : Implement unstructured grids ( version 3.14.4 ) 30 !/ (A. Roland and F. Ardhuin) 31 !/ 06-Dec-2010 : Change from GLOBAL (logical) to ICLOSE (integer) to 32 !/ specify index closure for a grid. ( version 3.14 ) 33 !/ (T. J. Campbell, NRL) 34 !/ 1-Apr-2011 : Fix bug GLOBX forcing with unst. ( version 3.14.4 ) 35 !/ 19-Sep-2011 : Fix bug prep forcing with unst. ( version 4.04 ) 36 !/ 26-Dec-2012 : Modified obsolete declarations. ( version 4.OF ) 37 !/ 3-Mar-2013 : Allows for longer input file name ( version 4.09 ) 38 !/ 11-Nov-2013 : Allows for input binary files to be of WAVEWATCH 39 !/ type (i.e. accounts for the header) ( version 4.13 ) 40 !/ 41 !/ Copyright 2009-2012 National Weather Service (NWS), 42 !/ National Oceanic and Atmospheric Administration. All rights 43 !/ reserved. WAVEWATCH III is a trademark of the NWS. 44 !/ No unauthorized use without permission. 45 !/ 46 ! 1. Purpose : 47 ! 48 ! Pre-processing of the input water level, current, wind and ice 49 ! fields as well as assimilation data for the generic shell W3SHEL 50 ! (ww3_shel.ftn). 51 ! 52 ! 2. Method : 53 ! 54 ! See documented input file. 55 ! 56 ! 3. Parameters : 57 ! Page 2 Source Listing WAVEPREP 2014-09-16 17:01 multiwaveprep.f90 58 ! Local parameters. 59 ! ---------------------------------------------------------------- 60 ! NDSI Int. Input unit number ("multiwaveprep.inp"). 61 ! NDSLL Int. Unit number(s) of long-lat file(s) 62 ! NDSF I.A. Unit number(s) of input file(s). 63 ! NDSDAT Int. Unit number for output data file. 64 ! IFLD Int. Integer input type. 65 ! ITYPE Int. Integer input 'format' type. 66 ! NFCOMP Int. Number of partial input to be processed. 67 ! FLTIME Log. Time flag for input fields, if false, single 68 ! field, time read from NDSI. 69 ! IDLALL Int. Layout indicator used by INA2R. + 70 ! IDFMLL Int. Id. FORMAT indicator. | 71 ! FORMLL C*16 Id. FORMAT. | Long-lat 72 ! FROMLL C*4 'UNIT' / 'NAME' indicator | file(s) 73 ! NAMELL C*65 Name of long-lat file(s) + 74 ! IDLAF I.A. + 75 ! IDFMF I.A. | 76 ! FORMF C.A. | Idem. fields file(s) 77 ! FROMF C*4 | 78 ! NAMEF C*65 + 79 ! FORMT C.A. Format or time in field. 80 ! XC R.A. Components of input vector field or first 81 ! input scalar field 82 ! YC R.A. Components of input vector field or second 83 ! input scalar field 84 ! FX,FY R.A. Output fields. 85 ! ACC Real Required interpolation accuracy. 86 ! ---------------------------------------------------------------- 87 ! 88 ! 4. Subroutines used : 89 ! 90 ! Name Type Module Description 91 ! ---------------------------------------------------------------- 92 ! W3NMOD Subr. W3GDATMD Set number of model. 93 ! W3SETG Subr. Id. Point to selected model. 94 ! W3NDAT Subr. W3WDATMD Set number of model for wave data. 95 ! W3SETW Subr. Id. Point to selected model for wave data. 96 ! W3NOUT Subr. W3ODATMD Set number of model for output. 97 ! W3SETO Subr. Id. Point to selected model for output. 98 ! ITRACE Subr. W3SERVMD Subroutine tracing initialization. 99 ! STRACE Subr. Id. Subroutine tracing. 100 ! NEXTLN Subr. Id. Get next line from input filw 101 ! EXTCDE Subr. Id. Abort program as graceful as possible. 102 ! STME21 Subr. W3TIMEMD Convert time to string. 103 ! INAR2R Subr. W3ARRYMD Read in an REAL array. 104 ! INAR2I Subr. Id. Read in an INTEGER array. 105 ! PRTBLK Subr. Id. Print plot of array. 106 ! W3IOGR Subr. W3IOGRMD Reading/writing model definition file. 107 ! W3FLDO Subr. W3FLDSMD Opening of WAVEWATCH III generic shell 108 ! data file. 109 ! W3FLDP Subr. Id. Prepare interp. from arbitrary grid. 110 ! W3FLDG Subr. Id. Reading/writing shell input data. 111 ! W3FLDD Subr. Id. Reading/writing shell assim. data. 112 ! W3GSUC Func. W3GSRUMD Create grid-search-utility object 113 ! W3GSUD Subr. W3GSRUMD Destroy grid-search-utility object 114 ! W3GRMP Func. W3GSRUMD Compute interpolation weights Page 3 Source Listing WAVEPREP 2014-09-16 17:01 multiwaveprep.f90 115 ! ---------------------------------------------------------------- 116 ! 117 ! 5. Called by : 118 ! 119 ! None, stand-alone program. 120 ! 121 ! 6. Error messages : 122 ! 123 ! - Checks on files and reading from file. 124 ! - Checks on validity of input parameters. 125 ! 126 ! 7. Remarks : 127 ! 128 ! - Input fields need to be continuous in longitude and latitude. 129 ! 130 ! 8. Structure : 131 ! 132 ! ---------------------------------------------------- 133 ! 1.a Number of models. 134 ! ( W3NMOD , W3NOUT , W3SETG , W3SETO ) 135 ! b I-O setup. 136 ! c Print heading(s). 137 ! 2. Read model definition file. ( W3IOGR ) 138 ! 3.a Read major types from input file. 139 ! b Check major types. 140 ! c Additional input format types and time. 141 ! 4. Prepare interpolation. 142 ! a Longitude - latitude grid 143 ! b Grid(s) from file. ( W3FLDP ) 144 ! c Initialize fields. 145 ! d Input location and format. 146 ! 5 Prepare input and output files. 147 ! a Open input file 148 ! b Open and prepare output file ( W3FLDO ) 149 ! 6 Until end of file 150 ! a Read new time and fields 151 ! b Interpolate fields 152 ! c Write fields ( W3FLDG ) 153 ! ---------------------------------------------------- 154 ! 155 ! 9. Switches : 156 ! 157 ! !/WNT0 = !/WNT1 158 ! !/WNT1 Correct wind speeds to (approximately) conserve the wind 159 ! speed over the interpolation box. 160 ! !/WNT2 Id. energy (USE ONLY ONE !) 161 ! !/CRT1 Like !/WNT1 for currents. 162 ! !/CRT2 Like !/WNT2 for currents. 163 ! 164 ! !/O3 Additional output in fields processing loop. 165 ! !/O15 Generate file with the times of the processed fields. 166 ! 167 ! !/S Enable subroutine tracing. 168 ! !/T Enable test output, 169 ! !/T1 Full interpolation data. 170 ! !/T1a Echo of lat-long data in type Fn 171 ! !/T2 Full input data. Page 4 Source Listing WAVEPREP 2014-09-16 17:01 multiwaveprep.f90 172 ! !/T3 Print-plot of output data. 173 ! 174 ! !/NCO NCEP NCO modifications for operational implementation. 175 ! 176 ! 10. Source code : 177 ! 178 !/ ------------------------------------------------------------------- / 179 USE CONSTANTS 180 !/ 181 ! USE W3GDATMD, ONLY: W3NMOD, W3SETG 182 USE W3ADATMD,ONLY: W3NAUX, W3SETA 183 USE W3ODATMD, ONLY: W3NOUT, W3SETO 184 USE W3SERVMD, ONLY : ITRACE, NEXTLN, EXTCDE 185 USE W3TIMEMD, ONLY : STME21 186 USE W3ARRYMD, ONLY : INA2R, INA2I 187 USE W3IOGRMD, ONLY: W3IOGR 188 USE W3FLDSMD, ONLY: W3FLDO, W3FLDP, W3FLDG, W3FLDD 189 !/ 190 USE W3GDATMD 191 USE W3GSRUMD 192 USE W3ODATMD, ONLY: NDSE, NDST, NDSO, FNMPRE 193 ! 194 IMPLICIT NONE 195 !/ 196 !/ ------------------------------------------------------------------- / 197 !/ Local parameters 198 !/ 199 INTEGER :: NDSI, NDSM, NDSDAT, NDSTRC, NTRACE, & 200 IERR, IFLD, ITYPE, J, IX, IY, NFCOMP,& 201 TIME(2), NXI, NYI, NXJ(2), NYJ(2), & 202 NDSLL, IDLALL, IDFMLL, NDSF(2), & 203 IDLAF(2), IDFMF(2), TIME2(2), & 204 MXM, MYM, DATTYP, RECLDT, IDAT, & 205 NDAT, NDATMX, JJ, IS(4), JS(4) 206 INTEGER :: NXT, NYT, GTYPET, FILLER(2), TFLAGT 207 INTEGER :: NYB 208 INTEGER :: ILAND = -999 209 INTEGER :: NDSTIME 210 INTEGER, ALLOCATABLE :: IX21(:,:), IX22(:,:), & 211 IY21(:,:), IY22(:,:), & 212 JX21(:,:), JX22(:,:), & 213 JY21(:,:), JY22(:,:), MAPOVR(:,:) 214 INTEGER, ALLOCATABLE :: MASK(:,:) 215 TYPE(T_GSU) :: GSI 216 REAL :: X0I, XNI, Y0I, YNI, SXI, SYI, XDIF, & 217 ADD, X, Y, FACTOR, EFAC, NODATA, RW(4) 218 REAL :: ACC = 0.05 219 REAL, ALLOCATABLE :: RD11(:,:), RD21(:,:), & 220 RD12(:,:), RD22(:,:), & 221 XD11(:,:), XD21(:,:), & 222 XD12(:,:), XD22(:,:), & 223 FX(:,:), FY(:,:), FA(:,:), & 224 A1(:,:), A2(:,:), A3(:,:) 225 REAL, POINTER :: ALA(:,:), ALO(:,:) 226 REAL, ALLOCATABLE :: XC(:,:), YC(:,:), AC(:,:), DATA(:,:) 227 LOGICAL :: INGRID 228 LOGICAL :: FLSTAB, FLBERG, CLO(2), FLTIME, FLHDR Page 5 Source Listing WAVEPREP 2014-09-16 17:01 multiwaveprep.f90 229 INTEGER :: ICLO 230 CHARACTER :: COMSTR*1, IDFLD*3, IDTYPE*2, & 231 IDTIME*23, FROMLL*4, FORMLL*16, & 232 NAMELL*65, FROMF*4, NAMEF*65 233 CHARACTER(LEN=12) :: IDSTR1(-7:5) 234 CHARACTER(LEN=15) :: IDSTR3(3) 235 CHARACTER(LEN=32) :: FORMT(2), FORMF(2) 236 CHARACTER(LEN=20) :: IDSTR2(5) 237 CHARACTER(LEN=13) :: TSTR, IDSTR = 'WAVEWATCH III' 238 CHARACTER(LEN=3) :: TSFLD 239 INTEGER :: GTYPEDUM = 0 240 ! 241 EQUIVALENCE ( NXI , NXJ(1) ) , ( NYI , NYJ(1) ) 242 !/ 243 !/ ------------------------------------------------------------------- / 244 !/ 245 ! notes: Is it possible to combine ice parameters into one group, 246 ! similar to the way 1D spectra are in one group? 247 DATA IDSTR1 / 'ice param. 1' , 'ice param. 2' , & 248 'ice param. 3' , 'ice param. 4' , & 249 'ice param. 5' , 'mud density ' , & 250 'mud thkness ' , 'mud viscos. ' , & 251 'ice ' , 'water levels' , & 252 'winds ' , 'currents ' , & 253 'data ' / 254 DATA IDSTR2 / 'pre-processed file ' , 'long.-lat. grid ' , & 255 'grid from file (1) ' , 'grid from file (2) ' , & 256 'data (assimilation) ' / 257 DATA IDSTR3 / 'mean parameters', '1D spectra ', & 258 '2D spectra ' / 259 ! 260 ! CALL W3TAGB('WAVEPREP',1998,0007,0050,'NP21 ') 261 ! 262 !--- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 263 ! 1.a Set number of models 264 ! 265 CALL W3NMOD ( 1, 6, 6 ) 266 CALL W3SETG ( 1, 6, 6 ) 267 CALL W3NAUX ( 6, 6 ) 268 CALL W3SETA ( 1, 6, 6 ) 269 CALL W3NOUT ( 6, 6 ) 270 CALL W3SETO ( 1, 6, 6 ) 271 ! 272 ! 1.b IO set-up. 273 ! 274 NDSI = 10 275 NDSO = 6 276 NDSE = 6 277 NDST = 6 278 NDSM = 11 279 NDSDAT = 12 280 NDSTIME = 13 281 ! 282 NDSTRC = 6 283 NTRACE = 10 284 CALL ITRACE ( NDSTRC, NTRACE ) 285 ! Page 6 Source Listing WAVEPREP 2014-09-16 17:01 multiwaveprep.f90 286 ! Redo according to NCO 287 ! 288 NDSI = 11 289 NDSO = 6 290 NDSE = NDSO 291 NDST = NDSO 292 NDSM = 12 293 NDSDAT = 51 294 NDSTRC = NDSO 295 ! 296 ! 1.c Print header 297 ! 298 WRITE (NDSO,900) 299 ! 300 J = LEN_TRIM(FNMPRE) 301 OPEN (NDSI,FILE=FNMPRE(:J)//'multiwaveprep.inp',STATUS='OLD', & 302 ERR=800,IOSTAT=IERR) 303 REWIND (NDSI) 304 READ (NDSI,'(A)',END=801,ERR=802,IOSTAT=IERR) COMSTR 305 IF (COMSTR.EQ.' ') COMSTR = '$' 306 WRITE (NDSO,901) COMSTR 307 ! 308 !--- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 309 ! 2. Read model definition file. 310 ! 311 CALL W3IOGR ( 'READ', NDSM ) 312 WRITE (NDSO,902) GNAME 313 ALLOCATE ( IX21(NX,NY), IX22(NX,NY), IY21(NX,NY), IY22(NX,NY), & 314 JX21(NX,NY), JX22(NX,NY), JY21(NX,NY), JY22(NX,NY), & 315 MAPOVR(NX,NY) ) 316 ALLOCATE ( RD11(NX,NY), RD21(NX,NY), RD12(NX,NY), RD22(NX,NY), & 317 XD11(NX,NY), XD21(NX,NY), XD12(NX,NY), XD22(NX,NY), & 318 FX(NX,NY), FY(NX,NY), FA(NX,NY), & 319 A1(NX,NY), A2(NX,NY), A3(NX,NY) ) 320 ! 321 !--- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 322 ! 3.a Read types from input file. 323 ! 324 CALL NEXTLN ( COMSTR , NDSI , NDSE ) 325 READ (NDSI,*,END=801,ERR=802,IOSTAT=IERR) IDFLD, IDTYPE, FLTIME, & 326 FLHDR 327 ! 328 ! 3.b Check types. 329 ! 330 FLSTAB = IDFLD .EQ. 'WNS' 331 FLBERG = IDFLD .EQ. 'ISI' 332 IF ( IDFLD.EQ.'IC1' ) THEN 333 IFLD = -7 334 ELSE IF ( IDFLD.EQ.'IC2' ) THEN 335 IFLD = -6 336 ELSE IF ( IDFLD.EQ.'IC3' ) THEN 337 IFLD = -5 338 ELSE IF ( IDFLD.EQ.'IC4' ) THEN 339 IFLD = -4 340 ELSE IF ( IDFLD.EQ.'IC5' ) THEN 341 IFLD = -3 342 ELSE IF ( IDFLD.EQ.'MDN' ) THEN Page 7 Source Listing WAVEPREP 2014-09-16 17:01 multiwaveprep.f90 343 IFLD = -2 344 ELSE IF ( IDFLD.EQ.'MTH' ) THEN 345 IFLD = -1 346 ELSE IF ( IDFLD.EQ.'MVS' ) THEN 347 IFLD = 0 348 ELSE IF ( IDFLD.EQ.'ICE' .OR. FLBERG ) THEN 349 IFLD = 1 350 ELSE IF ( IDFLD.EQ.'LEV' ) THEN 351 IFLD = 2 352 ELSE IF ( IDFLD.EQ.'WND' .OR. FLSTAB ) THEN 353 IFLD = 3 354 ELSE IF ( IDFLD.EQ.'CUR' ) THEN 355 IFLD = 4 356 ELSE IF ( IDFLD.EQ.'DAT' ) THEN 357 IFLD = 5 358 ELSE 359 WRITE (NDSE,1030) IDFLD 360 CALL EXTCDE ( 1 ) 361 END IF 362 ! 363 NFCOMP = 1 364 IF (IDFLD.EQ.'DAT') THEN 365 ITYPE = 5 366 ELSE IF (IDTYPE.EQ.'AI') THEN 367 ITYPE = 1 368 ELSE IF (IDTYPE.EQ.'LL') THEN 369 ITYPE = 2 370 ELSE IF (IDTYPE.EQ.'F1') THEN 371 ITYPE = 3 372 ELSE IF (IDTYPE.EQ.'F2') THEN 373 ITYPE = 4 374 NFCOMP = 2 375 ELSE 376 WRITE (NDSE,1031) IDTYPE 377 CALL EXTCDE ( 2 ) 378 END IF 379 ! 380 WRITE (NDSO,930) IDSTR1(IFLD), IDSTR2(ITYPE) 381 IF ( ITYPE.NE.1 ) THEN 382 IF (IFLD.EQ.3) WRITE (NDSO,1930) 383 IF (IFLD.EQ.4) WRITE (NDSO,1930) 384 END IF 385 IF ( FLBERG ) WRITE (NDSO,938) 386 IF ( FLSTAB ) WRITE (NDSO,939) 387 IF (ITYPE.EQ.4 .AND. IFLD.GT.2) THEN 388 WRITE (NDSE,1032) 389 CALL EXTCDE ( 3 ) 390 END IF 391 ! 392 ! 3.c Additional input for format types and time 393 ! ... time 394 ! 395 IF (.NOT. FLTIME) THEN 396 CALL NEXTLN ( COMSTR , NDSI , NDSE ) 397 READ (NDSI,*,END=801,ERR=802,IOSTAT=IERR) TIME 398 IF (TIME(1).LT.10000000) THEN 399 WRITE (NDSE,1035) TIME Page 8 Source Listing WAVEPREP 2014-09-16 17:01 multiwaveprep.f90 400 CALL EXTCDE ( 4 ) 401 END IF 402 CALL STME21 ( TIME , IDTIME ) 403 WRITE (NDSO,931) IDTIME 404 END IF 405 ! 406 J = 1 407 IF ( FLAGLL ) THEN 408 FACTOR = 1. 409 ELSE 410 FACTOR = 1.E-3 411 END IF 412 ! 413 ! ... type 1 414 ! 415 IF (ITYPE.EQ.1) THEN 416 ! 417 NXI = NX 418 NYI = NY 419 ALLOCATE ( MASK(NXI,NYI) ) 420 MASK = 1 421 IF(GTYPE .EQ. UNGTYPE) THEN 422 ! 423 ! X0, Y0 are the coordinates of the lower-left point in mesh 424 ! 425 RW(1) = FACTOR*X0 ; RW(2) = FACTOR*MAXX 426 RW(3) = FACTOR*Y0 ; RW(4) = FACTOR*MAXY 427 ELSE 428 RW(1) = FACTOR*XGRD(1,1) ; RW(2) = FACTOR*XGRD(NY,NX) 429 RW(3) = FACTOR*YGRD(1,1) ; RW(4) = FACTOR*YGRD(NY,NX) 430 END IF 431 WRITE (NDSO,932) NXI, NYI 432 IF ( FLAGLL ) THEN 433 WRITE (NDSO,933) RW(1),RW(2),RW(3),RW(4) 434 ELSE 435 WRITE (NDSO,733) RW(1),RW(2),RW(3),RW(4) 436 END IF 437 ! 438 ! ... type 2 439 ! 440 ELSE IF (ITYPE.EQ.2) THEN 441 ! 442 CALL NEXTLN ( COMSTR , NDSI , NDSE ) 443 READ (NDSI,*,END=801,ERR=802,IOSTAT=IERR) & 444 X0I, XNI, NXI, Y0I, YNI, NYI 445 IF (NXI.LT.2 .OR. NYI.LT.2) THEN 446 WRITE (NDSE,1036) NXI, NYI 447 CALL EXTCDE ( 5 ) 448 END IF 449 ALLOCATE ( MASK(NXI,NYI) ) 450 MASK = 1 451 WRITE (NDSO,932) NXI, NYI 452 453 IF ( FLAGLL ) THEN 454 WRITE (NDSO,933) FACTOR*X0I, FACTOR*XNI, & 455 FACTOR*Y0I, FACTOR*YNI 456 ELSE Page 9 Source Listing WAVEPREP 2014-09-16 17:01 multiwaveprep.f90 457 WRITE (NDSO,733) FACTOR*X0I, FACTOR*XNI, & 458 FACTOR*Y0I, FACTOR*YNI 459 END IF 460 ! 461 ! ... type 5 462 ! 463 ELSE IF (ITYPE.EQ.5) THEN 464 CALL NEXTLN ( COMSTR , NDSI , NDSE ) 465 READ (NDSI,*,END=801,ERR=802,IOSTAT=IERR) & 466 DATTYP, RECLDT, NODATA 467 IF (DATTYP.LT.0 .OR. DATTYP.GT.2) THEN 468 WRITE (NDSE,1033) DATTYP 469 CALL EXTCDE ( 6 ) 470 END IF 471 IF (RECLDT.LE.0) THEN 472 WRITE (NDSE,1034) RECLDT 473 CALL EXTCDE ( 7 ) 474 END IF 475 WRITE (NDSO,934) IDSTR3(DATTYP+1), RECLDT, NODATA 476 WRITE (IDFLD,935) DATTYP 477 DEALLOCATE ( IX21, IX22, IY21, IY22, JX21, JX22, JY21, JY22, & 478 MAPOVR ) 479 DEALLOCATE ( RD11, RD21, RD12, RD22, XD11, XD21, XD12, XD22, & 480 FX, FY, FA, A1, A2, A3 ) 481 ! 482 ! ... types 3 and 4 ... in preprocessing loop .... 483 ! 484 END IF 485 ! 486 !--- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 487 ! 4 Prepare interpolation. 488 ! 489 WRITE (NDSO,940) 490 ! 491 IF (ITYPE.NE.1 .AND. ITYPE.NE.5) THEN 492 ! 493 ! 4.a Longitude - latitude grid 494 ! 495 IF (ITYPE.EQ.2) THEN 496 WRITE (NDSO,941) 497 ! 498 ! ... setup coordinates 499 ! 500 SXI = (XNI-X0I)/REAL(NXI-1) 501 SYI = (YNI-Y0I)/REAL(NYI-1) 502 ICLO = ICLOSE_NONE 503 IF ( FLAGLL ) THEN 504 IF ( ABS(ABS(REAL(NXI)*SXI)-360.) .LT. 0.1*ABS(SXI) ) & 505 ICLO = ICLOSE_SMPL 506 END IF 507 IF ( ASSOCIATED(ALA) ) THEN 508 DEALLOCATE ( ALA, ALO ) 509 NULLIFY ( ALA, ALO ) 510 END IF 511 ALLOCATE ( ALA(NXI,NYI), ALO(NXI,NYI) ) 512 DO IY=1, NYI 513 DO IX=1, NXI Page 10 Source Listing WAVEPREP 2014-09-16 17:01 multiwaveprep.f90 514 ALO(IX,IY) = X0I + REAL(IX-1)*SXI 515 ALA(IX,IY) = Y0I + REAL(IY-1)*SYI 516 END DO 517 END DO 518 ! 519 ! ... create grid search utility 520 ! 521 GSI = W3GSUC( .TRUE., FLAGLL, ICLO, NXI, NYI, ALO, ALA ) 522 ! 523 ! ... construct interpolation data 524 ! 525 IF (GTYPE .NE. UNGTYPE) THEN 526 DO IY=1,NY 527 DO IX=1,NX 528 INGRID = W3GRMP( GSI, XGRD(IY,IX), YGRD(IY,IX), & 529 IS, JS, RW ) 530 531 IF ( .NOT.INGRID ) THEN 532 533 WRITE(NDSO,1042) IX, IY, XGRD(IY,IX), YGRD(IY,IX) 534 535 ! Notes: We need to set these variables, even if we never intend to use them. 536 !...........Especially in the case of IX?? IY??, we cannot leave them unset, 537 !...........since they will be used as array indices later. 538 539 IX21(IX,IY) = 1 540 IX22(IX,IY) = 1 541 IY21(IX,IY) = 1 542 IY22(IX,IY) = 1 543 RD11(IX,IY) = 0.0 544 RD21(IX,IY) = 0.0 545 RD12(IX,IY) = 0.0 546 RD22(IX,IY) = 0.0 547 548 CYCLE 549 END IF 550 551 IX21(IX,IY) = IS(1) 552 IX22(IX,IY) = IS(2) 553 IY21(IX,IY) = JS(1) 554 IY22(IX,IY) = JS(4) 555 RD11(IX,IY) = RW(1) 556 RD21(IX,IY) = RW(2) 557 RD12(IX,IY) = RW(4) 558 RD22(IX,IY) = RW(3) 559 END DO 560 END DO 561 ELSE 562 DO IX=1, NX 563 X = XYB(IX,1) 564 Y = XYB(IX,2) 565 566 IX21(IX,1) = 1 + INT(MOD(360.+(X-X0I),360.)/SXI) 567 ! 568 ! Manages the simple closure of the grid 569 ! 570 IF (ICLO.EQ.ICLOSE_NONE) THEN Page 11 Source Listing WAVEPREP 2014-09-16 17:01 multiwaveprep.f90 571 IX21(IX,1) = MAX ( 1 , MIN(IX21(IX,1),NXI-1) ) 572 IX22(IX,1) = IX21(IX,1) + 1 573 ELSE 574 IX21(IX,1) = MAX ( 1 , MIN(IX21(IX,1),NXI) ) 575 IX22(IX,1) = MOD(IX21(IX,1),NXI)+1 576 END IF 577 IY21(IX,1) = 1 + INT((Y-Y0I)/SYI) 578 IY21(IX,1) = MAX ( 1 , MIN(IY21(IX,1),NYI-1) ) 579 IY22(IX,1) = IY21(IX,1) + 1 580 ! 581 RW(1) = MOD(360.+(X-X0I),360.)/SXI - REAL(IX21(IX,1)-1) 582 RW(2) = (Y-Y0I)/SYI - REAL(IY21(IX,1)-1) 583 ! 584 IF (IY21(IX,1).EQ.1 .AND. RW(2).LT.ACC) THEN 585 IF (RW(2).LT.-ACC) THEN 586 WRITE (NDSO,1044) Y 587 ELSE IF (RW(2).LT.0.) THEN 588 RW(2) = 0. 589 END IF 590 END IF 591 ! 592 IF (IY21(IX,1).EQ.NYI .AND. RW(2).GT.1.-ACC) THEN 593 IF (RW(2).GT.1.+ACC) THEN 594 WRITE (NDSO,1044) Y 595 ELSE IF (RW(2).GT.1.) THEN 596 RW(2) = 1. 597 END IF 598 END IF 599 ! 600 EFAC = SQRT ( MAX(0.,ABS(RW(1)-0.5)-0.5)**2 + & 601 MAX(0.,ABS(RW(2)-0.5)-0.5)**2 ) 602 EFAC = 1. / ( 1. + 0.25*EFAC**2 ) 603 604 605 RD11(IX,1) = EFAC * (1.-RW(1)) * (1.-RW(2)) 606 RD21(IX,1) = EFAC * RW(1) * (1.-RW(2)) 607 RD12(IX,1) = EFAC * (1.-RW(1)) * RW(2) 608 RD22(IX,1) = EFAC * RW(1) * RW(2) 609 END DO 610 END IF ! GTYPE .NE. UNGTYPE 611 ! 612 CALL W3GSUD( GSI ) 613 DEALLOCATE ( ALA, ALO ) 614 NULLIFY ( ALA, ALO ) 615 ! 616 ! 4.b Grid(s) from file 617 ! 618 ELSE 619 WRITE (NDSO,942) 620 ! 621 ! ... prepare overlay map 622 ! 623 DO IY=1, NY 624 DO IX=1, NX 625 IF ( MAPSTA(IY,IX) .EQ. 0 ) THEN 626 MAPOVR(IX,IY) = ILAND 627 ELSE Page 12 Source Listing WAVEPREP 2014-09-16 17:01 multiwaveprep.f90 628 MAPOVR(IX,IY) = 0 629 END IF 630 END DO 631 END DO 632 ! 633 ! ... loop over fields 634 ! 635 DO J=1, NFCOMP 636 ! 637 WRITE (NDSO,943) J 638 ! 639 ! ... file info lat-long file 640 ! 641 CALL NEXTLN ( COMSTR , NDSI , NDSE ) 642 READ (NDSI,*,END=801,ERR=802,IOSTAT=IERR) & 643 NXJ(J), NYJ(J), CLO(J) 644 IF (NXJ(J).LT.2 .OR. NYJ(J).LT.2) THEN 645 WRITE (NDSE,1036) NXJ(J), NYJ(J) 646 CALL EXTCDE ( 10 ) 647 END IF 648 IF ( ALLOCATED(MASK) ) DEALLOCATE (MASK) 649 ALLOCATE ( MASK(NXJ(J),NYJ(J)) ) 650 MASK = 1 651 WRITE (NDSO,944) NXJ(J), NYJ(J), CLO(J) 652 ! 653 CALL NEXTLN ( COMSTR , NDSI , NDSE ) 654 READ (NDSI,*,END=801,ERR=802,IOSTAT=IERR) & 655 FROMLL, IDLALL, IDFMLL, FORMLL 656 IF (IDLALL.LT.1 .OR. IDLALL.GT.4) IDLALL = 1 657 IF (IDFMLL.LT.1 .OR. IDFMLL.GT.3) IDFMLL = 1 658 WRITE (NDSO,945) IDLALL, IDFMLL 659 IF (IDFMLL.EQ.2) WRITE (NDSO,946) FORMLL 660 ! 661 CALL NEXTLN ( COMSTR , NDSI , NDSE ) 662 READ (NDSI,*,END=801,ERR=802,IOSTAT=IERR) NDSLL, NAMELL 663 NDSLL = 20 + NFCOMP 664 WRITE (NDSO,947) NDSLL 665 IF (FROMLL.EQ.'NAME') WRITE (NDSO,948) NAMELL 666 IF (NDSLL.EQ.NDSI) THEN 667 WRITE (NDSE,1038) 668 CALL NEXTLN ( COMSTR , NDSI , NDSE ) 669 ELSE 670 ! 671 ! ... open lat-long file 672 ! 673 IF ( IDFMLL .EQ. 3 ) THEN 674 IF (FROMLL.EQ.'NAME') THEN 675 JJ = LEN_TRIM(FNMPRE) 676 OPEN (NDSLL,FILE=FNMPRE(:JJ)//NAMELL, & 677 FORM='UNFORMATTED',STATUS='OLD', & 678 ERR=845,IOSTAT=IERR) 679 ELSE 680 OPEN (NDSLL, FORM='UNFORMATTED', & 681 STATUS='OLD',ERR=845,IOSTAT=IERR) 682 END IF 683 ELSE 684 IF (FROMLL.EQ.'NAME') THEN Page 13 Source Listing WAVEPREP 2014-09-16 17:01 multiwaveprep.f90 685 JJ = LEN_TRIM(FNMPRE) 686 OPEN (NDSLL,FILE=FNMPRE(:JJ)//NAMELL, & 687 STATUS='OLD',ERR=845,IOSTAT=IERR) 688 ELSE 689 OPEN (NDSLL, & 690 STATUS='OLD',ERR=845,IOSTAT=IERR) 691 END IF 692 END IF 693 ! 694 END IF 695 ! 696 ! ... read lat-lon data 697 ! 698 IF ( ASSOCIATED(ALA) ) THEN 699 DEALLOCATE ( ALA, ALO ) 700 NULLIFY ( ALA, ALO ) 701 END IF 702 ALLOCATE ( ALA(NXJ(J),NYJ(J)), ALO(NXJ(J),NYJ(J)) ) 703 CALL INA2R (ALA, NXJ(J), NYJ(J), 1, NXJ(J), 1, NYJ(J),& 704 NDSLL, NDST, NDSE, IDFMLL, FORMLL, IDLALL, 1., 0.) 705 CALL INA2R (ALO, NXJ(J), NYJ(J), 1, NXJ(J), 1, NYJ(J),& 706 NDSLL, NDST, NDSE, IDFMLL, FORMLL, IDLALL, 1., 0.) 707 IF ( NDSLL .NE. NDSI ) CLOSE (NDSLL) 708 ! 709 ! ... file info mask file 710 ! 711 WRITE (NDSO,949) 712 ! 713 CALL NEXTLN ( COMSTR , NDSI , NDSE ) 714 READ (NDSI,*,END=801,ERR=802,IOSTAT=IERR) & 715 FROMLL, IDLALL, IDFMLL, FORMLL 716 IF (IDLALL.LT.1 .OR. IDLALL.GT.4) IDLALL = 1 717 IF (IDFMLL.LT.1 .OR. IDFMLL.GT.3) IDFMLL = 1 718 WRITE (NDSO,945) IDLALL, IDFMLL 719 IF (IDFMLL.EQ.2) WRITE (NDSO,946) FORMLL 720 ! 721 CALL NEXTLN ( COMSTR , NDSI , NDSE ) 722 READ (NDSI,*,END=801,ERR=802,IOSTAT=IERR) NDSLL, NAMELL 723 NDSLL = 22 + NFCOMP 724 WRITE (NDSO,947) NDSLL 725 IF (FROMLL.EQ.'NAME') WRITE (NDSO,948) NAMELL 726 WRITE (NDSO,*) ' ' 727 IF (NDSLL.EQ.NDSI) THEN 728 WRITE (NDSE,1038) 729 CALL NEXTLN ( COMSTR , NDSI , NDSE ) 730 ELSE 731 ! 732 ! ... open mask file 733 ! 734 IF ( IDFMLL .EQ. 3 ) THEN 735 IF (FROMLL.EQ.'NAME') THEN 736 JJ = LEN_TRIM(FNMPRE) 737 OPEN (NDSLL,FILE=FNMPRE(:JJ)//NAMELL, & 738 FORM='UNFORMATTED',STATUS='OLD', & 739 ERR=846,IOSTAT=IERR) 740 ELSE 741 OPEN (NDSLL,FORM='UNFORMATTED', & Page 14 Source Listing WAVEPREP 2014-09-16 17:01 multiwaveprep.f90 742 STATUS='OLD',ERR=846,IOSTAT=IERR) 743 END IF 744 ELSE 745 IF (FROMLL.EQ.'NAME') THEN 746 JJ = LEN_TRIM(FNMPRE) 747 OPEN (NDSLL,FILE=FNMPRE(:JJ)//NAMELL, & 748 STATUS='OLD',ERR=846,IOSTAT=IERR) 749 ELSE 750 OPEN (NDSLL, & 751 STATUS='OLD',ERR=846,IOSTAT=IERR) 752 END IF 753 END IF 754 ! 755 END IF 756 ! 757 ! ... read mask data 758 ! 759 CALL INA2I (MASK, NXJ(J), NYJ(J), 1,NXJ(J), 1,NYJ(J), & 760 NDSLL, NDST, NDSE, IDFMLL, FORMLL, IDLALL, 1, 0) 761 IF ( NDSLL .NE. NDSI ) CLOSE (NDSLL) 762 ! 763 ! ... generate interpolation data 764 ! 765 IF ( J .EQ. 1 ) THEN 766 CALL W3FLDP ( NDSO, NDST, NDSE, IERR, FLAGLL, & 767 NX, NY, NX, NY, YGRD, XGRD, MAPOVR, ILAND, & 768 NXJ(J), NYJ(J), NXJ(J), NYJ(J), CLO(J), ALA, ALO, & 769 MASK, RD11, RD21, RD12, RD22, IX21, IX22, IY21, & 770 IY22 ) 771 ELSE 772 CALL W3FLDP ( NDSO, NDST, NDSE, IERR, FLAGLL, & 773 NX, NY, NX, NY, YGRD, XGRD, MAPOVR, ILAND, & 774 NXJ(J), NYJ(J), NXJ(J), NYJ(J), CLO(J), ALA, ALO, & 775 MASK, XD11, XD21, XD12, XD22, JX21, JX22, JY21, & 776 JY22 ) 777 END IF 778 ! 779 END DO 780 ! 781 ! ... average two fields ! 782 ! 783 IF ( NFCOMP .EQ. 2) THEN 784 DO IX=1, NX 785 DO IY=1, NY 786 IF ( MAPOVR(IX,IY) .GE. 2) THEN 787 FACTOR = 1. / REAL(MAPOVR(IX,IY)) 788 RD11(IX,IY) = FACTOR * RD11(IX,IY) 789 RD12(IX,IY) = FACTOR * RD12(IX,IY) 790 RD21(IX,IY) = FACTOR * RD21(IX,IY) 791 RD22(IX,IY) = FACTOR * RD22(IX,IY) 792 XD11(IX,IY) = FACTOR * XD11(IX,IY) 793 XD12(IX,IY) = FACTOR * XD12(IX,IY) 794 XD21(IX,IY) = FACTOR * XD21(IX,IY) 795 XD22(IX,IY) = FACTOR * XD22(IX,IY) 796 END IF 797 END DO 798 END DO Page 15 Source Listing WAVEPREP 2014-09-16 17:01 multiwaveprep.f90 799 END IF 800 ! 801 END IF 802 END IF 803 ! 804 ! 4.c Input location and format 805 ! 806 DO J=1, NFCOMP 807 ! 808 IF ( ITYPE .GE. 5 ) THEN 809 WRITE (NDSO,960) 810 ELSE 811 IF (ITYPE.LE.3) THEN 812 WRITE (NDSO,961) NXJ(J), NYJ(J) 813 ELSE 814 WRITE (NDSO,962) J, NXJ(J), NYJ(J) 815 END IF 816 END IF 817 ! 818 CALL NEXTLN ( COMSTR , NDSI , NDSE ) 819 READ (NDSI,*,END=801,ERR=802,IOSTAT=IERR) & 820 FROMF, IDLAF(J), IDFMF(J), FORMT(J), FORMF(J) 821 IF (IDLAF(J).LT.1 .OR. IDLAF(J).GT.4) IDLAF(J) = 1 822 IF (IDFMF(J).LT.1 .OR. IDFMF(J).GT.3) IDFMF(J) = 1 823 IF ( ITYPE .NE. 5 ) WRITE (NDSO,963) IDLAF(J) 824 WRITE (NDSO,964) IDFMF(J) 825 IF (IDFMF(J).EQ.2) WRITE (NDSO,965) FORMT(J), FORMF(J) 826 ! 827 CALL NEXTLN ( COMSTR , NDSI , NDSE ) 828 READ (NDSI,*,END=801,ERR=802,IOSTAT=IERR) NDSF(J), NAMEF 829 NDSF(J) = 24 + NFCOMP 830 WRITE (NDSO,966) NDSF(J) 831 IF (FROMF.EQ.'NAME') WRITE (NDSO,967) NAMEF 832 ! 833 !--- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 834 ! 5 Prepare files 835 ! 5.a Open input file 836 ! 837 WRITE (NDSO,970) 838 ! 839 IF ( IDFMF(J) .EQ. 3 ) THEN 840 IF (NDSF(J).EQ.NDSI) THEN 841 WRITE (NDSE,1051) NDSI 842 CALL EXTCDE ( 20 ) 843 ELSE 844 IF (FROMF.EQ.'NAME') THEN 845 JJ = LEN_TRIM(FNMPRE) 846 OPEN (NDSF(J),FILE=FNMPRE(:JJ)//NAMEF, & 847 FORM='UNFORMATTED',STATUS='OLD',ERR=850, & 848 IOSTAT=IERR) 849 ELSE 850 OPEN (NDSF(J),FORM='UNFORMATTED', & 851 STATUS='OLD',ERR=850,IOSTAT=IERR) 852 END IF 853 ! 854 ! Adding a check to see if input file is a WAVEWATCH III file 855 ! (This check has only been added for binary wind files) Page 16 Source Listing WAVEPREP 2014-09-16 17:01 multiwaveprep.f90 856 ! 857 READ (NDSF(J),END=888,IOSTAT=IERR) TSTR, & 858 TSFLD, NXT, NYT 859 IF (IERR .EQ. 0 .AND. TSTR .EQ. IDSTR) THEN 860 IF (TSFLD .NE. IDFLD .OR. NXT .NE. NXI & 861 .OR. NYT .NE. NYI ) THEN 862 WRITE (NDSE,1052) TSFLD, NXT, NYT, IDFLD, & 863 NXI, NYI 864 CALL EXTCDE ( 21 ) 865 END IF 866 ELSE 867 REWIND(NDSF(J)) 868 END IF 869 END IF 870 ELSE 871 IF (NDSF(J).EQ.NDSI) THEN 872 CALL NEXTLN ( COMSTR , NDSI , NDSE ) 873 ELSE 874 IF (FROMF.EQ.'NAME') THEN 875 JJ = LEN_TRIM(FNMPRE) 876 OPEN (NDSF(J),FILE=FNMPRE(:JJ)//NAMEF, & 877 STATUS='OLD',ERR=850,IOSTAT=IERR) 878 ELSE 879 OPEN (NDSF(J),STATUS='OLD',ERR=850,IOSTAT=IERR) 880 END IF 881 END IF 882 END IF 883 ! 884 END DO 885 ! 886 IF ( NFCOMP .EQ. 1 ) THEN 887 NXJ (2) = NXJ (1) 888 NYJ (2) = NYJ (1) 889 NDSF (2) = NDSF (1) 890 IDLAF(2) = IDLAF(1) 891 IDFMF(2) = IDFMF(1) 892 FORMT(2) = FORMT(1) 893 FORMF(2) = FORMF(1) 894 END IF 895 ! 896 ! 5.b Open and prepare output file 897 ! 898 WRITE (NDSO,971) 899 J = LEN_TRIM(FNMPRE) 900 IF ( ITYPE .LE. 4 ) THEN 901 CALL W3FLDO ( 'WRITE', IDFLD, NDSDAT, NDST, NDSE, & 902 NX, NY, GTYPE, IERR, FPRE=FNMPRE(:J), & 903 FHDR=FLHDR ) 904 ELSE 905 CALL W3FLDO ( 'WRITE', IDFLD, NDSDAT, NDST, NDSE, & 906 RECLDT, 0, GTYPEDUM, IERR, FPRE=FNMPRE(:J) ) 907 END IF 908 ! 909 ! 5.c Initialize fields 910 ! 911 IF ( ITYPE .NE. 5 ) THEN 912 FX = 0. Page 17 Source Listing WAVEPREP 2014-09-16 17:01 multiwaveprep.f90 913 FY = 0. 914 FA = 0. 915 MXM = MAX ( NXJ(1), NXJ(2) ) 916 MYM = MAX ( NYJ(1), NYJ(2) ) 917 ALLOCATE ( XC(MXM,MYM), YC(MXM,MYM), AC(MXM,MYM) ) 918 XC = 0. 919 YC = 0. 920 AC = 0. 921 END IF 922 ! 923 !--- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 924 ! 6 Begin loop over input fields 925 ! 926 J = LEN_TRIM(FNMPRE) 927 OPEN (NDSTIME,FILE=FNMPRE(:J)//'times.'//IDFLD, & 928 ERR=870,IOSTAT=IERR ) 929 ! 930 WRITE (NDSO,972) 931 DO 932 ! 933 ! 6.a Read new time and fields 934 ! 935 IF ( FLTIME ) THEN 936 ! 937 J = 1 938 IF (IDFMF(J).EQ.1) THEN 939 READ (NDSF(J), * ,END=888,ERR=860,IOSTAT=IERR) TIME 940 ELSE IF (IDFMF(J).EQ.2) THEN 941 READ (NDSF(J),FORMT(J),END=888,ERR=860,IOSTAT=IERR) TIME 942 ELSE 943 READ (NDSF(J), END=888,ERR=860,IOSTAT=IERR) TIME 944 END IF 945 ! <--- 946 IF (NFCOMP.EQ.2) THEN 947 J = 2 948 IF (IDFMF(J).EQ.1) THEN 949 READ (NDSF(J), * ,END=888,ERR=860,IOSTAT=IERR) TIME2 950 ELSE IF (IDFMF(J).EQ.2) THEN 951 READ (NDSF(J),FORMT(J),END=888,ERR=860,IOSTAT=IERR) TIME2 952 ELSE 953 READ (NDSF(J), END=888,ERR=860,IOSTAT=IERR) TIME2 954 END IF 955 IF (TIME2(1).NE.TIME(1) .OR. TIME2(2).NE.TIME(2)) GOTO 861 956 END IF 957 ! <--- 958 END IF 959 ! 960 CALL STME21 ( TIME , IDTIME ) 961 WRITE (NDSO,973) IDTIME 962 WRITE (NDSTIME, 979, ERR=871,IOSTAT=IERR) TIME 963 ! 964 ! ... Input 965 ! 966 ! read in array from multiwaveprep.inp 967 IF ( ITYPE .LE. 4 ) THEN 968 CALL INA2R (XC, MXM, MYM, 1, NXJ(1), 1, NYJ(1), & 969 NDSF(1), NDST, NDSE, IDFMF(1), FORMF(1), IDLAF(1), 1., 0.) Page 18 Source Listing WAVEPREP 2014-09-16 17:01 multiwaveprep.f90 970 ! 971 IF (NFCOMP.EQ.2 .OR. IFLD.GE.3 .OR. FLBERG) THEN 972 CALL INA2R (YC, MXM, MYM, 1, NXJ(2), 1, NYJ(2), & 973 NDSF(2), NDST, NDSE, IDFMF(2), FORMF(2), & 974 IDLAF(2), 1., 0.) 975 ! 976 IF ( FLSTAB ) THEN 977 CALL INA2R (AC, MXM, MYM, 1, NXJ(2), 1, NYJ(2), & 978 NDSF(2), NDST, NDSE, IDFMF(2), FORMF(2), & 979 IDLAF(2), 1., 0. ) 980 ! 981 END IF 982 ! 983 END IF 984 ! 985 ELSE 986 ! 987 IF (IDFMF(1).EQ.3) THEN 988 READ (NDSF(1), END=862,ERR=862,IOSTAT=IERR) NDAT 989 ELSE 990 READ (NDSF(1),*,END=862,ERR=862,IOSTAT=IERR) NDAT 991 END IF 992 IF ( NDAT.GT.0 ) THEN 993 ALLOCATE ( DATA(RECLDT,NDAT) ) 994 DO IDAT=1, NDAT 995 IF (IDFMF(1).EQ.1) THEN 996 READ (NDSF(1), * ,END=863,ERR=863, & 997 IOSTAT=IERR) DATA(:,IDAT) 998 ELSE IF (IDFMF(1).EQ.2) THEN 999 READ (NDSF(1),FORMT(1),END=863,ERR=863, & 1000 IOSTAT=IERR) DATA(:,IDAT) 1001 ELSE 1002 READ (NDSF(1), END=863,ERR=863, & 1003 IOSTAT=IERR) DATA(:,IDAT) 1004 END IF 1005 END DO 1006 END IF 1007 ! 1008 END IF 1009 ! 1010 ! 6.b Interpolate fields 1011 ! ... No interpolation, type AI (should not use array syntax !!!) 1012 ! 1013 IF (ITYPE.EQ.1) THEN 1014 ! 1015 IF (( IFLD.LE.2 ).AND.( .NOT. FLBERG )) THEN 1016 DO IY=1, NY 1017 DO IX=1, NX 1018 FA(IX,IY) = XC(IX,IY) 1019 END DO 1020 END DO 1021 ELSE 1022 DO IY=1, NY 1023 DO IX=1, NX 1024 FX(IX,IY) = XC(IX,IY) 1025 FY(IX,IY) = YC(IX,IY) 1026 FA(IX,IY) = AC(IX,IY) Page 19 Source Listing WAVEPREP 2014-09-16 17:01 multiwaveprep.f90 1027 END DO 1028 END DO 1029 END IF 1030 ! 1031 ELSE IF (ITYPE.NE.5) THEN 1032 ! 1033 ! ... One-component fields 1034 ! 1035 IF (( IFLD.LE.2 ).AND.( .NOT. FLBERG )) THEN 1036 ! 1037 DO IY=1,NY 1038 DO IX=1,NX 1039 FA(IX,IY) & 1040 = RD11(IX,IY) * XC(IX21(IX,IY),IY21(IX,IY)) & 1041 + RD21(IX,IY) * XC(IX22(IX,IY),IY21(IX,IY)) & 1042 + RD12(IX,IY) * XC(IX21(IX,IY),IY22(IX,IY)) & 1043 + RD22(IX,IY) * XC(IX22(IX,IY),IY22(IX,IY)) 1044 END DO 1045 END DO 1046 ! 1047 IF (NFCOMP.EQ.2) THEN 1048 DO IY=1,NY 1049 DO IX=1,NX 1050 FA(IX,IY) = FA(IX,IY) & 1051 + XD11(IX,IY) * YC(JX21(IX,IY),JY21(IX,IY)) & 1052 + XD21(IX,IY) * YC(JX22(IX,IY),JY21(IX,IY)) & 1053 + XD12(IX,IY) * YC(JX21(IX,IY),JY22(IX,IY)) & 1054 + XD22(IX,IY) * YC(JX22(IX,IY),JY22(IX,IY)) 1055 END DO 1056 END DO 1057 END IF 1058 ! 1059 ! ... Two-component fields 1060 ! 1061 ELSE 1062 ! 1063 DO IY=1,NY 1064 DO IX=1,NX 1065 IF (IY21(IX,IY).LT.1) THEN 1066 IY21(IX,IY)=1 1067 IX21(IX,IY)=1 1068 IX22(IX,IY)=1 1069 ENDIF 1070 IF (IY22(IX,IY).LT.1) IY22(IX,IY)=1 1071 IF (IY21(IX,IY).GT.MYM) IY21(IX,IY)=MYM 1072 IF (IY22(IX,IY).GT.MYM) THEN 1073 IY22(IX,IY)=MYM 1074 IX21(IX,IY)=1 1075 IX22(IX,IY)=1 1076 END IF 1077 FX(IX,IY) & 1078 = RD11(IX,IY) * XC(IX21(IX,IY),IY21(IX,IY)) & 1079 + RD21(IX,IY) * XC(IX22(IX,IY),IY21(IX,IY)) & 1080 + RD12(IX,IY) * XC(IX21(IX,IY),IY22(IX,IY)) & 1081 + RD22(IX,IY) * XC(IX22(IX,IY),IY22(IX,IY)) 1082 FY(IX,IY) & 1083 = RD11(IX,IY) * YC(IX21(IX,IY),IY21(IX,IY)) & Page 20 Source Listing WAVEPREP 2014-09-16 17:01 multiwaveprep.f90 1084 + RD21(IX,IY) * YC(IX22(IX,IY),IY21(IX,IY)) & 1085 + RD12(IX,IY) * YC(IX21(IX,IY),IY22(IX,IY)) & 1086 + RD22(IX,IY) * YC(IX22(IX,IY),IY22(IX,IY)) 1087 FA(IX,IY) & 1088 = RD11(IX,IY) * AC(IX21(IX,IY),IY21(IX,IY)) & 1089 + RD21(IX,IY) * AC(IX22(IX,IY),IY21(IX,IY)) & 1090 + RD12(IX,IY) * AC(IX21(IX,IY),IY22(IX,IY)) & 1091 + RD22(IX,IY) * AC(IX22(IX,IY),IY22(IX,IY)) 1092 A1(IX,IY) = MAX ( 1.E-10 , & 1093 SQRT( FX(IX,IY)**2 + FY(IX,IY)**2 ) ) 1094 A2(IX,IY) & 1095 = RD11(IX,IY) * SQRT(XC(IX21(IX,IY),IY21(IX,IY))**2 & 1096 +YC(IX21(IX,IY),IY21(IX,IY))**2) & 1097 + RD21(IX,IY) * SQRT(XC(IX22(IX,IY),IY21(IX,IY))**2 & 1098 +YC(IX22(IX,IY),IY21(IX,IY))**2) & 1099 + RD12(IX,IY) * SQRT(XC(IX21(IX,IY),IY22(IX,IY))**2 & 1100 +YC(IX21(IX,IY),IY22(IX,IY))**2) & 1101 + RD22(IX,IY) * SQRT(XC(IX22(IX,IY),IY22(IX,IY))**2 & 1102 +YC(IX22(IX,IY),IY22(IX,IY))**2) 1103 A3(IX,IY) = SQRT ( & 1104 RD11(IX,IY) * ( XC(IX21(IX,IY),IY21(IX,IY))**2 & 1105 + YC(IX21(IX,IY),IY21(IX,IY))**2 ) & 1106 + RD21(IX,IY) * ( XC(IX22(IX,IY),IY21(IX,IY))**2 & 1107 + YC(IX22(IX,IY),IY21(IX,IY))**2 ) & 1108 + RD12(IX,IY) * ( XC(IX21(IX,IY),IY22(IX,IY))**2 & 1109 + YC(IX21(IX,IY),IY22(IX,IY))**2 ) & 1110 + RD22(IX,IY) * ( XC(IX22(IX,IY),IY22(IX,IY))**2 & 1111 + YC(IX22(IX,IY),IY22(IX,IY))**2 ) ) 1112 END DO 1113 END DO 1114 ! 1115 ! ... Winds, correct for velocity or energy conservation 1116 ! 1117 IF (IFLD.EQ.3) THEN 1118 DO IY=1,NY 1119 DO IX=1,NX 1120 FACTOR = MIN ( 1.5 , A2(IX,IY)/A1(IX,IY) ) 1121 FX(IX,IY) = FACTOR * FX(IX,IY) 1122 FY(IX,IY) = FACTOR * FY(IX,IY) 1123 END DO 1124 END DO 1125 END IF 1126 ! 1127 ! ... Currents, correct for velocity or energy conservation 1128 ! 1129 IF (IFLD.EQ.4) THEN 1130 DO IY=1,NY 1131 DO IX=1,NX 1132 FACTOR = MIN ( 1.5 , A2(IX,IY)/A1(IX,IY) ) 1133 FX(IX,IY) = FACTOR * FX(IX,IY) 1134 FY(IX,IY) = FACTOR * FY(IX,IY) 1135 END DO 1136 END DO 1137 END IF 1138 ! 1139 END IF 1140 ! Page 21 Source Listing WAVEPREP 2014-09-16 17:01 multiwaveprep.f90 1141 END IF 1142 ! 1143 ! ... Test output 1144 ! 1145 ! 6.c Write fields 1146 ! 1147 IF ( ITYPE .LE. 4 ) THEN 1148 CALL W3FLDG ('WRITE', IDFLD, NDSDAT, NDST, NDSE, NX, NY, & 1149 NX, NY, TIME, TIME, TIME, FX, FY, FA, TIME, & 1150 FX, FY, FA, IERR) 1151 ELSE IF ( ITYPE .EQ. 5 ) THEN 1152 IF ( NDAT .EQ. 0 ) THEN 1153 ELSE 1154 CALL W3FLDD ('WRITE', IDFLD, NDSDAT, NDST, NDSE, TIME,& 1155 TIME, RECLDT, NDAT, IDAT, DATA, IERR ) 1156 DEALLOCATE ( DATA ) 1157 END IF 1158 END IF 1159 IF (IERR.NE.0) CALL EXTCDE ( 30 ) 1160 ! 1161 IF ( .NOT. FLTIME ) EXIT 1162 END DO 1163 ! 1164 ! End loop over input fields 1165 !--- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1166 ! 1167 GOTO 888 1168 ! 1169 ! Error escape locations 1170 ! 1171 800 CONTINUE 1172 WRITE (NDSE,1000) IERR 1173 CALL EXTCDE ( 40 ) 1174 ! 1175 801 CONTINUE 1176 WRITE (NDSE,1001) 1177 CALL EXTCDE ( 41 ) 1178 ! 1179 802 CONTINUE 1180 WRITE (NDSE,1002) IERR 1181 CALL EXTCDE ( 42 ) 1182 ! 1183 837 CONTINUE 1184 WRITE (NDSE,1037) NDSI 1185 CALL EXTCDE ( 43 ) 1186 ! 1187 840 CONTINUE 1188 WRITE (NDSE,1040) X0I, XNI 1189 CALL EXTCDE ( 45 ) 1190 ! 1191 841 CONTINUE 1192 WRITE (NDSE,1041) Y0I, YNI 1193 CALL EXTCDE ( 46 ) 1194 ! 1195 845 CONTINUE 1196 WRITE (NDSE,1045) IERR 1197 CALL EXTCDE ( 47 ) Page 22 Source Listing WAVEPREP 2014-09-16 17:01 multiwaveprep.f90 1198 ! 1199 846 CONTINUE 1200 WRITE (NDSE,1046) IERR 1201 CALL EXTCDE ( 48 ) 1202 ! 1203 850 CONTINUE 1204 WRITE (NDSE,1050) IERR, NDSF(J), NAMEF 1205 CALL EXTCDE ( 49 ) 1206 ! 1207 860 CONTINUE 1208 WRITE (NDSE,1060) J, IERR 1209 CALL EXTCDE ( 50 ) 1210 ! 1211 861 CONTINUE 1212 WRITE (NDSE,1061) TIME, TIME2 1213 CALL EXTCDE ( 51 ) 1214 ! 1215 862 CONTINUE 1216 WRITE (NDSE,1062) IERR 1217 CALL EXTCDE ( 52 ) 1218 ! 1219 863 CONTINUE 1220 WRITE (NDSE,1063) IDAT, IERR 1221 CALL EXTCDE ( 53 ) 1222 ! 1223 870 CONTINUE 1224 WRITE (NDSE,1070) IDFLD, IERR 1225 CALL EXTCDE ( 54 ) 1226 ! 1227 871 CONTINUE 1228 WRITE (NDSE,1071) IDTIME, IERR 1229 CALL EXTCDE ( 54 ) 1230 ! 1231 888 CONTINUE 1232 WRITE (NDSO,999) 1233 ! 1234 ! CALL W3TAGE('WAVEPREP') 1235 ! 1236 ! Formats 1237 ! 1238 900 FORMAT (/15X,' *** WAVEWATCH III Input pre-processing *** '/ & 1239 15X,'==============================================='/) 1240 901 FORMAT ( ' Comment character is ''',A,''''/) 1241 902 FORMAT ( ' Grid name : ',A/) 1242 ! 1243 930 FORMAT (/' Description of inputs'/ & 1244 ' --------------------------------------------------'/ & 1245 ' Input type : ',A/ & 1246 ' Format type : ',A) 1247 1930 FORMAT ( ' Field conserves velocity.') 1248 2930 FORMAT ( ' Field corrected for energy conservation.') 1249 931 FORMAT (/' Single field, time: ',A) 1250 932 FORMAT (/' Input grid dim. :',I5,3X,I5) 1251 933 FORMAT ( ' Longitude range :',2F8.2,' (deg)'/ & 1252 ' Latitude range :',2F8.2,' (deg)') 1253 733 FORMAT ( ' X range :',2F8.2,' (km)'/ & 1254 ' Y range :',2F8.2,' (km)') Page 23 Source Listing WAVEPREP 2014-09-16 17:01 multiwaveprep.f90 1255 934 FORMAT (/' Data type : ',A/ & 1256 ' Data record length:',I5/ & 1257 ' Missing values :',F8.2) 1258 935 FORMAT ( 'DT',I1 ) 1259 938 FORMAT ( ' Icebergs included.') 1260 939 FORMAT ( ' Air-sea temperature differences included.') 1261 ! 1262 940 FORMAT (//' Preprocessing data'/ & 1263 ' --------------------------------------------------') 1264 941 FORMAT ( ' Interpolation factors ..... '/ & 1265 ' (longitude-latitude grid)') 1266 942 FORMAT ( ' Interpolation factors ..... '/ & 1267 ' (grid from file)') 1268 943 FORMAT (/' Longitude-latitude file ',I1,' :'/ & 1269 ' ---------------------------------------') 1270 944 FORMAT ( ' Input grid dim. :',I5,3X,I5/ & 1271 ' Closed longitudes :',L5) 1272 945 FORMAT ( ' Layout indicator :',I5/ & 1273 ' Format indicator :',I5) 1274 946 FORMAT ( ' Format : ',A) 1275 947 FORMAT ( ' Unit number :',I5) 1276 948 FORMAT ( ' File name : ',A) 1277 949 FORMAT (/' Corresponding map file '/ & 1278 ' ---------------------------------------') 1279 ! 1280 960 FORMAT (/' Data file :'/ & 1281 ' ---------------------------------------') 1282 961 FORMAT (/' Data file :'/ & 1283 ' ---------------------------------------'/ & 1284 ' Input grid dim. :',I5,3X,I5) 1285 962 FORMAT (/' Data file (',I1,') :'/ & 1286 ' ---------------------------------------'/ & 1287 ' Input grid dim. :',I5,3X,I5) 1288 963 FORMAT ( ' Layout indicator :',I5) 1289 964 FORMAT ( ' Format indicator :',I5) 1290 965 FORMAT ( ' Format for time : ',A/ & 1291 ' Format for data : ',A) 1292 966 FORMAT ( ' Unit number :',I5) 1293 967 FORMAT ( ' File name : ',A) 1294 ! 1295 970 FORMAT (/' Opening input data file .....') 1296 971 FORMAT (/' Opening output data file .....') 1297 972 FORMAT (//' Processing data'/ & 1298 ' --------------------------------------------------') 1299 973 FORMAT ( ' Time : ',A) 1300 ! 1301 979 FORMAT (1X,I8.8,1X,I6.6) 1302 ! 1303 999 FORMAT(//' End of program '/ & 1304 ' ========================================='/ & 1305 ' WAVEWATCH III Input preprocessing '/) 1306 ! 1307 1000 FORMAT (/' *** WAVEWATCH III ERROR IN WAVEPREP : '/ & 1308 ' ERROR IN OPENING INPUT FILE'/ & 1309 ' IOSTAT =',I5/) 1310 ! 1311 1001 FORMAT (/' *** WAVEWATCH III ERROR IN WAVEPREP : '/ & Page 24 Source Listing WAVEPREP 2014-09-16 17:01 multiwaveprep.f90 1312 ' PREMATURE END OF INPUT FILE'/) 1313 ! 1314 1002 FORMAT (/' *** WAVEWATCH III ERROR IN WAVEPREP : '/ & 1315 ' ERROR IN READING FROM INPUT FILE'/ & 1316 ' IOSTAT =',I5/) 1317 ! 1318 1030 FORMAT (/' *** WAVEWATCH III ERROR IN WAVEPREP : '/ & 1319 ' ILLEGAL FIELD ID -->',A,'<--'/) 1320 1031 FORMAT (/' *** WAVEWATCH III ERROR IN WAVEPREP : '/ & 1321 ' ILLEGAL FORMAT ID -->',A,'<--'/) 1322 1032 FORMAT (/' *** WAVEWATCH III ERROR IN WAVEPREP : '/ & 1323 ' THIS FORMAT TYPE IS ALLOWED FOR ICE AND LEV ONLY'/) 1324 ! 1325 1033 FORMAT (/' *** WAVEWATCH III ERROR IN WAVEPREP : '/ & 1326 ' ILLEGAL DATA RECORD LENGTH : ',I6/) 1327 1034 FORMAT (/' *** WAVEWATCH III ERROR IN WAVEPREP : '/ & 1328 ' ILLEGAL DATA TYPE : ',I2/) 1329 ! 1330 1035 FORMAT (/' *** WAVEWATCH III ERROR IN WAVEPREP : '/ & 1331 ' ILLEGAL TIME : ',I8.8,I7.6/) 1332 1036 FORMAT (/' *** WAVEWATCH III ERROR IN WAVEPREP : '/ & 1333 ' ILLEGAL SIZE OF INPUT GRID : ',I5,1X,I5/) 1334 1037 FORMAT (/' *** WAVEWATCH III ERROR IN WAVEPREP : '/ & 1335 ' ATTEMPT TO USE INPUT UNIT (',I2, & 1336 ') FOR NAMED FILE'/) 1337 1038 FORMAT (/' *** WAVEWATCH III WARNING IN WAVEPREP : '/ & 1338 ' DATA READ FROM INPUT FILE') 1339 1039 FORMAT (/' *** WAVEWATCH III ERROR IN WAVEPREP : '/ & 1340 ' ARRAYS FOR INPUT FIELDS TO SMALL '/ & 1341 ' GRID SIZE :',2I5/ & 1342 ' ARRAY DIMENSION :',2I5/) 1343 ! 1344 1040 FORMAT (/' *** WAVEWATCH III ERROR IN WAVEPREP : '/ & 1345 ' LONGITUDE GRID RANGE > 360 DEGR. : ',2F6.1/) 1346 1041 FORMAT (/' *** WAVEWATCH III ERROR IN WAVEPREP : '/ & 1347 ' ILLEGAL LATITUDE GRID RANGE : ',2F6.1/) 1348 1042 FORMAT (/' *** WAVEWATCH-III WARNING WAVEPREP : '/ & 1349 ' GRID POINT ',2I6,2F7.2,/ & 1350 ' NOT COVERED BY INPUT GRID.'/) 1351 1043 FORMAT (/' *** WAVEWATCH III WARNING WAVEPREP : '/ & 1352 ' X = ',F10.1,' NOT COVERED BY INPUT GRID.'/) 1353 1044 FORMAT (/' *** WAVEWATCH III WARNING WAVEPREP : '/ & 1354 ' Y = ',F10.1,' NOT COVERED BY INPUT GRID.'/) 1355 ! 1356 1357 ! 1358 1045 FORMAT (/' *** WAVEWATCH III ERROR IN WAVEPREP : '/ & 1359 ' ERROR IN OPENING LAT-LONG DATA FILE'/ & 1360 ' IOSTAT =',I5/) 1361 ! 1362 1046 FORMAT (/' *** WAVEWATCH III ERROR IN WAVEPREP : '/ & 1363 ' ERROR IN OPENING MASK FILE'/ & 1364 ' IOSTAT =',I5/) 1365 ! 1366 1050 FORMAT (/' *** WAVEWATCH III ERROR IN WAVEPREP : '/ & 1367 ' ERROR IN OPENING INPUT DATA FILE'/ & 1368 ' IOSTAT =',I5/ & Page 25 Source Listing WAVEPREP 2014-09-16 17:01 multiwaveprep.f90 1369 ' NDSF =',I5/ & 1370 ' NAMEF = ',A/) 1371 1051 FORMAT (/' *** WAVEWATCH III ERROR IN WAVEPREP : '/ & 1372 ' CANNOT READ UNFORMATTED FROM UNIT',I3/) 1373 ! 1374 1052 FORMAT (/' *** WAVEWATCH III ERROR IN WAVEPREP : '/ & 1375 ' ERROR IN READING FROM INPUT DATA FILE'/ & 1376 ' IN FILE , VARIABLE ID = ',A/ & 1377 ' ARRAY DIMENSION = ',2I5/ & 1378 ' EXPECTING , VARIABLE ID = ',A/ & 1379 ' ARRAY DIMENSION = ',2I5/) 1380 ! 1381 1060 FORMAT (/' *** WAVEWATCH III ERROR IN WAVEPREP : '/ & 1382 ' ERROR IN READING TIME FROM FILE (',I1,')'/ & 1383 ' IOSTAT =',I5/) 1384 1061 FORMAT (/' *** WAVEWATCH III ERROR IN WAVEPREP : '/ & 1385 ' INCOMPATIBLE FIELD TIMES '/ & 1386 ' FIELD #1 : ',I8.8,I7.6/ & 1387 ' FIELD #2 : ',I8.8,I7.6/) 1388 1062 FORMAT (/' *** WAVEWATCH III ERROR IN WAVEPREP : '/ & 1389 ' ERROR IN READING NDAT FROM FILE'/ & 1390 ' IOSTAT =',I5/) 1391 1063 FORMAT (/' *** WAVEWATCH III ERROR IN WAVEPREP : '/ & 1392 ' ERROR IN READING DATA RECORD',I6,' FROM FILE'/ & 1393 ' IOSTAT =',I5/) 1394 1070 FORMAT (/' *** WAVEWATCH III ERROR IN WAVEPREP : '/ & 1395 ' ERROR IN CREATING A TIMES FILE FOR ',A/ & 1396 ' IOSTAT =',I5/) 1397 1071 FORMAT (/' *** WAVEWATCH III ERROR IN WAVEPREP : '/ & 1398 ' ERROR IN WRITING TIME OUTPUT ',A/ & 1399 ' IOSTAT =',I5/) 1400 ! 1401 !/ 1402 !/ End of WAVEPREP ----------------------------------------------------- / 1403 !/ 1404 END PROGRAM WAVEPREP Page 26 Source Listing WAVEPREP 2014-09-16 17:01 Entry Points multiwaveprep.f90 ENTRY POINTS Name MAIN__ SYMBOL CROSS REFERENCE Name Object Declared Type Bytes Dimen Elements Attributes References 1000 Label 1307 1172 1001 Label 1311 1176 1002 Label 1314 1180 1030 Label 1318 359 1031 Label 1320 376 1032 Label 1322 388 1033 Label 1325 468 1034 Label 1327 472 1035 Label 1330 399 1036 Label 1332 446,645 1037 Label 1334 1184 1038 Label 1337 667,728 1039 Label 1339 1040 Label 1344 1188 1041 Label 1346 1192 1042 Label 1348 533 1043 Label 1351 1044 Label 1353 586,594 1045 Label 1358 1196 1046 Label 1362 1200 1050 Label 1366 1204 1051 Label 1371 841 1052 Label 1374 862 1060 Label 1381 1208 1061 Label 1384 1212 1062 Label 1388 1216 1063 Label 1391 1220 1070 Label 1394 1224 1071 Label 1397 1228 1930 Label 1247 382,383 2930 Label 1248 733 Label 1253 435,457 800 Label 1171 302 801 Label 1175 304,325,397,443,465,642,654,662,71 4,722,819,828 802 Label 1179 304,325,397,443,465,642,654,662,71 4,722,819,828 837 Label 1183 840 Label 1187 841 Label 1191 845 Label 1195 678,681,687,690 846 Label 1199 739,742,748,751 850 Label 1203 847,851,877,879 860 Label 1207 939,941,943,949,951,953 Page 27 Source Listing WAVEPREP 2014-09-16 17:01 Symbol Table multiwaveprep.f90 Name Object Declared Type Bytes Dimen Elements Attributes References 861 Label 1211 955 862 Label 1215 988,990 863 Label 1219 996,999,1002 870 Label 1223 928 871 Label 1227 962 888 Label 1231 857,939,941,943,949,951,953,1167 900 Label 1238 298 901 Label 1240 306 902 Label 1241 312 930 Label 1243 380 931 Label 1249 403 932 Label 1250 431,451 933 Label 1251 433,454 934 Label 1255 475 935 Label 1258 476 938 Label 1259 385 939 Label 1260 386 940 Label 1262 489 941 Label 1264 496 942 Label 1266 619 943 Label 1268 637 944 Label 1270 651 945 Label 1272 658,718 946 Label 1274 659,719 947 Label 1275 664,724 948 Label 1276 665,725 949 Label 1277 711 960 Label 1280 809 961 Label 1282 812 962 Label 1285 814 963 Label 1288 823 964 Label 1289 824 965 Label 1290 825 966 Label 1292 830 967 Label 1293 831 970 Label 1295 837 971 Label 1296 898 972 Label 1297 930 973 Label 1299 961 979 Label 1301 962 999 Label 1303 1232 A1 Local 224 R(4) 4 2 1 ALC 319,480,1092,1120,1132 A2 Local 224 R(4) 4 2 1 ALC 319,480,1094,1120,1132 A3 Local 224 R(4) 4 2 1 ALC 319,480,1103 ABS Func 504 scalar 504,600,601 AC Local 226 R(4) 4 2 1 ALC 917,920,977,1026,1088,1089,1090,10 91 ACC Local 218 R(4) 4 scalar 218,584,585,592,593 ADD Local 217 R(4) 4 scalar ALA Local 225 R(4) 4 2 1 PTR 507,508,509,511,515,521,613,614,69 8,699,700,702,703,768,774 ALLOCATED Func 648 scalar 648 ALO Local 225 R(4) 4 2 1 PTR 508,509,511,514,521,613,614,699,70 0,702,705,768,774 ASSOCIATED Func 507 scalar 507,698 Page 28 Source Listing WAVEPREP 2014-09-16 17:01 Symbol Table multiwaveprep.f90 Name Object Declared Type Bytes Dimen Elements Attributes References CLO Local 228 L(4) 4 1 2 643,651,768,774 COMSTR Local 230 CHAR 1 scalar 304,305,306,324,396,442,464,641,65 3,661,668,713,721,729,818,827,872 CONSTANTS Module 179 179 DATA Local 226 R(4) 4 2 1 ALC 993,997,1000,1003,1155,1156 DATTYP Local 204 I(4) 4 scalar 466,467,468,475,476 EFAC Local 217 R(4) 4 scalar 600,602,605,606,607,608 EXTCDE Subr 184 184,360,377,389,400,447,469,473,64 6,842,864,1159,1173,1177,1181,1185 ,1189,1193,1197,1201,1205,1209,121 3,1217,1221,1225,1229 FA Local 223 R(4) 4 2 1 ALC 318,480,914,1018,1026,1039,1050,10 87,1149,1150 FACTOR Local 217 R(4) 4 scalar 408,410,425,426,428,429,454,455,45 7,458,787,788,789,790,791,792,793, 794,795,1120,1121,1122,1132,1133,1 134 FILLER Local 206 I(4) 4 1 2 FLAGLL Local 407 L(4) 4 scalar 407,432,453,503,521,766,772 FLBERG Local 228 L(4) 4 scalar 331,348,385,971,1015,1035 FLHDR Local 228 L(4) 4 scalar 326,903 FLSTAB Local 228 L(4) 4 scalar 330,352,386,976 FLTIME Local 228 L(4) 4 scalar 325,395,935,1161 FNMPRE Local 192 CHAR 80 scalar 192,300,301,675,676,685,686,736,73 7,746,747,845,846,875,876,899,902, 906,926,927 FORMF Local 235 CHAR 32 1 2 820,825,893,969,973,978 FORMLL Local 231 CHAR 16 scalar 655,659,704,706,715,719,760 FORMT Local 235 CHAR 32 1 2 820,825,892,941,951,999 FROMF Local 232 CHAR 4 scalar 820,831,844,874 FROMLL Local 231 CHAR 4 scalar 655,665,674,684,715,725,735,745 FX Local 223 R(4) 4 2 1 ALC 318,480,912,1024,1077,1093,1121,11 33,1149,1150 FY Local 223 R(4) 4 2 1 ALC 318,480,913,1025,1082,1093,1122,11 34,1149,1150 GNAME Local 312 CHAR 30 scalar PTR 312 GSI Local 215 T_GSU 8 scalar 521,528,612 GTYPE Local 421 I(4) 4 scalar PTR 421,525,902 GTYPEDUM Local 239 I(4) 4 scalar 239,906 GTYPET Local 206 I(4) 4 scalar ICLO Local 229 I(4) 4 scalar 502,505,521,570 ICLOSE_NONE Param 502 I(4) 4 scalar 502,570 ICLOSE_SMPL Param 505 I(4) 4 scalar 505 IDAT Local 204 I(4) 4 scalar 994,997,1000,1003,1155,1220 IDFLD Local 230 CHAR 3 scalar 325,330,331,332,334,336,338,340,34 2,344,346,348,350,352,354,356,359, 364,476,860,862,901,905,927,1148,1 154,1224 IDFMF Local 203 I(4) 4 1 2 820,822,824,825,839,891,938,940,94 8,950,969,973,978,987,995,998 IDFMLL Local 202 I(4) 4 scalar 655,657,658,659,673,704,706,715,71 7,718,719,734,760 IDLAF Local 203 I(4) 4 1 2 820,821,823,890,969,974,979 IDLALL Local 202 I(4) 4 scalar 655,656,658,704,706,715,716,718,76 0 Page 29 Source Listing WAVEPREP 2014-09-16 17:01 Symbol Table multiwaveprep.f90 Name Object Declared Type Bytes Dimen Elements Attributes References IDSTR Local 237 CHAR 13 scalar 237,859 IDSTR1 Local 233 CHAR 12 1 13 247,380 IDSTR2 Local 236 CHAR 20 1 5 254,380 IDSTR3 Local 234 CHAR 15 1 3 257,475 IDTIME Local 231 CHAR 23 scalar 402,403,960,961,1228 IDTYPE Local 230 CHAR 2 scalar 325,366,368,370,372,376 IERR Local 200 I(4) 4 scalar 302,304,325,397,443,465,642,654,66 2,678,681,687,690,714,722,739,742, 748,751,766,772,819,828,848,851,85 7,859,877,879,902,906,928,939,941, 943,949,951,953,962,988,990,997,10 00,1003,1150,1155,1159,1172,1180,1 196,1200,1204,1208,1216,1220,1224, 1228 IFLD Local 200 I(4) 4 scalar 333,335,337,339,341,343,345,347,34 9,351,353,355,357,380,382,383,387, 971,1015,1035,1117,1129 ILAND Local 208 I(4) 4 scalar 208,626,767,773 INA2I Subr 186 186,759 INA2R Subr 186 186,703,705,968,972,977 INGRID Local 227 L(4) 4 scalar 528,531 INT Func 566 scalar 566,577 IS Local 205 I(4) 4 1 4 529,551,552 ITRACE Subr 184 184,284 ITYPE Local 200 I(4) 4 scalar 365,367,369,371,373,380,381,387,41 5,440,463,491,495,808,811,823,900, 911,967,1013,1031,1147,1151 IX Local 200 I(4) 4 scalar 513,514,515,527,528,533,539,540,54 1,542,543,544,545,546,551,552,553, 554,555,556,557,558,562,563,564,56 6,571,572,574,575,577,578,579,581, 582,584,592,605,606,607,608,624,62 5,626,628,784,786,787,788,789,790, 791,792,793,794,795,1017,1018,1023 ,1024,1025,1026,1038,1039,1040,104 1,1042,1043,1049,1050,1051,1052,10 53,1054,1064,1065,1066,1067,1068,1 070,1071,1072,1073,1074,1075,1077, 1078,1079,1080,1081,1082,1083,1084 ,1085,1086,1087,1088,1089,1090,109 1,1092,1093,1094,1095,1096,1097,10 98,1099,1100,1101,1102,1103,1104,1 105,1106,1107,1108,1109,1110,1111, 1119,1120,1121,1122,1131,1132,1133 ,1134 IX21 Local 210 I(4) 4 2 1 ALC 313,477,539,551,566,571,572,574,57 5,581,769,1040,1042,1067,1074,1078 ,1080,1083,1085,1088,1090,1095,109 6,1099,1100,1104,1105,1108,1109 IX22 Local 210 I(4) 4 2 1 ALC 313,477,540,552,572,575,769,1041,1 043,1068,1075,1079,1081,1084,1086, 1089,1091,1097,1098,1101,1102,1106 ,1107,1110,1111 IY Local 200 I(4) 4 scalar 512,514,515,526,528,533,539,540,54 1,542,543,544,545,546,551,552,553, Page 30 Source Listing WAVEPREP 2014-09-16 17:01 Symbol Table multiwaveprep.f90 Name Object Declared Type Bytes Dimen Elements Attributes References 554,555,556,557,558,623,625,626,62 8,785,786,787,788,789,790,791,792, 793,794,795,1016,1018,1022,1024,10 25,1026,1037,1039,1040,1041,1042,1 043,1048,1050,1051,1052,1053,1054, 1063,1065,1066,1067,1068,1070,1071 ,1072,1073,1074,1075,1077,1078,107 9,1080,1081,1082,1083,1084,1085,10 86,1087,1088,1089,1090,1091,1092,1 093,1094,1095,1096,1097,1098,1099, 1100,1101,1102,1103,1104,1105,1106 ,1107,1108,1109,1110,1111,1118,112 0,1121,1122,1130,1132,1133,1134 IY21 Local 211 I(4) 4 2 1 ALC 313,477,541,553,577,578,579,582,58 4,592,769,1040,1041,1065,1066,1071 ,1078,1079,1083,1084,1088,1089,109 5,1096,1097,1098,1104,1105,1106,11 07 IY22 Local 211 I(4) 4 2 1 ALC 313,477,542,554,579,770,1042,1043, 1070,1072,1073,1080,1081,1085,1086 ,1090,1091,1099,1100,1101,1102,110 8,1109,1110,1111 J Local 200 I(4) 4 scalar 300,301,406,635,637,643,644,645,64 9,651,702,703,705,759,765,768,774, 806,812,814,820,821,822,823,824,82 5,828,829,830,839,840,846,850,857, 867,871,876,879,899,902,906,926,92 7,937,938,939,940,941,943,947,948, 949,950,951,953,1204,1208 JJ Local 205 I(4) 4 scalar 675,676,685,686,736,737,746,747,84 5,846,875,876 JS Local 205 I(4) 4 1 4 529,553,554 JX21 Local 212 I(4) 4 2 1 ALC 314,477,775,1051,1053 JX22 Local 212 I(4) 4 2 1 ALC 314,477,775,1052,1054 JY21 Local 213 I(4) 4 2 1 ALC 314,477,775,1051,1052 JY22 Local 213 I(4) 4 2 1 ALC 314,477,776,1053,1054 LEN_TRIM Func 300 scalar 300,675,685,736,746,845,875,899,92 6 MAPOVR Local 213 I(4) 4 2 1 ALC 315,478,626,628,767,773,786,787 MAPSTA Local 625 I(4) 4 2 1 PTR 625 MASK Local 214 I(4) 4 2 1 ALC 419,420,449,450,648,649,650,759,76 9,775 MAX Func 571 scalar 571,574,578,600,601,915,916,1092 MAXX Local 425 R(4) 4 scalar PTR 425 MAXY Local 426 R(4) 4 scalar PTR 426 MIN Func 571 scalar 571,574,578,1120,1132 MOD Func 566 scalar 566,575,581 MXM Local 204 I(4) 4 scalar 915,917,968,972,977 MYM Local 204 I(4) 4 scalar 916,917,968,972,977,1071,1072,1073 NAMEF Local 232 CHAR 65 scalar 828,831,846,876,1204 NAMELL Local 232 CHAR 65 scalar 662,665,676,686,722,725,737,747 NDAT Local 205 I(4) 4 scalar 988,990,992,993,994,1152,1155 NDATMX Local 205 I(4) 4 scalar NDSDAT Local 199 I(4) 4 scalar 279,293,901,905,1148,1154 NDSE Local 192 I(4) 4 scalar PTR 192,276,290,324,359,376,388,396,39 Page 31 Source Listing WAVEPREP 2014-09-16 17:01 Symbol Table multiwaveprep.f90 Name Object Declared Type Bytes Dimen Elements Attributes References 9,442,446,464,468,472,641,645,653, 661,667,668,704,706,713,721,728,72 9,760,766,772,818,827,841,862,872, 901,905,969,973,978,1148,1154,1172 ,1176,1180,1184,1188,1192,1196,120 0,1204,1208,1212,1216,1220,1224,12 28 NDSF Local 202 I(4) 4 1 2 828,829,830,840,846,850,857,867,87 1,876,879,889,939,941,943,949,951, 953,969,973,978,988,990,996,999,10 02,1204 NDSI Local 199 I(4) 4 scalar 274,288,301,303,304,324,325,396,39 7,442,443,464,465,641,642,653,654, 661,662,666,668,707,713,714,721,72 2,727,729,761,818,819,827,828,840, 841,871,872,1184 NDSLL Local 202 I(4) 4 scalar 662,663,664,666,676,680,686,689,70 4,706,707,722,723,724,727,737,741, 747,750,760,761 NDSM Local 199 I(4) 4 scalar 278,292,311 NDSO Local 192 I(4) 4 scalar PTR 192,275,289,290,291,294,298,306,31 2,380,382,383,385,386,403,431,433, 435,451,454,457,475,489,496,533,58 6,594,619,637,651,658,659,664,665, 711,718,719,724,725,726,766,772,80 9,812,814,823,824,825,830,831,837, 898,930,961,1232 NDST Local 192 I(4) 4 scalar PTR 192,277,291,704,706,760,766,772,90 1,905,969,973,978,1148,1154 NDSTIME Local 209 I(4) 4 scalar 280,927,962 NDSTRC Local 199 I(4) 4 scalar 282,284,294 NEXTLN Subr 184 184,324,396,442,464,641,653,661,66 8,713,721,729,818,827,872 NFCOMP Local 200 I(4) 4 scalar 363,374,635,663,723,783,806,829,88 6,946,971,1047 NODATA Local 217 R(4) 4 scalar 466,475 NTRACE Local 199 I(4) 4 scalar 283,284 NX Local 313 I(4) 4 scalar PTR 313,314,315,316,317,318,319,417,42 8,429,527,562,624,767,773,784,902, 1017,1023,1038,1049,1064,1119,1131 ,1148,1149 NXI Local 201 I(4) 4 scalar 417,419,431,444,445,446,449,451,50 0,504,511,513,521,571,574,575,860, 863 NXJ Local 201 I(4) 4 1 2 643,644,645,649,651,702,703,705,75 9,768,774,812,814,887,915,968,972, 977 NXT Local 206 I(4) 4 scalar 858,860,862 NY Local 313 I(4) 4 scalar PTR 313,314,315,316,317,318,319,418,42 8,429,526,623,767,773,785,902,1016 ,1022,1037,1048,1063,1118,1130,114 8,1149 NYB Local 207 I(4) 4 scalar NYI Local 201 I(4) 4 scalar 418,419,431,444,445,446,449,451,50 1,511,512,521,578,592,861,863 Page 32 Source Listing WAVEPREP 2014-09-16 17:01 Symbol Table multiwaveprep.f90 Name Object Declared Type Bytes Dimen Elements Attributes References NYJ Local 201 I(4) 4 1 2 643,644,645,649,651,702,703,705,75 9,768,774,812,814,888,916,968,972, 977 NYT Local 206 I(4) 4 scalar 858,861,862 RD11 Local 219 R(4) 4 2 1 ALC 316,479,543,555,605,769,788,1040,1 078,1083,1088,1095,1104 RD12 Local 220 R(4) 4 2 1 ALC 316,479,545,557,607,769,789,1042,1 080,1085,1090,1099,1108 RD21 Local 219 R(4) 4 2 1 ALC 316,479,544,556,606,769,790,1041,1 079,1084,1089,1097,1106 RD22 Local 220 R(4) 4 2 1 ALC 316,479,546,558,608,769,791,1043,1 081,1086,1091,1101,1110 REAL Func 500 scalar 500,501,504,514,515,581,582,787 RECLDT Local 204 I(4) 4 scalar 466,471,472,475,906,993,1155 RW Local 217 R(4) 4 1 4 425,426,428,429,433,435,529,555,55 6,557,558,581,582,584,585,587,588, 592,593,595,596,600,601,605,606,60 7,608 SQRT Func 600 scalar 600,1093,1095,1097,1099,1101,1103 STME21 Subr 185 185,402,960 SXI Local 216 R(4) 4 scalar 500,504,514,566,581 SYI Local 216 R(4) 4 scalar 501,515,577,582 TFLAGT Local 206 I(4) 4 scalar TIME Local 201 I(4) 4 1 2 397,398,399,402,939,941,943,955,96 0,962,1149,1154,1155,1212 TIME2 Local 203 I(4) 4 1 2 949,951,953,955,1212 TSFLD Local 238 CHAR 3 scalar 858,860,862 TSTR Local 237 CHAR 13 scalar 857,859 T_GSU Type 215 scalar 215 UNGTYPE Param 421 I(4) 4 scalar 421,525 W3ADATMD Module 182 182 W3ARRYMD Module 186 186 W3FLDD Subr 188 188,1154 W3FLDG Subr 188 188,1148 W3FLDO Subr 188 188,901,905 W3FLDP Subr 188 188,766,772 W3FLDSMD Module 188 188 W3GDATMD Module 190 190 W3GRMP Local 528 scalar 528 W3GRMP_R4 Func 528 L(4) 4 scalar PRIV 528 W3GSRUMD Module 191 191 W3GSUC Local 521 scalar 521 W3GSUC_R4 Func 521 RECORD 8 scalar PRIV 521 W3GSUD Subr 612 612 W3IOGR Subr 187 187,311 W3IOGRMD Module 187 187 W3NAUX Subr 182 182,267 W3NMOD Subr 265 265 W3NOUT Subr 183 183,269 W3ODATMD Module 183 183,192 W3SERVMD Module 184 184 W3SETA Subr 182 182,268 W3SETG Subr 266 266 W3SETO Subr 183 183,270 W3TIMEMD Module 185 185 Page 33 Source Listing WAVEPREP 2014-09-16 17:01 Symbol Table multiwaveprep.f90 Name Object Declared Type Bytes Dimen Elements Attributes References WAVEPREP Prog 2 X Local 217 R(4) 4 scalar 563,566,581 X0 Local 425 R(4) 4 scalar PTR 425 X0I Local 216 R(4) 4 scalar 444,454,457,500,514,566,581,1188 XC Local 226 R(4) 4 2 1 ALC 917,918,968,1018,1024,1040,1041,10 42,1043,1078,1079,1080,1081,1095,1 097,1099,1101,1104,1106,1108,1110 XD11 Local 221 R(4) 4 2 1 ALC 317,479,775,792,1051 XD12 Local 222 R(4) 4 2 1 ALC 317,479,775,793,1053 XD21 Local 221 R(4) 4 2 1 ALC 317,479,775,794,1052 XD22 Local 222 R(4) 4 2 1 ALC 317,479,775,795,1054 XDIF Local 216 R(4) 4 scalar XGRD Local 428 R(4) 4 2 1 PTR 428,528,533,767,773 XNI Local 216 R(4) 4 scalar 444,454,457,500,1188 XYB Local 563 R(8) 8 2 1 PTR 563,564 Y Local 217 R(4) 4 scalar 564,577,582,586,594 Y0 Local 426 R(4) 4 scalar PTR 426 Y0I Local 216 R(4) 4 scalar 444,455,458,501,515,577,582,1192 YC Local 226 R(4) 4 2 1 ALC 917,919,972,1025,1051,1052,1053,10 54,1083,1084,1085,1086,1096,1098,1 100,1102,1105,1107,1109,1111 YGRD Local 429 R(4) 4 2 1 PTR 429,528,533,767,773 YNI Local 216 R(4) 4 scalar 444,455,458,501,1192 Page 34 Source Listing WAVEPREP 2014-09-16 17:01 Subprograms/Common Blocks multiwaveprep.f90 SUBPROGRAMS/COMMON BLOCKS Name Object Declared Type Bytes Dimen Elements Attributes References WAVEPREP Prog 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 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 -fpscomp noioformat -fpscomp noldio_spacing -fpscomp nologicals no -fpconstant -fpe3 -fprm nearest Page 35 Source Listing WAVEPREP 2014-09-16 17:01 multiwaveprep.f90 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 : multiwaveprep.lst -o filename : none COMPILER: Intel(R) Fortran 12.1-2100