Back to home page

MITgcm

 
 

    


File indexing completed on 2018-03-02 18:44:25 UTC

view on githubraw file Latest commit add29e06 on 2018-01-31 20:35:05 UTC
fc7306ba7d Jean*0001 #include "THSICE_OPTIONS.h"
                0002 
87ea84cac6 Jean*0003 CBOP
fc7306ba7d Jean*0004 C     !ROUTINE: THSICE_AVE
                0005 C     !INTERFACE:
7269783f6f Jean*0006       SUBROUTINE THSICE_AVE(
41e6ab0e43 Jean*0007      I                       bi, bj, myTime, myIter, myThid )
87ea84cac6 Jean*0008 C     !DESCRIPTION: \bv
fc7306ba7d Jean*0009 C     *==========================================================*
7269783f6f Jean*0010 C     | S/R  THSICE_AVE
fc7306ba7d Jean*0011 C     | o save values for timeaveraging
                0012 C     *==========================================================*
                0013 C     \ev
                0014 
                0015 C     !USES:
                0016       IMPLICIT NONE
87ea84cac6 Jean*0017 
fc7306ba7d Jean*0018 C     == Global variables ==
                0019 #include "SIZE.h"
87ea84cac6 Jean*0020 #include "EEPARAMS.h"
                0021 #include "PARAMS.h"
                0022 #include "FFIELDS.h"
fc7306ba7d Jean*0023 #include "THSICE_PARAMS.h"
87ea84cac6 Jean*0024 #include "THSICE_VARS.h"
                0025 #include "THSICE_TAVE.h"
fc7306ba7d Jean*0026 
                0027 C     !INPUT/OUTPUT PARAMETERS:
                0028 C     == Routine Arguments ==
87ea84cac6 Jean*0029 C     frwAtm  :: net fresh-water flux (E-P) to the atmosphere [kg/m2/s]
                0030 C     flxAtm  :: net heat flux from the atmosphere (+=down) [W/m2]
                0031 C     bi,bj   :: tile indices
41e6ab0e43 Jean*0032 C     myTime  :: time counter for this thread
87ea84cac6 Jean*0033 C     myIter  :: iteration counter for this thread
                0034 C     myThid  :: thread number for this instance of the routine.
7269783f6f Jean*0035 c     _RL frwAtm(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
                0036 c     _RL flxAtm(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
fc7306ba7d Jean*0037       INTEGER bi,bj
87ea84cac6 Jean*0038       _RL  myTime
                0039       INTEGER myIter
fc7306ba7d Jean*0040       INTEGER myThid
87ea84cac6 Jean*0041 CEOP
fc7306ba7d Jean*0042 
                0043 #ifdef ALLOW_THSICE
87ea84cac6 Jean*0044 C     == Local variables ==
41e6ab0e43 Jean*0045 c     LOGICAL  DIFFERENT_MULTIPLE
                0046 c     EXTERNAL DIFFERENT_MULTIPLE
7269783f6f Jean*0047 c     INTEGER wrtIter
87ea84cac6 Jean*0048 
fc7306ba7d Jean*0049 #ifdef ALLOW_TIMEAVE
                0050 
052421d6c5 Jean*0051       IF ( thSIce_taveFreq .GT. 0. _d 0 ) THEN
87ea84cac6 Jean*0052 
fc7306ba7d Jean*0053 C--    Time-average
41e6ab0e43 Jean*0054        CALL TIMEAVE_CUMULATE( ice_fract_Ave, iceMask,
                0055      &                        1, thSIce_deltaT, bi, bj, myThid )
fc7306ba7d Jean*0056 C-- area weighted average (with ice-fraction)
c06c141378 Jean*0057        CALL TIMEAVE_CUMUL_2V( ice_iceH_Ave,  iceHeight, iceMask,
fc7306ba7d Jean*0058      &                    1, 0, thSIce_deltaT, bi, bj, myThid )
c06c141378 Jean*0059        CALL TIMEAVE_CUMUL_2V( ice_snowH_Ave, snowHeight, iceMask,
fc7306ba7d Jean*0060      &                    1, 0, thSIce_deltaT, bi, bj, myThid )
87ea84cac6 Jean*0061        CALL TIMEAVE_CUMUL_2V( ice_Tsrf_Ave,  Tsrf,  iceMask,
fc7306ba7d Jean*0062      &                    1, 0, thSIce_deltaT, bi, bj, myThid )
87ea84cac6 Jean*0063        CALL TIMEAVE_CUMUL_2V( ice_Tice1_Ave, Tice1, iceMask,
fc7306ba7d Jean*0064      &                    1, 0, thSIce_deltaT, bi, bj, myThid )
87ea84cac6 Jean*0065        CALL TIMEAVE_CUMUL_2V( ice_Tice2_Ave, Tice2, iceMask,
fc7306ba7d Jean*0066      &                    1, 0, thSIce_deltaT, bi, bj, myThid )
8d49675495 Jean*0067 c      CALL TIMEAVE_CUMUL_2V( ice_snowPr_Ave,snowPrc, iceMask,
                0068 c    &                    1, 0, thSIce_deltaT, bi, bj, myThid )
040c28a424 Jean*0069 C--    notes: siceAlb is already multiplied by iceFraction
41e6ab0e43 Jean*0070        CALL TIMEAVE_CUMULATE( ice_albedo_Ave, siceAlb,
                0071      &                        1, thSIce_deltaT, bi, bj, myThid )
fc7306ba7d Jean*0072 C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
                0073 C-- simple average (without ice-fraction)
41e6ab0e43 Jean*0074 c      CALL TIMEAVE_CUMULATE( ice_iceH_Ave,iceHeight,
                0075 c    &                        1, thSIce_deltaT, bi, bj, myThid )
                0076 c      CALL TIMEAVE_CUMULATE( ice_snowH_Ave,snowHeight,
                0077 c    &                        1, thSIce_deltaT, bi, bj, myThid )
                0078 c      CALL TIMEAVE_CUMULATE( ice_Tsrf_Ave, Tsrf,
                0079 c    &                        1, thSIce_deltaT, bi, bj, myThid )
                0080 c      CALL TIMEAVE_CUMULATE( ice_Tice1_Ave,Tice1,
                0081 c    &                        1, thSIce_deltaT, bi, bj, myThid )
                0082 c      CALL TIMEAVE_CUMULATE( ice_Tice2_Ave,Tice2,
                0083 c    &                        1, thSIce_deltaT, bi, bj, myThid )
fc7306ba7d Jean*0084 
7269783f6f Jean*0085 C-- average of atmospheric fluxes :
9669509dca Jean*0086       IF ( fluidIsWater ) THEN
41e6ab0e43 Jean*0087        CALL TIMEAVE_CUMULATE( ice_flxAtm_Ave, icFlxAtm,
                0088      &                        1, thSIce_deltaT, bi, bj, myThid )
                0089        CALL TIMEAVE_CUMULATE( ice_frwAtm_Ave, icFrwAtm,
                0090      &                        1, thSIce_deltaT, bi, bj, myThid )
052421d6c5 Jean*0091       ENDIF
87ea84cac6 Jean*0092 
7269783f6f Jean*0093 C-- average of oceanic fluxes :
87ea84cac6 Jean*0094 #ifndef CHECK_ENERGY_CONSERV
41e6ab0e43 Jean*0095 #ifdef RS_IS_REAL8
                0096        CALL TIMEAVE_CUMULATE( ice_flx2oc_Ave, Qnet,
                0097      &                        1, thSIce_deltaT, bi, bj, myThid )
                0098        CALL TIMEAVE_CUMULATE( ice_frw2oc_Ave, EmPmR,
                0099      &                        1, thSIce_deltaT, bi, bj, myThid )
                0100        CALL TIMEAVE_CUMULATE( ice_salFx_Ave, saltFlux,
                0101      &                        1, thSIce_deltaT, bi, bj, myThid )
ead4e7560e Jean*0102 #endif
87ea84cac6 Jean*0103 #endif /* CHECK_ENERGY_CONSERV */
                0104 
77253a797d Jean*0105        ice_timeAve(bi,bj) = ice_timeAve(bi,bj)+thSIce_deltaT
fc7306ba7d Jean*0106 
052421d6c5 Jean*0107       ENDIF
fc7306ba7d Jean*0108 #endif /* ALLOW_TIMEAVE */
87ea84cac6 Jean*0109 
7269783f6f Jean*0110 c     IF ( DIFFERENT_MULTIPLE(thSIce_diagFreq,
                0111 c    &                        myTime+deltaTClock,deltaTClock)
                0112 c    &     .AND. fluidIsWater ) THEN
                0113 c       wrtIter = myIter+1
                0114 c       CALL WRITE_LOCAL_RL('ice_flxAtm','I10',1,flxAtm,
                0115 c    &                      bi,bj,1,wrtIter,myThid)
                0116 c       CALL WRITE_LOCAL_RL('ice_frwAtm','I10',1,frwAtm,
                0117 c    &                      bi,bj,1,wrtIter,myThid)
                0118 c     ENDIF
87ea84cac6 Jean*0119 
040c28a424 Jean*0120 C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
                0121 
                0122 #ifdef ALLOW_DIAGNOSTICS
ddc7b8ee22 Jean*0123       IF ( useDiagnostics ) THEN
040c28a424 Jean*0124 
                0125 C-- Atmospheric fluxes :
                0126        IF ( fluidIsWater ) THEN
7269783f6f Jean*0127         CALL DIAGNOSTICS_FILL(icFlxAtm,'SIflxAtm',0,1,1,bi,bj,myThid)
                0128         CALL DIAGNOSTICS_FILL(icFrwAtm,'SIfrwAtm',0,1,1,bi,bj,myThid)
040c28a424 Jean*0129        ENDIF
                0130 
                0131 C-- Oceanic fluxes :
                0132 c #ifndef CHECK_ENERGY_CONSERV
41e6ab0e43 Jean*0133        CALL DIAGNOSTICS_FILL_RS(Qnet,    'SIflx2oc',0,1,1,bi,bj,myThid)
                0134        CALL DIAGNOSTICS_FILL_RS(EmPmR,   'SIfrw2oc',0,1,1,bi,bj,myThid)
                0135        CALL DIAGNOSTICS_FILL_RS(saltFlux,'SIsaltFx',0,1,1,bi,bj,myThid)
040c28a424 Jean*0136 c #endif /* CHECK_ENERGY_CONSERV */
                0137 
ddc7b8ee22 Jean*0138       ENDIF
040c28a424 Jean*0139 #endif /* ALLOW_DIAGNOSTICS */
ddc7b8ee22 Jean*0140 
fc7306ba7d Jean*0141 #endif  /* ALLOW_THSICE */
                0142 
                0143       RETURN
                0144       END