enumerate.cpp

Go to the documentation of this file.
00001 #include <iostream>
00002 #include <fstream>
00003 #include <algorithm>
00004 #include <numeric>
00005 #include <boost/bind.hpp>
00006 #include <boost/shared_ptr.hpp>
00007 #include "Iso1DMTObjective.h"
00008 #include "MTStation.h"
00009 #include "C1DRecObjective.h"
00010 #include "SeismicDataComp.h"
00011 #include "gentypes.h"
00012 #include "convert.h"
00013 #include "NetCDFTools.h"
00014 #include "VecMat.h"
00015 #include "SeisTools.h"
00016 using namespace std;
00017 
00018 
00019 
00020 
00021 int main()
00022 {
00023         ofstream outfile;
00024         MTStation MTData;
00025 
00026 
00027         const int nlayers = 2;
00028         ttranscribed mtvalues(nlayers *2 ),recvalues(nlayers *2);
00029         double mtresult, recresult;
00030 
00031         MTData.GetData("nobias.mtt");
00032         boost::shared_ptr<const SeismicDataComp> RecData(new SeismicDataComp("smp.rec", SeismicDataComp::sac));
00033          Normalize(const_cast<SeismicDataComp*>(RecData.get())->GetData());
00034 
00035         outfile.open("misfit.2d");
00036         Iso1DMTObjective MTObjective(MTData);
00037         MTObjective.AppendFitParameters(&MTTensor::GetRhoxy, &MTTensor::GetdRhoxy, 0.05);
00038 
00039         C1DRecObjective RecObjective(RecData,0, 4.0, 0.001, 0.07);
00040         RecObjective.SetPoisson(sqrt(3.0));
00041         RecObjective.SetTimeWindow(1.0,30.0);
00042         RecObjective.SetErrorLevel(0.02);
00043 
00044         mtvalues(0) = 2;
00045         mtvalues(1) = 1.3;
00046         mtvalues(2) = 20;
00047         mtvalues(3) = 10;
00048         recvalues(0) = 20;
00049         recvalues(1) = 0;
00050         recvalues(2) = 3.46;
00051         recvalues(3) = 4.6;
00052         double jbase = 25;
00053         double velbase = 3.0;
00054         double resbase = 1.5;
00055         string filename;
00056         const int thicksteps = 50;
00057         const int velsteps = 100;
00058 
00059         gplib::rmat mtfit(thicksteps,velsteps), recfit(thicksteps,velsteps);
00060         gplib::rvec thicknesses(thicksteps), velocities(velsteps), resistivities(velsteps);
00061         ofstream recthick("rec.thick");
00062         for (int j = 0; j < thicksteps; ++j)
00063         {
00064                         double currthick =jbase + 0.5*j;
00065 
00066                         mtvalues(2) = currthick;
00067                         recvalues(0) = currthick;
00068                         thicknesses(j) =currthick;
00069                         cout << "J: " << j << endl;
00070                         for (int k = 0; k < velsteps; ++k)
00071                         {
00072                                 double currres = resbase + 0.01*k;
00073                                 double currvel = velbase + 0.01*k;
00074                                 velocities(k) = currvel;
00075                                 resistivities(k) = currres;
00076                                 mtvalues(0) = currres;
00077                                 recvalues(2) = currvel;
00078                                 //cout << currvel << endl;
00079                                 filename = "out"+stringify(currthick)+stringify(currvel);
00080                                 recresult = RecObjective.CalcPerformance(recvalues);
00081                                 mtresult = MTObjective.CalcPerformance(mtvalues);
00082                                 recfit(j,k) = recresult;
00083                                 mtfit(j,k) = mtresult;
00084                                 RecObjective.WriteData(filename+".rec");
00085                                 RecObjective.WriteModel(filename+".mod");
00086                         }
00087                         outfile << endl << endl;
00088         }
00089         Write2DDataAsNetCDF("mt.nc",mtfit, thicknesses, resistivities,"Thickness", "Resistivity", "Misfit");
00090         Write2DDataAsNetCDF("rec.nc",recfit, thicknesses, velocities,"Thickness", "Velocity", "Misfit");
00091         outfile.close();
00092 }

Generated on Tue Aug 4 16:04:06 2009 for GPLIB++ by  doxygen 1.5.8