www.mooseframework.org
ActuallyExplicitEuler.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 "ExplicitTimeIntegrator.h"
13 
19 {
20 public:
22 
24 
25  virtual int order() override { return 1; }
26  virtual void computeTimeDerivatives() override;
27  void computeADTimeDerivatives(DualReal & ad_u_dot,
28  const dof_id_type & dof,
29  DualReal & ad_u_dotdot) const override;
30  virtual void solve() override;
31  virtual void postResidual(NumericVector<Number> & residual) override;
32 
33 protected:
37  template <typename T, typename T2>
38  void computeTimeDerivativeHelper(T & u_dot, const T2 & u_old) const;
39 
40  const bool & _constant_mass;
41 };
42 
43 template <typename T, typename T2>
44 void
45 ActuallyExplicitEuler::computeTimeDerivativeHelper(T & u_dot, const T2 & u_old) const
46 {
47  u_dot -= u_old;
48  u_dot *= 1. / _dt;
49 }
void computeADTimeDerivatives(DualReal &ad_u_dot, const dof_id_type &dof, DualReal &ad_u_dotdot) const override
method for computing local automatic differentiation time derivatives
virtual void postResidual(NumericVector< Number > &residual) override
Callback to the TimeIntegrator called immediately after the residuals are computed in NonlinearSystem...
DualNumber< Real, DNDerivativeType, true > DualReal
Definition: DualReal.h:49
The main MOOSE class responsible for handling user-defined parameters in almost every MOOSE system...
static InputParameters validParams()
virtual int order() override
virtual void solve() override
Solves the time step and sets the number of nonlinear and linear iterations.
ActuallyExplicitEuler(const InputParameters &parameters)
void computeTimeDerivativeHelper(T &u_dot, const T2 &u_old) const
Helper function that actually does the math for computing the time derivative.
const InputParameters & parameters() const
Get the parameters of the object.
Implements a truly explicit (no nonlinear solve) first-order, forward Euler time integration scheme...
virtual void computeTimeDerivatives() override
Computes the time derivative and the Jacobian of the time derivative.
Base class for explicit time integrators that are implemented without using a nonlinear solver...
uint8_t dof_id_type