00001 #include <iostream>
00002 #include "AnisoSurfaceWaveObjective.h"
00003 #include "MultiAnisoSurfaceWaveObjective.h"
00004 #include "AnisoSurfaceWaveModel.h"
00005 #include "ParkSurfaceWaveData.h"
00006 #include <string>
00007 #include "Util.h"
00008 #include <fstream>
00009 using namespace std;
00010 int main()
00011 {
00012 string datafilename, modelfilename;
00013 datafilename = AskFilename("Name of Datafile: ");
00014 modelfilename = AskFilename("Name of Modelfile:");
00015
00016 ParkSurfaceWaveData Data;
00017 Data.ReadFile(datafilename);
00018 AnisoSurfaceWaveModel Model;
00019 Model.ReadModel(modelfilename);
00020 AnisoSurfaceWaveObjective SeisObjective(Data,0.0);
00021
00022 const unsigned int nlayers = Model.GetVs().size();
00023 const unsigned int nparams = nlayers * 6;
00024 ttranscribed member(nparams);
00025 for (unsigned i = 0; i < nlayers; ++i)
00026 {
00027 member(i) = Model.GetThicknesses().at(i);
00028 member(i+nlayers) = Model.GetVs().at(i);
00029 member(i+2*nlayers) = Model.GetPhi().at(i);
00030 member(i+3*nlayers) = 0.0;
00031 member(i+4*nlayers) = 1.0;
00032 member(i+5*nlayers) = Model.GetB().at(i);
00033 }
00034 cout << "Individual Misfit: " << SeisObjective.CalcPerformance(member) << endl;
00035
00036 MultiAnisoSurfaceWaveObjective MultiObjective;
00037 MultiObjective.AddMeasurement(Data,0.0);
00038 cout << "Individual Misfit: " << MultiObjective.CalcPerformance(member) << endl;
00039
00040 std::ofstream inputdatafile("inputdata.out");
00041 copy(Data.GetCVel().back().begin(), Data.GetCVel().back().end(), std::ostream_iterator<double>(inputdatafile,"\n"));
00042 std::ofstream synthdatafile("synthdata.out");
00043 copy(SeisObjective.GetSynthetic().GetCVel().back().begin(),SeisObjective.GetSynthetic().GetCVel().back().end(),std::ostream_iterator<double>(synthdatafile,"\n"));
00044 }