Page 1 Source Listing W3NINP 2014-09-16 16:53 w3idatmd.f90 1 !/ ------------------------------------------------------------------- / 2 MODULE W3IDATMD 3 !/ 4 !/ +-----------------------------------+ 5 !/ | WAVEWATCH III NOAA/NCEP | 6 !/ | H. L. Tolman | 7 !/ | FORTRAN 90 | 8 !/ | Last update : 29-May-2009 | 9 !/ +-----------------------------------+ 10 !/ 11 !/ 02-Apr-2004 : Origination. ( version 3.06 ) 12 !/ 19-Jul-2006 : Adding auxiliary grids. ( version 3.10 ) 13 !/ 04-Oct-2006 : Add filter to array pointers. ( version 3.10 ) 14 !/ 29-May-2009 : Preparing distribution version. ( version 3.14 ) 15 !/ 16 !/ Copyright 2009 National Weather Service (NWS), 17 !/ National Oceanic and Atmospheric Administration. All rights 18 !/ reserved. WAVEWATCH III is a trademark of the NWS. 19 !/ No unauthorized use without permission. 20 !/ 21 ! 1. Purpose : 22 ! 23 ! Define data structures to set up wave model input data for 24 ! several models simultaneously. 25 ! 26 ! 2. Variables and types : 27 ! 28 ! Name Type Scope Description 29 ! ---------------------------------------------------------------- 30 ! NIDATA Int. Public Number of models in array dim. 31 ! IIDATA Int. Public Selected model for output, init. at -1. 32 ! INPUT TYPE Public Basic data structure. 33 ! INPUTS INPUT Public Array of data structures. 34 ! ---------------------------------------------------------------- 35 ! 36 ! All elements of INPUT are aliased to pointers with the same 37 ! name. Some aditional pointer provide previous equivalenced 38 ! parameters. These pointers are defined as : 39 ! 40 ! Name Type Scope Description 41 ! ---------------------------------------------------------------- 42 ! TLN I.A. Public Time for water level field. 43 ! TC0/N I.A. Public Times for current fields. 44 ! TW0/N I.A. Public Times for wind fields. 45 ! TDN I.A. Public Time for mud density field. 46 ! TTN I.A. Public Time for mud thickness field. 47 ! TVN I.A. Public Time for mud viscosity field. 48 ! TIN I.A. Public Time for ice field. (concentration) 49 ! TI1N I.A. Public Time for ice field. (parameter 1) 50 ! TI2N I.A. Public Time for ice field. (parameter 2) 51 ! TI3N I.A. Public Time for ice field. (parameter 3) 52 ! TI4N I.A. Public Time for ice field. (parameter 4) 53 ! TI5N I.A. Public Time for ice field. (parameter 5) 54 ! TnN I.A. Public Time for data types 1-3. 55 ! TDN I.A. Public Time for next data. 56 ! TG0/N I.A. Public Times for grid motion data. 57 ! TFN I.A. Public Array consolidating most above times. Page 2 Source Listing W3NINP 2014-09-16 16:53 w3idatmd.f90 58 ! GA0/N Real Public Norm of grid speed vector. 59 ! GD0/N Real Public Direction of grid speed vector. 60 ! WX0/N R.A. Public Cartesian X and Y wind components 61 ! WY0/N R.A. Public for both times. 62 ! DT0/N R.A. Public Corr. air-sea temperature differences. 63 ! CX0/N R.A. Public Cartesian X and Y current components 64 ! CY0/N R.A. Public for both times. 65 ! WLEV R.A. Public Next water level field. 66 ! ICEI R.A. Public Ice concentrations. 67 ! BERGI R.A. Public Iceberg damping coefficient 68 ! IINIT Log. Public Flag for array initialization. 69 ! FLLEV Log. Public Flag for water level input. 70 ! FLCUR Log. Public Flag for current input. 71 ! FLWIND Log. Public Flag for wind input. 72 ! FLICE Log. Public Flag for ice input. 73 ! FLAGS L.A. Public Array consolidating the above four 74 ! flags, as well as four additional 75 ! data flags. 76 ! JFIRST Int Public First index of arrays related to 77 ! input fields. At present this is 78 ! hardwired below. Field-related arrays 79 ! (e.g., FLAGS) will be allocated from 80 ! JFIRST:7 (e.g., ALLOCATE(FLAGS(JFIRST:7))). 81 ! CXTIDE R.A. Public Tidal constituents of X current component 82 ! CYTIDE R.A. Public Tidal constituents of Y current component 83 ! WLTIDE R.A. Public Tidal constituents of water level 84 ! FLLEVTIDE Log. Public Flag for use of tidal const. in water level input. 85 ! FLCURTIDE Log. Public Flag for use of tidal const. in current input. 86 ! ---------------------------------------------------------------- 87 ! 88 ! 3. Subroutines and functions : 89 ! 90 ! Name Type Scope Description 91 ! ---------------------------------------------------------------- 92 ! W3NINP Subr. Public Set number of grids/models. 93 ! W3DIMI Subr. Public Set dimensions of arrays. 94 ! W3SETI Subr. Public Point to selected grid / model. 95 ! ---------------------------------------------------------------- 96 ! 97 ! 4. Subroutines and functions used : 98 ! 99 ! Name Type Module Description 100 ! ---------------------------------------------------------------- 101 ! W3SETG Subr. W3GDATMD Point to proper model grid. 102 ! STRACE Subr. W3SERVMD Subroutine tracing. 103 ! EXTCDE Subr. W3SERVMD Abort program with exit code. 104 ! ---------------------------------------------------------------- 105 ! 106 ! 5. Remarks : 107 ! 108 ! - The number of grids is taken from W3GDATMD, and needs to be 109 ! set first with W3DIMG. 110 ! 111 ! - FLAGS dimensioning is hardwired as FLAGS(-7:12) where lowest possible 112 ! value of JFIRST is JFIRST=-7 113 ! 114 ! 6. Switches : Page 3 Source Listing W3NINP 2014-09-16 16:53 w3idatmd.f90 115 ! 116 ! !/S Enable subroutine tracing. 117 ! !/T Enable test output 118 ! !/TIDE Use of tidal constituents 119 ! 120 ! 7. Source code : 121 ! 122 !/ ------------------------------------------------------------------- / 123 PUBLIC 124 !/ 125 !/ Conventional declarations 126 !/ 127 INTEGER :: NIDATA = -1, IIDATA = -1 128 129 INTEGER :: JFIRST = 1 130 131 !/ 132 !/ Data structure INPUT 133 !/ 134 TYPE INPUT 135 INTEGER :: TFN(2,-7:8), TC0(2), TW0(2), & 136 TDN(2), TG0(2) 137 REAL :: GA0, GD0, GAN, GDN 138 REAL, POINTER :: WX0(:,:), WY0(:,:), DT0(:,:), & 139 WXN(:,:), WYN(:,:), DTN(:,:), & 140 CX0(:,:), CY0(:,:), CXN(:,:), & 141 CYN(:,:), WLEV(:,:), ICEI(:,:), & 142 BERGI(:,:), MUDT(:,:), MUDV(:,:), & 143 MUDD(:,:), ICEP1(:,:), ICEP2(:,:), & 144 ICEP3(:,:), ICEP4(:,:), ICEP5(:,:) 145 LOGICAL :: IINIT 146 ! note that if size of FLAGS is changed, then TFLAGS in wminitmd.ftn 147 ! also must be resized. 148 LOGICAL :: FLAGS(-7:12) 149 END TYPE INPUT 150 !/ 151 !/ Data storage 152 !/ 153 TYPE(INPUT), TARGET, ALLOCATABLE :: INPUTS(:) 154 !/ 155 !/ Data aliasses for structure INPUT(S) 156 !/ 157 INTEGER, POINTER :: TFN(:,:), TLN(:), TC0(:), TCN(:), & 158 TW0(:), TWN(:), TIN(:), T0N(:), & 159 T1N(:), T2N(:), TDN(:), TG0(:), & 160 TGN(:), TTN(:), TVN(:), TZN(:), & 161 TI1(:), TI2(:), TI3(:), TI4(:), TI5(:) 162 REAL, POINTER :: GA0, GD0, GAN, GDN 163 REAL, POINTER :: WX0(:,:), WY0(:,:), DT0(:,:), & 164 WXN(:,:), WYN(:,:), DTN(:,:), & 165 CX0(:,:), CY0(:,:), CXN(:,:), & 166 CYN(:,:), WLEV(:,:), ICEI(:,:), & 167 BERGI(:,:), MUDT(:,:), MUDV(:,:), & 168 MUDD(:,:), ICEP1(:,:), ICEP2(:,:), & 169 ICEP3(:,:), ICEP4(:,:), ICEP5(:,:) 170 LOGICAL, POINTER :: IINIT 171 LOGICAL, POINTER :: FLAGS(:) Page 4 Source Listing W3NINP 2014-09-16 16:53 w3idatmd.f90 172 LOGICAL, POINTER :: FLLEV, FLCUR, FLWIND, FLICE 173 LOGICAL, POINTER :: FLMTH, FLMVS, FLMDN 174 LOGICAL, POINTER :: FLIC1, FLIC2, FLIC3, FLIC4, FLIC5 175 !/ 176 CONTAINS 177 !/ ------------------------------------------------------------------- / 178 SUBROUTINE W3NINP ( NDSE, NDST ) 179 !/ 180 !/ +-----------------------------------+ 181 !/ | WAVEWATCH III NOAA/NCEP | 182 !/ | H. L. Tolman | 183 !/ | FORTRAN 90 | 184 !/ | Last update : 19-Jul-2006 ! 185 !/ +-----------------------------------+ 186 !/ 187 !/ 02-Apr-2004 : Origination. ( version 3.06 ) 188 !/ 19-Jul-2006 : Adding auxiliary grids. ( version 3.10 ) 189 !/ 190 ! 1. Purpose : 191 ! 192 ! Set up the number of grids to be used. 193 ! 194 ! 2. Method : 195 ! 196 ! Use data stored in NGRIDS in W3GDATMD. 197 ! 198 ! 3. Parameters : 199 ! 200 ! Parameter list 201 ! ---------------------------------------------------------------- 202 ! NDSE Int. I Error output unit number. 203 ! NDST Int. I Test output unit number. 204 ! ---------------------------------------------------------------- 205 ! 206 ! 4. Subroutines used : 207 ! 208 ! See module documentation. 209 ! 210 ! 5. Called by : 211 ! 212 ! Any program that uses this grid structure. 213 ! 214 ! 6. Error messages : 215 ! 216 ! - Error checks on previous setting of variable NGRIDS. 217 ! 218 ! 7. Remarks : 219 ! 220 ! 8. Structure : 221 ! 222 ! 9. Switches : 223 ! 224 ! !/S Enable subroutine tracing. 225 ! !/T Enable test output 226 ! 227 ! 10. Source code : 228 ! Page 5 Source Listing W3NINP 2014-09-16 16:53 w3idatmd.f90 229 !/ ------------------------------------------------------------------- / 230 USE W3GDATMD, ONLY: NGRIDS, NAUXGR 231 USE W3SERVMD, ONLY: EXTCDE 232 ! 233 IMPLICIT NONE 234 !/ 235 !/ ------------------------------------------------------------------- / 236 !/ Parameter list 237 !/ 238 INTEGER, INTENT(IN) :: NDSE, NDST 239 !/ 240 !/ ------------------------------------------------------------------- / 241 !/ Local parameters 242 !/ 243 INTEGER :: I 244 !/ 245 ! 246 ! -------------------------------------------------------------------- / 247 ! 1. Test input and module status 248 ! 249 IF ( NGRIDS .EQ. -1 ) THEN 250 WRITE (NDSE,1001) NGRIDS 251 CALL EXTCDE (1) 252 END IF 253 ! 254 ! -------------------------------------------------------------------- / 255 ! 2. Set variable and allocate arrays 256 ! 257 ALLOCATE ( INPUTS(-NAUXGR:NGRIDS) ) 258 NIDATA = NGRIDS 259 ! 260 ! -------------------------------------------------------------------- / 261 ! 3. Initialize parameters 262 ! 263 DO I=-NAUXGR, NGRIDS 264 INPUTS(I)%TFN(1,:) = -1 265 INPUTS(I)%TFN(2,:) = 0 266 INPUTS(I)%TC0(1) = -1 267 INPUTS(I)%TC0(2) = 0 268 INPUTS(I)%TW0(1) = -1 269 INPUTS(I)%TW0(2) = 0 270 INPUTS(I)%TDN(1) = -1 271 INPUTS(I)%TDN(2) = 0 272 INPUTS(I)%TG0(1) = -1 273 INPUTS(I)%TG0(2) = 0 274 INPUTS(I)%IINIT = .FALSE. 275 INPUTS(I)%FLAGS = .FALSE. 276 END DO 277 ! 278 RETURN 279 ! 280 ! Formats 281 ! 282 1001 FORMAT (/' *** ERROR W3NINP : NGRIDS NOT YET SET *** '/ & 283 ' NGRIDS = ',I10/ & 284 ' RUN W3NMOD FIRST'/) 285 ! Page 6 Source Listing W3NINP 2014-09-16 16:53 w3idatmd.f90 286 !/ 287 !/ End of W3NINP ----------------------------------------------------- / 288 !/ 289 END SUBROUTINE W3NINP ENTRY POINTS Name w3idatmd_mp_w3ninp_ SYMBOL CROSS REFERENCE Name Object Declared Type Bytes Dimen Elements Attributes References 1001 Label 282 250 EXTCDE Subr 231 231,251 FLAGS Local 275 L(4) 4 1 20 TGT 275,395,396,397,398,399,401,402,40 3,405,406,408,409,603,605,606,607, 608,609,611,612,613,615,616,618,61 9 I Local 243 I(4) 4 scalar 263,264,265,266,267,268,269,270,27 1,272,273,274,275 IINIT Local 274 L(4) 4 scalar TGT 274,383,448,602 INPUTS Local 257 RECORD 2280 1 1 ALC,TGT 257,264,265,266,267,268,269,270,27 1,272,273,274,275,383,395,396,397, 398,399,401,402,403,405,406,408,40 9,414,415,416,417,418,420,421,422, 424,426,427,428,429,431,432,433,43 4,435,436,438,439,443,444,445,448, 572,573,574,575,576,578,579,580,58 1,582,584,585,586,588,589,590,591, 592,593,594,595,597,598,599,600,60 2,603,605,606,607,608,609,611,612, 613,615,616,618,619,624,627,630,63 3,636,640,643,646,650,654,655,656, 657,661,662,663,664,665,666,670,67 1 NAUXGR Local 230 I(4) 4 scalar 230,257,263 NDSE Dummy 178 I(4) 4 scalar ARG,IN 250 NDST Dummy 178 I(4) 4 scalar ARG,IN NGRIDS Local 230 I(4) 4 scalar 230,249,250,257,258,263 NIDATA Local 258 I(4) 4 scalar 127,258,378,379,554,559,560 TC0 Local 266 I(4) 4 1 2 266,267,573 TDN Local 270 I(4) 4 1 2 270,271,576 TFN Local 264 I(4) 4 2 32 264,265,572,578,579,580,581,582,58 4,585,586,588,589,590,591,592,593, 594,595 TG0 Local 272 I(4) 4 1 2 272,273,575 TW0 Local 268 I(4) 4 1 2 268,269,574 W3GDATMD Module 230 230 W3NINP Subr 178 W3SERVMD Module 231 231 Page 7 Source Listing W3NINP 2014-09-16 16:53 w3idatmd.f90 290 !/ ------------------------------------------------------------------- / 291 SUBROUTINE W3DIMI ( IMOD, NDSE, NDST, FLAGSTIDEIN ) 292 !/ 293 !/ +-----------------------------------+ 294 !/ | WAVEWATCH III NOAA/NCEP | 295 !/ | H. L. Tolman | 296 !/ | FORTRAN 90 | 297 !/ | Last update : 04-Oct-2006 ! 298 !/ +-----------------------------------+ 299 !/ 300 !/ 02-Apr-2004 : Origination. ( version 3.06 ) 301 !/ 19-Jul-2006 : Adding auxiliary grids. ( version 3.10 ) 302 !/ 04-Oct-2006 : Add filter to array pointers. ( version 3.10 ) 303 !/ 304 ! 1. Purpose : 305 ! 306 ! Initialize an individual data grid at the proper dimensions. 307 ! 308 ! 2. Method : 309 ! 310 ! Allocate directly into the structure array. Note that 311 ! this cannot be done through the pointer alias! 312 ! 313 ! 3. Parameters : 314 ! 315 ! Parameter list 316 ! ---------------------------------------------------------------- 317 ! IMOD Int. I Model number to point to. 318 ! NDSE Int. I Error output unit number. 319 ! NDST Int. I Test output unit number. 320 ! ---------------------------------------------------------------- 321 ! 322 ! 4. Subroutines used : 323 ! 324 ! See module documentation. 325 ! 326 ! 5. Called by : 327 ! 328 ! Main wave model drivers. 329 ! 330 ! 6. Error messages : 331 ! 332 ! - Check on input parameters. 333 ! - Check on previous allocation. 334 ! 335 ! 7. Remarks : 336 ! 337 ! - W3SETI needs to be called after allocation to point to 338 ! proper allocated arrays. 339 ! 340 ! 8. Structure : 341 ! 342 ! See source code. 343 ! 344 ! 9. Switches : 345 ! 346 ! !/S Enable subroutine tracing. Page 8 Source Listing W3DIMI 2014-09-16 16:53 w3idatmd.f90 347 ! !/T Enable test output 348 ! 349 ! 10. Source code : 350 ! 351 !/ ------------------------------------------------------------------- / 352 USE W3GDATMD, ONLY: NGRIDS, NAUXGR, IGRID, W3SETG, NX, NY 353 USE W3SERVMD, ONLY: EXTCDE 354 ! 355 IMPLICIT NONE 356 !/ 357 !/ ------------------------------------------------------------------- / 358 !/ Parameter list 359 !/ 360 INTEGER, INTENT(IN) :: IMOD, NDSE, NDST 361 LOGICAL, INTENT(IN), OPTIONAL :: FLAGSTIDEIN(4) 362 !/ 363 !/ ------------------------------------------------------------------- / 364 !/ Local parameters 365 !/ 366 INTEGER :: JGRID 367 LOGICAL :: FLAGSTIDE(4)=.FALSE. 368 !/ 369 ! 370 ! -------------------------------------------------------------------- / 371 ! 1. Test input and module status 372 ! 373 IF ( NGRIDS .EQ. -1 ) THEN 374 WRITE (NDSE,1001) 375 CALL EXTCDE (1) 376 END IF 377 ! 378 IF ( IMOD.LT.-NAUXGR .OR. IMOD.GT.NIDATA ) THEN 379 WRITE (NDSE,1002) IMOD, -NAUXGR, NIDATA 380 CALL EXTCDE (2) 381 END IF 382 ! 383 IF ( INPUTS(IMOD)%IINIT ) THEN 384 WRITE (NDSE,1003) 385 CALL EXTCDE (3) 386 END IF 387 ! 388 JGRID = IGRID 389 IF ( JGRID .NE. IMOD ) CALL W3SETG ( IMOD, NDSE, NDST ) 390 ! 391 ! -------------------------------------------------------------------- / 392 ! 2. Allocate arrays 393 ! 394 395 FLIC1 => INPUTS(IMOD)%FLAGS(-7) 396 FLIC2 => INPUTS(IMOD)%FLAGS(-6) 397 FLIC3 => INPUTS(IMOD)%FLAGS(-5) 398 FLIC4 => INPUTS(IMOD)%FLAGS(-4) 399 FLIC5 => INPUTS(IMOD)%FLAGS(-3) 400 ! 401 FLMDN => INPUTS(IMOD)%FLAGS(-2) 402 FLMTH => INPUTS(IMOD)%FLAGS(-1) 403 FLMVS => INPUTS(IMOD)%FLAGS(0) Page 9 Source Listing W3DIMI 2014-09-16 16:53 w3idatmd.f90 404 ! 405 FLLEV => INPUTS(IMOD)%FLAGS(1) 406 FLCUR => INPUTS(IMOD)%FLAGS(2) 407 408 FLWIND => INPUTS(IMOD)%FLAGS(3) 409 FLICE => INPUTS(IMOD)%FLAGS(4) 410 ! 411 ! notes: future improvement: flags for ICEPx should be 412 ! "all or nothing" rather than 5 individual flags 413 414 IF ( FLIC1 ) ALLOCATE ( INPUTS(IMOD)%ICEP1(NX,NY) ) 415 IF ( FLIC2 ) ALLOCATE ( INPUTS(IMOD)%ICEP2(NX,NY) ) 416 IF ( FLIC3 ) ALLOCATE ( INPUTS(IMOD)%ICEP3(NX,NY) ) 417 IF ( FLIC4 ) ALLOCATE ( INPUTS(IMOD)%ICEP4(NX,NY) ) 418 IF ( FLIC5 ) ALLOCATE ( INPUTS(IMOD)%ICEP5(NX,NY) ) 419 ! 420 IF ( FLMDN ) ALLOCATE ( INPUTS(IMOD)%MUDD(NX,NY) ) 421 IF ( FLMTH ) ALLOCATE ( INPUTS(IMOD)%MUDT(NX,NY) ) 422 IF ( FLMVS ) ALLOCATE ( INPUTS(IMOD)%MUDV(NX,NY) ) 423 ! 424 IF ( FLLEV ) ALLOCATE ( INPUTS(IMOD)%WLEV(NX,NY) ) 425 ! 426 IF ( FLCUR ) ALLOCATE ( INPUTS(IMOD)%CX0(NX,NY) , & 427 INPUTS(IMOD)%CY0(NX,NY) , & 428 INPUTS(IMOD)%CXN(NX,NY) , & 429 INPUTS(IMOD)%CYN(NX,NY) ) 430 ! 431 IF ( FLWIND ) ALLOCATE ( INPUTS(IMOD)%WX0(NX,NY) , & 432 INPUTS(IMOD)%WY0(NX,NY) , & 433 INPUTS(IMOD)%DT0(NX,NY) , & 434 INPUTS(IMOD)%WXN(NX,NY) , & 435 INPUTS(IMOD)%WYN(NX,NY) , & 436 INPUTS(IMOD)%DTN(NX,NY) ) 437 IF ( FLWIND ) THEN 438 INPUTS(IMOD)%DT0 = 0. 439 INPUTS(IMOD)%DTN = 0. 440 END IF 441 ! 442 IF ( FLICE ) THEN 443 ALLOCATE ( INPUTS(IMOD)%ICEI(NX,NY), & 444 INPUTS(IMOD)%BERGI(NX,NY) ) 445 INPUTS(IMOD)%BERGI = 0. 446 END IF 447 ! 448 INPUTS(IMOD)%IINIT = .TRUE. 449 ! 450 ! -------------------------------------------------------------------- / 451 ! 3. Point to allocated arrays 452 ! 453 CALL W3SETI ( IMOD, NDSE, NDST ) 454 ! 455 ! -------------------------------------------------------------------- / 456 ! 4. Update counters in grid 457 ! 458 ! -------------------------------------------------------------------- / 459 ! 5. Restore previous grid setting if necessary 460 ! Page 10 Source Listing W3DIMI 2014-09-16 16:53 w3idatmd.f90 461 IF ( JGRID .NE. IMOD ) CALL W3SETG ( JGRID, NDSE, NDST ) 462 ! 463 RETURN 464 ! 465 ! Formats 466 ! 467 1001 FORMAT (/' *** ERROR W3DIMI : GRIDS NOT INITIALIZED *** '/ & 468 ' RUN W3NMOD FIRST '/) 469 1002 FORMAT (/' *** ERROR W3DIMI : ILLEGAL MODEL NUMBER *** '/ & 470 ' IMOD = ',I10/ & 471 ' NAUXGR = ',I10/ & 472 ' NIDATA = ',I10/) 473 1003 FORMAT (/' *** ERROR W3DIMI : ARRAY(S) ALREADY ALLOCATED *** ') 474 ! 475 !/ 476 !/ End of W3DIMI ----------------------------------------------------- / 477 !/ 478 END SUBROUTINE W3DIMI ENTRY POINTS Name w3idatmd_mp_w3dimi_ SYMBOL CROSS REFERENCE Name Object Declared Type Bytes Dimen Elements Attributes References 1001 Label 467 374 1002 Label 469 379 1003 Label 473 384 BERGI Local 444 R(4) 4 2 1 PTR 444,445,671 CX0 Local 426 R(4) 4 2 1 PTR 426,654 CXN Local 428 R(4) 4 2 1 PTR 428,656 CY0 Local 427 R(4) 4 2 1 PTR 427,655 CYN Local 429 R(4) 4 2 1 PTR 429,657 DT0 Local 433 R(4) 4 2 1 PTR 433,438,663 DTN Local 436 R(4) 4 2 1 PTR 436,439,666 EXTCDE Subr 353 353,375,380,385 FLAGSTIDE Local 367 L(4) 4 1 4 367 FLAGSTIDEIN Dummy 291 L(4) 4 1 4 ARG,IN FLCUR Local 406 L(4) 4 scalar PTR 406,426,616,653 FLIC1 Local 395 L(4) 4 scalar PTR 395,414,605,623 FLIC2 Local 396 L(4) 4 scalar PTR 396,415,606,626 FLIC3 Local 397 L(4) 4 scalar PTR 397,416,607,629 FLIC4 Local 398 L(4) 4 scalar PTR 398,417,608,632 FLIC5 Local 399 L(4) 4 scalar PTR 399,418,609,635 FLICE Local 409 L(4) 4 scalar PTR 409,442,619,669 FLLEV Local 405 L(4) 4 scalar PTR 405,424,615,649 FLMDN Local 401 L(4) 4 scalar PTR 401,420,611,639 FLMTH Local 402 L(4) 4 scalar PTR 402,421,612,642 FLMVS Local 403 L(4) 4 scalar PTR 403,422,613,645 FLWIND Local 408 L(4) 4 scalar PTR 408,431,437,618,660 ICEI Local 443 R(4) 4 2 1 PTR 443,670 Page 11 Source Listing W3DIMI 2014-09-16 16:53 Symbol Table w3idatmd.f90 Name Object Declared Type Bytes Dimen Elements Attributes References ICEP1 Local 414 R(4) 4 2 1 PTR 414,624 ICEP2 Local 415 R(4) 4 2 1 PTR 415,627 ICEP3 Local 416 R(4) 4 2 1 PTR 416,630 ICEP4 Local 417 R(4) 4 2 1 PTR 417,633 ICEP5 Local 418 R(4) 4 2 1 PTR 418,636 IGRID Local 352 I(4) 4 scalar 352,388 IMOD Dummy 291 I(4) 4 scalar ARG,IN 378,379,383,389,395,396,397,398,39 9,401,402,403,405,406,408,409,414, 415,416,417,418,420,421,422,424,42 6,427,428,429,431,432,433,434,435, 436,438,439,443,444,445,448,453,46 1 JGRID Local 366 I(4) 4 scalar 388,389,461 MUDD Local 420 R(4) 4 2 1 PTR 420,640 MUDT Local 421 R(4) 4 2 1 PTR 421,643 MUDV Local 422 R(4) 4 2 1 PTR 422,646 NAUXGR Local 352 I(4) 4 scalar 352,378,379 NDSE Dummy 291 I(4) 4 scalar ARG,IN 374,379,384,389,453,461 NDST Dummy 291 I(4) 4 scalar ARG,IN 389,453,461 NGRIDS Local 352 I(4) 4 scalar 352,373 NX Local 352 I(4) 4 scalar PTR 352,414,415,416,417,418,420,421,42 2,424,426,427,428,429,431,432,433, 434,435,436,443,444 NY Local 352 I(4) 4 scalar PTR 352,414,415,416,417,418,420,421,42 2,424,426,427,428,429,431,432,433, 434,435,436,443,444 W3DIMI Subr 291 W3GDATMD Module 352 352 W3SERVMD Module 353 353 W3SETG Subr 352 352,389,461 WLEV Local 424 R(4) 4 2 1 PTR 424,650 WX0 Local 431 R(4) 4 2 1 PTR 431,661 WXN Local 434 R(4) 4 2 1 PTR 434,664 WY0 Local 432 R(4) 4 2 1 PTR 432,662 WYN Local 435 R(4) 4 2 1 PTR 435,665 Page 12 Source Listing W3DIMI 2014-09-16 16:53 w3idatmd.f90 479 !/ ------------------------------------------------------------------- / 480 SUBROUTINE W3SETI ( IMOD, NDSE, NDST ) 481 !/ 482 !/ +-----------------------------------+ 483 !/ | WAVEWATCH III NOAA/NCEP | 484 !/ | H. L. Tolman | 485 !/ | FORTRAN 90 | 486 !/ | Last update : 04-Oct-2006 ! 487 !/ +-----------------------------------+ 488 !/ 489 !/ 02-Apr-2004 : Origination. ( version 3.06 ) 490 !/ 19-Jul-2006 : Adding auxiliary grids. ( version 3.10 ) 491 !/ 04-Oct-2006 : Add filter to array pointers. ( version 3.10 ) 492 !/ 493 ! 1. Purpose : 494 ! 495 ! Select one of the WAVEWATCH III grids / models. 496 ! 497 ! 2. Method : 498 ! 499 ! Point pointers to the proper variables in the proper element of 500 ! the GRIDS array. 501 ! 502 ! 3. Parameters : 503 ! 504 ! Parameter list 505 ! ---------------------------------------------------------------- 506 ! IMOD Int. I Model number to point to. 507 ! NDSE Int. I Error output unit number. 508 ! NDST Int. I Test output unit number. 509 ! ---------------------------------------------------------------- 510 ! 511 ! 4. Subroutines used : 512 ! 513 ! See module documentation. 514 ! 515 ! 5. Called by : 516 ! 517 ! Any subroutine. 518 ! 519 ! 6. Error messages : 520 ! 521 ! Many subroutines in the WAVEWATCH system. 522 ! 523 ! 7. Remarks : 524 ! 525 ! 8. Structure : 526 ! 527 ! 9. Switches : 528 ! 529 ! !/S Enable subroutine tracing. 530 ! !/T Enable test output 531 ! 532 ! 10. Source code : 533 ! 534 !/ ------------------------------------------------------------------- / 535 USE W3GDATMD, ONLY: NAUXGR Page 13 Source Listing W3SETI 2014-09-16 16:53 w3idatmd.f90 536 ! 537 USE W3SERVMD, ONLY: EXTCDE 538 ! 539 IMPLICIT NONE 540 !/ 541 !/ ------------------------------------------------------------------- / 542 !/ Parameter list 543 !/ 544 INTEGER, INTENT(IN) :: IMOD, NDSE, NDST 545 !/ 546 !/ ------------------------------------------------------------------- / 547 !/ Local parameters 548 !/ 549 !/ 550 ! 551 ! -------------------------------------------------------------------- / 552 ! 1. Test input and module status 553 ! 554 IF ( NIDATA .EQ. -1 ) THEN 555 WRITE (NDSE,1001) 556 CALL EXTCDE (1) 557 END IF 558 ! 559 IF ( IMOD.LT.-NAUXGR .OR. IMOD.GT.NIDATA ) THEN 560 WRITE (NDSE,1002) IMOD, -NAUXGR, NIDATA 561 CALL EXTCDE (2) 562 END IF 563 ! 564 ! -------------------------------------------------------------------- / 565 ! 2. Set model numbers 566 ! 567 IIDATA = IMOD 568 ! 569 ! -------------------------------------------------------------------- / 570 ! 3. Set pointers 571 ! 572 TFN => INPUTS(IMOD)%TFN 573 TC0 => INPUTS(IMOD)%TC0 574 TW0 => INPUTS(IMOD)%TW0 575 TG0 => INPUTS(IMOD)%TG0 576 TDN => INPUTS(IMOD)%TDN 577 ! 578 TI1 => INPUTS(IMOD)%TFN(:,-7) 579 TI2 => INPUTS(IMOD)%TFN(:,-6) 580 TI3 => INPUTS(IMOD)%TFN(:,-5) 581 TI4 => INPUTS(IMOD)%TFN(:,-4) 582 TI5 => INPUTS(IMOD)%TFN(:,-3) 583 ! 584 TZN => INPUTS(IMOD)%TFN(:,-2) 585 TTN => INPUTS(IMOD)%TFN(:,-1) 586 TVN => INPUTS(IMOD)%TFN(:,0) 587 ! 588 TLN => INPUTS(IMOD)%TFN(:,1) 589 TCN => INPUTS(IMOD)%TFN(:,2) 590 TWN => INPUTS(IMOD)%TFN(:,3) 591 TIN => INPUTS(IMOD)%TFN(:,4) 592 T0N => INPUTS(IMOD)%TFN(:,5) Page 14 Source Listing W3SETI 2014-09-16 16:53 w3idatmd.f90 593 T1N => INPUTS(IMOD)%TFN(:,6) 594 T2N => INPUTS(IMOD)%TFN(:,7) 595 TGN => INPUTS(IMOD)%TFN(:,8) 596 ! 597 GA0 => INPUTS(IMOD)%GA0 598 GD0 => INPUTS(IMOD)%GD0 599 GAN => INPUTS(IMOD)%GAN 600 GDN => INPUTS(IMOD)%GDN 601 ! 602 IINIT => INPUTS(IMOD)%IINIT 603 FLAGS => INPUTS(IMOD)%FLAGS 604 ! 605 FLIC1 => INPUTS(IMOD)%FLAGS(-7) 606 FLIC2 => INPUTS(IMOD)%FLAGS(-6) 607 FLIC3 => INPUTS(IMOD)%FLAGS(-5) 608 FLIC4 => INPUTS(IMOD)%FLAGS(-4) 609 FLIC5 => INPUTS(IMOD)%FLAGS(-3) 610 ! 611 FLMDN => INPUTS(IMOD)%FLAGS(-2) 612 FLMTH => INPUTS(IMOD)%FLAGS(-1) 613 FLMVS => INPUTS(IMOD)%FLAGS(0) 614 ! 615 FLLEV => INPUTS(IMOD)%FLAGS(1) 616 FLCUR => INPUTS(IMOD)%FLAGS(2) 617 618 FLWIND => INPUTS(IMOD)%FLAGS(3) 619 FLICE => INPUTS(IMOD)%FLAGS(4) 620 ! 621 IF ( IINIT ) THEN 622 ! 623 IF ( FLIC1 ) THEN 624 ICEP1 => INPUTS(IMOD)%ICEP1 625 END IF 626 IF ( FLIC2 ) THEN 627 ICEP2 => INPUTS(IMOD)%ICEP2 628 END IF 629 IF ( FLIC3 ) THEN 630 ICEP3 => INPUTS(IMOD)%ICEP3 631 END IF 632 IF ( FLIC4 ) THEN 633 ICEP4 => INPUTS(IMOD)%ICEP4 634 END IF 635 IF ( FLIC5 ) THEN 636 ICEP5 => INPUTS(IMOD)%ICEP5 637 END IF 638 ! 639 IF ( FLMDN ) THEN 640 MUDD => INPUTS(IMOD)%MUDD 641 END IF 642 IF ( FLMTH ) THEN 643 MUDT => INPUTS(IMOD)%MUDT 644 END IF 645 IF ( FLMVS ) THEN 646 MUDV => INPUTS(IMOD)%MUDV 647 END IF 648 ! 649 IF ( FLLEV ) THEN Page 15 Source Listing W3SETI 2014-09-16 16:53 w3idatmd.f90 650 WLEV => INPUTS(IMOD)%WLEV 651 END IF 652 ! 653 IF ( FLCUR ) THEN 654 CX0 => INPUTS(IMOD)%CX0 655 CY0 => INPUTS(IMOD)%CY0 656 CXN => INPUTS(IMOD)%CXN 657 CYN => INPUTS(IMOD)%CYN 658 END IF 659 ! 660 IF ( FLWIND ) THEN 661 WX0 => INPUTS(IMOD)%WX0 662 WY0 => INPUTS(IMOD)%WY0 663 DT0 => INPUTS(IMOD)%DT0 664 WXN => INPUTS(IMOD)%WXN 665 WYN => INPUTS(IMOD)%WYN 666 DTN => INPUTS(IMOD)%DTN 667 END IF 668 ! 669 IF ( FLICE ) THEN 670 ICEI => INPUTS(IMOD)%ICEI 671 BERGI => INPUTS(IMOD)%BERGI 672 END IF 673 ! 674 END IF 675 ! 676 RETURN 677 ! 678 ! Formats 679 ! 680 1001 FORMAT (/' *** ERROR W3SETI : GRIDS NOT INITIALIZED *** '/ & 681 ' RUN W3NMOD FIRST '/) 682 1002 FORMAT (/' *** ERROR W3SETI : ILLEGAL MODEL NUMBER *** '/ & 683 ' IMOD = ',I10/ & 684 ' NAUXGR = ',I10/ & 685 ' NIDATA = ',I10/) 686 ! 687 !/ 688 !/ End of W3SETI ----------------------------------------------------- / 689 !/ 690 END SUBROUTINE W3SETI Page 16 Source Listing W3SETI 2014-09-16 16:53 Entry Points w3idatmd.f90 ENTRY POINTS Name w3idatmd_mp_w3seti_ SYMBOL CROSS REFERENCE Name Object Declared Type Bytes Dimen Elements Attributes References 1001 Label 680 555 1002 Label 682 560 BERGI Local 671 R(4) 4 2 1 PTR 671 CX0 Local 654 R(4) 4 2 1 PTR 654 CXN Local 656 R(4) 4 2 1 PTR 656 CY0 Local 655 R(4) 4 2 1 PTR 655 CYN Local 657 R(4) 4 2 1 PTR 657 DT0 Local 663 R(4) 4 2 1 PTR 663 DTN Local 666 R(4) 4 2 1 PTR 666 EXTCDE Subr 537 537,556,561 FLAGS Local 603 L(4) 4 1 1 PTR 603 GA0 Local 597 R(4) 4 scalar PTR,TGT 597 GAN Local 599 R(4) 4 scalar PTR,TGT 599 GD0 Local 598 R(4) 4 scalar PTR,TGT 598 GDN Local 600 R(4) 4 scalar PTR,TGT 600 ICEI Local 670 R(4) 4 2 1 PTR 670 ICEP1 Local 624 R(4) 4 2 1 PTR 624 ICEP2 Local 627 R(4) 4 2 1 PTR 627 ICEP3 Local 630 R(4) 4 2 1 PTR 630 ICEP4 Local 633 R(4) 4 2 1 PTR 633 ICEP5 Local 636 R(4) 4 2 1 PTR 636 IIDATA Local 567 I(4) 4 scalar 127,567 IINIT Local 602 L(4) 4 scalar PTR 602,621 IMOD Dummy 480 I(4) 4 scalar ARG,IN 559,560,567,572,573,574,575,576,57 8,579,580,581,582,584,585,586,588, 589,590,591,592,593,594,595,597,59 8,599,600,602,603,605,606,607,608, 609,611,612,613,615,616,618,619,62 4,627,630,633,636,640,643,646,650, 654,655,656,657,661,662,663,664,66 5,666,670,671 MUDD Local 640 R(4) 4 2 1 PTR 640 MUDT Local 643 R(4) 4 2 1 PTR 643 MUDV Local 646 R(4) 4 2 1 PTR 646 NAUXGR Local 535 I(4) 4 scalar 535,559,560 NDSE Dummy 480 I(4) 4 scalar ARG,IN 555,560 NDST Dummy 480 I(4) 4 scalar ARG,IN T0N Local 592 I(4) 4 1 1 PTR 592 T1N Local 593 I(4) 4 1 1 PTR 593 T2N Local 594 I(4) 4 1 1 PTR 594 TC0 Local 573 I(4) 4 1 1 PTR 573 TCN Local 589 I(4) 4 1 1 PTR 589 TDN Local 576 I(4) 4 1 1 PTR 576 TFN Local 572 I(4) 4 2 1 PTR 572 Page 17 Source Listing W3SETI 2014-09-16 16:53 Symbol Table w3idatmd.f90 Name Object Declared Type Bytes Dimen Elements Attributes References TG0 Local 575 I(4) 4 1 1 PTR 575 TGN Local 595 I(4) 4 1 1 PTR 595 TI1 Local 578 I(4) 4 1 1 PTR 578 TI2 Local 579 I(4) 4 1 1 PTR 579 TI3 Local 580 I(4) 4 1 1 PTR 580 TI4 Local 581 I(4) 4 1 1 PTR 581 TI5 Local 582 I(4) 4 1 1 PTR 582 TIN Local 591 I(4) 4 1 1 PTR 591 TLN Local 588 I(4) 4 1 1 PTR 588 TTN Local 585 I(4) 4 1 1 PTR 585 TVN Local 586 I(4) 4 1 1 PTR 586 TW0 Local 574 I(4) 4 1 1 PTR 574 TWN Local 590 I(4) 4 1 1 PTR 590 TZN Local 584 I(4) 4 1 1 PTR 584 W3GDATMD Module 535 535 W3SERVMD Module 537 537 W3SETI Subr 480 453 WLEV Local 650 R(4) 4 2 1 PTR 650 WX0 Local 661 R(4) 4 2 1 PTR 661 WXN Local 664 R(4) 4 2 1 PTR 664 WY0 Local 662 R(4) 4 2 1 PTR 662 WYN Local 665 R(4) 4 2 1 PTR 665 Page 18 Source Listing W3SETI 2014-09-16 16:53 w3idatmd.f90 691 !/ 692 !/ End of module W3IDATMD -------------------------------------------- / 693 !/ 694 END MODULE W3IDATMD SYMBOL CROSS REFERENCE Name Object Declared Type Bytes Dimen Elements Attributes References INPUT Type 134 2280 scalar 149,153 JFIRST Local 129 I(4) 4 scalar 129 W3IDATMD Module 2 Page 19 Source Listing W3SETI 2014-09-16 16:53 Subprograms/Common Blocks w3idatmd.f90 SUBPROGRAMS/COMMON BLOCKS Name Object Declared Type Bytes Dimen Elements Attributes References W3DIMI Subr 291 W3IDATMD Module 2 W3NINP Subr 178 W3SETI Subr 480 453 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 20 Source Listing W3SETI 2014-09-16 16:53 w3idatmd.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 : w3idatmd.lst -o filename : none COMPILER: Intel(R) Fortran 12.1-2100