/[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.7 by jmc, Wed Apr 6 18:47:11 2005 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                      frwAtm, flxAtm,
11         I                      bi, bj, myTime, myIter, myThid )
12    C     !DESCRIPTION: \bv
13  C     *==========================================================*  C     *==========================================================*
14  C     | S/R  THSICE_AVE                                                C     | S/R  THSICE_AVE                                              
15  C     | o save values for timeaveraging  C     | o save values for timeaveraging
# Line 15  C     \ev Line 18  C     \ev
18    
19  C     !USES:  C     !USES:
20        IMPLICIT NONE        IMPLICIT NONE
21    
22  C     == Global variables ==  C     == Global variables ==
23  #include "SIZE.h"  #include "SIZE.h"
24  c #include "EEPARAMS.h"  #include "EEPARAMS.h"
25  c #include "PARAMS.h"  #include "PARAMS.h"
26    #include "FFIELDS.h"
27  #include "THSICE_PARAMS.h"  #include "THSICE_PARAMS.h"
28  #include "THSICE.h"  #include "THSICE_VARS.h"
29  #include "THSICE_DIAGS.h"  #include "THSICE_TAVE.h"
30    
31  C     !INPUT/OUTPUT PARAMETERS:  C     !INPUT/OUTPUT PARAMETERS:
32  C     == Routine Arguments ==  C     == Routine Arguments ==
33    C     frwAtm  :: net fresh-water flux (E-P) to the atmosphere [kg/m2/s]
34    C     flxAtm  :: net heat flux from the atmosphere (+=down) [W/m2]
35    C     myTime  :: time counter for this thread
36    C     bi,bj   :: tile indices
37    C     myIter  :: iteration counter for this thread
38    C     myThid  :: thread number for this instance of the routine.
39          _RL frwAtm(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
40          _RL flxAtm(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
41        INTEGER bi,bj        INTEGER bi,bj
42          _RL  myTime
43          INTEGER myIter
44        INTEGER myThid        INTEGER myThid
45  CEndofinterface  CEOP
46    
47  #ifdef ALLOW_THSICE  #ifdef ALLOW_THSICE
48    C     == Local variables ==
49          LOGICAL  DIFF_BASE_MULTIPLE
50          EXTERNAL DIFF_BASE_MULTIPLE
51          INTEGER wrtIter
52    
53  #ifdef ALLOW_TIMEAVE  #ifdef ALLOW_TIMEAVE
54    
55          IF ( thSIce_taveFreq .GT. 0. _d 0 ) THEN
56    
57  C--    Time-average  C--    Time-average
58         CALL TIMEAVE_CUMULATE(ICE_iceMask_AVE,iceMask,         CALL TIMEAVE_CUMULATE(ice_fract_Ave, iceMask,
59       &                       1, thSIce_deltaT, bi, bj, myThid )       &                       1, thSIce_deltaT, bi, bj, myThid )
60  C-- area weighted average (with ice-fraction)  C-- area weighted average (with ice-fraction)
61         CALL TIMEAVE_CUMUL_2V( ICE_iceH_AVE, iceheight, iceMask,         CALL TIMEAVE_CUMUL_2V( ice_iceH_Ave,  iceheight, iceMask,
62       &                    1, 0, thSIce_deltaT, bi, bj, myThid )       &                    1, 0, thSIce_deltaT, bi, bj, myThid )
63         CALL TIMEAVE_CUMUL_2V( ICE_snowH_AVE, snowheight, iceMask,         CALL TIMEAVE_CUMUL_2V( ice_snowH_Ave, snowheight, iceMask,
64       &                    1, 0, thSIce_deltaT, bi, bj, myThid )       &                    1, 0, thSIce_deltaT, bi, bj, myThid )
65         CALL TIMEAVE_CUMUL_2V( ICE_Tsrf_AVE,  Tsrf,  iceMask,         CALL TIMEAVE_CUMUL_2V( ice_Tsrf_Ave,  Tsrf,  iceMask,
66       &                    1, 0, thSIce_deltaT, bi, bj, myThid )       &                    1, 0, thSIce_deltaT, bi, bj, myThid )
67         CALL TIMEAVE_CUMUL_2V( ICE_Tice1_AVE, Tice1, iceMask,         CALL TIMEAVE_CUMUL_2V( ice_Tice1_Ave, Tice1, iceMask,
68       &                    1, 0, thSIce_deltaT, bi, bj, myThid )       &                    1, 0, thSIce_deltaT, bi, bj, myThid )
69         CALL TIMEAVE_CUMUL_2V( ICE_Tice2_AVE, Tice2, iceMask,         CALL TIMEAVE_CUMUL_2V( ice_Tice2_Ave, Tice2, iceMask,
70       &                    1, 0, thSIce_deltaT, bi, bj, myThid )       &                    1, 0, thSIce_deltaT, bi, bj, myThid )
71         CALL TIMEAVE_CUMUL_2V( ICE_snow_AVE,  snow,  iceMask,         CALL TIMEAVE_CUMUL_2V( ice_snowPr_Ave,snowPrc, iceMask,
72       &                    1, 0, thSIce_deltaT, bi, bj, myThid )       &                    1, 0, thSIce_deltaT, bi, bj, myThid )
73    C--    notes: siceAlb is already multiplied by iceFraction
74           CALL TIMEAVE_CUMULATE(ice_albedo_Ave, siceAlb,
75         &                       1, thSIce_deltaT, bi, bj, myThid )
76  C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|  C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
77  C-- simple average (without ice-fraction)  C-- simple average (without ice-fraction)
78  c      CALL TIMEAVE_CUMULATE(ICE_iceH_AVE,iceheight,  c      CALL TIMEAVE_CUMULATE(ice_iceH_Ave,iceheight,
79  c    &                       1, thSIce_deltaT, bi, bj, myThid )  c    &                       1, thSIce_deltaT, bi, bj, myThid )
80  c      CALL TIMEAVE_CUMULATE(ICE_snowH_AVE,snowHeight,  c      CALL TIMEAVE_CUMULATE(ice_snowH_Ave,snowHeight,
81  c    &                       1, thSIce_deltaT, bi, bj, myThid )  c    &                       1, thSIce_deltaT, bi, bj, myThid )
82  c      CALL TIMEAVE_CUMULATE(ICE_Tsrf_AVE, Tsrf,  c      CALL TIMEAVE_CUMULATE(ice_Tsrf_Ave, Tsrf,
83  c    &                       1, thSIce_deltaT, bi, bj, myThid )  c    &                       1, thSIce_deltaT, bi, bj, myThid )
84  c      CALL TIMEAVE_CUMULATE(ICE_Tice1_AVE,Tice1,  c      CALL TIMEAVE_CUMULATE(ice_Tice1_Ave,Tice1,
85  c    &                       1, thSIce_deltaT, bi, bj, myThid )  c    &                       1, thSIce_deltaT, bi, bj, myThid )
86  c      CALL TIMEAVE_CUMULATE(ICE_Tice2_AVE,Tice2,  c      CALL TIMEAVE_CUMULATE(ice_Tice2_Ave,Tice2,
87  c    &                       1, thSIce_deltaT, bi, bj, myThid )  c    &                       1, thSIce_deltaT, bi, bj, myThid )
88  c      CALL TIMEAVE_CUMULATE(ICE_snow_AVE, snow,  c      CALL TIMEAVE_CUMULATE(ice_snowPr_Ave, snowPrc,
89  c    &                       1, thSIce_deltaT, bi, bj, myThid )  c    &                       1, thSIce_deltaT, bi, bj, myThid )
90    
91         ICE_timeave(1,bi,bj)=ICE_timeave(1,bi,bj)+thSIce_deltaT  C-- average of atmospheric fluxes :
92          IF ( fluidIsWater ) THEN
93           CALL TIMEAVE_CUMUL_1T(ice_flxAtm_Ave, flxAtm,
94         &                       1, thSIce_deltaT, bi, bj, myThid )
95           CALL TIMEAVE_CUMUL_1T(ice_frwAtm_Ave, frwAtm,
96         &                       1, thSIce_deltaT, bi, bj, myThid )
97          ENDIF
98    
99    C-- average of oceanic fluxes :
100    #ifndef CHECK_ENERGY_CONSERV
101           CALL TIMEAVE_CUMULATE(ice_flx2oc_Ave, Qnet,
102         &                       1, thSIce_deltaT, bi, bj, myThid )
103           CALL TIMEAVE_CUMULATE(ice_frw2oc_Ave, EmPmR,
104         &                       1, thSIce_deltaT, bi, bj, myThid )
105           CALL TIMEAVE_CUMULATE(ice_salFx_Ave, saltFlux,
106         &                       1, thSIce_deltaT, bi, bj, myThid )
107    #endif /* CHECK_ENERGY_CONSERV */
108    
109    C-- average of Ocean Mixed-Layer temp. & salinity
110          IF ( stepFwd_oceMxL ) THEN
111           CALL TIMEAVE_CUMULATE(ice_tMxL_Ave, tOceMxL,
112         &                       1, thSIce_deltaT, bi, bj, myThid )
113           CALL TIMEAVE_CUMULATE(ice_sMxL_Ave, sOceMxL,
114         &                       1, thSIce_deltaT, bi, bj, myThid )
115          ENDIF
116    
117           ice_timeAve(1,bi,bj)=ice_timeAve(1,bi,bj)+thSIce_deltaT
118    
119          ENDIF
120  #endif /* ALLOW_TIMEAVE */  #endif /* ALLOW_TIMEAVE */
121    
122          IF ( DIFF_BASE_MULTIPLE(baseTime,thSIce_diagFreq,
123         &                        myTime+deltaTClock,deltaTClock)
124         &     .AND. fluidIsWater ) THEN
125            wrtIter = myIter+1
126            CALL WRITE_LOCAL_RL('ice_flxAtm','I10',1,flxAtm,
127         &                      bi,bj,1,wrtIter,myThid)
128            CALL WRITE_LOCAL_RL('ice_frwAtm','I10',1,frwAtm,
129         &                      bi,bj,1,wrtIter,myThid)
130          ENDIF
131    
132    C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
133    
134    #ifdef ALLOW_DIAGNOSTICS
135          IF ( useDiagnostics ) THEN
136    
137            CALL DIAGNOSTICS_FILL(siceAlb,'SIalbedo',0,1,1,bi,bj,myThid)
138    
139    C-- Atmospheric fluxes :
140           IF ( fluidIsWater ) THEN
141            CALL DIAGNOSTICS_FILL(flxAtm, 'SIflxAtm',0,1,2,bi,bj,myThid)
142            CALL DIAGNOSTICS_FILL(frwAtm, 'SIfrwAtm',0,1,2,bi,bj,myThid)
143           ENDIF
144    
145    C-- Oceanic fluxes :
146    c #ifndef CHECK_ENERGY_CONSERV
147            CALL DIAGNOSTICS_FILL(Qnet,    'SIflx2oc',0,1,1,bi,bj,myThid)
148            CALL DIAGNOSTICS_FILL(EmPmR,   'SIfrw2oc',0,1,1,bi,bj,myThid)
149            CALL DIAGNOSTICS_FILL(saltFlux,'SIsaltFx',0,1,1,bi,bj,myThid)
150    c #endif /* CHECK_ENERGY_CONSERV */
151    
152          ENDIF
153    #endif /* ALLOW_DIAGNOSTICS */
154    
155  #endif  /* ALLOW_THSICE */  #endif  /* ALLOW_THSICE */
156    
157        RETURN        RETURN

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

  ViewVC Help
Powered by ViewVC 1.1.22