25 #ifndef UQ_GENERIC_VECTOR_FUNCTION_H
26 #define UQ_GENERIC_VECTOR_FUNCTION_H
28 #include <queso/Environment.h>
29 #include <queso/DistArray.h>
30 #include <queso/VectorSet.h>
31 #include <queso/VectorFunction.h>
46 template <
class P_V = GslVector,
class P_M = GslMatrix,
class Q_V = GslVector,
class Q_M = GslMatrix>
59 void (*routinePtr)(
const P_V& domainVector,
60 const P_V* domainDirection,
61 const void* functionDataPtr,
66 const void* functionDataPtr);
73 void compute (
const P_V& domainVector,
75 const P_V* domainDirection,
89 const P_V* domainDirection,
90 const void* functionDataPtr,
105 #endif // UQ_GENERIC_VECTOR_FUNCTION_H
A templated (base) class for handling vector functions.
virtual ~GenericVectorFunction()
Virtual destructor.
const void * m_routineDataPtr
const VectorSet< Q_V, Q_M > & imageSet() const
Access to the protected attribute m_imageSet: image set of the vector function/ It is an instance of ...
A class for handling generic vector functions.
void compute(const P_V &domainVector, const P_V *domainDirection, Q_V &imageVector, DistArray< P_V * > *gradVectors, DistArray< P_M * > *hessianMatrices, DistArray< P_V * > *hessianEffects) const
Calls the protected member *m_routinePtr(), in order to calculate the image vector imageVector...
A class for partitioning vectors and matrices.
GenericVectorFunction(const char *prefix, const VectorSet< P_V, P_M > &domainSet, const VectorSet< Q_V, Q_M > &imageSet, void(*routinePtr)(const P_V &domainVector, const P_V *domainDirection, const void *functionDataPtr, Q_V &imageVector, DistArray< P_V * > *gradVectors, DistArray< P_M * > *hessianMatrices, DistArray< P_V * > *hessianEffects), const void *functionDataPtr)
Default constructor.
const VectorSet< P_V, P_M > & domainSet() const
Access to the protected attribute m_domainSet: domain set of the vector function. It is an instance o...
if the work is an executable linked with the with the complete machine readable work that uses the as object code and or source so that the user can modify the Library and then relink to produce a modified executable containing the modified rather than copying library functions into the if the user installs as long as the modified version is interface compatible with the version that the work was made with c Accompany the work with a written valid for at least three to give the same user the materials specified in for a charge no more than the cost of performing this distribution d If distribution of the work is made by offering access to copy from a designated offer equivalent access to copy the above specified materials from the same place e Verify that the user has already received a copy of these materials or that you have already sent this user a copy For an the required form of the work that uses the Library must include any data and utility programs needed for reproducing the executable from it as a special the materials to be distributed need not include anything that is normally and so on of the operating system on which the executable unless that component itself accompanies the executable It may happen that this requirement contradicts the license restrictions of other proprietary libraries that do not normally accompany the operating system Such a contradiction means you cannot use both them and the Library together in an executable that you distribute You may place library facilities that are a work based on the Library side by side in a single library together with other library facilities not covered by this and distribute such a combined provided that the separate distribution of the work based on the Library and of the other library facilities is otherwise and provided that you do these two uncombined with any other library facilities This must be distributed under the terms of the Sections above b Give prominent notice with the combined library of the fact that part of it is a work based on the and explaining where to find the accompanying uncombined form of the same work You may not link or distribute the Library except as expressly provided under this License Any attempt otherwise to link or distribute the Library is void
void(* m_routinePtr)(const P_V &domainVector, const P_V *domainDirection, const void *functionDataPtr, Q_V &imageVector, DistArray< P_V * > *gradVectors, DistArray< P_M * > *hessianMatrices, DistArray< P_V * > *hessianEffects)
Routine defining a vector-valued function.