1 // Copyright (C) 2007-2020 CEA/DEN, EDF R&D
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, or (at your option) any later version.
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.
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
17 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
19 // Author : Anthony Geay (CEA/DEN)
21 #ifndef __MEDCOUPLINGBASICSTEST_HXX__
22 #define __MEDCOUPLINGBASICSTEST_HXX__
24 #include <cppunit/extensions/HelperMacros.h>
32 class DataArrayDouble;
33 class MEDCouplingUMesh;
34 class MEDCouplingFieldDouble;
35 class MEDCouplingMultiFields;
37 class MEDCouplingBasicsTest : public CppUnit::TestFixture
40 static MEDCouplingUMesh *build3DSourceMesh_2();
41 static MEDCouplingUMesh *build3DTargetMesh_2();
42 static MEDCouplingUMesh *build1DTargetMesh_1();
43 static MEDCouplingUMesh *build2DSourceMesh_1();
44 static MEDCouplingUMesh *build2DTargetMesh_1();
45 static MEDCouplingUMesh *build2DTargetMeshPerm_1();
46 static MEDCouplingUMesh *build2DTargetMesh_2();
47 static MEDCouplingUMesh *buildCU1DMesh_U();
48 static MEDCouplingUMesh *buildCU2DMesh_U();
49 static MEDCouplingUMesh *buildCU3DMesh_U();
50 static MEDCouplingUMesh *build3DSurfSourceMesh_1();
51 static MEDCouplingUMesh *build3DSurfSourceMesh_2();
52 static MEDCouplingUMesh *build3DSurfTargetMesh_1();
53 static MEDCouplingUMesh *build3DSurfTargetMeshPerm_1();
54 static MEDCouplingUMesh *build3DSurfTargetMesh_2();
55 static MEDCouplingUMesh *build3DSourceMesh_1();
56 static MEDCouplingUMesh *build3DTargetMesh_1();
57 static MEDCouplingUMesh *build2DTargetMeshMergeNode_1();
58 static MEDCouplingUMesh *build3DTargetMeshMergeNode_1();
59 static MEDCouplingUMesh *build3DExtrudedUMesh_1(MEDCouplingUMesh *&mesh2D);
60 static void build3DExtrudedUMesh_2(MEDCouplingUMesh *&meshN, MEDCouplingUMesh *&meshTT, MEDCouplingUMesh *&meshTF);
61 static MEDCouplingUMesh *build2DTargetMeshMerged_1();
62 static MEDCouplingUMesh *build2DCurveMesh(double dx, double dy);
63 static MEDCouplingUMesh *build1DMesh(double dx);
64 static MEDCouplingUMesh *build1DSourceMesh_2();
65 static MEDCouplingUMesh *build1DTargetMesh_2();
66 static MEDCouplingUMesh *build2DCurveSourceMesh_2();
67 static MEDCouplingUMesh *build2DCurveTargetMesh_2();
68 static MEDCouplingUMesh *build1DTargetMesh_3();
69 static MEDCouplingUMesh *build2DCurveTargetMesh_3();
70 static MEDCouplingUMesh *build2DTargetMesh_3();
71 static MEDCouplingUMesh *build3DTargetMesh_3();
72 static MEDCouplingUMesh *build2DTargetMesh_4();
73 static MEDCouplingUMesh *build1DMultiTypes_1();
74 static MEDCouplingUMesh *build2DMultiTypes_1();
75 static MEDCouplingUMesh *build3DMultiTypes_1();
76 static MEDCouplingUMesh *buildHexa8Mesh_1();
77 static MEDCouplingUMesh *buildPointe_1(MEDCouplingUMesh *&m1);
79 static MEDCouplingUMesh *build2D1DSourceMesh();
80 static MEDCouplingUMesh *build2D1DTargetMesh();
81 static MEDCouplingUMesh *build2D1DSegSourceMesh(const double shiftX = 0.,
82 const double inclinationX = 0.);
83 static MEDCouplingUMesh *build2D1DQuadTargetMesh(const double inclinaisonX = 0.);
84 static MEDCouplingUMesh *build2D1DTriTargetMesh(const double inclinaisonX = 0.);
85 static MEDCouplingUMesh *build3D2DSourceMesh();
86 static MEDCouplingUMesh *build3D2DTargetMesh();
87 static MEDCouplingUMesh* build3D2DQuadSourceMesh(const double shiftX = 0.,
88 const double inclinationX = 0.);
89 static MEDCouplingUMesh* build3D2DTriSourceMesh(const double shiftX = 0.,
90 const double inclinationX = 0.);
91 static MEDCouplingUMesh* build3D2DTetraTargetMesh(const double inclinaisonX = 0.);
92 static MEDCouplingUMesh* build3D2DHexaTargetMesh(const double inclinaisonX = 0.);
94 static DataArrayDouble *buildCoordsForMultiTypes_1();
95 static MEDCouplingMultiFields *buildMultiFields_1();
96 static std::vector<MEDCouplingFieldDouble *> buildMultiFields_2();
97 static double sumAll(const std::vector< std::map<mcIdType,double> >& matrix);
99 static int countNonZero(const std::vector< std::map<mcIdType,double> >& matrix);
101 static void test2D1DMeshesIntersection(MEDCouplingUMesh *sourceMesh,
102 MEDCouplingUMesh *targetMesh,
103 const double correctSurf,
104 const int correctDuplicateFacesNbr,
105 const int correctTotalIntersectFacesNbr = -1);
106 static void test3D2DMeshesIntersection(MEDCouplingUMesh *sourceMesh,
107 MEDCouplingUMesh *targetMesh,
108 const double correctSurf,
109 const int correctDuplicateFacesNbr,
110 const int correctTotalIntersectFacesNbr = -1);