/[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.1 by jmc, Sun Nov 23 01:20:13 2003 UTC revision 1.11 by jmc, Mon Aug 27 13:23:13 2007 UTC
# Line 3  C $Name$ Line 3  C $Name$
3    
4  #include "THSICE_OPTIONS.h"  #include "THSICE_OPTIONS.h"
5    
6  CStartofinterface  CBOP
7  C     !ROUTINE: THSICE_AVE  C     !ROUTINE: THSICE_AVE
8  C     !INTERFACE:  C     !INTERFACE:
9        SUBROUTINE THSICE_AVE( bi, bj, myThid )        SUBROUTINE THSICE_AVE(
10         I                      bi, bj, myTime, myIter, myThid )
11    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
17    
18  C     !USES:  C     !USES:
19        IMPLICIT NONE        IMPLICIT NONE
20    
21  C     == Global variables ==  C     == Global variables ==
22  #include "SIZE.h"  #include "SIZE.h"
23  c #include "EEPARAMS.h"  #include "EEPARAMS.h"
24  c #include "PARAMS.h"  #include "PARAMS.h"
25    #include "FFIELDS.h"
26  #include "THSICE_PARAMS.h"  #include "THSICE_PARAMS.h"
27  #include "THSICE.h"  #include "THSICE_VARS.h"
28  #include "THSICE_DIAGS.h"  #include "THSICE_TAVE.h"
29    
30  C     !INPUT/OUTPUT PARAMETERS:  C     !INPUT/OUTPUT PARAMETERS:
31  C     == Routine Arguments ==  C     == Routine Arguments ==
32    C     frwAtm  :: net fresh-water flux (E-P) to the atmosphere [kg/m2/s]
33    C     flxAtm  :: net heat flux from the atmosphere (+=down) [W/m2]
34    C     myTime  :: time counter for this thread
35    C     bi,bj   :: tile indices
36    C     myIter  :: iteration counter for this thread
37    C     myThid  :: thread number for this instance of the routine.
38    c     _RL frwAtm(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
39    c     _RL flxAtm(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
40        INTEGER bi,bj        INTEGER bi,bj
41          _RL  myTime
42          INTEGER myIter
43        INTEGER myThid        INTEGER myThid
44  CEndofinterface  CEOP
45    
46  #ifdef ALLOW_THSICE  #ifdef ALLOW_THSICE
47    C     == Local variables ==
48          LOGICAL  DIFFERENT_MULTIPLE
49          EXTERNAL DIFFERENT_MULTIPLE
50    c     INTEGER wrtIter
51    
52  #ifdef ALLOW_TIMEAVE  #ifdef ALLOW_TIMEAVE
53    
54          IF ( thSIce_taveFreq .GT. 0. _d 0 ) THEN
55    
56  C--    Time-average  C--    Time-average
57         CALL TIMEAVE_CUMULATE(ICE_iceMask_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 )
66         CALL TIMEAVE_CUMUL_2V( ICE_Tice1_AVE, Tice1, iceMask,         CALL TIMEAVE_CUMUL_2V( ice_Tice1_Ave, Tice1, iceMask,
67       &                    1, 0, thSIce_deltaT, bi, bj, myThid )       &                    1, 0, thSIce_deltaT, bi, bj, myThid )
68         CALL TIMEAVE_CUMUL_2V( ICE_Tice2_AVE, Tice2, iceMask,         CALL TIMEAVE_CUMUL_2V( ice_Tice2_Ave, Tice2, iceMask,
69       &                    1, 0, thSIce_deltaT, bi, bj, myThid )       &                    1, 0, thSIce_deltaT, bi, bj, myThid )
70         CALL TIMEAVE_CUMUL_2V( ICE_snow_AVE,  snow,  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
73           CALL TIMEAVE_CUMULATE(ice_albedo_Ave, siceAlb,
74         &                       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 )
81  c      CALL TIMEAVE_CUMULATE(ICE_Tsrf_AVE, Tsrf,  c      CALL TIMEAVE_CUMULATE(ice_Tsrf_Ave, Tsrf,
82  c    &                       1, thSIce_deltaT, bi, bj, myThid )  c    &                       1, thSIce_deltaT, bi, bj, myThid )
83  c      CALL TIMEAVE_CUMULATE(ICE_Tice1_AVE,Tice1,  c      CALL TIMEAVE_CUMULATE(ice_Tice1_Ave,Tice1,
84  c    &                       1, thSIce_deltaT, bi, bj, myThid )  c    &                       1, thSIce_deltaT, bi, bj, myThid )
85  c      CALL TIMEAVE_CUMULATE(ICE_Tice2_AVE,Tice2,  c      CALL TIMEAVE_CUMULATE(ice_Tice2_Ave,Tice2,
86  c    &                       1, thSIce_deltaT, bi, bj, myThid )  c    &                       1, thSIce_deltaT, bi, bj, myThid )
87  c      CALL TIMEAVE_CUMULATE(ICE_snow_AVE, snow,  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         ICE_timeave(1,bi,bj)=ICE_timeave(1,bi,bj)+thSIce_deltaT  C-- average of atmospheric fluxes :
91          IF ( fluidIsWater ) THEN
92           CALL TIMEAVE_CUMULATE(ice_flxAtm_Ave, icFlxAtm,
93         &                       1, thSIce_deltaT, bi, bj, myThid )
94           CALL TIMEAVE_CUMULATE(ice_frwAtm_Ave, icFrwAtm,
95         &                       1, thSIce_deltaT, bi, bj, myThid )
96          ENDIF
97    
98    C-- average of oceanic fluxes :
99    #ifndef CHECK_ENERGY_CONSERV
100           CALL TIMEAVE_CUMULATE(ice_flx2oc_Ave, Qnet,
101         &                       1, thSIce_deltaT, bi, bj, myThid )
102           CALL TIMEAVE_CUMULATE(ice_frw2oc_Ave, EmPmR,
103         &                       1, thSIce_deltaT, bi, bj, myThid )
104           CALL TIMEAVE_CUMULATE(ice_salFx_Ave, saltFlux,
105         &                       1, thSIce_deltaT, bi, bj, myThid )
106    #endif /* CHECK_ENERGY_CONSERV */
107    
108    C-- average of Ocean Mixed-Layer temp. & salinity
109          IF ( stepFwd_oceMxL ) THEN
110           CALL TIMEAVE_CUMULATE(ice_tMxL_Ave, tOceMxL,
111         &                       1, thSIce_deltaT, bi, bj, myThid )
112           CALL TIMEAVE_CUMULATE(ice_sMxL_Ave, sOceMxL,
113         &                       1, thSIce_deltaT, bi, bj, myThid )
114          ENDIF
115    
116           ice_timeAve(1,bi,bj)=ice_timeAve(1,bi,bj)+thSIce_deltaT
117    
118          ENDIF
119  #endif /* ALLOW_TIMEAVE */  #endif /* ALLOW_TIMEAVE */
120    
121    c     IF ( DIFFERENT_MULTIPLE(thSIce_diagFreq,
122    c    &                        myTime+deltaTClock,deltaTClock)
123    c    &     .AND. fluidIsWater ) THEN
124    c       wrtIter = myIter+1
125    c       CALL WRITE_LOCAL_RL('ice_flxAtm','I10',1,flxAtm,
126    c    &                      bi,bj,1,wrtIter,myThid)
127    c       CALL WRITE_LOCAL_RL('ice_frwAtm','I10',1,frwAtm,
128    c    &                      bi,bj,1,wrtIter,myThid)
129    c     ENDIF
130    
131    C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
132    
133    #ifdef ALLOW_DIAGNOSTICS
134          IF ( useDiagnostics ) THEN
135    
136    C-- Atmospheric fluxes :
137           IF ( fluidIsWater ) THEN
138            CALL DIAGNOSTICS_FILL(icFlxAtm,'SIflxAtm',0,1,1,bi,bj,myThid)
139            CALL DIAGNOSTICS_FILL(icFrwAtm,'SIfrwAtm',0,1,1,bi,bj,myThid)
140           ENDIF
141    
142    C-- Oceanic fluxes :
143    c #ifndef CHECK_ENERGY_CONSERV
144            CALL DIAGNOSTICS_FILL(Qnet,    'SIflx2oc',0,1,1,bi,bj,myThid)
145            CALL DIAGNOSTICS_FILL(EmPmR,   'SIfrw2oc',0,1,1,bi,bj,myThid)
146            CALL DIAGNOSTICS_FILL(saltFlux,'SIsaltFx',0,1,1,bi,bj,myThid)
147    c #endif /* CHECK_ENERGY_CONSERV */
148    
149          ENDIF
150    #endif /* ALLOW_DIAGNOSTICS */
151    
152  #endif  /* ALLOW_THSICE */  #endif  /* ALLOW_THSICE */
153    
154        RETURN        RETURN

Legend:
Removed from v.1.1  
changed lines
  Added in v.1.11

  ViewVC Help
Powered by ViewVC 1.1.22