/[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.2 - (hide annotations) (download)
Tue Sep 18 17:06:48 2012 UTC (12 years, 10 months ago) by dgoldberg
Branch: MAIN
Changes since 1.1: +28 -6 lines
changes for periodic boundary conds and hybrid stress balance

1 dgoldberg 1.2 C $Header: /u/gcmpack/MITgcm_contrib/dgoldberg/streamice/streamice_init_fixed.F,v 1.1 2012/03/29 15:59:21 heimbach Exp $
2 heimbach 1.1 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 dgoldberg 1.2 INTEGER bi, bj, i, j, Gi, Gj, m
33 heimbach 1.1 _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 dgoldberg 1.2
66     ! INITIALIZE SIGMA COORD
67     IF (STREAMICEsigcoordInit.eq.'FILE') THEN
68     WRITE(msgBuf,'(A)') 'SIG FROM FILE - NOT IMPLENTED'
69     CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
70     & SQUEEZE_RIGHT , 1)
71     ELSEIF (STREAMICEsigcoordInit.eq.'UNIFORM') THEN
72     do m=1,Nr
73     streamice_sigma_coord (m) = 1./Nr * (m-0.5)
74     streamice_delsigma (m) = 1./Nr
75     enddo
76     ELSE
77     WRITE(msgBuf,'(A)') 'SIG COORD INIT - NOT IMPLENTED'
78     CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
79     & SQUEEZE_RIGHT , 1)
80     ENDIF
81     !!!!!!!!!!!!!!!!!!!!!!!!!
82    
83 heimbach 1.1 C- fill in the overlap (+ BARRIER):
84     _EXCH_XY_RL(STREAMICE_calve_mask, myThid )
85    
86     DO bj = myByLo(myThid), myByHi(myThid)
87     DO bi = myBxLo(myThid), myBxHi(myThid)
88     DO j=1,sNy
89     DO i=1,sNx
90    
91     C INIT VALUES FOR METRIC TERMS
92    
93     k1AtC_str(i,j,bi,bj) = recip_rA(i,j,bi,bj) *
94     & (dxG(i+1,j,bi,bj)-dxG(i,j,bi,bj))
95     k2AtC_str(i,j,bi,bj) = recip_rA(i,j,bi,bj) *
96     & (dyG(i,j+1,bi,bj)-dyG(i,j,bi,bj))
97    
98 dgoldberg 1.2 #ifdef STREAMICE_HYBRID_STRESS
99     streamice_basal_geom (i,j,bi,bj) = 1.0
100     #endif
101    
102 heimbach 1.1 C INIT BDRY CONDITIONS
103    
104     Gi = (myXGlobalLo-1)+(bi-1)*sNx+i
105     Gj = (myYGlobalLo-1)+(bj-1)*sNy+j
106     x = xC(i,j,bi,bj)
107     y = yC(i,j,bi,bj)
108    
109     STREAMICE_ufacemask_bdry (i,j,bi,bj) = -1.0
110     STREAMICE_vfacemask_bdry (i,j,bi,bj) = -1.0
111    
112 dgoldberg 1.2 IF (Gi.EQ.1 .AND. .NOT. STREAMICE_EW_periodic) THEN
113 heimbach 1.1 C INITIALIZE BOUNDARY CONDS AT WEST
114     IF ((y .gt. min_y_noflow_WEST) .AND.
115     & (y .le. max_y_noflow_WEST)) THEN
116     STREAMICE_ufacemask_bdry (i,j,bi,bj) = 0.0
117     ENDIF
118     IF ((y .gt. min_y_noStress_WEST) .AND.
119     & (y .le. max_y_noStress_WEST)) THEN
120     STREAMICE_ufacemask_bdry (i,j,bi,bj) = 1.0
121     ENDIF
122     IF ((y .gt. min_y_FluxBdry_WEST) .AND.
123     & (y .le. max_y_FluxBdry_WEST)) THEN
124     STREAMICE_ufacemask_bdry (i,j,bi,bj) = 4.0
125     u_flux_bdry_SI (i,j,bi,bj) = flux_bdry_val_WEST
126     ENDIF
127     IF ((y .gt. min_y_Dirich_WEST) .AND.
128     & (y .le. max_y_Dirich_WEST)) THEN
129     STREAMICE_ufacemask_bdry (i,j,bi,bj) = 3.0
130     u_bdry_values_SI (i,j,bi,bj) = 0.0
131     ENDIF
132     IF ((y .gt. min_y_CFBC_WEST) .AND.
133     & (y .le. max_y_CFBC_WEST)) THEN
134     STREAMICE_ufacemask_bdry (i,j,bi,bj) = 2.0
135     ENDIF
136     ENDIF
137    
138 dgoldberg 1.2 IF (Gi.EQ.Nx .AND. .NOT. STREAMICE_EW_periodic) THEN
139 heimbach 1.1 C INITIALIZE BOUNDARY CONDS AT EAST
140     IF ((y .gt. min_y_noflow_EAST) .AND.
141     & (y .le. max_y_noflow_EAST)) THEN
142     STREAMICE_ufacemask_bdry (i,j,bi,bj) = 0.0
143     ENDIF
144     IF ((y .gt. min_y_noStress_EAST) .AND.
145     & (y .le. max_y_noStress_EAST)) THEN
146     STREAMICE_ufacemask_bdry (i,j,bi,bj) = 1.0
147     ENDIF
148     IF ((y .gt. min_y_FluxBdry_EAST) .AND.
149     & (y .le. max_y_FluxBdry_EAST)) THEN
150     STREAMICE_ufacemask_bdry (i,j,bi,bj) = 4.0
151     u_flux_bdry_SI (i,j,bi,bj) = flux_bdry_val_EAST
152     ENDIF
153     IF ((y .gt. min_y_Dirich_EAST) .AND.
154     & (y .le. max_y_Dirich_EAST)) THEN
155     STREAMICE_ufacemask_bdry (i,j,bi,bj) = 3.0
156     u_bdry_values_SI (i,j,bi,bj) = 0. _d 0
157     ENDIF
158     IF ((y .gt. min_y_CFBC_EAST) .AND.
159     & (y .le. max_y_CFBC_EAST)) THEN
160     STREAMICE_ufacemask_bdry (i,j,bi,bj) = 2.0
161     ENDIF
162     ENDIF
163    
164 dgoldberg 1.2 IF (Gj.EQ.1 .AND. .NOT. STREAMICE_NS_periodic) THEN
165 heimbach 1.1 C INITIALIZE BOUNDARY CONDS AT SOUTH
166     IF ((x .gt. min_x_noflow_SOUTH) .AND.
167     & (x .le. max_x_noflow_SOUTH)) THEN
168     STREAMICE_vfacemask_bdry (i,j,bi,bj) = 0.0
169     ENDIF
170     IF ((x .gt. min_x_noStress_SOUTH) .AND.
171     & (x .le. max_x_noStress_SOUTH)) THEN
172     STREAMICE_vfacemask_bdry (i,j,bi,bj) = 1.0
173     ENDIF
174     IF ((x .gt. min_x_FluxBdry_SOUTH) .AND.
175     & (x .le. max_x_FluxBdry_SOUTH)) THEN
176     STREAMICE_vfacemask_bdry (i,j,bi,bj) = 4.0
177     u_flux_bdry_SI (i,j,bi,bj) = flux_bdry_val_SOUTH
178     ENDIF
179     IF ((x .gt. min_x_Dirich_SOUTH) .AND.
180     & (x .le. max_x_Dirich_SOUTH)) THEN
181     STREAMICE_vfacemask_bdry (i,j,bi,bj) = 3.0
182     u_bdry_values_SI (i,j,bi,bj) = 0. _d 0
183     ENDIF
184     IF ((x .gt. min_x_CFBC_SOUTH) .AND.
185     & (x .le. max_x_CFBC_SOUTH)) THEN
186     STREAMICE_vfacemask_bdry (i,j,bi,bj) = 2.0
187     ENDIF
188     ENDIF
189    
190 dgoldberg 1.2 IF (Gj.EQ.Ny .AND. .NOT. STREAMICE_NS_periodic) THEN
191 heimbach 1.1 C INITIALIZE BOUNDARY CONDS AT NORTH
192     IF ((x .gt. min_x_noflow_NORTH) .AND.
193     & (x .le. max_x_noflow_NORTH)) THEN
194     STREAMICE_vfacemask_bdry (i,j,bi,bj) = 0. _d 0
195     ENDIF
196     IF ((x .gt. min_x_noStress_NORTH) .AND.
197     & (x .le. max_x_noStress_NORTH)) THEN
198     STREAMICE_vfacemask_bdry (i,j,bi,bj) = 1.0
199     ENDIF
200     IF ((x .gt. min_x_FluxBdry_NORTH) .AND.
201     & (x .le. max_x_FluxBdry_NORTH)) THEN
202     STREAMICE_vfacemask_bdry (i,j,bi,bj) = 4.0
203     v_flux_bdry_SI (i,j,bi,bj) = flux_bdry_val_NORTH
204     ENDIF
205     IF ((x .gt. min_x_Dirich_NORTH) .AND.
206     & (x .le. max_x_Dirich_NORTH)) THEN
207     STREAMICE_vfacemask_bdry (i,j,bi,bj) = 3.0
208     v_bdry_values_SI (i,j,bi,bj) = 0. _d 0
209     ENDIF
210     IF ((x .gt. min_x_CFBC_NORTH) .AND.
211     & (x .le. max_x_CFBC_NORTH)) THEN
212     STREAMICE_vfacemask_bdry (i,j,bi,bj) = 2.0
213     ENDIF
214     ENDIF
215    
216     ENDDO
217     ENDDO
218     ENDDO
219     ENDDO
220    
221     _EXCH_XY_RL(k1AtC_str, myThid )
222     _EXCH_XY_RL(k2AtC_str, myThid )
223     _EXCH_XY_RL(STREAMICE_ufacemask_bdry, myThid )
224     _EXCH_XY_RL(STREAMICE_vfacemask_bdry, myThid )
225     _EXCH_XY_RL(u_bdry_values_SI, myThid )
226     _EXCH_XY_RL(v_bdry_values_SI, myThid )
227     _EXCH_XY_RL(u_flux_bdry_SI, myThid )
228     _EXCH_XY_RL(v_flux_bdry_SI, myThid )
229    
230     Xquad (1) = .5 * (1.-1./sqrt(3.))
231     Xquad (2) = .5 * (1.+1./sqrt(3.))
232    
233     CALL STREAMICE_INIT_PHI( myThid )
234    
235    
236    
237     #endif
238    
239     RETURN
240     END
241    

  ViewVC Help
Powered by ViewVC 1.1.22