Mercurial > repos > public > sbplib
annotate +multiblock/Laplace.m @ 1301:8978521b0f06 default
Fix incorrect package name.
author | Vidar Stiernström <vidar.stiernstrom@it.uu.se> |
---|---|
date | Wed, 08 Jul 2020 19:11:04 +0200 |
parents | 23ad69a347dd |
children |
rev | line source |
---|---|
748
ec0a594bea9f
Add a multiblock wrapper for laplace
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
1 classdef Laplace < scheme.Scheme |
ec0a594bea9f
Add a multiblock wrapper for laplace
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
2 properties |
ec0a594bea9f
Add a multiblock wrapper for laplace
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
3 grid |
ec0a594bea9f
Add a multiblock wrapper for laplace
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
4 order |
ec0a594bea9f
Add a multiblock wrapper for laplace
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
5 mbDiffOp |
ec0a594bea9f
Add a multiblock wrapper for laplace
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
6 |
ec0a594bea9f
Add a multiblock wrapper for laplace
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
7 D |
ec0a594bea9f
Add a multiblock wrapper for laplace
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
8 H |
ec0a594bea9f
Add a multiblock wrapper for laplace
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
9 J |
ec0a594bea9f
Add a multiblock wrapper for laplace
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
10 end |
ec0a594bea9f
Add a multiblock wrapper for laplace
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
11 methods |
ec0a594bea9f
Add a multiblock wrapper for laplace
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
12 function obj = Laplace(g, order, a, b, opGen) |
ec0a594bea9f
Add a multiblock wrapper for laplace
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
13 default_arg('order', 4); |
ec0a594bea9f
Add a multiblock wrapper for laplace
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
14 default_arg('a', 1); |
ec0a594bea9f
Add a multiblock wrapper for laplace
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
15 default_arg('b', 1); |
ec0a594bea9f
Add a multiblock wrapper for laplace
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
16 default_arg('opGen', @sbp.D4Variable); |
ec0a594bea9f
Add a multiblock wrapper for laplace
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
17 |
ec0a594bea9f
Add a multiblock wrapper for laplace
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
18 obj.grid = g; |
ec0a594bea9f
Add a multiblock wrapper for laplace
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
19 obj.order = order; |
ec0a594bea9f
Add a multiblock wrapper for laplace
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
20 obj.mbDiffOp = multiblock.DiffOp(@scheme.LaplaceCurvilinear, obj.grid, order, {a,b,opGen}); |
ec0a594bea9f
Add a multiblock wrapper for laplace
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
21 |
ec0a594bea9f
Add a multiblock wrapper for laplace
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
22 obj.D = obj.mbDiffOp.D; |
ec0a594bea9f
Add a multiblock wrapper for laplace
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
23 obj.J = obj.jacobian(); |
776
23ad69a347dd
Remove multiplication with jacobian where it shouldn't be
Jonatan Werpers <jonatan@werpers.com>
parents:
764
diff
changeset
|
24 obj.H = obj.mbDiffOp.H; |
748
ec0a594bea9f
Add a multiblock wrapper for laplace
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
25 end |
ec0a594bea9f
Add a multiblock wrapper for laplace
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
26 |
ec0a594bea9f
Add a multiblock wrapper for laplace
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
27 function s = size(obj) |
ec0a594bea9f
Add a multiblock wrapper for laplace
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
28 s = size(obj.mbDiffOp); |
ec0a594bea9f
Add a multiblock wrapper for laplace
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
29 end |
ec0a594bea9f
Add a multiblock wrapper for laplace
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
30 |
ec0a594bea9f
Add a multiblock wrapper for laplace
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
31 function J = jacobian(obj) |
ec0a594bea9f
Add a multiblock wrapper for laplace
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
32 N = obj.grid.nBlocks; |
ec0a594bea9f
Add a multiblock wrapper for laplace
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
33 J = cell(N,N); |
ec0a594bea9f
Add a multiblock wrapper for laplace
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
34 |
ec0a594bea9f
Add a multiblock wrapper for laplace
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
35 for i = 1:N |
ec0a594bea9f
Add a multiblock wrapper for laplace
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
36 J{i,i} = obj.mbDiffOp.diffOps{i}.J; |
ec0a594bea9f
Add a multiblock wrapper for laplace
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
37 end |
ec0a594bea9f
Add a multiblock wrapper for laplace
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
38 J = blockmatrix.toMatrix(J); |
ec0a594bea9f
Add a multiblock wrapper for laplace
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
39 end |
ec0a594bea9f
Add a multiblock wrapper for laplace
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
40 |
ec0a594bea9f
Add a multiblock wrapper for laplace
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
41 function op = getBoundaryOperator(obj, opName, boundary) |
ec0a594bea9f
Add a multiblock wrapper for laplace
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
42 op = getBoundaryOperator(obj.mbDiffOp, opName, boundary); |
ec0a594bea9f
Add a multiblock wrapper for laplace
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
43 end |
ec0a594bea9f
Add a multiblock wrapper for laplace
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
44 |
764
e05465aa2e25
Add methods for getting boundary quadratures from multiblock.DiffOP
Jonatan Werpers <jonatan@werpers.com>
parents:
750
diff
changeset
|
45 function op = getBoundaryQuadrature(obj, boundary) |
e05465aa2e25
Add methods for getting boundary quadratures from multiblock.DiffOP
Jonatan Werpers <jonatan@werpers.com>
parents:
750
diff
changeset
|
46 op = getBoundaryQuadrature(obj.mbDiffOp, boundary); |
e05465aa2e25
Add methods for getting boundary quadratures from multiblock.DiffOP
Jonatan Werpers <jonatan@werpers.com>
parents:
750
diff
changeset
|
47 end |
e05465aa2e25
Add methods for getting boundary quadratures from multiblock.DiffOP
Jonatan Werpers <jonatan@werpers.com>
parents:
750
diff
changeset
|
48 |
748
ec0a594bea9f
Add a multiblock wrapper for laplace
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
49 function [closure, penalty] = boundary_condition(obj,boundary,type) % TODO: Change name to boundaryCondition |
750
43e64f5b388e
Add missing semicolon in multiblock.Laplace
Jonatan Werpers <jonatan@werpers.com>
parents:
748
diff
changeset
|
50 [closure, penalty] = boundary_condition(obj.mbDiffOp, boundary, type); |
748
ec0a594bea9f
Add a multiblock wrapper for laplace
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
51 end |
ec0a594bea9f
Add a multiblock wrapper for laplace
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
52 function [closure, penalty] = interface(obj,boundary,neighbour_scheme,neighbour_boundary) |
ec0a594bea9f
Add a multiblock wrapper for laplace
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
53 error('Not implemented') |
ec0a594bea9f
Add a multiblock wrapper for laplace
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
54 end |
ec0a594bea9f
Add a multiblock wrapper for laplace
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
55 end |
ec0a594bea9f
Add a multiblock wrapper for laplace
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
56 end |