131 |
C so we need an fVer for each |
C so we need an fVer for each |
132 |
C variable. |
C variable. |
133 |
C rhoK, rhoKM1 - Density at current level, and level above |
C rhoK, rhoKM1 - Density at current level, and level above |
134 |
C phiHyd - Hydrostatic part of the potential phiHydi. |
C phiHyd - Hydrostatic part of the potential. |
135 |
C In z coords phiHydiHyd is the hydrostatic |
C In z coords phiHyd is the hydrostatic |
136 |
C Potential (=pressure/rho0) anomaly |
C Potential (=pressure/rho0) anomaly |
137 |
C In p coords phiHydiHyd is the geopotential |
C In p coords phiHyd is the geopotential |
138 |
C surface height anomaly. |
C surface height anomaly. |
139 |
C phiSurfX, - gradient of Surface potentiel (Pressure/rho, ocean) |
C dPhiHydX,Y :: Gradient (X & Y directions) of Hydrostatic Potential |
140 |
C phiSurfY or geopotentiel (atmos) in X and Y direction |
C phiSurfX, - gradient of Surface potential (Pressure/rho, ocean) |
141 |
|
C phiSurfY or geopotential (atmos) in X and Y direction |
142 |
C iMin, iMax - Ranges and sub-block indices on which calculations |
C iMin, iMax - Ranges and sub-block indices on which calculations |
143 |
C jMin, jMax are applied. |
C jMin, jMax are applied. |
144 |
C bi, bj |
C bi, bj |
148 |
_RL fVerU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,2) |
_RL fVerU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,2) |
149 |
_RL fVerV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,2) |
_RL fVerV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,2) |
150 |
_RL phiHyd (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr) |
_RL phiHyd (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr) |
151 |
|
_RL dPhiHydX(1-Olx:sNx+Olx,1-Oly:sNy+Oly) |
152 |
|
_RL dPhiHydY(1-Olx:sNx+Olx,1-Oly:sNy+Oly) |
153 |
_RL rhokm1 (1-OLx:sNx+OLx,1-OLy:sNy+OLy) |
_RL rhokm1 (1-OLx:sNx+OLx,1-OLy:sNy+OLy) |
154 |
_RL rhok (1-OLx:sNx+OLx,1-OLy:sNy+OLy) |
_RL rhok (1-OLx:sNx+OLx,1-OLy:sNy+OLy) |
155 |
_RL phiSurfX(1-OLx:sNx+OLx,1-OLy:sNy+OLy) |
_RL phiSurfX(1-OLx:sNx+OLx,1-OLy:sNy+OLy) |
163 |
INTEGER i, j |
INTEGER i, j |
164 |
INTEGER k, km1, kp1, kup, kDown |
INTEGER k, km1, kp1, kup, kDown |
165 |
|
|
166 |
Cjmc : add for phiHyd output <- but not working if multi tile per CPU |
LOGICAL DIFFERENT_MULTIPLE |
167 |
c CHARACTER*(MAX_LEN_MBUF) suff |
EXTERNAL DIFFERENT_MULTIPLE |
|
c LOGICAL DIFFERENT_MULTIPLE |
|
|
c EXTERNAL DIFFERENT_MULTIPLE |
|
|
Cjmc(end) |
|
168 |
|
|
169 |
C--- The algorithm... |
C--- The algorithm... |
170 |
C |
C |
274 |
fVerU (i,j,2) = 0. _d 0 |
fVerU (i,j,2) = 0. _d 0 |
275 |
fVerV (i,j,1) = 0. _d 0 |
fVerV (i,j,1) = 0. _d 0 |
276 |
fVerV (i,j,2) = 0. _d 0 |
fVerV (i,j,2) = 0. _d 0 |
277 |
|
dPhiHydX(i,j) = 0. _d 0 |
278 |
|
dPhiHydY(i,j) = 0. _d 0 |
279 |
ENDDO |
ENDDO |
280 |
ENDDO |
ENDDO |
281 |
|
|
345 |
I bi,bj,iMin,iMax,jMin,jMax,k, |
I bi,bj,iMin,iMax,jMin,jMax,k, |
346 |
I gT, gS, |
I gT, gS, |
347 |
U phiHyd, |
U phiHyd, |
348 |
I myThid ) |
O dPhiHydX, dPhiHydY, |
349 |
|
I myTime, myIter, myThid ) |
350 |
ELSE |
ELSE |
351 |
CALL CALC_PHI_HYD( |
CALL CALC_PHI_HYD( |
352 |
I bi,bj,iMin,iMax,jMin,jMax,k, |
I bi,bj,iMin,iMax,jMin,jMax,k, |
353 |
I theta, salt, |
I theta, salt, |
354 |
U phiHyd, |
U phiHyd, |
355 |
I myThid ) |
O dPhiHydX, dPhiHydY, |
356 |
|
I myTime, myIter, myThid ) |
357 |
ENDIF |
ENDIF |
358 |
|
|
359 |
C calculate pressure from phiHyd and store it on common block |
C calculate pressure from phiHyd and store it on common block |
366 |
#ifndef DISABLE_MOM_FLUXFORM |
#ifndef DISABLE_MOM_FLUXFORM |
367 |
IF (.NOT. vectorInvariantMomentum) CALL MOM_FLUXFORM( |
IF (.NOT. vectorInvariantMomentum) CALL MOM_FLUXFORM( |
368 |
I bi,bj,iMin,iMax,jMin,jMax,k,kup,kDown, |
I bi,bj,iMin,iMax,jMin,jMax,k,kup,kDown, |
369 |
I phiHyd,KappaRU,KappaRV, |
I phiHyd,dPhiHydX,dPhiHydY,KappaRU,KappaRV, |
370 |
U fVerU, fVerV, |
U fVerU, fVerV, |
371 |
I myTime, myIter, myThid) |
I myTime, myIter, myThid) |
372 |
#endif |
#endif |
373 |
#ifndef DISABLE_MOM_VECINV |
#ifndef DISABLE_MOM_VECINV |
374 |
IF (vectorInvariantMomentum) CALL MOM_VECINV( |
IF (vectorInvariantMomentum) CALL MOM_VECINV( |
375 |
I bi,bj,iMin,iMax,jMin,jMax,k,kup,kDown, |
I bi,bj,iMin,iMax,jMin,jMax,k,kup,kDown, |
376 |
I phiHyd,KappaRU,KappaRV, |
I dPhiHydX,dPhiHydY,KappaRU,KappaRV, |
377 |
U fVerU, fVerV, |
U fVerU, fVerV, |
378 |
I myTime, myIter, myThid) |
I myTime, myIter, myThid) |
379 |
#endif |
#endif |
380 |
CALL TIMESTEP( |
CALL TIMESTEP( |
381 |
I bi,bj,iMin,iMax,jMin,jMax,k, |
I bi,bj,iMin,iMax,jMin,jMax,k, |
382 |
I phiHyd, phiSurfX, phiSurfY, |
I phiHyd, dPhiHydX,dPhiHydY, phiSurfX, phiSurfY, |
383 |
I myIter, myThid) |
I myIter, myThid) |
384 |
|
|
385 |
#ifdef ALLOW_OBCS |
#ifdef ALLOW_OBCS |
455 |
C-- End If implicitViscosity.AND.momStepping |
C-- End If implicitViscosity.AND.momStepping |
456 |
ENDIF |
ENDIF |
457 |
|
|
458 |
Cjmc : add for phiHyd output <- but not working if multi tile per CPU |
C- jmc: add for diagnostic of phiHyd |
459 |
c IF ( DIFFERENT_MULTIPLE(dumpFreq,myTime+deltaTClock,myTime) |
IF ( DIFFERENT_MULTIPLE(diagFreq,myTime+deltaTClock,myTime) |
460 |
c & .AND. buoyancyRelation .ne. 'OCEANIC' ) THEN |
& .AND. buoyancyRelation .NE. 'OCEANIC' ) THEN |
461 |
c WRITE(suff,'(I10.10)') myIter+1 |
CALL WRITE_LOCAL_RL('Ph','I10',Nr,phiHyd, |
462 |
c CALL WRITE_FLD_XYZ_RL('PH.',suff,phiHyd,myIter+1,myThid) |
& bi,bj,1,myIter+1,myThid) |
463 |
c ENDIF |
ENDIF |
|
Cjmc(end) |
|
464 |
|
|
465 |
#ifdef ALLOW_TIMEAVE |
#ifdef ALLOW_TIMEAVE |
466 |
IF (taveFreq.GT.0.) THEN |
IF (taveFreq.GT.0.) THEN |