annotate +multiblock/Laplace.m @ 958:72cd29107a9a feature/poroelastic

Temporary changes in multiblock.DiffOp. Change traction operators in Elastic2dvariable to be true boundary operators. But adjoint FD conv test fails for dirichlet BC so need to debug!
author Martin Almquist <malmquist@stanford.edu>
date Wed, 05 Dec 2018 18:58:10 -0800
parents 23ad69a347dd
children
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();
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