• Stephan Seitz's avatar
    Add DestructuringBindingsForFieldClass to use pystencils kernels in a more C++-ish way · 8e63c9ff
    Stephan Seitz authored
    DestructuringBindingsForFieldClass defines all field-related variables
    in its subordinated block.
    However, it leaves a TypedSymbol of type 'Field' for each field
    undefined.
    By that trick we can generate kernels that accept structs as
    kernelparameters.
    Either to include a pystencils specific Field struct of the following
    definition:
    
    ```cpp
    template<DTYPE_T, DIMENSION>
    struct Field
    {
        DTYPE_T* data;
        std::array<DTYPE_T, DIMENSION> shape;
        std::array<DTYPE_T, DIMENSION> stride;
    }
    
    or to be able to destructure user defined types like `pybind11::array`,
    `at::Tensor`, `tensorflow::Tensor`
    
    ```
    8e63c9ff
astnodes.py 22.9 KB