public double GetResultsArea(RealPoint point)
        {
            double result = 0.0;

            foreach (var area in this.Areas)
            {
                foreach (var segmentI in area.Segments)
                {
                    int i = 0;
                    foreach (var collPointI in segmentI.CollocationPoints)
                    {
                        var functionT = Function_T.CalculateAreaValue(point, segmentI, collPointI, area.configurationData);
                        var functionq = Function_q.CalculateAreaValue(point, segmentI, collPointI, area.configurationData);

                        result += -functionq * segmentI.TemperatureBoundaryCondition.BoundaryConditionVector[i] + functionT * segmentI.HeatFluxBoundaryCondition.BoundaryConditionVector[i];
                        i++;
                    }
                }
            }
            foreach (var area in this.Areas)
            {
                var initial = InitialCondition.CalculateValue(area, point);
                result += initial;

                if (area.configurationData.addHeatSource)
                {
                    var subAreaIntegrationHelper = new SubAreaIntegrationHelper(4, area.Surfaces.Select(x => x.SurfaceShape).ToList());
                    result += HeatSource.CalculateValue(area, point, subAreaIntegrationHelper);
                }
            }

            return(result);
        }
        public void CalculateSurfaceIntegrationPointsConstants()
        {
            //double denominator1 = InitialCondition.denominator1(configurationData);
            //double denominator2 = InitialCondition.denominator2(configurationData);
            foreach (var area in this.Areas)
            {
                foreach (var surface in area.Surfaces)
                {
                    Parallel.ForEach(surface.InitialConditionSurfaceIntegrationPoints, (surfaceIntegrationPoint) =>
                    {
                        var sur = surfaceIntegrationPoint;
                        foreach (var area1 in this.Areas)
                        {
                            foreach (var segmentI in area1.Segments)
                            {
                                foreach (var collPointI in segmentI.CollocationPoints)
                                {
                                    surfaceIntegrationPoint.FunctionTConstantValue.Add(Function_T.CalculateAreaValue(surfaceIntegrationPoint.RealPosition, segmentI, collPointI, area1.configurationData));
                                    surfaceIntegrationPoint.FunctionqConstantValue.Add(Function_q.CalculateAreaValue(surfaceIntegrationPoint.RealPosition, segmentI, collPointI, area1.configurationData));
                                }
                            }
                        }

                        //To w przypadku przechowywania parametrów
                        //foreach (var innerSurface in this.Surfaces)
                        //{
                        //    foreach (var innerSurfaceIntegrationPoint in innerSurface.SurfaceIntegrationPoints)
                        //    {
                        //        surfaceIntegrationPoint.InitialConditionConstantValues.Add(InitialCondition.CalculateSiglePointFunctionValue(surfaceIntegrationPoint.RealPosition, denominator1, denominator2, innerSurfaceIntegrationPoint));
                        //    }
                        //}

                        if (area.configurationData.addHeatSource)
                        {
                            if (!area.configurationData.isHeatSourceTimeDependent)
                            {
                                var subAreaIntegrationHelper = new SubAreaIntegrationHelper(4, area.Surfaces.Select(x => x.SurfaceShape).ToList());
                                surfaceIntegrationPoint.HeatSourceConstantValue = HeatSource.CalculateValue(area, surfaceIntegrationPoint.RealPosition, subAreaIntegrationHelper);
                            }
                        }
                    });
                }
            }
        }