- Timestamp:
- 2019-11-22T15:29:17+01:00 (4 years ago)
- Location:
- NEMO/branches/2019/dev_r11943_MERGE_2019/src
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
NEMO/branches/2019/dev_r11943_MERGE_2019/src
- Property svn:mergeinfo deleted
-
NEMO/branches/2019/dev_r11943_MERGE_2019/src/TOP/PISCES/P4Z/p4zmicro.F90
r11536 r11949 49 49 CONTAINS 50 50 51 SUBROUTINE p4z_micro( kt, knt )51 SUBROUTINE p4z_micro( kt, knt, Kbb, Krhs ) 52 52 !!--------------------------------------------------------------------- 53 53 !! *** ROUTINE p4z_micro *** … … 59 59 INTEGER, INTENT(in) :: kt ! ocean time step 60 60 INTEGER, INTENT(in) :: knt ! ??? 61 INTEGER, INTENT(in) :: Kbb, Krhs ! time level indices 61 62 ! 62 63 INTEGER :: ji, jj, jk … … 84 85 DO jj = 1, jpj 85 86 DO ji = 1, jpi 86 zcompaz = MAX( ( tr b(ji,jj,jk,jpzoo) - 1.e-9 ), 0.e0 )87 zcompaz = MAX( ( tr(ji,jj,jk,jpzoo,Kbb) - 1.e-9 ), 0.e0 ) 87 88 zfact = xstep * tgfunc2(ji,jj,jk) * zcompaz 88 89 89 90 ! Respiration rates of both zooplankton 90 91 ! ------------------------------------- 91 zrespz = resrat * zfact * tr b(ji,jj,jk,jpzoo) / ( xkmort + trb(ji,jj,jk,jpzoo) ) &92 zrespz = resrat * zfact * tr(ji,jj,jk,jpzoo,Kbb) / ( xkmort + tr(ji,jj,jk,jpzoo,Kbb) ) & 92 93 & + resrat * zfact * 3. * nitrfac(ji,jj,jk) 93 94 … … 95 96 ! no real reason except that it seems to be more stable and may mimic predation. 96 97 ! --------------------------------------------------------------- 97 ztortz = mzrat * 1.e6 * zfact * tr b(ji,jj,jk,jpzoo) * (1. - nitrfac(ji,jj,jk))98 99 zcompadi = MIN( MAX( ( tr b(ji,jj,jk,jpdia) - xthreshdia ), 0.e0 ), xsizedia )100 zcompaph = MAX( ( tr b(ji,jj,jk,jpphy) - xthreshphy ), 0.e0 )101 zcompapoc = MAX( ( tr b(ji,jj,jk,jppoc) - xthreshpoc ), 0.e0 )98 ztortz = mzrat * 1.e6 * zfact * tr(ji,jj,jk,jpzoo,Kbb) * (1. - nitrfac(ji,jj,jk)) 99 100 zcompadi = MIN( MAX( ( tr(ji,jj,jk,jpdia,Kbb) - xthreshdia ), 0.e0 ), xsizedia ) 101 zcompaph = MAX( ( tr(ji,jj,jk,jpphy,Kbb) - xthreshphy ), 0.e0 ) 102 zcompapoc = MAX( ( tr(ji,jj,jk,jppoc,Kbb) - xthreshpoc ), 0.e0 ) 102 103 103 104 ! Microzooplankton grazing … … 107 108 zdenom = zfoodlim / ( xkgraz + zfoodlim ) 108 109 zdenom2 = zdenom / ( zfood + rtrn ) 109 zgraze = grazrat * xstep * tgfunc2(ji,jj,jk) * tr b(ji,jj,jk,jpzoo) * (1. - nitrfac(ji,jj,jk))110 zgraze = grazrat * xstep * tgfunc2(ji,jj,jk) * tr(ji,jj,jk,jpzoo,Kbb) * (1. - nitrfac(ji,jj,jk)) 110 111 111 112 zgrazp = zgraze * xprefn * zcompaph * zdenom2 … … 113 114 zgrazsd = zgraze * xprefd * zcompadi * zdenom2 114 115 115 zgrazpf = zgrazp * tr b(ji,jj,jk,jpnfe) / (trb(ji,jj,jk,jpphy) + rtrn)116 zgrazmf = zgrazm * tr b(ji,jj,jk,jpsfe) / (trb(ji,jj,jk,jppoc) + rtrn)117 zgrazsf = zgrazsd * tr b(ji,jj,jk,jpdfe) / (trb(ji,jj,jk,jpdia) + rtrn)116 zgrazpf = zgrazp * tr(ji,jj,jk,jpnfe,Kbb) / (tr(ji,jj,jk,jpphy,Kbb) + rtrn) 117 zgrazmf = zgrazm * tr(ji,jj,jk,jpsfe,Kbb) / (tr(ji,jj,jk,jppoc,Kbb) + rtrn) 118 zgrazsf = zgrazsd * tr(ji,jj,jk,jpdfe,Kbb) / (tr(ji,jj,jk,jpdia,Kbb) + rtrn) 118 119 ! 119 120 zgraztotc = zgrazp + zgrazm + zgrazsd … … 140 141 ! ------------------------ 141 142 zgrarsig = zgrarem * sigma1 142 tr a(ji,jj,jk,jppo4) = tra(ji,jj,jk,jppo4) + zgrarsig143 tr a(ji,jj,jk,jpnh4) = tra(ji,jj,jk,jpnh4) + zgrarsig144 tr a(ji,jj,jk,jpdoc) = tra(ji,jj,jk,jpdoc) + zgrarem - zgrarsig143 tr(ji,jj,jk,jppo4,Krhs) = tr(ji,jj,jk,jppo4,Krhs) + zgrarsig 144 tr(ji,jj,jk,jpnh4,Krhs) = tr(ji,jj,jk,jpnh4,Krhs) + zgrarsig 145 tr(ji,jj,jk,jpdoc,Krhs) = tr(ji,jj,jk,jpdoc,Krhs) + zgrarem - zgrarsig 145 146 ! 146 147 IF( ln_ligand ) THEN 147 tr a(ji,jj,jk,jplgw) = tra(ji,jj,jk,jplgw) + (zgrarem - zgrarsig) * ldocz148 tr(ji,jj,jk,jplgw,Krhs) = tr(ji,jj,jk,jplgw,Krhs) + (zgrarem - zgrarsig) * ldocz 148 149 zzligprod(ji,jj,jk) = (zgrarem - zgrarsig) * ldocz 149 150 ENDIF 150 151 ! 151 tr a(ji,jj,jk,jpoxy) = tra(ji,jj,jk,jpoxy) - o2ut * zgrarsig152 tr a(ji,jj,jk,jpfer) = tra(ji,jj,jk,jpfer) + zgrafer152 tr(ji,jj,jk,jpoxy,Krhs) = tr(ji,jj,jk,jpoxy,Krhs) - o2ut * zgrarsig 153 tr(ji,jj,jk,jpfer,Krhs) = tr(ji,jj,jk,jpfer,Krhs) + zgrafer 153 154 zfezoo(ji,jj,jk) = zgrafer 154 tr a(ji,jj,jk,jppoc) = tra(ji,jj,jk,jppoc) + zgrapoc155 tr(ji,jj,jk,jppoc,Krhs) = tr(ji,jj,jk,jppoc,Krhs) + zgrapoc 155 156 prodpoc(ji,jj,jk) = prodpoc(ji,jj,jk) + zgrapoc 156 tr a(ji,jj,jk,jpsfe) = tra(ji,jj,jk,jpsfe) + zgraztotf * unass157 tr a(ji,jj,jk,jpdic) = tra(ji,jj,jk,jpdic) + zgrarsig158 tr a(ji,jj,jk,jptal) = tra(ji,jj,jk,jptal) + rno3 * zgrarsig157 tr(ji,jj,jk,jpsfe,Krhs) = tr(ji,jj,jk,jpsfe,Krhs) + zgraztotf * unass 158 tr(ji,jj,jk,jpdic,Krhs) = tr(ji,jj,jk,jpdic,Krhs) + zgrarsig 159 tr(ji,jj,jk,jptal,Krhs) = tr(ji,jj,jk,jptal,Krhs) + rno3 * zgrarsig 159 160 ! Update the arrays TRA which contain the biological sources and sinks 160 161 ! -------------------------------------------------------------------- 161 162 zmortz = ztortz + zrespz 162 tr a(ji,jj,jk,jpzoo) = tra(ji,jj,jk,jpzoo) - zmortz + zepsherv * zgraztotc163 tr a(ji,jj,jk,jpphy) = tra(ji,jj,jk,jpphy) - zgrazp164 tr a(ji,jj,jk,jpdia) = tra(ji,jj,jk,jpdia) - zgrazsd165 tr a(ji,jj,jk,jpnch) = tra(ji,jj,jk,jpnch) - zgrazp * trb(ji,jj,jk,jpnch)/(trb(ji,jj,jk,jpphy)+rtrn)166 tr a(ji,jj,jk,jpdch) = tra(ji,jj,jk,jpdch) - zgrazsd * trb(ji,jj,jk,jpdch)/(trb(ji,jj,jk,jpdia)+rtrn)167 tr a(ji,jj,jk,jpdsi) = tra(ji,jj,jk,jpdsi) - zgrazsd * trb(ji,jj,jk,jpdsi)/(trb(ji,jj,jk,jpdia)+rtrn)168 tr a(ji,jj,jk,jpgsi) = tra(ji,jj,jk,jpgsi) + zgrazsd * trb(ji,jj,jk,jpdsi)/(trb(ji,jj,jk,jpdia)+rtrn)169 tr a(ji,jj,jk,jpnfe) = tra(ji,jj,jk,jpnfe) - zgrazpf170 tr a(ji,jj,jk,jpdfe) = tra(ji,jj,jk,jpdfe) - zgrazsf171 tr a(ji,jj,jk,jppoc) = tra(ji,jj,jk,jppoc) + zmortz - zgrazm163 tr(ji,jj,jk,jpzoo,Krhs) = tr(ji,jj,jk,jpzoo,Krhs) - zmortz + zepsherv * zgraztotc 164 tr(ji,jj,jk,jpphy,Krhs) = tr(ji,jj,jk,jpphy,Krhs) - zgrazp 165 tr(ji,jj,jk,jpdia,Krhs) = tr(ji,jj,jk,jpdia,Krhs) - zgrazsd 166 tr(ji,jj,jk,jpnch,Krhs) = tr(ji,jj,jk,jpnch,Krhs) - zgrazp * tr(ji,jj,jk,jpnch,Kbb)/(tr(ji,jj,jk,jpphy,Kbb)+rtrn) 167 tr(ji,jj,jk,jpdch,Krhs) = tr(ji,jj,jk,jpdch,Krhs) - zgrazsd * tr(ji,jj,jk,jpdch,Kbb)/(tr(ji,jj,jk,jpdia,Kbb)+rtrn) 168 tr(ji,jj,jk,jpdsi,Krhs) = tr(ji,jj,jk,jpdsi,Krhs) - zgrazsd * tr(ji,jj,jk,jpdsi,Kbb)/(tr(ji,jj,jk,jpdia,Kbb)+rtrn) 169 tr(ji,jj,jk,jpgsi,Krhs) = tr(ji,jj,jk,jpgsi,Krhs) + zgrazsd * tr(ji,jj,jk,jpdsi,Kbb)/(tr(ji,jj,jk,jpdia,Kbb)+rtrn) 170 tr(ji,jj,jk,jpnfe,Krhs) = tr(ji,jj,jk,jpnfe,Krhs) - zgrazpf 171 tr(ji,jj,jk,jpdfe,Krhs) = tr(ji,jj,jk,jpdfe,Krhs) - zgrazsf 172 tr(ji,jj,jk,jppoc,Krhs) = tr(ji,jj,jk,jppoc,Krhs) + zmortz - zgrazm 172 173 prodpoc(ji,jj,jk) = prodpoc(ji,jj,jk) + zmortz 173 174 conspoc(ji,jj,jk) = conspoc(ji,jj,jk) - zgrazm 174 tr a(ji,jj,jk,jpsfe) = tra(ji,jj,jk,jpsfe) + ferat3 * zmortz - zgrazmf175 tr(ji,jj,jk,jpsfe,Krhs) = tr(ji,jj,jk,jpsfe,Krhs) + ferat3 * zmortz - zgrazmf 175 176 ! 176 177 ! calcite production … … 179 180 ! 180 181 zprcaca = part * zprcaca 181 tr a(ji,jj,jk,jpdic) = tra(ji,jj,jk,jpdic) - zprcaca182 tr a(ji,jj,jk,jptal) = tra(ji,jj,jk,jptal) - 2. * zprcaca183 tr a(ji,jj,jk,jpcal) = tra(ji,jj,jk,jpcal) + zprcaca182 tr(ji,jj,jk,jpdic,Krhs) = tr(ji,jj,jk,jpdic,Krhs) - zprcaca 183 tr(ji,jj,jk,jptal,Krhs) = tr(ji,jj,jk,jptal,Krhs) - 2. * zprcaca 184 tr(ji,jj,jk,jpcal,Krhs) = tr(ji,jj,jk,jpcal,Krhs) + zprcaca 184 185 END DO 185 186 END DO … … 210 211 WRITE(charout, FMT="('micro')") 211 212 CALL prt_ctl_trc_info(charout) 212 CALL prt_ctl_trc(tab4d=tr a, mask=tmask, clinfo=ctrcnm)213 CALL prt_ctl_trc(tab4d=tr(:,:,:,:,Krhs), mask=tmask, clinfo=ctrcnm) 213 214 ENDIF 214 215 !
Note: See TracChangeset
for help on using the changeset viewer.