File indexing completed on 2018-03-02 18:37:33 UTC
view on githubraw file Latest commit add29e06 on 2018-01-31 20:35:05 UTC
09a6f3668a Jeff*0001 #include "ctrparam.h"
0002 #include "ATM2D_OPTIONS.h"
0003
0004
0005 SUBROUTINE TAVE_END_DIAGS( nYears, myTime, myIter, myThid )
0006
0007
0008
0009 IMPLICIT NONE
0010
0011
0012 #include "ATMSIZE.h"
0013 #include "SIZE.h"
0014 #include "EEPARAMS.h"
0015 #include "PARAMS.h"
0016 #include "ATM2D_VARS.h"
0017
0018
0019
0020
0021
0022
0023
0024
0025 INTEGER nYears
0026 _RL myTime
0027 INTEGER myIter
0028 INTEGER myThid
0029
0030
0031 CHARACTER*(MAX_LEN_MBUF) suff, fn
0032 INTEGER ndmonth(12)
0033 DATA ndmonth/31,28,31,30,31,30,31,31,30,31,30,31/
0034 _RL secYr
9274434acc Jean*0035 DATA secYr /31536000. _d 0/
09a6f3668a Jeff*0036 INTEGER i,j,mn,j_atm
0037 INTEGER simYr
0038 INTEGER dUnit
0039 _RS norm_factor
0040 _RL qnet_ann(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
0041 _RL evap_ann(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
0042 _RL precip_ann(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
0043 _RL runoff_ann(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
0044 _RL qrel_ann(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
0045 _RL frel_ann(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
0046 _RL qnet_mon(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
0047 _RL evap_mon(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
0048 _RL precip_mon(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
0049 _RL runoff_mon(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
0050 _RL qrel_mon(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
0051 _RL frel_mon(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
0052 _RL iceMask_mon(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
0053 _RL iceHeight_mon(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
0054 _RL iceTime_mon(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
0055 _RL oceMxLT_mon(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
0056 _RL oceMxLS_mon(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
0057
0058
0059 DO j=1,sNy
0060 DO i=1,sNx
0061
0062 qnet_ann(i,j) = 0. _d 0
0063 evap_ann(i,j) = 0. _d 0
0064 precip_ann(i,j) = 0. _d 0
0065 runoff_ann(i,j) = 0. _d 0
0066 qrel_ann(i,j) = 0. _d 0
0067 frel_ann(i,j) = 0. _d 0
0068
0069 ENDDO
0070 ENDDO
0071
0072 DO mn=1,nForcingPer
0073
0074 norm_factor=nYears*ndmonth(mn)*86400.0
0075 DO j=1,sNy
0076 DO i=1,sNx
0077
0078 qnet_mon(i,j)= qnet_atm_ta(i,j,mn)/norm_factor
0079 evap_mon(i,j)= evap_atm_ta(i,j,mn)/norm_factor
0080 precip_mon(i,j)= precip_atm_ta(i,j,mn)/norm_factor
0081 runoff_mon(i,j)= runoff_atm_ta(i,j,mn)/norm_factor
0082 qrel_mon(i,j)= sum_qrel_ta(i,j,mn)/norm_factor
0083 frel_mon(i,j)= sum_frel_ta(i,j,mn)/norm_factor
0084 iceMask_mon(i,j)= sum_iceMask_ta(i,j,mn)/norm_factor
0085 iceHeight_mon(i,j)= sum_iceHeight_ta(i,j,mn)/norm_factor
0086 iceTime_mon(i,j)= sum_iceTime_ta(i,j,mn)/norm_factor
0087 oceMxLT_mon(i,j)= sum_oceMxLT_ta(i,j,mn)/norm_factor
0088 oceMxLS_mon(i,j)= sum_oceMxLS_ta(i,j,mn)/norm_factor
0089
9274434acc Jean*0090 qnet_ann(i,j) = qnet_ann(i,j) +
09a6f3668a Jeff*0091 & qnet_mon(i,j)*ndmonth(mn)/365.0
9274434acc Jean*0092 evap_ann(i,j) = evap_ann(i,j) +
09a6f3668a Jeff*0093 & evap_mon(i,j)*ndmonth(mn)/365.0
9274434acc Jean*0094 precip_ann(i,j) = precip_ann(i,j) +
09a6f3668a Jeff*0095 & precip_mon(i,j)*ndmonth(mn)/365.0
9274434acc Jean*0096 runoff_ann(i,j) = runoff_ann(i,j) +
09a6f3668a Jeff*0097 & runoff_mon(i,j)*ndmonth(mn)/365.0
9274434acc Jean*0098 qrel_ann(i,j) = qrel_ann(i,j) +
09a6f3668a Jeff*0099 & qrel_mon(i,j)*ndmonth(mn)/365.0
9274434acc Jean*0100 frel_ann(i,j) = frel_ann(i,j) +
09a6f3668a Jeff*0101 & frel_mon(i,j)*ndmonth(mn)/365.0
0102
0103 qnet_atm_ta(i,j,mn)= 0. _d 0
0104 evap_atm_ta(i,j,mn)= 0. _d 0
0105 precip_atm_ta(i,j,mn)= 0. _d 0
9274434acc Jean*0106 runoff_atm_ta(i,j,mn)= 0. _d 0
09a6f3668a Jeff*0107 sum_qrel_ta(i,j,mn)= 0. _d 0
0108 sum_frel_ta(i,j,mn)= 0. _d 0
0109 sum_iceMask_ta(i,j,mn)= 0. _d 0
0110 sum_iceHeight_ta(i,j,mn)= 0. _d 0
0111 sum_iceTime_ta(i,j,mn)= 0. _d 0
0112 sum_oceMxLT_ta(i,j,mn)= 0. _d 0
0113 sum_oceMxLS_ta(i,j,mn)= 0. _d 0
0114
0115 ENDDO
0116 ENDDO
0117
0118 DO j_atm=1,jm0
0119 sum_tauu_ta(j_atm,mn) = sum_tauu_ta(j_atm,mn) / norm_factor
0120 sum_tauv_ta(j_atm,mn) = sum_tauv_ta(j_atm,mn) / norm_factor
0121 sum_wsocean_ta(j_atm,mn) = sum_wsocean_ta(j_atm,mn) /
0122 & norm_factor
9274434acc Jean*0123 sum_ps4ocean_ta(j_atm,mn) = sum_ps4ocean_ta(j_atm,mn) /
09a6f3668a Jeff*0124 & norm_factor
0125 ENDDO
0126
0127 WRITE(suff,'(I2.2)') mn
9274434acc Jean*0128 CALL WRITE_FLD_XY_RL('amQnetAtmtave.', suff,
09a6f3668a Jeff*0129 & qnet_mon, myIter, myThid)
9274434acc Jean*0130 CALL WRITE_FLD_XY_RL('amEvapAtmtave.', suff,
09a6f3668a Jeff*0131 & evap_mon, myIter, myThid)
9274434acc Jean*0132 CALL WRITE_FLD_XY_RL('amPrecipAtmtave.', suff,
09a6f3668a Jeff*0133 & precip_mon, myIter, myThid)
9274434acc Jean*0134 CALL WRITE_FLD_XY_RL('amRunoffAtmtave.', suff,
09a6f3668a Jeff*0135 & runoff_mon, myIter, myThid)
9274434acc Jean*0136 CALL WRITE_FLD_XY_RL('amQrelfluxtave.', suff,
09a6f3668a Jeff*0137 & qrel_mon, myIter, myThid)
9274434acc Jean*0138 CALL WRITE_FLD_XY_RL('amFrelfluxtave.', suff,
09a6f3668a Jeff*0139 & frel_mon, myIter, myThid)
9274434acc Jean*0140 CALL WRITE_FLD_XY_RL('amIceMasktave.', suff,
09a6f3668a Jeff*0141 & iceMask_mon, myIter, myThid)
9274434acc Jean*0142 CALL WRITE_FLD_XY_RL('amIceHeighttave.', suff,
09a6f3668a Jeff*0143 & iceHeight_mon, myIter, myThid)
9274434acc Jean*0144 CALL WRITE_FLD_XY_RL('amIceTimetave.', suff,
09a6f3668a Jeff*0145 & iceTime_mon, myIter, myThid)
9274434acc Jean*0146 CALL WRITE_FLD_XY_RL('amOceMxLTtave.', suff,
09a6f3668a Jeff*0147 & oceMxLT_mon, myIter, myThid)
9274434acc Jean*0148 CALL WRITE_FLD_XY_RL('amOceMxLStave.', suff,
09a6f3668a Jeff*0149 & oceMxLS_mon, myIter, myThid)
0150
0151 ENDDO
0152
0153 WRITE(suff,'(I10.10)') myIter
0154 CALL WRITE_FLD_XY_RL('QnetAtmtave.', suff,
0155 & qnet_ann, myIter, myThid)
0156 CALL WRITE_FLD_XY_RL('EvapAtmtave.', suff,
0157 & evap_ann, myIter, myThid)
0158 CALL WRITE_FLD_XY_RL('PrecipAtmtave.', suff,
0159 & precip_ann, myIter, myThid)
0160 CALL WRITE_FLD_XY_RL('RunoffAtmtave.', suff,
0161 & runoff_ann, myIter, myThid)
0162 CALL WRITE_FLD_XY_RL('Qrelfluxtave.', suff,
0163 & qrel_ann, myIter, myThid)
0164 CALL WRITE_FLD_XY_RL('Frelfluxtave.', suff,
0165 & frel_ann, myIter, myThid)
0166
0167
0168 simYr = int(myIter*deltaTClock/secYr)
0169 CALL MDSFINDUNIT( dUnit, mythid )
9274434acc Jean*0170
09384db9d5 Jeff*0171 WRITE(fn,'(A,I5.5)') 'attauu.', simYr
09a6f3668a Jeff*0172 OPEN(dUnit, FILE=fn, STATUS='unknown',
0173 & ACCESS='direct', RECL=8*jm0*nForcingPer, FORM='unformatted')
0174 WRITE(dUnit,REC=1) sum_tauu_ta
0175 CLOSE(dUnit)
0176
09384db9d5 Jeff*0177 WRITE(fn,'(A,I5.5)') 'attauv.', simYr
09a6f3668a Jeff*0178 OPEN(dUnit, FILE=fn, STATUS='unknown',
0179 & ACCESS='direct', RECL=8*jm0*nForcingPer, FORM='unformatted')
0180 WRITE(dUnit,REC=1) sum_tauv_ta
0181 CLOSE(dUnit)
0182
09384db9d5 Jeff*0183 WRITE(fn,'(A,I5.5)') 'atwind.', simYr
09a6f3668a Jeff*0184 OPEN(dUnit, FILE=fn, STATUS='unknown',
0185 & ACCESS='direct', RECL=8*jm0*nForcingPer, FORM='unformatted')
0186 WRITE(dUnit,REC=1) sum_wsocean_ta
0187 CLOSE(dUnit)
0188
09384db9d5 Jeff*0189 WRITE(fn,'(A,I5.5)') 'atps4ocn.', simYr
09a6f3668a Jeff*0190 OPEN(dUnit, FILE=fn, STATUS='unknown',
0191 & ACCESS='direct', RECL=8*jm0*nForcingPer, FORM='unformatted')
0192 WRITE(dUnit,REC=1) sum_ps4ocean_ta
0193 CLOSE(dUnit)
0194
0195 DO mn=1,nForcingPer
0196 DO j_atm=1,jm0
0197 sum_tauu_ta(j_atm,mn) = 0. _d 0
0198 sum_tauv_ta(j_atm,mn) = 0. _d 0
0199 sum_wsocean_ta(j_atm,mn) = 0. _d 0
0200 sum_ps4ocean_ta(j_atm,mn) = 0. _d 0
0201 ENDDO
0202 ENDDO
0203
0204 RETURN
0205 END
0206