www.mooseframework.org
NodalRankTwoScalarPD.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 
10 #include "NodalRankTwoScalarPD.h"
11 #include "RankTwoScalarTools.h"
12 #include "RankTwoTensor.h"
13 
14 registerMooseObject("PeridynamicsApp", NodalRankTwoScalarPD);
15 
16 template <>
17 InputParameters
19 {
20  InputParameters params = validParams<NodalRankTwoUserObjectBasePD>();
21  params.addClassDescription(
22  "Class for calculating scalar quantities of nodal rank-two stress and strain tensors "
23  "from material properties (stress and strain) for edge elements (i.e., bonds) "
24  "connected at that node. NOTE: This UserObject only applies to SNOSPD model.");
25 
26  params.addRequiredParam<MooseEnum>(
27  "scalar_type", RankTwoScalarTools::scalarOptions(), "Type of scalar output");
28  params.addParam<Point>(
29  "point1",
30  Point(0, 0, 0),
31  "Start point for axis used to calculate some cylindrical material tensor quantities");
32  params.addParam<Point>("point2",
33  Point(0, 1, 0),
34  "End point for axis used to calculate some material tensor quantities");
35  params.addParam<Point>("direction", Point(0, 0, 1), "Direction vector");
36 
37  return params;
38 }
39 
40 NodalRankTwoScalarPD::NodalRankTwoScalarPD(const InputParameters & parameters)
41  : NodalRankTwoUserObjectBasePD(parameters),
42  _scalar_type(getParam<MooseEnum>("scalar_type")),
43  _point1(parameters.get<Point>("point1")),
44  _point2(parameters.get<Point>("point2")),
45  _input_direction(parameters.get<Point>("direction") / parameters.get<Point>("direction").norm())
46 {
47 }
48 
49 void
50 NodalRankTwoScalarPD::gatherWeightedValue(unsigned int id, dof_id_type dof, Real dg_vol_frac)
51 {
52  Point curr_point = *_current_elem->node_ptr(id);
53  Real scalar_value = RankTwoScalarTools::getQuantity(
55 
56  _aux_sln.add(dof, scalar_value * dg_vol_frac);
57 }
NodalRankTwoScalarPD.h
NodalRankTwoUserObjectBasePD
Base userobject class for rank two tensor at individual material point.
Definition: NodalRankTwoUserObjectBasePD.h:22
validParams< NodalRankTwoScalarPD >
InputParameters validParams< NodalRankTwoScalarPD >()
Definition: NodalRankTwoScalarPD.C:18
NodalRankTwoScalarPD
Userobject class to compute the equivalent scalar values for rank two tensor at individual material p...
Definition: NodalRankTwoScalarPD.h:23
NodalRankTwoScalarPD::_point1
const Point _point1
Start point for axis used to calculate some cylinderical material tensor quantities.
Definition: NodalRankTwoScalarPD.h:39
NodalRankTwoScalarPD::NodalRankTwoScalarPD
NodalRankTwoScalarPD(const InputParameters &parameters)
Definition: NodalRankTwoScalarPD.C:40
NodalRankTwoScalarPD::_input_direction
Point _input_direction
Direction vector used to calculate some material tensor quantities.
Definition: NodalRankTwoScalarPD.h:45
RankTwoScalarTools::getQuantity
T getQuantity(const RankTwoTensorTempl< T > &tensor, const MooseEnum &scalar_type, const Point &point1, const Point &point2, const Point &curr_point, Point &direction)
Definition: RankTwoScalarTools.h:420
NodalRankTwoScalarPD::_point2
const Point _point2
End point for axis used to calculate some cylinderical material tensor quantities.
Definition: NodalRankTwoScalarPD.h:42
NodalRankTwoUserObjectBasePD::_tensor
const MaterialProperty< RankTwoTensor > & _tensor
Material properties tensor.
Definition: NodalRankTwoUserObjectBasePD.h:41
RankTwoScalarTools.h
ElementUserObjectBasePD::_aux_sln
NumericVector< Number > & _aux_sln
Solution vector for aux variables.
Definition: ElementUserObjectBasePD.h:36
registerMooseObject
registerMooseObject("PeridynamicsApp", NodalRankTwoScalarPD)
RankTwoScalarTools::scalarOptions
MooseEnum scalarOptions()
Definition: RankTwoScalarTools.C:16
NodalRankTwoScalarPD::_scalar_type
MooseEnum _scalar_type
Determines the information to be extracted from the tensor by using the RankTwoScalarTools namespace,...
Definition: NodalRankTwoScalarPD.h:36
validParams< NodalRankTwoUserObjectBasePD >
InputParameters validParams< NodalRankTwoUserObjectBasePD >()
Definition: NodalRankTwoUserObjectBasePD.C:16
NodalRankTwoScalarPD::gatherWeightedValue
virtual void gatherWeightedValue(unsigned int id, dof_id_type dof, Real dg_vol_frac) override
Function to gather bond-associated quantities to each material point.
Definition: NodalRankTwoScalarPD.C:50