Exemple #1
0
        /// <summary>Updates each tissue, make changes in DM and N effective.</summary>
        public static void UpdateTissues(RootTissue tissue1, RootTissue tissue2)
        {
            // save current state
            double previousDM = tissue1.DM.Wt + tissue2.DM.Wt;
            double previousN  = tissue1.DM.N + tissue2.DM.N;

            // update all tissues
            tissue1.Update();
            tissue2.Update();

            var currentDM = tissue1.DM.Wt + tissue2.DM.Wt;
            var currentN  = tissue1.DM.N + tissue2.DM.N;

            // check mass balance
            if (!MathUtilities.FloatsAreEqual(0.0, previousDM + tissue1.dmTransferredIn - tissue2.dmTransferredOut - currentDM))
            {
                throw new Exception("Growth and tissue turnover resulted in loss of dry matter mass balance for roots");
            }
            if (!MathUtilities.FloatsAreEqual(0.0, previousN + tissue1.nTransferredIn - tissue1.nRemobilised - tissue2.nRemobilised - tissue2.nTransferredOut - currentN))
            {
                throw new Exception("Growth and tissue turnover resulted in loss of nitrogen mass balance for roots");
            }
        }