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

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

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


Revision 1.13 - (show annotations) (download)
Tue Dec 29 23:07:43 2009 UTC (14 years, 4 months ago) by jmc
Branch: MAIN
CVS Tags: checkpoint64a, checkpoint64c, checkpoint64b, checkpoint64e, checkpoint64d, checkpoint64f, checkpoint63p, checkpoint63q, checkpoint63r, checkpoint63s, checkpoint63l, checkpoint63m, checkpoint63n, checkpoint63o, checkpoint63h, checkpoint63i, checkpoint63j, checkpoint63k, checkpoint63d, checkpoint63e, checkpoint63f, checkpoint63g, checkpoint63a, checkpoint63b, checkpoint63c, checkpoint64, checkpoint63, checkpoint62c, checkpoint62b, checkpoint62a, checkpoint62g, checkpoint62f, checkpoint62e, checkpoint62d, checkpoint62k, checkpoint62j, checkpoint62i, checkpoint62h, checkpoint62o, checkpoint62n, checkpoint62m, checkpoint62l, checkpoint62s, checkpoint62r, checkpoint62q, checkpoint62p, checkpoint62w, checkpoint62v, checkpoint62u, checkpoint62t, checkpoint62z, checkpoint62y, checkpoint62x
Changes since 1.12: +2 -2 lines
time-ave: use simpler (no level index) cumulative-time counter

1 C $Header: /u/gcmpack/MITgcm/pkg/thsice/thsice_ave.F,v 1.12 2009/09/03 20:49:25 jmc Exp $
2 C $Name: $
3
4 #include "THSICE_OPTIONS.h"
5
6 CBOP
7 C !ROUTINE: THSICE_AVE
8 C !INTERFACE:
9 SUBROUTINE THSICE_AVE(
10 I bi, bj, myTime, myIter, myThid )
11 C !DESCRIPTION: \bv
12 C *==========================================================*
13 C | S/R THSICE_AVE
14 C | o save values for timeaveraging
15 C *==========================================================*
16 C \ev
17
18 C !USES:
19 IMPLICIT NONE
20
21 C == Global variables ==
22 #include "SIZE.h"
23 #include "EEPARAMS.h"
24 #include "PARAMS.h"
25 #include "FFIELDS.h"
26 #include "THSICE_PARAMS.h"
27 #include "THSICE_VARS.h"
28 #include "THSICE_TAVE.h"
29
30 C !INPUT/OUTPUT PARAMETERS:
31 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
41 _RL myTime
42 INTEGER myIter
43 INTEGER myThid
44 CEOP
45
46 #ifdef ALLOW_THSICE
47 C == Local variables ==
48 LOGICAL DIFFERENT_MULTIPLE
49 EXTERNAL DIFFERENT_MULTIPLE
50 c INTEGER wrtIter
51
52 #ifdef ALLOW_TIMEAVE
53
54 IF ( thSIce_taveFreq .GT. 0. _d 0 ) THEN
55
56 C-- Time-average
57 CALL TIMEAVE_CUMULATE(ice_fract_Ave, iceMask,
58 & 1, thSIce_deltaT, bi, bj, myThid )
59 C-- area weighted average (with ice-fraction)
60 CALL TIMEAVE_CUMUL_2V( ice_iceH_Ave, iceHeight, iceMask,
61 & 1, 0, thSIce_deltaT, bi, bj, myThid )
62 CALL TIMEAVE_CUMUL_2V( ice_snowH_Ave, snowHeight, iceMask,
63 & 1, 0, thSIce_deltaT, bi, bj, myThid )
64 CALL TIMEAVE_CUMUL_2V( ice_Tsrf_Ave, Tsrf, iceMask,
65 & 1, 0, thSIce_deltaT, bi, bj, myThid )
66 CALL TIMEAVE_CUMUL_2V( ice_Tice1_Ave, Tice1, iceMask,
67 & 1, 0, thSIce_deltaT, bi, bj, myThid )
68 CALL TIMEAVE_CUMUL_2V( ice_Tice2_Ave, Tice2, iceMask,
69 & 1, 0, thSIce_deltaT, bi, bj, myThid )
70 CALL TIMEAVE_CUMUL_2V( ice_snowPr_Ave,snowPrc, iceMask,
71 & 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-|--+----|
76 C-- simple average (without ice-fraction)
77 c CALL TIMEAVE_CUMULATE(ice_iceH_Ave,iceHeight,
78 c & 1, thSIce_deltaT, bi, bj, myThid )
79 c CALL TIMEAVE_CUMULATE(ice_snowH_Ave,snowHeight,
80 c & 1, thSIce_deltaT, bi, bj, myThid )
81 c CALL TIMEAVE_CUMULATE(ice_Tsrf_Ave, Tsrf,
82 c & 1, thSIce_deltaT, bi, bj, myThid )
83 c CALL TIMEAVE_CUMULATE(ice_Tice1_Ave,Tice1,
84 c & 1, thSIce_deltaT, bi, bj, myThid )
85 c CALL TIMEAVE_CUMULATE(ice_Tice2_Ave,Tice2,
86 c & 1, thSIce_deltaT, bi, bj, myThid )
87 c CALL TIMEAVE_CUMULATE(ice_snowPr_Ave, snowPrc,
88 c & 1, thSIce_deltaT, bi, bj, myThid )
89
90 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 #ifdef REAL4_IS_SLOW
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
108 #endif /* CHECK_ENERGY_CONSERV */
109
110 C-- average of Ocean Mixed-Layer temp. & salinity
111 IF ( stepFwd_oceMxL ) THEN
112 CALL TIMEAVE_CUMULATE(ice_tMxL_Ave, tOceMxL,
113 & 1, thSIce_deltaT, bi, bj, myThid )
114 CALL TIMEAVE_CUMULATE(ice_sMxL_Ave, sOceMxL,
115 & 1, thSIce_deltaT, bi, bj, myThid )
116 ENDIF
117
118 ice_timeAve(bi,bj) = ice_timeAve(bi,bj)+thSIce_deltaT
119
120 ENDIF
121 #endif /* ALLOW_TIMEAVE */
122
123 c IF ( DIFFERENT_MULTIPLE(thSIce_diagFreq,
124 c & myTime+deltaTClock,deltaTClock)
125 c & .AND. fluidIsWater ) THEN
126 c wrtIter = myIter+1
127 c CALL WRITE_LOCAL_RL('ice_flxAtm','I10',1,flxAtm,
128 c & bi,bj,1,wrtIter,myThid)
129 c CALL WRITE_LOCAL_RL('ice_frwAtm','I10',1,frwAtm,
130 c & bi,bj,1,wrtIter,myThid)
131 c ENDIF
132
133 C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
134
135 #ifdef ALLOW_DIAGNOSTICS
136 IF ( useDiagnostics ) THEN
137
138 C-- Atmospheric fluxes :
139 IF ( fluidIsWater ) THEN
140 CALL DIAGNOSTICS_FILL(icFlxAtm,'SIflxAtm',0,1,1,bi,bj,myThid)
141 CALL DIAGNOSTICS_FILL(icFrwAtm,'SIfrwAtm',0,1,1,bi,bj,myThid)
142 ENDIF
143
144 C-- Oceanic fluxes :
145 c #ifndef CHECK_ENERGY_CONSERV
146 CALL DIAGNOSTICS_FILL_RS(Qnet, 'SIflx2oc',0,1,1,bi,bj,myThid)
147 CALL DIAGNOSTICS_FILL_RS(EmPmR, 'SIfrw2oc',0,1,1,bi,bj,myThid)
148 CALL DIAGNOSTICS_FILL_RS(saltFlux,'SIsaltFx',0,1,1,bi,bj,myThid)
149 c #endif /* CHECK_ENERGY_CONSERV */
150
151 ENDIF
152 #endif /* ALLOW_DIAGNOSTICS */
153
154 #endif /* ALLOW_THSICE */
155
156 RETURN
157 END

  ViewVC Help
Powered by ViewVC 1.1.22