*IF DEF,W08_1A GLW1F404.52
C (c) CROWN COPYRIGHT 1995, METEOROLOGICAL OFFICE, All Rights Reserved. GTS2F400.15864
C GTS2F400.15865
C Use, duplication or disclosure of this code is subject to the GTS2F400.15866
C restrictions as set forth in the contract. GTS2F400.15867
C GTS2F400.15868
C Meteorological Office GTS2F400.15869
C London Road GTS2F400.15870
C BRACKNELL GTS2F400.15871
C Berkshire UK GTS2F400.15872
C RG12 2SZ GTS2F400.15873
C GTS2F400.15874
C If no contract has been raised with this copy of the code, the use, GTS2F400.15875
C duplication or disclosure of it is strictly prohibited. Permission GTS2F400.15876
C to do so must first be obtained in writing from the Head of Numerical GTS2F400.15877
C Modelling at the above address. GTS2F400.15878
C ******************************COPYRIGHT****************************** GTS2F400.15879
C GTS2F400.15880
SETUPWV.3
subroutine SETUPWV(ia1,ml,kl,irefra,ishallo, ,8SETUPWV.4
*CALL ARGWVAL
SETUPWV.5
*CALL ARGWVMP
SETUPWV.6
*CALL ARGWVGD
SETUPWV.7
*CALL ARGWVFD
SETUPWV.8
*CALL ARGWVNL
SETUPWV.9
*CALL ARGWVSH
SETUPWV.10
*CALL ARGWVCP
SETUPWV.11
*CALL ARGWVTB
SETUPWV.12
*CALL ARGWVCU
SETUPWV.13
*CALL ARGWVRF
SETUPWV.14
*CALL ARGWVKL
SETUPWV.16
& icode) SETUPWV.17
SETUPWV.18
*CALL PARCONS
SETUPWV.19
*CALL PARWVSH
SETUPWV.20
*CALL PARWVTB
SETUPWV.21
SETUPWV.22
*CALL TYPWVMP
SETUPWV.23
*CALL TYPWVGD
SETUPWV.24
*CALL TYPWVFD
SETUPWV.25
*CALL TYPWVNL
SETUPWV.26
*CALL TYPWVSH
SETUPWV.27
*CALL TYPWVCP
SETUPWV.28
*CALL TYPWVTB
SETUPWV.29
*CALL TYPWVCU
SETUPWV.30
*CALL TYPWVRF
SETUPWV.31
*CALL TYPWVSR
SETUPWV.32
*CALL TYPWVKL
SETUPWV.33
*CALL TYPWVAL
SETUPWV.34
SETUPWV.35
logical ia1(ngx,ngy) ! in land-sea mask land=T WVV0F401.16
SETUPWV.37
C ---------------------------------------------------------------------- SETUPWV.38
C based on program preproc of WAM cycle 4 SETUPWV.39
C version 1.0 M Holt 3/5/95 SETUPWV.40
C SETUPWV.41
C**** *PROGRAM PREPROC* - PREPARE DATA (BUT NOT WINDS) FOR INPUT SETUPWV.42
C TO WAM WAVE MODELS. SETUPWV.43
C SETUPWV.44
C* PURPOSE. SETUPWV.45
C -------- SETUPWV.46
C SETUPWV.47
C TO ARRANGE A GRID FOR THE WAM WAVE MODEL AND COMPUTE SETUPWV.48
C ALL FIXED MODEL PARAMETERS WHICH ARE STORED IN DIFFERENT SETUPWV.49
C COMMON BLOCKS. SETUPWV.50
C SETUPWV.51
C METHOD. SETUPWV.52
C ------- SETUPWV.53
C SETUPWV.54
C [A REPRESENTATIVE TOPOGRAPHIC DATA SET ON LAT-LONG SETUPWV.55
C COORDINATES CONTAINING THE MODEL SQUARE BOX REGION IS SETUPWV.56
C READ IN.] SETUPWV.57
C SETUPWV.58
C [THE MODEL REGION IS EXTRACTED AND INTERPOLATED SETUPWV.59
C ONTO GIVEN LAT-LONG GRID INCREMENTS (SEE SUB TOPOAR). SETUPWV.60
C THE PROGRAM CHECKS FOR A PERIODIC LATITUDE GRID. IF THE SETUPWV.61
C GRID IS NOT PERIODIC A CLOSED BASIN IS ASSUMED. SETUPWV.62
C THE PROGRAM DOES NOT DISTINGUISH BETWEEN DEEP AND SHALLOW SETUPWV.63
C WATER.] SETUPWV.64
C SETUPWV.65
C UM - grid details read in from model dump are formatted into blocks SETUPWV.66
C SETUPWV.67
C -BLOCK STRUCTURE : SETUPWV.68
C GRID POINTS ARE COLLECTED INTO A 1-DIMENSIONAL ARRAY, SETUPWV.69
C BLOCKS OF MAXIMALLY NIBLO ELEMENTS, GRID POINTS SETUPWV.70
C (ONLY SEAPOINTS) ARE COUNTED ALONG LINES OF LATITUDES SETUPWV.71
C FROM WEST TO EAST WORKING FROM SOUTH TO NORTH. SETUPWV.72
C BLOCKS OVERLAP OVER TWO LATITUDE LINES,TO COMPUTE NORTH SETUPWV.73
C -SOUTH ADVECTION TERMS. SETUPWV.74
C SETUPWV.75
C -NESTED GRIDS: THE GRID GENERATED CAN BE A SETUPWV.76
C - COARSE GRID WHICH MEANS OUTPUT OF SPECTRA SETUPWV.77
C FOR A FOLLOW UP FINE GRID RUN. SETUPWV.78
C - FINE GRID WHICH MEANS INPUT OF SPECTRA SETUPWV.79
C FROM AN EARLIER COARSE GRID RUN. SETUPWV.80
C - COARSE AND FINE GRID SETUPWV.81
C SETUPWV.82
C - REFRACTION: CONTROLLED BY THE REFRACTION OPTION SETUPWV.83
C A CURRENT FIELD IS READ, INTERPOLATED TO THE MODEL SETUPWV.84
C GRID AND STORED IN THE GRID OUTPUT FILE. SETUPWV.85
C SETUPWV.86
C - PARAMETERS FOR ARRAY DIMENSIONS: THE PRORAM CHECKS SETUPWV.87
C ALL DIMENSIONS INTERNALLY. ONLY THE BLOCK LENGTH SETUPWV.88
C (NIBLO) IS USED FOR THE SET UP OF THE GRID, ALL SETUPWV.89
C THE OTHER PARAMETERS HAVE TO BE LARGE ENOUGH TO SETUPWV.90
C GET A SUCCESFULL RUN OF THE JOB. AT THE END OF SETUPWV.91
C THE OUTPUT PROTOCOLL A LIST IS PRINTED FOR THE SETUPWV.92
C OPTIMAL SETTINGS OF THE DIMENSION. SETUPWV.93
C SETUPWV.94
C** INTERFACE. SETUPWV.95
C ---------- SETUPWV.96
C SETUPWV.97
C *PROGRAM* *SETUP* SETUPWV.98
C SETUPWV.99
C SETUPWV.100
C ALL UNITS ARE DEFINE IN SECTION 1. OF THIS PROGRAM. SETUPWV.101
C SETUPWV.102
C arrays from these WAM common blocks are filled and returned to MAIN SETUPWV.103
C SETUPWV.104
C COMMON BLOCKS COUPLE, CURRENT, FREDIR, INDNL, GRIDPAR, MAP, SETUPWV.105
C COUT, TABLE, AND SHALLOW ARE WRITTEN TO UNIT IU07 AND/OR IU17. SETUPWV.106
C ALL FREQUENCY AND DIRECTION DEPENDENT ARRAYS ARE WRITTEN FROM SETUPWV.107
C 1 TO THE USED NUMBER OF FREQUENCIES AND THE USED NUMBER OF SETUPWV.108
C DIRECTIONS. SETUPWV.109
C OTHER ARRAYS ARE WRITTEN ACCORDING TO THEIR DIMENSIONS. SETUPWV.110
C SETUPWV.111
C EXTERNALS. SETUPWV.112
C ---------- SETUPWV.113
C SETUPWV.114
C *AKI* - COMPUTES WAVE NUMBER. SETUPWV.115
C *CHECK* - CHECKS CONSISTENCY OF BLOCK OVERLAPS. SETUPWV.116
C *JAFU* - ANGULAR INDEX OF NON LINEAR INTERACTION SETUPWV.117
C *MBLOCK* - PREPARES ONE BLOCK SETUPWV.118
C *MFREDIR* - COMPUTES FREQUENCY/DIRECTION COMMON FREDIR SETUPWV.119
C *MGRID* - ARRANGES GRID FOR MODEL. SETUPWV.120
C *MTABS* - COMPUTES TABLES USED FOR SHALLOW WATER SETUPWV.121
C *MUBUF* - COMPUTES COMMON UBUF. SETUPWV.122
C *NLWEIGT* - COMPUTES NON LINEAR WEIGHTS IN COMMON INDNL SETUPWV.123
C *STRESS* - STRESS TABLE. SETUPWV.124
C *TAUHF* - HIGH FREQUENCY STRESS TABLE. SETUPWV.125
C SETUPWV.126
C REFERENCE. SETUPWV.127
C ---------- SETUPWV.128
C SETUPWV.129
C NONE. SETUPWV.130
C SETUPWV.131
iu06=6 SETUPWV.132
C SETUPWV.133
C ---------------------------------------------------------------------- SETUPWV.134
Cxx SETUPWV.135
C* 3. INITIALISE TOTAL NUMBER OF BLOCKS, SETUPWV.136
C* AND GRID INCREMENTS IN RADIENS AND METRES. SETUPWV.137
C ------------------------------------------ SETUPWV.138
C SETUPWV.139
3000 CONTINUE SETUPWV.140
IGL=0 SETUPWV.141
DELPHI = XDELLA*CIRC/360. SETUPWV.142
DELLAM = XDELLO*CIRC/360. SETUPWV.143
DO 3001 K=1,NY SETUPWV.144
XLAT = (AMOSOP + REAL(K-1)*XDELLA)*RAD SETUPWV.145
SINPH(K) = SIN(XLAT) SETUPWV.146
COSPH(K) = COS(XLAT) SETUPWV.147
3001 CONTINUE SETUPWV.148
C SETUPWV.149
C ---------------------------------------------------------------------- SETUPWV.150
C SETUPWV.151
C* 4. COMPUTE GRID INDEPENDENT COMMON BLOCKS. SETUPWV.152
C --------------------------------------- SETUPWV.153
C SETUPWV.154
4000 CONTINUE SETUPWV.155
C SETUPWV.156
C* 4.1 COMMON FREDIR (FREQUENCY/DIRECTION CONST). SETUPWV.157
C ------------------------------------------ SETUPWV.158
C SETUPWV.159
4100 CONTINUE SETUPWV.160
SETUPWV.161
C array FR is read from the dump WVV0F401.17
C here call mfredir to calculate the other arrays WVV0F401.18
C WVV0F401.19
WRITE(6,*)'calling mfredir from setupwv'
GIE0F403.622
CALL MFREDIR (
fr(1), WVV0F401.21
*CALL ARGWVAL
WVV0F401.22
*CALL ARGWVFD
WVV0F401.23
& icode) WVV0F401.24
C WVV0F401.25
C SETUPWV.164
C* 4.2 COMMON INDNL (WEIGHT OF NON-LINEAR INTERACTION). SETUPWV.165
C ------------------------------------------------ SETUPWV.166
C SETUPWV.167
4200 CONTINUE SETUPWV.168
C SETUPWV.169
WRITE(6,*)'calling nlweigt' GIE0F403.623
call nlweigt
(ml,kl, SETUPWV.171
*CALL ARGWVAL
SETUPWV.172
*CALL ARGWVFD
SETUPWV.173
*CALL ARGWVNL
SETUPWV.174
& icode) SETUPWV.175
WRITE(6,*)'after nlweigt' GIE0F403.624
C SETUPWV.177
C* 4.3 COMMON SHALLOW (SHALLOW WATER TABLES). SETUPWV.178
C -------------------------------------- SETUPWV.179
C SETUPWV.180
WRITE(6,*)'calling mtabs' GIE0F403.625
CALL MTABS
(ml,kl, SETUPWV.182
*CALL ARGWVAL
SETUPWV.183
*CALL ARGWVSH
SETUPWV.184
*CALL ARGWVFD
SETUPWV.185
& icode) SETUPWV.186
C SETUPWV.187
C* 4.4 COMMON COUPLE. SETUPWV.188
C -------------- SETUPWV.189
C SETUPWV.190
BETAMAX = 1.20 SETUPWV.191
ZALP = 0.0110 SETUPWV.192
ALPHA = 0.0100 SETUPWV.193
XKAPPA = 0.41 SETUPWV.194
XNLEV = 10.0 SETUPWV.195
C SETUPWV.196
C* 4.4 COMMON TABLE (STRESS TABLES). SETUPWV.197
C ----------------------------- SETUPWV.198
C SETUPWV.199
WRITE(6,*)'calling stress' GIE0F403.626
CALL STRESS
( SETUPWV.201
*CALL ARGWVCP
SETUPWV.202
*CALL ARGWVTB
SETUPWV.203
& icode) SETUPWV.204
SETUPWV.205
WRITE(6,*)'calling tauhf' GIE0F403.627
CALL TAUHF
(FR(ML), SETUPWV.207
*CALL ARGWVAL
SETUPWV.208
*CALL ARGWVCP
SETUPWV.209
*CALL ARGWVTB
SETUPWV.210
& icode) SETUPWV.211
C SETUPWV.212
C ---------------------------------------------------------------------- SETUPWV.213
C SETUPWV.214
C* 5. GENERATE OUTPUT GRID INFORMATION. SETUPWV.215
C --------------------------------- SETUPWV.216
C SETUPWV.217
5000 CONTINUE SETUPWV.218
C SETUPWV.219
C* 5.2 COMPUTATION OF BLOCKS. SETUPWV.220
C ---------------------- SETUPWV.221
C SETUPWV.222
5200 CONTINUE SETUPWV.223
SETUPWV.224
WRITE(6,*)'calling mgrid' GIE0F403.628
CALL MGRID
(IA1, SETUPWV.226
*CALL ARGWVAL
SETUPWV.227
*CALL ARGWVMP
SETUPWV.228
*CALL ARGWVGD
SETUPWV.229
& icode) SETUPWV.230
C SETUPWV.231
C ---------------------------------------------------------------------- SETUPWV.232
C SETUPWV.233
C* 8. GENERATE AND WRITE COMMON UBUF. SETUPWV.234
C ------------------------------- SETUPWV.235
C SETUPWV.236
8000 CONTINUE SETUPWV.237
C SETUPWV.238
WRITE(6,*)'calling mubuf' GIE0F403.629
CALL MUBUF
(IA1, SETUPWV.240
*CALL ARGWVAL
SETUPWV.241
*CALL ARGWVGD
SETUPWV.242
*CALL ARGWVMP
SETUPWV.243
*CALL ARGWVKL
SETUPWV.244
& icode) SETUPWV.245
SETUPWV.246
SETUPWV.247
c TO ADD SETUPWV.248
c propdot needs a current field if irefra=2 SETUPWV.249
c read current field here (steady state currents only for WAM ! SETUPWV.250
c SETUPWV.251
if(irefra.eq.2)then SETUPWV.252
WRITE(6,*)'dummy call read currents still to add'
GIE0F403.630
endif SETUPWV.254
C SETUPWV.255
C this subroutine call included from initmdl SETUPWV.256
C CC call propdot moved to main after depths are set SETUPWV.257
SETUPWV.258
C ---------------------------------------------------------------------- SETUPWV.259
C SETUPWV.260
C* 10. CONSISTENCY CHECK OF COMPUTED BLOCK PARAMETERS AND SETUPWV.261
C* OUTPUT OF NECESSARY DIMENSIONS. SETUPWV.262
C -------------------------------------------------- SETUPWV.263
C SETUPWV.264
9100 CONTINUE SETUPWV.265
SETUPWV.266
WRITE(6,*)'calling subroutine check'
GIE0F403.631
CALL CHECK
(IREFRA, ML, KL, IINPC, SETUPWV.268
*CALL ARGWVAL
SETUPWV.269
*CALL ARGWVGD
SETUPWV.270
*CALL ARGWVMP
SETUPWV.271
& icode) SETUPWV.272
SETUPWV.273
if(icode.ne.0) then SETUPWV.274
WRITE(6,*)'calling abort in setupwv'
GIE0F403.632
WRITE(6,*)'icode ',icode,' returned from subroutine check' GIE0F403.633
call abort
SETUPWV.277
endif SETUPWV.278
SETUPWV.279
return SETUPWV.280
END SETUPWV.281
*ENDIF SETUPWV.282