Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Overview
Modules
2D Seismic viewer
CSEIS
SEGY(hdrmap!)
SEGD(nsamp!)
SU(endian!)
ASCIIfileformat
Inputdatasize:Any
Displaysize:Any
(untiloutofmemory)
Navigation:
Clickforward/
backwardbuttons
Specifytrace#
other
Themainobjectiveswhenwritingthesystemwere:
1) Forthenormaluser:Easytowriteprocessingflows.
2) For the developer: Easy to write new processing
modules.
3) Forproductionuse:Availabilityofflowcontrol,logs,
andmasterflowsubmission.
4) Stability of the base system's source code. This has
hopefully been achieved by ample use of the tool
valgrind.
5) Platform independence: Currently compiles on most
Linux/UNIXandWindowsplatforms.
Systemdesign
Thebasesystem:
Managestedious
tasks,e.g.memory
allocation
Monitorstrace
flow
Writeslogfiles=
history
Checksforerrors
Controlsversions
Toaddanewmodule,onlytheCsubroutineneedstobewritten.
ThecorrespondingC++objectisautogenerated.
Modulelist
ATTRIBUTE
BEAM_FORMING
BIN
CCP
CMP
CONCATENATE
CORRELATION
Extractattributefromdata
Generatebeamsfromreceiverarray
Performbinning
Performccpbinning
PerformCMPbinning
Concatenateadjacenttraces
Crosscorrelationbetweenadjacent
traces,orautocorrelationofsame
trace
DEBIAS
Debiasinputdata
DESIGNATURE
Designaturefilteroperation
DESPIKE
Spike/noiseburstremoval
ELSE
Elsestatement
ELSEIF
Elseifstatement
ENDIF
Endifstatement
ENDSPLIT
Endsplitstatement
ENS_DEFINE
Defineensembletraceheaders
FFT
FFTtransform
FFT_2D
2DFFT
FILTER
Frequencyfilter
GAIN
Applygainfunctiontotracesamples
GEOTOOLS
Variousgeophysicaltools
HDR_DEL
Deletetraceheaders
HDR_MATH
Traceheadercomputation
HDR_MATH_ENS Multitraceheadercomputation
HDR_PRINT
Printtraceheadervalues
HDR_SET
Settraceheaderfromtable
HISTOGRAM
Histogram
HODOGRAM
Hodogramanalysis
IF
Ifstatement
IMAGE
Createimagefilefromseismic
display
INPUT
InputSeaSeisdata
INPUT_ASCII
InputASCIIfile
INPUT_CREATE
Createtraces
INPUT_MSEED
InputMiniSEEDfile
INPUT_SEGD
InputSEGDdata
INPUT_SEGY
InputSEGY/SUdata
INPUT_SINEWAVE Createtraceswithsinewaves
KILL
Killtraces
KILL_ENS
Killensembles
LMO
Linearmoveoutcorrection
MIRROR
Performmirrorimagebinning
MUTE
Mutetracedata
NMO
Performnormalmoveoutcorrection
OFF2ANGLE
Offsettoangletransform
ORIENT
Solvesensororientation
ORIENT_CONVERTConvertsensororientation
parameters
OUTPUT
OUTPUT_SEGY
OVERLAP
OutputSeaSeisdata
OutputSEGY/SUdata
Createdataoverlapbetween
adjacenttraces
PICKING
Pickfirstbreaksorotherevent
POSCALC
Computereceiverpositionfrom
timepicks
PZ_SUM
PZcombination
RAY2D
2Disotropicraytracer
READ_ASCII
Readtraceheadervaluesfrom
ASCIIfile
REPEAT
Repeat/duplicatetraces
RESAMPLE
Resampletracetodifferentsample
interval
RESEQUENCE
Resequencetraceheader
RMS
ComputeRMSvalueingiventime
window
ROTATE
Perform2D/3Drotationtoinput
traces
SCALING
Scaletracedatawithlinearfunction
SELECT
Selecttraces
SELECT_TIME
Selecttimeofinterest
SEMBLANCE
Semblancepanelgeneration
SORT
Sorttraces
SPLIT
Split/branchtraceflow
SPLITTING
Shearwavesplittinganalysis
STACK
Ensemblestack
STATICS
Applytracestatics
SUMODULE
GenericwrapperforSeismicUnix
(SU)module
TEST
Demonstrationsingletracemodule
TEST_MULTI_ENSEMBLE
Testmodulemulti
trace,ensemblemodule
TEST_MULTI_FIXED
Testmodulemultitrace,
fixednumberofinputtraces
TIME_SLICE
Extracttimeslice(s)frominput
data,writetotraceheaderfieldor
outputdata
TIME_STRETCH
Stretch/squeezedatatrace
TRC_ADD_ENS
Ensembletraceadding
TRC_INTERPOL
Interpolatetraces
TRC_MATH
Tracesamplecomputation
TRC_MATH_ENS Multitracesamplecomputation
TRC_PRINT
Printtracesamples
TRC_SPLIT
Tracesplit
XSCRATCH
Testmodule
Example flow
&define year 2002
&define seq 834
&define datadir /disk/projX/data/
$INPUT_SEGD
filename
&datadir&/raw_data_seq&seq&.segd
# Kill auxiliary channels
$KILL
header
trc_type
select
!1
# Read in navigation headers
$READ_ASCII
filename
&datadir&/source_seq&seq&.S
method
positions
key_sps_time time_samp1 72 9
time_year
&year&
header
sail_line
6 2
header
seq
9 3
header
source
22 4
header
sou_z
33 4
header
sou_x
48 8
header
sou_y
57 9
#include "cseis_includes.h"
#include "cseis_includes.h"
namespace mod_test4 {
struct VariableStruct {
int hdrId;
};
}
using mod_test4::VariableStruct;
namespace mod_test5 {
struct VariableStruct {
int hdrId;
};
}
using mod_test5::VariableStruct;
//**********************************************************************
// Init phase
//
void init_mod_test4_( csParamManager* param,
csInitPhaseEnv* env, csLogWriter* log )
{
csExecPhaseDef*
edef = env->execPhaseDef;
VariableStruct* vars
= new VariableStruct();
edef->setVariables( vars );
Single trace
edef->setExecType( EXEC_TYPE_SINGLETRACE );
//**********************************************************************
// Init phase
//
void init_mod_test5_( csParamManager* param,
csInitPhaseEnv* env, csLogWriter* log )
{
csExecPhaseDef*
edef = env->execPhaseDef;
VariableStruct* vars
= new VariableStruct();
edef->setVariables( vars );
edef->setExecType( EXEC_TYPE_MULTITRACE );
Ensemble
edef->setTraceSelectionMode( TRCMODE_ENSEMBLE );
string text;
param->getString("header", &text);
if( !env->headerDef->headerExists(text) ) {
log->error("Trace header does not exist: %s", text.c_str());
}
vars->hdrId = env->headerDef->headerIndex(text);
}
//**********************************************************************
// Exec phase
//
bool exec_mod_test4_( csTrace* trace, int* port,
csExecPhaseEnv* env, csLogWriter* log )
{
VariableStruct* vars =
reinterpret_cast<VariableStruct*>(env->execPhaseDef->variables());
}
//**********************************************************************
// Exec phase
//
void exec_mod_test5_( csTraceGather* traceGather, int* port,
int* numTrcToKeep, csExecPhaseEnv* env, csLogWriter* log )
{
VariableStruct* vars =
reinterpret_cast<VariableStruct*>(env->execPhaseDef->variables());
if( env->execPhaseDef->isCleanup()){
delete vars; vars = NULL;
return true;
}
&datadir&/near_traces_seq&seq&.cseis
$ENDIF
$RMS
start
end
hdr_rms
string text;
param->getString("header", &text);
if( !env->headerDef->headerExists(text) ) {
log->error("Trace header does not exist: %s", text.c_str());
}
vars->hdrId = env->headerDef->headerIndex(text);
if( env->execPhaseDef->isCleanup()){
delete vars; vars = NULL;
return true;
}
Module-specific code
#####################################################
# Demo job flow
return true;
}
0
500
rms1
$HDR_PRINT
filename &datadir&/hdr_dump.seq&seq&
header
rcv chan seq source rec_x rec_y sou_x sou_y offset rms1
format
%10d %5d %5d %5d
%11.2f %11.2f %11.2f %11.2f %8.2f %13.5e
# Output to SEGY file
$OUTPUT_SEGY
filename
&datadir&/data_seq&seq&.segy
charhdr
"C 1 SEQUENCE: &seq&"
charhdr
"C 2 ..."
}
//**********************************************************************
// Parameter definition
//
void params_mod_test4_( csParamDef* pdef ) {
//**********************************************************************
// Parameter definition
//
void params_mod_test5_( csParamDef* pdef ) {
}
}