/[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.9 - (hide 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 heimbach 1.2 C $Header:
2    
3     #include "SEAICE_OPTIONS.h"
4 dimitri 1.9
5 heimbach 1.2 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 heimbach 1.8
23     #ifdef ALLOW_AUTODIFF_TAMC
24     # include "tamc.h"
25     #endif
26    
27 dimitri 1.6 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 heimbach 1.2 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 dimitri 1.4 C i,j,bi,bj - Loop counters
43 heimbach 1.2
44 dimitri 1.4 INTEGER i, j, bi, bj
45 heimbach 1.2 INTEGER KOPEN
46 dimitri 1.9 _RL SPEED_SQ
47 heimbach 1.2 _RL HICE (1-OLx:sNx+OLx, 1-OLy:sNy+OLy)
48     _RL UG (1-OLx:sNx+OLx, 1-OLy:sNy+OLy)
49    
50 dimitri 1.7 #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 heimbach 1.8 CADJ loop = parallel
58 heimbach 1.2 DO bj=myByLo(myThid),myByHi(myThid)
59 heimbach 1.8 CADJ loop = parallel
60 heimbach 1.2 DO bi=myBxLo(myThid),myBxHi(myThid)
61 heimbach 1.8 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 heimbach 1.2
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 dimitri 1.3 FHEFF(I,J,bi,bj)=0.0 _d 0
86 dimitri 1.7 #ifdef SEAICE_MULTILEVEL
87     FICEP(I,J)=0.0 _d 0
88     #endif
89 heimbach 1.8 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 heimbach 1.2 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 dimitri 1.3 TMIX(I,J,bi,bj)=theta(I,J,1,bi,bj)+273.16 _d +00
105 heimbach 1.2 #ifdef SEAICE_DEBUG
106 dimitri 1.3 TMIX(I,J,bi,bj)=MAX(TMIX(I,J,bi,bj),271.2 _d +00)
107 dimitri 1.5 #endif
108 heimbach 1.2 ENDDO
109     ENDDO
110    
111     DO J=1,sNy
112     DO I=1,sNx
113 dimitri 1.9 SPEED_SQ = UWIND(I,J,bi,bj)**2 + VWIND(I,J,bi,bj)**2
114 dimitri 1.7 IF ( SPEED_SQ .LE. SEAICE_EPS_SQ ) THEN
115 dimitri 1.6 UG(I,J)=SEAICE_EPS
116     ELSE
117     UG(I,J)=SQRT(SPEED_SQ)
118     ENDIF
119 heimbach 1.2 ENDDO
120     ENDDO
121    
122 heimbach 1.8 #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 heimbach 1.2 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 heimbach 1.8
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 heimbach 1.2 C NOW DO ICE
140     KOPEN=1
141 dimitri 1.7 #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 heimbach 1.2 CALL BUDGET(UG, TICE, HICE, FICE, KOPEN, bi, bj)
165 dimitri 1.7 #endif /* SEAICE_MULTILEVEL */
166 heimbach 1.2
167     ENDDO
168     ENDDO
169    
170 dimitri 1.5 #endif /* ALLOW_SEAICE */
171 heimbach 1.2
172     RETURN
173     END

  ViewVC Help
Powered by ViewVC 1.1.22