File indexing completed on 2018-03-02 18:36:37 UTC
view on githubraw file Latest commit add29e06 on 2018-01-31 20:35:05 UTC
b302538c50 Jean*0001 #include "PACKAGES_CONFIG.h"
6ac14281aa Jean*0002 #include "CPP_OPTIONS.h"
0003
0004
0005
0006
9a4858a22e Jean*0007 SUBROUTINE DIAGS_PHI_HYD(
6ac14281aa Jean*0008 I k, bi, bj, iMin,iMax, jMin,jMax,
0009 I phiHydC,
0010 I myTime, myIter, myThid)
0011
0012
9a4858a22e Jean*0013
0014
6ac14281aa Jean*0015
0016
0017
0018
0019
0020
0021
0022
0023 IMPLICIT NONE
0024
0025 #include "SIZE.h"
0026 #include "EEPARAMS.h"
0027 #include "PARAMS.h"
0028 #include "GRID.h"
0029 #include "SURFACE.h"
0030 #include "DYNVARS.h"
0031
0032
0033
0034
0035
0036
0037
0038
0039
0040
0041 INTEGER k, bi,bj, iMin,iMax, jMin,jMax
0042 _RL phiHydC(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
0043 _RL myTime
0044 INTEGER myIter, myThid
0045
0046 #ifdef INCLUDE_PHIHYD_CALCULATION_CODE
0047
0048
0049
c75189e180 Jean*0050
0051
0052
6ac14281aa Jean*0053 INTEGER i,j
c75189e180 Jean*0054 #ifdef NONLIN_FRSURF
0055 _RL facP, dPhiRef
0056 _RL phiHydCstR(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
0057 #endif /* NONLIN_FRSURF */
6ac14281aa Jean*0058
9a4858a22e Jean*0059
c75189e180 Jean*0060 DO j=jMin,jMax
0061 DO i=iMin,iMax
0062 totPhiHyd(i,j,k,bi,bj) = phiHydC(i,j)
0063 & + Bo_surf(i,j,bi,bj)*etaN(i,j,bi,bj)
0064 & + phi0surf(i,j,bi,bj)
0065 #ifdef NONLIN_FRSURF
0066 phiHydCstR(i,j) = totPhiHyd(i,j,k,bi,bj)
0067 #endif /* NONLIN_FRSURF */
0068 ENDDO
0069 ENDDO
0070
9a4858a22e Jean*0071 #ifdef NONLIN_FRSURF
0072
0073 IF (select_rStar.GE.1 .AND. nonlinFreeSurf.GE.4 ) THEN
0074
0075
c75189e180 Jean*0076 IF ( fluidIsAir ) THEN
9a4858a22e Jean*0077
0078 DO j=jMin,jMax
0079 DO i=iMin,iMax
5332d6319a Jean*0080 facP = pStarFacK(i,j,bi,bj)
c75189e180 Jean*0081 dPhiRef = phiRef(2*k) - gravity*topoZ(i,j,bi,bj)
0082 & - phi0surf(i,j,bi,bj)
9a4858a22e Jean*0083 totPhiHyd(i,j,k,bi,bj) =
c75189e180 Jean*0084 & phiHydC(i,j)*facP
0085 & + MAX( dPhiRef, 0. _d 0 )*( facP - 1. _d 0 )
9a4858a22e Jean*0086 & + phi0surf(i,j,bi,bj)
c75189e180 Jean*0087
0088
9a4858a22e Jean*0089 ENDDO
0090 ENDDO
c75189e180 Jean*0091 ELSEIF ( usingPCoords ) THEN
9a4858a22e Jean*0092 DO j=jMin,jMax
0093 DO i=iMin,iMax
c75189e180 Jean*0094
0095
0096
0097 dPhiRef =( Ro_surf(i,j,bi,bj)-rC(k) )*recip_rhoConst
9a4858a22e Jean*0098 totPhiHyd(i,j,k,bi,bj) =
0099 & phiHydC(i,j)*rStarFacC(i,j,bi,bj)
c75189e180 Jean*0100 & + MAX( dPhiRef, 0. _d 0 )
0101 & *( rStarFacC(i,j,bi,bj) - 1. _d 0 )
9a4858a22e Jean*0102 & + phi0surf(i,j,bi,bj)
c75189e180 Jean*0103
9a4858a22e Jean*0104 ENDDO
0105 ENDDO
c75189e180 Jean*0106 ELSE
6ac14281aa Jean*0107 DO j=jMin,jMax
0108 DO i=iMin,iMax
c75189e180 Jean*0109 dPhiRef =( Ro_surf(i,j,bi,bj)-rC(k) )*gravity
0110 totPhiHyd(i,j,k,bi,bj) =
0111 & phiHydC(i,j)*rStarFacC(i,j,bi,bj)
0112 & + MAX( dPhiRef, 0. _d 0 )
0113 & *( rStarFacC(i,j,bi,bj) - 1. _d 0 )
9a4858a22e Jean*0114 & + phi0surf(i,j,bi,bj)
c75189e180 Jean*0115
6ac14281aa Jean*0116 ENDDO
0117 ENDDO
c75189e180 Jean*0118 ENDIF
b302538c50 Jean*0119 #ifdef ALLOW_DIAGNOSTICS
6dccb19154 Jean*0120
0121 IF ( useDiagnostics .AND. myIter.GE.0 ) THEN
b302538c50 Jean*0122 CALL DIAGNOSTICS_FILL(phiHydCstR,'PHIHYDcR',k,1,2,bi,bj,myThid)
0123 ENDIF
0124 #endif /* ALLOW_DIAGNOSTICS */
0125
c75189e180 Jean*0126
9a4858a22e Jean*0127 ENDIF
c75189e180 Jean*0128 #endif /* NONLIN_FRSURF */
6ac14281aa Jean*0129
0130 #endif /* INCLUDE_PHIHYD_CALCULATION_CODE */
0131
0132 RETURN
0133 END