/[MITgcm]/MITgcm/pkg/ptracers/ptracers_calc_wsurf_tr.F
ViewVC logotype

Contents of /MITgcm/pkg/ptracers/ptracers_calc_wsurf_tr.F

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


Revision 1.4 - (show annotations) (download)
Tue Aug 23 18:29:49 2016 UTC (7 years, 8 months ago) by jahn
Branch: MAIN
CVS Tags: checkpoint66g, checkpoint66f, checkpoint66e, checkpoint66d, checkpoint66c, checkpoint66b, checkpoint66a, checkpoint66o, checkpoint66n, checkpoint66m, checkpoint66l, checkpoint66k, checkpoint66j, checkpoint66i, checkpoint66h, checkpoint65z, HEAD
Changes since 1.3: +6 -4 lines
enable linear-free-surface correction by ptracer, default off

1 C $Header: /u/gcmpack/MITgcm/pkg/ptracers/ptracers_calc_wsurf_tr.F,v 1.3 2016/08/23 12:25:24 mlosch Exp $
2 C $Name: $
3
4 #include "PTRACERS_OPTIONS.h"
5
6 CBOP
7 C !ROUTINE: PTRACERS_CALC_WSURF_TR
8 C !INTERFACE:
9 SUBROUTINE PTRACERS_CALC_WSURF_TR(wVelFld,
10 I myTime, myIter, myThid )
11 C !DESCRIPTION: \bv
12 C *==========================================================*
13 C | SUBROUTINE CALC_WSURF_TR
14 C | o Compute a correction for the source/sink of tracer
15 C | due to the linear free surface.
16 C | o The source/sink results from W*Tr not summing to
17 C | zero at the free surface.
18 C | o Here, we compute an area-integrated correction
19 C | to be applied in biogeochemistry packages.
20 C *==========================================================*
21 C \ev
22
23 C !USES:
24 IMPLICIT NONE
25 C == Global variables
26 #include "SIZE.h"
27 #include "EEPARAMS.h"
28 #include "PARAMS.h"
29 #include "GRID.h"
30 #include "SURFACE.h"
31 #include "PTRACERS_SIZE.h"
32 #include "PTRACERS_PARAMS.h"
33 #include "PTRACERS_FIELDS.h"
34
35 C !INPUT PARAMETERS:
36 C wvelFld :: vertical velocity field
37 C myTime :: Current time in simulation
38 C myIter :: Current iteration number in simulation
39 C myThid :: Thread number for this instance of the routine.
40 _RL wVelFld (1-Olx:sNx+Olx,1-Oly:sNy+Oly,Nr,nSx,nSy)
41 _RL myTime
42 INTEGER myIter
43 INTEGER myThid
44 CEOP
45
46 C !LOCAL VARIABLES:
47 INTEGER i,j,bi,bj,ks,itr
48 _RL wT_Tile(nSx,nSy,PTRACERS_num)
49 _RL wT_Mean(PTRACERS_num)
50
51 C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
52
53 DO itr=1,PTRACERS_numInUse
54 totSurfCorPTr(iTr) = 0.0 _d 0
55 meanSurfCorPTr(iTr) = 0.0 _d 0
56 wT_mean(iTr) = 0.0 _d 0
57 ENDDO
58
59 C-- compute per-tile sums
60 DO bj=myByLo(myThid), myByHi(myThid)
61 DO bi=myBxLo(myThid), myBxHi(myThid)
62 DO itr=1,PTRACERS_numInUse
63 wT_Tile(bi,bj,itr) = 0.
64 DO j=1,sNy
65 DO i=1,sNx
66 ks = ksurfC(i,j,bi,bj)
67 IF (ks.LE.Nr) THEN
68 wT_Tile(bi,bj,itr) = wT_Tile(bi,bj,itr)
69 & + rA(i,j,bi,bj)*wVelFld(i,j,ks,bi,bj)
70 & *ptracer(i,j,ks,bi,bj,iTr)
71 ENDIF
72 ENDDO
73 ENDDO
74 ENDDO
75 ENDDO
76 ENDDO
77
78 C-- sum over tiles
79 DO itr=1,PTRACERS_numInUse
80 CALL GLOBAL_SUM_TILE_RL( wT_Tile(1,1,itr), wT_Mean(iTr),
81 & myThid )
82 totSurfCorPTr(iTr) = wT_Mean(iTr)
83 ENDDO
84
85 IF ( globalArea.GT.0. ) THEN
86 _BEGIN_MASTER( myThid )
87 DO itr=1,PTRACERS_numInUse
88 meanSurfCorPTr(iTr) = wT_Mean(iTr) / globalArea
89 ENDDO
90 _END_MASTER( myThid )
91 ENDIF
92
93 _BARRIER
94
95 RETURN
96 END

  ViewVC Help
Powered by ViewVC 1.1.22