Salome HOME
Merge from V6_main 01/04/2013
[plugins/ghs3dplugin.git] / src / GHS3DPlugin / GHS3DPlugin_Hypothesis_i.hxx
1 // Copyright (C) 2004-2013  CEA/DEN, EDF R&D
2 //
3 // This library is free software; you can redistribute it and/or
4 // modify it under the terms of the GNU Lesser General Public
5 // License as published by the Free Software Foundation; either
6 // version 2.1 of the License.
7 //
8 // This library is distributed in the hope that it will be useful,
9 // but WITHOUT ANY WARRANTY; without even the implied warranty of
10 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
11 // Lesser General Public License for more details.
12 //
13 // You should have received a copy of the GNU Lesser General Public
14 // License along with this library; if not, write to the Free Software
15 // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
16 //
17 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
18 //
19
20 //  GHS3DPlugin : C++ implementation
21 // File      : GHS3DPlugin_Hypothesis_i.hxx
22 // Date      : 03/04/2006
23 // Project   : SALOME
24 //
25 #ifndef _GHS3DPlugin_Hypothesis_i_HXX_
26 #define _GHS3DPlugin_Hypothesis_i_HXX_
27
28 #include "GHS3DPlugin_Defs.hxx"
29
30 #include <SALOMEconfig.h>
31 #include CORBA_SERVER_HEADER(GHS3DPlugin_Algorithm)
32
33 #include "SMESH_Hypothesis_i.hxx"
34 #include "SMESH_Mesh_i.hxx"
35 #include "GHS3DPlugin_Hypothesis.hxx"
36
37 class SMESH_Gen;
38
39 // GHS3DPlugin parameters hypothesis
40
41 class GHS3DPLUGIN_EXPORT GHS3DPlugin_Hypothesis_i:
42   public virtual POA_GHS3DPlugin::GHS3DPlugin_Hypothesis,
43   public virtual SMESH_Hypothesis_i
44 {
45  public:
46   // Constructor
47   GHS3DPlugin_Hypothesis_i (PortableServer::POA_ptr thePOA,
48                             int                     theStudyId,
49                             ::SMESH_Gen*            theGenImpl);
50   // Destructor
51   virtual ~GHS3DPlugin_Hypothesis_i();
52
53   /*!
54    * To mesh "holes" in a solid or not. Default is to mesh.
55    */
56   void SetToMeshHoles(CORBA::Boolean toMesh);
57   CORBA::Boolean GetToMeshHoles();
58   /*!
59    * Maximal size of memory to be used by the algorithm (in Megabytes)
60    */
61   void SetMaximumMemory(CORBA::Short MB) throw ( SALOME::SALOME_Exception );
62   CORBA::Short GetMaximumMemory();
63   /*!
64    * Initial size of memory to be used by the algorithm (in Megabytes) in
65    * automatic memory adjustment mode. Default is zero
66    */
67   void SetInitialMemory(CORBA::Short MB) throw ( SALOME::SALOME_Exception );
68   CORBA::Short GetInitialMemory();
69   /*!
70    * Optimization level: 0-none, 1-light, 2-medium, 3-strong. Default is medium
71    */
72   void SetOptimizationLevel(CORBA::Short level) throw ( SALOME::SALOME_Exception );
73   CORBA::Short GetOptimizationLevel();
74   /*!
75    * Path to working directory
76    */
77   void SetWorkingDirectory(const char* path) throw ( SALOME::SALOME_Exception );
78   char* GetWorkingDirectory();
79   /*!
80    * To keep working files or remove them. Log file remains in case of errors anyway.
81    */
82   void SetKeepFiles(CORBA::Boolean toKeep);
83   CORBA::Boolean GetKeepFiles();
84   /*!
85    * Verbose level [0-10]
86    *  0 - no standard output,
87    *  2 - prints the data, quality statistics of the skin and final meshes and
88    *     indicates when the final mesh is being saved. In addition the software
89    *     gives indication regarding the CPU time.
90    * 10 - same as 2 plus the main steps in the computation, quality statistics
91    *     histogram of the skin mesh, quality statistics histogram together with
92    *     the characteristics of the final mesh.
93    */
94   void SetVerboseLevel(CORBA::Short level) throw ( SALOME::SALOME_Exception );
95   CORBA::Short GetVerboseLevel();
96   /*!
97    * To create new nodes
98    */
99   void SetToCreateNewNodes(CORBA::Boolean toCreate);
100   CORBA::Boolean GetToCreateNewNodes();
101   /*!
102    * To use boundary recovery version which tries to create mesh on a very poor
103    * quality surface mesh
104    */
105   void SetToUseBoundaryRecoveryVersion(CORBA::Boolean toUse);
106   CORBA::Boolean GetToUseBoundaryRecoveryVersion();
107   /*!
108    * Applies finite-element correction by replacing overconstrained elements where
109    * it is possible. The process is cutting first the overconstrained edges and
110    * second the overconstrained facets. This insure that no edges have two boundary
111    * vertices and that no facets have three boundary vertices.
112    */
113   void SetFEMCorrection(CORBA::Boolean toUseFem);
114   CORBA::Boolean GetFEMCorrection();
115   /*!
116    * To removes initial central point.
117    */
118   void SetToRemoveCentralPoint(CORBA::Boolean toRemove);
119   CORBA::Boolean GetToRemoveCentralPoint();
120   /*!
121    * To set hiden/undocumented/advanced options
122    */
123   void SetTextOption(const char* option);
124   char* GetTextOption();
125   /*!
126   * To define the volumic gradation
127   */
128   void SetGradation(CORBA::Double gradation);
129   CORBA::Double GetGradation();
130   /*!
131    * To set an enforced vertex
132    */
133   bool p_SetEnforcedVertex(CORBA::Double size, CORBA::Double x = 0, CORBA::Double y = 0, CORBA::Double z = 0,
134                           const char* theVertexName = "", const char* theVertexEntry = "", const char* theGroupName = "",
135                           CORBA::Boolean isCompound = false) 
136     throw (SALOME::SALOME_Exception);
137   bool SetEnforcedVertex(CORBA::Double x, CORBA::Double y, CORBA::Double z, CORBA::Double size) throw (SALOME::SALOME_Exception);
138   bool SetEnforcedVertexNamed(CORBA::Double x, CORBA::Double y, CORBA::Double z, CORBA::Double size, const char* theVertexName) throw (SALOME::SALOME_Exception);
139   bool SetEnforcedVertexWithGroup(CORBA::Double x, CORBA::Double y, CORBA::Double z, CORBA::Double size, const char* theGroupName) throw (SALOME::SALOME_Exception);
140   bool SetEnforcedVertexNamedWithGroup(CORBA::Double x, CORBA::Double y, CORBA::Double z, CORBA::Double size, const char* theVertexName, const char* theGroupName) throw (SALOME::SALOME_Exception);
141   bool SetEnforcedVertexGeom(GEOM::GEOM_Object_ptr theVertex, CORBA::Double size) throw (SALOME::SALOME_Exception);
142   bool SetEnforcedVertexGeomWithGroup(GEOM::GEOM_Object_ptr theVertex, CORBA::Double size, const char* theGroupName) throw (SALOME::SALOME_Exception);
143   CORBA::Double GetEnforcedVertex(CORBA::Double x, CORBA::Double y, CORBA::Double z) throw (SALOME::SALOME_Exception);
144   CORBA::Double GetEnforcedVertexGeom(GEOM::GEOM_Object_ptr theVertex) throw (SALOME::SALOME_Exception);
145   bool RemoveEnforcedVertex(CORBA::Double x, CORBA::Double y, CORBA::Double z) throw (SALOME::SALOME_Exception);
146   bool RemoveEnforcedVertexGeom(GEOM::GEOM_Object_ptr theVertex) throw (SALOME::SALOME_Exception);
147   GHS3DPlugin::GHS3DEnforcedVertexList* GetEnforcedVertices();
148   void ClearEnforcedVertices();
149   /*!
150    * To set an enforced mesh
151    */  
152   bool p_SetEnforcedMesh(SMESH::SMESH_IDSource_ptr theSource, SMESH::ElementType elementType, const char* theName="", const char* theGroupName="") throw (SALOME::SALOME_Exception);
153   bool SetEnforcedMesh(SMESH::SMESH_IDSource_ptr theSource, SMESH::ElementType elementType) throw (SALOME::SALOME_Exception);
154   bool SetEnforcedMeshWithGroup(SMESH::SMESH_IDSource_ptr theSource, SMESH::ElementType elementType, const char* theGroupName) throw (SALOME::SALOME_Exception);
155
156   /* OBSOLETE FUNCTIONS */
157   bool SetEnforcedMeshSize(SMESH::SMESH_IDSource_ptr theSource, SMESH::ElementType elementType, double size) throw (SALOME::SALOME_Exception);
158   bool SetEnforcedMeshSizeWithGroup(SMESH::SMESH_IDSource_ptr theSource, SMESH::ElementType elementType, double size, const char* theGroupName) throw (SALOME::SALOME_Exception);
159   /* OBSOLETE FUNCTIONS */
160
161   GHS3DPlugin::GHS3DEnforcedMeshList* GetEnforcedMeshes();
162   void ClearEnforcedMeshes();
163
164   // Get implementation
165   ::GHS3DPlugin_Hypothesis* GetImpl();
166   
167   // Verify whether hypothesis supports given entity type 
168   CORBA::Boolean IsDimSupported( SMESH::Dimension type );
169   
170 };
171
172 #endif