public void ApplySolverSettings(IField field = null) { IKernel.SetOptionNumber("Mesh.Algorithm", (int)MeshingAlgorithm); IKernel.SetOptionNumber("Mesh.ElementOrder", ElementOrder); IKernel.SetOptionNumber("Mesh.MinimumElementsPerTwoPi", MinimumElementsPerTwoPi); IKernel.SetOptionNumber("Mesh.CharacteristicLengthMin", CharacteristicLengthMin); IKernel.SetOptionNumber("Mesh.CharacteristicLengthMax", CharacteristicLengthMax); if (ElementOrder != 1) { IKernel.SetOptionNumber("Mesh.HighOrderOptimize", HighOrderOptimize); IKernel.SetOptionNumber("Mesh.HighOrderPassMax", HighOrderPassMax); } if (field != null) { field.ApplyField(); IKernel.IMeshingKernel.IBuilder.SetMeshFieldAsBackgroundMesh(field.Tag); IKernel.SetOptionNumber("Mesh.CharacteristicLengthFromCurvature", 0); IKernel.SetOptionNumber("Mesh.CharacteristicLengthFromPoints", 0); IKernel.SetOptionNumber("Mesh.CharacteristicLengthExtendFromBoundary", 0); } else { IKernel.SetOptionNumber("Mesh.CharacteristicLengthExtendFromBoundary", 1); if (CharacteristicLengthFromCurvature) { IKernel.SetOptionNumber("Mesh.CharacteristicLengthFromPoints", 0); IKernel.SetOptionNumber("Mesh.CharacteristicLengthFromCurvature", 1); } else { IKernel.SetOptionNumber("Mesh.CharacteristicLengthFromCurvature", 0); IKernel.SetOptionNumber("Mesh.CharacteristicLengthFromPoints", 1); } } IKernel.SetOptionNumber("Mesh.OptimizeThreshold", OptimizeThreshold); IKernel.SetOptionNumber("Mesh.QualityType", QualityType); IKernel.SetOptionNumber("Mesh.OptimizeNetgen", OptimizationMethod); if (RecombineAll) { IKernel.SetOptionNumber("Mesh.RecombinationAlgorithm", (int)RecombinationAlgorithm); IKernel.SetOptionNumber("Mesh.RecombineAll", 1); } else { IKernel.SetOptionNumber("Mesh.RecombineAll", 0); } }
public void ApplySolverSettings(IField field = null) { IKernel.SetOptionNumber("Mesh.Algorithm", MeshingAlgorithm); IKernel.SetOptionNumber("Mesh.ElementOrder", ElementOrder); IKernel.SetOptionNumber("Mesh.MinimumElementsPerTwoPi", MinimumElementsPerTwoPi); IKernel.SetOptionNumber("Mesh.CharacteristicLengthMin", CharacteristicLengthMin); IKernel.SetOptionNumber("Mesh.CharacteristicLengthMax", CharacteristicLengthMax); if (ElementOrder != 1) { IKernel.SetOptionNumber("Mesh.HighOrderOptimize", HighOrderOptimize); IKernel.SetOptionNumber("Mesh.HighOrderPassMax", HighOrderPassMax); IKernel.SetOptionNumber("Mesh.SecondOrderIncomplete", Convert.ToInt32(SecondOrderIncomplete)); } if (field != null) { field.ApplyField(); IKernel.IMeshingKernel.IBuilder.SetMeshFieldAsBackgroundMesh(field.Tag); IKernel.SetOptionNumber("Mesh.CharacteristicLengthFromCurvature", 0); IKernel.SetOptionNumber("Mesh.CharacteristicLengthFromPoints", 0); IKernel.SetOptionNumber("Mesh.CharacteristicLengthExtendFromBoundary", 0); } else { IKernel.SetOptionNumber("Mesh.CharacteristicLengthExtendFromBoundary", 1); if (CharacteristicLengthFromCurvature) { IKernel.SetOptionNumber("Mesh.CharacteristicLengthFromPoints", 0); IKernel.SetOptionNumber("Mesh.CharacteristicLengthFromCurvature", 1); } else { IKernel.SetOptionNumber("Mesh.CharacteristicLengthFromCurvature", 0); IKernel.SetOptionNumber("Mesh.CharacteristicLengthFromPoints", 1); } } if (RecombineAll) { IKernel.SetOptionNumber("Mesh.RecombinationAlgorithm", (int)RecombinationAlgorithm); IKernel.SetOptionNumber("Mesh.RecombineOptimizeTopology", OptimizationSteps); IKernel.SetOptionNumber("Mesh.RecombineAll", 1); } else { IKernel.SetOptionNumber("Mesh.RecombineAll", 0); } if (Subdivide) { IKernel.SetOptionNumber("Mesh.SubdivisionAlgorithm", SubdivisionAlgorithm); } else { IKernel.SetOptionNumber("Mesh.SubdivisionAlgorithm", 0); } IKernel.SetOptionNumber("Mesh.Smoothing", OptimizationSteps); }