tem_construction_test Program

Uses

  • program~~tem_construction_test~~UsesGraph program~tem_construction_test tem_construction_test module~tem_element_module tem_element_module program~tem_construction_test->module~tem_element_module module~env_module env_module program~tem_construction_test->module~env_module module~tem_topology_module tem_topology_module program~tem_construction_test->module~tem_topology_module module~tem_stencil_module tem_stencil_module program~tem_construction_test->module~tem_stencil_module module~tem_construction_module tem_construction_module program~tem_construction_test->module~tem_construction_module module~tem_element_module->module~env_module module~tem_element_module->module~tem_stencil_module module~tem_grow_array_module tem_grow_array_module module~tem_element_module->module~tem_grow_array_module module~tem_dyn_array_module tem_dyn_array_module module~tem_element_module->module~tem_dyn_array_module module~tem_arrayofarrays_module tem_arrayofarrays_module module~tem_element_module->module~tem_arrayofarrays_module module~aotus_module aotus_module module~env_module->module~aotus_module iso_fortran_env iso_fortran_env module~env_module->iso_fortran_env mpi mpi module~env_module->mpi module~flu_binding flu_binding module~env_module->module~flu_binding module~tem_topology_module->module~env_module module~tem_stencil_module->module~env_module module~tem_stencil_module->module~tem_grow_array_module module~tem_stencil_module->module~aotus_module module~tem_stencil_module->module~tem_dyn_array_module module~tem_comm_env_module tem_comm_env_module module~tem_stencil_module->module~tem_comm_env_module module~aot_table_module aot_table_module module~tem_stencil_module->module~aot_table_module module~tem_geometry_module tem_geometry_module module~tem_stencil_module->module~tem_geometry_module module~tem_comm_module tem_comm_module module~tem_stencil_module->module~tem_comm_module module~tem_tools_module tem_tools_module module~tem_stencil_module->module~tem_tools_module module~tem_aux_module tem_aux_module module~tem_stencil_module->module~tem_aux_module module~tem_logging_module tem_logging_module module~tem_stencil_module->module~tem_logging_module module~tem_param_module tem_param_module module~tem_stencil_module->module~tem_param_module module~tem_construction_module->module~tem_element_module module~tem_construction_module->module~env_module module~tem_construction_module->module~tem_topology_module module~tem_construction_module->module~tem_stencil_module module~tem_construction_module->module~tem_grow_array_module module~tem_construction_module->module~tem_dyn_array_module module~treelmesh_module treelmesh_module module~tem_construction_module->module~treelmesh_module tem_sparse_comm_module tem_sparse_comm_module module~tem_construction_module->tem_sparse_comm_module module~tem_construction_module->module~tem_comm_env_module module~tem_construction_module->module~tem_geometry_module module~tem_debug_module tem_debug_module module~tem_construction_module->module~tem_debug_module module~tem_property_module tem_property_module module~tem_construction_module->module~tem_property_module module~tem_construction_module->module~tem_comm_module module~tem_construction_module->module~tem_tools_module module~tem_bc_prop_module tem_bc_prop_module module~tem_construction_module->module~tem_bc_prop_module module~tem_construction_module->module~tem_aux_module module~tem_construction_module->module~tem_logging_module module~tem_halo_module tem_halo_module module~tem_construction_module->module~tem_halo_module module~tem_construction_module->mpi module~tem_construction_module->module~tem_param_module

Calls

program~~tem_construction_test~~CallsGraph program~tem_construction_test tem_construction_test proc~check_find_depproc check_find_depProc program~tem_construction_test->proc~check_find_depproc proc~check_find_bcs_fromcoarser check_find_BCs_fromCoarser program~tem_construction_test->proc~check_find_bcs_fromcoarser proc~tem_pathof tem_PathOf proc~check_find_depproc->proc~tem_pathof proc~tem_find_depproc_globsearch tem_find_depProc_globSearch proc~check_find_depproc->proc~tem_find_depproc_globsearch init init proc~check_find_bcs_fromcoarser->init proc~tem_pathcomparison tem_PathComparison proc~tem_find_depproc_globsearch->proc~tem_pathcomparison

Contents

Source Code


Variables

Type AttributesNameInitial
logical :: passed

Subroutines

subroutine check_find_depProc()

Arguments

None

Arguments

None

Source Code

program tem_construction_test
  use env_module, only: long_k
  use tem_construction_module, only: tem_find_depProc_globSearch !, tem_find_BCs_fromCoarser
  use tem_element_module, only: tem_element_type
  use tem_stencil_module, only: tem_stencilHeader_type, &
    &                           d3q19_cxDir, init, append
  use tem_topology_module, only: tem_path_type, tem_pathof

  implicit none

  logical :: passed

  passed = .true.
  write(*,*) 'Running tem_construction_test...'
  call check_find_depProc
  call check_find_BCs_fromCoarser

  if (passed) then
    write(*,*) 'PASSED'
  else
    write(*,*) 'FAILED'
  end if

contains

  subroutine check_find_depProc()
    integer(kind=long_k) :: part_first(16)
    integer(kind=long_k) :: part_last(16)
    type(tem_path_type) :: pathFirst(16)
    type(tem_path_type) :: pathLast(16)
    type(tem_path_type) :: neighpath
    integer :: depProc
    integer :: nDepProcs
    integer :: iTID
    logical :: failure

    part_first=[ 9, 13, 17, 21, 25, 29, 33, 37, 41, 45, 49, 53, 57, 61, 65, 69]
    part_last =[12, 16, 20, 24, 28, 32, 36, 40, 44, 48, 52, 56, 60, 64, 68, 72]

    pathFirst     =  tem_PathOf(Part_First)
    pathLast      =  tem_PathOf(Part_Last)

    write(*,*) ' * checking tem_find_depProc...'

    write(*,*) '   checking all 64 elements on level 2, in 16 partitions:'
    failure = .false.
    do iTID=9,72
      neighpath = tem_PathOf(int(iTID, kind=long_k))
      call tem_find_depProc_globSearch(depProc, nDepProcs, &
        &                    neighPath, 1, 16, pathFirst, pathLast)
      if (nDepProcs /= 1) then
        write(*,*) '   - ERROR for treeID ', iTID, ': nDepProcs /= 1!'
        write(*,*) '     depProc: ', depProc
        failure = .true.
      else
        if (depProc /= (iTID-5)/4) then
          write(*,*) '   - ERROR for treeID ', iTID, ': wrong partition'
          write(*,*) '     is: ', depProc, '; should be:', (iTID-5)/4
          failure = .true.
        end if
      end if
    end do

    if (failure) then
      write(*,*) '   > FAILURE in tem_find_depProc single level'
      passed = .false.
    else
      write(*,*) '   > SUCCESS in tem_find_depProc single level'
    end if

    write(*,*) '   checking all 8 elements on level 1, in 16 partitions:'
    failure = .false.
    do iTID=1,8
      neighpath = tem_PathOf(int(iTID, kind=long_k))
      call tem_find_depProc_globSearch(depProc, nDepProcs, &
        &                    neighPath, 1, 16, pathFirst, pathLast)
      if (nDepProcs /= 2) then
        write(*,*) '   - ERROR for treeID ', iTID, ': nDepProcs /= 2!'
        write(*,*) '     depProc: ', depProc
        failure = .true.
      else
        if (depProc /= (iTID*2)-1) then
          write(*,*) '   - ERROR for treeID ', iTID, ': wrong first partition'
          write(*,*) '     is: ', depProc, '; should be:', (iTID*2)-1
          failure = .true.
        end if
      end if
    end do

    if (failure) then
      write(*,*) '   > FAILURE in tem_find_depProc coarse level'
      passed = .false.
    else
      write(*,*) '   > SUCCESS in tem_find_depProc coarse level'
    end if

    write(*,*) ' --------------------------------------------'
    write(*,*)

  end subroutine check_find_depProc

  subroutine check_find_BCs_fromCoarser
    type(tem_stencilHeader_type) :: d3q19_stencil
    logical :: failure

    failure = .false.
    call init( me     = d3q19_stencil, &
      &        QQN    = 18,            &
      &        QQ     = 19,            &
      &        useAll = .true.,        &
      &        nDims  = 3,             &
      &        label  = 'd3q19',       &
      &        cxDir  = d3q19_cxDir    )

    write(*,*) ' * checking tem_find_BCs_fromCoarser...'


   if (failure) then
      write(*,*) '   > FAILURE in tem_find_depProc coarse level'
      passed = .false.
    else
      write(*,*) '   > SUCCESS in tem_find_depProc coarse level'
    end if

    write(*,*) ' --------------------------------------------'
    write(*,*)

  end subroutine check_find_BCs_fromCoarser

end program tem_construction_test