Salome HOME
Initiating medtool
[modules/med.git] / src / medtool / src / MEDCoupling / Test / MEDCouplingBasicsTest.hxx
1 // Copyright (C) 2007-2015  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, or (at your option) any later version.
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 // Author : Anthony Geay (CEA/DEN)
20
21 #ifndef __MEDCOUPLINGBASICSTEST_HXX__
22 #define __MEDCOUPLINGBASICSTEST_HXX__
23
24 #include <cppunit/extensions/HelperMacros.h>
25
26 #include <map>
27 #include <vector>
28
29 namespace ParaMEDMEM
30 {
31   class DataArrayDouble;
32   class MEDCouplingUMesh;
33   class MEDCouplingFieldDouble;
34   class MEDCouplingMultiFields;
35
36   class MEDCouplingBasicsTest : public CppUnit::TestFixture
37   {
38   public:
39     static MEDCouplingUMesh *build3DSourceMesh_2();
40     static MEDCouplingUMesh *build3DTargetMesh_2();
41     static MEDCouplingUMesh *build1DTargetMesh_1();
42     static MEDCouplingUMesh *build2DSourceMesh_1();
43     static MEDCouplingUMesh *build2DTargetMesh_1();
44     static MEDCouplingUMesh *build2DTargetMeshPerm_1();
45     static MEDCouplingUMesh *build2DTargetMesh_2();
46     static MEDCouplingUMesh *buildCU1DMesh_U();
47     static MEDCouplingUMesh *buildCU2DMesh_U();
48     static MEDCouplingUMesh *buildCU3DMesh_U();
49     static MEDCouplingUMesh *build3DSurfSourceMesh_1();
50     static MEDCouplingUMesh *build3DSurfSourceMesh_2();
51     static MEDCouplingUMesh *build3DSurfTargetMesh_1();
52     static MEDCouplingUMesh *build3DSurfTargetMeshPerm_1();
53     static MEDCouplingUMesh *build3DSurfTargetMesh_2();
54     static MEDCouplingUMesh *build3DSourceMesh_1();
55     static MEDCouplingUMesh *build3DTargetMesh_1();
56     static MEDCouplingUMesh *build2DTargetMeshMergeNode_1();
57     static MEDCouplingUMesh *build3DTargetMeshMergeNode_1();
58     static MEDCouplingUMesh *build3DExtrudedUMesh_1(MEDCouplingUMesh *&mesh2D);
59     static void build3DExtrudedUMesh_2(MEDCouplingUMesh *&meshN, MEDCouplingUMesh *&meshTT, MEDCouplingUMesh *&meshTF);
60     static MEDCouplingUMesh *build2DTargetMeshMerged_1();
61     static MEDCouplingUMesh *build2DCurveMesh(double dx, double dy);
62     static MEDCouplingUMesh *build1DMesh(double dx);
63     static MEDCouplingUMesh *build1DSourceMesh_2();
64     static MEDCouplingUMesh *build1DTargetMesh_2();
65     static MEDCouplingUMesh *build2DCurveSourceMesh_2();
66     static MEDCouplingUMesh *build2DCurveTargetMesh_2();
67     static MEDCouplingUMesh *build1DTargetMesh_3();
68     static MEDCouplingUMesh *build2DCurveTargetMesh_3();
69     static MEDCouplingUMesh *build2DTargetMesh_3();
70     static MEDCouplingUMesh *build3DTargetMesh_3();
71     static MEDCouplingUMesh *build2DTargetMesh_4();
72     static MEDCouplingUMesh *build1DMultiTypes_1();
73     static MEDCouplingUMesh *build2DMultiTypes_1();
74     static MEDCouplingUMesh *build3DMultiTypes_1();
75     static MEDCouplingUMesh *buildHexa8Mesh_1();
76     static MEDCouplingUMesh *buildPointe_1(MEDCouplingUMesh *&m1);
77
78     static MEDCouplingUMesh *build2D1DSourceMesh();
79     static MEDCouplingUMesh *build2D1DTargetMesh();
80     static MEDCouplingUMesh *build2D1DSegSourceMesh(const double shiftX = 0.,
81                                                     const double inclinationX = 0.);
82     static MEDCouplingUMesh *build2D1DQuadTargetMesh(const double inclinaisonX = 0.);
83     static MEDCouplingUMesh *build2D1DTriTargetMesh(const double inclinaisonX = 0.);
84     static MEDCouplingUMesh *build3D2DSourceMesh();
85     static MEDCouplingUMesh *build3D2DTargetMesh();
86     static MEDCouplingUMesh* build3D2DQuadSourceMesh(const double shiftX = 0.,
87                                                      const double inclinationX = 0.);
88     static MEDCouplingUMesh* build3D2DTriSourceMesh(const double shiftX = 0.,
89                                                     const double inclinationX = 0.);
90     static MEDCouplingUMesh* build3D2DTetraTargetMesh(const double inclinaisonX = 0.);
91     static MEDCouplingUMesh* build3D2DHexaTargetMesh(const double inclinaisonX = 0.);
92
93     static DataArrayDouble *buildCoordsForMultiTypes_1();
94     static MEDCouplingMultiFields *buildMultiFields_1();
95     static std::vector<MEDCouplingFieldDouble *> buildMultiFields_2();
96     static double sumAll(const std::vector< std::map<int,double> >& matrix);
97   protected:
98     static int countNonZero(const std::vector< std::map<int,double> >& matrix);
99
100     static void test2D1DMeshesIntersection(MEDCouplingUMesh *sourceMesh,
101                                            MEDCouplingUMesh *targetMesh,
102                                            const double correctSurf,
103                                            const int correctDuplicateFacesNbr,
104                                            const int correctTotalIntersectFacesNbr = -1);
105     static void test3D2DMeshesIntersection(MEDCouplingUMesh *sourceMesh,
106                                            MEDCouplingUMesh *targetMesh,
107                                            const double correctSurf,
108                                            const int correctDuplicateFacesNbr,
109                                            const int correctTotalIntersectFacesNbr = -1);
110   };
111 }
112
113 #endif