/[MITgcm]/MITgcm/model/src/ini_cg2d.F
ViewVC logotype

Contents of /MITgcm/model/src/ini_cg2d.F

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


Revision 1.3 - (show annotations) (download)
Sun Apr 26 23:41:54 1998 UTC (26 years, 1 month ago) by cnh
Branch: MAIN
CVS Tags: redigm, checkpoint1, kloop1, kloop2
Changes since 1.2: +4 -2 lines
Improvements to I/O and feedback info.

1 C $Header: /u/gcmpack/models/MITgcmUV/model/src/ini_cg2d.F,v 1.2 1998/04/24 02:05:41 cnh Exp $
2
3 #include "CPP_EEOPTIONS.h"
4
5 CStartOfInterface
6 SUBROUTINE INI_CG2D( myThid )
7 C /==========================================================\
8 C | SUBROUTINE INI_CG2D |
9 C | o Initialise 2d conjugate gradient solver operators. |
10 C |==========================================================|
11 C | These arrays are purely a function of the basin geom. |
12 C | We set then here once and them use then repeatedly. |
13 C \==========================================================/
14
15 C === Global variables ===
16 #include "SIZE.h"
17 #include "EEPARAMS.h"
18 #include "PARAMS.h"
19 #include "GRID.h"
20 #include "CG2D.h"
21
22 C === Routine arguments ===
23 C myThid - Thread no. that called this routine.
24 INTEGER myThid
25 CEndOfInterface
26
27 C === Local variables ===
28 C xG, yG - Global coordinate location.
29 C zG
30 C iG, jG - Global coordinate index
31 C bi,bj - Loop counters
32 C faceArea - Temporary used to hold cell face areas.
33 C I,J,K
34 C myNorm - Work variable used in clculating normalisation factor
35 CHARACTER*(MAX_LEN_MBUF) msgBuf
36 INTEGER bi, bj
37 INTEGER I, J, K
38 real faceArea
39 _RL myNorm
40
41 C-- Initialise laplace operator
42 C aW2d: integral in Z Ax/dX
43 C aS2d: integral in Z Ay/dY
44 myNorm = 0. _d 0
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 aW2d(I,J,bi,bj) = 0. _d 0
50 aS2d(I,J,bi,bj) = 0. _d 0
51 ENDDO
52 ENDDO
53 DO K=1,Nz
54 DO J=1,sNy
55 DO I=1,sNx
56 faceArea = dyG(I,J,bi,bj)*dzF(K)*HFacW(I,J,K,bi,bj)
57 aW2d(I,J,bi,bj) = aW2d(I,J,bi,bj) +
58 & gravity*faceArea*rDxC(I,J,bi,bj)
59 faceArea = dxG(I,J,bi,bj)*dzF(K)*HFacS(I,J,K,bi,bj)
60 aS2d(I,J,bi,bj) = aS2d(I,J,bi,bj) +
61 & gravity*faceArea*rDyC(I,J,bi,bj)
62 ENDDO
63 ENDDO
64 ENDDO
65 DO J=1,sNy
66 DO I=1,sNx
67 myNorm = MAX(ABS(aW2d(I,J,bi,bj)),myNorm)
68 myNorm = MAX(ABS(aS2d(I,J,bi,bj)),myNorm)
69 ENDDO
70 ENDDO
71 ENDDO
72 ENDDO
73 cg2dNbuf(1,myThid) = myNorm
74 _GLOBAL_MAX_R8( cg2dNbuf, myNorm, myThid )
75 IF ( cg2dNbuf(1,1) .NE. 0. _d 0 ) THEN
76 myNorm = 1. _d 0/cg2dNbuf(1,1)
77 ELSE
78 myNorm = 1. _d 0
79 ENDIF
80 _BEGIN_MASTER( myThid )
81 cg2dNorm = myNorm
82 CcnhDebugStarts
83 WRITE(msgBuf,'(A,F)') '// CG2D normalisation factor = ', cg2dNorm
84 CALL PRINT_MESSAGE( msgBuf,standardMessageUnit,SQUEEZE_RIGHT,1)
85 WRITE(msgBuf,*) ' '
86 CALL PRINT_MESSAGE( msgBuf,standardMessageUnit,SQUEEZE_RIGHT,1)
87 CcnhDebugEnds
88 _END_MASTER( myThid )
89 DO bj=myByLo(myThid),myByHi(myThid)
90 DO bi=myBxLo(myThid),myBxHi(myThid)
91 DO J=1,sNy
92 DO I=1,sNx
93 aW2d(I,J,bi,bj) = aW2d(I,J,bi,bj)*myNorm
94 aS2d(I,J,bi,bj) = aS2d(I,J,bi,bj)*myNorm
95 ENDDO
96 ENDDO
97 ENDDO
98 ENDDO
99
100 C-- Update overlap regions
101 CcnhDebugStarts
102 C CALL PLOT_FIELD_XYR8( aW2d, 'AW2D INI_CG2D.1' , 1, myThid )
103 C CALL PLOT_FIELD_XYR8( aS2d, 'AS2D INI_CG2D.1' , 1, myThid )
104 CcnhDebugEnds
105 _EXCH_XY_R4(aW2d, myThid)
106 _EXCH_XY_R4(aS2d, myThid)
107 CcnhDebugStarts
108 C CALL PLOT_FIELD_XYR8( aW2d, 'AW2D INI_CG2D.2' , 1, myThid )
109 C CALL PLOT_FIELD_XYR8( aS2d, 'AS2D INI_CG2D.2' , 1, myThid )
110 CcnhDebugEnds
111
112 C-- Initialise preconditioner
113 DO bj=myByLo(myThid),myByHi(myThid)
114 DO bi=myBxLo(myThid),myBxHi(myThid)
115 DO J=1,sNy
116 DO I=1,sNx
117 pC(I,J,bi,bj) = 1. _d 0
118 IF (
119 & aW2d(I,J,bi,bj) + aW2d(I+1,J,bi,bj)
120 & +aS2d(I,J,bi,bj) + aS2D(I,J+1,bi,bj)
121 & .EQ. 0.
122 & ) pC(I,J,bi,bj) = 0. _d 0
123 pW(I,J,bi,bj) = 0.
124 pS(I,J,bi,bj) = 0.
125 ENDDO
126 ENDDO
127 ENDDO
128 ENDDO
129 C-- Update overlap regions
130 _EXCH_XY_R4(pC, myThid)
131 _EXCH_XY_R4(pW, myThid)
132 _EXCH_XY_R4(pS, myThid)
133
134 C-- Set default values for initial guess
135 DO bj=myByLo(myThid),myByHi(myThid)
136 DO bi=myBxLo(myThid),myBxHi(myThid)
137 DO J=1,sNy
138 DO I=1,sNx
139 cg2d_x(I,J,bi,bj) = 0. _d 0
140 ENDDO
141 ENDDO
142 ENDDO
143 ENDDO
144 C-- Update overlap regions
145 _EXCH_XY_R8(cg2d_x, myThid)
146
147 RETURN
148 END

  ViewVC Help
Powered by ViewVC 1.1.22