File indexing completed on 2018-03-02 18:42:19 UTC
view on githubraw file Latest commit add29e06 on 2018-01-31 20:35:05 UTC
dd92b9a824 Jean*0001 #include "MONITOR_OPTIONS.h"
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013 SUBROUTINE MON_CALC_ADVCFL_TILE(
0014 I myNr, bi, bj,
0015 I uFld, vFld, wFld, dT_lev,
0016 O maxCFL,
0017 I myIter, myThid )
0018
0019
0020
0021
0022
0023 IMPLICIT NONE
0024 #include "SIZE.h"
0025 #include "EEPARAMS.h"
0026 #include "PARAMS.h"
0027 #include "GRID.h"
0028
0029
0030
0031
0032
0033
0034
0035
0036
0037
0038
0039
0040
0041 INTEGER myNr, bi, bj
0042 _RL uFld (1-OLx:sNx+OLx,1-OLy:sNy+OLy,myNr)
0043 _RL vFld (1-OLx:sNx+OLx,1-OLy:sNy+OLy,myNr)
0044 _RL wFld (1-OLx:sNx+OLx,1-OLy:sNy+OLy,myNr)
0045 _RL dT_lev(myNr)
0046 _RL maxCFL(3)
0047 INTEGER myIter, myThid
0048
0049
0050
0051 INTEGER i,j,k
9d10313027 Jean*0052 _RL uTrans(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
0053 _RL vTrans(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
0054 _RL rTrans(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
0055 _RL rTransKp1, tmpVal, recVol_dT
dd92b9a824 Jean*0056
0057
0058
0059 maxCFL(1) = 0.
0060 maxCFL(2) = 0.
0061 maxCFL(3) = 0.
0062
9d10313027 Jean*0063 DO j=1-OLy,sNy+OLy
0064 DO i=1-OLx,sNx+OLx
0065 rTrans(i,j) = 0.
dd92b9a824 Jean*0066 ENDDO
0067 ENDDO
0068
0069 DO k=myNr,1,-1
0070
0071
0072
0073 DO j=1,sNy+1
0074 DO i=1,sNx+1
0075 uTrans(i,j) = uFld(i,j,k)*dyG(i,j,bi,bj)*deepFacC(k)
0076 & *hFacW(i,j,k,bi,bj)
0077 vTrans(i,j) = vFld(i,j,k)*dxG(i,j,bi,bj)*deepFacC(k)
0078 & *hFacS(i,j,k,bi,bj)
0079 ENDDO
0080 ENDDO
0081 DO j=1,sNy
0082 DO i=1,sNx
0083 recVol_dT = dT_lev(k)
0084 & *recip_rA(i,j,bi,bj)*recip_deepFac2C(k)
0085 & *recip_hFacC(i,j,k,bi,bj)
0086 tmpVal = (
0087 & + MAX( uTrans(i+1,j), zeroRL )
0088 & - MIN( uTrans( i ,j), zeroRL )
0089 & )*recVol_dT
0090 maxCFL(1) = MAX( maxCFL(1), tmpVal )
0091 tmpVal = (
0092 & + MAX( vTrans(i,j+1), zeroRL )
0093 & - MIN( vTrans(i, j ), zeroRL )
0094 & )*recVol_dT
0095 maxCFL(2) = MAX( maxCFL(2), tmpVal )
0096 ENDDO
0097 ENDDO
0098
0099
0100
0101 DO j=1,sNy
0102 DO i=1,sNx
9d10313027 Jean*0103 rTransKp1 = rTrans(i,j)
dd92b9a824 Jean*0104 rTrans(i,j) = wFld(i,j,k)
0105 & *deepFac2F(k)*rhoFacF(k)
0106 recVol_dT = dT_lev(k)
0107 & *recip_deepFac2C(k)*recip_rhoFacC(k)
0108 & *recip_drF(k)*recip_hFacC(i,j,k,bi,bj)
0109 tmpVal = (
0110 & + MAX( rTrans(i,j), zeroRL )
9d10313027 Jean*0111 & - MIN( rTransKp1, zeroRL )
dd92b9a824 Jean*0112 & )*recVol_dT
0113 maxCFL(3) = MAX( maxCFL(3), tmpVal )
0114 ENDDO
0115 ENDDO
0116
0117 ENDDO
0118
0119 RETURN
0120 END
0121
0122
0123
0124
0125
0126
0127 SUBROUTINE MON_CALC_ADVCFL_GLOB(
0128 I maxCFL, myIter, myThid )
0129
0130
0131
0132
0133
0134
0135 IMPLICIT NONE
0136 #include "SIZE.h"
0137 #include "EEPARAMS.h"
0138 #include "PARAMS.h"
0139 #include "MONITOR.h"
0140
0141
0142
0143
0144
0145 _RL maxCFL(3,nSx,nSy)
0146 INTEGER myIter
0147 INTEGER myThid
0148
0149
0150
0151 INTEGER bi, bj
0152 _RL uCFL, vCFL, wCFL
0153
0154 uCFL = 0.
0155 vCFL = 0.
0156 wCFL = 0.
0157 DO bj=myByLo(myThid),myByHi(myThid)
0158 DO bi=myBxLo(myThid),myBxHi(myThid)
0159 uCFL = MAX( uCFL, maxCFL(1,bi,bj) )
0160 vCFL = MAX( vCFL, maxCFL(2,bi,bj) )
0161 wCFL = MAX( wCFL, maxCFL(3,bi,bj) )
0162 ENDDO
0163 ENDDO
0164 _GLOBAL_MAX_RL( uCFL, myThid )
0165 _GLOBAL_MAX_RL( vCFL, myThid )
0166 _GLOBAL_MAX_RL( wCFL, myThid )
0167
0168
0169 _BEGIN_MASTER(myThid)
0170 mon_trAdvCFL(1) = uCFL
0171 mon_trAdvCFL(2) = vCFL
0172 mon_trAdvCFL(3) = wCFL
0173 _END_MASTER(myThid)
0174
0175 RETURN
0176 END