helpers_m Module

Module implementing useful routines for unit testing



Interfaces

public interface almost_equal

Check equality between single or double precision numbers

  • public function almost_equal_single(a, b, rtol, atol) result(res)

    Checks whether (a-b) / max(a,eps) within tolerance

    Arguments

    Type IntentOptional Attributes Name
    real(kind=SP), intent(in) :: a

    values to be compared

    real(kind=SP), intent(in) :: b

    values to be compared

    real(kind=SP) :: rtol

    relative tolerance

    real(kind=SP) :: atol

    minumum value for normalisation (~absolute tolerance for rtol=0)

    Return Value logical

  • public function almost_equal_double(a, b, rtol, atol) result(res)

    Checks whether (a-b) / max(a,eps) within tolerance

    Arguments

    Type IntentOptional Attributes Name
    real(kind=DP), intent(in) :: a

    values to be compared

    real(kind=DP), intent(in) :: b

    values to be compared

    real(kind=DP) :: rtol

    relative tolerance

    real(kind=DP) :: atol

    minumum value for normalisation (~absolute tolerance for rtol=0)

    Return Value logical


Functions

public function almost_equal_single(a, b, rtol, atol) result(res)

Checks whether (a-b) / max(a,eps) within tolerance

Arguments

Type IntentOptional Attributes Name
real(kind=SP), intent(in) :: a

values to be compared

real(kind=SP), intent(in) :: b

values to be compared

real(kind=SP) :: rtol

relative tolerance

real(kind=SP) :: atol

minumum value for normalisation (~absolute tolerance for rtol=0)

Return Value logical

public function almost_equal_double(a, b, rtol, atol) result(res)

Checks whether (a-b) / max(a,eps) within tolerance

Arguments

Type IntentOptional Attributes Name
real(kind=DP), intent(in) :: a

values to be compared

real(kind=DP), intent(in) :: b

values to be compared

real(kind=DP) :: rtol

relative tolerance

real(kind=DP) :: atol

minumum value for normalisation (~absolute tolerance for rtol=0)

Return Value logical

public function exclude_third_quadrant_circular(x, y, phi)

Excludes third quadrant in field line tracing for circular equilibrium

Arguments

Type IntentOptional Attributes Name
real(kind=FP), intent(in) :: x
real(kind=FP), intent(in) :: y
real(kind=FP), intent(in) :: phi

Return Value logical

public function exclude_third_quadrant_cerfons(x, y, phi)

Excludes third quadrant in field line tracing for cerfons equilibrium

Arguments

Type IntentOptional Attributes Name
real(kind=FP), intent(in) :: x
real(kind=FP), intent(in) :: y
real(kind=FP), intent(in) :: phi

Return Value logical


Subroutines

public subroutine digit_sum_csr(mat, isum, jsum, valsum)

Calculates the digit sum of the csr matrix mat

Arguments

Type IntentOptional Attributes Name
type(csrmat_t), intent(in) :: mat

csr matrix

integer, intent(out) :: isum

sum over i index of matrix

integer, intent(out) :: jsum

sum over j index of matrix

real(kind=FP), intent(out) :: valsum

sum over values of matrix