|
|
(UNDER CONSTRUCTION)
|
|
|
This library provides a set of functions for computation derivatives using spectral methods. The lib depends on [FFTW](http://www.fftw.org/) library. The library is compatible with W-SLDA Toolkit however, it can be used as standalone lib. It is written in [C99 standard](https://en.wikipedia.org/wiki/C99).
|
|
|
# Name convention
|
|
|
Generic name of a function is `wderiv_operation_Nd_t`, where:
|
... | ... | @@ -24,17 +25,79 @@ Generic name of a function is `wderiv_operation_Nd_t`, where: |
|
|
* `t`:
|
|
|
* `r` for real problems
|
|
|
* `c` for complex problems
|
|
|
# Sample declarations
|
|
|
# Function Documentation
|
|
|
## 3D derivatives:
|
|
|
### Basic 3D derivative function:
|
|
|
```c
|
|
|
/**
|
|
|
* Function computes first derivative with respect to x (df/dx)
|
|
|
* of 3D real function f(x,y,z)
|
|
|
* @param f pointer to function, array of size [nx*ny*nz] (INPUT)
|
|
|
* @param dfdx pointer to function, array of size [nx*ny*nz] (OUTPUT)
|
|
|
* NOTE: dfdx can be the same pointer as f, then result overwrites input
|
|
|
* @return error code
|
|
|
* */
|
|
|
int wderiv_dfdx_3d_r(double *f, double *dfdx);
|
|
|
int wderiv_derivative_3d_r(int direction, int n, double *f, double *deriv)
|
|
|
```
|
|
|
Function computes n-th derivative with respect to `direction` of 3D real function $`f(x,y,z)`$: $`\frac{\partial^n f}{\partial t^n}`$.
|
|
|
* `direction` - predefined integer corresponding to direction of derivative: `WDERIV_DX` or `WDERIV_DY` or `WDERIV_DZ`
|
|
|
* `f` - pointer to input function which is array of size [nx\*ny\*nz]
|
|
|
* `deriv` - pointer to output derivative function which is array of size [nx\*ny\*nz]
|
|
|
* `return` - error code
|
|
|
|
|
|
`deriv` can be the same pointer as `f`, then result overwrites input.
|
|
|
### First 3D derivative functions:
|
|
|
```c
|
|
|
int wderiv_dfdx_3d_r(double *f, double *dfdx)
|
|
|
```
|
|
|
Function computes first derivative with respect to $`x`$ of 3D real function $`f(x,y,z)`$: $`\frac{\partial f}{\partial x}`$.
|
|
|
* `f` - pointer to input function which is array of size [nx\*ny\*nz]
|
|
|
* `dfdx` - pointer to output derivative function which is array of size [nx\*ny\*nz]
|
|
|
* `return` - error code
|
|
|
|
|
|
`dfdx` can be the same pointer as `f`, then result overwrites input.
|
|
|
|
|
|
```c
|
|
|
int wderiv_dfdy_3d_r(double *f, double *dfdy)
|
|
|
```
|
|
|
Function computes first derivative with respect to $`y`$ of 3D real function $`f(x,y,z)`$: $`\frac{\partial f}{\partial y}`$.
|
|
|
* `f` - pointer to input function which is array of size [nx*ny*nz]
|
|
|
* `dfdy` - pointer to output derivative function which is array of size [nx*ny*nz]
|
|
|
* `return` - error code
|
|
|
|
|
|
`dfdy` can be the same pointer as `f`, then result overwrites input.
|
|
|
|
|
|
```c
|
|
|
int wderiv_dfdz_3d_r(double *f, double *dfdz)
|
|
|
```
|
|
|
Function computes first derivative with respect to $`z`$ of 3D real function $`f(x,y,z)`$: $`\frac{\partial f}{\partial x}`$.
|
|
|
* `f` - pointer to input function which is array of size [nx*ny*nz]
|
|
|
* `dfdz` - pointer to output derivative function which is array of size [nx*ny*nz]
|
|
|
* `return` - error code
|
|
|
|
|
|
`dfdz` can be the same pointer as `f`, then result overwrites input.
|
|
|
### Second 3D derivative functions:
|
|
|
```c
|
|
|
int wderiv_d2fdx2_3d_r(double *f, double *d2fdx2)
|
|
|
```
|
|
|
Function computes second derivative with respect to $`x`$ of 3D real function $`f(x,y,z)`$: $`\frac{\partial^2 f}{\partial x^2}`$.
|
|
|
* `f` - pointer to input function which is array of size [nx\*ny\*nz]
|
|
|
* `d2fdx2` - pointer to output derivative function which is array of size [nx\*ny\*nz]
|
|
|
* `return` - error code
|
|
|
|
|
|
`d2fdx2` can be the same pointer as `f`, then result overwrites input.
|
|
|
|
|
|
```c
|
|
|
int wderiv_d2fdy2_3d_r(double *f, double *d2fdy2)
|
|
|
```
|
|
|
Function computes second derivative with respect to $`y`$ of 3D real function $`f(x,y,z)`$: $`\frac{\partial^2 f}{\partial y^2}`$.
|
|
|
* `f` - pointer to input function which is array of size [nx\*ny\*nz]
|
|
|
* `d2fdy2` - pointer to output derivative function which is array of size [nx\*ny\*nz]
|
|
|
* `return` - error code
|
|
|
|
|
|
`d2fdy2` can be the same pointer as `f`, then result overwrites input.
|
|
|
|
|
|
```c
|
|
|
int wderiv_d2fdz2_3d_r(double *f, double *d2fdz2)
|
|
|
```
|
|
|
Function computes second derivative with respect to $`z`$ of 3D real function $`f(x,y,z)`$: $`(\frac{d^2f}{dz^2})`$.
|
|
|
* `f` - pointer to input function which is array of size [nx*ny*nz]
|
|
|
* `d2fdz2` - pointer to output derivative function which is array of size [nx*ny*nz]
|
|
|
* `return` - error code
|
|
|
|
|
|
`d2fdz2` can be the same pointer as `f`, then result overwrites input.
|
|
|
|
|
|
/**
|
|
|
* Function computes gradient
|
... | ... | |