Mercurial > repos > public > sbplib
changeset 1253:89dad61cad22 feature/poroelastic
Make Elastic2dVariable faster and more memory efficient
author | Martin Almquist <malmquist@stanford.edu> |
---|---|
date | Tue, 04 Feb 2020 10:15:42 -0800 |
parents | 8fc2f9a4c882 |
children | 99f92bfc1157 |
files | +scheme/Elastic2dVariableAnisotropic.m |
diffstat | 1 files changed, 18 insertions(+), 7 deletions(-) [+] |
line wrap: on
line diff
diff -r 8fc2f9a4c882 -r 89dad61cad22 +scheme/Elastic2dVariableAnisotropic.m --- a/+scheme/Elastic2dVariableAnisotropic.m Tue Jan 07 12:49:09 2020 -0800 +++ b/+scheme/Elastic2dVariableAnisotropic.m Tue Feb 04 10:15:42 2020 -0800 @@ -21,7 +21,7 @@ D % Total operator D1 % First derivatives - D2 % Second derivatives + % D2 % Second derivatives % Boundary operators in cell format, used for BC T_w, T_e, T_s, T_n @@ -147,7 +147,7 @@ obj.RHOi_kron = kron(obj.RHOi, I_dim); obj.D1 = cell(dim,1); - obj.D2 = cell(dim,dim,dim); + D2_temp = cell(dim,dim,dim); % D1 obj.D1{1} = kron(D1{1},I{2}); @@ -193,10 +193,18 @@ % D2 + switch order + case 2 + width = 3; + case 4 + width = 5; + case 6 + width = 7; + end for j = 1:dim for k = 1:dim for l = 1:dim - obj.D2{j,k,l} = sparse(m_tot,m_tot); + D2_temp{j,k,l} = spalloc(m_tot, m_tot, width*m_tot); end end end @@ -209,7 +217,7 @@ for l = 1:dim coeff = C{k,j,k,l}; D_kk = D2{1}(coeff(p)); - obj.D2{j,k,l}(p,p) = D_kk; + D2_temp{j,k,l}(p,p) = D_kk; end end end @@ -221,7 +229,7 @@ for l = 1:dim coeff = C{k,j,k,l}; D_kk = D2{2}(coeff(p)); - obj.D2{j,k,l}(p,p) = D_kk; + D2_temp{j,k,l}(p,p) = D_kk; end end end @@ -236,7 +244,7 @@ obj.H_1D = {H{1}, H{2}}; % Differentiation matrix D (without SAT) - D2 = obj.D2; + D2_temp; D1 = obj.D1; D = sparse(dim*m_tot,dim*m_tot); for i = 1:dim @@ -244,7 +252,8 @@ for k = 1:dim for l = 1:dim if i == k - D = D + E{j}*D2{j,k,l}*E{l}'; + D = D + E{j}*D2_temp{j,k,l}*E{l}'; + D2_temp{j,k,l} = []; else D = D + E{j}*D1{i}*C_mat{i,j,k,l}*D1{k}*E{l}'; end @@ -252,8 +261,10 @@ end end end + clear D2_temp; D = obj.RHOi_kron*D; obj.D = D; + clear D; %=========================================%' % Numerical traction operators for BC.