1 |
dgoldberg |
1.1 |
C $Header: /u/gcmpack/MITgcm_contrib/dgoldberg/streamice/streamice_visc_beta.F,v 1.3 2012/09/04 21:11:44 dgoldberg Exp $ |
2 |
|
|
C $Name: $ |
3 |
|
|
|
4 |
|
|
#include "STREAMICE_OPTIONS.h" |
5 |
|
|
|
6 |
|
|
C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----| |
7 |
|
|
|
8 |
|
|
CBOP |
9 |
|
|
SUBROUTINE STREAMICE_VISC_BETA_HYBRID ( myThid ) |
10 |
|
|
|
11 |
|
|
C /============================================================\ |
12 |
|
|
C | SUBROUTINE | |
13 |
|
|
C | o | |
14 |
|
|
C |============================================================| |
15 |
|
|
C | | |
16 |
|
|
C \============================================================/ |
17 |
|
|
IMPLICIT NONE |
18 |
|
|
|
19 |
|
|
C === Global variables === |
20 |
|
|
#include "SIZE.h" |
21 |
|
|
#include "GRID.h" |
22 |
|
|
#include "EEPARAMS.h" |
23 |
|
|
#include "PARAMS.h" |
24 |
|
|
#include "STREAMICE.h" |
25 |
|
|
#include "STREAMICE_CG.h" |
26 |
|
|
|
27 |
|
|
C !INPUT/OUTPUT ARGUMENTS |
28 |
|
|
INTEGER myThid |
29 |
|
|
! _RL taudx (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) |
30 |
|
|
! _RL taudx (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) |
31 |
|
|
|
32 |
|
|
#ifdef ALLOW_STREAMICE |
33 |
|
|
#ifdef STREAMICE_HYBRID_STRESS |
34 |
|
|
|
35 |
|
|
C LOCAL VARIABLES |
36 |
|
|
INTEGER i, j, bi, bj, k, l, umid, vmid, m |
37 |
|
|
_RL ux, uy, vx, vy, exx, eyy, exy, unorm, second_inv |
38 |
|
|
_RL ub, vb, fb, mean_u_shear, mean_v_shear |
39 |
|
|
_RL omega_temp (Nr+1), u_shear(Nr+1), v_shear(Nr+1) |
40 |
|
|
|
41 |
|
|
_RL STREAMICE_BSTRESS_EXPONENT |
42 |
|
|
! _RL total_vol_out |
43 |
|
|
external STREAMICE_BSTRESS_EXPONENT |
44 |
|
|
|
45 |
|
|
DO bj=myByLo(myThid),myByHi(myThid) |
46 |
|
|
DO bi=myBxLo(myThid),myBxHi(myThid) |
47 |
|
|
DO j=1,sNy |
48 |
|
|
DO i=1,sNx |
49 |
|
|
IF (STREAMICE_hmask(i,j,bi,bj).eq.1) THEN |
50 |
|
|
|
51 |
|
|
umid = 0 |
52 |
|
|
vmid = 0 |
53 |
|
|
|
54 |
|
|
DO k=0,1 |
55 |
|
|
DO l=0,1 |
56 |
|
|
umid = umid + 0.25 * |
57 |
|
|
& dxG(i,j+l,bi,bj)*dyG(i+k,j,bi,bj) * |
58 |
|
|
& recip_rA(i,j,bi,bj) * |
59 |
|
|
& U_streamice(i+k,j+l,bi,bj) |
60 |
|
|
vmid = vmid + 0.25 * |
61 |
|
|
& dxG(i,j+l,bi,bj)*dyG(i+k,j,bi,bj) * |
62 |
|
|
& recip_rA(i,j,bi,bj) * |
63 |
|
|
& V_streamice(i+k,j+l,bi,bj) |
64 |
|
|
ENDDO |
65 |
|
|
ENDDO |
66 |
|
|
|
67 |
|
|
ux = (U_streamice(i+1,j+1,bi,bj) + |
68 |
|
|
& U_streamice(i+1,j,bi,bj) - |
69 |
|
|
& U_streamice(i,j+1,bi,bj) - |
70 |
|
|
& U_streamice(i,j,bi,bj)) / |
71 |
|
|
& (2. * dxF(i,j,bi,bj)) |
72 |
|
|
vx = (V_streamice(i+1,j+1,bi,bj) + |
73 |
|
|
& V_streamice(i+1,j,bi,bj) - |
74 |
|
|
& V_streamice(i,j+1,bi,bj) - |
75 |
|
|
& V_streamice(i,j,bi,bj)) / |
76 |
|
|
& (2. * dxF(i,j,bi,bj)) |
77 |
|
|
uy = (U_streamice(i+1,j+1,bi,bj) - |
78 |
|
|
& U_streamice(i+1,j,bi,bj) + |
79 |
|
|
& U_streamice(i,j+1,bi,bj) - |
80 |
|
|
& U_streamice(i,j,bi,bj)) / |
81 |
|
|
& (2. * dyF(i,j,bi,bj)) |
82 |
|
|
vy = (V_streamice(i+1,j+1,bi,bj) - |
83 |
|
|
& V_streamice(i+1,j,bi,bj) + |
84 |
|
|
& V_streamice(i,j+1,bi,bj) - |
85 |
|
|
& V_streamice(i,j,bi,bj)) / |
86 |
|
|
& (2. * dyF(i,j,bi,bj)) |
87 |
|
|
|
88 |
|
|
exx = ux + k1AtC_str(i,j,bi,bj)*vmid |
89 |
|
|
eyy = vy + k2AtC_str(i,j,bi,bj)*umid |
90 |
|
|
exy = .5*(uy+vx) + |
91 |
|
|
& k1AtC_str(i,j,bi,bj)*umid + k2AtC_str(i,j,bi,bj)*vmid |
92 |
|
|
|
93 |
|
|
visc_streamice (i,j,bi,bj) = 0.0 |
94 |
|
|
streamice_omega(i,j,bi,bj) = 0.0 |
95 |
|
|
omega_temp (Nr+1) = 0.0 |
96 |
|
|
u_shear(Nr+1) = 0.0 |
97 |
|
|
v_shear(Nr+1) = 0.0 |
98 |
|
|
DO m=Nr,1,-1 |
99 |
|
|
|
100 |
|
|
streamice_vert_shear_uz (m) = streamice_taubx(i,j,bi,bj) / |
101 |
|
|
& visc_streamice_full(i,j,m,bi,bj) |
102 |
|
|
& * streamice_sigma_coord(m) |
103 |
|
|
|
104 |
|
|
streamice_vert_shear_vz (m) = streamice_tauby(i,j,bi,bj) / |
105 |
|
|
& visc_streamice_full(i,j,m,bi,bj) |
106 |
|
|
& * streamice_sigma_coord(m) |
107 |
|
|
|
108 |
|
|
second_inv = |
109 |
|
|
& sqrt(exx**2+eyy**2+exx*eyy+exy**2+eps_glen_min**2+ |
110 |
|
|
& streamice_vert_shear_uz(m)**2 + |
111 |
|
|
& streamice_vert_shear_vz(m)**2) |
112 |
|
|
|
113 |
|
|
visc_streamice_full(i,j,m,bi,bj) = |
114 |
|
|
& .5 * A_glen(i,j,bi,bj)**(-1./n_glen) * |
115 |
|
|
& second_inv**((1-n_glen)/n_glen) |
116 |
|
|
|
117 |
|
|
visc_streamice (i,j,bi,bj) = visc_streamice (i,j,bi,bj) + |
118 |
|
|
& H_streamice(i,j,bi,bj) * streamice_delsigma (m) * |
119 |
|
|
& visc_streamice_full(i,j,m,bi,bj) |
120 |
|
|
|
121 |
|
|
omega_temp (m) = omega_temp(m+1) + |
122 |
|
|
& streamice_sigma_coord(m) * streamice_delsigma(m) / |
123 |
|
|
& visc_streamice_full(i,j,m,bi,bj) |
124 |
|
|
|
125 |
|
|
u_shear (m) = u_shear (m+1) + |
126 |
|
|
& streamice_vert_shear_uz (m) * streamice_delsigma (m) * |
127 |
|
|
& H_streamice(i,j,bi,bj) |
128 |
|
|
|
129 |
|
|
v_shear (m) = v_shear (m+1) + |
130 |
|
|
& streamice_vert_shear_vz (m) * streamice_delsigma (m) * |
131 |
|
|
& H_streamice(i,j,bi,bj) |
132 |
|
|
|
133 |
|
|
ENDDO |
134 |
|
|
|
135 |
|
|
mean_u_shear = 0.0 |
136 |
|
|
mean_v_shear = 0.0 |
137 |
|
|
|
138 |
|
|
DO m=Nr,1,-1 |
139 |
|
|
|
140 |
|
|
streamice_omega(i,j,bi,bj) = streamice_omega(i,j,bi,bj) + |
141 |
|
|
& streamice_delsigma(m)*(omega_temp(m)+omega_temp(m+1))*.5 |
142 |
|
|
& * H_streamice(i,j,bi,bj)**2 |
143 |
|
|
|
144 |
|
|
mean_u_shear = mean_u_shear + |
145 |
|
|
& streamice_delsigma(m)*(u_shear(m)+u_shear(m+1))*.5 |
146 |
|
|
|
147 |
|
|
mean_v_shear = mean_v_shear + |
148 |
|
|
& streamice_delsigma(m)*(v_shear(m)+v_shear(m+1))*.5 |
149 |
|
|
|
150 |
|
|
ENDDO |
151 |
|
|
|
152 |
|
|
streamice_u_surf(i,j,bi,bj) = |
153 |
|
|
& u_shear(1) + umid - mean_u_shear |
154 |
|
|
|
155 |
|
|
streamice_v_surf(i,j,bi,bj) = |
156 |
|
|
& v_shear(1) + vmid - mean_v_shear |
157 |
|
|
|
158 |
|
|
ub = umid - streamice_taubx(i,j,bi,bj) * |
159 |
|
|
& streamice_omega(i,j,bi,bj) / H_streamice(i,j,bi,bj) |
160 |
|
|
|
161 |
|
|
vb = vmid - streamice_tauby(i,j,bi,bj) * |
162 |
|
|
& streamice_omega(i,j,bi,bj) / H_streamice(i,j,bi,bj) |
163 |
|
|
|
164 |
|
|
unorm = sqrt(ub**2+vb**2+eps_glen_min**2) |
165 |
|
|
|
166 |
|
|
fb = C_basal_friction(i,j,bi,bj)**2 * |
167 |
|
|
& STREAMICE_BSTRESS_EXPONENT (unorm,n_basal_friction) * |
168 |
|
|
& streamice_basal_geom(i,j,bi,bj) |
169 |
|
|
|
170 |
|
|
tau_beta_eff_streamice(i,j,bi,bj) = |
171 |
|
|
& fb / |
172 |
|
|
& (1+fb*streamice_omega(i,j,bi,bj)/H_streamice(i,j,bi,bj)) |
173 |
|
|
|
174 |
|
|
ENDIF |
175 |
|
|
ENDDO |
176 |
|
|
ENDDO |
177 |
|
|
ENDDO |
178 |
|
|
ENDDO |
179 |
|
|
|
180 |
|
|
|
181 |
|
|
#endif |
182 |
|
|
#endif |
183 |
|
|
RETURN |
184 |
|
|
END |