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

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

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

revision 1.1 by heimbach, Mon Nov 11 22:01:21 2002 UTC revision 1.1.2.8 by dimitri, Fri May 23 17:51:22 2003 UTC
# Line 0  Line 1 
1    C
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           COMMON /SEAICE_BOUND_RL/
23         &    MAX_HEFF, MIN_ATEMP, MIN_LWDOWN, MAX_TICE, MIN_TICE,
24         &    SEAICE_EPS, SEAICE_EPS_SQ
25          _RL SEAICE_EPS, SEAICE_EPS_SQ
26          _RL MAX_HEFF, MIN_ATEMP, MIN_LWDOWN, MAX_TICE, MIN_TICE
27    
28    C     === Routine arguments ===
29    C     myThid - Thread no. that called this routine.
30          _RL A22
31          INTEGER myThid
32    CEndOfInterface
33    
34    #ifdef ALLOW_SEAICE
35    
36    C     === Local variables ===
37    C     i,j,bi,bj - Loop counters
38    
39          INTEGER i, j, bi, bj
40          INTEGER KOPEN
41          _RL U1, V1, SPEED_SQ
42          _RL HICE (1-OLx:sNx+OLx, 1-OLy:sNy+OLy)
43          _RL UG   (1-OLx:sNx+OLx, 1-OLy:sNy+OLy)
44    
45    #ifdef SEAICE_MULTILEVEL
46          INTEGER it
47          _RL RK
48          _RL HICEP(1-OLx:sNx+OLx, 1-OLy:sNy+OLy)
49          _RL FICEP(1-OLx:sNx+OLx, 1-OLy:sNy+OLy)
50    #endif
51    
52    C if this is not done before then do it here
53          _EXCH_XY_R8(UWIND, myThid)
54          _EXCH_XY_R8(VWIND, myThid)
55    
56    c$taf loop = parallel
57          DO bj=myByLo(myThid),myByHi(myThid)
58    c$taf loop = parallel
59           DO bi=myBxLo(myThid),myBxHi(myThid)
60    
61    C DETERMINE AMOUNT OF OPEN WATER AND ICE THICKNESS
62            DO J=1,sNy
63             DO I=1,sNx
64              AREA(I,J,2,bi,bj)=MAX(A22,AREA(I,J,2,bi,bj))
65              FHEFF(I,J,bi,bj)=0.0 _d 0
66    #ifdef SEAICE_MULTILEVEL
67              FICEP(I,J)=0.0 _d 0
68    #endif
69              HICE(I,J)=HEFF(I,J,2,bi,bj)/AREA(I,J,2,bi,bj)
70             ENDDO
71            ENDDO
72    
73    C NOW DETERMINE MIXED LAYER TEMPERATURE
74            DO J=1,sNy
75             DO I=1,sNx
76              TMIX(I,J,bi,bj)=theta(I,J,1,bi,bj)+273.16 _d +00
77    #ifdef SEAICE_DEBUG
78              TMIX(I,J,bi,bj)=MAX(TMIX(I,J,bi,bj),271.2 _d +00)
79    #endif
80             ENDDO
81            ENDDO
82    
83            DO J=1,sNy
84             DO I=1,sNx
85              U1=0.25 _d 0*(UWIND(I+1,J+1,bi,bj)+UWIND(I+1,J,bi,bj)
86         1      +UWIND(I,J+1,bi,bj)+UWIND(I,J,bi,bj))
87              V1=0.25 _d 0*(VWIND(I+1,J+1,bi,bj)+VWIND(I+1,J,bi,bj)
88         1      +VWIND(I,J+1,bi,bj)+VWIND(I,J,bi,bj))
89              SPEED_SQ = U1**2 + V1**2
90              IF ( SPEED_SQ .LE. SEAICE_EPS_SQ ) THEN
91                 UG(I,J)=SEAICE_EPS
92              ELSE
93                 UG(I,J)=SQRT(SPEED_SQ)
94              ENDIF
95             ENDDO
96            ENDDO
97    
98    C NOW DETERMINE GROWTH RATES
99    C FIRST DO OPEN WATER
100            KOPEN=-1
101            CALL BUDGET(UG, TMIX, HICE, FO, KOPEN, bi, bj)
102    C NOW DO ICE
103            KOPEN=1
104    #ifdef SEAICE_MULTILEVEL
105            DO IT=1,7
106             DO J=1,sNy
107              DO I=1,sNx
108               RK=IT*1.0
109               HICEP(I,J)=(HICE(I,J)/7.0 _d 0)*((2.0 _d 0*RK)-1.0 _d 0)
110               TICE(I,J,bi,bj)=TICES(I,J,IT,bi,bj)
111              ENDDO
112             ENDDO
113             CALL BUDGET(UG, TICE, HICEP, FICE, KOPEN, bi, bj)
114             DO J=1,sNy
115              DO I=1,sNx
116               FICEP(I,J)=(FICE(I,J,bi,bj)/7.0 _d 0)+FICEP(I,J)
117               TICES(I,J,IT,bi,bj)=TICE(I,J,bi,bj)
118              ENDDO
119             ENDDO
120            ENDDO
121            DO J=1,sNy
122             DO I=1,sNx
123              FICE(I,J,bi,bj)=FICEP(I,J)
124             ENDDO
125            ENDDO
126    #else  /* SEAICE_MULTILEVEL */
127            CALL BUDGET(UG, TICE, HICE, FICE, KOPEN, bi, bj)
128    #endif /* SEAICE_MULTILEVEL */
129    
130           ENDDO
131          ENDDO
132    
133    #endif /* ALLOW_SEAICE */
134    
135          RETURN
136          END

Legend:
Removed from v.1.1  
changed lines
  Added in v.1.1.2.8

  ViewVC Help
Powered by ViewVC 1.1.22