Changeset 8131 for branches/NERC
- Timestamp:
- 2017-06-02T17:14:01+02:00 (7 years ago)
- Location:
- branches/NERC/dev_r5518_NOC_MEDUSA_Stable/NEMOGCM
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/NERC/dev_r5518_NOC_MEDUSA_Stable/NEMOGCM/CONFIG/SHARED/field_def_bgc.xml
r8130 r8131 432 432 <field id= "DMS_ARAN" long_name="DMS Surface Concentration, AranamiT" unit="nmol/L" /> 433 433 <field id= "DMS_HALL" long_name="DMS Surface Concentration, Halloran" unit="nmol/L" /> 434 <field id= "DMS_ANDM" long_name="DMS Surface Concentration, Anderson modif" unit="nmol/L" /> 434 435 <field id= "ATM_XCO2" long_name="Atmospheric xCO2" unit="ppm" /> 435 436 <field id= "OCN_FCO2" long_name="Surface ocean fCO2" unit="uatm" /> … … 769 770 <field field_ref= "DMS_ARAN" name="DMS_ARAN" /> 770 771 <field field_ref= "DMS_HALL" name="DMS_HALL" /> 772 <field field_ref= "DMS_ANDM" name="DMS_ANDM" /> 771 773 </field_group> 772 774 -
branches/NERC/dev_r5518_NOC_MEDUSA_Stable/NEMOGCM/NEMO/TOP_SRC/MEDUSA/trcbio_medusa.F90
r8074 r8131 20 20 !! - ! 2015-10 (J. Palm) Update for diag outputs through iom_use 21 21 !! - ! 2016-11 (A. Yool) Updated diags for CMIP6 22 !! - ! 2017-05 (A. Yool) Added extra DMS calculation 22 23 !!---------------------------------------------------------------------- 23 24 !! … … 335 336 REAL(wp) :: dms_surf 336 337 !! AXY (13/03/15): add in other DMS calculations 337 REAL(wp) :: dms_andr, dms_simo, dms_aran, dms_hall 338 REAL(wp) :: dms_andr, dms_simo, dms_aran, dms_hall, dms_andm, dms_nlim, dms_wtkn 338 339 339 340 # endif … … 371 372 REAL(wp), POINTER, DIMENSION(:,: ) :: mdetc2d, gmidc2d, gmedc2d, f_pco2a2d, f_pco2w2d, f_co2flux2d 372 373 REAL(wp), POINTER, DIMENSION(:,: ) :: f_TDIC2d, f_TALK2d, f_kw6602d, f_pp02d, f_o2flux2d, f_o2sat2d 373 REAL(wp), POINTER, DIMENSION(:,: ) :: dms_andr2d, dms_simo2d, dms_aran2d, dms_hall2d, dms_ surf2d374 REAL(wp), POINTER, DIMENSION(:,: ) :: dms_andr2d, dms_simo2d, dms_aran2d, dms_hall2d, dms_andm2d, dms_surf2d 374 375 REAL(wp), POINTER, DIMENSION(:,: ) :: iben_n2d, iben_fe2d, iben_c2d, iben_si2d, iben_ca2d, oben_n2d 375 376 REAL(wp), POINTER, DIMENSION(:,: ) :: oben_fe2d, oben_c2d, oben_si2d, oben_ca2d, sfr_ocal2d … … 1001 1002 CALL wrk_alloc( jpi, jpj, dms_hall2d ) 1002 1003 dms_hall2d(:,:) = 0.0 !! 1004 ENDIF 1005 IF( med_diag%DMS_ANDM%dgsave ) THEN 1006 CALL wrk_alloc( jpi, jpj, dms_andm2d ) 1007 dms_andm2d(:,:) = 0.0 !! 1003 1008 ENDIF 1004 1009 ENDIF … … 1841 1846 !! in trcdms_medusa.F90) 1842 1847 !! 1848 !! AXY (25/05/17): amended to additionally pass DIN limitation as well as [DIN]; 1849 !! accounts for differences in nutrient half-saturations; changes 1850 !! also made in trc_dms_medusa; this permits an additional DMS 1851 !! calculation while retaining the existing Anderson one 1852 !! 1843 1853 IF (jdms .eq. 1) THEN 1854 !! 1855 !! calculate weighted half-saturation for DIN uptake 1856 dms_wtkn = ((zphn * xnln) + (zphd * xnld)) / (zphn + zphd) 1844 1857 !! 1845 1858 !! feed in correct inputs 1846 1859 if (jdms_input .eq. 0) then 1847 1860 !! use instantaneous inputs 1848 CALL trc_dms_medusa( zchn, zchd, hmld(ji,jj), qsr(ji,jj), zdin, & ! inputs 1849 dms_andr, dms_simo, dms_aran, dms_hall ) ! outputs 1861 dms_nlim = zdin / (zdin + dms_wtkn) 1862 !! 1863 CALL trc_dms_medusa( zchn, zchd, & ! inputs 1864 hmld(ji,jj), qsr(ji,jj), & ! inputs 1865 zdin, dms_nlim, & ! inputs 1866 dms_andr, dms_simo, dms_aran, dms_hall, dms_andm ) ! outputs 1850 1867 else 1851 1868 !! use diel-average inputs 1869 dms_nlim = zn_dms_din(ji,jj) / (zn_dms_din(ji,jj) + dms_wtkn) 1870 !! 1852 1871 CALL trc_dms_medusa( zn_dms_chn(ji,jj), zn_dms_chd(ji,jj), & ! inputs 1853 zn_dms_mld(ji,jj), zn_dms_qsr(ji,jj), zn_dms_din(ji,jj), & ! inputs 1854 dms_andr, dms_simo, dms_aran, dms_hall ) ! outputs 1872 zn_dms_mld(ji,jj), zn_dms_qsr(ji,jj), & ! inputs 1873 zn_dms_din(ji,jj), dms_nlim, & ! inputs 1874 dms_andr, dms_simo, dms_aran, dms_hall, dms_andm ) ! outputs 1855 1875 endif 1856 1876 !! … … 1864 1884 elseif (jdms_model .eq. 4) then 1865 1885 dms_surf = dms_hall 1886 elseif (jdms_model .eq. 5) then 1887 dms_surf = dms_andm 1866 1888 endif 1867 1889 !! … … 1882 1904 IF( med_diag%DMS_HALL%dgsave ) THEN 1883 1905 dms_hall2d(ji,jj) = dms_hall 1906 ENDIF 1907 IF( med_diag%DMS_ANDM%dgsave ) THEN 1908 dms_andm2d(ji,jj) = dms_andm 1884 1909 ENDIF 1885 1910 # if defined key_debug_medusa … … 2527 2552 !! temperature-dependent 2528 2553 fdd = xmd * fun_Q10 * zdet 2529 # if defined key_roam2554 # if defined key_roam 2530 2555 fddc = xmdc * fun_Q10 * zdtc 2531 # endif2556 # endif 2532 2557 else 2533 2558 !! temperature-independent … … 4914 4939 CALL wrk_dealloc( jpi, jpj, dms_hall2d ) 4915 4940 ENDIF 4941 IF( med_diag%DMS_ANDM%dgsave ) THEN 4942 CALL iom_put( "DMS_ANDM" , dms_andm2d ) 4943 CALL wrk_dealloc( jpi, jpj, dms_andm2d ) 4944 ENDIF 4916 4945 ENDIF 4917 4946 !! AXY (24/11/16): extra MOCSY diagnostics -
branches/NERC/dev_r5518_NOC_MEDUSA_Stable/NEMOGCM/NEMO/TOP_SRC/MEDUSA/trcdms_medusa.F90
r8074 r8131 6 6 !! History : 7 7 !! - ! 2014-08 (J. Palmieri - A. Yool) added for UKESM1 project 8 !! - ! 2017-05 (A. Yool) add extra Anderson scheme 8 9 !!---------------------------------------------------------------------- 9 10 #if defined key_medusa && defined key_roam … … 38 39 !======================================================================= 39 40 ! 40 SUBROUTINE trc_dms_medusa( chn, chd, mld, xqsr, xdin, & !! inputs41 & dms_andr, dms_simo, dms_aran, dms_hall )!! outputs41 SUBROUTINE trc_dms_medusa( chn, chd, mld, xqsr, xdin, xlim, & !! inputs 42 & dms_andr, dms_simo, dms_aran, dms_hall dms_andm) !! outputs 42 43 ! 43 44 !======================================================================= … … 69 70 !! and is included because it is formally 70 71 !! published (and different from the above) 72 !! 73 !! AXY (25/05/17): add extra "corrected" Anderson scheme 74 !! 75 !! 5. As Anderson et al. (2001) but modified to 76 !! more accurately reflect nutrient limitation 77 !! status of phytoplankton community 71 78 !! 72 79 !! AXY (08/07/15): amend to remove Julien's original calculation … … 84 91 REAL(wp), INTENT( in ) :: xqsr !! surface irradiance (W/m2) 85 92 REAL(wp), INTENT( in ) :: xdin !! surface DIN (mmol N/m3) 93 REAL(wp), INTENT( in ) :: xlim !! surface DIN limitation (mmol N/m3) 86 94 REAL(wp), INTENT( inout ) :: dms_andr !! DMS surface concentration (nmol/L) 87 95 REAL(wp), INTENT( inout ) :: dms_simo !! DMS surface concentration (nmol/L) 88 96 REAL(wp), INTENT( inout ) :: dms_aran !! DMS surface concentration (nmol/L) 89 97 REAL(wp), INTENT( inout ) :: dms_hall !! DMS surface concentration (nmol/L) 98 REAL(wp), INTENT( inout ) :: dms_andm !! DMS surface concentration (nmol/L) 90 99 ! 91 100 REAL(wp) :: CHL, cmr, sw_dms … … 147 156 dms_hall = fq3 148 157 endif 158 ! 159 ! AXY (25/05/17): modified Anderson et al. (2001) 160 Jterm = xqsr + 1.0e-6 161 !! this version fixes the hard-coded assumption above 162 Qterm = xlim 163 fq1 = log10(CHL * Jterm * Qterm) 164 if (fq1 > 1.72) then 165 dms_andm = (8.24 * (fq1 - 1.72)) + 2.29 166 else 167 dms_andm = 2.29 168 endif 149 169 150 170 END SUBROUTINE trc_dms_medusa -
branches/NERC/dev_r5518_NOC_MEDUSA_Stable/NEMOGCM/NEMO/TOP_SRC/MEDUSA/trcnam_medusa.F90
r8074 r8131 493 493 !! jdms_input : use instant (0) or diel-avg (1) inputs 494 494 !! jdms_model : choice of DMS model passed to atmosphere 495 !! 1 = ANDR, 2 = SIMO, 3 = ARAN, 4 = HALL 495 !! 1 = ANDR, 2 = SIMO, 3 = ARAN, 4 = HALL, 5 = ANDM 496 496 !! 497 497 IF(lwp) THEN … … 1026 1026 WRITE(numout,*) & 1027 1027 & ' choice of DMS model passed to atmosphere, jdms_model = Halloran et al. (2010)' 1028 elseif (jdms_model .eq. 5) then 1029 WRITE(numout,*) & 1030 & ' choice of DMS model passed to atmosphere, jdms_model = Anderson et al. (2001; modified)' 1028 1031 endif 1029 1032 !! … … 2095 2098 med_diag%DMS_HALL%dgsave = .FALSE. 2096 2099 ENDIF 2100 IF (iom_use("DMS_ANDM")) THEN 2101 med_diag%DMS_ANDM%dgsave = .TRUE. 2102 ELSE 2103 med_diag%DMS_ANDM%dgsave = .FALSE. 2104 ENDIF 2097 2105 IF (iom_use("ATM_XCO2")) THEN 2098 2106 med_diag%ATM_XCO2%dgsave = .TRUE.
Note: See TracChangeset
for help on using the changeset viewer.