C $Header: /home/ubuntu/mnt/e9_copy/MITgcm_contrib/AITCZ/code/mitphys_calc_diags.F,v 1.1 2003/08/20 15:24:59 czaja Exp $ C $Name: $ #include "CPP_OPTIONS.h" CStartOfInterFace SUBROUTINE MITPHYS_CALC_DIAGS( bi, bj, myTime, myThid ) C /==========================================================\ C | SUBROUTINE MITPHYS_CALC_DIAGS | C | o Calculate MITPHYS diagnostics | C \==========================================================/ C === Global variables === #include "SIZE.h" #include "EEPARAMS.h" #include "PARAMS.h" #include "MITPHYS_DIAGS.h" #ifdef ALLOW_MITPHYS #include "atparam0.h" #include "atparam1.h" INTEGER NGP INTEGER NLON INTEGER NLAT INTEGER NLEV PARAMETER ( NLON=IX, NLAT=IL, NLEV=KX, NGP=NLON*NLAT ) #include "com_mitphysvar.h" #include "com_forcing1.h" #endif /* ALLOW_MITPHYS */ LOGICAL DIFFERENT_MULTIPLE EXTERNAL DIFFERENT_MULTIPLE C == Routine arguments == C myTime - Current time of simulation ( s ) C myThid - Number of this instance of the routine C bi,bj - Tile index _RL myTime INTEGER myThid INTEGER bi, bj CEndOfInterface #ifdef ALLOW_MITPHYS C == Local variables == INTEGER I,J,I2 INTEGER K _RL DDTT #ifdef ALLOW_TIMEAVE DDTT = deltaTclock DO J=1,sNy DO I=1,sNx I2 = sNx*(J-1)+I TSWtave(i,j,bi,bj) = TSWtave(i,j,bi,bj) + TSW(I2)*DDTT TLWtave(i,j,bi,bj) = TLWtave(i,j,bi,bj) + TLW(I2)*DDTT SSWtave(i,j,bi,bj) = SSWtave(i,j,bi,bj) + SSW(I2)*DDTT SLWtave(i,j,bi,bj) = SLWtave(i,j,bi,bj) + SLW(I2)*DDTT SINStave(i,j,bi,bj)= SINStave(i,j,bi,bj)+ SINS(I2)*DDTT BKTtave(i,j,bi,bj) = BKTtave(i,j,bi,bj) + BUCKET(I2)*DDTT SHFtave(i,j,bi,bj) = SHFtave(i,j,bi,bj) + SHF(I2)*DDTT LHFtave(i,j,bi,bj) = LHFtave(i,j,bi,bj) + LHF(I2)*DDTT USTRtave(i,j,bi,bj) = USTRtave(i,j,bi,bj) + USTR(I2)*DDTT VSTRtave(i,j,bi,bj) = VSTRtave(i,j,bi,bj) + VSTR(I2)*DDTT PRECNVtave(i,j,bi,bj) = PRECNVtave(i,j,bi,bj) : + PRECNV(I2)*DDTT PRECLStave(i,j,bi,bj) = PRECLStave(i,j,bi,bj) : + PRECLS(I2)*DDTT CLOUDCtave(i,j,bi,bj) = CLOUDCtave(i,j,bi,bj) : + CLDT1(I2)*DDTT SSTtave(i,j,bi,bj) = SSTtave(i,j,bi,bj) : + TS1(I2)*DDTT QFLUXtave(i,j,bi,bj) = QFLUXtave(i,j,bi,bj) : + QFLUX(I2)*DDTT PRWtave(i,j,bi,bj) = PRWtave(i,j,bi,bj) : + PRW1(I2)*DDTT TSW0tave(i,j,bi,bj) = TSW0tave(i,j,bi,bj) + TSW0(I2)*DDTT TLW0tave(i,j,bi,bj) = TLW0tave(i,j,bi,bj) + TLW0(I2)*DDTT CBMFtave(i,j,bi,bj) = CBMFtave(i,j,bi,bj) + CBMFG1(I2)*DDTT PLCLtave(i,j,bi,bj) = PLCLtave(i,j,bi,bj) + PLCLG1(I2)*DDTT DO K=1,Nr RHtave(i,j,K,bi,bj) = RHtave(i,j,K,bi,bj) + RH1(I2,K)*DDTT CLDFtave(i,j,K,bi,bj) = CLDFtave(i,j,K,bi,bj) + CLDF1(I2,K)*DDTT CLDQtave(i,j,K,bi,bj) = CLDQtave(i,j,K,bi,bj) + CLDQ1(I2,K)*DDTT CLDQCtave(i,j,K,bi,bj)= CLDQCtave(i,j,K,bi,bj)+ CLDQC1(I2,K)*DDTT RCtave(i,j,K,bi,bj) = RCtave(i,j,K,bi,bj) + RC1(I2,K)*DDTT CRLWtave(i,j,K,bi,bj) = CRLWtave(i,j,K,bi,bj) + CRLW1(I2,K)*DDTT CRSWtave(i,j,K,bi,bj) = CRSWtave(i,j,K,bi,bj) + CRSW1(I2,K)*DDTT MUPtave(i,j,K,bi,bj) = MUPtave(i,j,K,bi,bj) + MUP1(I2,K)*DDTT MDNtave(i,j,K,bi,bj) = MDNtave(i,j,K,bi,bj) + MDOWN1(I2,K)*DDTT MDN0tave(i,j,K,bi,bj) = MDN0tave(i,j,K,bi,bj) + MP1(I2,K)*DDTT ENTtave(i,j,K,bi,bj) = ENTtave(i,j,K,bi,bj) + ENT1(I2,K)*DDTT DETtave(i,j,K,bi,bj) = DETtave(i,j,K,bi,bj) + DET1(I2,K)*DDTT Utave(i,j,K,bi,bj) = Utave(i,j,K,bi,bj) + UGW(I2,K)*DDTT Vtave(i,j,K,bi,bj) = Vtave(i,j,K,bi,bj) + VGS(I2,K)*DDTT Wtave(i,j,K,bi,bj) = Wtave(i,j,K,bi,bj) + WG1(I2,K)*DDTT Ttave(i,j,K,bi,bj) = Ttave(i,j,K,bi,bj) + TG1(I2,K)*DDTT Qtave(i,j,K,bi,bj) = Qtave(i,j,K,bi,bj) + QG1(I2,K)*DDTT CC(acz) PHItave(i,j,K,bi,bj) = PHItave(i,j,K,bi,bj) + PHIG1(I2,K)*DDTT sxtave(i,j,K,bi,bj) = sxtave(i,j,K,bi,bj) + SXG1(I2,K)*DDTT hxtave(i,j,K,bi,bj) = hxtave(i,j,K,bi,bj) + HXG1(I2,K)*DDTT DTCNVtave(i,j,K,bi,bj)= DTCNVtave(i,j,K,bi,bj) : + TT_CNV(I2,K)*DDTT*86400. DQCNVtave(i,j,K,bi,bj)= DQCNVtave(i,j,K,bi,bj) : + QT_CNV(I2,K)*DDTT*86400. DTLSCtave(i,j,K,bi,bj)= DTLSCtave(i,j,K,bi,bj) : + TT_LSC(I2,K)*DDTT*86400. DTPBLtave(i,j,K,bi,bj)= DTPBLtave(i,j,K,bi,bj) : + TT_PBL(I2,K)*DDTT*86400. UT_PBLtave(i,j,K,bi,bj)= UT_PBLtave(i,j,K,bi,bj) : + UT_PBL_W(I2,K)*DDTT*86400. C UT_PBLtave(i+1,j,K,bi,bj)= UT_PBLtave(i,j,K,bi,bj) : + UT_PBL_E(I2,K)*DDTT*86400. VT_PBLtave(i,j,K,bi,bj)= VT_PBLtave(i,j,K,bi,bj) : + VT_PBL_S(I2,K)*DDTT*86400. C VT_PBLtave(i,j+1,K,bi,bj)= VT_PBLtave(i,j,K,bi,bj) : + VT_PBL_N(I2,K)*DDTT*86400. UT_CNVtave(i,j,K,bi,bj)= UT_CNVtave(i,j,K,bi,bj) : + UT_CNV(I2,K)*DDTT*86400. VT_CNVtave(i,j,K,bi,bj)= VT_CNVtave(i,j,K,bi,bj) : + VT_CNV(I2,K)*DDTT*86400. UT_ADJtave(i,j,K,bi,bj)= UT_ADJtave(i,j,K,bi,bj) : + UT_ADJ(I2,K)*DDTT*86400. VT_ADJtave(i,j,K,bi,bj)= VT_ADJtave(i,j,K,bi,bj) : + VT_ADJ(I2,K)*DDTT*86400. TT_ADJtave(i,j,K,bi,bj)= TT_ADJtave(i,j,K,bi,bj) : + TT_ADJ(I2,K)*DDTT*86400. QT_ADJtave(i,j,K,bi,bj)= QT_ADJtave(i,j,K,bi,bj) : + QT_ADJ(I2,K)*DDTT*86400. ENDDO ENDDO ENDDO C omp: 12-28-01 C Zonal averages do i = 1,sNx do j = 1,sNy I2 = sNx*(J-1)+I do k = 1,Nr Uzav(j,K,bi,bj) = Uzav(j,K,bi,bj) + UGW(I2,K)*DDTT Vzav(j,K,bi,bj) = Vzav(j,K,bi,bj) + VGS(I2,K)*DDTT Wzav(j,K,bi,bj) = Wzav(j,K,bi,bj) + WG1(I2,K)*DDTT Tzav(j,K,bi,bj) = Tzav(j,K,bi,bj) + TG1(I2,K)*DDTT Qzav(j,K,bi,bj) = Qzav(j,K,bi,bj) + QG1(I2,K)*DDTT RHzav(j,K,bi,bj) = RHzav(j,K,bi,bj)+ RH1(I2,K)*DDTT UVzav(j,K,bi,bj) = UVzav(j,K,bi,bj) + 0.25*DDTT * & (UGW(I2,K) + UGE(I2,K)) * (VGN(I2,K)+VGS(I2,K)) VTzav(j,K,bi,bj) = VTzav(j,K,bi,bj) + 0.5*DDTT * & (TG1(I2,K) * (VGN(I2,K)+VGS(I2,K))) VQzav(j,K,bi,bj) = VQzav(j,K,bi,bj) + 0.5*DDTT * & (QG1(I2,K) * (VGN(I2,K)+VGS(I2,K))) CLDFzav(j,K,bi,bj) = CLDFzav(j,K,bi,bj) + CLDF1(I2,K)*DDTT CLDQzav(j,K,bi,bj) = CLDQzav(j,K,bi,bj) + CLDQ1(I2,K)*DDTT CLDQCzav(j,K,bi,bj)= CLDQCzav(j,K,bi,bj)+ CLDQC1(I2,K)*DDTT RCzav(j,K,bi,bj) = RCzav(j,K,bi,bj) + RC1(I2,K)*DDTT DTCNVzav(j,K,bi,bj)= DTCNVzav(j,K,bi,bj) : + TT_CNV(I2,K)*DDTT*86400. DQCNVzav(j,K,bi,bj)= DQCNVzav(j,K,bi,bj) : + QT_CNV(I2,K)*DDTT*86400. DTLSCzav(j,K,bi,bj)= DTLSCzav(j,K,bi,bj) : + TT_LSC(I2,K)*DDTT*86400. DTPBLzav(j,K,bi,bj)= DTPBLzav(j,K,bi,bj) : + TT_PBL(I2,K)*DDTT*86400. UT_PBLzav(j,K,bi,bj)= UT_PBLzav(j,K,bi,bj) : + UT_PBL_W(I2,K)*DDTT*86400. C UT_PBLzav(i+1,j,K,bi,bj)= UT_PBLzav(j,K,bi,bj) : + UT_PBL_E(I2,K)*DDTT*86400. VT_PBLzav(j,K,bi,bj)= VT_PBLzav(j,K,bi,bj) : + VT_PBL_S(I2,K)*DDTT*86400. C VT_PBLzav(j+1,K,bi,bj)= VT_PBLzav(j,K,bi,bj) : + VT_PBL_N(I2,K)*DDTT*86400. UT_CNVzav(j,K,bi,bj)= UT_CNVzav(j,K,bi,bj) : + UT_CNV(I2,K)*DDTT*86400. VT_CNVzav(j,K,bi,bj)= VT_CNVzav(j,K,bi,bj) : + VT_CNV(I2,K)*DDTT*86400. UT_ADJzav(j,K,bi,bj)= UT_ADJzav(j,K,bi,bj) : + UT_ADJ(I2,K)*DDTT*86400. VT_ADJzav(j,K,bi,bj)= VT_ADJzav(j,K,bi,bj) : + VT_ADJ(I2,K)*DDTT*86400. TT_ADJzav(j,K,bi,bj)= TT_ADJzav(j,K,bi,bj) : + TT_ADJ(I2,K)*DDTT*86400. QT_ADJzav(j,K,bi,bj)= QT_ADJzav(j,K,bi,bj) : + QT_ADJ(I2,K)*DDTT*86400. CC (acz) PHIzav(j,K,bi,bj) = PHIzav(j,K,bi,bj) + PHIG1(I2,K)*DDTT end do UWzav(j,1,bi,bj) = 0; WTzav(j,1,bi,bj) = 0; WQzav(j,1,bi,bj) = 0; DO K = 2,NR UWzav(j,K,bi,bj) = UWzav(j,K,bi,bj) + 0.25*DDTT * & (UGW(I2,K) + UGE(I2,K) + UGW(I2,K-1) + UGE(I2,K-1)) & * (WG1(I2,K)) WTzav(j,K,bi,bj) = WTzav(j,K,bi,bj) + DDTT * 0.5 * & ( (TG1(I2,K)+ TG1(I2,K-1)) * WG1(I2,K)) WQzav(j,K,bi,bj) = WQzav(j,K,bi,bj) + DDTT * 0.5 * & ( (QG1(I2,K)+ QG1(I2,K-1)) * WG1(I2,K)) END DO end do end do C- Keep record of how much time has been integrated over DO K=1,Nr MITPHYS_TimeAve(k,bi,bj)=MITPHYS_TimeAve(k,bi,bj)+DDTT ENDDO #endif /* ALLOW_TIMEAVE */ #endif /* ALLOW_MITPHYS */ RETURN END