Mercurial > repos > public > sbplib
annotate +scheme/Elastic2dStaggeredAnisotropic.m @ 1267:e61083f178be feature/poroelastic
Add preallocation for D in StaggeredAnisotropic
author | Martin Almquist <malmquist@stanford.edu> |
---|---|
date | Thu, 30 Apr 2020 21:19:47 -0700 |
parents | ad31d9c4cec2 |
children | 546ee16760d5 |
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 |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
106 C_mat{a}{i,j,k,l} = spdiag(grid.evalOn(g_s{a}, C{i,j,k,l})); |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
107 end |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
108 end |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
109 end |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
110 end |
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 C = C_mat; |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
113 obj.C = C; |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
114 |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
115 % Reference m for primal grid |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
116 m = g_u{1}.size(); |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
117 X = g_u{1}.points; |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
118 lim = cell(dim, 1); |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
119 for i = 1:dim |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
120 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
|
121 end |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
122 |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
123 % 1D operators |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
124 ops = cell(dim,1); |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
125 D1p = cell(dim, 1); |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
126 D1d = cell(dim, 1); |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
127 mp = cell(dim, 1); |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
128 md = cell(dim, 1); |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
129 Ip = cell(dim, 1); |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
130 Id = cell(dim, 1); |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
131 Hp = cell(dim, 1); |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
132 Hd = cell(dim, 1); |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
133 |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
134 opSet = @sbp.D1StaggeredUpwind; |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
135 for i = 1:dim |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
136 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
|
137 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
|
138 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
|
139 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
|
140 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
|
141 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
|
142 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
|
143 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
|
144 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
|
145 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
|
146 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
|
147 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
|
148 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
|
149 end |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
150 |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
151 % Borrowing constants |
1266
ad31d9c4cec2
Add displacement BC in StaggeredAnisotropic
Martin Almquist <malmquist@stanford.edu>
parents:
1265
diff
changeset
|
152 % for i = 1:dim |
ad31d9c4cec2
Add displacement BC in StaggeredAnisotropic
Martin Almquist <malmquist@stanford.edu>
parents:
1265
diff
changeset
|
153 % obj.h11{i} = ops{i}.H_dual(1,1); |
ad31d9c4cec2
Add displacement BC in StaggeredAnisotropic
Martin Almquist <malmquist@stanford.edu>
parents:
1265
diff
changeset
|
154 % end |
ad31d9c4cec2
Add displacement BC in StaggeredAnisotropic
Martin Almquist <malmquist@stanford.edu>
parents:
1265
diff
changeset
|
155 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
|
156 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
|
157 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
|
158 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
|
159 |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
160 %---- Grid layout ------- |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
161 % gu1 = xp o yp; |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
162 % gu2 = xd o yd; |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
163 % gs1 = xd o yp; |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
164 % gs2 = xp o yd; |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
165 %------------------------ |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
166 |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
167 % Quadratures |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
168 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
|
169 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
|
170 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
|
171 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
|
172 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
|
173 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
|
174 |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
175 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
|
176 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
|
177 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
|
178 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
|
179 |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
180 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
|
181 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
|
182 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
|
183 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
|
184 |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
185 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
|
186 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
|
187 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
|
188 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
|
189 |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
190 % Boundary restriction ops |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
191 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
|
192 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
|
193 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
|
194 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
|
195 |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
196 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
|
197 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
|
198 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
|
199 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
|
200 |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
201 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
|
202 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
|
203 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
|
204 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
|
205 |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
206 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
|
207 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
|
208 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
|
209 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
|
210 |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
211 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
|
212 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
|
213 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
|
214 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
|
215 |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
216 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
|
217 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
|
218 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
|
219 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
|
220 |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
221 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
|
222 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
|
223 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
|
224 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
|
225 |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
226 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
|
227 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
|
228 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
|
229 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
|
230 |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
231 |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
232 % D1_u2s{a, b}{i} approximates ddi and |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
233 %takes from u grid number b to s grid number a |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
234 % 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
|
235 D1_u2s = cell(nGrids, nGrids); |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
236 D1_s2u = cell(nGrids, nGrids); |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
237 |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
238 N_u = cell(nGrids, 1); |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
239 N_s = cell(nGrids, 1); |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
240 for a = 1:nGrids |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
241 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
|
242 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
|
243 end |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
244 |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
245 %---- Grid layout ------- |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
246 % gu1 = xp o yp; |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
247 % gu2 = xd o yd; |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
248 % gs1 = xd o yp; |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
249 % gs2 = xp o yd; |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
250 %------------------------ |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
251 |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
252 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
|
253 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
|
254 |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
255 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
|
256 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
|
257 |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
258 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
|
259 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
|
260 |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
261 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
|
262 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
|
263 |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
264 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
|
265 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
|
266 |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
267 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
|
268 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
|
269 |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
270 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
|
271 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
|
272 |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
273 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
|
274 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
|
275 |
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 %---- Combine grids and components ----- |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
278 |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
279 % 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
|
280 U = cell(nGrids, 1); |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
281 for a = 1:2 |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
282 U{a} = cell(dim, 1); |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
283 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
|
284 for i = 1:dim |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
285 E = sparse(dim,1); |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
286 E(i) = 1; |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
287 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
|
288 end |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
289 end |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
290 obj.U = U; |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
291 |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
292 % Order grids |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
293 % u1, u2 |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
294 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
|
295 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
|
296 |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
297 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
|
298 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
|
299 |
1264
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
300 G = {Gu1; Gu2}; |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
301 obj.G = G; |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
302 |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
303 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
|
304 + 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
|
305 |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
306 % 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
|
307 % 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
|
308 % 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
|
309 % 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
|
310 |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
311 % 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
|
312 % 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
|
313 % 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
|
314 % 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
|
315 |
1267
e61083f178be
Add preallocation for D in StaggeredAnisotropic
Martin Almquist <malmquist@stanford.edu>
parents:
1266
diff
changeset
|
316 stencilWidth = order; |
1264
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
317 % Differentiation matrix D (without SAT) |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
318 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
|
319 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
|
320 for a = 1:nGrids |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
321 for b = 1:nGrids |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
322 for c = 1:nGrids |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
323 for i = 1:dim |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
324 for j = 1:dim |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
325 for k = 1:dim |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
326 for l = 1:dim |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
327 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
|
328 end |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
329 end |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
330 end |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
331 end |
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 obj.D = D; |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
336 clear D; |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
337 obj.N = N; |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
338 %=========================================%' |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
339 |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
340 % Numerical traction operators for BC. |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
341 % |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
342 % 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
|
343 % |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
344 |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
345 n_w = obj.getNormal('w'); |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
346 n_e = obj.getNormal('e'); |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
347 n_s = obj.getNormal('s'); |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
348 n_n = obj.getNormal('n'); |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
349 |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
350 tau_w = cell(nGrids, 1); |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
351 tau_e = cell(nGrids, 1); |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
352 tau_s = cell(nGrids, 1); |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
353 tau_n = cell(nGrids, 1); |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
354 |
1265
6696b216b982
Start working on displacement bc, clean up traction.
Martin Almquist <malmquist@stanford.edu>
parents:
1264
diff
changeset
|
355 T_w = cell(nGrids, nGrids); |
6696b216b982
Start working on displacement bc, clean up traction.
Martin Almquist <malmquist@stanford.edu>
parents:
1264
diff
changeset
|
356 T_e = cell(nGrids, nGrids); |
6696b216b982
Start working on displacement bc, clean up traction.
Martin Almquist <malmquist@stanford.edu>
parents:
1264
diff
changeset
|
357 T_s = cell(nGrids, nGrids); |
6696b216b982
Start working on displacement bc, clean up traction.
Martin Almquist <malmquist@stanford.edu>
parents:
1264
diff
changeset
|
358 T_n = cell(nGrids, nGrids); |
6696b216b982
Start working on displacement bc, clean up traction.
Martin Almquist <malmquist@stanford.edu>
parents:
1264
diff
changeset
|
359 for b = 1:nGrids |
6696b216b982
Start working on displacement bc, clean up traction.
Martin Almquist <malmquist@stanford.edu>
parents:
1264
diff
changeset
|
360 [~, 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
|
361 [~, 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
|
362 for c = 1:nGrids |
6696b216b982
Start working on displacement bc, clean up traction.
Martin Almquist <malmquist@stanford.edu>
parents:
1264
diff
changeset
|
363 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
|
364 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
|
365 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
|
366 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
|
367 |
6696b216b982
Start working on displacement bc, clean up traction.
Martin Almquist <malmquist@stanford.edu>
parents:
1264
diff
changeset
|
368 for i = 1:dim |
6696b216b982
Start working on displacement bc, clean up traction.
Martin Almquist <malmquist@stanford.edu>
parents:
1264
diff
changeset
|
369 for j = 1:dim |
1266
ad31d9c4cec2
Add displacement BC in StaggeredAnisotropic
Martin Almquist <malmquist@stanford.edu>
parents:
1265
diff
changeset
|
370 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
|
371 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
|
372 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
|
373 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
|
374 end |
6696b216b982
Start working on displacement bc, clean up traction.
Martin Almquist <malmquist@stanford.edu>
parents:
1264
diff
changeset
|
375 end |
6696b216b982
Start working on displacement bc, clean up traction.
Martin Almquist <malmquist@stanford.edu>
parents:
1264
diff
changeset
|
376 end |
6696b216b982
Start working on displacement bc, clean up traction.
Martin Almquist <malmquist@stanford.edu>
parents:
1264
diff
changeset
|
377 end |
6696b216b982
Start working on displacement bc, clean up traction.
Martin Almquist <malmquist@stanford.edu>
parents:
1264
diff
changeset
|
378 |
1264
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
379 for b = 1:nGrids |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
380 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
|
381 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
|
382 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
|
383 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
|
384 |
1264
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
385 for j = 1:dim |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
386 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
|
387 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
|
388 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
|
389 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
|
390 end |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
391 |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
392 for c = 1:nGrids |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
393 for i = 1:dim |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
394 for j = 1:dim |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
395 for k = 1:dim |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
396 for l = 1:dim |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
397 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
|
398 |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
399 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
|
400 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
|
401 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
|
402 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
|
403 |
6696b216b982
Start working on displacement bc, clean up traction.
Martin Almquist <malmquist@stanford.edu>
parents:
1264
diff
changeset
|
404 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
|
405 |
1266
ad31d9c4cec2
Add displacement BC in StaggeredAnisotropic
Martin Almquist <malmquist@stanford.edu>
parents:
1265
diff
changeset
|
406 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
|
407 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
|
408 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
|
409 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
|
410 end |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
411 end |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
412 end |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
413 end |
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 |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
417 obj.tau_w = tau_w; |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
418 obj.tau_e = tau_e; |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
419 obj.tau_s = tau_s; |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
420 obj.tau_n = tau_n; |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
421 |
1265
6696b216b982
Start working on displacement bc, clean up traction.
Martin Almquist <malmquist@stanford.edu>
parents:
1264
diff
changeset
|
422 obj.T_w = T_w; |
6696b216b982
Start working on displacement bc, clean up traction.
Martin Almquist <malmquist@stanford.edu>
parents:
1264
diff
changeset
|
423 obj.T_e = T_e; |
6696b216b982
Start working on displacement bc, clean up traction.
Martin Almquist <malmquist@stanford.edu>
parents:
1264
diff
changeset
|
424 obj.T_s = T_s; |
6696b216b982
Start working on displacement bc, clean up traction.
Martin Almquist <malmquist@stanford.edu>
parents:
1264
diff
changeset
|
425 obj.T_n = T_n; |
6696b216b982
Start working on displacement bc, clean up traction.
Martin Almquist <malmquist@stanford.edu>
parents:
1264
diff
changeset
|
426 |
1264
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
427 % D1 = obj.D1; |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
428 |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
429 % Traction tensors, T_ij |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
430 % 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
|
431 % 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
|
432 % 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
|
433 % 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
|
434 |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
435 % Restriction operators |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
436 % obj.e_w = e_w; |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
437 % obj.e_e = e_e; |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
438 % obj.e_s = e_s; |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
439 % obj.e_n = e_n; |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
440 |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
441 % obj.e1_w = e1_w; |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
442 % obj.e1_e = e1_e; |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
443 % obj.e1_s = e1_s; |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
444 % obj.e1_n = e1_n; |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
445 |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
446 % obj.e2_w = e2_w; |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
447 % obj.e2_e = e2_e; |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
448 % obj.e2_s = e2_s; |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
449 % obj.e2_n = e2_n; |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
450 |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
451 % 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
|
452 % 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
|
453 % 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
|
454 % 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
|
455 |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
456 % % First component of traction |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
457 % 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
|
458 % 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
|
459 % 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
|
460 % 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
|
461 |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
462 % % Second component of traction |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
463 % 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
|
464 % 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
|
465 % 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
|
466 % 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
|
467 |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
468 % % Traction vectors |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
469 % 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
|
470 % 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
|
471 % 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
|
472 % 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
|
473 |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
474 % Misc. |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
475 obj.m = m; |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
476 obj.h = []; |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
477 obj.order = order; |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
478 obj.grid = g; |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
479 obj.dim = dim; |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
480 obj.nGrids = nGrids; |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
481 |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
482 end |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
483 |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
484 |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
485 % 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
|
486 % 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
|
487 % 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
|
488 % 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
|
489 % 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
|
490 % {'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
|
491 % tangential/normal component. |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
492 % 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
|
493 % 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
|
494 % 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
|
495 |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
496 % For displacement bc: |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
497 % bc = {comp, 'd', dComps}, |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
498 % where |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
499 % 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
|
500 % 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
|
501 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
|
502 default_arg('tuning', 1.0); |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
503 |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
504 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
|
505 comp = bc{1}; |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
506 type = bc{2}; |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
507 if ischar(comp) |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
508 comp = obj.getComponent(comp, boundary); |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
509 end |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
510 |
1265
6696b216b982
Start working on displacement bc, clean up traction.
Martin Almquist <malmquist@stanford.edu>
parents:
1264
diff
changeset
|
511 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
|
512 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
|
513 tau = obj.getBoundaryOperator('tau', boundary); |
1265
6696b216b982
Start working on displacement bc, clean up traction.
Martin Almquist <malmquist@stanford.edu>
parents:
1264
diff
changeset
|
514 T = obj.getBoundaryTractionOperator(boundary); |
1264
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
515 H_gamma = obj.getBoundaryQuadratureForScalarField(boundary); |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
516 nu = obj.getNormal(boundary); |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
517 |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
518 U = obj.U; |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
519 G = obj.G; |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
520 H = obj.H_u; |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
521 RHO = obj.RHO; |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
522 C = obj.C; |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
523 |
1265
6696b216b982
Start working on displacement bc, clean up traction.
Martin Almquist <malmquist@stanford.edu>
parents:
1264
diff
changeset
|
524 %---- Grid layout ------- |
6696b216b982
Start working on displacement bc, clean up traction.
Martin Almquist <malmquist@stanford.edu>
parents:
1264
diff
changeset
|
525 % gu1 = xp o yp; |
6696b216b982
Start working on displacement bc, clean up traction.
Martin Almquist <malmquist@stanford.edu>
parents:
1264
diff
changeset
|
526 % gu2 = xd o yd; |
6696b216b982
Start working on displacement bc, clean up traction.
Martin Almquist <malmquist@stanford.edu>
parents:
1264
diff
changeset
|
527 % gs1 = xd o yp; |
6696b216b982
Start working on displacement bc, clean up traction.
Martin Almquist <malmquist@stanford.edu>
parents:
1264
diff
changeset
|
528 % gs2 = xp o yd; |
6696b216b982
Start working on displacement bc, clean up traction.
Martin Almquist <malmquist@stanford.edu>
parents:
1264
diff
changeset
|
529 %------------------------ |
6696b216b982
Start working on displacement bc, clean up traction.
Martin Almquist <malmquist@stanford.edu>
parents:
1264
diff
changeset
|
530 |
1264
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
531 switch boundary |
1265
6696b216b982
Start working on displacement bc, clean up traction.
Martin Almquist <malmquist@stanford.edu>
parents:
1264
diff
changeset
|
532 case {'w', 'e'} |
6696b216b982
Start working on displacement bc, clean up traction.
Martin Almquist <malmquist@stanford.edu>
parents:
1264
diff
changeset
|
533 gridCombos = {{1,1}, {2,2}}; |
6696b216b982
Start working on displacement bc, clean up traction.
Martin Almquist <malmquist@stanford.edu>
parents:
1264
diff
changeset
|
534 case {'s', 'n'} |
6696b216b982
Start working on displacement bc, clean up traction.
Martin Almquist <malmquist@stanford.edu>
parents:
1264
diff
changeset
|
535 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
|
536 end |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
537 |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
538 dim = obj.dim; |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
539 nGrids = obj.nGrids; |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
540 |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
541 m_tot = obj.N; |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
542 |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
543 % Preallocate |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
544 [~, col] = size(tau{1}{1}); |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
545 closure = sparse(m_tot, m_tot); |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
546 penalty = cell(nGrids, 1); |
1266
ad31d9c4cec2
Add displacement BC in StaggeredAnisotropic
Martin Almquist <malmquist@stanford.edu>
parents:
1265
diff
changeset
|
547 for a = 1:nGrids |
ad31d9c4cec2
Add displacement BC in StaggeredAnisotropic
Martin Almquist <malmquist@stanford.edu>
parents:
1265
diff
changeset
|
548 [~, col] = size(e_u{a}); |
ad31d9c4cec2
Add displacement BC in StaggeredAnisotropic
Martin Almquist <malmquist@stanford.edu>
parents:
1265
diff
changeset
|
549 penalty{a} = sparse(m_tot, col); |
ad31d9c4cec2
Add displacement BC in StaggeredAnisotropic
Martin Almquist <malmquist@stanford.edu>
parents:
1265
diff
changeset
|
550 end |
1264
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
551 |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
552 j = comp; |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
553 switch type |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
554 |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
555 % Dirichlet boundary condition |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
556 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
|
557 |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
558 if numel(bc) >= 3 |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
559 dComps = bc{3}; |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
560 else |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
561 dComps = 1:dim; |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
562 end |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
563 |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
564 % 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
|
565 % Y: symmetrizing part of penalty |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
566 % Z: symmetric part of penalty |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
567 % X = Y + Z. |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
568 |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
569 % 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
|
570 % yield traction in discrete energy rate |
1266
ad31d9c4cec2
Add displacement BC in StaggeredAnisotropic
Martin Almquist <malmquist@stanford.edu>
parents:
1265
diff
changeset
|
571 for c = 1:nGrids |
ad31d9c4cec2
Add displacement BC in StaggeredAnisotropic
Martin Almquist <malmquist@stanford.edu>
parents:
1265
diff
changeset
|
572 for m = 1:numel(gridCombos) |
ad31d9c4cec2
Add displacement BC in StaggeredAnisotropic
Martin Almquist <malmquist@stanford.edu>
parents:
1265
diff
changeset
|
573 gc = gridCombos{m}; |
ad31d9c4cec2
Add displacement BC in StaggeredAnisotropic
Martin Almquist <malmquist@stanford.edu>
parents:
1265
diff
changeset
|
574 a = gc{1}; |
ad31d9c4cec2
Add displacement BC in StaggeredAnisotropic
Martin Almquist <malmquist@stanford.edu>
parents:
1265
diff
changeset
|
575 b = gc{2}; |
ad31d9c4cec2
Add displacement BC in StaggeredAnisotropic
Martin Almquist <malmquist@stanford.edu>
parents:
1265
diff
changeset
|
576 |
1265
6696b216b982
Start working on displacement bc, clean up traction.
Martin Almquist <malmquist@stanford.edu>
parents:
1264
diff
changeset
|
577 for i = 1:dim |
1266
ad31d9c4cec2
Add displacement BC in StaggeredAnisotropic
Martin Almquist <malmquist@stanford.edu>
parents:
1265
diff
changeset
|
578 Y = T{a,c}{j,i}'; |
ad31d9c4cec2
Add displacement BC in StaggeredAnisotropic
Martin Almquist <malmquist@stanford.edu>
parents:
1265
diff
changeset
|
579 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
|
580 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
|
581 end |
6696b216b982
Start working on displacement bc, clean up traction.
Martin Almquist <malmquist@stanford.edu>
parents:
1264
diff
changeset
|
582 end |
1264
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
583 end |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
584 |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
585 % 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
|
586 % (Otherwise it's not symmetric.) |
1266
ad31d9c4cec2
Add displacement BC in StaggeredAnisotropic
Martin Almquist <malmquist@stanford.edu>
parents:
1265
diff
changeset
|
587 for m = 1:numel(gridCombos) |
ad31d9c4cec2
Add displacement BC in StaggeredAnisotropic
Martin Almquist <malmquist@stanford.edu>
parents:
1265
diff
changeset
|
588 gc = gridCombos{m}; |
ad31d9c4cec2
Add displacement BC in StaggeredAnisotropic
Martin Almquist <malmquist@stanford.edu>
parents:
1265
diff
changeset
|
589 a = gc{1}; |
ad31d9c4cec2
Add displacement BC in StaggeredAnisotropic
Martin Almquist <malmquist@stanford.edu>
parents:
1265
diff
changeset
|
590 b = gc{2}; |
ad31d9c4cec2
Add displacement BC in StaggeredAnisotropic
Martin Almquist <malmquist@stanford.edu>
parents:
1265
diff
changeset
|
591 |
ad31d9c4cec2
Add displacement BC in StaggeredAnisotropic
Martin Almquist <malmquist@stanford.edu>
parents:
1265
diff
changeset
|
592 h11 = obj.getBorrowing(b, boundary); |
ad31d9c4cec2
Add displacement BC in StaggeredAnisotropic
Martin Almquist <malmquist@stanford.edu>
parents:
1265
diff
changeset
|
593 |
ad31d9c4cec2
Add displacement BC in StaggeredAnisotropic
Martin Almquist <malmquist@stanford.edu>
parents:
1265
diff
changeset
|
594 for i = dComps |
ad31d9c4cec2
Add displacement BC in StaggeredAnisotropic
Martin Almquist <malmquist@stanford.edu>
parents:
1265
diff
changeset
|
595 Z = 0*C{b}{1,1,1,1}; |
ad31d9c4cec2
Add displacement BC in StaggeredAnisotropic
Martin Almquist <malmquist@stanford.edu>
parents:
1265
diff
changeset
|
596 for l = 1:dim |
ad31d9c4cec2
Add displacement BC in StaggeredAnisotropic
Martin Almquist <malmquist@stanford.edu>
parents:
1265
diff
changeset
|
597 for k = 1:dim |
ad31d9c4cec2
Add displacement BC in StaggeredAnisotropic
Martin Almquist <malmquist@stanford.edu>
parents:
1265
diff
changeset
|
598 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
|
599 end |
1264
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
600 end |
1266
ad31d9c4cec2
Add displacement BC in StaggeredAnisotropic
Martin Almquist <malmquist@stanford.edu>
parents:
1265
diff
changeset
|
601 Z = -tuning*dim/h11*Z; |
ad31d9c4cec2
Add displacement BC in StaggeredAnisotropic
Martin Almquist <malmquist@stanford.edu>
parents:
1265
diff
changeset
|
602 X = e_s{b}'*Z*e_s{b}; |
ad31d9c4cec2
Add displacement BC in StaggeredAnisotropic
Martin Almquist <malmquist@stanford.edu>
parents:
1265
diff
changeset
|
603 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
|
604 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
|
605 end |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
606 end |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
607 |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
608 % Free boundary condition |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
609 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
|
610 for m = 1:numel(gridCombos) |
6696b216b982
Start working on displacement bc, clean up traction.
Martin Almquist <malmquist@stanford.edu>
parents:
1264
diff
changeset
|
611 gc = gridCombos{m}; |
6696b216b982
Start working on displacement bc, clean up traction.
Martin Almquist <malmquist@stanford.edu>
parents:
1264
diff
changeset
|
612 a = gc{1}; |
6696b216b982
Start working on displacement bc, clean up traction.
Martin Almquist <malmquist@stanford.edu>
parents:
1264
diff
changeset
|
613 b = gc{2}; |
6696b216b982
Start working on displacement bc, clean up traction.
Martin Almquist <malmquist@stanford.edu>
parents:
1264
diff
changeset
|
614 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
|
615 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
|
616 end |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
617 |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
618 % Unknown boundary condition |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
619 otherwise |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
620 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
|
621 end |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
622 end |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
623 |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
624 % 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
|
625 % Fields: |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
626 % -- 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
|
627 % -- 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
|
628 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
|
629 |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
630 defaultType.tuning = 1.0; |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
631 defaultType.interpolation = 'none'; |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
632 default_struct('type', defaultType); |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
633 |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
634 switch type.interpolation |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
635 case {'none', ''} |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
636 [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
|
637 case {'op','OP'} |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
638 [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
|
639 otherwise |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
640 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
|
641 end |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
642 end |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
643 |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
644 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
|
645 tuning = type.tuning; |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
646 |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
647 % 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
|
648 % 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
|
649 |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
650 u = obj; |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
651 v = neighbour_scheme; |
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 % Operators, u side |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
654 e_u = u.getBoundaryOperatorForScalarField('e', boundary); |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
655 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
|
656 h11_u = u.getBorrowing(boundary); |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
657 nu_u = u.getNormal(boundary); |
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 E_u = u.E; |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
660 C_u = u.C; |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
661 m_tot_u = u.grid.N(); |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
662 |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
663 % Operators, v side |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
664 e_v = v.getBoundaryOperatorForScalarField('e', neighbour_boundary); |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
665 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
|
666 h11_v = v.getBorrowing(neighbour_boundary); |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
667 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
|
668 |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
669 E_v = v.E; |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
670 C_v = v.C; |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
671 m_tot_v = v.grid.N(); |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
672 |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
673 % Fix {'e', 's'}, {'w', 'n'}, and {'x','x'} couplings |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
674 flipFlag = false; |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
675 e_v_flip = e_v; |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
676 if (strcmp(boundary,'s') && strcmp(neighbour_boundary,'e')) || ... |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
677 (strcmp(boundary,'e') && strcmp(neighbour_boundary,'s')) || ... |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
678 (strcmp(boundary,'w') && strcmp(neighbour_boundary,'n')) || ... |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
679 (strcmp(boundary,'n') && strcmp(neighbour_boundary,'w')) || ... |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
680 (strcmp(boundary,'s') && strcmp(neighbour_boundary,'s')) || ... |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
681 (strcmp(boundary,'n') && strcmp(neighbour_boundary,'n')) || ... |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
682 (strcmp(boundary,'w') && strcmp(neighbour_boundary,'w')) || ... |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
683 (strcmp(boundary,'e') && strcmp(neighbour_boundary,'e')) |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
684 |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
685 flipFlag = true; |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
686 e_v_flip = fliplr(e_v); |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
687 |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
688 t1 = tau_v(:,1:2:end-1); |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
689 t2 = tau_v(:,2:2:end); |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
690 |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
691 t1 = fliplr(t1); |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
692 t2 = fliplr(t2); |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
693 |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
694 tau_v(:,1:2:end-1) = t1; |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
695 tau_v(:,2:2:end) = t2; |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
696 end |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
697 |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
698 % Operators that are only required for own domain |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
699 Hi = u.Hi_kron; |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
700 RHOi = u.RHOi_kron; |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
701 e_kron = u.getBoundaryOperator('e', boundary); |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
702 T_u = u.getBoundaryTractionOperator(boundary); |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
703 |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
704 % Shared operators |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
705 H_gamma = u.getBoundaryQuadratureForScalarField(boundary); |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
706 H_gamma_kron = u.getBoundaryQuadrature(boundary); |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
707 dim = u.dim; |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
708 |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
709 % Preallocate |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
710 [~, m_int] = size(H_gamma); |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
711 closure = sparse(dim*m_tot_u, dim*m_tot_u); |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
712 penalty = sparse(dim*m_tot_u, dim*m_tot_v); |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
713 |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
714 % ---- Continuity of displacement ------ |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
715 |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
716 % Y: symmetrizing part of penalty |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
717 % Z: symmetric part of penalty |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
718 % X = Y + Z. |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
719 |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
720 % Loop over components to couple across interface |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
721 for j = 1:dim |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
722 |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
723 % Loop over components that penalties end up on |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
724 for i = 1:dim |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
725 Y = 1/2*T_u{j,i}'; |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
726 Z_u = sparse(m_int, m_int); |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
727 Z_v = sparse(m_int, m_int); |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
728 for l = 1:dim |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
729 for k = 1:dim |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
730 Z_u = Z_u + e_u'*nu_u(l)*C_u{l,i,k,j}*nu_u(k)*e_u; |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
731 Z_v = Z_v + e_v'*nu_v(l)*C_v{l,i,k,j}*nu_v(k)*e_v; |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
732 end |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
733 end |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
734 |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
735 if flipFlag |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
736 Z_v = rot90(Z_v,2); |
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 |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
739 Z = -tuning*dim*( 1/(4*h11_u)*Z_u + 1/(4*h11_v)*Z_v ); |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
740 X = Y + Z*e_u'; |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
741 closure = closure + E_u{i}*X'*H_gamma*e_u'*E_u{j}'; |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
742 penalty = penalty - E_u{i}*X'*H_gamma*e_v_flip'*E_v{j}'; |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
743 |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
744 end |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
745 end |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
746 |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
747 % ---- Continuity of traction ------ |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
748 closure = closure - 1/2*e_kron*H_gamma_kron*tau_u'; |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
749 penalty = penalty - 1/2*e_kron*H_gamma_kron*tau_v'; |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
750 |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
751 % ---- Multiply by inverse of density x quadraure ---- |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
752 closure = RHOi*Hi*closure; |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
753 penalty = RHOi*Hi*penalty; |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
754 |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
755 end |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
756 |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
757 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
|
758 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
|
759 end |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
760 |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
761 % 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
|
762 % at the specified boundary |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
763 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
|
764 assertIsMember(comp_str, {'normal', 'tangential'}); |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
765 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
|
766 |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
767 switch boundary |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
768 case {'w', 'e'} |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
769 switch comp_str |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
770 case 'normal' |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
771 comp = 1; |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
772 case 'tangential' |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
773 comp = 2; |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
774 end |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
775 case {'s', 'n'} |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
776 switch comp_str |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
777 case 'normal' |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
778 comp = 2; |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
779 case 'tangential' |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
780 comp = 1; |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
781 end |
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 end |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
784 |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
785 % 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
|
786 % op -- string |
1266
ad31d9c4cec2
Add displacement BC in StaggeredAnisotropic
Martin Almquist <malmquist@stanford.edu>
parents:
1265
diff
changeset
|
787 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
|
788 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
|
789 |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
790 switch boundary |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
791 case {'w','e'} |
1266
ad31d9c4cec2
Add displacement BC in StaggeredAnisotropic
Martin Almquist <malmquist@stanford.edu>
parents:
1265
diff
changeset
|
792 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
|
793 case {'s', 'n'} |
1266
ad31d9c4cec2
Add displacement BC in StaggeredAnisotropic
Martin Almquist <malmquist@stanford.edu>
parents:
1265
diff
changeset
|
794 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
|
795 end |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
796 end |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
797 |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
798 % 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
|
799 function nu = getNormal(obj, boundary) |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
800 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
|
801 |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
802 switch boundary |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
803 case 'w' |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
804 nu = [-1,0]; |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
805 case 'e' |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
806 nu = [1,0]; |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
807 case 's' |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
808 nu = [0,-1]; |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
809 case 'n' |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
810 nu = [0,1]; |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
811 end |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
812 end |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
813 |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
814 % 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
|
815 % op -- string |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
816 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
|
817 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
|
818 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
|
819 |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
820 switch op |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
821 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
|
822 o = obj.([op, '_', boundary]); |
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 end |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
826 |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
827 % 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
|
828 % op -- string |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
829 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
|
830 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
|
831 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
|
832 |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
833 switch op |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
834 case 'e_u' |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
835 o = obj.(['e_', boundary, '_u']); |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
836 case 'e_s' |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
837 o = obj.(['e_', boundary, '_s']); |
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 |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
840 end |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
841 |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
842 % 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
|
843 % 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
|
844 % op -- string |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
845 function T = getBoundaryTractionOperator(obj, boundary) |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
846 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
|
847 |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
848 T = obj.(['T', '_', boundary]); |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
849 end |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
850 |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
851 % 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
|
852 % 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
|
853 % |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
854 % boundary -- string |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
855 function H = getBoundaryQuadrature(obj, boundary) |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
856 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
|
857 |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
858 H = obj.getBoundaryQuadratureForScalarField(boundary); |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
859 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
|
860 H = kron(H, I_dim); |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
861 end |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
862 |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
863 % 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
|
864 % 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
|
865 % |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
866 % boundary -- string |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
867 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
|
868 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
|
869 |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
870 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
|
871 end |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
872 |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
873 function N = size(obj) |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
874 N = obj.dim*prod(obj.m); |
066fdfaa2411
Add staggered Lebedev scheme for Cartesian anisotropic. Traction BC work!
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
875 end |
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 end |