New URL for NEMO forge!   http://forge.nemo-ocean.eu

Since March 2022 along with NEMO 4.2 release, the code development moved to a self-hosted GitLab.
This present forge is now archived and remained online for history.
p4zsink2.F in trunk/NEMO/TOP_SRC/SMS – NEMO

source: trunk/NEMO/TOP_SRC/SMS/p4zsink2.F @ 340

Last change on this file since 340 was 339, checked in by opalod, 19 years ago

nemo_v1_update_027 : CE + RB + CT : update of SMS routines

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 3.7 KB
Line 
1      SUBROUTINE p4zsink2(wstmp,sinktemp,jn)
2CDIR$ LIST
3#if defined key_passivetrc && defined key_trc_pisces
4!!!
5!!!       p4zsink2 : PISCES model
6!!!       ***********************
7!!!
8!!
9!!  PURPOSE :
10!!  ---------
11!!     Compute the sedimentation terms for the various sinking
12!!     particles. The scheme used to compute the trends is based
13!!     on MUSCL.
14!!
15!!   METHOD :
16!!   -------
17!!      this ROUTINE compute not exactly the advection but the
18!!      transport term, i.e.  div(u*tra).
19!!
20!!
21!!   REFERENCES :               
22!!   ----------                 
23!!
24!!   References :
25!!      Estubier, A., and M. Levy, Notes Techn. Pole de Modelisation
26!!      IPSL, Sept. 2000 (http://www.lodyc.jussieu.fr/opa)
27!!
28!!
29!!   MODIFICATIONS:
30!!   --------------
31!!       original :  06-00 (A.Estublier)
32!!       modifications : 2004 (O. Aumont)
33!!       
34!!----------------------------------------------------------------------
35CC ----------------------------------------------------------------
36CC parameters and commons
37CC ======================
38CDIR$ NOLIST
39      USE oce_trc
40      USE trp_trc
41      USE sms
42      IMPLICIT NONE
43#include "domzgr_substitute.h90"
44CDIR$ LIST
45CC-----------------------------------------------------------------
46CC local declarations
47CC ==================
48C
49      INTEGER ji,jj,jk,jn
50      REAL ztraz(jpi,jpj,jpk),zakz(jpi,jpj,jpk)
51      REAL zkz(jpi,jpj,jpk)
52      REAL zigma,zew,zstep,zign
53      REAL wstmp(jpi,jpj,jpk),sinktemp(jpi,jpj,jpk)
54      REAL wstmp2(jpi,jpj,jpk)
55
56!!!---------------------------------------------------------------------
57!!!  OPA8, LODYC (01/00)
58!!!---------------------------------------------------------------------
59! 1. Initialization
60! --------------
61
62        zstep  = rdt*ndttrc
63
64        ztraz  = 0
65        zkz    = 0
66        zakz   = 0.
67
68        do jk=1,jpk-1
69         wstmp2(:,:,jk+1)=-wstmp(:,:,jk)/rjjss*tmask(:,:,jk+1)
70#    if defined key_off_degrad
71     &      *facvol(:,:,jk)
72#    endif
73        end do
74 
75        wstmp2(:,:,1)=0.
76!
77! 3. Vertical advective flux
78!-------------------------------
79! ... first guess of the slopes
80!   ... interior values
81!
82        DO jk=2,jpkm1
83              ztraz(:,:,jk) = (trn(:,:,jk-1,jn) - trn(:,:,jk,jn))
84     $                          *tmask(:,:,jk)
85        ENDDO
86!
87! slopes
88!
89        DO jk=2,jpkm1
90          DO jj = 1,jpj
91            DO ji = 1, jpi
92            zign = 0.5*(sign(1.,ztraz(ji,jj,jk)*ztraz(ji,jj,jk+1))+1)
93            zakz(ji,jj,jk) = 0.5*(ztraz(ji,jj,jk)
94     $                          +ztraz(ji,jj,jk+1))*zign
95            ENDDO
96          ENDDO
97        ENDDO       
98!
99! Slopes limitation
100!
101        DO jk=2,jpkm1
102          DO jj = 1,jpj
103            DO ji = 1,jpi
104              zakz(ji,jj,jk) = sign(1.,zakz(ji,jj,jk)) * 
105     $                        min(abs(zakz(ji,jj,jk)),
106     $                        2.*abs(ztraz(ji,jj,jk+1)),
107     $                        2.*abs(ztraz(ji,jj,jk)))
108            ENDDO
109          ENDDO
110        ENDDO       
111
112! vertical advective flux
113        DO jk=1,jpkm1
114          DO jj = 1,jpj     
115            DO ji = 1, jpi   
116              zigma = wstmp2(ji,jj,jk+1)*zstep/fse3w(ji,jj,jk+1)
117              zew   = wstmp2(ji,jj,jk+1)
118              sinktemp(ji,jj,jk+1) = -zew*(trn(ji,jj,jk,jn)
119     $           -0.5*(1+zigma)*zakz(ji,jj,jk))*rfact2
120            ENDDO
121          ENDDO
122        ENDDO 
123!
124! Boundary conditions
125!
126         sinktemp(:,:,1)=0.
127         sinktemp(:,:,jpk)=0.
128C
129       DO jk=1,jpkm1
130          DO jj = 1,jpj
131            DO ji = 1, jpi
132!
133            trn(ji,jj,jk,jn) = trn(ji,jj,jk,jn)
134     &        + (sinktemp(ji,jj,jk)-sinktemp(ji,jj,jk+1))
135     &        /fse3t(ji,jj,jk)
136!
137            ENDDO
138          ENDDO
139        ENDDO
140!
141        trb(:,:,:,jn)=trn(:,:,:,jn)
142!
143#endif
144C
145      RETURN
146      END
Note: See TracBrowser for help on using the repository browser.