public Problem(List <Area> areas, IterationProcess iterationProcess)
 {
     this.Areas            = areas;
     this.IterationProcess = iterationProcess;
     boundaryOutputPoints  = new List <BoundaryOutputPoint>();
     timeOutputPoints      = new List <double>();
     domainOutputPoints    = new List <RealPoint>();
 }
        public static ConfigurationData MapMaterialProperties(XElement xml, IterationProcess iterationProcess)
        {
            var cd = xml.Elements(materialPropertiesElementName).First();

            var diffusionCoefficientXElement      = cd.Element(diffusionCoefficientElementName);
            var diffusionCoefficient              = diffusionCoefficientXElement.Value.Replace(".", ",");
            var timeDependentDiffusionCoefficient = diffusionCoefficient.Contains('T');//diffusionCoefficientXElement.Attribute(temperatureDependentAttributeName) != null ? bool.Parse(diffusionCoefficientXElement.Attribute(temperatureDependentAttributeName).Value) : false;

            var thermalConductivityXElement      = cd.Element(thermalConductivityElementName);
            var thermalConductivity              = thermalConductivityXElement.Value.Replace(".", ",");
            var timeDependentThermalConductivity = thermalConductivity.Contains('T');//thermalConductivityXElement.Attribute(temperatureDependentAttributeName) != null ? bool.Parse(thermalConductivityXElement.Attribute(temperatureDependentAttributeName).Value) : false;

            return(new ConfigurationData(diffusionCoefficient, timeDependentDiffusionCoefficient, thermalConductivity, timeDependentThermalConductivity, iterationProcess));
        }
        public static List <Area> MapAreas(XDocument xml, IterationProcess iterationProcess)
        {
            var areas    = xml.Root.Descendants(areasElementName);
            var AreaList = new List <Area>();
            int Index    = 0;

            foreach (var area in areas.Elements())
            {
                var configurationData = MapMaterialProperties(area, iterationProcess);
                AreaList.Add(MapArea(Index++, area, configurationData));
            }

            return(AreaList);
        }
        private static List <double> MapTimeOutputPoints(XDocument xml, IterationProcess iterationProcess)
        {
            var XtimeOutput            = xml.Root.Element(outputElementName).Element(timeOutputElementName);
            var timeOutputPoints       = new List <double>();
            var XtimeIntervalAttribute = XtimeOutput.Attribute(timeIntervalAttributeName);

            if (XtimeIntervalAttribute != null)
            {
                var interval = double.Parse(XtimeIntervalAttribute.Value.Replace(".", ","));
                for (decimal i = Convert.ToDecimal(interval); i <= Decimal.Multiply(Convert.ToDecimal(iterationProcess.TimeStep), Convert.ToDecimal(iterationProcess.NumberOfIterations)); i += Convert.ToDecimal(interval))
                {
                    timeOutputPoints.Add(Convert.ToDouble(i));
                }
            }
            else
            {
                foreach (var Xtime in XtimeOutput.Attribute(timeAttributeName).Value.Split('|'))
                {
                    timeOutputPoints.Add(double.Parse(Xtime.Replace(".", ",")));
                }
            }

            return(timeOutputPoints);
        }