/[MITgcm]/MITgcm_contrib/dgoldberg/streamice/STREAMICE.h
ViewVC logotype

Annotation of /MITgcm_contrib/dgoldberg/streamice/STREAMICE.h

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


Revision 1.17 - (hide annotations) (download)
Mon Dec 10 02:34:45 2012 UTC (12 years, 7 months ago) by dgoldberg
Branch: MAIN
Changes since 1.16: +9 -4 lines
File MIME type: text/plain
various updates, mostly adding ifdefs to include statements

1 dgoldberg 1.12 C---+----1--+-+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
2 heimbach 1.1
3     #ifdef ALLOW_STREAMICE
4    
5     C -------------------------- REAL PARAMS ---------------------------------------------------
6    
7     COMMON /STREAMICE_PARMS_R/
8     & streamice_density, streamice_density_ocean_avg,
9 dgoldberg 1.17 & A_glen_isothermal, n_glen, eps_glen_min, eps_u_min,
10 heimbach 1.1 & C_basal_fric_const, n_basal_friction, streamice_input_flux_unif,
11     & streamice_vel_update, streamice_cg_tol, streamice_nonlin_tol,
12 dgoldberg 1.5 & streamice_nonlin_tol_fp,
13 dgoldberg 1.7 & streamice_CFL_factor, streamice_adjDump,
14     & streamice_bg_surf_slope_x, streamice_bg_surf_slope_y,
15 dgoldberg 1.14 & streamice_kx_b_init, streamice_ky_b_init,
16 dgoldberg 1.16 & streamice_wgt_drift, streamice_wgt_surf,
17 dgoldberg 1.17 & streamice_wgt_avthick, streamice_wgt_vel,
18     & streamice_addl_backstress
19 heimbach 1.1 _RL streamice_density, streamice_density_ocean_avg
20 dgoldberg 1.17 _RL A_glen_isothermal, n_glen, eps_glen_min, eps_u_min
21 heimbach 1.1 _RL C_basal_fric_const
22     _RL n_basal_friction
23     _RL streamice_input_flux_unif
24     _RL streamice_vel_update
25     _RL streamice_cg_tol, streamice_nonlin_tol
26 dgoldberg 1.5 _RL streamice_nonlin_tol_fp
27 heimbach 1.1 _RL streamice_CFL_factor
28 heimbach 1.4 _RL streamice_adjDump
29 dgoldberg 1.7 _RL streamice_bg_surf_slope_x, streamice_bg_surf_slope_y
30     _RL streamice_kx_b_init, streamice_ky_b_init
31 dgoldberg 1.16 _RL streamice_wgt_drift, streamice_wgt_surf
32     _RL streamice_wgt_avthick, streamice_wgt_vel
33 dgoldberg 1.17 _RL streamice_addl_backstress
34 dgoldberg 1.14
35 heimbach 1.1
36     C parms for parameterized initial thickness
37     C SHELF_MAX_DRAFT: max thickness of ice in m
38     C SHELF_MIN_DRAFT: min thickness of ice in m
39     C SHELF_EDGE_POS: extent of ice shelf in (km?)
40     C SHELF_SLOPE_SCALE: dist over which shelf slopes (km?)
41     C SHELF_FLAT_WIDTH: width of flat shelf (km?)
42     C also must be aware of units (m for cartesian, deg for curvilinear, m/deg for CYLINDRICAL POLAR)
43     C FLOW_DIR: 1.0=west, 2.0=east, 3.0=south, 4.0=north
44    
45     COMMON /STREAMICE_H_INIT_R/
46     & shelf_max_draft,
47     & shelf_min_draft,
48     & shelf_edge_pos,
49     & shelf_slope_scale,
50     & shelf_flat_width,
51     & flow_dir
52     _RL shelf_max_draft
53     _RL shelf_min_draft
54     _RL shelf_edge_pos
55     _RL shelf_slope_scale
56     _RL shelf_flat_width
57     _RL flow_dir
58    
59     C -------------------------- INT PARAMS ---------------------------------------------------
60    
61 heimbach 1.3 INTEGER streamice_max_nl
62     PARAMETER ( streamice_max_nl = 100 )
63    
64 heimbach 1.1 COMMON /STREAMICE_PARMS_I/
65     & streamice_max_cg_iter, streamice_max_nl_iter,
66     & streamice_vel_upd_counter, streamice_nstep_velocity,
67     & streamice_n_sub_regularize
68     INTEGER streamice_max_cg_iter, streamice_max_nl_iter
69     INTEGER streamice_vel_upd_counter, streamice_nstep_velocity
70     INTEGER streamice_n_sub_regularize
71    
72     C -------------------------- CHAR PARAMS ---------------------------------------------------
73    
74     CHARACTER*(MAX_LEN_FNAM) STREAMICEthickFile
75     CHARACTER*(MAX_LEN_FNAM) STREAMICEthickInit
76     CHARACTER*(MAX_LEN_FNAM) STREAMICEcalveMaskFile
77 dgoldberg 1.7 CHARACTER*(MAX_LEN_FNAM) STREAMICEsigcoordInit
78     CHARACTER*(MAX_LEN_FNAM) STREAMICEsigcoordFile
79     CHARACTER*(MAX_LEN_FNAM) STREAMICEdelsigFile
80     CHARACTER*(MAX_LEN_FNAM) STREAMICEbasalTracConfig
81     CHARACTER*(MAX_LEN_FNAM) STREAMICEbasalTracFile
82     CHARACTER*(MAX_LEN_FNAM) STREAMICEvelOptimFile
83 heimbach 1.1 COMMON /STREAMICE_PARM_C/
84     & STREAMICEthickInit,
85     & STREAMICEthickFile,
86 dgoldberg 1.7 & STREAMICEcalveMaskFile,
87     & STREAMICEsigcoordInit,
88     & STREAMICEsigcoordFile,
89     & STREAMICEdelsigFile,
90     & STREAMICEbasalTracConfig,
91     & STREAMICEbasalTracFile,
92     & STREAMICEvelOptimFile
93 heimbach 1.1
94     C -------------------------- LOGICAL PARAMS ---------------------------------------------------
95    
96     LOGICAL STREAMICEison
97     LOGICAL STREAMICE_dump_mdsio
98     LOGICAL STREAMICE_tave_mdsio
99     LOGICAL STREAMICE_dump_mnc
100     LOGICAL STREAMICE_tave_mnc
101     LOGICAL STREAMICE_GL_regularize, STREAMICE_move_front
102     LOGICAL STREAMICE_calve_to_mask
103 heimbach 1.3 LOGICAL STREAMICE_construct_matrix
104 heimbach 1.1 LOGICAL STREAMICE_lower_cg_tol
105 dgoldberg 1.7 LOGICAL STREAMICE_diagnostic_only
106 dgoldberg 1.9 LOGICAL STREAMICE_ppm_driving_stress
107 dgoldberg 1.8 LOGICAL STREAMICE_h_ctrl_const_surf
108 dgoldberg 1.7
109     C The following parameters specify periodic boundary conditions.
110     C For now this will completely override all other boundary conditions
111     C and apply to the entire boundary
112    
113     LOGICAL STREAMICE_NS_periodic
114     LOGICAL STREAMICE_EW_periodic
115    
116     C LOGICAL STREAMICE_hybrid_stress
117    
118 heimbach 1.1 COMMON /STREAMICE_PARM_L/
119     & STREAMICEison,
120     & STREAMICE_dump_mdsio, STREAMICE_tave_mdsio,
121     & STREAMICE_dump_mnc, STREAMICE_tave_mnc,
122     & STREAMICE_GL_regularize, STREAMICE_move_front,
123     & STREAMICE_calve_to_mask,
124 heimbach 1.3 & STREAMICE_construct_matrix,
125 dgoldberg 1.7 & STREAMICE_lower_cg_tol,
126     & STREAMICE_NS_periodic, STREAMICE_EW_periodic,
127 dgoldberg 1.9 & STREAMICE_diagnostic_only,
128     & STREAMICE_ppm_driving_stress,
129     & STREAMICE_h_ctrl_const_surf
130 heimbach 1.1
131     C -------------------------- AND NOW ARRAYS ---------------------------------------------------
132    
133     C EXPLANATION OF MASKS
134    
135     C STREAMICE_hmask VALUES 1=ice-covered cell
136     C 2=partially ice-covered cell (no dynamics)
137     C 0=ice-free cell (for now, it means the cell
138     C is treated as an open-ocean cell
139     C that ice shelf can flow into)
140     C -1=outside computational domain; will not change
141     C
142     C STREAMICE_umask VALUES 1=degree of freedom;
143     C 0=homogeneous dirich condition
144     C 3=inhomogeneous dirich condition
145    
146     C STREAMICE_vmask similar to umask
147    
148     C STREAMICE_ufacemask VALUES -1=unset,
149     C 0=no-flow boundary,
150     C 1=no-stress bdry
151     C 2=stress bdry condition,
152     C 3=inhomogeneous dirichlet boundary,
153     C 4=flux boundary: at these faces a flux will be specified by u_flux_bdry_SI
154     C
155     C STREAMICE_vfacemask similar to ufacemask
156     C STREAMICE_ufacemask_bdry field initialized at the beginning of simulation
157     C specified all ufacemask values except for calving front
158     C CONSTANT FOR A SIMULATION (ie not changes after streamice_init_fixed)
159     C STREAMICE_vfacemask_bdry CONSTANT FOR A SIMULATION
160     C STREAMICE_calve_mask specified allowed extent of ice shelf
161     C (should be integer, but don't know howvi sre to read ints from file)
162     C not necessarily used, but CONSTANT FOR A SIMULATION
163     C STREAMICE_float_cond will only be used if partial floatation is implemented
164    
165     C Short arrays (e.g. masks)
166     COMMON /STREAMICE_FIELDS_RS/
167     & STREAMICE_hmask,
168     & STREAMICE_umask,
169     & STREAMICE_vmask,
170     & STREAMICE_ufacemask,
171     & STREAMICE_vfacemask,
172     & STREAMICE_ufacemask_bdry,
173     & STREAMICE_vfacemask_bdry,
174     & STREAMICE_float_cond,
175 dgoldberg 1.17 & STREAMICE_calve_mask,
176     & STREAMICE_ctrl_mask
177 heimbach 1.1 _RS STREAMICE_hmask (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
178     _RS STREAMICE_umask (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
179     _RS STREAMICE_vmask (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
180     _RS STREAMICE_ufacemask
181     & (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
182     _RS STREAMICE_vfacemask
183     & (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
184     _RS STREAMICE_ufacemask_bdry
185     & (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
186     _RS STREAMICE_vfacemask_bdry
187     & (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
188     _RS STREAMICE_float_cond
189     & (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
190     _RS STREAMICE_calve_mask
191     & (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
192 dgoldberg 1.17 _RS STREAMICE_ctrl_mask
193     & (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy,Nr)
194 heimbach 1.1
195     C NOTES :
196     C STREAMICE_ufacemask_bdry, STREAMICE_vfacemask_bdry ARE CONSTANT (FIXED)
197     C STREAMICE_hmask IS PART OF **STATE**
198     C All other masks are updated within a timestep BASED ON STREAMICE_hmask
199    
200     C Number of quadrature points are hardcoded.. could turn into a CPP macro
201    
202     C REAL ARRAYS
203    
204     COMMON /STREAMICE_FIELDS_RL/
205     & H_streamice,
206     & U_streamice,
207     & V_streamice,
208     & visc_streamice,
209     & tau_beta_eff_streamice,
210     & float_frac_streamice,
211     & base_el_streamice,
212     & surf_el_streamice,
213     & area_shelf_streamice,
214     & mass_ice_streamice,
215     & u_flux_bdry_SI,
216     & v_flux_bdry_SI,
217     & h_bdry_values_SI,
218     & u_bdry_values_SI,
219     & v_bdry_values_SI,
220     & STREAMICE_dummy_array,
221 dgoldberg 1.6 & C_basal_friction,
222     & A_glen,
223 dgoldberg 1.7 & BDOT_streamice,
224 dgoldberg 1.16 & streamice_sigma_coord, streamice_delsigma,
225     & H_streamice_prev
226    
227     #ifdef STREAMICE_HYBRID_STRESS
228     COMMON /STREAMICE_HYBRID/
229 dgoldberg 1.7 & streamice_taubx, streamice_tauby,
230     & streamice_u_surf, streamice_v_surf,
231     & visc_streamice_full, streamice_omega, streamice_basal_geom,
232 dgoldberg 1.16 & streamice_vert_shear_uz, streamice_vert_shear_vz
233     #endif
234 dgoldberg 1.14
235 dgoldberg 1.9 #ifdef USE_ALT_RLOW
236 dgoldberg 1.14 COMMON /STREAMICE_RLOW/
237 dgoldberg 1.15 & R_low_si
238 dgoldberg 1.9 #endif
239 heimbach 1.10
240 dgoldberg 1.11
241 heimbach 1.1 _RL H_streamice (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
242     _RL U_streamice (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
243     _RL V_streamice (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
244     _RL visc_streamice (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
245     _RL tau_beta_eff_streamice(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
246     _RL float_frac_streamice (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
247     _RL surf_el_streamice (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
248     _RL base_el_streamice (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
249     _RL area_shelf_streamice (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
250     _RL mass_ice_streamice (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
251     _RL u_flux_bdry_SI (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
252     _RL v_flux_bdry_SI (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
253     _RL h_bdry_values_SI (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
254     _RL u_bdry_values_SI (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
255     _RL v_bdry_values_SI (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
256     _RL C_basal_friction (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
257 dgoldberg 1.6 _RL A_glen (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
258 dgoldberg 1.16 _RL streamice_sigma_coord (Nr)
259     _RL streamice_delsigma (Nr)
260    
261 dgoldberg 1.9 #ifdef USE_ALT_RLOW
262     _RL R_low_si (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
263     #endif
264    
265 dgoldberg 1.16 C The following arrays are used for the hybrid stress balance
266     #ifdef STREAMICE_HYBRID_STRESS
267 dgoldberg 1.7 _RL streamice_taubx (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
268     _RL streamice_tauby (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
269     _RL streamice_u_surf (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
270     _RL streamice_v_surf (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
271     _RL streamice_omega (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
272     _RL streamice_basal_geom
273     & (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
274     _RL visc_streamice_full
275     & (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
276     _RL streamice_vert_shear_uz (Nr)
277     _RL streamice_vert_shear_vz (Nr)
278 dgoldberg 1.16 #endif
279    
280 dgoldberg 1.7
281 dgoldberg 1.6 !! IMPORTANT: MELT RATE IN METERS PER YEAR
282     !! POSITIVE WHERE MELTING
283     _RL BDOT_streamice (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
284 dgoldberg 1.13 _RL H_streamice_prev (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
285     _RL STREAMICE_dummy_array (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
286 heimbach 1.1
287    
288 dgoldberg 1.11
289     COMMON /STREAMICE_COST_RL/
290     & cost_func1_streamice
291     _RL cost_func1_streamice(nSx,nSy)
292    
293 heimbach 1.1 C NOTES :
294     C REAL ARRAYS THAT COMPRISE "STATE":
295     C H_streamice,
296     C U_streamice,
297     C V_streamice,
298     C visc_streamice,
299     C tau_beta_eff_streamice,
300     C area_shelf_streamice
301     C (and don't forget STREAMICE_hmask)
302     C
303     C visc & tau are now calculated based on U,V in streamice_vel_solve
304     C but with Hybdrid stress formulation they will become part of
305     C velocity initial guess, so they are kept
306    
307    
308     #endif /* ALLOW_STREAMICE */
309    
310     CEH3 ;;; Local Variables: ***
311     CEH3 ;;; mode:fortran ***
312     CEH3 ;;; End: ***

  ViewVC Help
Powered by ViewVC 1.1.22