C $Header: /u/gcmpack/MITgcm/pkg/atm2d/month_end_diags.F,v 1.2 2007/10/08 23:48:28 jmc Exp $
C $Name: $
#include "ctrparam.h"
#include "ATM2D_OPTIONS.h"
C !INTERFACE:
SUBROUTINE MONTH_END_DIAGS( monid, myTime, myIter, myThid )
C *==========================================================*
C | Prints out rolling month-end quantities, and sums these |
c | into the tave monthly diagnostic variables. |
C *==========================================================*
IMPLICIT NONE
C === Global Atmosphere Variables ===
#include "ATMSIZE.h"
#include "SIZE.h"
#include "EEPARAMS.h"
#include "ATM2D_VARS.h"
C !INPUT/OUTPUT PARAMETERS:
C === Routine arguments ===
C monid - current month of the year
C myTime - current simulation time (ocean model time)
C myIter - iteration number (ocean model)
C myThid - Thread no. that called this routine.
INTEGER monid
_RL myTime
INTEGER myIter
INTEGER myThid
C LOCAL VARIABLES:
CHARACTER*(MAX_LEN_MBUF) suff
INTEGER ndmonth(12)
DATA ndmonth/31,28,31,30,31,30,31,31,30,31,30,31/
INTEGER i,j
_RS norm_factor
norm_factor = ndmonth(monid)*86400.0
DO j=1,sNy
DO i=1,sNx
qnet_atm_ta(i,j,monid)= qnet_atm_ta(i,j,monid) +
& qnet_atm(i,j)
evap_atm_ta(i,j,monid)= evap_atm_ta(i,j,monid) +
& evap_atm(i,j)
precip_atm_ta(i,j,monid)= precip_atm_ta(i,j,monid) +
& precip_atm(i,j)
runoff_atm_ta(i,j,monid)= runoff_atm_ta(i,j,monid) +
& runoff_atm(i,j)
sum_qrel_ta(i,j,monid)= sum_qrel_ta(i,j,monid) +
& sum_qrel(i,j)
sum_frel_ta(i,j,monid)= sum_frel_ta(i,j,monid) +
& sum_frel(i,j)
sum_iceMask_ta(i,j,monid)= sum_iceMask_ta(i,j,monid) +
& sum_iceMask(i,j)
sum_iceHeight_ta(i,j,monid)= sum_iceHeight_ta(i,j,monid) +
& sum_iceHeight(i,j)
sum_iceTime_ta(i,j,monid)= sum_iceTime_ta(i,j,monid) +
& sum_iceTime(i,j)
sum_oceMxLT_ta(i,j,monid)= sum_oceMxLT_ta(i,j,monid) +
& sum_oceMxLT(i,j)
sum_oceMxLS_ta(i,j,monid)= sum_oceMxLS_ta(i,j,monid) +
& sum_oceMxLS(i,j)
qnet_atm(i,j)=qnet_atm(i,j)/ norm_factor
evap_atm(i,j)=evap_atm(i,j)/ norm_factor
precip_atm(i,j)= precip_atm(i,j)/ norm_factor
runoff_atm(i,j)= runoff_atm(i,j)/ norm_factor
sum_qrel(i,j)= sum_qrel(i,j)/ norm_factor
sum_frel(i,j)= sum_frel(i,j)/ norm_factor
sum_iceMask(i,j)= sum_iceMask(i,j)/ norm_factor
sum_iceHeight(i,j)= sum_iceHeight(i,j)/ norm_factor
sum_iceTime(i,j)= sum_iceTime(i,j)/ norm_factor
sum_oceMxLT(i,j)= sum_oceMxLT(i,j)/ norm_factor
sum_oceMxLS(i,j)= sum_oceMxLS(i,j)/ norm_factor
ENDDO
ENDDO
WRITE(suff,'(I2.2)') monid
CALL WRITE_FLD_XY_RL('mQnetAtmtave.', suff, qnet_atm,
& myIter, myThid)
CALL WRITE_FLD_XY_RL('mEvapAtmtave.', suff, evap_atm,
& myIter, myThid)
CALL WRITE_FLD_XY_RL('mPrecipAtmtave.', suff, precip_atm,
& myIter, myThid)
CALL WRITE_FLD_XY_RL('mRunoffAtmtave.', suff, runoff_atm,
& myIter, myThid)
CALL WRITE_FLD_XY_RL('mQrelfluxtave.', suff, sum_qrel,
& myIter, myThid)
CALL WRITE_FLD_XY_RL('mFrelfluxtave.', suff, sum_frel,
& myIter, myThid)
CALL WRITE_FLD_XY_RL('mIceMasktave.', suff, sum_iceMask,
& myIter, myThid)
CALL WRITE_FLD_XY_RL('mIceHeighttave.', suff, sum_iceHeight,
& myIter, myThid)
CALL WRITE_FLD_XY_RL('mIceTimetave.', suff, sum_iceTime,
& myIter, myThid)
CALL WRITE_FLD_XY_RL('mOceMxLTtave.', suff, sum_oceMxLT,
& myIter, myThid)
CALL WRITE_FLD_XY_RL('mOceMxLStave.', suff, sum_oceMxLS,
& myIter, myThid)
DO j=1,sNy
DO i=1,sNx
qnet_atm(i,j)= 0. _d 0
evap_atm(i,j)= 0. _d 0
precip_atm(i,j)= 0. _d 0
runoff_atm(i,j)= 0. _d 0
sum_qrel(i,j)= 0. _d 0
sum_frel(i,j)= 0. _d 0
sum_iceMask(i,j)= 0. _d 0
sum_iceHeight(i,j)= 0. _d 0
sum_iceTime(i,j)= 0. _d 0
sum_oceMxLT(i,j)= 0. _d 0
sum_oceMxLS(i,j)= 0. _d 0
ENDDO
ENDDO
RETURN
END