fury_uom_reference32 Module

module~~fury_uom_reference32~~UsesGraph module~fury_uom_reference32 fury_uom_reference32 module~fury_uom_symbol32 fury_uom_symbol32 module~fury_uom_symbol32->module~fury_uom_reference32 module~penf~3 penf module~penf~3->module~fury_uom_reference32 module~penf~3->module~fury_uom_symbol32 module~stringifor stringifor module~penf~3->module~stringifor module~fury_uom_converter fury_uom_converter module~penf~3->module~fury_uom_converter module~stringifor_string_t stringifor_string_t module~penf~3->module~stringifor_string_t module~befor64 befor64 module~penf~3->module~befor64 module~befor64_pack_data_m~2 befor64_pack_data_m module~penf~3->module~befor64_pack_data_m~2 iso_fortran_env iso_fortran_env iso_fortran_env->module~fury_uom_reference32 iso_fortran_env->module~fury_uom_symbol32 module~penf_stringify~3 penf_stringify iso_fortran_env->module~penf_stringify~3 module~stringifor->module~fury_uom_reference32 module~stringifor->module~fury_uom_symbol32 module~fury_uom_converter->module~fury_uom_reference32 module~fury_uom_converter->module~fury_uom_symbol32 module~penf_global_parameters_variables penf_global_parameters_variables module~penf_global_parameters_variables->module~penf~3 module~penf_b_size~4 penf_b_size module~penf_global_parameters_variables->module~penf_b_size~4 module~penf_global_parameters_variables->module~penf_stringify~3 module~penf_b_size~4->module~penf~3 module~penf_b_size~4->module~penf_stringify~3 module~penf_stringify~3->module~penf~3 module~stringifor_string_t->module~stringifor module~befor64->module~stringifor_string_t module~befor64_pack_data_m~2->module~befor64
Help

FURY class definition of unit reference with float32 kind.

FURY class implementation of unit reference with generic kind.

Used By

module~~fury_uom_reference32~~UsedByGraph module~fury_uom_reference32 fury_uom_reference32 module~fury_uom32 fury_uom32 module~fury_uom_reference32->module~fury_uom32 module~fury_system_abstract32 fury_system_abstract32 module~fury_uom_reference32->module~fury_system_abstract32 module~fury fury module~fury_uom_reference32->module~fury module~fury_mixed_kinds fury_mixed_kinds module~fury_uom_reference32->module~fury_mixed_kinds module~fury_uom32->module~fury_system_abstract32 module~fury_uom32->module~fury module~fury_uom32->module~fury_mixed_kinds module~fury_system_si32 fury_system_si32 module~fury_uom32->module~fury_system_si32 module~fury_qreal32 fury_qreal32 module~fury_uom32->module~fury_qreal32 module~fury_system_abstract32->module~fury module~fury_system_abstract32->module~fury_system_si32 program~fury_test_qreal_div_mixed fury_test_qreal_div_mixed module~fury->program~fury_test_qreal_div_mixed program~fury_test_qreal_eq fury_test_qreal_eq module~fury->program~fury_test_qreal_eq program~fury_test_uom_div fury_test_uom_div module~fury->program~fury_test_uom_div program~fury_test_qreal_eq_mixed fury_test_qreal_eq_mixed module~fury->program~fury_test_qreal_eq_mixed program~fury_test_uom_mul fury_test_uom_mul module~fury->program~fury_test_uom_mul program~fury_test_qreal_mul fury_test_qreal_mul module~fury->program~fury_test_qreal_mul program~fury_test_bolt32 fury_test_bolt32 module~fury->program~fury_test_bolt32 program~fury_test_uom_sub_failure fury_test_uom_sub_failure module~fury->program~fury_test_uom_sub_failure program~fury_test_qreal_mul_mixed fury_test_qreal_mul_mixed module~fury->program~fury_test_qreal_mul_mixed program~fury_test_bolt64 fury_test_bolt64 module~fury->program~fury_test_bolt64 program~fury_test_qreal_not_eq fury_test_qreal_not_eq module~fury->program~fury_test_qreal_not_eq program~fury_test_system_si fury_test_system_si module~fury->program~fury_test_system_si program~fury_test_uom_sub fury_test_uom_sub module~fury->program~fury_test_uom_sub program~fury_test_qreal_not_eq_mixed fury_test_qreal_not_eq_mixed module~fury->program~fury_test_qreal_not_eq_mixed program~fury_test_qreal_sub_failure fury_test_qreal_sub_failure module~fury->program~fury_test_qreal_sub_failure program~fury_test_qreal_pow fury_test_qreal_pow module~fury->program~fury_test_qreal_pow program~fury_test_uom_aliases fury_test_uom_aliases module~fury->program~fury_test_uom_aliases program~fury_test_qreal_sub fury_test_qreal_sub module~fury->program~fury_test_qreal_sub program~fury_test_uom_parse_failure fury_test_uom_parse_failure module~fury->program~fury_test_uom_parse_failure program~fury_test_qreal_add_aliases_failure fury_test_qreal_add_aliases_failure module~fury->program~fury_test_qreal_add_aliases_failure program~fury_test_qreal_add_failure fury_test_qreal_add_failure module~fury->program~fury_test_qreal_add_failure module~dbm_to_mw_converter dBm_to_mW_converter module~fury->module~dbm_to_mw_converter program~fury_test_qreal_sub_mixed fury_test_qreal_sub_mixed module~fury->program~fury_test_qreal_sub_mixed program~fury_test_qreal_add_mixed fury_test_qreal_add_mixed module~fury->program~fury_test_qreal_add_mixed program~fury_test_qreal_add fury_test_qreal_add module~fury->program~fury_test_qreal_add program~fury_test_qreal_sub_mixed_failure fury_test_qreal_sub_mixed_failure module~fury->program~fury_test_qreal_sub_mixed_failure program~fury_test_qreal_add_mixed_failure fury_test_qreal_add_mixed_failure module~fury->program~fury_test_qreal_add_mixed_failure program~fury_test_qreal_aliases fury_test_qreal_aliases module~fury->program~fury_test_qreal_aliases program~fury_test_uom_add fury_test_uom_add module~fury->program~fury_test_uom_add program~fury_test_qreal_assign fury_test_qreal_assign module~fury->program~fury_test_qreal_assign program~fury_test_uom_add_failure fury_test_uom_add_failure module~fury->program~fury_test_uom_add_failure program~fury_test_uom_assign fury_test_uom_assign module~fury->program~fury_test_uom_assign program~fury_test_qreal_conversions_complex fury_test_qreal_conversions_complex module~fury->program~fury_test_qreal_conversions_complex program~fury_test_qreal_conversions_si fury_test_qreal_conversions_si module~fury->program~fury_test_qreal_conversions_si program~fury_test_uom_pow fury_test_uom_pow module~fury->program~fury_test_uom_pow program~fury_test_qreal_conversions_simple fury_test_qreal_conversions_simple module~fury->program~fury_test_qreal_conversions_simple program~fury_test_uom_assign_failure fury_test_uom_assign_failure module~fury->program~fury_test_uom_assign_failure program~fury_test_qreal_div fury_test_qreal_div module~fury->program~fury_test_qreal_div module~fury_mixed_kinds->module~fury module~fury_system_si32->module~fury module~fury_qreal32->module~fury_system_abstract32 module~fury_qreal32->module~fury module~fury_qreal32->module~fury_mixed_kinds module~fury_qreal32->module~fury_system_si32 module~dbm_to_mw_converter->program~fury_test_qreal_conversions_complex
Help


Interfaces

public interface uom_reference

Overloading uom_reference name with a creator function.

  • private function creator_from_string(source) result(reference)

    Create an instance of uom_reference.

    Arguments

    Type IntentOptional AttributesName
    character(len=*), intent(in) :: source

    Source input string definition of the symbol.

    Return Value type(uom_reference)

    The uom reference.


Derived Types

type, public :: uom_reference

Unit of measure reference class.

Components

TypeVisibility AttributesNameInitial
type(uom_symbol), private, allocatable:: aliases(:)

Uom symbol aliases, e.g. "m = meter = metre" for metres.

integer(kind=I_P), private :: aliases_number =0_I_P

Number of defined symbol aliases.

type(uom_symbol), private :: dimensions

Dimensions of the symbol, e.g. "length" for meter.

Constructor

Overloading uom_reference name with a creator function.

private function creator_from_string(source)

Create an instance of uom_reference.

Type-Bound Procedures

procedure, public, pass(self) :: dimensionality

Return a string representation of the symbol dimensions.

procedure, public, pass(self) :: get_aliases

Return the aliases list.

procedure, public, pass(self) :: get_dimensions

Return the dimensions.

procedure, public, pass(self) :: get_main_symbol

Return the main symbol, i.e. aliases(1).

procedure, public, pass(self) :: is_defined

Check if the reference is defined.

procedure, public, pass(self) :: parse

Parse reference from string.

procedure, public, pass(self) :: prefixed

Return a prefixed reference.

procedure, public, pass(self) :: set

Set reference.

procedure, public, pass(self) :: set_alias_conversion

Set alias conversion formula.

procedure, public, pass(self) :: stringify

Return a string representation of the reference.

procedure, public, pass(self) :: to

Convert magnitude with respect another alias.

procedure, public, pass(self) :: unset

Unset reference.

generic, public :: assignment(=) => assign_uom_reference

Overloading = assignment.

generic, public :: operator(/) => div

Overloading / operator.

generic, public :: operator(*) => mul

Overloading * operator.

generic, public :: operator(**) => pow_R8P, pow_R4P, pow_I8P, pow_I4P, pow_I2P, pow_I1P

Overloading ** operator.

generic, public :: operator(==) => is_equal

Overloading == operator.

generic, public :: operator(.compatible.) => is_compatible

Definition of .compatible. operator.

procedure, private, pass(self) :: is_compatible

Check if the reference is compatible with another one.

procedure, private, pass(self) :: is_equal

Check if the reference is equal with another one.

procedure, private, pass(lhs) :: assign_uom_reference

uom_reference = uom_reference assignment.

procedure, private, pass(lhs) :: div

uom_reference / uom_reference operator.

procedure, private, pass(lhs) :: mul

uom_reference * uom_reference operator.

procedure, private, pass(lhs) :: pow_R16P

uom_reference ** real(R16P) operator.

procedure, private, pass(lhs) :: pow_R8P

uom_reference ** real(R8P) operator.

procedure, private, pass(lhs) :: pow_R4P

uom_reference ** real(R4P) operator.

procedure, private, pass(lhs) :: pow_I8P

uom_reference ** integer(I8P) operator.

procedure, private, pass(lhs) :: pow_I4P

uom_reference ** integer(I4P) operator.

procedure, private, pass(lhs) :: pow_I2P

uom_reference ** integer(I2P) operator.

procedure, private, pass(lhs) :: pow_I1P

uom_reference ** integer(I1P) operator.


Functions

private function creator_from_string(source) result(reference)

Create an instance of uom_reference.

Arguments

Type IntentOptional AttributesName
character(len=*), intent(in) :: source

Source input string definition of the symbol.

Return Value type(uom_reference)

The uom reference.

private pure function dimensionality(self) result(raw)

Return a string representation of uom_reference dimensions.

Arguments

Type IntentOptional AttributesName
class(uom_reference), intent(in) :: self

The uom reference.

Return Value character(len=:), allocatable

Raw characters data.

private pure function get_main_symbol(self) result(alias)

Return the main symbol, i.e. aliases(1).

Arguments

Type IntentOptional AttributesName
class(uom_reference), intent(in) :: self

The uom reference.

Return Value type(uom_symbol)

First compatible alias.

private elemental function is_defined(self)

Check if uom_reference is defined.

Arguments

Type IntentOptional AttributesName
class(uom_reference), intent(in) :: self

The uom reference.

Return Value logical

Check result.

private elemental function prefixed(self, prefixes)

Return a prefixed reference.

Arguments

Type IntentOptional AttributesName
class(uom_reference), intent(in) :: self

The uom reference.

type(uom_reference), intent(in) :: prefixes

Other reference used for prefixing.

Return Value type(uom_reference)

The prefixed reference.

private pure function stringify(self, with_dimensions, with_aliases, protect_aliases, compact_reals) result(raw)

Return a string representation of uom_reference.

Arguments

Type IntentOptional AttributesName
class(uom_reference), intent(in) :: self

The uom reference.

logical, intent(in), optional :: with_dimensions

Flag to activate dimensions printing.

logical, intent(in), optional :: with_aliases

Flag to activate aliases printing.

logical, intent(in), optional :: protect_aliases

Flag to activate aliases printing in protected mode.

logical, intent(in), optional :: compact_reals

Flag to activate real numbers compacting.

Return Value character(len=:), allocatable

Raw characters data.

private elemental function is_compatible(self, other)

Check if uom_reference is compatible with another one.

Arguments

Type IntentOptional AttributesName
class(uom_reference), intent(in) :: self

The uom reference.

type(uom_reference), intent(in) :: other

The other reference.

Return Value logical

Check result.

private elemental function is_equal(self, other)

Check if uom_reference is equal with another one.

Arguments

Type IntentOptional AttributesName
class(uom_reference), intent(in) :: self

The uom reference.

type(uom_reference), intent(in) :: other

The other reference.

Return Value logical

Check result.

private pure function div(lhs, rhs) result(opr)

uom_reference / uom_reference operator.

Arguments

Type IntentOptional AttributesName
class(uom_reference), intent(in) :: lhs

Left hand side.

type(uom_reference), intent(in) :: rhs

Right hand side.

Return Value type(uom_reference)

Operator result.

private pure function mul(lhs, rhs) result(opr)

uom_reference * uom_reference operator.

Arguments

Type IntentOptional AttributesName
class(uom_reference), intent(in) :: lhs

Left hand side.

type(uom_reference), intent(in) :: rhs

Right hand side.

Return Value type(uom_reference)

Operator result.

private pure function pow_R16P(lhs, rhs) result(opr)

uom_reference ** real(R16P) operator.

Arguments

Type IntentOptional AttributesName
class(uom_reference), intent(in) :: lhs

Left hand side.

real(kind=R16P), intent(in) :: rhs

Right hand side.

Return Value type(uom_reference)

Operator result.

private pure function pow_R8P(lhs, rhs) result(opr)

uom_reference ** real(R8P) operator.

Arguments

Type IntentOptional AttributesName
class(uom_reference), intent(in) :: lhs

Left hand side.

real(kind=R8P), intent(in) :: rhs

Right hand side.

Return Value type(uom_reference)

Operator result.

private pure function pow_R4P(lhs, rhs) result(opr)

uom_reference ** real(R4P) operator.

Arguments

Type IntentOptional AttributesName
class(uom_reference), intent(in) :: lhs

Left hand side.

real(kind=R4P), intent(in) :: rhs

Right hand side.

Return Value type(uom_reference)

Operator result.

private pure function pow_I8P(lhs, rhs) result(opr)

uom_reference ** integer(I8P) operator.

Arguments

Type IntentOptional AttributesName
class(uom_reference), intent(in) :: lhs

Left hand side.

integer(kind=I8P), intent(in) :: rhs

Right hand side.

Return Value type(uom_reference)

Operator result.

private pure function pow_I4P(lhs, rhs) result(opr)

uom_reference ** integer(I4P) operator.

Arguments

Type IntentOptional AttributesName
class(uom_reference), intent(in) :: lhs

Left hand side.

integer(kind=I4P), intent(in) :: rhs

Right hand side.

Return Value type(uom_reference)

Operator result.

private pure function pow_I2P(lhs, rhs) result(opr)

uom_reference ** integer(I2P) operator.

Arguments

Type IntentOptional AttributesName
class(uom_reference), intent(in) :: lhs

Left hand side.

integer(kind=I2P), intent(in) :: rhs

Right hand side.

Return Value type(uom_reference)

Operator result.

private pure function pow_I1P(lhs, rhs) result(opr)

uom_reference ** integer(I1P) operator.

Arguments

Type IntentOptional AttributesName
class(uom_reference), intent(in) :: lhs

Left hand side.

integer(kind=I1P), intent(in) :: rhs

Right hand side.

Return Value type(uom_reference)

Operator result.


Subroutines

private pure subroutine get_aliases(self, aliases)

Return the aliases list.

Arguments

Type IntentOptional AttributesName
class(uom_reference), intent(in) :: self

The uom reference.

type(uom_symbol), intent(out), allocatable:: aliases(:)

Aliases.

private pure subroutine get_dimensions(self, dimensions)

Return the dimensions.

Arguments

Type IntentOptional AttributesName
class(uom_reference), intent(in) :: self

The uom reference.

type(uom_symbol), intent(out) :: dimensions

Dimensions.

private subroutine parse(self, source)

Parse uom_reference definition from string.

Arguments

Type IntentOptional AttributesName
class(uom_reference), intent(inout) :: self

The uom reference.

character(len=*), intent(in) :: source

Source input string definition of symbol.

private pure subroutine set(self, aliases, dimensions)

Set reference.

Arguments

Type IntentOptional AttributesName
class(uom_reference), intent(inout) :: self

The uom reference.

type(uom_symbol), intent(in), optional :: aliases(1:)

Reference aliases.

type(uom_symbol), intent(in), optional :: dimensions

Dimensions of the reference, e.g. "frequency" for Hz.

private pure subroutine set_alias_conversion(self, alias_index, convert)

Set alias conversion formula.

Arguments

Type IntentOptional AttributesName
class(uom_reference), intent(inout) :: self

The uom reference.

integer(kind=I_P), intent(in) :: alias_index

Index of the alias to which set the conversion formula.

class(uom_converter), intent(in) :: convert

Generic conversion alias formula user-supplied.

private elemental subroutine to(self, other, magnitude, converted, is_found)

Convert magnitude with respect another alias.

Arguments

Type IntentOptional AttributesName
class(uom_reference), intent(in) :: self

The uom reference.

type(uom_reference), intent(in) :: other

Other unit reference used for conversion.

real(kind=RKP), intent(in) :: magnitude

Magnitude to be converted.

real(kind=RKP), intent(out) :: converted

Converted magnitude.

logical, intent(out) :: is_found

Flag to check if a conversion alias has been found.

private elemental subroutine unset(self)

Unset reference.

Arguments

Type IntentOptional AttributesName
class(uom_reference), intent(inout) :: self

The uom reference.

private pure subroutine assign_uom_reference(lhs, rhs)

uom_reference = uom_reference assignment.

Arguments

Type IntentOptional AttributesName
class(uom_reference), intent(inout) :: lhs

Left hand side.

type(uom_reference), intent(in) :: rhs

Right hand side.