comparison diracDiscr.m @ 1245:0a1c64d3c717 feature/dirac_discr

Avoid indentation of whole function
author Jonatan Werpers <jonatan@werpers.com>
date Wed, 20 Nov 2019 20:30:45 +0100
parents ff613067dec6
children 25efceb0c392
comparison
equal deleted inserted replaced
1244:745dc1f1a069 1245:0a1c64d3c717
34 34
35 % Return zeros if x0 is outside grid 35 % Return zeros if x0 is outside grid
36 if x_s < x(1) || x_s > x(end) 36 if x_s < x(1) || x_s > x(end)
37 ret = zeros(size(x)); 37 ret = zeros(size(x));
38 return 38 return
39 else 39 end
40 tot_order = m_order+s_order; %This is equiv. to the number of equations solved for 40
41 S = []; 41 tot_order = m_order+s_order; %This is equiv. to the number of equations solved for
42 M = []; 42 S = [];
43 M = [];
43 44
44 % Get interior grid spacing 45 % Get interior grid spacing
45 middle = floor(length(x)/2); 46 middle = floor(length(x)/2);
46 h = x(middle+1) - x(middle); % Use middle point to allow for staggered grids. 47 h = x(middle+1) - x(middle); % Use middle point to allow for staggered grids.
47 48
48 index = sourceIndices(x_s, x, tot_order, h); 49 index = sourceIndices(x_s, x, tot_order, h);
49 50
50 polynomial = (x(index)-x(index(1)))/(x(index(end))-x(index(1))); 51 polynomial = (x(index)-x(index(1)))/(x(index(end))-x(index(1)));
51 x_0 = (x_s-x(index(1)))/(x(index(end))-x(index(1))); 52 x_0 = (x_s-x(index(1)))/(x(index(end))-x(index(1)));
52 53
53 quadrature = diag(H); 54 quadrature = diag(H);
54 quadrature_weights = quadrature(index)/h; 55 quadrature_weights = quadrature(index)/h;
55 56
56 h_polynomial = polynomial(2)-polynomial(1); 57 h_polynomial = polynomial(2)-polynomial(1);
57 b = zeros(tot_order,1); 58 b = zeros(tot_order,1);
58 59
59 for i = 1:m_order 60 for i = 1:m_order
60 b(i,1) = x_0^(i-1); 61 b(i,1) = x_0^(i-1);
61 end
62
63 for i = 1:tot_order
64 for j = 1:m_order
65 M(j,i) = polynomial(i)^(j-1)*h_polynomial*quadrature_weights(i);
66 end
67 end
68
69 for i = 1:tot_order
70 for j = 1:s_order
71 S(j,i) = (-1)^(i-1)*polynomial(i)^(j-1);
72 end
73 end
74
75 A = [M;S];
76
77 d = A\b;
78 ret = x*0;
79 ret(index) = d/h*h_polynomial;
80 end 62 end
81 63
64 for i = 1:tot_order
65 for j = 1:m_order
66 M(j,i) = polynomial(i)^(j-1)*h_polynomial*quadrature_weights(i);
67 end
68 end
69
70 for i = 1:tot_order
71 for j = 1:s_order
72 S(j,i) = (-1)^(i-1)*polynomial(i)^(j-1);
73 end
74 end
75
76 A = [M;S];
77
78 d = A\b;
79 ret = x*0;
80 ret(index) = d/h*h_polynomial;
82 end 81 end
83 82
84 83
85 function I = sourceIndices(x_s, x, tot_order, h) 84 function I = sourceIndices(x_s, x, tot_order, h)
86 % Find the indices that are within range of of the point source location 85 % Find the indices that are within range of of the point source location