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.
Changeset 7986 for branches/UKMO/dev_r5518_medusa_chg_trc_bio_medusa/NEMOGCM/NEMO/TOP_SRC/MEDUSA/trcbio_medusa.F90 – NEMO

Ignore:
Timestamp:
2017-04-28T17:21:58+02:00 (7 years ago)
Author:
marc
Message:

Pulled detritus processes out of trcbio_medusa.F90

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/UKMO/dev_r5518_medusa_chg_trc_bio_medusa/NEMOGCM/NEMO/TOP_SRC/MEDUSA/trcbio_medusa.F90

    r7978 r7986  
    102102      USE plankton_mod,               ONLY: plankton 
    103103      USE iron_chem_scav_mod,         ONLY: iron_chem_scav 
     104      USE detritus_mod,               ONLY: detritus 
    104105      USE bio_medusa_diag_slice_mod,  ONLY: bio_medusa_diag_slice 
    105106      USE bio_medusa_fin_mod,         ONLY: bio_medusa_fin 
     
    177178      !! 
    178179      !! integrated source and sink terms 
    179       REAL(wp) ::    b0 
     180!      REAL(wp) ::    b0 
    180181      !! AXY (23/08/13): changed from individual variables for each flux to 
    181182      !!                 an array that holds all fluxes 
     
    238239# endif 
    239240!      REAL(wp), DIMENSION(jpi,jpj) ::    fdpn2,fdpd2,fdpds2,fdzmi2,fdzme2 
    240       REAL(wp), DIMENSION(jpi,jpj) ::    fslown, fslowc 
     241!      REAL(wp), DIMENSION(jpi,jpj) ::    fslown, fslowc 
    241242!      REAL(wp), DIMENSION(jpi,jpj) ::    fslownflux, fslowcflux 
    242243      REAL(wp), DIMENSION(jpi,jpj) ::    fregen,fregensi 
     
    264265! I don't think ffast2slowfe is used - marc 10/4/17 
    265266!      REAL(wp), DIMENSION(jpi,jpj) ::    ffast2slown,ffast2slowfe,ffast2slowc 
    266       REAL(wp), DIMENSION(jpi,jpj) ::    ffast2slown,ffast2slowc 
     267!      REAL(wp), DIMENSION(jpi,jpj) ::    ffast2slown,ffast2slowc 
    267268      !! 
    268269      !! conservation law 
     
    852853         CALL plankton( jk ) 
    853854 
    854 ! Detritus process - marc 
    855  
    856          DO jj = 2,jpjm1 
    857          DO ji = 2,jpim1 
    858             !! OPEN wet point IF..THEN loop 
    859             if (tmask(ji,jj,jk) == 1) then 
    860  
    861                !!---------------------------------------------------------------------- 
    862                !! Detritus remineralisation 
    863                !! Constant or temperature-dependent 
    864                !!---------------------------------------------------------------------- 
    865                !! 
    866                if (jmd.eq.1) then 
    867                   !! temperature-dependent 
    868                   fdd(ji,jj)  = xmd  * fun_T(ji,jj) * zdet(ji,jj) 
    869 # if defined key_roam 
    870                   fddc(ji,jj) = xmdc * fun_T(ji,jj) * zdtc(ji,jj) 
    871 # endif 
    872                elseif (jmd.eq.2) then 
    873                   !! AXY (16/05/13): add in Q10-based parameterisation (def in nmlst) 
    874                   !! temperature-dependent 
    875                   fdd(ji,jj)  = xmd  * fun_Q10(ji,jj) * zdet(ji,jj) 
    876 #if defined key_roam 
    877                   fddc(ji,jj) = xmdc * fun_Q10(ji,jj) * zdtc(ji,jj) 
    878 #endif 
    879                else 
    880                   !! temperature-independent 
    881                   fdd(ji,jj)  = xmd  * zdet(ji,jj) 
    882 # if defined key_roam 
    883                   fddc(ji,jj) = xmdc * zdtc(ji,jj) 
    884 # endif 
    885                endif 
    886                !! 
    887                !! AXY (22/07/09): accelerate detrital remineralisation in the bottom box 
    888                if ((jk.eq.mbathy(ji,jj)) .and. jsfd.eq.1) then 
    889                   fdd(ji,jj)  = 1.0  * zdet(ji,jj) 
    890 # if defined key_roam 
    891                   fddc(ji,jj) = 1.0  * zdtc(ji,jj) 
    892 # endif 
    893                endif 
    894                 
    895 # if defined key_debug_medusa 
    896                !! report plankton mortality and remineralisation 
    897                if (idf.eq.1.AND.idfval.eq.1) then 
    898                   IF (lwp) write (numout,*) '------------------------------' 
    899                   IF (lwp) write (numout,*) 'fdpn2(',jk,') = ', fdpn2(ji,jj) 
    900                   IF (lwp) write (numout,*) 'fdpd2(',jk,') = ', fdpd2(ji,jj) 
    901                   IF (lwp) write (numout,*) 'fdpds2(',jk,')= ', fdpds2(ji,jj) 
    902                   IF (lwp) write (numout,*) 'fdzmi2(',jk,')= ', fdzmi2(ji,jj) 
    903                   IF (lwp) write (numout,*) 'fdzme2(',jk,')= ', fdzme2(ji,jj) 
    904                   IF (lwp) write (numout,*) 'fdpn(',jk,')  = ', fdpn(ji,jj) 
    905                   IF (lwp) write (numout,*) 'fdpd(',jk,')  = ', fdpd(ji,jj) 
    906                   IF (lwp) write (numout,*) 'fdpds(',jk,') = ', fdpds(ji,jj) 
    907                   IF (lwp) write (numout,*) 'fdzmi(',jk,') = ', fdzmi(ji,jj) 
    908                   IF (lwp) write (numout,*) 'fdzme(',jk,') = ', fdzme(ji,jj) 
    909                   IF (lwp) write (numout,*) 'fdd(',jk,')   = ', fdd(ji,jj) 
    910 #  if defined key_roam 
    911                   IF (lwp) write (numout,*) 'fddc(',jk,')  = ', fddc(ji,jj) 
    912 #  endif 
    913                endif 
    914 # endif 
    915  
    916                !!---------------------------------------------------------------------- 
    917                !! Detritus addition to benthos 
    918                !! If activated, slow detritus in the bottom box will enter the 
    919                !! benthic pool 
    920                !!---------------------------------------------------------------------- 
    921                !! 
    922                if ((jk.eq.mbathy(ji,jj)) .and. jorgben.eq.1) then 
    923                   !! this is the BOTTOM OCEAN BOX -> into the benthic pool! 
    924                   !! 
    925                   f_sbenin_n(ji,jj)  = (zdet(ji,jj) * vsed * 86400.) 
    926                   f_sbenin_fe(ji,jj) = (zdet(ji,jj) * vsed * 86400. * xrfn) 
    927 # if defined key_roam 
    928                   f_sbenin_c(ji,jj)  = (zdtc(ji,jj) * vsed * 86400.) 
    929 # else 
    930                   f_sbenin_c(ji,jj)  = (zdet(ji,jj) * vsed * 86400. * xthetad) 
    931 # endif 
    932                endif 
    933  
    934 ! MAYBE BUT A BREAK IN HERE, IRON CHEMISTRY AND SCAVENGING - marc 20/4/17  
    935 ! (detritus processes is 74 lines) 
    936             ENDIF 
    937          ENDDO 
    938          ENDDO 
    939  
    940855         !!---------------------------------------------------------------- 
    941856         !! Iron chemistry and scavenging 
     
    1032947         ENDDO 
    1033948 
    1034          DO jj = 2,jpjm1 
    1035          DO ji = 2,jpim1 
    1036             !! OPEN wet point IF..THEN loop 
    1037             if (tmask(ji,jj,jk) == 1) then 
    1038  
    1039                !!---------------------------------------------------------------------- 
    1040                !! Fast-sinking detritus terms 
    1041                !! "local" variables declared so that conservation can be checked; 
    1042                !! the calculated terms are added to the fast-sinking flux later on 
    1043                !! only after the flux entering this level has experienced some 
    1044                !! remineralisation 
    1045                !! note: these fluxes need to be scaled by the level thickness 
    1046                !!---------------------------------------------------------------------- 
    1047                !! 
    1048                !! nitrogen:   diatom and mesozooplankton mortality 
    1049                ftempn(ji,jj)         = b0 * ((xfdfrac1 * fdpd(ji,jj))  + (xfdfrac2 * fdzme(ji,jj))) 
    1050                !! 
    1051                !! silicon:    diatom mortality and grazed diatoms 
    1052                ftempsi(ji,jj)        = b0 * ((xfdfrac1 * fdpds(ji,jj)) + (xfdfrac3 * fgmepds(ji,jj))) 
    1053                !! 
    1054                !! iron:       diatom and mesozooplankton mortality 
    1055                ftempfe(ji,jj)        = b0 * (((xfdfrac1 * fdpd(ji,jj)) + (xfdfrac2 * fdzme(ji,jj))) * xrfn) 
    1056                !! 
    1057                !! carbon:     diatom and mesozooplankton mortality 
    1058                ftempc(ji,jj)         = b0 * ((xfdfrac1 * xthetapd * fdpd(ji,jj)) + &  
    1059                                 (xfdfrac2 * xthetazme * fdzme(ji,jj))) 
    1060                !! 
    1061 # if defined key_roam 
    1062                if (jrratio.eq.0) then 
    1063                   !! CaCO3:      latitudinally-based fraction of total primary production 
    1064                   !!               0.10 at equator; 0.02 at pole 
    1065                   fcaco3(ji,jj)         = xcaco3a + ((xcaco3b - xcaco3a) * ((90.0 - abs(gphit(ji,jj))) / 90.0)) 
    1066                elseif (jrratio.eq.1) then 
    1067                   !! CaCO3:      Ridgwell et al. (2007) submodel, version 1 
    1068                   !!             this uses SURFACE omega calcite to regulate rain ratio 
    1069                   if (f_omcal(ji,jj).ge.1.0) then 
    1070                      fq1 = (f_omcal(ji,jj) - 1.0)**0.81 
    1071                   else 
    1072                      fq1 = 0. 
    1073                   endif 
    1074                   fcaco3(ji,jj) = xridg_r0 * fq1 
    1075                elseif (jrratio.eq.2) then 
    1076                   !! CaCO3:      Ridgwell et al. (2007) submodel, version 2 
    1077                   !!             this uses FULL 3D omega calcite to regulate rain ratio 
    1078                   if (f3_omcal(ji,jj,jk).ge.1.0) then 
    1079                      fq1 = (f3_omcal(ji,jj,jk) - 1.0)**0.81 
    1080                   else 
    1081                      fq1 = 0. 
    1082                   endif 
    1083                   fcaco3(ji,jj) = xridg_r0 * fq1 
    1084                endif 
    1085 # else 
    1086                !! CaCO3:      latitudinally-based fraction of total primary production 
    1087                !!               0.10 at equator; 0.02 at pole 
    1088                fcaco3(ji,jj)         = xcaco3a + ((xcaco3b - xcaco3a) * ((90.0 - abs(gphit(ji,jj))) / 90.0)) 
    1089 # endif 
    1090                !! AXY (09/03/09): convert CaCO3 production from function of  
    1091                !! primary production into a function of fast-sinking material;  
    1092                !! technically, this is what Dunne et al. (2007) do anyway; they  
    1093                !! convert total primary production estimated from surface  
    1094                !! chlorophyll to an export flux for which they apply conversion  
    1095                !! factors to estimate the various elemental fractions (Si, Ca) 
    1096                ftempca(ji,jj)        = ftempc(ji,jj) * fcaco3(ji,jj) 
    1097  
    1098 # if defined key_debug_medusa 
    1099                !! integrate total fast detritus production 
    1100                if (idf.eq.1) then 
    1101                   fifd_n(ji,jj)  = fifd_n(ji,jj)  + (ftempn(ji,jj)  * fse3t(ji,jj,jk)) 
    1102                   fifd_si(ji,jj) = fifd_si(ji,jj) + (ftempsi(ji,jj) * fse3t(ji,jj,jk)) 
    1103                   fifd_fe(ji,jj) = fifd_fe(ji,jj) + (ftempfe(ji,jj) * fse3t(ji,jj,jk)) 
    1104 #  if defined key_roam 
    1105                   fifd_c(ji,jj)  = fifd_c(ji,jj)  + (ftempc(ji,jj)  * fse3t(ji,jj,jk)) 
    1106 #  endif 
    1107                endif 
    1108  
    1109                !! report quantities of fast-sinking detritus for each component 
    1110                if (idf.eq.1.AND.idfval.eq.1) then 
    1111                   IF (lwp) write (numout,*) '------------------------------' 
    1112                   IF (lwp) write (numout,*) 'fdpd(',jk,')    = ', fdpd(ji,jj) 
    1113                   IF (lwp) write (numout,*) 'fdzme(',jk,')   = ', fdzme(ji,jj) 
    1114                   IF (lwp) write (numout,*) 'ftempn(',jk,')  = ', ftempn(ji,jj) 
    1115                   IF (lwp) write (numout,*) 'ftempsi(',jk,') = ', ftempsi(ji,jj) 
    1116                   IF (lwp) write (numout,*) 'ftempfe(',jk,') = ', ftempfe(ji,jj) 
    1117                   IF (lwp) write (numout,*) 'ftempc(',jk,')  = ', ftempc(ji,jj) 
    1118                   IF (lwp) write (numout,*) 'ftempca(',jk,') = ', ftempca(ji,jj) 
    1119                   IF (lwp) write (numout,*) 'flat(',jk,')    = ', abs(gphit(ji,jj)) 
    1120                   IF (lwp) write (numout,*) 'fcaco3(',jk,')  = ', fcaco3(ji,jj) 
    1121                endif 
    1122 # endif 
    1123  
    1124                !!---------------------------------------------------------------------- 
    1125                !! This version of MEDUSA offers a choice of three methods for 
    1126                !! handling the remineralisation of fast detritus.  All three 
    1127                !! do so in broadly the same way: 
    1128                !! 
    1129                !!   1.  Fast detritus is stored as a 2D array                   [ ffastX  ] 
    1130                !!   2.  Fast detritus is added level-by-level                   [ ftempX  ] 
    1131                !!   3.  Fast detritus is not remineralised in the top box       [ freminX ] 
    1132                !!   4.  Remaining fast detritus is remineralised in the bottom  [ fsedX   ] 
    1133                !!       box 
    1134                !! 
    1135                !! The three remineralisation methods are: 
    1136                !!    
    1137                !!   1.  Ballast model (i.e. that published in Yool et al., 2011) 
    1138                !!  (1b. Ballast-sans-ballast model) 
    1139                !!   2.  Martin et al. (1987) 
    1140                !!   3.  Henson et al. (2011) 
    1141                !!  
    1142                !! The first of these couples C, N and Fe remineralisation to 
    1143                !! the remineralisation of particulate Si and CaCO3, but the  
    1144                !! latter two treat remineralisation of C, N, Fe, Si and CaCO3 
    1145                !! completely separately.  At present a switch within the code 
    1146                !! regulates which submodel is used, but this should be moved 
    1147                !! to the namelist file. 
    1148                !!  
    1149                !! The ballast-sans-ballast submodel is an original development 
    1150                !! feature of MEDUSA in which the ballast submodel's general 
    1151                !! framework and parameterisation is used, but in which there 
    1152                !! is no protection of organic material afforded by ballasting 
    1153                !! minerals.  While similar, it is not the same as the Martin  
    1154                !! et al. (1987) submodel. 
    1155                !! 
    1156                !! Since the three submodels behave the same in terms of 
    1157                !! accumulating sinking material and remineralising it all at 
    1158                !! the seafloor, these portions of the code below are common to 
    1159                !! all three. 
    1160                !!---------------------------------------------------------------------- 
    1161  
    1162                if (jexport.eq.1) then 
    1163                   !!====================================================================== 
    1164                   !! BALLAST SUBMODEL 
    1165                   !!====================================================================== 
    1166                   !!  
    1167                   !!---------------------------------------------------------------------- 
    1168                   !! Fast-sinking detritus fluxes, pt. 1: REMINERALISATION 
    1169                   !! aside from explicitly modelled, slow-sinking detritus, the 
    1170                   !! model includes an implicit representation of detrital 
    1171                   !! particles that sink too quickly to be modelled with 
    1172                   !! explicit state variables; this sinking flux is instead 
    1173                   !! instantaneously remineralised down the water column using 
    1174                   !! the version of Armstrong et al. (2002)'s ballast model 
    1175                   !! used by Dunne et al. (2007); the version of this model 
    1176                   !! here considers silicon and calcium carbonate ballast 
    1177                   !! minerals; this section of the code redistributes the fast 
    1178                   !! sinking material generated locally down the water column; 
    1179                   !! this differs from Dunne et al. (2007) in that fast sinking 
    1180                   !! material is distributed at *every* level below that it is 
    1181                   !! generated, rather than at every level below some fixed 
    1182                   !! depth; this scheme is also different in that sinking material  
    1183                   !! generated in one level is aggregated with that generated by 
    1184                   !! shallower levels; this should make the ballast model more 
    1185                   !! self-consistent (famous last words) 
    1186                   !!---------------------------------------------------------------------- 
    1187                   !! 
    1188                   if (jk.eq.1) then 
    1189                      !! this is the SURFACE OCEAN BOX (no remineralisation) 
    1190                      !! 
    1191                      freminc(ji,jj)  = 0.0 
    1192                      freminn(ji,jj)  = 0.0 
    1193                      freminfe(ji,jj) = 0.0 
    1194                      freminsi(ji,jj) = 0.0 
    1195                      freminca(ji,jj) = 0.0 
    1196                   elseif (jk.le.mbathy(ji,jj)) then 
    1197                      !! this is an OCEAN BOX (remineralise some material) 
    1198                      !! 
    1199                      !! set up CCD depth to be used depending on user choice 
    1200                      if (jocalccd.eq.0) then 
    1201                         !! use default CCD field 
    1202                         fccd_dep(ji,jj) = ocal_ccd(ji,jj) 
    1203                      elseif (jocalccd.eq.1) then 
    1204                         !! use calculated CCD field 
    1205                         fccd_dep(ji,jj) = f2_ccd_cal(ji,jj) 
    1206                      endif 
    1207                      !! 
    1208                      !! === organic carbon === 
    1209                      fq0      = ffastc(ji,jj)                        !! how much organic C enters this box        (mol) 
    1210                      if (iball.eq.1) then 
    1211                         fq1      = (fq0 * xmassc)                    !! how much it weighs                        (mass) 
    1212                         fq2      = (ffastca(ji,jj) * xmassca)        !! how much CaCO3 enters this box            (mass) 
    1213                         fq3      = (ffastsi(ji,jj) * xmasssi)        !! how much  opal enters this box            (mass) 
    1214                         fq4      = (fq2 * xprotca) + (fq3 * xprotsi) !! total protected organic C                 (mass) 
    1215                         !! this next term is calculated for C but used for N and Fe as well 
    1216                         !! it needs to be protected in case ALL C is protected 
    1217                         if (fq4.lt.fq1) then 
    1218                            fprotf(ji,jj)   = (fq4 / (fq1 + tiny(fq1)))      !! protected fraction of total organic C     (non-dim) 
    1219                         else 
    1220                            fprotf(ji,jj)   = 1.0                            !! all organic C is protected                (non-dim) 
    1221                         endif 
    1222                         fq5      = (1.0 - fprotf(ji,jj))                    !! unprotected fraction of total organic C   (non-dim) 
    1223                         fq6      = (fq0 * fq5)                       !! how much organic C is unprotected         (mol) 
    1224                         fq7      = (fq6 * exp(-(fse3t(ji,jj,jk) / xfastc)))     !! how much unprotected C leaves this box    (mol) 
    1225                         fq8      = (fq7 + (fq0 * fprotf(ji,jj)))            !! how much total C leaves this box          (mol) 
    1226                         freminc(ji,jj)  = (fq0 - fq8) / fse3t(ji,jj,jk)                !! C remineralisation in this box            (mol) 
    1227                         ffastc(ji,jj) = fq8                           
    1228 # if defined key_debug_medusa 
    1229                         !! report in/out/remin fluxes of carbon for this level 
    1230                            if (idf.eq.1.AND.idfval.eq.1) then 
    1231                               IF (lwp) write (numout,*) '------------------------------' 
    1232                               IF (lwp) write (numout,*) 'totalC(',jk,')  = ', fq1 
    1233                               IF (lwp) write (numout,*) 'prtctC(',jk,')  = ', fq4 
    1234                               IF (lwp) write (numout,*) 'fprotf(',jk,')  = ', fprotf(ji,jj) 
    1235                               IF (lwp) write (numout,*) '------------------------------' 
    1236                               IF (lwp) write (numout,*) 'IN   C(',jk,')  = ', fq0 
    1237                               IF (lwp) write (numout,*) 'LOST C(',jk,')  = ', freminc(ji,jj) * fse3t(ji,jj,jk) 
    1238                               IF (lwp) write (numout,*) 'OUT  C(',jk,')  = ', fq8 
    1239                               IF (lwp) write (numout,*) 'NEW  C(',jk,')  = ', ftempc(ji,jj) * fse3t(ji,jj,jk) 
    1240                            endif 
    1241 # endif 
    1242                         else 
    1243                         fq1      = fq0 * exp(-(fse3t(ji,jj,jk) / xfastc))       !! how much organic C leaves this box        (mol) 
    1244                         freminc(ji,jj)  = (fq0 - fq1) / fse3t(ji,jj,jk)                !! C remineralisation in this box            (mol) 
    1245                         ffastc(ji,jj)  = fq1 
    1246                      endif 
    1247                      !! 
    1248                      !! === organic nitrogen === 
    1249                      fq0      = ffastn(ji,jj)                        !! how much organic N enters this box        (mol) 
    1250                      if (iball.eq.1) then 
    1251                         fq5      = (1.0 - fprotf(ji,jj))                    !! unprotected fraction of total organic N   (non-dim) 
    1252                         fq6      = (fq0 * fq5)                       !! how much organic N is unprotected         (mol) 
    1253                         fq7      = (fq6 * exp(-(fse3t(ji,jj,jk) / xfastc)))     !! how much unprotected N leaves this box    (mol) 
    1254                         fq8      = (fq7 + (fq0 * fprotf(ji,jj)))            !! how much total N leaves this box          (mol) 
    1255                         freminn(ji,jj)  = (fq0 - fq8) / fse3t(ji,jj,jk)                !! N remineralisation in this box            (mol) 
    1256                         ffastn(ji,jj)  = fq8 
    1257 # if defined key_debug_medusa 
    1258                         !! report in/out/remin fluxes of carbon for this level 
    1259                         if (idf.eq.1.AND.idfval.eq.1) then 
    1260                            IF (lwp) write (numout,*) '------------------------------' 
    1261                            IF (lwp) write (numout,*) 'totalN(',jk,')  = ', fq1 
    1262                            IF (lwp) write (numout,*) 'prtctN(',jk,')  = ', fq4 
    1263                            IF (lwp) write (numout,*) 'fprotf(',jk,')  = ', fprotf(ji,jj) 
    1264                            IF (lwp) write (numout,*) '------------------------------' 
    1265                            if (freminn(ji,jj) < 0.0) then 
    1266                               IF (lwp) write (numout,*) '** FREMIN ERROR **' 
    1267                            endif 
    1268                            IF (lwp) write (numout,*) 'IN   N(',jk,')  = ', fq0 
    1269                            IF (lwp) write (numout,*) 'LOST N(',jk,')  = ', freminn(ji,jj) * fse3t(ji,jj,jk) 
    1270                            IF (lwp) write (numout,*) 'OUT  N(',jk,')  = ', fq8 
    1271                            IF (lwp) write (numout,*) 'NEW  N(',jk,')  = ', ftempn(ji,jj) * fse3t(ji,jj,jk) 
    1272                         endif 
    1273 # endif 
    1274                      else 
    1275                         fq1      = fq0 * exp(-(fse3t(ji,jj,jk) / xfastc))       !! how much organic N leaves this box        (mol) 
    1276                         freminn(ji,jj)  = (fq0 - fq1) / fse3t(ji,jj,jk)                !! N remineralisation in this box            (mol) 
    1277                         ffastn(ji,jj)  = fq1 
    1278                      endif 
    1279                      !! 
    1280                      !! === organic iron === 
    1281                      fq0      = ffastfe(ji,jj)                       !! how much organic Fe enters this box       (mol) 
    1282                      if (iball.eq.1) then 
    1283                         fq5      = (1.0 - fprotf(ji,jj))                    !! unprotected fraction of total organic Fe  (non-dim) 
    1284                         fq6      = (fq0 * fq5)                       !! how much organic Fe is unprotected        (mol) 
    1285                         fq7      = (fq6 * exp(-(fse3t(ji,jj,jk) / xfastc)))     !! how much unprotected Fe leaves this box   (mol) 
    1286                         fq8      = (fq7 + (fq0 * fprotf(ji,jj)))            !! how much total Fe leaves this box         (mol)             
    1287                         freminfe(ji,jj) = (fq0 - fq8) / fse3t(ji,jj,jk)                !! Fe remineralisation in this box           (mol) 
    1288                         ffastfe(ji,jj) = fq8 
    1289                      else 
    1290                         fq1      = fq0 * exp(-(fse3t(ji,jj,jk) / xfastc))       !! how much total Fe leaves this box         (mol)       
    1291                         freminfe(ji,jj) = (fq0 - fq1) / fse3t(ji,jj,jk)                !! Fe remineralisation in this box           (mol) 
    1292                         ffastfe(ji,jj) = fq1 
    1293                      endif 
    1294                      !! 
    1295                      !! === biogenic silicon === 
    1296                      fq0      = ffastsi(ji,jj)                       !! how much  opal centers this box           (mol)  
    1297                      fq1      = fq0 * exp(-(fse3t(ji,jj,jk) / xfastsi))         !! how much  opal leaves this box            (mol) 
    1298                      freminsi(ji,jj) = (fq0 - fq1) / fse3t(ji,jj,jk)                   !! Si remineralisation in this box           (mol) 
    1299                      ffastsi(ji,jj) = fq1 
    1300                      !! 
    1301                      !! === biogenic calcium carbonate === 
    1302                      fq0      = ffastca(ji,jj)                       !! how much CaCO3 enters this box            (mol) 
    1303                      if (fsdepw(ji,jj,jk).le.fccd_dep(ji,jj)) then 
    1304                         !! whole grid cell above CCD 
    1305                         fq1      = fq0                               !! above lysocline, no Ca dissolves          (mol) 
    1306                         freminca(ji,jj) = 0.0                               !! above lysocline, no Ca dissolves          (mol) 
    1307                         fccd(ji,jj) = real(jk)                       !! which is the last level above the CCD?    (#) 
    1308                      elseif (fsdepw(ji,jj,jk).ge.fccd_dep(ji,jj)) then 
    1309                         !! whole grid cell below CCD 
    1310                         fq1      = fq0 * exp(-(fse3t(ji,jj,jk) / xfastca))      !! how much CaCO3 leaves this box            (mol) 
    1311                         freminca(ji,jj) = (fq0 - fq1) / fse3t(ji,jj,jk)                !! Ca remineralisation in this box           (mol) 
    1312                      else 
    1313                         !! partial grid cell below CCD 
    1314                         fq2      = fdep1(ji,jj) - fccd_dep(ji,jj)                  !! amount of grid cell below CCD             (m) 
    1315                         fq1      = fq0 * exp(-(fq2 / xfastca))       !! how much CaCO3 leaves this box            (mol) 
    1316                         freminca(ji,jj) = (fq0 - fq1) / fse3t(ji,jj,jk)                !! Ca remineralisation in this box           (mol) 
    1317                      endif 
    1318                      ffastca(ji,jj) = fq1  
    1319                   else 
    1320                      !! this is BELOW THE LAST OCEAN BOX (do nothing) 
    1321                      freminc(ji,jj)  = 0.0 
    1322                      freminn(ji,jj)  = 0.0 
    1323                      freminfe(ji,jj) = 0.0 
    1324                      freminsi(ji,jj) = 0.0 
    1325                      freminca(ji,jj) = 0.0               
    1326                   endif 
    1327  
    1328                elseif (jexport.eq.2.or.jexport.eq.3) then 
    1329                   if (jexport.eq.2) then 
    1330                      !!====================================================================== 
    1331                      !! MARTIN ET AL. (1987) SUBMODEL 
    1332                      !!====================================================================== 
    1333                      !!  
    1334                      !!---------------------------------------------------------------------- 
    1335                      !! This submodel uses the classic Martin et al. (1987) curve 
    1336                      !! to determine the attenuation of fast-sinking detritus down 
    1337                      !! the water column.  All three organic elements, C, N and Fe, 
    1338                      !! are handled identically, and their quantities in sinking 
    1339                      !! particles attenuate according to a power relationship 
    1340                      !! governed by parameter "b".  This is assigned a canonical  
    1341                      !! value of -0.858.  Biogenic opal and calcium carbonate are 
    1342                      !! attentuated using the same function as in the ballast 
    1343                      !! submodel 
    1344                      !!---------------------------------------------------------------------- 
    1345                      !! 
    1346                      fb_val = -0.858 
    1347                   elseif (jexport.eq.3) then 
    1348                      !!====================================================================== 
    1349                      !! HENSON ET AL. (2011) SUBMODEL 
    1350                      !!====================================================================== 
    1351                      !! 
    1352                      !!---------------------------------------------------------------------- 
    1353                      !! This submodel reconfigures the Martin et al. (1987) curve by 
    1354                      !! allowing the "b" value to vary geographically.  Its value is 
    1355                      !! set, following Henson et al. (2011), as a function of local 
    1356                      !! sea surface temperature: 
    1357                      !!   b = -1.06 + (0.024 * SST) 
    1358                      !! This means that remineralisation length scales are longer in 
    1359                      !! warm, tropical areas and shorter in cold, polar areas.  This 
    1360                      !! does seem back-to-front (i.e. one would expect GREATER 
    1361                      !! remineralisation in warmer waters), but is an outcome of  
    1362                      !! analysis of sediment trap data, and it may reflect details 
    1363                      !! of ecosystem structure that pertain to particle production 
    1364                      !! rather than simply Q10. 
    1365                      !!---------------------------------------------------------------------- 
    1366                      !! 
    1367                      fl_sst = tsn(ji,jj,1,jp_tem) 
    1368                      fb_val = -1.06 + (0.024 * fl_sst) 
    1369                   endif 
    1370                   !!    
    1371                   if (jk.eq.1) then 
    1372                      !! this is the SURFACE OCEAN BOX (no remineralisation) 
    1373                      !! 
    1374                      freminc(ji,jj)  = 0.0 
    1375                      freminn(ji,jj)  = 0.0 
    1376                      freminfe(ji,jj) = 0.0 
    1377                      freminsi(ji,jj) = 0.0 
    1378                      freminca(ji,jj) = 0.0 
    1379                   elseif (jk.le.mbathy(ji,jj)) then 
    1380                      !! this is an OCEAN BOX (remineralise some material) 
    1381                      !! 
    1382                      !! === organic carbon === 
    1383                      fq0      = ffastc(ji,jj)                        !! how much organic C enters this box        (mol) 
    1384                      fq1      = fq0 * ((fdep1(ji,jj)/fsdepw(ji,jj,jk))**fb_val)         !! how much organic C leaves this box        (mol) 
    1385                      freminc(ji,jj)  = (fq0 - fq1) / fse3t(ji,jj,jk)                   !! C remineralisation in this box            (mol) 
    1386                      ffastc(ji,jj)  = fq1 
    1387                      !! 
    1388                      !! === organic nitrogen === 
    1389                      fq0      = ffastn(ji,jj)                        !! how much organic N enters this box        (mol) 
    1390                      fq1      = fq0 * ((fdep1(ji,jj)/fsdepw(ji,jj,jk))**fb_val)         !! how much organic N leaves this box        (mol) 
    1391                      freminn(ji,jj)  = (fq0 - fq1) / fse3t(ji,jj,jk)                   !! N remineralisation in this box            (mol) 
    1392                      ffastn(ji,jj)  = fq1 
    1393                      !! 
    1394                      !! === organic iron === 
    1395                      fq0      = ffastfe(ji,jj)                       !! how much organic Fe enters this box       (mol) 
    1396                      fq1      = fq0 * ((fdep1(ji,jj)/fsdepw(ji,jj,jk))**fb_val)         !! how much organic Fe leaves this box       (mol) 
    1397                      freminfe(ji,jj) = (fq0 - fq1) / fse3t(ji,jj,jk)                   !! Fe remineralisation in this box           (mol) 
    1398                      ffastfe(ji,jj) = fq1 
    1399                      !! 
    1400                      !! === biogenic silicon === 
    1401                      fq0      = ffastsi(ji,jj)                       !! how much  opal centers this box           (mol)  
    1402                      fq1      = fq0 * exp(-(fse3t(ji,jj,jk) / xfastsi))         !! how much  opal leaves this box            (mol) 
    1403                      freminsi(ji,jj) = (fq0 - fq1) / fse3t(ji,jj,jk)                   !! Si remineralisation in this box           (mol) 
    1404                      ffastsi(ji,jj) = fq1 
    1405                      !! 
    1406                      !! === biogenic calcium carbonate === 
    1407                      fq0      = ffastca(ji,jj)                       !! how much CaCO3 enters this box            (mol) 
    1408                      if (fsdepw(ji,jj,jk).le.ocal_ccd(ji,jj)) then 
    1409                         !! whole grid cell above CCD 
    1410                         fq1      = fq0                               !! above lysocline, no Ca dissolves          (mol) 
    1411                         freminca(ji,jj) = 0.0                               !! above lysocline, no Ca dissolves          (mol) 
    1412                         fccd(ji,jj) = real(jk)                       !! which is the last level above the CCD?    (#) 
    1413                      elseif (fsdepw(ji,jj,jk).ge.ocal_ccd(ji,jj)) then 
    1414                         !! whole grid cell below CCD 
    1415                         fq1      = fq0 * exp(-(fse3t(ji,jj,jk) / xfastca))      !! how much CaCO3 leaves this box            (mol) 
    1416                         freminca(ji,jj) = (fq0 - fq1) / fse3t(ji,jj,jk)                !! Ca remineralisation in this box           (mol) 
    1417                      else 
    1418                         !! partial grid cell below CCD 
    1419                         fq2      = fdep1(ji,jj) - ocal_ccd(ji,jj)           !! amount of grid cell below CCD             (m) 
    1420                         fq1      = fq0 * exp(-(fq2 / xfastca))       !! how much CaCO3 leaves this box            (mol) 
    1421                         freminca(ji,jj) = (fq0 - fq1) / fse3t(ji,jj,jk)                !! Ca remineralisation in this box           (mol) 
    1422                      endif 
    1423                      ffastca(ji,jj) = fq1  
    1424                   else 
    1425                      !! this is BELOW THE LAST OCEAN BOX (do nothing) 
    1426                      freminc(ji,jj)  = 0.0 
    1427                      freminn(ji,jj)  = 0.0 
    1428                      freminfe(ji,jj) = 0.0 
    1429                      freminsi(ji,jj) = 0.0 
    1430                      freminca(ji,jj) = 0.0               
    1431                   endif 
    1432  
    1433                endif 
    1434  
    1435                !!---------------------------------------------------------------------- 
    1436                !! Fast-sinking detritus fluxes, pt. 2: UPDATE FAST FLUXES 
    1437                !! here locally calculated additions to the fast-sinking flux are added 
    1438                !! to the total fast-sinking flux; this is done here such that material 
    1439                !! produced in a particular layer is only remineralised below this 
    1440                !! layer 
    1441                !!---------------------------------------------------------------------- 
    1442                !! 
    1443                !! add sinking material generated in this layer to running totals 
    1444                !! 
    1445                !! === organic carbon ===                          (diatom and mesozooplankton mortality) 
    1446                ffastc(ji,jj)  = ffastc(ji,jj)  + (ftempc(ji,jj)  * fse3t(ji,jj,jk)) 
    1447                !! 
    1448                !! === organic nitrogen ===                        (diatom and mesozooplankton mortality) 
    1449                ffastn(ji,jj)  = ffastn(ji,jj)  + (ftempn(ji,jj)  * fse3t(ji,jj,jk)) 
    1450                !! 
    1451                !! === organic iron ===                            (diatom and mesozooplankton mortality) 
    1452                ffastfe(ji,jj) = ffastfe(ji,jj) + (ftempfe(ji,jj) * fse3t(ji,jj,jk)) 
    1453                !! 
    1454                !! === biogenic silicon ===                        (diatom mortality and grazed diatoms) 
    1455                ffastsi(ji,jj) = ffastsi(ji,jj) + (ftempsi(ji,jj) * fse3t(ji,jj,jk)) 
    1456                !! 
    1457                !! === biogenic calcium carbonate ===              (latitudinally-based fraction of total primary production) 
    1458                ffastca(ji,jj) = ffastca(ji,jj) + (ftempca(ji,jj) * fse3t(ji,jj,jk)) 
    1459  
    1460                !!---------------------------------------------------------------------- 
    1461                !! Fast-sinking detritus fluxes, pt. 3: SEAFLOOR 
    1462                !! remineralise all remaining fast-sinking detritus to dissolved 
    1463                !! nutrients; the sedimentation fluxes calculated here allow the 
    1464                !! separation of what's remineralised sinking through the final 
    1465                !! ocean box from that which is added to the final box by the 
    1466                !! remineralisation of material that reaches the seafloor (i.e. 
    1467                !! the model assumes that *all* material that hits the seafloor 
    1468                !! is remineralised and that none is permanently buried; hey, 
    1469                !! this is a giant GCM model that can't be run for long enough 
    1470                !! to deal with burial fluxes!) 
    1471                !! 
    1472                !! in a change to this process, in part so that MEDUSA behaves 
    1473                !! a little more like ERSEM et al., fast-sinking detritus (N, Fe 
    1474                !! and C) is converted to slow sinking detritus at the seafloor 
    1475                !! instead of being remineralised; the rationale is that in 
    1476                !! shallower shelf regions (... that are not fully mixed!) this 
    1477                !! allows the detrital material to return slowly to dissolved  
    1478                !! nutrient rather than instantaneously as now; the alternative 
    1479                !! would be to explicitly handle seafloor organic material - a 
    1480                !! headache I don't wish to experience at this point; note that 
    1481                !! fast-sinking Si and Ca detritus is just remineralised as  
    1482                !! per usual 
    1483                !!  
    1484                !! AXY (13/01/12) 
    1485                !! in a further change to this process, again so that MEDUSA is 
    1486                !! a little more like ERSEM et al., material that reaches the 
    1487                !! seafloor can now be added to sediment pools and stored for 
    1488                !! slow release; there are new 2D arrays for organic nitrogen, 
    1489                !! iron and carbon and inorganic silicon and carbon that allow 
    1490                !! fast and slow detritus that reaches the seafloor to be held 
    1491                !! and released back to the water column more slowly; these arrays 
    1492                !! are transferred via the tracer restart files between repeat 
    1493                !! submissions of the model 
    1494                !!---------------------------------------------------------------------- 
    1495                !!  
    1496                ffast2slowc(ji,jj)  = 0.0 
    1497                ffast2slown(ji,jj)  = 0.0 
    1498 ! I don't think this is used - marc 10/4/17 
    1499 !               ffast2slowfe(ji,jj) = 0.0 
    1500                !! 
    1501                if (jk.eq.mbathy(ji,jj)) then 
    1502                   !! this is the BOTTOM OCEAN BOX (remineralise everything) 
    1503                   !! 
    1504                   !! AXY (17/01/12): tweaked to include benthos pools 
    1505                   !!  
    1506                   !! === organic carbon === 
    1507                   if (jfdfate.eq.0 .and. jorgben.eq.0) then 
    1508                      freminc(ji,jj)  = freminc(ji,jj) + (ffastc(ji,jj) / fse3t(ji,jj,jk))    !! C remineralisation in this box            (mol/m3) 
    1509                   elseif (jfdfate.eq.1 .and. jorgben.eq.0) then 
    1510                      ffast2slowc(ji,jj) = ffastc(ji,jj) / fse3t(ji,jj,jk)             !! fast C -> slow C                          (mol/m3) 
    1511                      fslowc(ji,jj)      = fslowc(ji,jj) + ffast2slowc(ji,jj) 
    1512                   elseif (jfdfate.eq.0 .and. jorgben.eq.1) then 
    1513                      f_fbenin_c(ji,jj)  = ffastc(ji,jj)             !! fast C -> benthic C                       (mol/m2) 
    1514                   endif 
    1515                   fsedc(ji,jj)   = ffastc(ji,jj)                          !! record seafloor C                         (mol/m2) 
    1516                   ffastc(ji,jj)  = 0.0 
    1517                   !! 
    1518                   !! === organic nitrogen === 
    1519                   if (jfdfate.eq.0 .and. jorgben.eq.0) then 
    1520                      freminn(ji,jj)  = freminn(ji,jj) + (ffastn(ji,jj) / fse3t(ji,jj,jk))    !! N remineralisation in this box            (mol/m3) 
    1521                   elseif (jfdfate.eq.1 .and. jorgben.eq.0) then 
    1522                      ffast2slown(ji,jj) = ffastn(ji,jj) / fse3t(ji,jj,jk)             !! fast N -> slow N                          (mol/m3) 
    1523                      fslown(ji,jj)      = fslown(ji,jj) + ffast2slown(ji,jj) 
    1524                   elseif (jfdfate.eq.0 .and. jorgben.eq.1) then 
    1525                      f_fbenin_n(ji,jj)  = ffastn(ji,jj)             !! fast N -> benthic N                       (mol/m2) 
    1526                   endif 
    1527                   fsedn(ji,jj)   = ffastn(ji,jj)                          !! record seafloor N                         (mol/m2) 
    1528                   ffastn(ji,jj)  = 0.0 
    1529                   !! 
    1530                   !! === organic iron === 
    1531                   if (jfdfate.eq.0 .and. jorgben.eq.0) then 
    1532                      freminfe(ji,jj) = freminfe(ji,jj) + (ffastfe(ji,jj) / fse3t(ji,jj,jk))  !! Fe remineralisation in this box           (mol/m3) 
    1533 ! I don't think ffast2slowfe is used - marc 10/4/17 
    1534 !                  elseif (jfdfate.eq.1 .and. jorgben.eq.0) then 
    1535 !                     ffast2slowfe(ji,jj) = ffastn(ji,jj) / fse3t(ji,jj,jk)            !! fast Fe -> slow Fe                        (mol/m3) 
    1536                   elseif (jfdfate.eq.0 .and. jorgben.eq.1) then 
    1537                      f_fbenin_fe(ji,jj) = ffastfe(ji,jj)            !! fast Fe -> benthic Fe                     (mol/m2) 
    1538                   endif 
    1539                   fsedfe(ji,jj)  = ffastfe(ji,jj)                         !! record seafloor Fe                        (mol/m2) 
    1540                   ffastfe(ji,jj) = 0.0 
    1541                   !! 
    1542                   !! === biogenic silicon === 
    1543                   if (jinorgben.eq.0) then 
    1544                      freminsi(ji,jj) = freminsi(ji,jj) + (ffastsi(ji,jj) / fse3t(ji,jj,jk))  !! Si remineralisation in this box           (mol/m3) 
    1545                   elseif (jinorgben.eq.1) then 
    1546                      f_fbenin_si(ji,jj) = ffastsi(ji,jj)            !! fast Si -> benthic Si                     (mol/m2) 
    1547                   endif 
    1548                   fsedsi(ji,jj)   = ffastsi(ji,jj)                         !! record seafloor Si                        (mol/m2) 
    1549                   ffastsi(ji,jj) = 0.0 
    1550                   !! 
    1551                   !! === biogenic calcium carbonate === 
    1552                   if (jinorgben.eq.0) then 
    1553                      freminca(ji,jj) = freminca(ji,jj) + (ffastca(ji,jj) / fse3t(ji,jj,jk))  !! Ca remineralisation in this box           (mol/m3)  
    1554                   elseif (jinorgben.eq.1) then 
    1555                      f_fbenin_ca(ji,jj) = ffastca(ji,jj)            !! fast Ca -> benthic Ca                     (mol/m2) 
    1556                   endif 
    1557                   fsedca(ji,jj)   = ffastca(ji,jj)                         !! record seafloor Ca                        (mol/m2) 
    1558                   ffastca(ji,jj) = 0.0 
    1559                endif 
    1560  
    1561 # if defined key_debug_medusa 
    1562                if (idf.eq.1) then 
    1563                   !!---------------------------------------------------------------------- 
    1564                   !! Integrate total fast detritus remineralisation 
    1565                   !!---------------------------------------------------------------------- 
    1566                   !! 
    1567                   fofd_n(ji,jj)  = fofd_n(ji,jj)  + (freminn(ji,jj)  * fse3t(ji,jj,jk)) 
    1568                   fofd_si(ji,jj) = fofd_si(ji,jj) + (freminsi(ji,jj) * fse3t(ji,jj,jk)) 
    1569                   fofd_fe(ji,jj) = fofd_fe(ji,jj) + (freminfe(ji,jj) * fse3t(ji,jj,jk)) 
    1570 #  if defined key_roam 
    1571                   fofd_c(ji,jj)  = fofd_c(ji,jj)  + (freminc(ji,jj)  * fse3t(ji,jj,jk)) 
    1572 #  endif 
    1573                endif 
    1574 # endif 
    1575  
    1576                !!---------------------------------------------------------------------- 
    1577                !! Sort out remineralisation tally of fast-sinking detritus 
    1578                !!---------------------------------------------------------------------- 
    1579                !! 
    1580                !! update fast-sinking regeneration arrays 
    1581                fregenfast(ji,jj)   = fregenfast(ji,jj)   + (freminn(ji,jj)  * fse3t(ji,jj,jk)) 
    1582                fregenfastsi(ji,jj) = fregenfastsi(ji,jj) + (freminsi(ji,jj) * fse3t(ji,jj,jk)) 
    1583 # if defined key_roam 
    1584                fregenfastc(ji,jj)  = fregenfastc(ji,jj)  + (freminc(ji,jj)  * fse3t(ji,jj,jk)) 
    1585 # endif 
    1586  
    1587                !!---------------------------------------------------------------------- 
    1588                !! Benthic remineralisation fluxes 
    1589                !!---------------------------------------------------------------------- 
    1590                !! 
    1591                if (jk.eq.mbathy(ji,jj)) then 
    1592                   !! 
    1593                   !! organic components 
    1594                   if (jorgben.eq.1) then 
    1595                      f_benout_n(ji,jj)  = xsedn  * zn_sed_n(ji,jj) 
    1596                      f_benout_fe(ji,jj) = xsedfe * zn_sed_fe(ji,jj) 
    1597                      f_benout_c(ji,jj)  = xsedc  * zn_sed_c(ji,jj) 
    1598                   endif 
    1599                   !! 
    1600                   !! inorganic components 
    1601                   if (jinorgben.eq.1) then 
    1602                      f_benout_si(ji,jj) = xsedsi * zn_sed_si(ji,jj) 
    1603                      f_benout_ca(ji,jj) = xsedca * zn_sed_ca(ji,jj) 
    1604                      !! 
    1605                      !! account for CaCO3 that dissolves when it shouldn't 
    1606                      if ( fsdepw(ji,jj,jk) .le. fccd_dep(ji,jj) ) then 
    1607                         f_benout_lyso_ca(ji,jj) = xsedca * zn_sed_ca(ji,jj) 
    1608                      endif 
    1609                   endif 
    1610                endif 
    1611                CALL flush(numout) 
    1612  
    1613 ! MAYBE BUT A BREAK IN HERE, BUSINESS AND UPDATING - marc 20/4/17  
    1614 ! (fast sinking detritus is 576 lines) 
    1615             ENDIF 
    1616          ENDDO 
    1617          ENDDO 
     949         !!------------------------------------------------------------------ 
     950         !! Detritus process 
     951         !!------------------------------------------------------------------ 
     952         CALL detritus( jk, iball ) 
     953 
     954! Updating coming next - marc 28/4/17 
    1618955 
    1619956         DO jj = 2,jpjm1 
Note: See TracChangeset for help on using the changeset viewer.