20 #ifndef _VECTOR_VALUED_FUNCTIONS_H_
21 #define _VECTOR_VALUED_FUNCTIONS_H_
23 #include "mbsim/functions/function.h"
30 template<
typename Ret>
36 for(std::vector<
Function<
double(
double)> *>::iterator it=component.begin(); it!=component.end(); ++it)
37 (*it)->setParent(
this);
40 for (
unsigned int i=1; i<component.size(); i++)
43 void addComponent(
Function<
double(
double)> *
function) {
44 component.push_back(
function);
45 function->setParent(
this);
47 Ret operator()(
const double &x) {
48 Ret y(component.size(),fmatvec::NONINIT);
49 for (
unsigned int i=0; i<component.size(); i++)
50 y(i)=(*component[i])(x);
53 typename B::DRetDArg parDer(
const double &x) {
54 typename B::DRetDArg y(component.size(),fmatvec::NONINIT);
55 for (
unsigned int i=0; i<component.size(); i++)
56 y(i)=component[i]->parDer(x);
59 typename B::DDRetDDArg parDerParDer(
const double &x) {
60 typename B::DDRetDDArg y(component.size(),fmatvec::NONINIT);
61 for (
unsigned int i=0; i<component.size(); i++)
62 y(i)=component[i]->parDerParDer(x);
66 void initializeUsingXML(xercesc::DOMElement *element) {
67 xercesc::DOMElement *e=MBXMLUtils::E(element)->getFirstElementChildNamed(MBSIM%
"components")->getFirstElementChild();
70 e=e->getNextElementSibling();
75 for(std::vector<
Function<
double(
double)> *>::iterator it=component.begin(); it!=component.end(); ++it)
79 std::vector<Function<double(double)> *> component;
83 template<
typename Ret,
typename Arg>
89 for(
typename std::vector<
Function<
double(Arg)>*>::iterator it=component.begin(); it!=component.end(); ++it)
90 (*it)->setParent(
this);
93 for (
unsigned int i=1; i<component.size(); i++)
96 void addComponent(
Function<
double(Arg)> *
function) {
97 component.push_back(
function);
98 function->setParent(
this);
100 Ret operator()(
const Arg &x) {
101 Ret y(component.size(),fmatvec::NONINIT);
102 for (
unsigned int i=0; i<component.size(); i++)
103 y(i)=(*component[i])(x);
106 typename B::DRetDArg parDer(
const Arg &x) {
107 typename B::DRetDArg y(component.size(),x.size(),fmatvec::NONINIT);
108 for (
unsigned int i=0; i<component.size(); i++) {
109 auto row=component[i]->parDer(x);
110 for (
int j=0; j<x.size(); j++)
116 void initializeUsingXML(xercesc::DOMElement *element) {
117 xercesc::DOMElement *e=MBXMLUtils::E(element)->getFirstElementChildNamed(MBSIM%
"components")->getFirstElementChild();
120 e=e->getNextElementSibling();
125 for(
typename std::vector<
Function<
double(Arg)> *>::iterator it=component.begin(); it!=component.end(); ++it)
129 std::vector<Function<double(Arg)> *> component;
void init(Element::InitStage stage)
plots time series header
Definition: vector_valued_function.h:73
InitStage
The stages of the initialization.
Definition: element.h:97
Definition: vector_valued_function.h:27
Definition: planar_contour.h:31
virtual void init(InitStage stage)
plots time series header
Definition: element.cc:70
static ContainerType * createAndInit(const xercesc::DOMElement *element)
Definition: objectfactory.h:87
void init(Element::InitStage stage)
plots time series header
Definition: vector_valued_function.h:123