// cOkadaEarthquake.cpp: implementation of the cOkadaEarthquake class // //========================================================================= #include #include #include #include #include "cOkadaEarthquake.h" //========================================================================= cOkadaEarthquake::cOkadaEarthquake() { finalized = 0; m0 = 0; nfault = 1; fault = new cOkadaFault [1]; } //========================================================================= cOkadaEarthquake::~cOkadaEarthquake() { if( fault != NULL ) delete [] fault; } //========================================================================= // Read fault(s) from a file int cOkadaEarthquake::read( char *fname ) { FILE *fp; char record[256]; int ierr; nfault = utlGetNumberOfRecords( fname ); if( fault != NULL ) delete [] fault; fault = new cOkadaFault [nfault]; if( (fp = fopen(fname,"rt")) == NULL ) return Err.post(Err.msgOpenFile(fname)); for( int n=0, line=0; n lonmax ) lonmax = xmax; if( ymin < latmin ) latmin = ymin; if( ymax > latmax ) latmax = ymax; } if( round ) { lonmin = floor( lonmin ); lonmax = ceil( lonmax ); latmin = floor( latmin ); latmax = ceil( latmax ); } return 0; } //========================================================================= // Calculate surface displacements by summing effect from all ruptures int cOkadaEarthquake::calculate( double lon, double lat, double& uz, double& ulon, double &ulat ) { int n,ierr; double uzf,ulonf,ulatf; if( !finalized ) return Err.post("cOkadaEarthquake::calculate: eq not finalized"); for( ulon=ulat=uz=0, n=0; n