2
2
// Licensed under the GNU LGPL Version 2.1.
4
4
// First added: 2008-05-19
5
// Last changed: 2008-05-19
5
// Last changed: 2008-05-21
7
7
#include "MeshData.h"
9
9
using namespace dolfin;
11
typedef std::map<std::string, MeshFunction<dolfin::uint>*>::iterator iterator;
12
typedef std::map<std::string, MeshFunction<dolfin::uint>*>::const_iterator const_iterator;
11
typedef std::map<std::string, MeshFunction<dolfin::uint>*>::iterator mf_iterator;
12
typedef std::map<std::string, MeshFunction<dolfin::uint>*>::const_iterator mf_const_iterator;
14
typedef std::map<std::string, Array<dolfin::uint>*>::iterator a_iterator;
15
typedef std::map<std::string, Array<dolfin::uint>*>::const_iterator a_const_iterator;
14
17
//-----------------------------------------------------------------------------
15
18
MeshData::MeshData(Mesh& mesh) : mesh(mesh)
24
27
//-----------------------------------------------------------------------------
25
28
void MeshData::clear()
27
for (iterator it = data.begin(); it != data.end(); ++it)
30
for (mf_iterator it = meshfunctions.begin(); it != meshfunctions.end(); ++it)
32
meshfunctions.clear();
34
for (a_iterator it = arrays.begin(); it != arrays.end(); ++it)
31
38
//-----------------------------------------------------------------------------
32
MeshFunction<dolfin::uint>* MeshData::create(std::string name, uint dim)
39
MeshFunction<dolfin::uint>* MeshData::createMeshFunction(std::string name, uint dim)
34
41
// Check if data already exists
35
iterator it = data.find(name);
42
mf_iterator it = meshfunctions.find(name);
43
if (it != meshfunctions.end())
38
45
warning("Mesh data named \"%s\" already exists.", name.c_str());
43
MeshFunction<uint>* f = new MeshFunction<uint>;
50
MeshFunction<uint>* f = new MeshFunction<uint>(mesh);
44
51
f->init(mesh, dim);
54
meshfunctions[name] = f;
51
58
//-----------------------------------------------------------------------------
52
MeshFunction<dolfin::uint>* MeshData::operator[] (std::string name)
54
// Check if data exists
55
iterator it = data.find(name);
57
error("No mesh data named \"%s\" exists.", name.c_str());
59
Array<dolfin::uint>* MeshData::createArray(std::string name, uint size)
61
// Check if data already exists
62
a_iterator it = arrays.find(name);
63
if (it != arrays.end())
65
warning("Mesh data named \"%s\" already exists.", name.c_str());
70
Array<uint>* a = new Array<uint>(size);
78
//-----------------------------------------------------------------------------
79
MeshFunction<dolfin::uint>* MeshData::meshfunction(std::string name)
81
// Check if data exists
82
mf_iterator it = meshfunctions.find(name);
83
if (it == meshfunctions.end())
88
//-----------------------------------------------------------------------------
89
Array<dolfin::uint>* MeshData::array(std::string name)
91
// Check if data exists
92
a_iterator it = arrays.find(name);
93
if (it == arrays.end())
66
103
begin("-------------------");
69
for (const_iterator it = data.begin(); it != data.end(); ++it)
106
for (mf_const_iterator it = meshfunctions.begin(); it != meshfunctions.end(); ++it)
71
108
cout << "MeshFunction<uint> of size "
72
109
<< it->second->size()