SALOME - SMESH
Main Page
Data Structures
Files
File List
Globals
All
Data Structures
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Friends
Macros
StdMeshers_Quadrangle_2D.hxx
Go to the documentation of this file.
1
// Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE
2
//
3
// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
4
// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
5
//
6
// This library is free software; you can redistribute it and/or
7
// modify it under the terms of the GNU Lesser General Public
8
// License as published by the Free Software Foundation; either
9
// version 2.1 of the License.
10
//
11
// This library is distributed in the hope that it will be useful,
12
// but WITHOUT ANY WARRANTY; without even the implied warranty of
13
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14
// Lesser General Public License for more details.
15
//
16
// You should have received a copy of the GNU Lesser General Public
17
// License along with this library; if not, write to the Free Software
18
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
19
//
20
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
21
//
22
// SMESH SMESH : implementaion of SMESH idl descriptions
23
// File : StdMeshers_Quadrangle_2D.hxx
24
// Moved here from SMESH_Quadrangle_2D.hxx
25
// Author : Paul RASCLE, EDF
26
// Module : SMESH
27
// $Header$
28
//
29
#ifndef _SMESH_QUADRANGLE_2D_HXX_
30
#define _SMESH_QUADRANGLE_2D_HXX_
31
32
#include "
SMESH_StdMeshers.hxx
"
33
34
#include "
SMESH_2D_Algo.hxx
"
35
#include "
Utils_SALOME_Exception.hxx
"
36
37
class
SMESH_Mesh
;
38
class
SMESH_MesherHelper
;
39
class
StdMeshers_FaceSide
;
40
class
SMDS_MeshNode
;
41
struct
uvPtStruct
;
42
43
44
enum
TSideID
{
BOTTOM_SIDE
=0,
RIGHT_SIDE
,
TOP_SIDE
,
LEFT_SIDE
,
NB_SIDES
};
45
46
typedef
uvPtStruct
UVPtStruct
;
47
typedef
struct
faceQuadStruct
48
{
49
std::vector< StdMeshers_FaceSide*>
side
;
50
bool
isEdgeOut
[4];
// true, if an edge has more nodes, than the opposite
51
UVPtStruct
*
uv_grid
;
52
~faceQuadStruct
();
53
}
FaceQuadStruct
;
54
55
class
STDMESHERS_EXPORT
StdMeshers_Quadrangle_2D
:
public
SMESH_2D_Algo
56
{
57
public
:
58
StdMeshers_Quadrangle_2D
(
int
hypId,
int
studyId,
SMESH_Gen
* gen);
59
virtual
~
StdMeshers_Quadrangle_2D
();
60
61
virtual
bool
CheckHypothesis
(
SMESH_Mesh
& aMesh,
62
const
TopoDS_Shape
& aShape,
63
SMESH_Hypothesis::Hypothesis_Status
& aStatus);
64
65
virtual
bool
Compute
(
SMESH_Mesh
& aMesh,
66
const
TopoDS_Shape
& aShape);
67
68
virtual
bool
Evaluate
(
SMESH_Mesh
& aMesh,
const
TopoDS_Shape
& aShape,
69
MapShapeNbElems
& aResMap);
70
71
FaceQuadStruct
* CheckAnd2Dcompute(
SMESH_Mesh
& aMesh,
72
const
TopoDS_Shape
& aShape,
73
const
bool
CreateQuadratic);
74
75
protected
:
76
77
FaceQuadStruct
* CheckNbEdges(
SMESH_Mesh
& aMesh,
78
const
TopoDS_Shape
& aShape);
79
80
bool
CheckNbEdgesForEvaluate(
SMESH_Mesh
& aMesh,
81
const
TopoDS_Shape
& aShape,
82
MapShapeNbElems
& aResMap,
83
std::vector<int>& aNbNodes,
84
bool
& IsQuadratic);
85
86
bool
SetNormalizedGrid(
SMESH_Mesh
& aMesh,
87
const
TopoDS_Shape
& aShape,
88
FaceQuadStruct
*& quad);
89
90
void
SplitQuad(
SMESHDS_Mesh
*theMeshDS,
91
const
int
theFaceID,
92
const
SMDS_MeshNode
* theNode1,
93
const
SMDS_MeshNode
* theNode2,
94
const
SMDS_MeshNode
* theNode3,
95
const
SMDS_MeshNode
* theNode4);
96
100
bool
ComputeQuadPref(
SMESH_Mesh
& aMesh,
101
const
TopoDS_Shape
& aShape,
102
FaceQuadStruct
* quad);
103
104
bool
EvaluateQuadPref(
SMESH_Mesh
& aMesh,
105
const
TopoDS_Shape
& aShape,
106
std::vector<int>& aNbNodes,
107
MapShapeNbElems
& aResMap,
108
bool
IsQuadratic);
109
110
UVPtStruct
* LoadEdgePoints2(
SMESH_Mesh
& aMesh,
111
const
TopoDS_Face& F,
const
TopoDS_Edge& E,
112
bool
IsReverse);
113
114
UVPtStruct
* LoadEdgePoints(
SMESH_Mesh
& aMesh,
115
const
TopoDS_Face& F,
const
TopoDS_Edge& E,
116
double
first,
double
last);
117
118
UVPtStruct
* MakeEdgePoints(
SMESH_Mesh
& aMesh,
119
const
TopoDS_Face& F,
const
TopoDS_Edge& E,
120
double
first,
double
last,
int
nb_segm);
121
122
// true if QuadranglePreference hypothesis is assigned that forces
123
// construction of quadrangles if the number of nodes on opposite edges
124
// is not the same in the case where the global number of nodes on edges
125
// is even
126
bool
myQuadranglePreference
;
127
128
bool
myTrianglePreference
;
129
130
int
myTriaVertexID
;
131
132
SMESH_MesherHelper
*
myTool
;
// tool for working with quadratic elements
133
};
134
135
#endif
inc
StdMeshers_Quadrangle_2D.hxx
Generated by
1.8.3.1