periodic_cache_fingerprint Function

public pure function periodic_cache_fingerprint(tag, integer_values, real_values) result(fingerprint)

Arguments

Type IntentOptional Attributes Name
character(len=*), intent(in) :: tag
integer(kind=i32), intent(in) :: integer_values(:)
real(kind=dp), intent(in) :: real_values(:)

Return Value character(len=16)


Called by

proc~~periodic_cache_fingerprint~~CalledByGraph proc~periodic_cache_fingerprint periodic_cache_fingerprint proc~precompute_periodic_root_operator precompute_periodic_root_operator proc~precompute_periodic_root_operator->proc~periodic_cache_fingerprint proc~core_build_panel_plan_impl core_build_panel_plan_impl proc~core_build_panel_plan_impl->proc~precompute_periodic_root_operator proc~core_build_plan_impl core_build_plan_impl proc~core_build_plan_impl->proc~precompute_periodic_root_operator

Source Code

  pure function periodic_cache_fingerprint(tag, integer_values, real_values) result(fingerprint)
    character(len=*), intent(in) :: tag
    integer(i32), intent(in) :: integer_values(:)
    real(dp), intent(in) :: real_values(:)
    character(len=16) :: fingerprint
    integer(int8), allocatable :: bytes(:)
    integer(int64) :: checksum
    integer :: idx

    checksum = -3750763034362895579_int64
    bytes = transfer(tag, bytes, len(tag))
    call hash_bytes(bytes, checksum)
    bytes = transfer(integer_values, bytes, size(integer_values)*storage_size(0_i32)/8)
    call hash_bytes(bytes, checksum)
    bytes = transfer(real_values, bytes, size(real_values)*storage_size(0.0_dp)/8)
    call hash_bytes(bytes, checksum)
    write (fingerprint, '(z16.16)') checksum
  end function periodic_cache_fingerprint