Changeset 7176 for branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM
- Timestamp:
- 2016-11-03T16:15:42+01:00 (8 years ago)
- Location:
- branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z
- Files:
-
- 1 deleted
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zagg.F90
r7162 r7176 8 8 !! 3.4 ! 2011-06 (O. Aumont, C. Ethe) Change aggregation formula 9 9 !! 3.5 ! 2012-07 (O. Aumont) Introduce potential time-splitting 10 !! 3.6 ! 2015-05 (O. Aumont) PISCES quota 10 11 !!---------------------------------------------------------------------- 11 12 !!---------------------------------------------------------------------- … … 39 40 INTEGER, INTENT(in) :: kt, knt 40 41 INTEGER :: ji, jj, jk 41 REAL(wp) :: zagg1, zagg2, zagg3, zagg4 42 REAL(wp) :: zagg , zaggfe, zaggdoc, zaggdoc2, zaggdoc3 43 REAL(wp) :: zfact 42 REAL(wp) :: zagg, zagg1, zagg2, zagg3, zagg4 43 REAL(wp) :: zaggpoc1, zaggpoc2, zaggpoc3, zaggpoc4 44 REAL(wp) :: zaggpoc , zaggfe, zaggdoc, zaggdoc2, zaggdoc3 45 REAL(wp) :: zaggpon , zaggdon, zaggdon2, zaggdon3 46 REAL(wp) :: zaggpop, zaggdop, zaggdop2, zaggdop3 47 REAL(wp) :: zaggtmp, zfact, zmax 44 48 CHARACTER (len=25) :: charout 45 49 !!--------------------------------------------------------------------- … … 50 54 ! Exchange between organic matter compartments due to coagulation/disaggregation 51 55 ! --------------------------------------------------- 52 DO jk = 1, jpkm1 53 DO jj = 1, jpj 54 DO ji = 1, jpi 55 ! 56 zfact = xstep * xdiss(ji,jj,jk) 57 ! Part I : Coagulation dependent on turbulence 58 zagg1 = 25.9 * zfact * trb(ji,jj,jk,jppoc) * trb(ji,jj,jk,jppoc) 59 zagg2 = 4452. * zfact * trb(ji,jj,jk,jppoc) * trb(ji,jj,jk,jpgoc) 56 IF( ln_p4z ) THEN 57 ! 58 DO jk = 1, jpkm1 59 DO jj = 1, jpj 60 DO ji = 1, jpi 61 ! 62 zfact = xstep * xdiss(ji,jj,jk) 63 ! Part I : Coagulation dependent on turbulence 64 zagg1 = 25.9 * zfact * trb(ji,jj,jk,jppoc) * trb(ji,jj,jk,jppoc) 65 zagg2 = 4452. * zfact * trb(ji,jj,jk,jppoc) * trb(ji,jj,jk,jpgoc) 60 66 61 ! Part II : Differential settling67 ! Part II : Differential settling 62 68 63 ! Aggregation of small into large particles64 zagg3 = 47.1 * xstep * trb(ji,jj,jk,jppoc) * trb(ji,jj,jk,jpgoc)65 zagg4 = 3.3 * xstep * trb(ji,jj,jk,jppoc) * trb(ji,jj,jk,jppoc)69 ! Aggregation of small into large particles 70 zagg3 = 47.1 * xstep * trb(ji,jj,jk,jppoc) * trb(ji,jj,jk,jpgoc) 71 zagg4 = 3.3 * xstep * trb(ji,jj,jk,jppoc) * trb(ji,jj,jk,jppoc) 66 72 67 zagg = zagg1 + zagg2 + zagg3 + zagg468 zaggfe = zagg * trb(ji,jj,jk,jpsfe) / ( trb(ji,jj,jk,jppoc) + rtrn )73 zagg = zagg1 + zagg2 + zagg3 + zagg4 74 zaggfe = zagg * trb(ji,jj,jk,jpsfe) / ( trb(ji,jj,jk,jppoc) + rtrn ) 69 75 70 ! Aggregation of DOC to POC :71 ! 1st term is shear aggregation of DOC-DOC72 ! 2nd term is shear aggregation of DOC-POC73 ! 3rd term is differential settling of DOC-POC74 zaggdoc = ( ( 0.369 * 0.3 * trb(ji,jj,jk,jpdoc) + 102.4 * trb(ji,jj,jk,jppoc) ) * zfact &75 & + 2.4 * xstep * trb(ji,jj,jk,jppoc) ) * 0.3 * trb(ji,jj,jk,jpdoc)76 ! transfer of DOC to GOC :77 ! 1st term is shear aggregation78 ! 2nd term is differential settling79 zaggdoc2 = ( 3.53E3 * zfact + 0.1 * xstep ) * trb(ji,jj,jk,jpgoc) * 0.3 * trb(ji,jj,jk,jpdoc)80 ! tranfer of DOC to POC due to brownian motion81 zaggdoc3 = 114. * 0.3 * trb(ji,jj,jk,jpdoc) *xstep * 0.3 * trb(ji,jj,jk,jpdoc)76 ! Aggregation of DOC to POC : 77 ! 1st term is shear aggregation of DOC-DOC 78 ! 2nd term is shear aggregation of DOC-POC 79 ! 3rd term is differential settling of DOC-POC 80 zaggdoc = ( ( 0.369 * 0.3 * trb(ji,jj,jk,jpdoc) + 102.4 * trb(ji,jj,jk,jppoc) ) * zfact & 81 & + 2.4 * xstep * trb(ji,jj,jk,jppoc) ) * 0.3 * trb(ji,jj,jk,jpdoc) 82 ! transfer of DOC to GOC : 83 ! 1st term is shear aggregation 84 ! 2nd term is differential settling 85 zaggdoc2 = ( 3.53E3 * zfact + 0.1 * xstep ) * trb(ji,jj,jk,jpgoc) * 0.3 * trb(ji,jj,jk,jpdoc) 86 ! tranfer of DOC to POC due to brownian motion 87 zaggdoc3 = 114. * 0.3 * trb(ji,jj,jk,jpdoc) *xstep * 0.3 * trb(ji,jj,jk,jpdoc) 82 88 83 ! Update the trends 84 tra(ji,jj,jk,jppoc) = tra(ji,jj,jk,jppoc) - zagg + zaggdoc + zaggdoc3 85 tra(ji,jj,jk,jpgoc) = tra(ji,jj,jk,jpgoc) + zagg + zaggdoc2 86 tra(ji,jj,jk,jpsfe) = tra(ji,jj,jk,jpsfe) - zaggfe 87 tra(ji,jj,jk,jpbfe) = tra(ji,jj,jk,jpbfe) + zaggfe 88 tra(ji,jj,jk,jpdoc) = tra(ji,jj,jk,jpdoc) - zaggdoc - zaggdoc2 - zaggdoc3 89 ! 90 conspoc(ji,jj,jk) = conspoc(ji,jj,jk) - zagg + zaggdoc + zaggdoc3 91 prodgoc(ji,jj,jk) = prodgoc(ji,jj,jk) + zagg + zaggdoc2 92 ! 89 ! Update the trends 90 tra(ji,jj,jk,jppoc) = tra(ji,jj,jk,jppoc) - zagg + zaggdoc + zaggdoc3 91 tra(ji,jj,jk,jpgoc) = tra(ji,jj,jk,jpgoc) + zagg + zaggdoc2 92 tra(ji,jj,jk,jpsfe) = tra(ji,jj,jk,jpsfe) - zaggfe 93 tra(ji,jj,jk,jpbfe) = tra(ji,jj,jk,jpbfe) + zaggfe 94 tra(ji,jj,jk,jpdoc) = tra(ji,jj,jk,jpdoc) - zaggdoc - zaggdoc2 - zaggdoc3 95 ! 96 conspoc(ji,jj,jk) = conspoc(ji,jj,jk) - zagg + zaggdoc + zaggdoc3 97 prodgoc(ji,jj,jk) = prodgoc(ji,jj,jk) + zagg + zaggdoc2 98 ! 99 END DO 93 100 END DO 94 101 END DO 95 END DO 102 ELSE ! ln_p5z 103 ! 104 DO jk = 1, jpkm1 105 DO jj = 1, jpj 106 DO ji = 1, jpi 107 ! 108 zfact = xstep * xdiss(ji,jj,jk) 109 ! Part I : Coagulation dependent on turbulence 110 zaggtmp = 25.9 * zfact * trb(ji,jj,jk,jppoc) 111 zaggpoc1 = zaggtmp * trb(ji,jj,jk,jppoc) 112 zaggtmp = 4452. * zfact * trb(ji,jj,jk,jpgoc) 113 zaggpoc2 = zaggtmp * trb(ji,jj,jk,jppoc) 114 115 ! Part II : Differential settling 116 117 ! Aggregation of small into large particles 118 zaggtmp = 47.1 * xstep * trb(ji,jj,jk,jpgoc) 119 zaggpoc3 = zaggtmp * trb(ji,jj,jk,jppoc) 120 zaggtmp = 3.3 * xstep * trb(ji,jj,jk,jppoc) 121 zaggpoc4 = zaggtmp * trb(ji,jj,jk,jppoc) 122 123 zaggpoc = zaggpoc1 + zaggpoc2 + zaggpoc3 + zaggpoc4 124 zaggpon = zaggpoc * trb(ji,jj,jk,jppon) / ( trb(ji,jj,jk,jppoc) + rtrn) 125 zaggpop = zaggpoc * trb(ji,jj,jk,jppop) / ( trb(ji,jj,jk,jppoc) + rtrn) 126 zaggfe = zaggpoc * trb(ji,jj,jk,jpsfe) / ( trb(ji,jj,jk,jppoc) + rtrn ) 127 128 ! Aggregation of DOC to POC : 129 ! 1st term is shear aggregation of DOC-DOC 130 ! 2nd term is shear aggregation of DOC-POC 131 ! 3rd term is differential settling of DOC-POC 132 zaggtmp = ( ( 0.369 * 0.3 * trb(ji,jj,jk,jpdoc) + 102.4 * trb(ji,jj,jk,jppoc) ) * zfact & 133 & + 2.4 * xstep * trb(ji,jj,jk,jppoc) ) 134 zaggdoc = zaggtmp * 0.3 * trb(ji,jj,jk,jpdoc) 135 zaggdon = zaggtmp * 0.3 * trb(ji,jj,jk,jpdon) 136 zaggdop = zaggtmp * 0.3 * trb(ji,jj,jk,jpdop) 137 138 ! transfer of DOC to GOC : 139 ! 1st term is shear aggregation 140 ! 2nd term is differential settling 141 zaggtmp = ( 3.53E3 * zfact + 0.1 * xstep ) * trb(ji,jj,jk,jpgoc) 142 zaggdoc2 = zaggtmp * 0.3 * trb(ji,jj,jk,jpdoc) 143 zaggdon2 = zaggtmp * 0.3 * trb(ji,jj,jk,jpdon) 144 zaggdop2 = zaggtmp * 0.3 * trb(ji,jj,jk,jpdop) 145 146 ! tranfer of DOC to POC due to brownian motion 147 zaggtmp = ( 114. * 0.3 * trb(ji,jj,jk,jpdoc) ) * xstep 148 zaggdoc3 = zaggtmp * 0.3 * trb(ji,jj,jk,jpdoc) 149 zaggdon3 = zaggtmp * 0.3 * trb(ji,jj,jk,jpdon) 150 zaggdop3 = zaggtmp * 0.3 * trb(ji,jj,jk,jpdop) 151 152 ! Update the trends 153 tra(ji,jj,jk,jppoc) = tra(ji,jj,jk,jppoc) - zaggpoc + zaggdoc + zaggdoc3 154 tra(ji,jj,jk,jppon) = tra(ji,jj,jk,jppon) - zaggpon + zaggdon + zaggdon3 155 tra(ji,jj,jk,jppop) = tra(ji,jj,jk,jppop) - zaggpop + zaggdop + zaggdop3 156 tra(ji,jj,jk,jpgoc) = tra(ji,jj,jk,jpgoc) + zaggpoc + zaggdoc2 157 tra(ji,jj,jk,jpgon) = tra(ji,jj,jk,jpgon) + zaggpon + zaggdon2 158 tra(ji,jj,jk,jpgop) = tra(ji,jj,jk,jpgop) + zaggpop + zaggdop2 159 tra(ji,jj,jk,jpsfe) = tra(ji,jj,jk,jpsfe) - zaggfe 160 tra(ji,jj,jk,jpbfe) = tra(ji,jj,jk,jpbfe) + zaggfe 161 tra(ji,jj,jk,jpdoc) = tra(ji,jj,jk,jpdoc) - zaggdoc - zaggdoc2 - zaggdoc3 162 tra(ji,jj,jk,jpdon) = tra(ji,jj,jk,jpdon) - zaggdon - zaggdon2 - zaggdon3 163 tra(ji,jj,jk,jpdop) = tra(ji,jj,jk,jpdop) - zaggdop - zaggdop2 - zaggdop3 164 ! 165 conspoc(ji,jj,jk) = conspoc(ji,jj,jk) - zaggpoc + zaggdoc + zaggdoc3 166 prodgoc(ji,jj,jk) = prodgoc(ji,jj,jk) + zaggpoc + zaggdoc2 167 ! 168 END DO 169 END DO 170 END DO 171 ! 172 ENDIF 96 173 ! 97 174 IF(ln_ctl) THEN ! print mean trends (used for debugging) -
branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zbio.F90
r7162 r7176 25 25 USE p5zmicro ! Sources and sinks of microzooplankton 26 26 USE p5zmeso ! Sources and sinks of mesozooplankton 27 USE p5zagg ! Aggregation of particles28 27 USE p4zrem ! Remineralisation of organic matter 29 28 USE p4zpoc ! Remineralization of organic particles … … 90 89 CALL p4z_micro( kt, knt ) ! microzooplankton 91 90 CALL p4z_meso ( kt, knt ) ! mesozooplankton 92 CALL p4z_agg ( kt, knt ) ! Aggregation of particles93 91 ELSE 94 92 CALL p5z_lim ( kt, knt ) ! co-limitations by the various nutrients … … 99 97 CALL p5z_micro( kt, knt ) ! microzooplankton 100 98 CALL p5z_meso ( kt, knt ) ! mesozooplankton 101 CALL p5z_agg ( kt, knt ) ! Aggregation of particles102 99 ENDIF 103 100 ! 101 CALL p4z_agg ( kt, knt ) ! Aggregation of particles 104 102 CALL p4z_rem ( kt, knt ) ! remineralization terms of organic matter+scavenging of Fe 105 103 CALL p4z_poc ( kt, knt ) ! Remineralization of organic particles
Note: See TracChangeset
for help on using the changeset viewer.