File indexing completed on 2018-03-02 18:37:00 UTC
view on githubraw file Latest commit add29e06 on 2018-01-31 20:35:05 UTC
8991be1c08 Jean*0001 #include "CPP_OPTIONS.h"
0002
0003
0004
0005
0006 SUBROUTINE POST_CG3D(
0007 I zeroPsNH, zeroMeanPnh,
0008 I myTime, myIter, myThid )
0009
0010
0011
0012
0013
0014
0015 IMPLICIT NONE
0016
0017 #include "SIZE.h"
0018 #include "EEPARAMS.h"
0019 #include "PARAMS.h"
0020 #include "GRID.h"
0021 #include "SURFACE.h"
0022
0023 #include "DYNVARS.h"
0024 #ifdef ALLOW_NONHYDROSTATIC
0025 #include "NH_VARS.h"
0026 #endif
0027
0028
cba4501825 Jean*0029 LOGICAL DIFFERENT_MULTIPLE
0030 EXTERNAL DIFFERENT_MULTIPLE
8991be1c08 Jean*0031
0032
0033
0034
0035
0036
0037
0038
0039 LOGICAL zeroPsNH, zeroMeanPnh
0040 _RL myTime
0041 INTEGER myIter
0042 INTEGER myThid
0043
0044 #ifdef ALLOW_NONHYDROSTATIC
0045
0046
0047 INTEGER i,j,k,bi,bj
0048 INTEGER ks
0049
8e18cb9146 Jean*0050 _RL locGamma
8991be1c08 Jean*0051
0052
cba4501825 Jean*0053
0054
0055 IF ( nonHydrostatic .AND. exactConserv ) THEN
8991be1c08 Jean*0056 DO bj=myByLo(myThid),myByHi(myThid)
0057 DO bi=myBxLo(myThid),myBxHi(myThid)
8e18cb9146 Jean*0058
0059 IF ( selectNHfreeSurf.GE.1 ) THEN
0060 DO j=1,sNy
0061 DO i=1,sNx
0062 locGamma = drC(1)*recip_Bo(i,j,bi,bj)
0063 & /( deltaTMom*deltaTFreeSurf
0064 & *implicitNHPress*implicDiv2DFlow )
0065 ks = 1
0066
0067
0068 dPhiNH(i,j,bi,bj) = ( phi_nh(i,j,ks,bi,bj)
0069 & + locGamma*Bo_surf(i,j,bi,bj)
0070 & *implicDiv2DFlow*deltaTFreeSurf
0071
0072 & *( wVel(i,j,ks,bi,bj) - dPhiNH(i,j,bi,bj) )
0073 & )/(1. _d 0 + locGamma )
0074
0075 ENDDO
0076 ENDDO
0077 ELSEIF ( uniformFreeSurfLev ) THEN
8991be1c08 Jean*0078
0079 DO j=1-OLy,sNy+OLy
0080 DO i=1-OLx,sNx+OLx
cba4501825 Jean*0081 dPhiNH(i,j,bi,bj) = phi_nh(i,j,1,bi,bj)
8991be1c08 Jean*0082 ENDDO
0083 ENDDO
8e18cb9146 Jean*0084 ELSE
8991be1c08 Jean*0085
0086 DO j=1-OLy,sNy+OLy
0087 DO i=1-OLx,sNx+OLx
e78345ed77 Jean*0088 ks = kSurfC(i,j,bi,bj)
8991be1c08 Jean*0089 IF ( ks.LE.Nr ) THEN
cba4501825 Jean*0090 dPhiNH(i,j,bi,bj) = phi_nh(i,j,ks,bi,bj)
8991be1c08 Jean*0091 ELSE
cba4501825 Jean*0092 dPhiNH(i,j,bi,bj) = 0.
8991be1c08 Jean*0093 ENDIF
0094 ENDDO
0095 ENDDO
982e105a17 Jean*0096 ENDIF
8e18cb9146 Jean*0097
cba4501825 Jean*0098 ENDDO
0099 ENDDO
982e105a17 Jean*0100 IF ( selectNHfreeSurf.GE.1 .AND.
9952e3248a Jean*0101 & ( implicitNHPress.LT.oneRL .OR. selectP_inEOS_Zc.EQ.3 ) ) THEN
982e105a17 Jean*0102 CALL EXCH_XY_RL( dPhiNH, myThid )
cba4501825 Jean*0103 ENDIF
0104 ENDIF
0105
0106
0107 IF ( zeroPsNH .OR. zeroMeanPnh ) THEN
0108 IF ( DIFFERENT_MULTIPLE( diagFreq, myTime, deltaTClock) ) THEN
d10cd93843 Jean*0109 CALL WRITE_FLD_XYZ_RL( 'cg3d_x','I10', phi_nh, myIter, myThid )
cba4501825 Jean*0110 ENDIF
0111 DO bj=myByLo(myThid),myByHi(myThid)
0112 DO bi=myBxLo(myThid),myBxHi(myThid)
0113
8991be1c08 Jean*0114 DO k=1,Nr
0115 DO j=1-OLy,sNy+OLy
0116 DO i=1-OLx,sNx+OLx
0117 phi_nh(i,j,k,bi,bj) = ( phi_nh(i,j,k,bi,bj)
cba4501825 Jean*0118 & - dPhiNH(i,j,bi,bj)
8991be1c08 Jean*0119 & )*maskC(i,j,k,bi,bj)
0120 ENDDO
0121 ENDDO
0122 ENDDO
0123 DO j=1-OLy,sNy+OLy
0124 DO i=1-OLx,sNx+OLx
0125 etaN(i,j,bi,bj) = etaN(i,j,bi,bj)
cba4501825 Jean*0126 & + recip_Bo(i,j,bi,bj)*dPhiNH(i,j,bi,bj)
0fb70811e0 Jean*0127 dPhiNH(i,j,bi,bj) = 0. _d 0
8991be1c08 Jean*0128 ENDDO
0129 ENDDO
0130
0131 ENDDO
0132 ENDDO
0133 ENDIF
0134 #endif /* ALLOW_NONHYDROSTATIC */
0135
0136 RETURN
0137 END