https://mooseframework.inl.gov
solid_mechanics
src
actions
MaterialVectorBodyForceAction.C
Go to the documentation of this file.
1
//* This file is part of the MOOSE framework
2
//* https://mooseframework.inl.gov
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 "
MaterialVectorBodyForceAction.h
"
11
#include "
Factory.h
"
12
#include "
FEProblem.h
"
13
#include "
Conversion.h
"
14
15
registerMooseAction
(
"SolidMechanicsApp"
,
MaterialVectorBodyForceAction
,
"add_kernel"
);
16
17
InputParameters
18
MaterialVectorBodyForceAction::validParams
()
19
{
20
InputParameters
params =
Action::validParams
();
21
params.
addClassDescription
(
"Set up volumetric body force kernels"
);
22
23
params.
addParam
<std::vector<SubdomainName>>(
"block"
,
24
"The block ids where the body force will be applied"
);
25
26
params.
addParam
<std::vector<VariableName>>(
27
"displacements"
,
28
{},
29
"The displacements appropriate for the simulation geometry and coordinate system"
);
30
31
params.
addParam
<FunctionName>(
32
"function"
,
"1"
,
"Function to scale the coupled body force vector property"
);
33
params.
addParam
<
Real
>(
34
"hht_alpha"
, 0.0,
"alpha parameter required for HHT time integration scheme"
);
35
params.
addRequiredParam
<MaterialPropertyName>(
"body_force"
,
"Force per unit volume vector"
);
36
return
params;
37
}
38
39
MaterialVectorBodyForceAction::MaterialVectorBodyForceAction
(
const
InputParameters
& params)
40
:
Action
(params)
41
{
42
}
43
44
void
45
MaterialVectorBodyForceAction::act
()
46
{
47
std::string kernel_type =
"MaterialVectorBodyForce"
;
48
49
auto
displacements = getParam<std::vector<VariableName>>(
"displacements"
);
50
for
(
const
auto
& disp : displacements)
51
{
52
InputParameters
params =
_factory
.
getValidParams
(kernel_type);
53
params.
applyParameters
(
parameters
());
54
params.
set
<NonlinearVariableName>(
"variable"
) = disp;
55
_problem
->addKernel(kernel_type,
_name
+
"_"
+ disp, params);
56
}
57
}
InputParameters::addParam
void addParam(const std::string &name, const std::initializer_list< typename T::value_type > &value, const std::string &doc_string)
InputParameters::set
T & set(const std::string &name, bool quiet_mode=false)
MaterialVectorBodyForceAction::validParams
static InputParameters validParams()
Definition:
MaterialVectorBodyForceAction.C:18
Factory::getValidParams
InputParameters getValidParams(const std::string &name) const
InputParameters::applyParameters
void applyParameters(const InputParameters &common, const std::vector< std::string > &exclude={}, const bool allow_private=false)
Conversion.h
Action
InputParameters::addRequiredParam
void addRequiredParam(const std::string &name, const std::string &doc_string)
Action::_factory
Factory & _factory
Factory.h
InputParameters
Action::validParams
static InputParameters validParams()
MaterialVectorBodyForceAction
Definition:
MaterialVectorBodyForceAction.h:14
Action::_name
const std::string _name
FEProblem.h
registerMooseAction
registerMooseAction("SolidMechanicsApp", MaterialVectorBodyForceAction, "add_kernel")
Real
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real
MaterialVectorBodyForceAction::MaterialVectorBodyForceAction
MaterialVectorBodyForceAction(const InputParameters ¶ms)
Definition:
MaterialVectorBodyForceAction.C:39
InputParameters::addClassDescription
void addClassDescription(const std::string &doc_string)
Action::_problem
std::shared_ptr< FEProblemBase > & _problem
Action::parameters
const InputParameters & parameters() const
MaterialVectorBodyForceAction::act
virtual void act() override
Definition:
MaterialVectorBodyForceAction.C:45
MaterialVectorBodyForceAction.h
Generated on Fri Jul 18 2025 13:43:38 for https://mooseframework.inl.gov by
1.8.14