www.mooseframework.org
Public Member Functions | Protected Member Functions | Protected Attributes | List of all members
NodalDisplacementDifferenceL2NormPD Class Reference

Postprocessor class to compute L2 norm of displacements difference between prediction and analytical solution for peridynamic model. More...

#include <NodalDisplacementDifferenceL2NormPD.h>

Inheritance diagram for NodalDisplacementDifferenceL2NormPD:
[legend]

Public Member Functions

 NodalDisplacementDifferenceL2NormPD (const InputParameters &parameters)
 
virtual Real getValue () override
 
virtual void initialize () override
 
virtual void execute () override
 
virtual void threadJoin (const UserObject &uo) override
 

Protected Member Functions

virtual Real computeNodalValue () override
 Function to evaluate the given function at each material point. More...
 

Protected Attributes

unsigned int _n_disps
 Displacement variables. More...
 
std::vector< MooseVariable * > _disp_var
 
std::vector< const Function * > _funcs
 Known analytic displacement functions. More...
 
Real _integral_value
 nodal area integral result More...
 
PeridynamicsMesh_pdmesh
 Reference to peridynamic mesh object. More...
 
const unsigned int _dim
 Mesh dimension. More...
 

Detailed Description

Postprocessor class to compute L2 norm of displacements difference between prediction and analytical solution for peridynamic model.

Definition at line 23 of file NodalDisplacementDifferenceL2NormPD.h.

Constructor & Destructor Documentation

◆ NodalDisplacementDifferenceL2NormPD()

NodalDisplacementDifferenceL2NormPD::NodalDisplacementDifferenceL2NormPD ( const InputParameters &  parameters)

Definition at line 32 of file NodalDisplacementDifferenceL2NormPD.C.

35 {
36  const std::vector<NonlinearVariableName> & nl_vnames(
37  getParam<std::vector<NonlinearVariableName>>("displacements"));
38 
39  const std::vector<FunctionName> & func_names(
40  getParam<std::vector<FunctionName>>("analytic_functions"));
41 
42  _n_disps = nl_vnames.size();
43  if (_n_disps > _dim)
44  mooseError("Number of displacements components should not greater than problem dimension!");
45 
46  if (_n_disps != func_names.size())
47  mooseError("Number of analytic_functions components should be the same as the number of "
48  "displacements components!");
49 
50  for (unsigned int i = 0; i < _n_disps; ++i)
51  {
52  _disp_var.push_back(&_subproblem.getStandardVariable(_tid, nl_vnames[i]));
53  _funcs.push_back(&getFunctionByName(func_names[i]));
54  }
55 }

Member Function Documentation

◆ computeNodalValue()

Real NodalDisplacementDifferenceL2NormPD::computeNodalValue ( )
overrideprotectedvirtual

Function to evaluate the given function at each material point.

Returns
The computed nodal value

Implements NodalIntegralPostprocessorBasePD.

Definition at line 64 of file NodalDisplacementDifferenceL2NormPD.C.

65 {
66  Real diff = 0;
67  for (unsigned int i = 0; i < _n_disps; ++i)
68  diff += (_disp_var[i]->getNodalValue(*_current_node) - _funcs[i]->value(_t, *_current_node)) *
69  (_disp_var[i]->getNodalValue(*_current_node) - _funcs[i]->value(_t, *_current_node));
70 
71  return diff;
72 }

◆ execute()

void NodalIntegralPostprocessorBasePD::execute ( )
overridevirtualinherited

Definition at line 35 of file NodalIntegralPostprocessorBasePD.C.

36 {
37  _integral_value += computeNodalValue() * _pdmesh.getPDNodeVolume(_current_node->id());
38 }

◆ getValue()

Real NodalDisplacementDifferenceL2NormPD::getValue ( )
overridevirtual

Reimplemented from NodalIntegralPostprocessorBasePD.

Definition at line 58 of file NodalDisplacementDifferenceL2NormPD.C.

59 {
61 }

◆ initialize()

void NodalIntegralPostprocessorBasePD::initialize ( )
overridevirtualinherited

Definition at line 29 of file NodalIntegralPostprocessorBasePD.C.

30 {
31  _integral_value = 0;
32 }

◆ threadJoin()

void NodalIntegralPostprocessorBasePD::threadJoin ( const UserObject &  uo)
overridevirtualinherited

Definition at line 49 of file NodalIntegralPostprocessorBasePD.C.

50 {
52  static_cast<const NodalIntegralPostprocessorBasePD &>(uo);
54 }

Member Data Documentation

◆ _dim

const unsigned int NodalPostprocessorBasePD::_dim
protectedinherited

Mesh dimension.

Definition at line 34 of file NodalPostprocessorBasePD.h.

Referenced by NodalDisplacementDifferenceL2NormPD().

◆ _disp_var

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

◆ _funcs

std::vector<const Function *> NodalDisplacementDifferenceL2NormPD::_funcs
protected

Known analytic displacement functions.

Definition at line 38 of file NodalDisplacementDifferenceL2NormPD.h.

Referenced by computeNodalValue(), and NodalDisplacementDifferenceL2NormPD().

◆ _integral_value

Real NodalIntegralPostprocessorBasePD::_integral_value
protectedinherited

◆ _n_disps

unsigned int NodalDisplacementDifferenceL2NormPD::_n_disps
protected

Displacement variables.

Definition at line 34 of file NodalDisplacementDifferenceL2NormPD.h.

Referenced by computeNodalValue(), and NodalDisplacementDifferenceL2NormPD().

◆ _pdmesh

PeridynamicsMesh& NodalPostprocessorBasePD::_pdmesh
protectedinherited

Reference to peridynamic mesh object.

Definition at line 31 of file NodalPostprocessorBasePD.h.

Referenced by NodalIntegralPostprocessorBasePD::execute().


The documentation for this class was generated from the following files:
NodalDisplacementDifferenceL2NormPD::_disp_var
std::vector< MooseVariable * > _disp_var
Definition: NodalDisplacementDifferenceL2NormPD.h:35
PeridynamicsMesh::getPDNodeVolume
Real getPDNodeVolume(dof_id_type node_id)
Function to return nodal volume for node node_id.
Definition: PeridynamicsMesh.C:435
NodalDisplacementDifferenceL2NormPD::_funcs
std::vector< const Function * > _funcs
Known analytic displacement functions.
Definition: NodalDisplacementDifferenceL2NormPD.h:38
NodalIntegralPostprocessorBasePD::NodalIntegralPostprocessorBasePD
NodalIntegralPostprocessorBasePD(const InputParameters &parameters)
Definition: NodalIntegralPostprocessorBasePD.C:22
NodalIntegralPostprocessorBasePD::_integral_value
Real _integral_value
nodal area integral result
Definition: NodalIntegralPostprocessorBasePD.h:42
NodalIntegralPostprocessorBasePD::getValue
virtual Real getValue() override
Definition: NodalIntegralPostprocessorBasePD.C:41
NodalPostprocessorBasePD::_dim
const unsigned int _dim
Mesh dimension.
Definition: NodalPostprocessorBasePD.h:34
NodalPostprocessorBasePD::_pdmesh
PeridynamicsMesh & _pdmesh
Reference to peridynamic mesh object.
Definition: NodalPostprocessorBasePD.h:31
NodalIntegralPostprocessorBasePD
Postprocessor class to compute a volume integral of the specified variable Note that specializations ...
Definition: NodalIntegralPostprocessorBasePD.h:24
NodalDisplacementDifferenceL2NormPD::_n_disps
unsigned int _n_disps
Displacement variables.
Definition: NodalDisplacementDifferenceL2NormPD.h:34
NodalIntegralPostprocessorBasePD::computeNodalValue
virtual Real computeNodalValue()=0
Function to evaluate the given function at each material point.