comparison +scheme/elasticShearVariable.m @ 667:ed853945ee99 feature/poroelastic

Make free BC work with data. Bugfix domain size.
author Martin Almquist <malmquist@stanford.edu>
date Wed, 20 Dec 2017 06:52:17 +0100
parents 8e6dfd22fc59
children 17e62551cdc2
comparison
equal deleted inserted replaced
664:8e6dfd22fc59 667:ed853945ee99
42 rho = grid.evalOn(g, rho_fun); 42 rho = grid.evalOn(g, rho_fun);
43 m = g.size(); 43 m = g.size();
44 m_tot = g.N(); 44 m_tot = g.N();
45 45
46 h = g.scaling(); 46 h = g.scaling();
47 L = (m-1).*h;
47 48
48 % 1D operators 49 % 1D operators
49 ops = cell(dim,1); 50 ops = cell(dim,1);
50 for i = 1:dim 51 for i = 1:dim
51 ops{i} = opSet(m(i), {0, 1}, order); 52 ops{i} = opSet(m(i), {0, L(i)}, order);
52 end 53 end
53 54
54 I = cell(dim,1); 55 I = cell(dim,1);
55 D1 = cell(dim,1); 56 D1 = cell(dim,1);
56 D2 = cell(dim,1); 57 D2 = cell(dim,1);
228 penalty = -obj.a*obj.Hi*tau; 229 penalty = -obj.a*obj.Hi*tau;
229 230
230 231
231 % Free boundary condition 232 % Free boundary condition
232 case {'F','f','Free','free'} 233 case {'F','f','Free','free'}
233 closure = sparse(obj.dim*obj.grid.N,obj.dim*obj.grid.N); 234 closures = cell(obj.dim,1);
234 penalty = sparse(obj.dim*obj.grid.N,obj.dim*obj.grid.N); 235 penalties = cell(obj.dim,1);
235 % Loop over components 236 % Loop over components
236 for i = 1:obj.dim 237 for i = 1:obj.dim
237 closure = closure + E{i}*inv(RHO)*(-nj)*Hi*e{j}*H_gamma*(... 238 closures{i} = E{i}*inv(RHO)*(-nj)*Hi*e{j}*H_gamma*(...
238 e{j}'*A*e{j}*d{j}'*E{i}' + ... 239 e{j}'*A*e{j}*d{j}'*E{i}' + ...
239 delta(i,j)*e{j}'*A*e{i}*d{i}'*E{j}' + ... 240 delta(i,j)*e{j}'*A*e{i}*d{i}'*E{j}' + ...
240 delta_b(i,j)*e{j}'*A*D1{i}*E{j}' ... 241 delta_b(i,j)*e{j}'*A*D1{i}*E{j}' ...
241 ); 242 );
242 penalty = penalty - E{i}*inv(RHO)*(-nj)*Hi*e{j}*H_gamma*e{j}'*E{j}'; 243 penalties{i} = - E{i}*inv(RHO)*(-nj)*Hi*e{j}*H_gamma;
243 end 244 end
245 [rows, cols] = size(closures{1});
246 closure = sparse(rows, cols);
247 for i = 1:obj.dim
248 closure = closure + closures{i};
249 end
250 penalty = penalties;
244 251
245 252
246 % Unknown boundary condition 253 % Unknown boundary condition
247 otherwise 254 otherwise
248 error('No such boundary condition: type = %s',type); 255 error('No such boundary condition: type = %s',type);