Mercurial > repos > public > sbplib
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 |
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 |