Mercurial > repos > public > sbplib
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) |