*IDENT gwdtorq2 */ */ -- These changes are from version 4.3 -- */ */ GWD Torque Diagnostic. */ That is, the difference between the surface stress and that at */ the top of the model times cosine(latitude). */ */ 27/1/99 : corrected for use with 4.5 */ ===================================================================== */ Mods to deck < GWAV_CT1 > follow .... */ *DECLARE GWAV_CT1 *I AMJ1F304.31 & ,POINTS_TORQUE_UD ! ) No of land points in diagnostic & ,POINTS_TORQUE_VD ! ) arrays for GW torque - u and v *I AMJ1F304.39 & ,LEN_TORQUE_UD ! ) Dimensions of arrays in STASHWORK & ,LEN_TORQUE_VD ! ) for GW torque - u and v *I AMJ1F304.63 POINTS_TORQUE_UD = 1 POINTS_TORQUE_VD = 1 LEN_TORQUE_UD = 1 LEN_TORQUE_VD = 1 *I AMJ1F304.130 IF(SF(285,6)) THEN POINTS_TORQUE_UD = LAND_POINTS LEN_TORQUE_UD = U_FIELD END IF *I AMJ1F304.131 IF(SF(286,6)) THEN POINTS_TORQUE_VD = LAND_POINTS LEN_TORQUE_VD = U_FIELD END IF *I AMJ1F304.155 & ,STASHWORK(SI(285,6,im_index)),LEN_TORQUE_UD ,SF(285,6) & ,POINTS_TORQUE_UD & ,STASHWORK(SI(286,6,im_index)),LEN_TORQUE_VD ,SF(286,6) & ,POINTS_TORQUE_VD *I GRB4F305.179 & INT6,ROW_LENGTH, & STLIST,LEN_STLIST,STINDEX(1,1,6,im_index),2,STASH_LEVELS, & NUM_STASH_LEVELS+1, STASH_PSEUDO_LEVELS, & NUM_STASH_PSEUDO, & im_ident,6, *CALL ARGPPX & ICODE, CMESSAGE) IF(ICODE.GT.0) RETURN CALL EXTDIAG(STASHWORK,SI(1,6,im_index),SF(1,6),285,286, */ */ ===================================================================== */ Mods to deck < GWVICT1A > follow .... */ *DECLARE GWVICT1A *I GWVICT1A.23 & TORQUE_UD,LEN_TORQUE_UD,TORQUE_UD_ON,U_LIST1,POINTS_TORQUE_UD, & TORQUE_VD,LEN_TORQUE_VD,TORQUE_VD_ON,V_LIST1,POINTS_TORQUE_VD, *I GWVICT1A.78 &, LEN_TORQUE_UD !IN ) Dimension of diagnostic arrays &, LEN_TORQUE_VD !IN ) for GW TORQUE - u and v &, POINTS_TORQUE_UD !IN ) No of land points in diagnostic &, POINTS_TORQUE_VD !IN ) arrays for GW TORQUE - u and v *I GWVICT1A.118 &,TORQUE_UD(LEN_TORQUE_UD) !U TORQUE DIAGNOSTIC &,TORQUE_VD(LEN_TORQUE_VD) !V TORQUE DIAGNOSTIC *I GWVICT1A.140 &,TORQUE_UD_ON !U TORQUE diagnostic switch &,TORQUE_VD_ON !V TORQUE diagnostic switch */ */ ===================================================================== */ Mods to deck < GWVICT3A > follow .... */ *DECLARE GWVICT3A *D GWVICT3A.23,GWVICT3A.24 & TRANS_D,LEN_TRANS_D,TRANS_D_ON,POINTS_TRANS_D, & TORQUE_UD,LEN_TORQUE_UD,TORQUE_UD_ON,POINTS_TORQUE_UD, & TORQUE_VD,LEN_TORQUE_VD,TORQUE_VD_ON,POINTS_TORQUE_VD, & IRET,LFROUDE,LGWLINP) *I GWVICT3A.78 &, LEN_TORQUE_UD !IN ) Dimension of diagnostic arrays &, LEN_TORQUE_VD !IN ) for GW TORQUE - u and v &, POINTS_TORQUE_UD !IN ) No of land points in diagnostic &, POINTS_TORQUE_VD !IN ) arrays for GW TORQUE - u and v *I GWVICT3A.118 &,TORQUE_UD(LEN_TORQUE_UD) !U TORQUE DIAGNOSTIC &,TORQUE_VD(LEN_TORQUE_VD) !V TORQUE DIAGNOSTIC *I GWVICT3A.140 &,TORQUE_UD_ON !U TORQUE diagnostic switch &,TORQUE_VD_ON !V TORQUE diagnostic switch *I GWVICT3A.175 & TORQUE_UD,LEN_TORQUE_UD,TORQUE_UD_ON,POINTS_TORQUE_UD, & TORQUE_VD,LEN_TORQUE_VD,TORQUE_VD_ON,POINTS_TORQUE_VD, */ */ ===================================================================== */ Mods to deck < GWAVE3A > follow .... */ *DECLARE GWAVE3A *I GWAVE3A.22 & TORQUE_UD,LEN_TORQUE_UD,TORQUE_UD_ON,POINTS_TORQUE_UD, & TORQUE_VD,LEN_TORQUE_VD,TORQUE_VD_ON,POINTS_TORQUE_VD, *I GWAVE3A.83 *, LEN_TORQUE_UD !IN ) Dimension of diagnostic arrays *, LEN_TORQUE_VD !IN ) for GW torque - u and v *, POINTS_TORQUE_UD !IN ) No of land points in diagnostic *, POINTS_TORQUE_VD !IN ) arrays for GW torque - u and v *I GWAVE3A.122 *,TORQUE_UD(LEN_TORQUE_UD) !U TORQUE DIAGNOSTIC *,TORQUE_VD(LEN_TORQUE_VD) !V TORQUE DIAGNOSTIC *I GWAVE3A.144 *,TORQUE_UD_ON !U torque diagnostic switch *,TORQUE_VD_ON !V torque diagnostic switch *I GWAVE3A.192 *I GWAVE3A.201 *,TORQUE_UD_LAND(POINTS_TORQUE_UD) !U TORQUE DIAGNOSTIC *,TORQUE_VD_LAND(POINTS_TORQUE_VD) !V TORQUE DIAGNOSTIC *I GWAVE3A.208 *CALL C_PI *I GWAVE3A.223 INTEGER ROW ! FOR GWD_TORQUE AND * ,GLOBAL_ROWS_PM1 ! CALCULATING COS(LATITUDE) *I GWAVE3A.236 GLOBAL_ROWS_PM1 = GLOBAL_P_FIELD/GLOBAL_ROW_LENGTH -1 *I GWAVE3A.325 & TORQUE_UD_LAND ,POINTS_TORQUE_UD ,TORQUE_UD_ON, & TORQUE_VD_LAND ,POINTS_TORQUE_VD ,TORQUE_VD_ON, *I GWAVE3A.391 IF ( TORQUE_UD_ON .OR. TORQUE_VD_ON ) THEN *IF DEF,MPP IF (at_top_of_lpg) THEN DO I=1,LAND_POINTS ROW=(LAND_INDEX(I)-1)/ROW_LENGTH + FIRST_GLOBAL_ROW_NUMBER+1 WORK(LAND_INDEX(I),1)= SIN(ROW*PI/GLOBAL_ROWS_PM1) END DO ELSE DO I=1,LAND_POINTS ROW=(LAND_INDEX(I)-1)/ROW_LENGTH + FIRST_GLOBAL_ROW_NUMBER-1 WORK(LAND_INDEX(I),1)= SIN(ROW*PI/GLOBAL_ROWS_PM1) END DO ENDIF *ELSE DO I=1,LAND_POINTS ROW=(LAND_INDEX(I)-1)/ROW_LENGTH + 1 WORK(LAND_INDEX(I),1)= SIN(ROW*PI*P_POINTS/ROW_LENGTH) END DO *ENDIF IF(TORQUE_UD_ON ) THEN DO I=1,LAND_POINTS WORK(LAND_INDEX(I),2) = TORQUE_UD_LAND(I) * * WORK(LAND_INDEX(I),1) END DO CALL P_TO_UV(WORK(1,2),TORQUE_UD(START_U1+1), * P_POINTS,U_POINTS,ROW_LENGTH,ROWS_P) ENDIF IF(TORQUE_VD_ON ) THEN DO I=1,LAND_POINTS WORK(LAND_INDEX(I),2)= TORQUE_VD_LAND(I) * * WORK(LAND_INDEX(I),1) END DO CALL P_TO_UV(WORK(1,2),TORQUE_VD(START_U1+1), * P_POINTS,U_POINTS,ROW_LENGTH,ROWS_P) ENDIF ENDIF */ */ ===================================================================== */ Mods to deck < GWVERT3A > follow .... */ *DECLARE GWVERT3A *I GWVERT3A.18 & ,TORQUE_UD,POINTS_TORQUE_UD,TORQUE_UD_ON & ,TORQUE_VD,POINTS_TORQUE_VD,TORQUE_VD_ON *I GWVERT3A.66 *,POINTS_TORQUE_UD !IN ) No of land points in diagnostic *,POINTS_TORQUE_VD !IN ) arrays for GW tourque - u and v *I GWVERT3A.107 *,TORQUE_UD(POINTS_STRESS_UD) !U TORQUE DIAG *,TORQUE_VD(POINTS_STRESS_VD) !V TORQUE DIAG *I GWVERT3A.118 *,TORQUE_UD_ON !U torque diagnostic switch *,TORQUE_VD_ON !V torque diagnostic switch *I GWVERT3A.289 ! Initialise Torque diagnostic if its used. !-------------------------------------------------------------------- IF ( TORQUE_UD_ON ) THEN DO I=1,POINTS TORQUE_UD(I) = 0. ENDDO ENDIF IF ( TORQUE_VD_ON ) THEN DO I=1,POINTS TORQUE_VD(I) = 0. ENDDO ENDIF !-------------------------------------------------------------------- *I GWVERT3A.451 4 ,TORQUE_UD,POINTS_TORQUE_UD,TORQUE_UD_ON 5 ,TORQUE_VD,POINTS_TORQUE_VD,TORQUE_VD_ON *I GWVERT3A.487 4 ,TORQUE_UD,POINTS_TORQUE_UD,TORQUE_UD_ON 5 ,TORQUE_VD,POINTS_TORQUE_VD,TORQUE_VD_ON */ */ ===================================================================== */ Mods to deck < GWSATN3A > follow .... */ *DECLARE GWSATN3A *I GWSATN3A.11 4 ,TORQUE_UD,POINTS_TORQUE_UD,TORQUE_UD_ON 5 ,TORQUE_VD,POINTS_TORQUE_VD,TORQUE_VD_ON *I GWSATN3A.61 *,POINTS_TORQUE_UD !IN ) No of land points in diagnostic *,POINTS_TORQUE_VD !IN ) arrays for GW TORQUE - u and v *I GWSATN3A.70 *,TORQUE_UD_ON !IN U TORQUE diagnostic switch *,TORQUE_VD_ON !IN V TORQUE diagnostic switch *I GWSATN3A.99 *,TORQUE_UD(POINTS_TORQUE_UD) !U-TORQUE DIAGNOSTIC *,TORQUE_VD(POINTS_TORQUE_VD) !V-TORQUE DIAGNOSTIC *I GWSATN3A.257 IF( TORQUE_UD_ON ) THEN DO I=1,POINTS TORQUE_UD(I) = S_X_STRESS(I) END DO ENDIF IF( TORQUE_VD_ON ) THEN DO I=1,POINTS TORQUE_VD(I) = S_Y_STRESS(I) END DO ENDIF *I GWSATN3A.453 END DO ENDIF ! ! Torque diagnostic. This is the difference between the surface ! stress and that remaining at the top of the model which is ! deemed to leak through the model lid. Here we remove that ! remaining at the model lid. ! IF( TORQUE_UD_ON ) THEN DO I=1,POINTS TORQUE_UD(I) = TORQUE_UD(I) - X_STRESS(I,KU) END DO ENDIF IF( TORQUE_VD_ON ) THEN DO I=1,POINTS TORQUE_VD(I) = TORQUE_VD(I) - Y_STRESS(I,KU) */ */ ===================================================================== */ Mods to deck < GWLEE3A > follow .... */ *DECLARE GWLEE3A *I GWLEE3A.11 4 ,TORQUE_UD,POINTS_TORQUE_UD,TORQUE_UD_ON 5 ,TORQUE_VD,POINTS_TORQUE_VD,TORQUE_VD_ON *I GWLEE3A.47 *,POINTS_TORQUE_UD !IN ) No of land points in diagnostic *,POINTS_TORQUE_VD !IN ) arrays for GW TORQUE - u and v *I GWLEE3A.56 *,TORQUE_UD_ON !IN U TORQUE DIAGNOSTIC SWITCH *,TORQUE_VD_ON !IN V TORQUE DIAGNOSTIC SWITCH *I GWLEE3A.80 *,TORQUE_UD(POINTS_TORQUE_UD) !U TORQUE DIAGNOSTIC *,TORQUE_VD(POINTS_TORQUE_VD) !V TORQUE DIAGNOSTIC *I GWLEE3A.226 ENDIF END DO ENDIF IF( TORQUE_UD_ON ) THEN DO I=1,POINTS IF( L_LEE(I) ) THEN TORQUE_UD(I) = TORQUE_UD(I) + X_LEE_STRESS(I) ENDIF END DO ENDIF IF( TORQUE_VD_ON ) THEN DO I=1,POINTS IF( L_LEE(I) ) THEN TORQUE_VD(I) = TORQUE_VD(I) + Y_LEE_STRESS(I)