private void OnPhaseChanged(object sender, PhaseChangedType phaseChange) { if (phaseChange.StageName == LeafInitialisationStage) { LeafInitialised = true; } }
public void OnPhaseChanged(PhaseChangedType PhenologyChange) { if (PhenologyChange.NewPhaseName == "GerminationToEmergence") { RootDepth = InitialRootDepth; } else if (PhenologyChange.NewPhaseName == "EmergenceToEndOfJuvenile") { Live.StructuralWt = InitialWt * Population.Density; Live.StructuralN = InitialNConcentration * Live.StructuralWt; // initial root length (mm/mm^2) double initial_root_length = Live.Wt / Conversions.sm2smm * SpecificRootLength; // initial root length density (mm/mm^3) double rld = MathUtility.Divide(initial_root_length, RootDepth, 0.0); int deepest_layer = FindLayerNo(RootDepth); for (int layer = 0; layer <= deepest_layer; layer++) { RootLength[layer] = rld * dlayer[layer] * RootProportion(layer, RootDepth); } Util.Debug("Root.InitGreen.StructuralWt=%f", Live.StructuralWt); Util.Debug("Root.InitGreen.StructuralN=%f", Live.StructuralN); Util.Debug("Root.InitRootLength=%f", MathUtility.Sum(RootLength)); } }
private void OnPhaseChanged(object sender, PhaseChangedType phaseChange) { if (phaseChange.EventStageName == ResetStageName) { AccumulatedValue = 0.0; } }
private void OnPhaseChanged(object sender, PhaseChangedType phaseChange) { if (phaseChange.StageName == LeafInitialisationStage) { leavesInitialised = true; dayofEmergence = true; } }
public void OnPhaseChanged(PhaseChangedType PhaseChange) { Console.WriteLine(Clock.Today.ToString("d MMMM yyyy") + " - " + Phenology.CurrentPhase.Start); if (Leaf != null) { Console.WriteLine(" LAI = " + Leaf.LAI.ToString("f2") + " (m^2/m^2)"); Console.WriteLine(" Above Ground Biomass = " + AboveGround.Wt.ToString("f2") + " (g/m^2)"); } }
private void OnPhaseChanged(PhaseChangedType PhenologyChange) { if (PhenologyChange.NewPhaseName == "EmergenceToEndOfJuvenile") { Live.StructuralWt = InitialWt * Population.Density; Live.StructuralN = InitialNConcentration * Live.StructuralWt; Util.Debug("meal.InitGreen.StructuralWt=%f", Live.StructuralWt); Util.Debug("meal.InitGreen.StructuralN=%f", Live.StructuralN); } }
private void OnPhaseChanged(object sender, PhaseChangedType phaseChange) { if (phaseChange.NewPhaseName == "EmergenceToEndOfJuvenile") { Live.StructuralWt = InitialWt * Population.Density; Live.StructuralN = InitialNConcentration * Live.StructuralWt; Util.Debug("Stem.InitGreen.StructuralWt=%f", Live.StructuralWt); Util.Debug("Stem.InitGreen.StructuralN=%f", Live.StructuralN); } }
public void OnPhaseChanged(PhaseChangedType PhenologyChange) { if (PhenologyChange.NewPhaseName == "EmergenceToEndOfJuvenile") { Live.StructuralWt = InitialWt * Population.Density; Live.StructuralN = InitialNConcentration * Live.StructuralWt; InitialiseAreas(); } }
private void OnPhaseChanged(object sender, PhaseChangedType phaseChange) { //Put the first data member into the list on the day that moving average is to start being calculated if (phaseChange.StageName == StageToStartMovingAverage) { AccumulatedValues.Add(ChildFunction.Value()); InitialisedToday = true; Calculate = true; } }
private void OnPhaseChanged(PhaseChangedType PhaseChange) { string message = Phenology.CurrentPhase.Start + "\r\n"; if (Leaf != null) { message += " LAI = " + Leaf.LAI.ToString("f2") + " (m^2/m^2)" + "\r\n"; message += " Above Ground Biomass = " + AboveGround.Wt.ToString("f2") + " (g/m^2)" + "\r\n"; } Summary.WriteMessage(this, message); }
private void OnPhaseChanged(object sender, PhaseChangedType phaseChange) { if (phaseChange.StageName == SetEvent) { preEvent = false; } if (phaseChange.StageName == ReSetEvent) { preEvent = true; } }
private void OnPhaseChanged(object sender, PhaseChangedType phaseChange) { if (phaseChange.EventStageName == SetEvent) { OnSetEvent(); } if (phaseChange.EventStageName == ReSetEvent) { OnReSetEvent(); } }
private void OnPhaseChanged(PhaseChangedType PhaseChange) { if (PhaseChange.EventStageName == SetEvent) { OnSetEvent(); } if (PhaseChange.EventStageName == ReSetEvent) { OnReSetEvent(); } }
private void OnPhaseChanged(object sender, PhaseChangedType phaseChange) { if (phaseChange.StageName == structure.CohortInitialisationStage) { structure.PrimaryBudNo = Plant.SowingData.BudNumber; } if (phaseChange.StageName == structure.LeafInitialisationStage) { structure.PrimaryBudNo = Plant.SowingData.BudNumber * FractionOfBudBurst.Value(); structure.TotalStemPopn = structure.MainStemPopn; } }
private void OnPhaseChanged(object sender, PhaseChangedType phaseChange) { if (phaseChange.StageName == SetEvent) { _Value = PostEventValue.Value(); } if (phaseChange.StageName == ReSetEvent) { _Value = PreEventValue.Value(); } }
private void OnPhaseChanged(object sender, PhaseChangedType phaseChange) { if (sender == this && Phenology != null && Canopy != null && AboveGround != null) { string message = Phenology.CurrentPhase.Start + "\r\n"; if (Canopy != null) { message += " LAI = " + Canopy.LAI.ToString("f2") + " (m^2/m^2)" + "\r\n"; message += " Above Ground Biomass = " + AboveGround.Wt.ToString("f2") + " (g/m^2)" + "\r\n"; } Summary.WriteMessage(this, message); } }
private void OnPhaseChanged(object sender, PhaseChangedType phaseChange) { if (phaseChange.StageName == CohortInitialisationStage) { InitialiseLeafCohorts?.Invoke(this, new EventArgs()); cohortsInitialised = true; } if (phaseChange.StageName == LeafInitialisationStage) { NextLeafProportion = 1.0; DoLeafInitilisation(); } }
private void OnPhaseChanged(object sender, PhaseChangedType phaseChange) { if (sender == this && Leaf != null && AboveGround != null) { string message = Phenology.CurrentPhase.Start + "\r\n"; if (Leaf != null) { message += " LAI = " + Leaf.LAI.ToString("f2") + " (m^2/m^2)" + "\r\n"; message += " Above Ground Biomass = " + AboveGround.Wt.ToString("f2") + " (g/m^2)" + "\r\n"; } summary.WriteMessage(this, message); if (Phenology.CurrentPhase.Start == "Flowering" && Flowering != null) { Flowering.Invoke(this, null); } } }
private void OnPhaseChanged(PhaseChangedType Data) { if (SWStress != null && NStress != null) { PhenologyEventToday = true; AverageStressMessage += String.Format(" {0,40}{1,13:F3}{2,13:F3}{3,13:F3}{4,13:F3}\r\n", Data.OldPhaseName, 1 - SWStress.PhotoAverage, 1 - SWStress.ExpansionAverage, 1 - NStress.PhotoAverage, 1 - NStress.GrainAverage); SWStress.ResetAverage(); NStress.ResetAverage(); } if (Data.NewPhaseName.Contains("FloweringTo")) { FloweringDate = Today; } else if (Data.NewPhaseName.Contains("MaturityTo")) { MaturityDate = Today; } }
/// <summary> /// Respond to a remove biomass event. /// </summary> internal void OnRemoveBiomass(double removeBiomPheno) { string existingStage = CurrentStageName; if (RewindDueToBiomassRemoved != null) { FractionBiomassRemoved = removeBiomPheno; // The RewindDueToBiomassRemoved function will use this. double ttCritical = TTInAboveGroundPhase; double removeFractPheno = RewindDueToBiomassRemoved.Value; double removeTTPheno = ttCritical * removeFractPheno; string msg; msg = "Phenology change:-\r\n"; msg += " Fraction DM removed = " + removeBiomPheno.ToString() + "\r\n"; msg += " Fraction TT removed = " + removeFractPheno.ToString() + "\r\n"; msg += " Critical TT = " + ttCritical.ToString() + "\r\n"; msg += " Remove TT = " + removeTTPheno.ToString() + "\r\n"; double ttRemaining = removeTTPheno; for (int i = Phases.Count - 1; i >= 0; i--) { Phase Phase = Phases[i]; if (Phase.TTinPhase > 0) { double ttCurrentPhase = Phase.TTinPhase; if (ttRemaining > ttCurrentPhase) { Phase.ResetPhase(); ttRemaining -= ttCurrentPhase; CurrentPhaseIndex -= 1; if (CurrentPhaseIndex < 4) //FIXME - hack to stop onEmergence being fired which initialises biomass parts { CurrentPhaseIndex = 4; break; } } else { Phase.Add(-ttRemaining); // Return fraction of thermal time we are through the current // phenological phase (0-1) //double frac = Phase.FractionComplete; //if (frac > 0.0 && frac < 1.0) // Don't skip out of this stage - some have very low targets, eg 1.0 in "maturity" // currentStage = frac + floor(currentStage); break; } } else { // phase is empty - not interested in it } } Stage = (CurrentPhaseIndex + 1) + CurrentPhase.FractionComplete; if (existingStage != CurrentStageName) { PhaseChangedType PhaseChangedData = new PhaseChangedType(); PhaseChangedData.OldPhaseName = existingStage; PhaseChangedData.NewPhaseName = CurrentPhase.Name; PhaseChanged.Invoke(PhaseChangedData); MyPaddock.Publish(CurrentPhase.Start); } } }