queso-0.53.0
GenericVectorFunction.h
Go to the documentation of this file.
1 //-----------------------------------------------------------------------bl-
2 //--------------------------------------------------------------------------
3 //
4 // QUESO - a library to support the Quantification of Uncertainty
5 // for Estimation, Simulation and Optimization
6 //
7 // Copyright (C) 2008-2015 The PECOS Development Team
8 //
9 // This library is free software; you can redistribute it and/or
10 // modify it under the terms of the Version 2.1 GNU Lesser General
11 // Public License as published by the Free Software Foundation.
12 //
13 // This library is distributed in the hope that it will be useful,
14 // but WITHOUT ANY WARRANTY; without even the implied warranty of
15 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
16 // Lesser General Public License for more details.
17 //
18 // You should have received a copy of the GNU Lesser General Public
19 // License along with this library; if not, write to the Free Software
20 // Foundation, Inc. 51 Franklin Street, Fifth Floor,
21 // Boston, MA 02110-1301 USA
22 //
23 //-----------------------------------------------------------------------el-
24 
25 #ifndef UQ_GENERIC_VECTOR_FUNCTION_H
26 #define UQ_GENERIC_VECTOR_FUNCTION_H
27 
28 #include <queso/Environment.h>
29 #include <queso/DistArray.h>
30 #include <queso/VectorSet.h>
31 #include <queso/VectorFunction.h>
32 
33 namespace QUESO {
34 
35 class GslVector;
36 class GslMatrix;
37 
46 template <class P_V = GslVector, class P_M = GslMatrix, class Q_V = GslVector, class Q_M = GslMatrix>
47 class GenericVectorFunction : public BaseVectorFunction<P_V,P_M,Q_V,Q_M> {
48 public:
50 
51 
53 
56  GenericVectorFunction(const char* prefix,
59  void (*routinePtr)(const P_V& domainVector,
60  const P_V* domainDirection,
61  const void* functionDataPtr,
62  Q_V& imageVector,
63  DistArray<P_V*>* gradVectors,
64  DistArray<P_M*>* hessianMatrices,
65  DistArray<P_V*>* hessianEffects),
66  const void* functionDataPtr);
68  virtual ~GenericVectorFunction();
69 
70 
72 
73  void compute (const P_V& domainVector,
75  const P_V* domainDirection,
76  Q_V& imageVector,
77  DistArray<P_V*>* gradVectors, // Yes, 'P_V'
78  DistArray<P_M*>* hessianMatrices, // Yes, 'P_M'
79  DistArray<P_V*>* hessianEffects) const;
81 
82 protected:
84 
88  void (*m_routinePtr)(const P_V& domainVector,
89  const P_V* domainDirection,
90  const void* functionDataPtr,
91  Q_V& imageVector,
92  DistArray<P_V*>* gradVectors,
93  DistArray<P_M*>* hessianMatrices,
94  DistArray<P_V*>* hessianEffects);
95  const void* m_routineDataPtr;
96 
101 };
102 
103 } // End namespace QUESO
104 
105 #endif // UQ_GENERIC_VECTOR_FUNCTION_H
A templated (base) class for handling vector functions.
virtual ~GenericVectorFunction()
Virtual destructor.
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.
Definition: DistArray.h:56
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
Definition: License.txt:320
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.

Generated on Thu Jun 11 2015 13:52:31 for queso-0.53.0 by  doxygen 1.8.5