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
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
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