diff --git a/cpu/trunk/easywave.h b/cpu/trunk/easywave.h index 09ef8c03855656fd35402653d97a404261193bf6..fde0240e38ff4c7e98972b0f7601eadb1a493f94 100644 --- a/cpu/trunk/easywave.h +++ b/cpu/trunk/easywave.h @@ -88,4 +88,7 @@ int ewDumpPOIsCompact( int istage ); extern CNode *gNode; +/* unset to remove ZTOP_PATCH */ +#define ZTOP_PATCH + #endif /* EASYWAVE_H */ diff --git a/cpu/trunk/ewSource.cpp b/cpu/trunk/ewSource.cpp index 13ee2a77a4f2c8389ef521d8e826f07ba2cbba92..90b7d68fed8574cff2a7fc9e0df8e7c78a78466c 100644 --- a/cpu/trunk/ewSource.cpp +++ b/cpu/trunk/ewSource.cpp @@ -49,6 +49,31 @@ int ewSource() ierr = eq.read( Par.fileSource ); if(ierr) return ierr; +#ifdef ZTOP_PATCH + // check fault parameters + Err.disable(); + ierr = eq.finalizeInput(); + while( ierr ) { + i = ierr/10; + ierr = ierr - 10*i; + if( ierr == FLT_ERR_STRIKE ) { + Log.print( "No strike on input: Employing effective symmetric source model" ); + if( eq.nfault > 1 ) { Err.enable(); return Err.post("Symmetric source assumes only 1 fault"); } + eq.fault[0].strike = 0.; + effSymSource = 1; + } + else if( ierr == FLT_ERR_ZTOP ) { + Log.print( "Automatic depth correction to fault top @ 10 km" ); + eq.fault[i].depth = eq.fault[i].width/2 * sindeg(eq.fault[i].dip) + 10.e3; + } + else { + Err.enable(); + return ierr; + } + ierr = eq.finalizeInput(); + } + Err.enable(); +#else // check fault parameters Err.disable(); ierr = eq.finalizeInput(); @@ -68,6 +93,7 @@ int ewSource() ierr = eq.finalizeInput(); if(ierr) return ierr; } Err.enable(); +#endif // calculate uplift on a rectangular grid // set grid resolution, grid dimensions will be set automatically