Flow123d  JS_before_hm-1830-gb19ac973c
elements.cc
Go to the documentation of this file.
1 /*!
2  *
3  * Copyright (C) 2015 Technical University of Liberec. All rights reserved.
4  *
5  * This program is free software; you can redistribute it and/or modify it under
6  * the terms of the GNU General Public License version 3 as published by the
7  * Free Software Foundation. (http://www.gnu.org/licenses/gpl-3.0.en.html)
8  *
9  * This program is distributed in the hope that it will be useful, but WITHOUT
10  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
11  * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
12  *
13  *
14  * @file elements.cc
15  * @ingroup mesh
16  * @brief Various element oriented stuff, should be restricted to purely geometric functions
17  */
18 
19 #include <vector>
20 #include <string>
21 
22 #include "system/system.hh"
23 #include "mesh/accessors.hh"
24 #include "elements.h"
25 #include "mesh/mesh.h"
26 #include "mesh/ref_element.hh"
27 
28 // following deps. should be removed
29 //#include "materials.hh"
30 #include "mesh/accessors.hh"
31 #include "la/distribution.hh"
32 
33 
34 
36 : boundary_idx_(NULL),
37  neigh_vb(NULL),
38  inverted(false),
39  pid_(0),
40  n_neighs_vb_(0),
41  dim_(0)
42 {
43 }
44 
45 
46 Element::Element(unsigned int dim, RegionIdx reg)
47 {
48  init(dim, reg);
49 }
50 
51 
52 
53 void Element::init(unsigned int dim, RegionIdx reg) {
54  inverted = false;
55  pid_=0;
56  n_neighs_vb_=0;
57  neigh_vb=NULL;
58  dim_=dim;
59  region_idx_=reg;
60 
61  edge_idx_.resize( n_sides() );
62  permutation_idx_.resize( n_sides() );
63  boundary_idx_ = NULL;
64 
65  for (unsigned int si=0; si<this->n_sides(); si++) {
66  edge_idx_[ si ]=undef_idx;
68  }
69 }
70 
71 
73  // Can not make deallocation here since then resize of
74  // vectors of elements deallocates what should be keeped.
75 }
76 
77 
78 /**
79  * Count element sides of the space dimension @p side_dim.
80  */
81 
82 /* If we use this method, it will be moved to mesh accessor class.
83 unsigned int Element::n_sides_by_dim(unsigned int side_dim)
84 {
85  if (side_dim == dim()) return 1;
86 
87  unsigned int n = 0;
88  for (unsigned int i=0; i<n_sides(); i++)
89  if (side(i)->dim() == side_dim) n++;
90  return n;
91 }*/
92 
93 
94 
95 //-----------------------------------------------------------------------------
96 // vim: set cindent:
Element::edge_idx_
std::vector< unsigned int > edge_idx_
Edges on sides.
Definition: elements.h:105
ref_element.hh
Class RefElement defines numbering of vertices, sides, calculation of normal vectors etc.
Element::inverted
bool inverted
Inverted permutation of element nodes, negative Jacobian.
Definition: elements.h:101
Element::dim
unsigned int dim() const
Definition: elements.h:127
distribution.hh
Support classes for parallel programing.
Element::pid_
int pid_
Id # of mesh partition.
Definition: elements.h:104
system.hh
Element::permutation_idx_
std::vector< unsigned int > permutation_idx_
Definition: elements.h:98
Element::~Element
~Element()
Definition: elements.cc:72
accessors.hh
Element::dim_
unsigned int dim_
Definition: elements.h:114
elements.h
undef_idx
const unsigned int undef_idx
Definition: index_types.hh:32
Element::n_neighs_vb_
unsigned int n_neighs_vb_
Definition: elements.h:106
Element::init
void init(unsigned int dim, RegionIdx reg)
Definition: elements.cc:53
mesh.h
Element::region_idx_
RegionIdx region_idx_
Definition: elements.h:113
Element::neigh_vb
Neighbour ** neigh_vb
Definition: elements.h:86
Element::Element
Element()
Definition: elements.cc:35
Element::n_sides
unsigned int n_sides() const
Definition: elements.h:138
RegionIdx
Definition: region.hh:67
Element::boundary_idx_
unsigned int * boundary_idx_
Definition: elements.h:82