/[MITgcm]/MITgcm/pkg/thsice/thsice_ave.F
ViewVC logotype

Diff of /MITgcm/pkg/thsice/thsice_ave.F

Parent Directory Parent Directory | Revision Log Revision Log | View Revision Graph Revision Graph | View Patch Patch

revision 1.6 by jmc, Mon Jan 31 19:42:59 2005 UTC revision 1.12 by jmc, Thu Sep 3 20:49:25 2009 UTC
# Line 6  C $Name$ Line 6  C $Name$
6  CBOP  CBOP
7  C     !ROUTINE: THSICE_AVE  C     !ROUTINE: THSICE_AVE
8  C     !INTERFACE:  C     !INTERFACE:
9        SUBROUTINE THSICE_AVE(        SUBROUTINE THSICE_AVE(
      I                      frwAtm, flxAtm,  
10       I                      bi, bj, myTime, myIter, myThid )       I                      bi, bj, myTime, myIter, myThid )
11  C     !DESCRIPTION: \bv  C     !DESCRIPTION: \bv
12  C     *==========================================================*  C     *==========================================================*
13  C     | S/R  THSICE_AVE                                                C     | S/R  THSICE_AVE
14  C     | o save values for timeaveraging  C     | o save values for timeaveraging
15  C     *==========================================================*  C     *==========================================================*
16  C     \ev  C     \ev
# Line 36  C     myTime  :: time counter for this t Line 35  C     myTime  :: time counter for this t
35  C     bi,bj   :: tile indices  C     bi,bj   :: tile indices
36  C     myIter  :: iteration counter for this thread  C     myIter  :: iteration counter for this thread
37  C     myThid  :: thread number for this instance of the routine.  C     myThid  :: thread number for this instance of the routine.
38        _RL frwAtm(1-OLx:sNx+OLx,1-OLy:sNy+OLy)  c     _RL frwAtm(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
39        _RL flxAtm(1-OLx:sNx+OLx,1-OLy:sNy+OLy)  c     _RL flxAtm(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
40        INTEGER bi,bj        INTEGER bi,bj
41        _RL  myTime        _RL  myTime
42        INTEGER myIter        INTEGER myIter
# Line 48  CEOP Line 47  CEOP
47  C     == Local variables ==  C     == Local variables ==
48        LOGICAL  DIFFERENT_MULTIPLE        LOGICAL  DIFFERENT_MULTIPLE
49        EXTERNAL DIFFERENT_MULTIPLE        EXTERNAL DIFFERENT_MULTIPLE
50        INTEGER wrtIter  c     INTEGER wrtIter
51    
52  #ifdef ALLOW_TIMEAVE  #ifdef ALLOW_TIMEAVE
53    
54        IF ( thSIce_taveFreq .GT. 0. _d 0 ) THEN        IF ( thSIce_taveFreq .GT. 0. _d 0 ) THEN
55    
56  C--    Time-average  C--    Time-average
57         CALL TIMEAVE_CUMULATE(ice_fract_Ave, iceMask,         CALL TIMEAVE_CUMULATE(ice_fract_Ave, iceMask,
58       &                       1, thSIce_deltaT, bi, bj, myThid )       &                       1, thSIce_deltaT, bi, bj, myThid )
59  C-- area weighted average (with ice-fraction)  C-- area weighted average (with ice-fraction)
60         CALL TIMEAVE_CUMUL_2V( ice_iceH_Ave,  iceheight, iceMask,         CALL TIMEAVE_CUMUL_2V( ice_iceH_Ave,  iceHeight, iceMask,
61       &                    1, 0, thSIce_deltaT, bi, bj, myThid )       &                    1, 0, thSIce_deltaT, bi, bj, myThid )
62         CALL TIMEAVE_CUMUL_2V( ice_snowH_Ave, snowheight, iceMask,         CALL TIMEAVE_CUMUL_2V( ice_snowH_Ave, snowHeight, iceMask,
63       &                    1, 0, thSIce_deltaT, bi, bj, myThid )       &                    1, 0, thSIce_deltaT, bi, bj, myThid )
64         CALL TIMEAVE_CUMUL_2V( ice_Tsrf_Ave,  Tsrf,  iceMask,         CALL TIMEAVE_CUMUL_2V( ice_Tsrf_Ave,  Tsrf,  iceMask,
65       &                    1, 0, thSIce_deltaT, bi, bj, myThid )       &                    1, 0, thSIce_deltaT, bi, bj, myThid )
# Line 71  C-- area weighted average (with ice-frac Line 70  C-- area weighted average (with ice-frac
70         CALL TIMEAVE_CUMUL_2V( ice_snowPr_Ave,snowPrc, iceMask,         CALL TIMEAVE_CUMUL_2V( ice_snowPr_Ave,snowPrc, iceMask,
71       &                    1, 0, thSIce_deltaT, bi, bj, myThid )       &                    1, 0, thSIce_deltaT, bi, bj, myThid )
72  C--    notes: siceAlb is already multiplied by iceFraction  C--    notes: siceAlb is already multiplied by iceFraction
73         CALL TIMEAVE_CUMULATE(ice_albedo_Ave, siceAlb,         CALL TIMEAVE_CUMULATE(ice_albedo_Ave, siceAlb,
74       &                       1, thSIce_deltaT, bi, bj, myThid )       &                       1, thSIce_deltaT, bi, bj, myThid )
75  C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|  C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
76  C-- simple average (without ice-fraction)  C-- simple average (without ice-fraction)
77  c      CALL TIMEAVE_CUMULATE(ice_iceH_Ave,iceheight,  c      CALL TIMEAVE_CUMULATE(ice_iceH_Ave,iceHeight,
78  c    &                       1, thSIce_deltaT, bi, bj, myThid )  c    &                       1, thSIce_deltaT, bi, bj, myThid )
79  c      CALL TIMEAVE_CUMULATE(ice_snowH_Ave,snowHeight,  c      CALL TIMEAVE_CUMULATE(ice_snowH_Ave,snowHeight,
80  c    &                       1, thSIce_deltaT, bi, bj, myThid )  c    &                       1, thSIce_deltaT, bi, bj, myThid )
# Line 88  c    &                       1, thSIce_d Line 87  c    &                       1, thSIce_d
87  c      CALL TIMEAVE_CUMULATE(ice_snowPr_Ave, snowPrc,  c      CALL TIMEAVE_CUMULATE(ice_snowPr_Ave, snowPrc,
88  c    &                       1, thSIce_deltaT, bi, bj, myThid )  c    &                       1, thSIce_deltaT, bi, bj, myThid )
89    
90  C-- average of atmospheric fluxes :  C-- average of atmospheric fluxes :
91        IF ( fluidIsWater ) THEN        IF ( fluidIsWater ) THEN
92         CALL TIMEAVE_CUMUL_1T(ice_flxAtm_Ave, flxAtm,         CALL TIMEAVE_CUMULATE(ice_flxAtm_Ave, icFlxAtm,
93       &                       1, thSIce_deltaT, bi, bj, myThid )       &                       1, thSIce_deltaT, bi, bj, myThid )
94         CALL TIMEAVE_CUMUL_1T(ice_frwAtm_Ave, frwAtm,         CALL TIMEAVE_CUMULATE(ice_frwAtm_Ave, icFrwAtm,
95       &                       1, thSIce_deltaT, bi, bj, myThid )       &                       1, thSIce_deltaT, bi, bj, myThid )
96        ENDIF        ENDIF
97    
98  C-- average of oceanic fluxes :  C-- average of oceanic fluxes :
99  #ifndef CHECK_ENERGY_CONSERV  #ifndef CHECK_ENERGY_CONSERV
100    #ifdef REAL4_IS_SLOW
101         CALL TIMEAVE_CUMULATE(ice_flx2oc_Ave, Qnet,         CALL TIMEAVE_CUMULATE(ice_flx2oc_Ave, Qnet,
102       &                       1, thSIce_deltaT, bi, bj, myThid )       &                       1, thSIce_deltaT, bi, bj, myThid )
103         CALL TIMEAVE_CUMULATE(ice_frw2oc_Ave, EmPmR,         CALL TIMEAVE_CUMULATE(ice_frw2oc_Ave, EmPmR,
104       &                       1, thSIce_deltaT, bi, bj, myThid )       &                       1, thSIce_deltaT, bi, bj, myThid )
105         CALL TIMEAVE_CUMULATE(ice_salFx_Ave, saltFlux,         CALL TIMEAVE_CUMULATE(ice_salFx_Ave, saltFlux,
106       &                       1, thSIce_deltaT, bi, bj, myThid )       &                       1, thSIce_deltaT, bi, bj, myThid )
107    #endif
108  #endif /* CHECK_ENERGY_CONSERV */  #endif /* CHECK_ENERGY_CONSERV */
109    
110  C-- average of Ocean Mixed-Layer temp. & salinity  C-- average of Ocean Mixed-Layer temp. & salinity
# Line 119  C-- average of Ocean Mixed-Layer temp. & Line 120  C-- average of Ocean Mixed-Layer temp. &
120        ENDIF        ENDIF
121  #endif /* ALLOW_TIMEAVE */  #endif /* ALLOW_TIMEAVE */
122    
123        IF ( DIFFERENT_MULTIPLE(thSIce_diagFreq,myTime+deltaTClock,myTime)  c     IF ( DIFFERENT_MULTIPLE(thSIce_diagFreq,
124       &     .AND. fluidIsWater ) THEN  c    &                        myTime+deltaTClock,deltaTClock)
125          wrtIter = myIter+1  c    &     .AND. fluidIsWater ) THEN
126          CALL WRITE_LOCAL_RL('ice_flxAtm','I10',1,flxAtm,  c       wrtIter = myIter+1
127       &                      bi,bj,1,wrtIter,myThid)  c       CALL WRITE_LOCAL_RL('ice_flxAtm','I10',1,flxAtm,
128          CALL WRITE_LOCAL_RL('ice_frwAtm','I10',1,frwAtm,  c    &                      bi,bj,1,wrtIter,myThid)
129       &                      bi,bj,1,wrtIter,myThid)  c       CALL WRITE_LOCAL_RL('ice_frwAtm','I10',1,frwAtm,
130        ENDIF  c    &                      bi,bj,1,wrtIter,myThid)
131    c     ENDIF
132    
133  C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|  C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
134    
135  #ifdef ALLOW_DIAGNOSTICS  #ifdef ALLOW_DIAGNOSTICS
136        IF ( useDiagnostics ) THEN        IF ( useDiagnostics ) THEN
137    
         CALL DIAGNOSTICS_FILL(siceAlb,'SIalbedo',0,1,1,bi,bj,myThid)  
   
138  C-- Atmospheric fluxes :  C-- Atmospheric fluxes :
139         IF ( fluidIsWater ) THEN         IF ( fluidIsWater ) THEN
140          CALL DIAGNOSTICS_FILL(flxAtm, 'SIflxAtm',0,1,2,bi,bj,myThid)          CALL DIAGNOSTICS_FILL(icFlxAtm,'SIflxAtm',0,1,1,bi,bj,myThid)
141          CALL DIAGNOSTICS_FILL(frwAtm, 'SIfrwAtm',0,1,2,bi,bj,myThid)          CALL DIAGNOSTICS_FILL(icFrwAtm,'SIfrwAtm',0,1,1,bi,bj,myThid)
142         ENDIF         ENDIF
143    
144  C-- Oceanic fluxes :  C-- Oceanic fluxes :
145  c #ifndef CHECK_ENERGY_CONSERV  c #ifndef CHECK_ENERGY_CONSERV
146          CALL DIAGNOSTICS_FILL(Qnet,    'SIflx2oc',0,1,1,bi,bj,myThid)          CALL DIAGNOSTICS_FILL_RS(Qnet,    'SIflx2oc',0,1,1,bi,bj,myThid)
147          CALL DIAGNOSTICS_FILL(EmPmR,   'SIfrw2oc',0,1,1,bi,bj,myThid)          CALL DIAGNOSTICS_FILL_RS(EmPmR,   'SIfrw2oc',0,1,1,bi,bj,myThid)
148          CALL DIAGNOSTICS_FILL(saltFlux,'SIsaltFx',0,1,1,bi,bj,myThid)          CALL DIAGNOSTICS_FILL_RS(saltFlux,'SIsaltFx',0,1,1,bi,bj,myThid)
149  c #endif /* CHECK_ENERGY_CONSERV */  c #endif /* CHECK_ENERGY_CONSERV */
150    
151        ENDIF        ENDIF

Legend:
Removed from v.1.6  
changed lines
  Added in v.1.12

  ViewVC Help
Powered by ViewVC 1.1.22