annotate benchmark/benchmark_laplace.jl @ 1961:f46b4f1fa82c feature/grids/geometry_functions

Merge feature/grids/manifolds
author Jonatan Werpers <jonatan@werpers.com>
date Tue, 11 Feb 2025 09:02:37 +0100
parents 471a948cd2b2
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1726
471a948cd2b2 Rename project from Sbplib to Diffinitive
Vidar Stiernström <vidar.stiernstrom@gmail.com>
parents: 1529
diff changeset
1 using Diffinitive
471a948cd2b2 Rename project from Sbplib to Diffinitive
Vidar Stiernström <vidar.stiernstrom@gmail.com>
parents: 1529
diff changeset
2 using Diffinitive.SbpOperators
471a948cd2b2 Rename project from Sbplib to Diffinitive
Vidar Stiernström <vidar.stiernstrom@gmail.com>
parents: 1529
diff changeset
3 using Diffinitive.Grids
471a948cd2b2 Rename project from Sbplib to Diffinitive
Vidar Stiernström <vidar.stiernstrom@gmail.com>
parents: 1529
diff changeset
4 using Diffinitive.RegionIndices
1376
2ad2de55061a Add temp. benchmark script for constant and variable coeff Laplace
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
5 using BenchmarkTools
2ad2de55061a Add temp. benchmark script for constant and variable coeff Laplace
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
6
2ad2de55061a Add temp. benchmark script for constant and variable coeff Laplace
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
7 # TODO: Move the below benchmarks into the benchmark suite
2ad2de55061a Add temp. benchmark script for constant and variable coeff Laplace
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
8
2ad2de55061a Add temp. benchmark script for constant and variable coeff Laplace
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
9 const operator_path = sbp_operators_path()*"standard_diagonal.toml"
2ad2de55061a Add temp. benchmark script for constant and variable coeff Laplace
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
10
2ad2de55061a Add temp. benchmark script for constant and variable coeff Laplace
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
11 function benchmark_const_coeff_1d(;N = 100, order = 4)
2ad2de55061a Add temp. benchmark script for constant and variable coeff Laplace
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
12 stencil_set = read_stencil_set(operator_path; order=order)
1529
43aaf710463e Change to signature of equidistant_grid to same style as many array methods.
Jonatan Werpers <jonatan@werpers.com>
parents: 1376
diff changeset
13 g = equidistant_grid(0., 1., N)
1376
2ad2de55061a Add temp. benchmark script for constant and variable coeff Laplace
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
14 D = second_derivative(g, stencil_set)
2ad2de55061a Add temp. benchmark script for constant and variable coeff Laplace
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
15 u = rand(size(g)...)
2ad2de55061a Add temp. benchmark script for constant and variable coeff Laplace
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
16 u_xx = rand(size(g)...)
2ad2de55061a Add temp. benchmark script for constant and variable coeff Laplace
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
17
2ad2de55061a Add temp. benchmark script for constant and variable coeff Laplace
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
18 b_naive = @benchmark $u_xx .= $D*$u
2ad2de55061a Add temp. benchmark script for constant and variable coeff Laplace
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
19 b_reg = @benchmark $apply_region_1d!($u_xx,$u,$D)
2ad2de55061a Add temp. benchmark script for constant and variable coeff Laplace
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
20 b_thrd = @benchmark $apply_region_threaded_1d!($u_xx,$u,$D)
2ad2de55061a Add temp. benchmark script for constant and variable coeff Laplace
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
21 print_benchmark_result("Naive apply",b_naive)
2ad2de55061a Add temp. benchmark script for constant and variable coeff Laplace
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
22 print_benchmark_result("Region apply",b_reg)
2ad2de55061a Add temp. benchmark script for constant and variable coeff Laplace
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
23 print_benchmark_result("Threaded region apply",b_thrd)
2ad2de55061a Add temp. benchmark script for constant and variable coeff Laplace
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
24 end
2ad2de55061a Add temp. benchmark script for constant and variable coeff Laplace
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
25
2ad2de55061a Add temp. benchmark script for constant and variable coeff Laplace
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
26 function benchmark_var_coeff_1d(;N = 100, order = 4)
2ad2de55061a Add temp. benchmark script for constant and variable coeff Laplace
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
27 stencil_set = read_stencil_set(operator_path; order=order)
1529
43aaf710463e Change to signature of equidistant_grid to same style as many array methods.
Jonatan Werpers <jonatan@werpers.com>
parents: 1376
diff changeset
28 g = equidistant_grid(0., 1., N)
1376
2ad2de55061a Add temp. benchmark script for constant and variable coeff Laplace
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
29 c = rand(size(g)...)
2ad2de55061a Add temp. benchmark script for constant and variable coeff Laplace
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
30 c_lz = eval_on(g, x -> 0.5)
2ad2de55061a Add temp. benchmark script for constant and variable coeff Laplace
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
31 D = second_derivative_variable(g, c, stencil_set)
2ad2de55061a Add temp. benchmark script for constant and variable coeff Laplace
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
32 D_lz = second_derivative_variable(g, c_lz, stencil_set)
2ad2de55061a Add temp. benchmark script for constant and variable coeff Laplace
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
33 u = rand(size(g)...)
2ad2de55061a Add temp. benchmark script for constant and variable coeff Laplace
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
34 u_xx = rand(size(g)...)
2ad2de55061a Add temp. benchmark script for constant and variable coeff Laplace
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
35
2ad2de55061a Add temp. benchmark script for constant and variable coeff Laplace
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
36 b_naive = @benchmark $u_xx .= $D*$u
2ad2de55061a Add temp. benchmark script for constant and variable coeff Laplace
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
37 b_naive_lz = @benchmark $u_xx .= $D_lz*$u
2ad2de55061a Add temp. benchmark script for constant and variable coeff Laplace
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
38 b_reg = @benchmark $apply_region_1d!($u_xx,$u,$D)
2ad2de55061a Add temp. benchmark script for constant and variable coeff Laplace
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
39 b_reg_lz = @benchmark $apply_region_1d!($u_xx,$u,$D_lz)
2ad2de55061a Add temp. benchmark script for constant and variable coeff Laplace
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
40 b_thrd = @benchmark $apply_region_threaded_1d!($u_xx,$u,$D)
2ad2de55061a Add temp. benchmark script for constant and variable coeff Laplace
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
41 b_thrd_lz = @benchmark $apply_region_threaded_1d!($u_xx,$u,$D_lz)
2ad2de55061a Add temp. benchmark script for constant and variable coeff Laplace
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
42 print_benchmark_result("Naive apply",b_naive)
2ad2de55061a Add temp. benchmark script for constant and variable coeff Laplace
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
43 print_benchmark_result("Naive apply lazy coeff",b_naive_lz)
2ad2de55061a Add temp. benchmark script for constant and variable coeff Laplace
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
44 print_benchmark_result("Region apply",b_reg)
2ad2de55061a Add temp. benchmark script for constant and variable coeff Laplace
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
45 print_benchmark_result("Region apply lazy coeff",b_reg_lz)
2ad2de55061a Add temp. benchmark script for constant and variable coeff Laplace
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
46 print_benchmark_result("Threaded region apply",b_thrd)
2ad2de55061a Add temp. benchmark script for constant and variable coeff Laplace
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
47 print_benchmark_result("Threaded region apply lazy coeff",b_thrd_lz)
2ad2de55061a Add temp. benchmark script for constant and variable coeff Laplace
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
48 end
2ad2de55061a Add temp. benchmark script for constant and variable coeff Laplace
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
49
2ad2de55061a Add temp. benchmark script for constant and variable coeff Laplace
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
50 function benchmark_const_coeff_2d(;N = 100, order = 4)
2ad2de55061a Add temp. benchmark script for constant and variable coeff Laplace
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
51 stencil_set = read_stencil_set(operator_path; order=order)
1529
43aaf710463e Change to signature of equidistant_grid to same style as many array methods.
Jonatan Werpers <jonatan@werpers.com>
parents: 1376
diff changeset
52 g = equidistant_grid((0.,0.,),(1.,1.), N, N)
1376
2ad2de55061a Add temp. benchmark script for constant and variable coeff Laplace
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
53 D = Laplace(g, stencil_set)
2ad2de55061a Add temp. benchmark script for constant and variable coeff Laplace
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
54 u = rand(size(g)...)
2ad2de55061a Add temp. benchmark script for constant and variable coeff Laplace
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
55 u_xx = rand(size(g)...)
2ad2de55061a Add temp. benchmark script for constant and variable coeff Laplace
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
56 if order == 2
2ad2de55061a Add temp. benchmark script for constant and variable coeff Laplace
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
57 clz_sz = 1
2ad2de55061a Add temp. benchmark script for constant and variable coeff Laplace
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
58 elseif order == 4
2ad2de55061a Add temp. benchmark script for constant and variable coeff Laplace
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
59 clz_sz = 4
2ad2de55061a Add temp. benchmark script for constant and variable coeff Laplace
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
60 else
2ad2de55061a Add temp. benchmark script for constant and variable coeff Laplace
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
61 error()
2ad2de55061a Add temp. benchmark script for constant and variable coeff Laplace
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
62 end
2ad2de55061a Add temp. benchmark script for constant and variable coeff Laplace
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
63
2ad2de55061a Add temp. benchmark script for constant and variable coeff Laplace
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
64 b_naive = @benchmark $u_xx .= $D*$u
2ad2de55061a Add temp. benchmark script for constant and variable coeff Laplace
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
65 b_reg = @benchmark $apply_region_2d!($u_xx,$u,$D,$clz_sz)
2ad2de55061a Add temp. benchmark script for constant and variable coeff Laplace
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
66 b_thrd = @benchmark $apply_region_threaded_2d!($u_xx,$u,$D,$clz_sz)
2ad2de55061a Add temp. benchmark script for constant and variable coeff Laplace
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
67 print_benchmark_result("Naive apply",b_naive)
2ad2de55061a Add temp. benchmark script for constant and variable coeff Laplace
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
68 print_benchmark_result("Region apply",b_reg)
2ad2de55061a Add temp. benchmark script for constant and variable coeff Laplace
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
69 print_benchmark_result("Threaded region apply",b_thrd)
2ad2de55061a Add temp. benchmark script for constant and variable coeff Laplace
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
70 end
2ad2de55061a Add temp. benchmark script for constant and variable coeff Laplace
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
71
2ad2de55061a Add temp. benchmark script for constant and variable coeff Laplace
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
72 function benchmark_var_coeff_2d(;N = 100, order = 4)
2ad2de55061a Add temp. benchmark script for constant and variable coeff Laplace
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
73 stencil_set = read_stencil_set(operator_path; order=order)
1529
43aaf710463e Change to signature of equidistant_grid to same style as many array methods.
Jonatan Werpers <jonatan@werpers.com>
parents: 1376
diff changeset
74 g = equidistant_grid((0.,0.,),(1.,1.), N, N)
1376
2ad2de55061a Add temp. benchmark script for constant and variable coeff Laplace
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
75 c = rand(size(g)...)
2ad2de55061a Add temp. benchmark script for constant and variable coeff Laplace
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
76 c_lz = eval_on(g, x-> 0.5)
2ad2de55061a Add temp. benchmark script for constant and variable coeff Laplace
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
77 D = second_derivative_variable(g, c, stencil_set, 1) + second_derivative_variable(g, c, stencil_set, 2)
2ad2de55061a Add temp. benchmark script for constant and variable coeff Laplace
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
78 D_lz = second_derivative_variable(g, c_lz, stencil_set, 1) + second_derivative_variable(g, c_lz, stencil_set, 2)
2ad2de55061a Add temp. benchmark script for constant and variable coeff Laplace
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
79 u = rand(size(g)...)
2ad2de55061a Add temp. benchmark script for constant and variable coeff Laplace
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
80 u_xx = rand(size(g)...)
2ad2de55061a Add temp. benchmark script for constant and variable coeff Laplace
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
81
2ad2de55061a Add temp. benchmark script for constant and variable coeff Laplace
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
82 if order == 2
2ad2de55061a Add temp. benchmark script for constant and variable coeff Laplace
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
83 clz_sz = 1
2ad2de55061a Add temp. benchmark script for constant and variable coeff Laplace
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
84 elseif order == 4
2ad2de55061a Add temp. benchmark script for constant and variable coeff Laplace
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
85 clz_sz = 6
2ad2de55061a Add temp. benchmark script for constant and variable coeff Laplace
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
86 else
2ad2de55061a Add temp. benchmark script for constant and variable coeff Laplace
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
87 error()
2ad2de55061a Add temp. benchmark script for constant and variable coeff Laplace
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
88 end
2ad2de55061a Add temp. benchmark script for constant and variable coeff Laplace
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
89
2ad2de55061a Add temp. benchmark script for constant and variable coeff Laplace
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
90 # Check correctnesss
2ad2de55061a Add temp. benchmark script for constant and variable coeff Laplace
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
91 # u_xx .= D*u
2ad2de55061a Add temp. benchmark script for constant and variable coeff Laplace
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
92 # u_xx_tmp = zeros(size(u_xx)...)
2ad2de55061a Add temp. benchmark script for constant and variable coeff Laplace
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
93 # u_xx_tmp .= u_xx
2ad2de55061a Add temp. benchmark script for constant and variable coeff Laplace
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
94 # apply_region_threaded_2d!(u_xx, u, D, clz_sz)
2ad2de55061a Add temp. benchmark script for constant and variable coeff Laplace
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
95
2ad2de55061a Add temp. benchmark script for constant and variable coeff Laplace
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
96 # @show sum(abs.(u_xx_tmp .- u_xx))
2ad2de55061a Add temp. benchmark script for constant and variable coeff Laplace
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
97 # @show pointer(u_xx_tmp) == pointer(u_xxs
2ad2de55061a Add temp. benchmark script for constant and variable coeff Laplace
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
98
2ad2de55061a Add temp. benchmark script for constant and variable coeff Laplace
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
99
2ad2de55061a Add temp. benchmark script for constant and variable coeff Laplace
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
100 b_naive = @benchmark $u_xx .= $D*$u
2ad2de55061a Add temp. benchmark script for constant and variable coeff Laplace
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
101 b_naive_lz = @benchmark $u_xx .= $D_lz*$u
2ad2de55061a Add temp. benchmark script for constant and variable coeff Laplace
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
102 b_reg = @benchmark $apply_region_2d!($u_xx,$u,$D, $clz_sz)
2ad2de55061a Add temp. benchmark script for constant and variable coeff Laplace
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
103 b_reg_lz = @benchmark $apply_region_2d!($u_xx,$u,$D_lz, $clz_sz)
2ad2de55061a Add temp. benchmark script for constant and variable coeff Laplace
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
104 b_thrd = @benchmark $apply_region_threaded_2d!($u_xx,$u,$D, $clz_sz)
2ad2de55061a Add temp. benchmark script for constant and variable coeff Laplace
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
105 b_thrd_lz = @benchmark $apply_region_threaded_2d!($u_xx,$u,$D_lz, $clz_sz)
2ad2de55061a Add temp. benchmark script for constant and variable coeff Laplace
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
106 print_benchmark_result("Naive apply",b_naive)
2ad2de55061a Add temp. benchmark script for constant and variable coeff Laplace
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
107 print_benchmark_result("Naive apply lazy coeff",b_naive_lz)
2ad2de55061a Add temp. benchmark script for constant and variable coeff Laplace
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
108 print_benchmark_result("Region apply",b_reg)
2ad2de55061a Add temp. benchmark script for constant and variable coeff Laplace
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
109 print_benchmark_result("Region apply lazy coeff",b_reg_lz)
2ad2de55061a Add temp. benchmark script for constant and variable coeff Laplace
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
110 print_benchmark_result("Threaded region apply",b_thrd)
2ad2de55061a Add temp. benchmark script for constant and variable coeff Laplace
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
111 print_benchmark_result("Threaded region apply lazy coeff",b_thrd_lz)
2ad2de55061a Add temp. benchmark script for constant and variable coeff Laplace
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
112 end
2ad2de55061a Add temp. benchmark script for constant and variable coeff Laplace
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
113
2ad2de55061a Add temp. benchmark script for constant and variable coeff Laplace
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
114 function print_benchmark_result(title_str,res)
2ad2de55061a Add temp. benchmark script for constant and variable coeff Laplace
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
115 if title_str[1] != ' '
2ad2de55061a Add temp. benchmark script for constant and variable coeff Laplace
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
116 title_str = lpad(title_str,length(title_str)+1, " ")
2ad2de55061a Add temp. benchmark script for constant and variable coeff Laplace
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
117 end
2ad2de55061a Add temp. benchmark script for constant and variable coeff Laplace
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
118 if title_str[end] != ' '
2ad2de55061a Add temp. benchmark script for constant and variable coeff Laplace
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
119 title_str = rpad(title_str,length(title_str)+1, " ")
2ad2de55061a Add temp. benchmark script for constant and variable coeff Laplace
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
120 end
2ad2de55061a Add temp. benchmark script for constant and variable coeff Laplace
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
121 tot_len = 76
2ad2de55061a Add temp. benchmark script for constant and variable coeff Laplace
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
122 pad_len = Int(tot_len/2)
2ad2de55061a Add temp. benchmark script for constant and variable coeff Laplace
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
123 header = lpad(title_str,pad_len,"*")
2ad2de55061a Add temp. benchmark script for constant and variable coeff Laplace
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
124 header = rpad(header,tot_len,"*")
2ad2de55061a Add temp. benchmark script for constant and variable coeff Laplace
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
125 bottom = repeat("*",tot_len)
2ad2de55061a Add temp. benchmark script for constant and variable coeff Laplace
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
126 println(header)
2ad2de55061a Add temp. benchmark script for constant and variable coeff Laplace
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
127 display(res)
2ad2de55061a Add temp. benchmark script for constant and variable coeff Laplace
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
128 println(bottom)
2ad2de55061a Add temp. benchmark script for constant and variable coeff Laplace
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
129 return
2ad2de55061a Add temp. benchmark script for constant and variable coeff Laplace
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
130 end
2ad2de55061a Add temp. benchmark script for constant and variable coeff Laplace
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
131
2ad2de55061a Add temp. benchmark script for constant and variable coeff Laplace
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
132 function apply_region_1d!(u_xx, u, D)
2ad2de55061a Add temp. benchmark script for constant and variable coeff Laplace
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
133 clz_sz = SbpOperators.closure_size(D)
2ad2de55061a Add temp. benchmark script for constant and variable coeff Laplace
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
134 tm = D*u
2ad2de55061a Add temp. benchmark script for constant and variable coeff Laplace
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
135 for i ∈ @view eachindex(u)[1:clz_sz]
2ad2de55061a Add temp. benchmark script for constant and variable coeff Laplace
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
136 u_xx[i] = tm[Index{Lower}(i)]
2ad2de55061a Add temp. benchmark script for constant and variable coeff Laplace
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
137 end
2ad2de55061a Add temp. benchmark script for constant and variable coeff Laplace
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
138 for i ∈ @view eachindex(u)[clz_sz+1:end-clz_sz]
2ad2de55061a Add temp. benchmark script for constant and variable coeff Laplace
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
139 u_xx[i] = tm[Index{Interior}(i)]
2ad2de55061a Add temp. benchmark script for constant and variable coeff Laplace
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
140 end
2ad2de55061a Add temp. benchmark script for constant and variable coeff Laplace
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
141 for i ∈ @view eachindex(u)[end-clz_sz+1:end]
2ad2de55061a Add temp. benchmark script for constant and variable coeff Laplace
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
142 u_xx[i] = tm[Index{Upper}(i)]
2ad2de55061a Add temp. benchmark script for constant and variable coeff Laplace
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
143 end
2ad2de55061a Add temp. benchmark script for constant and variable coeff Laplace
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
144 end
2ad2de55061a Add temp. benchmark script for constant and variable coeff Laplace
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
145
2ad2de55061a Add temp. benchmark script for constant and variable coeff Laplace
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
146 function apply_region_threaded_1d!(u_xx, u, D)
2ad2de55061a Add temp. benchmark script for constant and variable coeff Laplace
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
147 clz_sz = SbpOperators.closure_size(D)
2ad2de55061a Add temp. benchmark script for constant and variable coeff Laplace
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
148 tm = D*u
2ad2de55061a Add temp. benchmark script for constant and variable coeff Laplace
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
149 for i ∈ @view eachindex(u)[1:clz_sz]
2ad2de55061a Add temp. benchmark script for constant and variable coeff Laplace
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
150 u_xx[i] = tm[Index{Lower}(i)]
2ad2de55061a Add temp. benchmark script for constant and variable coeff Laplace
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
151 end
2ad2de55061a Add temp. benchmark script for constant and variable coeff Laplace
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
152 Threads.@threads for i ∈ @view eachindex(u)[clz_sz+1:end-clz_sz]
2ad2de55061a Add temp. benchmark script for constant and variable coeff Laplace
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
153 u_xx[i] = tm[Index{Interior}(i)]
2ad2de55061a Add temp. benchmark script for constant and variable coeff Laplace
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
154 end
2ad2de55061a Add temp. benchmark script for constant and variable coeff Laplace
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
155 for i ∈ @view eachindex(u)[end-clz_sz+1:end]
2ad2de55061a Add temp. benchmark script for constant and variable coeff Laplace
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
156 u_xx[i] = tm[Index{Upper}(i)]
2ad2de55061a Add temp. benchmark script for constant and variable coeff Laplace
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
157 end
2ad2de55061a Add temp. benchmark script for constant and variable coeff Laplace
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
158 end
2ad2de55061a Add temp. benchmark script for constant and variable coeff Laplace
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
159
2ad2de55061a Add temp. benchmark script for constant and variable coeff Laplace
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
160 function apply_region_2d!(u_xx, u, D, clz_sz)
2ad2de55061a Add temp. benchmark script for constant and variable coeff Laplace
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
161 tm = D*u
2ad2de55061a Add temp. benchmark script for constant and variable coeff Laplace
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
162 for I ∈ @view CartesianIndices(u)[1:clz_sz,1:clz_sz]
2ad2de55061a Add temp. benchmark script for constant and variable coeff Laplace
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
163 u_xx[I] = tm[Index{Lower}(I[1]),Index{Lower}(I[2])]
2ad2de55061a Add temp. benchmark script for constant and variable coeff Laplace
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
164 end
2ad2de55061a Add temp. benchmark script for constant and variable coeff Laplace
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
165 for I ∈ @view CartesianIndices(u)[1:clz_sz,clz_sz+1:end-clz_sz]
2ad2de55061a Add temp. benchmark script for constant and variable coeff Laplace
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
166 u_xx[I] = tm[Index{Lower}(I[1]),Index{Interior}(I[2])]
2ad2de55061a Add temp. benchmark script for constant and variable coeff Laplace
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
167 end
2ad2de55061a Add temp. benchmark script for constant and variable coeff Laplace
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
168 for I ∈ @view CartesianIndices(u)[1:clz_sz,end-clz_sz+1:end]
2ad2de55061a Add temp. benchmark script for constant and variable coeff Laplace
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
169 u_xx[I] = tm[Index{Lower}(I[1]),Index{Upper}(I[2])]
2ad2de55061a Add temp. benchmark script for constant and variable coeff Laplace
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
170 end
2ad2de55061a Add temp. benchmark script for constant and variable coeff Laplace
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
171 for I ∈ @view CartesianIndices(u)[clz_sz+1:end-clz_sz,1:clz_sz]
2ad2de55061a Add temp. benchmark script for constant and variable coeff Laplace
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
172 u_xx[I] = tm[Index{Interior}(I[1]),Index{Lower}(I[2])]
2ad2de55061a Add temp. benchmark script for constant and variable coeff Laplace
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
173 end
2ad2de55061a Add temp. benchmark script for constant and variable coeff Laplace
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
174 for I ∈ @view CartesianIndices(u)[clz_sz+1:end-clz_sz,clz_sz+1:end-clz_sz]
2ad2de55061a Add temp. benchmark script for constant and variable coeff Laplace
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
175 u_xx[I] = tm[Index{Interior}(I[1]),Index{Interior}(I[2])]
2ad2de55061a Add temp. benchmark script for constant and variable coeff Laplace
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
176 end
2ad2de55061a Add temp. benchmark script for constant and variable coeff Laplace
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
177 for I ∈ @view CartesianIndices(u)[clz_sz+1:end-clz_sz,end-clz_sz+1:end]
2ad2de55061a Add temp. benchmark script for constant and variable coeff Laplace
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
178 u_xx[I] = tm[Index{Interior}(I[1]),Index{Upper}(I[2])]
2ad2de55061a Add temp. benchmark script for constant and variable coeff Laplace
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
179 end
2ad2de55061a Add temp. benchmark script for constant and variable coeff Laplace
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
180 for I ∈ @view CartesianIndices(u)[end-clz_sz+1:end,1:clz_sz]
2ad2de55061a Add temp. benchmark script for constant and variable coeff Laplace
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
181 u_xx[I] = tm[Index{Upper}(I[1]),Index{Lower}(I[2])]
2ad2de55061a Add temp. benchmark script for constant and variable coeff Laplace
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
182 end
2ad2de55061a Add temp. benchmark script for constant and variable coeff Laplace
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
183 for I ∈ @view CartesianIndices(u)[end-clz_sz+1:end,clz_sz+1:end-clz_sz]
2ad2de55061a Add temp. benchmark script for constant and variable coeff Laplace
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
184 u_xx[I] = tm[Index{Upper}(I[1]),Index{Interior}(I[2])]
2ad2de55061a Add temp. benchmark script for constant and variable coeff Laplace
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
185 end
2ad2de55061a Add temp. benchmark script for constant and variable coeff Laplace
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
186 for I ∈ @view CartesianIndices(u)[end-clz_sz+1:end,end-clz_sz+1:end]
2ad2de55061a Add temp. benchmark script for constant and variable coeff Laplace
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
187 u_xx[I] = tm[Index{Upper}(I[1]),Index{Upper}(I[2])]
2ad2de55061a Add temp. benchmark script for constant and variable coeff Laplace
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
188 end
2ad2de55061a Add temp. benchmark script for constant and variable coeff Laplace
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
189 end
2ad2de55061a Add temp. benchmark script for constant and variable coeff Laplace
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
190
2ad2de55061a Add temp. benchmark script for constant and variable coeff Laplace
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
191 function apply_region_threaded_2d!(u_xx, u, D, clz_sz)
2ad2de55061a Add temp. benchmark script for constant and variable coeff Laplace
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
192 tm = D*u
2ad2de55061a Add temp. benchmark script for constant and variable coeff Laplace
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
193 for I ∈ @view CartesianIndices(u)[1:clz_sz,1:clz_sz]
2ad2de55061a Add temp. benchmark script for constant and variable coeff Laplace
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
194 u_xx[I] = tm[Index{Lower}(I[1]),Index{Lower}(I[2])]
2ad2de55061a Add temp. benchmark script for constant and variable coeff Laplace
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
195 end
2ad2de55061a Add temp. benchmark script for constant and variable coeff Laplace
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
196 for I ∈ @view CartesianIndices(u)[1:clz_sz,clz_sz+1:end-clz_sz]
2ad2de55061a Add temp. benchmark script for constant and variable coeff Laplace
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
197 u_xx[I] = tm[Index{Lower}(I[1]),Index{Interior}(I[2])]
2ad2de55061a Add temp. benchmark script for constant and variable coeff Laplace
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
198 end
2ad2de55061a Add temp. benchmark script for constant and variable coeff Laplace
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
199 for I ∈ @view CartesianIndices(u)[1:clz_sz,end-clz_sz+1:end]
2ad2de55061a Add temp. benchmark script for constant and variable coeff Laplace
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
200 u_xx[I] = tm[Index{Lower}(I[1]),Index{Upper}(I[2])]
2ad2de55061a Add temp. benchmark script for constant and variable coeff Laplace
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
201 end
2ad2de55061a Add temp. benchmark script for constant and variable coeff Laplace
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
202 for I ∈ @view CartesianIndices(u)[clz_sz+1:end-clz_sz,1:clz_sz]
2ad2de55061a Add temp. benchmark script for constant and variable coeff Laplace
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
203 u_xx[I] = tm[Index{Interior}(I[1]),Index{Lower}(I[2])]
2ad2de55061a Add temp. benchmark script for constant and variable coeff Laplace
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
204 end
2ad2de55061a Add temp. benchmark script for constant and variable coeff Laplace
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
205 Threads.@threads for I ∈ @view CartesianIndices(u)[clz_sz+1:end-clz_sz,clz_sz+1:end-clz_sz]
2ad2de55061a Add temp. benchmark script for constant and variable coeff Laplace
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
206 u_xx[I] = tm[Index{Interior}(I[1]),Index{Interior}(I[2])]
2ad2de55061a Add temp. benchmark script for constant and variable coeff Laplace
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
207 end
2ad2de55061a Add temp. benchmark script for constant and variable coeff Laplace
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
208 for I ∈ @view CartesianIndices(u)[clz_sz+1:end-clz_sz,end-clz_sz+1:end]
2ad2de55061a Add temp. benchmark script for constant and variable coeff Laplace
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
209 u_xx[I] = tm[Index{Interior}(I[1]),Index{Upper}(I[2])]
2ad2de55061a Add temp. benchmark script for constant and variable coeff Laplace
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
210 end
2ad2de55061a Add temp. benchmark script for constant and variable coeff Laplace
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
211 for I ∈ @view CartesianIndices(u)[end-clz_sz+1:end,1:clz_sz]
2ad2de55061a Add temp. benchmark script for constant and variable coeff Laplace
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
212 u_xx[I] = tm[Index{Upper}(I[1]),Index{Lower}(I[2])]
2ad2de55061a Add temp. benchmark script for constant and variable coeff Laplace
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
213 end
2ad2de55061a Add temp. benchmark script for constant and variable coeff Laplace
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
214 for I ∈ @view CartesianIndices(u)[end-clz_sz+1:end,clz_sz+1:end-clz_sz]
2ad2de55061a Add temp. benchmark script for constant and variable coeff Laplace
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
215 u_xx[I] = tm[Index{Upper}(I[1]),Index{Interior}(I[2])]
2ad2de55061a Add temp. benchmark script for constant and variable coeff Laplace
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
216 end
2ad2de55061a Add temp. benchmark script for constant and variable coeff Laplace
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
217 for I ∈ @view CartesianIndices(u)[end-clz_sz+1:end,end-clz_sz+1:end]
2ad2de55061a Add temp. benchmark script for constant and variable coeff Laplace
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
218 u_xx[I] = tm[Index{Upper}(I[1]),Index{Upper}(I[2])]
2ad2de55061a Add temp. benchmark script for constant and variable coeff Laplace
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
219 end
1529
43aaf710463e Change to signature of equidistant_grid to same style as many array methods.
Jonatan Werpers <jonatan@werpers.com>
parents: 1376
diff changeset
220 end