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

Last change on this file since 727 was 727, checked in by cetlod, 17 years ago

correction of aggregation of small into large particles, see ticket:16

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