Tuesday, December 1, 2020

Table of Contents

Seismic Fundamental
AAA
Aliasing
Amplitude
Angle mute
Angle stack
Anisotropic NMO
Anisotropic parameters
Anisotropy
Anisotropy classification
Artificial Neural Network
Attenuation
Auto correlation
Bowtie
Brute Stack
CDP
Converted Waves
Crooked Line
Curvelet Travsform
Dip Moveout
Dephasing
Detectability and Fidelity
Diffraction
Dogleg
Fermat principle
First Break
Frequency
Fresnel Zone
Gain
Groundroll
Higher order NMO
Hockey Stick
Huygens principle
Interval velocity
Prism wave
P wave velocity
Love wave
Migration
Migration aperture
Mistie
Multiple
NMO
Near offset far offset
Noise and data
Non zero apex
P wave
Polarity
PSDM
PSTM
Preserve Amplitude
Prewhitening
Q Migration
RMS Velocity
Ray Tracing
Reflectivity
Seismic Resolution
SELMA
SRME
Seismic record
Seismic reference datum
Seismic refraction
Seismic Refraction and ray tracing
Seismic tomography
Seismic trace
Seismic multicomponent
Semblance
Shear wave
Shear wave splitting
Slant Stack
Source signature
Spectral balancing
Spectral broadening
Spectral decomposition
Spectral ratio method
Spike
Stacking
Static correction
Super gather
Sweep vibroseis
TWT
Tau-p
Time to depth conversion
True amplitude recovery
Tuning thickness
Tuning Cube
Velocity Analysis
Velocity Dispersion
Vertical seismic resolution
Vp/Vs
Water column static
Wavelet
Wavelet polarity onshore
Zero crossing


Seismic Advanced
Anisotropic PSDM
Controlled Beam Migration
Full wave inversion
Reverse time migration


Signal Processing
Bandwidth
Convolution
Cross Correlation
dB/Octave
DC Component
Deconvolution
Dynamic range and BIT
Fourier Transform
Filtering
Gabor Transform
Hilbert Transform

Main lobe side lobe
Minimum phase zero phase
Multi Taper Method
Nyquist frequency


Seismic Acquisition, Well Logging, Drilling and Non Seismic
2D Marine Acquisition
3D Land survey
3D Seismic acquisition QC
4D Seismic
Checkshot survey
Gamma ray log
Horizontal Seismic Profiling
Pore Pressure Prediction
Remote Resistivity Mapping
Resistivity Log
Rich Azimuth Seismic 
Seismoelectric 
Kelly Bushing
Marine Analog Survey
Marine Geohazard survey
Neutron porosity
VSP
Wide Azimuth Seismic


Seismic Interpretation and Petroleum Geology
Bottom Simulating Reflector
Coal Bed Methane Seismic
Curvature
Envelope
Instantaneous Frequency 1
Instantaneous Frequency 2
Instantaneous phase 1
Instantaneous phase 2
Optical Stacking
Perigram
Perigram x Cosines phase
Petroleum System
Reflection Strength
Seismic Attribute
Seismic Facies 
Texture Attribute 
Unconformity
Velocity sag
Volume Assessment
Well seismic tie


Seismic Processing with Seismic UNIX (Basic)
1. Seismic Unix Installation
2. Data Download, Segy2SU, QC
3. Kill traces and gain
4. Groundroll Removal
5. Bandpass Filter and Decon
6. Geometry and CMP Sorting
7. NMO and Brute Stack
8. Velocity Analysis and Stack
9. Statics
10. Migration (STOLT)


Seismic Processing with Seismic UNIX (Advanced)
Attribute Seismic
Continuous Wavelet Transform
FX Decon
Interactive velocity analysis 
Mute Design
PreStack Time Migration
PreStack Depth Migration
PostStack Depth Migration
Radon Demultiple
Ray Tracing
Super gather 
Synthetic Gathers Generator
Velocity Medeling
VSP Processing
Waveform modeling


Reservoir Characterization
AVA
AVFVO
AVO Attributes
AVO Azimuth
AVO Classification
Acoustic Impedance
Anisotropic AVO
Aki and Richards Approximation
Coherence
Continuous Wavelet Transform
Elastic Impedance
Extended Elastic Impedance
Gassmann Fluid Substitution
Faust Equation
Intercept and Gradient AVO
Inversion Maximum Likelihood
Inversion Sparse Spike
Lambda Mu Rho
Mobil Approximation
Poisson Impedance
Recursive Inversion 
Reflection Impedance
Rock density
Rock Physic Analysis
Seismic Inversion
Seismic Multiattribute
Shuey Approximation
Smith and Gidlow 
Thinbed reflectivity inversion
Tuning Cube
Zoeppritz Elastic Impedance
Zoeppritz Equation


Computational Geophysics
Bresenham Algorithm
Madagascar
Marquardt Inversion
Matlab for horizon snap
SVD 1
SVD 2
SVDLib C
Seislab
SEGY2ASCII Matlab


Perl
Introduction to Perl
Hello World
Bit Reverse
Call GNUPLOT from Perl
Compare files 
Left of right justify
Matrix Multiplication (subroutine) 
Matrix Transpose
Print n-times according to integer in a specific column
Read text file and print on console
Read and write matrix file
Select Columns
Select rows 
Sort by key field
Sort by key fields
DEC2IEEE


Perl for Geoscientists
Ascii to SEGY
Automatic First Break Picks
Boundary Detection 
Compare two files and print closest values
Compare two files and search match columns
Copy header from another omega velocity file
Convert CGG to Omega velocity format
Discrete Fourier Transform 
Edit omega velocity file
Merge two omega velocity files
SEGY Header Dumper trace by trace
SEGY Header Dumper min-max 
SEGY Header Dumper user input 
SEGY to Ascii 
SEGD (Revision 1) to Ascii 
Smoothing with convolution
SPS File Generator
Text to SEGY header
XPS File Generator


C Language for Geoscientists
Hello World
Fahrenheit to Celsius Conversion
Progress indicator
Read input from keyboard entry and print on console
Read input from file perform operation and print on console
Read file perform operation and output file
Addition function
Temperature conversion function
Matrix addition function with keyboard entry
Matrix addition function load file
Matrix multiplication
Matrix transpose
Matrix identity
Matrix Inverse
Inverse Matrix with Marquardt method
Matrix operation with malloc
Matrix transpose with malloc
Fast Fourier Transform (FFT)
Format
SEGY Header Dumper



Miscellaneous
Animated GIF
AWK 1
AWK 2
AWK 3
BP Velocity Benchmark
Data Marine download
GNU Plot  
GNU Plot transparent filled polygon
IBM and IEEE
Promax 1
Promax 2
Promax 3
Promax 4
SEGY
Unix for geoscientists
VI

Sunday, March 22, 2015

Transparent Filled Polygon GNUPLOT



#!/usr/bin/perl

########## PLOT#############################################
open my $GP, '|-', 'gnuplot -persist';
print {$GP}  <<'__GNUPLOT__';
set xlabel "XCORD_CELL_CENTER"
set ylabel "YCORD_CELL_CENTER"
set format y "%s";
set size ratio -1
set tics font ", 6"
set ytics 3180000,10000,3280000
set xrange [706017:780000]
set yrange [3180000:3280000]
set style fill transparent solid 0.5 
plot 'polygon1.txt' using 1:2 w filledcurve above lt 1 lc rgb "forest-green" t '','polygon2.txt' using 1:2 w filledcurve above lt 1 lc rgb "gold"  t '', 'polygon3.txt' using 1:2 w filledcurve above lt 1 lc rgb "dark-violet"  t '' ;

__GNUPLOT__

close $GP;

Friday, March 6, 2015

Boundary Detection Perl


#!/usr/bin/perl
$file=$ARGV[0];
my $pi = 3.14159265358979;
my @data;
open( FILE, $file ) or die "Can't open file '$file': $!";
while( <FILE> ) {
chomp;
my @row = split;
push @data, \@row;
}
close( FILE );

for my $i (0..$#data)
{
push @pri, $data[$i][0];
push @sec, $data[$i][1];
}

for my $i (0..$#data-1)
{
$dx[$i]=$data[$i][1]-$data[$i+1][1];   #col 2 diff
if($dx[$i] != 0) 
{
push @ind,$i,$i+1;
}
}

push @ind1, 0,@ind, $#data;
for my $i (0..$#data)
{
if($ind1[$i] != 0) 
{
push @pria, $pri[$ind1[$i]];
push @seca, $sec[$ind1[$i]]
}
}

push @x1,$pri[0],@pria;
push @y1,$sec[0],@seca;

### try this option first
#$x0=0.1+(min(@pri)+max(@pri))/2;
#$y0=0.2+(min(@sec)+max(@sec))/2;

### if you see 'saw' shape, privide center point manually
$x0=800.1;
$y0=3530.2;

#calculate azimuth of each point relative to the center point
for my $i (0..$#x1)
{
$dy[$i]=abs($y1[$i]-$y0);
$dx[$i]=abs($x1[$i]-$x0);
$theta[$i]=rad_to_deg(atan($dy[$i]/$dx[$i]));
if ($x1[$i] < $x0 && $y1[$i]>$y0 )
{
$thetacor[$i]=180-$theta[$i];
}elsif ($x1[$i] < $x0 && $y1[$i]<$y0 )
{
$thetacor[$i]=180+$theta[$i];
}elsif ($x1[$i] > $x0 && $y1[$i]<$y0 )
{
$thetacor[$i]=360-$theta[$i];
}else
{
$thetacor[$i]=$theta[$i];
}
push(@{$dataku[$i]}, $x1[$i],$y1[$i],$thetacor[$i]);    #push multidimensional array
}

open OUT," > out.txt" or die "$!\n";
my @sorted = sort { $a->[2] <=> $b->[2] } @dataku;  ##sort by col 2 (azimuth)

#Print output
for my $i (0..$#sorted)
{
for my $j (0..$#{$sorted[0]}-1)
{
   print OUT  "$sorted[$i][$j]","\t";
}
   print OUT  "\n";
}

for my $j (0..$#{$sorted[0]}-1)   #close polygon
{
print OUT  "$sorted[0][$j]","\t";
}

print OUT  "\n";


sub max {
    splice(@_, ($_[0] > $_[1]) ? 1 : 0, 1);
    return ($#_ == 0) ? $_[0] : max(@_);
}

sub min {
    splice(@_, ($_[0] > $_[1]) ? 0 : 1, 1);
    return ($#_ == 0) ? $_[0] : min(@_);
}

sub deg_to_rad { ($_[0]/180) * $pi }
sub rad_to_deg { ($_[0]/$pi) * 180 }
sub asin { atan2($_[0], sqrt(1 - $_[0] * $_[0])) }
sub acos { atan2( sqrt(1 - $_[0] * $_[0]), $_[0] ) }
sub tan  { sin($_[0]) / cos($_[0])  }
sub atan { atan2($_[0],1) };

########## PLOT#############################################
open my $GP, '|-', 'gnuplot -persist';
print {$GP}  <<'__GNUPLOT__';
set multiplot;                          # get into multiplot mode
set size 1,0.5; 
set origin 0.0,0.5;
set xrange[700:1150]
set yrange[3480:3570]
plot 'PRIM_SEC2.TXT' using 1:2 with points pointtype 0 pointsize 1 title ""

set origin 0.0,0.0; 
set xrange[700:1150]
set yrange[3480:3570]
plot 'out.txt' using 1:2 with lines title ""
__GNUPLOT__
close $GP;


Kode di bawah ini adalah versi 2:
#!/usr/bin/perl
$file=$ARGV[0];
my @data;
open( FILE, $file ) or die "Can't open file '$file': $!";
while( <FILE> ) {
chomp;
my @row = split;
push @data, \@row;
}
close( FILE );

for my $i (0..$#data)
{
push @pri, $data[$i][0];
push @sec, $data[$i][1];
}

for my $i (0..$#data-1)
{
$dx[$i]=$data[$i][1]-$data[$i+1][1];   #col 2 diff
if($dx[$i] != 0) 
{
push @ind,$i,$i+1;
}
}

push @ind1, 0,@ind, $#data;
for my $i (0..$#data)
{
if($ind1[$i] != 0) 
{
push @pria, $pri[$ind1[$i]];
push @seca, $sec[$ind1[$i]]
}
}

push @x1,$pri[0],@pria;
push @y1,$sec[0],@seca;


for my $i (0..$#x1/2)
{
push @{$left[$i]},$x1[$i*2],$y1[$i*2];    #push multidimensional array
push @{$right[$i]},$x1[($i*2)+1],$y1[($i*2)+1];   #push multidimensional array
}

my @sortedleft= sort { $a->[1] <=> $b->[1] } @left;  ##sort accending by col 2
my @sortedright = sort { $b->[1] <=> $a->[1] } @right;  ##sort decending by col 2

push @sorted, @sortedleft, @sortedright;
open OUT," > out.txt" or die "$!\n";
#Print output
for my $i (0..$#sorted)
{
for my $j (0..$#{$sorted[0]})
{
   print OUT   "$sorted[$i][$j]","\t";
}
   print OUT  "\n";
}

for my $j (0..$#{$sorted[0]})   #close polygon
{
print OUT  "$sorted[0][$j]","\t";
}

print OUT  "\n";

########## PLOT#############################################
open my $GP, '|-', 'gnuplot -persist';
print {$GP}  <<'__GNUPLOT__';
set multiplot;                          # get into multiplot mode
set size 1,0.5; 
set origin 0.0,0.5;
set xrange[700:1150]
set yrange[3480:3570]
plot 'PRIM_SEC.TXT' using 1:2 with points pointtype 0 pointsize 1 title ""

set origin 0.0,0.0; 
set xrange[700:1150]
set yrange[3480:3570]
plot 'out.txt' using 1:2 with lines title ""
__GNUPLOT__
close $GP;