Files | |
file | math_tools.f |
Set of math related tools for KTH modules. | |
Functions/Subroutines | |
real function | math_stepf (x) |
Step function. More... | |
real function | math_ran_dst (ix, iy, iz, ieg, xl, fcoeff) |
Give random distribution depending on position. More... | |
real function | math_ran_rng (lower, upper) |
Give random number in the defined range. More... | |
real function | math_zbqlu01 () |
Marsaglia-Zaman random number generator. More... | |
subroutine | math_zbqlini (seed) |
Initialise Marsaglia-Zaman random number generator. More... | |
subroutine | math_edgind (istart, istop, iskip, iedg, nx, ny, nz) |
Give bounds for loops to extract edge. More... | |
subroutine | math_etovec (vec, edg, vfld, nx, ny, nz) |
Extract element edge. More... | |
subroutine | math_rot3da (vo, vi, va, an) |
3D rotation of a vector along given axis More... | |
subroutine math_edgind | ( | integer | istart, |
integer | istop, | ||
integer | iskip, | ||
integer | iedg, | ||
integer | nx, | ||
integer | ny, | ||
integer | nz | ||
) |
Give bounds for loops to extract edge.
[out] | istart | lower loop bound |
[out] | istop | upper loop bound |
[out] | iskip | stride |
[in] | iedg | edge number |
[in] | nx,ny,nz | element size |
subroutine math_etovec | ( | real, dimension(nx) | vec, |
integer | edg, | ||
real, dimension(nx*ny*nz) | vfld, | ||
integer | nx, | ||
integer | ny, | ||
integer | nz | ||
) |
Extract element edge.
[out] | vec | vector containg edge values |
[in] | edg | edge number |
[in] | vfld | pointer to singe element in the field |
[in] | nx,ny,nz | element size |
real function math_ran_dst | ( | integer | ix, |
integer | iy, | ||
integer | iz, | ||
integer | ieg, | ||
real, dimension(ldim) | xl, | ||
real, dimension(3) | fcoeff | ||
) |
Give random distribution depending on position.
The original Nek5000 rundom number generator is implementted in ran1. This totally ad-hoc random number generator below could be preferable to the origina one for the simple reason that it gives the same initial cindition independent of the number of processors, which is important for code verification.
[in] | ix,iy,iz | GLL point index |
[in] | ieg | global element number |
[in] | xl | physical point coordinates |
[in] | fcoeff | function coefficients |
real function math_ran_rng | ( | real | lower, |
real | upper | ||
) |
Give random number in the defined range.
[in] | lower,upper | range for random numer |
subroutine math_rot3da | ( | real, dimension(ldim) | vo, |
real, dimension(ldim) | vi, | ||
real, dimension(ldim) | va, | ||
real | an | ||
) |
3D rotation of a vector along given axis
[in] | vo | output vector |
[in] | vi | input vector |
[in] | va | rotation axis |
[in] | an | rotation angle |
real function math_stepf | ( | real | x | ) |
Step function.
Continuous step function:
\begin{eqnarray*} stepf(x) = \left\{ \begin{array}{ll} 0 &\mbox{ if $x \leq x_{min}$} \\ \left(1+e^{\left((x-1)^{-1} + x^{-1}\right)}\right)^{-1} &\mbox{ if $x \leq x_{max}$} \\ 1 &\mbox{ if $x > x_{max}$} \end{array} \right. \end{eqnarray*}
with \( x_{min} = 0.02\) and \( x_{max}=0.98\)
[in] | x | function argument |
subroutine math_zbqlini | ( | integer | seed | ) |
Initialise Marsaglia-Zaman random number generator.
To initialise the random number generator - either repeatably or nonrepeatably.
[in] | seed | number which generates elements of the array ZBQLIX |
real function math_zbqlu01 |
Marsaglia-Zaman random number generator.
Returns a uniform random number between 0 & 1, using a Marsaglia-Zaman type subtract-with-borrow generator.