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

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

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


Revision 1.1 - (show annotations) (download)
Thu Jul 19 18:55:26 2012 UTC (13 years ago) by dgoldberg
Branch: MAIN
subroutine to move "auxiliary" functions from streamice cg solve

1 C $Header: /u/gcmpack/MITgcm_contrib/dgoldberg/streamice/streamice_cg_solve.F,v 1.3 2012/05/14 16:52:29 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_CG_WRAPPER(
10 U cg_Uin,
11 U cg_Vin,
12 I cg_tauU,
13 I cg_tauV,
14 I tolerance,
15 O iters,
16 I myThid )
17
18 C /============================================================\
19 C | SUBROUTINE |
20 C | o |
21 C |============================================================|
22 C | |
23 C \============================================================/
24 IMPLICIT NONE
25
26 C === Global variables ===
27 #include "SIZE.h"
28 #include "EEPARAMS.h"
29 #include "PARAMS.h"
30 #include "STREAMICE.h"
31 #include "STREAMICE_CG.h"
32
33
34 C !INPUT/OUTPUT ARGUMENTS
35 C cg_Uin, cg_Vin - input and output velocities
36 C cg_Bu, cg_Bv - driving stress
37
38 INTEGER myThid
39 INTEGER iters
40 _RL tolerance
41
42 _RL cg_Uin (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
43 _RL cg_Vin (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
44 _RL cg_tauU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
45 _RL cg_tauV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
46
47 #ifdef ALLOW_STREAMICE
48
49 _RL dot_p1, dot_p2
50 _RL dot_p1_tile (nSx,nSy)
51 _RL dot_p2_tile (nSx,nSy)
52 INTEGER i, j, bi, bj
53
54
55
56 DO bj = myByLo(myThid), myByHi(myThid)
57 DO bi = myBxLo(myThid), myBxHi(myThid)
58 DO j=1,sNy
59 DO i=1,sNx
60
61 DIAGu_SI (i,j,bi,bj) = 0. _d 0
62 DIAGv_SI (i,j,bi,bj) = 0. _d 0
63 ubd_SI (i,j,bi,bj) = 0. _d 0
64 vbd_SI (i,j,bi,bj) = 0. _d 0
65 ENDDO
66 ENDDO
67 ENDDO
68 ENDDO
69
70 C DIRICHLET BOUNDARY VALUES ADDED TO RHS
71
72 CALL STREAMICE_CG_BOUND_VALS( myThid,
73 O ubd_SI,
74 O vbd_SI)
75
76 DO bj = myByLo(myThid), myByHi(myThid)
77 DO bi = myBxLo(myThid), myBxHi(myThid)
78 DO j=1-OLy,sNy+OLy
79 DO i=1-OLx,sNx+OLx
80 RHSu_SI (i,j,bi,bj) = cg_tauU (i,j,bi,bj)
81 & - ubd_SI(i,j,bi,bj)
82 RHSv_SI (i,j,bi,bj) = cg_tauV (i,j,bi,bj)
83 & - vbd_SI(i,j,bi,bj)
84 ENDDO
85 ENDDO
86 ENDDO
87 ENDDO
88
89 _EXCH_XY_RL( RHSu_SI, myThid )
90 _EXCH_XY_RL( RHSv_SI, myThid )
91
92 C GET DIAGONAL OF MATRIX
93
94 CALL STREAMICE_CG_ADIAG( myThid,
95 O DIAGu_SI,
96 O DIAGv_SI)
97
98 _EXCH_XY_RL( DIAGu_SI, myThid )
99 _EXCH_XY_RL( DIAGv_SI, myThid )
100
101 C ccccc
102
103
104
105 #ifdef STREAMICE_CONSTRUCT_MATRIX
106
107
108 CALL STREAMICE_CG_MAKE_A(myThid)
109
110 ! print *, "MATRIX 1"
111 ! do i=1,sNx
112 ! print *, i,
113 ! & streamice_cg_A1(i,1,1,1,-1,0),
114 ! & streamice_cg_A1(i,1,1,1,0,0),
115 ! & streamice_cg_A1(i,1,1,1,1,0),
116 ! & streamice_cg_A1(i,2,1,1,-1,0),
117 ! & streamice_cg_A1(i,2,1,1,0,0),
118 ! & streamice_cg_A1(i,2,1,1,1,0),
119 ! & streamice_cg_A1(i,3,1,1,-1,0),
120 ! & streamice_cg_A1(i,3,1,1,0,0),
121 ! & streamice_cg_A1(i,3,1,1,1,0),
122 ! & visc_streamice(i,1,1,1),visc_streamice(i,2,1,1),
123 ! & visc_streamice(i,3,1,1)
124 ! enddo
125
126 CALL STREAMICE_CG_SOLVE(
127 & cg_Uin,
128 & cg_Vin,
129 & RHSu_SI,
130 & RHSv_SI,
131 & streamice_cg_A1,
132 & streamice_cg_A2,
133 & streamice_cg_A3,
134 & streamice_cg_A4,
135 & tolerance,
136 & iters,
137 & myThid )
138
139 _EXCH_XY_RL( RHSu_SI, myThid )
140 _EXCH_XY_RL( RHSv_SI, myThid )
141
142 ! DO bj = myByLo(myThid), myByHi(myThid)
143 ! DO bi = myBxLo(myThid), myBxHi(myThid)
144 ! DO j=1-OLy,sNy+OLy
145 ! DO i=1-OLx,sNx+OLx
146 ! cg_Uin(i,j,bi,bj) = cg_Uin(i,j,bi,bj) +
147 ! & 0.0 * cg_Uin(i,j,bi,bj)**2
148 ! cg_Vin(i,j,bi,bj) = cg_Vin(i,j,bi,bj) +
149 ! & 0.0 * cg_Vin(i,j,bi,bj)**2
150 ! ENDDO
151 ! ENDDO
152 ! ENDDO
153 ! ENDDO
154
155
156
157 #else
158
159 CALL STREAMICE_CG_SOLVE_MATFREE(
160 & cg_Uin,
161 & cg_Vin,
162 & RHSu_SI,
163 & RHSv_SI,
164 & tolerance,
165 & iters,
166 & myThid )
167
168 #endif
169
170
171 C ACTUAL CG CALL
172
173
174
175
176 DO bj = myByLo(myThid), myByHi(myThid)
177 DO bi = myBxLo(myThid), myBxHi(myThid)
178 DO j=1-OLy,sNy+OLy
179 DO i=1-OLy,sNx+OLy
180 IF (STREAMICE_umask(i,j,bi,bj).eq.3.0)
181 & cg_Uin(i,j,bi,bj)=u_bdry_values_SI(i,j,bi,bj)
182 IF (STREAMICE_vmask(i,j,bi,bj).eq.3.0)
183 & cg_Vin(i,j,bi,bj)=v_bdry_values_SI(i,j,bi,bj)
184
185 ! print *, "rhs", i,j,RHSu_SI(i,j,bi,bj)
186
187 ENDDO
188 ENDDO
189 ENDDO
190 ENDDO
191
192 _EXCH_XY_RL( cg_Uin, myThid )
193 _EXCH_XY_RL( cg_Vin, myThid )
194
195
196 #endif
197 RETURN
198 END
199

  ViewVC Help
Powered by ViewVC 1.1.22