/[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.9 - (show annotations) (download)
Thu Aug 7 02:31:29 2003 UTC (21 years, 11 months ago) by dimitri
Branch: MAIN
CVS Tags: checkpoint51j_post, checkpoint51f_pre, branchpoint-genmake2, checkpoint51h_pre, checkpoint51g_post, checkpoint51f_post, checkpoint51i_pre
Branch point for: branch-genmake2
Changes since 1.8: +3 -11 lines
o Added on-the-fly spatial interpolation capability
    "USE_EXF_INTERPOLATION" to pkg/exf.
  - This is a temporary Cartesian-grid hack until
    the super-duper ESMF coupler becomes available.
  - See verification/global_with_exf/README for usage example.
  - Removed obsolete EXFwindOnBgrid and SEAICEwindOnCgrid
    flags and modified pkg/seaice accordingly.
o Bug fix to pkg/ptracers, pkg/generic_advdiff/gad_calc_rhs.F,
    and pkg/kpp/kpp_transport_ptr.F for dealing with tracer
    non-local transport term.

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 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 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 C NOW DETERMINE GROWTH RATES
129 C FIRST DO OPEN WATER
130 KOPEN=-1
131 CALL BUDGET(UG, TMIX, HICE, FO, KOPEN, bi, bj)
132
133 #ifdef ALLOW_AUTODIFF_TAMC
134 CADJ STORE atemp(:,:,bi,bj) = comlev1_bibj,
135 CADJ & key = iicekey, byte = isbyte
136 CADJ STORE lwdown(:,:,bi,bj) = comlev1_bibj,
137 CADJ & key = iicekey, byte = isbyte
138 #endif /* ALLOW_AUTODIFF_TAMC */
139 C NOW DO ICE
140 KOPEN=1
141 #ifdef SEAICE_MULTILEVEL
142 DO IT=1,7
143 DO J=1,sNy
144 DO I=1,sNx
145 RK=IT*1.0
146 HICEP(I,J)=(HICE(I,J)/7.0 _d 0)*((2.0 _d 0*RK)-1.0 _d 0)
147 TICE(I,J,bi,bj)=TICES(I,J,IT,bi,bj)
148 ENDDO
149 ENDDO
150 CALL BUDGET(UG, TICE, HICEP, FICE, KOPEN, bi, bj)
151 DO J=1,sNy
152 DO I=1,sNx
153 FICEP(I,J)=(FICE(I,J,bi,bj)/7.0 _d 0)+FICEP(I,J)
154 TICES(I,J,IT,bi,bj)=TICE(I,J,bi,bj)
155 ENDDO
156 ENDDO
157 ENDDO
158 DO J=1,sNy
159 DO I=1,sNx
160 FICE(I,J,bi,bj)=FICEP(I,J)
161 ENDDO
162 ENDDO
163 #else /* SEAICE_MULTILEVEL */
164 CALL BUDGET(UG, TICE, HICE, FICE, KOPEN, bi, bj)
165 #endif /* SEAICE_MULTILEVEL */
166
167 ENDDO
168 ENDDO
169
170 #endif /* ALLOW_SEAICE */
171
172 RETURN
173 END

  ViewVC Help
Powered by ViewVC 1.1.22