25 |
#include "GRID.h" |
#include "GRID.h" |
26 |
#include "DIAGNOSTICS_SIZE.h" |
#include "DIAGNOSTICS_SIZE.h" |
27 |
#include "DIAGNOSTICS.h" |
#include "DIAGNOSTICS.h" |
28 |
c#include "DIAGNOSTICS_CALC.h" |
#include "DIAGNOSTICS_CALC.h" |
29 |
|
|
30 |
C !INPUT PARAMETERS: |
C !INPUT PARAMETERS: |
31 |
C listId :: Diagnostics list number being written |
C listId :: Diagnostics list number being written |
63 |
C vTrans :: horizontal transport, u-component |
C vTrans :: horizontal transport, u-component |
64 |
C psiVel :: horizontal stream-function |
C psiVel :: horizontal stream-function |
65 |
C psiLoc :: horizontal stream-function at special location |
C psiLoc :: horizontal stream-function at special location |
|
C i,jPsi0 :: indices of grid-point location where Psi == 0 |
|
66 |
INTEGER bi, bj |
INTEGER bi, bj |
67 |
INTEGER i, j, k |
INTEGER i, j, k |
68 |
|
|
80 |
_RL vTrans(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) |
_RL vTrans(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) |
81 |
_RL psiVel(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) |
_RL psiVel(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) |
82 |
_RL psiLoc(2) |
_RL psiLoc(2) |
|
INTEGER iPsi0(nSx,nSy) |
|
|
INTEGER jPsi0(nSx,nSy) |
|
83 |
INTEGER iL |
INTEGER iL |
84 |
CHARACTER*(MAX_LEN_FNAM) dataFName |
CHARACTER*(MAX_LEN_FNAM) dataFName |
85 |
CHARACTER*(MAX_LEN_MBUF) msgBuf |
CHARACTER*(MAX_LEN_MBUF) msgBuf |
86 |
|
|
87 |
C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----| |
C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----| |
88 |
|
|
|
DO bj=myByLo(myThid),myByHi(myThid) |
|
|
DO bi=myBxLo(myThid),myBxHi(myThid) |
|
|
iPsi0(bi,bj) = -1 |
|
|
jPsi0(bi,bj) = 0 |
|
|
ENDDO |
|
|
ENDDO |
|
|
|
|
89 |
DO ks = 1,kdiag(ndId) |
DO ks = 1,kdiag(ndId) |
90 |
k = NINT(levs(ks,listId)) |
k = NINT(levs(ks,listId)) |
91 |
C-- Solve for velocity potential for each level: |
C-- Solve for velocity potential for each level: |
146 |
rhsNorm = 1. _d 0 |
rhsNorm = 1. _d 0 |
147 |
IF ( normaliseMatrice ) THEN |
IF ( normaliseMatrice ) THEN |
148 |
_GLOBAL_MAX_RL( a2dMax, myThid ) |
_GLOBAL_MAX_RL( a2dMax, myThid ) |
149 |
IF ( a2dMax .GE. 0. _d 0 ) a2dNorm = 1. _d 0/a2dMax |
IF ( a2dMax .GT. 0. _d 0 ) a2dNorm = 1. _d 0/a2dMax |
150 |
ENDIF |
ENDIF |
151 |
IF ( diagNormaliseRHS ) THEN |
IF ( diagNormaliseRHS ) THEN |
152 |
_GLOBAL_MAX_RL( rhsMax, myThid ) |
_GLOBAL_MAX_RL( rhsMax, myThid ) |
153 |
IF ( rhsMax .GE. 0. _d 0 ) rhsNorm = 1. _d 0/(a2dNorm*rhsMax) |
IF ( rhsMax .GT. 0. _d 0 ) rhsNorm = 1. _d 0/(a2dNorm*rhsMax) |
154 |
residCriter = cg2dTargetResidual |
residCriter = cg2dTargetResidual |
155 |
ELSE |
ELSE |
156 |
residCriter = a2dNorm * cg2dTargetResWunit |
residCriter = a2dNorm * cg2dTargetResWunit |