annotate +scheme/Elastic2dStaggeredAnisotropic.m @ 1316:bd8e607768ce feature/poroelastic

Add interfaceForcing method in multiblock.DiffOp to facilitate mms forcing
author Martin Almquist <malmquist@stanford.edu>
date Sun, 26 Jul 2020 20:05:10 -0700
parents 546ee16760d5
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1264
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
1 classdef Elastic2dStaggeredAnisotropic < scheme.Scheme
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
2
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
3 % Discretizes the elastic wave equation:
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
4 % rho u_{i,tt} = dj C_{ijkl} dk u_j
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
5 % Uses a staggered Lebedev grid
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
6 % The solution (displacement) is stored on g_u
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
7 % Stresses (and hance tractions) appear on g_s
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
8 % Density is evaluated on g_u
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
9 % The stiffness tensor is evaluated on g_s
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
10
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
11 properties
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
12 m % Number of points in each direction, possibly a vector
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
13 h % Grid spacing
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
14
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
15 grid
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
16 dim
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
17 nGrids
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
18 N % Total number of unknowns stored (2 displacement components on 2 grids)
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
19
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
20 order % Order of accuracy for the approximation
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
21
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
22 % Diagonal matrices for variable coefficients
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
23 RHO % Density
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
24 C % Elastic stiffness tensor
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
25
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
26 D % Total operator
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
27
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
28 % Boundary operators in cell format, used for BC
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
29 % T_w, T_e, T_s, T_n
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
30
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
31 % Traction operators
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
32 tau_w, tau_e, tau_s, tau_n % Return scalar field
1265
6696b216b982 Start working on displacement bc, clean up traction.
Martin Almquist <malmquist@stanford.edu>
parents: 1264
diff changeset
33 T_w, T_e, T_s, T_n % Act on scalar, return scalar
1264
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
34
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
35 % Inner products
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
36 H, H_u, H_s
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
37 % , Hi, Hi_kron, H_1D
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
38
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
39 % Boundary inner products (for scalar field)
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
40 H_w_u, H_e_u, H_s_u, H_n_u
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
41 H_w_s, H_e_s, H_s_s, H_n_s
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
42
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
43 % Boundary restriction operators
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
44 e_w_u, e_e_u, e_s_u, e_n_u % Act on scalar field, return scalar field at boundary
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
45 e_w_s, e_e_s, e_s_s, e_n_s % Act on scalar field, return scalar field at boundary
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
46
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
47 % U{i}^T picks out component i
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
48 U
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
49
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
50 % G{i}^T picks out displacement grid i
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
51 G
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
52
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
53 % Borrowing constants of the form gamma*h, where gamma is a dimensionless constant.
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
54 h11 % First entry in norm matrix
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
55
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
56 end
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
57
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
58 methods
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
59
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
60 % The coefficients can either be function handles or grid functions
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
61 function obj = Elastic2dStaggeredAnisotropic(g, order, rho, C)
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
62 default_arg('rho', @(x,y) 0*x+1);
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
63 dim = 2;
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
64 nGrids = 2;
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
65
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
66 C_default = cell(dim,dim,dim,dim);
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
67 for i = 1:dim
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
68 for j = 1:dim
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
69 for k = 1:dim
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
70 for l = 1:dim
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
71 C_default{i,j,k,l} = @(x,y) 0*x + 1;
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
72 end
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
73 end
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
74 end
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
75 end
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
76 default_arg('C', C_default);
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
77 assert(isa(g, 'grid.Staggered'))
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
78
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
79 g_u = g.gridGroups{1};
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
80 g_s = g.gridGroups{2};
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
81
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
82 m_u = {g_u{1}.size(), g_u{2}.size()};
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
83 m_s = {g_s{1}.size(), g_s{2}.size()};
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
84
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
85 if isa(rho, 'function_handle')
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
86 rho_vec = cell(nGrids, 1);
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
87 for i = 1:nGrids
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
88 rho_vec{i} = grid.evalOn(g_u{i}, rho);
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
89 end
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
90 rho = rho_vec;
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
91 end
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
92 for i = 1:nGrids
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
93 RHO{i} = spdiag(rho{i});
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
94 end
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
95 obj.RHO = RHO;
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
96
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
97 C_mat = cell(nGrids, 1);
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
98 for a = 1:nGrids
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
99 C_mat{a} = cell(dim,dim,dim,dim);
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
100 end
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
101 for a = 1:nGrids
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
102 for i = 1:dim
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
103 for j = 1:dim
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
104 for k = 1:dim
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
105 for l = 1:dim
1279
546ee16760d5 Add interfaces in Elastic2dStaggeredAnisotropic
Martin Almquist <malmquist@stanford.edu>
parents: 1267
diff changeset
106 if numel(C) == nGrids
546ee16760d5 Add interfaces in Elastic2dStaggeredAnisotropic
Martin Almquist <malmquist@stanford.edu>
parents: 1267
diff changeset
107 C_mat{a}{i,j,k,l} = spdiag(C{a}{i,j,k,l});
546ee16760d5 Add interfaces in Elastic2dStaggeredAnisotropic
Martin Almquist <malmquist@stanford.edu>
parents: 1267
diff changeset
108 else
546ee16760d5 Add interfaces in Elastic2dStaggeredAnisotropic
Martin Almquist <malmquist@stanford.edu>
parents: 1267
diff changeset
109 C_mat{a}{i,j,k,l} = spdiag(grid.evalOn(g_s{a}, C{i,j,k,l}));
546ee16760d5 Add interfaces in Elastic2dStaggeredAnisotropic
Martin Almquist <malmquist@stanford.edu>
parents: 1267
diff changeset
110 end
1264
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
111 end
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
112 end
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
113 end
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
114 end
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
115 end
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
116 C = C_mat;
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
117 obj.C = C;
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
118
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
119 % Reference m for primal grid
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
120 m = g_u{1}.size();
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
121 X = g_u{1}.points;
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
122 lim = cell(dim, 1);
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
123 for i = 1:dim
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
124 lim{i} = {min(X(:,i)), max(X(:,i))};
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
125 end
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
126
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
127 % 1D operators
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
128 ops = cell(dim,1);
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
129 D1p = cell(dim, 1);
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
130 D1d = cell(dim, 1);
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
131 mp = cell(dim, 1);
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
132 md = cell(dim, 1);
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
133 Ip = cell(dim, 1);
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
134 Id = cell(dim, 1);
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
135 Hp = cell(dim, 1);
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
136 Hd = cell(dim, 1);
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
137
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
138 opSet = @sbp.D1StaggeredUpwind;
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
139 for i = 1:dim
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
140 ops{i} = opSet(m(i), lim{i}, order);
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
141 D1p{i} = ops{i}.D1_dual;
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
142 D1d{i} = ops{i}.D1_primal;
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
143 mp{i} = length(ops{i}.x_primal);
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
144 md{i} = length(ops{i}.x_dual);
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
145 Ip{i} = speye(mp{i}, mp{i});
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
146 Id{i} = speye(md{i}, md{i});
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
147 Hp{i} = ops{i}.H_primal;
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
148 Hd{i} = ops{i}.H_dual;
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
149 ep_l{i} = ops{i}.e_primal_l;
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
150 ep_r{i} = ops{i}.e_primal_r;
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
151 ed_l{i} = ops{i}.e_dual_l;
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
152 ed_r{i} = ops{i}.e_dual_r;
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
153 end
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
154
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
155 % Borrowing constants
1266
ad31d9c4cec2 Add displacement BC in StaggeredAnisotropic
Martin Almquist <malmquist@stanford.edu>
parents: 1265
diff changeset
156 % for i = 1:dim
ad31d9c4cec2 Add displacement BC in StaggeredAnisotropic
Martin Almquist <malmquist@stanford.edu>
parents: 1265
diff changeset
157 % obj.h11{i} = ops{i}.H_dual(1,1);
ad31d9c4cec2 Add displacement BC in StaggeredAnisotropic
Martin Almquist <malmquist@stanford.edu>
parents: 1265
diff changeset
158 % end
ad31d9c4cec2 Add displacement BC in StaggeredAnisotropic
Martin Almquist <malmquist@stanford.edu>
parents: 1265
diff changeset
159 obj.h11{1}{1} = ops{1}.H_dual(1,1);
ad31d9c4cec2 Add displacement BC in StaggeredAnisotropic
Martin Almquist <malmquist@stanford.edu>
parents: 1265
diff changeset
160 obj.h11{1}{2} = ops{2}.H_primal(1,1);
ad31d9c4cec2 Add displacement BC in StaggeredAnisotropic
Martin Almquist <malmquist@stanford.edu>
parents: 1265
diff changeset
161 obj.h11{2}{1} = ops{1}.H_primal(1,1);
ad31d9c4cec2 Add displacement BC in StaggeredAnisotropic
Martin Almquist <malmquist@stanford.edu>
parents: 1265
diff changeset
162 obj.h11{2}{2} = ops{2}.H_dual(1,1);
1264
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
163
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
164 %---- Grid layout -------
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
165 % gu1 = xp o yp;
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
166 % gu2 = xd o yd;
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
167 % gs1 = xd o yp;
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
168 % gs2 = xp o yd;
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
169 %------------------------
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
170
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
171 % Quadratures
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
172 obj.H_u = cell(nGrids, 1);
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
173 obj.H_s = cell(nGrids, 1);
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
174 obj.H_u{1} = kron(Hp{1}, Hp{2});
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
175 obj.H_u{2} = kron(Hd{1}, Hd{2});
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
176 obj.H_s{1} = kron(Hd{1}, Hp{2});
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
177 obj.H_s{2} = kron(Hp{1}, Hd{2});
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
178
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
179 obj.H_w_s = cell(nGrids, 1);
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
180 obj.H_e_s = cell(nGrids, 1);
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
181 obj.H_s_s = cell(nGrids, 1);
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
182 obj.H_n_s = cell(nGrids, 1);
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
183
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
184 obj.H_w_s{1} = Hp{2};
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
185 obj.H_w_s{2} = Hd{2};
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
186 obj.H_e_s{1} = Hp{2};
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
187 obj.H_e_s{2} = Hd{2};
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
188
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
189 obj.H_s_s{1} = Hd{1};
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
190 obj.H_s_s{2} = Hp{1};
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
191 obj.H_n_s{1} = Hd{1};
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
192 obj.H_n_s{2} = Hp{1};
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
193
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
194 % Boundary restriction ops
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
195 e_w_u = cell(nGrids, 1);
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
196 e_s_u = cell(nGrids, 1);
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
197 e_e_u = cell(nGrids, 1);
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
198 e_n_u = cell(nGrids, 1);
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
199
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
200 e_w_s = cell(nGrids, 1);
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
201 e_s_s = cell(nGrids, 1);
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
202 e_e_s = cell(nGrids, 1);
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
203 e_n_s = cell(nGrids, 1);
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
204
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
205 e_w_u{1} = kron(ep_l{1}, Ip{2});
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
206 e_e_u{1} = kron(ep_r{1}, Ip{2});
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
207 e_s_u{1} = kron(Ip{1}, ep_l{2});
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
208 e_n_u{1} = kron(Ip{1}, ep_r{2});
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
209
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
210 e_w_u{2} = kron(ed_l{1}, Id{2});
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
211 e_e_u{2} = kron(ed_r{1}, Id{2});
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
212 e_s_u{2} = kron(Id{1}, ed_l{2});
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
213 e_n_u{2} = kron(Id{1}, ed_r{2});
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
214
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
215 e_w_s{1} = kron(ed_l{1}, Ip{2});
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
216 e_e_s{1} = kron(ed_r{1}, Ip{2});
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
217 e_s_s{1} = kron(Id{1}, ep_l{2});
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
218 e_n_s{1} = kron(Id{1}, ep_r{2});
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
219
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
220 e_w_s{2} = kron(ep_l{1}, Id{2});
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
221 e_e_s{2} = kron(ep_r{1}, Id{2});
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
222 e_s_s{2} = kron(Ip{1}, ed_l{2});
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
223 e_n_s{2} = kron(Ip{1}, ed_r{2});
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
224
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
225 obj.e_w_u = e_w_u;
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
226 obj.e_e_u = e_e_u;
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
227 obj.e_s_u = e_s_u;
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
228 obj.e_n_u = e_n_u;
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
229
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
230 obj.e_w_s = e_w_s;
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
231 obj.e_e_s = e_e_s;
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
232 obj.e_s_s = e_s_s;
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
233 obj.e_n_s = e_n_s;
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
234
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
235
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
236 % D1_u2s{a, b}{i} approximates ddi and
1279
546ee16760d5 Add interfaces in Elastic2dStaggeredAnisotropic
Martin Almquist <malmquist@stanford.edu>
parents: 1267
diff changeset
237 % takes from u grid number b to s grid number a
1264
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
238 % Some of D1_x2y{a, b} are 0.
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
239 D1_u2s = cell(nGrids, nGrids);
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
240 D1_s2u = cell(nGrids, nGrids);
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
241
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
242 N_u = cell(nGrids, 1);
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
243 N_s = cell(nGrids, 1);
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
244 for a = 1:nGrids
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
245 N_u{a} = g_u{a}.N();
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
246 N_s{a} = g_s{a}.N();
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
247 end
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
248
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
249 %---- Grid layout -------
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
250 % gu1 = xp o yp;
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
251 % gu2 = xd o yd;
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
252 % gs1 = xd o yp;
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
253 % gs2 = xp o yd;
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
254 %------------------------
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
255
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
256 D1_u2s{1,1}{1} = kron(D1p{1}, Ip{2});
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
257 D1_s2u{1,1}{1} = kron(D1d{1}, Ip{2});
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
258
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
259 D1_u2s{1,2}{2} = kron(Id{1}, D1d{2});
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
260 D1_u2s{2,1}{2} = kron(Ip{1}, D1p{2});
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
261
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
262 D1_s2u{1,2}{2} = kron(Ip{1}, D1d{2});
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
263 D1_s2u{2,1}{2} = kron(Id{1}, D1p{2});
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
264
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
265 D1_u2s{2,2}{1} = kron(D1d{1}, Id{2});
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
266 D1_s2u{2,2}{1} = kron(D1p{1}, Id{2});
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
267
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
268 D1_u2s{1,1}{2} = sparse(N_s{1}, N_u{1});
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
269 D1_s2u{1,1}{2} = sparse(N_u{1}, N_s{1});
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
270
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
271 D1_u2s{2,2}{2} = sparse(N_s{2}, N_u{2});
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
272 D1_s2u{2,2}{2} = sparse(N_u{2}, N_s{2});
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
273
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
274 D1_u2s{1,2}{1} = sparse(N_s{1}, N_u{2});
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
275 D1_s2u{1,2}{1} = sparse(N_u{1}, N_s{2});
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
276
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
277 D1_u2s{2,1}{1} = sparse(N_s{2}, N_u{1});
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
278 D1_s2u{2,1}{1} = sparse(N_u{2}, N_s{1});
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
279
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
280
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
281 %---- Combine grids and components -----
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
282
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
283 % U{a}{i}^T picks out u component i on grid a
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
284 U = cell(nGrids, 1);
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
285 for a = 1:2
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
286 U{a} = cell(dim, 1);
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
287 I = speye(N_u{a}, N_u{a});
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
288 for i = 1:dim
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
289 E = sparse(dim,1);
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
290 E(i) = 1;
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
291 U{a}{i} = kron(I, E);
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
292 end
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
293 end
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
294 obj.U = U;
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
295
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
296 % Order grids
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
297 % u1, u2
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
298 Iu1 = speye(dim*N_u{1}, dim*N_u{1});
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
299 Iu2 = speye(dim*N_u{2}, dim*N_u{2});
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
300
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
301 Gu1 = cell2mat( {Iu1; sparse(dim*N_u{2}, dim*N_u{1})} );
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
302 Gu2 = cell2mat( {sparse(dim*N_u{1}, dim*N_u{2}); Iu2} );
1267
e61083f178be Add preallocation for D in StaggeredAnisotropic
Martin Almquist <malmquist@stanford.edu>
parents: 1266
diff changeset
303
1264
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
304 G = {Gu1; Gu2};
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
305 obj.G = G;
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
306
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
307 obj.H = G{1}*(U{1}{1}*obj.H_u{1}*U{1}{1}' + U{1}{2}*obj.H_u{1}*U{1}{2}')*G{1}'...
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
308 + G{2}*(U{2}{1}*obj.H_u{2}*U{2}{1}' + U{2}{2}*obj.H_u{2}*U{2}{2}')*G{2}';
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
309
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
310 % e1_w = (e_scalar_w'*E{1}')';
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
311 % e1_e = (e_scalar_e'*E{1}')';
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
312 % e1_s = (e_scalar_s'*E{1}')';
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
313 % e1_n = (e_scalar_n'*E{1}')';
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
314
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
315 % e2_w = (e_scalar_w'*E{2}')';
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
316 % e2_e = (e_scalar_e'*E{2}')';
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
317 % e2_s = (e_scalar_s'*E{2}')';
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
318 % e2_n = (e_scalar_n'*E{2}')';
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
319
1267
e61083f178be Add preallocation for D in StaggeredAnisotropic
Martin Almquist <malmquist@stanford.edu>
parents: 1266
diff changeset
320 stencilWidth = order;
1264
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
321 % Differentiation matrix D (without SAT)
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
322 N = dim*(N_u{1} + N_u{2});
1267
e61083f178be Add preallocation for D in StaggeredAnisotropic
Martin Almquist <malmquist@stanford.edu>
parents: 1266
diff changeset
323 D = spalloc(N, N, stencilWidth^2*N);
1264
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
324 for a = 1:nGrids
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
325 for b = 1:nGrids
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
326 for c = 1:nGrids
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
327 for i = 1:dim
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
328 for j = 1:dim
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
329 for k = 1:dim
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
330 for l = 1:dim
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
331 D = D + (G{a}*U{a}{j})*(RHO{a}\(D1_s2u{a,b}{i}*C{b}{i,j,k,l}*D1_u2s{b,c}{k}*U{c}{l}'*G{c}'));
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
332 end
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
333 end
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
334 end
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
335 end
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
336 end
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
337 end
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
338 end
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
339 obj.D = D;
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
340 clear D;
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
341 obj.N = N;
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
342 %=========================================%'
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
343
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
344 % Numerical traction operators for BC.
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
345 %
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
346 % Formula at boundary j: % tau^{j}_i = sum_l T^{j}_{il} u_l
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
347 %
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
348
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
349 n_w = obj.getNormal('w');
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
350 n_e = obj.getNormal('e');
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
351 n_s = obj.getNormal('s');
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
352 n_n = obj.getNormal('n');
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
353
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
354 tau_w = cell(nGrids, 1);
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
355 tau_e = cell(nGrids, 1);
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
356 tau_s = cell(nGrids, 1);
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
357 tau_n = cell(nGrids, 1);
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
358
1265
6696b216b982 Start working on displacement bc, clean up traction.
Martin Almquist <malmquist@stanford.edu>
parents: 1264
diff changeset
359 T_w = cell(nGrids, nGrids);
6696b216b982 Start working on displacement bc, clean up traction.
Martin Almquist <malmquist@stanford.edu>
parents: 1264
diff changeset
360 T_e = cell(nGrids, nGrids);
6696b216b982 Start working on displacement bc, clean up traction.
Martin Almquist <malmquist@stanford.edu>
parents: 1264
diff changeset
361 T_s = cell(nGrids, nGrids);
6696b216b982 Start working on displacement bc, clean up traction.
Martin Almquist <malmquist@stanford.edu>
parents: 1264
diff changeset
362 T_n = cell(nGrids, nGrids);
6696b216b982 Start working on displacement bc, clean up traction.
Martin Almquist <malmquist@stanford.edu>
parents: 1264
diff changeset
363 for b = 1:nGrids
6696b216b982 Start working on displacement bc, clean up traction.
Martin Almquist <malmquist@stanford.edu>
parents: 1264
diff changeset
364 [~, m_we] = size(e_w_s{b});
6696b216b982 Start working on displacement bc, clean up traction.
Martin Almquist <malmquist@stanford.edu>
parents: 1264
diff changeset
365 [~, m_sn] = size(e_s_s{b});
6696b216b982 Start working on displacement bc, clean up traction.
Martin Almquist <malmquist@stanford.edu>
parents: 1264
diff changeset
366 for c = 1:nGrids
6696b216b982 Start working on displacement bc, clean up traction.
Martin Almquist <malmquist@stanford.edu>
parents: 1264
diff changeset
367 T_w{b,c} = cell(dim, dim);
6696b216b982 Start working on displacement bc, clean up traction.
Martin Almquist <malmquist@stanford.edu>
parents: 1264
diff changeset
368 T_e{b,c} = cell(dim, dim);
6696b216b982 Start working on displacement bc, clean up traction.
Martin Almquist <malmquist@stanford.edu>
parents: 1264
diff changeset
369 T_s{b,c} = cell(dim, dim);
6696b216b982 Start working on displacement bc, clean up traction.
Martin Almquist <malmquist@stanford.edu>
parents: 1264
diff changeset
370 T_n{b,c} = cell(dim, dim);
6696b216b982 Start working on displacement bc, clean up traction.
Martin Almquist <malmquist@stanford.edu>
parents: 1264
diff changeset
371
6696b216b982 Start working on displacement bc, clean up traction.
Martin Almquist <malmquist@stanford.edu>
parents: 1264
diff changeset
372 for i = 1:dim
6696b216b982 Start working on displacement bc, clean up traction.
Martin Almquist <malmquist@stanford.edu>
parents: 1264
diff changeset
373 for j = 1:dim
1266
ad31d9c4cec2 Add displacement BC in StaggeredAnisotropic
Martin Almquist <malmquist@stanford.edu>
parents: 1265
diff changeset
374 T_w{b,c}{i,j} = sparse(N_u{c}, m_we);
ad31d9c4cec2 Add displacement BC in StaggeredAnisotropic
Martin Almquist <malmquist@stanford.edu>
parents: 1265
diff changeset
375 T_e{b,c}{i,j} = sparse(N_u{c}, m_we);
ad31d9c4cec2 Add displacement BC in StaggeredAnisotropic
Martin Almquist <malmquist@stanford.edu>
parents: 1265
diff changeset
376 T_s{b,c}{i,j} = sparse(N_u{c}, m_sn);
ad31d9c4cec2 Add displacement BC in StaggeredAnisotropic
Martin Almquist <malmquist@stanford.edu>
parents: 1265
diff changeset
377 T_n{b,c}{i,j} = sparse(N_u{c}, m_sn);
1265
6696b216b982 Start working on displacement bc, clean up traction.
Martin Almquist <malmquist@stanford.edu>
parents: 1264
diff changeset
378 end
6696b216b982 Start working on displacement bc, clean up traction.
Martin Almquist <malmquist@stanford.edu>
parents: 1264
diff changeset
379 end
6696b216b982 Start working on displacement bc, clean up traction.
Martin Almquist <malmquist@stanford.edu>
parents: 1264
diff changeset
380 end
6696b216b982 Start working on displacement bc, clean up traction.
Martin Almquist <malmquist@stanford.edu>
parents: 1264
diff changeset
381 end
6696b216b982 Start working on displacement bc, clean up traction.
Martin Almquist <malmquist@stanford.edu>
parents: 1264
diff changeset
382
1264
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
383 for b = 1:nGrids
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
384 tau_w{b} = cell(dim, 1);
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
385 tau_e{b} = cell(dim, 1);
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
386 tau_s{b} = cell(dim, 1);
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
387 tau_n{b} = cell(dim, 1);
1265
6696b216b982 Start working on displacement bc, clean up traction.
Martin Almquist <malmquist@stanford.edu>
parents: 1264
diff changeset
388
1264
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
389 for j = 1:dim
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
390 tau_w{b}{j} = sparse(N, m_s{b}(2));
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
391 tau_e{b}{j} = sparse(N, m_s{b}(2));
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
392 tau_s{b}{j} = sparse(N, m_s{b}(1));
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
393 tau_n{b}{j} = sparse(N, m_s{b}(1));
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
394 end
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
395
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
396 for c = 1:nGrids
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
397 for i = 1:dim
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
398 for j = 1:dim
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
399 for k = 1:dim
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
400 for l = 1:dim
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
401 sigma_b_ij = C{b}{i,j,k,l}*D1_u2s{b,c}{k}*U{c}{l}'*G{c}';
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
402
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
403 tau_w{b}{j} = tau_w{b}{j} + (e_w_s{b}'*n_w(i)*sigma_b_ij)';
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
404 tau_e{b}{j} = tau_e{b}{j} + (e_e_s{b}'*n_e(i)*sigma_b_ij)';
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
405 tau_s{b}{j} = tau_s{b}{j} + (e_s_s{b}'*n_s(i)*sigma_b_ij)';
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
406 tau_n{b}{j} = tau_n{b}{j} + (e_n_s{b}'*n_n(i)*sigma_b_ij)';
1265
6696b216b982 Start working on displacement bc, clean up traction.
Martin Almquist <malmquist@stanford.edu>
parents: 1264
diff changeset
407
6696b216b982 Start working on displacement bc, clean up traction.
Martin Almquist <malmquist@stanford.edu>
parents: 1264
diff changeset
408 S_bc_ijl = C{b}{i,j,k,l}*D1_u2s{b,c}{k};
6696b216b982 Start working on displacement bc, clean up traction.
Martin Almquist <malmquist@stanford.edu>
parents: 1264
diff changeset
409
1266
ad31d9c4cec2 Add displacement BC in StaggeredAnisotropic
Martin Almquist <malmquist@stanford.edu>
parents: 1265
diff changeset
410 T_w{b,c}{j,l} = T_w{b,c}{j,l} + (e_w_s{b}'*n_w(i)*S_bc_ijl)';
ad31d9c4cec2 Add displacement BC in StaggeredAnisotropic
Martin Almquist <malmquist@stanford.edu>
parents: 1265
diff changeset
411 T_e{b,c}{j,l} = T_e{b,c}{j,l} + (e_e_s{b}'*n_e(i)*S_bc_ijl)';
ad31d9c4cec2 Add displacement BC in StaggeredAnisotropic
Martin Almquist <malmquist@stanford.edu>
parents: 1265
diff changeset
412 T_s{b,c}{j,l} = T_s{b,c}{j,l} + (e_s_s{b}'*n_s(i)*S_bc_ijl)';
ad31d9c4cec2 Add displacement BC in StaggeredAnisotropic
Martin Almquist <malmquist@stanford.edu>
parents: 1265
diff changeset
413 T_n{b,c}{j,l} = T_n{b,c}{j,l} + (e_n_s{b}'*n_n(i)*S_bc_ijl)';
1264
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
414 end
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
415 end
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
416 end
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
417 end
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
418 end
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
419 end
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
420
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
421 obj.tau_w = tau_w;
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
422 obj.tau_e = tau_e;
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
423 obj.tau_s = tau_s;
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
424 obj.tau_n = tau_n;
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
425
1265
6696b216b982 Start working on displacement bc, clean up traction.
Martin Almquist <malmquist@stanford.edu>
parents: 1264
diff changeset
426 obj.T_w = T_w;
6696b216b982 Start working on displacement bc, clean up traction.
Martin Almquist <malmquist@stanford.edu>
parents: 1264
diff changeset
427 obj.T_e = T_e;
6696b216b982 Start working on displacement bc, clean up traction.
Martin Almquist <malmquist@stanford.edu>
parents: 1264
diff changeset
428 obj.T_s = T_s;
6696b216b982 Start working on displacement bc, clean up traction.
Martin Almquist <malmquist@stanford.edu>
parents: 1264
diff changeset
429 obj.T_n = T_n;
6696b216b982 Start working on displacement bc, clean up traction.
Martin Almquist <malmquist@stanford.edu>
parents: 1264
diff changeset
430
1264
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
431 % D1 = obj.D1;
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
432
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
433 % Traction tensors, T_ij
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
434 % obj.T_w = T_l{1};
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
435 % obj.T_e = T_r{1};
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
436 % obj.T_s = T_l{2};
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
437 % obj.T_n = T_r{2};
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
438
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
439 % Restriction operators
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
440 % obj.e_w = e_w;
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
441 % obj.e_e = e_e;
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
442 % obj.e_s = e_s;
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
443 % obj.e_n = e_n;
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
444
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
445 % obj.e1_w = e1_w;
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
446 % obj.e1_e = e1_e;
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
447 % obj.e1_s = e1_s;
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
448 % obj.e1_n = e1_n;
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
449
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
450 % obj.e2_w = e2_w;
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
451 % obj.e2_e = e2_e;
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
452 % obj.e2_s = e2_s;
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
453 % obj.e2_n = e2_n;
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
454
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
455 % obj.e_scalar_w = e_scalar_w;
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
456 % obj.e_scalar_e = e_scalar_e;
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
457 % obj.e_scalar_s = e_scalar_s;
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
458 % obj.e_scalar_n = e_scalar_n;
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
459
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
460 % % First component of traction
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
461 % obj.tau1_w = tau_l{1}{1};
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
462 % obj.tau1_e = tau_r{1}{1};
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
463 % obj.tau1_s = tau_l{2}{1};
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
464 % obj.tau1_n = tau_r{2}{1};
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
465
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
466 % % Second component of traction
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
467 % obj.tau2_w = tau_l{1}{2};
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
468 % obj.tau2_e = tau_r{1}{2};
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
469 % obj.tau2_s = tau_l{2}{2};
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
470 % obj.tau2_n = tau_r{2}{2};
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
471
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
472 % % Traction vectors
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
473 % obj.tau_w = (e_w'*e1_w*obj.tau1_w')' + (e_w'*e2_w*obj.tau2_w')';
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
474 % obj.tau_e = (e_e'*e1_e*obj.tau1_e')' + (e_e'*e2_e*obj.tau2_e')';
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
475 % obj.tau_s = (e_s'*e1_s*obj.tau1_s')' + (e_s'*e2_s*obj.tau2_s')';
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
476 % obj.tau_n = (e_n'*e1_n*obj.tau1_n')' + (e_n'*e2_n*obj.tau2_n')';
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
477
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
478 % Misc.
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
479 obj.m = m;
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
480 obj.h = [];
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
481 obj.order = order;
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
482 obj.grid = g;
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
483 obj.dim = dim;
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
484 obj.nGrids = nGrids;
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
485
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
486 end
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
487
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
488
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
489 % Closure functions return the operators applied to the own domain to close the boundary
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
490 % Penalty functions return the operators to force the solution. In the case of an interface it returns the operator applied to the other doamin.
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
491 % boundary is a string specifying the boundary e.g. 'l','r' or 'e','w','n','s'.
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
492 % bc is a cell array of component and bc type, e.g. {1, 'd'} for Dirichlet condition
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
493 % on the first component. Can also be e.g.
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
494 % {'normal', 'd'} or {'tangential', 't'} for conditions on
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
495 % tangential/normal component.
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
496 % data is a function returning the data that should be applied at the boundary.
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
497 % neighbour_scheme is an instance of Scheme that should be interfaced to.
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
498 % neighbour_boundary is a string specifying which boundary to interface to.
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
499
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
500 % For displacement bc:
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
501 % bc = {comp, 'd', dComps},
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
502 % where
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
503 % dComps = vector of components with displacement BC. Default: 1:dim.
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
504 % In this way, we can specify one BC at a time even though the SATs depend on all BC.
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
505 function [closure, penalty] = boundary_condition(obj, boundary, bc, tuning)
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
506 default_arg('tuning', 1.0);
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
507
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
508 assert( iscell(bc), 'The BC type must be a 2x1 or 3x1 cell array' );
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
509 comp = bc{1};
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
510 type = bc{2};
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
511 if ischar(comp)
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
512 comp = obj.getComponent(comp, boundary);
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
513 end
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
514
1265
6696b216b982 Start working on displacement bc, clean up traction.
Martin Almquist <malmquist@stanford.edu>
parents: 1264
diff changeset
515 e_u = obj.getBoundaryOperatorForScalarField('e_u', boundary);
6696b216b982 Start working on displacement bc, clean up traction.
Martin Almquist <malmquist@stanford.edu>
parents: 1264
diff changeset
516 e_s = obj.getBoundaryOperatorForScalarField('e_s', boundary);
1264
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
517 tau = obj.getBoundaryOperator('tau', boundary);
1265
6696b216b982 Start working on displacement bc, clean up traction.
Martin Almquist <malmquist@stanford.edu>
parents: 1264
diff changeset
518 T = obj.getBoundaryTractionOperator(boundary);
1264
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
519 H_gamma = obj.getBoundaryQuadratureForScalarField(boundary);
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
520 nu = obj.getNormal(boundary);
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
521
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
522 U = obj.U;
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
523 G = obj.G;
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
524 H = obj.H_u;
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
525 RHO = obj.RHO;
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
526 C = obj.C;
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
527
1265
6696b216b982 Start working on displacement bc, clean up traction.
Martin Almquist <malmquist@stanford.edu>
parents: 1264
diff changeset
528 %---- Grid layout -------
6696b216b982 Start working on displacement bc, clean up traction.
Martin Almquist <malmquist@stanford.edu>
parents: 1264
diff changeset
529 % gu1 = xp o yp;
6696b216b982 Start working on displacement bc, clean up traction.
Martin Almquist <malmquist@stanford.edu>
parents: 1264
diff changeset
530 % gu2 = xd o yd;
6696b216b982 Start working on displacement bc, clean up traction.
Martin Almquist <malmquist@stanford.edu>
parents: 1264
diff changeset
531 % gs1 = xd o yp;
6696b216b982 Start working on displacement bc, clean up traction.
Martin Almquist <malmquist@stanford.edu>
parents: 1264
diff changeset
532 % gs2 = xp o yd;
6696b216b982 Start working on displacement bc, clean up traction.
Martin Almquist <malmquist@stanford.edu>
parents: 1264
diff changeset
533 %------------------------
6696b216b982 Start working on displacement bc, clean up traction.
Martin Almquist <malmquist@stanford.edu>
parents: 1264
diff changeset
534
1264
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
535 switch boundary
1265
6696b216b982 Start working on displacement bc, clean up traction.
Martin Almquist <malmquist@stanford.edu>
parents: 1264
diff changeset
536 case {'w', 'e'}
6696b216b982 Start working on displacement bc, clean up traction.
Martin Almquist <malmquist@stanford.edu>
parents: 1264
diff changeset
537 gridCombos = {{1,1}, {2,2}};
6696b216b982 Start working on displacement bc, clean up traction.
Martin Almquist <malmquist@stanford.edu>
parents: 1264
diff changeset
538 case {'s', 'n'}
6696b216b982 Start working on displacement bc, clean up traction.
Martin Almquist <malmquist@stanford.edu>
parents: 1264
diff changeset
539 gridCombos = {{2,1}, {1,2}};
1264
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
540 end
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
541
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
542 dim = obj.dim;
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
543 nGrids = obj.nGrids;
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
544
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
545 m_tot = obj.N;
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
546
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
547 % Preallocate
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
548 [~, col] = size(tau{1}{1});
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
549 closure = sparse(m_tot, m_tot);
1279
546ee16760d5 Add interfaces in Elastic2dStaggeredAnisotropic
Martin Almquist <malmquist@stanford.edu>
parents: 1267
diff changeset
550 penalty = cell(1, nGrids);
1266
ad31d9c4cec2 Add displacement BC in StaggeredAnisotropic
Martin Almquist <malmquist@stanford.edu>
parents: 1265
diff changeset
551 for a = 1:nGrids
ad31d9c4cec2 Add displacement BC in StaggeredAnisotropic
Martin Almquist <malmquist@stanford.edu>
parents: 1265
diff changeset
552 [~, col] = size(e_u{a});
ad31d9c4cec2 Add displacement BC in StaggeredAnisotropic
Martin Almquist <malmquist@stanford.edu>
parents: 1265
diff changeset
553 penalty{a} = sparse(m_tot, col);
ad31d9c4cec2 Add displacement BC in StaggeredAnisotropic
Martin Almquist <malmquist@stanford.edu>
parents: 1265
diff changeset
554 end
1264
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
555
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
556 j = comp;
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
557 switch type
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
558
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
559 % Dirichlet boundary condition
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
560 case {'D','d','dirichlet','Dirichlet','displacement','Displacement'}
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
561
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
562 if numel(bc) >= 3
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
563 dComps = bc{3};
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
564 else
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
565 dComps = 1:dim;
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
566 end
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
567
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
568 % Loops over components that Dirichlet penalties end up on
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
569 % Y: symmetrizing part of penalty
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
570 % Z: symmetric part of penalty
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
571 % X = Y + Z.
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
572
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
573 % Nonsymmetric part goes on all components to
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
574 % yield traction in discrete energy rate
1266
ad31d9c4cec2 Add displacement BC in StaggeredAnisotropic
Martin Almquist <malmquist@stanford.edu>
parents: 1265
diff changeset
575 for c = 1:nGrids
ad31d9c4cec2 Add displacement BC in StaggeredAnisotropic
Martin Almquist <malmquist@stanford.edu>
parents: 1265
diff changeset
576 for m = 1:numel(gridCombos)
ad31d9c4cec2 Add displacement BC in StaggeredAnisotropic
Martin Almquist <malmquist@stanford.edu>
parents: 1265
diff changeset
577 gc = gridCombos{m};
ad31d9c4cec2 Add displacement BC in StaggeredAnisotropic
Martin Almquist <malmquist@stanford.edu>
parents: 1265
diff changeset
578 a = gc{1};
ad31d9c4cec2 Add displacement BC in StaggeredAnisotropic
Martin Almquist <malmquist@stanford.edu>
parents: 1265
diff changeset
579 b = gc{2};
ad31d9c4cec2 Add displacement BC in StaggeredAnisotropic
Martin Almquist <malmquist@stanford.edu>
parents: 1265
diff changeset
580
1265
6696b216b982 Start working on displacement bc, clean up traction.
Martin Almquist <malmquist@stanford.edu>
parents: 1264
diff changeset
581 for i = 1:dim
1266
ad31d9c4cec2 Add displacement BC in StaggeredAnisotropic
Martin Almquist <malmquist@stanford.edu>
parents: 1265
diff changeset
582 Y = T{a,c}{j,i}';
ad31d9c4cec2 Add displacement BC in StaggeredAnisotropic
Martin Almquist <malmquist@stanford.edu>
parents: 1265
diff changeset
583 closure = closure + G{c}*U{c}{i}*((RHO{c}*H{c})\(Y'*H_gamma{a}*(e_u{b}'*U{b}{j}'*G{b}') ));
ad31d9c4cec2 Add displacement BC in StaggeredAnisotropic
Martin Almquist <malmquist@stanford.edu>
parents: 1265
diff changeset
584 penalty{b} = penalty{b} - G{c}*U{c}{i}*((RHO{c}*H{c})\(Y'*H_gamma{a}) );
1265
6696b216b982 Start working on displacement bc, clean up traction.
Martin Almquist <malmquist@stanford.edu>
parents: 1264
diff changeset
585 end
6696b216b982 Start working on displacement bc, clean up traction.
Martin Almquist <malmquist@stanford.edu>
parents: 1264
diff changeset
586 end
1264
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
587 end
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
588
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
589 % Symmetric part only required on components with displacement BC.
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
590 % (Otherwise it's not symmetric.)
1266
ad31d9c4cec2 Add displacement BC in StaggeredAnisotropic
Martin Almquist <malmquist@stanford.edu>
parents: 1265
diff changeset
591 for m = 1:numel(gridCombos)
ad31d9c4cec2 Add displacement BC in StaggeredAnisotropic
Martin Almquist <malmquist@stanford.edu>
parents: 1265
diff changeset
592 gc = gridCombos{m};
ad31d9c4cec2 Add displacement BC in StaggeredAnisotropic
Martin Almquist <malmquist@stanford.edu>
parents: 1265
diff changeset
593 a = gc{1};
ad31d9c4cec2 Add displacement BC in StaggeredAnisotropic
Martin Almquist <malmquist@stanford.edu>
parents: 1265
diff changeset
594 b = gc{2};
ad31d9c4cec2 Add displacement BC in StaggeredAnisotropic
Martin Almquist <malmquist@stanford.edu>
parents: 1265
diff changeset
595
ad31d9c4cec2 Add displacement BC in StaggeredAnisotropic
Martin Almquist <malmquist@stanford.edu>
parents: 1265
diff changeset
596 h11 = obj.getBorrowing(b, boundary);
ad31d9c4cec2 Add displacement BC in StaggeredAnisotropic
Martin Almquist <malmquist@stanford.edu>
parents: 1265
diff changeset
597
ad31d9c4cec2 Add displacement BC in StaggeredAnisotropic
Martin Almquist <malmquist@stanford.edu>
parents: 1265
diff changeset
598 for i = dComps
ad31d9c4cec2 Add displacement BC in StaggeredAnisotropic
Martin Almquist <malmquist@stanford.edu>
parents: 1265
diff changeset
599 Z = 0*C{b}{1,1,1,1};
ad31d9c4cec2 Add displacement BC in StaggeredAnisotropic
Martin Almquist <malmquist@stanford.edu>
parents: 1265
diff changeset
600 for l = 1:dim
ad31d9c4cec2 Add displacement BC in StaggeredAnisotropic
Martin Almquist <malmquist@stanford.edu>
parents: 1265
diff changeset
601 for k = 1:dim
ad31d9c4cec2 Add displacement BC in StaggeredAnisotropic
Martin Almquist <malmquist@stanford.edu>
parents: 1265
diff changeset
602 Z = Z + nu(l)*C{b}{l,i,k,j}*nu(k);
ad31d9c4cec2 Add displacement BC in StaggeredAnisotropic
Martin Almquist <malmquist@stanford.edu>
parents: 1265
diff changeset
603 end
1264
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
604 end
1266
ad31d9c4cec2 Add displacement BC in StaggeredAnisotropic
Martin Almquist <malmquist@stanford.edu>
parents: 1265
diff changeset
605 Z = -tuning*dim/h11*Z;
ad31d9c4cec2 Add displacement BC in StaggeredAnisotropic
Martin Almquist <malmquist@stanford.edu>
parents: 1265
diff changeset
606 X = e_s{b}'*Z*e_s{b};
ad31d9c4cec2 Add displacement BC in StaggeredAnisotropic
Martin Almquist <malmquist@stanford.edu>
parents: 1265
diff changeset
607 closure = closure + G{a}*U{a}{i}*((RHO{a}*H{a})\(e_u{a}*X'*H_gamma{b}*(e_u{a}'*U{a}{j}'*G{a}' ) ));
ad31d9c4cec2 Add displacement BC in StaggeredAnisotropic
Martin Almquist <malmquist@stanford.edu>
parents: 1265
diff changeset
608 penalty{a} = penalty{a} - G{a}*U{a}{i}*((RHO{a}*H{a})\(e_u{a}*X'*H_gamma{b} ));
1264
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
609 end
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
610 end
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
611
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
612 % Free boundary condition
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
613 case {'F','f','Free','free','traction','Traction','t','T'}
1265
6696b216b982 Start working on displacement bc, clean up traction.
Martin Almquist <malmquist@stanford.edu>
parents: 1264
diff changeset
614 for m = 1:numel(gridCombos)
6696b216b982 Start working on displacement bc, clean up traction.
Martin Almquist <malmquist@stanford.edu>
parents: 1264
diff changeset
615 gc = gridCombos{m};
6696b216b982 Start working on displacement bc, clean up traction.
Martin Almquist <malmquist@stanford.edu>
parents: 1264
diff changeset
616 a = gc{1};
6696b216b982 Start working on displacement bc, clean up traction.
Martin Almquist <malmquist@stanford.edu>
parents: 1264
diff changeset
617 b = gc{2};
6696b216b982 Start working on displacement bc, clean up traction.
Martin Almquist <malmquist@stanford.edu>
parents: 1264
diff changeset
618 closure = closure - G{a}*U{a}{j}*(RHO{a}\(H{a}\(e_u{a}*H_gamma{b}*tau{b}{j}')));
6696b216b982 Start working on displacement bc, clean up traction.
Martin Almquist <malmquist@stanford.edu>
parents: 1264
diff changeset
619 penalty{b} = G{a}*U{a}{j}*(RHO{a}\(H{a}\(e_u{a}*H_gamma{b})));
1264
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
620 end
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
621
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
622 % Unknown boundary condition
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
623 otherwise
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
624 error('No such boundary condition: type = %s',type);
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
625 end
1279
546ee16760d5 Add interfaces in Elastic2dStaggeredAnisotropic
Martin Almquist <malmquist@stanford.edu>
parents: 1267
diff changeset
626
546ee16760d5 Add interfaces in Elastic2dStaggeredAnisotropic
Martin Almquist <malmquist@stanford.edu>
parents: 1267
diff changeset
627 penalty = cell2mat(penalty);
1264
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
628 end
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
629
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
630 % type Struct that specifies the interface coupling.
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
631 % Fields:
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
632 % -- tuning: penalty strength, defaults to 1.0
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
633 % -- interpolation: type of interpolation, default 'none'
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
634 function [closure, penalty] = interface(obj,boundary,neighbour_scheme,neighbour_boundary,type)
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
635
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
636 defaultType.tuning = 1.0;
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
637 defaultType.interpolation = 'none';
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
638 default_struct('type', defaultType);
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
639
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
640 switch type.interpolation
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
641 case {'none', ''}
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
642 [closure, penalty] = interfaceStandard(obj,boundary,neighbour_scheme,neighbour_boundary,type);
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
643 case {'op','OP'}
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
644 [closure, penalty] = interfaceNonConforming(obj,boundary,neighbour_scheme,neighbour_boundary,type);
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
645 otherwise
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
646 error('Unknown type of interpolation: %s ', type.interpolation);
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
647 end
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
648 end
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
649
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
650 function [closure, penalty] = interfaceStandard(obj,boundary,neighbour_scheme,neighbour_boundary,type)
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
651 tuning = type.tuning;
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
652
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
653 % u denotes the solution in the own domain
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
654 % v denotes the solution in the neighbour domain
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
655
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
656 u = obj;
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
657 v = neighbour_scheme;
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
658
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
659 % Operators, u side
1279
546ee16760d5 Add interfaces in Elastic2dStaggeredAnisotropic
Martin Almquist <malmquist@stanford.edu>
parents: 1267
diff changeset
660 eu_u = u.getBoundaryOperatorForScalarField('e_u', boundary);
546ee16760d5 Add interfaces in Elastic2dStaggeredAnisotropic
Martin Almquist <malmquist@stanford.edu>
parents: 1267
diff changeset
661 es_u = u.getBoundaryOperatorForScalarField('e_s', boundary);
1264
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
662 tau_u = u.getBoundaryOperator('tau', boundary);
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
663 nu_u = u.getNormal(boundary);
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
664
1279
546ee16760d5 Add interfaces in Elastic2dStaggeredAnisotropic
Martin Almquist <malmquist@stanford.edu>
parents: 1267
diff changeset
665 G_u = u.G;
546ee16760d5 Add interfaces in Elastic2dStaggeredAnisotropic
Martin Almquist <malmquist@stanford.edu>
parents: 1267
diff changeset
666 U_u = u.U;
1264
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
667 C_u = u.C;
1279
546ee16760d5 Add interfaces in Elastic2dStaggeredAnisotropic
Martin Almquist <malmquist@stanford.edu>
parents: 1267
diff changeset
668 m_tot_u = u.N;
1264
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
669
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
670 % Operators, v side
1279
546ee16760d5 Add interfaces in Elastic2dStaggeredAnisotropic
Martin Almquist <malmquist@stanford.edu>
parents: 1267
diff changeset
671 eu_v = v.getBoundaryOperatorForScalarField('e_u', neighbour_boundary);
546ee16760d5 Add interfaces in Elastic2dStaggeredAnisotropic
Martin Almquist <malmquist@stanford.edu>
parents: 1267
diff changeset
672 es_v = v.getBoundaryOperatorForScalarField('e_s', neighbour_boundary);
1264
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
673 tau_v = v.getBoundaryOperator('tau', neighbour_boundary);
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
674 nu_v = v.getNormal(neighbour_boundary);
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
675
1279
546ee16760d5 Add interfaces in Elastic2dStaggeredAnisotropic
Martin Almquist <malmquist@stanford.edu>
parents: 1267
diff changeset
676 G_v = v.G;
546ee16760d5 Add interfaces in Elastic2dStaggeredAnisotropic
Martin Almquist <malmquist@stanford.edu>
parents: 1267
diff changeset
677 U_v = v.U;
1264
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
678 C_v = v.C;
1279
546ee16760d5 Add interfaces in Elastic2dStaggeredAnisotropic
Martin Almquist <malmquist@stanford.edu>
parents: 1267
diff changeset
679 m_tot_v = v.N;
1264
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
680
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
681 % Operators that are only required for own domain
1279
546ee16760d5 Add interfaces in Elastic2dStaggeredAnisotropic
Martin Almquist <malmquist@stanford.edu>
parents: 1267
diff changeset
682 % Hi = u.Hi_kron;
546ee16760d5 Add interfaces in Elastic2dStaggeredAnisotropic
Martin Almquist <malmquist@stanford.edu>
parents: 1267
diff changeset
683 % RHOi = u.RHOi_kron;
546ee16760d5 Add interfaces in Elastic2dStaggeredAnisotropic
Martin Almquist <malmquist@stanford.edu>
parents: 1267
diff changeset
684 % e_kron = u.getBoundaryOperator('e', boundary);
546ee16760d5 Add interfaces in Elastic2dStaggeredAnisotropic
Martin Almquist <malmquist@stanford.edu>
parents: 1267
diff changeset
685 H = u.H_u;
546ee16760d5 Add interfaces in Elastic2dStaggeredAnisotropic
Martin Almquist <malmquist@stanford.edu>
parents: 1267
diff changeset
686 RHO = u.RHO;
1264
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
687 T_u = u.getBoundaryTractionOperator(boundary);
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
688
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
689 % Shared operators
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
690 H_gamma = u.getBoundaryQuadratureForScalarField(boundary);
1279
546ee16760d5 Add interfaces in Elastic2dStaggeredAnisotropic
Martin Almquist <malmquist@stanford.edu>
parents: 1267
diff changeset
691 % H_gamma_kron = u.getBoundaryQuadrature(boundary);
1264
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
692 dim = u.dim;
1279
546ee16760d5 Add interfaces in Elastic2dStaggeredAnisotropic
Martin Almquist <malmquist@stanford.edu>
parents: 1267
diff changeset
693 nGrids = obj.nGrids;
1264
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
694
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
695 % Preallocate
1279
546ee16760d5 Add interfaces in Elastic2dStaggeredAnisotropic
Martin Almquist <malmquist@stanford.edu>
parents: 1267
diff changeset
696 % [~, m_int] = size(H_gamma);
546ee16760d5 Add interfaces in Elastic2dStaggeredAnisotropic
Martin Almquist <malmquist@stanford.edu>
parents: 1267
diff changeset
697 closure = sparse(m_tot_u, m_tot_u);
546ee16760d5 Add interfaces in Elastic2dStaggeredAnisotropic
Martin Almquist <malmquist@stanford.edu>
parents: 1267
diff changeset
698 penalty = sparse(m_tot_u, m_tot_v);
1264
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
699
1279
546ee16760d5 Add interfaces in Elastic2dStaggeredAnisotropic
Martin Almquist <malmquist@stanford.edu>
parents: 1267
diff changeset
700 %---- Grid layout -------
546ee16760d5 Add interfaces in Elastic2dStaggeredAnisotropic
Martin Almquist <malmquist@stanford.edu>
parents: 1267
diff changeset
701 % gu1 = xp o yp;
546ee16760d5 Add interfaces in Elastic2dStaggeredAnisotropic
Martin Almquist <malmquist@stanford.edu>
parents: 1267
diff changeset
702 % gu2 = xd o yd;
546ee16760d5 Add interfaces in Elastic2dStaggeredAnisotropic
Martin Almquist <malmquist@stanford.edu>
parents: 1267
diff changeset
703 % gs1 = xd o yp;
546ee16760d5 Add interfaces in Elastic2dStaggeredAnisotropic
Martin Almquist <malmquist@stanford.edu>
parents: 1267
diff changeset
704 % gs2 = xp o yd;
546ee16760d5 Add interfaces in Elastic2dStaggeredAnisotropic
Martin Almquist <malmquist@stanford.edu>
parents: 1267
diff changeset
705 %------------------------
1264
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
706
1279
546ee16760d5 Add interfaces in Elastic2dStaggeredAnisotropic
Martin Almquist <malmquist@stanford.edu>
parents: 1267
diff changeset
707 switch boundary
546ee16760d5 Add interfaces in Elastic2dStaggeredAnisotropic
Martin Almquist <malmquist@stanford.edu>
parents: 1267
diff changeset
708 case {'w', 'e'}
546ee16760d5 Add interfaces in Elastic2dStaggeredAnisotropic
Martin Almquist <malmquist@stanford.edu>
parents: 1267
diff changeset
709 switch neighbour_boundary
546ee16760d5 Add interfaces in Elastic2dStaggeredAnisotropic
Martin Almquist <malmquist@stanford.edu>
parents: 1267
diff changeset
710 case {'w', 'e'}
546ee16760d5 Add interfaces in Elastic2dStaggeredAnisotropic
Martin Almquist <malmquist@stanford.edu>
parents: 1267
diff changeset
711 gridCombos = {{1,1,1}, {2,2,2}};
546ee16760d5 Add interfaces in Elastic2dStaggeredAnisotropic
Martin Almquist <malmquist@stanford.edu>
parents: 1267
diff changeset
712 case {'s', 'n'}
546ee16760d5 Add interfaces in Elastic2dStaggeredAnisotropic
Martin Almquist <malmquist@stanford.edu>
parents: 1267
diff changeset
713 gridCombos = {{1,1,2}, {2,2,1}};
546ee16760d5 Add interfaces in Elastic2dStaggeredAnisotropic
Martin Almquist <malmquist@stanford.edu>
parents: 1267
diff changeset
714 end
546ee16760d5 Add interfaces in Elastic2dStaggeredAnisotropic
Martin Almquist <malmquist@stanford.edu>
parents: 1267
diff changeset
715 case {'s', 'n'}
546ee16760d5 Add interfaces in Elastic2dStaggeredAnisotropic
Martin Almquist <malmquist@stanford.edu>
parents: 1267
diff changeset
716 switch neighbour_boundary
546ee16760d5 Add interfaces in Elastic2dStaggeredAnisotropic
Martin Almquist <malmquist@stanford.edu>
parents: 1267
diff changeset
717 case {'s', 'n'}
546ee16760d5 Add interfaces in Elastic2dStaggeredAnisotropic
Martin Almquist <malmquist@stanford.edu>
parents: 1267
diff changeset
718 gridCombos = {{2,1,1}, {1,2,2}};
546ee16760d5 Add interfaces in Elastic2dStaggeredAnisotropic
Martin Almquist <malmquist@stanford.edu>
parents: 1267
diff changeset
719 case {'w', 'e'}
546ee16760d5 Add interfaces in Elastic2dStaggeredAnisotropic
Martin Almquist <malmquist@stanford.edu>
parents: 1267
diff changeset
720 gridCombos = {{2,1,2}, {1,2,1}};
546ee16760d5 Add interfaces in Elastic2dStaggeredAnisotropic
Martin Almquist <malmquist@stanford.edu>
parents: 1267
diff changeset
721 end
546ee16760d5 Add interfaces in Elastic2dStaggeredAnisotropic
Martin Almquist <malmquist@stanford.edu>
parents: 1267
diff changeset
722 end
1264
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
723
1279
546ee16760d5 Add interfaces in Elastic2dStaggeredAnisotropic
Martin Almquist <malmquist@stanford.edu>
parents: 1267
diff changeset
724 % Symmetrizing part
546ee16760d5 Add interfaces in Elastic2dStaggeredAnisotropic
Martin Almquist <malmquist@stanford.edu>
parents: 1267
diff changeset
725 for c = 1:nGrids
546ee16760d5 Add interfaces in Elastic2dStaggeredAnisotropic
Martin Almquist <malmquist@stanford.edu>
parents: 1267
diff changeset
726 for m = 1:numel(gridCombos)
546ee16760d5 Add interfaces in Elastic2dStaggeredAnisotropic
Martin Almquist <malmquist@stanford.edu>
parents: 1267
diff changeset
727 gc = gridCombos{m};
546ee16760d5 Add interfaces in Elastic2dStaggeredAnisotropic
Martin Almquist <malmquist@stanford.edu>
parents: 1267
diff changeset
728 a = gc{1};
546ee16760d5 Add interfaces in Elastic2dStaggeredAnisotropic
Martin Almquist <malmquist@stanford.edu>
parents: 1267
diff changeset
729 b = gc{2};
546ee16760d5 Add interfaces in Elastic2dStaggeredAnisotropic
Martin Almquist <malmquist@stanford.edu>
parents: 1267
diff changeset
730
546ee16760d5 Add interfaces in Elastic2dStaggeredAnisotropic
Martin Almquist <malmquist@stanford.edu>
parents: 1267
diff changeset
731 for i = 1:dim
546ee16760d5 Add interfaces in Elastic2dStaggeredAnisotropic
Martin Almquist <malmquist@stanford.edu>
parents: 1267
diff changeset
732 for j = 1:dim
546ee16760d5 Add interfaces in Elastic2dStaggeredAnisotropic
Martin Almquist <malmquist@stanford.edu>
parents: 1267
diff changeset
733 Y = 1/2*T_u{a,c}{j,i}';
546ee16760d5 Add interfaces in Elastic2dStaggeredAnisotropic
Martin Almquist <malmquist@stanford.edu>
parents: 1267
diff changeset
734 closure = closure + G_u{c}*U_u{c}{i}*((RHO{c}*H{c})\(Y'*H_gamma{a}*(eu_u{b}'*U_u{b}{j}'*G_u{b}') ));
546ee16760d5 Add interfaces in Elastic2dStaggeredAnisotropic
Martin Almquist <malmquist@stanford.edu>
parents: 1267
diff changeset
735 penalty = penalty - G_u{c}*U_u{c}{i}*((RHO{c}*H{c})\(Y'*H_gamma{a}*(eu_v{b}'*U_v{b}{j}'*G_v{b}') ));
1264
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
736 end
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
737 end
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
738 end
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
739 end
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
740
1279
546ee16760d5 Add interfaces in Elastic2dStaggeredAnisotropic
Martin Almquist <malmquist@stanford.edu>
parents: 1267
diff changeset
741 % Symmetric part
546ee16760d5 Add interfaces in Elastic2dStaggeredAnisotropic
Martin Almquist <malmquist@stanford.edu>
parents: 1267
diff changeset
742 for m = 1:numel(gridCombos)
546ee16760d5 Add interfaces in Elastic2dStaggeredAnisotropic
Martin Almquist <malmquist@stanford.edu>
parents: 1267
diff changeset
743 gc = gridCombos{m};
546ee16760d5 Add interfaces in Elastic2dStaggeredAnisotropic
Martin Almquist <malmquist@stanford.edu>
parents: 1267
diff changeset
744 a = gc{1};
546ee16760d5 Add interfaces in Elastic2dStaggeredAnisotropic
Martin Almquist <malmquist@stanford.edu>
parents: 1267
diff changeset
745 b = gc{2};
546ee16760d5 Add interfaces in Elastic2dStaggeredAnisotropic
Martin Almquist <malmquist@stanford.edu>
parents: 1267
diff changeset
746 bv = gc{3};
546ee16760d5 Add interfaces in Elastic2dStaggeredAnisotropic
Martin Almquist <malmquist@stanford.edu>
parents: 1267
diff changeset
747
546ee16760d5 Add interfaces in Elastic2dStaggeredAnisotropic
Martin Almquist <malmquist@stanford.edu>
parents: 1267
diff changeset
748 h11_u = u.getBorrowing(b, boundary);
546ee16760d5 Add interfaces in Elastic2dStaggeredAnisotropic
Martin Almquist <malmquist@stanford.edu>
parents: 1267
diff changeset
749 h11_v = v.getBorrowing(bv, neighbour_boundary);
1264
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
750
1279
546ee16760d5 Add interfaces in Elastic2dStaggeredAnisotropic
Martin Almquist <malmquist@stanford.edu>
parents: 1267
diff changeset
751 for i = 1:dim
546ee16760d5 Add interfaces in Elastic2dStaggeredAnisotropic
Martin Almquist <malmquist@stanford.edu>
parents: 1267
diff changeset
752 for j = 1:dim
546ee16760d5 Add interfaces in Elastic2dStaggeredAnisotropic
Martin Almquist <malmquist@stanford.edu>
parents: 1267
diff changeset
753 Z_u = 0*es_u{b}'*es_u{b};
546ee16760d5 Add interfaces in Elastic2dStaggeredAnisotropic
Martin Almquist <malmquist@stanford.edu>
parents: 1267
diff changeset
754 Z_v = 0*es_v{bv}'*es_v{bv};
546ee16760d5 Add interfaces in Elastic2dStaggeredAnisotropic
Martin Almquist <malmquist@stanford.edu>
parents: 1267
diff changeset
755 for l = 1:dim
546ee16760d5 Add interfaces in Elastic2dStaggeredAnisotropic
Martin Almquist <malmquist@stanford.edu>
parents: 1267
diff changeset
756 for k = 1:dim
546ee16760d5 Add interfaces in Elastic2dStaggeredAnisotropic
Martin Almquist <malmquist@stanford.edu>
parents: 1267
diff changeset
757 Z_u = Z_u + es_u{b}'*nu_u(l)*C_u{b}{l,i,k,j}*nu_u(k)*es_u{b};
546ee16760d5 Add interfaces in Elastic2dStaggeredAnisotropic
Martin Almquist <malmquist@stanford.edu>
parents: 1267
diff changeset
758 Z_v = Z_v + es_v{bv}'*nu_v(l)*C_v{bv}{l,i,k,j}*nu_v(k)*es_v{bv};
546ee16760d5 Add interfaces in Elastic2dStaggeredAnisotropic
Martin Almquist <malmquist@stanford.edu>
parents: 1267
diff changeset
759 end
546ee16760d5 Add interfaces in Elastic2dStaggeredAnisotropic
Martin Almquist <malmquist@stanford.edu>
parents: 1267
diff changeset
760 end
546ee16760d5 Add interfaces in Elastic2dStaggeredAnisotropic
Martin Almquist <malmquist@stanford.edu>
parents: 1267
diff changeset
761 Z = -tuning*dim*( 1/(4*h11_u)*Z_u + 1/(4*h11_v)*Z_v );
546ee16760d5 Add interfaces in Elastic2dStaggeredAnisotropic
Martin Almquist <malmquist@stanford.edu>
parents: 1267
diff changeset
762 % X = es_u{b}'*Z*es_u{b};
546ee16760d5 Add interfaces in Elastic2dStaggeredAnisotropic
Martin Almquist <malmquist@stanford.edu>
parents: 1267
diff changeset
763 % X = Z;
546ee16760d5 Add interfaces in Elastic2dStaggeredAnisotropic
Martin Almquist <malmquist@stanford.edu>
parents: 1267
diff changeset
764 closure = closure + G_u{a}*U_u{a}{i}*((RHO{a}*H{a})\(eu_u{a}*Z'*H_gamma{b}*(eu_u{a}'*U_u{a}{j}'*G_u{a}' ) ));
546ee16760d5 Add interfaces in Elastic2dStaggeredAnisotropic
Martin Almquist <malmquist@stanford.edu>
parents: 1267
diff changeset
765 penalty = penalty - G_u{a}*U_u{a}{i}*((RHO{a}*H{a})\(eu_u{a}*Z'*H_gamma{b}*(eu_v{a}'*U_v{a}{j}'*G_v{a}' ) ));
546ee16760d5 Add interfaces in Elastic2dStaggeredAnisotropic
Martin Almquist <malmquist@stanford.edu>
parents: 1267
diff changeset
766 end
546ee16760d5 Add interfaces in Elastic2dStaggeredAnisotropic
Martin Almquist <malmquist@stanford.edu>
parents: 1267
diff changeset
767 end
546ee16760d5 Add interfaces in Elastic2dStaggeredAnisotropic
Martin Almquist <malmquist@stanford.edu>
parents: 1267
diff changeset
768 end
546ee16760d5 Add interfaces in Elastic2dStaggeredAnisotropic
Martin Almquist <malmquist@stanford.edu>
parents: 1267
diff changeset
769
546ee16760d5 Add interfaces in Elastic2dStaggeredAnisotropic
Martin Almquist <malmquist@stanford.edu>
parents: 1267
diff changeset
770 % Continuity of traction
546ee16760d5 Add interfaces in Elastic2dStaggeredAnisotropic
Martin Almquist <malmquist@stanford.edu>
parents: 1267
diff changeset
771 for j = 1:dim
546ee16760d5 Add interfaces in Elastic2dStaggeredAnisotropic
Martin Almquist <malmquist@stanford.edu>
parents: 1267
diff changeset
772 for m = 1:numel(gridCombos)
546ee16760d5 Add interfaces in Elastic2dStaggeredAnisotropic
Martin Almquist <malmquist@stanford.edu>
parents: 1267
diff changeset
773 gc = gridCombos{m};
546ee16760d5 Add interfaces in Elastic2dStaggeredAnisotropic
Martin Almquist <malmquist@stanford.edu>
parents: 1267
diff changeset
774 a = gc{1};
546ee16760d5 Add interfaces in Elastic2dStaggeredAnisotropic
Martin Almquist <malmquist@stanford.edu>
parents: 1267
diff changeset
775 b = gc{2};
546ee16760d5 Add interfaces in Elastic2dStaggeredAnisotropic
Martin Almquist <malmquist@stanford.edu>
parents: 1267
diff changeset
776 bv = gc{3};
546ee16760d5 Add interfaces in Elastic2dStaggeredAnisotropic
Martin Almquist <malmquist@stanford.edu>
parents: 1267
diff changeset
777 closure = closure - 1/2*G_u{a}*U_u{a}{j}*(RHO{a}\(H{a}\(eu_u{a}*H_gamma{b}*tau_u{b}{j}')));
546ee16760d5 Add interfaces in Elastic2dStaggeredAnisotropic
Martin Almquist <malmquist@stanford.edu>
parents: 1267
diff changeset
778 penalty = penalty - 1/2*G_u{a}*U_u{a}{j}*(RHO{a}\(H{a}\(eu_u{a}*H_gamma{b}*tau_v{bv}{j}')));
546ee16760d5 Add interfaces in Elastic2dStaggeredAnisotropic
Martin Almquist <malmquist@stanford.edu>
parents: 1267
diff changeset
779 end
546ee16760d5 Add interfaces in Elastic2dStaggeredAnisotropic
Martin Almquist <malmquist@stanford.edu>
parents: 1267
diff changeset
780 end
1264
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
781
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
782 end
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
783
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
784 function [closure, penalty] = interfaceNonConforming(obj,boundary,neighbour_scheme,neighbour_boundary,type)
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
785 error('Non-conforming interfaces not implemented yet.');
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
786 end
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
787
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
788 % Returns the component number that is the tangential/normal component
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
789 % at the specified boundary
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
790 function comp = getComponent(obj, comp_str, boundary)
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
791 assertIsMember(comp_str, {'normal', 'tangential'});
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
792 assertIsMember(boundary, {'w', 'e', 's', 'n'});
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
793
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
794 switch boundary
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
795 case {'w', 'e'}
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
796 switch comp_str
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
797 case 'normal'
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
798 comp = 1;
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
799 case 'tangential'
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
800 comp = 2;
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
801 end
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
802 case {'s', 'n'}
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
803 switch comp_str
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
804 case 'normal'
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
805 comp = 2;
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
806 case 'tangential'
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
807 comp = 1;
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
808 end
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
809 end
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
810 end
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
811
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
812 % Returns h11 for the boundary specified by the string boundary.
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
813 % op -- string
1266
ad31d9c4cec2 Add displacement BC in StaggeredAnisotropic
Martin Almquist <malmquist@stanford.edu>
parents: 1265
diff changeset
814 function h11 = getBorrowing(obj, stressGrid, boundary)
1264
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
815 assertIsMember(boundary, {'w', 'e', 's', 'n'})
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
816
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
817 switch boundary
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
818 case {'w','e'}
1266
ad31d9c4cec2 Add displacement BC in StaggeredAnisotropic
Martin Almquist <malmquist@stanford.edu>
parents: 1265
diff changeset
819 h11 = obj.h11{stressGrid}{1};
1264
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
820 case {'s', 'n'}
1266
ad31d9c4cec2 Add displacement BC in StaggeredAnisotropic
Martin Almquist <malmquist@stanford.edu>
parents: 1265
diff changeset
821 h11 = obj.h11{stressGrid}{2};
1264
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
822 end
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
823 end
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
824
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
825 % Returns the outward unit normal vector for the boundary specified by the string boundary.
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
826 function nu = getNormal(obj, boundary)
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
827 assertIsMember(boundary, {'w', 'e', 's', 'n'})
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
828
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
829 switch boundary
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
830 case 'w'
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
831 nu = [-1,0];
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
832 case 'e'
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
833 nu = [1,0];
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
834 case 's'
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
835 nu = [0,-1];
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
836 case 'n'
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
837 nu = [0,1];
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
838 end
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
839 end
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
840
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
841 % Returns the boundary operator op for the boundary specified by the string boundary.
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
842 % op -- string
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
843 function o = getBoundaryOperator(obj, op, boundary)
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
844 assertIsMember(boundary, {'w', 'e', 's', 'n'})
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
845 assertIsMember(op, {'e', 'e1', 'e2', 'tau', 'tau1', 'tau2'})
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
846
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
847 switch op
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
848 case {'e', 'e1', 'e2', 'tau', 'tau1', 'tau2'}
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
849 o = obj.([op, '_', boundary]);
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
850 end
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
851
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
852 end
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
853
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
854 % Returns the boundary operator op for the boundary specified by the string boundary.
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
855 % op -- string
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
856 function o = getBoundaryOperatorForScalarField(obj, op, boundary)
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
857 assertIsMember(boundary, {'w', 'e', 's', 'n'})
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
858 assertIsMember(op, {'e_u', 'e_s'})
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
859
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
860 switch op
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
861 case 'e_u'
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
862 o = obj.(['e_', boundary, '_u']);
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
863 case 'e_s'
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
864 o = obj.(['e_', boundary, '_s']);
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
865 end
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
866
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
867 end
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
868
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
869 % Returns the boundary operator T_ij (cell format) for the boundary specified by the string boundary.
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
870 % Formula: tau_i = T_ij u_j
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
871 % op -- string
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
872 function T = getBoundaryTractionOperator(obj, boundary)
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
873 assertIsMember(boundary, {'w', 'e', 's', 'n'})
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
874
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
875 T = obj.(['T', '_', boundary]);
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
876 end
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
877
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
878 % Returns square boundary quadrature matrix, of dimension
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
879 % corresponding to the number of boundary unknowns
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
880 %
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
881 % boundary -- string
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
882 function H = getBoundaryQuadrature(obj, boundary)
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
883 assertIsMember(boundary, {'w', 'e', 's', 'n'})
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
884
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
885 H = obj.getBoundaryQuadratureForScalarField(boundary);
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
886 I_dim = speye(obj.dim, obj.dim);
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
887 H = kron(H, I_dim);
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
888 end
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
889
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
890 % Returns square boundary quadrature matrix, of dimension
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
891 % corresponding to the number of boundary grid points
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
892 %
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
893 % boundary -- string
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
894 function H_b = getBoundaryQuadratureForScalarField(obj, boundary)
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
895 assertIsMember(boundary, {'w', 'e', 's', 'n'})
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
896
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
897 H_b = obj.(['H_', boundary, '_s']);
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
898 end
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
899
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
900 function N = size(obj)
1279
546ee16760d5 Add interfaces in Elastic2dStaggeredAnisotropic
Martin Almquist <malmquist@stanford.edu>
parents: 1267
diff changeset
901 N = length(obj.D);
1264
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
902 end
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
903 end
066fdfaa2411 Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff changeset
904 end