Initial commit

change 1e-2 to 'ftol' in CalSurfG.f90, which may cause problem with small study region (~2 km)
This commit is contained in:
Hongjian Fang 2016-03-29 15:48:02 +02:00
parent de0abdf3f1
commit fb7b81711f
57 changed files with 165030 additions and 152 deletions

BIN
doc/ManualDSurfTomo.pdf Normal file

Binary file not shown.

10
example/.gmtcommands4 Normal file
View File

@ -0,0 +1,10 @@
# GMT common arguments shelf
-Ba0.2f0.1:S velocity (km/s):
-JM2i
-R121.35/121.605/24.975/25.2
-x2.3i
-Y5i
-y-2.7i
-jM2i
EOF

107
example/.gmtdefaults4 Normal file
View File

@ -0,0 +1,107 @@
#
# GMT-SYSTEM 4.5.11 [64-bit] Defaults file
#
#-------- Plot Media Parameters -------------
PAGE_COLOR = white
PAGE_ORIENTATION = landscape
PAPER_MEDIA = a4
#-------- Basemap Annotation Parameters ------
ANNOT_MIN_ANGLE = 20
ANNOT_MIN_SPACING = 0
ANNOT_FONT_PRIMARY = Helvetica
ANNOT_FONT_SIZE_PRIMARY = 6p
ANNOT_OFFSET_PRIMARY = 0.2c
ANNOT_FONT_SECONDARY = Helvetica
ANNOT_FONT_SIZE_SECONDARY = 16p
ANNOT_OFFSET_SECONDARY = 0.2c
DEGREE_SYMBOL = ring
HEADER_FONT = Helvetica
HEADER_FONT_SIZE = 36p
HEADER_OFFSET = 0.5c
LABEL_FONT = Helvetica
LABEL_FONT_SIZE = 5p
LABEL_OFFSET = 0.1c
OBLIQUE_ANNOTATION = 1
PLOT_CLOCK_FORMAT = hh:mm:ss
PLOT_DATE_FORMAT = yyyy-mm-dd
PLOT_DEGREE_FORMAT = ddd:mm:ss
Y_AXIS_TYPE = hor_text
#-------- Basemap Layout Parameters ---------
BASEMAP_AXES = WESN
BASEMAP_FRAME_RGB = black
BASEMAP_TYPE = fancy
FRAME_PEN = 1.25p
FRAME_WIDTH = 0.1c
GRID_CROSS_SIZE_PRIMARY = 0c
GRID_PEN_PRIMARY = 0.25p
GRID_CROSS_SIZE_SECONDARY = 0c
GRID_PEN_SECONDARY = 0.5p
MAP_SCALE_HEIGHT = 0.2c
POLAR_CAP = 85/90
TICK_LENGTH = 0.1c
TICK_PEN = 0.3p
X_AXIS_LENGTH = 25c
Y_AXIS_LENGTH = 15c
X_ORIGIN = 2.5c
Y_ORIGIN = 2.5c
UNIX_TIME = FALSE
UNIX_TIME_POS = BL/-2c/-2c
UNIX_TIME_FORMAT = %Y %b %d %H:%M:%S
#-------- Color System Parameters -----------
COLOR_BACKGROUND = black
COLOR_FOREGROUND = white
COLOR_NAN = 128
COLOR_IMAGE = adobe
COLOR_MODEL = rgb
HSV_MIN_SATURATION = 1
HSV_MAX_SATURATION = 0.1
HSV_MIN_VALUE = 0.3
HSV_MAX_VALUE = 1
#-------- PostScript Parameters -------------
CHAR_ENCODING = ISOLatin1+
DOTS_PR_INCH = 300
GLOBAL_X_SCALE = 1
GLOBAL_Y_SCALE = 1
N_COPIES = 1
PS_COLOR = rgb
PS_IMAGE_COMPRESS = lzw
PS_IMAGE_FORMAT = ascii
PS_LINE_CAP = butt
PS_LINE_JOIN = miter
PS_MITER_LIMIT = 35
PS_VERBOSE = FALSE
TRANSPARENCY = 0
#-------- I/O Format Parameters -------------
D_FORMAT = %.12lg
FIELD_DELIMITER = tab
GRIDFILE_FORMAT = nf
GRIDFILE_SHORTHAND = FALSE
INPUT_CLOCK_FORMAT = hh:mm:ss
INPUT_DATE_FORMAT = yyyy-mm-dd
IO_HEADER = FALSE
N_HEADER_RECS = 1
NAN_RECORDS = pass
OUTPUT_CLOCK_FORMAT = hh:mm:ss
OUTPUT_DATE_FORMAT = yyyy-mm-dd
OUTPUT_DEGREE_FORMAT = D
XY_TOGGLE = FALSE
#-------- Projection Parameters -------------
ELLIPSOID = WGS-84
MAP_SCALE_FACTOR = default
MEASURE_UNIT = cm
#-------- Calendar/Time Parameters ----------
TIME_FORMAT_PRIMARY = full
TIME_FORMAT_SECONDARY = full
TIME_EPOCH = 2000-01-01T12:00:00
TIME_IS_INTERVAL = OFF
TIME_INTERVAL_FRACTION = 0.5
TIME_LANGUAGE = us
TIME_UNIT = d
TIME_WEEK_START = Sunday
Y2K_OFFSET_YEAR = 1950
#-------- Miscellaneous Parameters ----------
HISTORY = TRUE
INTERPOLANT = akima
LINE_STEP = 0.025c
VECTOR_SHAPE = 0
VERBOSE = FALSE

21
example/DSurfTomo.in Normal file
View File

@ -0,0 +1,21 @@
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)
449 c: nsrc*maxf
4.0 0.0 c: weight damp
0.1 c: minthk (about 1/3 of grid interval in vertical direction)
0.5 2.8 c: minimum velocity, maximum velocity
10 c: maxiter (iteration number)
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
2.5 c: threshold

1
example/DSurfTomo.in.log Normal file
View File

@ -0,0 +1 @@

File diff suppressed because it is too large Load Diff

256
example/IterVel.out Normal file
View File

@ -0,0 +1,256 @@
,OUTPUT S VELOCITY AT ITERATION 1
0.900 0.900 0.900 0.900 0.900 0.900 0.900 0.900 0.900 0.900 0.900 0.900 0.900 0.900 0.900 0.900 0.900 0.900
0.900 0.900 0.900 0.900 0.900 0.900 0.900 0.900 0.900 0.900 0.900 0.900 0.900 0.900 0.900 0.900 0.900 0.900
0.900 0.900 0.899 0.899 0.899 0.900 0.901 0.901 0.901 0.901 0.900 0.900 0.900 0.900 0.900 0.900 0.900 0.900
0.900 0.900 0.899 0.899 0.899 0.901 0.903 0.903 0.902 0.900 0.899 0.899 0.900 0.903 0.899 0.899 0.900 0.900
0.900 0.900 0.899 0.899 0.901 0.904 0.907 0.907 0.903 0.899 0.896 0.897 0.903 0.903 0.892 0.896 0.900 0.900
0.900 0.900 0.900 0.900 0.903 0.911 0.923 0.921 0.911 0.901 0.892 0.895 0.905 0.897 0.887 0.893 0.900 0.900
0.900 0.900 0.900 0.900 0.904 0.914 0.918 0.918 0.909 0.883 0.867 0.882 0.895 0.890 0.887 0.892 0.900 0.900
0.900 0.900 0.899 0.898 0.901 0.904 0.895 0.890 0.884 0.859 0.853 0.874 0.882 0.890 0.891 0.895 0.900 0.900
0.900 0.900 0.898 0.895 0.882 0.873 0.872 0.871 0.880 0.872 0.873 0.898 0.893 0.885 0.891 0.899 0.900 0.900
0.900 0.900 0.898 0.894 0.881 0.884 0.890 0.905 0.917 0.910 0.901 0.906 0.892 0.875 0.895 0.901 0.900 0.900
0.900 0.900 0.899 0.899 0.901 0.919 0.921 0.932 0.952 0.942 0.927 0.914 0.902 0.891 0.902 0.905 0.900 0.900
0.900 0.900 0.900 0.901 0.906 0.921 0.920 0.919 0.932 0.934 0.932 0.914 0.912 0.915 0.918 0.909 0.900 0.900
0.900 0.900 0.899 0.900 0.903 0.909 0.914 0.916 0.918 0.923 0.906 0.898 0.908 0.917 0.926 0.913 0.900 0.900
0.900 0.900 0.899 0.899 0.901 0.904 0.909 0.919 0.930 0.917 0.899 0.909 0.918 0.923 0.929 0.914 0.900 0.900
0.900 0.900 0.898 0.897 0.898 0.900 0.903 0.911 0.915 0.908 0.905 0.909 0.915 0.920 0.923 0.910 0.900 0.900
0.900 0.900 0.899 0.898 0.898 0.899 0.900 0.901 0.902 0.902 0.902 0.903 0.905 0.907 0.907 0.904 0.900 0.900
0.900 0.900 0.900 0.900 0.900 0.900 0.900 0.900 0.900 0.900 0.900 0.900 0.900 0.900 0.900 0.900 0.900 0.900
0.900 0.900 0.900 0.900 0.900 0.900 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.019 1.019 1.019 1.020 1.021 1.021 1.021 1.021 1.020 1.020 1.020 1.020 1.020 1.020 1.020 1.020
1.020 1.019 1.019 1.021 1.025 1.030 1.034 1.033 1.027 1.019 1.013 1.009 1.007 1.006 1.006 1.012 1.020 1.020
1.020 1.019 1.021 1.025 1.034 1.045 1.051 1.048 1.035 1.017 1.003 0.996 0.994 0.993 0.992 1.002 1.019 1.020
1.020 1.019 1.023 1.031 1.045 1.062 1.074 1.067 1.043 1.013 0.990 0.982 0.982 0.979 0.977 0.993 1.017 1.020
1.020 1.020 1.024 1.034 1.052 1.077 1.093 1.081 1.044 0.999 0.968 0.963 0.969 0.966 0.966 0.987 1.015 1.020
1.020 1.020 1.023 1.031 1.047 1.068 1.075 1.058 1.017 0.962 0.929 0.935 0.951 0.957 0.968 0.989 1.014 1.020
1.020 1.019 1.019 1.021 1.028 1.035 1.028 1.010 0.979 0.935 0.916 0.933 0.950 0.965 0.981 1.000 1.016 1.020
1.020 1.018 1.016 1.013 1.007 1.007 1.006 1.004 0.998 0.976 0.966 0.979 0.981 0.984 0.999 1.013 1.018 1.020
1.020 1.018 1.019 1.021 1.023 1.040 1.059 1.079 1.090 1.074 1.050 1.038 1.020 1.011 1.026 1.030 1.020 1.020
1.020 1.019 1.027 1.041 1.066 1.104 1.132 1.158 1.176 1.159 1.123 1.090 1.067 1.058 1.064 1.052 1.024 1.020
1.020 1.020 1.031 1.051 1.084 1.125 1.152 1.170 1.184 1.173 1.144 1.113 1.105 1.109 1.107 1.076 1.028 1.020
1.020 1.019 1.029 1.046 1.073 1.105 1.131 1.147 1.156 1.146 1.118 1.106 1.118 1.136 1.134 1.092 1.031 1.020
1.020 1.019 1.024 1.034 1.053 1.076 1.099 1.119 1.130 1.116 1.096 1.103 1.125 1.144 1.140 1.095 1.032 1.020
1.020 1.018 1.019 1.024 1.035 1.049 1.066 1.083 1.091 1.085 1.079 1.089 1.109 1.123 1.117 1.080 1.029 1.020
1.020 1.019 1.018 1.019 1.024 1.031 1.039 1.048 1.052 1.052 1.052 1.059 1.069 1.076 1.072 1.052 1.024 1.020
1.020 1.020 1.019 1.018 1.018 1.019 1.020 1.021 1.022 1.022 1.022 1.023 1.025 1.027 1.027 1.024 1.020 1.020
1.020 1.020 1.020 1.020 1.020 1.020 1.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.139 1.138 1.139 1.140 1.142 1.143 1.142 1.141 1.140 1.140 1.140 1.140 1.139 1.139 1.140 1.140
1.140 1.139 1.139 1.143 1.150 1.158 1.164 1.161 1.151 1.137 1.125 1.116 1.111 1.109 1.112 1.123 1.139 1.140
1.140 1.138 1.142 1.150 1.165 1.183 1.194 1.187 1.163 1.133 1.107 1.092 1.084 1.080 1.084 1.106 1.137 1.140
1.140 1.138 1.146 1.159 1.183 1.213 1.232 1.220 1.178 1.127 1.088 1.070 1.063 1.055 1.059 1.091 1.134 1.140
1.140 1.139 1.147 1.164 1.195 1.237 1.264 1.243 1.181 1.109 1.060 1.046 1.044 1.037 1.048 1.086 1.132 1.140
1.140 1.139 1.145 1.159 1.187 1.222 1.235 1.204 1.138 1.062 1.017 1.018 1.028 1.037 1.060 1.095 1.134 1.140
1.140 1.138 1.139 1.145 1.158 1.171 1.161 1.127 1.080 1.028 1.007 1.022 1.040 1.061 1.089 1.116 1.137 1.140
1.140 1.137 1.136 1.136 1.136 1.140 1.135 1.123 1.112 1.090 1.080 1.090 1.092 1.102 1.124 1.138 1.140 1.140
1.140 1.137 1.143 1.153 1.169 1.200 1.224 1.244 1.254 1.230 1.198 1.177 1.156 1.152 1.168 1.166 1.143 1.140
1.140 1.139 1.156 1.185 1.234 1.297 1.339 1.368 1.381 1.350 1.295 1.249 1.223 1.222 1.227 1.201 1.149 1.140
1.140 1.140 1.162 1.198 1.256 1.324 1.365 1.383 1.391 1.368 1.318 1.277 1.275 1.291 1.289 1.236 1.155 1.140
1.140 1.139 1.157 1.187 1.233 1.286 1.323 1.338 1.342 1.325 1.282 1.269 1.298 1.331 1.328 1.260 1.159 1.140
1.140 1.138 1.147 1.166 1.197 1.234 1.265 1.285 1.295 1.280 1.254 1.267 1.309 1.343 1.336 1.263 1.161 1.140
1.140 1.136 1.140 1.149 1.166 1.189 1.212 1.231 1.242 1.238 1.231 1.250 1.284 1.308 1.298 1.238 1.156 1.140
1.140 1.137 1.137 1.139 1.147 1.158 1.171 1.182 1.189 1.190 1.191 1.203 1.221 1.233 1.226 1.193 1.146 1.140
1.140 1.140 1.137 1.136 1.136 1.137 1.139 1.140 1.142 1.142 1.142 1.145 1.148 1.151 1.151 1.146 1.140 1.140
1.140 1.140 1.140 1.140 1.140 1.140 1.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.259 1.258 1.258 1.260 1.262 1.263 1.263 1.261 1.260 1.259 1.258 1.257 1.257 1.258 1.260 1.260
1.260 1.259 1.259 1.263 1.272 1.282 1.288 1.285 1.271 1.253 1.236 1.223 1.215 1.211 1.217 1.235 1.258 1.260
1.260 1.258 1.262 1.272 1.289 1.311 1.324 1.315 1.284 1.245 1.211 1.187 1.172 1.165 1.176 1.211 1.255 1.260
1.260 1.258 1.266 1.282 1.310 1.347 1.370 1.354 1.301 1.237 1.187 1.158 1.141 1.129 1.144 1.193 1.252 1.260
1.260 1.259 1.268 1.288 1.324 1.375 1.409 1.383 1.306 1.220 1.162 1.140 1.126 1.115 1.137 1.191 1.251 1.260
1.260 1.259 1.265 1.282 1.314 1.356 1.373 1.335 1.255 1.174 1.130 1.126 1.126 1.131 1.165 1.210 1.255 1.260
1.260 1.258 1.260 1.267 1.282 1.298 1.285 1.241 1.187 1.145 1.134 1.148 1.157 1.178 1.212 1.239 1.260 1.260
1.260 1.257 1.258 1.261 1.266 1.273 1.262 1.242 1.231 1.221 1.223 1.232 1.228 1.237 1.259 1.269 1.262 1.260
1.260 1.257 1.268 1.285 1.313 1.353 1.377 1.392 1.399 1.377 1.348 1.326 1.303 1.302 1.314 1.303 1.266 1.260
1.260 1.259 1.283 1.323 1.388 1.467 1.516 1.540 1.542 1.503 1.444 1.394 1.373 1.379 1.381 1.342 1.273 1.260
1.260 1.260 1.289 1.336 1.409 1.492 1.539 1.551 1.548 1.515 1.454 1.412 1.421 1.449 1.446 1.380 1.279 1.260
1.260 1.259 1.281 1.319 1.376 1.439 1.479 1.487 1.484 1.461 1.411 1.402 1.446 1.490 1.487 1.405 1.283 1.260
1.260 1.257 1.269 1.292 1.329 1.371 1.403 1.417 1.424 1.410 1.382 1.403 1.460 1.502 1.494 1.408 1.284 1.260
1.260 1.255 1.259 1.270 1.291 1.316 1.340 1.357 1.368 1.366 1.362 1.387 1.430 1.460 1.448 1.378 1.278 1.260
1.260 1.256 1.256 1.259 1.267 1.280 1.293 1.304 1.312 1.315 1.318 1.334 1.356 1.371 1.362 1.323 1.267 1.260
1.260 1.260 1.256 1.254 1.254 1.256 1.257 1.259 1.260 1.261 1.262 1.265 1.269 1.273 1.273 1.267 1.260 1.260
1.260 1.260 1.260 1.260 1.260 1.260 1.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.379 1.378 1.378 1.380 1.382 1.383 1.382 1.381 1.379 1.377 1.376 1.375 1.375 1.377 1.380 1.380
1.380 1.379 1.379 1.383 1.391 1.401 1.406 1.402 1.388 1.368 1.349 1.334 1.323 1.318 1.327 1.350 1.377 1.380
1.380 1.378 1.381 1.390 1.407 1.428 1.439 1.429 1.397 1.355 1.318 1.290 1.269 1.259 1.277 1.322 1.373 1.380
1.380 1.378 1.385 1.400 1.427 1.461 1.483 1.465 1.409 1.343 1.290 1.255 1.231 1.216 1.241 1.304 1.370 1.380
1.380 1.379 1.387 1.405 1.439 1.487 1.519 1.491 1.412 1.326 1.268 1.242 1.222 1.209 1.242 1.305 1.370 1.380
1.380 1.379 1.384 1.398 1.427 1.466 1.482 1.441 1.360 1.286 1.251 1.248 1.239 1.241 1.281 1.330 1.376 1.380
1.380 1.378 1.379 1.385 1.398 1.410 1.395 1.347 1.295 1.268 1.274 1.289 1.289 1.303 1.338 1.364 1.382 1.380
1.380 1.377 1.379 1.383 1.388 1.394 1.380 1.357 1.348 1.353 1.371 1.381 1.370 1.375 1.392 1.396 1.384 1.380
1.380 1.378 1.390 1.410 1.442 1.482 1.504 1.516 1.521 1.506 1.488 1.468 1.444 1.443 1.449 1.431 1.388 1.380
1.380 1.379 1.405 1.447 1.516 1.596 1.646 1.665 1.660 1.622 1.569 1.523 1.506 1.515 1.513 1.469 1.394 1.380
1.380 1.380 1.410 1.458 1.533 1.617 1.665 1.673 1.662 1.627 1.569 1.530 1.544 1.575 1.571 1.503 1.400 1.380
1.380 1.379 1.401 1.439 1.497 1.559 1.598 1.602 1.596 1.573 1.525 1.519 1.566 1.611 1.606 1.525 1.403 1.380
1.380 1.377 1.388 1.411 1.448 1.489 1.518 1.527 1.532 1.521 1.496 1.519 1.578 1.621 1.612 1.526 1.403 1.380
1.380 1.375 1.379 1.389 1.409 1.433 1.454 1.468 1.479 1.479 1.477 1.503 1.547 1.578 1.566 1.496 1.397 1.380
1.380 1.376 1.375 1.378 1.386 1.398 1.410 1.419 1.427 1.431 1.435 1.451 1.475 1.490 1.481 1.442 1.387 1.380
1.380 1.380 1.376 1.374 1.374 1.375 1.377 1.378 1.379 1.380 1.381 1.384 1.388 1.392 1.392 1.387 1.380 1.380
1.380 1.380 1.380 1.380 1.380 1.380 1.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.559 1.558 1.559 1.560 1.561 1.562 1.561 1.560 1.558 1.556 1.555 1.553 1.554 1.557 1.560 1.560
1.560 1.559 1.559 1.562 1.568 1.575 1.579 1.575 1.563 1.546 1.529 1.514 1.503 1.499 1.509 1.531 1.557 1.560
1.560 1.559 1.561 1.567 1.580 1.595 1.604 1.594 1.566 1.531 1.497 1.470 1.449 1.439 1.460 1.505 1.553 1.560
1.560 1.558 1.563 1.574 1.594 1.620 1.636 1.618 1.571 1.515 1.468 1.435 1.410 1.397 1.427 1.489 1.550 1.560
1.560 1.559 1.564 1.577 1.602 1.638 1.662 1.635 1.568 1.497 1.449 1.426 1.406 1.395 1.431 1.492 1.551 1.560
1.560 1.558 1.561 1.571 1.592 1.619 1.630 1.592 1.522 1.465 1.443 1.443 1.432 1.432 1.471 1.516 1.556 1.560
1.560 1.558 1.558 1.561 1.568 1.574 1.559 1.515 1.472 1.459 1.476 1.493 1.488 1.496 1.525 1.548 1.562 1.560
1.560 1.557 1.559 1.561 1.564 1.566 1.553 1.532 1.526 1.540 1.567 1.578 1.564 1.564 1.575 1.576 1.564 1.560
1.560 1.558 1.569 1.586 1.612 1.644 1.663 1.674 1.678 1.670 1.663 1.648 1.626 1.622 1.624 1.606 1.568 1.560
1.560 1.560 1.581 1.616 1.673 1.740 1.784 1.801 1.794 1.764 1.724 1.687 1.673 1.680 1.676 1.637 1.573 1.560
1.560 1.560 1.584 1.624 1.686 1.756 1.799 1.807 1.796 1.767 1.720 1.687 1.699 1.724 1.719 1.663 1.577 1.560
1.560 1.559 1.577 1.608 1.655 1.707 1.740 1.745 1.740 1.723 1.683 1.677 1.717 1.752 1.746 1.679 1.578 1.560
1.560 1.557 1.566 1.584 1.614 1.647 1.671 1.680 1.685 1.678 1.658 1.677 1.725 1.760 1.750 1.679 1.579 1.560
1.560 1.556 1.558 1.566 1.582 1.601 1.618 1.629 1.639 1.640 1.639 1.661 1.698 1.723 1.713 1.655 1.574 1.560
1.560 1.557 1.556 1.557 1.563 1.573 1.582 1.590 1.597 1.600 1.604 1.618 1.637 1.649 1.642 1.611 1.566 1.560
1.560 1.560 1.557 1.555 1.555 1.555 1.557 1.558 1.559 1.560 1.561 1.563 1.567 1.569 1.570 1.566 1.560 1.560
1.560 1.560 1.560 1.560 1.560 1.560 1.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.739 1.739 1.739 1.740 1.740 1.741 1.740 1.740 1.739 1.737 1.736 1.735 1.736 1.738 1.740 1.740
1.740 1.739 1.739 1.741 1.744 1.748 1.750 1.748 1.740 1.730 1.719 1.710 1.702 1.698 1.706 1.721 1.738 1.740
1.740 1.739 1.740 1.743 1.750 1.759 1.763 1.757 1.740 1.718 1.697 1.679 1.663 1.654 1.671 1.704 1.735 1.740
1.740 1.739 1.741 1.747 1.758 1.772 1.780 1.768 1.738 1.704 1.674 1.652 1.633 1.624 1.648 1.693 1.734 1.740
1.740 1.739 1.741 1.748 1.762 1.781 1.795 1.776 1.733 1.689 1.659 1.645 1.633 1.625 1.653 1.696 1.734 1.740
1.740 1.739 1.740 1.744 1.754 1.769 1.775 1.748 1.700 1.666 1.656 1.661 1.654 1.652 1.681 1.712 1.737 1.740
1.740 1.739 1.738 1.738 1.739 1.739 1.728 1.696 1.666 1.664 1.685 1.700 1.694 1.697 1.719 1.733 1.741 1.740
1.740 1.738 1.738 1.738 1.736 1.734 1.724 1.710 1.708 1.723 1.749 1.759 1.746 1.743 1.750 1.751 1.743 1.740
1.740 1.739 1.745 1.754 1.768 1.787 1.800 1.809 1.814 1.809 1.808 1.799 1.783 1.779 1.780 1.769 1.745 1.740
1.740 1.740 1.752 1.772 1.806 1.850 1.880 1.892 1.888 1.868 1.843 1.818 1.810 1.814 1.811 1.787 1.748 1.740
1.740 1.740 1.754 1.777 1.814 1.859 1.887 1.893 1.886 1.870 1.839 1.815 1.823 1.839 1.836 1.802 1.750 1.740
1.740 1.739 1.749 1.767 1.795 1.826 1.848 1.853 1.852 1.844 1.815 1.810 1.835 1.855 1.852 1.811 1.751 1.740
1.740 1.738 1.743 1.753 1.770 1.790 1.805 1.811 1.816 1.813 1.799 1.811 1.842 1.862 1.856 1.811 1.751 1.740
1.740 1.738 1.738 1.742 1.750 1.762 1.772 1.780 1.786 1.787 1.787 1.800 1.823 1.839 1.833 1.797 1.748 1.740
1.740 1.738 1.737 1.737 1.740 1.746 1.751 1.756 1.760 1.763 1.765 1.774 1.785 1.793 1.789 1.770 1.743 1.740
1.740 1.740 1.738 1.737 1.737 1.737 1.738 1.738 1.739 1.740 1.740 1.742 1.744 1.745 1.746 1.743 1.740 1.740
1.740 1.740 1.740 1.740 1.740 1.740 1.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.979 1.979 1.979 1.980 1.980 1.981 1.980 1.980 1.979 1.977 1.976 1.975 1.976 1.978 1.980 1.980
1.980 1.980 1.979 1.979 1.979 1.980 1.982 1.982 1.980 1.978 1.974 1.971 1.965 1.955 1.961 1.975 1.980 1.980
1.980 1.980 1.979 1.979 1.980 1.983 1.984 1.982 1.977 1.971 1.965 1.958 1.952 1.939 1.953 1.974 1.980 1.980
1.980 1.980 1.979 1.979 1.981 1.987 1.999 1.994 1.980 1.967 1.956 1.957 1.958 1.944 1.959 1.974 1.980 1.980
1.980 1.980 1.979 1.979 1.980 1.986 1.997 1.990 1.964 1.949 1.951 1.968 1.962 1.950 1.971 1.977 1.980 1.980
1.980 1.980 1.979 1.977 1.976 1.972 1.969 1.946 1.926 1.939 1.964 1.980 1.967 1.968 1.984 1.982 1.980 1.980
1.980 1.980 1.978 1.976 1.966 1.958 1.950 1.939 1.948 1.966 1.993 2.002 1.983 1.981 1.983 1.984 1.980 1.980
1.980 1.980 1.979 1.979 1.978 1.980 1.982 1.995 2.004 1.993 1.996 1.995 1.981 1.980 1.986 1.986 1.980 1.980
1.980 1.980 1.980 1.981 1.989 2.008 2.022 2.026 2.021 2.010 2.001 1.986 1.986 1.991 1.993 1.989 1.980 1.980
1.980 1.980 1.980 1.982 1.989 2.006 2.012 2.008 2.003 2.006 1.994 1.973 1.982 1.996 1.999 1.991 1.980 1.980
1.980 1.980 1.979 1.980 1.983 1.988 1.993 1.991 1.993 2.004 1.979 1.976 1.991 1.995 2.000 1.992 1.980 1.980
1.980 1.980 1.978 1.978 1.979 1.982 1.984 1.984 1.990 1.992 1.975 1.986 2.003 2.007 2.006 1.992 1.980 1.980
1.980 1.980 1.978 1.976 1.977 1.978 1.979 1.981 1.985 1.983 1.982 1.985 1.992 2.000 2.002 1.989 1.980 1.980
1.980 1.980 1.978 1.977 1.977 1.977 1.978 1.978 1.979 1.980 1.980 1.982 1.984 1.985 1.986 1.983 1.980 1.980
1.980 1.980 1.980 1.980 1.980 1.980 1.980 1.980 1.980 1.980 1.980 1.980 1.980 1.980 1.980 1.980 1.980 1.980
1.980 1.980 1.980 1.980 1.980 1.980 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
,OUTPUT DWS AT ITERATION 1
0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.2 1.9 1.3 0.0 0.0
0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.1 0.1 0.1 0.6 2.5 5.4 2.9 0.2 0.0
0.0 0.0 0.0 0.0 0.4 2.1 1.4 0.7 0.7 1.6 2.7 3.4 3.6 2.0 0.4 0.0
0.0 0.0 0.0 0.1 1.0 2.7 2.4 3.1 5.7 7.6 6.7 5.7 4.0 3.6 0.8 0.0
0.0 0.0 0.0 0.3 1.1 2.5 3.5 6.4 8.8 9.4 9.8 9.2 6.3 5.5 1.0 0.0
0.0 0.0 0.1 2.3 3.7 5.0 7.4 7.6 8.9 11.7 10.3 10.1 8.4 2.8 0.3 0.0
0.0 0.0 0.3 3.2 5.1 7.6 8.4 7.6 8.5 11.0 11.0 11.3 7.3 1.7 0.2 0.0
0.0 0.0 0.1 1.5 5.8 8.4 8.3 9.2 7.9 8.5 11.1 9.6 6.6 2.0 0.2 0.0
0.0 0.0 0.0 0.3 2.2 3.5 5.7 7.6 6.2 6.8 7.1 4.5 3.6 1.5 0.2 0.0
0.0 0.0 0.0 0.0 0.2 1.1 2.7 4.9 6.1 6.0 3.8 2.1 2.4 2.1 0.3 0.0
0.0 0.0 0.0 0.0 0.0 0.5 2.9 4.1 3.3 3.7 1.7 1.8 3.1 3.8 0.5 0.0
0.0 0.0 0.0 0.0 0.0 0.0 0.7 0.9 0.3 0.3 0.3 0.5 1.1 2.3 0.2 0.0
0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.1 0.0 0.0
0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.9 6.4 5.3 0.1 0.0
0.0 0.0 0.0 0.0 0.0 0.3 0.2 0.1 0.2 0.4 1.9 7.4 15.9 9.5 0.6 0.0
0.0 0.0 0.0 0.0 1.9 6.1 3.8 2.2 2.6 5.9 8.8 10.9 11.1 6.5 1.4 0.0
0.0 0.0 0.0 0.4 3.5 8.2 6.3 9.8 17.9 24.0 22.4 19.2 12.5 11.4 3.8 0.0
0.0 0.0 0.1 1.2 3.9 8.1 10.3 19.5 26.7 28.8 29.8 28.7 19.4 16.2 4.3 0.0
0.0 0.0 1.0 7.7 11.3 16.4 21.8 22.8 26.6 37.0 32.1 31.0 27.1 9.4 1.2 0.0
0.0 0.0 1.6 11.2 17.0 23.3 24.2 21.8 24.9 33.4 34.3 35.3 24.6 5.9 0.6 0.0
0.0 0.0 0.4 6.6 19.2 25.6 26.4 28.2 23.9 25.9 34.1 30.3 21.0 6.8 0.5 0.0
0.0 0.0 0.0 2.0 8.2 12.0 19.6 24.5 19.3 22.2 23.0 14.1 11.7 5.3 0.6 0.0
0.0 0.0 0.0 0.0 0.9 4.1 8.8 15.3 18.9 17.9 11.0 6.5 7.1 6.0 1.1 0.0
0.0 0.0 0.0 0.0 0.1 1.8 9.4 13.1 11.6 11.9 5.8 4.9 8.5 10.6 2.3 0.0
0.0 0.0 0.0 0.0 0.0 0.2 3.3 3.7 1.5 1.5 1.1 1.8 3.7 6.8 1.9 0.0
0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.1 0.2 0.0 0.0
0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.1 0.2 1.9 10.8 8.8 0.1 0.0
0.0 0.0 0.0 0.0 0.1 1.1 0.8 0.5 0.4 0.9 3.7 11.6 24.4 14.7 0.8 0.0
0.0 0.0 0.0 0.1 3.8 12.7 9.4 5.3 5.7 10.7 14.1 16.5 17.9 9.9 1.6 0.0
0.0 0.0 0.0 0.6 5.9 15.0 14.5 19.0 30.9 40.0 36.5 30.5 21.9 19.3 5.9 0.0
0.0 0.0 0.1 2.3 7.5 13.8 19.9 35.6 47.9 50.5 50.8 45.7 31.4 26.6 7.5 0.0
0.0 0.0 1.8 14.2 20.9 28.7 40.4 46.4 52.8 63.0 55.5 50.4 39.1 15.1 2.6 0.0
0.0 0.0 2.3 18.3 31.1 44.2 49.1 46.3 49.2 59.0 58.0 55.3 35.2 10.0 1.7 0.0
0.0 0.0 0.4 10.4 34.6 47.4 47.4 49.6 44.4 47.8 55.4 47.6 32.1 11.9 1.6 0.0
0.0 0.0 0.0 3.9 15.4 21.6 31.5 39.7 35.0 39.0 38.8 25.9 21.5 10.6 1.8 0.0
0.0 0.0 0.0 0.1 1.9 7.5 15.2 25.5 31.3 32.1 22.2 14.8 15.5 12.7 2.7 0.0
0.0 0.0 0.0 0.0 0.1 3.2 15.9 21.3 19.0 21.1 11.8 10.2 18.0 22.3 5.7 0.0
0.0 0.0 0.0 0.0 0.0 0.4 5.9 6.3 2.4 2.7 1.7 3.0 7.7 14.8 4.8 0.0
0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.1 0.2 0.5 0.0 0.0
0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.1 0.2 0.5 2.7 12.8 10.0 0.1 0.0
0.0 0.0 0.0 0.0 0.0 1.4 1.3 0.9 0.9 1.6 5.2 14.1 27.7 16.3 0.7 0.0
0.0 0.0 0.0 0.0 3.9 15.1 12.4 7.1 7.3 12.8 15.9 18.0 20.2 10.6 1.2 0.0
0.0 0.0 0.0 0.5 5.3 16.5 19.0 22.9 34.9 43.3 38.1 31.8 24.9 21.6 5.9 0.0
0.0 0.0 0.1 2.1 7.8 15.1 24.7 42.3 55.3 56.7 55.6 48.9 34.9 29.6 8.1 0.0
0.0 0.0 1.8 15.6 24.0 32.4 48.4 56.3 63.0 67.6 60.1 54.1 38.9 16.1 3.1 0.0
0.0 0.0 2.0 18.1 33.7 50.5 59.1 56.3 59.4 65.5 62.7 57.8 34.2 10.9 2.3 0.0
0.0 0.0 0.2 9.8 36.5 51.6 51.0 54.2 51.4 54.3 59.6 50.2 33.2 13.3 2.3 0.0
0.0 0.0 0.0 4.2 16.0 21.7 30.8 40.7 39.1 41.8 41.4 29.6 24.3 12.3 2.6 0.0
0.0 0.0 0.0 0.1 1.8 7.3 16.3 27.4 33.1 36.1 26.6 18.5 19.1 15.3 3.6 0.0
0.0 0.0 0.0 0.0 0.1 3.0 16.8 22.2 18.5 22.8 13.9 12.7 22.5 27.4 7.2 0.0
0.0 0.0 0.0 0.0 0.0 0.4 6.1 6.4 2.2 2.8 1.7 3.4 9.4 18.3 6.0 0.0
0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.1 0.2 0.4 0.0 0.0
0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.1 0.0 0.0 0.0
0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.2 0.4 0.8 3.5 15.1 11.3 0.0 0.0
0.0 0.0 0.0 0.0 0.0 1.6 1.7 1.4 1.5 2.5 6.9 16.7 31.2 17.8 0.6 0.0
0.0 0.0 0.0 0.0 3.7 15.8 13.7 7.9 8.4 14.6 17.6 19.8 22.2 11.2 0.9 0.0
0.0 0.0 0.0 0.3 4.2 16.6 21.0 24.7 36.8 44.5 38.2 32.2 27.1 23.2 5.9 0.0
0.0 0.0 0.0 1.7 7.3 15.6 28.0 46.7 59.2 59.2 57.3 50.7 37.6 31.5 8.4 0.0
0.0 0.0 1.6 16.1 25.3 34.4 53.0 61.4 67.7 68.3 61.0 55.2 38.6 16.4 3.2 0.0
0.0 0.0 1.7 17.6 34.0 53.0 63.1 60.6 64.4 67.5 63.7 57.6 33.0 11.3 2.7 0.0
0.0 0.0 0.1 8.9 35.5 51.4 50.5 54.9 54.1 56.1 60.7 50.8 33.2 13.8 2.6 0.0
0.0 0.0 0.0 4.0 15.3 20.2 28.8 40.0 40.6 42.2 41.5 31.0 25.0 12.9 3.0 0.0
0.0 0.0 0.0 0.0 1.5 6.3 16.4 28.4 33.5 37.7 28.4 19.9 20.7 16.3 4.0 0.0
0.0 0.0 0.0 0.0 0.1 2.6 16.7 22.2 17.4 22.9 14.7 14.1 24.8 29.7 7.9 0.0
0.0 0.0 0.0 0.0 0.0 0.3 6.0 6.3 1.9 2.7 1.6 3.5 10.2 20.0 6.6 0.0
0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.1 0.1 0.1 0.2 0.4 0.0 0.0
0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.1 0.0 0.0 0.0
0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.1 0.2 0.5 0.9 3.6 14.4 10.6 0.0 0.0
0.0 0.0 0.0 0.0 0.0 1.2 1.7 1.6 1.8 2.9 7.0 16.1 29.0 16.1 0.4 0.0
0.0 0.0 0.0 0.0 2.6 13.0 11.7 6.9 7.4 13.2 16.1 18.3 20.1 9.7 0.6 0.0
0.0 0.0 0.0 0.1 2.6 13.3 17.9 20.9 31.1 37.3 31.6 27.2 23.9 20.1 5.0 0.0
0.0 0.0 0.0 1.0 5.4 13.0 24.8 40.9 50.7 49.7 47.8 42.9 32.9 27.5 7.0 0.0
0.0 0.0 1.0 13.6 21.5 29.5 46.5 53.1 57.6 56.3 50.3 45.7 31.6 13.3 2.6 0.0
0.0 0.0 1.0 14.2 28.0 45.0 53.7 51.3 55.2 55.8 52.2 46.5 26.1 9.3 2.3 0.0
0.0 0.0 0.0 6.7 28.2 41.6 40.5 44.7 45.4 46.3 49.8 41.4 26.6 11.2 2.3 0.0
0.0 0.0 0.0 3.1 11.7 15.2 22.3 32.3 34.1 34.5 33.8 25.6 20.4 10.5 2.6 0.0
0.0 0.0 0.0 0.0 1.0 4.3 13.3 24.0 28.0 31.8 23.9 17.0 17.8 13.7 3.4 0.0

163
example/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

162
example/MOD.true Normal file
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

2048
example/Vs_model.real Normal file

File diff suppressed because it is too large Load Diff

1620
example/horizVs.eps Normal file

File diff suppressed because it is too large Load Diff

BIN
example/horizVs.pdf Normal file

Binary file not shown.

1626
example/horizVs.ps Normal file

File diff suppressed because it is too large Load Diff

1619
example/horizVsnewrerun.ps Normal file

File diff suppressed because it is too large Load Diff

8
example/lsmr.txt Normal file
View File

@ -0,0 +1,8 @@
Enter LSMR. Least-squares solution of Ax = b
The matrix A has 4109 rows and 2048 columns
damp = 0.00000000000000E+00
atol = 1.00E-03 conlim = 1.20E+03
btol = 1.00E-03 itnlim = 1000
localSize (no. of vectors for local reorthogonalization) = 512

View File

@ -0,0 +1,49 @@
#!/bin/csh
#-----------------------------------------------------------
# 2015-06-08 Hongjian Fang
# example:csh plotslicenewVs.gmt DSurfTomo.inMeasure.dat 0.2 0.4 0.8 1.1
#-----------------------------------------------------------
gmtset ANOT_FONT_SIZE 6
gmtset LABEL_FONT_SIZE 6
gmtset FRAME_WIDTH=0.1c
gmtset LABEL_OFFSET=0.1c
gmtset LABEL_FONT_SIZE=5p
gmtset TICK_LENGTH=0.1c
gmtset TICK_PEN=0.3p
set inp3D = $1
set ps = horizVs.ps
set J = -JM2i #size for plot
set cpt = slice.cpt
# start
makecpt -Cseis -T0.6/1.5/0.1 > $cpt #velocity boundary
set RMAP = `minmax -C $inp3D | awk '{print "-R"$1"/"$2"/"$3"/"$4}'`
psbasemap $RMAP $J -Ba0.1f0.05WseN -P -K -Y5i >$ps
awk '{if($3==depth1) print $1,$2,$4}' depth1=$2 $inp3D|xyz2grd -R -I0.017/0.015 -Gtmp.grd
grdimage tmp.grd $J $RMAP -BSenW -E100 -C$cpt -O -K >> $ps
rm -rf tmp.grd
psscale -Cslice.cpt -Ba0.1f0.05:'S velocity (km/s)': -D1.0i/-0.15i/3.00/0.2h -O -K -P >> $ps
makecpt -Cseis -T0.8/1.8/0.1 > $cpt #velocity boundary
psbasemap $RMAP $J -Ba0.1f0.05NwsE -P -K -O -X2.3i >>$ps
awk '{if($3==depth2) print $1,$2,$4}' depth2=$3 $inp3D|xyz2grd -R -I0.017/0.015 -Gtmp.grd
grdimage tmp.grd $J $RMAP -BSenW -E100 -C$cpt -O -K >> $ps
psscale -Cslice.cpt -Ba0.2f0.1:'S velocity (km/s)': -D1.0i/-0.15i/3.00/0.2h -O -K -P >> $ps
makecpt -Cseis -T1.1/2.0/0.1 > $cpt #velocity boundary
psbasemap $RMAP $J -Ba0.1f0.05WneS -P -K -O -Y-2.7i -X-2.3i >>$ps
awk '{if($3==depth2) print $1,$2,$4}' depth2=$4 $inp3D|xyz2grd -R -I0.017/0.015 -Gtmp.grd
grdimage tmp.grd $J $RMAP -BSenW -E100 -C$cpt -O -K >> $ps
psscale -Cslice.cpt -Ba0.2f0.1:'S velocity (km/s)': -D1.0i/-0.25i/3.00/0.2h -O -K -P >> $ps
makecpt -Cseis -T1.3/2.4/0.1 > $cpt #velocity boundary
psbasemap $RMAP $J -Ba0.1f0.05SwnE -P -K -O -X2.3i >>$ps
awk '{if($3==depth2) print $1,$2,$4}' depth2=$5 $inp3D|xyz2grd -R -I0.017/0.015 -Gtmp.grd
grdimage tmp.grd $J $RMAP -BSenW -E100 -C$cpt -O -K >> $ps
psscale -Cslice.cpt -Ba0.2f0.1:'S velocity (km/s)': -D1.0i/-0.25i/3.00/0.2h -O -P >> $ps
rm *cpt *grd
ps2eps -f $ps
evince *eps &

143212
example/raypath.out Normal file

File diff suppressed because it is too large Load Diff

2061
example/residualFirst.dat Normal file

File diff suppressed because it is too large Load Diff

2061
example/residualLast.dat Normal file

File diff suppressed because it is too large Load Diff

2510
example/surfdataTB.dat Normal file

File diff suppressed because it is too large Load Diff

32
scripts/GenerateIniMOD.py Normal file
View File

@ -0,0 +1,32 @@
#!/usr/bin/env python
# how to run:
# ./GenerateIniMOD.py
# remember to move MOD to the directory where you want to run DSurfTomo
import numpy as np
#parameters need to be changed
#start
nx=18
ny=18
nz=9
minvel=0.9
velgrad=0.6
dep1=np.array([0,0.2,0.4,0.6,0.8,1.1,1.4,1.8,2.5])
#end
vs1=np.zeros(nz)
mod=np.zeros((nz*ny,nx))
for k in range(nz):
for j in range(ny):
for i in range(nx):
mod[k*ny+j,i]= minvel+dep1[k]*velgrad
with open('MOD','w') as fp:
for i in range(nz):
fp.write('%5.1f' % dep1[i])
fp.write('\n')
for k in range(nz):
for j in range(ny):
for i in range(nx):
fp.write('%7.3f' % mod[k*ny+j,i])
fp.write('\n')
for i in range(nz):
print dep1[i],

View File

@ -0,0 +1,42 @@
#!/usr/bin/env python
# the checkerboard should use the initial model as background model, then add
# some pertubations
# remember to move MOD.true to the directory where you want to run DSurfTomo
import numpy as np
import matplotlib.pyplot as plt
#parameters you need to change
#start
nx=18
ny=18
nz=9
minvel=0.9
velgrad=0.6
dep1=[0,0.2,0.4,0.6,0.8,1.1,1.4,1.8,2.5]
anosize=1.0
amplitude=0.4
#end
x=range(1,nx+1)
y=range(1,ny+1)
z=range(1,nz+1)
z=np.ones(nz)
bg=np.zeros((nz,nx,ny))
cross=np.zeros((nz,ny))
vs1=np.zeros(nz)
xy=np.kron(np.sin(anosize*np.array(y)),np.sin(anosize*np.array(x)))
xyz=np.kron(z,xy)
pxy=xyz.reshape(nz,nx,ny)
for k in range(nz):
for j in range(ny):
for i in range(nx):
bg[k,i,j]= minvel+dep1[k]*velgrad
mod=np.zeros((nz*ny,nx))
for k in range(nz):
for j in range(ny):
for i in range(nx):
mod[(k)*ny+j,i]=bg[k,i,j]+pxy[k,i,j]*amplitude
k=5
plt.imshow(mod[k*ny:(k+1)*ny,:],cmap='jet_r',interpolation='bicubic')
np.savetxt('MOD.true',mod,fmt='%4.4f')
plt.colorbar()
plt.show()

93
scripts/extractnew.py Normal file
View File

@ -0,0 +1,93 @@
#!/usr/bin/env python
# a python script to extract data for the direct inversion of
# surface wave dispersion measurements
# By Hongjian Fang @ USTC(fanghj@mail.ustc.edu.cn) 2014/04/24
# the data format is
# # sta1_lat sta1_lon nt iwave igr
# sta2_lat sta2_lon phase/group velocity
# ......
import os
import numpy as np
'''how to use it?
python extractSurfTomo.py > surfdata.dat
remember to read note.txt after this
and move surfdata.dat to the directory where you want to run DSurfTomo
'''
# parameters need to change according to your case
# start
nsrc=20
nrc=20
nf=26
MinP=0.5
MaxP=3.0
interval=0.1
wavetp=2
veltp=0
d = {}
d['TB01']=1
d['TB02']=2
d['TB03']=3
d['TB04']=4
d['TB05']=5
d['TB06']=6
d['TB07']=7
d['TB08']=8
d['TB09']=9
d['TB10']=10
d['TB11']=11
d['TB12']=12
d['TB13']=13
d['TB14']=14
d['TB15']=15
d['TB16']=16
d['TB17']=17
d['TB18']=18
d['TB19']=19
d['TB20']=20
#end
phav=np.zeros((nrc,nsrc,nf))
sta1la=np.zeros((nrc,nsrc,nf))
sta1lo=np.zeros((nrc,nsrc,nf))
sta2la=np.zeros((nrc,nsrc,nf))
sta2lo=np.zeros((nrc,nsrc,nf))
for file in os.listdir('.'):
if 'CD' in file:
data=np.loadtxt(file)
shape=data.shape
# you may need to change the following 2 lines depend on your file name
source=file.split('-')[0].split('.')[1]
receiver=file.split('-')[1].split('.')[0]
for i in range(2,shape[0]):
if data[i,0]>=MinP and data[i,0]<=MaxP:
f=np.int(np.rint((data[i,0]-MinP)/interval+1))
rc=d[receiver]-1
src=d[source]-1
phav[rc,src,f-1]=data[i,1]
sta1la[rc,src,f-1]=data[0,1]
sta1lo[rc,src,f-1]=data[0,0]
sta2la[rc,src,f-1]=data[1,1]
sta2lo[rc,src,f-1]=data[1,0]
srclat=-999.9
per=-999
nsrcout=0
for ifr in range(nf):
for isrc in range(nsrc):
for irc in range(nrc):
if phav[irc,isrc,ifr]>0:
if np.abs(sta1la[irc,isrc,ifr]-srclat)>1e-4 or abs(ifr+1-per)>1e-4:
nsrcout=nsrcout+1
print ('%s %10.6f %10.6f %d %d %d') % ('#',sta1la[irc,isrc,ifr],sta1lo[irc,isrc,ifr],ifr+1,wavetp,veltp)
print ('%10.6f %10.6f %6.4f') % (sta2la[irc,isrc,ifr],sta2lo[irc,isrc,ifr],phav[irc,isrc,ifr])
else:
print ('%10.6f %10.6f %6.4f') % (sta2la[irc,isrc,ifr],sta2lo[irc,isrc,ifr],phav[irc,isrc,ifr])
srclat=sta1la[irc,isrc,ifr]
per=ifr+1
note=open('note.txt','w+')
note.write('write this number to the eighth line in DSurfTomo.in\n')
note.write(str(nsrcout))
note.close()

48
scripts/plotslice.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
#-----------------------------------------------------------
gmtset ANOT_FONT_SIZE 6
gmtset LABEL_FONT_SIZE 6
gmtset FRAME_WIDTH=0.1c
gmtset LABEL_OFFSET=0.1c
gmtset LABEL_FONT_SIZE=5p
gmtset TICK_LENGTH=0.1c
gmtset TICK_PEN=0.3p
set inp3D = $1
set ps = horizVsnew.ps
set J = -JM2i #size for plot
set cpt = slice.cpt
# start
makecpt -Cseis -T0.6/1.5/0.1 > $cpt #velocity boundary
set RMAP = `minmax -C $inp3D | awk '{print "-R"$1"/"$2"/"$3"/"$4}'`
psbasemap $RMAP $J -Ba0.1f0.05WseN -P -K -Y5i >$ps
awk '{if($3==depth1) print $1,$2,$4}' depth1=$2 $inp3D|xyz2grd -R -I0.017/0.015 -Gtmp.grd
grdimage tmp.grd $J $RMAP -BSenW -E100 -C$cpt -O -K >> $ps
rm -rf tmp.grd
psscale -Cslice.cpt -Ba0.1f0.05:'S velocity (km/s)': -D1.0i/-0.15i/3.00/0.2h -O -K -P >> $ps
makecpt -Cseis -T0.8/1.8/0.1 > $cpt #velocity boundary
psbasemap $RMAP $J -Ba0.1f0.05NwsE -P -K -O -X2.3i >>$ps
awk '{if($3==depth2) print $1,$2,$4}' depth2=$3 $inp3D|xyz2grd -R -I0.017/0.015 -Gtmp.grd
grdimage tmp.grd $J $RMAP -BSenW -E100 -C$cpt -O -K >> $ps
psscale -Cslice.cpt -Ba0.2f0.1:'S velocity (km/s)': -D1.0i/-0.15i/3.00/0.2h -O -K -P >> $ps
makecpt -Cseis -T1.1/2.0/0.1 > $cpt #velocity boundary
psbasemap $RMAP $J -Ba0.1f0.05WneS -P -K -O -Y-2.7i -X-2.3i >>$ps
awk '{if($3==depth2) print $1,$2,$4}' depth2=$4 $inp3D|xyz2grd -R -I0.017/0.015 -Gtmp.grd
grdimage tmp.grd $J $RMAP -BSenW -E100 -C$cpt -O -K >> $ps
psscale -Cslice.cpt -Ba0.2f0.1:'S velocity (km/s)': -D1.0i/-0.25i/3.00/0.2h -O -K -P >> $ps
makecpt -Cseis -T1.3/2.4/0.1 > $cpt #velocity boundary
psbasemap $RMAP $J -Ba0.1f0.05SwnE -P -K -O -X2.3i >>$ps
awk '{if($3==depth2) print $1,$2,$4}' depth2=$5 $inp3D|xyz2grd -R -I0.017/0.015 -Gtmp.grd
grdimage tmp.grd $J $RMAP -BSenW -E100 -C$cpt -O -K >> $ps
psscale -Cslice.cpt -Ba0.2f0.1:'S velocity (km/s)': -D1.0i/-0.25i/3.00/0.2h -O -P >> $ps

2835
srcsmooth/CalSurfG.f90 Normal file

File diff suppressed because it is too large Load Diff

BIN
srcsmooth/DSurfTomo Executable file

Binary file not shown.

20
srcsmooth/Makefile Normal file
View File

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

View File

@ -47,7 +47,6 @@
integer localSize
real mean,std_devs,balances,balanceb
integer msurf
integer maxlevel,maxleveld
real,parameter:: tolr=1e-4
real,dimension(:),allocatable:: obst,dsyn,cbst,wt,dtres,dist,datweight
real,dimension(:),allocatable:: pvall,depRp,pvRp
@ -78,7 +77,6 @@
integer HorizonType,VerticalType
character line*200
integer iter,maxiter
integer iiter,initer
integer maxnar
real acond
real anorm
@ -97,7 +95,6 @@
integer i,j,k
real Minvel,MaxVel
real spfra
integer domain,normt
real noiselevel
integer ifsyn
integer writepath
@ -140,14 +137,11 @@
read(10,*) nx,ny,nz
read(10,*) goxd,gozd
read(10,*) dvxd,dvzd
read(10,*) nsrc,nrc
read(10,*) nsrc
read(10,*) weight0,damp
read(10,*) minthk
read(10,*) Minvel,Maxvel
read(10,*) domain,normt
read(10,*) HorizonType,VerticalType
read(10,*) maxlevel,maxleveld
read(10,*) maxiter,initer
read(10,*) maxiter
read(10,*) spfra
read(10,*) kmaxRc
write(*,*) 'model origin:latitude,longitue'
@ -213,6 +207,7 @@
read(10,*)noiselevel
read(10,*) threshold0
close(10)
nrc=nsrc
kmax=kmaxRc+kmaxRg+kmaxLc+kmaxLg
! READ MEASUREMENTS
@ -364,8 +359,7 @@
goxd,gozd,dvxd,dvzd,kmaxRc,kmaxRg,kmaxLc,kmaxLg,&
tRc,tRg,tLc,tLg,wavetype,igrt,periods,depz,minthk,&
scxf,sczf,rcxf,rczf,nrc1,nsrc1,knum1,kmax,&
nsrc,nrc,nar,domain,&
maxlevel,maxleveld,HorizonType,VerticalType,writepath)
nsrc,nrc,nar,writepath)
do i = 1,dall
cbst(i) = obst(i) - dsyn(i)
@ -421,27 +415,7 @@
weight=dnrm2(dall,cbst,1)**2/dall*weight0
nar_tmp=nar
nars=0
if (domain == 0 .and. normt==0) then
do i=1,maxvp
rw(nar+i)=weight
iw(1+nar+i)=dall+i
col(nar+i)=i
cbst(dall+i)=0
enddo
nar = nar + maxvp
m = dall + maxvp
n = maxvp
elseif(domain == 0 .and. normt/=0) then
do i=1,maxvp
rw(nar+i)=weight
iw(1+nar+i)=dall+i
col(nar+i)=i
cbst(dall+i)=0
enddo
nar = nar + maxvp
m = dall + maxvp
n = maxvp
else
count3=0
nvz=ny-2
nvx=nx-2
@ -486,9 +460,6 @@
enddo
m = dall + count3
n = maxvp
nars = nar - nar_tmp
rw(nar+1:nar+nars) = rw(nar_tmp+1:nar)
endif
iw(1)=nar
do i=1,nar
@ -518,110 +489,6 @@
if(istop==3) print*,'istop = 3, large condition number'
if (domain == 0.and.normt==0) then
do iiter = 1, initer
dtres=-cbst
call aprod(1,m,n,dv,dtres,leniw,lenrw,iw,rw)
do i=1,m
if(abs(dtres(i)).lt.tolr) then
wt(i)= 1.0/sqrt(abs(tolr))
else
wt(i)=1.0/sqrt(abs(dtres(i)))
endif
enddo
do i=1,nar
rw(i)=rw(i)*wt(iw(i+1))
enddo
do i=1,m
dtres(i)=cbst(i)*wt(i)
enddo
dv = 0
atol = 1e-3
btol = 1e-3
conlim = 1200
itnlim = 1000
istop = 0
anorm = 0.0
acond = 0.0
arnorm = 0.0
xnorm = 0.0
call LSMR(m, n, leniw, lenrw,iw,rw,dtres, damp,&
atol, btol, conlim, itnlim, localSize, nout,&
dv, istop, itn, anorm, acond, rnorm, arnorm, xnorm)
if(istop==3) print*,'istop = 3, large condition number'
do i=1,nar
rw(i)=rw(i)/wt(iw(i+1))
enddo
enddo ! finish inter interations for IRLS
endif
if(domain==0.and.normt/=0) then
do iiter = 1, initer
do i=1,n
if (abs(dv(i)).lt.tolr) then
rw(nar_tmp+i)=1.0/sqrt(tolr)*weight
else
rw(nar_tmp+i)=sqrt(1.0/abs(dv(i)))*weight
endif
enddo
dv = 0
atol = 1e-3
btol = 1e-3
conlim = 1200
itnlim = 1000
istop = 0
anorm = 0.0
acond = 0.0
arnorm = 0.0
xnorm = 0.0
call LSMR(m, n, leniw, lenrw,iw,rw,cbst, damp,&
atol, btol, conlim, itnlim, localSize, nout,&
dv, istop, itn, anorm, acond, rnorm, arnorm, xnorm)
if(istop==3) print*,'istop = 3, large condition number'
enddo
endif
if (domain/=0)then
do iiter = 1,initer
dtres = 0
call aprod(1,m,n,dv,dtres,leniw,lenrw,iw,rw)
do i = nar_tmp+1,nar
if(abs(dtres(iw(1+i)))<tolr) then
rw(i)=1/sqrt(tolr)*rw(i+nars)
else
rw(i)=sqrt(1.0/abs(dtres(iw(1+i))))*rw(i+nars)
endif
enddo
dv = 0
atol = 1e-3
btol = 1e-3
conlim = 1200
itnlim = 1000
istop = 0
anorm = 0.0
acond = 0.0
arnorm = 0.0
xnorm = 0.0
call LSMR(m, n, leniw, lenrw,iw,rw,cbst, damp,&
atol, btol, conlim, itnlim, localSize, nout,&
dv, istop, itn, anorm, acond, rnorm, arnorm, xnorm)
if(istop==3) print*,'istop = 3, large condition number'
enddo
endif
mean = sum(cbst(1:dall))/dall
std_devs = sqrt(sum(cbst(1:dall)**2)/dall - mean**2)
write(*,'(i2,a)'),iter,'th iteration...'
@ -635,11 +502,6 @@
residual: ',mean*1000,'ms ',1000*std_devs,'ms ',&
dnrm2(dall,cbst,1)**2/dall
if (domain == 0) then
call invwavetrans(nx-2,ny-2,nz-1,dv,maxlevel,maxleveld,&
HorizonType,VerticalType)
endif
write(*,'(a,2f7.4)'),'min and max velocity variation ',&
minval(dv),maxval(dv)
write(66,'(a,2f7.4)'),'min and max velocity variation ',&
@ -682,12 +544,14 @@
if(ifsyn == 1) then
open(65,file='Vs_model.real')
write(outsyn,'(a,a)') trim(inputfile),'Syn.dat'
write(outsyn,'(a,a)') trim(inputfile),'Syn.dat'
open(63,file=outsyn)
do k=1,nz
do j=1,ny
write(65,'(100f7.3)') (vsftrue(i,j,k),i=1,nx)
write(63,'(100f7.3)') (vsf(i,j,k),i=1,nx)
do k=1,nz-1
do j=1,ny-2
do i=1,nx-2
write(65,'(5f8.4)') gozd+(j-1)*dvzd,goxd-(i-1)*dvxd,depz(k),vsftrue(i,j,k)
write(63,'(5f8.4)') gozd+(j-1)*dvzd,goxd-(i-1)*dvxd,depz(k),vsf(i,j,k)
enddo
enddo
enddo
close(65)
@ -703,9 +567,11 @@
else
write(outmodel,'(a,a)') trim(inputfile),'Measure.dat'
open(64,file=outmodel)
do k=1,nz
do j=1,ny
write(64,'(100f7.3)') (vsf(i,j,k),i=1,nx)
do k=1,nz-1
do j=1,ny-2
do i=1,nx-2
write(64,'(5f8.4)') gozd+(j-1)*dvzd,goxd-(i-1)*dvxd,depz(k),vsf(i,j,k)
enddo
enddo
enddo
close(64)

View File

@ -1341,7 +1341,7 @@ enddo
call wavelettrans(nvx,nvz,nz-1,row,maxlevel,maxleveld,HorizonType,VerticalType)
endif
do nn=1,nparpi
if(abs(row(nn)).gt.1e-2) then
if(abs(row(nn)).gt.ftol) then
nar=nar+1
rw(nar)=real(row(nn))
iw(nar+1)= count1

60
srcsparsity/aprod.f90 Normal file
View File

@ -0,0 +1,60 @@
!c--- This file is from hypoDD by Felix Waldhauser ---------
!c-------------------------Modified by Haijiang Zhang-------
!c Multiply a matrix by a vector
!c Version for use with sparse matrix specified by
!c output of subroutine sparse for use with LSQR
subroutine aprod(mode, m, n, x, y, leniw, lenrw, iw, rw)
implicit none
!c Parameters:
integer mode ! ==1: Compute y = y + a*x
! y is altered without changing x
! ==2: Compute x = x + a(transpose)*y
! x is altered without changing y
integer m, n ! Row and column dimensions of a
real x(n), y(m) ! Input vectors
integer :: leniw
integer lenrw
integer iw(leniw) ! Integer work vector containing:
! iw[1] Number of non-zero elements in a
! iw[2:iw[1]+1] Row indices of non-zero elements
! iw[iw[1]+2:2*iw[1]+1] Column indices
real rw(lenrw) ! [1..iw[1]] Non-zero elements of a
!c Local variables:
integer i1
integer j1
integer k
integer kk
!c set the ranges the indices in vector iw
kk=iw(1)
i1=1
j1=kk+1
!c main iteration loop
do k = 1,kk
if (mode.eq.1) then
!c compute y = y + a*x
y(iw(i1+k)) = y(iw(i1+k)) + rw(k)*x(iw(j1+k))
else
!c compute x = x + a(transpose)*y
x(iw(j1+k)) = x(iw(j1+k)) + rw(k)*y(iw(i1+k))
endif
enddo
! 100 continue
return
end

28
srcsparsity/delsph.f90 Normal file
View File

@ -0,0 +1,28 @@
subroutine delsph(flat1,flon1,flat2,flon2,del)
implicit none
real,parameter:: R=6371.0
REAL,parameter:: pi=3.1415926535898
real flat1,flat2
real flon1,flon2
real del
real dlat
real dlon
real lat1
real lat2
real a
real c
!dlat=(flat2-flat1)*pi/180
!dlon=(flon2-flon1)*pi/180
!lat1=flat1*pi/180
!lat2=flat2*pi/180
dlat=flat2-flat1
dlon=flon2-flon1
lat1=pi/2-flat1
lat2=pi/2-flat2
a=sin(dlat/2)*sin(dlat/2)+sin(dlon/2)*sin(dlon/2)*cos(lat1)*cos(lat2)
c=2*atan2(sqrt(a),sqrt(1-a))
del=R*c
end subroutine

31
srcsparsity/gaussian.f90 Normal file
View File

@ -0,0 +1,31 @@
real function gaussian()
implicit none
! real rd
real x1,x2,w,y1
real y2
real n1,n2
integer use_last
integer ii,jj
use_last=0
y2=0
w=2.0
if(use_last.ne.0) then
y1=y2
use_last=0
else
do while (w.ge.1.0)
call random_number(n1)
call random_number(n2)
x1=2.0*n1-1.0
x2=2.0*n2-1.0
w = x1 * x1 + x2 * x2
enddo
w=((-2.0*log(w))/w)**0.5
y1=x1*w
y2=x2*w
use_last=1
endif
gaussian=y1
end function

View File

@ -0,0 +1,24 @@
!+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
! File lsmrDataModule.f90
!
! Defines real(dp) and a few constants for use in other modules.
!
! 24 Oct 2007: Allows floating-point precision dp to be defined
! in exactly one place (here). Note that we need
! use lsmrDataModule
! at the beginning of modules AND inside interfaces.
! zero and one are not currently used by LSMR,
! but this shows how they should be declared
! by a user routine that does need them.
! 16 Jul 2010: LSMR version derived from LSQR equivalent.
!+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
module lsmrDataModule
implicit none
intrinsic :: selected_real_kind
integer, parameter, public :: dp = selected_real_kind(4)
real(dp), parameter, public :: zero = 0.0_dp, one = 1.0_dp
end module lsmrDataModule

754
srcsparsity/lsmrModule.f90 Normal file
View File

@ -0,0 +1,754 @@
!+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
! File lsmrModule.f90
!
! LSMR
!
! LSMR solves Ax = b or min ||Ax - b|| with or without damping,
! using the iterative algorithm of David Fong and Michael Saunders:
! http://www.stanford.edu/group/SOL/software/lsmr.html
!
! Maintained by
! David Fong <clfong@stanford.edu>
! Michael Saunders <saunders@stanford.edu>
! Systems Optimization Laboratory (SOL)
! Stanford University
! Stanford, CA 94305-4026, USA
!
! 17 Jul 2010: F90 LSMR derived from F90 LSQR and lsqr.m.
! 07 Sep 2010: Local reorthogonalization now works (localSize > 0).
!+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
module lsmrModule
use lsmrDataModule, only : dp
use lsmrblasInterface, only : dnrm2, dscal
implicit none
private
public :: LSMR
contains
!+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
! subroutine LSMR ( m, n, Aprod1, Aprod2, b, damp, &
! atol, btol, conlim, itnlim, localSize, nout, &
! x, istop, itn, normA, condA, normr, normAr, normx )
subroutine LSMR ( m, n, leniw, lenrw,iw,rw, b, damp, &
atol, btol, conlim, itnlim, localSize, nout, &
x, istop, itn, normA, condA, normr, normAr, normx )
integer, intent(in) :: leniw
integer, intent(in) :: lenrw
integer, intent(in) :: iw(leniw)
real, intent(in) :: rw(lenrw)
integer, intent(in) :: m, n, itnlim, localSize, nout
integer, intent(out) :: istop, itn
real(dp), intent(in) :: b(m)
real(dp), intent(out) :: x(n)
real(dp), intent(in) :: atol, btol, conlim, damp
real(dp), intent(out) :: normA, condA, normr, normAr, normx
interface
subroutine aprod(mode,m,n,x,y,leniw,lenrw,iw,rw) ! y := y + A*x
use lsmrDataModule, only : dp
integer, intent(in) :: mode,lenrw
integer, intent(in) :: leniw
real, intent(in) :: rw(lenrw)
integer, intent(in) :: iw(leniw)
integer, intent(in) :: m,n
real(dp), intent(inout) :: x(n)
real(dp), intent(inout) :: y(m)
end subroutine aprod
! subroutine Aprod1(m,n,x,y) ! y := y + A*x
! use lsmrDataModule, only : dp
! integer, intent(in) :: m,n
! real(dp), intent(in) :: x(n)
! real(dp), intent(inout) :: y(m)
! end subroutine Aprod1
!
! subroutine Aprod2(m,n,x,y) ! x := x + A'*y
! use lsmrDataModule, only : dp
! integer, intent(in) :: m,n
! real(dp), intent(inout) :: x(n)
! real(dp), intent(in) :: y(m)
! end subroutine Aprod2
end interface
!-------------------------------------------------------------------
! LSMR finds a solution x to the following problems:
!
! 1. Unsymmetric equations: Solve A*x = b
!
! 2. Linear least squares: Solve A*x = b
! in the least-squares sense
!
! 3. Damped least squares: Solve ( A )*x = ( b )
! ( damp*I ) ( 0 )
! in the least-squares sense
!
! where A is a matrix with m rows and n columns, b is an m-vector,
! and damp is a scalar. (All quantities are real.)
! The matrix A is treated as a linear operator. It is accessed
! by means of subroutine calls with the following purpose:
!
! call Aprod1(m,n,x,y) must compute y = y + A*x without altering x.
! call Aprod2(m,n,x,y) must compute x = x + A'*y without altering y.
!
! LSMR uses an iterative method to approximate the solution.
! The number of iterations required to reach a certain accuracy
! depends strongly on the scaling of the problem. Poor scaling of
! the rows or columns of A should therefore be avoided where
! possible.
!
! For example, in problem 1 the solution is unaltered by
! row-scaling. If a row of A is very small or large compared to
! the other rows of A, the corresponding row of ( A b ) should be
! scaled up or down.
!
! In problems 1 and 2, the solution x is easily recovered
! following column-scaling. Unless better information is known,
! the nonzero columns of A should be scaled so that they all have
! the same Euclidean norm (e.g., 1.0).
!
! In problem 3, there is no freedom to re-scale if damp is
! nonzero. However, the value of damp should be assigned only
! after attention has been paid to the scaling of A.
!
! The parameter damp is intended to help regularize
! ill-conditioned systems, by preventing the true solution from
! being very large. Another aid to regularization is provided by
! the parameter condA, which may be used to terminate iterations
! before the computed solution becomes very large.
!
! Note that x is not an input parameter.
! If some initial estimate x0 is known and if damp = 0,
! one could proceed as follows:
!
! 1. Compute a residual vector r0 = b - A*x0.
! 2. Use LSMR to solve the system A*dx = r0.
! 3. Add the correction dx to obtain a final solution x = x0 + dx.
!
! This requires that x0 be available before and after the call
! to LSMR. To judge the benefits, suppose LSMR takes k1 iterations
! to solve A*x = b and k2 iterations to solve A*dx = r0.
! If x0 is "good", norm(r0) will be smaller than norm(b).
! If the same stopping tolerances atol and btol are used for each
! system, k1 and k2 will be similar, but the final solution x0 + dx
! should be more accurate. The only way to reduce the total work
! is to use a larger stopping tolerance for the second system.
! If some value btol is suitable for A*x = b, the larger value
! btol*norm(b)/norm(r0) should be suitable for A*dx = r0.
!
! Preconditioning is another way to reduce the number of iterations.
! If it is possible to solve a related system M*x = b efficiently,
! where M approximates A in some helpful way
! (e.g. M - A has low rank or its elements are small relative to
! those of A), LSMR may converge more rapidly on the system
! A*M(inverse)*z = b,
! after which x can be recovered by solving M*x = z.
!
! NOTE: If A is symmetric, LSMR should not be used!
! Alternatives are the symmetric conjugate-gradient method (CG)
! and/or SYMMLQ.
! SYMMLQ is an implementation of symmetric CG that applies to
! any symmetric A and will converge more rapidly than LSMR.
! If A is positive definite, there are other implementations of
! symmetric CG that require slightly less work per iteration
! than SYMMLQ (but will take the same number of iterations).
!
!
! Notation
! --------
! The following quantities are used in discussing the subroutine
! parameters:
!
! Abar = ( A ), bbar = (b)
! (damp*I) (0)
!
! r = b - A*x, rbar = bbar - Abar*x
!
! normr = sqrt( norm(r)**2 + damp**2 * norm(x)**2 )
! = norm( rbar )
!
! eps = the relative precision of floating-point arithmetic.
! On most machines, eps is about 1.0e-7 and 1.0e-16
! in single and double precision respectively.
! We expect eps to be about 1e-16 always.
!
! LSMR minimizes the function normr with respect to x.
!
!
! Parameters
! ----------
! m input m, the number of rows in A.
!
! n input n, the number of columns in A.
!
! Aprod1, Aprod2 See above.
!
! damp input The damping parameter for problem 3 above.
! (damp should be 0.0 for problems 1 and 2.)
! If the system A*x = b is incompatible, values
! of damp in the range 0 to sqrt(eps)*norm(A)
! will probably have a negligible effect.
! Larger values of damp will tend to decrease
! the norm of x and reduce the number of
! iterations required by LSMR.
!
! The work per iteration and the storage needed
! by LSMR are the same for all values of damp.
!
! b(m) input The rhs vector b.
!
! x(n) output Returns the computed solution x.
!
! atol input An estimate of the relative error in the data
! defining the matrix A. For example, if A is
! accurate to about 6 digits, set atol = 1.0e-6.
!
! btol input An estimate of the relative error in the data
! defining the rhs b. For example, if b is
! accurate to about 6 digits, set btol = 1.0e-6.
!
! conlim input An upper limit on cond(Abar), the apparent
! condition number of the matrix Abar.
! Iterations will be terminated if a computed
! estimate of cond(Abar) exceeds conlim.
! This is intended to prevent certain small or
! zero singular values of A or Abar from
! coming into effect and causing unwanted growth
! in the computed solution.
!
! conlim and damp may be used separately or
! together to regularize ill-conditioned systems.
!
! Normally, conlim should be in the range
! 1000 to 1/eps.
! Suggested value:
! conlim = 1/(100*eps) for compatible systems,
! conlim = 1/(10*sqrt(eps)) for least squares.
!
! Note: Any or all of atol, btol, conlim may be set to zero.
! The effect will be the same as the values eps, eps, 1/eps.
!
! itnlim input An upper limit on the number of iterations.
! Suggested value:
! itnlim = n/2 for well-conditioned systems
! with clustered singular values,
! itnlim = 4*n otherwise.
!
! localSize input No. of vectors for local reorthogonalization.
! 0 No reorthogonalization is performed.
! >0 This many n-vectors "v" (the most recent ones)
! are saved for reorthogonalizing the next v.
! localSize need not be more than min(m,n).
! At most min(m,n) vectors will be allocated.
!
! nout input File number for printed output. If positive,
! a summary will be printed on file nout.
!
! istop output An integer giving the reason for termination:
!
! 0 x = 0 is the exact solution.
! No iterations were performed.
!
! 1 The equations A*x = b are probably compatible.
! Norm(A*x - b) is sufficiently small, given the
! values of atol and btol.
!
! 2 damp is zero. The system A*x = b is probably
! not compatible. A least-squares solution has
! been obtained that is sufficiently accurate,
! given the value of atol.
!
! 3 damp is nonzero. A damped least-squares
! solution has been obtained that is sufficiently
! accurate, given the value of atol.
!
! 4 An estimate of cond(Abar) has exceeded conlim.
! The system A*x = b appears to be ill-conditioned,
! or there could be an error in Aprod1 or Aprod2.
!
! 5 The iteration limit itnlim was reached.
!
! itn output The number of iterations performed.
!
! normA output An estimate of the Frobenius norm of Abar.
! This is the square-root of the sum of squares
! of the elements of Abar.
! If damp is small and the columns of A
! have all been scaled to have length 1.0,
! normA should increase to roughly sqrt(n).
! A radically different value for normA may
! indicate an error in Aprod1 or Aprod2.
!
! condA output An estimate of cond(Abar), the condition
! number of Abar. A very high value of condA
! may again indicate an error in Aprod1 or Aprod2.
!
! normr output An estimate of the final value of norm(rbar),
! the function being minimized (see notation
! above). This will be small if A*x = b has
! a solution.
!
! normAr output An estimate of the final value of
! norm( Abar'*rbar ), the norm of
! the residual for the normal equations.
! This should be small in all cases. (normAr
! will often be smaller than the true value
! computed from the output vector x.)
!
! normx output An estimate of norm(x) for the final solution x.
!
! Subroutines and functions used
! ------------------------------
! BLAS dscal, dnrm2
! USER Aprod1, Aprod2
!
! Precision
! ---------
! The number of iterations required by LSMR will decrease
! if the computation is performed in higher precision.
! At least 15-digit arithmetic should normally be used.
! "real(dp)" declarations should normally be 8-byte words.
! If this ever changes, the BLAS routines dnrm2, dscal
! (Lawson, et al., 1979) will also need to be changed.
!
!
! Reference
! ---------
! http://www.stanford.edu/group/SOL/software/lsmr.html
! ------------------------------------------------------------------
!
! LSMR development:
! 21 Sep 2007: Fortran 90 version of LSQR implemented.
! Aprod1, Aprod2 implemented via f90 interface.
! 17 Jul 2010: LSMR derived from LSQR and lsmr.m.
! 07 Sep 2010: Local reorthogonalization now working.
!-------------------------------------------------------------------
intrinsic :: abs, dot_product, min, max, sqrt
! Local arrays and variables
real(dp) :: h(n), hbar(n), u(m), v(n), w(n), localV(n,min(localSize,m,n))
logical :: damped, localOrtho, localVQueueFull, prnt, show
integer :: i, localOrthoCount, localOrthoLimit, localPointer, localVecs, &
pcount, pfreq
real(dp) :: alpha, alphabar, alphahat, &
beta, betaacute, betacheck, betad, betadd, betahat, &
normb, c, cbar, chat, ctildeold, ctol, &
d, maxrbar, minrbar, normA2, &
rho, rhobar, rhobarold, rhodold, rhoold, rhotemp, &
rhotildeold, rtol, s, sbar, shat, stildeold, &
t1, taud, tautildeold, test1, test2, test3, &
thetabar, thetanew, thetatilde, thetatildeold, &
zeta, zetabar, zetaold
! Local constants
real(dp), parameter :: zero = 0.0_dp, one = 1.0_dp
character(len=*), parameter :: enter = ' Enter LSMR. '
character(len=*), parameter :: exitt = ' Exit LSMR. '
character(len=*), parameter :: msg(0:7) = &
(/ 'The exact solution is x = 0 ', &
'Ax - b is small enough, given atol, btol ', &
'The least-squares solution is good enough, given atol', &
'The estimate of cond(Abar) has exceeded conlim ', &
'Ax - b is small enough for this machine ', &
'The LS solution is good enough for this machine ', &
'Cond(Abar) seems to be too large for this machine ', &
'The iteration limit has been reached ' /)
!-------------------------------------------------------------------
! Initialize.
localVecs = min(localSize,m,n)
show = nout > 0
if (show) then
write(nout, 1000) enter,m,n,damp,atol,conlim,btol,itnlim,localVecs
end if
pfreq = 20 ! print frequency (for repeating the heading)
pcount = 0 ! print counter
damped = damp > zero !
!-------------------------------------------------------------------
! Set up the first vectors u and v for the bidiagonalization.
! These satisfy beta*u = b, alpha*v = A(transpose)*u.
!-------------------------------------------------------------------
u(1:m) = b(1:m)
v(1:n) = zero
x(1:n) = zero
alpha = zero
beta = dnrm2 (m, u, 1)
if (beta > zero) then
call dscal (m, (one/beta), u, 1)
! call Aprod2(m, n, v, u) ! v = A'*u
call aprod(2,m,n,v,u,leniw,lenrw,iw,rw)
alpha = dnrm2 (n, v, 1)
end if
if (alpha > zero) then
call dscal (n, (one/alpha), v, 1)
w = v
end if
normAr = alpha*beta
if (normAr == zero) go to 800
! Initialization for local reorthogonalization.
localOrtho = .false.
if (localVecs > 0) then
localPointer = 1
localOrtho = .true.
localVQueueFull = .false.
localV(:,1) = v
end if
! Initialize variables for 1st iteration.
itn = 0
zetabar = alpha*beta
alphabar = alpha
rho = 1
rhobar = 1
cbar = 1
sbar = 0
h = v
hbar(1:n) = zero
x(1:n) = zero
! Initialize variables for estimation of ||r||.
betadd = beta
betad = 0
rhodold = 1
tautildeold = 0
thetatilde = 0
zeta = 0
d = 0
! Initialize variables for estimation of ||A|| and cond(A).
normA2 = alpha**2
maxrbar = 0_dp
minrbar = 1e+30_dp
! Items for use in stopping rules.
normb = beta
istop = 0
ctol = zero
if (conlim > zero) ctol = one/conlim
normr = beta
! Exit if b=0 or A'b = 0.
normAr = alpha * beta
if (normAr == 0) then
if (show) then
write(nout,'(a)') msg(1)
end if
return
end if
! Heading for iteration log.
if (show) then
if (damped) then
write(nout,1300)
else
write(nout,1200)
end if
test1 = one
test2 = alpha/beta
write(nout, 1500) itn,x(1),normr,normAr,test1,test2
end if
!===================================================================
! Main iteration loop.
!===================================================================
do
itn = itn + 1
!----------------------------------------------------------------
! Perform the next step of the bidiagonalization to obtain the
! next beta, u, alpha, v. These satisfy
! beta*u = A*v - alpha*u,
! alpha*v = A'*u - beta*v.
!----------------------------------------------------------------
call dscal (m,(- alpha), u, 1)
! call Aprod1(m, n, v, u) ! u = A*v
call aprod ( 1,m,n,v,u,leniw,lenrw,iw,rw )
beta = dnrm2 (m, u, 1)
if (beta > zero) then
call dscal (m, (one/beta), u, 1)
if (localOrtho) then ! Store v into the circular buffer localV.
call localVEnqueue ! Store old v for local reorthog'n of new v.
end if
call dscal (n, (- beta), v, 1)
!call Aprod2(m, n, v, u) ! v = A'*u
call aprod ( 2,m,n,v,u,leniw,lenrw,iw,rw )
if (localOrtho) then ! Perform local reorthogonalization of V.
call localVOrtho ! Local-reorthogonalization of new v.
end if
alpha = dnrm2 (n, v, 1)
if (alpha > zero) then
call dscal (n, (one/alpha), v, 1)
end if
end if
! At this point, beta = beta_{k+1}, alpha = alpha_{k+1}.
!----------------------------------------------------------------
! Construct rotation Qhat_{k,2k+1}.
alphahat = d2norm(alphabar, damp)
chat = alphabar/alphahat
shat = damp/alphahat
! Use a plane rotation (Q_i) to turn B_i to R_i.
rhoold = rho
rho = d2norm(alphahat, beta)
c = alphahat/rho
s = beta/rho
thetanew = s*alpha
alphabar = c*alpha
! Use a plane rotation (Qbar_i) to turn R_i^T into R_i^bar.
rhobarold = rhobar
zetaold = zeta
thetabar = sbar*rho
rhotemp = cbar*rho
rhobar = d2norm(cbar*rho, thetanew)
cbar = cbar*rho/rhobar
sbar = thetanew/rhobar
zeta = cbar*zetabar
zetabar = - sbar*zetabar
! Update h, h_hat, x.
hbar = h - (thetabar*rho/(rhoold*rhobarold))*hbar
x = x + (zeta/(rho*rhobar))*hbar
h = v - (thetanew/rho)*h
! Estimate ||r||.
! Apply rotation Qhat_{k,2k+1}.
betaacute = chat* betadd
betacheck = - shat* betadd
! Apply rotation Q_{k,k+1}.
betahat = c*betaacute
betadd = - s*betaacute
! Apply rotation Qtilde_{k-1}.
! betad = betad_{k-1} here.
thetatildeold = thetatilde
rhotildeold = d2norm(rhodold, thetabar)
ctildeold = rhodold/rhotildeold
stildeold = thetabar/rhotildeold
thetatilde = stildeold* rhobar
rhodold = ctildeold* rhobar
betad = - stildeold*betad + ctildeold*betahat
! betad = betad_k here.
! rhodold = rhod_k here.
tautildeold = (zetaold - thetatildeold*tautildeold)/rhotildeold
taud = (zeta - thetatilde*tautildeold)/rhodold
d = d + betacheck**2
normr = sqrt(d + (betad - taud)**2 + betadd**2)
! Estimate ||A||.
normA2 = normA2 + beta**2
normA = sqrt(normA2)
normA2 = normA2 + alpha**2
! Estimate cond(A).
maxrbar = max(maxrbar,rhobarold)
if (itn > 1) then
minrbar = min(minrbar,rhobarold)
end if
condA = max(maxrbar,rhotemp)/min(minrbar,rhotemp)
!----------------------------------------------------------------
! Test for convergence.
!----------------------------------------------------------------
! Compute norms for convergence testing.
normAr = abs(zetabar)
normx = dnrm2(n, x, 1)
! Now use these norms to estimate certain other quantities,
! some of which will be small near a solution.
test1 = normr /normb
test2 = normAr/(normA*normr)
test3 = one/condA
t1 = test1/(one + normA*normx/normb)
rtol = btol + atol*normA*normx/normb
! The following tests guard against extremely small values of
! atol, btol or ctol. (The user may have set any or all of
! the parameters atol, btol, conlim to 0.)
! The effect is equivalent to the normAl tests using
! atol = eps, btol = eps, conlim = 1/eps.
if (itn >= itnlim) istop = 7
if (one+test3 <= one) istop = 6
if (one+test2 <= one) istop = 5
if (one+t1 <= one) istop = 4
! Allow for tolerances set by the user.
if ( test3 <= ctol) istop = 3
if ( test2 <= atol) istop = 2
if ( test1 <= rtol) istop = 1
!----------------------------------------------------------------
! See if it is time to print something.
!----------------------------------------------------------------
prnt = .false.
if (show) then
if (n <= 40) prnt = .true.
if (itn <= 10) prnt = .true.
if (itn >= itnlim-10) prnt = .true.
if (mod(itn,10) == 0) prnt = .true.
if (test3 <= 1.1*ctol) prnt = .true.
if (test2 <= 1.1*atol) prnt = .true.
if (test1 <= 1.1*rtol) prnt = .true.
if (istop /= 0) prnt = .true.
if (prnt) then ! Print a line for this iteration
if (pcount >= pfreq) then ! Print a heading first
pcount = 0
if (damped) then
write(nout,1300)
else
write(nout,1200)
end if
end if
pcount = pcount + 1
write(nout,1500) itn,x(1),normr,normAr,test1,test2,normA,condA
end if
end if
if (istop /= 0) exit
end do
!===================================================================
! End of iteration loop.
!===================================================================
! Come here if normAr = 0, or if normal exit.
800 if (damped .and. istop==2) istop=3 ! Decide if istop = 2 or 3.
if (show) then ! Print the stopping condition.
write(nout, 2000) &
exitt,istop,itn, &
exitt,normA,condA, &
exitt,normb, normx, &
exitt,normr,normAr
write(nout, 3000) &
exitt, msg(istop)
end if
return
1000 format(// a, ' Least-squares solution of Ax = b' &
/ ' The matrix A has', i7, ' rows and', i7, ' columns' &
/ ' damp =', es22.14 &
/ ' atol =', es10.2, 15x, 'conlim =', es10.2 &
/ ' btol =', es10.2, 15x, 'itnlim =', i10 &
/ ' localSize (no. of vectors for local reorthogonalization) =', i7)
1200 format(/ " Itn x(1) norm r A'r ", &
' Compatible LS norm A cond A')
1300 format(/ " Itn x(1) norm rbar Abar'rbar", &
' Compatible LS norm Abar cond Abar')
1500 format(i6, 2es17.9, 5es10.2)
2000 format(/ a, 5x, 'istop =', i2, 15x, 'itn =', i8 &
/ a, 5x, 'normA =', es12.5, 5x, 'condA =', es12.5 &
/ a, 5x, 'normb =', es12.5, 5x, 'normx =', es12.5 &
/ a, 5x, 'normr =', es12.5, 5x, 'normAr =', es12.5)
3000 format(a, 5x, a)
contains
function d2norm( a, b )
real(dp) :: d2norm
real(dp), intent(in) :: a, b
!-------------------------------------------------------------------
! d2norm returns sqrt( a**2 + b**2 )
! with precautions to avoid overflow.
!
! 21 Mar 1990: First version.
! 17 Sep 2007: Fortran 90 version.
! 24 Oct 2007: User real(dp) instead of compiler option -r8.
!-------------------------------------------------------------------
intrinsic :: abs, sqrt
real(dp) :: scale
real(dp), parameter :: zero = 0.0_dp
scale = abs(a) + abs(b)
if (scale == zero) then
d2norm = zero
else
d2norm = scale*sqrt((a/scale)**2 + (b/scale)**2)
end if
end function d2norm
!+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
subroutine localVEnqueue
! Store v into the circular buffer localV.
if (localPointer < localVecs) then
localPointer = localPointer + 1
else
localPointer = 1
localVQueueFull = .true.
end if
localV(:,localPointer) = v
end subroutine localVEnqueue
!+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
subroutine localVOrtho
! Perform local reorthogonalization of current v.
real(dp) :: d
if (localVQueueFull) then
localOrthoLimit = localVecs
else
localOrthoLimit = localPointer
end if
do localOrthoCount = 1, localOrthoLimit
d = dot_product(v,localV(:,localOrthoCount))
v = v - d * localV(:,localOrthoCount)
end do
end subroutine localVOrtho
end subroutine LSMR
!+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
end module LSMRmodule

360
srcsparsity/lsmrblas.f90 Normal file
View File

@ -0,0 +1,360 @@
!+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
! File lsmrblas.f90 (double precision)
!
! This file contains the following BLAS routines
! dcopy, ddot, dnrm2, dscal
! required by subroutines LSMR and Acheck.
!+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
!
!! DCOPY copies a vector X to a vector Y.
!
! Discussion:
! This routine uses double precision real arithmetic.
! The routine uses unrolled loops for increments equal to one.
!
! Modified:
! 16 May 2005
!
! Author:
! Jack Dongarra
! Fortran90 translation by John Burkardt.
!
! Reference:
!
! Jack Dongarra, Jim Bunch, Cleve Moler, Pete Stewart,
! LINPACK User's Guide,
! SIAM, 1979,
! ISBN13: 978-0-898711-72-1,
! LC: QA214.L56.
!
! Charles Lawson, Richard Hanson, David Kincaid, Fred Krogh,
! Algorithm 539,
! Basic Linear Algebra Subprograms for Fortran Usage,
! ACM Transactions on Mathematical Software,
! Volume 5, Number 3, September 1979, pages 308-323.
!
! Parameters:
!
! Input, integer N, the number of elements in DX and DY.
!
! Input, real ( kind = 8 ) DX(*), the first vector.
!
! Input, integer INCX, the increment between successive entries of DX.
!
! Output, real ( kind = 8 ) DY(*), the second vector.
!
! Input, integer INCY, the increment between successive entries of DY.
subroutine dcopy(n,dx,incx,dy,incy)
implicit none
! double precision dx(*),dy(*)
real(4) dx(*),dy(*)
integer i,incx,incy,ix,iy,m,n
if ( n <= 0 ) then
return
end if
if ( incx == 1 .and. incy == 1 ) then
m = mod ( n, 7 )
if ( m /= 0 ) then
dy(1:m) = dx(1:m)
end if
do i = m+1, n, 7
dy(i) = dx(i)
dy(i + 1) = dx(i + 1)
dy(i + 2) = dx(i + 2)
dy(i + 3) = dx(i + 3)
dy(i + 4) = dx(i + 4)
dy(i + 5) = dx(i + 5)
dy(i + 6) = dx(i + 6)
end do
else
if ( 0 <= incx ) then
ix = 1
else
ix = ( -n + 1 ) * incx + 1
end if
if ( 0 <= incy ) then
iy = 1
else
iy = ( -n + 1 ) * incy + 1
end if
do i = 1, n
dy(iy) = dx(ix)
ix = ix + incx
iy = iy + incy
end do
end if
return
end subroutine dcopy
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!
!! DDOT forms the dot product of two vectors.
!
! Discussion:
! This routine uses double precision real arithmetic.
! This routine uses unrolled loops for increments equal to one.
!
! Modified:
! 16 May 2005
!
! Author:
! Jack Dongarra
! Fortran90 translation by John Burkardt.
!
! Reference:
! Jack Dongarra, Jim Bunch, Cleve Moler, Pete Stewart,
! LINPACK User's Guide,
! SIAM, 1979,
! ISBN13: 978-0-898711-72-1,
! LC: QA214.L56.
!
! Charles Lawson, Richard Hanson, David Kincaid, Fred Krogh,
! Algorithm 539,
! Basic Linear Algebra Subprograms for Fortran Usage,
! ACM Transactions on Mathematical Software,
! Volume 5, Number 3, September 1979, pages 308-323.
!
! Parameters:
!
! Input, integer N, the number of entries in the vectors.
!
! Input, real ( kind = 8 ) DX(*), the first vector.
!
! Input, integer INCX, the increment between successive entries in DX.
!
! Input, real ( kind = 8 ) DY(*), the second vector.
!
! Input, integer INCY, the increment between successive entries in DY.
!
! Output, real ( kind = 8 ) DDOT, the sum of the product of the
! corresponding entries of DX and DY.
! double precision function ddot(n,dx,incx,dy,incy)
real(4) function ddot(n,dx,incx,dy,incy)
implicit none
! double precision dx(*),dy(*),dtemp
real(4) dx(*),dy(*),dtemp
integer i,incx,incy,ix,iy,m,n
ddot = 0.0d0
dtemp = 0.0d0
if ( n <= 0 ) then
return
end if
! Code for unequal increments or equal increments
! not equal to 1.
if ( incx /= 1 .or. incy /= 1 ) then
if ( 0 <= incx ) then
ix = 1
else
ix = ( - n + 1 ) * incx + 1
end if
if ( 0 <= incy ) then
iy = 1
else
iy = ( - n + 1 ) * incy + 1
end if
do i = 1, n
dtemp = dtemp + dx(ix) * dy(iy)
ix = ix + incx
iy = iy + incy
end do
! Code for both increments equal to 1.
else
m = mod ( n, 5 )
do i = 1, m
dtemp = dtemp + dx(i) * dy(i)
end do
do i = m+1, n, 5
dtemp = dtemp + dx(i)*dy(i) + dx(i+1)*dy(i+1) + dx(i+2)*dy(i+2) &
+ dx(i+3)*dy(i+3) + dx(i+4)*dy(i+4)
end do
end if
ddot = dtemp
return
end function ddot
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!*****************************************************************************80
!
!! DNRM2 returns the euclidean norm of a vector.
!
! Discussion:
! This routine uses double precision real arithmetic.
! DNRM2 ( X ) = sqrt ( X' * X )
!
! Modified:
! 16 May 2005
!
! Author:
! Sven Hammarling
! Fortran90 translation by John Burkardt.
!
! Reference:
! Jack Dongarra, Jim Bunch, Cleve Moler, Pete Stewart,
! LINPACK User's Guide,
! SIAM, 1979,
! ISBN13: 978-0-898711-72-1,
! LC: QA214.L56.
!
! Charles Lawson, Richard Hanson, David Kincaid, Fred Krogh,
! Algorithm 539,
! Basic Linear Algebra Subprograms for Fortran Usage,
! ACM Transactions on Mathematical Software,
! Volume 5, Number 3, September 1979, pages 308-323.
!
! Parameters:
!
! Input, integer N, the number of entries in the vector.
!
! Input, real ( kind = 8 ) X(*), the vector whose norm is to be computed.
!
! Input, integer INCX, the increment between successive entries of X.
!
! Output, real ( kind = 8 ) DNRM2, the Euclidean norm of X.
!
! double precision function dnrm2 ( n, x, incx)
real(4) function dnrm2 ( n, x, incx)
implicit none
integer ix,n,incx
! double precision x(*), ssq,absxi,norm,scale
real(4) x(*), ssq,absxi,norm,scale
if ( n < 1 .or. incx < 1 ) then
norm = 0.d0
else if ( n == 1 ) then
norm = abs ( x(1) )
else
scale = 0.d0
ssq = 1.d0
do ix = 1, 1 + ( n - 1 )*incx, incx
if ( x(ix) /= 0.d0 ) then
absxi = abs ( x(ix) )
if ( scale < absxi ) then
ssq = 1.d0 + ssq * ( scale / absxi )**2
scale = absxi
else
ssq = ssq + ( absxi / scale )**2
end if
end if
end do
norm = scale * sqrt ( ssq )
end if
dnrm2 = norm
return
end function dnrm2
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! DSCAL scales a vector by a constant.
!
! Discussion:
! This routine uses double precision real arithmetic.
!
! Modified:
! 08 April 1999
!
! Author:
! Jack Dongarra
! Fortran90 translation by John Burkardt.
!
! Reference:
! Jack Dongarra, Jim Bunch, Cleve Moler, Pete Stewart,
! LINPACK User's Guide,
! SIAM, 1979,
! ISBN13: 978-0-898711-72-1,
! LC: QA214.L56.
!
! Charles Lawson, Richard Hanson, David Kincaid, Fred Krogh,
! Algorithm 539,
! Basic Linear Algebra Subprograms for Fortran Usage,
! ACM Transactions on Mathematical Software,
! Volume 5, Number 3, September 1979, pages 308-323.
!
! Parameters:
!
! Input, integer N, the number of entries in the vector.
!
! Input, real ( kind = 8 ) SA, the multiplier.
!
! Input/output, real ( kind = 8 ) X(*), the vector to be scaled.
!
! Input, integer INCX, the increment between successive entries of X.
!
subroutine dscal(n,sa,x,incx)
implicit none
integer i
integer incx
integer ix
integer m
integer n
!double precision sa
!double precision x(*)
real(4) sa
real(4) x(*)
if ( n <= 0 ) then
return
else if ( incx == 1 ) then
m = mod ( n, 5 )
x(1:m) = sa * x(1:m)
do i = m+1, n, 5
x(i) = sa * x(i)
x(i+1) = sa * x(i+1)
x(i+2) = sa * x(i+2)
x(i+3) = sa * x(i+3)
x(i+4) = sa * x(i+4)
end do
else
if ( 0 <= incx ) then
ix = 1
else
ix = ( - n + 1 ) * incx + 1
end if
do i = 1, n
x(ix) = sa * x(ix)
ix = ix + incx
end do
end if
return
end subroutine dscal
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

View File

@ -0,0 +1,41 @@
!+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
! File lsmrblasInterface.f90
!
! BLAS1 Interfaces: ddot dnrm2 dscal
!
! Maintained by Michael Saunders <saunders@stanford.edu>.
!
! 19 Dec 2008: lsqrblasInterface module implemented.
! Metcalf and Reid recommend putting interfaces in a module.
! 16 Jul 2010: LSMR version derived from LSQR equivalent.
!+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
module lsmrblasInterface
implicit none
public :: ddot, dnrm2, dscal
interface ! Level 1 BLAS
function ddot (n,dx,incx,dy,incy)
use lsmrDataModule, only : dp
integer, intent(in) :: n,incx,incy
real(dp), intent(in) :: dx(*),dy(*)
real(dp) :: ddot
end function ddot
function dnrm2 (n,dx,incx)
use lsmrDataModule, only : dp
integer, intent(in) :: n,incx
real(dp), intent(in) :: dx(*)
real(dp) :: dnrm2
end function dnrm2
subroutine dscal (n,sa,x,incx)
use lsmrDataModule, only : dp
integer, intent(in) :: n,incx
real(dp), intent(in) :: sa
real(dp), intent(inout) :: x(*)
end subroutine dscal
end interface
end module lsmrblasInterface

1062
srcsparsity/surfdisp96.f Normal file

File diff suppressed because it is too large Load Diff