1#ifndef ASSEMBLEFE_LINELAS_DEF_hpp
2#define ASSEMBLEFE_LINELAS_DEF_hpp
4#include "feddlib/core/AceFemAssembly/AceInterface/NeoHookQuadraticTets.hpp"
21template <
class SC,
class LO,
class GO,
class NO>
23AssembleFE<SC,LO,GO,NO>(flag, nodesRefConfig, params,tuple)
26 E_ = this->params_->sublist(
"Parameter").get(
"E",3500.0);
28 poissonRatio_ = this->params_->sublist(
"Parameter").get(
"Poisson Ratio",0.4e-0);
31 FEType_ = std::get<1>(this->diskTuple_->at(0));
32 dofs_ = std::get<2>(this->diskTuple_->at(0));
33 numNodes_ = std::get<3>(this->diskTuple_->at(0));
35 dofsElement_ = dofs_*numNodes_;
47template <
class SC,
class LO,
class GO,
class NO>
51 SmallMatrixPtr_Type elementMatrix =Teuchos::rcp(
new SmallMatrix_Type( dofsElement_));
53 assemblyLinElas(elementMatrix);
55 this->jacobian_ = elementMatrix ;
65template <
class SC,
class LO,
class GO,
class NO>
66void AssembleFE_LinElas<SC,LO,GO,NO>::assemblyLinElas(SmallMatrixPtr_Type &elementMatrix) {
79 std::vector<double> v(1002);
80 std::vector<double> d(2);
81 std::vector<double> ul(30);
82 std::vector<double> ul0(30);
83 std::vector<double> xl(30);
84 std::vector<double> s(900);
85 std::vector<double> p(30);
86 std::vector<double> ht(10);
87 std::vector<double> hp(10);
90 d[1] = this->poissonRatio_;
93 ul[i] = (*this->solution_)[i];
96 for(
int i=0;i<this->numNodes_;i++)
97 for(
int j=0;j<this->dofs_;j++){
98 xl[count] = this->getNodesRefConfig()[i][j];
101 for(
int i=0;i<s.size();i++)
103 for(
int i=0;i<p.size();i++)
107 skr1(&v[0],&d[0],&ul[0],&ul0[0],&xl[0],&s[0],&p[0],&ht[0],&hp[0]);
115 for (UN i=0; i < this->dofsElement_; i++) {
116 for (UN j=0; j < this->dofsElement_; j++) {
117 (*elementMatrix)[i][j] = -s[this->dofsElement_*j+i];
129template <
class SC,
class LO,
class GO,
class NO>
134 std::vector<double> v(1002);
135 std::vector<double> d(2);
136 std::vector<double> ul(30);
137 std::vector<double> ul0(30);
138 std::vector<double> xl(30);
139 std::vector<double> s(900);
140 std::vector<double> p(30);
141 std::vector<double> ht(10);
142 std::vector<double> hp(10);
145 d[1] = this->poissonRatio_;
147 for(
int i=0;i<30;i++)
148 ul[i] = (*this->solution_)[i];
151 for(
int i=0;i<this->numNodes_;i++)
152 for(
int j=0;j<this->dofs_;j++){
157 for(
int i=0;i<s.size();i++)
159 for(
int i=0;i<p.size();i++)
163 skr1(&v[0],&d[0],&ul[0],&ul0[0],&xl[0],&s[0],&p[0],&ht[0],&hp[0]);
165 (*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:22
void assembleJacobian() override
Assemble the element Jacobian matrix.
Definition AssembleFE_LinElas_def.hpp:48
void assembleRHS() override
Assemble the element right hand side vector.
Definition AssembleFE_LinElas_def.hpp:130
AssembleFE(int flag, vec2D_dbl_Type nodesRefConfig, ParameterListPtr_Type parameters, tuple_disk_vec_ptr_Type tuple)
Definition AssembleFE_def.hpp:8
vec2D_dbl_Type getNodesRefConfig()
Definition AssembleFE_def.hpp:142
Adaptive Mesh Refinement.
Definition AdaptiveMeshRefinement_decl.hpp:36