https://mooseframework.inl.gov
Loading...
Searching...
No Matches
InertialForce.h
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#pragma once
11
12#include "TimeKernel.h"
13#include "ADTimeKernel.h"
14#include "Material.h"
15
16// Forward Declarations
17class TimeIntegrator;
18
19// parent class
20template <bool is_ad>
21using InertialForceParent = typename std::conditional<is_ad, ADTimeKernel, TimeKernel>::type;
22
23template <bool is_ad>
25{
26public:
28
29 InertialForceTempl(const InputParameters & parameters);
30
31 static std::pair<GenericReal<is_ad>, GenericReal<is_ad>>
33 const Real u_old,
34 const Real vel_old,
35 const Real accel_old,
36 const Real beta,
37 const Real gamma,
38 const Real dt);
39
40protected:
42
43 virtual Real computeQpJacobian();
44
46
47private:
52 const bool _has_beta;
53 const bool _has_gamma;
54 const Real _beta;
55 const Real _gamma;
56 const bool _has_velocity;
60 const Real _alpha;
61
62 // Velocity and acceleration calculated by time integrator
70
73
74 using InertialForceParent<is_ad>::_dt;
75 using InertialForceParent<is_ad>::_i;
76 using InertialForceParent<is_ad>::_phi;
77 using InertialForceParent<is_ad>::_qp;
78 using InertialForceParent<is_ad>::_sys;
79 using InertialForceParent<is_ad>::_test;
80 using InertialForceParent<is_ad>::_u;
81 using InertialForceParent<is_ad>::_var;
82};
83
typename std::conditional< is_ad, ADTimeKernel, TimeKernel >::type InertialForceParent
typename GenericMaterialPropertyStruct< T, is_ad >::type GenericMaterialProperty
Moose::GenericType< Real, is_ad > GenericReal
const bool _has_gamma
const TimeIntegrator & _time_integrator
The TimeIntegrator.
const VariableValue * _u_dot_old
const GenericMaterialProperty< Real, is_ad > & _eta
static InputParameters validParams()
const VariableValue * _u_dot_factor
const VariableValue * _accel_old
virtual Real computeQpJacobian()
const bool _has_velocity
const VariableValue * _u_old
const VariableValue * _du_dot_du
const VariableValue * _u_dotdot_factor
const MaterialProperty< Real > & _density_scaling
const VariableValue * _vel_old
static std::pair< GenericReal< is_ad >, GenericReal< is_ad > > computeNewmarkBetaVelAccel(const GenericReal< is_ad > &u, const Real u_old, const Real vel_old, const Real accel_old, const Real beta, const Real gamma, const Real dt)
virtual GenericReal< is_ad > computeQpResidual()
const VariableValue * _u_dot_factor_dof
const VariableValue * _u_dotdot_factor_dof
const GenericMaterialProperty< Real, is_ad > & _density
virtual void computeResidualAdditional()
const bool _has_acceleration
const VariableValue * _du_dotdot_du
VariableValueTempl< false > VariableValue