2 #include <boost/numeric/ublas/matrix_proxy.hpp>
3 #include <boost/numeric/ublas/vector_proxy.hpp>
4 #include <boost/bind.hpp>
13 const double mysigma,
const double myc,
const double myslowness) :
14 recweight(1),
RecObjective(TheRecData, myshift, myomega, mysigma, myc,
26 const int nlayers = member.size() / 3;
27 ttranscribed mtmember(nlayers * 2), recmember(nlayers * 2);
28 mtmember = ublas::project(member, ublas::range(0, nlayers * 2));
29 recmember = ublas::project(member, ublas::range(nlayers, nlayers * 3));
47 SetRMS(mtperf + recweight * recperf);
49 return mtperf + recweight * recperf;
ublas::vector< double > ttranscribed
double CalcPerformance(const ttranscribed &member)
For serial execution CalcPerformance calls the three Parallel functions for more convenient use...
boost::shared_ptr< PlottableObjective > MTObjective
virtual ~MTRecObjective()
const tdata & GetSynthData()
Return the current synthetic data.
C1DRecObjective RecObjective(RecData, Configuration.shift, Configuration.omega, Configuration.sigma, Configuration.wlevel, Configuration.slowness)
const tmisfit & GetMisfit()
Return the misfit vector.
tdata & SetSynthData()
Only derived classes can write access the Synthetic data.
tmisfit & SetMisfit()
Only derived classes can write access the Misfit.
MTRecObjective(const CMTStation &LocalMTData, SeismicDataComp &TheRecData, const int myshift, const double myomega, const double mysigma, const double myc, const double myslowness)
virtual double PostParallel(const ttranscribed &member)
Some operations cannot be done in parallel, these are done after, returns the misfit value...
void SetRMS(const double x)