/// <summary> /// Исследование характеристик работы решателя одномерных задач /// </summary> private static void SolverTask1DTests() { // Задаём дифференциальный оператор var op = new DerivativeOperator1D3P(); op.Kim1 = -1m / (2m * 0.5m); op.Ki = 2m; op.Kip1 = 1m / (2m * 0.5m); // Создаём одномерную расчетную область var raschOblast1D = new Grid1D(1.5m, 11, AxisEnum.X); // Создаём исследуемый объект var lineSegment = new GeometryPrimitive1DLineSegment(new Coordinate1D(0m), 0.5m); var raschObjectGeometry1D = new Geometry1D(); var geometryElement = new GeometryElement1D(new Coordinate1D(0.5m)); geometryElement.AddGeometryPrimitive(lineSegment); raschObjectGeometry1D.AddGeometryElement(geometryElement); var gridWithGeometryPrecalculated1D = new GridWithGeometryPreCalculated1D(raschOblast1D, raschObjectGeometry1D); var nodeSet1D = gridWithGeometryPrecalculated1D.NodeSet1D; // Создаём задачу var task = new SolverTask1D(); task.NodeSet1D = nodeSet1D; SolverResult result = Solver.Calculate(task); }
/// <summary> /// Добавляет слои из объекта геометрии /// </summary> /// <param name="geometry">Объект Geometry</param> private void InsertGridLayersFromGeometry(Geometry1D geometry) { if (geometry == null) { return; } GridLayers1D gridLayers1D = geometry.GetGridLayers1D; GridLayers1D.Merge(gridLayers1D); }
/// <summary> /// Генерирует наборы слоёв из переданных объектов /// сетки и геометрии /// </summary> /// <param name="grid">Объект Grid</param> /// <param name="geometry">Объект Geometry</param> private void GenerateLayersFromGridAndGeometry(Grid1D grid, Geometry1D geometry) { InsertGridLayersFromGrid(grid); InsertGridLayersFromGeometry(geometry); }
public GridWithGeometryPreCalculated1D(Grid1D grid, Geometry1D geometry) { GenerateLayersFromGridAndGeometry(grid, geometry); CalculateGridLayers1DParamaters(); NodeSet1D = (NodeSet1D)GenerateNodeSetFromGridLayersAndGeometry(GridLayers1D, geometry); }