sdr_append_childIntersectedObjectAll Subroutine

private subroutine sdr_append_childIntersectedObjectAll(node, parent, testAll, intersected_object, grwObjPos, child_nodePos, child_nObjects, child_intersected_object, child_objPos, memLeft)

This routine appends temporary child intersected object to actual growing array of intersected objects. To reduce memory usuage, the child with maximum number of intersected objects from parent is appended at same position as its parent. Rest of the childrens intersected objects are appended to the end of growing array

Arguments

TypeIntentOptionalAttributesName
type(sdr_node_type), intent(in) :: node

contains information about all nodes in protoTree

integer, intent(in) :: parent

Position of parent node

logical, intent(in) :: testAll

true for level 1 nodes

type(grw_intarray_type), intent(inout) :: intersected_object

Growing array of intersected objects. Could be user defined or distance refine spatial objects

type(grw_intersectobjposarray_type), intent(inout) :: grwObjPos

First and last position of intersected object of all nodes in intersected_object list

integer, intent(in) :: child_nodePos(8)

8 children node position in protoTree

integer, intent(in) :: child_nObjects(8)

number of intersected objets in 8 children

type(grw_intarray_type), intent(inout) :: child_intersected_object

Temporary array of intersected objects for 8 children

type(sdr_intersectObjPos_type), intent(in) :: child_objPos(8)

first and last index of intersected objects of 8 children in child_intersected_object list

integer, intent(out) :: memLeft

memory of parent intersected object unused by children


Calls

proc~~sdr_append_childintersectedobjectall~~CallsGraph proc~sdr_append_childintersectedobjectall sdr_append_childIntersectedObjectAll proc~sdr_nodeprop_btest sdr_nodeProp_btest proc~sdr_append_childintersectedobjectall->proc~sdr_nodeprop_btest interface~placeat~8 placeat proc~sdr_append_childintersectedobjectall->interface~placeat~8 interface~append~10 append proc~sdr_append_childintersectedobjectall->interface~append~10 interface~mrgrnk mrgrnk proc~sdr_append_childintersectedobjectall->interface~mrgrnk

Called by

proc~~sdr_append_childintersectedobjectall~~CalledByGraph proc~sdr_append_childintersectedobjectall sdr_append_childIntersectedObjectAll interface~sdr_append_childintersectedobject sdr_append_childIntersectedObject interface~sdr_append_childintersectedobject->proc~sdr_append_childintersectedobjectall proc~create_children~2 create_children proc~create_children~2->interface~sdr_append_childintersectedobject proc~inherit_intersectedobject inHerit_intersectedObject proc~inherit_intersectedobject->interface~sdr_append_childintersectedobject proc~sdr_inherit_distancerefineobject sdr_inHerit_distanceRefineObject proc~sdr_inherit_distancerefineobject->proc~inherit_intersectedobject proc~sdr_build_prototree sdr_build_protoTree proc~sdr_build_prototree->proc~create_children~2 proc~sdr_refine_leaf sdr_refine_leaf proc~sdr_refine_leaf->proc~inherit_intersectedobject program~seeder seeder program~seeder->proc~sdr_inherit_distancerefineobject program~seeder->proc~sdr_build_prototree program~seeder->proc~sdr_refine_leaf

Contents


Variables

TypeVisibilityAttributesNameInitial
integer, private :: iChild
integer, private :: childIDX
integer, private :: child_sorted(8)
integer, private :: child_intersected_first_inParent
logical, private :: parent_isTarget