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

Annotation 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 - (hide 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 dgoldberg 1.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