annotate +multiblock/Laplace.m @ 774:66eb4a2bbb72 feature/grids

Remove default scaling of the system. The scaling doens't seem to help actual solutions. One example that fails in the flexural code. With large timesteps the solutions seems to blow up. One particular example is profilePresentation on the tdb_presentation_figures branch with k = 0.0005
author Jonatan Werpers <jonatan@werpers.com>
date Wed, 18 Jul 2018 15:42:52 -0700
parents e05465aa2e25
children 23ad69a347dd
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
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
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