1#ifndef ASSEMBLEFE_LINELAS_DEF_hpp
2#define ASSEMBLEFE_LINELAS_DEF_hpp
4#include "AssembleFE_LinElas_decl.hpp"
5#include "feddlib/core/AceFemAssembly/AceInterface/NeoHookQuadraticTets.hpp"
22template <
class SC,
class LO,
class GO,
class NO>
24AssembleFE<SC,LO,GO,NO>(flag, nodesRefConfig, params,tuple)
27 E_ = this->params_->sublist(
"Parameter").get(
"E",3500.0);
29 poissonRatio_ = this->params_->sublist(
"Parameter").get(
"Poisson Ratio",0.4e-0);
33 FEType_ = std::get<1>(this->diskTuple_->at(0));
34 dofs_ = std::get<2>(this->diskTuple_->at(0));
35 numNodes_ = std::get<3>(this->diskTuple_->at(0));
37 dofsElement_ = dofs_*numNodes_;
49template <
class SC,
class LO,
class GO,
class NO>
53 SmallMatrixPtr_Type elementMatrix =Teuchos::rcp(
new SmallMatrix_Type( dofsElement_));
55 assemblyLinElas(elementMatrix);
57 this->jacobian_ = elementMatrix ;
67template <
class SC,
class LO,
class GO,
class NO>
68void AssembleFE_LinElas<SC,LO,GO,NO>::assemblyLinElas(SmallMatrixPtr_Type &elementMatrix) {
81 std::vector<double> v(1002);
82 std::vector<double> d(2);
83 std::vector<double> ul(30);
84 std::vector<double> ul0(30);
85 std::vector<double> xl(30);
86 std::vector<double> s(900);
87 std::vector<double> p(30);
88 std::vector<double> ht(10);
89 std::vector<double> hp(10);
92 d[1] = this->poissonRatio_;
95 ul[i] = (*this->solution_)[i];
98 for(
int i=0;i<this->numNodes_;i++)
99 for(
int j=0;j<this->dofs_;j++){
100 xl[count] = this->getNodesRefConfig()[i][j];
103 for(
int i=0;i<s.size();i++)
105 for(
int i=0;i<p.size();i++)
109 skr1(&v[0],&d[0],&ul[0],&ul0[0],&xl[0],&s[0],&p[0],&ht[0],&hp[0]);
117 for (UN i=0; i < this->dofsElement_; i++) {
118 for (UN j=0; j < this->dofsElement_; j++) {
119 (*elementMatrix)[i][j] = -s[this->dofsElement_*j+i];
131template <
class SC,
class LO,
class GO,
class NO>
136 std::vector<double> v(1002);
137 std::vector<double> d(2);
138 std::vector<double> ul(30);
139 std::vector<double> ul0(30);
140 std::vector<double> xl(30);
141 std::vector<double> s(900);
142 std::vector<double> p(30);
143 std::vector<double> ht(10);
144 std::vector<double> hp(10);
147 d[1] = this->poissonRatio_;
149 for(
int i=0;i<30;i++)
150 ul[i] = (*this->solution_)[i];
153 for(
int i=0;i<this->numNodes_;i++)
154 for(
int j=0;j<this->dofs_;j++){
159 for(
int i=0;i<s.size();i++)
161 for(
int i=0;i<p.size();i++)
165 skr1(&v[0],&d[0],&ul[0],&ul0[0],&xl[0],&s[0],&p[0],&ht[0],&hp[0]);
167 (*this->rhsVec_) = p;
AssembleFE_LinElas(int flag, vec2D_dbl_Type nodesRefConfig, ParameterListPtr_Type parameters, tuple_disk_vec_ptr_Type tuple)
Constructor for AssembleFE_Laplace.
Definition AssembleFE_LinElas_def.hpp:23
void assembleJacobian() override
Assemble the element Jacobian matrix.
Definition AssembleFE_LinElas_def.hpp:50
void assembleRHS() override
Assemble the element right hand side vector.
Definition AssembleFE_LinElas_def.hpp:132
AssembleFE(int flag, vec2D_dbl_Type nodesRefConfig, ParameterListPtr_Type parameters, tuple_disk_vec_ptr_Type tuple)
Definition AssembleFE_def.hpp:10
vec2D_dbl_Type getNodesRefConfig()
Definition AssembleFE_def.hpp:144
Adaptive Mesh Refinement.
Definition AdaptiveMeshRefinement.cpp:5