Skip to content

GitLab

  • Menu
Projects Groups Snippets
    • Loading...
  • Help
    • Help
    • Support
    • Community forum
    • Submit feedback
    • Contribute to GitLab
  • Sign in
  • wderiv wderiv
  • Project information
    • Project information
    • Activity
    • Labels
    • Members
  • Repository
    • Repository
    • Files
    • Commits
    • Branches
    • Tags
    • Contributors
    • Graph
    • Compare
  • Issues 1
    • Issues 1
    • List
    • Boards
    • Service Desk
    • Milestones
  • Merge requests 0
    • Merge requests 0
  • CI/CD
    • CI/CD
    • Pipelines
    • Jobs
    • Schedules
  • Deployments
    • Deployments
    • Environments
    • Releases
  • Monitor
    • Monitor
    • Incidents
  • Packages & Registries
    • Packages & Registries
    • Package Registry
    • Container Registry
    • Infrastructure Registry
  • Analytics
    • Analytics
    • CI/CD
    • Repository
    • Value stream
  • Wiki
    • Wiki
  • Snippets
    • Snippets
  • Activity
  • Graph
  • Create a new issue
  • Jobs
  • Commits
  • Issue Boards
Collapse sidebar
  • wtools
  • wderivwderiv
  • Wiki
  • Home

Last edited by Bartosz Ruszczak May 30, 2021
Page history
This is an old version of this page. You can view the most recent version or browse the history.

Home

This library provides a set of functions for computation derivatives using spectral methods. The lib depends on FFTW library. The library is compatible with W-SLDA Toolkit however, it can be used as standalone lib. It is written in C99 standard.

Name convention

Generic name of a function is wderiv_operation_Nd_t, where:

  • wderiv: fixed, function belongs to wderiv lib,
  • operation:
    • dfdx : \frac{\partial f}{\partial x}
    • dfdy : \frac{\partial f}{\partial y}
    • dfdz : \frac{\partial f}{\partial z}
    • d2fdx2 : \frac{\partial^2 f}{\partial x^2}
    • d2fdy2 : \frac{\partial^2 f}{\partial y^2}
    • d2fdz2 : \frac{\partial^2 f}{\partial z^2}
    • dnfdxn : \frac{\partial^n f}{\partial x^n}
    • dnfdyn : \frac{\partial^n f}{\partial y^n}
    • dnfdzn : \frac{\partial^n f}{\partial z^n}
    • gradient : (\frac{\partial f}{\partial x}, \frac{\partial f}{\partial y}, \frac{\partial f}{\partial z})
    • gradient2 : |\nabla f|^2, see here for computation details
    • laplace : \frac{\partial^2 f}{\partial x^2} + \frac{\partial^2 f}{\partial y^2} + \frac{\partial^2 f}{\partial z^2}
    • divergence : \frac{\partial f}{\partial x} + \frac{\partial f}{\partial y} + \frac{\partial f}{\partial z}
    • curl : (\frac{\partial f_y}{\partial z} - \frac{\partial f_z}{\partial y},\frac{\partial f_z}{\partial x} - \frac{\partial f_x}{\partial z},\frac{\partial f_x}{\partial y} - \frac{\partial f_y}{\partial x})
  • N:
    • 1 for 1D problems
    • 2 for 2D problems
    • 3 for 3D problems
  • t:
    • r for real problems
    • c for complex problems

Sample declarations

/**
 * 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);

/**
 * Function computes gradient
 * 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)
 * @param dfdy pointer to function, array of size [nx*ny*nz] (OUTPUT)
 * @param dfdz pointer to function, array of size [nx*ny*nz] (OUTPUT)
 * @return error code
 * */
int wderiv_gradient_3d_r(double *f, double *dfdx, double *dfdy, double *dfdz);

/**
 * Function computes second derivative with respect to z (d^2f/dz^2)
 * of 3D complex function f(x,y,z)   
 * @param f pointer to function, array of size [nx*ny*nz] (INPUT)
 * @param d2fdz2 pointer to function, array of size [nx*ny*nz] (OUTPUT)
 *                NOTE: d2fdz2 can be the same pointer as f, then result overwrites input 
 * @return error code
 * */
int wderiv_d2fdz2_3d_c(double complex *f, double complex *d2fdz2);

/**
 * Function computes n-th derivative with respect to x (d^nf/dx^n)
 * of 1D complex function f(x)   
 * @param n order of derivative
 * @param f pointer to function, array of size [nx] (INPUT)
 * @param dnfdxn pointer to function, array of size [nx] (OUTPUT)
 *                NOTE: dnfdxn can be the same pointer as f, then result overwrites input 
 * @return error code
 * */
int wderiv_dnfdxn_1d_c(int n, double complex *f, double complex *dnfdxn);
Clone repository
  • Complex derivatives
  • Gradient square
  • Initialization
  • Real derivatives
  • Home