*IF DEF,CONTROL,AND,DEF,ATMOS INITDIA1.2
C ******************************COPYRIGHT****************************** GTS2F400.4699
C (c) CROWN COPYRIGHT 1995, METEOROLOGICAL OFFICE, All Rights Reserved. GTS2F400.4700
C GTS2F400.4701
C Use, duplication or disclosure of this code is subject to the GTS2F400.4702
C restrictions as set forth in the contract. GTS2F400.4703
C GTS2F400.4704
C Meteorological Office GTS2F400.4705
C London Road GTS2F400.4706
C BRACKNELL GTS2F400.4707
C Berkshire UK GTS2F400.4708
C RG12 2SZ GTS2F400.4709
C GTS2F400.4710
C If no contract has been raised with this copy of the code, the use, GTS2F400.4711
C duplication or disclosure of it is strictly prohibited. Permission GTS2F400.4712
C to do so must first be obtained in writing from the Head of Numerical GTS2F400.4713
C Modelling at the above address. GTS2F400.4714
C ******************************COPYRIGHT****************************** GTS2F400.4715
C GTS2F400.4716
CLL Subroutine INITDIAG ------------------------------------------- INITDIA1.3
CLL INITDIA1.4
CLL Purpose : Calls ST_DIAG1,and ST_DIAG2 to calculate diagnostic INITDIA1.5
CLL quantities from the initial data. INITDIA1.6
CLL INITDIA1.7
CLL Control routine for CRAY YMP INITDIA1.8
CLL INITDIA1.9
CLL Model Modification history from model version 3.0: INITDIA1.10
CLL version Date INITDIA1.11
CLL 3.2 13/07/93 Changed CHARACTER*(*) to CHARACTER*(80) for TS150793.78
CLL portability. Author Tracey Smith. TS150793.79
CLL 3.2 13/04/93 Dynamic allocation of main arrays. R T H Barnes. @DYALLOC.1447
CLL 3.3 24/09/93 : added P_FIELDDA to argument list for portable NF171193.42
CLL dynamic arrays. Author : Paul Burton NF171193.43
CLL 3.4 29/11/94 Add P_FIELD,P_LEVELS to ST_DIAG2 for portability. ANF1F304.8
CLL 4.1 14/05/96 Add TR_VARS to ST_DIAG2 arg list. ADP0F401.4
CLL Author: D.Podd ADP0F401.5
!LL 4.4 10/04/97 : Added new daignostics 15235,15236,15237 ARS1F404.345
!LL R A Stratton. ARS1F404.346
!LL 29/07/97 : Also added 15238,15239,15240. R A Stratton. ARS1F404.347
!LL 4.5 21/04/98 Pass ARGFLDPT to ST_DIAG subroutines GSM1F405.504
!LL S.D.Mullerworth GSM1F405.505
CLL INITDIA1.12
CLL Programming standard; Unified Model Documentation Paper No. 3 INITDIA1.13
CLL version no. 1, dated 15/01/90 INITDIA1.14
CLL INITDIA1.15
CLL Logical components covered : D4 INITDIA1.16
CLL INITDIA1.17
CLL System task : P0 INITDIA1.18
CLL INITDIA1.19
CLL Documentaton : Unified Model documentation paper P0 INITDIA1.20
CLL version No11 dated 26/11/90 INITDIA1.21
CLL and Unified Model documentation paper C4 INITDIA1.22
CLL version No 5 dated 23/11/90 INITDIA1.23
CLLEND------------------------------------------------------------ INITDIA1.24
INITDIA1.25
SUBROUTINE INITDIAG( 1,3@DYALLOC.1448
*CALL ARGSIZE
@DYALLOC.1449
*CALL ARGD1
@DYALLOC.1450
*CALL ARGDUMA
@DYALLOC.1451
*CALL ARGDUMO
@DYALLOC.1452
*CALL ARGDUMW
GKR1F401.212
*CALL ARGSTS
@DYALLOC.1453
*CALL ARGPTRA
@DYALLOC.1454
*CALL ARGPTRO
@DYALLOC.1455
*CALL ARGCONA
@DYALLOC.1456
*CALL ARGPPX
GKR0F305.939
& P_FIELDDA, NF171193.44
& ICODE,CMESSAGE) @DYALLOC.1457
INITDIA1.28
C* INITDIA1.29
IMPLICIT NONE INITDIA1.30
C*L INITDIA1.31
*CALL CMAXSIZE
@DYALLOC.1458
*CALL CSUBMODL
GSS1F305.929
*CALL TYPSIZE
@DYALLOC.1459
*CALL TYPD1
@DYALLOC.1460
*CALL TYPDUMA
@DYALLOC.1461
*CALL TYPDUMO
@DYALLOC.1462
*CALL TYPDUMW
GKR1F401.213
*CALL TYPSTS
@DYALLOC.1463
*CALL TYPPTRA
@DYALLOC.1464
*CALL TYPPTRO
@DYALLOC.1465
*CALL TYPCONA
@DYALLOC.1466
*CALL TYPFLDPT
GSM1F405.506
*CALL PPXLOOK
GKR0F305.940
*IF DEF,MPP GSM1F405.507
*CALL PARVARS
GSM1F405.508
*ENDIF GSM1F405.509
INITDIA1.32
INTEGER INITDIA1.33
& P_FIELDDA, ! IN : copy of P_FIELD for portable DA NF171193.45
& ICODE ! Out return code : 0 Normal exit @DYALLOC.1467
C ! : >0 Error exit INITDIA1.35
INITDIA1.38
CHARACTER*80 TS150793.80
& CMESSAGE ! Out error message if ICODE > 0 INITDIA1.40
INITDIA1.41
@DYALLOC.1468
CL External subroutines called INITDIA1.46
INITDIA1.47
EXTERNAL INITDIA1.48
& ST_DIAG1, INITDIA1.49
& ST_DIAG2, INITDIA1.50
& STASH INITDIA1.51
INITDIA1.52
CL local variables INITDIA1.53
INTEGER INITDIA1.54
& ISL,K,I,NI,COUNT INITDIA1.55
& ,NI_U,NI_V,NI_T,NI_W,NI_H,NI_q INITDIA1.56
& ,U_PLEV ! number of u pressure levels INITDIA1.57
& ,V_PLEV ! Number of V pressure levels INITDIA1.58
& ,T_PLEV ! number of T pressure levels INITDIA1.59
& ,W_PLEV ! number of w pressure levels INITDIA1.60
& ,H_PLEV ! number of height pressure levels INITDIA1.61
& ,Q_PLEV ! number of q pressure levels INITDIA1.62
& ,NUM_LEVELS ! number of pressure levels INITDIA1.63
& ,im_ident ! Internal Model Identifier GDR4F305.93
& ,im_index ! Internal Model Index for stash arrays GDR4F305.94
INITDIA1.64
REAL INITDIA1.65
& PSTAR_OLD(P_FIELDDA) ! array to hold old value of Pstar NF171193.46
INITDIA1.67
CL -------------------------------------------------------------------- INITDIA1.68
INITDIA1.69
*CALL SETFLDPT
GSM1F405.510
GSM1F405.511
! Set to atmosphere internal model GDR4F305.95
im_ident = atmos_im GDR4F305.96
im_index = internal_model_index(im_ident) GDR4F305.97
GDR4F305.98
CALL STASH
(a_sm,a_im,0,D1, GKR0F305.941
*CALL ARGSIZE
@DYALLOC.1470
*CALL ARGD1
@DYALLOC.1471
*CALL ARGDUMA
@DYALLOC.1472
*CALL ARGDUMO
@DYALLOC.1473
*CALL ARGDUMW
GKR1F401.214
*CALL ARGSTS
@DYALLOC.1474
*CALL ARGPPX
GKR0F305.942
& ICODE,CMESSAGE) @DYALLOC.1478
INITDIA1.71
C Check diagnostics and their levels are consistent now. INITDIA1.72
C This should reduce need to check this on all subsequent calls to INITDIA1.73
C ST_DIAG1. INITDIA1.74
C 15,201 U_COMP on pressure levels INITDIA1.75
ISL=STINDEX(1,201,15,im_index) GDR4F305.99
IF(ISL.GT.0) THEN INITDIA1.77
IF (STLIST(10,ISL).LT.0) THEN INITDIA1.78
IF (STLIST(11,ISL).NE.2) THEN INITDIA1.79
CMESSAGE='INITDIA: Level not pressure for U_COMP' INITDIA1.80
ICODE=1 INITDIA1.81
GOTO 99 INITDIA1.82
ELSE INITDIA1.83
NI_U = -STLIST(10,ISL) INITDIA1.84
U_PLEV=STASH_LEVELS(1,NI_U) INITDIA1.85
ENDIF INITDIA1.86
ELSE INITDIA1.87
CMESSAGE='INITDIA: Level not a levels list for U_COMP' INITDIA1.88
ICODE=1 INITDIA1.89
GOTO 99 INITDIA1.90
ENDIF INITDIA1.91
ENDIF INITDIA1.92
C 15,202 V_COMP on pressure levels INITDIA1.93
ISL=STINDEX(1,202,15,im_index) GDR4F305.100
IF(ISL.GT.0) THEN INITDIA1.95
IF (STLIST(10,ISL).LT.0) THEN INITDIA1.96
IF (STLIST(11,ISL).NE.2) THEN INITDIA1.97
CMESSAGE='INITDIA: Level not pressure for V_COMP' INITDIA1.98
ICODE=1 INITDIA1.99
GOTO 99 INITDIA1.100
ELSE INITDIA1.101
NI_V = -STLIST(10,ISL) INITDIA1.102
V_PLEV=STASH_LEVELS(1,NI_V) INITDIA1.103
ENDIF INITDIA1.104
ELSE INITDIA1.105
CMESSAGE='INITDIA: Level not a levels list for V_COMP' INITDIA1.106
ICODE=1 INITDIA1.107
GOTO 99 INITDIA1.108
ENDIF INITDIA1.109
ENDIF INITDIA1.110
C 15,205 cat_prob_single pressure levels INITDIA1.111
ISL=STINDEX(1,205,15,im_index) GDR4F305.101
IF(ISL.GT.0) THEN INITDIA1.113
IF (STLIST(10,ISL).LT.0) THEN INITDIA1.114
IF (STLIST(11,ISL).NE.2) THEN INITDIA1.115
CMESSAGE='INITDIA: Level not pressure for CAT_PROB_SINGLE' INITDIA1.116
ICODE=1 INITDIA1.117
GOTO 99 INITDIA1.118
ENDIF INITDIA1.119
ELSE INITDIA1.120
CMESSAGE='INITDIA: Level not a levels list for CAT_PROB_SINGLE' INITDIA1.121
ICODE=1 INITDIA1.122
GOTO 99 INITDIA1.123
ENDIF INITDIA1.124
ENDIF INITDIA1.125
C 15,216 Temperature on pressure levels INITDIA1.126
ISL=STINDEX(1,216,15,im_index) GDR4F305.102
IF(ISL.GT.0) THEN INITDIA1.128
IF (STLIST(10,ISL).LT.0) THEN INITDIA1.129
IF (STLIST(11,ISL).NE.2) THEN INITDIA1.130
CMESSAGE='INITDIA: Level not pressure for T' INITDIA1.131
ICODE=1 INITDIA1.132
GOTO 99 INITDIA1.133
ELSE INITDIA1.134
NI_T = -STLIST(10,ISL) INITDIA1.135
T_PLEV=STASH_LEVELS(1,NI_T) INITDIA1.136
ENDIF INITDIA1.137
ELSE INITDIA1.138
CMESSAGE='INITDIA: Level not a levels list for T' INITDIA1.139
ICODE=1 INITDIA1.140
GOTO 99 INITDIA1.141
ENDIF INITDIA1.142
ENDIF INITDIA1.143
C 15,222 Omega on pressure levels INITDIA1.144
ISL=STINDEX(1,222,15,im_index) GDR4F305.103
IF(ISL.GT.0) THEN INITDIA1.146
IF (STLIST(10,ISL).LT.0) THEN INITDIA1.147
IF (STLIST(11,ISL).NE.2) THEN INITDIA1.148
CMESSAGE='INITDIA: Level not pressure for omega' INITDIA1.149
ICODE=1 INITDIA1.150
GOTO 99 INITDIA1.151
ELSE INITDIA1.152
NI_w = -STLIST(10,ISL) INITDIA1.153
w_PLEV=STASH_LEVELS(1,NI_w) INITDIA1.154
ENDIF INITDIA1.155
ELSE INITDIA1.156
CMESSAGE='INITDIA: Level not a levels list for omega' INITDIA1.157
ICODE=1 INITDIA1.158
GOTO 99 INITDIA1.159
ENDIF INITDIA1.160
ENDIF INITDIA1.161
C 15,226 Specific Humidity on pressure levels INITDIA1.162
ISL=STINDEX(1,226,15,im_index) GDR4F305.104
IF(ISL.GT.0) THEN INITDIA1.164
IF (STLIST(10,ISL).LT.0) THEN INITDIA1.165
IF (STLIST(11,ISL).NE.2) THEN INITDIA1.166
CMESSAGE='INITDIA: Level not pressure for Specific humidity' INITDIA1.167
ICODE=1 INITDIA1.168
GOTO 99 INITDIA1.169
ELSE INITDIA1.170
NI_Q = -STLIST(10,ISL) INITDIA1.171
Q_PLEV=STASH_LEVELS(1,NI_Q) INITDIA1.172
ENDIF INITDIA1.173
ELSE INITDIA1.174
CMESSAGE='INITDIA: Level not pressure for Specific humidity' INITDIA1.175
ICODE=1 INITDIA1.176
GOTO 99 INITDIA1.177
ENDIF INITDIA1.178
ENDIF INITDIA1.179
! 15,236 Heavyside function on pressure levels ARS1F404.348
ISL=STINDEX(1,236,15,im_index) ARS1F404.349
IF(ISL.GT.0) THEN ARS1F404.350
IF (STLIST(10,ISL).LT.0) THEN ARS1F404.351
IF (STLIST(11,ISL).NE.2) THEN ARS1F404.352
CMESSAGE='INITDIA:Level not pressure for Heavyside function' ARS1F404.353
ICODE=1 ARS1F404.354
GOTO 99 ARS1F404.355
ENDIF ARS1F404.356
ELSE ARS1F404.357
CMESSAGE='INITDIA:Level not pressure for Heavyside function' ARS1F404.358
ICODE=1 ARS1F404.359
GOTO 99 ARS1F404.360
ENDIF ARS1F404.361
ENDIF ARS1F404.362
! 15,238 geopotential height on u grid ARS1F404.363
ISL=STINDEX(1,238,15,im_index) ARS1F404.364
IF(ISL.GT.0) THEN ARS1F404.365
IF (STLIST(10,ISL).LT.0) THEN ARS1F404.366
IF (STLIST(11,ISL).NE.2) THEN ARS1F404.367
CMESSAGE='INITDIA:Level not pressure for geopotential' ARS1F404.368
ICODE=1 ARS1F404.369
GOTO 99 ARS1F404.370
ELSE ARS1F404.371
NI_H = -STLIST(10,ISL) ARS1F404.372
H_PLEV=STASH_LEVELS(1,NI_H) ARS1F404.373
ENDIF ARS1F404.374
ELSE ARS1F404.375
CMESSAGE='INITDIA:Level not pressure for geopotential' ARS1F404.376
ICODE=1 ARS1F404.377
GOTO 99 ARS1F404.378
ENDIF ARS1F404.379
ENDIF ARS1F404.380
C ---------------------------------------------------------------------- INITDIA1.180
C Diagnostics with restrictive tests on their output ie for any INITDIA1.181
C product field A*B, A*B can only be requested on a subset of the INITDIA1.182
C levels requested for A and B searately. INITDIA1.183
C INITDIA1.184
C 15,215 UV on pressure levels INITDIA1.185
ISL=STINDEX(1,215,15,im_index) GDR4F305.105
IF(ISL.GT.0) THEN INITDIA1.187
IF (STLIST(10,ISL).LT.0) THEN INITDIA1.188
IF (STLIST(11,ISL).NE.2) THEN INITDIA1.189
CMESSAGE='INITDIA: Level not pressure for UV' INITDIA1.190
ICODE=1 INITDIA1.191
GOTO 99 INITDIA1.192
ELSE INITDIA1.193
NI=-STLIST(10,ISL) INITDIA1.194
NUM_LEVELS=STASH_LEVELS(1,NI) INITDIA1.195
IF (NUM_LEVELS.LE.U_PLEV.AND.NUM_LEVELS.LE.V_PLEV) THEN INITDIA1.196
COUNT=0 INITDIA1.197
DO K=1,NUM_LEVELS INITDIA1.198
DO I=1,U_PLEV INITDIA1.199
IF (STASH_LEVELS(K+1,NI).EQ. INITDIA1.200
& STASH_LEVELS(I+1,NI_U)) THEN INITDIA1.201
COUNT=COUNT+1 INITDIA1.202
ENDIF INITDIA1.203
ENDDO INITDIA1.204
DO I=1,V_PLEV INITDIA1.205
IF (STASH_LEVELS(K+1,NI).EQ. INITDIA1.206
& STASH_LEVELS(I+1,NI_V)) THEN INITDIA1.207
COUNT=COUNT+1 INITDIA1.208
ENDIF INITDIA1.209
ENDDO INITDIA1.210
ENDDO INITDIA1.211
IF (COUNT.NE.2*NUM_LEVELS) THEN INITDIA1.212
CMESSAGE='INITDIA: UV must be on a subset of U and V leve INITDIA1.213
&ls' INITDIA1.214
ICODE=1 INITDIA1.215
GOTO 99 INITDIA1.216
ENDIF INITDIA1.217
ELSE INITDIA1.218
CMESSAGE='INITDIA: UV must be on a subset of U and V leve INITDIA1.219
&ls' INITDIA1.220
ICODE=1 INITDIA1.221
GOTO 99 INITDIA1.222
ENDIF INITDIA1.223
ENDIF INITDIA1.224
ELSE INITDIA1.225
CMESSAGE='INITDIA: Level not a levels list for UV' INITDIA1.226
ICODE=1 INITDIA1.227
GOTO 99 INITDIA1.228
ENDIF INITDIA1.229
ENDIF INITDIA1.230
INITDIA1.231
C 15,217 UT on pressure levels INITDIA1.232
ISL=STINDEX(1,217,15,im_index) GDR4F305.106
IF(ISL.GT.0) THEN INITDIA1.234
IF (STLIST(10,ISL).LT.0) THEN INITDIA1.235
IF (STLIST(11,ISL).NE.2) THEN INITDIA1.236
CMESSAGE='INITDIA: Level not pressure for UT' INITDIA1.237
ICODE=1 INITDIA1.238
GOTO 99 INITDIA1.239
ELSE INITDIA1.240
NI=-STLIST(10,ISL) INITDIA1.241
NUM_LEVELS=STASH_LEVELS(1,NI) INITDIA1.242
IF (NUM_LEVELS.LE.U_PLEV.AND.NUM_LEVELS.LE.T_PLEV) THEN INITDIA1.243
COUNT=0 INITDIA1.244
DO K=1,NUM_LEVELS INITDIA1.245
DO I=1,U_PLEV INITDIA1.246
IF (STASH_LEVELS(K+1,NI).EQ. INITDIA1.247
& STASH_LEVELS(I+1,NI_U)) THEN INITDIA1.248
COUNT=COUNT+1 INITDIA1.249
ENDIF INITDIA1.250
ENDDO INITDIA1.251
DO I=1,T_PLEV INITDIA1.252
IF (STASH_LEVELS(K+1,NI).EQ. INITDIA1.253
& STASH_LEVELS(I+1,NI_T)) THEN INITDIA1.254
COUNT=COUNT+1 INITDIA1.255
ENDIF INITDIA1.256
ENDDO INITDIA1.257
ENDDO INITDIA1.258
IF (COUNT.NE.2*NUM_LEVELS) THEN INITDIA1.259
CMESSAGE='INITDIA: UT must be on a subset of U and T leve INITDIA1.260
&ls' INITDIA1.261
ICODE=1 INITDIA1.262
GOTO 99 INITDIA1.263
ENDIF INITDIA1.264
ELSE INITDIA1.265
CMESSAGE='INITDIA: UT must be on a subset of U and T leve INITDIA1.266
&ls' INITDIA1.267
ICODE=1 INITDIA1.268
GOTO 99 INITDIA1.269
ENDIF INITDIA1.270
ENDIF INITDIA1.271
ELSE INITDIA1.272
CMESSAGE='INITDIA: Level not a levels list for UT' INITDIA1.273
ICODE=1 INITDIA1.274
GOTO 99 INITDIA1.275
ENDIF INITDIA1.276
ENDIF INITDIA1.277
INITDIA1.278
C 15,218 VT on pressure levels INITDIA1.279
ISL=STINDEX(1,218,15,im_index) GDR4F305.107
IF(ISL.GT.0) THEN INITDIA1.281
IF (STLIST(10,ISL).LT.0) THEN INITDIA1.282
IF (STLIST(11,ISL).NE.2) THEN INITDIA1.283
CMESSAGE='INITDIA: Level not pressure for VT' INITDIA1.284
ICODE=1 INITDIA1.285
GOTO 99 INITDIA1.286
ELSE INITDIA1.287
NI=-STLIST(10,ISL) INITDIA1.288
NUM_LEVELS=STASH_LEVELS(1,NI) INITDIA1.289
IF (NUM_LEVELS.LE.V_PLEV.AND.NUM_LEVELS.LE.T_PLEV) THEN INITDIA1.290
COUNT=0 INITDIA1.291
DO K=1,NUM_LEVELS INITDIA1.292
DO I=1,V_PLEV INITDIA1.293
IF (STASH_LEVELS(K+1,NI).EQ. INITDIA1.294
& STASH_LEVELS(I+1,NI_V)) THEN INITDIA1.295
COUNT=COUNT+1 INITDIA1.296
ENDIF INITDIA1.297
ENDDO INITDIA1.298
DO I=1,T_PLEV INITDIA1.299
IF (STASH_LEVELS(K+1,NI).EQ. INITDIA1.300
& STASH_LEVELS(I+1,NI_T)) THEN INITDIA1.301
COUNT=COUNT+1 INITDIA1.302
ENDIF INITDIA1.303
ENDDO INITDIA1.304
ENDDO INITDIA1.305
IF (COUNT.NE.2*NUM_LEVELS) THEN INITDIA1.306
CMESSAGE='INITDIA: VT must be on a subset of V and T leve INITDIA1.307
&ls' INITDIA1.308
ICODE=1 INITDIA1.309
GOTO 99 INITDIA1.310
ENDIF INITDIA1.311
ELSE INITDIA1.312
CMESSAGE='INITDIA: VT must be on a subset of V and T leve INITDIA1.313
&ls' INITDIA1.314
ICODE=1 INITDIA1.315
GOTO 99 INITDIA1.316
ENDIF INITDIA1.317
ENDIF INITDIA1.318
ELSE INITDIA1.319
CMESSAGE='INITDIA: Level not a levels list for VT' INITDIA1.320
ICODE=1 INITDIA1.321
GOTO 99 INITDIA1.322
ENDIF INITDIA1.323
ENDIF INITDIA1.324
INITDIA1.325
C 15,219 T2 on pressure levels INITDIA1.326
ISL=STINDEX(1,219,15,im_index) GDR4F305.108
IF(ISL.GT.0) THEN INITDIA1.328
IF (STLIST(10,ISL).LT.0) THEN INITDIA1.329
IF (STLIST(11,ISL).NE.2) THEN INITDIA1.330
CMESSAGE='INITDIA: Level not pressure for T2' INITDIA1.331
ICODE=1 INITDIA1.332
GOTO 99 INITDIA1.333
ELSE INITDIA1.334
NI=-STLIST(10,ISL) INITDIA1.335
NUM_LEVELS=STASH_LEVELS(1,NI) INITDIA1.336
IF (NUM_LEVELS.LE.T_PLEV) THEN INITDIA1.337
COUNT=0 INITDIA1.338
DO K=1,NUM_LEVELS INITDIA1.339
DO I=1,T_PLEV INITDIA1.340
IF (STASH_LEVELS(K+1,NI).EQ. INITDIA1.341
& STASH_LEVELS(I+1,NI_T)) THEN INITDIA1.342
COUNT=COUNT+1 INITDIA1.343
ENDIF INITDIA1.344
ENDDO INITDIA1.345
ENDDO INITDIA1.346
IF (COUNT.NE.NUM_LEVELS) THEN INITDIA1.347
CMESSAGE='INITDIA: T**2 must be on a subset of T levels' INITDIA1.348
ICODE=1 INITDIA1.349
GOTO 99 INITDIA1.350
ENDIF INITDIA1.351
ELSE INITDIA1.352
CMESSAGE='INITDIA: T**2 must be on a subset of T levels' INITDIA1.353
ICODE=1 INITDIA1.354
GOTO 99 INITDIA1.355
ENDIF INITDIA1.356
ENDIF INITDIA1.357
ELSE INITDIA1.358
CMESSAGE='INITDIA: Level not a levels list for T2' INITDIA1.359
ICODE=1 INITDIA1.360
GOTO 99 INITDIA1.361
ENDIF INITDIA1.362
ENDIF INITDIA1.363
INITDIA1.364
C 15,220 U2 on pressure levels INITDIA1.365
ISL=STINDEX(1,220,15,im_index) GDR4F305.109
IF(ISL.GT.0) THEN INITDIA1.367
IF (STLIST(10,ISL).LT.0) THEN INITDIA1.368
IF (STLIST(11,ISL).NE.2) THEN INITDIA1.369
CMESSAGE='INITDIA: Level not pressure for U2' INITDIA1.370
ICODE=1 INITDIA1.371
GOTO 99 INITDIA1.372
ELSE INITDIA1.373
NI=-STLIST(10,ISL) INITDIA1.374
NUM_LEVELS=STASH_LEVELS(1,NI) INITDIA1.375
IF (NUM_LEVELS.LE.U_PLEV) THEN INITDIA1.376
COUNT=0 INITDIA1.377
DO K=1,NUM_LEVELS INITDIA1.378
DO I=1,U_PLEV INITDIA1.379
IF (STASH_LEVELS(K+1,NI).EQ. INITDIA1.380
& STASH_LEVELS(I+1,NI_U)) THEN INITDIA1.381
COUNT=COUNT+1 INITDIA1.382
ENDIF INITDIA1.383
ENDDO INITDIA1.384
ENDDO INITDIA1.385
IF (COUNT.NE.NUM_LEVELS) THEN INITDIA1.386
CMESSAGE='INITDIA: U**2 must be on a subset of U levels' INITDIA1.387
ICODE=1 INITDIA1.388
GOTO 99 INITDIA1.389
ENDIF INITDIA1.390
ELSE INITDIA1.391
CMESSAGE='INITDIA: U**2 must be on a subset of U levels' INITDIA1.392
ICODE=1 INITDIA1.393
GOTO 99 INITDIA1.394
ENDIF INITDIA1.395
ENDIF INITDIA1.396
ELSE INITDIA1.397
CMESSAGE='INITDIA: Level not a levels list for U2' INITDIA1.398
ICODE=1 INITDIA1.399
GOTO 99 INITDIA1.400
ENDIF INITDIA1.401
ENDIF INITDIA1.402
INITDIA1.403
C 15,221 V2 on pressure levels INITDIA1.404
ISL=STINDEX(1,221,15,im_index) GDR4F305.110
IF(ISL.GT.0) THEN INITDIA1.406
IF (STLIST(10,ISL).LT.0) THEN INITDIA1.407
IF (STLIST(11,ISL).NE.2) THEN INITDIA1.408
CMESSAGE='INITDIA: Level not pressure for V2' INITDIA1.409
ICODE=1 INITDIA1.410
GOTO 99 INITDIA1.411
ELSE INITDIA1.412
NI=-STLIST(10,ISL) INITDIA1.413
NUM_LEVELS=STASH_LEVELS(1,NI) INITDIA1.414
IF (NUM_LEVELS.LE.V_PLEV) THEN INITDIA1.415
COUNT=0 INITDIA1.416
DO K=1,NUM_LEVELS INITDIA1.417
DO I=1,V_PLEV INITDIA1.418
IF (STASH_LEVELS(K+1,NI).EQ. INITDIA1.419
& STASH_LEVELS(I+1,NI_V)) THEN INITDIA1.420
COUNT=COUNT+1 INITDIA1.421
ENDIF INITDIA1.422
ENDDO INITDIA1.423
ENDDO INITDIA1.424
IF (COUNT.NE.NUM_LEVELS) THEN INITDIA1.425
CMESSAGE='INITDIA: V**2 must be on a subset of V levels' INITDIA1.426
ICODE=1 INITDIA1.427
GOTO 99 INITDIA1.428
ENDIF INITDIA1.429
ELSE INITDIA1.430
CMESSAGE='INITDIA: V**2 must be on a subset of V levels' INITDIA1.431
ICODE=1 INITDIA1.432
GOTO 99 INITDIA1.433
ENDIF INITDIA1.434
ENDIF INITDIA1.435
ELSE INITDIA1.436
CMESSAGE='INITDIA: Level not a levels list for V2' INITDIA1.437
ICODE=1 INITDIA1.438
GOTO 99 INITDIA1.439
ENDIF INITDIA1.440
ENDIF INITDIA1.441
INITDIA1.442
C 15,223 wT on pressure levels INITDIA1.443
ISL=STINDEX(1,223,15,im_index) GDR4F305.111
IF(ISL.GT.0) THEN INITDIA1.445
IF (STLIST(10,ISL).LT.0) THEN INITDIA1.446
IF (STLIST(11,ISL).NE.2) THEN INITDIA1.447
CMESSAGE='INITDIA: Level not pressure for wT' INITDIA1.448
ICODE=1 INITDIA1.449
GOTO 99 INITDIA1.450
ELSE INITDIA1.451
NI=-STLIST(10,ISL) INITDIA1.452
NUM_LEVELS=STASH_LEVELS(1,NI) INITDIA1.453
IF (NUM_LEVELS.LE.w_PLEV.AND.NUM_LEVELS.LE.T_PLEV) THEN INITDIA1.454
COUNT=0 INITDIA1.455
DO K=1,NUM_LEVELS INITDIA1.456
DO I=1,W_PLEV INITDIA1.457
IF (STASH_LEVELS(K+1,NI).EQ. INITDIA1.458
& STASH_LEVELS(I+1,NI_W)) THEN INITDIA1.459
COUNT=COUNT+1 INITDIA1.460
ENDIF INITDIA1.461
ENDDO INITDIA1.462
DO I=1,T_PLEV INITDIA1.463
IF (STASH_LEVELS(K+1,NI).EQ. INITDIA1.464
& STASH_LEVELS(I+1,NI_T)) THEN INITDIA1.465
COUNT=COUNT+1 INITDIA1.466
ENDIF INITDIA1.467
ENDDO INITDIA1.468
ENDDO INITDIA1.469
IF (COUNT.NE.2*NUM_LEVELS) THEN INITDIA1.470
CMESSAGE='INITDIA: wT must be on a subset of w and T leve INITDIA1.471
&ls' INITDIA1.472
ICODE=1 INITDIA1.473
GOTO 99 INITDIA1.474
ENDIF INITDIA1.475
ELSE INITDIA1.476
CMESSAGE='INITDIA: wT must be on a subset of w and T leve INITDIA1.477
&ls' INITDIA1.478
ICODE=1 INITDIA1.479
GOTO 99 INITDIA1.480
ENDIF INITDIA1.481
ENDIF INITDIA1.482
ELSE INITDIA1.483
CMESSAGE='INITDIA: Level not a levels list for wT' INITDIA1.484
ICODE=1 INITDIA1.485
GOTO 99 INITDIA1.486
ENDIF INITDIA1.487
ENDIF INITDIA1.488
INITDIA1.489
C 15,224 wU on pressure levels INITDIA1.490
ISL=STINDEX(1,224,15,im_index) GDR4F305.112
IF(ISL.GT.0) THEN INITDIA1.492
IF (STLIST(10,ISL).LT.0) THEN INITDIA1.493
IF (STLIST(11,ISL).NE.2) THEN INITDIA1.494
CMESSAGE='INITDIA: Level not pressure for wU' INITDIA1.495
ICODE=1 INITDIA1.496
GOTO 99 INITDIA1.497
ELSE INITDIA1.498
NI=-STLIST(10,ISL) INITDIA1.499
NUM_LEVELS=STASH_LEVELS(1,NI) INITDIA1.500
IF (NUM_LEVELS.LE.w_PLEV.AND.NUM_LEVELS.LE.U_PLEV) THEN INITDIA1.501
COUNT=0 INITDIA1.502
DO K=1,NUM_LEVELS INITDIA1.503
DO I=1,W_PLEV INITDIA1.504
IF (STASH_LEVELS(K+1,NI).EQ. INITDIA1.505
& STASH_LEVELS(I+1,NI_W)) THEN INITDIA1.506
COUNT=COUNT+1 INITDIA1.507
ENDIF INITDIA1.508
ENDDO INITDIA1.509
DO I=1,U_PLEV INITDIA1.510
IF (STASH_LEVELS(K+1,NI).EQ. INITDIA1.511
& STASH_LEVELS(I+1,NI_U)) THEN INITDIA1.512
COUNT=COUNT+1 INITDIA1.513
ENDIF INITDIA1.514
ENDDO INITDIA1.515
ENDDO INITDIA1.516
IF (COUNT.NE.2*NUM_LEVELS) THEN INITDIA1.517
CMESSAGE='INITDIA: wU must be on a subset of w and U leve INITDIA1.518
&ls' INITDIA1.519
ICODE=1 INITDIA1.520
GOTO 99 INITDIA1.521
ENDIF INITDIA1.522
ELSE INITDIA1.523
CMESSAGE='INITDIA: wU must be on a subset of w and U leve INITDIA1.524
&ls' INITDIA1.525
ICODE=1 INITDIA1.526
GOTO 99 INITDIA1.527
ENDIF INITDIA1.528
ENDIF INITDIA1.529
ELSE INITDIA1.530
CMESSAGE='INITDIA: Level not a levels list for wU' INITDIA1.531
ICODE=1 INITDIA1.532
GOTO 99 INITDIA1.533
ENDIF INITDIA1.534
ENDIF INITDIA1.535
INITDIA1.536
C 15,225 wV on pressure levels INITDIA1.537
ISL=STINDEX(1,225,15,im_index) GDR4F305.113
IF(ISL.GT.0) THEN INITDIA1.539
IF (STLIST(10,ISL).LT.0) THEN INITDIA1.540
IF (STLIST(11,ISL).NE.2) THEN INITDIA1.541
CMESSAGE='INITDIA: Level not pressure for wV' INITDIA1.542
ICODE=1 INITDIA1.543
GOTO 99 INITDIA1.544
ELSE INITDIA1.545
NI=-STLIST(10,ISL) INITDIA1.546
NUM_LEVELS=STASH_LEVELS(1,NI) INITDIA1.547
IF (NUM_LEVELS.LE.w_PLEV.AND.NUM_LEVELS.LE.V_PLEV) THEN INITDIA1.548
COUNT=0 INITDIA1.549
DO K=1,NUM_LEVELS INITDIA1.550
DO I=1,W_PLEV INITDIA1.551
IF (STASH_LEVELS(K+1,NI).EQ. INITDIA1.552
& STASH_LEVELS(I+1,NI_W)) THEN INITDIA1.553
COUNT=COUNT+1 INITDIA1.554
ENDIF INITDIA1.555
ENDDO INITDIA1.556
DO I=1,V_PLEV INITDIA1.557
IF (STASH_LEVELS(K+1,NI).EQ. INITDIA1.558
& STASH_LEVELS(I+1,NI_V)) THEN INITDIA1.559
COUNT=COUNT+1 INITDIA1.560
ENDIF INITDIA1.561
ENDDO INITDIA1.562
ENDDO INITDIA1.563
IF (COUNT.NE.2*NUM_LEVELS) THEN INITDIA1.564
CMESSAGE='INITDIA: wV must be on a subset of w and V leve INITDIA1.565
&ls' INITDIA1.566
ICODE=1 INITDIA1.567
GOTO 99 INITDIA1.568
ENDIF INITDIA1.569
ELSE INITDIA1.570
CMESSAGE='INITDIA: wV must be on a subset of w and V leve INITDIA1.571
&ls' INITDIA1.572
ICODE=1 INITDIA1.573
GOTO 99 INITDIA1.574
ENDIF INITDIA1.575
ENDIF INITDIA1.576
ELSE INITDIA1.577
CMESSAGE='INITDIA: Level not a levels list for wV' INITDIA1.578
ICODE=1 INITDIA1.579
GOTO 99 INITDIA1.580
ENDIF INITDIA1.581
ENDIF INITDIA1.582
INITDIA1.583
C 15,227 qU on pressure levels INITDIA1.584
ISL=STINDEX(1,227,15,im_index) GDR4F305.114
IF(ISL.GT.0) THEN INITDIA1.586
IF (STLIST(10,ISL).LT.0) THEN INITDIA1.587
IF (STLIST(11,ISL).NE.2) THEN INITDIA1.588
CMESSAGE='INITDIA: Level not pressure for qu' INITDIA1.589
ICODE=1 INITDIA1.590
GOTO 99 INITDIA1.591
ELSE INITDIA1.592
NI=-STLIST(10,ISL) INITDIA1.593
NUM_LEVELS=STASH_LEVELS(1,NI) INITDIA1.594
IF (NUM_LEVELS.LE.q_PLEV.AND.NUM_LEVELS.LE.U_PLEV) THEN INITDIA1.595
COUNT=0 INITDIA1.596
DO K=1,NUM_LEVELS INITDIA1.597
DO I=1,Q_PLEV INITDIA1.598
IF (STASH_LEVELS(K+1,NI).EQ. INITDIA1.599
& STASH_LEVELS(I+1,NI_Q)) THEN INITDIA1.600
COUNT=COUNT+1 INITDIA1.601
ENDIF INITDIA1.602
ENDDO INITDIA1.603
DO I=1,U_PLEV INITDIA1.604
IF (STASH_LEVELS(K+1,NI).EQ. INITDIA1.605
& STASH_LEVELS(I+1,NI_U)) THEN INITDIA1.606
COUNT=COUNT+1 INITDIA1.607
ENDIF INITDIA1.608
ENDDO INITDIA1.609
ENDDO INITDIA1.610
IF (COUNT.NE.2*NUM_LEVELS) THEN INITDIA1.611
CMESSAGE='INITDIA: qU must be on a subset of q and U leve INITDIA1.612
&ls' INITDIA1.613
ICODE=1 INITDIA1.614
GOTO 99 INITDIA1.615
ENDIF INITDIA1.616
ELSE INITDIA1.617
CMESSAGE='INITDIA: qU must be on a subset of q and U leve INITDIA1.618
&ls' INITDIA1.619
ICODE=1 INITDIA1.620
GOTO 99 INITDIA1.621
ENDIF INITDIA1.622
ENDIF INITDIA1.623
ELSE INITDIA1.624
CMESSAGE='INITDIA: Level not a levels list for qu' INITDIA1.625
ICODE=1 INITDIA1.626
GOTO 99 INITDIA1.627
ENDIF INITDIA1.628
ENDIF INITDIA1.629
INITDIA1.630
C 15,228 qV on pressure levels INITDIA1.631
ISL=STINDEX(1,228,15,im_index) GDR4F305.115
IF(ISL.GT.0) THEN INITDIA1.633
IF (STLIST(10,ISL).LT.0) THEN INITDIA1.634
IF (STLIST(11,ISL).NE.2) THEN INITDIA1.635
CMESSAGE='INITDIA: Level not pressure for qV' INITDIA1.636
ICODE=1 INITDIA1.637
GOTO 99 INITDIA1.638
ELSE INITDIA1.639
NI=-STLIST(10,ISL) INITDIA1.640
NUM_LEVELS=STASH_LEVELS(1,NI) INITDIA1.641
IF (NUM_LEVELS.LE.q_PLEV.AND.NUM_LEVELS.LE.V_PLEV) THEN INITDIA1.642
COUNT=0 INITDIA1.643
DO K=1,NUM_LEVELS INITDIA1.644
DO I=1,Q_PLEV INITDIA1.645
IF (STASH_LEVELS(K+1,NI).EQ. INITDIA1.646
& STASH_LEVELS(I+1,NI_Q)) THEN INITDIA1.647
COUNT=COUNT+1 INITDIA1.648
ENDIF INITDIA1.649
ENDDO INITDIA1.650
DO I=1,V_PLEV INITDIA1.651
IF (STASH_LEVELS(K+1,NI).EQ. INITDIA1.652
& STASH_LEVELS(I+1,NI_V)) THEN INITDIA1.653
COUNT=COUNT+1 INITDIA1.654
ENDIF INITDIA1.655
ENDDO INITDIA1.656
ENDDO INITDIA1.657
IF (COUNT.NE.2*NUM_LEVELS) THEN INITDIA1.658
CMESSAGE='INITDIA: qV must be on a subset of q and V leve INITDIA1.659
&ls' INITDIA1.660
ICODE=1 INITDIA1.661
GOTO 99 INITDIA1.662
ENDIF INITDIA1.663
ELSE INITDIA1.664
CMESSAGE='INITDIA: qV must be on a subset of q and V leve INITDIA1.665
&ls' INITDIA1.666
ICODE=1 INITDIA1.667
GOTO 99 INITDIA1.668
ENDIF INITDIA1.669
ENDIF INITDIA1.670
ELSE INITDIA1.671
CMESSAGE='INITDIA: Level not a levels list for qV' INITDIA1.672
ICODE=1 ARS1F404.381
GOTO 99 ARS1F404.382
ENDIF ARS1F404.383
ENDIF ARS1F404.384
ARS1F404.385
! 15,235 qw on pressure levels ARS1F404.386
ISL=STINDEX(1,235,15,im_index) ARS1F404.387
IF(ISL.GT.0) THEN ARS1F404.388
IF (STLIST(10,ISL).LT.0) THEN ARS1F404.389
IF (STLIST(11,ISL).NE.2) THEN ARS1F404.390
CMESSAGE='INITDIA: Level not pressure for qw' ARS1F404.391
ICODE=1 ARS1F404.392
GOTO 99 ARS1F404.393
ELSE ARS1F404.394
NI=-STLIST(10,ISL) ARS1F404.395
NUM_LEVELS=STASH_LEVELS(1,NI) ARS1F404.396
IF (NUM_LEVELS.LE.q_PLEV.AND.NUM_LEVELS.LE.W_PLEV) THEN ARS1F404.397
COUNT=0 ARS1F404.398
DO K=1,NUM_LEVELS ARS1F404.399
DO I=1,Q_PLEV ARS1F404.400
IF (STASH_LEVELS(K+1,NI).EQ. ARS1F404.401
& STASH_LEVELS(I+1,NI_Q)) THEN ARS1F404.402
COUNT=COUNT+1 ARS1F404.403
ENDIF ARS1F404.404
ENDDO ARS1F404.405
DO I=1,W_PLEV ARS1F404.406
IF (STASH_LEVELS(K+1,NI).EQ. ARS1F404.407
& STASH_LEVELS(I+1,NI_W)) THEN ARS1F404.408
COUNT=COUNT+1 ARS1F404.409
ENDIF ARS1F404.410
ENDDO ARS1F404.411
ENDDO ARS1F404.412
IF (COUNT.NE.2*NUM_LEVELS) THEN ARS1F404.413
CMESSAGE='INITDIA: qw must be on a subset of q and w leve ARS1F404.414
&ls' ARS1F404.415
ICODE=1 ARS1F404.416
GOTO 99 ARS1F404.417
ENDIF ARS1F404.418
ELSE ARS1F404.419
CMESSAGE='INITDIA: qw must be on a subset of q and w leve ARS1F404.420
&ls' ARS1F404.421
ICODE=1 ARS1F404.422
GOTO 99 ARS1F404.423
ENDIF ARS1F404.424
ENDIF ARS1F404.425
ELSE ARS1F404.426
CMESSAGE='INITDIA: Level not a levels list for qw' ARS1F404.427
ICODE=1 ARS1F404.428
GOTO 99 ARS1F404.429
ENDIF ARS1F404.430
ENDIF ARS1F404.431
ARS1F404.432
! 15239 - u*geopotential ARS1F404.433
ARS1F404.434
ISL=STINDEX(1,239,15,im_index) ARS1F404.435
IF(ISL.GT.0) THEN ARS1F404.436
IF (STLIST(10,ISL).LT.0) THEN ARS1F404.437
IF (STLIST(11,ISL).NE.2) THEN ARS1F404.438
CMESSAGE='INITDIA: Level not pressure for vZ' ARS1F404.439
ICODE=1 ARS1F404.440
GOTO 99 ARS1F404.441
ELSE ARS1F404.442
NI=-STLIST(10,ISL) ARS1F404.443
NUM_LEVELS=STASH_LEVELS(1,NI) ARS1F404.444
IF (NUM_LEVELS.LE.U_PLEV.AND.NUM_LEVELS.LE.H_PLEV) THEN ARS1F404.445
COUNT=0 ARS1F404.446
DO K=1,NUM_LEVELS ARS1F404.447
DO I=1,U_PLEV ARS1F404.448
IF (STASH_LEVELS(K+1,NI).EQ. STASH_LEVELS(I+1,NI_U)) THEN ARS1F404.449
COUNT=COUNT+1 ARS1F404.450
ENDIF ARS1F404.451
ENDDO ARS1F404.452
DO I=1,H_PLEV ARS1F404.453
IF (STASH_LEVELS(K+1,NI).EQ.STASH_LEVELS(I+1,NI_H)) THEN ARS1F404.454
COUNT=COUNT+1 ARS1F404.455
ENDIF ARS1F404.456
ENDDO ARS1F404.457
ENDDO ARS1F404.458
IF (COUNT.NE.2*NUM_LEVELS) THEN ARS1F404.459
CMESSAGE='INITDIA: uZ must be on a subset of u and Z levels' ARS1F404.460
ICODE=1 ARS1F404.461
GOTO 99 ARS1F404.462
ENDIF ARS1F404.463
ELSE ARS1F404.464
CMESSAGE='INITDIA: uZ must be on a subset of u and Z levels' ARS1F404.465
ICODE=1 ARS1F404.466
GOTO 99 ARS1F404.467
ENDIF ARS1F404.468
ENDIF ARS1F404.469
ELSE ARS1F404.470
CMESSAGE='INITDIA: Level not a levels list for uZ' ARS1F404.471
ICODE=1 ARS1F404.472
GOTO 99 ARS1F404.473
ENDIF ARS1F404.474
ENDIF ARS1F404.475
ARS1F404.476
! 15240 - v*geopotential ARS1F404.477
ARS1F404.478
ISL=STINDEX(1,240,15,im_index) ARS1F404.479
IF(ISL.GT.0) THEN ARS1F404.480
IF (STLIST(10,ISL).LT.0) THEN ARS1F404.481
IF (STLIST(11,ISL).NE.2) THEN ARS1F404.482
CMESSAGE='INITDIA: Level not pressure for vZ' ARS1F404.483
ICODE=1 ARS1F404.484
GOTO 99 ARS1F404.485
ELSE ARS1F404.486
NI=-STLIST(10,ISL) ARS1F404.487
NUM_LEVELS=STASH_LEVELS(1,NI) ARS1F404.488
IF (NUM_LEVELS.LE.V_PLEV.AND.NUM_LEVELS.LE.H_PLEV) THEN ARS1F404.489
COUNT=0 ARS1F404.490
DO K=1,NUM_LEVELS ARS1F404.491
DO I=1,V_PLEV ARS1F404.492
IF (STASH_LEVELS(K+1,NI).EQ. STASH_LEVELS(I+1,NI_V)) THEN ARS1F404.493
COUNT=COUNT+1 ARS1F404.494
ENDIF ARS1F404.495
ENDDO ARS1F404.496
DO I=1,H_PLEV ARS1F404.497
IF (STASH_LEVELS(K+1,NI).EQ.STASH_LEVELS(I+1,NI_H)) THEN ARS1F404.498
COUNT=COUNT+1 ARS1F404.499
ENDIF ARS1F404.500
ENDDO ARS1F404.501
ENDDO ARS1F404.502
IF (COUNT.NE.2*NUM_LEVELS) THEN ARS1F404.503
CMESSAGE='INITDIA: vZ must be on a subset of v and Z levels' ARS1F404.504
ICODE=1 ARS1F404.505
GOTO 99 ARS1F404.506
ENDIF ARS1F404.507
ELSE ARS1F404.508
CMESSAGE='INITDIA: vZ must be on a subset of v and Z levels' ARS1F404.509
ICODE=1 ARS1F404.510
GOTO 99 ARS1F404.511
ENDIF ARS1F404.512
ENDIF ARS1F404.513
ELSE ARS1F404.514
CMESSAGE='INITDIA: Level not a levels list for vZ' ARS1F404.515
ICODE=1 INITDIA1.673
GOTO 99 INITDIA1.674
ENDIF INITDIA1.675
ENDIF INITDIA1.676
INITDIA1.677
C Initialise Pstar-old to Pstar for timestep 0 INITDIA1.678
DO K=1,P_FIELD INITDIA1.679
PSTAR_OLD(k) = D1(JPSTAR+k-1) INITDIA1.680
ENDDO INITDIA1.681
INITDIA1.682
CALL ST_DIAG1
(NUM_STASH_LEVELS,STASH_MAXLEN(15,im_index), GDR4F305.116
& PSTAR_OLD, GDR4F305.117
*CALL ARGSIZE
@DYALLOC.1480
*CALL ARGD1
@DYALLOC.1481
*CALL ARGDUMA
@DYALLOC.1482
*CALL ARGDUMO
@DYALLOC.1483
*CALL ARGDUMW
GKR1F401.215
*CALL ARGSTS
@DYALLOC.1484
*CALL ARGPTRA
@DYALLOC.1485
*CALL ARGPTRO
@DYALLOC.1486
*CALL ARGCONA
@DYALLOC.1487
*CALL ARGPPX
GKR0F305.943
*CALL ARGFLDPT
GSM1F405.512
& ICODE,CMESSAGE) @DYALLOC.1488
INITDIA1.684
C Check diagnostics and their levels are consistent now. INITDIA1.685
C This should reduce need to check this on all subsequent calls to INITDIA1.686
C ST_DIAG2. INITDIA1.687
C INITDIA1.688
C 16,202 Height on pressure levels INITDIA1.689
ISL=STINDEX(1,202,16,im_index) GDR4F305.118
IF(ISL.GT.0) THEN INITDIA1.691
IF (STLIST(10,ISL).LT.0) THEN INITDIA1.692
IF (STLIST(11,ISL).NE.2) THEN INITDIA1.693
CMESSAGE='INITDIA: Level not pressure for Height' INITDIA1.694
ICODE=1 INITDIA1.695
GOTO 99 INITDIA1.696
ELSE INITDIA1.697
NI_H = -STLIST(10,ISL) INITDIA1.698
H_PLEV=STASH_LEVELS(1,NI_H) INITDIA1.699
ENDIF INITDIA1.700
ELSE INITDIA1.701
CMESSAGE='INITDIA: Level not a levels list for height' INITDIA1.702
ICODE=1 INITDIA1.703
GOTO 99 INITDIA1.704
ENDIF INITDIA1.705
ENDIF INITDIA1.706
C INITDIA1.707
C 16,203 Temperature on pressure levels INITDIA1.708
ISL=STINDEX(1,203,16,im_index) GDR4F305.119
IF(ISL.GT.0) THEN INITDIA1.710
IF (STLIST(10,ISL).LT.0) THEN INITDIA1.711
IF (STLIST(11,ISL).NE.2) THEN INITDIA1.712
CMESSAGE='INITDIA: Level not pressure for T' INITDIA1.713
ICODE=1 INITDIA1.714
GOTO 99 INITDIA1.715
ELSE INITDIA1.716
NI_T = -STLIST(10,ISL) INITDIA1.717
T_PLEV=STASH_LEVELS(1,NI_T) INITDIA1.718
ENDIF INITDIA1.719
ELSE INITDIA1.720
CMESSAGE='INITDIA: Level not a levels list for T' INITDIA1.721
ICODE=1 INITDIA1.722
GOTO 99 INITDIA1.723
ENDIF INITDIA1.724
ENDIF INITDIA1.725
C ---------------------------------------------------------------------- INITDIA1.726
C Restrictive tests on product diagnostics INITDIA1.727
C INITDIA1.728
C 16,224 H**2 on pressure levels INITDIA1.729
ISL=STINDEX(1,224,16,im_index) GDR4F305.120
IF(ISL.GT.0) THEN INITDIA1.731
IF (STLIST(10,ISL).LT.0) THEN INITDIA1.732
IF (STLIST(11,ISL).NE.2) THEN INITDIA1.733
CMESSAGE='INITDIA: Level not pressure for Height**2' INITDIA1.734
ICODE=1 INITDIA1.735
GOTO 99 INITDIA1.736
ELSE INITDIA1.737
NI=-STLIST(10,ISL) INITDIA1.738
NUM_LEVELS=STASH_LEVELS(1,NI) INITDIA1.739
IF (NUM_LEVELS.LE.H_PLEV) THEN INITDIA1.740
COUNT=0 INITDIA1.741
DO K=1,NUM_LEVELS INITDIA1.742
DO I=1,H_PLEV INITDIA1.743
IF (STASH_LEVELS(K+1,NI).EQ.STASH_LEVELS(I+1,NI_H))THEN INITDIA1.744
COUNT=COUNT+1 INITDIA1.745
ENDIF INITDIA1.746
ENDDO INITDIA1.747
ENDDO INITDIA1.748
IF (COUNT.NE.NUM_LEVELS) THEN INITDIA1.749
CMESSAGE='INITDIA: Height**2 must be on a subset of H lev INITDIA1.750
&ls' INITDIA1.751
ICODE=1 INITDIA1.752
GOTO 99 INITDIA1.753
ENDIF INITDIA1.754
ELSE INITDIA1.755
CMESSAGE='INITDIA: Height**2 must be on a subset of H lev INITDIA1.756
&ls' INITDIA1.757
ICODE=1 INITDIA1.758
GOTO 99 INITDIA1.759
ENDIF INITDIA1.760
ENDIF INITDIA1.761
ELSE INITDIA1.762
CMESSAGE='INITDIA: Level not a levels list for Height**2' INITDIA1.763
ICODE=1 INITDIA1.764
GOTO 99 INITDIA1.765
ENDIF INITDIA1.766
ENDIF INITDIA1.767
C INITDIA1.768
INITDIA1.769
INITDIA1.770
CALL ST_DIAG2
(NUM_STASH_LEVELS,STASH_MAXLEN(16,im_index), GDR4F305.121
& P_FIELD,P_LEVELS,TR_VARS, ADP0F401.6
*CALL ARGSIZE
@DYALLOC.1490
*CALL ARGD1
@DYALLOC.1491
*CALL ARGDUMA
@DYALLOC.1492
*CALL ARGDUMO
@DYALLOC.1493
*CALL ARGDUMW
GKR1F401.216
*CALL ARGSTS
@DYALLOC.1494
*CALL ARGPTRA
@DYALLOC.1495
*CALL ARGPTRO
@DYALLOC.1496
*CALL ARGCONA
@DYALLOC.1497
*CALL ARGPPX
GKR0F305.944
*CALL ARGFLDPT
GSM1F405.513
& ICODE,CMESSAGE) @DYALLOC.1498
INITDIA1.772
99 CONTINUE INITDIA1.773
RETURN INITDIA1.774
END INITDIA1.775
*ENDIF INITDIA1.776