Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2026-09-27 09:18:08

0001 // Created on: 2016-04-07
0002 // Copyright (c) 2016 OPEN CASCADE SAS
0003 // Created by: Oleg AGASHIN
0004 //
0005 // This file is part of Open CASCADE Technology software library.
0006 //
0007 // This library is free software; you can redistribute it and/or modify it under
0008 // the terms of the GNU Lesser General Public License version 2.1 as published
0009 // by the Free Software Foundation, with special exception defined in the file
0010 // OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
0011 // distribution for complete text of the license and disclaimer of any warranty.
0012 //
0013 // Alternatively, this file may be used under the terms of Open CASCADE
0014 // commercial license or contractual agreement.
0015 
0016 #ifndef _IMeshTools_Parameters_HeaderFile
0017 #define _IMeshTools_Parameters_HeaderFile
0018 
0019 #include <IMeshTools_MeshAlgoType.hxx>
0020 #include <Precision.hxx>
0021 
0022 //! Structure storing meshing parameters
0023 struct IMeshTools_Parameters
0024 {
0025 
0026   //! Default constructor
0027   IMeshTools_Parameters()
0028       : MeshAlgo(IMeshTools_MeshAlgoType_DEFAULT),
0029         Angle(0.5),
0030         Deflection(0.001),
0031         AngleInterior(-1.0),
0032         DeflectionInterior(-1.0),
0033         MinSize(-1.0),
0034         InParallel(false),
0035         Relative(false),
0036         InternalVerticesMode(true),
0037         ControlSurfaceDeflection(true),
0038         EnableControlSurfaceDeflectionAllSurfaces(false),
0039         CleanModel(true),
0040         AdjustMinSize(false),
0041         ForceFaceDeflection(false),
0042         AllowQualityDecrease(false)
0043   {
0044   }
0045 
0046   //! Returns factor used to compute default value of MinSize
0047   //! (minimum mesh edge length) from deflection
0048   static double RelMinSize() { return 0.1; }
0049 
0050   //! 2D Delaunay triangulation algorithm factory to use
0051   IMeshTools_MeshAlgoType MeshAlgo;
0052 
0053   //! Angular deflection used to tessellate the boundary edges
0054   double Angle;
0055 
0056   //! Linear deflection used to tessellate the boundary edges
0057   double Deflection;
0058 
0059   //! Angular deflection used to tessellate the face interior
0060   double AngleInterior;
0061 
0062   //! Linear deflection used to tessellate the face interior
0063   double DeflectionInterior;
0064 
0065   //! Minimum size parameter limiting size of triangle's edges to prevent
0066   //! sinking into amplification in case of distorted curves and surfaces.
0067   double MinSize;
0068 
0069   //! Switches on/off multi-thread computation
0070   bool InParallel;
0071 
0072   //! Switches on/off relative computation of edge tolerance
0073   //! If true, deflection used for the polygonalisation of each edge will be
0074   //! <defle> * Size of Edge. The deflection used for the faces will be the
0075   //! maximum deflection of their edges.
0076   bool Relative;
0077 
0078   //! Mode to take or not to take internal face vertices into account
0079   //! in triangulation process
0080   bool InternalVerticesMode;
0081 
0082   //! Parameter to check the deviation of triangulation and interior of
0083   //! the face
0084   bool ControlSurfaceDeflection;
0085 
0086   // Enables/disables check triggered by ControlSurfaceDeflection flag
0087   // for all types of surfaces including analytical.
0088   bool EnableControlSurfaceDeflectionAllSurfaces;
0089 
0090   //! Cleans temporary data model when algorithm is finished.
0091   bool CleanModel;
0092 
0093   //! Enables/disables local adjustment of min size depending on edge size.
0094   //! Disabled by default.
0095   bool AdjustMinSize;
0096 
0097   //! Enables/disables usage of shape tolerances for computing face deflection.
0098   //! Disabled by default.
0099   bool ForceFaceDeflection;
0100 
0101   //! Allows/forbids the decrease of the quality of the generated mesh
0102   //! over the existing one.
0103   bool AllowQualityDecrease;
0104 };
0105 
0106 #endif