Return the next coordinate of the canonical shape.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(tem_canonicalND_type), | intent(in) | :: | me |
current canonical type |
||
integer, | intent(in) | :: | iElem |
current element within total amount of elements to process |
calulated real-world coordinate, which is returned
pure function tem_getNextCoordOfcanonicalND( me, iElem ) result( coord ) ! -------------------------------------------------------------------------- !> current element within total amount of elements to process integer, intent(in) :: iElem !> current canonical type type( tem_canonicalND_type ), intent(in) :: me !> calulated real-world coordinate, which is returned real(kind=rk) :: coord(3) ! -------------------------------------------------------------------------- ! Start from the origin, step through the segments on the two ! defining vectors successively coord = me%origin & ! offset in direction of vector A & + real(mod(( iElem-1 ), me%segments( 1 )), kind=rk) & & / real( max(me%segments( 1 )-1,1), kind=rk) & & * me%vec(:,1) & ! offset in direction of vector B + real(mod( (iElem-1)/me%segments( 1 ), me%segments( 2 )), & & kind=rk) & & / real( max(me%segments( 2 )-1,1), kind=rk) & & * me%vec(:,2) & ! offset in direction of vector C + real(mod( (iElem-1)/(me%segments( 1 )*me%segments( 2 )), & & me%segments( 3 )), kind=rk) & & / real( max(me%segments( 3 )-1,1), kind=rk) & & * me%vec(:,3) end function tem_getNextCoordOfcanonicalND