Changeset 13106
- Timestamp:
- 2020-06-12T17:55:01+02:00 (4 years ago)
- Location:
- branches/UKMO/AMM15_v3_6_STABLE_package_collate_phytobal3d/NEMOGCM
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/UKMO/AMM15_v3_6_STABLE_package_collate_phytobal3d/NEMOGCM/CONFIG/SHARED/namelist_ref
r11277 r13106 1303 1303 ln_plchltotinc = .false. ! Logical switch for applying plchltot increments 1304 1304 ln_pchltotinc = .false. ! Logical switch for applying pchltot increments 1305 ln_plchldiainc = .false. ! Logical switch for applying plchldia increments 1306 ln_plchlnaninc = .false. ! Logical switch for applying plchlnan increments 1307 ln_plchlpicinc = .false. ! Logical switch for applying plchlpic increments 1308 ln_plchldininc = .false. ! Logical switch for applying plchldin increments 1305 1309 ln_pno3inc = .false. ! Logical switch for applying pno3 increments 1306 1310 ln_psi4inc = .false. ! Logical switch for applying psi4 increments -
branches/UKMO/AMM15_v3_6_STABLE_package_collate_phytobal3d/NEMOGCM/NEMO/OPA_SRC/ASM/asmbgc.F90
r10728 r13106 132 132 LOGICAL, PUBLIC :: ln_sfco2inc = .FALSE. !: No surface fCO2 increment 133 133 LOGICAL, PUBLIC :: ln_plchltotinc = .FALSE. !: No profile total log10(chlorophyll) increment 134 LOGICAL, PUBLIC :: ln_plchldiainc = .FALSE. !: No profile diatom log10(chlorophyll) increment 135 LOGICAL, PUBLIC :: ln_plchlnaninc = .FALSE. !: No profile nanophyto log10(chlorophyll) increment 136 LOGICAL, PUBLIC :: ln_plchlpicinc = .FALSE. !: No profile picophyto log10(chlorophyll) increment 137 LOGICAL, PUBLIC :: ln_plchldininc = .FALSE. !: No profile dinoflag log10(chlorophyll) increment 134 138 LOGICAL, PUBLIC :: ln_pchltotinc = .FALSE. !: No profile total chlorophyll increment 135 139 LOGICAL, PUBLIC :: ln_pno3inc = .FALSE. !: No profile nitrate increment … … 173 177 REAL(wp), DIMENSION(:,:), ALLOCATABLE :: spco2_bkginc ! spco2 inc 174 178 REAL(wp), DIMENSION(:,:,:), ALLOCATABLE :: plchltot_bkginc ! plchltot inc 179 REAL(wp), DIMENSION(:,:,:), ALLOCATABLE :: plchldia_bkginc ! plchldia inc 180 REAL(wp), DIMENSION(:,:,:), ALLOCATABLE :: plchlnan_bkginc ! plchlnan inc 181 REAL(wp), DIMENSION(:,:,:), ALLOCATABLE :: plchlpic_bkginc ! plchlpic inc 182 REAL(wp), DIMENSION(:,:,:), ALLOCATABLE :: plchldin_bkginc ! plchldin inc 175 183 REAL(wp), DIMENSION(:,:,:), ALLOCATABLE :: pchltot_bkginc ! pchltot inc 176 184 REAL(wp), DIMENSION(:,:,:), ALLOCATABLE :: pno3_bkginc ! pno3 inc … … 262 270 & ( .NOT. ln_slphydiainc ).AND.( .NOT. ln_slphynoninc ) ) THEN 263 271 CALL ctl_warn( ' Cannot calculate phytoplankton balancing increments', & 264 & ' if not assimilating ocean colour ,',&272 & ' if not assimilating ocean colour in 2D,', & 265 273 & ' so ln_phytobal will be set to .false.') 266 274 ln_phytobal = .FALSE. … … 274 282 & ( .NOT. ln_slphytotinc ).AND.( .NOT. ln_slphydiainc ).AND. & 275 283 & ( .NOT. ln_slphynoninc ).AND.( .NOT. ln_plchltotinc ).AND. & 284 & ( .NOT. ln_plchldiainc ).AND.( .NOT. ln_plchlnaninc ).AND. & 285 & ( .NOT. ln_plchlpicinc ).AND.( .NOT. ln_plchldininc ).AND. & 276 286 & ( .NOT. ln_pchltotinc ).AND.( .NOT. ln_pphinc ).AND. & 277 287 & ( .NOT. ln_spco2inc ).AND.( .NOT. ln_sfco2inc ) ) THEN … … 297 307 & ln_slchlpicinc .OR. ln_slchldininc ) ) THEN 298 308 CALL ctl_stop( ' Can only assimilate total or PFT surface chlorophyll, not both' ) 309 ENDIF 310 311 IF ( ( ln_plchltotinc .OR. ln_pchltotinc ) .AND. & 312 & ( ln_plchldiainc .OR. ln_plchlnaninc .OR. & 313 & ln_plchlpicinc .OR. ln_plchldininc ) ) THEN 314 CALL ctl_stop( ' Can only assimilate total or PFT profile chlorophyll, not both' ) 299 315 ENDIF 300 316 … … 416 432 ENDIF 417 433 434 IF ( ln_plchldiainc ) THEN 435 ALLOCATE( plchldia_bkginc(jpi,jpj,jpk) ) 436 CALL asm_bgc_read_incs_3d( knum, 'bckinplchldia', plchldia_bkginc ) 437 ENDIF 438 439 IF ( ln_plchldininc ) THEN 440 ALLOCATE( plchldin_bkginc(jpi,jpj,jpk) ) 441 CALL asm_bgc_read_incs_3d( knum, 'bckinplchldin', plchldin_bkginc ) 442 ENDIF 443 444 IF ( ln_plchlnaninc ) THEN 445 ALLOCATE( plchlnan_bkginc(jpi,jpj,jpk) ) 446 CALL asm_bgc_read_incs_3d( knum, 'bckinplchlnan', plchlnan_bkginc ) 447 ENDIF 448 449 IF ( ln_plchlpicinc ) THEN 450 ALLOCATE( plchlpic_bkginc(jpi,jpj,jpk) ) 451 CALL asm_bgc_read_incs_3d( knum, 'bckinplchlpic', plchlpic_bkginc ) 452 ENDIF 453 418 454 IF ( ln_pchltotinc ) THEN 419 455 ALLOCATE( pchltot_bkginc(jpi,jpj,jpk) ) … … 470 506 ENDIF 471 507 472 IF ( ln_plchltotinc .OR. ln_pchltotinc ) THEN 508 IF ( ln_plchltotinc .OR. ln_pchltotinc .OR. ln_plchldiainc .OR. & 509 & ln_plchlnaninc .OR. ln_plchlpicinc .OR. ln_plchldininc ) THEN 473 510 #if defined key_top 474 511 ALLOCATE( phyto3d_balinc(jpi,jpj,jpk,jptra) ) … … 601 638 & ln_slchlnaninc .OR. ln_slchlpicinc .OR. ln_slchldininc .OR. & 602 639 & ln_schltotinc .OR. ln_slphytotinc .OR. ln_slphydiainc .OR. & 603 & ln_slphynoninc .OR. ln_plchltotinc .OR. ln_pchltotinc ) THEN 640 & ln_slphynoninc .OR. ln_plchltotinc .OR. ln_pchltotinc .OR. & 641 & ln_plchldiainc .OR. ln_plchldininc .OR. ln_plchlnaninc .OR. & 642 & ln_plchlpicinc ) THEN 604 643 605 644 ALLOCATE( pgrow_avg_bkg(jpi,jpj) ) … … 888 927 ENDIF 889 928 890 IF ( ln_plchltotinc .OR. ln_pchltotinc ) THEN 929 IF ( ln_plchltotinc .OR. ln_pchltotinc .OR. ln_plchldiainc .OR. & 930 & ln_plchldininc .OR. ln_plchlnaninc .OR. ln_plchlpicinc ) THEN 891 931 #if defined key_medusa 892 932 CALL iom_rstput( kt, kt, inum, 'phy3d_chn', phyto3d_balinc(:,:,:,jpchn) ) … … 1254 1294 !!=========================================================================== 1255 1295 1296 SUBROUTINE asm_bgc_unlog_3d( pbkg, pinc_log, pinc_nonlog ) 1297 !!------------------------------------------------------------------------ 1298 !! *** ROUTINE asm_bgc_init_incs *** 1299 !! 1300 !! ** Purpose : convert log increments to non-log 1301 !! 1302 !! ** Method : need to account for model background, 1303 !! cannot simply do 10^log_inc. Need to: 1304 !! 1) Add log_inc to log10(background) to get log10(analysis) 1305 !! 2) Take 10^log10(analysis) to get analysis 1306 !! 3) Subtract background from analysis to get non-log incs 1307 !! 1308 !! ** Action : return non-log increments 1309 !! 1310 !! References : 1311 !!------------------------------------------------------------------------ 1312 !! 1313 REAL(wp), INTENT(in ), DIMENSION(jpi,jpj,jpk) :: pbkg ! Background 1314 REAL(wp), INTENT(in ), DIMENSION(jpi,jpj,jpk) :: pinc_log ! Log incs 1315 REAL(wp), INTENT( out), DIMENSION(jpi,jpj,jpk) :: pinc_nonlog ! Non-log incs 1316 ! 1317 INTEGER :: ji, jj, jk ! Loop counters 1318 !! 1319 !!------------------------------------------------------------------------ 1320 1321 DO jk = 1, jpk 1322 DO jj = 1, jpj 1323 DO ji = 1, jpi 1324 IF ( pbkg(ji,jj,jk) > 0.0 ) THEN 1325 pinc_nonlog(ji,jj,jk) = 10**( LOG10( pbkg(ji,jj,jk) ) + & 1326 & pinc_log(ji,jj,jk) ) & 1327 & - pbkg(ji,jj,jk) 1328 ELSE 1329 pinc_nonlog(ji,jj,jk) = 0.0 1330 ENDIF 1331 END DO 1332 END DO 1333 END DO 1334 1335 END SUBROUTINE asm_bgc_unlog_3d 1336 1337 !!=========================================================================== 1338 !!=========================================================================== 1339 !!=========================================================================== 1340 1256 1341 SUBROUTINE phyto2d_asm_inc( kt, ll_asmdin, ll_asmiau, kcycper, pwgtiau ) 1257 1342 !!------------------------------------------------------------------------ … … 1618 1703 INTEGER :: it ! Index 1619 1704 REAL(wp) :: zincwgt ! IAU weight for timestep 1705 REAL(wp) :: zfrac ! Fraction 1620 1706 REAL(wp) :: zfrac_chn ! Fraction of jpchn 1621 1707 REAL(wp) :: zfrac_chd ! Fraction of jpchd … … 1640 1726 REAL(wp) :: zrat_p4n_chl4 ! jp_fabm_p4n:jp_fabm_chl4 ratio 1641 1727 REAL(wp) :: zrat_p4p_chl4 ! jp_fabm_p4p:jp_fabm_chl4 ratio 1642 REAL(wp), DIMENSION(jpi,jpj,jpk) :: chl_inc ! Chlorophyll increments 1643 REAL(wp), DIMENSION(jpi,jpj,jpk) :: bkg_chl ! Chlorophyll background 1728 REAL(wp), DIMENSION(jpi,jpj,jpk) :: zinc_chltot ! Local chltot incs 1729 REAL(wp), DIMENSION(jpi,jpj,jpk) :: zbkg_chltot ! Local chltot bkg 1730 #if defined key_fabm 1731 REAL(wp), DIMENSION(jpi,jpj,jpk) :: zinc_chldia ! Local chldia incs 1732 REAL(wp), DIMENSION(jpi,jpj,jpk) :: zbkg_chldia ! Local chldia bkg 1733 REAL(wp), DIMENSION(jpi,jpj,jpk) :: zinc_chldin ! Local chldin incs 1734 REAL(wp), DIMENSION(jpi,jpj,jpk) :: zbkg_chldin ! Local chldin bkg 1735 REAL(wp), DIMENSION(jpi,jpj,jpk) :: zinc_chlnan ! Local chlnan incs 1736 REAL(wp), DIMENSION(jpi,jpj,jpk) :: zbkg_chlnan ! Local chlnan bkg 1737 REAL(wp), DIMENSION(jpi,jpj,jpk) :: zinc_chlpic ! Local chlpic incs 1738 REAL(wp), DIMENSION(jpi,jpj,jpk) :: zbkg_chlpic ! Local chlpic bkg 1739 REAL(wp), DIMENSION(jpi,jpj,jpk) :: zinc_chltot_temp ! Local chltot incs 1740 #endif 1644 1741 !!------------------------------------------------------------------------ 1645 1742 1646 1743 IF ( kt <= nit000 ) THEN 1647 1744 1745 ! Un-log any log increments 1746 ! Remember that two sets of non-log increments should not be 1747 ! expected to be in the same ratio as their log equivalents 1748 1749 ! Total chlorophyll 1648 1750 IF ( ln_plchltotinc ) THEN 1649 ! Convert log10(chlorophyll) increment back to a chlorophyll increment1650 ! In order to transform logchl incs to chl incs, need to account for model1651 ! background, cannot simply do 10^logchl_bkginc. Need to:1652 ! 1) Add logchl inc to log10(background) to get log10(analysis)1653 ! 2) Take 10^log10(analysis) to get analysis1654 ! 3) Subtract background from analysis to get chl incs1655 ! If rn_maxchlinc > 0 then cap total absolute chlorophyll increment at that value1656 1751 #if defined key_medusa 1657 bkg_chl(:,:,:) = tracer_bkg(:,:,:,jpchn) + tracer_bkg(:,:,:,jpchd)1752 zbkg_chltot(:,:,:) = tracer_bkg(:,:,:,jpchn) + tracer_bkg(:,:,:,jpchd) 1658 1753 #elif defined key_hadocc 1659 bkg_chl(:,:,:) = chl_bkg(:,:,:) 1660 #elif defined key_fabm 1661 bkg_chl(:,:,:) = tracer_bkg(:,:,:,jp_fabm_m1+jp_fabm_chl1) + & 1662 & tracer_bkg(:,:,:,jp_fabm_m1+jp_fabm_chl2) + & 1663 & tracer_bkg(:,:,:,jp_fabm_m1+jp_fabm_chl3) + & 1664 & tracer_bkg(:,:,:,jp_fabm_m1+jp_fabm_chl4) 1665 #endif 1666 DO jk = 1, jpk 1667 DO jj = 1, jpj 1668 DO ji = 1, jpi 1669 IF ( bkg_chl(ji,jj,jk) > 0.0 ) THEN 1670 chl_inc(ji,jj,jk) = 10**( LOG10( bkg_chl(ji,jj,jk) ) + plchltot_bkginc(ji,jj,jk) ) - bkg_chl(ji,jj,jk) 1671 IF ( rn_maxchlinc > 0.0 ) THEN 1672 chl_inc(ji,jj,jk) = MAX( -1.0 * rn_maxchlinc, MIN( chl_inc(ji,jj,jk), rn_maxchlinc ) ) 1673 ENDIF 1674 ELSE 1675 chl_inc(ji,jj,jk) = 0.0 1676 ENDIF 1754 zbkg_chltot(:,:,:) = chl_bkg(:,:,:) 1755 #elif defined key_fabm 1756 zbkg_chltot(:,:,:) = tracer_bkg(:,:,:,jp_fabm_m1+jp_fabm_chl1) + & 1757 & tracer_bkg(:,:,:,jp_fabm_m1+jp_fabm_chl2) + & 1758 & tracer_bkg(:,:,:,jp_fabm_m1+jp_fabm_chl3) + & 1759 & tracer_bkg(:,:,:,jp_fabm_m1+jp_fabm_chl4) 1760 #endif 1761 CALL asm_bgc_unlog_3d( zbkg_chltot, plchltot_bkginc, zinc_chltot ) 1762 ELSE IF ( ln_pchltotinc ) THEN 1763 zinc_chltot(:,:,:) = pchltot_bkginc(:,:,:) 1764 ELSE 1765 zinc_chltot(:,:,:) = 0.0 1766 ENDIF 1767 1768 #if defined key_fabm 1769 ! Diatom chlorophyll 1770 IF ( ln_plchldiainc ) THEN 1771 zbkg_chldia(:,:,:) = tracer_bkg(:,:,:,jp_fabm_m1+jp_fabm_chl1) 1772 CALL asm_bgc_unlog_3d( zbkg_chldia, plchldia_bkginc, zinc_chldia ) 1773 ELSE 1774 zinc_chldia(:,:,:) = 0.0 1775 ENDIF 1776 1777 ! Nanophytoplankton chlorophyll 1778 IF ( ln_plchlnaninc ) THEN 1779 zbkg_chlnan(:,:,:) = tracer_bkg(:,:,:,jp_fabm_m1+jp_fabm_chl2) 1780 CALL asm_bgc_unlog_3d( zbkg_chlnan, plchlnan_bkginc, zinc_chlnan ) 1781 ELSE 1782 zinc_chlnan(:,:,:) = 0.0 1783 ENDIF 1784 1785 ! Picophytoplankton chlorophyll 1786 IF ( ln_plchlpicinc ) THEN 1787 zbkg_chlpic(:,:,:) = tracer_bkg(:,:,:,jp_fabm_m1+jp_fabm_chl3) 1788 CALL asm_bgc_unlog_3d( zbkg_chlpic, plchlpic_bkginc, zinc_chlpic ) 1789 ELSE 1790 zinc_chlpic(:,:,:) = 0.0 1791 ENDIF 1792 1793 ! Dinoflagellate chlorophyll 1794 IF ( ln_plchldininc ) THEN 1795 zbkg_chldin(:,:,:) = tracer_bkg(:,:,:,jp_fabm_m1+jp_fabm_chl4) 1796 CALL asm_bgc_unlog_3d( zbkg_chldin, plchldin_bkginc, zinc_chldin ) 1797 ELSE 1798 zinc_chldin(:,:,:) = 0.0 1799 ENDIF 1800 #endif 1801 1802 ! If rn_maxchlinc > 0 then cap total absolute chlorophyll increment at that value 1803 IF ( rn_maxchlinc > 0.0 ) THEN 1804 IF ( ln_plchltotinc .OR. ln_pchltotinc ) THEN 1805 DO jk = 1, jpk 1806 DO jj = 1, jpj 1807 DO ji = 1, jpi 1808 zinc_chltot(ji,jj,jk) = MAX( -1.0 * rn_maxchlinc, MIN( zinc_chltot(ji,jj,jk), rn_maxchlinc ) ) 1809 END DO 1677 1810 END DO 1678 1811 END DO 1679 END DO 1680 ELSE IF ( ln_pchltotinc ) THEN 1681 DO jk = 1, jpk 1682 DO jj = 1, jpj 1683 DO ji = 1, jpi 1684 IF ( rn_maxchlinc > 0.0 ) THEN 1685 chl_inc(ji,jj,jk) = MAX( -1.0 * rn_maxchlinc, MIN( pchltot_bkginc(ji,jj,jk), rn_maxchlinc ) ) 1686 ELSE 1687 chl_inc(ji,jj,jk) = pchltot_bkginc(ji,jj,jk) 1688 ENDIF 1812 #if defined key_fabm 1813 ELSE 1814 DO jk = 1, jpk 1815 DO jj = 1, jpj 1816 DO ji = 1, jpi 1817 IF ( ln_plchldiainc .AND. ln_plchlnaninc .AND. ln_plchlpicinc .AND. ln_plchldininc ) THEN 1818 zinc_chltot_temp(ji,jj,jk) = zinc_chldia(ji,jj,jk) + zinc_chlnan(ji,jj,jk) + & 1819 & zinc_chlpic(ji,jj,jk) + zinc_chldin(ji,jj,jk) 1820 ELSE IF ( ln_plchldiainc .AND. ln_plchlnaninc .AND. ln_plchlpicinc ) THEN 1821 zinc_chltot_temp(ji,jj,jk) = zinc_chldia(ji,jj,jk) + zinc_chlnan(ji,jj,jk) + & 1822 & zinc_chlpic(ji,jj,jk) 1823 ELSE IF ( ln_plchldiainc .AND. ln_plchlnaninc .AND. ln_plchldininc ) THEN 1824 zinc_chltot_temp(ji,jj,jk) = zinc_chldia(ji,jj,jk) + zinc_chlnan(ji,jj,jk) + & 1825 & zinc_chldin(ji,jj,jk) 1826 ELSE IF ( ln_plchldiainc .AND. ln_plchlpicinc .AND. ln_plchldininc ) THEN 1827 zinc_chltot_temp(ji,jj,jk) = zinc_chldia(ji,jj,jk) + & 1828 & zinc_chlpic(ji,jj,jk) + zinc_chldin(ji,jj,jk) 1829 ELSE IF ( ln_plchlnaninc .AND. ln_plchlpicinc .AND. ln_plchldininc ) THEN 1830 zinc_chltot_temp(ji,jj,jk) = zinc_chlnan(ji,jj,jk) + & 1831 & zinc_chlpic(ji,jj,jk) + zinc_chldin(ji,jj,jk) 1832 ELSE IF ( ln_plchldiainc .AND. ln_plchlnaninc ) THEN 1833 zinc_chltot_temp(ji,jj,jk) = zinc_chldia(ji,jj,jk) + zinc_chlnan(ji,jj,jk) 1834 ELSE IF ( ln_plchldiainc .AND. ln_plchlpicinc ) THEN 1835 zinc_chltot_temp(ji,jj,jk) = zinc_chldia(ji,jj,jk) + zinc_chlpic(ji,jj,jk) 1836 ELSE IF ( ln_plchldiainc .AND. ln_plchldininc ) THEN 1837 zinc_chltot_temp(ji,jj,jk) = zinc_chldia(ji,jj,jk) + zinc_chldin(ji,jj,jk) 1838 ELSE IF ( ln_plchlnaninc .AND. ln_plchlpicinc ) THEN 1839 zinc_chltot_temp(ji,jj,jk) = zinc_chlnan(ji,jj,jk) + zinc_chlpic(ji,jj,jk) 1840 ELSE IF ( ln_plchlnaninc .AND. ln_plchldininc ) THEN 1841 zinc_chltot_temp(ji,jj,jk) = zinc_chlnan(ji,jj,jk) + zinc_chldin(ji,jj,jk) 1842 ELSE IF ( ln_plchlpicinc .AND. ln_plchldininc ) THEN 1843 zinc_chltot_temp(ji,jj,jk) = zinc_chlpic(ji,jj,jk) + zinc_chldin(ji,jj,jk) 1844 ELSE IF ( ln_plchldiainc ) THEN 1845 zinc_chltot_temp(ji,jj,jk) = zinc_chldia(ji,jj,jk) 1846 ELSE IF ( ln_plchlnaninc ) THEN 1847 zinc_chltot_temp(ji,jj,jk) = zinc_chlnan(ji,jj,jk) 1848 ELSE IF ( ln_plchlpicinc ) THEN 1849 zinc_chltot_temp(ji,jj,jk) = zinc_chlpic(ji,jj,jk) 1850 ELSE IF ( ln_plchldininc ) THEN 1851 zinc_chltot_temp(ji,jj,jk) = zinc_chldin(ji,jj,jk) 1852 ENDIF 1853 zinc_chltot(ji,jj,jk) = MAX( -1.0 * rn_maxchlinc, MIN( zinc_chltot_temp(ji,jj,jk), rn_maxchlinc ) ) 1854 IF ( zinc_chltot(ji,jj,jk) .NE. zinc_chltot_temp(ji,jj,jk) ) THEN 1855 zfrac = zinc_chltot(ji,jj,jk) / zinc_chltot_temp(ji,jj,jk) 1856 IF ( ln_plchldiainc ) THEN 1857 zinc_chldia(ji,jj,jk) = zinc_chldia(ji,jj,jk) * zfrac 1858 ENDIF 1859 IF ( ln_plchlnaninc ) THEN 1860 zinc_chlnan(ji,jj,jk) = zinc_chlnan(ji,jj,jk) * zfrac 1861 ENDIF 1862 IF ( ln_plchlpicinc ) THEN 1863 zinc_chlpic(ji,jj,jk) = zinc_chlpic(ji,jj,jk) * zfrac 1864 ENDIF 1865 IF ( ln_plchldininc ) THEN 1866 zinc_chldin(ji,jj,jk) = zinc_chldin(ji,jj,jk) * zfrac 1867 ENDIF 1868 ENDIF 1869 END DO 1689 1870 END DO 1690 1871 END DO 1691 END DO 1872 #endif 1873 ENDIF 1692 1874 ENDIF 1693 1875 … … 1700 1882 zfrac_chn = tracer_bkg(ji,jj,jk,jpchn) / (tracer_bkg(ji,jj,jk,jpchn) + tracer_bkg(ji,jj,jk,jpchd)) 1701 1883 zfrac_chd = 1.0 - zfrac_chn 1702 phyto3d_balinc(ji,jj,jk,jpchn) = chl_inc(ji,jj,jk) * zfrac_chn1703 phyto3d_balinc(ji,jj,jk,jpchd) = chl_inc(ji,jj,jk) * zfrac_chd1884 phyto3d_balinc(ji,jj,jk,jpchn) = zinc_chltot(ji,jj,jk) * zfrac_chn 1885 phyto3d_balinc(ji,jj,jk,jpchd) = zinc_chltot(ji,jj,jk) * zfrac_chd 1704 1886 zrat_phn_chn = tracer_bkg(ji,jj,jk,jpphn) / tracer_bkg(ji,jj,jk,jpchn) 1705 1887 zrat_phd_chd = tracer_bkg(ji,jj,jk,jpphd) / tracer_bkg(ji,jj,jk,jpchd) … … 1713 1895 END DO 1714 1896 #elif defined key_hadocc 1715 phyto3d_balinc(:,:,:,jp_had_phy) = ( cchl_p_bkg(:,:,:) / (mw_carbon * c2n_p) ) * chl_inc(:,:,:)1897 phyto3d_balinc(:,:,:,jp_had_phy) = ( cchl_p_bkg(:,:,:) / (mw_carbon * c2n_p) ) * zinc_chltot(:,:,:) 1716 1898 #elif defined key_fabm 1717 1899 ! Loop over each grid point partioning the increments based on existing ratios … … 1723 1905 & ( tracer_bkg(ji,jj,jk,jp_fabm_m1+jp_fabm_chl3) > 0.0 ) .AND. & 1724 1906 & ( tracer_bkg(ji,jj,jk,jp_fabm_m1+jp_fabm_chl4) > 0.0 ) ) THEN 1725 zfrac_chl1 = tracer_bkg(ji,jj,jk,jp_fabm_m1+jp_fabm_chl1) / bkg_chl(ji,jj,jk) 1726 zfrac_chl2 = tracer_bkg(ji,jj,jk,jp_fabm_m1+jp_fabm_chl2) / bkg_chl(ji,jj,jk) 1727 zfrac_chl3 = tracer_bkg(ji,jj,jk,jp_fabm_m1+jp_fabm_chl3) / bkg_chl(ji,jj,jk) 1728 zfrac_chl4 = tracer_bkg(ji,jj,jk,jp_fabm_m1+jp_fabm_chl4) / bkg_chl(ji,jj,jk) 1729 phyto3d_balinc(ji,jj,jk,jp_fabm_m1+jp_fabm_chl1) = chl_inc(ji,jj,jk) * zfrac_chl1 1730 phyto3d_balinc(ji,jj,jk,jp_fabm_m1+jp_fabm_chl2) = chl_inc(ji,jj,jk) * zfrac_chl2 1731 phyto3d_balinc(ji,jj,jk,jp_fabm_m1+jp_fabm_chl3) = chl_inc(ji,jj,jk) * zfrac_chl3 1732 phyto3d_balinc(ji,jj,jk,jp_fabm_m1+jp_fabm_chl4) = chl_inc(ji,jj,jk) * zfrac_chl4 1907 IF ( ln_plchltotinc .OR. ln_pchltotinc ) THEN 1908 zfrac_chl1 = tracer_bkg(ji,jj,jk,jp_fabm_m1+jp_fabm_chl1) / zbkg_chltot(ji,jj,jk) 1909 zfrac_chl2 = tracer_bkg(ji,jj,jk,jp_fabm_m1+jp_fabm_chl2) / zbkg_chltot(ji,jj,jk) 1910 zfrac_chl3 = tracer_bkg(ji,jj,jk,jp_fabm_m1+jp_fabm_chl3) / zbkg_chltot(ji,jj,jk) 1911 zfrac_chl4 = tracer_bkg(ji,jj,jk,jp_fabm_m1+jp_fabm_chl4) / zbkg_chltot(ji,jj,jk) 1912 phyto3d_balinc(ji,jj,jk,jp_fabm_m1+jp_fabm_chl1) = zinc_chltot(ji,jj,jk) * zfrac_chl1 1913 phyto3d_balinc(ji,jj,jk,jp_fabm_m1+jp_fabm_chl2) = zinc_chltot(ji,jj,jk) * zfrac_chl2 1914 phyto3d_balinc(ji,jj,jk,jp_fabm_m1+jp_fabm_chl3) = zinc_chltot(ji,jj,jk) * zfrac_chl3 1915 phyto3d_balinc(ji,jj,jk,jp_fabm_m1+jp_fabm_chl4) = zinc_chltot(ji,jj,jk) * zfrac_chl4 1916 ELSE 1917 phyto3d_balinc(ji,jj,jk,jp_fabm_m1+jp_fabm_chl1) = zinc_chldia(ji,jj,jk) 1918 phyto3d_balinc(ji,jj,jk,jp_fabm_m1+jp_fabm_chl2) = zinc_chlnan(ji,jj,jk) 1919 phyto3d_balinc(ji,jj,jk,jp_fabm_m1+jp_fabm_chl3) = zinc_chlpic(ji,jj,jk) 1920 phyto3d_balinc(ji,jj,jk,jp_fabm_m1+jp_fabm_chl4) = zinc_chldin(ji,jj,jk) 1921 ENDIF 1733 1922 zrat_p1c_chl1 = tracer_bkg(ji,jj,jk,jp_fabm_m1+jp_fabm_p1c) / tracer_bkg(ji,jj,jk,jp_fabm_m1+jp_fabm_chl1) 1734 1923 zrat_p1n_chl1 = tracer_bkg(ji,jj,jk,jp_fabm_m1+jp_fabm_p1n) / tracer_bkg(ji,jj,jk,jp_fabm_m1+jp_fabm_chl1) … … 1762 1951 END DO 1763 1952 #else 1764 CALL ctl_stop( 'Attempting to assimilate p (l)chltot, ', &1953 CALL ctl_stop( 'Attempting to assimilate phyto3d, ', & 1765 1954 & 'but not defined a biogeochemical model' ) 1766 1955 #endif … … 2425 2614 it = jp_fabm_n3n 2426 2615 #endif 2427 IF ( ln_phytobal) THEN2616 IF ( ALLOCATED(phyto2d_balinc) ) THEN 2428 2617 pno3_bkginc(:,:,:) = pno3_bkginc(:,:,:) - phyto2d_balinc(:,:,:,it) 2429 2618 ENDIF 2430 IF ( ln_plchltotinc .OR. ln_pchltotinc) THEN2619 IF ( ALLOCATED(phyto3d_balinc) ) THEN 2431 2620 pno3_bkginc(:,:,:) = pno3_bkginc(:,:,:) - phyto3d_balinc(:,:,:,it) 2432 2621 ENDIF … … 2449 2638 it = jp_fabm_n5s 2450 2639 #endif 2451 IF ( ln_phytobal) THEN2640 IF ( ALLOCATED(phyto2d_balinc) ) THEN 2452 2641 psi4_bkginc(:,:,:) = psi4_bkginc(:,:,:) - phyto2d_balinc(:,:,:,it) 2453 2642 ENDIF 2454 IF ( ln_plchltotinc .OR. ln_pchltotinc) THEN2643 IF ( ALLOCATED(phyto3d_balinc) ) THEN 2455 2644 psi4_bkginc(:,:,:) = psi4_bkginc(:,:,:) - phyto3d_balinc(:,:,:,it) 2456 2645 ENDIF … … 2470 2659 it = jp_fabm_n1p 2471 2660 2472 IF ( ln_phytobal) THEN2661 IF ( ALLOCATED(phyto2d_balinc) ) THEN 2473 2662 ppo4_bkginc(:,:,:) = ppo4_bkginc(:,:,:) - phyto2d_balinc(:,:,:,it) 2474 2663 ENDIF 2475 IF ( ln_plchltotinc .OR. ln_pchltotinc) THEN2664 IF ( ALLOCATED(phyto3d_balinc) ) THEN 2476 2665 ppo4_bkginc(:,:,:) = ppo4_bkginc(:,:,:) - phyto3d_balinc(:,:,:,it) 2477 2666 ENDIF … … 2496 2685 it = jp_fabm_o3c 2497 2686 #endif 2498 IF ( ln_phytobal) THEN2687 IF ( ALLOCATED(phyto2d_balinc) ) THEN 2499 2688 pdic_bkginc(:,:,:) = pdic_bkginc(:,:,:) - phyto2d_balinc(:,:,:,it) 2500 2689 ENDIF 2501 IF ( ln_plchltotinc .OR. ln_pchltotinc) THEN2690 IF ( ALLOCATED(phyto3d_balinc) ) THEN 2502 2691 pdic_bkginc(:,:,:) = pdic_bkginc(:,:,:) - phyto3d_balinc(:,:,:,it) 2503 2692 ENDIF … … 2522 2711 it = jp_fabm_o3ba 2523 2712 #endif 2524 IF ( ln_phytobal) THEN2713 IF ( ALLOCATED(phyto2d_balinc) ) THEN 2525 2714 palk_bkginc(:,:,:) = palk_bkginc(:,:,:) - phyto2d_balinc(:,:,:,it) 2526 2715 ENDIF 2527 IF ( ln_plchltotinc .OR. ln_pchltotinc) THEN2716 IF ( ALLOCATED(phyto3d_balinc) ) THEN 2528 2717 palk_bkginc(:,:,:) = palk_bkginc(:,:,:) - phyto3d_balinc(:,:,:,it) 2529 2718 ENDIF … … 2546 2735 it = jp_fabm_o2o 2547 2736 #endif 2548 IF ( ln_phytobal) THEN2737 IF ( ALLOCATED(phyto2d_balinc) ) THEN 2549 2738 po2_bkginc(:,:,:) = po2_bkginc(:,:,:) - phyto2d_balinc(:,:,:,it) 2550 2739 ENDIF 2551 IF ( ln_plchltotinc .OR. ln_pchltotinc) THEN2740 IF ( ALLOCATED(phyto3d_balinc) ) THEN 2552 2741 po2_bkginc(:,:,:) = po2_bkginc(:,:,:) - phyto3d_balinc(:,:,:,it) 2553 2742 ENDIF -
branches/UKMO/AMM15_v3_6_STABLE_package_collate_phytobal3d/NEMOGCM/NEMO/OPA_SRC/ASM/asminc.F90
r12611 r13106 174 174 & ln_slphydiainc, ln_slphynoninc, ln_spco2inc, & 175 175 & ln_sfco2inc, ln_plchltotinc, ln_pchltotinc, & 176 & ln_plchldiainc, ln_plchlnaninc, ln_plchlpicinc, & 177 & ln_plchldininc, & 176 178 & ln_pno3inc, ln_psi4inc, ln_pdicinc, ln_palkinc, & 177 179 & ln_pphinc, ln_po2inc, ln_ppo4inc, & … … 259 261 WRITE(numout,*) ' Logical switch for applying plchltot increments ln_plchltotinc = ', ln_plchltotinc 260 262 WRITE(numout,*) ' Logical switch for applying pchltot increments ln_pchltotinc = ', ln_pchltotinc 263 WRITE(numout,*) ' Logical switch for applying plchldia increments ln_plchldiainc = ', ln_plchldiainc 264 WRITE(numout,*) ' Logical switch for applying plchlnan increments ln_plchlnaninc = ', ln_plchlnaninc 265 WRITE(numout,*) ' Logical switch for applying plchlpic increments ln_plchlpicinc = ', ln_plchlpicinc 266 WRITE(numout,*) ' Logical switch for applying plchldin increments ln_plchldininc = ', ln_plchldininc 261 267 WRITE(numout,*) ' Logical switch for applying pno3 increments ln_pno3inc = ', ln_pno3inc 262 268 WRITE(numout,*) ' Logical switch for applying psi4 increments ln_psi4inc = ', ln_psi4inc … … 310 316 & ln_schltotinc .OR. ln_slphytotinc .OR. ln_slphydiainc .OR. & 311 317 & ln_slphynoninc .OR. ln_spco2inc .OR. ln_sfco2inc .OR. & 312 & ln_plchltotinc .OR. ln_pchltotinc .OR. ln_pno3inc .OR. & 318 & ln_plchltotinc .OR. ln_pchltotinc .OR. ln_plchldiainc .OR. & 319 & ln_plchlnaninc .OR. ln_plchlpicinc .OR. ln_plchldininc .OR. & 320 & ln_pno3inc .OR. & 313 321 & ln_psi4inc .OR. ln_pdicinc .OR. ln_palkinc .OR. & 314 322 & ln_pphinc .OR. ln_po2inc .OR. ln_ppo4inc ) THEN … … 1478 1486 1479 1487 ! Then chlorophyll profiles 1480 IF ( ln_plchltotinc .OR. ln_pchltotinc ) THEN 1488 IF ( ln_plchltotinc .OR. ln_pchltotinc .OR. ln_plchldiainc .OR. & 1489 & ln_plchlnaninc .OR. ln_plchlpicinc .OR. ln_plchldininc ) THEN 1481 1490 CALL phyto3d_asm_inc( kt, ln_asmdin, ln_asmiau, icycper, wgtiau ) 1482 1491 ENDIF
Note: See TracChangeset
for help on using the changeset viewer.