Example #1
0
        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);
        }