elementary_functions_m Module

Elementary mathematical functions


Uses

  • module~~elementary_functions_m~~UsesGraph module~elementary_functions_m elementary_functions_m module~precision_m precision_m module~elementary_functions_m->module~precision_m iso_c_binding iso_c_binding module~precision_m->iso_c_binding iso_fortran_env iso_fortran_env module~precision_m->iso_fortran_env mpi mpi module~precision_m->mpi netcdf netcdf module~precision_m->netcdf

Used by

  • module~~elementary_functions_m~~UsedByGraph module~elementary_functions_m elementary_functions_m module~carthy_equilibrium_m carthy_equilibrium_m module~carthy_equilibrium_m->module~elementary_functions_m module~cerfons_equilibrium_m cerfons_equilibrium_m module~cerfons_equilibrium_m->module~elementary_functions_m module~circular_equilibrium_m circular_equilibrium_m module~circular_equilibrium_m->module~elementary_functions_m module~dommaschk_equilibrium_m dommaschk_equilibrium_m module~dommaschk_equilibrium_m->module~elementary_functions_m module~immersed_rho_m immersed_rho_m module~immersed_rho_m->module~elementary_functions_m module~immersed_trace_m immersed_trace_m module~immersed_trace_m->module~elementary_functions_m module~numerical_equilibrium_m numerical_equilibrium_m module~numerical_equilibrium_m->module~elementary_functions_m module~parbnd_taylor_m parbnd_taylor_m module~parbnd_taylor_m->module~elementary_functions_m program~test_diffusion test_diffusion program~test_diffusion->module~elementary_functions_m module~equilibrium_factory_m equilibrium_factory_m program~test_diffusion->module~equilibrium_factory_m module~dommaschk_equilibrium_netcdf_s dommaschk_equilibrium_netcdf_s module~dommaschk_equilibrium_netcdf_s->module~dommaschk_equilibrium_m module~equilibrium_factory_m->module~carthy_equilibrium_m module~equilibrium_factory_m->module~cerfons_equilibrium_m module~equilibrium_factory_m->module~circular_equilibrium_m module~equilibrium_factory_m->module~dommaschk_equilibrium_m module~equilibrium_factory_m->module~numerical_equilibrium_m module~immersed_factory_m immersed_factory_m module~immersed_factory_m->module~immersed_rho_m module~immersed_factory_m->module~immersed_trace_m module~initialise_numerical_equilibrium_s initialise_numerical_equilibrium_s module~initialise_numerical_equilibrium_s->module~numerical_equilibrium_m module~map_factory_s map_factory_s module~map_factory_s->module~dommaschk_equilibrium_m module~parbnd_taylor_netcdf_s parbnd_taylor_netcdf_s module~parbnd_taylor_netcdf_s->module~parbnd_taylor_m module~polar_grid_m polar_grid_m module~polar_grid_m->module~circular_equilibrium_m module~testfunctions_m testfunctions_m module~testfunctions_m->module~circular_equilibrium_m module~testfunctions_m->module~numerical_equilibrium_m module~polar_grid_s polar_grid_s module~polar_grid_s->module~polar_grid_m module~polar_map_factory_m polar_map_factory_m module~polar_map_factory_m->module~polar_grid_m module~zonal_averages_factory_m zonal_averages_factory_m module~zonal_averages_factory_m->module~polar_grid_m program~benchmark_helmholtz_solvers benchmark_helmholtz_solvers program~benchmark_helmholtz_solvers->module~equilibrium_factory_m program~benchmark_helmholtz_solvers->module~testfunctions_m program~diagnose_poincare diagnose_poincare program~diagnose_poincare->module~equilibrium_factory_m

Functions

public pure function factorial(n) result(res)

Factorial of integer n; wrapper around intrinsic gamma function. Output is real to increase overflow threshold. For overflow case, result = Infinity; for n < 0, result = NaN.

Arguments

Type IntentOptional Attributes Name
integer, intent(in) :: n

Integer to take the factorial of

Return Value real(kind=fp)

public pure function gaussian(x0, wx, x)

Gaussian exp[-(x-x0)^2/wx^2]

Arguments

Type IntentOptional Attributes Name
real(kind=FP), intent(in) :: x0

Center of Gaussion

real(kind=FP), intent(in) :: wx

Width of Gaussion

real(kind=FP), intent(in) :: x

Position where Gaussian is evaluated

Return Value real(kind=fp)

public pure function step_tanh(x0, x, wx)

Smooth step function based on hyperbolic tangent

Arguments

Type IntentOptional Attributes Name
real(kind=FP), intent(in) :: x0

Position of center of step

real(kind=FP), intent(in) :: x

Position where function is evaluated

real(kind=FP), intent(in), optional :: wx

Width of step, if set to zero yields heaviside function

Return Value real(kind=fp)

public pure function heaviside(x0, x)

Heaviside function, i.e. discontinuous step function

Arguments

Type IntentOptional Attributes Name
real(kind=FP), intent(in) :: x0

Position of step

real(kind=FP), intent(in) :: x

Position where function is evaluated

Return Value real(kind=fp)

public pure function step_hermite(x0, x, wx, order)

Smooth step function based on Hermite interpolation exactly zero for x < wx/2 and one for x > wx/2 see https://en.wikipedia.org/wiki/Smoothstep

Arguments

Type IntentOptional Attributes Name
real(kind=FP), intent(in) :: x0

Position of step

real(kind=FP), intent(in) :: x

Position where function is evaluated

real(kind=FP), intent(in), optional :: wx

Width of step

integer, intent(in), optional :: order

Order of smoothstep function Default value 2

Return Value real(kind=fp)

public pure function binomial_coefficient_r(n, k)

Computes binomial coefficient n over k Returns -1 for invalid input, i.e. n or k < 0 or k > n

Arguments

Type IntentOptional Attributes Name
integer, intent(in) :: n

Top number of binomal coefficient

integer, intent(in) :: k

Bottom number of binomal coefficient

Return Value real(kind=fp)