Mercurial > repos > public > sbplib
diff +sbp/+implementations/d2_variable_hollow_2.m @ 1305:b5907140c069 feature/poroelastic
Clean up hollow D2 generation by using precomputed coefficients stored in mat files
author | Martin Almquist <malmquist@stanford.edu> |
---|---|
date | Mon, 13 Jul 2020 14:21:41 -0700 |
parents | 49e3870335ef |
children |
line wrap: on
line diff
--- a/+sbp/+implementations/d2_variable_hollow_2.m Sat Jul 11 07:25:06 2020 -0700 +++ b/+sbp/+implementations/d2_variable_hollow_2.m Mon Jul 13 14:21:41 2020 -0700 @@ -34,39 +34,23 @@ %Q=H*D1 + 1/2*(e_1*e_1') - 1/2*(e_m*e_m'); - M=sparse(m,m); nBP = 2; - - scheme_width = 3; - scheme_radius = (scheme_width-1)/2; + M = sparse(m,m); + coeffs = load('sbplib/+sbp/+implementations/coeffs_d2_variable_2.mat'); function D2 = D2_fun(c) + M_l = zeros(nBP, coeffs.nBPC); + M_r = zeros(nBP, coeffs.nBPC); - for r = 1+scheme_radius:nBP - Mm1 = -c(r-1)/2 - c(r)/2; - M0 = c(r-1)/2 + c(r) + c(r+1)/2; - Mp1 = -c(r)/2 - c(r+1)/2; - - M(r, r-1) = Mm1; - M(r, r) = M0; - M(r, r+1) = Mp1; + for i=1:coeffs.nBPC + M_l = M_l + coeffs.C_l{i}*c(i); + M_r = M_r + coeffs.C_r{i}*c(m-coeffs.nBPC+i); end - for r = m-nBP+1:m-scheme_radius - Mm1 = -c(r-1)/2 - c(r)/2; - M0 = c(r-1)/2 + c(r) + c(r+1)/2; - Mp1 = -c(r)/2 - c(r+1)/2; + M(1:nBP, 1:coeffs.nBPC) = M_l; + M(m-nBP+1:m, m-coeffs.nBPC+1:m) = M_r; - M(r, r-1) = Mm1; - M(r, r) = M0; - M(r, r+1) = Mp1; - end - - M(1:2,1:2)=[c(1)/2 + c(2)/2 -c(1)/2 - c(2)/2; -c(1)/2 - c(2)/2 c(1)/2 + c(2) + c(3)/2;]; - M(m-1:m,m-1:m)=[c(m-2)/2 + c(m-1) + c(m)/2 -c(m-1)/2 - c(m)/2; -c(m-1)/2 - c(m)/2 c(m-1)/2 + c(m)/2;]; - M=M/h; - - D2=HI*(-M-c(1)*e_l*d1_l'+c(m)*e_r*d1_r'); + D2 = M/h^2; end D2 = @D2_fun; end \ No newline at end of file