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

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

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


Revision 1.25 - (show annotations) (download)
Sun Nov 29 03:12:32 2009 UTC (14 years, 6 months ago) by jmc
Branch: MAIN
CVS Tags: checkpoint62v, checkpoint62u, checkpoint62t, checkpoint62c, checkpoint62s, checkpoint62r, checkpoint62q, checkpoint62p, checkpoint62a, checkpoint62g, checkpoint62f, checkpoint62e, checkpoint62d, checkpoint62k, checkpoint62j, checkpoint62i, checkpoint62h, checkpoint62o, checkpoint62n, checkpoint62m, checkpoint62l, checkpoint62w, checkpoint62x, checkpoint62, checkpoint62b, checkpoint61z
Changes since 1.24: +28 -29 lines
explicit time-stepping for part of Non-Hydrostatic pressure gradient

1 C $Header: /u/gcmpack/MITgcm/model/src/correction_step.F,v 1.24 2006/12/05 05:25:08 jmc Exp $
2 C $Name: $
3
4 #include "CPP_OPTIONS.h"
5
6 CBOP
7 C !ROUTINE: CORRECTION_STEP
8 C !INTERFACE:
9 SUBROUTINE CORRECTION_STEP( bi, bj, iMin, iMax, jMin, jMax,
10 I k, phiSurfX, phiSurfY,
11 I myTime, myThid )
12 C !DESCRIPTION: \bv
13 C *==========================================================*
14 C | S/R CORRECTION_STEP
15 C | o Corrects the horizontal flow fields with the surface
16 C | pressure (and Non-Hydrostatic pressure).
17 C *==========================================================*
18 C \ev
19
20 C !USES:
21 IMPLICIT NONE
22 C == Global variables ==
23 #include "SIZE.h"
24 #include "EEPARAMS.h"
25 #include "PARAMS.h"
26 #include "GRID.h"
27 #include "DYNVARS.h"
28 #ifdef ALLOW_NONHYDROSTATIC
29 #include "NH_VARS.h"
30 #endif
31
32 C !INPUT/OUTPUT PARAMETERS:
33 C == Routine Arguments ==
34 C bi, bj :: Tile indices
35 C iMin,iMax,jMin,jMax :: Loop counters range
36 C k :: Level index
37 C phiSurfX, phiSurfY :: Surface Potential gradient
38 C myTime :: Current time in simulation
39 C myThid :: my Thread Id number
40 _RL phiSurfX(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
41 _RL phiSurfY(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
42 INTEGER bi,bj
43 INTEGER iMin,iMax,jMin,jMax
44 INTEGER k
45 _RL myTime
46 INTEGER myThid
47
48 C !LOCAL VARIABLES:
49 C == Local variables ==
50 C i,j :: Loop counters
51 C psFac, nhFac :: Scaling parameters for supressing gradients
52 INTEGER i,j
53 _RL psFac, nhFac
54 CEOP
55
56 C On/off scaling parameters (including anelastic & deep-model factors)
57 psFac = pfFacMom*implicSurfPress
58 & *recip_deepFacC(k)*recip_rhoFacC(k)
59 IF ( use3Dsolver ) THEN
60 nhFac = pfFacMom*implicitNHPress
61 & *recip_deepFacC(k)*recip_rhoFacC(k)
62 ELSE
63 nhFac = 0.
64 ENDIF
65
66 C Step forward zonal velocity
67 DO j=jMin,jMax
68 DO i=iMin,iMax
69 uVel(i,j,k,bi,bj)=( gU(i,j,k,bi,bj)
70 & -deltaTmom*psFac*phiSurfX(i,j)
71 #ifdef ALLOW_NONHYDROSTATIC
72 & -deltaTmom*nhFac*_recip_dxC(i,j,bi,bj)
73 & *(phi_nh(i,j,k,bi,bj)-phi_nh(i-1,j,k,bi,bj))
74 #endif
75 & )*_maskW(i,j,k,bi,bj)
76 ENDDO
77 ENDDO
78
79 C Step forward meridional velocity
80 DO j=jMin,jMax
81 DO i=iMin,iMax
82 vVel(i,j,k,bi,bj)=( gV(i,j,k,bi,bj)
83 & -deltaTmom*psFac*phiSurfY(i,j)
84 #ifdef ALLOW_NONHYDROSTATIC
85 & -deltaTmom*nhFac*_recip_dyC(i,j,bi,bj)
86 & *(phi_nh(i,j,k,bi,bj)-phi_nh(i,j-1,k,bi,bj))
87 #endif
88 & )*_maskS(i,j,k,bi,bj)
89 ENDDO
90 ENDDO
91
92 RETURN
93 END

  ViewVC Help
Powered by ViewVC 1.1.22