Computer Assisted Medical Intervention Tool Kit  version 5.1
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-2023 Univ. Grenoble Alpes, CNRS, Grenoble INP, 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
34class CellProperties;
42class Facet {
43public:
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
62private:
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
83
84public :
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
101private :
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
Cell * getCell(PhysicalModel *) const
return the corresponding PML cell
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
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 std::map< unsignedint, 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 StructuralComponent * generateNeighborhood(StructuralComponent *sc)
generate the neighborhoods
Definition: PMLTransform.cpp:191
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