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

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

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


Revision 1.11 - (hide 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 heimbach 1.11 C $Header: /u/gcmpack/MITgcm/pkg/seaice/groatb.F,v 1.10 2003/10/09 04:19:20 edhill Exp $
2 edhill 1.10 C $Name: $
3 heimbach 1.2
4     #include "SEAICE_OPTIONS.h"
5 dimitri 1.9
6 heimbach 1.2 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 heimbach 1.8
24     #ifdef ALLOW_AUTODIFF_TAMC
25     # include "tamc.h"
26     #endif
27    
28 dimitri 1.6 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 heimbach 1.2 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 dimitri 1.4 C i,j,bi,bj - Loop counters
44 heimbach 1.2
45 dimitri 1.4 INTEGER i, j, bi, bj
46 heimbach 1.2 INTEGER KOPEN
47 dimitri 1.9 _RL SPEED_SQ
48 heimbach 1.2 _RL HICE (1-OLx:sNx+OLx, 1-OLy:sNy+OLy)
49     _RL UG (1-OLx:sNx+OLx, 1-OLy:sNy+OLy)
50    
51 dimitri 1.7 #ifdef SEAICE_MULTILEVEL
52     INTEGER it
53 heimbach 1.11 INTEGER ilockey
54 dimitri 1.7 _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 heimbach 1.8 CADJ loop = parallel
60 heimbach 1.2 DO bj=myByLo(myThid),myByHi(myThid)
61 heimbach 1.8 CADJ loop = parallel
62 heimbach 1.2 DO bi=myBxLo(myThid),myBxHi(myThid)
63 heimbach 1.8 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 heimbach 1.2
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 dimitri 1.3 FHEFF(I,J,bi,bj)=0.0 _d 0
88 dimitri 1.7 #ifdef SEAICE_MULTILEVEL
89     FICEP(I,J)=0.0 _d 0
90     #endif
91 heimbach 1.8 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 heimbach 1.2 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 dimitri 1.3 TMIX(I,J,bi,bj)=theta(I,J,1,bi,bj)+273.16 _d +00
107 heimbach 1.2 #ifdef SEAICE_DEBUG
108 dimitri 1.3 TMIX(I,J,bi,bj)=MAX(TMIX(I,J,bi,bj),271.2 _d +00)
109 dimitri 1.5 #endif
110 heimbach 1.2 ENDDO
111     ENDDO
112    
113     DO J=1,sNy
114     DO I=1,sNx
115 dimitri 1.9 SPEED_SQ = UWIND(I,J,bi,bj)**2 + VWIND(I,J,bi,bj)**2
116 dimitri 1.7 IF ( SPEED_SQ .LE. SEAICE_EPS_SQ ) THEN
117 dimitri 1.6 UG(I,J)=SEAICE_EPS
118     ELSE
119     UG(I,J)=SQRT(SPEED_SQ)
120     ENDIF
121 heimbach 1.2 ENDDO
122     ENDDO
123    
124 heimbach 1.8 #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 heimbach 1.11
131 heimbach 1.2 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 heimbach 1.8
136 heimbach 1.2 C NOW DO ICE
137     KOPEN=1
138 dimitri 1.7 #ifdef SEAICE_MULTILEVEL
139 heimbach 1.11 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 dimitri 1.7 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 heimbach 1.11 C-- End loop over muli-levels
166 dimitri 1.7 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 heimbach 1.11 #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 heimbach 1.2 CALL BUDGET(UG, TICE, HICE, FICE, KOPEN, bi, bj)
179 dimitri 1.7 #endif /* SEAICE_MULTILEVEL */
180 heimbach 1.2
181     ENDDO
182     ENDDO
183    
184 dimitri 1.5 #endif /* ALLOW_SEAICE */
185 heimbach 1.2
186     RETURN
187     END

  ViewVC Help
Powered by ViewVC 1.1.22