Mercurial > repos > public > sbplib
annotate +scheme/bcSetup.m @ 869:d356f1a22d4f bcSetupExperiment
Start organizing the code
author | Jonatan Werpers <jonatan@werpers.com> |
---|---|
date | Fri, 07 Sep 2018 09:19:03 +0200 |
parents | 57760d7088ad |
children | fb91d12093f8 |
rev | line source |
---|---|
619
9dd49d622a4c
Add a function for easily applying many boundary conditions at the same time
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
1 % function [closure, S] = bcSetup(diffOp, bc) |
9dd49d622a4c
Add a function for easily applying many boundary conditions at the same time
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
2 % Takes a diffOp and a cell array of boundary condition definitions. |
9dd49d622a4c
Add a function for easily applying many boundary conditions at the same time
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
3 % Each bc is a struct with the fields |
9dd49d622a4c
Add a function for easily applying many boundary conditions at the same time
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
4 % * type -- Type of boundary condition |
9dd49d622a4c
Add a function for easily applying many boundary conditions at the same time
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
5 % * boundary -- Boundary identifier |
749
1de60c4d462d
Allow gird functions as data in bcSetup
Jonatan Werpers <jonatan@werpers.com>
parents:
723
diff
changeset
|
6 % * data -- A function_handle for a function which provides boundary data.(see below) |
619
9dd49d622a4c
Add a function for easily applying many boundary conditions at the same time
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
7 % Also takes S_sign which modifies the sign of S, [-1,1] |
749
1de60c4d462d
Allow gird functions as data in bcSetup
Jonatan Werpers <jonatan@werpers.com>
parents:
723
diff
changeset
|
8 % Returns a closure matrix and a forcing function S. |
1de60c4d462d
Allow gird functions as data in bcSetup
Jonatan Werpers <jonatan@werpers.com>
parents:
723
diff
changeset
|
9 % |
1de60c4d462d
Allow gird functions as data in bcSetup
Jonatan Werpers <jonatan@werpers.com>
parents:
723
diff
changeset
|
10 % The boundary data function can either be a function of time or a function of time and space coordinates. |
1de60c4d462d
Allow gird functions as data in bcSetup
Jonatan Werpers <jonatan@werpers.com>
parents:
723
diff
changeset
|
11 % In the case where it only depends on time it should return the data as grid function for the boundary. |
1de60c4d462d
Allow gird functions as data in bcSetup
Jonatan Werpers <jonatan@werpers.com>
parents:
723
diff
changeset
|
12 % In the case where it also takes space coordinates the number of space coordinates should match the number of dimensions of the problem domain. |
1de60c4d462d
Allow gird functions as data in bcSetup
Jonatan Werpers <jonatan@werpers.com>
parents:
723
diff
changeset
|
13 % For example in the 2D case: f(t,x,y). |
785
c02b6d03c77c
Change name from bc to bcs
Jonatan Werpers <jonatan@werpers.com>
parents:
777
diff
changeset
|
14 function [closure, S] = bcSetup(diffOp, bcs, S_sign) |
619
9dd49d622a4c
Add a function for easily applying many boundary conditions at the same time
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
15 default_arg('S_sign', 1); |
785
c02b6d03c77c
Change name from bc to bcs
Jonatan Werpers <jonatan@werpers.com>
parents:
777
diff
changeset
|
16 assertType(bcs, 'cell'); |
619
9dd49d622a4c
Add a function for easily applying many boundary conditions at the same time
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
17 assert(S_sign == 1 || S_sign == -1, 'S_sign must be either 1 or -1'); |
9dd49d622a4c
Add a function for easily applying many boundary conditions at the same time
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
18 |
869
d356f1a22d4f
Start organizing the code
Jonatan Werpers <jonatan@werpers.com>
parents:
868
diff
changeset
|
19 [closure, penalties] = bcClosureSetup(diffOp, bcs); |
d356f1a22d4f
Start organizing the code
Jonatan Werpers <jonatan@werpers.com>
parents:
868
diff
changeset
|
20 S = bcForcingSetup(diffOp, penalties, bcs, S_sign); |
619
9dd49d622a4c
Add a function for easily applying many boundary conditions at the same time
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
21 end |
785
c02b6d03c77c
Change name from bc to bcs
Jonatan Werpers <jonatan@werpers.com>
parents:
777
diff
changeset
|
22 |
869
d356f1a22d4f
Start organizing the code
Jonatan Werpers <jonatan@werpers.com>
parents:
868
diff
changeset
|
23 %%% NOTES |
792 | 24 % Borde man använda eval on här?? |
25 % Borde man dela upp bcSetup i bcSetupSymbolic(name?) och bcSetupGridData | |
26 % och sen skriva en wrapper som sorterar och wrappar de två andra?? | |
27 | |
867 | 28 % Borde man ha en separat funktion för closure penalty generering |
29 % och en separat för att bygga ihop penaltyn med data? | |
30 | |
792 | 31 % Erbjuda en separat function for att validera en bc specifikation? |
32 % alltid kräva alla fields? | |
33 % literal struct improvement? |