All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Defines
Public Member Functions
QGpCoreWave::ShAmplification Class Reference

Brief description of class still missing. More...

#include <ShAmplification.h>

List of all members.

Public Member Functions

Curve< Point2Dcurve (int fcount, double fmax, float theta)
 ShAmplification (const Seismic1DModel *model)

Detailed Description

Brief description of class still missing.

Full description of class still missing


Constructor & Destructor Documentation

{_model=model;}

Member Function Documentation

Curve< Point2D > QGpCoreWave::ShAmplification::curve ( int  fcount,
double  fmax,
float  theta 
)

Kennett method for computation of transfert function

References QGpCoreWave::Seismic1DModel::h(), QGpCoreWave::Seismic1DModel::layerCount(), QGpCoreWave::Seismic1DModel::qp(), QGpCoreWave::Seismic1DModel::qs(), QGpCoreWave::Seismic1DModel::rho(), QGpCoreTools::Point2D::setX(), QGpCoreTools::Point2D::setY(), QGpCoreWave::Seismic1DModel::slowP(), and QGpCoreWave::Seismic1DModel::slowS().

{
  // This first version use a code in fortran to calculate the transfert function
  float *fr, *u1, *v1, *w3, *al0, *be0, *dens, *th, *qp, *qs, ffmax;
  fr=new float[fcount];
  u1=new float[fcount];
  v1=new float[fcount];
  w3=new float[fcount];
  al0=new float[_model->layerCount()];
  be0=new float[_model->layerCount()];
  dens=new float[_model->layerCount()];
  th=new float[_model->layerCount()];
  qp=new float[_model->layerCount()];
  qs=new float[_model->layerCount()];
  ffmax=fmax;
  // Copy model parameter in appropriate float vectors
  for(int i=0;i<_model->layerCount();i++) {
    if(i<_model->layerCount()-1) th[i]=_model->h(i); else th[i]=1;
    al0[i]=1.0/_model->slowP(i);
    be0[i]=1.0/_model->slowS(i);
    dens[i]=_model->rho(i);
    qp[i]=_model->qp(i);
    qs[i]=_model->qs(i);
  }
  // Compute site respons
  //long nl=_model->layerCount();
  //qtbFortran.kensh(&nl, &theta, &ffmax, &fcountl, al0, be0, dens, th, qp, qs, fr, u1, v1,w3);
  // Get fr and u1 in a list of point_2D
  Curve<Point2D> c(fcount);
  for(int i=0;i<fcount;i++) {
    Point2D& p=c[i];
    p.setX(Number::toDouble(fr[i] ));
    p.setY(Number::toDouble(u1[i] ));
  }
  delete [] fr;
  delete [] u1;
  delete [] v1;
  delete [] w3;
  delete [] al0;
  delete [] be0;
  delete [] dens;
  delete [] th;
  delete [] qp;
  delete [] qs;
  return c;
}

The documentation for this class was generated from the following files:
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Defines