72 |
sumRHSBuf(1,myThid) = 0. D0 |
sumRHSBuf(1,myThid) = 0. D0 |
73 |
etaNM1 = 1. D0 |
etaNM1 = 1. D0 |
74 |
|
|
75 |
|
CcnhDebugStarts |
76 |
|
_EXCH_XY_R8( cg2d_b, myThid ) |
77 |
|
CALL PLOT_FIELD_XYRL( cg2d_b, 'CG2D.0 CG2D_B' , 1, myThid ) |
78 |
|
CcnhDebugEnds |
79 |
|
|
80 |
C-- Normalise RHS |
C-- Normalise RHS |
81 |
rhsMax = 0. _d 0 |
rhsMax = 0. _d 0 |
82 |
DO bj=myByLo(myThid),myByHi(myThid) |
DO bj=myByLo(myThid),myByHi(myThid) |
109 |
_EXCH_XY_R8( cg2d_b, myThid ) |
_EXCH_XY_R8( cg2d_b, myThid ) |
110 |
_EXCH_XY_R8( cg2d_x, myThid ) |
_EXCH_XY_R8( cg2d_x, myThid ) |
111 |
CcnhDebugStarts |
CcnhDebugStarts |
112 |
C CALL PLOT_FIELD_XYRL( cg2d_b, 'CG2D.1 CG2D_B' , 1, myThid ) |
CALL PLOT_FIELD_XYRL( cg2d_b, 'CG2D.1 CG2D_B' , 1, myThid ) |
113 |
CcnhDebugEnds |
CcnhDebugEnds |
114 |
|
|
115 |
C-- Initial residual calculation |
C-- Initial residual calculation |
129 |
& -aW2d(I+1,J ,bi,bj)*cg2d_x(I ,J ,bi,bj) |
& -aW2d(I+1,J ,bi,bj)*cg2d_x(I ,J ,bi,bj) |
130 |
& -aS2d(I ,J ,bi,bj)*cg2d_x(I ,J ,bi,bj) |
& -aS2d(I ,J ,bi,bj)*cg2d_x(I ,J ,bi,bj) |
131 |
& -aS2d(I ,J+1,bi,bj)*cg2d_x(I ,J ,bi,bj) |
& -aS2d(I ,J+1,bi,bj)*cg2d_x(I ,J ,bi,bj) |
132 |
& -freeSurfFac*_rA(i,j,bi,bj)* Gravity*rhoConst* |
& -freeSurfFac*_rA(i,j,bi,bj)* horiVertRatio* |
133 |
& cg2d_x(I ,J ,bi,bj)/deltaTMom/deltaTMom*cg2dNorm |
& cg2d_x(I ,J ,bi,bj)/deltaTMom/deltaTMom*cg2dNorm |
134 |
& ) |
& ) |
135 |
err = err + |
err = err + |
162 |
DO 10 it2d=1, cg2dMaxIters |
DO 10 it2d=1, cg2dMaxIters |
163 |
|
|
164 |
CcnhDebugStarts |
CcnhDebugStarts |
165 |
WRITE(0,*) ' CG2D: Iteration ',it2d-1,' residual = ',actualResidual |
C WRITE(0,*) ' CG2D: Iteration ',it2d-1,' residual = ',actualResidual |
166 |
CcnhDebugEnds |
CcnhDebugEnds |
167 |
IF ( err .LT. cg2dTargetResidual ) GOTO 11 |
IF ( err .LT. cg2dTargetResidual ) GOTO 11 |
168 |
C-- Solve preconditioning equation and update |
C-- Solve preconditioning equation and update |
230 |
& -aW2d(I+1,J ,bi,bj)*cg2d_s(I ,J ,bi,bj) |
& -aW2d(I+1,J ,bi,bj)*cg2d_s(I ,J ,bi,bj) |
231 |
& -aS2d(I ,J ,bi,bj)*cg2d_s(I ,J ,bi,bj) |
& -aS2d(I ,J ,bi,bj)*cg2d_s(I ,J ,bi,bj) |
232 |
& -aS2d(I ,J+1,bi,bj)*cg2d_s(I ,J ,bi,bj) |
& -aS2d(I ,J+1,bi,bj)*cg2d_s(I ,J ,bi,bj) |
233 |
& -freeSurfFac*_rA(i,j,bi,bj)* Gravity*rhoConst* |
& -freeSurfFac*_rA(i,j,bi,bj)* horiVertRatio* |
234 |
& cg2d_s(I ,J ,bi,bj)/deltaTMom/deltaTMom*cg2dNorm |
& cg2d_s(I ,J ,bi,bj)/deltaTMom/deltaTMom*cg2dNorm |
235 |
alpha = alpha+cg2d_s(I,J,bi,bj)*cg2d_q(I,J,bi,bj) |
alpha = alpha+cg2d_s(I,J,bi,bj)*cg2d_q(I,J,bi,bj) |
236 |
ENDDO |
ENDDO |