sdr_refine_leaf Subroutine

public subroutine sdr_refine_leaf(proto, geometry)

This routine extends the protoTree with max of minlevel or level of refinement object.

If it is a leaf, check for intersected objects, and keep on refining accordingly down to the maximum requested level. When the desired level is reached (no refinement object, or desired level of intersected refinement object reached, check all (26) direct neigbors. If there is a neighbor intersected by a boundary check its refinement level, if it is higher then the current one, do another refinement step.

Arguments

TypeIntentOptionalAttributesName
type(sdr_protoTree_type), intent(inout) :: proto

The proto tree description with all the data to refine further

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

type which contains all geometry object infos


Calls

proc~~sdr_refine_leaf~~CallsGraph proc~sdr_refine_leaf sdr_refine_leaf interface~init~11 init proc~sdr_refine_leaf->interface~init~11 proc~tem_firstidatlevel tem_FirstIdAtLevel proc~sdr_refine_leaf->proc~tem_firstidatlevel proc~inherit_intersectedobject inHerit_intersectedObject proc~sdr_refine_leaf->proc~inherit_intersectedobject interface~append~10 append proc~sdr_refine_leaf->interface~append~10 interface~truncate~10 truncate proc~sdr_refine_leaf->interface~truncate~10 proc~tem_stoptimer tem_stopTimer proc~sdr_refine_leaf->proc~tem_stoptimer proc~check_bndlevel check_bndLevel proc~sdr_refine_leaf->proc~check_bndlevel proc~sdr_set_nodeprop_bit sdr_set_nodeProp_bit proc~sdr_refine_leaf->proc~sdr_set_nodeprop_bit proc~tem_starttimer tem_startTimer proc~sdr_refine_leaf->proc~tem_starttimer interface~destroy~11 destroy proc~sdr_refine_leaf->interface~destroy~11 proc~create_children create_children proc~sdr_refine_leaf->proc~create_children proc~tem_horizontalspacer tem_horizontalSpacer proc~sdr_refine_leaf->proc~tem_horizontalspacer proc~inherit_intersectedobject->interface~append~10 proc~is_intersecting is_intersecting proc~inherit_intersectedobject->proc~is_intersecting interface~sdr_append_childintersectedobject sdr_append_childIntersectedObject proc~inherit_intersectedobject->interface~sdr_append_childintersectedobject proc~tem_coordofid tem_CoordOfId proc~inherit_intersectedobject->proc~tem_coordofid proc~tem_spherecubeoverlap tem_sphereCubeOverlap proc~inherit_intersectedobject->proc~tem_spherecubeoverlap proc~sdr_neighbor_in_proto sdr_neighbor_in_proto proc~check_bndlevel->proc~sdr_neighbor_in_proto proc~sdr_nodeprop_btest sdr_nodeProp_btest proc~check_bndlevel->proc~sdr_nodeprop_btest proc~check_bndlevel->proc~tem_coordofid proc~create_children->interface~append~10 proc~create_children->proc~sdr_set_nodeprop_bit proc~tem_directchildren tem_directChildren proc~create_children->proc~tem_directchildren proc~sdr_clear_nodeprop_bit sdr_clear_nodeProp_bit proc~create_children->proc~sdr_clear_nodeprop_bit proc~sdr_inheritbnd_eligiblechildren sdr_inHeritBnd_eligibleChildren proc~create_children->proc~sdr_inheritbnd_eligiblechildren

Called by

proc~~sdr_refine_leaf~~CalledByGraph proc~sdr_refine_leaf sdr_refine_leaf program~seeder seeder program~seeder->proc~sdr_refine_leaf

Contents


Variables

TypeVisibilityAttributesNameInitial
integer(kind=long_k), private :: parent_ID_offset
integer(kind=long_k), private :: parentID
integer, private :: objkind_count(sdr_object_kinds_max)
integer, private :: maxLevel
integer, private :: parentProps
integer, private :: iObject
integer, private :: iDist
integer, private :: nObjects
integer, private :: obj_pos
integer, private :: attr_pos
integer, private :: dist_pos
integer, private :: attr_kind
integer, private :: parent_pos
integer, private :: iLevel
integer, private :: iParent
integer, private :: firstParent
integer, private :: lastParent
integer, private :: nNodesOld
integer, private :: nNodes
logical, private :: testAll
type(levelValues_type), private :: leVal
type(grw_longarray_type), private :: grwTreeID
type(sdr_intersectObjPos_type), private :: userObjPos
type(sdr_intersectObjPos_type), private :: distObjPos
integer, private :: child_nodePos(8)
integer, private :: nDistRefine_objs
integer, private :: memLeft
logical, private :: noSub