tem_spacetime_vector_for_treeIDs Function

private function tem_spacetime_vector_for_treeIDs(me, treeIDs, time, tree, n, ncomp) result(res)

This function compute space time function that give bach a table of results for given list of treeIDs

Todo

pass subtree with treeIDs lists instead of treeIds and tree

Arguments

Type IntentOptional Attributes Name
type(tem_spacetime_fun_type) :: me

Spacetime function to evaluate

integer(kind=long_k), intent(in) :: treeIDs(n)

TreeIDs where to evaluate the function

type(tem_time_type), intent(in) :: time

timer object incl. the current time information

type(treelmesh_type), intent(in) :: tree

Global treelmesh to look for positions in

integer, intent(in) :: n

Number of tables to return

integer, intent(in) :: ncomp

Number of values in a Table

Return Value real(kind=rk), (n,ncomp)

return value of the function


Source Code

  function tem_spacetime_vector_for_treeIDs( me, treeIDs, time, &
    &                                        tree, n, ncomp) result(res)
    ! -------------------------------------------------------------------- !
    !> Spacetime function to evaluate
    type(tem_spacetime_fun_type) :: me
    !> Global treelmesh to look for positions in
    type(treelmesh_type), intent(in) ::tree
    !> Number of tables to return
    integer, intent(in) :: n
    !> Number of values in a Table
    integer, intent(in) :: ncomp
    !> TreeIDs where to evaluate the function
    integer(kind=long_k), intent(in) :: treeIDs(n)
    !> timer object incl. the current time information
    type(tem_time_type), intent(in)  :: time
    !> return value of the function
    real(kind=rk) :: res(n,ncomp)
    ! -------------------------------------------------------------------- !
    ! counter
    integer :: i
    ! -------------------------------------------------------------------- !


    select case(trim(adjustl(me%fun_kind)))
    case('none')
      res = 0.0_rk
    case('const')
      do i = 1, nComp
        res(:,i) = me%const(i)
      end do
    case('lua_fun')
      res = tem_spacetime_lua_for( fun_ref = me%lua_fun_ref, &
        &                          treeIDs = treeIDs,        &
        &                          time    = time,           &
        &                          tree    = tree,           &
        &                          n       = n,              &
        &                          nComp   = nComp,          &
        &                          conf    = me%conf         )
    case('combined')
      res = tem_spatial_for( me      = me%spatial,    &
        &                    treeIDs = treeIDs,       &
        &                    tree    = tree,          &
        &                    n       = n,             &
        &                    ncomp   = nComp     )    &
        & * tem_temporal_for( temporal = me%temporal, &
        &                     time     = time         )
    case default
      call tem_abort('ERROR: Unknown spatial function in' &
        & // 'tem_spacetime_vector_for_treeIDs.'          )
    end select
  end function tem_spacetime_vector_for_treeIDs