Mercurial > repos > public > sbplib_julia
annotate src/BoundaryConditions/sat.jl @ 1217:ea2e8254820a feature/boundary_conditions
Update docstrings and start implementing tests
author | Vidar Stiernström <vidar.stiernstrom@it.uu.se> |
---|---|
date | Tue, 07 Feb 2023 21:55:07 +0100 |
parents | fd80e9a0ef99 |
children | 35840a0681d1 |
rev | line source |
---|---|
1135
05b1d6fd6401
Add functions for constructing SATs
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
1 """ |
1217
ea2e8254820a
Update docstrings and start implementing tests
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
1167
diff
changeset
|
2 sat_tensors(op, grid, bc::BoundaryCondition, params...) |
1135
05b1d6fd6401
Add functions for constructing SATs
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
3 |
1217
ea2e8254820a
Update docstrings and start implementing tests
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
1167
diff
changeset
|
4 Returns the functions `closure(u)` and `penalty(g)` used to construct a SAT for the |
ea2e8254820a
Update docstrings and start implementing tests
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
1167
diff
changeset
|
5 `LazyTensor` operator `op` on `grid` associated with the boundary condition `bc`, |
ea2e8254820a
Update docstrings and start implementing tests
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
1167
diff
changeset
|
6 where g is the discretized data of `bc`. |
1135
05b1d6fd6401
Add functions for constructing SATs
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
7 """ |
05b1d6fd6401
Add functions for constructing SATs
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
8 function sat_tensors end |
05b1d6fd6401
Add functions for constructing SATs
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
9 |
1217
ea2e8254820a
Update docstrings and start implementing tests
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
1167
diff
changeset
|
10 |
1135
05b1d6fd6401
Add functions for constructing SATs
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
11 """ |
1167
fd80e9a0ef99
Make use of discretize in sat functions
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
1135
diff
changeset
|
12 sat(op, grid, bc::BoundaryCondition, params...) |
1135
05b1d6fd6401
Add functions for constructing SATs
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
13 |
1217
ea2e8254820a
Update docstrings and start implementing tests
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
1167
diff
changeset
|
14 Simultaneous-Approximation-Term for a general `BoundaryCondition` `bc` to `LazyTensor` `op`. |
ea2e8254820a
Update docstrings and start implementing tests
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
1167
diff
changeset
|
15 The function returns a function `f`, where f(t,u)` returns a `LazyTensorApplication` |
ea2e8254820a
Update docstrings and start implementing tests
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
1167
diff
changeset
|
16 weakly imposing the boundary condition at time `t`, when added to `op*u`. |
ea2e8254820a
Update docstrings and start implementing tests
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
1167
diff
changeset
|
17 |
ea2e8254820a
Update docstrings and start implementing tests
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
1167
diff
changeset
|
18 `op` must implement the function `sat_tensors`. `f` is then constructed as |
ea2e8254820a
Update docstrings and start implementing tests
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
1167
diff
changeset
|
19 `f(t,u) = closure(u) + `penalty(g(t))`. |
1135
05b1d6fd6401
Add functions for constructing SATs
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
20 """ |
1167
fd80e9a0ef99
Make use of discretize in sat functions
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
1135
diff
changeset
|
21 function sat(op, grid, bc::BoundaryCondition, params...) |
1135
05b1d6fd6401
Add functions for constructing SATs
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
22 closure, penalty = sat_tensors(op, grid, bc, params...) |
1217
ea2e8254820a
Update docstrings and start implementing tests
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
1167
diff
changeset
|
23 g = discretize(data(bc),boundary_grid(grid, bc.id)) |
ea2e8254820a
Update docstrings and start implementing tests
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
1167
diff
changeset
|
24 return (t,u) -> closure(u) + penalty(g(t)) |
1135
05b1d6fd6401
Add functions for constructing SATs
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
25 end |
05b1d6fd6401
Add functions for constructing SATs
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
26 |
1167
fd80e9a0ef99
Make use of discretize in sat functions
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
1135
diff
changeset
|
27 |
1217
ea2e8254820a
Update docstrings and start implementing tests
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
1167
diff
changeset
|
28 """ |
ea2e8254820a
Update docstrings and start implementing tests
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
1167
diff
changeset
|
29 sat(op, grid, bc::BoundaryCondition{ZeroBoundaryData}, params...) |
1135
05b1d6fd6401
Add functions for constructing SATs
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
30 |
1217
ea2e8254820a
Update docstrings and start implementing tests
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
1167
diff
changeset
|
31 Simultaneous-Approximation-Term for a general `BoundaryCondition` `bc` to `LazyTensor` `op`. |
ea2e8254820a
Update docstrings and start implementing tests
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
1167
diff
changeset
|
32 The function returns a function `f`, where f(t,u)` returns a `LazyTensorApplication` |
ea2e8254820a
Update docstrings and start implementing tests
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
1167
diff
changeset
|
33 weakly imposing a homogenous boundary condition, when added to `op*u`. |
1135
05b1d6fd6401
Add functions for constructing SATs
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
34 |
1217
ea2e8254820a
Update docstrings and start implementing tests
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
1167
diff
changeset
|
35 `op` must implement the function `sat_tensors`. `f` is then constructed as |
ea2e8254820a
Update docstrings and start implementing tests
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
1167
diff
changeset
|
36 `f(t,u) = closure(u)`. |
ea2e8254820a
Update docstrings and start implementing tests
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
1167
diff
changeset
|
37 """ |
ea2e8254820a
Update docstrings and start implementing tests
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
1167
diff
changeset
|
38 function sat(op, grid, bc::BoundaryCondition{ZeroBoundaryData}, params...) |
ea2e8254820a
Update docstrings and start implementing tests
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
1167
diff
changeset
|
39 closure = sat_tensors(op, grid, bc, params...) |
ea2e8254820a
Update docstrings and start implementing tests
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
1167
diff
changeset
|
40 return (t,u) -> closure(u) |
ea2e8254820a
Update docstrings and start implementing tests
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
1167
diff
changeset
|
41 end |