File indexing completed on 2025-06-05 05:08:28 UTC
view on githubraw file Latest commit 6a6c83f9 on 2025-06-04 22:00:11 UTC
6a6c83f9ac Hajo*0001 #include "LONGSTEP_OPTIONS.h"
0002 #ifdef ALLOW_GMREDI
0003 # include "GMREDI_OPTIONS.h"
0004 #endif
0005
0006
0007
0008
0009 SUBROUTINE LONGSTEP_RESIDUAL_FLOW(
0010 U uFld, vFld, wFld,
0011 I bi, bj, myIter, myThid )
0012
0013
0014
0015
0016 IMPLICIT NONE
0017
0018
0019 #include "SIZE.h"
0020 #include "EEPARAMS.h"
0021 #include "PARAMS.h"
0022 #include "GRID.h"
0023 #include "LONGSTEP.h"
0024 #ifdef ALLOW_GMREDI
0025 # include "GMREDI.h"
0026 #endif
0027
0028
0029
0030
0031
0032
0033
0034
0035
0036 INTEGER bi, bj, myIter, myThid
0037 _RL uFld (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr)
0038 _RL vFld (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr)
0039 _RL wFld (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr)
0040
0041 #ifdef ALLOW_GMREDI
0042
0043
0044
0045 INTEGER i, j, k
0046 INTEGER kp1
0047 _RL maskp1, flipSign4LHCoord
0048 _RL delPsi
0049
0050
0051
0052
0053 flipSign4LHCoord = -gravitySign
0054
0055 IF ( GM_AdvForm .AND. .NOT.GM_AdvSeparate
0056 & .AND. .NOT.GM_InMomAsStress ) THEN
0057
0058 DO k=1,Nr
0059 kp1 = MIN(k+1,Nr)
0060 maskp1 = 1.
0061 IF (k.GE.Nr) maskp1 = 0.
0062
0063 DO j=1-OLy,sNy+OLy
0064 DO i=1-OLx,sNx+OLx
0065 delPsi = LS_PsiX(i,j,kp1,bi,bj)*deepFacF(kp1)*maskp1
0066 & - LS_PsiX(i,j, k, bi,bj)*deepFacF(k)
0067 uFld(i,j,k) = uFld(i,j,k)
0068 & + delPsi*recip_drF(k)*_recip_hFacW(i,j,k,bi,bj)
0069 & *recip_deepFacC(k)*flipSign4LHCoord
0070 ENDDO
0071 ENDDO
0072 DO j=1-OLy,sNy+OLy
0073 DO i=1-OLx,sNx+OLx
0074 delPsi = LS_PsiY(i,j,kp1,bi,bj)*deepFacF(kp1)*maskp1
0075 & - LS_PsiY(i,j, k, bi,bj)*deepFacF(k)
0076 vFld(i,j,k) = vFld(i,j,k)
0077 & + delPsi*recip_drF(k)*_recip_hFacS(i,j,k,bi,bj)
0078 & *recip_deepFacC(k)*flipSign4LHCoord
0079 ENDDO
0080 ENDDO
0081
0082 DO j=1-OLy,sNy+OLy-1
0083 DO i=1-OLx,sNx+OLx-1
0084 delPsi = ( dyG(i+1,j,bi,bj)*LS_PsiX(i+1,j,k,bi,bj)
0085 & -dyG( i ,j,bi,bj)*LS_PsiX( i ,j,k,bi,bj)
0086 & +dxG(i,j+1,bi,bj)*LS_PsiY(i,j+1,k,bi,bj)
0087 & -dxG(i, j ,bi,bj)*LS_PsiY(i, j ,k,bi,bj)
0088 & )
0089 wFld(i,j,k) = wFld(i,j,k)
0090 & + delPsi*recip_rA(i,j,bi,bj)
0091 & *recip_deepFacF(k)*flipSign4LHCoord
0092 ENDDO
0093 ENDDO
0094 ENDDO
0095
0096 ENDIF
0097 #endif /* ALLOW_GMREDI */
0098
0099 RETURN
0100 END