Multi1DRecObjective.h

Go to the documentation of this file.
00001 #ifndef MULTI1DRECOBJECTIVE_H_
00002 #define MULTI1DRECOBJECTIVE_H_
00003 
00004 #include "PlottableObjective.h"
00005 #include <vector>
00006 #include "C1DRecObjective.h"
00007 #include "AbsVelRecObjective.h"
00008 #include <boost/shared_ptr.hpp>
00009 
00010 namespace gplib
00011   {
00012     //! This class is used to model several receiver functions simultaneously
00013     class Multi1DRecObjective: public PlottableObjective
00014       {
00015     private:
00016       std::vector<boost::shared_ptr<C1DRecObjective> > Objectives;
00017     public:
00018       //! return a pointer to a copy of the current object
00019       virtual Multi1DRecObjective *clone() const
00020         {
00021           return new Multi1DRecObjective(*this);
00022         }
00023       //! Set the start and end time in s for the part we want to fit
00024       void SetTimeWindow(const double start, const double end);
00025       //! Set Poisson's ratio to calculate P velocities from S-Velocities
00026       void SetPoisson(const double ratio);
00027       //! Add another reciever function to fit
00028       void AddRecFunction(boost::shared_ptr<const SeismicDataComp> TheRecData,
00029           const int myshift, const double mysigma, const double myc,
00030           const double myslowness, const RecCalc::trfmethod method,
00031           const double errorlevel, const bool normalized);
00032       //! Add another receiver function with absolute velocity transformation
00033       void AddAbsVelFunction(
00034           boost::shared_ptr<const SeismicDataComp> TheRecData,
00035           SurfaceWaveData &AbsVel, const int myshift, const double mysigma,
00036           const double myc, const double myslowness,
00037           const RecCalc::trfmethod method, const double errorlevel,
00038           const bool normalized, const double absvelweight,
00039           const double recweight);
00040       //! The operations that have to be done before the parallel part
00041       virtual void PreParallel(const ttranscribed &member);
00042       //! The operations that have to be done after the parallel part
00043       virtual double PostParallel(const ttranscribed &member);
00044       //! The operations that safely can be done in parallel
00045       virtual void SafeParallel(const ttranscribed &member);
00046       //! Write out all the data, endings will be appended automatically
00047       virtual void WriteData(const std::string &filename);
00048       //! Write the current model to ascii file for calculations
00049       void WriteModel(const std::string &filename);
00050       //! Write the current model to ascii file for plotting
00051       void WritePlot(const std::string &filename);
00052       Multi1DRecObjective(const Multi1DRecObjective &Old);
00053       Multi1DRecObjective& operator=(const Multi1DRecObjective& source);
00054       Multi1DRecObjective();
00055       virtual ~Multi1DRecObjective();
00056       };
00057   }
00058 #endif /*MULTI1DRECOBJECTIVE_H_*/

Generated on Tue Nov 3 13:24:14 2009 for GPLIB++ by  doxygen 1.5.8