GranOO  3.0
A robust and versatile workbench to build 3D dynamic simulations based on the Discrete Element Method
ElementT4.hpp
Go to the documentation of this file.
1 // This file is part of GranOO, a workbench for DEM simulation.
2 //
3 // Author(s) : - Damien Andre IRCER/UNILIM, Limoges France
4 // <damien.andre@unilim.fr>
5 // - Jean-luc Charles Arts et Metiers ParisTech, CNRS, I2M, Bordeaux France
6 // <jean-luc.charles@ensam.eu>
7 // - Jeremie Girardot Arts et Metiers ParisTech, CNRS, I2M, Bordeaux France
8 // <jeremie.girardot@ensam.eu>
9 // - Cedric Hubert LAMIH/UPHF, Valenciennes France
10 // <cedric.hubert@uphf.fr>
11 // - Ivan Iordanoff Arts et Metiers ParisTech, CNRS, I2M, Bordeaux France
12 // <ivan.iordanoff@ensam.eu>
13 //
14 // Copyright (C) 2008-2019 D. Andre, JL. Charles, J. Girardot, C. Hubert, I. Iordanoff
15 //
16 // This program is free software: you can redistribute it and/or modify
17 // it under the terms of the GNU General Public License as published by
18 // the Free Software Foundation, either version 3 of the License, or
19 // (at your option) any later version.
20 //
21 // This program is distributed in the hope that it will be useful,
22 // but WITHOUT ANY WARRANTY; without even the implied warranty of
23 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
24 // GNU General Public License for more details.
25 //
26 // You should have received a copy of the GNU General Public License
27 // along with this program. If not, see <http://www.gnu.org/licenses/>.
28 
29 #ifndef _LibFEM_ElementT4
30 #define _LibFEM_ElementT4
31 
32 #include <string>
33 #include <iostream>
34 #include <fstream>
35 
37 #include "GranOO3/FEM/Element.hpp"
38 
39 namespace GranOO3 {
40 
41  namespace FEM {
42 
43  class ElementT4 : public Element, public Core::Register<ElementT4> {
44 
45  public:
46  GRANOO_CLASS(FEM::ElementT4, FEM::Element);
47 
49  ElementT4(std::vector<unsigned int> connectivity);
50  virtual ~ElementT4();
51 
52  Eigen::VectorXd shape_function_at_coordinate(double xi, double eta, double zeta);
53  Eigen::MatrixXd shape_function_derivative_at_coordinate(double xi, double eta, double zeta);
54 
55  static const unsigned int node_number = 4;
56  inline unsigned int node_count() { return node_number; };
57  inline unsigned int dof_per_node_count() { return 3; };
58  inline unsigned int gauss_point_count() { return 1; };
59  inline static std::string element_name() { return "T4"; };
60  inline std::string name() { return "T4"; };
61  inline std::string vtk_name() { return "10"; };
62 
63  // declare the element to the factory
65  };
66  }
67 
68  GRANOO_CLASS_DECLARE_TPL(FEM::ElementT4);
69 }
70 
71 #endif
#define DECLARE_ELEMENT(CLASS)
Definition: ElementFactory.hpp:42
Definition: SetOf.hpp:346
Definition: Element.hpp:50
const std::vector< unsigned int > & connectivity()
Definition: Element.hpp:86
Definition: ElementT4.hpp:43
static std::string element_name()
Definition: ElementT4.hpp:59
Eigen::VectorXd shape_function_at_coordinate(double xi, double eta, double zeta)
Definition: ElementT4.cpp:80
std::string name()
Definition: ElementT4.hpp:60
virtual ~ElementT4()
Definition: ElementT4.cpp:74
std::string vtk_name()
Definition: ElementT4.hpp:61
Eigen::MatrixXd shape_function_derivative_at_coordinate(double xi, double eta, double zeta)
Definition: ElementT4.cpp:91
unsigned int dof_per_node_count()
Definition: ElementT4.hpp:57
static const unsigned int node_number
Definition: ElementT4.hpp:55
unsigned int gauss_point_count()
Definition: ElementT4.hpp:58
unsigned int node_count()
Definition: ElementT4.hpp:56
Definition: Common.hpp:198