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

Contents of /MITgcm_contrib/dgoldberg/streamice/streamice_visc_beta_hybrid.F

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


Revision 1.1 - (show annotations) (download)
Tue Sep 18 17:04:41 2012 UTC (12 years, 10 months ago) by dgoldberg
Branch: MAIN
new files for hybrid stress balance

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

  ViewVC Help
Powered by ViewVC 1.1.22