This routine evaluate scalar spatial function and store its value in growing array
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(tem_spatial_type), | intent(inout) | :: | me |
spatial type for given boundary state |
||
real(kind=rk), | intent(in) | :: | coord(nVals,3) |
barycentric Ids of an elements. 1st index goes over number of elements and 2nd index goes over x,y,z coordinates |
||
integer, | intent(in) | :: | nVals |
number of return values |
||
integer, | intent(in) | :: | iLevel |
Level to which the evaluated values to be stored |
subroutine tem_spatial_scalar_storeVal( me, coord, nVals, iLevel )
! -------------------------------------------------------------------- !
!> spatial type for given boundary state
type(tem_spatial_type), intent(inout) :: me
!> number of return values
integer, intent(in) :: nVals
!> barycentric Ids of an elements.
!! 1st index goes over number of elements and
!! 2nd index goes over x,y,z coordinates
real(kind=rk), intent(in) :: coord(nVals,3)
!> Level to which the evaluated values to be stored
integer, intent(in) :: iLevel
! -------------------------------------------------------------------- !
real(kind=rk) :: evalVal(nVals)
! -------------------------------------------------------------------- !
! Do not store value for const or none
if (trim(me%kind) /= 'const' .or. trim(me%kind) /= 'none') then
me%isStored = .true.
evalVal = tem_spatial_for( me = me, &
& coord = coord, &
& n = nVals )
call append( me = me%valOnLvl(iLevel)%evalVal, &
& val = evalVal, &
& length = nVals )
call truncate(me = me%valOnLvl(iLevel)%evalVal)
else
me%isStored = .false.
end if
end subroutine tem_spatial_scalar_storeVal