*IF DEF,CONTROL,AND,DEF,ATMOS GWAV_CT1.2
C ******************************COPYRIGHT****************************** GTS2F400.3565
C (c) CROWN COPYRIGHT 1995, METEOROLOGICAL OFFICE, All Rights Reserved. GTS2F400.3566
C GTS2F400.3567
C Use, duplication or disclosure of this code is subject to the GTS2F400.3568
C restrictions as set forth in the contract. GTS2F400.3569
C GTS2F400.3570
C Meteorological Office GTS2F400.3571
C London Road GTS2F400.3572
C BRACKNELL GTS2F400.3573
C Berkshire UK GTS2F400.3574
C RG12 2SZ GTS2F400.3575
C GTS2F400.3576
C If no contract has been raised with this copy of the code, the use, GTS2F400.3577
C duplication or disclosure of it is strictly prohibited. Permission GTS2F400.3578
C to do so must first be obtained in writing from the Head of Numerical GTS2F400.3579
C Modelling at the above address. GTS2F400.3580
C ******************************COPYRIGHT****************************** GTS2F400.3581
C GTS2F400.3582
CLL Subroutine GWAV_CTL ----------------------------------------------- GWAV_CT1.3
CLL GWAV_CT1.4
CLL Purpose: Calls GWAVE to add gravity wave drag increments. GWAV_CT1.5
CLL GWAV_CT1.6
CLL Level 2 control routine GWAV_CT1.7
CLL Version for CRAY YMP GWAV_CT1.8
CLL GWAV_CT1.9
CLL Model Modification history from model version 3.0: GWAV_CT1.10
CLL version Date GWAV_CT1.11
CLL 3.1 8/02/93 : added comdeck CHSUNITS to define UNITS for RS030293.203
CLL comdeck CCONTROL RS030293.204
CLL 14/02/93 Add diagnostics for orographic gradients xx,xy,yy CW140293.2
CLL C Wilson CW140293.3
CLL 3.1 12/02/93 Correct offset for OROG_SD CW120293.1
CLL C Wilson CW120293.2
CLL 3.2 13/07/93 Changed CHARACTER*(*) to CHARACTER*(80) for TS150793.63
CLL portability. Author Tracey Smith. TS150793.64
CLL 3.2 13/04/93 Dynamic allocation of main arrays. R T H Barnes. @DYALLOC.1021
CLL 3.3 25/10/93 Removal of DIAG06 directive. New arguments for DR251093.1
CLL G_WAVE to dimension diagnostic arrays. D. Robinson. DR251093.2
CLL 3.4 09/06/94 Arguments LFROUDE, LGWLINP passed to s/r G_WAVE GSS1F304.50
CLL S.J.Swarbrick GSS1F304.51
CLL 3.4 22/11/94 Implement interfacing routine to allow calls to AMJ1F304.12
CLL multiple versions with different argument lists. AMJ1F304.13
CLL R.T.H.Barnes. AMJ1F304.14
CLL 3.5 28/03/95 Sub model changes : Remove run time constants ADR1F305.78
CLL from Atmos dump headers. D. Robinson ADR1F305.79
! 3.5 9/5/95 MPP code: Change updateable area. Added fix for APB1F305.304
! case where LAND_POINTS=0 P.Burton APB1F305.305
CLL 3.5 05/06/95 Chgs to SI & STINDEX arrays. RTHBarnes GRB4F305.141
! 4.1 28/05/96 MPP Changes. D. Robinson. APBEF401.2
! 4.2 18/10/96 Added swapbounds for U,V P.Burton APB1F402.1
!LL 4.3 13/02/97 Stop main code being called if no land points GPB3F403.88
!LL P.Burton GPB3F403.89
!LL 4.3 12/02/97 Added PPX arguments to EXTDIAG P.Burton GPB1F403.1500
! 4.3 7/03/97 KAY_LEE passed in from namelist. S.Webster ASW1F403.18
CLL GWAV_CT1.12
CLL Programming standard : unified model documentation paper No 3 GWAV_CT1.13
CLL GWAV_CT1.14
CLL System components covered : 22 GWAV_CT1.15
CLL GWAV_CT1.16
CLL System task : P0 GWAV_CT1.17
CLL GWAV_CT1.18
CLL Documentation: Unified Model documentation paper P0 GWAV_CT1.19
CLL Version 11 dated 26/11/90 GWAV_CT1.20
CLLEND ----------------------------------------------------------------- GWAV_CT1.21
C*L Arguments GWAV_CT1.22
GWAV_CT1.23
SUBROUTINE GWAV_CTL( 1,24@DYALLOC.1022
& P_FIELDDA,P_LEVELSDA,INT6, @DYALLOC.1023
*CALL ARGSIZE
@DYALLOC.1024
*CALL ARGD1
@DYALLOC.1025
*CALL ARGDUMA
@DYALLOC.1026
*CALL ARGDUMO
@DYALLOC.1027
*CALL ARGDUMW
GKR1F401.203
*CALL ARGSTS
@DYALLOC.1028
*CALL ARGPTRA
@DYALLOC.1029
*CALL ARGPTRO
@DYALLOC.1030
*CALL ARGCONA
@DYALLOC.1031
*CALL ARGPPX
GKR0F305.927
*CALL ARGFLDPT
APBEF401.3
& ICODE,CMESSAGE) @DYALLOC.1032
GWAV_CT1.25
IMPLICIT NONE GWAV_CT1.26
@DYALLOC.1033
*CALL CMAXSIZE
@DYALLOC.1034
*CALL CSUBMODL
GSS1F305.927
*CALL TYPSIZE
@DYALLOC.1035
*CALL TYPD1
@DYALLOC.1036
*CALL TYPDUMA
@DYALLOC.1037
*CALL TYPDUMO
@DYALLOC.1038
*CALL TYPDUMW
GKR1F401.204
*CALL TYPSTS
@DYALLOC.1039
*CALL TYPPTRA
@DYALLOC.1040
*CALL TYPPTRO
@DYALLOC.1041
*CALL TYPCONA
@DYALLOC.1042
*CALL PPXLOOK
GKR0F305.928
*CALL TYPFLDPT
APBEF401.4
GWAV_CT1.27
INTEGER GWAV_CT1.28
& INT6, ! Dummy variable for STASH_MAXLEN(6) GWAV_CT1.29
& ICODE, ! Return code : 0 Normal Exit GWAV_CT1.30
C ! : >0 Error GWAV_CT1.31
& P_FIELDDA, ! Extra copy of P_FIELD for dynamic alloc @DYALLOC.1043
& P_LEVELSDA ! and P_LEVELS @DYALLOC.1044
GWAV_CT1.33
CHARACTER*80 TS150793.65
& CMESSAGE ! Error message if return code >0 GWAV_CT1.35
GWAV_CT1.36
*IF DEF,MPP APB1F305.306
! Parameters and Common blocks APB1F305.307
*CALL PARVARS
APB1F305.308
*ENDIF APB1F305.309
*CALL CHSUNITS
RS030293.205
*CALL CCONTROL
GWAV_CT1.38
*CALL CRUNTIMC
ADR1F305.80
*CALL CTIME
ADR1F305.81
@DYALLOC.1045
CL Subroutines called GWAV_CT1.43
GWAV_CT1.44
EXTERNAL GWAV_CT1.45
& GWAV_INTCTL,TIMER,STASH, AMJ1F304.15
& EXTDIAG,SET_LEVELS_LIST, DR251093.3
& FROM_LAND_POINTS GWAV_CT1.54
CL Dynamically allocated area for stash processing GWAV_CT1.56
GWAV_CT1.57
REAL GWAV_CT1.58
& STASHWORK(INT6) GWAV_CT1.59
GWAV_CT1.60
CL Other work areas GWAV_CT1.61
GWAV_CT1.62
INTEGER GWAV_CT1.63
& RELATIVE_LAND_LIST(P_FIELDDA) @DYALLOC.1046
GWAV_CT1.65
C Local variables GWAV_CT1.66
GWAV_CT1.67
INTEGER GWAV_CT1.68
& ROWS AMJ1F304.16
& ,I AMJ1F304.17
& ,J AMJ1F304.18
& ,JS AMJ1F304.19
& ,JSL ! offset for first point for land only AMJ1F304.20
& ,FIRST_POINT AMJ1F304.21
& ,LAST_POINT AMJ1F304.22
& ,LAND_POINTS AMJ1F304.23
& ,POINTS_STRESS_UD ! ) No of land points in diagnostic AMJ1F304.24
& ,POINTS_STRESS_VD ! ) arrays for GW stress - u and v AMJ1F304.25
& ,POINTS_DU_DT_SATN ! ) No of land points in diagnostic AMJ1F304.26
& ,POINTS_DV_DT_SATN ! ) arrays for GW satn - du and dv AMJ1F304.27
& ,POINTS_DU_DT_JUMP ! ) No of land points in diagnostic AMJ1F304.28
& ,POINTS_DV_DT_JUMP ! ) arrays for GW jump - du and dv AMJ1F304.29
& ,POINTS_DU_DT_LEE ! ) No of land points in diagnostic AMJ1F304.30
& ,POINTS_DV_DT_LEE ! ) arrays for GW lee - du and dv AMJ1F304.31
& ,POINTS_TRANS_D ! ) No of land point for trans coeff AMJ1F304.32
& ,POINTS AMJ1F304.33
& ,LEN_STRESS_UD ! ) Dimensions of arrays in STASHWORK DR251093.7
& ,LEN_STRESS_VD ! ) for GW stress - u and v DR251093.8
& ,LEN_DU_DT_SATN ! ) Dimensions of arrays in STASHWORK AMJ1F304.34
& ,LEN_DV_DT_SATN ! ) for GW satn - du and dv AMJ1F304.35
& ,LEN_DU_DT_JUMP ! ) Dimensions of arrays in STASHWORK AMJ1F304.36
& ,LEN_DV_DT_JUMP ! ) for GW satn - du and dv AMJ1F304.37
& ,LEN_DU_DT_LEE ! ) Dimensions of arrays in STASHWORK AMJ1F304.38
& ,LEN_DV_DT_LEE ! ) for GW satn - du and dv AMJ1F304.39
& ,LEN_TRANS_D ! Dimension of trans array in STASHWORK AMJ1F304.40
& ,IM_IDENT ! internal model identifier GRB4F305.142
& ,IM_INDEX ! internal model index for STASH arrays GRB4F305.143
GWAV_CT1.77
LOGICAL GWAV_CT1.78
& LIST1(P_LEVELSDA+1) ! Lists of levels required for AMJ1F304.41
& ,LIST2(P_LEVELSDA+1) ! diagnostic output STRESS AMJ1F304.42
& ,LIST3(P_LEVELSDA) ! Lists of levels required for AMJ1F304.43
& ,LIST4(P_LEVELSDA) ! diagnostic output DU_DT_SATN AMJ1F304.44
& ,LIST5(P_LEVELSDA) ! Lists of levels required for AMJ1F304.45
& ,LIST6(P_LEVELSDA) ! diagnostic output DU_DT_JUMP AMJ1F304.46
& ,LIST7(P_LEVELSDA) ! Lists of levels required for AMJ1F304.47
& ,LIST8(P_LEVELSDA) ! diagnostic output DU_DT_LEE AMJ1F304.48
AMJ1F304.49
C ----------------------------------------------------- GWAV_CT1.81
GWAV_CT1.82
CL--- SECTION 6 --- GRAVITY WAVE DRAG ----------------- GWAV_CT1.83
CL 6.0 Initialisation GWAV_CT1.84
GRB4F305.144
C Set up internal model identifier and STASH index GRB4F305.145
im_ident = atmos_im GRB4F305.146
im_index = internal_model_index(im_ident) GRB4F305.147
GWAV_CT1.85
! Set grid pointers APBEF401.5
FIRST_POINT = START_POINT_INC_HALO APBEF401.6
LAST_POINT = END_P_POINT_INC_HALO APBEF401.7
POINTS = LAST_POINT-FIRST_POINT+1 APBEF401.8
ROWS = POINTS/ROW_LENGTH APBEF401.9
JS = FIRST_POINT-1 APBEF401.10
APBEF401.11
*IF DEF,MPP APBEF401.12
CALL SWAPBOUNDS
(D1(JTHETA(1)),ROW_LENGTH,tot_P_ROWS, APBEF401.13
& EW_Halo,NS_Halo,P_LEVELS) APBEF401.14
CALL SWAPBOUNDS
(D1(JQ(1)),ROW_LENGTH,tot_P_ROWS, APBEF401.15
& EW_Halo,NS_Halo,Q_LEVELS) APBEF401.16
*ENDIF APBEF401.17
GWAV_CT1.91
CL Set list of land points relative to first point processed GWAV_CT1.92
CL and omit points after last point requested. GWAV_CT1.93
GWAV_CT1.94
JSL=1 ! incase LAND_FIELD=0 GPB3F403.90
DO I=1,LAND_FIELD GWAV_CT1.95
JSL=I CW120293.4
IF(LAND_LIST(I).GE.FIRST_POINT) GO TO 601 GWAV_CT1.97
ENDDO GWAV_CT1.98
GWAV_CT1.99
601 LAND_POINTS=LAND_FIELD-JSL+1 CW120293.5
C set JSL as offset for first point in LAND_LIST being processed CW120293.6
JSL=JSL-1 CW120293.7
J=1 ! incase LAND_POINTS=0 APB1F305.328
DO I=1,LAND_POINTS GWAV_CT1.101
J=I GWAV_CT1.102
RELATIVE_LAND_LIST(I)=LAND_LIST(I+JSL)-JS CW120293.8
IF(RELATIVE_LAND_LIST(I).GT.POINTS) GO TO 602 GWAV_CT1.104
J=I+1 GWAV_CT1.105
ENDDO GWAV_CT1.106
602 LAND_POINTS=J-1 GWAV_CT1.107
GWAV_CT1.108
C Set diagnostic array dimensions to 1. DR251093.9
POINTS_STRESS_UD = 1 AMJ1F304.50
POINTS_STRESS_VD = 1 AMJ1F304.51
LEN_STRESS_UD = 1 DR251093.12
LEN_STRESS_VD = 1 DR251093.13
POINTS_DU_DT_SATN = 1 AMJ1F304.52
POINTS_DV_DT_SATN = 1 AMJ1F304.53
LEN_DU_DT_SATN = 1 AMJ1F304.54
LEN_DV_DT_SATN = 1 AMJ1F304.55
POINTS_DU_DT_JUMP = 1 AMJ1F304.56
POINTS_DV_DT_JUMP = 1 AMJ1F304.57
LEN_DU_DT_JUMP = 1 AMJ1F304.58
LEN_DV_DT_JUMP = 1 AMJ1F304.59
POINTS_DU_DT_LEE = 1 AMJ1F304.60
POINTS_DV_DT_LEE = 1 AMJ1F304.61
LEN_DU_DT_LEE = 1 AMJ1F304.62
LEN_DV_DT_LEE = 1 AMJ1F304.63
POINTS_TRANS_D = 1 AMJ1F304.64
LEN_TRANS_D = 1 AMJ1F304.65
DR251093.14
IF (SF(0,6)) THEN ! Any diagnostics from section 6 DR251093.15
GWAV_CT1.110
CL Set STASHWORK array to zero at all points GWAV_CT1.111
GWAV_CT1.112
DO I= 1,INT6 GWAV_CT1.113
STASHWORK(I)=0 GWAV_CT1.114
END DO GWAV_CT1.115
GWAV_CT1.116
CL Set levels lists for diagnostics GWAV_CT1.117
GWAV_CT1.118
IF(SF(201,6)) THEN AMJ1F304.66
POINTS_STRESS_UD = LAND_POINTS AMJ1F304.67
LEN_STRESS_UD = U_FIELD AMJ1F304.68
CALL SET_LEVELS_LIST
(P_LEVELS+1,LEN_STLIST,STLIST(1,STINDEX GWAV_CT1.120
& (1,201,6,im_index)),LIST1,STASH_LEVELS,NUM_STASH_LEVELS+1, GRB4F305.148
& ICODE,CMESSAGE) GRB4F305.149
IF( ICODE.GT.0) RETURN GWAV_CT1.123
END IF GWAV_CT1.124
GWAV_CT1.125
IF(SF(202,6)) THEN AMJ1F304.69
POINTS_STRESS_VD = LAND_POINTS AMJ1F304.70
LEN_STRESS_VD = U_FIELD AMJ1F304.71
CALL SET_LEVELS_LIST
(P_LEVELS+1,LEN_STLIST,STLIST(1,STINDEX GWAV_CT1.127
& (1,202,6,im_index)),LIST2,STASH_LEVELS,NUM_STASH_LEVELS+1, GRB4F305.150
& ICODE,CMESSAGE) GRB4F305.151
IF( ICODE.GT.0) RETURN GWAV_CT1.130
END IF GWAV_CT1.131
GWAV_CT1.132
IF(SF(207,6)) THEN AMJ1F304.72
POINTS_DU_DT_SATN = LAND_POINTS AMJ1F304.73
LEN_DU_DT_SATN = U_FIELD AMJ1F304.74
CALL SET_LEVELS_LIST
(P_LEVELS,LEN_STLIST,STLIST(1,STINDEX AMJ1F304.75
& (1,207,6,im_index)),LIST3,STASH_LEVELS,NUM_STASH_LEVELS+1, GRB4F305.152
& ICODE,CMESSAGE) GRB4F305.153
IF( ICODE.GT.0) RETURN AMJ1F304.78
END IF AMJ1F304.79
AMJ1F304.80
IF(SF(208,6)) THEN AMJ1F304.81
POINTS_DV_DT_SATN = LAND_POINTS AMJ1F304.82
LEN_DV_DT_SATN = U_FIELD AMJ1F304.83
CALL SET_LEVELS_LIST
(P_LEVELS,LEN_STLIST,STLIST(1,STINDEX AMJ1F304.84
& (1,208,6,im_index)),LIST4,STASH_LEVELS,NUM_STASH_LEVELS+1, GRB4F305.154
& ICODE,CMESSAGE) GRB4F305.155
IF( ICODE.GT.0) RETURN AMJ1F304.87
END IF AMJ1F304.88
AMJ1F304.89
IF(SF(209,6)) THEN AMJ1F304.90
POINTS_DU_DT_JUMP = LAND_POINTS AMJ1F304.91
LEN_DU_DT_JUMP = U_FIELD AMJ1F304.92
CALL SET_LEVELS_LIST
(P_LEVELS,LEN_STLIST,STLIST(1,STINDEX AMJ1F304.93
& (1,209,6,im_index)),LIST5,STASH_LEVELS,NUM_STASH_LEVELS+1, GRB4F305.156
& ICODE,CMESSAGE) GRB4F305.157
IF( ICODE.GT.0) RETURN AMJ1F304.96
END IF AMJ1F304.97
AMJ1F304.98
IF(SF(210,6)) THEN AMJ1F304.99
POINTS_DV_DT_JUMP = LAND_POINTS AMJ1F304.100
LEN_DV_DT_JUMP = U_FIELD AMJ1F304.101
CALL SET_LEVELS_LIST
(P_LEVELS,LEN_STLIST,STLIST(1,STINDEX AMJ1F304.102
& (1,210,6,im_index)),LIST6,STASH_LEVELS,NUM_STASH_LEVELS+1, GRB4F305.158
& ICODE,CMESSAGE) GRB4F305.159
IF( ICODE.GT.0) RETURN AMJ1F304.105
END IF AMJ1F304.106
AMJ1F304.107
IF(SF(211,6)) THEN AMJ1F304.108
POINTS_DU_DT_LEE = LAND_POINTS AMJ1F304.109
LEN_DU_DT_LEE = U_FIELD AMJ1F304.110
CALL SET_LEVELS_LIST
(P_LEVELS,LEN_STLIST,STLIST(1,STINDEX AMJ1F304.111
& (1,211,6,im_index)),LIST7,STASH_LEVELS,NUM_STASH_LEVELS+1, GRB4F305.160
& ICODE,CMESSAGE) GRB4F305.161
IF( ICODE.GT.0) RETURN AMJ1F304.114
END IF AMJ1F304.115
AMJ1F304.116
IF(SF(212,6)) THEN AMJ1F304.117
POINTS_DV_DT_LEE = LAND_POINTS AMJ1F304.118
LEN_DV_DT_LEE = U_FIELD AMJ1F304.119
CALL SET_LEVELS_LIST
(P_LEVELS,LEN_STLIST,STLIST(1,STINDEX AMJ1F304.120
& (1,212,6,im_index)),LIST8,STASH_LEVELS,NUM_STASH_LEVELS+1, GRB4F305.162
& ICODE,CMESSAGE) GRB4F305.163
IF( ICODE.GT.0) RETURN AMJ1F304.123
END IF AMJ1F304.124
AMJ1F304.125
IF(SF(213,6)) THEN AMJ1F304.126
POINTS_TRANS_D = LAND_POINTS AMJ1F304.127
LEN_TRANS_D = U_FIELD AMJ1F304.128
END IF AMJ1F304.129
AMJ1F304.130
AMJ1F304.131
ENDIF ! Any Diagnostics AMJ1F304.132
GWAV_CT1.134
CL 6.2 Call G_WAVE to add and calculate gravity wave drag increments GWAV_CT1.135
GWAV_CT1.136
IF(LTIMER) THEN GWAV_CT1.137
CALL TIMER
('GWAVE ',3) GWAV_CT1.138
END IF GWAV_CT1.139
GWAV_CT1.140
*IF DEF,MPP APB1F402.2
CALL SWAPBOUNDS
(D1(JU(1)),ROW_LENGTH,tot_U_ROWS, APB1F402.3
& EW_Halo,NS_Halo,P_LEVELS) APB1F402.4
CALL SWAPBOUNDS
(D1(JV(1)),ROW_LENGTH,tot_U_ROWS, APB1F402.5
& EW_Halo,NS_Halo,P_LEVELS) APB1F402.6
*ENDIF APB1F402.7
CALL GWAV_INTCTL
( AMJ1F304.133
C Primary data GWAV_CT1.142
& D1(JPSTAR+JS),D1(JP_EXNER(1)+JS),D1(JTHETA(1)+JS), GWAV_CT1.143
& D1(JQ(1)+JS),D1(JU(1)+JS-ROW_LENGTH), AMJ1F304.134
& D1(JV(1)+JS-ROW_LENGTH), AMJ1F304.135
C Size and control variables GWAV_CT1.145
& P_FIELD,U_FIELD,ROWS,ROW_LENGTH, GWAV_CT1.146
& START_LEVEL_GWDRAG,P_LEVELS,Q_LEVELS, ADR1F305.82
*CALL ARGFLDPT
APBEF401.18
C Other data GWAV_CT1.148
& A_LEVDEPC(JAK),A_LEVDEPC(JBK), GWAV_CT1.149
& AKH,BKH,A_LEVDEPC(JDELTA_AK), GWAV_CT1.150
& A_LEVDEPC(JDELTA_BK),D1(JOROG_SD+JSL), CW120293.9
& D1(JOROG_GRAD_XX+JSL),D1(JOROG_GRAD_XY+JSL), AMJ1F304.137
& D1(JOROG_GRAD_YY+JSL), AMJ1F304.138
& RELATIVE_LAND_LIST,LAND_POINTS,SECS_PER_STEPim(atmos_im), ADR1F305.83
& KAY_GWAVE,KAY_LEE_GWAVE ASW1F403.19
C Diagnostics DR251093.28
& ,STASHWORK(SI(201,6,im_index)),LEN_STRESS_UD,SF(201,6) GRB4F305.164
& ,LIST1,POINTS_STRESS_UD AMJ1F304.140
& ,STASHWORK(SI(202,6,im_index)),LEN_STRESS_VD,SF(202,6) GRB4F305.165
& ,LIST2,POINTS_STRESS_VD AMJ1F304.141
& ,STASHWORK(SI(207,6,im_index)),LEN_DU_DT_SATN,SF(207,6) GRB4F305.166
& ,LIST3,POINTS_DU_DT_SATN AMJ1F304.143
& ,STASHWORK(SI(208,6,im_index)),LEN_DV_DT_SATN,SF(208,6) GRB4F305.167
& ,LIST4,POINTS_DV_DT_SATN AMJ1F304.145
& ,STASHWORK(SI(209,6,im_index)),LEN_DU_DT_JUMP,SF(209,6) GRB4F305.168
& ,LIST5,POINTS_DU_DT_JUMP AMJ1F304.147
& ,STASHWORK(SI(210,6,im_index)),LEN_DV_DT_JUMP,SF(210,6) GRB4F305.169
& ,LIST6,POINTS_DV_DT_JUMP AMJ1F304.149
& ,STASHWORK(SI(211,6,im_index)),LEN_DU_DT_LEE ,SF(211,6) GRB4F305.170
& ,LIST7,POINTS_DU_DT_LEE AMJ1F304.151
& ,STASHWORK(SI(212,6,im_index)),LEN_DV_DT_LEE ,SF(212,6) GRB4F305.171
& ,LIST8,POINTS_DV_DT_LEE AMJ1F304.153
& ,STASHWORK(SI(213,6,im_index)),LEN_TRANS_D ,SF(213,6) GRB4F305.172
& ,POINTS_TRANS_D AMJ1F304.155
& ,ICODE GSS1F304.52
C Logical switches GSS1F304.53
& ,LFROUDE,LGWLINP) GSS1F304.54
GWAV_CT1.163
IF(LTIMER) THEN GWAV_CT1.164
CALL TIMER
('GWAVE ',4) GWAV_CT1.165
END IF GWAV_CT1.166
GWAV_CT1.167
IF(ICODE.GT.0) THEN GWAV_CT1.168
CMESSAGE='GWAV_CTL:Error in G_WAVE' GWAV_CT1.169
RETURN GWAV_CT1.170
END IF GWAV_CT1.171
GWAV_CT1.172
IF (SF(0,6)) THEN DR251093.33
GWAV_CT1.174
Cl 6.3 Diagnostics processing GWAV_CT1.175
CL Extend orographic standard deviation to full field. GWAV_CT1.176
GWAV_CT1.177
IF (SF(203,6)) THEN ! Orographic Standard Deviation DR251093.34
CALL FROM_LAND_POINTS
(STASHWORK(SI(203,6,im_index)) GRB4F305.173
& ,D1(JOROG_SD),D1(JLAND), @DYALLOC.1049
& P_FIELD,LAND_FIELD) CW140293.4
END IF DR251093.35
CW140293.6
CL Extend orographic gradients xx,xy,yy CW140293.7
CW140293.8
IF (SF(204,6)) THEN ! Orographic gradient XX DR251093.36
CALL FROM_LAND_POINTS
(STASHWORK(SI(204,6,im_index)) GRB4F305.174
& ,D1(JOROG_GRAD_XX),D1(JLAND), @DYALLOC.1050
& P_FIELD,LAND_FIELD) CW140293.12
END IF DR251093.37
CW140293.14
IF (SF(205,6)) THEN ! Orographic gradient XY DR251093.38
CALL FROM_LAND_POINTS
(STASHWORK(SI(205,6,im_index)) GRB4F305.175
& ,D1(JOROG_GRAD_XY),D1(JLAND), @DYALLOC.1051
& P_FIELD,LAND_FIELD) CW140293.18
END IF DR251093.39
CW140293.20
IF (SF(206,6)) THEN ! Orographic gradient YY DR251093.40
CALL FROM_LAND_POINTS
(STASHWORK(SI(206,6,im_index)) GRB4F305.176
& ,D1(JOROG_GRAD_YY),D1(JLAND), @DYALLOC.1052
& P_FIELD,LAND_FIELD) GWAV_CT1.181
END IF DR251093.41
GWAV_CT1.183
CL Extend diagnostics to full area for STASH processing GWAV_CT1.184
GWAV_CT1.185
CALL EXTDIAG
(STASHWORK,SI(1,6,im_index),SF(1,6),201,202, GRB4F305.177
& INT6,ROW_LENGTH, AMJ1F304.156
& STLIST,LEN_STLIST,STINDEX(1,1,6,im_index),2,STASH_LEVELS, GRB4F305.178
& NUM_STASH_LEVELS+1, STASH_PSEUDO_LEVELS, AMJ1F304.158
& NUM_STASH_PSEUDO, GPB1F403.1501
& im_ident,6, GPB1F403.1502
*CALL ARGPPX
GPB1F403.1503
& ICODE, CMESSAGE) GPB1F403.1504
AMJ1F304.160
IF(ICODE.GT.0) RETURN AMJ1F304.161
AMJ1F304.162
CALL EXTDIAG
(STASHWORK,SI(1,6,im_index),SF(1,6),207,213, GRB4F305.179
& INT6,ROW_LENGTH, GWAV_CT1.187
& STLIST,LEN_STLIST,STINDEX(1,1,6,im_index),2,STASH_LEVELS, GRB4F305.180
& NUM_STASH_LEVELS+1, STASH_PSEUDO_LEVELS, GWAV_CT1.189
& NUM_STASH_PSEUDO, GPB1F403.1505
& im_ident,6, GPB1F403.1506
*CALL ARGPPX
GPB1F403.1507
& ICODE, CMESSAGE) GPB1F403.1508
GWAV_CT1.191
IF(ICODE.GT.0) RETURN GWAV_CT1.192
GWAV_CT1.193
CL Call STASH to process output GWAV_CT1.196
GWAV_CT1.197
IF(LTIMER) THEN GWAV_CT1.198
CALL TIMER
('STASH ',3) GWAV_CT1.199
END IF GWAV_CT1.200
GWAV_CT1.201
CALL STASH
(a_sm,a_im,6,STASHWORK, GKR0F305.929
*CALL ARGSIZE
@DYALLOC.1054
*CALL ARGD1
@DYALLOC.1055
*CALL ARGDUMA
@DYALLOC.1056
*CALL ARGDUMO
@DYALLOC.1057
*CALL ARGDUMW
GKR1F401.205
*CALL ARGSTS
@DYALLOC.1058
*CALL ARGPPX
GKR0F305.930
& ICODE,CMESSAGE) @DYALLOC.1062
GWAV_CT1.203
IF(LTIMER) THEN GWAV_CT1.204
CALL TIMER
('STASH ',4) GWAV_CT1.205
END IF GWAV_CT1.206
GWAV_CT1.207
IF(ICODE.GT.0) RETURN GWAV_CT1.208
GWAV_CT1.209
ENDIF ! If any diagnostics this timestep DR251093.42
GWAV_CT1.210
C ----------------------------------------------------- GWAV_CT1.211
RETURN GWAV_CT1.212
END GWAV_CT1.213
*ENDIF GWAV_CT1.214