/[MITgcm]/MITgcm_contrib/dgoldberg/streamice/streamice_init_fixed.F
ViewVC logotype

Annotation of /MITgcm_contrib/dgoldberg/streamice/streamice_init_fixed.F

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


Revision 1.1 - (hide annotations) (download)
Thu Mar 29 15:59:21 2012 UTC (13 years, 3 months ago) by heimbach
Branch: MAIN
Initial check-in of Dan Goldberg's streamice package

1 heimbach 1.1 C $Header: /u/gcmpack/MITgcm/pkg/streamice/streamice_init_fixed.F,v 1.2 2006/08/07 21:13:52 dng Exp $
2     C $Name: $
3    
4     #include "STREAMICE_OPTIONS.h"
5    
6     C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
7     CBOP 0
8     C !ROUTINE: STREAMICE_INIT_FIXED
9    
10     C !INTERFACE:
11     SUBROUTINE STREAMICE_INIT_FIXED( myThid )
12    
13     C !DESCRIPTION:
14     C Initialize STREAMICE variables that are kept fixed during the run.
15    
16     C !USES:
17     IMPLICIT NONE
18     #include "EEPARAMS.h"
19     #include "SIZE.h"
20     #include "PARAMS.h"
21     #include "STREAMICE.h"
22     #include "STREAMICE_CG.h"
23     #include "STREAMICE_BDRY.h"
24     #include "GRID.h"
25    
26     C myThid :: my Thread Id number
27     INTEGER myThid
28     CEOP
29    
30     C !LOCAL VARIABLES:
31     C === Local variables ===
32     INTEGER bi, bj, i, j, Gi, Gj
33     _RL x, y
34     CHARACTER*(MAX_LEN_MBUF) msgBuf
35    
36     #ifdef ALLOW_STREAMICE
37    
38     #ifdef ALLOW_MNC
39    
40     IF ( useMNC .AND. (streamice_tave_mnc.OR.streamice_dump_mnc)
41     & ) THEN
42     C CALL STREAMICE_MNC_INIT( myThid )
43     ENDIF
44     #endif /* ALLOW_MNC */
45    
46     #ifdef ALLOW_DIAGNOSTICS
47     IF ( useDiagnostics ) THEN
48     CALL STREAMICE_INIT_DIAGNOSTICS( myThid )
49     ENDIF
50     #endif
51    
52     IF ( STREAMICE_calve_to_mask ) THEN
53     IF ( STREAMICEcalveMaskFile .NE. ' ') THEN
54     _BARRIER
55     C The 0 is the "iteration" argument. The ' ' is an empty suffix
56     CALL READ_FLD_XY_RL( STREAMICEcalveMaskFile, ' ',
57     & STREAMICE_calve_mask, 0, myThid )
58     ELSE
59     WRITE(msgBuf,'(A)') 'INIT CALVE MASK - NOT IMPLENTED'
60     CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
61     & SQUEEZE_RIGHT , 1)
62     ENDIF
63     ENDIF
64    
65     C- fill in the overlap (+ BARRIER):
66     _EXCH_XY_RL(STREAMICE_calve_mask, myThid )
67    
68     DO bj = myByLo(myThid), myByHi(myThid)
69     DO bi = myBxLo(myThid), myBxHi(myThid)
70     DO j=1,sNy
71     DO i=1,sNx
72    
73     C INIT VALUES FOR METRIC TERMS
74    
75     k1AtC_str(i,j,bi,bj) = recip_rA(i,j,bi,bj) *
76     & (dxG(i+1,j,bi,bj)-dxG(i,j,bi,bj))
77     k2AtC_str(i,j,bi,bj) = recip_rA(i,j,bi,bj) *
78     & (dyG(i,j+1,bi,bj)-dyG(i,j,bi,bj))
79    
80     C INIT BDRY CONDITIONS
81    
82     Gi = (myXGlobalLo-1)+(bi-1)*sNx+i
83     Gj = (myYGlobalLo-1)+(bj-1)*sNy+j
84     x = xC(i,j,bi,bj)
85     y = yC(i,j,bi,bj)
86    
87     STREAMICE_ufacemask_bdry (i,j,bi,bj) = -1.0
88     STREAMICE_vfacemask_bdry (i,j,bi,bj) = -1.0
89    
90     IF (Gi .EQ. 1) THEN
91     C INITIALIZE BOUNDARY CONDS AT WEST
92     IF ((y .gt. min_y_noflow_WEST) .AND.
93     & (y .le. max_y_noflow_WEST)) THEN
94     STREAMICE_ufacemask_bdry (i,j,bi,bj) = 0.0
95     ENDIF
96     IF ((y .gt. min_y_noStress_WEST) .AND.
97     & (y .le. max_y_noStress_WEST)) THEN
98     STREAMICE_ufacemask_bdry (i,j,bi,bj) = 1.0
99     ENDIF
100     IF ((y .gt. min_y_FluxBdry_WEST) .AND.
101     & (y .le. max_y_FluxBdry_WEST)) THEN
102     STREAMICE_ufacemask_bdry (i,j,bi,bj) = 4.0
103     u_flux_bdry_SI (i,j,bi,bj) = flux_bdry_val_WEST
104     ENDIF
105     IF ((y .gt. min_y_Dirich_WEST) .AND.
106     & (y .le. max_y_Dirich_WEST)) THEN
107     STREAMICE_ufacemask_bdry (i,j,bi,bj) = 3.0
108     u_bdry_values_SI (i,j,bi,bj) = 0.0
109     ENDIF
110     IF ((y .gt. min_y_CFBC_WEST) .AND.
111     & (y .le. max_y_CFBC_WEST)) THEN
112     STREAMICE_ufacemask_bdry (i,j,bi,bj) = 2.0
113     ENDIF
114     ENDIF
115    
116     IF (Gi .EQ. Nx) THEN
117     C INITIALIZE BOUNDARY CONDS AT EAST
118     IF ((y .gt. min_y_noflow_EAST) .AND.
119     & (y .le. max_y_noflow_EAST)) THEN
120     STREAMICE_ufacemask_bdry (i,j,bi,bj) = 0.0
121     ENDIF
122     IF ((y .gt. min_y_noStress_EAST) .AND.
123     & (y .le. max_y_noStress_EAST)) THEN
124     STREAMICE_ufacemask_bdry (i,j,bi,bj) = 1.0
125     ENDIF
126     IF ((y .gt. min_y_FluxBdry_EAST) .AND.
127     & (y .le. max_y_FluxBdry_EAST)) THEN
128     STREAMICE_ufacemask_bdry (i,j,bi,bj) = 4.0
129     u_flux_bdry_SI (i,j,bi,bj) = flux_bdry_val_EAST
130     ENDIF
131     IF ((y .gt. min_y_Dirich_EAST) .AND.
132     & (y .le. max_y_Dirich_EAST)) THEN
133     STREAMICE_ufacemask_bdry (i,j,bi,bj) = 3.0
134     u_bdry_values_SI (i,j,bi,bj) = 0. _d 0
135     ENDIF
136     IF ((y .gt. min_y_CFBC_EAST) .AND.
137     & (y .le. max_y_CFBC_EAST)) THEN
138     STREAMICE_ufacemask_bdry (i,j,bi,bj) = 2.0
139     ENDIF
140     ENDIF
141    
142     IF (Gj .EQ. 1) THEN
143     C INITIALIZE BOUNDARY CONDS AT SOUTH
144     IF ((x .gt. min_x_noflow_SOUTH) .AND.
145     & (x .le. max_x_noflow_SOUTH)) THEN
146     STREAMICE_vfacemask_bdry (i,j,bi,bj) = 0.0
147     ENDIF
148     IF ((x .gt. min_x_noStress_SOUTH) .AND.
149     & (x .le. max_x_noStress_SOUTH)) THEN
150     STREAMICE_vfacemask_bdry (i,j,bi,bj) = 1.0
151     ENDIF
152     IF ((x .gt. min_x_FluxBdry_SOUTH) .AND.
153     & (x .le. max_x_FluxBdry_SOUTH)) THEN
154     STREAMICE_vfacemask_bdry (i,j,bi,bj) = 4.0
155     u_flux_bdry_SI (i,j,bi,bj) = flux_bdry_val_SOUTH
156     ENDIF
157     IF ((x .gt. min_x_Dirich_SOUTH) .AND.
158     & (x .le. max_x_Dirich_SOUTH)) THEN
159     STREAMICE_vfacemask_bdry (i,j,bi,bj) = 3.0
160     u_bdry_values_SI (i,j,bi,bj) = 0. _d 0
161     ENDIF
162     IF ((x .gt. min_x_CFBC_SOUTH) .AND.
163     & (x .le. max_x_CFBC_SOUTH)) THEN
164     STREAMICE_vfacemask_bdry (i,j,bi,bj) = 2.0
165     ENDIF
166     ENDIF
167    
168     IF (Gj .EQ. Ny) THEN
169     C INITIALIZE BOUNDARY CONDS AT NORTH
170     IF ((x .gt. min_x_noflow_NORTH) .AND.
171     & (x .le. max_x_noflow_NORTH)) THEN
172     STREAMICE_vfacemask_bdry (i,j,bi,bj) = 0. _d 0
173     ENDIF
174     IF ((x .gt. min_x_noStress_NORTH) .AND.
175     & (x .le. max_x_noStress_NORTH)) THEN
176     STREAMICE_vfacemask_bdry (i,j,bi,bj) = 1.0
177     ENDIF
178     IF ((x .gt. min_x_FluxBdry_NORTH) .AND.
179     & (x .le. max_x_FluxBdry_NORTH)) THEN
180     STREAMICE_vfacemask_bdry (i,j,bi,bj) = 4.0
181     v_flux_bdry_SI (i,j,bi,bj) = flux_bdry_val_NORTH
182     ENDIF
183     IF ((x .gt. min_x_Dirich_NORTH) .AND.
184     & (x .le. max_x_Dirich_NORTH)) THEN
185     STREAMICE_vfacemask_bdry (i,j,bi,bj) = 3.0
186     v_bdry_values_SI (i,j,bi,bj) = 0. _d 0
187     ENDIF
188     IF ((x .gt. min_x_CFBC_NORTH) .AND.
189     & (x .le. max_x_CFBC_NORTH)) THEN
190     STREAMICE_vfacemask_bdry (i,j,bi,bj) = 2.0
191     ENDIF
192     ENDIF
193    
194     ENDDO
195     ENDDO
196     ENDDO
197     ENDDO
198    
199     _EXCH_XY_RL(k1AtC_str, myThid )
200     _EXCH_XY_RL(k2AtC_str, myThid )
201     _EXCH_XY_RL(STREAMICE_ufacemask_bdry, myThid )
202     _EXCH_XY_RL(STREAMICE_vfacemask_bdry, myThid )
203     _EXCH_XY_RL(u_bdry_values_SI, myThid )
204     _EXCH_XY_RL(v_bdry_values_SI, myThid )
205     _EXCH_XY_RL(u_flux_bdry_SI, myThid )
206     _EXCH_XY_RL(v_flux_bdry_SI, myThid )
207    
208     Xquad (1) = .5 * (1.-1./sqrt(3.))
209     Xquad (2) = .5 * (1.+1./sqrt(3.))
210    
211     CALL STREAMICE_INIT_PHI( myThid )
212    
213    
214    
215     #endif
216    
217     RETURN
218     END
219    

  ViewVC Help
Powered by ViewVC 1.1.22