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.
p4zsink.std.h in trunk/NEMO/TOP_SRC/SMS – NEMO

source: trunk/NEMO/TOP_SRC/SMS/p4zsink.std.h @ 700

Last change on this file since 700 was 699, checked in by smasson, 17 years ago

insert revision Id

  • Property svn:eol-style set to native
  • Property svn:executable set to *
  • Property svn:keywords set to Id
File size: 4.3 KB
Line 
1CC----------------------------------------------------------------------
2CC  TOP 1.0 , LOCEAN-IPSL (2005) 
3CC $Id$
4CC This software is governed by CeCILL licence see modipsl/doc/NEMO_CeCILL.txt
5CC----------------------------------------------------------------------
6
7CDIR$ LIST
8CC----------------------------------------------------------------------
9CC local declarations
10CC ==================
11      INTEGER jksed, ji, jj, jk
12      REAL xagg1,xagg2,xagg3,xagg4
13      REAL zfact,zstep,wsmax
14#if defined key_trc_dia3d
15      REAL zrfact2
16#endif
17      REAL sinking(jpi,jpj,jpk),sinking2(jpi,jpj,jpk)
18      REAL sinkfer(jpi,jpj,jpk),sinkfer2(jpi,jpj,jpk)
19      REAL sinkcal(jpi,jpj,jpk),sinksil(jpi,jpj,jpk)
20C
21C    Time step duration for biology
22C    ------------------------------
23C
24       zstep=rfact2/rjjss
25C
26C    Sinking speeds of detritus is increased with depth as shown
27C    by data and from the coagulation theory
28C    -----------------------------------------------------------
29C
30       jksed=10
31C
32       DO jk=1,jpk-1
33         DO jj=1,jpj
34           DO ji=1,jpi
35       zfact=max(0.,fsdepw(ji,jj,jk+1)-hmld(ji,jj))/2000.
36       wsbio4(ji,jj,jk)=wsbio2+(200.-wsbio2)*zfact
37             END DO
38           END DO
39         END DO
40C
41C      LIMIT THE VALUES OF THE SINKING SPEEDS
42C      TO AVOID NUMERICAL INSTABILITIES
43C
44      wsbio3(:,:,:)=wsbio
45
46      Do jk=1,jpk-1
47        DO jj=1,jpj
48          DO ji=1,jpi
49       wsmax=0.8*fse3t(ji,jj,jk)/zstep
50       wsbio4(ji,jj,jk)=min(wsbio4(ji,jj,jk),wsmax)
51       wsbio3(ji,jj,jk)=min(wsbio3(ji,jj,jk),wsmax)
52          END DO
53        END DO
54       END DO
55
56      wscal(:,:,:)=wsbio4(:,:,:)
57C
58C
59C   INITIALIZE TO ZERO ALL THE SINKING ARRAYS
60C   -----------------------------------------
61C
62         sinking=0.
63         sinking2=0.
64         sinkcal=0.
65         sinkfer=0.
66         sinksil=0.
67         sinkfer2=0.
68C
69C   Compute the sedimentation term using p4zsink2 for all
70C   the sinking particles
71C   -----------------------------------------------------
72C
73         CALL p4zsink2(wsbio3,sinking,jppoc)
74         CALL p4zsink2(wsbio3,sinkfer,jpsfe)
75         CALL p4zsink2(wsbio4,sinking2,jpgoc)
76         CALL p4zsink2(wsbio4,sinkfer2,jpbfe)
77         CALL p4zsink2(wsbio4,sinksil,jpdsi)
78         CALL p4zsink2(wscal,sinkcal,jpcal)
79C
80C  Exchange between organic matter compartments due to
81C  coagulation/disaggregation
82---------------------------------------------------
83C
84         DO jk = 1,jpkm1
85           DO jj = 1,jpj
86             DO ji = 1,jpi
87C
88        zfact=zstep*zdiss(ji,jj,jk)
89C
90C    Part I : Coagulation dependent on turbulence
91C    ----------------------------------------------
92C
93         xagg1=940.*zfact*trn(ji,jj,jk,jppoc)*trn(ji,jj,jk,jppoc)
94#    if defined key_off_degrad
95     &     *facvol(ji,jj,jk)
96#    endif
97
98         xagg2=1.054E4*zfact*trn(ji,jj,jk,jppoc)*trn(ji,jj,jk,jpgoc)
99#    if defined key_off_degrad
100     &     *facvol(ji,jj,jk)
101#    endif
102C
103C    Aggregation of small into large particles
104C    Part II : Differential settling
105C    ----------------------------------------------
106C
107         xagg3=0.66*zstep*trn(ji,jj,jk,jppoc)*trn(ji,jj,jk,jppoc)
108#    if defined key_off_degrad
109     &     *facvol(ji,jj,jk)
110#    endif
111
112         xagg4=0.*zstep*trn(ji,jj,jk,jppoc)*trn(ji,jj,jk,jpgoc)
113#    if defined key_off_degrad
114     &     *facvol(ji,jj,jk)
115#    endif
116C
117         xagg(ji,jj,jk)=xagg1+xagg2+xagg3+xagg4
118         xaggfe(ji,jj,jk)=xagg(ji,jj,jk)*trn(ji,jj,jk,jpsfe)/
119     &     (trn(ji,jj,jk,jppoc)+rtrn)
120C
121C     Aggregation of DOC to small particles
122C     --------------------------------------
123C
124         xaggdoc(ji,jj,jk)=(80*trn(ji,jj,jk,jpdoc)+698.
125     &     *trn(ji,jj,jk,jppoc))*zfact*trn(ji,jj,jk,jpdoc)
126#    if defined key_off_degrad
127     &     *facvol(ji,jj,jk)
128#    endif
129
130         xaggdoc2(ji,jj,jk)=1.05E4*zfact*trn(ji,jj,jk,jpgoc)
131     &     *trn(ji,jj,jk,jpdoc)
132#    if defined key_off_degrad
133     &     *facvol(ji,jj,jk)
134#    endif
135C
136             END DO
137           END DO
138         END DO
139
140#    if defined key_trc_dia3d
141         zrfact2 = 1.e3*rfact2r
142         trc2d(:,:,5) = sinking(:,:,jksed+1)*zrfact2
143         trc2d(:,:,6) = sinking2(:,:,jksed+1)*zrfact2
144         trc2d(:,:,7) = sinkfer(:,:,jksed+1)*zrfact2
145         trc2d(:,:,8) = sinkfer2(:,:,jksed+1)*zrfact2
146         trc2d(:,:,9) = sinksil(:,:,jksed+1)*zrfact2
147         trc2d(:,:,10) = sinkcal(:,:,jksed+1)*zrfact2
148#    endif
Note: See TracBrowser for help on using the repository browser.