File indexing completed on 2022-11-29 06:09:29 UTC
view on githubraw file Latest commit 5b172de0 on 2022-11-28 18:04:11 UTC
955d21dfcb Jean*0001 #include "GMREDI_OPTIONS.h"
0002
0003
0004
0005
0006 SUBROUTINE GMREDI_RESIDUAL_FLOW(
0007 U uFld, vFld, wFld,
0008 I bi, bj, myIter, myThid )
0009
0010
0011
0012
0013 IMPLICIT NONE
0014
0015
0016 #include "SIZE.h"
0017 #include "EEPARAMS.h"
0018 #include "PARAMS.h"
0019 #include "GRID.h"
0020 #include "GMREDI.h"
0021 #ifdef ALLOW_EDDYPSI
0022 # include "DYNVARS.h"
5a207a41d5 Jean*0023 # include "FFIELDS.h"
955d21dfcb Jean*0024 #endif
0025
0026
0027
0028
0029
0030
0031
0032
0033
0034 INTEGER bi, bj, myIter, myThid
0035 _RL uFld (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr)
0036 _RL vFld (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr)
0037 _RL wFld (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr)
0038
0039 #ifdef ALLOW_GMREDI
0040 #ifdef GM_BOLUS_ADVEC
0041
0042
0043
0044
0045 INTEGER i, j, k
0046 INTEGER kp1
5b172de0d2 Jean*0047 _RL maskp1, flipSign4LHCoord
955d21dfcb Jean*0048 _RL delPsi
0049 #ifdef ALLOW_EDDYPSI
0050 _RL ustar, vstar
0051 #endif
0052
0053
5b172de0d2 Jean*0054
0055
0056 flipSign4LHCoord = -gravitySign
0057
955d21dfcb Jean*0058 IF ( GM_AdvForm .AND. .NOT.GM_AdvSeparate
0059 & .AND. .NOT.GM_InMomAsStress ) THEN
0060
0061 DO k=1,Nr
0062 kp1 = MIN(k+1,Nr)
0063 maskp1 = 1.
0064 IF (k.GE.Nr) maskp1 = 0.
0065
0066 DO j=1-OLy,sNy+OLy
0067 DO i=1-OLx,sNx+OLx
a67797e4f0 Jean*0068 delPsi = GM_PsiX(i,j,kp1,bi,bj)*deepFacF(kp1)*maskp1
0069 & - GM_PsiX(i,j, k, bi,bj)*deepFacF(k)
955d21dfcb Jean*0070 uFld(i,j,k) = uFld(i,j,k)
0071 & + delPsi*recip_drF(k)*_recip_hFacW(i,j,k,bi,bj)
5b172de0d2 Jean*0072 & *recip_deepFacC(k)*flipSign4LHCoord
955d21dfcb Jean*0073 ENDDO
0074 ENDDO
0075 DO j=1-OLy,sNy+OLy
0076 DO i=1-OLx,sNx+OLx
a67797e4f0 Jean*0077 delPsi = GM_PsiY(i,j,kp1,bi,bj)*deepFacF(kp1)*maskp1
0078 & - GM_PsiY(i,j, k, bi,bj)*deepFacF(k)
955d21dfcb Jean*0079 vFld(i,j,k) = vFld(i,j,k)
0080 & + delPsi*recip_drF(k)*_recip_hFacS(i,j,k,bi,bj)
5b172de0d2 Jean*0081 & *recip_deepFacC(k)*flipSign4LHCoord
955d21dfcb Jean*0082 ENDDO
0083 ENDDO
a67797e4f0 Jean*0084
955d21dfcb Jean*0085 DO j=1-OLy,sNy+OLy-1
0086 DO i=1-OLx,sNx+OLx-1
0087 delPsi = ( dyG(i+1,j,bi,bj)*GM_PsiX(i+1,j,k,bi,bj)
0088 & -dyG( i ,j,bi,bj)*GM_PsiX( i ,j,k,bi,bj)
0089 & +dxG(i,j+1,bi,bj)*GM_PsiY(i,j+1,k,bi,bj)
0090 & -dxG(i, j ,bi,bj)*GM_PsiY(i, j ,k,bi,bj)
5b172de0d2 Jean*0091 & )
0092 wFld(i,j,k) = wFld(i,j,k)
0093 & + delPsi*recip_rA(i,j,bi,bj)
0094 & *recip_deepFacF(k)*flipSign4LHCoord
955d21dfcb Jean*0095 ENDDO
0096 ENDDO
0097
0098 ENDDO
0099
0100 #ifdef ALLOW_EDDYPSI
0101 ELSEIF( GM_AdvForm .AND. .NOT.GM_AdvSeparate
0102 & .AND. GM_InMomAsStress ) THEN
0103
0104
0105 DO k=1,Nr
0106 kp1 = MIN(k+1,Nr)
0107 maskp1 = 1.
0108 IF (k.GE.Nr) maskp1 = 0.
0109
0110 DO j=1-OLy,sNy+OLy
0111 DO i=1-OLx,sNx+OLx
a67797e4f0 Jean*0112 delPsi = GM_PsiX(i,j,kp1,bi,bj)*deepFacF(kp1)*maskp1
0113 & - GM_PsiX(i,j, k, bi,bj)*deepFacF(k)
955d21dfcb Jean*0114 ustar = delPsi*recip_drF(k)*_recip_hFacW(i,j,k,bi,bj)
5b172de0d2 Jean*0115 & *recip_deepFacC(k)*flipSign4LHCoord
5a207a41d5 Jean*0116 uEulerMean(i,j,k,bi,bj) = uVel(i,j,k,bi,bj) - ustar
955d21dfcb Jean*0117 ENDDO
0118 ENDDO
0119 DO j=1-OLy,sNy+OLy
0120 DO i=1-OLx,sNx+OLx
a67797e4f0 Jean*0121 delPsi = GM_PsiY(i,j,kp1,bi,bj)*deepFacF(kp1)*maskp1
0122 & - GM_PsiY(i,j, k, bi,bj)*deepFacF(k)
955d21dfcb Jean*0123 vstar = delPsi*recip_drF(k)*_recip_hFacS(i,j,k,bi,bj)
5b172de0d2 Jean*0124 & *recip_deepFacC(k)*flipSign4LHCoord
5a207a41d5 Jean*0125 vEulerMean(i,j,k,bi,bj) = vVel(i,j,k,bi,bj) - vstar
955d21dfcb Jean*0126 ENDDO
0127 ENDDO
0128
0129 ENDDO
0130
0131 #ifdef ALLOW_DIAGNOSTICS
5a207a41d5 Jean*0132 IF ( useDiagnostics ) THEN
0133 CALL DIAGNOSTICS_FILL(uEulerMean,'U_EulerM',0,Nr,1,bi,bj,myThid)
0134 CALL DIAGNOSTICS_FILL(vEulerMean,'V_EulerM',0,Nr,1,bi,bj,myThid)
0135 ENDIF
955d21dfcb Jean*0136 #endif /* ALLOW_DIAGNOSTICS */
0137 #endif /* ALLOW_EDDYPSI */
0138
0139 ENDIF
0140 #endif /* GM_BOLUS_ADVEC */
0141 #endif /* ALLOW_GMREDI */
0142
0143 RETURN
0144 END