Computer Assisted Medical Intervention Tool Kit  version 5.2
PMLTransform.h
Go to the documentation of this file.
1 /*****************************************************************************
2  * $CAMITK_LICENCE_BEGIN$
3  *
4  * CamiTK - Computer Assisted Medical Intervention ToolKit
5  * (c) 2001-2024 Univ. Grenoble Alpes, CNRS, Grenoble INP - UGA, TIMC, 38000 Grenoble, France
6  *
7  * Visit http://camitk.imag.fr for more information
8  *
9  * This file is part of CamiTK.
10  *
11  * CamiTK is free software: you can redistribute it and/or modify
12  * it under the terms of the GNU Lesser General Public License version 3
13  * only, as published by the Free Software Foundation.
14  *
15  * CamiTK is distributed in the hope that it will be useful,
16  * but WITHOUT ANY WARRANTY; without even the implied warranty of
17  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18  * GNU Lesser General Public License version 3 for more details.
19  *
20  * You should have received a copy of the GNU Lesser General Public License
21  * version 3 along with CamiTK. If not, see <http://www.gnu.org/licenses/>.
22  *
23  * $CAMITK_LICENCE_END$
24  ****************************************************************************/
25 
26 #ifndef PMLTRANSFORM_H
27 #define PMLTRANSFORM_H
28 
29 #include "PhysicalModel.h"
30 
31 #include <map>
32 #include <vector>
33 
34 class CellProperties;
42 class Facet {
43 public:
45  Facet(unsigned int size, unsigned int id[]);
46 
48  virtual ~Facet();
49 
51  bool testEquivalence(unsigned int size, unsigned int id[]);
52 
55 
57  void debug();
58 
60  unsigned int getUsed() const;
61 
62 private:
64  bool isIn(unsigned int) const;
65 
67  unsigned int* id;
68 
70  unsigned int size;
71 
73  unsigned int used;
74 };
75 
76 
77 
78 
82 class PMLTransform {
83 
84 public :
85 //-- elem to neighborhhod methods
86 
89  static std::map<unsigned int, Cell*>::iterator getIterator(unsigned int index);
90 
93 
95  static void equivalent(int size, unsigned int id[]);
96 
99 
100 
101 private :
102  // -------------------- Neigborhood Map ------------------------
103  // associative map of all the neighboors for a given index of an atom
104  static std::map<unsigned int, Cell*> neighMap;
105 
106  // -------------------- All border facets ------------------------
108  static std::vector <Facet*> allFacets;
109 
110 };
111 
112 #endif
Describes and manages the properties attached to cells.
Definition: CellProperties.h:44
A cell has an unique index in the physical model object, is composed by atoms, and different basic pr...
Definition: Cell.h:46
Class facet to hold and compare facet This class is used for the extraction of external surface durin...
Definition: Facet.h:38
bool testEquivalence(unsigned int size, unsigned int id[])
if it is the same (equivalent) facet, increment used (return true if equivalence)
void debug()
print on stdout
unsigned int getUsed() const
get the number of time it is being used
Facet(unsigned int size, unsigned int id[])
create a facet using size nodes and their indexes
Cell * getCell(PhysicalModel *) const
return the corresponding PML cell
virtual ~Facet()
destructor
A multi-component stores other components, hence providing a way to have an tree representation of co...
Definition: MultiComponent.h:44
PML Transform is composed by static methods It performs transformations on pml object and do a lot of...
Definition: PMLTransform.h:82
static StructuralComponent * generateNeighborhood(StructuralComponent *sc)
generate the neighborhoods
Definition: PMLTransform.cpp:191
static std::map< unsigned int, Cell * >::iterator getIterator(unsigned int index)
get the iterator on the correct atom index in the neighMap if non existant create it
Definition: PMLTransform.cpp:164
static MultiComponent * generateExternalSurface(StructuralComponent *sc)
generate the outside surface
Definition: PMLTransform.cpp:380
static void equivalent(int size, unsigned int id[])
check if equivalent of already existing facet
Definition: PMLTransform.cpp:361
This is the main class of this project.
Definition: PhysicalModel.h:86
A structural component is composed either by cell or by atoms.
Definition: StructuralComponent.h:52