https://mooseframework.inl.gov
Loading...
Searching...
No Matches
ExplicitEuler.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 "ExplicitEuler.h"
11#include "NonlinearSystem.h"
12#include "FEProblem.h"
13
15
18{
20 params.addClassDescription("Time integration using the explicit Euler method.");
21 return params;
22}
23
25
26void
34
35void
37{
38 if (!_sys.solutionUDot())
39 mooseError("ExplicitEuler: Time derivative of solution (`u_dot`) is not stored. Please set "
40 "uDotRequested() to true in FEProblemBase before requesting `u_dot`.");
41
42 NumericVector<Number> & u_dot = *_sys.solutionUDot();
43 u_dot = *_solution;
45 u_dot.close();
47}
48
49void
51 const dof_id_type & dof,
52 ADReal & /*ad_u_dotdot*/) const
53{
55}
56
57void
58ExplicitEuler::postResidual(NumericVector<Number> & residual)
59{
60 residual += *_Re_time;
61 residual += *_Re_non_time;
62 residual.close();
63}
DualNumber< Real, DNDerivativeType, true > ADReal
registerMooseObject("MooseApp", ExplicitEuler)
Explicit Euler time integrator.
ExplicitEuler(const InputParameters &parameters)
static InputParameters validParams()
void computeADTimeDerivatives(ADReal &ad_u_dot, const dof_id_type &dof, ADReal &ad_u_dotdot) const override
method for computing local automatic differentiation time derivatives
void computeTimeDerivativeHelper(T &u_dot, const T2 &u_old) const
Helper function that actually does the math for computing the time derivative.
virtual void preSolve() override
virtual void computeTimeDerivatives() override
Computes the time derivative and the Jacobian of the time derivative.
virtual void postResidual(NumericVector< Number > &residual) override
Callback to the NonLinearTimeIntegratorInterface called immediately after the residuals are computed ...
void setConstJacobian(bool state)
Set flag that Jacobian is constant (for optimization purposes)
The main MOOSE class responsible for handling user-defined parameters in almost every MOOSE system.
void addClassDescription(const std::string &doc_string)
This method adds a description of the class that will be displayed in the input file syntax dump.
void mooseError(Args &&... args) const
Emits an error prefixed with object name and type and optionally a file path to the top-level block p...
Definition MooseBase.h:271
NumericVector< Number > * _Re_non_time
residual vector for non-time contributions
NumericVector< Number > * _Re_time
residual vector for time contributions
virtual NumericVector< Number > * solutionUDot()
Definition SystemBase.h:280
Base class for time integrators.
void computeDuDotDu()
Compute _du_dot_du.
Real & _dt_old
The previous time step size.
const NumericVector< Number > *const & _solution
static InputParameters validParams()
FEProblemBase & _fe_problem
Reference to the problem.
SystemBase & _sys
Reference to the system this time integrator operates on.
Real & _dt
The current time step size.
const NumericVector< Number > & _solution_old
virtual void close()=0