Changeset 10975 for NEMO/branches/2019/dev_r10721_KERNEL-02_Storkey_Coward_IMMERSE_first_steps/src/TOP/PISCES/P4Z/p4zagg.F90
- Timestamp:
- 2019-05-13T18:34:33+02:00 (5 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
NEMO/branches/2019/dev_r10721_KERNEL-02_Storkey_Coward_IMMERSE_first_steps/src/TOP/PISCES/P4Z/p4zagg.F90
r10069 r10975 31 31 CONTAINS 32 32 33 SUBROUTINE p4z_agg ( kt, knt )33 SUBROUTINE p4z_agg ( kt, knt, Kbb, Krhs ) 34 34 !!--------------------------------------------------------------------- 35 35 !! *** ROUTINE p4z_agg *** … … 40 40 !!--------------------------------------------------------------------- 41 41 INTEGER, INTENT(in) :: kt, knt ! 42 INTEGER, INTENT(in) :: Kbb, Krhs ! time level indices 42 43 ! 43 44 INTEGER :: ji, jj, jk … … 63 64 zfact = xstep * xdiss(ji,jj,jk) 64 65 ! Part I : Coagulation dependent on turbulence 65 zagg1 = 25.9 * zfact * tr b(ji,jj,jk,jppoc) * trb(ji,jj,jk,jppoc)66 zagg2 = 4452. * zfact * tr b(ji,jj,jk,jppoc) * trb(ji,jj,jk,jpgoc)66 zagg1 = 25.9 * zfact * tr(ji,jj,jk,jppoc,Kbb) * tr(ji,jj,jk,jppoc,Kbb) 67 zagg2 = 4452. * zfact * tr(ji,jj,jk,jppoc,Kbb) * tr(ji,jj,jk,jpgoc,Kbb) 67 68 68 69 ! Part II : Differential settling 69 70 70 71 ! Aggregation of small into large particles 71 zagg3 = 47.1 * xstep * tr b(ji,jj,jk,jppoc) * trb(ji,jj,jk,jpgoc)72 zagg4 = 3.3 * xstep * tr b(ji,jj,jk,jppoc) * trb(ji,jj,jk,jppoc)72 zagg3 = 47.1 * xstep * tr(ji,jj,jk,jppoc,Kbb) * tr(ji,jj,jk,jpgoc,Kbb) 73 zagg4 = 3.3 * xstep * tr(ji,jj,jk,jppoc,Kbb) * tr(ji,jj,jk,jppoc,Kbb) 73 74 74 75 zagg = zagg1 + zagg2 + zagg3 + zagg4 75 zaggfe = zagg * tr b(ji,jj,jk,jpsfe) / ( trb(ji,jj,jk,jppoc) + rtrn )76 zaggfe = zagg * tr(ji,jj,jk,jpsfe,Kbb) / ( tr(ji,jj,jk,jppoc,Kbb) + rtrn ) 76 77 77 78 ! Aggregation of DOC to POC : … … 79 80 ! 2nd term is shear aggregation of DOC-POC 80 81 ! 3rd term is differential settling of DOC-POC 81 zaggdoc = ( ( 0.369 * 0.3 * tr b(ji,jj,jk,jpdoc) + 102.4 * trb(ji,jj,jk,jppoc) ) * zfact &82 & + 2.4 * xstep * tr b(ji,jj,jk,jppoc) ) * 0.3 * trb(ji,jj,jk,jpdoc)82 zaggdoc = ( ( 0.369 * 0.3 * tr(ji,jj,jk,jpdoc,Kbb) + 102.4 * tr(ji,jj,jk,jppoc,Kbb) ) * zfact & 83 & + 2.4 * xstep * tr(ji,jj,jk,jppoc,Kbb) ) * 0.3 * tr(ji,jj,jk,jpdoc,Kbb) 83 84 ! transfer of DOC to GOC : 84 85 ! 1st term is shear aggregation 85 86 ! 2nd term is differential settling 86 zaggdoc2 = ( 3.53E3 * zfact + 0.1 * xstep ) * tr b(ji,jj,jk,jpgoc) * 0.3 * trb(ji,jj,jk,jpdoc)87 zaggdoc2 = ( 3.53E3 * zfact + 0.1 * xstep ) * tr(ji,jj,jk,jpgoc,Kbb) * 0.3 * tr(ji,jj,jk,jpdoc,Kbb) 87 88 ! tranfer of DOC to POC due to brownian motion 88 zaggdoc3 = 114. * 0.3 * tr b(ji,jj,jk,jpdoc) *xstep * 0.3 * trb(ji,jj,jk,jpdoc)89 zaggdoc3 = 114. * 0.3 * tr(ji,jj,jk,jpdoc,Kbb) *xstep * 0.3 * tr(ji,jj,jk,jpdoc,Kbb) 89 90 90 91 ! Update the trends 91 tr a(ji,jj,jk,jppoc) = tra(ji,jj,jk,jppoc) - zagg + zaggdoc + zaggdoc392 tr a(ji,jj,jk,jpgoc) = tra(ji,jj,jk,jpgoc) + zagg + zaggdoc293 tr a(ji,jj,jk,jpsfe) = tra(ji,jj,jk,jpsfe) - zaggfe94 tr a(ji,jj,jk,jpbfe) = tra(ji,jj,jk,jpbfe) + zaggfe95 tr a(ji,jj,jk,jpdoc) = tra(ji,jj,jk,jpdoc) - zaggdoc - zaggdoc2 - zaggdoc392 tr(ji,jj,jk,jppoc,Krhs) = tr(ji,jj,jk,jppoc,Krhs) - zagg + zaggdoc + zaggdoc3 93 tr(ji,jj,jk,jpgoc,Krhs) = tr(ji,jj,jk,jpgoc,Krhs) + zagg + zaggdoc2 94 tr(ji,jj,jk,jpsfe,Krhs) = tr(ji,jj,jk,jpsfe,Krhs) - zaggfe 95 tr(ji,jj,jk,jpbfe,Krhs) = tr(ji,jj,jk,jpbfe,Krhs) + zaggfe 96 tr(ji,jj,jk,jpdoc,Krhs) = tr(ji,jj,jk,jpdoc,Krhs) - zaggdoc - zaggdoc2 - zaggdoc3 96 97 ! 97 98 conspoc(ji,jj,jk) = conspoc(ji,jj,jk) - zagg + zaggdoc + zaggdoc3 … … 109 110 zfact = xstep * xdiss(ji,jj,jk) 110 111 ! Part I : Coagulation dependent on turbulence 111 zaggtmp = 25.9 * zfact * tr b(ji,jj,jk,jppoc)112 zaggpoc1 = zaggtmp * tr b(ji,jj,jk,jppoc)113 zaggtmp = 4452. * zfact * tr b(ji,jj,jk,jpgoc)114 zaggpoc2 = zaggtmp * tr b(ji,jj,jk,jppoc)112 zaggtmp = 25.9 * zfact * tr(ji,jj,jk,jppoc,Kbb) 113 zaggpoc1 = zaggtmp * tr(ji,jj,jk,jppoc,Kbb) 114 zaggtmp = 4452. * zfact * tr(ji,jj,jk,jpgoc,Kbb) 115 zaggpoc2 = zaggtmp * tr(ji,jj,jk,jppoc,Kbb) 115 116 116 117 ! Part II : Differential settling 117 118 118 119 ! Aggregation of small into large particles 119 zaggtmp = 47.1 * xstep * tr b(ji,jj,jk,jpgoc)120 zaggpoc3 = zaggtmp * tr b(ji,jj,jk,jppoc)121 zaggtmp = 3.3 * xstep * tr b(ji,jj,jk,jppoc)122 zaggpoc4 = zaggtmp * tr b(ji,jj,jk,jppoc)120 zaggtmp = 47.1 * xstep * tr(ji,jj,jk,jpgoc,Kbb) 121 zaggpoc3 = zaggtmp * tr(ji,jj,jk,jppoc,Kbb) 122 zaggtmp = 3.3 * xstep * tr(ji,jj,jk,jppoc,Kbb) 123 zaggpoc4 = zaggtmp * tr(ji,jj,jk,jppoc,Kbb) 123 124 124 125 zaggpoc = zaggpoc1 + zaggpoc2 + zaggpoc3 + zaggpoc4 125 zaggpon = zaggpoc * tr b(ji,jj,jk,jppon) / ( trb(ji,jj,jk,jppoc) + rtrn)126 zaggpop = zaggpoc * tr b(ji,jj,jk,jppop) / ( trb(ji,jj,jk,jppoc) + rtrn)127 zaggfe = zaggpoc * tr b(ji,jj,jk,jpsfe) / ( trb(ji,jj,jk,jppoc) + rtrn )126 zaggpon = zaggpoc * tr(ji,jj,jk,jppon,Kbb) / ( tr(ji,jj,jk,jppoc,Kbb) + rtrn) 127 zaggpop = zaggpoc * tr(ji,jj,jk,jppop,Kbb) / ( tr(ji,jj,jk,jppoc,Kbb) + rtrn) 128 zaggfe = zaggpoc * tr(ji,jj,jk,jpsfe,Kbb) / ( tr(ji,jj,jk,jppoc,Kbb) + rtrn ) 128 129 129 130 ! Aggregation of DOC to POC : … … 131 132 ! 2nd term is shear aggregation of DOC-POC 132 133 ! 3rd term is differential settling of DOC-POC 133 zaggtmp = ( ( 0.369 * 0.3 * tr b(ji,jj,jk,jpdoc) + 102.4 * trb(ji,jj,jk,jppoc) ) * zfact &134 & + 2.4 * xstep * tr b(ji,jj,jk,jppoc) )135 zaggdoc = zaggtmp * 0.3 * tr b(ji,jj,jk,jpdoc)136 zaggdon = zaggtmp * 0.3 * tr b(ji,jj,jk,jpdon)137 zaggdop = zaggtmp * 0.3 * tr b(ji,jj,jk,jpdop)134 zaggtmp = ( ( 0.369 * 0.3 * tr(ji,jj,jk,jpdoc,Kbb) + 102.4 * tr(ji,jj,jk,jppoc,Kbb) ) * zfact & 135 & + 2.4 * xstep * tr(ji,jj,jk,jppoc,Kbb) ) 136 zaggdoc = zaggtmp * 0.3 * tr(ji,jj,jk,jpdoc,Kbb) 137 zaggdon = zaggtmp * 0.3 * tr(ji,jj,jk,jpdon,Kbb) 138 zaggdop = zaggtmp * 0.3 * tr(ji,jj,jk,jpdop,Kbb) 138 139 139 140 ! transfer of DOC to GOC : 140 141 ! 1st term is shear aggregation 141 142 ! 2nd term is differential settling 142 zaggtmp = ( 3.53E3 * zfact + 0.1 * xstep ) * tr b(ji,jj,jk,jpgoc)143 zaggdoc2 = zaggtmp * 0.3 * tr b(ji,jj,jk,jpdoc)144 zaggdon2 = zaggtmp * 0.3 * tr b(ji,jj,jk,jpdon)145 zaggdop2 = zaggtmp * 0.3 * tr b(ji,jj,jk,jpdop)143 zaggtmp = ( 3.53E3 * zfact + 0.1 * xstep ) * tr(ji,jj,jk,jpgoc,Kbb) 144 zaggdoc2 = zaggtmp * 0.3 * tr(ji,jj,jk,jpdoc,Kbb) 145 zaggdon2 = zaggtmp * 0.3 * tr(ji,jj,jk,jpdon,Kbb) 146 zaggdop2 = zaggtmp * 0.3 * tr(ji,jj,jk,jpdop,Kbb) 146 147 147 148 ! tranfer of DOC to POC due to brownian motion 148 zaggtmp = ( 114. * 0.3 * tr b(ji,jj,jk,jpdoc) ) * xstep149 zaggdoc3 = zaggtmp * 0.3 * tr b(ji,jj,jk,jpdoc)150 zaggdon3 = zaggtmp * 0.3 * tr b(ji,jj,jk,jpdon)151 zaggdop3 = zaggtmp * 0.3 * tr b(ji,jj,jk,jpdop)149 zaggtmp = ( 114. * 0.3 * tr(ji,jj,jk,jpdoc,Kbb) ) * xstep 150 zaggdoc3 = zaggtmp * 0.3 * tr(ji,jj,jk,jpdoc,Kbb) 151 zaggdon3 = zaggtmp * 0.3 * tr(ji,jj,jk,jpdon,Kbb) 152 zaggdop3 = zaggtmp * 0.3 * tr(ji,jj,jk,jpdop,Kbb) 152 153 153 154 ! Update the trends 154 tr a(ji,jj,jk,jppoc) = tra(ji,jj,jk,jppoc) - zaggpoc + zaggdoc + zaggdoc3155 tr a(ji,jj,jk,jppon) = tra(ji,jj,jk,jppon) - zaggpon + zaggdon + zaggdon3156 tr a(ji,jj,jk,jppop) = tra(ji,jj,jk,jppop) - zaggpop + zaggdop + zaggdop3157 tr a(ji,jj,jk,jpgoc) = tra(ji,jj,jk,jpgoc) + zaggpoc + zaggdoc2158 tr a(ji,jj,jk,jpgon) = tra(ji,jj,jk,jpgon) + zaggpon + zaggdon2159 tr a(ji,jj,jk,jpgop) = tra(ji,jj,jk,jpgop) + zaggpop + zaggdop2160 tr a(ji,jj,jk,jpsfe) = tra(ji,jj,jk,jpsfe) - zaggfe161 tr a(ji,jj,jk,jpbfe) = tra(ji,jj,jk,jpbfe) + zaggfe162 tr a(ji,jj,jk,jpdoc) = tra(ji,jj,jk,jpdoc) - zaggdoc - zaggdoc2 - zaggdoc3163 tr a(ji,jj,jk,jpdon) = tra(ji,jj,jk,jpdon) - zaggdon - zaggdon2 - zaggdon3164 tr a(ji,jj,jk,jpdop) = tra(ji,jj,jk,jpdop) - zaggdop - zaggdop2 - zaggdop3155 tr(ji,jj,jk,jppoc,Krhs) = tr(ji,jj,jk,jppoc,Krhs) - zaggpoc + zaggdoc + zaggdoc3 156 tr(ji,jj,jk,jppon,Krhs) = tr(ji,jj,jk,jppon,Krhs) - zaggpon + zaggdon + zaggdon3 157 tr(ji,jj,jk,jppop,Krhs) = tr(ji,jj,jk,jppop,Krhs) - zaggpop + zaggdop + zaggdop3 158 tr(ji,jj,jk,jpgoc,Krhs) = tr(ji,jj,jk,jpgoc,Krhs) + zaggpoc + zaggdoc2 159 tr(ji,jj,jk,jpgon,Krhs) = tr(ji,jj,jk,jpgon,Krhs) + zaggpon + zaggdon2 160 tr(ji,jj,jk,jpgop,Krhs) = tr(ji,jj,jk,jpgop,Krhs) + zaggpop + zaggdop2 161 tr(ji,jj,jk,jpsfe,Krhs) = tr(ji,jj,jk,jpsfe,Krhs) - zaggfe 162 tr(ji,jj,jk,jpbfe,Krhs) = tr(ji,jj,jk,jpbfe,Krhs) + zaggfe 163 tr(ji,jj,jk,jpdoc,Krhs) = tr(ji,jj,jk,jpdoc,Krhs) - zaggdoc - zaggdoc2 - zaggdoc3 164 tr(ji,jj,jk,jpdon,Krhs) = tr(ji,jj,jk,jpdon,Krhs) - zaggdon - zaggdon2 - zaggdon3 165 tr(ji,jj,jk,jpdop,Krhs) = tr(ji,jj,jk,jpdop,Krhs) - zaggdop - zaggdop2 - zaggdop3 165 166 ! 166 167 conspoc(ji,jj,jk) = conspoc(ji,jj,jk) - zaggpoc + zaggdoc + zaggdoc3 … … 176 177 WRITE(charout, FMT="('agg')") 177 178 CALL prt_ctl_trc_info(charout) 178 CALL prt_ctl_trc(tab4d=tr a, mask=tmask, clinfo=ctrcnm)179 CALL prt_ctl_trc(tab4d=tr(:,:,:,:,Krhs), mask=tmask, clinfo=ctrcnm) 179 180 ENDIF 180 181 !
Note: See TracChangeset
for help on using the changeset viewer.