okada地震模型
所属分类:matlab编程
开发工具:matlab
文件大小:3056KB
下载次数:12
上传日期:2020-04-13 21:47:33
上 传 者:
1269226384@qq.com
说明: okada地震模型,地球物理/地质等数学模型,matlab实现代码
(Okada seismic model, geophysical/geological mathematical model, matlab code)
文件列表:
testu.txt (198, 1996-07-02)
testu.out (198, 1998-11-06)
testn.xyr (109, 1996-07-02)
testn.txt (198, 1996-07-02)
testn.out (198, 1998-11-06)
teste.xyr (108, 1996-07-02)
teste.txt (198, 1996-07-02)
teste.out (198, 1998-11-06)
test.faults (365, 1996-07-02)
table2.ps (965186, 1998-11-05)
table2.doc (51712, 1998-11-06)
slipper.fti (3138, 1998-11-06)
seismo_to_okada.m (744, 1996-07-03)
rngchn.rtf (278753, 1998-11-06)
rngchn.ps (1336488, 1998-11-06)
rngchn.f (116871, 1998-11-06)
rngchn.doc (305664, 1998-11-06)
read_table.m (2615, 1998-11-06)
read_fault.m (1402, 1998-11-06)
range_change.f (13394, 1996-07-10)
rad.m (72, 1996-07-03)
okada_to_seismo.m (1445, 1996-07-03)
okada_to_gmt.m (1937, 1998-11-06)
lststr.m (285, 1996-07-08)
Image77.gif (929, 1998-11-06)
Image69.gif (1748, 1998-11-06)
Image68.gif (1741, 1998-11-06)
Image67.gif (1487, 1998-11-06)
Image45.gif (837, 1998-11-06)
Image43.gif (837, 1998-11-06)
fio_hp.c (2660, 1996-07-15)
fio.c (2735, 1996-07-15)
fig5.xyr (588, 1996-07-03)
fig5.ps (11822, 1996-07-03)
fig5.faults (1175, 1996-07-03)
fig4.ps (3278120, 1996-07-02)
fig3d.faults (602, 1996-07-02)
fig3c.faults (600, 1996-07-02)
fig3b.faults (600, 1996-07-02)
... ...
RNGCHN: a program to calculate displacement components from
dislocations in an elastic half-space with applications for modeling
geodetic measurements of crustal deformation
Kurt L. Feigl and Emmeline Dupre
Revised for Computers and Geosciences (version 1.4)
The RNGCHN program calculates a single component of the displacement
field due to a finite or point-source dislocation buried in an elastic
half space. This formulation approximates the surface movements
produced by earthquake faulting or volcanic intrusion. As such, it is
appropriate for modeling crustal deformation measured by geodetic
surveying techniques, such as spirit leveling, trilateration, Very
Long Baseline Interferometry (VLBI), Global Positioning System (GPS),
or especially interferometric analysis of synthetic aperture radar
(SAR) images. Examples suggest that this model can fit simple
coseismic earthquake signatures to within their measurement
uncertainties. The program's input parameters include fault position,
depth, length, width, strike, dip, and three components of slip. The
output consists of displacement components in the form of an ASCII
list or a rectangular array of binary integers. The same program also
provides partial derivatives of the displacement component with
respect to all 10 input parameters. The FORTRAN source code for the
program is in the public domain and available as the compressed tar
file rngchn.tar.Z in the directory /pub/GRGS via the Internet by
anonymous ftp to spike.cst.cnes.fr. This distribution includes worked
examples and a MATLAB interface.
We appreciate comments and corrections.
This program will be part of a package prepared under contract to the
European Space Agency, and a paper in Computers and Geosciences. If
you use the program in a publication, please cite:
Feigl, K. L. and E. Dupre, RNGCHN: a program to calculate displacement
components from dislocations in an elastic half-space with
applications for modeling geodetic measurements of crustal deformation
revised for Computers and Geosciences, November, 19***
Good luck.
Kurt Feigl
Emmeline Dupre
***------------------
Obtaining the code by ftp:
Machine: spike.cst.cnes.fr
IP: IP 132.149.10.3
directory: /pub/GRGS
file: rngchn.tar.Z
Simple script:
#!/bin/csh -xv
# ftp to Toulouse, France to get RNGCHN package.
ftp -inv < tmp2.f
sed 's/subroutine read_line_hp(/subroutine read_line(/' < tmp2.f > rngchn.f
f77 -c +O4 +U77 rngchn.f
cc -c fio_hp.c
f77 rngchn.o fio_hp.o +U77 -o rngchn
# To run the simple test case:
rngchn teste.xyr test.faults teste.out residual
rngchn testn.xyr test.faults testn.out residual
rngchn testu.xyr test.faults testu.out residual
# To compare your output to ours:
diff testn.txt testn.out
diff teste.txt teste.out
diff testu.txt testu.out
# To run the examples in Figure 3:
rngchn fig3.grdspec fig3a.faults fig3a.phm binary
rngchn fig3.grdspec fig3b.faults fig3b.phm binary
rngchn fig3.grdspec fig3c.faults fig3c.phm binary
rngchn fig3.grdspec fig3d.faults fig3d.phm binary
To visualize the output of the above example using the PBM translation
package and the XV (bradley@cis.upenn.edu) visualizer, try:
rawtopgm 120 119 fig3a.phm >! fig3a.pgm; xv fig3a.pgm
***------------------
As an example, the figure 3 was generated with the GMT script fig3.gmt.
It uses the supplementary utility z2grd, which has been superceded
by a new option in xyz2grd in version 3.0 of GMT.
To run the example in Figure 4b:
rngchn eureka.grdspec eureka.faults eureka.phm binary
Syntax:
rngchn points_file faults_file output_file option
^_____ output (format
depends on option)
^_________ list of fault parameters
If first column is non-blank, line
is considered a comment or header.
^- list of points [east(km), north(km), Dr_obs]
if Dr_obs is given, the residual option will
calculate residual = Dr_obs - Dr_calc
option : ascii, to compute range to an ASCII output file called eureka.rng
: partial, to compute the matrix of approximate partial derivatives
: analytic, to compute the matrix of exact partial derivatives
: binary, to compute 1-byte integer Drange in 0-255 digital units,
i.e. 256 units per cycle.
: mm2bin, to compute 2-byte integer Drange in mm (good for interpolations)
***------------------
Warnings:
The following subroutines may depend on your machine: INTWRITE,
IBYTEWRITE, FERROR, and CLARG
The convention is that the quantities calculated by range change are
positive for upward movement, that is, a *negative* rngchn. In other
words,
rngchn = - Drange
= (unit vector toward sat) * (displacement vector)
Displacement vectors are taken to be [east,north,up].
***------------------
MATLAB interface:
To compile : (outside matlab)
fmex range_change.f rngchn.f fio.c
To compile on HP (outside matlab, requires "ANSI-C Developer's kit"
for +z option"), must split out only needed functions. Be careful
not to overwrite the whole program with the single subroutine.
\mv rngchn.f rngchn_all.f
fsplit rngchn_all.f
fmex range_change.f rngchn_comp.f okada_patch.f chin.f deru_x.f \
deru1_x.f deru1_d.f deru_w.f deru_l.f deru_delta.f deru1_delta.f deru_d.f \
deru_u.f deru_p.f form_all_part3.f ech.f
To get some instructions (inside matlab), type the name of the routine
with no arguments:
range_change
Some examples (inside matlab):
% ** SIMPLE TEST
% Calculate velocities parallel to the San Andreas fault (at N138E az.)
% read fault parameters from file
[x,y,strike,depth,dip,u1,u2,u3,l,w,names]=read_fault('fig5.faults');
% read list of ground point coordinates from file
[xy,names2]=read_table('fig5.xyr',4,6,6);
e = xy(:,1);
n = xy(:,2);
% set up unit vector
s=[cos(rad(90.-138.)),sin(rad(90.-138.)),0.];
r=range_change(x,y,strike,depth,dip,u1,u2,u3,l,w,e,n,s);
% observed velocity values parallel to fault strike
o = xy(:,3);
% make velocity relative to VNDN, the first point in the list
r=r-r(1);
% projected distance from VNDN, normal to s
perp=[cos(rad(90.-48.)),sin(rad(90.-48.)),0.];
z=[e-e(1) n-n(1)] * perp(1:2)'
% make picture
plot(z,o,'+',z,r)
xlabel('distance NE of VNDN (km)')
ylabel('Fault parallel motion (mm/yr)')
title('Should look like figure 5')
% ** HERE IS AN EXAMPLE USING A GRID.
[x,y,strike,depth,dip,u1,u2,u3,l,w,names]=read_fault('fig5.faults');
e= 10*(-20:20);
n= 10*(-3:25)';
% set up unit vector
s=[cos(rad(90.-138.)),sin(rad(90.-138.)),0.];
r=range_change(x,y,strike,depth,dip,u1,u2,u3,l,w,e,n,s);
surf(e,n,r)
xlabel('East (km)')
ylabel('North (km)')
zlabel('V138 (mm/yr)')
title('Fault-parallel velocity in California')
% ** TEST THE PARTIAL DERIVATIVES, TOO.
%
% * 1. Calculate them using regular rngchn
unix ('rngchn e11x1.xy fig3a.faults fig3a.prt analytic')
c=read_table('fig3a.prt',6,12,0);
% c2 has 11 rows, 10 columns
c2 = c(:,3:12);
% * 2. Calculate them using MATLAB interface
[x,y,strike,depth,dip,u1,u2,u3,l,w,names]=read_fault('fig3a.faults');
[xy,names2]=read_table('e11x1.xy',1,3,3);
e = xy(:,1);
n = xy(:,2);
s=[0.333 -0.07 0.94];
[r,a]=range_change(x,y,strike,depth,dip,u1,u2,u3,l,w,e,n,s);
% display fractional error between approaches 1. and 2.
format long e
(a-c2) ./ c2
% the above should be better than 1.e-10.
------------------------------------------------------
Kurt Feigl CNRS UMR 5562
office: (33) 5 61 33 29 40 14, Ave. Edouard Belin
fax (33) 5 61 25 32 05 31400 TOULOUSE
E-mail: Kurt.Feigl@cnes.fr FRANCE (air mail!)
近期下载者:
相关文件:
收藏者: