internal static void TestSkylineSolverWithAmdReordering() { CantileverBeam benchmark = BuildCantileverBenchmark(); var solverBuilder = new SkylineSolver.Builder(); solverBuilder.DofOrderer = new DofOrderer( new NodeMajorDofOrderingStrategy(), AmdReordering.CreateWithCSparseAmd()); ISolver solver = solverBuilder.BuildSolver(benchmark.Model); RunAnalysisAndCheck(benchmark, solver); }
internal static void TestPcgJacobiSolverWithAmdReordering() { CantileverBeam benchmark = BuildCantileverBenchmark(); var solverBuilder = new PcgSolver.Builder(); //var pcgBuilder = new PcgAlgorithm.Builder(); //solverBuilder.PcgAlgorithm = pcgBuilder.Build(); solverBuilder.DofOrderer = new DofOrderer( new NodeMajorDofOrderingStrategy(), AmdReordering.CreateWithCSparseAmd()); PcgSolver solver = solverBuilder.BuildSolver(benchmark.Model); RunAnalysisAndCheck(benchmark, solver); }
public static void TestPropagation() { string meshPath = Directory.GetParent(Directory.GetCurrentDirectory()).Parent.Parent.FullName + @"\MGroup.XFEM.Tests\Resources\holes_4442dofs.msh"; //string propagationPath = @"C:\Users\Serafeim\Desktop\GRACM\Benchmark_Fillet\Propagation\crack_growth.txt"; //string plotPath = @"C:\Users\Serafeim\Desktop\GRACM\Benchmark_Fillet\Plots"; //string timingPath = @"C:\Users\Serafeim\Desktop\GRACM\Benchmark_Fillet\Timing"; double growthLength = 1.0; // mm. Must be sufficiently larger than the element size. var builder = new HolesBenchmark.Builder(meshPath, growthLength); builder.HeavisideEnrichmentTolerance = 0.12; // Usually should be in [1.5, 2.5). The J-integral radius must be large enough to at least include elements around // the element that contains the crack tip. However it must not be so large that an element intersected by the // J-integral contour is containes the previous crack tip. Thus the J-integral radius must be sufficiently smaller // than the crack growth length. builder.JintegralRadiusOverElementSize = 2.0; // If you modify the following two parameters significantly, then you will need to redefine which nodes are expected // to be enriched. builder.TipEnrichmentRadius = 0.5; builder.BC = HolesBenchmark.BoundaryConditions.BottomConstrainXDisplacementY_TopConstrainXDisplacementY; builder.MaxIterations = 12; //builder.LeftLsmPlotDirectory = plotLSM ? plotPathLeft : null; //builder.RightLsmPlotDirectory = plotLSM ? plotPathRight : null; // Run the benchmark HolesBenchmark benchmark = builder.BuildBenchmark(); benchmark.InitializeModel(); //SuiteSparseSolver solver = new SuiteSparseSolver.Builder().BuildSolver(benchmark.Model); var solverBuilder = new SkylineSolver.Builder(); solverBuilder.DofOrderer = new DofOrderer(new NodeMajorDofOrderingStrategy(), AmdReordering.CreateWithCSparseAmd()); SkylineSolver solver = solverBuilder.BuildSolver(benchmark.Model); benchmark.Analyze(solver); CheckCrackPropagationPath(benchmark); }