sdr_append_childIntersectedObject Interface

public interface sdr_append_childIntersectedObject

Calls

interface~~sdr_append_childintersectedobject~~CallsGraph interface~sdr_append_childintersectedobject sdr_append_childIntersectedObject proc~sdr_append_childintersectedobjectall sdr_append_childIntersectedObjectAll interface~sdr_append_childintersectedobject->proc~sdr_append_childintersectedobjectall proc~sdr_append_childintersectedobjectgtminlevel sdr_append_childIntersectedObjectGTminLevel interface~sdr_append_childintersectedobject->proc~sdr_append_childintersectedobjectgtminlevel 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 proc~sdr_append_childintersectedobjectgtminlevel->proc~sdr_nodeprop_btest proc~sdr_append_childintersectedobjectgtminlevel->interface~placeat~8 proc~sdr_append_childintersectedobjectgtminlevel->interface~append~10 proc~sdr_append_childintersectedobjectgtminlevel->interface~mrgrnk

Called by

interface~~sdr_append_childintersectedobject~~CalledByGraph interface~sdr_append_childintersectedobject sdr_append_childIntersectedObject 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


Module Procedures

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

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.

Read more…

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