sdr_append_childIntersectedObjectGTminLevel Subroutine

private subroutine sdr_append_childIntersectedObjectGTminLevel(geometry, node, parent, testAll, intersected_object, grwObjPos, child_nodePos, 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.

We append only objects with level greater than children minLevel to reduce memory.

Arguments

TypeIntentOptionalAttributesName
type(sdr_geometry_type), intent(in) :: geometry

type which contains all geometry object infos

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

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_childintersectedobjectgtminlevel~~CallsGraph proc~sdr_append_childintersectedobjectgtminlevel sdr_append_childIntersectedObjectGTminLevel interface~placeat~8 placeat proc~sdr_append_childintersectedobjectgtminlevel->interface~placeat~8 interface~append~10 append proc~sdr_append_childintersectedobjectgtminlevel->interface~append~10 interface~mrgrnk mrgrnk proc~sdr_append_childintersectedobjectgtminlevel->interface~mrgrnk proc~sdr_nodeprop_btest sdr_nodeProp_btest proc~sdr_append_childintersectedobjectgtminlevel->proc~sdr_nodeprop_btest

Called by

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

Contents


Variables

TypeVisibilityAttributesNameInitial
integer, private :: iChild
integer, private :: childIDX
integer, private :: child_sorted(8)
integer, private :: child_objPos_first_inParent
integer, private :: child_objPos_next_inParent
integer, private :: child_nObjectsNew(8)
logical, private :: parent_isTarget
integer, private :: iObject
integer, private :: obj_pos
integer, private :: attr_pos
integer, private :: objLevel