www.mooseframework.org
MechanicsMaterialBasePD.C
Go to the documentation of this file.
1 //* This file is part of the MOOSE framework
2 //* https://www.mooseframework.org
3 //*
4 //* All rights reserved, see COPYRIGHT for full restrictions
5 //* https://github.com/idaholab/moose/blob/master/COPYRIGHT
6 //*
7 //* Licensed under LGPL 2.1, please see LICENSE for details
8 //* https://www.gnu.org/licenses/lgpl-2.1.html
9 
11 #include "MooseVariable.h"
12 
13 template <>
14 InputParameters
16 {
17  InputParameters params = validParams<PeridynamicsMaterialBase>();
18  params.addClassDescription("Base class for Peridynamic mechanic materials");
19 
20  params.addRequiredCoupledVar("displacements", "Nonlinear variable name for the displacements");
21  params.addCoupledVar("temperature", "Nonlinear variable name for the temperature");
22 
23  return params;
24 }
25 
26 MechanicsMaterialBasePD::MechanicsMaterialBasePD(const InputParameters & parameters)
27  : PeridynamicsMaterialBase(parameters),
28  _has_temp(isCoupled("temperature")),
29  _temp_var(_has_temp ? getVar("temperature", 0) : nullptr),
30  _bond_status_var(&_subproblem.getStandardVariable(_tid, "bond_status")),
31  _total_stretch(declareProperty<Real>("total_stretch")),
32  _mechanical_stretch(declareProperty<Real>("mechanical_stretch"))
33 {
34  if (_dim != coupledComponents("displacements"))
35  mooseError("Size of displacements vector is different from the mesh dimension!");
36 
37  for (unsigned int i = 0; i < coupledComponents("displacements"); ++i)
38  _disp_var.push_back(getVar("displacements", i));
39 }
40 
41 void
43 {
44  RealGradient dxyz;
45  dxyz.zero();
46 
47  for (unsigned int i = 0; i < _dim; ++i)
48  {
49  dxyz(i) = (_pdmesh.getPDNodeCoord(_current_elem->node_id(1)))(i) +
50  _disp_var[i]->getNodalValue(*_current_elem->node_ptr(1));
51  dxyz(i) -= (_pdmesh.getPDNodeCoord(_current_elem->node_id(0)))(i) +
52  _disp_var[i]->getNodalValue(*_current_elem->node_ptr(0));
53  }
54 
55  _current_length = dxyz.norm();
56 }
MechanicsMaterialBasePD::_disp_var
std::vector< MooseVariable * > _disp_var
Displacement variables.
Definition: MechanicsMaterialBasePD.h:52
libMesh::RealGradient
VectorValue< Real > RealGradient
Definition: GrainForceAndTorqueInterface.h:17
PeridynamicsMaterialBase::_dim
const unsigned int _dim
Definition: PeridynamicsMaterialBase.h:36
MechanicsMaterialBasePD::_current_length
Real _current_length
Length of current bond.
Definition: MechanicsMaterialBasePD.h:55
PeridynamicsMesh::getPDNodeCoord
Point getPDNodeCoord(dof_id_type node_id)
Function to return coordinates for node node_id.
Definition: PeridynamicsMesh.C:420
PeridynamicsMaterialBase
Base class for peridynamics material models.
Definition: PeridynamicsMaterialBase.h:23
MechanicsMaterialBasePD::MechanicsMaterialBasePD
MechanicsMaterialBasePD(const InputParameters &parameters)
Definition: MechanicsMaterialBasePD.C:26
PeridynamicsMaterialBase::_pdmesh
PeridynamicsMesh & _pdmesh
Mesh related information for material points of current bond/element.
Definition: PeridynamicsMaterialBase.h:35
MechanicsMaterialBasePD::computeBondCurrentLength
void computeBondCurrentLength()
Function to compute the current bond length.
Definition: MechanicsMaterialBasePD.C:42
validParams< MechanicsMaterialBasePD >
InputParameters validParams< MechanicsMaterialBasePD >()
Definition: MechanicsMaterialBasePD.C:15
MechanicsMaterialBasePD.h
validParams< PeridynamicsMaterialBase >
InputParameters validParams< PeridynamicsMaterialBase >()
Definition: PeridynamicsMaterialBase.C:14