/// <summary> /// Rename MainStemNodeAppearanceRate to Phyllochron AND /// MainStemFinalNodeNumber to FinalLeafNumber in Structure /// </summary> /// <param name="node">The node to modifiy</param> /// <param name="fileName">The name of the .apsimx file</param> private static void UpgradeToVersion12(XmlNode node, string fileName) { APSIMFileConverterUtilities.RenamePMFFunction(node, "Structure", "MainStemNodeAppearanceRate", "Phyllochron"); APSIMFileConverterUtilities.RenameVariable(node, ".MainStemNodeAppearanceRate", ".Phyllochron"); APSIMFileConverterUtilities.RenamePMFFunction(node, "Structure", "MainStemFinalNodeNumber", "FinalLeafNumber"); APSIMFileConverterUtilities.RenameVariable(node, ".MainStemFinalNodeNumber", ".FinalLeafNumber"); }
/// <summary> /// Upgrades to version 22. Alter MovingAverage Function /// XProperty values. /// </summary> /// <param name="node">The node to upgrade.</param> /// <param name="fileName">The name of the .apsimx file</param> private static void UpgradeToVersion22(XmlNode node, string fileName) { string StartStage = ""; foreach (XmlNode EmergePhase in XmlUtilities.FindAllRecursivelyByType(node, "EmergingPhase")) { StartStage = XmlUtilities.Value(EmergePhase, "End"); } APSIMFileConverterUtilities.RenameVariable(node, "InitialValue", "StageToStartMovingAverage"); foreach (XmlNode MovingAverageFunction in XmlUtilities.FindAllRecursivelyByType(node, "MovingAverageFunction")) { XmlUtilities.SetValue(MovingAverageFunction, "StageToStartMovingAverage", StartStage); } }
/// <summary> /// Rename Plant15 to Plant. /// </summary> /// <param name="node">The node to modifiy</param> /// <param name="fileName">The name of the .apsimx file</param> private static void UpgradeToVersion13(XmlNode node, string fileName) { APSIMFileConverterUtilities.RenameNode(node, "Plant15", "Plant"); APSIMFileConverterUtilities.RenameVariable(node, "using Models.PMF.OldPlant;", "using Models.PMF;"); APSIMFileConverterUtilities.RenameVariable(node, "Plant15", "Plant"); foreach (XmlNode manager in XmlUtilities.FindAllRecursivelyByType(node, "manager")) { APSIMFileConverterUtilities.SearchReplaceManagerCodeUsingRegEx(manager, @"(\w+).plant.status *== *\042out\042", @"!$1.IsAlive", null); // /042 is a " } foreach (XmlNode simulationNode in XmlUtilities.FindAllRecursivelyByType(node, "Simulation")) { List <XmlNode> plantModels = XmlUtilities.FindAllRecursivelyByType(simulationNode, "Plant"); plantModels.RemoveAll(p => p.Name == "plant"); // remove lowercase plant nodes - these are in sugarcane if (plantModels.Count > 0) { XmlUtilities.EnsureNodeExists(simulationNode, "SoilArbitrator"); XmlUtilities.EnsureNodeExists(plantModels[0].ParentNode, "MicroClimate"); } } }
/// <summary> /// Rename NonStructural to Storage in Biomass organs /// </summary> /// <param name="node">The node to modifiy</param> /// <param name="fileName">The name of the .apsimx file</param> private static void UpgradeToVersion11(XmlNode node, string fileName) { APSIMFileConverterUtilities.RenameVariable(node, ".NonStructural", ".Storage"); APSIMFileConverterUtilities.RenameVariable(node, ".NonStructuralDemand", ".StorageDemand"); APSIMFileConverterUtilities.RenameVariable(node, ".TotalNonStructuralDemand", ".TotalStorageDemand"); APSIMFileConverterUtilities.RenameVariable(node, ".NonStructuralAllocation", ".StorageAllocation"); APSIMFileConverterUtilities.RenameVariable(node, ".NonStructuralFraction", ".StorageFraction"); APSIMFileConverterUtilities.RenameVariable(node, ".NonStructuralWt", ".StorageWt"); APSIMFileConverterUtilities.RenameVariable(node, ".NonStructuralN", ".StorageN"); APSIMFileConverterUtilities.RenameVariable(node, ".NonStructuralNConc", ".StorageNConc"); APSIMFileConverterUtilities.RenameVariable(node, "NonStructuralFraction", "StorageFraction"); APSIMFileConverterUtilities.RenameVariable(node, "LeafStartNonStructuralNReallocationSupply", "LeafStartStorageFractionNReallocationSupply"); APSIMFileConverterUtilities.RenameVariable(node, "LeafStartNonStructuralNRetranslocationSupply", "LeafStartStorageNRetranslocationSupply"); APSIMFileConverterUtilities.RenameVariable(node, "LeafStartNonStructuralDMReallocationSupply", "LeafStartStorageDMReallocationSupply"); APSIMFileConverterUtilities.RenameVariable(node, "NonStructuralDMDemand", "StorageDMDemand"); APSIMFileConverterUtilities.RenameVariable(node, "NonStructuralNDemand", "StorageNDemand"); // renames APSIMFileConverterUtilities.RenamePMFFunction(node, "LeafCohortParameters", "NonStructuralFraction", "StorageFraction"); APSIMFileConverterUtilities.RenameNode(node, "NonStructuralNReallocated", "StorageNReallocated"); APSIMFileConverterUtilities.RenameNode(node, "NonStructuralWtReallocated", "StorageWtReallocated"); APSIMFileConverterUtilities.RenameNode(node, "NonStructuralNRetrasnlocated", "StorageNRetrasnlocated"); }