23 using HessianFunction = std::function<DofMatrix<double>(
const CellIpData&,
double t,
double dt)>;
24 using UpdateFunction = std::function<void(const CellIpData&, double t, double dt)>;
46 using UpdatePair = std::pair<Group<CellInterface>,
UpdateFunction>;
48 std::vector<GradientPair> mGradientFunctions;
49 std::vector<Hessian0Pair> mHessian0Functions;
50 std::vector<UpdatePair> mUpdateFunctions;
72 template <
typename TObject,
typename TReturn>
73 static auto Bind_dt(TObject&
object, TReturn (TObject::*f)(
const CellIpData&,
double dt))
75 return [&object, f](
const CellIpData& cellIpData, double,
double dt) {
return (
object.*f)(cellIpData, dt); };
79 template <
typename TObject,
typename TReturn>
82 return [&object, f](
const CellIpData& cellIpData,
double t, double) {
return (
object.*f)(cellIpData, t); };
86 template <
typename TObject,
typename TReturn>
89 return [&object, f](
const CellIpData& cellIpData, double, double) {
return (
object.*f)(cellIpData); };
static auto Bind(TObject &object, TReturn(TObject::*f)(const NuTo::CellIpData &))
binds nothing
Definition: TimeDependentProblem.h:87
void AddUpdateFunction(Group< CellInterface > group, UpdateFunction f)
Definition: TimeDependentProblem.cpp:44
Performs our good old "NodeMerge" and should be replaced by any solution from issue #141 PDE nodal va...
Definition: NodalValueMerger.h:8
Definition: SimpleAssembler.h:11
static auto Bind_t(TObject &object, TReturn(TObject::*f)(const NuTo::CellIpData &, double t))
binds a t dependent integrand to a time dependent function
Definition: TimeDependentProblem.h:80
void AddGradientFunction(Group< CellInterface > group, GradientFunction f)
Definition: TimeDependentProblem.cpp:34
Similar to NuTo::CellData.
Definition: CellIpData.h:14
DofVector< double > Gradient(const DofVector< double > &dofValues, std::vector< DofType > dofs, double t, double dt)
Definition: TimeDependentProblem.cpp:56
TimeDependentProblem(MeshFem *rMesh)
Definition: TimeDependentProblem.cpp:6
std::function< DofMatrix< double >(const CellIpData &, double t, double dt)> HessianFunction
Definition: TimeDependentProblem.h:23
stores constraint equations, separated by their dof type
Definition: Constraints.h:47
std::function< void(const CellIpData &, double t, double dt)> UpdateFunction
Definition: TimeDependentProblem.h:24
Equation system that contains R(u, u') + M u'' = 0 with R = Gradient dR/du = Hessian0 dR/du' = Hessia...
Definition: TimeDependentProblem.h:18
std::function< DofVector< double >(const CellIpData &, double t, double dt)> GradientFunction
Definition: TimeDependentProblem.h:22
contains the nodes, elements and interpolations for a classic finite element mesh ...
Definition: MeshFem.h:16
DofVector< double > RenumberDofs(Constraint::Constraints constraints, std::vector< DofType > dofTypes, DofVector< double > oldDofValues)
Definition: TimeDependentProblem.cpp:11
DofMatrixSparse< double > Hessian0(const DofVector< double > &dofValues, std::vector< DofType > dofs, double t, double dt)
Definition: TimeDependentProblem.cpp:67
dof container that is also capable of performing calculations.
Definition: DofMatrixContainer.h:13
void AddHessian0Function(Group< CellInterface > group, HessianFunction f)
Definition: TimeDependentProblem.cpp:39
Definition: Exception.h:6
void UpdateHistory(const DofVector< double > &dofValues, std::vector< DofType > dofs, double t, double dt)
Definition: TimeDependentProblem.cpp:78
static auto Bind_dt(TObject &object, TReturn(TObject::*f)(const CellIpData &, double dt))
binds a dt dependent integrand to a time dependent function
Definition: TimeDependentProblem.h:73