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