intlf.cpp

Go to the documentation of this file.
00001 #include <iostream>
00002 #include <string>
00003 #include "ThreeDMTModel.h"
00004 #include <fstream>
00005 
00006 using namespace std;
00007 /*! /file
00008  * Plot the integrated conductivity of a 3D Model up to a certain depth.
00009  */
00010 int main(void)
00011 {
00012         C3DModel *Model;
00013         string infilename,outfilename;
00014         double maxdepth;
00015         const double kmlatitude = 111194;
00016         const double kmlongitude = 71474;       
00017         /*const double xmin = 48;
00018         const double ymin = 2.;*/
00019         //const double xmin = 44.5;
00020         //const double ymin = -1.;
00021         double xmin, ymin;
00022         int mode;
00023                 
00024         cout << "Modelfile: ";
00025         cin >> infilename;
00026         cout << "Type 1 for old Mackie, 2 for Winglink: ";
00027         cin  >> mode;
00028         cout << "Depth: ";
00029         cin >> maxdepth;
00030         cout << "Xmin in degree: ";
00031         cin >> xmin;
00032         cout << "Ymin in degree: ";
00033         cin >> ymin;
00034         cout << "Outfile: ";
00035         cin >> outfilename;
00036         if (mode == 1)
00037                 Model = new 3DMackieModel;
00038         else
00039                 Model = new C3DWinglink;
00040         Model->GetData(infilename);
00041         Array<double,2> SumCond(Model->xsize.size(),Model->ysize.size());
00042         Array<double,1> xscale(Model->xsize.size()), yscale(Model->ysize.size());
00043         SumCond = 0;
00044         double currentdepth = 0;
00045         int layerindex = 0;
00046         while (currentdepth < maxdepth)
00047         {       
00048                 for (int i = 0; i < Model->xsize.size(); ++i)
00049                         for (int j = 0; j < Model->ysize.size(); ++j)
00050                                 SumCond(i,j) += 1./Model->Resistivities(Model->Model(i,j,layerindex)) * Model->zsize(layerindex);
00051                 currentdepth += Model->zsize(layerindex)/1000;
00052                 cout << currentdepth << endl;
00053                 ++layerindex;
00054         }
00055         xscale = 0;
00056         yscale = 0;
00057         for (int i = 1; i < Model->xsize.size(); ++i)
00058                 xscale(i) = xscale(i-1) + Model->xsize(i-1);
00059         for (int i = 1; i < Model->ysize.size(); ++i)
00060                 yscale(i) = yscale(i-1) + Model->ysize(i-1);
00061         ofstream outfile(outfilename.c_str());
00062         for (int i = 0; i < Model->xsize.size(); ++i)
00063                         for (int j = 0; j < Model->ysize.size(); ++j)
00064                         {
00065                                 outfile << ymin + yscale(j)/kmlongitude << " " << xmin + xscale(i)/kmlatitude << " " << SumCond(i,j) << endl; 
00066                         }
00067 }

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