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 @ 247

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

CL : Add CVS Header and CeCILL licence information

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