incorporating random projections based inversion using Poisson Voronoi cells

This commit is contained in:
Hongjian 2020-04-16 20:47:03 -04:00
parent 82ebf4283d
commit 9aead30bf2
19 changed files with 3883 additions and 42 deletions

3
.gitignore vendored Normal file
View File

@ -0,0 +1,3 @@
*.o
*.mod

View File

@ -1,7 +1,11 @@
DSurfTomo is a surface wave inversion program which can directly invert surface wave dispersion data to 3D shear wave speed without the intermediate step of constructing the phase or group velocity maps. DSurfTomo is a surface wave inversion program which can irectly invert surface wave dispersion data directly to 3D shear wavespeed models, without the intermediate step of constructing the phase or group velocity maps.
The fast marching method (FMM) (Rawlinson et al., 2004) is used to compute, at each period, surface wave travel times and ray paths between sources and receivers. This avoids the assumption of great-circle propagation that is used in most surface wave tomographic studies, but which is not appropriate in complex media. The fast marching method (FMM) (Rawlinson et al., 2004) is used to compute, at each period, surface wave travel times and ray paths between sources and receivers. This avoids the assumption of great-circle propagation that is used in most surface wave tomographic studies, but which is not appropriate in complex media.
Please refer to Fang et al. (2015 , GJI) for the detail description of the method. Please refer to Fang et al. (2015 , GJI) for the detail description of the method.
Fang, H., Yao, H., Zhang, H., Huang, Y. C., & van der Hilst, R. D. (2015). Direct inversion of surface wave dispersion for three-dimensional shallow crustal structure based on ray tracing: methodology and application. Geophysical Journal International, 201(3), 1251-1263. Fang, H., Yao, H., Zhang, H., Huang, Y. C., & van der Hilst, R. D. (2015). Direct inversion of surface wave dispersion for three-dimensional shallow crustal structure based on ray tracing: methodology and application. Geophysical Journal International, 201(3), 1251-1263.
Rawlinson, N. & Sambridge, M., 2004. Wave front evolution in strongly heterogeneous layered media using the fast marching method, Geophys. J. Int., 156(3), 631647 Rawlinson, N. & Sambridge, M., 2004. Wave front evolution in strongly heterogeneous layered media using the fast marching method, Geophys. J. Int., 156(3), 631647
For V2.0, I incorporated the random projections based inversion using Poisson Voronoi cells. However, it has not been fully tested, so any feedbacks will be helpful. For more information about the inversion method, please refer to:
Fang, H., van der Hilst, R. D., de Hoop, M. V., Kothari, K., Gupta, S., & Dokmanić, I. (2020). Parsimonious Seismic Tomography with Poisson Voronoi Projections: Methodology and Validation. Seismological Research Letters, 91(1), 343-355.

13
configure vendored
View File

@ -1,16 +1,17 @@
#!/usr/bin/env python #!/usr/bin/env python
# this is a script to install surf_tomo and surf_tomo_syn in your system # this is a script to install surf_tomo and surf_tomo_syn in your system
# written by Hongjian Fang(fanghj@mail.ustc.edu.cn) # written by Hongjian Fang(fanghj@mail.ustc.edu.cn)
import os import os
if 'bin' in os.listdir('.'): if 'bin' in os.listdir('.'):
print 'installation beginning' print ('Installation beginning')
else: else:
print 'installation beginning' print ('Installation beginning')
os.mkdir('bin') os.mkdir('bin')
os.chdir('src') os.chdir('src')
os.system('make clean') os.system('make clean')
os.system('make') os.system('make')
os.system('cp DSurfTomo ../bin') os.system('cp DSurfTomo ../bin')
print '--------------------------------------' print ('--------------------------------------')
print 'Finishing DSurfTomo compiling' print ('DSurfTomo compiling Finished')
print '--------------------------------------' print ('--------------------------------------')

View File

@ -6,7 +6,7 @@ surfdataTB.dat c: data file
25.2 121.35 c: goxd gozd (upper left point,[lat,lon]) 25.2 121.35 c: goxd gozd (upper left point,[lat,lon])
0.015 0.017 c: dvxd dvzd (grid interval in lat and lon direction) 0.015 0.017 c: dvxd dvzd (grid interval in lat and lon direction)
20 c: max(sources, receivers) 20 c: max(sources, receivers)
4.0 0.1 c: weight damp 4.0 1.0 c: weight damp
3 c: sablayers (for computing depth kernel, 2~5) 3 c: sablayers (for computing depth kernel, 2~5)
0.5 2.8 c: minimum velocity, maximum velocity (a priori information) 0.5 2.8 c: minimum velocity, maximum velocity (a priori information)
10 c: maximum iteration 10 c: maximum iteration
@ -18,4 +18,5 @@ surfdataTB.dat c: data file
0 c: kmaxLg 0 c: kmaxLg
0 c: synthetic flag(0:real data,1:synthetic) 0 c: synthetic flag(0:real data,1:synthetic)
0.02 c: noiselevel 0.02 c: noiselevel
0.5 c: threshold 0.05 c: threshold
1 100 50 c: vorotomo,ncells,nrelizations

View File

@ -0,0 +1,22 @@
cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc
c INPUT PARAMETERS
cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc
surfdataTB.dat c: data file
18 18 9 c: nx ny nz (grid number in lat lon and depth direction)
25.2 121.35 c: goxd gozd (upper left point,[lat,lon])
0.015 0.017 c: dvxd dvzd (grid interval in lat and lon direction)
20 c: max(sources, receivers)
4.0 1.0 c: weight damp
3 c: sablayers (for computing depth kernel, 2~5)
0.5 2.8 c: minimum velocity, maximum velocity (a priori information)
10 c: maximum iteration
0.2 c: sparsity fraction
26 c: kmaxRc (followed by periods)
0.5 0.6 0.7 0.8 0.9 1.0 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9 2.0 2.1 2.2 2.3 2.4 2.5 2.6 2.7 2.8 2.9 3.0
0 c: kmaxRg
0 c: kmaxLc
0 c: kmaxLg
0 c: synthetic flag(0:real data,1:synthetic)
0.02 c: noiselevel
0.05 c: threshold
0 100 50 c: vorotomo,ncells,nrelizations

163
example_smoothing_clean/MOD Normal file
View File

@ -0,0 +1,163 @@
0.0 0.2 0.4 0.6 0.8 1.1 1.4 1.8 2.5
0.900 0.900 0.900 0.900 0.900 0.900 0.900 0.900 0.900 0.900 0.900 0.900 0.900 0.900 0.900 0.900 0.900 0.900
0.900 0.900 0.900 0.900 0.900 0.900 0.900 0.900 0.900 0.900 0.900 0.900 0.900 0.900 0.900 0.900 0.900 0.900
0.900 0.900 0.900 0.900 0.900 0.900 0.900 0.900 0.900 0.900 0.900 0.900 0.900 0.900 0.900 0.900 0.900 0.900
0.900 0.900 0.900 0.900 0.900 0.900 0.900 0.900 0.900 0.900 0.900 0.900 0.900 0.900 0.900 0.900 0.900 0.900
0.900 0.900 0.900 0.900 0.900 0.900 0.900 0.900 0.900 0.900 0.900 0.900 0.900 0.900 0.900 0.900 0.900 0.900
0.900 0.900 0.900 0.900 0.900 0.900 0.900 0.900 0.900 0.900 0.900 0.900 0.900 0.900 0.900 0.900 0.900 0.900
0.900 0.900 0.900 0.900 0.900 0.900 0.900 0.900 0.900 0.900 0.900 0.900 0.900 0.900 0.900 0.900 0.900 0.900
0.900 0.900 0.900 0.900 0.900 0.900 0.900 0.900 0.900 0.900 0.900 0.900 0.900 0.900 0.900 0.900 0.900 0.900
0.900 0.900 0.900 0.900 0.900 0.900 0.900 0.900 0.900 0.900 0.900 0.900 0.900 0.900 0.900 0.900 0.900 0.900
0.900 0.900 0.900 0.900 0.900 0.900 0.900 0.900 0.900 0.900 0.900 0.900 0.900 0.900 0.900 0.900 0.900 0.900
0.900 0.900 0.900 0.900 0.900 0.900 0.900 0.900 0.900 0.900 0.900 0.900 0.900 0.900 0.900 0.900 0.900 0.900
0.900 0.900 0.900 0.900 0.900 0.900 0.900 0.900 0.900 0.900 0.900 0.900 0.900 0.900 0.900 0.900 0.900 0.900
0.900 0.900 0.900 0.900 0.900 0.900 0.900 0.900 0.900 0.900 0.900 0.900 0.900 0.900 0.900 0.900 0.900 0.900
0.900 0.900 0.900 0.900 0.900 0.900 0.900 0.900 0.900 0.900 0.900 0.900 0.900 0.900 0.900 0.900 0.900 0.900
0.900 0.900 0.900 0.900 0.900 0.900 0.900 0.900 0.900 0.900 0.900 0.900 0.900 0.900 0.900 0.900 0.900 0.900
0.900 0.900 0.900 0.900 0.900 0.900 0.900 0.900 0.900 0.900 0.900 0.900 0.900 0.900 0.900 0.900 0.900 0.900
0.900 0.900 0.900 0.900 0.900 0.900 0.900 0.900 0.900 0.900 0.900 0.900 0.900 0.900 0.900 0.900 0.900 0.900
0.900 0.900 0.900 0.900 0.900 0.900 0.900 0.900 0.900 0.900 0.900 0.900 0.900 0.900 0.900 0.900 0.900 0.900
1.020 1.020 1.020 1.020 1.020 1.020 1.020 1.020 1.020 1.020 1.020 1.020 1.020 1.020 1.020 1.020 1.020 1.020
1.020 1.020 1.020 1.020 1.020 1.020 1.020 1.020 1.020 1.020 1.020 1.020 1.020 1.020 1.020 1.020 1.020 1.020
1.020 1.020 1.020 1.020 1.020 1.020 1.020 1.020 1.020 1.020 1.020 1.020 1.020 1.020 1.020 1.020 1.020 1.020
1.020 1.020 1.020 1.020 1.020 1.020 1.020 1.020 1.020 1.020 1.020 1.020 1.020 1.020 1.020 1.020 1.020 1.020
1.020 1.020 1.020 1.020 1.020 1.020 1.020 1.020 1.020 1.020 1.020 1.020 1.020 1.020 1.020 1.020 1.020 1.020
1.020 1.020 1.020 1.020 1.020 1.020 1.020 1.020 1.020 1.020 1.020 1.020 1.020 1.020 1.020 1.020 1.020 1.020
1.020 1.020 1.020 1.020 1.020 1.020 1.020 1.020 1.020 1.020 1.020 1.020 1.020 1.020 1.020 1.020 1.020 1.020
1.020 1.020 1.020 1.020 1.020 1.020 1.020 1.020 1.020 1.020 1.020 1.020 1.020 1.020 1.020 1.020 1.020 1.020
1.020 1.020 1.020 1.020 1.020 1.020 1.020 1.020 1.020 1.020 1.020 1.020 1.020 1.020 1.020 1.020 1.020 1.020
1.020 1.020 1.020 1.020 1.020 1.020 1.020 1.020 1.020 1.020 1.020 1.020 1.020 1.020 1.020 1.020 1.020 1.020
1.020 1.020 1.020 1.020 1.020 1.020 1.020 1.020 1.020 1.020 1.020 1.020 1.020 1.020 1.020 1.020 1.020 1.020
1.020 1.020 1.020 1.020 1.020 1.020 1.020 1.020 1.020 1.020 1.020 1.020 1.020 1.020 1.020 1.020 1.020 1.020
1.020 1.020 1.020 1.020 1.020 1.020 1.020 1.020 1.020 1.020 1.020 1.020 1.020 1.020 1.020 1.020 1.020 1.020
1.020 1.020 1.020 1.020 1.020 1.020 1.020 1.020 1.020 1.020 1.020 1.020 1.020 1.020 1.020 1.020 1.020 1.020
1.020 1.020 1.020 1.020 1.020 1.020 1.020 1.020 1.020 1.020 1.020 1.020 1.020 1.020 1.020 1.020 1.020 1.020
1.020 1.020 1.020 1.020 1.020 1.020 1.020 1.020 1.020 1.020 1.020 1.020 1.020 1.020 1.020 1.020 1.020 1.020
1.020 1.020 1.020 1.020 1.020 1.020 1.020 1.020 1.020 1.020 1.020 1.020 1.020 1.020 1.020 1.020 1.020 1.020
1.020 1.020 1.020 1.020 1.020 1.020 1.020 1.020 1.020 1.020 1.020 1.020 1.020 1.020 1.020 1.020 1.020 1.020
1.140 1.140 1.140 1.140 1.140 1.140 1.140 1.140 1.140 1.140 1.140 1.140 1.140 1.140 1.140 1.140 1.140 1.140
1.140 1.140 1.140 1.140 1.140 1.140 1.140 1.140 1.140 1.140 1.140 1.140 1.140 1.140 1.140 1.140 1.140 1.140
1.140 1.140 1.140 1.140 1.140 1.140 1.140 1.140 1.140 1.140 1.140 1.140 1.140 1.140 1.140 1.140 1.140 1.140
1.140 1.140 1.140 1.140 1.140 1.140 1.140 1.140 1.140 1.140 1.140 1.140 1.140 1.140 1.140 1.140 1.140 1.140
1.140 1.140 1.140 1.140 1.140 1.140 1.140 1.140 1.140 1.140 1.140 1.140 1.140 1.140 1.140 1.140 1.140 1.140
1.140 1.140 1.140 1.140 1.140 1.140 1.140 1.140 1.140 1.140 1.140 1.140 1.140 1.140 1.140 1.140 1.140 1.140
1.140 1.140 1.140 1.140 1.140 1.140 1.140 1.140 1.140 1.140 1.140 1.140 1.140 1.140 1.140 1.140 1.140 1.140
1.140 1.140 1.140 1.140 1.140 1.140 1.140 1.140 1.140 1.140 1.140 1.140 1.140 1.140 1.140 1.140 1.140 1.140
1.140 1.140 1.140 1.140 1.140 1.140 1.140 1.140 1.140 1.140 1.140 1.140 1.140 1.140 1.140 1.140 1.140 1.140
1.140 1.140 1.140 1.140 1.140 1.140 1.140 1.140 1.140 1.140 1.140 1.140 1.140 1.140 1.140 1.140 1.140 1.140
1.140 1.140 1.140 1.140 1.140 1.140 1.140 1.140 1.140 1.140 1.140 1.140 1.140 1.140 1.140 1.140 1.140 1.140
1.140 1.140 1.140 1.140 1.140 1.140 1.140 1.140 1.140 1.140 1.140 1.140 1.140 1.140 1.140 1.140 1.140 1.140
1.140 1.140 1.140 1.140 1.140 1.140 1.140 1.140 1.140 1.140 1.140 1.140 1.140 1.140 1.140 1.140 1.140 1.140
1.140 1.140 1.140 1.140 1.140 1.140 1.140 1.140 1.140 1.140 1.140 1.140 1.140 1.140 1.140 1.140 1.140 1.140
1.140 1.140 1.140 1.140 1.140 1.140 1.140 1.140 1.140 1.140 1.140 1.140 1.140 1.140 1.140 1.140 1.140 1.140
1.140 1.140 1.140 1.140 1.140 1.140 1.140 1.140 1.140 1.140 1.140 1.140 1.140 1.140 1.140 1.140 1.140 1.140
1.140 1.140 1.140 1.140 1.140 1.140 1.140 1.140 1.140 1.140 1.140 1.140 1.140 1.140 1.140 1.140 1.140 1.140
1.140 1.140 1.140 1.140 1.140 1.140 1.140 1.140 1.140 1.140 1.140 1.140 1.140 1.140 1.140 1.140 1.140 1.140
1.260 1.260 1.260 1.260 1.260 1.260 1.260 1.260 1.260 1.260 1.260 1.260 1.260 1.260 1.260 1.260 1.260 1.260
1.260 1.260 1.260 1.260 1.260 1.260 1.260 1.260 1.260 1.260 1.260 1.260 1.260 1.260 1.260 1.260 1.260 1.260
1.260 1.260 1.260 1.260 1.260 1.260 1.260 1.260 1.260 1.260 1.260 1.260 1.260 1.260 1.260 1.260 1.260 1.260
1.260 1.260 1.260 1.260 1.260 1.260 1.260 1.260 1.260 1.260 1.260 1.260 1.260 1.260 1.260 1.260 1.260 1.260
1.260 1.260 1.260 1.260 1.260 1.260 1.260 1.260 1.260 1.260 1.260 1.260 1.260 1.260 1.260 1.260 1.260 1.260
1.260 1.260 1.260 1.260 1.260 1.260 1.260 1.260 1.260 1.260 1.260 1.260 1.260 1.260 1.260 1.260 1.260 1.260
1.260 1.260 1.260 1.260 1.260 1.260 1.260 1.260 1.260 1.260 1.260 1.260 1.260 1.260 1.260 1.260 1.260 1.260
1.260 1.260 1.260 1.260 1.260 1.260 1.260 1.260 1.260 1.260 1.260 1.260 1.260 1.260 1.260 1.260 1.260 1.260
1.260 1.260 1.260 1.260 1.260 1.260 1.260 1.260 1.260 1.260 1.260 1.260 1.260 1.260 1.260 1.260 1.260 1.260
1.260 1.260 1.260 1.260 1.260 1.260 1.260 1.260 1.260 1.260 1.260 1.260 1.260 1.260 1.260 1.260 1.260 1.260
1.260 1.260 1.260 1.260 1.260 1.260 1.260 1.260 1.260 1.260 1.260 1.260 1.260 1.260 1.260 1.260 1.260 1.260
1.260 1.260 1.260 1.260 1.260 1.260 1.260 1.260 1.260 1.260 1.260 1.260 1.260 1.260 1.260 1.260 1.260 1.260
1.260 1.260 1.260 1.260 1.260 1.260 1.260 1.260 1.260 1.260 1.260 1.260 1.260 1.260 1.260 1.260 1.260 1.260
1.260 1.260 1.260 1.260 1.260 1.260 1.260 1.260 1.260 1.260 1.260 1.260 1.260 1.260 1.260 1.260 1.260 1.260
1.260 1.260 1.260 1.260 1.260 1.260 1.260 1.260 1.260 1.260 1.260 1.260 1.260 1.260 1.260 1.260 1.260 1.260
1.260 1.260 1.260 1.260 1.260 1.260 1.260 1.260 1.260 1.260 1.260 1.260 1.260 1.260 1.260 1.260 1.260 1.260
1.260 1.260 1.260 1.260 1.260 1.260 1.260 1.260 1.260 1.260 1.260 1.260 1.260 1.260 1.260 1.260 1.260 1.260
1.260 1.260 1.260 1.260 1.260 1.260 1.260 1.260 1.260 1.260 1.260 1.260 1.260 1.260 1.260 1.260 1.260 1.260
1.380 1.380 1.380 1.380 1.380 1.380 1.380 1.380 1.380 1.380 1.380 1.380 1.380 1.380 1.380 1.380 1.380 1.380
1.380 1.380 1.380 1.380 1.380 1.380 1.380 1.380 1.380 1.380 1.380 1.380 1.380 1.380 1.380 1.380 1.380 1.380
1.380 1.380 1.380 1.380 1.380 1.380 1.380 1.380 1.380 1.380 1.380 1.380 1.380 1.380 1.380 1.380 1.380 1.380
1.380 1.380 1.380 1.380 1.380 1.380 1.380 1.380 1.380 1.380 1.380 1.380 1.380 1.380 1.380 1.380 1.380 1.380
1.380 1.380 1.380 1.380 1.380 1.380 1.380 1.380 1.380 1.380 1.380 1.380 1.380 1.380 1.380 1.380 1.380 1.380
1.380 1.380 1.380 1.380 1.380 1.380 1.380 1.380 1.380 1.380 1.380 1.380 1.380 1.380 1.380 1.380 1.380 1.380
1.380 1.380 1.380 1.380 1.380 1.380 1.380 1.380 1.380 1.380 1.380 1.380 1.380 1.380 1.380 1.380 1.380 1.380
1.380 1.380 1.380 1.380 1.380 1.380 1.380 1.380 1.380 1.380 1.380 1.380 1.380 1.380 1.380 1.380 1.380 1.380
1.380 1.380 1.380 1.380 1.380 1.380 1.380 1.380 1.380 1.380 1.380 1.380 1.380 1.380 1.380 1.380 1.380 1.380
1.380 1.380 1.380 1.380 1.380 1.380 1.380 1.380 1.380 1.380 1.380 1.380 1.380 1.380 1.380 1.380 1.380 1.380
1.380 1.380 1.380 1.380 1.380 1.380 1.380 1.380 1.380 1.380 1.380 1.380 1.380 1.380 1.380 1.380 1.380 1.380
1.380 1.380 1.380 1.380 1.380 1.380 1.380 1.380 1.380 1.380 1.380 1.380 1.380 1.380 1.380 1.380 1.380 1.380
1.380 1.380 1.380 1.380 1.380 1.380 1.380 1.380 1.380 1.380 1.380 1.380 1.380 1.380 1.380 1.380 1.380 1.380
1.380 1.380 1.380 1.380 1.380 1.380 1.380 1.380 1.380 1.380 1.380 1.380 1.380 1.380 1.380 1.380 1.380 1.380
1.380 1.380 1.380 1.380 1.380 1.380 1.380 1.380 1.380 1.380 1.380 1.380 1.380 1.380 1.380 1.380 1.380 1.380
1.380 1.380 1.380 1.380 1.380 1.380 1.380 1.380 1.380 1.380 1.380 1.380 1.380 1.380 1.380 1.380 1.380 1.380
1.380 1.380 1.380 1.380 1.380 1.380 1.380 1.380 1.380 1.380 1.380 1.380 1.380 1.380 1.380 1.380 1.380 1.380
1.380 1.380 1.380 1.380 1.380 1.380 1.380 1.380 1.380 1.380 1.380 1.380 1.380 1.380 1.380 1.380 1.380 1.380
1.560 1.560 1.560 1.560 1.560 1.560 1.560 1.560 1.560 1.560 1.560 1.560 1.560 1.560 1.560 1.560 1.560 1.560
1.560 1.560 1.560 1.560 1.560 1.560 1.560 1.560 1.560 1.560 1.560 1.560 1.560 1.560 1.560 1.560 1.560 1.560
1.560 1.560 1.560 1.560 1.560 1.560 1.560 1.560 1.560 1.560 1.560 1.560 1.560 1.560 1.560 1.560 1.560 1.560
1.560 1.560 1.560 1.560 1.560 1.560 1.560 1.560 1.560 1.560 1.560 1.560 1.560 1.560 1.560 1.560 1.560 1.560
1.560 1.560 1.560 1.560 1.560 1.560 1.560 1.560 1.560 1.560 1.560 1.560 1.560 1.560 1.560 1.560 1.560 1.560
1.560 1.560 1.560 1.560 1.560 1.560 1.560 1.560 1.560 1.560 1.560 1.560 1.560 1.560 1.560 1.560 1.560 1.560
1.560 1.560 1.560 1.560 1.560 1.560 1.560 1.560 1.560 1.560 1.560 1.560 1.560 1.560 1.560 1.560 1.560 1.560
1.560 1.560 1.560 1.560 1.560 1.560 1.560 1.560 1.560 1.560 1.560 1.560 1.560 1.560 1.560 1.560 1.560 1.560
1.560 1.560 1.560 1.560 1.560 1.560 1.560 1.560 1.560 1.560 1.560 1.560 1.560 1.560 1.560 1.560 1.560 1.560
1.560 1.560 1.560 1.560 1.560 1.560 1.560 1.560 1.560 1.560 1.560 1.560 1.560 1.560 1.560 1.560 1.560 1.560
1.560 1.560 1.560 1.560 1.560 1.560 1.560 1.560 1.560 1.560 1.560 1.560 1.560 1.560 1.560 1.560 1.560 1.560
1.560 1.560 1.560 1.560 1.560 1.560 1.560 1.560 1.560 1.560 1.560 1.560 1.560 1.560 1.560 1.560 1.560 1.560
1.560 1.560 1.560 1.560 1.560 1.560 1.560 1.560 1.560 1.560 1.560 1.560 1.560 1.560 1.560 1.560 1.560 1.560
1.560 1.560 1.560 1.560 1.560 1.560 1.560 1.560 1.560 1.560 1.560 1.560 1.560 1.560 1.560 1.560 1.560 1.560
1.560 1.560 1.560 1.560 1.560 1.560 1.560 1.560 1.560 1.560 1.560 1.560 1.560 1.560 1.560 1.560 1.560 1.560
1.560 1.560 1.560 1.560 1.560 1.560 1.560 1.560 1.560 1.560 1.560 1.560 1.560 1.560 1.560 1.560 1.560 1.560
1.560 1.560 1.560 1.560 1.560 1.560 1.560 1.560 1.560 1.560 1.560 1.560 1.560 1.560 1.560 1.560 1.560 1.560
1.560 1.560 1.560 1.560 1.560 1.560 1.560 1.560 1.560 1.560 1.560 1.560 1.560 1.560 1.560 1.560 1.560 1.560
1.740 1.740 1.740 1.740 1.740 1.740 1.740 1.740 1.740 1.740 1.740 1.740 1.740 1.740 1.740 1.740 1.740 1.740
1.740 1.740 1.740 1.740 1.740 1.740 1.740 1.740 1.740 1.740 1.740 1.740 1.740 1.740 1.740 1.740 1.740 1.740
1.740 1.740 1.740 1.740 1.740 1.740 1.740 1.740 1.740 1.740 1.740 1.740 1.740 1.740 1.740 1.740 1.740 1.740
1.740 1.740 1.740 1.740 1.740 1.740 1.740 1.740 1.740 1.740 1.740 1.740 1.740 1.740 1.740 1.740 1.740 1.740
1.740 1.740 1.740 1.740 1.740 1.740 1.740 1.740 1.740 1.740 1.740 1.740 1.740 1.740 1.740 1.740 1.740 1.740
1.740 1.740 1.740 1.740 1.740 1.740 1.740 1.740 1.740 1.740 1.740 1.740 1.740 1.740 1.740 1.740 1.740 1.740
1.740 1.740 1.740 1.740 1.740 1.740 1.740 1.740 1.740 1.740 1.740 1.740 1.740 1.740 1.740 1.740 1.740 1.740
1.740 1.740 1.740 1.740 1.740 1.740 1.740 1.740 1.740 1.740 1.740 1.740 1.740 1.740 1.740 1.740 1.740 1.740
1.740 1.740 1.740 1.740 1.740 1.740 1.740 1.740 1.740 1.740 1.740 1.740 1.740 1.740 1.740 1.740 1.740 1.740
1.740 1.740 1.740 1.740 1.740 1.740 1.740 1.740 1.740 1.740 1.740 1.740 1.740 1.740 1.740 1.740 1.740 1.740
1.740 1.740 1.740 1.740 1.740 1.740 1.740 1.740 1.740 1.740 1.740 1.740 1.740 1.740 1.740 1.740 1.740 1.740
1.740 1.740 1.740 1.740 1.740 1.740 1.740 1.740 1.740 1.740 1.740 1.740 1.740 1.740 1.740 1.740 1.740 1.740
1.740 1.740 1.740 1.740 1.740 1.740 1.740 1.740 1.740 1.740 1.740 1.740 1.740 1.740 1.740 1.740 1.740 1.740
1.740 1.740 1.740 1.740 1.740 1.740 1.740 1.740 1.740 1.740 1.740 1.740 1.740 1.740 1.740 1.740 1.740 1.740
1.740 1.740 1.740 1.740 1.740 1.740 1.740 1.740 1.740 1.740 1.740 1.740 1.740 1.740 1.740 1.740 1.740 1.740
1.740 1.740 1.740 1.740 1.740 1.740 1.740 1.740 1.740 1.740 1.740 1.740 1.740 1.740 1.740 1.740 1.740 1.740
1.740 1.740 1.740 1.740 1.740 1.740 1.740 1.740 1.740 1.740 1.740 1.740 1.740 1.740 1.740 1.740 1.740 1.740
1.740 1.740 1.740 1.740 1.740 1.740 1.740 1.740 1.740 1.740 1.740 1.740 1.740 1.740 1.740 1.740 1.740 1.740
1.980 1.980 1.980 1.980 1.980 1.980 1.980 1.980 1.980 1.980 1.980 1.980 1.980 1.980 1.980 1.980 1.980 1.980
1.980 1.980 1.980 1.980 1.980 1.980 1.980 1.980 1.980 1.980 1.980 1.980 1.980 1.980 1.980 1.980 1.980 1.980
1.980 1.980 1.980 1.980 1.980 1.980 1.980 1.980 1.980 1.980 1.980 1.980 1.980 1.980 1.980 1.980 1.980 1.980
1.980 1.980 1.980 1.980 1.980 1.980 1.980 1.980 1.980 1.980 1.980 1.980 1.980 1.980 1.980 1.980 1.980 1.980
1.980 1.980 1.980 1.980 1.980 1.980 1.980 1.980 1.980 1.980 1.980 1.980 1.980 1.980 1.980 1.980 1.980 1.980
1.980 1.980 1.980 1.980 1.980 1.980 1.980 1.980 1.980 1.980 1.980 1.980 1.980 1.980 1.980 1.980 1.980 1.980
1.980 1.980 1.980 1.980 1.980 1.980 1.980 1.980 1.980 1.980 1.980 1.980 1.980 1.980 1.980 1.980 1.980 1.980
1.980 1.980 1.980 1.980 1.980 1.980 1.980 1.980 1.980 1.980 1.980 1.980 1.980 1.980 1.980 1.980 1.980 1.980
1.980 1.980 1.980 1.980 1.980 1.980 1.980 1.980 1.980 1.980 1.980 1.980 1.980 1.980 1.980 1.980 1.980 1.980
1.980 1.980 1.980 1.980 1.980 1.980 1.980 1.980 1.980 1.980 1.980 1.980 1.980 1.980 1.980 1.980 1.980 1.980
1.980 1.980 1.980 1.980 1.980 1.980 1.980 1.980 1.980 1.980 1.980 1.980 1.980 1.980 1.980 1.980 1.980 1.980
1.980 1.980 1.980 1.980 1.980 1.980 1.980 1.980 1.980 1.980 1.980 1.980 1.980 1.980 1.980 1.980 1.980 1.980
1.980 1.980 1.980 1.980 1.980 1.980 1.980 1.980 1.980 1.980 1.980 1.980 1.980 1.980 1.980 1.980 1.980 1.980
1.980 1.980 1.980 1.980 1.980 1.980 1.980 1.980 1.980 1.980 1.980 1.980 1.980 1.980 1.980 1.980 1.980 1.980
1.980 1.980 1.980 1.980 1.980 1.980 1.980 1.980 1.980 1.980 1.980 1.980 1.980 1.980 1.980 1.980 1.980 1.980
1.980 1.980 1.980 1.980 1.980 1.980 1.980 1.980 1.980 1.980 1.980 1.980 1.980 1.980 1.980 1.980 1.980 1.980
1.980 1.980 1.980 1.980 1.980 1.980 1.980 1.980 1.980 1.980 1.980 1.980 1.980 1.980 1.980 1.980 1.980 1.980
1.980 1.980 1.980 1.980 1.980 1.980 1.980 1.980 1.980 1.980 1.980 1.980 1.980 1.980 1.980 1.980 1.980 1.980
2.400 2.400 2.400 2.400 2.400 2.400 2.400 2.400 2.400 2.400 2.400 2.400 2.400 2.400 2.400 2.400 2.400 2.400
2.400 2.400 2.400 2.400 2.400 2.400 2.400 2.400 2.400 2.400 2.400 2.400 2.400 2.400 2.400 2.400 2.400 2.400
2.400 2.400 2.400 2.400 2.400 2.400 2.400 2.400 2.400 2.400 2.400 2.400 2.400 2.400 2.400 2.400 2.400 2.400
2.400 2.400 2.400 2.400 2.400 2.400 2.400 2.400 2.400 2.400 2.400 2.400 2.400 2.400 2.400 2.400 2.400 2.400
2.400 2.400 2.400 2.400 2.400 2.400 2.400 2.400 2.400 2.400 2.400 2.400 2.400 2.400 2.400 2.400 2.400 2.400
2.400 2.400 2.400 2.400 2.400 2.400 2.400 2.400 2.400 2.400 2.400 2.400 2.400 2.400 2.400 2.400 2.400 2.400
2.400 2.400 2.400 2.400 2.400 2.400 2.400 2.400 2.400 2.400 2.400 2.400 2.400 2.400 2.400 2.400 2.400 2.400
2.400 2.400 2.400 2.400 2.400 2.400 2.400 2.400 2.400 2.400 2.400 2.400 2.400 2.400 2.400 2.400 2.400 2.400
2.400 2.400 2.400 2.400 2.400 2.400 2.400 2.400 2.400 2.400 2.400 2.400 2.400 2.400 2.400 2.400 2.400 2.400
2.400 2.400 2.400 2.400 2.400 2.400 2.400 2.400 2.400 2.400 2.400 2.400 2.400 2.400 2.400 2.400 2.400 2.400
2.400 2.400 2.400 2.400 2.400 2.400 2.400 2.400 2.400 2.400 2.400 2.400 2.400 2.400 2.400 2.400 2.400 2.400
2.400 2.400 2.400 2.400 2.400 2.400 2.400 2.400 2.400 2.400 2.400 2.400 2.400 2.400 2.400 2.400 2.400 2.400
2.400 2.400 2.400 2.400 2.400 2.400 2.400 2.400 2.400 2.400 2.400 2.400 2.400 2.400 2.400 2.400 2.400 2.400
2.400 2.400 2.400 2.400 2.400 2.400 2.400 2.400 2.400 2.400 2.400 2.400 2.400 2.400 2.400 2.400 2.400 2.400
2.400 2.400 2.400 2.400 2.400 2.400 2.400 2.400 2.400 2.400 2.400 2.400 2.400 2.400 2.400 2.400 2.400 2.400
2.400 2.400 2.400 2.400 2.400 2.400 2.400 2.400 2.400 2.400 2.400 2.400 2.400 2.400 2.400 2.400 2.400 2.400
2.400 2.400 2.400 2.400 2.400 2.400 2.400 2.400 2.400 2.400 2.400 2.400 2.400 2.400 2.400 2.400 2.400 2.400
2.400 2.400 2.400 2.400 2.400 2.400 2.400 2.400 2.400 2.400 2.400 2.400 2.400 2.400 2.400 2.400 2.400 2.400

View File

@ -0,0 +1,162 @@
1.2068 1.2814 1.0674 0.7267 0.5171 0.5973 0.9066 1.2109 1.2799 1.0614 0.7208 0.5158 0.6016 0.9132 1.2148 1.2782 1.0554 0.7150
1.2814 1.3742 1.1081 0.6845 0.4240 0.5237 0.9082 1.2865 1.3723 1.1007 0.6772 0.4224 0.5290 0.9164 1.2914 1.3702 1.0932 0.6700
1.0674 1.1081 0.9913 0.8054 0.6911 0.7349 0.9036 1.0696 1.1073 0.9881 0.8022 0.6904 0.7372 0.9072 1.0718 1.1064 0.9848 0.7990
0.7267 0.6845 0.8054 0.9979 1.1163 1.0710 0.8963 0.7244 0.6854 0.8088 1.0012 1.1170 1.0686 0.8926 0.7222 0.6863 0.8122 1.0045
0.5171 0.4240 0.6911 1.1163 1.3778 1.2777 0.8918 0.5121 0.4260 0.6986 1.1236 1.3794 1.2724 0.8836 0.5071 0.4280 0.7061 1.1309
0.5973 0.5237 0.7349 1.0710 1.2777 1.1986 0.8935 0.5933 0.5253 0.7408 1.0768 1.2790 1.1944 0.8870 0.5894 0.5269 0.7467 1.0825
0.9066 0.9082 0.9036 0.8963 0.8918 0.8935 0.9001 0.9067 0.9082 0.9035 0.8962 0.8918 0.8936 0.9003 0.9068 0.9081 0.9033 0.8960
1.2109 1.2865 1.0696 0.7244 0.5121 0.5933 0.9067 1.2150 1.2849 1.0635 0.7184 0.5107 0.5976 0.9133 1.2190 1.2832 1.0574 0.7125
1.2799 1.3723 1.1073 0.6854 0.4260 0.5253 0.9082 1.2849 1.3703 1.0999 0.6781 0.4243 0.5305 0.9163 1.2898 1.3683 1.0924 0.6709
1.0614 1.1007 0.9881 0.8088 0.6986 0.7408 0.9035 1.0635 1.0999 0.9849 0.8057 0.6979 0.7430 0.9069 1.0656 1.0990 0.9818 0.8027
0.7208 0.6772 0.8022 1.0012 1.1236 1.0768 0.8962 0.7184 0.6781 0.8057 1.0047 1.1244 1.0743 0.8923 0.7161 0.6791 0.8092 1.0081
0.5158 0.4224 0.6904 1.1170 1.3794 1.2790 0.8918 0.5107 0.4243 0.6979 1.1244 1.3811 1.2737 0.8835 0.5058 0.4264 0.7054 1.1317
0.6016 0.5290 0.7372 1.0686 1.2724 1.1944 0.8936 0.5976 0.5305 0.7430 1.0743 1.2737 1.1903 0.8872 0.5938 0.5321 0.7488 1.0800
0.9132 0.9164 0.9072 0.8926 0.8836 0.8870 0.9003 0.9133 0.9163 0.9069 0.8923 0.8835 0.8872 0.9006 0.9135 0.9162 0.9067 0.8921
1.2148 1.2914 1.0718 0.7222 0.5071 0.5894 0.9068 1.2190 1.2898 1.0656 0.7161 0.5058 0.5938 0.9135 1.2230 1.2881 1.0594 0.7101
1.2782 1.3702 1.1064 0.6863 0.4280 0.5269 0.9081 1.2832 1.3683 1.0990 0.6791 0.4264 0.5321 0.9162 1.2881 1.3662 1.0916 0.6719
1.0554 1.0932 0.9848 0.8122 0.7061 0.7467 0.9033 1.0574 1.0924 0.9818 0.8092 0.7054 0.7488 0.9067 1.0594 1.0916 0.9787 0.8063
0.7150 0.6700 0.7990 1.0045 1.1309 1.0825 0.8960 0.7125 0.6709 0.8027 1.0081 1.1317 1.0800 0.8921 0.7101 0.6719 0.8063 1.0116
1.3268 1.4014 1.1874 0.8467 0.6371 0.7173 1.0266 1.3309 1.3999 1.1814 0.8408 0.6358 0.7216 1.0332 1.3348 1.3982 1.1754 0.8350
1.4014 1.4942 1.2281 0.8045 0.5440 0.6437 1.0282 1.4065 1.4923 1.2207 0.7972 0.5424 0.6490 1.0364 1.4114 1.4902 1.2132 0.7900
1.1874 1.2281 1.1113 0.9254 0.8111 0.8549 1.0236 1.1896 1.2273 1.1081 0.9222 0.8104 0.8572 1.0272 1.1918 1.2264 1.1048 0.9190
0.8467 0.8045 0.9254 1.1179 1.2363 1.1910 1.0163 0.8444 0.8054 0.9288 1.1212 1.2370 1.1886 1.0126 0.8422 0.8063 0.9322 1.1245
0.6371 0.5440 0.8111 1.2363 1.4978 1.3977 1.0118 0.6321 0.5460 0.8186 1.2436 1.4994 1.3924 1.0036 0.6271 0.5480 0.8261 1.2509
0.7173 0.6437 0.8549 1.1910 1.3977 1.3186 1.0135 0.7133 0.6453 0.8608 1.1968 1.3990 1.3144 1.0070 0.7094 0.6469 0.8667 1.2025
1.0266 1.0282 1.0236 1.0163 1.0118 1.0135 1.0201 1.0267 1.0282 1.0235 1.0162 1.0118 1.0136 1.0203 1.0268 1.0281 1.0233 1.0160
1.3309 1.4065 1.1896 0.8444 0.6321 0.7133 1.0267 1.3350 1.4049 1.1835 0.8384 0.6307 0.7176 1.0333 1.3390 1.4032 1.1774 0.8325
1.3999 1.4923 1.2273 0.8054 0.5460 0.6453 1.0282 1.4049 1.4903 1.2199 0.7981 0.5443 0.6505 1.0363 1.4098 1.4883 1.2124 0.7909
1.1814 1.2207 1.1081 0.9288 0.8186 0.8608 1.0235 1.1835 1.2199 1.1049 0.9257 0.8179 0.8630 1.0269 1.1856 1.2190 1.1018 0.9227
0.8408 0.7972 0.9222 1.1212 1.2436 1.1968 1.0162 0.8384 0.7981 0.9257 1.1247 1.2444 1.1943 1.0123 0.8361 0.7991 0.9292 1.1281
0.6358 0.5424 0.8104 1.2370 1.4994 1.3990 1.0118 0.6307 0.5443 0.8179 1.2444 1.5011 1.3937 1.0035 0.6258 0.5464 0.8254 1.2517
0.7216 0.6490 0.8572 1.1886 1.3924 1.3144 1.0136 0.7176 0.6505 0.8630 1.1943 1.3937 1.3103 1.0072 0.7138 0.6521 0.8688 1.2000
1.0332 1.0364 1.0272 1.0126 1.0036 1.0070 1.0203 1.0333 1.0363 1.0269 1.0123 1.0035 1.0072 1.0206 1.0335 1.0362 1.0267 1.0121
1.3348 1.4114 1.1918 0.8422 0.6271 0.7094 1.0268 1.3390 1.4098 1.1856 0.8361 0.6258 0.7138 1.0335 1.3430 1.4081 1.1794 0.8301
1.3982 1.4902 1.2264 0.8063 0.5480 0.6469 1.0281 1.4032 1.4883 1.2190 0.7991 0.5464 0.6521 1.0362 1.4081 1.4862 1.2116 0.7919
1.1754 1.2132 1.1048 0.9322 0.8261 0.8667 1.0233 1.1774 1.2124 1.1018 0.9292 0.8254 0.8688 1.0267 1.1794 1.2116 1.0987 0.9263
0.8350 0.7900 0.9190 1.1245 1.2509 1.2025 1.0160 0.8325 0.7909 0.9227 1.1281 1.2517 1.2000 1.0121 0.8301 0.7919 0.9263 1.1316
1.4468 1.5214 1.3074 0.9667 0.7571 0.8373 1.1466 1.4509 1.5199 1.3014 0.9608 0.7558 0.8416 1.1532 1.4548 1.5182 1.2954 0.9550
1.5214 1.6142 1.3481 0.9245 0.6640 0.7637 1.1482 1.5265 1.6123 1.3407 0.9172 0.6624 0.7690 1.1564 1.5314 1.6102 1.3332 0.9100
1.3074 1.3481 1.2313 1.0454 0.9311 0.9749 1.1436 1.3096 1.3473 1.2281 1.0422 0.9304 0.9772 1.1472 1.3118 1.3464 1.2248 1.0390
0.9667 0.9245 1.0454 1.2379 1.3563 1.3110 1.1363 0.9644 0.9254 1.0488 1.2412 1.3570 1.3086 1.1326 0.9622 0.9263 1.0522 1.2445
0.7571 0.6640 0.9311 1.3563 1.6178 1.5177 1.1318 0.7521 0.6660 0.9386 1.3636 1.6194 1.5124 1.1236 0.7471 0.6680 0.9461 1.3709
0.8373 0.7637 0.9749 1.3110 1.5177 1.4386 1.1335 0.8333 0.7653 0.9808 1.3168 1.5190 1.4344 1.1270 0.8294 0.7669 0.9867 1.3225
1.1466 1.1482 1.1436 1.1363 1.1318 1.1335 1.1401 1.1467 1.1482 1.1435 1.1362 1.1318 1.1336 1.1403 1.1468 1.1481 1.1433 1.1360
1.4509 1.5265 1.3096 0.9644 0.7521 0.8333 1.1467 1.4550 1.5249 1.3035 0.9584 0.7507 0.8376 1.1533 1.4590 1.5232 1.2974 0.9525
1.5199 1.6123 1.3473 0.9254 0.6660 0.7653 1.1482 1.5249 1.6103 1.3399 0.9181 0.6643 0.7705 1.1563 1.5298 1.6083 1.3324 0.9109
1.3014 1.3407 1.2281 1.0488 0.9386 0.9808 1.1435 1.3035 1.3399 1.2249 1.0457 0.9379 0.9830 1.1469 1.3056 1.3390 1.2218 1.0427
0.9608 0.9172 1.0422 1.2412 1.3636 1.3168 1.1362 0.9584 0.9181 1.0457 1.2447 1.3644 1.3143 1.1323 0.9561 0.9191 1.0492 1.2481
0.7558 0.6624 0.9304 1.3570 1.6194 1.5190 1.1318 0.7507 0.6643 0.9379 1.3644 1.6211 1.5137 1.1235 0.7458 0.6664 0.9454 1.3717
0.8416 0.7690 0.9772 1.3086 1.5124 1.4344 1.1336 0.8376 0.7705 0.9830 1.3143 1.5137 1.4303 1.1272 0.8338 0.7721 0.9888 1.3200
1.1532 1.1564 1.1472 1.1326 1.1236 1.1270 1.1403 1.1533 1.1563 1.1469 1.1323 1.1235 1.1272 1.1406 1.1535 1.1562 1.1467 1.1321
1.4548 1.5314 1.3118 0.9622 0.7471 0.8294 1.1468 1.4590 1.5298 1.3056 0.9561 0.7458 0.8338 1.1535 1.4630 1.5281 1.2994 0.9501
1.5182 1.6102 1.3464 0.9263 0.6680 0.7669 1.1481 1.5232 1.6083 1.3390 0.9191 0.6664 0.7721 1.1562 1.5281 1.6062 1.3316 0.9119
1.2954 1.3332 1.2248 1.0522 0.9461 0.9867 1.1433 1.2974 1.3324 1.2218 1.0492 0.9454 0.9888 1.1467 1.2994 1.3316 1.2187 1.0463
0.9550 0.9100 1.0390 1.2445 1.3709 1.3225 1.1360 0.9525 0.9109 1.0427 1.2481 1.3717 1.3200 1.1321 0.9501 0.9119 1.0463 1.2516
1.5668 1.6414 1.4274 1.0867 0.8771 0.9573 1.2666 1.5709 1.6399 1.4214 1.0808 0.8758 0.9616 1.2732 1.5748 1.6382 1.4154 1.0750
1.6414 1.7342 1.4681 1.0445 0.7840 0.8837 1.2682 1.6465 1.7323 1.4607 1.0372 0.7824 0.8890 1.2764 1.6514 1.7302 1.4532 1.0300
1.4274 1.4681 1.3513 1.1654 1.0511 1.0949 1.2636 1.4296 1.4673 1.3481 1.1622 1.0504 1.0972 1.2672 1.4318 1.4664 1.3448 1.1590
1.0867 1.0445 1.1654 1.3579 1.4763 1.4310 1.2563 1.0844 1.0454 1.1688 1.3612 1.4770 1.4286 1.2526 1.0822 1.0463 1.1722 1.3645
0.8771 0.7840 1.0511 1.4763 1.7378 1.6377 1.2518 0.8721 0.7860 1.0586 1.4836 1.7394 1.6324 1.2436 0.8671 0.7880 1.0661 1.4909
0.9573 0.8837 1.0949 1.4310 1.6377 1.5586 1.2535 0.9533 0.8853 1.1008 1.4368 1.6390 1.5544 1.2470 0.9494 0.8869 1.1067 1.4425
1.2666 1.2682 1.2636 1.2563 1.2518 1.2535 1.2601 1.2667 1.2682 1.2635 1.2562 1.2518 1.2536 1.2603 1.2668 1.2681 1.2633 1.2560
1.5709 1.6465 1.4296 1.0844 0.8721 0.9533 1.2667 1.5750 1.6449 1.4235 1.0784 0.8707 0.9576 1.2733 1.5790 1.6432 1.4174 1.0725
1.6399 1.7323 1.4673 1.0454 0.7860 0.8853 1.2682 1.6449 1.7303 1.4599 1.0381 0.7843 0.8905 1.2763 1.6498 1.7283 1.4524 1.0309
1.4214 1.4607 1.3481 1.1688 1.0586 1.1008 1.2635 1.4235 1.4599 1.3449 1.1657 1.0579 1.1030 1.2669 1.4256 1.4590 1.3418 1.1627
1.0808 1.0372 1.1622 1.3612 1.4836 1.4368 1.2562 1.0784 1.0381 1.1657 1.3647 1.4844 1.4343 1.2523 1.0761 1.0391 1.1692 1.3681
0.8758 0.7824 1.0504 1.4770 1.7394 1.6390 1.2518 0.8707 0.7843 1.0579 1.4844 1.7411 1.6337 1.2435 0.8658 0.7864 1.0654 1.4917
0.9616 0.8890 1.0972 1.4286 1.6324 1.5544 1.2536 0.9576 0.8905 1.1030 1.4343 1.6337 1.5503 1.2472 0.9538 0.8921 1.1088 1.4400
1.2732 1.2764 1.2672 1.2526 1.2436 1.2470 1.2603 1.2733 1.2763 1.2669 1.2523 1.2435 1.2472 1.2606 1.2735 1.2762 1.2667 1.2521
1.5748 1.6514 1.4318 1.0822 0.8671 0.9494 1.2668 1.5790 1.6498 1.4256 1.0761 0.8658 0.9538 1.2735 1.5830 1.6481 1.4194 1.0701
1.6382 1.7302 1.4664 1.0463 0.7880 0.8869 1.2681 1.6432 1.7283 1.4590 1.0391 0.7864 0.8921 1.2762 1.6481 1.7262 1.4516 1.0319
1.4154 1.4532 1.3448 1.1722 1.0661 1.1067 1.2633 1.4174 1.4524 1.3418 1.1692 1.0654 1.1088 1.2667 1.4194 1.4516 1.3387 1.1663
1.0750 1.0300 1.1590 1.3645 1.4909 1.4425 1.2560 1.0725 1.0309 1.1627 1.3681 1.4917 1.4400 1.2521 1.0701 1.0319 1.1663 1.3716
1.6868 1.7614 1.5474 1.2067 0.9971 1.0773 1.3866 1.6909 1.7599 1.5414 1.2008 0.9958 1.0816 1.3932 1.6948 1.7582 1.5354 1.1950
1.7614 1.8542 1.5881 1.1645 0.9040 1.0037 1.3882 1.7665 1.8523 1.5807 1.1572 0.9024 1.0090 1.3964 1.7714 1.8502 1.5732 1.1500
1.5474 1.5881 1.4713 1.2854 1.1711 1.2149 1.3836 1.5496 1.5873 1.4681 1.2822 1.1704 1.2172 1.3872 1.5518 1.5864 1.4648 1.2790
1.2067 1.1645 1.2854 1.4779 1.5963 1.5510 1.3763 1.2044 1.1654 1.2888 1.4812 1.5970 1.5486 1.3726 1.2022 1.1663 1.2922 1.4845
0.9971 0.9040 1.1711 1.5963 1.8578 1.7577 1.3718 0.9921 0.9060 1.1786 1.6036 1.8594 1.7524 1.3636 0.9871 0.9080 1.1861 1.6109
1.0773 1.0037 1.2149 1.5510 1.7577 1.6786 1.3735 1.0733 1.0053 1.2208 1.5568 1.7590 1.6744 1.3670 1.0694 1.0069 1.2267 1.5625
1.3866 1.3882 1.3836 1.3763 1.3718 1.3735 1.3801 1.3867 1.3882 1.3835 1.3762 1.3718 1.3736 1.3803 1.3868 1.3881 1.3833 1.3760
1.6909 1.7665 1.5496 1.2044 0.9921 1.0733 1.3867 1.6950 1.7649 1.5435 1.1984 0.9907 1.0776 1.3933 1.6990 1.7632 1.5374 1.1925
1.7599 1.8523 1.5873 1.1654 0.9060 1.0053 1.3882 1.7649 1.8503 1.5799 1.1581 0.9043 1.0105 1.3963 1.7698 1.8483 1.5724 1.1509
1.5414 1.5807 1.4681 1.2888 1.1786 1.2208 1.3835 1.5435 1.5799 1.4649 1.2857 1.1779 1.2230 1.3869 1.5456 1.5790 1.4618 1.2827
1.2008 1.1572 1.2822 1.4812 1.6036 1.5568 1.3762 1.1984 1.1581 1.2857 1.4847 1.6044 1.5543 1.3723 1.1961 1.1591 1.2892 1.4881
0.9958 0.9024 1.1704 1.5970 1.8594 1.7590 1.3718 0.9907 0.9043 1.1779 1.6044 1.8611 1.7537 1.3635 0.9858 0.9064 1.1854 1.6117
1.0816 1.0090 1.2172 1.5486 1.7524 1.6744 1.3736 1.0776 1.0105 1.2230 1.5543 1.7537 1.6703 1.3672 1.0738 1.0121 1.2288 1.5600
1.3932 1.3964 1.3872 1.3726 1.3636 1.3670 1.3803 1.3933 1.3963 1.3869 1.3723 1.3635 1.3672 1.3806 1.3935 1.3962 1.3867 1.3721
1.6948 1.7714 1.5518 1.2022 0.9871 1.0694 1.3868 1.6990 1.7698 1.5456 1.1961 0.9858 1.0738 1.3935 1.7030 1.7681 1.5394 1.1901
1.7582 1.8502 1.5864 1.1663 0.9080 1.0069 1.3881 1.7632 1.8483 1.5790 1.1591 0.9064 1.0121 1.3962 1.7681 1.8462 1.5716 1.1519
1.5354 1.5732 1.4648 1.2922 1.1861 1.2267 1.3833 1.5374 1.5724 1.4618 1.2892 1.1854 1.2288 1.3867 1.5394 1.5716 1.4587 1.2863
1.1950 1.1500 1.2790 1.4845 1.6109 1.5625 1.3760 1.1925 1.1509 1.2827 1.4881 1.6117 1.5600 1.3721 1.1901 1.1519 1.2863 1.4916
1.8668 1.9414 1.7274 1.3867 1.1771 1.2573 1.5666 1.8709 1.9399 1.7214 1.3808 1.1758 1.2616 1.5732 1.8748 1.9382 1.7154 1.3750
1.9414 2.0342 1.7681 1.3445 1.0840 1.1837 1.5682 1.9465 2.0323 1.7607 1.3372 1.0824 1.1890 1.5764 1.9514 2.0302 1.7532 1.3300
1.7274 1.7681 1.6513 1.4654 1.3511 1.3949 1.5636 1.7296 1.7673 1.6481 1.4622 1.3504 1.3972 1.5672 1.7318 1.7664 1.6448 1.4590
1.3867 1.3445 1.4654 1.6579 1.7763 1.7310 1.5563 1.3844 1.3454 1.4688 1.6612 1.7770 1.7286 1.5526 1.3822 1.3463 1.4722 1.6645
1.1771 1.0840 1.3511 1.7763 2.0378 1.9377 1.5518 1.1721 1.0860 1.3586 1.7836 2.0394 1.9324 1.5436 1.1671 1.0880 1.3661 1.7909
1.2573 1.1837 1.3949 1.7310 1.9377 1.8586 1.5535 1.2533 1.1853 1.4008 1.7368 1.9390 1.8544 1.5470 1.2494 1.1869 1.4067 1.7425
1.5666 1.5682 1.5636 1.5563 1.5518 1.5535 1.5601 1.5667 1.5682 1.5635 1.5562 1.5518 1.5536 1.5603 1.5668 1.5681 1.5633 1.5560
1.8709 1.9465 1.7296 1.3844 1.1721 1.2533 1.5667 1.8750 1.9449 1.7235 1.3784 1.1707 1.2576 1.5733 1.8790 1.9432 1.7174 1.3725
1.9399 2.0323 1.7673 1.3454 1.0860 1.1853 1.5682 1.9449 2.0303 1.7599 1.3381 1.0843 1.1905 1.5763 1.9498 2.0283 1.7524 1.3309
1.7214 1.7607 1.6481 1.4688 1.3586 1.4008 1.5635 1.7235 1.7599 1.6449 1.4657 1.3579 1.4030 1.5669 1.7256 1.7590 1.6418 1.4627
1.3808 1.3372 1.4622 1.6612 1.7836 1.7368 1.5562 1.3784 1.3381 1.4657 1.6647 1.7844 1.7343 1.5523 1.3761 1.3391 1.4692 1.6681
1.1758 1.0824 1.3504 1.7770 2.0394 1.9390 1.5518 1.1707 1.0843 1.3579 1.7844 2.0411 1.9337 1.5435 1.1658 1.0864 1.3654 1.7917
1.2616 1.1890 1.3972 1.7286 1.9324 1.8544 1.5536 1.2576 1.1905 1.4030 1.7343 1.9337 1.8503 1.5472 1.2538 1.1921 1.4088 1.7400
1.5732 1.5764 1.5672 1.5526 1.5436 1.5470 1.5603 1.5733 1.5763 1.5669 1.5523 1.5435 1.5472 1.5606 1.5735 1.5762 1.5667 1.5521
1.8748 1.9514 1.7318 1.3822 1.1671 1.2494 1.5668 1.8790 1.9498 1.7256 1.3761 1.1658 1.2538 1.5735 1.8830 1.9481 1.7194 1.3701
1.9382 2.0302 1.7664 1.3463 1.0880 1.1869 1.5681 1.9432 2.0283 1.7590 1.3391 1.0864 1.1921 1.5762 1.9481 2.0262 1.7516 1.3319
1.7154 1.7532 1.6448 1.4722 1.3661 1.4067 1.5633 1.7174 1.7524 1.6418 1.4692 1.3654 1.4088 1.5667 1.7194 1.7516 1.6387 1.4663
1.3750 1.3300 1.4590 1.6645 1.7909 1.7425 1.5560 1.3725 1.3309 1.4627 1.6681 1.7917 1.7400 1.5521 1.3701 1.3319 1.4663 1.6716
2.0468 2.1214 1.9074 1.5667 1.3571 1.4373 1.7466 2.0509 2.1199 1.9014 1.5608 1.3558 1.4416 1.7532 2.0548 2.1182 1.8954 1.5550
2.1214 2.2142 1.9481 1.5245 1.2640 1.3637 1.7482 2.1265 2.2123 1.9407 1.5172 1.2624 1.3690 1.7564 2.1314 2.2102 1.9332 1.5100
1.9074 1.9481 1.8313 1.6454 1.5311 1.5749 1.7436 1.9096 1.9473 1.8281 1.6422 1.5304 1.5772 1.7472 1.9118 1.9464 1.8248 1.6390
1.5667 1.5245 1.6454 1.8379 1.9563 1.9110 1.7363 1.5644 1.5254 1.6488 1.8412 1.9570 1.9086 1.7326 1.5622 1.5263 1.6522 1.8445
1.3571 1.2640 1.5311 1.9563 2.2178 2.1177 1.7318 1.3521 1.2660 1.5386 1.9636 2.2194 2.1124 1.7236 1.3471 1.2680 1.5461 1.9709
1.4373 1.3637 1.5749 1.9110 2.1177 2.0386 1.7335 1.4333 1.3653 1.5808 1.9168 2.1190 2.0344 1.7270 1.4294 1.3669 1.5867 1.9225
1.7466 1.7482 1.7436 1.7363 1.7318 1.7335 1.7401 1.7467 1.7482 1.7435 1.7362 1.7318 1.7336 1.7403 1.7468 1.7481 1.7433 1.7360
2.0509 2.1265 1.9096 1.5644 1.3521 1.4333 1.7467 2.0550 2.1249 1.9035 1.5584 1.3507 1.4376 1.7533 2.0590 2.1232 1.8974 1.5525
2.1199 2.2123 1.9473 1.5254 1.2660 1.3653 1.7482 2.1249 2.2103 1.9399 1.5181 1.2643 1.3705 1.7563 2.1298 2.2083 1.9324 1.5109
1.9014 1.9407 1.8281 1.6488 1.5386 1.5808 1.7435 1.9035 1.9399 1.8249 1.6457 1.5379 1.5830 1.7469 1.9056 1.9390 1.8218 1.6427
1.5608 1.5172 1.6422 1.8412 1.9636 1.9168 1.7362 1.5584 1.5181 1.6457 1.8447 1.9644 1.9143 1.7323 1.5561 1.5191 1.6492 1.8481
1.3558 1.2624 1.5304 1.9570 2.2194 2.1190 1.7318 1.3507 1.2643 1.5379 1.9644 2.2211 2.1137 1.7235 1.3458 1.2664 1.5454 1.9717
1.4416 1.3690 1.5772 1.9086 2.1124 2.0344 1.7336 1.4376 1.3705 1.5830 1.9143 2.1137 2.0303 1.7272 1.4338 1.3721 1.5888 1.9200
1.7532 1.7564 1.7472 1.7326 1.7236 1.7270 1.7403 1.7533 1.7563 1.7469 1.7323 1.7235 1.7272 1.7406 1.7535 1.7562 1.7467 1.7321
2.0548 2.1314 1.9118 1.5622 1.3471 1.4294 1.7468 2.0590 2.1298 1.9056 1.5561 1.3458 1.4338 1.7535 2.0630 2.1281 1.8994 1.5501
2.1182 2.2102 1.9464 1.5263 1.2680 1.3669 1.7481 2.1232 2.2083 1.9390 1.5191 1.2664 1.3721 1.7562 2.1281 2.2062 1.9316 1.5119
1.8954 1.9332 1.8248 1.6522 1.5461 1.5867 1.7433 1.8974 1.9324 1.8218 1.6492 1.5454 1.5888 1.7467 1.8994 1.9316 1.8187 1.6463
1.5550 1.5100 1.6390 1.8445 1.9709 1.9225 1.7360 1.5525 1.5109 1.6427 1.8481 1.9717 1.9200 1.7321 1.5501 1.5119 1.6463 1.8516
2.2868 2.3614 2.1474 1.8067 1.5971 1.6773 1.9866 2.2909 2.3599 2.1414 1.8008 1.5958 1.6816 1.9932 2.2948 2.3582 2.1354 1.7950
2.3614 2.4542 2.1881 1.7645 1.5040 1.6037 1.9882 2.3665 2.4523 2.1807 1.7572 1.5024 1.6090 1.9964 2.3714 2.4502 2.1732 1.7500
2.1474 2.1881 2.0713 1.8854 1.7711 1.8149 1.9836 2.1496 2.1873 2.0681 1.8822 1.7704 1.8172 1.9872 2.1518 2.1864 2.0648 1.8790
1.8067 1.7645 1.8854 2.0779 2.1963 2.1510 1.9763 1.8044 1.7654 1.8888 2.0812 2.1970 2.1486 1.9726 1.8022 1.7663 1.8922 2.0845
1.5971 1.5040 1.7711 2.1963 2.4578 2.3577 1.9718 1.5921 1.5060 1.7786 2.2036 2.4594 2.3524 1.9636 1.5871 1.5080 1.7861 2.2109
1.6773 1.6037 1.8149 2.1510 2.3577 2.2786 1.9735 1.6733 1.6053 1.8208 2.1568 2.3590 2.2744 1.9670 1.6694 1.6069 1.8267 2.1625
1.9866 1.9882 1.9836 1.9763 1.9718 1.9735 1.9801 1.9867 1.9882 1.9835 1.9762 1.9718 1.9736 1.9803 1.9868 1.9881 1.9833 1.9760
2.2909 2.3665 2.1496 1.8044 1.5921 1.6733 1.9867 2.2950 2.3649 2.1435 1.7984 1.5907 1.6776 1.9933 2.2990 2.3632 2.1374 1.7925
2.3599 2.4523 2.1873 1.7654 1.5060 1.6053 1.9882 2.3649 2.4503 2.1799 1.7581 1.5043 1.6105 1.9963 2.3698 2.4483 2.1724 1.7509
2.1414 2.1807 2.0681 1.8888 1.7786 1.8208 1.9835 2.1435 2.1799 2.0649 1.8857 1.7779 1.8230 1.9869 2.1456 2.1790 2.0618 1.8827
1.8008 1.7572 1.8822 2.0812 2.2036 2.1568 1.9762 1.7984 1.7581 1.8857 2.0847 2.2044 2.1543 1.9723 1.7961 1.7591 1.8892 2.0881
1.5958 1.5024 1.7704 2.1970 2.4594 2.3590 1.9718 1.5907 1.5043 1.7779 2.2044 2.4611 2.3537 1.9635 1.5858 1.5064 1.7854 2.2117
1.6816 1.6090 1.8172 2.1486 2.3524 2.2744 1.9736 1.6776 1.6105 1.8230 2.1543 2.3537 2.2703 1.9672 1.6738 1.6121 1.8288 2.1600
1.9932 1.9964 1.9872 1.9726 1.9636 1.9670 1.9803 1.9933 1.9963 1.9869 1.9723 1.9635 1.9672 1.9806 1.9935 1.9962 1.9867 1.9721
2.2948 2.3714 2.1518 1.8022 1.5871 1.6694 1.9868 2.2990 2.3698 2.1456 1.7961 1.5858 1.6738 1.9935 2.3030 2.3681 2.1394 1.7901
2.3582 2.4502 2.1864 1.7663 1.5080 1.6069 1.9881 2.3632 2.4483 2.1790 1.7591 1.5064 1.6121 1.9962 2.3681 2.4462 2.1716 1.7519
2.1354 2.1732 2.0648 1.8922 1.7861 1.8267 1.9833 2.1374 2.1724 2.0618 1.8892 1.7854 1.8288 1.9867 2.1394 2.1716 2.0587 1.8863
1.7950 1.7500 1.8790 2.0845 2.2109 2.1625 1.9760 1.7925 1.7509 1.8827 2.0881 2.2117 2.1600 1.9721 1.7901 1.7519 1.8863 2.0916
2.7068 2.7814 2.5674 2.2267 2.0171 2.0973 2.4066 2.7109 2.7799 2.5614 2.2208 2.0158 2.1016 2.4132 2.7148 2.7782 2.5554 2.2150
2.7814 2.8742 2.6081 2.1845 1.9240 2.0237 2.4082 2.7865 2.8723 2.6007 2.1772 1.9224 2.0290 2.4164 2.7914 2.8702 2.5932 2.1700
2.5674 2.6081 2.4913 2.3054 2.1911 2.2349 2.4036 2.5696 2.6073 2.4881 2.3022 2.1904 2.2372 2.4072 2.5718 2.6064 2.4848 2.2990
2.2267 2.1845 2.3054 2.4979 2.6163 2.5710 2.3963 2.2244 2.1854 2.3088 2.5012 2.6170 2.5686 2.3926 2.2222 2.1863 2.3122 2.5045
2.0171 1.9240 2.1911 2.6163 2.8778 2.7777 2.3918 2.0121 1.9260 2.1986 2.6236 2.8794 2.7724 2.3836 2.0071 1.9280 2.2061 2.6309
2.0973 2.0237 2.2349 2.5710 2.7777 2.6986 2.3935 2.0933 2.0253 2.2408 2.5768 2.7790 2.6944 2.3870 2.0894 2.0269 2.2467 2.5825
2.4066 2.4082 2.4036 2.3963 2.3918 2.3935 2.4001 2.4067 2.4082 2.4035 2.3962 2.3918 2.3936 2.4003 2.4068 2.4081 2.4033 2.3960
2.7109 2.7865 2.5696 2.2244 2.0121 2.0933 2.4067 2.7150 2.7849 2.5635 2.2184 2.0107 2.0976 2.4133 2.7190 2.7832 2.5574 2.2125
2.7799 2.8723 2.6073 2.1854 1.9260 2.0253 2.4082 2.7849 2.8703 2.5999 2.1781 1.9243 2.0305 2.4163 2.7898 2.8683 2.5924 2.1709
2.5614 2.6007 2.4881 2.3088 2.1986 2.2408 2.4035 2.5635 2.5999 2.4849 2.3057 2.1979 2.2430 2.4069 2.5656 2.5990 2.4818 2.3027
2.2208 2.1772 2.3022 2.5012 2.6236 2.5768 2.3962 2.2184 2.1781 2.3057 2.5047 2.6244 2.5743 2.3923 2.2161 2.1791 2.3092 2.5081
2.0158 1.9224 2.1904 2.6170 2.8794 2.7790 2.3918 2.0107 1.9243 2.1979 2.6244 2.8811 2.7737 2.3835 2.0058 1.9264 2.2054 2.6317
2.1016 2.0290 2.2372 2.5686 2.7724 2.6944 2.3936 2.0976 2.0305 2.2430 2.5743 2.7737 2.6903 2.3872 2.0938 2.0321 2.2488 2.5800
2.4132 2.4164 2.4072 2.3926 2.3836 2.3870 2.4003 2.4133 2.4163 2.4069 2.3923 2.3835 2.3872 2.4006 2.4135 2.4162 2.4067 2.3921
2.7148 2.7914 2.5718 2.2222 2.0071 2.0894 2.4068 2.7190 2.7898 2.5656 2.2161 2.0058 2.0938 2.4135 2.7230 2.7881 2.5594 2.2101
2.7782 2.8702 2.6064 2.1863 1.9280 2.0269 2.4081 2.7832 2.8683 2.5990 2.1791 1.9264 2.0321 2.4162 2.7881 2.8662 2.5916 2.1719
2.5554 2.5932 2.4848 2.3122 2.2061 2.2467 2.4033 2.5574 2.5924 2.4818 2.3092 2.2054 2.2488 2.4067 2.5594 2.5916 2.4787 2.3063
2.2150 2.1700 2.2990 2.5045 2.6309 2.5825 2.3960 2.2125 2.1709 2.3027 2.5081 2.6317 2.5800 2.3921 2.2101 2.1719 2.3063 2.5116

File diff suppressed because it is too large Load Diff

View File

@ -8,10 +8,11 @@ import numpy as np
#start #start
nx=18 nx=18
ny=18 ny=18
nz=8
minvel=0.8 minvel=0.8
velgrad=0.5 velgrad=0.5
dep1=np.array([0,0.2,0.4,0.6,0.8,1.1,1.4,1.8,2.5]) dep1=np.array([0,0.2,0.4,0.6,0.8,1.1,1.4,1.8,2.5])
#dep1=np.array([0,0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9,1.1,1.3,1.5,1.8,2.1,2.5])
nz=len(dep1)
#end #end
vs1=np.zeros(nz) vs1=np.zeros(nz)
mod=np.zeros((nz*ny,nx)) mod=np.zeros((nz*ny,nx))
@ -29,4 +30,4 @@ with open('MOD','w') as fp:
fp.write('%7.3f' % mod[k*ny+j,i]) fp.write('%7.3f' % mod[k*ny+j,i])
fp.write('\n') fp.write('\n')
for i in range(nz): for i in range(nz):
print dep1[i], print (dep1[i]),

69
scripts/plotcross.gmt Normal file
View File

@ -0,0 +1,69 @@
#!/bin/csh
#-----------------------------------------------------------
# 2015-06-08 Hongjian Fang
# step 1: get velicoty along the track from each depth-layer
# step 2: combine tracks into 2D profile
#-----------------------------------------------------------
# change the following parameters according to your case
# start
set inp3D = DSurfTomo.inMeasure.dat
set pstart = 121.4/25.1 #start point for 2D profile
set pend = 121.55/25.1 #end point for 2D profile
set pstart2 = 121.5/25.0 #start point for 2D profile
set pend2 = 121.5/25.14 #end point for 2D profile
set ddint = 0.017/0.015 #grid interval
# over
set diInt = 0.5 #distance interval (km)
set J = -JX6.0i/-1.5i #size for plot
set cpt = slice.cpt
set ps = figcross.ps
gmt makecpt -Cjet -I -T0.5/2.5/0.1 > $cpt #velocity boundary
# start
set pro2d = tmp.profile.xzv
set RMAP = `gmt gmtinfo -C $inp3D | awk '{print "-R"$1"/"$2"/"$3"/"$4}'`
rm -fr $pro2d
foreach layer(`awk '{print $3}' $inp3D| uniq`)
set llayer = `echo $layer | awk '{printf "%04d",$1*1000}'`
awk '{if($3==j) print $1,$2,$4}' j=$layer $inp3D |gmt surface -Gtmp.grd $RMAP -I$ddint -T0
# be careful -I: grid spacing for x/y
gmt project -C$pstart -E$pend -G$diInt -Q > track.dat
gmt grdtrack track.dat -Gtmp.grd | awk '{print $3,j,$4}' j=$layer > tmp.D$llayer
cat tmp.D$llayer >> $pro2d
end
#
set RMAP = `gmt gmtinfo -C $pro2d | awk '{print "-R"$1"/"$2"/"$3"/"$4}'`
gmt surface $pro2d -Gtmp.grd $RMAP -I$ddint -T0
#gmt grdfilter tmp.grd -D0 -Fg4 -Gtmpf.grd
gmt grdimage tmp.grd $J $RMAP -Bf2.5a5:'Distance (km)':/f0.5a1:'Depth (km)':SenW -C$cpt -K -Y5.2i> $ps
#gmt psscale -Cslice.cpt -Ba0.5f0.25:'Vs': -D2.5i/-0.7i/6.00/0.2h -O -K -P >> $ps
rm -fr tmp.D* tmp.grd tmp.profile.xzv track.dat
# start
set pro2d = tmp.profile.xzv
set RMAP = `gmt gmtinfo -C $inp3D | awk '{print "-R"$1"/"$2"/"$3"/"$4}'`
rm -fr $pro2d
foreach layer(`awk '{print $3}' $inp3D| uniq`)
set llayer = `echo $layer | awk '{printf "%04d",$1*1000}'`
awk '{if($3==j) print $1,$2,$4}' j=$layer $inp3D |gmt surface -Gtmp.grd $RMAP -I$ddint -T0
# be careful -I: grid spacing for x/y
gmt project -C$pstart2 -E$pend2 -G$diInt -Q > track.dat
gmt grdtrack track.dat -Gtmp.grd | awk '{print $3,j,$4}' j=$layer > tmp.D$llayer
cat tmp.D$llayer >> $pro2d
end
#
set RMAP = `gmt gmtinfo -C $pro2d | awk '{print "-R"$1"/"$2"/"$3"/"$4}'`
gmt surface $pro2d -Gtmp.grd $RMAP -I$ddint -T0
#gmt grdfilter tmp.grd -D0 -Fg4 -Gtmpf.grd
gmt grdimage tmp.grd $J $RMAP -Bf2.5a5:'Distance (km)':/f0.5a1:'Depth (km)':SenW -C$cpt -K -O -Y-2.0i>> $ps
gmt psscale -Cslice.cpt -Ba0.5f0.25:'Vs': -D2.5i/-0.7i/6.00/0.2h -O -P >> $ps
rm -fr tmp.D* tmp.grd tmp.profile.xzv track.dat
p
ps2pdf $ps

48
scripts/plotslice_std.gmt Normal file
View File

@ -0,0 +1,48 @@
#!/bin/csh
#-----------------------------------------------------------
# 2015-06-08 Hongjian Fang
# how to run:
# ./plotslice.gmt ModelFile depth1 depth2 depth3 depth4, e.g.
# csh plotslice.gmt SurfTomo.in.tvMeasure.dat 0.2 0.4 0.8 1.4
#-----------------------------------------------------------
gmt set FONT_ANNOT_PRIMARY 12
gmt set FONT_LABEL 12
#gmt set FRAME_WIDTH=0.1c
#gmt set LABEL_OFFSET=0.1c
#gmt set LABEL_FONT_SIZE=5p
#gmt set TICK_LENGTH=0.1c
#gmt set TICK_PEN=0.3p
set inp3D = $1
set ps = horizVsnew.inv_std.ps
set J = -JM2i #size for plot
set cpt = slice.cpt
# start
gmt makecpt -Cgray -D -I -T0.0/0.5/0.05 > $cpt #velocity boundary
set RMAP = `gmt gmtinfo -C $inp3D | awk '{print "-R"$1"/"$2"/"$3"/"$4}'`
gmt psbasemap $RMAP $J -Ba0.1f0.05Wsen -P -K -Y5i >$ps
awk '{if($3==depth1) print $1,$2,$4}' depth1=$2 $inp3D|gmt xyz2grd -R -I0.017/0.015 -Gtmp.grd
gmt grdimage tmp.grd $J $RMAP -BSenW -E100 -C$cpt -O -K >> $ps
rm -rf tmp.grd
#gmt psscale -Cslice.cpt -Ba0.1f0.05:'S velocity (km/s)': -D1.0i/-0.15i/3.00/0.2h -O -K -P >> $ps
#gmt makecpt -Cseis -D -T0.8/1.8/0.1 > $cpt #velocity boundary
gmt psbasemap $RMAP $J -Ba0.1f0.05nwse -P -K -O -X2.3i >>$ps
awk '{if($3==depth2) print $1,$2,$4}' depth2=$3 $inp3D|gmt xyz2grd -R -I0.017/0.015 -Gtmp.grd
gmt grdimage tmp.grd $J $RMAP -BSenW -E100 -C$cpt -O -K >> $ps
#gmt psscale -Cslice.cpt -Ba0.2f0.1:'S velocity (km/s)': -D1.0i/-0.15i/3.00/0.2h -O -K -P >> $ps
#gmt makecpt -Cseis -D -T1.1/2.0/0.1 > $cpt #velocity boundary
gmt psbasemap $RMAP $J -Ba0.1f0.05WneS -P -K -O -Y-2.3i -X-2.3i >>$ps
awk '{if($3==depth2) print $1,$2,$4}' depth2=$4 $inp3D|gmt xyz2grd -R -I0.017/0.015 -Gtmp.grd
gmt grdimage tmp.grd $J $RMAP -BSenW -E100 -C$cpt -O -K >> $ps
#gmt psscale -Cslice.cpt -Ba0.2f0.1:'S velocity (km/s)': -D1.0i/-0.25i/3.00/0.2h -O -K -P >> $ps
#gmt makecpt -Cseis -D -T1.3/2.4/0.1 > $cpt #velocity boundary
gmt psbasemap $RMAP $J -Ba0.1f0.05Swne -P -K -O -X2.3i >>$ps
awk '{if($3==depth2) print $1,$2,$4}' depth2=$5 $inp3D|gmt xyz2grd -R -I0.017/0.015 -Gtmp.grd
gmt grdimage tmp.grd $J $RMAP -BSenW -E100 -C$cpt -O -K >> $ps
gmt psscale -Cslice.cpt -Ba0.2f0.1:'Vs std (km/s)': -D1.0i/-0.35i/3.00/0.2h -O -P >> $ps

View File

@ -1,17 +1,19 @@
CMD = DSurfTomo CMD = DSurfTomo
FC = gfortran FC = gfortran
FFLAGS = -O3 -ffixed-line-length-none -ffloat-store\ FFLAGS = -O3 -ffixed-line-length-none -ffloat-store\
-W -fbounds-check -m64 -mcmodel=medium -fbounds-check -m64 -mcmodel=medium
F90SRCS = lsmrDataModule.f90 lsmrblasInterface.f90\ F90SRCS = lsmrDataModule.f90 lsmrblasInterface.f90\
lsmrblas.f90 lsmrModule.f90 delsph.f90\ lsmrblas.f90 lsmrModule.f90 delsph.f90\
aprod.f90 gaussian.f90 main.f90 aprod.f90 gaussian.f90 voronoiproj.f90
FSRCS = surfdisp96.f FSRCS = surfdisp96.f slarnv.f slaruv.f
OBJS = $(F90SRCS:%.f90=%.o) $(FSRCS:%.f=%.o) CalSurfG.o OBJS = $(F90SRCS:%.f90=%.o) $(FSRCS:%.f=%.o) CalSurfG.o main.o
all:$(CMD) all:$(CMD)
$(CMD):$(OBJS) $(CMD):$(OBJS)
$(FC) -fopenmp $^ -o $@ $(FC) -fopenmp $^ -o $@
CalSurfG.o:CalSurfG.f90 CalSurfG.o:CalSurfG.f90
$(FC) -fopenmp $(FFLAGS) -c $< -o $@ $(FC) -fopenmp $(FFLAGS) -c $< -o $@
main.o:main.f90
$(FC) -fopenmp $(FFLAGS) -c $< -o $@
%.o: %.f90 %.o: %.f90
$(FC) $(FFLAGS) -c $(@F:.o=.f90) -o $@ $(FC) $(FFLAGS) -c $(@F:.o=.f90) -o $@
%.o: %.f %.o: %.f

View File

@ -20,6 +20,7 @@
program SurfTomo program SurfTomo
use lsmrModule, only:lsmr use lsmrModule, only:lsmr
use lsmrblasInterface, only : dnrm2 use lsmrblasInterface, only : dnrm2
use omp_lib
implicit none implicit none
! VARIABLE DEFINE ! VARIABLE DEFINE
@ -63,7 +64,8 @@ program SurfTomo
integer,dimension(:,:),allocatable::periods integer,dimension(:,:),allocatable::periods
real,dimension(:),allocatable::rw real,dimension(:),allocatable::rw
integer,dimension(:),allocatable::iw,col integer,dimension(:),allocatable::iw,col
real,dimension(:),allocatable::dv,norm real,dimension(:),allocatable::dv,norm,dvsub,dvstd,dvall
! real,dimension(:),allocatable::dvall
real,dimension(:,:,:),allocatable::vsf real,dimension(:,:,:),allocatable::vsf
real,dimension(:,:,:),allocatable::vsftrue real,dimension(:,:,:),allocatable::vsftrue
character strf character strf
@ -100,6 +102,9 @@ program SurfTomo
real maxnorm real maxnorm
real threshold0 real threshold0
!For Poisson Voronoi inverison
integer iproj,vorotomo,ncells,nrealizations,idx
real hvratio
! OPEN FILES FIRST TO OUTPUT THE PROCESS ! OPEN FILES FIRST TO OUTPUT THE PROCESS
nout=36 nout=36
@ -107,9 +112,11 @@ program SurfTomo
! OUTPUT PROGRAM INFOMATION ! OUTPUT PROGRAM INFOMATION
write(*,*) write(*,*)
write(*,*),' DSurfTomo (v1.3)' write(*,*) ' DSurfTomo (v2.0)'
write(*,*),'PLEASE contact Hongjain Fang & !write(*,*) 'PLEASE contact Hongjain Fang &
(fanghj@mail.ustc.edu.cn) if you find any bug' ! (fanghj@mail.ustc.edu.cn) if you find any bug'
write(*,*) 'For bug report, PLEASE contact Hongjain Fang &
(fanghj1990@gmail.com)'
write(*,*) write(*,*)
! READ INPUT FILE ! READ INPUT FILE
@ -151,8 +158,8 @@ program SurfTomo
write(logfile,'(a,a)')trim(inputfile),'.log' write(logfile,'(a,a)')trim(inputfile),'.log'
open(66,file=logfile) open(66,file=logfile)
write(66,*) write(66,*)
write(66,*),' S U R F T O M O' write(66,*)' S U R F T O M O'
write(66,*),'PLEASE contact Hongjain Fang & write(66,*)'PLEASE contact Hongjain Fang &
(fanghj@mail.ustc.edu.cn) if you find any bug' (fanghj@mail.ustc.edu.cn) if you find any bug'
write(66,*) write(66,*)
write(66,*) 'model origin:latitude,longitue' write(66,*) 'model origin:latitude,longitue'
@ -204,6 +211,8 @@ program SurfTomo
read(10,*)ifsyn read(10,*)ifsyn
read(10,*)noiselevel read(10,*)noiselevel
read(10,*) threshold0 read(10,*) threshold0
read(10,*) vorotomo,ncells,nrealizations!,hvratio
close(10) close(10)
nrc=nsrc nrc=nsrc
kmax=kmaxRc+kmaxRg+kmaxLc+kmaxLg kmax=kmaxRc+kmaxRg+kmaxLc+kmaxLg
@ -281,7 +290,8 @@ program SurfTomo
allocate(depz(nz), stat=checkstat) allocate(depz(nz), stat=checkstat)
maxnar = spfra*dall*nx*ny*nz!sparsity fraction maxnar = spfra*dall*nx*ny*nz!sparsity fraction
maxvp = (nx-2)*(ny-2)*(nz-1) maxvp = (nx-2)*(ny-2)*(nz-1)
allocate(dv(maxvp), stat=checkstat) allocate(dv(maxvp),dvsub(maxvp),dvstd(maxvp),dvall(maxvp*nrealizations), stat=checkstat)
! allocate(dvall(maxvp*nrealizations),stats=checkstat)
allocate(norm(maxvp), stat=checkstat) allocate(norm(maxvp), stat=checkstat)
allocate(vsf(nx,ny,nz), stat=checkstat) allocate(vsf(nx,ny,nz), stat=checkstat)
allocate(vsftrue(nx,ny,nz), stat=checkstat) allocate(vsftrue(nx,ny,nz), stat=checkstat)
@ -302,7 +312,7 @@ program SurfTomo
stat=checkstat) stat=checkstat)
! MEASUREMENTS STATISTICS AND READ INITIAL MODEL ! MEASUREMENTS STATISTICS AND READ INITIAL MODEL
write(*,'(a,i7)') 'Number of all measurements',dall write(*,'(a,i7)') ' Number of all measurements',dall
open(10,file='MOD',status='old') open(10,file='MOD',status='old')
read(10,*) (depz(i),i=1,nz) read(10,*) (depz(i),i=1,nz)
@ -317,7 +327,7 @@ program SurfTomo
! CHECKERBOARD TEST ! CHECKERBOARD TEST
if (ifsyn == 1) then if (ifsyn == 1) then
write(*,*) 'Checkerboard Resolution Test Begin' write(*,*) 'Synthetic Test Begin'
vsftrue = vsf vsftrue = vsf
open(11,file='MOD.true',status='old') open(11,file='MOD.true',status='old')
@ -397,6 +407,36 @@ program SurfTomo
! ADDING REGULARIZATION TERM ! ADDING REGULARIZATION TERM
if (vorotomo /= 0) then
hvratio = dvxd*(nx-3)*111.19/depz(nz-1)
dv = 0
dvstd = 0
leniw = 2*nar+1
lenrw = nar
iw(1)=nar
iw(nar+2:2*nar+1) = col(1:nar)
!$omp parallel &
!$omp default(private) &
!$omp shared(leniw,lenrw,iw,rw,cbst,goxd,gozd,dvxd,dvzd,depz,maxvp) &
!$omp shared(nx,ny,nz,dall,ncells,hvratio,damp,nrealizations,dvall)
!$omp do
do iproj = 1,nrealizations
call voronoiproj(leniw,lenrw,iw,rw,cbst,goxd,dvxd,gozd,dvzd,depz,&
nx,ny,nz,dall,ncells,hvratio,damp,iproj,dvsub)
dvall((iproj-1)*maxvp+1:iproj*maxvp) = dvsub(1:maxvp)
enddo
!$omp end do
!$omp end parallel
do iproj = 1,nrealizations
dvsub = dvall((iproj-1)*maxvp+1:iproj*maxvp)!:,iproj)
dv = dv+dvsub
dvstd = dvstd+dvsub**2
enddo
dv = dv/nrealizations
dvstd = sqrt(dvstd/nrealizations-dv**2)
else
weight=weight0 weight=weight0
nar_tmp=nar nar_tmp=nar
nars=0 nars=0
@ -472,11 +512,13 @@ program SurfTomo
atol, btol, conlim, itnlim, localSize, nout,& atol, btol, conlim, itnlim, localSize, nout,&
dv, istop, itn, anorm, acond, rnorm, arnorm, xnorm) dv, istop, itn, anorm, acond, rnorm, arnorm, xnorm)
endif ! end vorotomo
mean = sum(cbst(1:dall))/dall mean = sum(cbst(1:dall))/dall
std_devs = sqrt(sum(cbst(1:dall)**2)/dall - mean**2) std_devs = sqrt(sum(cbst(1:dall)**2)/dall - mean**2)
write(*,'(i2,a)'),iter,'th iteration...' write(*,'(i2,a)')iter,'th iteration...'
write(*,'(a,f7.3)'),'weight is:',weight ! write(*,'(a,f7.3)')'weight is:',weight
write(*,'(a,f8.1,a,f8.2,a,f8.3)'),'mean,std_devs and rms of & write(*,'(a,f8.1,a,f8.2,a,f8.3)')' mean,std_devs and rms of &
residual after weighting: ',mean*1000,'ms ',1000*std_devs,'ms ',& residual after weighting: ',mean*1000,'ms ',1000*std_devs,'ms ',&
dnrm2(dall,cbst,1)/sqrt(real(dall)) dnrm2(dall,cbst,1)/sqrt(real(dall))
@ -486,17 +528,17 @@ program SurfTomo
mean = sum(cbst(1:dall))/dall mean = sum(cbst(1:dall))/dall
std_devs = sqrt(sum(cbst(1:dall)**2)/dall - mean**2) std_devs = sqrt(sum(cbst(1:dall)**2)/dall - mean**2)
write(*,'(a,f8.1,a,f8.2,a,f8.3)'),'residual before weighting: ',mean*1000,'ms ',1000*std_devs,'ms ',& write(*,'(a,f8.1,a,f8.2,a,f8.3)')' residual before weighting: ',mean*1000,'ms ',1000*std_devs,'ms ',&
dnrm2(dall,cbst,1)/sqrt(real(dall)) dnrm2(dall,cbst,1)/sqrt(real(dall))
write(66,'(i2,a)'),iter,'th iteration...' write(66,'(i2,a)')iter,'th iteration...'
write(66,'(a,f7.3)'),'weight is:',weight ! write(66,'(a,f7.3)')'weight is:',weight
write(66,'(a,f8.1,a,f8.2,a,f8.3)'),'mean,std_devs and rms of & write(66,'(a,f8.1,a,f8.2,a,f8.3)')'mean,std_devs and rms of &
residual: ',mean*1000,'ms ',1000*std_devs,'ms ',& residual: ',mean*1000,'ms ',1000*std_devs,'ms ',&
dnrm2(dall,cbst,1)/sqrt(real(dall)) dnrm2(dall,cbst,1)/sqrt(real(dall))
write(*,'(a,2f7.4)'),'min and max velocity variation ',& write(*,'(a,2f7.4)')' min and max velocity variation ',&
minval(dv),maxval(dv) minval(dv),maxval(dv)
write(66,'(a,2f7.4)'),'min and max velocity variation ',& write(66,'(a,2f7.4)')'min and max velocity variation ',&
minval(dv),maxval(dv) minval(dv),maxval(dv)
do k=1,nz-1 do k=1,nz-1
@ -531,8 +573,8 @@ program SurfTomo
! OUTPUT THE VELOCITY MODEL ! OUTPUT THE VELOCITY MODEL
write(*,*),'Program finishes successfully' write(*,*)'Program finishes successfully'
write(66,*),'Program finishes successfully' write(66,*)'Program finishes successfully'
if(ifsyn == 1) then if(ifsyn == 1) then
open(65,file='Vs_model.real') open(65,file='Vs_model.real')
@ -548,13 +590,13 @@ program SurfTomo
enddo enddo
close(65) close(65)
close(63) close(63)
write(*,*),'Output True velocity model & write(*,*)'Output True velocity model &
to Vs_model.real' to Vs_model.real'
write(*,*),'Output inverted shear velocity model & write(*,*)'Output inverted shear velocity model &
to ',outsyn to ',outsyn
write(66,*),'Output True velocity model & write(66,*)'Output True velocity model &
to Vs_model.real' to Vs_model.real'
write(66,*),'Output inverted shear velocity model & write(66,*)'Output inverted shear velocity model &
to ',outsyn to ',outsyn
else else
write(outmodel,'(a,a)') trim(inputfile),'Measure.dat' write(outmodel,'(a,a)') trim(inputfile),'Measure.dat'
@ -567,10 +609,23 @@ program SurfTomo
enddo enddo
enddo enddo
close(64) close(64)
write(*,*),'Output inverted shear velocity model & write(*,*)'Output inverted shear velocity model &
to ',outmodel to ',outmodel
write(66,*),'Output inverted shear velocity model & write(66,*)'Output inverted shear velocity model &
to ',outmodel to ',outmodel
write(outmodel,'(a,a)') trim(inputfile),'Measure_std.dat'
open(64,file=outmodel)
do k=1,nz-1
do j=1,ny-2
do i=1,nx-2
idx = (k-1)*(nx-2)*(ny-2)+(j-1)*(nx-2)+i
write(64,'(5f9.3)') gozd+(j-1)*dvzd,goxd-(i-1)*dvxd,depz(k),dvstd(idx)
enddo
enddo
enddo
close(64)
endif endif
close(40) close(40)
@ -588,7 +643,7 @@ program SurfTomo
deallocate(rw) deallocate(rw)
deallocate(iw,col) deallocate(iw,col)
deallocate(cbst,wt,dtres,datweight) deallocate(cbst,wt,dtres,datweight)
deallocate(dv) deallocate(dv,dvsub,dvstd,dvall)
deallocate(norm) deallocate(norm)
deallocate(vsf) deallocate(vsf)
deallocate(vsftrue) deallocate(vsftrue)

178
src/slarnv.f Normal file
View File

@ -0,0 +1,178 @@
*> \brief \b SLARNV returns a vector of random numbers from a uniform or normal distribution.
*
* =========== DOCUMENTATION ===========
*
* Online html documentation available at
* http://www.netlib.org/lapack/explore-html/
*
*> \htmlonly
*> Download SLARNV + dependencies
*> <a href="http://www.netlib.org/cgi-bin/netlibfiles.tgz?format=tgz&filename=/lapack/lapack_routine/slarnv.f">
*> [TGZ]</a>
*> <a href="http://www.netlib.org/cgi-bin/netlibfiles.zip?format=zip&filename=/lapack/lapack_routine/slarnv.f">
*> [ZIP]</a>
*> <a href="http://www.netlib.org/cgi-bin/netlibfiles.txt?format=txt&filename=/lapack/lapack_routine/slarnv.f">
*> [TXT]</a>
*> \endhtmlonly
*
* Definition:
* ===========
*
* SUBROUTINE SLARNV( IDIST, ISEED, N, X )
*
* .. Scalar Arguments ..
* INTEGER IDIST, N
* ..
* .. Array Arguments ..
* INTEGER ISEED( 4 )
* REAL X( * )
* ..
*
*
*> \par Purpose:
* =============
*>
*> \verbatim
*>
*> SLARNV returns a vector of n random real numbers from a uniform or
*> normal distribution.
*> \endverbatim
*
* Arguments:
* ==========
*
*> \param[in] IDIST
*> \verbatim
*> IDIST is INTEGER
*> Specifies the distribution of the random numbers:
*> = 1: uniform (0,1)
*> = 2: uniform (-1,1)
*> = 3: normal (0,1)
*> \endverbatim
*>
*> \param[in,out] ISEED
*> \verbatim
*> ISEED is INTEGER array, dimension (4)
*> On entry, the seed of the random number generator; the array
*> elements must be between 0 and 4095, and ISEED(4) must be
*> odd.
*> On exit, the seed is updated.
*> \endverbatim
*>
*> \param[in] N
*> \verbatim
*> N is INTEGER
*> The number of random numbers to be generated.
*> \endverbatim
*>
*> \param[out] X
*> \verbatim
*> X is REAL array, dimension (N)
*> The generated random numbers.
*> \endverbatim
*
* Authors:
* ========
*
*> \author Univ. of Tennessee
*> \author Univ. of California Berkeley
*> \author Univ. of Colorado Denver
*> \author NAG Ltd.
*
*> \date December 2016
*
*> \ingroup OTHERauxiliary
*
*> \par Further Details:
* =====================
*>
*> \verbatim
*>
*> This routine calls the auxiliary routine SLARUV to generate random
*> real numbers from a uniform (0,1) distribution, in batches of up to
*> 128 using vectorisable code. The Box-Muller method is used to
*> transform numbers from a uniform to a normal distribution.
*> \endverbatim
*>
* =====================================================================
SUBROUTINE SLARNV( IDIST, ISEED, N, X )
*
* -- LAPACK auxiliary routine (version 3.7.0) --
* -- LAPACK is a software package provided by Univ. of Tennessee, --
* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
* December 2016
*
* .. Scalar Arguments ..
INTEGER IDIST, N
* ..
* .. Array Arguments ..
INTEGER ISEED( 4 )
REAL X( * )
* ..
*
* =====================================================================
*
* .. Parameters ..
REAL ONE, TWO
PARAMETER ( ONE = 1.0E+0, TWO = 2.0E+0 )
INTEGER LV
PARAMETER ( LV = 128 )
REAL TWOPI
PARAMETER ( TWOPI = 6.2831853071795864769252867663E+0 )
* ..
* .. Local Scalars ..
INTEGER I, IL, IL2, IV
* ..
* .. Local Arrays ..
REAL U( LV )
* ..
* .. Intrinsic Functions ..
INTRINSIC COS, LOG, MIN, SQRT
* ..
* .. External Subroutines ..
EXTERNAL SLARUV
* ..
* .. Executable Statements ..
*
DO 40 IV = 1, N, LV / 2
IL = MIN( LV / 2, N-IV+1 )
IF( IDIST.EQ.3 ) THEN
IL2 = 2*IL
ELSE
IL2 = IL
END IF
*
* Call SLARUV to generate IL2 numbers from a uniform (0,1)
* distribution (IL2 <= LV)
*
CALL SLARUV( ISEED, IL2, U )
*
IF( IDIST.EQ.1 ) THEN
*
* Copy generated numbers
*
DO 10 I = 1, IL
X( IV+I-1 ) = U( I )
10 CONTINUE
ELSE IF( IDIST.EQ.2 ) THEN
*
* Convert generated numbers to uniform (-1,1) distribution
*
DO 20 I = 1, IL
X( IV+I-1 ) = TWO*U( I ) - ONE
20 CONTINUE
ELSE IF( IDIST.EQ.3 ) THEN
*
* Convert generated numbers to normal (0,1) distribution
*
DO 30 I = 1, IL
X( IV+I-1 ) = SQRT( -TWO*LOG( U( 2*I-1 ) ) )*
$ COS( TWOPI*U( 2*I ) )
30 CONTINUE
END IF
40 CONTINUE
RETURN
*
* End of SLARNV
*
END

447
src/slaruv.f Normal file
View File

@ -0,0 +1,447 @@
*> \brief \b SLARUV returns a vector of n random real numbers from a uniform distribution.
*
* =========== DOCUMENTATION ===========
*
* Online html documentation available at
* http://www.netlib.org/lapack/explore-html/
*
*> \htmlonly
*> Download SLARUV + dependencies
*> <a href="http://www.netlib.org/cgi-bin/netlibfiles.tgz?format=tgz&filename=/lapack/lapack_routine/slaruv.f">
*> [TGZ]</a>
*> <a href="http://www.netlib.org/cgi-bin/netlibfiles.zip?format=zip&filename=/lapack/lapack_routine/slaruv.f">
*> [ZIP]</a>
*> <a href="http://www.netlib.org/cgi-bin/netlibfiles.txt?format=txt&filename=/lapack/lapack_routine/slaruv.f">
*> [TXT]</a>
*> \endhtmlonly
*
* Definition:
* ===========
*
* SUBROUTINE SLARUV( ISEED, N, X )
*
* .. Scalar Arguments ..
* INTEGER N
* ..
* .. Array Arguments ..
* INTEGER ISEED( 4 )
* REAL X( N )
* ..
*
*
*> \par Purpose:
* =============
*>
*> \verbatim
*>
*> SLARUV returns a vector of n random real numbers from a uniform (0,1)
*> distribution (n <= 128).
*>
*> This is an auxiliary routine called by SLARNV and CLARNV.
*> \endverbatim
*
* Arguments:
* ==========
*
*> \param[in,out] ISEED
*> \verbatim
*> ISEED is INTEGER array, dimension (4)
*> On entry, the seed of the random number generator; the array
*> elements must be between 0 and 4095, and ISEED(4) must be
*> odd.
*> On exit, the seed is updated.
*> \endverbatim
*>
*> \param[in] N
*> \verbatim
*> N is INTEGER
*> The number of random numbers to be generated. N <= 128.
*> \endverbatim
*>
*> \param[out] X
*> \verbatim
*> X is REAL array, dimension (N)
*> The generated random numbers.
*> \endverbatim
*
* Authors:
* ========
*
*> \author Univ. of Tennessee
*> \author Univ. of California Berkeley
*> \author Univ. of Colorado Denver
*> \author NAG Ltd.
*
*> \date December 2016
*
*> \ingroup OTHERauxiliary
*
*> \par Further Details:
* =====================
*>
*> \verbatim
*>
*> This routine uses a multiplicative congruential method with modulus
*> 2**48 and multiplier 33952834046453 (see G.S.Fishman,
*> 'Multiplicative congruential random number generators with modulus
*> 2**b: an exhaustive analysis for b = 32 and a partial analysis for
*> b = 48', Math. Comp. 189, pp 331-344, 1990).
*>
*> 48-bit integers are stored in 4 integer array elements with 12 bits
*> per element. Hence the routine is portable across machines with
*> integers of 32 bits or more.
*> \endverbatim
*>
* =====================================================================
SUBROUTINE SLARUV( ISEED, N, X )
*
* -- LAPACK auxiliary routine (version 3.7.0) --
* -- LAPACK is a software package provided by Univ. of Tennessee, --
* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
* December 2016
*
* .. Scalar Arguments ..
INTEGER N
* ..
* .. Array Arguments ..
INTEGER ISEED( 4 )
REAL X( N )
* ..
*
* =====================================================================
*
* .. Parameters ..
REAL ONE
PARAMETER ( ONE = 1.0E0 )
INTEGER LV, IPW2
REAL R
PARAMETER ( LV = 128, IPW2 = 4096, R = ONE / IPW2 )
* ..
* .. Local Scalars ..
INTEGER I, I1, I2, I3, I4, IT1, IT2, IT3, IT4, J
* ..
* .. Local Arrays ..
INTEGER MM( LV, 4 )
* ..
* .. Intrinsic Functions ..
INTRINSIC MIN, MOD, REAL
* ..
* .. Data statements ..
DATA ( MM( 1, J ), J = 1, 4 ) / 494, 322, 2508,
$ 2549 /
DATA ( MM( 2, J ), J = 1, 4 ) / 2637, 789, 3754,
$ 1145 /
DATA ( MM( 3, J ), J = 1, 4 ) / 255, 1440, 1766,
$ 2253 /
DATA ( MM( 4, J ), J = 1, 4 ) / 2008, 752, 3572,
$ 305 /
DATA ( MM( 5, J ), J = 1, 4 ) / 1253, 2859, 2893,
$ 3301 /
DATA ( MM( 6, J ), J = 1, 4 ) / 3344, 123, 307,
$ 1065 /
DATA ( MM( 7, J ), J = 1, 4 ) / 4084, 1848, 1297,
$ 3133 /
DATA ( MM( 8, J ), J = 1, 4 ) / 1739, 643, 3966,
$ 2913 /
DATA ( MM( 9, J ), J = 1, 4 ) / 3143, 2405, 758,
$ 3285 /
DATA ( MM( 10, J ), J = 1, 4 ) / 3468, 2638, 2598,
$ 1241 /
DATA ( MM( 11, J ), J = 1, 4 ) / 688, 2344, 3406,
$ 1197 /
DATA ( MM( 12, J ), J = 1, 4 ) / 1657, 46, 2922,
$ 3729 /
DATA ( MM( 13, J ), J = 1, 4 ) / 1238, 3814, 1038,
$ 2501 /
DATA ( MM( 14, J ), J = 1, 4 ) / 3166, 913, 2934,
$ 1673 /
DATA ( MM( 15, J ), J = 1, 4 ) / 1292, 3649, 2091,
$ 541 /
DATA ( MM( 16, J ), J = 1, 4 ) / 3422, 339, 2451,
$ 2753 /
DATA ( MM( 17, J ), J = 1, 4 ) / 1270, 3808, 1580,
$ 949 /
DATA ( MM( 18, J ), J = 1, 4 ) / 2016, 822, 1958,
$ 2361 /
DATA ( MM( 19, J ), J = 1, 4 ) / 154, 2832, 2055,
$ 1165 /
DATA ( MM( 20, J ), J = 1, 4 ) / 2862, 3078, 1507,
$ 4081 /
DATA ( MM( 21, J ), J = 1, 4 ) / 697, 3633, 1078,
$ 2725 /
DATA ( MM( 22, J ), J = 1, 4 ) / 1706, 2970, 3273,
$ 3305 /
DATA ( MM( 23, J ), J = 1, 4 ) / 491, 637, 17,
$ 3069 /
DATA ( MM( 24, J ), J = 1, 4 ) / 931, 2249, 854,
$ 3617 /
DATA ( MM( 25, J ), J = 1, 4 ) / 1444, 2081, 2916,
$ 3733 /
DATA ( MM( 26, J ), J = 1, 4 ) / 444, 4019, 3971,
$ 409 /
DATA ( MM( 27, J ), J = 1, 4 ) / 3577, 1478, 2889,
$ 2157 /
DATA ( MM( 28, J ), J = 1, 4 ) / 3944, 242, 3831,
$ 1361 /
DATA ( MM( 29, J ), J = 1, 4 ) / 2184, 481, 2621,
$ 3973 /
DATA ( MM( 30, J ), J = 1, 4 ) / 1661, 2075, 1541,
$ 1865 /
DATA ( MM( 31, J ), J = 1, 4 ) / 3482, 4058, 893,
$ 2525 /
DATA ( MM( 32, J ), J = 1, 4 ) / 657, 622, 736,
$ 1409 /
DATA ( MM( 33, J ), J = 1, 4 ) / 3023, 3376, 3992,
$ 3445 /
DATA ( MM( 34, J ), J = 1, 4 ) / 3618, 812, 787,
$ 3577 /
DATA ( MM( 35, J ), J = 1, 4 ) / 1267, 234, 2125,
$ 77 /
DATA ( MM( 36, J ), J = 1, 4 ) / 1828, 641, 2364,
$ 3761 /
DATA ( MM( 37, J ), J = 1, 4 ) / 164, 4005, 2460,
$ 2149 /
DATA ( MM( 38, J ), J = 1, 4 ) / 3798, 1122, 257,
$ 1449 /
DATA ( MM( 39, J ), J = 1, 4 ) / 3087, 3135, 1574,
$ 3005 /
DATA ( MM( 40, J ), J = 1, 4 ) / 2400, 2640, 3912,
$ 225 /
DATA ( MM( 41, J ), J = 1, 4 ) / 2870, 2302, 1216,
$ 85 /
DATA ( MM( 42, J ), J = 1, 4 ) / 3876, 40, 3248,
$ 3673 /
DATA ( MM( 43, J ), J = 1, 4 ) / 1905, 1832, 3401,
$ 3117 /
DATA ( MM( 44, J ), J = 1, 4 ) / 1593, 2247, 2124,
$ 3089 /
DATA ( MM( 45, J ), J = 1, 4 ) / 1797, 2034, 2762,
$ 1349 /
DATA ( MM( 46, J ), J = 1, 4 ) / 1234, 2637, 149,
$ 2057 /
DATA ( MM( 47, J ), J = 1, 4 ) / 3460, 1287, 2245,
$ 413 /
DATA ( MM( 48, J ), J = 1, 4 ) / 328, 1691, 166,
$ 65 /
DATA ( MM( 49, J ), J = 1, 4 ) / 2861, 496, 466,
$ 1845 /
DATA ( MM( 50, J ), J = 1, 4 ) / 1950, 1597, 4018,
$ 697 /
DATA ( MM( 51, J ), J = 1, 4 ) / 617, 2394, 1399,
$ 3085 /
DATA ( MM( 52, J ), J = 1, 4 ) / 2070, 2584, 190,
$ 3441 /
DATA ( MM( 53, J ), J = 1, 4 ) / 3331, 1843, 2879,
$ 1573 /
DATA ( MM( 54, J ), J = 1, 4 ) / 769, 336, 153,
$ 3689 /
DATA ( MM( 55, J ), J = 1, 4 ) / 1558, 1472, 2320,
$ 2941 /
DATA ( MM( 56, J ), J = 1, 4 ) / 2412, 2407, 18,
$ 929 /
DATA ( MM( 57, J ), J = 1, 4 ) / 2800, 433, 712,
$ 533 /
DATA ( MM( 58, J ), J = 1, 4 ) / 189, 2096, 2159,
$ 2841 /
DATA ( MM( 59, J ), J = 1, 4 ) / 287, 1761, 2318,
$ 4077 /
DATA ( MM( 60, J ), J = 1, 4 ) / 2045, 2810, 2091,
$ 721 /
DATA ( MM( 61, J ), J = 1, 4 ) / 1227, 566, 3443,
$ 2821 /
DATA ( MM( 62, J ), J = 1, 4 ) / 2838, 442, 1510,
$ 2249 /
DATA ( MM( 63, J ), J = 1, 4 ) / 209, 41, 449,
$ 2397 /
DATA ( MM( 64, J ), J = 1, 4 ) / 2770, 1238, 1956,
$ 2817 /
DATA ( MM( 65, J ), J = 1, 4 ) / 3654, 1086, 2201,
$ 245 /
DATA ( MM( 66, J ), J = 1, 4 ) / 3993, 603, 3137,
$ 1913 /
DATA ( MM( 67, J ), J = 1, 4 ) / 192, 840, 3399,
$ 1997 /
DATA ( MM( 68, J ), J = 1, 4 ) / 2253, 3168, 1321,
$ 3121 /
DATA ( MM( 69, J ), J = 1, 4 ) / 3491, 1499, 2271,
$ 997 /
DATA ( MM( 70, J ), J = 1, 4 ) / 2889, 1084, 3667,
$ 1833 /
DATA ( MM( 71, J ), J = 1, 4 ) / 2857, 3438, 2703,
$ 2877 /
DATA ( MM( 72, J ), J = 1, 4 ) / 2094, 2408, 629,
$ 1633 /
DATA ( MM( 73, J ), J = 1, 4 ) / 1818, 1589, 2365,
$ 981 /
DATA ( MM( 74, J ), J = 1, 4 ) / 688, 2391, 2431,
$ 2009 /
DATA ( MM( 75, J ), J = 1, 4 ) / 1407, 288, 1113,
$ 941 /
DATA ( MM( 76, J ), J = 1, 4 ) / 634, 26, 3922,
$ 2449 /
DATA ( MM( 77, J ), J = 1, 4 ) / 3231, 512, 2554,
$ 197 /
DATA ( MM( 78, J ), J = 1, 4 ) / 815, 1456, 184,
$ 2441 /
DATA ( MM( 79, J ), J = 1, 4 ) / 3524, 171, 2099,
$ 285 /
DATA ( MM( 80, J ), J = 1, 4 ) / 1914, 1677, 3228,
$ 1473 /
DATA ( MM( 81, J ), J = 1, 4 ) / 516, 2657, 4012,
$ 2741 /
DATA ( MM( 82, J ), J = 1, 4 ) / 164, 2270, 1921,
$ 3129 /
DATA ( MM( 83, J ), J = 1, 4 ) / 303, 2587, 3452,
$ 909 /
DATA ( MM( 84, J ), J = 1, 4 ) / 2144, 2961, 3901,
$ 2801 /
DATA ( MM( 85, J ), J = 1, 4 ) / 3480, 1970, 572,
$ 421 /
DATA ( MM( 86, J ), J = 1, 4 ) / 119, 1817, 3309,
$ 4073 /
DATA ( MM( 87, J ), J = 1, 4 ) / 3357, 676, 3171,
$ 2813 /
DATA ( MM( 88, J ), J = 1, 4 ) / 837, 1410, 817,
$ 2337 /
DATA ( MM( 89, J ), J = 1, 4 ) / 2826, 3723, 3039,
$ 1429 /
DATA ( MM( 90, J ), J = 1, 4 ) / 2332, 2803, 1696,
$ 1177 /
DATA ( MM( 91, J ), J = 1, 4 ) / 2089, 3185, 1256,
$ 1901 /
DATA ( MM( 92, J ), J = 1, 4 ) / 3780, 184, 3715,
$ 81 /
DATA ( MM( 93, J ), J = 1, 4 ) / 1700, 663, 2077,
$ 1669 /
DATA ( MM( 94, J ), J = 1, 4 ) / 3712, 499, 3019,
$ 2633 /
DATA ( MM( 95, J ), J = 1, 4 ) / 150, 3784, 1497,
$ 2269 /
DATA ( MM( 96, J ), J = 1, 4 ) / 2000, 1631, 1101,
$ 129 /
DATA ( MM( 97, J ), J = 1, 4 ) / 3375, 1925, 717,
$ 1141 /
DATA ( MM( 98, J ), J = 1, 4 ) / 1621, 3912, 51,
$ 249 /
DATA ( MM( 99, J ), J = 1, 4 ) / 3090, 1398, 981,
$ 3917 /
DATA ( MM( 100, J ), J = 1, 4 ) / 3765, 1349, 1978,
$ 2481 /
DATA ( MM( 101, J ), J = 1, 4 ) / 1149, 1441, 1813,
$ 3941 /
DATA ( MM( 102, J ), J = 1, 4 ) / 3146, 2224, 3881,
$ 2217 /
DATA ( MM( 103, J ), J = 1, 4 ) / 33, 2411, 76,
$ 2749 /
DATA ( MM( 104, J ), J = 1, 4 ) / 3082, 1907, 3846,
$ 3041 /
DATA ( MM( 105, J ), J = 1, 4 ) / 2741, 3192, 3694,
$ 1877 /
DATA ( MM( 106, J ), J = 1, 4 ) / 359, 2786, 1682,
$ 345 /
DATA ( MM( 107, J ), J = 1, 4 ) / 3316, 382, 124,
$ 2861 /
DATA ( MM( 108, J ), J = 1, 4 ) / 1749, 37, 1660,
$ 1809 /
DATA ( MM( 109, J ), J = 1, 4 ) / 185, 759, 3997,
$ 3141 /
DATA ( MM( 110, J ), J = 1, 4 ) / 2784, 2948, 479,
$ 2825 /
DATA ( MM( 111, J ), J = 1, 4 ) / 2202, 1862, 1141,
$ 157 /
DATA ( MM( 112, J ), J = 1, 4 ) / 2199, 3802, 886,
$ 2881 /
DATA ( MM( 113, J ), J = 1, 4 ) / 1364, 2423, 3514,
$ 3637 /
DATA ( MM( 114, J ), J = 1, 4 ) / 1244, 2051, 1301,
$ 1465 /
DATA ( MM( 115, J ), J = 1, 4 ) / 2020, 2295, 3604,
$ 2829 /
DATA ( MM( 116, J ), J = 1, 4 ) / 3160, 1332, 1888,
$ 2161 /
DATA ( MM( 117, J ), J = 1, 4 ) / 2785, 1832, 1836,
$ 3365 /
DATA ( MM( 118, J ), J = 1, 4 ) / 2772, 2405, 1990,
$ 361 /
DATA ( MM( 119, J ), J = 1, 4 ) / 1217, 3638, 2058,
$ 2685 /
DATA ( MM( 120, J ), J = 1, 4 ) / 1822, 3661, 692,
$ 3745 /
DATA ( MM( 121, J ), J = 1, 4 ) / 1245, 327, 1194,
$ 2325 /
DATA ( MM( 122, J ), J = 1, 4 ) / 2252, 3660, 20,
$ 3609 /
DATA ( MM( 123, J ), J = 1, 4 ) / 3904, 716, 3285,
$ 3821 /
DATA ( MM( 124, J ), J = 1, 4 ) / 2774, 1842, 2046,
$ 3537 /
DATA ( MM( 125, J ), J = 1, 4 ) / 997, 3987, 2107,
$ 517 /
DATA ( MM( 126, J ), J = 1, 4 ) / 2573, 1368, 3508,
$ 3017 /
DATA ( MM( 127, J ), J = 1, 4 ) / 1148, 1848, 3525,
$ 2141 /
DATA ( MM( 128, J ), J = 1, 4 ) / 545, 2366, 3801,
$ 1537 /
* ..
* .. Executable Statements ..
*
I1 = ISEED( 1 )
I2 = ISEED( 2 )
I3 = ISEED( 3 )
I4 = ISEED( 4 )
*
DO 10 I = 1, MIN( N, LV )
*
20 CONTINUE
*
* Multiply the seed by i-th power of the multiplier modulo 2**48
*
IT4 = I4*MM( I, 4 )
IT3 = IT4 / IPW2
IT4 = IT4 - IPW2*IT3
IT3 = IT3 + I3*MM( I, 4 ) + I4*MM( I, 3 )
IT2 = IT3 / IPW2
IT3 = IT3 - IPW2*IT2
IT2 = IT2 + I2*MM( I, 4 ) + I3*MM( I, 3 ) + I4*MM( I, 2 )
IT1 = IT2 / IPW2
IT2 = IT2 - IPW2*IT1
IT1 = IT1 + I1*MM( I, 4 ) + I2*MM( I, 3 ) + I3*MM( I, 2 ) +
$ I4*MM( I, 1 )
IT1 = MOD( IT1, IPW2 )
*
* Convert 48-bit integer to a real number in the interval (0,1)
*
X( I ) = R*( REAL( IT1 )+R*( REAL( IT2 )+R*( REAL( IT3 )+R*
$ REAL( IT4 ) ) ) )
*
IF (X( I ).EQ.1.0) THEN
* If a real number has n bits of precision, and the first
* n bits of the 48-bit integer above happen to be all 1 (which
* will occur about once every 2**n calls), then X( I ) will
* be rounded to exactly 1.0. In IEEE single precision arithmetic,
* this will happen relatively often since n = 24.
* Since X( I ) is not supposed to return exactly 0.0 or 1.0,
* the statistically correct thing to do in this situation is
* simply to iterate again.
* N.B. the case X( I ) = 0.0 should not be possible.
I1 = I1 + 2
I2 = I2 + 2
I3 = I3 + 2
I4 = I4 + 2
GOTO 20
END IF
*
10 CONTINUE
*
* Return final value of seed
*
ISEED( 1 ) = IT1
ISEED( 2 ) = IT2
ISEED( 3 ) = IT3
ISEED( 4 ) = IT4
RETURN
*
* End of SLARUV
*
END

175
src/voronoiproj.f90 Normal file
View File

@ -0,0 +1,175 @@
subroutine voronoiproj(leniw,lenrw,iw,rw,dres,goxd,dvxd,gozd,dvzd,depz,&
nx,ny,nz,nd,ncells,hvratio,damp,iproj,dv)
use lsmrModule, only:lsmr
implicit none
integer leniw,lenrw
integer nx,ny,nz
integer iw(leniw)
real depz(nz)
real rw(lenrw)
integer ncells
real dv(*),dres(*)
real goxd,gozd,dvxd,dvzd
real damp
real hvratio,cmb
integer ndim,nd
integer iproj
real,parameter:: radius = 6371.0,ftol = 0.1,pi = 3.141592654
integer ii,ix,iy,iz
real,dimension(:),allocatable:: grow,gcol,subrow,dis,dws,xunknown
real,dimension(:),allocatable:: lat,lon,rad,theta,phi,rrad,xpts,ypts,zpts
real,dimension(:),allocatable :: rw_p,rwgp,norm
integer,dimension(:),allocatable:: iw_p,row,col,iwgp,colgp
integer idx
integer maxnar,nzid
integer iseed(4)
real xs,ys,zs
real atol,btol
real conlim
integer istop
integer itnlim
real acond
real anorm
real arnorm
real rnorm
real xnorm
integer localSize,nout,itn
integer leniw_p,lenrw_p,leniwgp,lenrwgp
allocate(lat(nx-2),lon(ny-2),rad(nz-1))
ndim = (nx-2)*(ny-2)*(nz-1)
do ii = 1,nx-2
lat(ii) = (goxd-(ii-1)*dvxd)*pi/180
enddo
do ii = 1,ny-2
lon(ii) = (gozd+(ii-1)*dvzd)*pi/180
enddo
!cmb = radius - depz(nz-1)*hvratio
do ii = 1,nz-1
rad(ii) = radius-depz(ii)*hvratio
!rad(ii) = cmb+depz(ii)*hvratio
enddo
allocate(theta(ncells),phi(ncells),rrad(ncells),dws(ncells),norm(ncells))
allocate(xpts(ncells),ypts(ncells),zpts(ncells),dis(ncells),xunknown(ncells))
allocate(rw_p(ndim))
allocate(iw_p(2*ndim+1),row(ndim),col(ndim))
iseed(1:3) = (/38,62,346/)
iseed(4) = 2*iproj+1
call slarnv(1,iseed,ncells,theta)
theta = (gozd+theta*(ny-3)*dvzd)*pi/180
call slarnv(1,iseed,ncells,phi)
phi = pi/2-(goxd-phi*(nx-3)*dvxd)*pi/180
call slarnv(1,iseed,ncells,rrad)
rrad = radius-rrad*depz(nz-1)*hvratio
xpts = rrad*sin(phi)*cos(theta)
ypts = rrad*sin(phi)*sin(theta)
zpts = rrad*cos(phi)
idx = 0
do iz = 1,nz-1
do iy = 1,ny-2
do ix = 1,nx-2
xs = rrad(iz)*sin(pi/2-lat(ix))*cos(lon(iy))
ys = rrad(iz)*sin(pi/2-lat(ix))*sin(lon(iy))
zs = rrad(iz)*cos(pi/2-lat(ix))
dis = (xpts-xs)**2+(ypts-ys)**2+(zpts-zs)**2
idx = idx+1
col(idx) = (iz-1)*(nx-2)*(ny-2)+(iy-1)*(nx-2)+ix
row(idx) = minloc(dis,1)
enddo
enddo
enddo
rw_p = 1.0
leniw_p = 2*ndim+1
lenrw_p = ndim
iw_p(1) = ndim
iw_p(2:ndim+1) = row
iw_p(ndim+2:2*ndim+1) = col
allocate(grow(ndim),gcol(nd),subrow(ncells))
maxnar = int(0.6*nd*ncells)
allocate(iwgp(maxnar*2+1),colgp(maxnar),rwgp(maxnar))
nzid = 0
do ii = 1,nd
grow = 0
gcol = 0
gcol(ii) = 1.0
call aprod(2,nd,ndim,grow,gcol,leniw,lenrw,iw,rw)
subrow = 0
call aprod(1,ncells,ndim,grow,subrow,leniw_p,lenrw_p,iw_p,rw_p)
do ix = 1,ncells
if(abs(subrow(ix))>ftol) then
nzid = nzid+1
rwgp(nzid) = subrow(ix)
iwgp(1+nzid) = ii
colgp(nzid) = ix
endif
enddo
enddo
leniwgp = nzid*2+1
lenrwgp = nzid
iwgp(1) = lenrwgp
iwgp(nzid+2:nzid*2+1) = colgp(1:nzid)
dws = 0
!do ii=1,nzid
!dws(iwgp(1+ii+nzid)) = dws(iwgp(1+ii+nzid))+abs(rwgp(ii))
!enddo
norm = 0
do ii=1,nzid
norm(iwgp(1+ii+nzid)) = norm(iwgp(1+ii+nzid))+rwgp(ii)**2
enddo
do ii =1,ncells
norm(ii) = sqrt(norm(ii)/nd+0.01)
enddo
do ii =1,nzid
rwgp(ii) = rwgp(ii)/norm(iwgp(1+ii+nzid))
enddo
conlim = 50
itnlim = 100
atol = 1e-2
btol = 1e-3
istop = 0
anorm = 0.0
acond = 0.0
arnorm = 0.0
xnorm = 0.0
localSize = int(ncells/4)
!damp = dampvel
! using lsmr to solve for the projection coefficients
!print*, 'LSMR beginning ...'
nout = -1
!nout = 36
!open(nout,file='lsmrout_sub.txt')
call LSMR(nd, ncells, leniwgp, lenrwgp,iwgp,rwgp,dres,damp,&
atol, btol, conlim, itnlim, localSize,nout,&
xunknown, istop, itn, anorm, acond,rnorm, arnorm, xnorm)
!close(nout)
do ii = 1,ncells
xunknown(ii) = xunknown(ii)/norm(ii)
enddo
dv(1:ndim) = 0
call aprod(2,ncells,ndim,dv,xunknown,leniw_p,lenrw_p,iw_p,rw_p)
deallocate(grow,gcol,subrow)
deallocate(theta,phi,rrad,dws,norm)
deallocate(xpts,ypts,zpts,dis,xunknown)
deallocate(iw_p,rw_p,row,col)
deallocate(lat,lon,rad)
deallocate(iwgp,colgp,rwgp)
end subroutine