Changeset 7986
- Timestamp:
- 2017-04-28T17:21:58+02:00 (8 years ago)
- Location:
- branches/UKMO/dev_r5518_medusa_chg_trc_bio_medusa/NEMOGCM/NEMO/TOP_SRC/MEDUSA
- Files:
-
- 2 added
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/UKMO/dev_r5518_medusa_chg_trc_bio_medusa/NEMOGCM/NEMO/TOP_SRC/MEDUSA/air_sea.F90
r7975 r7986 81 81 82 82 !! time (integer timestep) 83 INTEGER, INTENT( in ) :: 83 INTEGER, INTENT( in ) :: kt 84 84 85 85 !! jpalm 14-07-2016: convert CO2flux diag from mmol/m2/d to kg/m2/s -
branches/UKMO/dev_r5518_medusa_chg_trc_bio_medusa/NEMOGCM/NEMO/TOP_SRC/MEDUSA/bio_medusa_mod.F90
r7978 r7986 30 30 # endif 31 31 32 !! integrated source and sink terms 33 REAL(wp) :: b0 34 32 35 REAL(wp), ALLOCATABLE, DIMENSION(:,:) :: fthetan,faln,fchn1,fchn 33 36 REAL(wp), ALLOCATABLE, DIMENSION(:,:) :: fjln,fprn,frn … … 74 77 REAL(wp), ALLOCATABLE, DIMENSION(:,:) :: fmegrow,fmeexcr,fmeresp 75 78 !! 76 !! mortality/Remineralisation (defunct parameter "fz" removed)79 !! mortality/Remineralisation 77 80 REAL(wp), ALLOCATABLE, DIMENSION(:,:) :: fdpn,fdpd,fdpds,fdzmi,fdzme,fdd 78 81 # if defined key_roam … … 80 83 # endif 81 84 REAL(wp), ALLOCATABLE, DIMENSION(:,:) :: fdpn2,fdpd2,fdpds2,fdzmi2,fdzme2 82 83 !! Mortality/Remineralisation 85 REAL(wp), ALLOCATABLE, DIMENSION(:,:) :: fslown, fslowc 84 86 REAL(wp), ALLOCATABLE, DIMENSION(:,:) :: fslownflux, fslowcflux 85 87 REAL(wp), ALLOCATABLE, DIMENSION(:,:) :: fregenfast,fregenfastsi … … 100 102 REAL(wp), ALLOCATABLE, DIMENSION(:,:) :: fccd 101 103 REAL(wp), ALLOCATABLE, DIMENSION(:,:) :: fccd_dep 104 105 !! AXY (08/07/11): fate of fast detritus reaching the seafloor 106 REAL(wp), ALLOCATABLE, DIMENSION(:,:) :: ffast2slown,ffast2slowc 102 107 103 108 !! water column nutrient and flux integrals … … 297 302 fdpn2(jpi,jpj),fdpd2(jpi,jpj),fdpds2(jpi,jpj), & 298 303 fdzmi2(jpi,jpj),fdzme2(jpi,jpj), & 304 fslown(jpi,jpj), fslowc(jpi,jpj), & 299 305 fslownflux(jpi,jpj),fslowcflux(jpi,jpj), & 300 306 fregenfast(jpi,jpj),fregenfastsi(jpi,jpj), & … … 314 320 fccd(jpi,jpj), & 315 321 fccd_dep(jpi,jpj), & 322 ffast2slown(jpi,jpj),ffast2slowc(jpi,jpj), & 316 323 ftot_n(jpi,jpj),ftot_si(jpi,jpj),ftot_fe(jpi,jpj), & 317 324 fflx_n(jpi,jpj),fflx_si(jpi,jpj),fflx_fe(jpi,jpj), & -
branches/UKMO/dev_r5518_medusa_chg_trc_bio_medusa/NEMOGCM/NEMO/TOP_SRC/MEDUSA/trcbio_medusa.F90
r7978 r7986 102 102 USE plankton_mod, ONLY: plankton 103 103 USE iron_chem_scav_mod, ONLY: iron_chem_scav 104 USE detritus_mod, ONLY: detritus 104 105 USE bio_medusa_diag_slice_mod, ONLY: bio_medusa_diag_slice 105 106 USE bio_medusa_fin_mod, ONLY: bio_medusa_fin … … 177 178 !! 178 179 !! integrated source and sink terms 179 REAL(wp) :: b0180 ! REAL(wp) :: b0 180 181 !! AXY (23/08/13): changed from individual variables for each flux to 181 182 !! an array that holds all fluxes … … 238 239 # endif 239 240 ! REAL(wp), DIMENSION(jpi,jpj) :: fdpn2,fdpd2,fdpds2,fdzmi2,fdzme2 240 REAL(wp), DIMENSION(jpi,jpj) :: fslown, fslowc241 ! REAL(wp), DIMENSION(jpi,jpj) :: fslown, fslowc 241 242 ! REAL(wp), DIMENSION(jpi,jpj) :: fslownflux, fslowcflux 242 243 REAL(wp), DIMENSION(jpi,jpj) :: fregen,fregensi … … 264 265 ! I don't think ffast2slowfe is used - marc 10/4/17 265 266 ! REAL(wp), DIMENSION(jpi,jpj) :: ffast2slown,ffast2slowfe,ffast2slowc 266 REAL(wp), DIMENSION(jpi,jpj) :: ffast2slown,ffast2slowc267 ! REAL(wp), DIMENSION(jpi,jpj) :: ffast2slown,ffast2slowc 267 268 !! 268 269 !! conservation law … … 852 853 CALL plankton( jk ) 853 854 854 ! Detritus process - marc855 856 DO jj = 2,jpjm1857 DO ji = 2,jpim1858 !! OPEN wet point IF..THEN loop859 if (tmask(ji,jj,jk) == 1) then860 861 !!----------------------------------------------------------------------862 !! Detritus remineralisation863 !! Constant or temperature-dependent864 !!----------------------------------------------------------------------865 !!866 if (jmd.eq.1) then867 !! temperature-dependent868 fdd(ji,jj) = xmd * fun_T(ji,jj) * zdet(ji,jj)869 # if defined key_roam870 fddc(ji,jj) = xmdc * fun_T(ji,jj) * zdtc(ji,jj)871 # endif872 elseif (jmd.eq.2) then873 !! AXY (16/05/13): add in Q10-based parameterisation (def in nmlst)874 !! temperature-dependent875 fdd(ji,jj) = xmd * fun_Q10(ji,jj) * zdet(ji,jj)876 #if defined key_roam877 fddc(ji,jj) = xmdc * fun_Q10(ji,jj) * zdtc(ji,jj)878 #endif879 else880 !! temperature-independent881 fdd(ji,jj) = xmd * zdet(ji,jj)882 # if defined key_roam883 fddc(ji,jj) = xmdc * zdtc(ji,jj)884 # endif885 endif886 !!887 !! AXY (22/07/09): accelerate detrital remineralisation in the bottom box888 if ((jk.eq.mbathy(ji,jj)) .and. jsfd.eq.1) then889 fdd(ji,jj) = 1.0 * zdet(ji,jj)890 # if defined key_roam891 fddc(ji,jj) = 1.0 * zdtc(ji,jj)892 # endif893 endif894 895 # if defined key_debug_medusa896 !! report plankton mortality and remineralisation897 if (idf.eq.1.AND.idfval.eq.1) then898 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_roam911 IF (lwp) write (numout,*) 'fddc(',jk,') = ', fddc(ji,jj)912 # endif913 endif914 # endif915 916 !!----------------------------------------------------------------------917 !! Detritus addition to benthos918 !! If activated, slow detritus in the bottom box will enter the919 !! benthic pool920 !!----------------------------------------------------------------------921 !!922 if ((jk.eq.mbathy(ji,jj)) .and. jorgben.eq.1) then923 !! 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_roam928 f_sbenin_c(ji,jj) = (zdtc(ji,jj) * vsed * 86400.)929 # else930 f_sbenin_c(ji,jj) = (zdet(ji,jj) * vsed * 86400. * xthetad)931 # endif932 endif933 934 ! MAYBE BUT A BREAK IN HERE, IRON CHEMISTRY AND SCAVENGING - marc 20/4/17935 ! (detritus processes is 74 lines)936 ENDIF937 ENDDO938 ENDDO939 940 855 !!---------------------------------------------------------------- 941 856 !! Iron chemistry and scavenging … … 1032 947 ENDDO 1033 948 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 1618 955 1619 956 DO jj = 2,jpjm1
Note: See TracChangeset
for help on using the changeset viewer.