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

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