/[MITgcm]/MITgcm/pkg/seaice/groatb.F
ViewVC logotype

Contents of /MITgcm/pkg/seaice/groatb.F

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


Revision 1.12 - (show annotations) (download)
Mon Dec 27 20:34:11 2004 UTC (19 years, 5 months ago) by dimitri
Branch: MAIN
CVS Tags: checkpoint57t_post, checkpoint58l_post, checkpoint57m_post, checkpoint58e_post, checkpoint57v_post, checkpoint57f_post, checkpoint57s_post, checkpoint57j_post, checkpoint58b_post, checkpoint58m_post, checkpoint57f_pre, checkpoint57g_post, checkpoint57h_pre, checkpoint57y_post, checkpoint58g_post, checkpoint57x_post, checkpoint58n_post, checkpoint57g_pre, checkpoint58h_post, checkpoint57e_post, checkpoint58j_post, checkpoint57h_post, checkpoint57y_pre, checkpoint57c_pre, checkpoint57o_post, checkpoint57r_post, checkpoint57k_post, checkpoint57d_post, checkpoint57i_post, checkpoint58, checkpoint57h_done, checkpoint58f_post, checkpoint57n_post, checkpoint58d_post, checkpoint57w_post, checkpoint57p_post, checkpint57u_post, checkpoint58a_post, checkpoint58i_post, checkpoint57q_post, checkpoint58o_post, checkpoint57z_post, eckpoint57e_pre, checkpoint58c_post, checkpoint58k_post, checkpoint57c_post, checkpoint58p_post, checkpoint58q_post, checkpoint57l_post
Changes since 1.11: +1 -5 lines
o added seaice_summary.F and removed obsolete ALLOW_SEAICE's from pkg/seaice

1 C $Header: /u/gcmpack/MITgcm/pkg/seaice/groatb.F,v 1.11 2003/11/06 22:13:00 heimbach Exp $
2 C $Name: $
3
4 #include "SEAICE_OPTIONS.h"
5
6 CStartOfInterface
7 SUBROUTINE groatb( A22, myThid )
8 C /==========================================================\
9 C | SUBROUTINE groatb |
10 C | o Calculate ice growth |
11 C |==========================================================|
12 C \==========================================================/
13 IMPLICIT NONE
14
15 C === Global variables ===
16 #include "SIZE.h"
17 #include "EEPARAMS.h"
18 #include "PARAMS.h"
19 #include "DYNVARS.h"
20 #include "FFIELDS.h"
21 #include "SEAICE.h"
22 #include "SEAICE_FFIELDS.h"
23
24 #ifdef ALLOW_AUTODIFF_TAMC
25 # include "tamc.h"
26 #endif
27
28 COMMON /SEAICE_BOUND_RL/
29 & MAX_HEFF, MIN_ATEMP, MIN_LWDOWN, MAX_TICE, MIN_TICE,
30 & SEAICE_EPS, SEAICE_EPS_SQ
31 _RL SEAICE_EPS, SEAICE_EPS_SQ
32 _RL MAX_HEFF, MIN_ATEMP, MIN_LWDOWN, MAX_TICE, MIN_TICE
33
34 C === Routine arguments ===
35 C myThid - Thread no. that called this routine.
36 _RL A22
37 INTEGER myThid
38 CEndOfInterface
39
40 C === Local variables ===
41 C i,j,bi,bj - Loop counters
42
43 INTEGER i, j, bi, bj
44 INTEGER KOPEN
45 _RL SPEED_SQ
46 _RL HICE (1-OLx:sNx+OLx, 1-OLy:sNy+OLy)
47 _RL UG (1-OLx:sNx+OLx, 1-OLy:sNy+OLy)
48
49 #ifdef SEAICE_MULTILEVEL
50 INTEGER it
51 INTEGER ilockey
52 _RL RK
53 _RL HICEP(1-OLx:sNx+OLx, 1-OLy:sNy+OLy)
54 _RL FICEP(1-OLx:sNx+OLx, 1-OLy:sNy+OLy)
55 #endif
56
57 CADJ loop = parallel
58 DO bj=myByLo(myThid),myByHi(myThid)
59 CADJ loop = parallel
60 DO bi=myBxLo(myThid),myBxHi(myThid)
61 cph(
62 #ifdef ALLOW_AUTODIFF_TAMC
63 act1 = bi - myBxLo(myThid)
64 max1 = myBxHi(myThid) - myBxLo(myThid) + 1
65 act2 = bj - myByLo(myThid)
66 max2 = myByHi(myThid) - myByLo(myThid) + 1
67 act3 = myThid - 1
68 max3 = nTx*nTy
69 act4 = ikey_dynamics - 1
70 iicekey = (act1 + 1) + act2*max1
71 & + act3*max1*max2
72 & + act4*max1*max2*max3
73 #endif /* ALLOW_AUTODIFF_TAMC */
74 c
75 #ifdef ALLOW_AUTODIFF_TAMC
76 CADJ STORE area(:,:,:,bi,bj) = comlev1_bibj,
77 CADJ & key = iicekey, byte = isbyte
78 #endif /* ALLOW_AUTODIFF_TAMC */
79 cph)
80
81 C DETERMINE AMOUNT OF OPEN WATER AND ICE THICKNESS
82 DO J=1,sNy
83 DO I=1,sNx
84 AREA(I,J,2,bi,bj)=MAX(A22,AREA(I,J,2,bi,bj))
85 FHEFF(I,J,bi,bj)=0.0 _d 0
86 #ifdef SEAICE_MULTILEVEL
87 FICEP(I,J)=0.0 _d 0
88 #endif
89 ENDDO
90 ENDDO
91 #ifdef ALLOW_AUTODIFF_TAMC
92 CADJ STORE area(:,:,:,bi,bj) = comlev1_bibj,
93 CADJ & key = iicekey, byte = isbyte
94 #endif /* ALLOW_AUTODIFF_TAMC */
95 DO J=1,sNy
96 DO I=1,sNx
97 HICE(I,J)=HEFF(I,J,2,bi,bj)/AREA(I,J,2,bi,bj)
98 ENDDO
99 ENDDO
100
101 C NOW DETERMINE MIXED LAYER TEMPERATURE
102 DO J=1,sNy
103 DO I=1,sNx
104 TMIX(I,J,bi,bj)=theta(I,J,1,bi,bj)+273.16 _d +00
105 #ifdef SEAICE_DEBUG
106 TMIX(I,J,bi,bj)=MAX(TMIX(I,J,bi,bj),271.2 _d +00)
107 #endif
108 ENDDO
109 ENDDO
110
111 DO J=1,sNy
112 DO I=1,sNx
113 SPEED_SQ = UWIND(I,J,bi,bj)**2 + VWIND(I,J,bi,bj)**2
114 IF ( SPEED_SQ .LE. SEAICE_EPS_SQ ) THEN
115 UG(I,J)=SEAICE_EPS
116 ELSE
117 UG(I,J)=SQRT(SPEED_SQ)
118 ENDIF
119 ENDDO
120 ENDDO
121
122 #ifdef ALLOW_AUTODIFF_TAMC
123 CADJ STORE atemp(:,:,bi,bj) = comlev1_bibj,
124 CADJ & key = iicekey, byte = isbyte
125 CADJ STORE lwdown(:,:,bi,bj) = comlev1_bibj,
126 CADJ & key = iicekey, byte = isbyte
127 #endif /* ALLOW_AUTODIFF_TAMC */
128
129 C NOW DETERMINE GROWTH RATES
130 C FIRST DO OPEN WATER
131 KOPEN=-1
132 CALL BUDGET(UG, TMIX, HICE, FO, KOPEN, bi, bj)
133
134 C NOW DO ICE
135 KOPEN=1
136 #ifdef SEAICE_MULTILEVEL
137 C-- Start loop over muli-levels
138 DO IT=1,MULTDIM
139 #ifdef ALLOW_AUTODIFF_TAMC
140 ilockey = (iicekey-1)*MULTDIM + IT
141 CADJ STORE atemp(:,:,bi,bj) = comlev1_multdim,
142 CADJ & key = ilockey, byte = isbyte
143 CADJ STORE lwdown(:,:,bi,bj) = comlev1_multdim,
144 CADJ & key = ilockey, byte = isbyte
145 CADJ STORE tices(:,:,it,bi,bj) = comlev1_multdim,
146 CADJ & key = ilockey, byte = isbyte
147 #endif /* ALLOW_AUTODIFF_TAMC */
148 DO J=1,sNy
149 DO I=1,sNx
150 RK=IT*1.0
151 HICEP(I,J)=(HICE(I,J)/7.0 _d 0)*((2.0 _d 0*RK)-1.0 _d 0)
152 TICE(I,J,bi,bj)=TICES(I,J,IT,bi,bj)
153 ENDDO
154 ENDDO
155 CALL BUDGET(UG, TICE, HICEP, FICE, KOPEN, bi, bj)
156 DO J=1,sNy
157 DO I=1,sNx
158 FICEP(I,J)=(FICE(I,J,bi,bj)/7.0 _d 0)+FICEP(I,J)
159 TICES(I,J,IT,bi,bj)=TICE(I,J,bi,bj)
160 ENDDO
161 ENDDO
162 ENDDO
163 C-- End loop over muli-levels
164 DO J=1,sNy
165 DO I=1,sNx
166 FICE(I,J,bi,bj)=FICEP(I,J)
167 ENDDO
168 ENDDO
169 #else /* SEAICE_MULTILEVEL */
170 #ifdef ALLOW_AUTODIFF_TAMC
171 CADJ STORE atemp(:,:,bi,bj) = comlev1_bibj,
172 CADJ & key = iicekey, byte = isbyte
173 CADJ STORE lwdown(:,:,bi,bj) = comlev1_bibj,
174 CADJ & key = iicekey, byte = isbyte
175 #endif /* ALLOW_AUTODIFF_TAMC */
176 CALL BUDGET(UG, TICE, HICE, FICE, KOPEN, bi, bj)
177 #endif /* SEAICE_MULTILEVEL */
178
179 ENDDO
180 ENDDO
181
182 RETURN
183 END

  ViewVC Help
Powered by ViewVC 1.1.22