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 }
1.5.5