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

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

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


Revision 1.14 - (show annotations) (download)
Sun Feb 4 14:38:45 2001 UTC (23 years, 4 months ago) by cnh
Branch: MAIN
Changes since 1.13: +2 -1 lines
Made sure each .F and .h file had
the CVS keywords Header and Name at its start.
Most had header but very few currently have Name, so
lots of changes!

1 C $Header: /u/gcmpack/models/MITgcmUV/model/src/calc_common_factors.F,v 1.13 2001/02/02 21:04:47 adcroft Exp $
2 C $Name: $
3
4 #include "CPP_OPTIONS.h"
5
6 CStartOfInterFace
7 SUBROUTINE CALC_COMMON_FACTORS(
8 I bi,bj,iMin,iMax,jMin,jMax,k,kM1,kUp,kDown,
9 O xA,yA,uTrans,vTrans,rTrans,rVel,maskC,maskUp,
10 I myThid)
11
12 C /==========================================================\
13 C | SUBROUTINE CALC_COMMON_FACTORS |
14 C | o Calculate common data (such as volume flux) for use |
15 C | by "Right hand side" subroutines. |
16 C |==========================================================|
17 C | Here, we calculate terms or spatially varying factors |
18 C | that are used at various points in the "RHS" subroutines.|
19 C | This reduces the amount of total work, total memory |
20 C | and therefore execution time and is generally a good |
21 C | idea. |
22 C \==========================================================/
23 IMPLICIT NONE
24
25 C == GLobal variables ==
26 #include "SIZE.h"
27 #include "DYNVARS.h"
28 #include "EEPARAMS.h"
29 #include "PARAMS.h"
30 #include "GRID.h"
31 #ifdef ALLOW_NONHYDROSTATIC
32 #include "GW.h"
33 #endif
34
35 C == Routine arguments ==
36 C bi, bj, iMin, iMax, jMin, jMax - Range of points for which calculation
37 C results will be set.
38 C xA - Tracer cell face area normal to X
39 C yA - Tracer cell face area normal to X
40 C uTrans - Zonal volume transport through cell face
41 C vTrans - Meridional volume transport through cell face
42 C rTrans - R-direction volume transport through cell face
43 C rVel - R-direction velocity at cell upper and lower faces
44 C maskC - land/water mask for tracer points
45 C maskUp - land/water mask for Wvel points (above tracer level)
46 C myThid - Instance number for this innvocation of CALC_COMMON_FACTORS
47 C
48 INTEGER bi,bj,iMin,iMax,jMin,jMax,k,kM1,kUp,kDown
49 _RS xA (1-OLx:sNx+OLx,1-OLy:sNy+OLy)
50 _RS yA (1-OLx:sNx+OLx,1-OLy:sNy+OLy)
51 _RL uTrans(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
52 _RL vTrans(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
53 _RL rTrans(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
54 _RL rVel (1-OLx:sNx+OLx,1-OLy:sNy+OLy,2)
55 _RS maskC (1-OLx:sNx+OLx,1-OLy:sNy+OLy)
56 _RS maskUp(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
57 C
58 INTEGER myThid
59 CEndOfInterface
60
61 C == Local variables ==
62 C I, J, K - Loop counters
63 C kUp, kDown, kM1 - Index for layer above and below. K_UP and K_DOWN
64 C are switched with layer to be the appropriate index
65 C into fluxUD.
66 INTEGER i,j
67 LOGICAL TOP_LAYER
68
69 #ifdef ALLOW_AUTODIFF_TAMC
70 C-- rvel(:,:kDown) is still required
71 rVel(1,1,kDown) = rVel(1,1,kDown)
72 #endif
73
74 TOP_LAYER = K .EQ. 1
75
76 C-- Calculate mask for tracer cells (0 => land, 1 => water)
77 DO j=jMin,jMax
78 DO i=iMin,iMax
79 maskC(i,j) = 1.
80 IF (_hFacC(i,j,k,bi,bj).eq.0.) maskC(i,j)=0.
81 maskUp(i,j) = 1.
82 IF (_hFacC(i,j,k,bi,bj).eq.0. .OR. TOP_LAYER )
83 & maskUp(i,j)=0.
84 ENDDO
85 ENDDO
86
87 C-- Calculate tracer cell face open areas
88 DO j=jMin,jMax
89 DO i=iMin,iMax
90 xA(i,j) = _dyG(i,j,bi,bj)
91 & *drF(k)*_hFacW(i,j,k,bi,bj)
92 yA(i,j) = _dxG(i,j,bi,bj)
93 & *drF(k)*_hFacS(i,j,k,bi,bj)
94 ENDDO
95 ENDDO
96
97 C-- Calculate velocity field "volume transports" through
98 C-- tracer cell faces.
99 DO j=jMin,jMax
100 DO i=iMin,iMax
101 uTrans(i,j) = uVel(i,j,k,bi,bj)*xA(i,j)
102 vTrans(i,j) = vVel(i,j,k,bi,bj)*yA(i,j)
103 ENDDO
104 ENDDO
105
106 C-- Vertical velocity at upper face
107 DO j=jMin,jMax
108 DO i=iMin,iMax
109 rVel(i,j,kUp) = wVel(i,j,k,bi,bj)
110 ENDDO
111 ENDDO
112
113 C-- Calculate vertical "volume transport" through
114 C-- tracer cell face *above* this level.
115 DO j=jMin,jMax
116 DO i=iMin,iMax
117 rTrans(i,j) = rVel(i,j,kUp)*rA(i,j,bi,bj)
118 ENDDO
119 ENDDO
120
121 RETURN
122 END

  ViewVC Help
Powered by ViewVC 1.1.22