Esempio n. 1
0
        private void LoadOverrides(XmlNode xn, ParameterDataSetPtr datasetPtr)
        {
            var nodes = xn.SelectNodes("OverrideParameter");

            foreach (XmlNode node in nodes)
            {
                var overrideParam = new ParameterOverride();
                overrideParam.XMLNode = node.Attributes["Keyword"].Value;
                overrideParam.Active  = node.Attributes["Active"].Value == "true";
                if (RemapDictionary.ContainsKey(overrideParam.XMLNode))
                {
                    overrideParam.CodeName = RemapDictionary[overrideParam.XMLNode];
                }
                else
                {
                    throw new Exception($"Key {overrideParam.XMLNode} doesn't exist in Remap Dictioary");
                }
                var valuenode = node.SelectSingleNode("Value");
                if (valuenode != null)
                {
                    overrideParam.Value = valuenode.InnerText;
                }
                datasetPtr.Overrides.Add(overrideParam);
            }
        }
Esempio n. 2
0
 private HowLeakyInputs_Soil GenerateSoilInputs(HowLeakyInputs_Soil inputs, ParameterDataSetPtr soilData)
 {
     if (soilData != null)
     {
         if (inputs == null)
         {
             inputs = new HowLeakyInputs_Soil();
         }
         var properties = typeof(HowLeakyInputs_Soil).GetProperties().ToList();
         var errors     = LoadValues(soilData, inputs, properties);
         if (errors.Count > 0)
         {
             Errors.AddRange(errors);
         }
         return(inputs);
     }
     return(null);
 }
Esempio n. 3
0
        private ParameterDataSetPtr ExtractParameterSet(XmlNode xn, string elementname, Dictionary <string, ParameterDataSet> datasets)
        {
            var node = xn.SelectSingleNode(elementname);

            if (node != null)
            {
                var href     = node.Attributes["href"].Value;
                var filename = Path.GetFileName(href);
                var dataset  = datasets[filename];
                if (dataset != null)
                {
                    var datasetPtr = new ParameterDataSetPtr(dataset);
                    LoadOverrides(node, datasetPtr);
                    return(datasetPtr);
                }
            }
            return(null);
        }
Esempio n. 4
0
        private List <ParameterDataSetPtr> ExtractParameterSets(XmlNode xn, string elementname, Dictionary <string, ParameterDataSet> datasets)
        {
            var list = new List <ParameterDataSetPtr>();

            var nodes = xn.SelectNodes("*");

            foreach (XmlNode node in nodes)
            {
                if (node.Name.Contains(elementname))
                {
                    var href     = node.Attributes["href"].Value;
                    var filename = Path.GetFileName(href);
                    var dataset  = datasets[filename];
                    if (dataset != null)
                    {
                        var datasetPtr = new ParameterDataSetPtr(dataset);
                        LoadOverrides(node, datasetPtr);
                        list.Add(datasetPtr);
                    }
                }
            }
            return(list);
        }
Esempio n. 5
0
        private List <string> LoadValues(ParameterDataSetPtr source, object inputs, List <PropertyInfo> properties)
        {
            var list       = new List <string>();
            var parameters = source.DataSet.Parameters;
            var overrides  = source.Overrides;

            foreach (var parameter in parameters)
            {
                var property = properties.FirstOrDefault(x => x.Name == parameter.NameInCode);
                if (property != null)
                {
                    if (TryUpdateParm(inputs, property, parameter.Value) == false)
                    {
                        if (parameter.NameInCode != "PAWC" && parameter.NameInCode != "MaxDailyDrainVolume")
                        {
                            list.Add($"Could not load {parameter.NameInCode}  (type not defined)");
                        }
                    }
                }
                else
                {
                    if (parameter.NameInCode != "PAWC" && parameter.NameInCode != "MaxDailyDrainVolume" && parameter.NameInCode != "NitrateSourceData" && parameter.NameInCode != "WatStressForDeath" && parameter.NameInCode != "SoilNitrateTimeseries")
                    {
                        list.Add($"Could not FIND {parameter.NameInCode} parameter in input parameters (from {source.DataSet.SourceFileName})");
                    }
                }
            }

            foreach (var parameter in overrides)
            {
                if (String.IsNullOrEmpty(parameter.CodeName) == false)
                {
                    var property = properties.FirstOrDefault(x => x.Name == parameter.CodeName);
                    if (property != null)
                    {
                        if (TryUpdateParm(inputs, property, parameter.Value) == false)
                        {
                            list.Add($"Could not load override {property.Name}  (type not defined)");
                        }
                    }
                    else
                    {
                        list.Add($"Could not FIND {parameter.CodeName} override in input parameters");
                    }
                }
                else
                {
                    list.Add($"Override in Simulation {Index} has no name!!");
                }
            }

            //foreach (var property in properties)
            //{
            //    var param1=overrides.FirstOrDefault(x=>x.CodeName==property.Name);
            //    if(param1!=null)
            //    {
            //        if(TryUpdateParm(inputs,property,param1.Value)==false)
            //        {
            //            list.Add($"Could not load override {property.Name}  (type not defined)");
            //        }
            //    }
            //    else
            //    {
            //        var param2=parameters.FirstOrDefault(x=>x.NameInFile==property.Name||x.NameInCode==property.Name);
            //        if(param2!=null)
            //        {
            //            if(TryUpdateParm(inputs,property,param2.Value)==false)
            //            {
            //                list.Add($"Could not load {property.Name} value (type not defined)");
            //            }
            //        }
            //        else
            //        {
            //            list.Add($"Could not FIND {property.Name} parameter in datafile");
            //        }
            //    }
            //}
            return(list);
        }
Esempio n. 6
0
 private HowLeakyInputs_Nitrate GeneratNitrateInputs(HowLeakyInputs_Nitrate inputs, ParameterDataSetPtr nitrateData)
 {
     if (nitrateData != null)
     {
         if (inputs == null)
         {
             inputs = new HowLeakyInputs_Nitrate();
         }
         var properties = typeof(HowLeakyInputs_Nitrate).GetProperties().ToList();
         var errors     = LoadValues(nitrateData, inputs, properties);
         if (errors.Count > 0)
         {
             Errors.AddRange(errors);
         }
         return(inputs);
     }
     return(null);
 }
Esempio n. 7
0
 private HowLeakyInputs_Phosphorus GeneratePhosphorusInputs(HowLeakyInputs_Phosphorus inputs, ParameterDataSetPtr phosphorusData)
 {
     if (phosphorusData != null)
     {
         if (inputs == null)
         {
             inputs = new HowLeakyInputs_Phosphorus();
         }
         var properties = typeof(HowLeakyInputs_Phosphorus).GetProperties().ToList();
         var errors     = LoadValues(phosphorusData, inputs, properties);
         if (errors.Count > 0)
         {
             Errors.AddRange(errors);
         }
         return(inputs);
     }
     return(null);
 }
Esempio n. 8
0
        private HowLeakyInputs_Irrigation GenerateIrrigationInputs(HowLeakyInputs_Irrigation inputs, ParameterDataSetPtr irrigation)
        {
            if (irrigation != null)
            {
                if (inputs == null)
                {
                    inputs = new HowLeakyInputs_Irrigation();
                }

                var properties = typeof(HowLeakyInputs_Irrigation).GetProperties().ToList();
                var errors     = LoadValues(irrigation, inputs, properties);
                if (errors.Count > 0)
                {
                    Errors.AddRange(errors);
                }
                return(inputs);
            }
            return(null);
        }