CliMA / CliMA/ClimaCore.jl

Express finite difference operators as convolutions

Open
#2,540 0 comments 0 reactions 2 assignees Claimed by @sjavis View on GitHub
Dominant language
Julia
Stars
117
Forks
19
Avg merge
3d 4h
Merged PRs (30d)
41

Description

When #2539 is done we should start the work of figuring out and expressing existing finite difference operators as a convolution operation.

Since the assumption is that the 'convolution operation' will work on raw numbers, for each operator we need to determine:
- A correct basis in which the RHS operand needs to be and appropriate, space-invariant, convolution kernel for the operation
- We need to define function that applied to the operator will return the expected basis of the operand
- Some operators (e.g. divergence), may require additional operations to be done on input and output. We need another function that will communicate extra operations necessary.

The ultimate goal is to have all the information in the operator that would allow to translate a operation:
```
Op(field)
```
into
```
field |> field -> transform_to_basis(Op, field) |> field -> preprocess(Op, field) |> field -> convolve(Op, field |> field -> postprocess(Op, field)
```
I am abusing the notation/julia syntax here, but basically we need to be able to split application of the operator into multiple operations, some of them potentially noops. It should be done on during the evaluation of the `Broadcasted` (`StencilBroadcasted`) expression in a follow-up.

Contributor guide

No contributing guide indexed for this repository

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.