www.mooseframework.org
ExplicitEuler.h
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 #pragma once
11 
12 #include "TimeIntegrator.h"
13 
14 class ExplicitEuler;
15 
16 template <>
18 
23 {
24 public:
26 
28 
29  virtual void preSolve() override;
30  virtual int order() override { return 1; }
31  virtual void computeTimeDerivatives() override;
32  void computeADTimeDerivatives(DualReal & ad_u_dot, const dof_id_type & dof) const override;
33  virtual void postResidual(NumericVector<Number> & residual) override;
34 
35 protected:
39  template <typename T, typename T2>
40  void computeTimeDerivativeHelper(T & u_dot, const T2 & u_old) const;
41 };
42 
43 template <typename T, typename T2>
44 void
45 ExplicitEuler::computeTimeDerivativeHelper(T & u_dot, const T2 & u_old) const
46 {
47  u_dot -= u_old;
48  u_dot *= 1. / _dt;
49 }
50 
TimeIntegrator::_dt
Real & _dt
Definition: TimeIntegrator.h:156
ExplicitEuler
Explicit Euler time integrator.
Definition: ExplicitEuler.h:22
validParams< ExplicitEuler >
InputParameters validParams< ExplicitEuler >()
ExplicitEuler::ExplicitEuler
ExplicitEuler(const InputParameters &parameters)
Definition: ExplicitEuler.C:26
TimeIntegrator
Base class for time integrators.
Definition: TimeIntegrator.h:43
MooseObject::parameters
const InputParameters & parameters() const
Get the parameters of the object.
Definition: MooseObject.h:76
DualReal
DualNumber< Real, DNDerivativeType > DualReal
Definition: DualReal.h:52
InputParameters
The main MOOSE class responsible for handling user-defined parameters in almost every MOOSE system.
Definition: InputParameters.h:53
ExplicitEuler::preSolve
virtual void preSolve() override
Definition: ExplicitEuler.C:29
ExplicitEuler::order
virtual int order() override
Definition: ExplicitEuler.h:30
ExplicitEuler::computeTimeDerivatives
virtual void computeTimeDerivatives() override
Computes the time derivative and the Jacobian of the time derivative.
Definition: ExplicitEuler.C:38
TimeIntegrator.h
ExplicitEuler::computeTimeDerivativeHelper
void computeTimeDerivativeHelper(T &u_dot, const T2 &u_old) const
Helper function that actually does the math for computing the time derivative.
Definition: ExplicitEuler.h:45
ExplicitEuler::postResidual
virtual void postResidual(NumericVector< Number > &residual) override
Callback to the TimeIntegrator called immediately after the residuals are computed in NonlinearSystem...
Definition: ExplicitEuler.C:59
ExplicitEuler::computeADTimeDerivatives
void computeADTimeDerivatives(DualReal &ad_u_dot, const dof_id_type &dof) const override
method for computing local automatic differentiation time derivatives
Definition: ExplicitEuler.C:53
ExplicitEuler::validParams
static InputParameters validParams()
Definition: ExplicitEuler.C:19