Mercurial > repos > public > sbplib
annotate +multiblock/Laplace.m @ 750:43e64f5b388e feature/grids
Add missing semicolon in multiblock.Laplace
author | Jonatan Werpers <jonatan@werpers.com> |
---|---|
date | Mon, 04 Jun 2018 17:48:19 +0200 |
parents | ec0a594bea9f |
children | e05465aa2e25 |
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(); |
ec0a594bea9f
Add a multiblock wrapper for laplace
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
24 obj.H = obj.mbDiffOp.H * obj.jacobian(); |
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 |
ec0a594bea9f
Add a multiblock wrapper for laplace
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
45 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
|
46 [closure, penalty] = boundary_condition(obj.mbDiffOp, boundary, type); |
748
ec0a594bea9f
Add a multiblock wrapper for laplace
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
47 end |
ec0a594bea9f
Add a multiblock wrapper for laplace
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
48 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
|
49 error('Not implemented') |
ec0a594bea9f
Add a multiblock wrapper for laplace
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
50 end |
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 end |