comparison +scheme/+bc/forcingSetup.m @ 1282:a52033540dd9 feature/poroelastic

Make forcingSetup return empty array instead of zero function if all boundary data functions are empty.
author Martin Almquist <malmquist@stanford.edu>
date Mon, 15 Jun 2020 16:11:35 -0700
parents ba10f24bf476
children
comparison
equal deleted inserted replaced
1281:01a0500de446 1282:a52033540dd9
20 20
21 scheme.bc.verifyFormat(bcs, diffOp); 21 scheme.bc.verifyFormat(bcs, diffOp);
22 22
23 [gridData, symbolicData] = parseAndSortData(bcs, penalties, diffOp); 23 [gridData, symbolicData] = parseAndSortData(bcs, penalties, diffOp);
24 24
25 % Setup penalty function 25 if length(gridData) + length(symbolicData) == 0
26 O = spzeros(size(diffOp),1); 26 S = [];
27 else
28 % Setup penalty function
29 O = spzeros(size(diffOp),1);
30 S = @S_fun;
31 end
32
27 function v = S_fun(t) 33 function v = S_fun(t)
28 v = O; 34 v = O;
29 for i = 1:length(gridData) 35 for i = 1:length(gridData)
30 v = v + gridData{i}.penalty*gridData{i}.func(t); 36 v = v + gridData{i}.penalty*gridData{i}.func(t);
31 end 37 end
34 v = v + symbolicData{i}.penalty*symbolicData{i}.func(t, symbolicData{i}.coords{:}); 40 v = v + symbolicData{i}.penalty*symbolicData{i}.func(t, symbolicData{i}.coords{:});
35 end 41 end
36 42
37 v = S_sign * v; 43 v = S_sign * v;
38 end 44 end
39 S = @S_fun;
40 end 45 end
41 46
42 % Go through a cell array of boundary condition specifications and return cell arrays 47 % Go through a cell array of boundary condition specifications and return cell arrays
43 % of structs for grid and symbolic data. 48 % of structs for grid and symbolic data.
44 function [gridData, symbolicData] = parseAndSortData(bcs, penalties, diffOp) 49 function [gridData, symbolicData] = parseAndSortData(bcs, penalties, diffOp)