|
1 | 1 | """
|
2 | 2 | ````
|
3 | 3 | function lazy_interpolate!(
|
4 |
| - target::FEVectorBlock{T1,Tv,Ti}, |
5 |
| - source::FEVectorBlock{T2,Tv,Ti}; |
6 |
| - operator = Identity, |
7 |
| - postprocess = nothing, |
8 |
| - xtrafo = nothing, |
9 |
| - items = [], |
10 |
| - not_in_domain_value = 1e30, |
11 |
| - eps = 1e-13, |
12 |
| - use_cellparents::Bool = false) where {T1,T2,Tv,Ti} |
| 4 | + target::FEVectorBlock{T1, Tv, Ti}, |
| 5 | + source, |
| 6 | + operators = [(1, Identity)]; |
| 7 | + postprocess! = standard_kernel, |
| 8 | + xtrafo! = nothing, |
| 9 | + items = [], |
| 10 | + resultdim = get_ncomponents(eltype(target.FES)), |
| 11 | + not_in_domain_value = 1.0e30, |
| 12 | + start_cell = 1, |
| 13 | + only_localsearch = false, |
| 14 | + use_cellparents::Bool = false, |
| 15 | + eps = 1.0e-13, |
| 16 | + kwargs...) where {T1, Tv, Ti} |
13 | 17 | ````
|
14 | 18 |
|
15 |
| -Interpolates (operator-evaluations of) the given finite element function into the finite element space assigned to the target FEVectorBlock. |
16 |
| -(Currently not the most efficient way as it is based on the PointEvaluation pattern and cell search. If CellParents |
17 |
| -are available in the grid components of the target grid, these parent cell information can be used to improve the |
18 |
| -search. To activate this put 'use_cellparents' = true). By some given kernel function that is conforming to the interface |
| 19 | +Interpolates (operator-evaluations of) the given FEVector source (or an array of FEVectorBlocks) |
| 20 | +into the (finite element space assigned to) the `target` FEVectorBlock. |
| 21 | +By the given `postprocess!` function that is conforming to the interface |
19 | 22 |
|
20 |
| - kernel!(result, input, qpinfo) |
| 23 | + postprocess!(result, input, qpinfo) |
21 | 24 |
|
22 |
| -the operator evaluation (=input) can be further postprocessed. The qpinfo argument |
23 |
| -allows to access information at the current quadrature point. |
| 25 | +the operator evaluations (=input) can be further manipulated (default is unmodified input). The qpinfo argument |
| 26 | +allows to access information at the current quadrature point. The `xtrafo!` function with the interface |
| 27 | +
|
| 28 | + xtrafo!(x_source, x) |
| 29 | +
|
| 30 | +maps coordinates x from the target grid to coordinates in the source grid in case the grids |
| 31 | +(the default is the identity). If `x_source` cannot be found in the source_grid the value |
| 32 | +`not_in_domain_value` is used as a function value. With the `items` arguments the |
| 33 | +target cells for the interpolation can be restricted. |
24 | 34 |
|
25 | 35 | Note: discontinuous quantities at vertices of the target grid will be evaluated in the first found cell of the
|
26 | 36 | source grid. No averaging is performed. With eps the tolerances of the cell search via ExtendableGrids.CellFinder can be steered.
|
| 37 | +
|
| 38 | +Note 2: This is not the most efficient way (therefore lazy) as it is based on the PointEvaluation pattern and cell search (with |
| 39 | +tolerance `eps`). |
| 40 | +If CellParents are available in the grid components of the target grid, parent cell information can be used to (slightly) improve the |
| 41 | +search. To activate this put `use_cellparents` = true. |
27 | 42 | """
|
28 | 43 | function lazy_interpolate!(
|
29 | 44 | target::FEVectorBlock{T1, Tv, Ti},
|
|
0 commit comments