Mercurial > repos > public > sbplib_julia
annotate src/BoundaryConditions/sat.jl @ 1167:fd80e9a0ef99 feature/boundary_conditions
Make use of discretize in sat functions
author | Vidar Stiernström <vidar.stiernstrom@it.uu.se> |
---|---|
date | Wed, 07 Dec 2022 21:56:00 +0100 |
parents | 05b1d6fd6401 |
children | ea2e8254820a |
rev | line source |
---|---|
1135
05b1d6fd6401
Add functions for constructing SATs
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
1 """ |
05b1d6fd6401
Add functions for constructing SATs
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
2 sat_tensors(op, grid, bc::BoundaryCondition{T}, params...) |
05b1d6fd6401
Add functions for constructing SATs
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
3 |
05b1d6fd6401
Add functions for constructing SATs
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
4 Returns the `LazyTensor`s used to construct a SAT for the SBP operator `op` on |
05b1d6fd6401
Add functions for constructing SATs
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
5 `grid` associated with the boundary condition `bc`. |
05b1d6fd6401
Add functions for constructing SATs
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
6 """ |
05b1d6fd6401
Add functions for constructing SATs
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
7 function sat_tensors end |
05b1d6fd6401
Add functions for constructing SATs
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
8 |
1167
fd80e9a0ef99
Make use of discretize in sat functions
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
1135
diff
changeset
|
9 # TODO: Docs must be more specific in what this function does... |
1135
05b1d6fd6401
Add functions for constructing SATs
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
10 """ |
1167
fd80e9a0ef99
Make use of discretize in sat functions
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
1135
diff
changeset
|
11 sat(op, grid, bc::BoundaryCondition, params...) |
1135
05b1d6fd6401
Add functions for constructing SATs
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
12 |
1167
fd80e9a0ef99
Make use of discretize in sat functions
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
1135
diff
changeset
|
13 Simultaneous-Approximation-Term for general BoundaryCondition bc. f = sat(op, grid, bc) returns |
fd80e9a0ef99
Make use of discretize in sat functions
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
1135
diff
changeset
|
14 an anonymous function, such that f(t,u) is a `LazyTensorApplication` weakly imposing bc |
fd80e9a0ef99
Make use of discretize in sat functions
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
1135
diff
changeset
|
15 at time t. |
1135
05b1d6fd6401
Add functions for constructing SATs
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
16 """ |
1167
fd80e9a0ef99
Make use of discretize in sat functions
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
1135
diff
changeset
|
17 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
|
18 closure, penalty = sat_tensors(op, grid, bc, params...) |
1167
fd80e9a0ef99
Make use of discretize in sat functions
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
1135
diff
changeset
|
19 data_array = discretize(data(bc),boundary_grid(grid, bc.id)) |
fd80e9a0ef99
Make use of discretize in sat functions
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
1135
diff
changeset
|
20 return (t,u) -> closure(u) + penalty(data_array(t)) |
fd80e9a0ef99
Make use of discretize in sat functions
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
1135
diff
changeset
|
21 end |
fd80e9a0ef99
Make use of discretize in sat functions
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
1135
diff
changeset
|
22 |
fd80e9a0ef99
Make use of discretize in sat functions
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
1135
diff
changeset
|
23 function sat(op, grid, bc::BoundaryCondition{ZeroBoundaryData}, params...) |
fd80e9a0ef99
Make use of discretize in sat functions
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
1135
diff
changeset
|
24 closure = sat_tensors(op, grid, bc, params...) |
fd80e9a0ef99
Make use of discretize in sat functions
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
1135
diff
changeset
|
25 return (t,u) -> closure(u) |
1135
05b1d6fd6401
Add functions for constructing SATs
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
26 end |
05b1d6fd6401
Add functions for constructing SATs
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
27 |
1167
fd80e9a0ef99
Make use of discretize in sat functions
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
1135
diff
changeset
|
28 |
fd80e9a0ef99
Make use of discretize in sat functions
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
1135
diff
changeset
|
29 # """ |
fd80e9a0ef99
Make use of discretize in sat functions
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
1135
diff
changeset
|
30 # sat(op, grid, bc::BoundaryCondition{SpaceDependentBoundaryData{T}}, params...) |
1135
05b1d6fd6401
Add functions for constructing SATs
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
31 |
1167
fd80e9a0ef99
Make use of discretize in sat functions
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
1135
diff
changeset
|
32 # Simultaneous-Approximation-Term for space-dependent boundary data. f = sat(op, grid, bc) returns |
fd80e9a0ef99
Make use of discretize in sat functions
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
1135
diff
changeset
|
33 # an anonymous function, such that f(u) is a `LazyTensorApplication` weakly imposing the BC. |
fd80e9a0ef99
Make use of discretize in sat functions
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
1135
diff
changeset
|
34 # """ |
fd80e9a0ef99
Make use of discretize in sat functions
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
1135
diff
changeset
|
35 # function sat(op, grid, bc::BoundaryCondition{SpaceDependentBoundaryData{T}}, params...) where T |
fd80e9a0ef99
Make use of discretize in sat functions
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
1135
diff
changeset
|
36 # closure, penalty = sat_tensors(op, grid, bc, params...) |
fd80e9a0ef99
Make use of discretize in sat functions
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
1135
diff
changeset
|
37 # g = data(bc) |
fd80e9a0ef99
Make use of discretize in sat functions
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
1135
diff
changeset
|
38 # return u -> closure(u) + penalty(g) |
fd80e9a0ef99
Make use of discretize in sat functions
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
1135
diff
changeset
|
39 # end |
1135
05b1d6fd6401
Add functions for constructing SATs
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
40 |
1167
fd80e9a0ef99
Make use of discretize in sat functions
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
1135
diff
changeset
|
41 # """ |
fd80e9a0ef99
Make use of discretize in sat functions
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
1135
diff
changeset
|
42 # sat(op, grid, bc::BoundaryCondition{SpaceDependentBoundaryData{T}}, params...) |
1135
05b1d6fd6401
Add functions for constructing SATs
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
43 |
1167
fd80e9a0ef99
Make use of discretize in sat functions
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
1135
diff
changeset
|
44 # Simultaneous-Approximation-Term for time-dependent boundary data. f = sat(op, grid, bc) returns |
fd80e9a0ef99
Make use of discretize in sat functions
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
1135
diff
changeset
|
45 # an anonymous function, such that f(u,t) is a `LazyTensorApplication` weakly imposing the BC at time t. |
fd80e9a0ef99
Make use of discretize in sat functions
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
1135
diff
changeset
|
46 # """ |
fd80e9a0ef99
Make use of discretize in sat functions
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
1135
diff
changeset
|
47 # function sat(op, grid, bc::BoundaryCondition{TimeDependentBoundaryData{T}}, params...) where T |
fd80e9a0ef99
Make use of discretize in sat functions
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
1135
diff
changeset
|
48 # closure, penalty = sat_tensors(op, grid, bc, params...) |
fd80e9a0ef99
Make use of discretize in sat functions
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
1135
diff
changeset
|
49 # b_sz = size(boundary_grid(grid, bc.id)) |
fd80e9a0ef99
Make use of discretize in sat functions
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
1135
diff
changeset
|
50 # b_vec = ones(eltype(grid), b_sz) |
fd80e9a0ef99
Make use of discretize in sat functions
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
1135
diff
changeset
|
51 # g = data(bc) |
fd80e9a0ef99
Make use of discretize in sat functions
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
1135
diff
changeset
|
52 # return (u,t) -> closure(u) + g(t)*penalty(b_vec) |
fd80e9a0ef99
Make use of discretize in sat functions
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
1135
diff
changeset
|
53 # end |
1135
05b1d6fd6401
Add functions for constructing SATs
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
54 |
1167
fd80e9a0ef99
Make use of discretize in sat functions
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
1135
diff
changeset
|
55 # """ |
fd80e9a0ef99
Make use of discretize in sat functions
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
1135
diff
changeset
|
56 # sat(op, grid, bc::BoundaryCondition{SpaceDependentBoundaryData{T}}, params...) |
1135
05b1d6fd6401
Add functions for constructing SATs
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
57 |
1167
fd80e9a0ef99
Make use of discretize in sat functions
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
1135
diff
changeset
|
58 # Simultaneous-Approximation-Term for space-time-dependent boundary data. f = sat(op, grid, bc) returns |
fd80e9a0ef99
Make use of discretize in sat functions
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
1135
diff
changeset
|
59 # an anonymous function, such that f(u,t) is a `LazyTensorApplication` weakly imposing the BC at time t. |
fd80e9a0ef99
Make use of discretize in sat functions
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
1135
diff
changeset
|
60 # """ |
fd80e9a0ef99
Make use of discretize in sat functions
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
1135
diff
changeset
|
61 # function sat(op, grid, bc::BoundaryCondition{SpaceTimeDependentBoundaryData{T}}, params...) where T |
fd80e9a0ef99
Make use of discretize in sat functions
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
1135
diff
changeset
|
62 # closure, penalty = sat_tensors(op, grid, bc, params...) |
fd80e9a0ef99
Make use of discretize in sat functions
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
1135
diff
changeset
|
63 # g = data(bc) |
fd80e9a0ef99
Make use of discretize in sat functions
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
1135
diff
changeset
|
64 # return (u,t) -> closure(u) + penalty(g(t)) |
fd80e9a0ef99
Make use of discretize in sat functions
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
1135
diff
changeset
|
65 # end |