File indexing completed on 2018-03-02 18:42:10 UTC
view on githubraw file Latest commit add29e06 on 2018-01-31 20:35:05 UTC
9c05b3873e Alis*0001 #include "MOM_COMMON_OPTIONS.h"
aea29c8517 Alis*0002
71207ba845 Alis*0003
0004
0005
0006
aea29c8517 Alis*0007 SUBROUTINE MOM_V_SIDEDRAG(
fafb134cbe Jean*0008 I bi, bj, k,
aea29c8517 Alis*0009 I vFld, del2v, hFacZ,
998681995e Bayl*0010 I viscAh_Z,viscA4_Z,
fafb134cbe Jean*0011 I harmonic, biharmonic, useVariableViscosity,
aea29c8517 Alis*0012 O vDragTerms,
fafb134cbe Jean*0013 I myThid )
aea29c8517 Alis*0014
71207ba845 Alis*0015
0016
0017
0018
0019
0020
0021
0022 IMPLICIT NONE
aea29c8517 Alis*0023 #include "SIZE.h"
0024 #include "EEPARAMS.h"
0025 #include "PARAMS.h"
0026 #include "GRID.h"
b6f977b498 Jean*0027 #include "SURFACE.h"
aea29c8517 Alis*0028
71207ba845 Alis*0029
0030
0031
fafb134cbe Jean*0032
71207ba845 Alis*0033
0034
fafb134cbe Jean*0035
0036 INTEGER bi, bj, k
aea29c8517 Alis*0037 _RL vFld(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
0038 _RL del2v(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
0039 _RS hFacZ(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
998681995e Bayl*0040 _RL viscAh_Z(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
0041 _RL viscA4_Z(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
fafb134cbe Jean*0042 LOGICAL harmonic, biharmonic, useVariableViscosity
aea29c8517 Alis*0043 INTEGER myThid
0044
71207ba845 Alis*0045
0046
0047 _RL vDragTerms(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
0048
0049
0050
0051
0052
fafb134cbe Jean*0053 INTEGER i, j
0054 _RL hFacZClosedE, hFacZClosedW
dda590ff3b Jean*0055 _RL Ahtmp,A4tmp
fafb134cbe Jean*0056
1c7feb6c12 Jean*0057
0058 IF ( sideDragFactor.LE.0. ) THEN
0059
0060
0061
fafb134cbe Jean*0062 DO j=2-OLy,sNy+OLy-1
0063 DO i=2-OLx,sNx+OLx-1
b6f977b498 Jean*0064 #ifdef NONLIN_FRSURF
fafb134cbe Jean*0065 hFacZClosedW = h0FacS(i,j,k,bi,bj) - hFacZ(i,j)
0066 hFacZClosedE = h0FacS(i,j,k,bi,bj) - hFacZ(i+1,j)
b6f977b498 Jean*0067 #else
dda590ff3b Jean*0068 hFacZClosedW = _hFacS(i,j,k,bi,bj) - hFacZ(i,j)
0069 hFacZClosedE = _hFacS(i,j,k,bi,bj) - hFacZ(i+1,j)
b6f977b498 Jean*0070 #endif
fafb134cbe Jean*0071 Ahtmp=MIN(viscAh+viscAhGrid*rAs(i,j,bi,bj)/deltaTmom,
dda590ff3b Jean*0072 & viscAhMax)
fafb134cbe Jean*0073 A4tmp=MIN(viscA4+viscA4Grid*(rAs(i,j,bi,bj)**2)/deltaTmom,
dda590ff3b Jean*0074 & viscA4Max)
0075 IF (viscA4GridMax.GT.0.) THEN
fafb134cbe Jean*0076 A4tmp=MIN(A4tmp,viscA4GridMax*(rAs(i,j,bi,bj)**2)/deltaTmom)
dda590ff3b Jean*0077 ENDIF
fafb134cbe Jean*0078 A4tmp=MAX(A4tmp,viscA4GridMin*(rAs(i,j,bi,bj)**2)/deltaTmom)
dda590ff3b Jean*0079 vDragTerms(i,j) =
0080 & -_recip_hFacS(i,j,k,bi,bj)
0081 & *recip_drF(k)*recip_rAs(i,j,bi,bj)
0082 & *( hFacZClosedW*_dyU( i ,j,bi,bj)
0083 & *_recip_dxV( i ,j,bi,bj)
0084 & +hFacZClosedE*_dyU(i+1,j,bi,bj)
0085 & *_recip_dxV(i+1,j,bi,bj) )
0086 & *drF(k)*2.*(
1c7feb6c12 Jean*0087 & Ahtmp*vFld(i,j)*cosFacV(j,bi,bj)
dda590ff3b Jean*0088 #ifdef COSINEMETH_III
1c7feb6c12 Jean*0089 & -viscA4*del2v(i,j)*sqcosFacV(j,bi,bj)
dda590ff3b Jean*0090 #else
1c7feb6c12 Jean*0091 & -A4tmp*del2v(i,j)*cosFacV(j,bi,bj)
dda590ff3b Jean*0092 #endif
0093 & )
0094 ENDDO
0095 ENDDO
0096
1c7feb6c12 Jean*0097 ELSE
0098
0099
dda590ff3b Jean*0100
fafb134cbe Jean*0101 DO j=2-OLy,sNy+OLy-1
0102 DO i=2-OLx,sNx+OLx-1
b6f977b498 Jean*0103 #ifdef NONLIN_FRSURF
fafb134cbe Jean*0104 hFacZClosedW = h0FacS(i,j,k,bi,bj) - hFacZ(i,j)
0105 hFacZClosedE = h0FacS(i,j,k,bi,bj) - hFacZ(i+1,j)
b6f977b498 Jean*0106 #else
fafb134cbe Jean*0107 hFacZClosedW = _hFacS(i,j,k,bi,bj) - hFacZ(i,j)
0108 hFacZClosedE = _hFacS(i,j,k,bi,bj) - hFacZ(i+1,j)
b6f977b498 Jean*0109 #endif
aea29c8517 Alis*0110 vDragTerms(i,j) =
0111 & -_recip_hFacS(i,j,k,bi,bj)
0112 & *recip_drF(k)*recip_rAs(i,j,bi,bj)
998681995e Bayl*0113 & *( hFacZClosedW*_dyU( i ,j,bi,bj)*_recip_dxV( i ,j,bi,bj)
1c7feb6c12 Jean*0114 & *( viscAh_Z(i ,j)*vFld(i,j)*cosFacV(j,bi,bj)
aea29c8517 Alis*0115 #ifdef COSINEMETH_III
1c7feb6c12 Jean*0116 & -viscA4_Z(i ,j)*del2v(i,j)*sqcosFacV(j,bi,bj) )
0117 #else
0118 & -viscA4_Z(i ,j)*del2v(i,j)*cosFacV(j,bi,bj) )
998681995e Bayl*0119 #endif
1c7feb6c12 Jean*0120 & +hFacZClosedE*_dyU(i+1,j,bi,bj)*_recip_dxV(i+1,j,bi,bj)
0121 & *( viscAh_Z(i+1,j)*vFld(i,j)*cosFacV(j,bi,bj)
998681995e Bayl*0122 #ifdef COSINEMETH_III
1c7feb6c12 Jean*0123 & -viscA4_Z(i+1,j)*del2v(i,j)*sqcosFacV(j,bi,bj) )
aea29c8517 Alis*0124 #else
1c7feb6c12 Jean*0125 & -viscA4_Z(i+1,j)*del2v(i,j)*cosFacV(j,bi,bj) )
998681995e Bayl*0126 #endif
1c7feb6c12 Jean*0127 & )*drF(k)*sideDragFactor
aea29c8517 Alis*0128 ENDDO
0129 ENDDO
0130
1c7feb6c12 Jean*0131
0132 ENDIF
dda590ff3b Jean*0133
4ee0a32a74 Jean*0134 #ifdef ALLOW_DIAGNOSTICS
0135 IF (useDiagnostics) THEN
0136 CALL DIAGNOSTICS_FILL(vDragTerms,'VSidDrag',k,1,2,bi,bj,myThid)
0137 ENDIF
0138 #endif /* ALLOW_DIAGNOSTICS */
0139
aea29c8517 Alis*0140 RETURN
0141 END