soa_hash_field Interface

public interface soa_hash_field

Fold the first n elements of one field into a hash accumulator.

Usage: call soa_hash_field(hasher, this%x, n)

Takes the field whole as an allocatable, for the same reason soa_write_field does: a container that has never been allocated has unallocated fields and no slice of one may be formed. An unallocated field, and a zero live count, both contribute nothing, which is the same thing a zero-sized update would do.

Calls

interface~~soa_hash_field~~CallsGraph interface~soa_hash_field soa_hash_field proc~soa_hash64_int32_field soa_hash64_int32_field interface~soa_hash_field->proc~soa_hash64_int32_field proc~soa_hash64_int64_field soa_hash64_int64_field interface~soa_hash_field->proc~soa_hash64_int64_field proc~soa_hash64_logical_field soa_hash64_logical_field interface~soa_hash_field->proc~soa_hash64_logical_field proc~soa_hash64_real_dp_field soa_hash64_real_dp_field interface~soa_hash_field->proc~soa_hash64_real_dp_field proc~soa_hash64_real_sp_field soa_hash64_real_sp_field interface~soa_hash_field->proc~soa_hash64_real_sp_field proc~soa_hash_int32_field soa_hash_int32_field interface~soa_hash_field->proc~soa_hash_int32_field proc~soa_hash_int64_field soa_hash_int64_field interface~soa_hash_field->proc~soa_hash_int64_field proc~soa_hash_logical_field soa_hash_logical_field interface~soa_hash_field->proc~soa_hash_logical_field proc~soa_hash_real_dp_field soa_hash_real_dp_field interface~soa_hash_field->proc~soa_hash_real_dp_field proc~soa_hash_real_sp_field soa_hash_real_sp_field interface~soa_hash_field->proc~soa_hash_real_sp_field none~update~2 array_hash64_t%update proc~soa_hash64_int32_field->none~update~2 proc~soa_hash64_int64_field->none~update~2 proc~soa_hash64_logical_field->none~update~2 proc~soa_hash64_real_dp_field->none~update~2 proc~soa_hash64_real_sp_field->none~update~2 none~update array_hash_t%update proc~soa_hash_int32_field->none~update proc~soa_hash_int64_field->none~update proc~soa_hash_logical_field->none~update proc~soa_hash_real_dp_field->none~update proc~soa_hash_real_sp_field->none~update proc~update_cdp_0 array_hash_t%update_cdp_0 none~update->proc~update_cdp_0 proc~update_cdp_1 array_hash_t%update_cdp_1 none~update->proc~update_cdp_1 proc~update_cdp_2 array_hash_t%update_cdp_2 none~update->proc~update_cdp_2 proc~update_cdp_3 array_hash_t%update_cdp_3 none~update->proc~update_cdp_3 proc~update_char_0 array_hash_t%update_char_0 none~update->proc~update_char_0 proc~update_char_1 array_hash_t%update_char_1 none~update->proc~update_char_1 proc~update_csp_0 array_hash_t%update_csp_0 none~update->proc~update_csp_0 proc~update_csp_1 array_hash_t%update_csp_1 none~update->proc~update_csp_1 proc~update_csp_2 array_hash_t%update_csp_2 none~update->proc~update_csp_2 proc~update_csp_3 array_hash_t%update_csp_3 none~update->proc~update_csp_3 proc~update_int16_0 array_hash_t%update_int16_0 none~update->proc~update_int16_0 proc~update_int16_1 array_hash_t%update_int16_1 none~update->proc~update_int16_1 proc~update_int16_2 array_hash_t%update_int16_2 none~update->proc~update_int16_2 proc~update_int16_3 array_hash_t%update_int16_3 none~update->proc~update_int16_3 proc~update_int32_0 array_hash_t%update_int32_0 none~update->proc~update_int32_0 proc~update_int32_1 array_hash_t%update_int32_1 none~update->proc~update_int32_1 proc~update_int32_2 array_hash_t%update_int32_2 none~update->proc~update_int32_2 proc~update_int32_3 array_hash_t%update_int32_3 none~update->proc~update_int32_3 proc~update_int64_0 array_hash_t%update_int64_0 none~update->proc~update_int64_0 proc~update_int64_1 array_hash_t%update_int64_1 none~update->proc~update_int64_1 proc~update_int64_2 array_hash_t%update_int64_2 none~update->proc~update_int64_2 proc~update_int64_3 array_hash_t%update_int64_3 none~update->proc~update_int64_3 proc~update_int8_0 array_hash_t%update_int8_0 none~update->proc~update_int8_0 proc~update_int8_1 array_hash_t%update_int8_1 none~update->proc~update_int8_1 proc~update_int8_2 array_hash_t%update_int8_2 none~update->proc~update_int8_2 proc~update_int8_3 array_hash_t%update_int8_3 none~update->proc~update_int8_3 proc~update_logical_0 array_hash_t%update_logical_0 none~update->proc~update_logical_0 proc~update_logical_1 array_hash_t%update_logical_1 none~update->proc~update_logical_1 proc~update_logical_2 array_hash_t%update_logical_2 none~update->proc~update_logical_2 proc~update_logical_3 array_hash_t%update_logical_3 none~update->proc~update_logical_3 proc~update_rdp_0 array_hash_t%update_rdp_0 none~update->proc~update_rdp_0 proc~update_rdp_1 array_hash_t%update_rdp_1 none~update->proc~update_rdp_1 proc~update_rdp_2 array_hash_t%update_rdp_2 none~update->proc~update_rdp_2 proc~update_rdp_3 array_hash_t%update_rdp_3 none~update->proc~update_rdp_3 proc~update_rsp_0 array_hash_t%update_rsp_0 none~update->proc~update_rsp_0 proc~update_rsp_1 array_hash_t%update_rsp_1 none~update->proc~update_rsp_1 proc~update_rsp_2 array_hash_t%update_rsp_2 none~update->proc~update_rsp_2 proc~update_rsp_3 array_hash_t%update_rsp_3 none~update->proc~update_rsp_3 proc~update64_cdp_0 array_hash64_t%update64_cdp_0 none~update~2->proc~update64_cdp_0 proc~update64_cdp_1 array_hash64_t%update64_cdp_1 none~update~2->proc~update64_cdp_1 proc~update64_cdp_2 array_hash64_t%update64_cdp_2 none~update~2->proc~update64_cdp_2 proc~update64_cdp_3 array_hash64_t%update64_cdp_3 none~update~2->proc~update64_cdp_3 proc~update64_char_0 array_hash64_t%update64_char_0 none~update~2->proc~update64_char_0 proc~update64_char_1 array_hash64_t%update64_char_1 none~update~2->proc~update64_char_1 proc~update64_csp_0 array_hash64_t%update64_csp_0 none~update~2->proc~update64_csp_0 proc~update64_csp_1 array_hash64_t%update64_csp_1 none~update~2->proc~update64_csp_1 proc~update64_csp_2 array_hash64_t%update64_csp_2 none~update~2->proc~update64_csp_2 proc~update64_csp_3 array_hash64_t%update64_csp_3 none~update~2->proc~update64_csp_3 proc~update64_int16_0 array_hash64_t%update64_int16_0 none~update~2->proc~update64_int16_0 proc~update64_int16_1 array_hash64_t%update64_int16_1 none~update~2->proc~update64_int16_1 proc~update64_int16_2 array_hash64_t%update64_int16_2 none~update~2->proc~update64_int16_2 proc~update64_int16_3 array_hash64_t%update64_int16_3 none~update~2->proc~update64_int16_3 proc~update64_int32_0 array_hash64_t%update64_int32_0 none~update~2->proc~update64_int32_0 proc~update64_int32_1 array_hash64_t%update64_int32_1 none~update~2->proc~update64_int32_1 proc~update64_int32_2 array_hash64_t%update64_int32_2 none~update~2->proc~update64_int32_2 proc~update64_int32_3 array_hash64_t%update64_int32_3 none~update~2->proc~update64_int32_3 proc~update64_int64_0 array_hash64_t%update64_int64_0 none~update~2->proc~update64_int64_0 proc~update64_int64_1 array_hash64_t%update64_int64_1 none~update~2->proc~update64_int64_1 proc~update64_int64_2 array_hash64_t%update64_int64_2 none~update~2->proc~update64_int64_2 proc~update64_int64_3 array_hash64_t%update64_int64_3 none~update~2->proc~update64_int64_3 proc~update64_int8_0 array_hash64_t%update64_int8_0 none~update~2->proc~update64_int8_0 proc~update64_int8_1 array_hash64_t%update64_int8_1 none~update~2->proc~update64_int8_1 proc~update64_int8_2 array_hash64_t%update64_int8_2 none~update~2->proc~update64_int8_2 proc~update64_int8_3 array_hash64_t%update64_int8_3 none~update~2->proc~update64_int8_3 proc~update64_logical_0 array_hash64_t%update64_logical_0 none~update~2->proc~update64_logical_0 proc~update64_logical_1 array_hash64_t%update64_logical_1 none~update~2->proc~update64_logical_1 proc~update64_logical_2 array_hash64_t%update64_logical_2 none~update~2->proc~update64_logical_2 proc~update64_logical_3 array_hash64_t%update64_logical_3 none~update~2->proc~update64_logical_3 proc~update64_rdp_0 array_hash64_t%update64_rdp_0 none~update~2->proc~update64_rdp_0 proc~update64_rdp_1 array_hash64_t%update64_rdp_1 none~update~2->proc~update64_rdp_1 proc~update64_rdp_2 array_hash64_t%update64_rdp_2 none~update~2->proc~update64_rdp_2 proc~update64_rdp_3 array_hash64_t%update64_rdp_3 none~update~2->proc~update64_rdp_3 proc~update64_rsp_0 array_hash64_t%update64_rsp_0 none~update~2->proc~update64_rsp_0 proc~update64_rsp_1 array_hash64_t%update64_rsp_1 none~update~2->proc~update64_rsp_1 proc~update64_rsp_2 array_hash64_t%update64_rsp_2 none~update~2->proc~update64_rsp_2 proc~update64_rsp_3 array_hash64_t%update64_rsp_3 none~update~2->proc~update64_rsp_3 proc~feed_real_dp64 feed_real_dp64 proc~update64_cdp_0->proc~feed_real_dp64 proc~update64_cdp_1->proc~feed_real_dp64 proc~update64_cdp_2->none~update~2 proc~update64_cdp_3->none~update~2 proc~feed_integer64 feed_integer64 proc~update64_char_0->proc~feed_integer64 proc~update64_char_1->none~update~2 proc~feed_real_sp64 feed_real_sp64 proc~update64_csp_0->proc~feed_real_sp64 proc~update64_csp_1->proc~feed_real_sp64 proc~update64_csp_2->none~update~2 proc~update64_csp_3->none~update~2 proc~update64_int16_0->proc~feed_integer64 proc~update64_int16_1->proc~feed_integer64 proc~update64_int16_2->none~update~2 proc~update64_int16_3->none~update~2 proc~update64_int32_0->proc~feed_integer64 proc~update64_int32_1->proc~feed_integer64 proc~update64_int32_2->none~update~2 proc~update64_int32_3->none~update~2 proc~update64_int64_0->proc~feed_integer64 proc~update64_int64_1->proc~feed_integer64 proc~update64_int64_2->none~update~2 proc~update64_int64_3->none~update~2 proc~update64_int8_0->proc~feed_integer64 proc~update64_int8_1->proc~feed_integer64 proc~update64_int8_2->none~update~2 proc~update64_int8_3->none~update~2 proc~feed_logical64 feed_logical64 proc~update64_logical_0->proc~feed_logical64 proc~update64_logical_1->proc~feed_logical64 proc~update64_logical_2->none~update~2 proc~update64_logical_3->none~update~2 proc~update64_rdp_0->proc~feed_real_dp64 proc~update64_rdp_1->proc~feed_real_dp64 proc~update64_rdp_2->none~update~2 proc~update64_rdp_3->none~update~2 proc~update64_rsp_0->proc~feed_real_sp64 proc~update64_rsp_1->proc~feed_real_sp64 proc~update64_rsp_2->none~update~2 proc~update64_rsp_3->none~update~2 proc~feed_real_dp feed_real_dp proc~update_cdp_0->proc~feed_real_dp proc~update_cdp_1->proc~feed_real_dp proc~update_cdp_2->none~update proc~update_cdp_3->none~update proc~feed_integer feed_integer proc~update_char_0->proc~feed_integer proc~update_char_1->none~update proc~feed_real_sp feed_real_sp proc~update_csp_0->proc~feed_real_sp proc~update_csp_1->proc~feed_real_sp proc~update_csp_2->none~update proc~update_csp_3->none~update proc~update_int16_0->proc~feed_integer proc~update_int16_1->proc~feed_integer proc~update_int16_2->none~update proc~update_int16_3->none~update proc~update_int32_0->proc~feed_integer proc~update_int32_1->proc~feed_integer proc~update_int32_2->none~update proc~update_int32_3->none~update proc~update_int64_0->proc~feed_integer proc~update_int64_1->proc~feed_integer proc~update_int64_2->none~update proc~update_int64_3->none~update proc~update_int8_0->proc~feed_integer proc~update_int8_1->proc~feed_integer proc~update_int8_2->none~update proc~update_int8_3->none~update proc~feed_logical feed_logical proc~update_logical_0->proc~feed_logical proc~update_logical_1->proc~feed_logical proc~update_logical_2->none~update proc~update_logical_3->none~update proc~update_rdp_0->proc~feed_real_dp proc~update_rdp_1->proc~feed_real_dp proc~update_rdp_2->none~update proc~update_rdp_3->none~update proc~update_rsp_0->proc~feed_real_sp proc~update_rsp_1->proc~feed_real_sp proc~update_rsp_2->none~update proc~update_rsp_3->none~update proc~fnv1a_byte fnv1a_byte proc~feed_integer->proc~fnv1a_byte proc~fnv1a_byte64 fnv1a_byte64 proc~feed_integer64->proc~fnv1a_byte64 proc~feed_logical->proc~feed_integer proc~feed_logical64->proc~feed_integer64 proc~feed_real_record feed_real_record proc~feed_real_dp->proc~feed_real_record proc~feed_real_record64 feed_real_record64 proc~feed_real_dp64->proc~feed_real_record64 proc~feed_real_sp->proc~feed_real_record proc~feed_real_sp64->proc~feed_real_record64

Called by

interface~~soa_hash_field~~CalledByGraph interface~soa_hash_field soa_hash_field proc~particle_soa_state_hash particle_soa_t%particle_soa_state_hash proc~particle_soa_state_hash->interface~soa_hash_field proc~particle_soa_state_hash64 particle_soa_t%particle_soa_state_hash64 proc~particle_soa_state_hash64->interface~soa_hash_field

Module Procedures

private subroutine soa_hash_int32_field(hasher, values, n)

Fold the first n elements of an integer(int32) field into a hash.

Arguments

Type IntentOptional Attributes Name
type(array_hash_t), intent(inout) :: hasher
integer(kind=int32), intent(in), allocatable :: values(:)
integer(kind=default_int), intent(in) :: n

private subroutine soa_hash_int64_field(hasher, values, n)

Fold the first n elements of an integer(int64) field into a hash.

Arguments

Type IntentOptional Attributes Name
type(array_hash_t), intent(inout) :: hasher
integer(kind=int64), intent(in), allocatable :: values(:)
integer(kind=default_int), intent(in) :: n

private subroutine soa_hash_real_sp_field(hasher, values, n)

Fold the first n elements of a real(sp) field into a hash.

Arguments

Type IntentOptional Attributes Name
type(array_hash_t), intent(inout) :: hasher
real(kind=sp), intent(in), allocatable :: values(:)
integer(kind=default_int), intent(in) :: n

private subroutine soa_hash_real_dp_field(hasher, values, n)

Fold the first n elements of a real(dp) field into a hash.

Arguments

Type IntentOptional Attributes Name
type(array_hash_t), intent(inout) :: hasher
real(kind=dp), intent(in), allocatable :: values(:)
integer(kind=default_int), intent(in) :: n

private subroutine soa_hash_logical_field(hasher, values, n)

Fold the first n elements of a default logical field into a hash.

Arguments

Type IntentOptional Attributes Name
type(array_hash_t), intent(inout) :: hasher
logical, intent(in), allocatable :: values(:)
integer(kind=default_int), intent(in) :: n

private subroutine soa_hash64_int32_field(hasher, values, n)

Fold the first n elements of an integer(int32) field into a 64-bit hash.

Arguments

Type IntentOptional Attributes Name
type(array_hash64_t), intent(inout) :: hasher
integer(kind=int32), intent(in), allocatable :: values(:)
integer(kind=default_int), intent(in) :: n

private subroutine soa_hash64_int64_field(hasher, values, n)

Fold the first n elements of an integer(int64) field into a 64-bit hash.

Arguments

Type IntentOptional Attributes Name
type(array_hash64_t), intent(inout) :: hasher
integer(kind=int64), intent(in), allocatable :: values(:)
integer(kind=default_int), intent(in) :: n

private subroutine soa_hash64_real_sp_field(hasher, values, n)

Fold the first n elements of a real(sp) field into a 64-bit hash.

Arguments

Type IntentOptional Attributes Name
type(array_hash64_t), intent(inout) :: hasher
real(kind=sp), intent(in), allocatable :: values(:)
integer(kind=default_int), intent(in) :: n

private subroutine soa_hash64_real_dp_field(hasher, values, n)

Fold the first n elements of a real(dp) field into a 64-bit hash.

Arguments

Type IntentOptional Attributes Name
type(array_hash64_t), intent(inout) :: hasher
real(kind=dp), intent(in), allocatable :: values(:)
integer(kind=default_int), intent(in) :: n

private subroutine soa_hash64_logical_field(hasher, values, n)

Fold the first n elements of a logical field into a 64-bit hash.

Arguments

Type IntentOptional Attributes Name
type(array_hash64_t), intent(inout) :: hasher
logical, intent(in), allocatable :: values(:)
integer(kind=default_int), intent(in) :: n