www.mooseframework.org
DistributedForce.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 "DistributedForce.h"
11 
12 registerMooseObject("NavierStokesApp", DistributedForce);
13 
14 template <>
15 InputParameters
17 {
18  InputParameters params = validParams<Kernel>();
19 
20  // The acceleration vector.
21  params.addParam<RealVectorValue>(
22  "acceleration",
23  RealVectorValue(0, 0, 0),
24  "The acceleration components for an applied distributed force in an element.");
25  params.addRequiredParam<unsigned int>("component", "acceleration vector components");
26 
27  // The body force acts on the mass of the volume
28  params.addRequiredCoupledVar("rho", "density"); // Density integrated over a volume yields mass
29 
30  return params;
31 }
32 
33 DistributedForce::DistributedForce(const InputParameters & parameters)
34  : Kernel(parameters),
35  _component(getParam<unsigned int>("component")),
36  _acceleration(getParam<RealVectorValue>("acceleration")(_component)),
37  _rho_var_number(coupled("rho")),
38  _rho(coupledValue("rho"))
39 {
40 }
41 
42 Real
44 {
45  // -rho * g * phi
46  return -_rho[_qp] * _acceleration * _test[_i][_qp];
47 }
48 
49 Real
51 {
52  return 0.;
53 }
54 
55 Real
57 {
58  if (jvar == _rho_var_number)
59  return -_phi[_j][_qp] * _acceleration * _test[_i][_qp];
60 
61  return 0;
62 }
validParams< DistributedForce >
InputParameters validParams< DistributedForce >()
Definition: DistributedForce.C:16
DistributedForce::computeQpOffDiagJacobian
virtual Real computeQpOffDiagJacobian(unsigned int jvar)
Definition: DistributedForce.C:56
DistributedForce::DistributedForce
DistributedForce(const InputParameters &parameters)
Definition: DistributedForce.C:33
DistributedForce::_acceleration
Real _acceleration
Definition: DistributedForce.h:38
DistributedForce::computeQpResidual
virtual Real computeQpResidual()
Definition: DistributedForce.C:43
DistributedForce::computeQpJacobian
virtual Real computeQpJacobian()
Definition: DistributedForce.C:50
registerMooseObject
registerMooseObject("NavierStokesApp", DistributedForce)
DistributedForce::_rho
const VariableValue & _rho
Definition: DistributedForce.h:40
DistributedForce.h
DistributedForce
The DistributedForce kernel computes the body force due to the acceleration of mass in an element.
Definition: DistributedForce.h:27
DistributedForce::_rho_var_number
unsigned int _rho_var_number
Definition: DistributedForce.h:39