This function returns pre-stored value at given idx if spacetime function is predefined apesmate else evaluate a spacetime function for a point at given idx in growing array of points. Return value is a scalar.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(tem_spacetime_fun_type), | intent(in) | :: | me |
spacetime type |
||
type(tem_grwPoints_type), | intent(in) | :: | grwPnt |
growing array of all spacetime point of a variable |
||
integer, | intent(in) | :: | idx(nVals) |
Index position to return a pre-store value or to compute |
||
integer, | intent(in) | :: | nVals |
number of return values |
||
integer, | intent(in) | :: | iLevel |
Level to access stored value in aps_coupling |
||
type(tem_time_type), | intent(in) | :: | time |
timer object incl. the current time information |
return value of a function
function tem_spacetime_scalar_for_index( me, grwPnt, idx, nVals, iLevel, & & time ) result (res) ! -------------------------------------------------------------------- ! !> spacetime type type(tem_spacetime_fun_type), intent(in) :: me !> number of return values integer, intent(in) :: nVals !> growing array of all spacetime point of a variable type(tem_grwPoints_type), intent(in) :: grwPnt !> Index position to return a pre-store value or to compute integer, intent(in) :: idx(nVals) !> return value of a function real( kind=rk ) :: res(nVals) !> Level to access stored value in aps_coupling integer, intent(in) :: iLevel !> timer object incl. the current time information type(tem_time_type), intent(in) :: time ! -------------------------------------------------------------------- ! integer :: iVal real(kind=rk) :: coord(1,3), res_tmp(1), trans ! -------------------------------------------------------------------- ! select case (trim(me%fun_kind)) case ('none') res = 0.0 case ('const') res = me%const(1) case ('lua_fun') do iVal = 1, nVals coord(1,:) = (/ grwPnt%coordX%val( idx(iVal) ), & & grwPnt%coordY%val( idx(iVal) ), & & grwPnt%coordZ%val( idx(iVal) ) /) res_tmp = tem_spacetime_lua_for( fun_ref = me%lua_fun_ref, & & coord = coord, & & time = time, & & n = 1, & & conf = me%conf ) res(iVal) = res_tmp(1) end do case ('combined') trans = tem_temporal_for( temporal = me%temporal, & & time = time ) res = tem_spatial_for( me = me%spatial, & & grwPnt = grwPnt, & & idx = idx, & & nVals = nVals, & & iLevel = iLevel ) res = trans*res case ('apesmate') res(1:nVals) = me%aps_coupling%valOnLvl(iLevel) & & %evalVal( idx(1:nVals) ) case ('precice') res(1:nVals) = tem_precice_read( & & dataID = me%precice_coupling%readVar%IDs(1), & & npoints = nVals, & & posIDs = me%precice_coupling%readVar%posIDLvl(iLevel) & & %posIDs(idx(:)) ) case default do iVal = 1, nVals coord(1,:) = (/ grwPnt%coordX%val( idx(iVal) ), & & grwPnt%coordY%val( idx(iVal) ), & & grwPnt%coordZ%val( idx(iVal) ) /) res_tmp = tem_spacetime_for_coord( me = me, & & coord = coord, & & time = time, & & n = 1 ) res(iVal) = res_tmp(1) end do end select end function tem_spacetime_scalar_for_index