initialize_function
initialize_function(
function,
data,
nbl,
mapper=None,
mode='constant',
name=None,
pad_halo=True,
**kwargs,
)Initialize a Function with the given data. data does not include the nbl outer/boundary layers; these are added via padding by this function.
Parameters
| Name | Type | Description | Default |
|---|---|---|---|
| function | Function or list of Functions | The initialised object. | required |
| data | ndarray or Function or list of ndarray/Function | The data used for initialisation. | required |
| nbl | int or tuple of int or tuple of tuple of int | Number of outer layers (such as absorbing layers for boundary damping). | required |
| mapper | dict | Dictionary containing, for each dimension of function, a sub-dictionary containing the following keys: 1) ‘lhs’: List of additional expressions to be added to the LHS expressions list. 2) ‘rhs’: List of additional expressions to be added to the RHS expressions list. 3) ‘options’: Options pertaining to the additional equations that will be constructed. |
None |
| mode | str | The function initialisation mode. ‘constant’ and ‘reflect’ are accepted. | 'constant' |
| name | str | The name assigned to the operator. | None |
| pad_halo | bool | Whether to also pad the outer halo. | True |
Examples
In the following example the 'interior' of a function is set to one plus the value on the boundary.
>>> import numpy as np
>>> from devito import Grid, SubDomain, Function, initialize_functionCreate the computational domain:
>>> grid = Grid(shape=(6, 6))
>>> x, y = grid.dimensionsCreate the Function we wish to set along with the data to set it:
>>> f = Function(name='f', grid=grid, dtype=np.int32)
>>> data = np.full((4, 4), 2, dtype=np.int32)Now create the additional expressions and options required to set the value of the interior region to one greater than the boundary value. Note that the equation is specified on the second (final) grid dimension so that additional equation is executed after padding is complete.
>>> lhs = f
>>> rhs = f+1
>>> options = {'subdomain': grid.subdomains['interior']}
>>> mapper = {}
>>> mapper[y] = {'lhs': lhs, 'rhs': rhs, 'options': options}Call the initialize_function routine:
>>> initialize_function(f, data, 1, mapper=mapper)
>>> f.data
Data([[2, 2, 2, 2, 2, 2],
[2, 3, 3, 3, 3, 2],
[2, 3, 3, 3, 3, 2],
[2, 3, 3, 3, 3, 2],
[2, 3, 3, 3, 3, 2],
[2, 2, 2, 2, 2, 2]], dtype=int32)