Mercurial > repos > public > sbplib_julia
annotate diffOp.jl @ 28:32a53cbee6c5
Resolved merge conflict adding plotting function to grid.jl
| author | Vidar Stiernström <vidar.stiernstrom@it.uu.se> |
|---|---|
| date | Thu, 10 Jan 2019 10:38:42 +0100 |
| parents | 10a5e7c77fb8 |
| children | f2842e08d813 |
| rev | line source |
|---|---|
|
2
43be32298ae2
Add function to get closure size
Jonatan Werpers <jonatan@werpers.com>
parents:
0
diff
changeset
|
1 abstract type DiffOp end |
|
43be32298ae2
Add function to get closure size
Jonatan Werpers <jonatan@werpers.com>
parents:
0
diff
changeset
|
2 |
|
6
cb8e50ca9e15
Add attempt att apply methods for Laplace
Jonatan Werpers <jonatan@werpers.com>
parents:
2
diff
changeset
|
3 function apply(D::DiffOp, v::AbstractVector) |
|
2
43be32298ae2
Add function to get closure size
Jonatan Werpers <jonatan@werpers.com>
parents:
0
diff
changeset
|
4 error("not implemented") |
|
43be32298ae2
Add function to get closure size
Jonatan Werpers <jonatan@werpers.com>
parents:
0
diff
changeset
|
5 end |
|
43be32298ae2
Add function to get closure size
Jonatan Werpers <jonatan@werpers.com>
parents:
0
diff
changeset
|
6 |
|
43be32298ae2
Add function to get closure size
Jonatan Werpers <jonatan@werpers.com>
parents:
0
diff
changeset
|
7 function innerProduct(D::DiffOp, u::AbstractVector, v::AbstractVector)::Real |
|
43be32298ae2
Add function to get closure size
Jonatan Werpers <jonatan@werpers.com>
parents:
0
diff
changeset
|
8 error("not implemented") |
|
43be32298ae2
Add function to get closure size
Jonatan Werpers <jonatan@werpers.com>
parents:
0
diff
changeset
|
9 end |
|
43be32298ae2
Add function to get closure size
Jonatan Werpers <jonatan@werpers.com>
parents:
0
diff
changeset
|
10 |
|
43be32298ae2
Add function to get closure size
Jonatan Werpers <jonatan@werpers.com>
parents:
0
diff
changeset
|
11 function matrixRepresentation(D::DiffOp) |
|
43be32298ae2
Add function to get closure size
Jonatan Werpers <jonatan@werpers.com>
parents:
0
diff
changeset
|
12 error("not implemented") |
|
43be32298ae2
Add function to get closure size
Jonatan Werpers <jonatan@werpers.com>
parents:
0
diff
changeset
|
13 end |
|
43be32298ae2
Add function to get closure size
Jonatan Werpers <jonatan@werpers.com>
parents:
0
diff
changeset
|
14 |
|
43be32298ae2
Add function to get closure size
Jonatan Werpers <jonatan@werpers.com>
parents:
0
diff
changeset
|
15 function boundaryCondition(D::DiffOp) |
|
43be32298ae2
Add function to get closure size
Jonatan Werpers <jonatan@werpers.com>
parents:
0
diff
changeset
|
16 error("not implemented") |
|
43be32298ae2
Add function to get closure size
Jonatan Werpers <jonatan@werpers.com>
parents:
0
diff
changeset
|
17 end |
|
43be32298ae2
Add function to get closure size
Jonatan Werpers <jonatan@werpers.com>
parents:
0
diff
changeset
|
18 |
|
17
10a5e7c77fb8
Fix reference to grid.BooundaryId
Jonatan Werpers <jonatan@werpers.com>
parents:
9
diff
changeset
|
19 function interface(Du::DiffOp, Dv::DiffOp, b::grid.BoundaryId; type) |
|
2
43be32298ae2
Add function to get closure size
Jonatan Werpers <jonatan@werpers.com>
parents:
0
diff
changeset
|
20 error("not implemented") |
|
43be32298ae2
Add function to get closure size
Jonatan Werpers <jonatan@werpers.com>
parents:
0
diff
changeset
|
21 end |
|
43be32298ae2
Add function to get closure size
Jonatan Werpers <jonatan@werpers.com>
parents:
0
diff
changeset
|
22 |
|
43be32298ae2
Add function to get closure size
Jonatan Werpers <jonatan@werpers.com>
parents:
0
diff
changeset
|
23 |
|
43be32298ae2
Add function to get closure size
Jonatan Werpers <jonatan@werpers.com>
parents:
0
diff
changeset
|
24 # Differential operator for a*d^2/dx^2 |
|
43be32298ae2
Add function to get closure size
Jonatan Werpers <jonatan@werpers.com>
parents:
0
diff
changeset
|
25 struct Laplace1D <: DiffOp |
|
43be32298ae2
Add function to get closure size
Jonatan Werpers <jonatan@werpers.com>
parents:
0
diff
changeset
|
26 grid |
|
43be32298ae2
Add function to get closure size
Jonatan Werpers <jonatan@werpers.com>
parents:
0
diff
changeset
|
27 a |
|
43be32298ae2
Add function to get closure size
Jonatan Werpers <jonatan@werpers.com>
parents:
0
diff
changeset
|
28 op |
|
43be32298ae2
Add function to get closure size
Jonatan Werpers <jonatan@werpers.com>
parents:
0
diff
changeset
|
29 end |
|
43be32298ae2
Add function to get closure size
Jonatan Werpers <jonatan@werpers.com>
parents:
0
diff
changeset
|
30 |
|
6
cb8e50ca9e15
Add attempt att apply methods for Laplace
Jonatan Werpers <jonatan@werpers.com>
parents:
2
diff
changeset
|
31 # u = L*v |
|
9
aafc4bdbe675
Add h in stencil application
Jonatan Werpers <jonatan@werpers.com>
parents:
8
diff
changeset
|
32 function apply(L::Laplace1D, u::AbstractVector, v::AbstractVector) |
|
6
cb8e50ca9e15
Add attempt att apply methods for Laplace
Jonatan Werpers <jonatan@werpers.com>
parents:
2
diff
changeset
|
33 N = closureSize(L.op) |
|
cb8e50ca9e15
Add attempt att apply methods for Laplace
Jonatan Werpers <jonatan@werpers.com>
parents:
2
diff
changeset
|
34 M = length(v) |
|
cb8e50ca9e15
Add attempt att apply methods for Laplace
Jonatan Werpers <jonatan@werpers.com>
parents:
2
diff
changeset
|
35 |
|
9
aafc4bdbe675
Add h in stencil application
Jonatan Werpers <jonatan@werpers.com>
parents:
8
diff
changeset
|
36 h = scaling(L.grid) |
|
aafc4bdbe675
Add h in stencil application
Jonatan Werpers <jonatan@werpers.com>
parents:
8
diff
changeset
|
37 |
|
6
cb8e50ca9e15
Add attempt att apply methods for Laplace
Jonatan Werpers <jonatan@werpers.com>
parents:
2
diff
changeset
|
38 for i ∈ 1:N |
|
9
aafc4bdbe675
Add h in stencil application
Jonatan Werpers <jonatan@werpers.com>
parents:
8
diff
changeset
|
39 u[i] = apply(L.op.closureStencils[i], v, i)/h^2 |
|
6
cb8e50ca9e15
Add attempt att apply methods for Laplace
Jonatan Werpers <jonatan@werpers.com>
parents:
2
diff
changeset
|
40 end |
|
2
43be32298ae2
Add function to get closure size
Jonatan Werpers <jonatan@werpers.com>
parents:
0
diff
changeset
|
41 |
|
6
cb8e50ca9e15
Add attempt att apply methods for Laplace
Jonatan Werpers <jonatan@werpers.com>
parents:
2
diff
changeset
|
42 for i ∈ N+1:M-N |
|
9
aafc4bdbe675
Add h in stencil application
Jonatan Werpers <jonatan@werpers.com>
parents:
8
diff
changeset
|
43 u[i] = apply(L.op.innerStencil, i)/h^2 |
|
6
cb8e50ca9e15
Add attempt att apply methods for Laplace
Jonatan Werpers <jonatan@werpers.com>
parents:
2
diff
changeset
|
44 end |
|
cb8e50ca9e15
Add attempt att apply methods for Laplace
Jonatan Werpers <jonatan@werpers.com>
parents:
2
diff
changeset
|
45 |
|
cb8e50ca9e15
Add attempt att apply methods for Laplace
Jonatan Werpers <jonatan@werpers.com>
parents:
2
diff
changeset
|
46 for i ∈ M:-1:M-N+1 |
|
9
aafc4bdbe675
Add h in stencil application
Jonatan Werpers <jonatan@werpers.com>
parents:
8
diff
changeset
|
47 u[i] = apply(flip(L.op.closureStencils[M-i+1]), v, i)/h^2 |
|
6
cb8e50ca9e15
Add attempt att apply methods for Laplace
Jonatan Werpers <jonatan@werpers.com>
parents:
2
diff
changeset
|
48 end |
|
9
aafc4bdbe675
Add h in stencil application
Jonatan Werpers <jonatan@werpers.com>
parents:
8
diff
changeset
|
49 |
|
aafc4bdbe675
Add h in stencil application
Jonatan Werpers <jonatan@werpers.com>
parents:
8
diff
changeset
|
50 return nothing |
|
2
43be32298ae2
Add function to get closure size
Jonatan Werpers <jonatan@werpers.com>
parents:
0
diff
changeset
|
51 end |
