00001
00002
00003
00004 #ifndef FivePointIntegration_h
00005 #define FivePointLegeIntegration_h
00006
00007 #include <Integration.h>
00008 #include <LikelihoodComputation.h>
00009
00010 #include "Serializable.h"
00011
00012
00013 namespace BIE {
00014
00015
00019 class FivePointIntegration : public Integration {
00020 public:
00021
00023 FivePointIntegration();
00024
00025
00027 FivePointIntegration(double desiredRelativeError);
00028
00030 ~FivePointIntegration();
00031
00032
00033
00034
00036 double NormValue(Model* m, Tile* t, SampleDistribution* d);
00038 vector<double> Value(Model* m, Tile* t, SampleDistribution* d);
00039
00040
00046 vector<double> Value(LikelihoodComputation* l, Model* m, Tile* t,
00047 SampleDistribution* d);
00048
00049
00053 double NormValue(Model* m, Tile* t, SampleDistribution* d,
00054 int irank, int nrank);
00055
00059 vector<double> Value(Model* m, Tile* t, SampleDistribution* d,
00060 int irank, int nrank, MPI_Comm &comm);
00061
00062 private:
00063 double desiredRelativeError;
00064 double estimatedError;
00065
00066
00067
00068
00069
00070 private:
00071 friend class boost::serialization::access;
00072 template<class Archive>
00073 void serialize(Archive & ar, const unsigned int version) {
00074 this->pre_serialize(ar, version);
00075 try {
00076 ar & BOOST_SERIALIZATION_BASE_OBJECT_NVP(Integration);
00077 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION;
00078 }
00079 try {
00080 ar & BOOST_SERIALIZATION_NVP(desiredRelativeError);
00081 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION;
00082 }
00083 try {
00084 ar & BOOST_SERIALIZATION_NVP(estimatedError);
00085 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION;
00086 }
00087 this->post_serialize(ar, version);
00088 }
00089
00090 };
00091
00092 }
00093 BIE_CLASS_TYPE_INFO(BIE::FivePointIntegration)
00094 BIE_CLASS_EXPORT_KEY(BIE::FivePointIntegration)
00095 #endif
00096
00097