/[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.11 - (show annotations) (download)
Thu Nov 6 22:13:00 2003 UTC (21 years, 8 months ago) by heimbach
Branch: MAIN
CVS Tags: checkpoint53f_post, checkpoint54a_pre, checkpoint55c_post, checkpoint53b_pre, checkpoint52l_pre, checkpoint52e_pre, hrcube4, checkpoint52n_post, checkpoint52j_post, checkpoint52e_post, checkpoint57b_post, checkpoint52d_pre, checkpoint53c_post, checkpoint53d_post, checkpoint55d_pre, checkpoint57a_post, checkpoint55j_post, checkpoint56b_post, checkpoint52j_pre, checkpoint54a_post, branch-netcdf, checkpoint55h_post, checkpoint52b_pre, checkpoint54b_post, checkpoint54d_post, checkpoint56c_post, checkpoint54e_post, checkpoint55b_post, checkpoint52m_post, checkpoint55, checkpoint53a_post, checkpoint55a_post, hrcube5, checkpoint53b_post, checkpoint55g_post, checkpoint55f_post, checkpoint52l_post, checkpoint52k_post, checkpoint57a_pre, checkpoint54, checkpoint57, checkpoint56, checkpoint53, checkpoint52, checkpoint52d_post, checkpoint52a_post, checkpoint52b_post, checkpoint53g_post, checkpoint52f_post, checkpoint52c_post, ecco_c52_e35, checkpoint54f_post, checkpoint52a_pre, checkpoint53d_pre, checkpoint55e_post, checkpoint54c_post, checkpoint52i_post, checkpoint55i_post, checkpoint52i_pre, checkpoint51u_post, checkpoint52h_pre, checkpoint52f_pre, hrcube_1, hrcube_2, hrcube_3, checkpoint56a_post, checkpoint55d_post
Branch point for: netcdf-sm0
Changes since 1.10: +21 -8 lines
o merging from ecco-branch
o updated/extended some store directives for seaice

1 C $Header: /u/gcmpack/MITgcm/pkg/seaice/groatb.F,v 1.10 2003/10/09 04:19:20 edhill 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 #ifdef ALLOW_SEAICE
41
42 C === Local variables ===
43 C i,j,bi,bj - Loop counters
44
45 INTEGER i, j, bi, bj
46 INTEGER KOPEN
47 _RL SPEED_SQ
48 _RL HICE (1-OLx:sNx+OLx, 1-OLy:sNy+OLy)
49 _RL UG (1-OLx:sNx+OLx, 1-OLy:sNy+OLy)
50
51 #ifdef SEAICE_MULTILEVEL
52 INTEGER it
53 INTEGER ilockey
54 _RL RK
55 _RL HICEP(1-OLx:sNx+OLx, 1-OLy:sNy+OLy)
56 _RL FICEP(1-OLx:sNx+OLx, 1-OLy:sNy+OLy)
57 #endif
58
59 CADJ loop = parallel
60 DO bj=myByLo(myThid),myByHi(myThid)
61 CADJ loop = parallel
62 DO bi=myBxLo(myThid),myBxHi(myThid)
63 cph(
64 #ifdef ALLOW_AUTODIFF_TAMC
65 act1 = bi - myBxLo(myThid)
66 max1 = myBxHi(myThid) - myBxLo(myThid) + 1
67 act2 = bj - myByLo(myThid)
68 max2 = myByHi(myThid) - myByLo(myThid) + 1
69 act3 = myThid - 1
70 max3 = nTx*nTy
71 act4 = ikey_dynamics - 1
72 iicekey = (act1 + 1) + act2*max1
73 & + act3*max1*max2
74 & + act4*max1*max2*max3
75 #endif /* ALLOW_AUTODIFF_TAMC */
76 c
77 #ifdef ALLOW_AUTODIFF_TAMC
78 CADJ STORE area(:,:,:,bi,bj) = comlev1_bibj,
79 CADJ & key = iicekey, byte = isbyte
80 #endif /* ALLOW_AUTODIFF_TAMC */
81 cph)
82
83 C DETERMINE AMOUNT OF OPEN WATER AND ICE THICKNESS
84 DO J=1,sNy
85 DO I=1,sNx
86 AREA(I,J,2,bi,bj)=MAX(A22,AREA(I,J,2,bi,bj))
87 FHEFF(I,J,bi,bj)=0.0 _d 0
88 #ifdef SEAICE_MULTILEVEL
89 FICEP(I,J)=0.0 _d 0
90 #endif
91 ENDDO
92 ENDDO
93 #ifdef ALLOW_AUTODIFF_TAMC
94 CADJ STORE area(:,:,:,bi,bj) = comlev1_bibj,
95 CADJ & key = iicekey, byte = isbyte
96 #endif /* ALLOW_AUTODIFF_TAMC */
97 DO J=1,sNy
98 DO I=1,sNx
99 HICE(I,J)=HEFF(I,J,2,bi,bj)/AREA(I,J,2,bi,bj)
100 ENDDO
101 ENDDO
102
103 C NOW DETERMINE MIXED LAYER TEMPERATURE
104 DO J=1,sNy
105 DO I=1,sNx
106 TMIX(I,J,bi,bj)=theta(I,J,1,bi,bj)+273.16 _d +00
107 #ifdef SEAICE_DEBUG
108 TMIX(I,J,bi,bj)=MAX(TMIX(I,J,bi,bj),271.2 _d +00)
109 #endif
110 ENDDO
111 ENDDO
112
113 DO J=1,sNy
114 DO I=1,sNx
115 SPEED_SQ = UWIND(I,J,bi,bj)**2 + VWIND(I,J,bi,bj)**2
116 IF ( SPEED_SQ .LE. SEAICE_EPS_SQ ) THEN
117 UG(I,J)=SEAICE_EPS
118 ELSE
119 UG(I,J)=SQRT(SPEED_SQ)
120 ENDIF
121 ENDDO
122 ENDDO
123
124 #ifdef ALLOW_AUTODIFF_TAMC
125 CADJ STORE atemp(:,:,bi,bj) = comlev1_bibj,
126 CADJ & key = iicekey, byte = isbyte
127 CADJ STORE lwdown(:,:,bi,bj) = comlev1_bibj,
128 CADJ & key = iicekey, byte = isbyte
129 #endif /* ALLOW_AUTODIFF_TAMC */
130
131 C NOW DETERMINE GROWTH RATES
132 C FIRST DO OPEN WATER
133 KOPEN=-1
134 CALL BUDGET(UG, TMIX, HICE, FO, KOPEN, bi, bj)
135
136 C NOW DO ICE
137 KOPEN=1
138 #ifdef SEAICE_MULTILEVEL
139 C-- Start loop over muli-levels
140 DO IT=1,MULTDIM
141 #ifdef ALLOW_AUTODIFF_TAMC
142 ilockey = (iicekey-1)*MULTDIM + IT
143 CADJ STORE atemp(:,:,bi,bj) = comlev1_multdim,
144 CADJ & key = ilockey, byte = isbyte
145 CADJ STORE lwdown(:,:,bi,bj) = comlev1_multdim,
146 CADJ & key = ilockey, byte = isbyte
147 CADJ STORE tices(:,:,it,bi,bj) = comlev1_multdim,
148 CADJ & key = ilockey, byte = isbyte
149 #endif /* ALLOW_AUTODIFF_TAMC */
150 DO J=1,sNy
151 DO I=1,sNx
152 RK=IT*1.0
153 HICEP(I,J)=(HICE(I,J)/7.0 _d 0)*((2.0 _d 0*RK)-1.0 _d 0)
154 TICE(I,J,bi,bj)=TICES(I,J,IT,bi,bj)
155 ENDDO
156 ENDDO
157 CALL BUDGET(UG, TICE, HICEP, FICE, KOPEN, bi, bj)
158 DO J=1,sNy
159 DO I=1,sNx
160 FICEP(I,J)=(FICE(I,J,bi,bj)/7.0 _d 0)+FICEP(I,J)
161 TICES(I,J,IT,bi,bj)=TICE(I,J,bi,bj)
162 ENDDO
163 ENDDO
164 ENDDO
165 C-- End loop over muli-levels
166 DO J=1,sNy
167 DO I=1,sNx
168 FICE(I,J,bi,bj)=FICEP(I,J)
169 ENDDO
170 ENDDO
171 #else /* SEAICE_MULTILEVEL */
172 #ifdef ALLOW_AUTODIFF_TAMC
173 CADJ STORE atemp(:,:,bi,bj) = comlev1_bibj,
174 CADJ & key = iicekey, byte = isbyte
175 CADJ STORE lwdown(:,:,bi,bj) = comlev1_bibj,
176 CADJ & key = iicekey, byte = isbyte
177 #endif /* ALLOW_AUTODIFF_TAMC */
178 CALL BUDGET(UG, TICE, HICE, FICE, KOPEN, bi, bj)
179 #endif /* SEAICE_MULTILEVEL */
180
181 ENDDO
182 ENDDO
183
184 #endif /* ALLOW_SEAICE */
185
186 RETURN
187 END

  ViewVC Help
Powered by ViewVC 1.1.22