www.mooseframework.org
Public Member Functions | Protected Member Functions | Protected Attributes | List of all members
TrussMaterial Class Referenceabstract

#include <TrussMaterial.h>

Inheritance diagram for TrussMaterial:
[legend]

Public Member Functions

 TrussMaterial (const InputParameters &parameters)
 

Protected Member Functions

virtual void initQpStatefulProperties ()
 
virtual void computeProperties ()
 
virtual void computeQpStrain ()=0
 
virtual void computeQpStress ()=0
 

Protected Attributes

std::vector< MooseVariable * > _disp_var
 
const std::string _base_name
 
unsigned int _ndisp
 
const VariableValue & _youngs_modulus
 
MaterialProperty< Real > & _total_stretch
 
MaterialProperty< Real > & _elastic_stretch
 
MaterialProperty< Real > & _axial_stress
 
MaterialProperty< Real > & _e_over_l
 
Real _origin_length
 
Real _current_length
 

Detailed Description

Definition at line 18 of file TrussMaterial.h.

Constructor & Destructor Documentation

TrussMaterial::TrussMaterial ( const InputParameters &  parameters)

Definition at line 34 of file TrussMaterial.C.

35  : Material(parameters),
36  _base_name(isParamValid("base_name") ? getParam<std::string>("base_name") + "_" : ""),
37  _youngs_modulus(coupledValue("youngs_modulus")),
38  _total_stretch(declareProperty<Real>(_base_name + "total_stretch")),
39  _elastic_stretch(declareProperty<Real>(_base_name + "elastic_stretch")),
40  _axial_stress(declareProperty<Real>(_base_name + "axial_stress")),
41  _e_over_l(declareProperty<Real>(_base_name + "e_over_l"))
42 {
43  const std::vector<NonlinearVariableName> & nl_vnames(
44  getParam<std::vector<NonlinearVariableName>>("displacements"));
45  _ndisp = nl_vnames.size();
46 
47  // fetch nonlinear variables
48  for (unsigned int i = 0; i < _ndisp; ++i)
49  _disp_var.push_back(&_fe_problem.getVariable(_tid, nl_vnames[i]));
50 }
std::vector< MooseVariable * > _disp_var
Definition: TrussMaterial.h:30
MaterialProperty< Real > & _total_stretch
Definition: TrussMaterial.h:37
const VariableValue & _youngs_modulus
Definition: TrussMaterial.h:35
unsigned int _ndisp
Definition: TrussMaterial.h:34
MaterialProperty< Real > & _elastic_stretch
Definition: TrussMaterial.h:38
MaterialProperty< Real > & _e_over_l
Definition: TrussMaterial.h:40
const std::string _base_name
Definition: TrussMaterial.h:32
MaterialProperty< Real > & _axial_stress
Definition: TrussMaterial.h:39

Member Function Documentation

void TrussMaterial::computeProperties ( )
protectedvirtual

Definition at line 61 of file TrussMaterial.C.

62 {
63  // check for consistency of the number of element nodes
64  mooseAssert(_current_elem->n_nodes() == 2, "Truss element needs to have exactly two nodes.");
65 
66  // fetch the two end nodes for _current_elem
67  std::vector<Node *> node;
68  for (unsigned int i = 0; i < 2; ++i)
69  node.push_back(_current_elem->get_node(i));
70 
71  // calculate original length of a truss element
72  RealGradient dxyz;
73  for (unsigned int i = 0; i < _ndisp; ++i)
74  dxyz(i) = (*node[1])(i) - (*node[0])(i);
75  _origin_length = dxyz.norm();
76 
77  // fetch the solution for the two end nodes
78  NonlinearSystemBase & nonlinear_sys = _fe_problem.getNonlinearSystemBase();
79  const NumericVector<Number> & sol = *nonlinear_sys.currentSolution();
80 
81  std::vector<Real> disp0, disp1;
82  for (unsigned int i = 0; i < _ndisp; ++i)
83  {
84  disp0.push_back(sol(node[0]->dof_number(nonlinear_sys.number(), _disp_var[i]->number(), 0)));
85  disp1.push_back(sol(node[1]->dof_number(nonlinear_sys.number(), _disp_var[i]->number(), 0)));
86  }
87 
88  // calculate current length of a truss element
89  for (unsigned int i = 0; i < _ndisp; ++i)
90  dxyz(i) += disp1[i] - disp0[i];
91  _current_length = dxyz.norm();
92 
93  for (_qp = 0; _qp < _qrule->n_points(); ++_qp)
94  {
96 
99  }
100 }
Real _current_length
Definition: TrussMaterial.h:43
std::vector< MooseVariable * > _disp_var
Definition: TrussMaterial.h:30
const VariableValue & _youngs_modulus
Definition: TrussMaterial.h:35
unsigned int _ndisp
Definition: TrussMaterial.h:34
virtual void computeQpStrain()=0
MaterialProperty< Real > & _e_over_l
Definition: TrussMaterial.h:40
virtual void computeQpStress()=0
virtual void TrussMaterial::computeQpStrain ( )
protectedpure virtual

Implemented in LinearElasticTruss.

Referenced by computeProperties().

virtual void TrussMaterial::computeQpStress ( )
protectedpure virtual

Implemented in LinearElasticTruss.

Referenced by computeProperties().

void TrussMaterial::initQpStatefulProperties ( )
protectedvirtual

Definition at line 53 of file TrussMaterial.C.

54 {
55  _axial_stress[_qp] = 0.0;
56  _total_stretch[_qp] = 0.0;
57  _elastic_stretch[_qp] = 0.0;
58 }
MaterialProperty< Real > & _total_stretch
Definition: TrussMaterial.h:37
MaterialProperty< Real > & _elastic_stretch
Definition: TrussMaterial.h:38
MaterialProperty< Real > & _axial_stress
Definition: TrussMaterial.h:39

Member Data Documentation

MaterialProperty<Real>& TrussMaterial::_axial_stress
protected
const std::string TrussMaterial::_base_name
protected

Definition at line 32 of file TrussMaterial.h.

Real TrussMaterial::_current_length
protected

Definition at line 43 of file TrussMaterial.h.

Referenced by computeProperties(), and LinearElasticTruss::computeQpStrain().

std::vector<MooseVariable *> TrussMaterial::_disp_var
protected

Definition at line 30 of file TrussMaterial.h.

Referenced by computeProperties(), and TrussMaterial().

MaterialProperty<Real>& TrussMaterial::_e_over_l
protected

Definition at line 40 of file TrussMaterial.h.

Referenced by computeProperties().

MaterialProperty<Real>& TrussMaterial::_elastic_stretch
protected
unsigned int TrussMaterial::_ndisp
protected

Definition at line 34 of file TrussMaterial.h.

Referenced by computeProperties(), and TrussMaterial().

Real TrussMaterial::_origin_length
protected

Definition at line 42 of file TrussMaterial.h.

Referenced by computeProperties(), and LinearElasticTruss::computeQpStrain().

MaterialProperty<Real>& TrussMaterial::_total_stretch
protected
const VariableValue& TrussMaterial::_youngs_modulus
protected

Definition at line 35 of file TrussMaterial.h.

Referenced by computeProperties(), and LinearElasticTruss::computeQpStress().


The documentation for this class was generated from the following files: