testrecobjective.cpp

Go to the documentation of this file.
00001 #include <iostream>
00002 #include "AbsVelRecObjective.h"
00003 #include "SurfaceWaveData.h"
00004 #include "ResPkModel.h"
00005 #include "SeismicDataComp.h"
00006 #include "CCalcRecConf.h"
00007 #include <string>
00008 #include <boost/bind.hpp>
00009 #include "SeisTools.h"
00010 using namespace std;
00011 int main()
00012 {
00013         string datafilename, modelfilename;
00014         cout << "Base for Datafiles: ";
00015         cin >> datafilename;
00016         cout << "Name of Modelfile: ";
00017         cin >> modelfilename;
00018         double slowness;
00019         cout << "Slowness: ";
00020         cin >> slowness;
00021         CCalcRecConf Config;
00022         Config.GetData("calcrec.conf");
00023         SurfaceWaveData SurfData;
00024         boost::shared_ptr<const SeismicDataComp> RecData(new SeismicDataComp(datafilename+".rec", SeismicDataComp::sac));
00025          Normalize(const_cast<SeismicDataComp*>(RecData.get())->GetData());
00026         SurfData.ReadAscii(datafilename+".vel");
00027         ResPkModel Model;
00028         Model.GetData(modelfilename);
00029 
00030         AbsVelRecObjective SeisObjective(RecData,SurfData,Config.shift,Config.sigma,Config.cc,slowness,RecCalc::iterdecon);
00031 
00032         SeisObjective.SetFitExponent(2);
00033         SeisObjective.SetPoisson(1.7320508);
00034         SeisObjective.SetErrorLevel(0.02);
00035         SeisObjective.SetAbsVelWeight(1);
00036         SeisObjective.SetRecWeight(0);
00037         SeisObjective.SetTimeWindow(0,40);
00038         const unsigned int nlayers = Model.GetThickness().size();
00039         const unsigned int nparams = nlayers * 2;
00040         ttranscribed member(nparams);
00041         for (unsigned i = 0; i < nlayers; ++i)
00042         {
00043                 member(i) = Model.SetThickness().at(i);
00044                 member(i+nlayers) = Model.SetSVelocity().at(i);
00045         }
00046         cout << "Misfit: " << SeisObjective.CalcPerformance(member) << endl;
00047         SeisObjective.WriteData("obj");
00048         SeisObjective.WriteModel("obj.mod");
00049 }

Generated on Mon Sep 15 12:54:34 2008 for GPLIB++ by  doxygen 1.5.5