Changeset 10975 for NEMO/branches/2019/dev_r10721_KERNEL-02_Storkey_Coward_IMMERSE_first_steps/src/TOP/PISCES/P4Z/p4zmort.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/p4zmort.F90
r10227 r10975 36 36 CONTAINS 37 37 38 SUBROUTINE p4z_mort( kt )38 SUBROUTINE p4z_mort( kt, Kbb, Krhs ) 39 39 !!--------------------------------------------------------------------- 40 40 !! *** ROUTINE p4z_mort *** … … 46 46 !!--------------------------------------------------------------------- 47 47 INTEGER, INTENT(in) :: kt ! ocean time step 48 !!--------------------------------------------------------------------- 49 ! 50 CALL p4z_nano ! nanophytoplankton 51 ! 52 CALL p4z_diat ! diatoms 48 INTEGER, INTENT(in) :: Kbb, Krhs ! time level indices 49 !!--------------------------------------------------------------------- 50 ! 51 CALL p4z_nano( Kbb, Krhs ) ! nanophytoplankton 52 ! 53 CALL p4z_diat( Kbb, Krhs ) ! diatoms 53 54 ! 54 55 END SUBROUTINE p4z_mort 55 56 56 57 57 SUBROUTINE p4z_nano 58 SUBROUTINE p4z_nano( Kbb, Krhs ) 58 59 !!--------------------------------------------------------------------- 59 60 !! *** ROUTINE p4z_nano *** … … 63 64 !! ** Method : - ??? 64 65 !!--------------------------------------------------------------------- 66 INTEGER, INTENT(in) :: Kbb, Krhs ! time level indices 65 67 INTEGER :: ji, jj, jk 66 68 REAL(wp) :: zsizerat, zcompaph … … 76 78 DO jj = 1, jpj 77 79 DO ji = 1, jpi 78 zcompaph = MAX( ( tr b(ji,jj,jk,jpphy) - 1e-8 ), 0.e0 )80 zcompaph = MAX( ( tr(ji,jj,jk,jpphy,Kbb) - 1e-8 ), 0.e0 ) 79 81 ! When highly limited by macronutrients, very small cells 80 82 ! dominate the community. As a consequence, aggregation 81 83 ! due to turbulence is negligible. Mortality is also set 82 84 ! to 0 83 zsizerat = MIN(1., MAX( 0., (quotan(ji,jj,jk) - 0.2) / 0.3) ) * tr b(ji,jj,jk,jpphy)85 zsizerat = MIN(1., MAX( 0., (quotan(ji,jj,jk) - 0.2) / 0.3) ) * tr(ji,jj,jk,jpphy,Kbb) 84 86 ! Squared mortality of Phyto similar to a sedimentation term during 85 87 ! blooms (Doney et al. 1996) … … 89 91 ! increased when nutrients are limiting phytoplankton growth 90 92 ! as observed for instance in case of iron limitation. 91 ztortp = mprat * xstep * zcompaph / ( xkmort + tr b(ji,jj,jk,jpphy) ) * zsizerat93 ztortp = mprat * xstep * zcompaph / ( xkmort + tr(ji,jj,jk,jpphy,Kbb) ) * zsizerat 92 94 93 95 zmortp = zrespp + ztortp … … 95 97 ! Update the arrays TRA which contains the biological sources and sinks 96 98 97 zfactfe = tr b(ji,jj,jk,jpnfe)/(trb(ji,jj,jk,jpphy)+rtrn)98 zfactch = tr b(ji,jj,jk,jpnch)/(trb(ji,jj,jk,jpphy)+rtrn)99 tr a(ji,jj,jk,jpphy) = tra(ji,jj,jk,jpphy) - zmortp100 tr a(ji,jj,jk,jpnch) = tra(ji,jj,jk,jpnch) - zmortp * zfactch101 tr a(ji,jj,jk,jpnfe) = tra(ji,jj,jk,jpnfe) - zmortp * zfactfe99 zfactfe = tr(ji,jj,jk,jpnfe,Kbb)/(tr(ji,jj,jk,jpphy,Kbb)+rtrn) 100 zfactch = tr(ji,jj,jk,jpnch,Kbb)/(tr(ji,jj,jk,jpphy,Kbb)+rtrn) 101 tr(ji,jj,jk,jpphy,Krhs) = tr(ji,jj,jk,jpphy,Krhs) - zmortp 102 tr(ji,jj,jk,jpnch,Krhs) = tr(ji,jj,jk,jpnch,Krhs) - zmortp * zfactch 103 tr(ji,jj,jk,jpnfe,Krhs) = tr(ji,jj,jk,jpnfe,Krhs) - zmortp * zfactfe 102 104 zprcaca = xfracal(ji,jj,jk) * zmortp 103 105 ! … … 105 107 ! 106 108 zfracal = 0.5 * xfracal(ji,jj,jk) 107 tr a(ji,jj,jk,jpdic) = tra(ji,jj,jk,jpdic) - zprcaca108 tr a(ji,jj,jk,jptal) = tra(ji,jj,jk,jptal) - 2. * zprcaca109 tr a(ji,jj,jk,jpcal) = tra(ji,jj,jk,jpcal) + zprcaca110 tr a(ji,jj,jk,jpgoc) = tra(ji,jj,jk,jpgoc) + zfracal * zmortp111 tr a(ji,jj,jk,jppoc) = tra(ji,jj,jk,jppoc) + ( 1. - zfracal ) * zmortp109 tr(ji,jj,jk,jpdic,Krhs) = tr(ji,jj,jk,jpdic,Krhs) - zprcaca 110 tr(ji,jj,jk,jptal,Krhs) = tr(ji,jj,jk,jptal,Krhs) - 2. * zprcaca 111 tr(ji,jj,jk,jpcal,Krhs) = tr(ji,jj,jk,jpcal,Krhs) + zprcaca 112 tr(ji,jj,jk,jpgoc,Krhs) = tr(ji,jj,jk,jpgoc,Krhs) + zfracal * zmortp 113 tr(ji,jj,jk,jppoc,Krhs) = tr(ji,jj,jk,jppoc,Krhs) + ( 1. - zfracal ) * zmortp 112 114 prodpoc(ji,jj,jk) = prodpoc(ji,jj,jk) + ( 1. - zfracal ) * zmortp 113 115 prodgoc(ji,jj,jk) = prodgoc(ji,jj,jk) + zfracal * zmortp 114 tr a(ji,jj,jk,jpsfe) = tra(ji,jj,jk,jpsfe) + ( 1. - zfracal ) * zmortp * zfactfe115 tr a(ji,jj,jk,jpbfe) = tra(ji,jj,jk,jpbfe) + zfracal * zmortp * zfactfe116 tr(ji,jj,jk,jpsfe,Krhs) = tr(ji,jj,jk,jpsfe,Krhs) + ( 1. - zfracal ) * zmortp * zfactfe 117 tr(ji,jj,jk,jpbfe,Krhs) = tr(ji,jj,jk,jpbfe,Krhs) + zfracal * zmortp * zfactfe 116 118 END DO 117 119 END DO … … 121 123 WRITE(charout, FMT="('nano')") 122 124 CALL prt_ctl_trc_info(charout) 123 CALL prt_ctl_trc(tab4d=tr a, mask=tmask, clinfo=ctrcnm)125 CALL prt_ctl_trc(tab4d=tr(:,:,:,:,Krhs), mask=tmask, clinfo=ctrcnm) 124 126 ENDIF 125 127 ! … … 129 131 130 132 131 SUBROUTINE p4z_diat 133 SUBROUTINE p4z_diat( Kbb, Krhs ) 132 134 !!--------------------------------------------------------------------- 133 135 !! *** ROUTINE p4z_diat *** … … 137 139 !! ** Method : - ??? 138 140 !!--------------------------------------------------------------------- 141 INTEGER, INTENT(in) :: Kbb, Krhs ! time level indices 139 142 INTEGER :: ji, jj, jk 140 143 REAL(wp) :: zfactfe,zfactsi,zfactch, zcompadi … … 155 158 DO ji = 1, jpi 156 159 157 zcompadi = MAX( ( tr b(ji,jj,jk,jpdia) - 1e-9), 0. )160 zcompadi = MAX( ( tr(ji,jj,jk,jpdia,Kbb) - 1e-9), 0. ) 158 161 159 162 ! Aggregation term for diatoms is increased in case of nutrient … … 165 168 zlim2 = xlimdia(ji,jj,jk) * xlimdia(ji,jj,jk) 166 169 zlim1 = 0.25 * ( 1. - zlim2 ) / ( 0.25 + zlim2 ) 167 zrespp2 = 1.e6 * xstep * ( wchld + wchldm * zlim1 ) * xdiss(ji,jj,jk) * zcompadi * tr b(ji,jj,jk,jpdia)170 zrespp2 = 1.e6 * xstep * ( wchld + wchldm * zlim1 ) * xdiss(ji,jj,jk) * zcompadi * tr(ji,jj,jk,jpdia,Kbb) 168 171 169 172 ! Phytoplankton mortality. 170 173 ! ------------------------ 171 ztortp2 = mprat2 * xstep * tr b(ji,jj,jk,jpdia) / ( xkmort + trb(ji,jj,jk,jpdia) ) * zcompadi174 ztortp2 = mprat2 * xstep * tr(ji,jj,jk,jpdia,Kbb) / ( xkmort + tr(ji,jj,jk,jpdia,Kbb) ) * zcompadi 172 175 173 176 zmortp2 = zrespp2 + ztortp2 174 177 175 ! Update the arrays tr awhich contains the biological sources and sinks178 ! Update the arrays tr(:,:,:,:,Krhs) which contains the biological sources and sinks 176 179 ! --------------------------------------------------------------------- 177 zfactch = tr b(ji,jj,jk,jpdch) / ( trb(ji,jj,jk,jpdia) + rtrn )178 zfactfe = tr b(ji,jj,jk,jpdfe) / ( trb(ji,jj,jk,jpdia) + rtrn )179 zfactsi = tr b(ji,jj,jk,jpdsi) / ( trb(ji,jj,jk,jpdia) + rtrn )180 tr a(ji,jj,jk,jpdia) = tra(ji,jj,jk,jpdia) - zmortp2181 tr a(ji,jj,jk,jpdch) = tra(ji,jj,jk,jpdch) - zmortp2 * zfactch182 tr a(ji,jj,jk,jpdfe) = tra(ji,jj,jk,jpdfe) - zmortp2 * zfactfe183 tr a(ji,jj,jk,jpdsi) = tra(ji,jj,jk,jpdsi) - zmortp2 * zfactsi184 tr a(ji,jj,jk,jpgsi) = tra(ji,jj,jk,jpgsi) + zmortp2 * zfactsi185 tr a(ji,jj,jk,jpgoc) = tra(ji,jj,jk,jpgoc) + zrespp2 + 0.5 * ztortp2186 tr a(ji,jj,jk,jppoc) = tra(ji,jj,jk,jppoc) + 0.5 * ztortp2180 zfactch = tr(ji,jj,jk,jpdch,Kbb) / ( tr(ji,jj,jk,jpdia,Kbb) + rtrn ) 181 zfactfe = tr(ji,jj,jk,jpdfe,Kbb) / ( tr(ji,jj,jk,jpdia,Kbb) + rtrn ) 182 zfactsi = tr(ji,jj,jk,jpdsi,Kbb) / ( tr(ji,jj,jk,jpdia,Kbb) + rtrn ) 183 tr(ji,jj,jk,jpdia,Krhs) = tr(ji,jj,jk,jpdia,Krhs) - zmortp2 184 tr(ji,jj,jk,jpdch,Krhs) = tr(ji,jj,jk,jpdch,Krhs) - zmortp2 * zfactch 185 tr(ji,jj,jk,jpdfe,Krhs) = tr(ji,jj,jk,jpdfe,Krhs) - zmortp2 * zfactfe 186 tr(ji,jj,jk,jpdsi,Krhs) = tr(ji,jj,jk,jpdsi,Krhs) - zmortp2 * zfactsi 187 tr(ji,jj,jk,jpgsi,Krhs) = tr(ji,jj,jk,jpgsi,Krhs) + zmortp2 * zfactsi 188 tr(ji,jj,jk,jpgoc,Krhs) = tr(ji,jj,jk,jpgoc,Krhs) + zrespp2 + 0.5 * ztortp2 189 tr(ji,jj,jk,jppoc,Krhs) = tr(ji,jj,jk,jppoc,Krhs) + 0.5 * ztortp2 187 190 prodpoc(ji,jj,jk) = prodpoc(ji,jj,jk) + 0.5 * ztortp2 188 191 prodgoc(ji,jj,jk) = prodgoc(ji,jj,jk) + zrespp2 + 0.5 * ztortp2 189 tr a(ji,jj,jk,jpsfe) = tra(ji,jj,jk,jpsfe) + 0.5 * ztortp2 * zfactfe190 tr a(ji,jj,jk,jpbfe) = tra(ji,jj,jk,jpbfe) + ( zrespp2 + 0.5 * ztortp2 ) * zfactfe192 tr(ji,jj,jk,jpsfe,Krhs) = tr(ji,jj,jk,jpsfe,Krhs) + 0.5 * ztortp2 * zfactfe 193 tr(ji,jj,jk,jpbfe,Krhs) = tr(ji,jj,jk,jpbfe,Krhs) + ( zrespp2 + 0.5 * ztortp2 ) * zfactfe 191 194 END DO 192 195 END DO … … 196 199 WRITE(charout, FMT="('diat')") 197 200 CALL prt_ctl_trc_info(charout) 198 CALL prt_ctl_trc(tab4d=tr a, mask=tmask, clinfo=ctrcnm)201 CALL prt_ctl_trc(tab4d=tr(:,:,:,:,Krhs), mask=tmask, clinfo=ctrcnm) 199 202 ENDIF 200 203 !
Note: See TracChangeset
for help on using the changeset viewer.