/[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.8 - (show annotations) (download)
Tue Jun 24 16:09:37 2003 UTC (22 years ago) by heimbach
Branch: MAIN
CVS Tags: checkpoint51e_post, checkpoint51b_post, checkpoint51c_post, checkpoint51, checkpoint51b_pre, checkpoint51d_post, checkpoint51a_post
Changes since 1.7: +47 -2 lines
Merging for c51 vs. e34

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

  ViewVC Help
Powered by ViewVC 1.1.22