annotate src/BoundaryConditions/sat.jl @ 1135:05b1d6fd6401 feature/boundary_conditions

Add functions for constructing SATs
author Vidar Stiernström <vidar.stiernstrom@it.uu.se>
date Tue, 11 Oct 2022 18:15:47 +0200
parents
children fd80e9a0ef99
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
05b1d6fd6401 Add functions for constructing SATs
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
9 """
05b1d6fd6401 Add functions for constructing SATs
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
10 sat(op, grid, bc::BoundaryCondition{ConstantBoundaryData{T}}, params...)
05b1d6fd6401 Add functions for constructing SATs
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
11
05b1d6fd6401 Add functions for constructing SATs
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
12 Simultaneous-Approximation-Term for constant boundary data. f = sat(op, grid, bc) returns
05b1d6fd6401 Add functions for constructing SATs
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
13 an anonymous function, such that f(u) is a `LazyTensorApplication` weakly imposing the BC.
05b1d6fd6401 Add functions for constructing SATs
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
14 """
05b1d6fd6401 Add functions for constructing SATs
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
15 function sat(op, grid, bc::BoundaryCondition{ConstantBoundaryData{T}}, params...) where T
05b1d6fd6401 Add functions for constructing SATs
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
16 closure, penalty = sat_tensors(op, grid, bc, params...)
05b1d6fd6401 Add functions for constructing SATs
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
17 b_sz = size(boundary_grid(grid, bc.id))
05b1d6fd6401 Add functions for constructing SATs
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
18 g = fill(data(bc), b_sz)
05b1d6fd6401 Add functions for constructing SATs
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
19 if iszero(g)
05b1d6fd6401 Add functions for constructing SATs
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
20 return u -> closure(u)
05b1d6fd6401 Add functions for constructing SATs
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
21 else
05b1d6fd6401 Add functions for constructing SATs
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
22 return u -> closure(u) + penalty(g)
05b1d6fd6401 Add functions for constructing SATs
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
23 end
05b1d6fd6401 Add functions for constructing SATs
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
24 end
05b1d6fd6401 Add functions for constructing SATs
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
25
05b1d6fd6401 Add functions for constructing SATs
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
26 """
05b1d6fd6401 Add functions for constructing SATs
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
27 sat(op, grid, bc::BoundaryCondition{SpaceDependentBoundaryData{T}}, params...)
05b1d6fd6401 Add functions for constructing SATs
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
28
05b1d6fd6401 Add functions for constructing SATs
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
29 Simultaneous-Approximation-Term for space-dependent boundary data. f = sat(op, grid, bc) returns
05b1d6fd6401 Add functions for constructing SATs
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
30 an anonymous function, such that f(u) is a `LazyTensorApplication` weakly imposing the BC.
05b1d6fd6401 Add functions for constructing SATs
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
31 """
05b1d6fd6401 Add functions for constructing SATs
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
32 function sat(op, grid, bc::BoundaryCondition{SpaceDependentBoundaryData{T}}, params...) where T
05b1d6fd6401 Add functions for constructing SATs
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
33 closure, penalty = sat_tensors(op, grid, bc, params...)
05b1d6fd6401 Add functions for constructing SATs
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
34 g = data(bc)
05b1d6fd6401 Add functions for constructing SATs
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
35 return u -> closure(u) + penalty(g)
05b1d6fd6401 Add functions for constructing SATs
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
36 end
05b1d6fd6401 Add functions for constructing SATs
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
37
05b1d6fd6401 Add functions for constructing SATs
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
38 """
05b1d6fd6401 Add functions for constructing SATs
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
39 sat(op, grid, bc::BoundaryCondition{SpaceDependentBoundaryData{T}}, params...)
05b1d6fd6401 Add functions for constructing SATs
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
40
05b1d6fd6401 Add functions for constructing SATs
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
41 Simultaneous-Approximation-Term for time-dependent boundary data. f = sat(op, grid, bc) returns
05b1d6fd6401 Add functions for constructing SATs
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
42 an anonymous function, such that f(u,t) is a `LazyTensorApplication` weakly imposing the BC at time t.
05b1d6fd6401 Add functions for constructing SATs
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
43 """
05b1d6fd6401 Add functions for constructing SATs
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
44 function sat(op, grid, bc::BoundaryCondition{TimeDependentBoundaryData{T}}, params...) where T
05b1d6fd6401 Add functions for constructing SATs
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
45 closure, penalty = sat_tensors(op, grid, bc, params...)
05b1d6fd6401 Add functions for constructing SATs
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
46 b_sz = size(boundary_grid(grid, bc.id))
05b1d6fd6401 Add functions for constructing SATs
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
47 b_vec = ones(eltype(grid), b_sz)
05b1d6fd6401 Add functions for constructing SATs
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
48 g = data(bc)
05b1d6fd6401 Add functions for constructing SATs
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
49 return (u,t) -> closure(u) + g(t)*penalty(b_vec)
05b1d6fd6401 Add functions for constructing SATs
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
50 end
05b1d6fd6401 Add functions for constructing SATs
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
51
05b1d6fd6401 Add functions for constructing SATs
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
52 """
05b1d6fd6401 Add functions for constructing SATs
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
53 sat(op, grid, bc::BoundaryCondition{SpaceDependentBoundaryData{T}}, params...)
05b1d6fd6401 Add functions for constructing SATs
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
54
05b1d6fd6401 Add functions for constructing SATs
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
55 Simultaneous-Approximation-Term for space-time-dependent boundary data. f = sat(op, grid, bc) returns
05b1d6fd6401 Add functions for constructing SATs
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
56 an anonymous function, such that f(u,t) is a `LazyTensorApplication` weakly imposing the BC at time t.
05b1d6fd6401 Add functions for constructing SATs
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
57 """
05b1d6fd6401 Add functions for constructing SATs
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
58 function sat(op, grid, bc::BoundaryCondition{SpaceTimeDependentBoundaryData{T}}, params...) where T
05b1d6fd6401 Add functions for constructing SATs
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
59 closure, penalty = sat_tensors(op, grid, bc, params...)
05b1d6fd6401 Add functions for constructing SATs
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
60 g = data(bc)
05b1d6fd6401 Add functions for constructing SATs
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
61 return (u,t) -> closure(u) + penalty(g(t))
05b1d6fd6401 Add functions for constructing SATs
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
62 end