20#ifndef STATE_DEPENDENT_FUNCTION_H_
21#define STATE_DEPENDENT_FUNCTION_H_
23#include "mbsim/functions/function.h"
29 using B = fmatvec::Function<Ret(fmatvec::VecV,
double)>;
36 int getArg1Size()
const override {
return f->getArgSize();}
37 int getArg2Size()
const override {
return 0; }
38 std::pair<int, int> getRetSize()
const override {
return f->getRetSize(); }
39 Ret operator()(
const fmatvec::VecV &arg1,
const double &arg2)
override {
return (*f)(arg1); }
40 typename B::DRetDArg1 parDer1(
const fmatvec::VecV &arg1,
const double &arg2)
override {
return f->parDer(arg1); }
41 typename B::DRetDArg2 parDer2(
const fmatvec::VecV &arg1,
const double &arg2)
override {
return typename B::DRetDArg2(n); }
42 typename B::DRetDArg2 parDer2DirDer1(
const fmatvec::VecV &arg1Dir,
const fmatvec::VecV &arg1,
const double &arg2)
override {
return typename B::DRetDArg2(n); }
43 typename B::DRetDArg2 parDer2DirDer2(
const double &arg2Dir,
const fmatvec::VecV &arg1,
const double &arg2)
override {
return typename B::DRetDArg2(n); }
44 typename B::DRetDArg1 parDer1DirDer1(
const fmatvec::VecV &arg1Dir,
const fmatvec::VecV &arg1,
const double &arg2)
override {
return f->parDerDirDer(arg1Dir,arg1); }
45 typename B::DRetDArg1 parDer1DirDer2(
const double &arg2Dir,
const fmatvec::VecV &arg1,
const double &arg2)
override {
return typename B::DRetDArg1(n,getArg1Size()); }
46 bool constParDer1()
const override {
return f->constParDer(); }
47 bool constParDer2()
const override {
return true; }
48 Function<Ret(fmatvec::VecV)>* getFunction()
const {
return f; }
51 f->
init(stage, config);
53 n = f->getRetSize().first;
59 void setParent(
Element *element)
override {
60 Function<Ret(fmatvec::VecV,
double)>::setParent(element);
61 if(f) f->setParent(element);
solver interface for modelling and simulation of dynamic systems
Definition: dynamic_system_solver.h:61
basic class of MBSim mainly for plotting
Definition: element.h:57
virtual void init(InitStage stage, const InitConfigSet &config=InitConfigSet())
plots time series header
Definition: element.cc:86
virtual void setDynamicSystemSolver(DynamicSystemSolver *sys)
sets the used dynamics system solver to the element
Definition: element.h:92
InitStage
The stages of the initialization.
Definition: element.h:63
@ preInit
Definition: element.h:65
Definition: function.h:53
Definition: state_dependent_function.h:28
void setDynamicSystemSolver(DynamicSystemSolver *sys) override
sets the used dynamics system solver to the element
Definition: state_dependent_function.h:55
void init(Element::InitStage stage, const InitConfigSet &config) override
plots time series header
Definition: state_dependent_function.h:49
namespace MBSim
Definition: bilateral_constraint.cc:30