File indexing completed on 2018-03-02 18:41:46 UTC
view on githubraw file Latest commit add29e06 on 2018-01-31 20:35:05 UTC
4e66ab0b67 Oliv*0001 #include "LONGSTEP_OPTIONS.h"
0002
0003
0004
0005
0006 SUBROUTINE LONGSTEP_AVERAGE( myTime, myIter, myThid )
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018 IMPLICIT NONE
0019
0020 #include "SIZE.h"
0021 #include "EEPARAMS.h"
0022 #include "PARAMS.h"
fda3710353 Oliv*0023 #include "GRID.h"
4e66ab0b67 Oliv*0024 #include "DYNVARS.h"
0025 #include "FFIELDS.h"
fda3710353 Oliv*0026 #include "SURFACE.h"
4e66ab0b67 Oliv*0027 #include "LONGSTEP_PARAMS.h"
0028 #include "LONGSTEP.h"
0029 #ifdef ALLOW_GMREDI
0030 #include "GMREDI.h"
0031 #endif
0032 #ifdef ALLOW_KPP
0033 #include "KPP.h"
0034 #endif
0035
0036
0037
0038
0039
0040
03ff461a6c Jean*0041 _RL myTime
4e66ab0b67 Oliv*0042 INTEGER myIter
0043 INTEGER myThid
0044
0045 #ifdef ALLOW_LONGSTEP
0046
0047
0048
0049
0050
7b3defa94d Jean*0051 IF ( MOD(myIter, LS_nIter) .EQ. 0 ) THEN
4e66ab0b67 Oliv*0052
0053 CALL LONGSTEP_RESET_3D(LS_uVelCount, LS_uVel, Nr, myThid)
0054 CALL LONGSTEP_RESET_3D(LS_vVelCount, LS_vVel, Nr, myThid)
0055 CALL LONGSTEP_RESET_3D(LS_wVelCount, LS_wVel, Nr, myThid)
0056 CALL LONGSTEP_RESET_3D(LS_thetaCount,LS_theta,Nr, myThid)
0057 CALL LONGSTEP_RESET_3D(LS_saltCount, LS_salt, Nr, myThid)
0058 IF ( ivdc_kappa .NE. 0. _d 0 )
0059 & CALL LONGSTEP_RESET_3D(LS_IVDConvCountCount,
0060 & LS_IVDConvCount, Nr, myThid)
0061 #ifdef SHORTWAVE_HEATING
0062 CALL LONGSTEP_RESET_3D(LS_QswCount, LS_Qsw, 1, myThid)
0063 #endif
fda3710353 Oliv*0064 CALL LONGSTEP_RESET_3D(LS_fwFluxCount, LS_fwFlux, 1, myThid)
4e66ab0b67 Oliv*0065 #ifdef ALLOW_GMREDI
0066 IF ( useGMRedi ) THEN
0067 CALL LONGSTEP_RESET_3D(LS_KwxCount, LS_Kwx, Nr, myThid)
0068 CALL LONGSTEP_RESET_3D(LS_KwyCount, LS_Kwy, Nr, myThid)
0069 CALL LONGSTEP_RESET_3D(LS_KwzCount, LS_Kwz, Nr, myThid)
0070 ENDIF
0071 #endif
0072 #ifdef ALLOW_KPP
0073 IF ( useKPP ) THEN
0074 CALL LONGSTEP_RESET_3D(LS_KPPdiffKzSCount,
0075 & LS_KPPdiffKzS, Nr, myThid)
0076 CALL LONGSTEP_RESET_3D(LS_KPPghatCount,
0077 & LS_KPPghat, Nr, myThid)
0078 ENDIF
0079 #endif
0080
0081 ENDIF
0082
0083
0084
fda3710353 Oliv*0085 CALL LONGSTEP_FILL_3D_FAC(LS_uVelCount, LS_uVel, uVel, hFacW,
0086 & Nr, myThid)
0087 CALL LONGSTEP_FILL_3D_FAC(LS_vVelCount, LS_vVel, vVel, hFacS,
0088 & Nr, myThid)
4e66ab0b67 Oliv*0089 CALL LONGSTEP_FILL_3D(LS_wVelCount, LS_wVel, wVel, Nr, myThid)
0090 CALL LONGSTEP_FILL_3D(LS_thetaCount, LS_theta, theta, Nr, myThid)
0091 CALL LONGSTEP_FILL_3D(LS_saltCount, LS_salt, salt, Nr, myThid)
0092 IF ( ivdc_kappa .NE. 0. _d 0 )
0093 & CALL LONGSTEP_FILL_3D(LS_IVDConvCountCount,
0094 & LS_IVDConvCount, IVDConvCount, Nr, myThid)
0095 #ifdef SHORTWAVE_HEATING
0af7e34ef5 Oliv*0096 CALL LONGSTEP_FILL_3D_RS(LS_QswCount, LS_Qsw, Qsw, 1, myThid)
4e66ab0b67 Oliv*0097 #endif
fda3710353 Oliv*0098 IF ( LS_usePmEpR ) THEN
5e3924b243 Jean*0099 CALL LONGSTEP_FILL_3D( LS_fwFluxCount,LS_fwFlux,PmEpR,1,myThid)
fda3710353 Oliv*0100 ELSE
0101 CALL LONGSTEP_FILL_3D_RS(LS_fwFluxCount,LS_fwFlux,EmPmR,1,myThid)
0102 ENDIF
4e66ab0b67 Oliv*0103 #ifdef ALLOW_GMREDI
0104 IF ( useGMRedi ) THEN
0105 CALL LONGSTEP_FILL_3D(LS_KwxCount, LS_Kwx, Kwx, Nr, myThid)
0106 CALL LONGSTEP_FILL_3D(LS_KwyCount, LS_Kwy, Kwy, Nr, myThid)
0107 CALL LONGSTEP_FILL_3D(LS_KwzCount, LS_Kwz, Kwz, Nr, myThid)
0108 ENDIF
0109 #endif
0110 #ifdef ALLOW_KPP
0111 IF ( useKPP ) THEN
0112 CALL LONGSTEP_FILL_3D(LS_KPPdiffKzSCount,
0113 & LS_KPPdiffKzS, KPPdiffKzS, Nr, myThid)
0114 CALL LONGSTEP_FILL_3D(LS_KPPghatCount,
0115 & LS_KPPghat, KPPghat, Nr, myThid)
0116 ENDIF
0117 #endif
0118
0119
7b3defa94d Jean*0120 IF ( MOD(myIter, LS_nIter) .EQ. LS_nIter-1 ) THEN
4e66ab0b67 Oliv*0121
fda3710353 Oliv*0122 CALL LONGSTEP_AVERAGE_3D_FAC(LS_uVelCount, LS_uVel, hFacW,
0123 & Nr, myThid)
0124 CALL LONGSTEP_AVERAGE_3D_FAC(LS_vVelCount, LS_vVel, hFacS,
0125 & Nr, myThid)
4e66ab0b67 Oliv*0126 CALL LONGSTEP_AVERAGE_3D(LS_wVelCount, LS_wVel, Nr, myThid)
0127 CALL LONGSTEP_AVERAGE_3D(LS_thetaCount,LS_theta,Nr, myThid)
0128 CALL LONGSTEP_AVERAGE_3D(LS_saltCount, LS_salt, Nr, myThid)
0129 IF ( ivdc_kappa .NE. 0. _d 0 )
0130 & CALL LONGSTEP_AVERAGE_3D(LS_IVDConvCountCount,
0131 & LS_IVDConvCount, Nr, myThid)
0132 #ifdef SHORTWAVE_HEATING
0133 CALL LONGSTEP_AVERAGE_3D(LS_QswCount, LS_Qsw, 1, myThid)
0134 #endif
fda3710353 Oliv*0135 CALL LONGSTEP_AVERAGE_3D(LS_fwFluxCount, LS_fwFlux, 1, myThid)
0136
4e66ab0b67 Oliv*0137 #ifdef ALLOW_GMREDI
0138 IF ( useGMRedi ) THEN
0139 CALL LONGSTEP_AVERAGE_3D(LS_KwxCount, LS_Kwx, Nr, myThid)
0140 CALL LONGSTEP_AVERAGE_3D(LS_KwyCount, LS_Kwy, Nr, myThid)
0141 CALL LONGSTEP_AVERAGE_3D(LS_KwzCount, LS_Kwz, Nr, myThid)
0142 ENDIF
0143 #endif
0144 #ifdef ALLOW_KPP
0145 IF ( useKPP ) THEN
0146 CALL LONGSTEP_AVERAGE_3D(LS_KPPdiffKzSCount,
0147 & LS_KPPdiffKzS, Nr, myThid)
0148 CALL LONGSTEP_AVERAGE_3D(LS_KPPghatCount,
0149 & LS_KPPghat, Nr, myThid)
0150 ENDIF
0151 #endif
0152
0153 #if 0
0154
0155 CALL EXCH_UV_3D_RL( LS_uVel, LS_vVel, .TRUE., Nr, myThid )
0156 CALL EXCH_3D_RL( LS_wVel , Nr, myThid )
0157 CALL EXCH_3D_RL( LS_theta, Nr, myThid )
0158 CALL EXCH_3D_RL( LS_salt , Nr, myThid )
0159 IF ( ivdc_kappa .NE. 0. _d 0 )
0160 & CALL EXCH_3D_RL( LS_IVDConvCount, myThid )
0161 #ifdef SHORTWAVE_HEATING
0162 CALL EXCH_XY_RL( LS_Qsw, myThid )
0163 #endif
fda3710353 Oliv*0164 CALL EXCH_XY_RL( LS_fwFlux, myThid )
4e66ab0b67 Oliv*0165 #ifdef ALLOW_GMREDI
0166 IF ( useGMRedi ) THEN
0167 CALL EXCH_UV_AGRID_3D_RL( LS_Kwx, LS_Kwy, .FALSE., Nr, myThid )
0168 CALL EXCH_3D_RL( LS_Kwz , Nr, myThid )
0169 ENDIF
0170 #endif
0171 #ifdef ALLOW_KPP
0172 IF ( useKPP ) THEN
0173 CALL EXCH_3D_RL( LS_KPPdiffKzS, Nr, myThid )
0174 CALL EXCH_3D_RL( LS_KPPghat, Nr, myThid )
0175 ENDIF
0176 #endif
0177 #endif /* 0 */
0178
0179 #ifdef ALLOW_DIAGNOSTICS
0180 IF ( useDiagnostics ) THEN
0181 CALL DIAGNOSTICS_FILL(LS_uVel, 'LSuVel ',0,Nr,0,1,1,myThid)
0182 CALL DIAGNOSTICS_FILL(LS_vVel, 'LSvVel ',0,Nr,0,1,1,myThid)
0183 CALL DIAGNOSTICS_FILL(LS_wVel, 'LSwVel ',0,Nr,0,1,1,myThid)
0184 CALL DIAGNOSTICS_FILL(LS_theta,'LStheta ',0,Nr,0,1,1,myThid)
0185 CALL DIAGNOSTICS_FILL(LS_salt, 'LSsalt ',0,Nr,0,1,1,myThid)
0186 IF ( ivdc_kappa .NE. 0. _d 0 .AND. .NOT. useKPP )
0187 & CALL DIAGNOSTICS_FILL(LS_IVDConvCount,
0188 & 'LScnvAdj',0,Nr,0,1,1,myThid)
0189 #ifdef SHORTWAVE_HEATING
0190 CALL DIAGNOSTICS_FILL(LS_Qsw , 'LSqsw ',0,1 ,0,1,1,myThid)
0191 #endif
fda3710353 Oliv*0192 CALL DIAGNOSTICS_FILL(LS_fwFlux, 'LSfwFlux',0,1 ,0,1,1,myThid)
4e66ab0b67 Oliv*0193 #ifdef ALLOW_GMREDI
0194 IF ( useGMRedi ) THEN
0195 CALL DIAGNOSTICS_FILL(LS_Kwx , 'LSkwx ',0,Nr,0,1,1,myThid)
0196 CALL DIAGNOSTICS_FILL(LS_Kwy , 'LSkwy ',0,Nr,0,1,1,myThid)
0197 CALL DIAGNOSTICS_FILL(LS_Kwz , 'LSkwz ',0,Nr,0,1,1,myThid)
0198 ENDIF
0199 #endif
0200 #ifdef ALLOW_KPP
0201 IF ( useKPP ) THEN
0202 CALL DIAGNOSTICS_FILL(LS_KPPdiffKzs,
0203 & 'LSKPPdfS',0,Nr,0,1,1,myThid)
0204 CALL DIAGNOSTICS_FILL(LS_KPPghat,
0205 & 'LSKPPght',0,Nr,0,1,1,myThid)
0206 ENDIF
0207 #endif
0208
0209 ENDIF
0210 #endif /* ALLOW_DIAGNOSTICS */
0211
7b3defa94d Jean*0212 _BARRIER
0213 _BEGIN_MASTER(myThid)
0214
0215
0216
0217 LS_doTimeStep = .TRUE.
0218 _END_MASTER(myThid)
0219 _BARRIER
0220
0221 ELSEIF ( MOD(myIter, LS_nIter) .EQ. 0 ) THEN
0222
0223
0224 _BARRIER
0225 _BEGIN_MASTER(myThid)
0226 LS_doTimeStep = .FALSE.
0227 _END_MASTER(myThid)
0228 _BARRIER
0229
0230
4e66ab0b67 Oliv*0231 ENDIF
0232
0233 #endif /* ALLOW_LONGSTEP */
0234
0235 RETURN
0236 END
0237