This module implements the description of a node in the tree that is going to be created by Seeder.
Type | Visibility | Attributes | Name | Initial | |||
---|---|---|---|---|---|---|---|
integer, | public, | parameter | :: | isLeaf_bit | = | 1 | This bit is set, if the node is a leaf, that is there are no further descendants. |
integer, | public, | parameter | :: | IntersectsBoundary_bit | = | 2 | If this bit is set, the node intersects some computational domain boundary. |
integer, | public, | parameter | :: | hasBoundary_bit | = | 3 | If any of 26 direct neighbor is intersected by boundary |
integer, | public, | parameter | :: | isFluidifyable_bit | = | 4 | This bit is set, if the node is a fluidifyable that can be fluidify in solver |
integer, | public, | parameter | :: | isFlooded_bit | = | 5 | If the node is flooded by any color, this bit is set. It is useful to identify elements, that belong to the computational domain. |
integer, | public, | parameter | :: | isColored_bit | = | 6 | Indicating if the node is colored with an non-none color. This is used to filter none colors when transferring the information from the prototree to the treelm data structure. |
integer, | public, | parameter | :: | isTarget_bit | = | 7 | Indicates if this node is one that is to be included in the final mesh. It is needed to distinguish such nodes, which are refined further for subelement resolution of boundaries, from ordinary virtual nodes. |
integer, | public, | parameter | :: | isNoSolidification_bit | = | 0 | This bit is set, if solidification is not allowed for the node |
initialize the dynamic array
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(grw_intersectobjposarray_type), | intent(out) | :: | me | |||
integer, | intent(in), | optional | :: | length |
truncate the array, meaning cut off the trailing empty entries
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(grw_intersectobjposarray_type) | :: | me |
empty the entries without changing arrays
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(grw_intersectobjposarray_type) | :: | me |
destroy the dynamic array
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(grw_intersectobjposarray_type), | intent(inout) | :: | me |
insert an element at a given position
adds the value to a given position inside the growing array.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(grw_intersectobjposarray_type) | :: | me | ||||
type(sdr_intersectObjPos_type), | intent(in) | :: | val | |||
integer, | intent(in) | :: | pos | |||
integer, | intent(in), | optional | :: | length | optional length to expand the array |
adds the values starting from a given position inside the growing array.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(grw_intersectobjposarray_type) | :: | me | ||||
type(sdr_intersectObjPos_type), | intent(in) | :: | val(:) | |||
integer, | intent(in) | :: | pos | |||
integer, | intent(in), | optional | :: | length | optional length to expand the array |
append a value to the dynamic array and return its position.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(grw_intersectobjposarray_type) | :: | me | ||||
type(sdr_intersectObjPos_type), | intent(in) | :: | val | |||
integer, | intent(in), | optional | :: | length | optional length to expand the array |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(grw_intersectobjposarray_type) | :: | me | ||||
type(sdr_intersectObjPos_type), | intent(in) | :: | val(:) | |||
integer, | intent(in), | optional | :: | length | optional length to expand the array |
This routine will wet the neighbors sides of the neighbor node
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(sdr_node_type), | intent(inout) | :: | node | List of all nodes in the tree |
||
integer, | intent(in) | :: | iNode | Current node |
||
integer, | intent(in) | :: | col_int | |||
integer, | intent(in) | :: | col_bit |
This routine will wet the neighbors sides of the neighbor node in all colors, that are flooded.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(sdr_node_type), | intent(inout) | :: | node | List of all nodes in the tree |
||
integer, | intent(in) | :: | iNode | Current node |
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
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
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 |
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.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
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 |
increase the size of the container for the array.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(grw_intersectobjposarray_type) | :: | me | ||||
integer, | intent(in), | optional | :: | pos | ||
integer, | intent(in), | optional | :: | length | optional length to expand the array |
initialize the dynamic array
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(grw_grwintarray_type), | intent(out) | :: | me | |||
integer, | intent(in), | optional | :: | length |
truncate the array, meaning cut off the trailing empty entries
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(grw_grwintarray_type) | :: | me |
empty the entries without changing arrays
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(grw_grwintarray_type) | :: | me |
destroy the dynamic array
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(grw_grwintarray_type), | intent(inout) | :: | me |
insert an element at a given position
adds the value to a given position inside the growing array.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(grw_grwintarray_type) | :: | me | ||||
type(grw_intarray_type), | intent(in) | :: | val | |||
integer, | intent(in) | :: | pos | |||
integer, | intent(in), | optional | :: | length | optional length to expand the array |
adds the values starting from a given position inside the growing array.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(grw_grwintarray_type) | :: | me | ||||
type(grw_intarray_type), | intent(in) | :: | val(:) | |||
integer, | intent(in) | :: | pos | |||
integer, | intent(in), | optional | :: | length | optional length to expand the array |
append a value to the dynamic array and return its position.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(grw_grwintarray_type) | :: | me | ||||
type(grw_intarray_type), | intent(in) | :: | val | |||
integer, | intent(in), | optional | :: | length | optional length to expand the array |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(grw_grwintarray_type) | :: | me | ||||
type(grw_intarray_type), | intent(in) | :: | val(:) | |||
integer, | intent(in), | optional | :: | length | optional length to expand the array |
increase the size of the container for the array.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(grw_grwintarray_type) | :: | me | ||||
integer, | intent(in), | optional | :: | pos | ||
integer, | intent(in), | optional | :: | length | optional length to expand the array |
Initialize the node type.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(sdr_node_type), | intent(out) | :: | me | The nodelist to initialize. |
||
integer, | intent(in) | :: | nColors | Number of different colors that are to be used. |
||
integer, | intent(in) | :: | none_color_id | Id of the color with the 'none' label, this color will be ignored in the treelm color data. It has to be -1, if there is no none color. |
||
logical, | intent(in) | :: | distanceRefine | If any boundary attribute has distance refine |
||
integer, | intent(in) | :: | nSublevels | Number of levels to refine beyond target element levels for boundaries, that require this. Has to be 0, if there are no such boundaries. |
||
integer, | intent(in), | optional | :: | length | Initial length for the list of nodes. |
Append a new node to the protoTree.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(sdr_node_type), | intent(inout) | :: | me | The nodelist to which the node is to be appended. |
||
integer(kind=long_k), | intent(in) | :: | treeID | The treeID of the node to append. |
||
integer, | intent(in) | :: | PropertyBits(:) | The Bitmask of initial properties to set. |
||
integer, | intent(in) | :: | sublevel | Sublevel indication, counts down after the target node. Has to be negative if not a subelement. Only relevant if subelement_resolution > 0. Refinement will be stopped, when sublevel 0 is reached. |
||
integer, | intent(in) | :: | minLevel | Minlevel to refine this node |
||
integer, | intent(out) | :: | pos | Position in the list, where the node was appended. |
||
type(grw_longarray_type), | intent(inout), | optional | :: | grwTreeID | growing array of treeID, append treeID to this list if present |
Truncate the growing arrays in the node list to their actual size.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(sdr_node_type), | intent(inout) | :: | me | The nodelist to initialize. |
This data type describes first and last intersected object of a node in growing array of intersected_objects.
Type | Visibility | Attributes | Name | Initial | |||
---|---|---|---|---|---|---|---|
integer, | private | :: | first | First position of intersected object in 1st list |
|||
integer, | private | :: | last | Last position of intersected object in 1st list |
growing array type for type(sdr_intersectobjpos_type)
Type | Visibility | Attributes | Name | Initial | |||
---|---|---|---|---|---|---|---|
integer, | private | :: | nvals | = | 0 | ||
integer, | private | :: | containersize | = | 0 | ||
type(sdr_intersectObjPos_type), | private, | allocatable | :: | val(:) |
This data type describes a node in the tree to be created.
Type | Visibility | Attributes | Name | Initial | |||
---|---|---|---|---|---|---|---|
integer, | private | :: | nNodes | = | 0 | Number of nodes in this list. |
|
integer, | private | :: | propLength | = | 1 | Number of integers to encode the properties. This depends on the number of colors and defines the size of the the first dimension (width) in the grw_int2dArray propertyBits. |
|
integer, | private | :: | bytes_per_int | Auxilary value to provide the number of bytes available per integer in the propertybits. |
|||
integer, | private | :: | lastbyte_pos | Indicator for the starting bit of the last byte in the propertybits. |
|||
integer, | private | :: | nColors | Counter for the number of colors in the mesh. |
|||
integer, | private | :: | none_color_id | Id of the 'none' color, this color will not be considered in the final color information for treelm. |
|||
integer, | private | :: | nColorChars | Number of characters needed to hold all colors. |
|||
integer, | private | :: | subelement_resolution | Number of levels, that need to be further refined for colors with subelement resolution. |
|||
logical, | private | :: | distanceRefine | = | .false. | True if distance refine objects are created for boundary attribute. |
|
type(dyn_longarray_type), | private | :: | treeID | List of treeIDs for all the nodes in the built tree. |
|||
type(grw_int2darray_type), | private | :: | PropertyBits | The property bits can be used to attach various information to the element. They can span multiple integers (width of the 2d growing array) and all bytes except the very last one are used to encode colors (1 byte per color). |
|||
type(grw_intarray_type), | private | :: | hasBndBits | Store which of 26 directions of node has boundary. Uses first 26 bits of the integer with each bit corresponds to treelm direction given by qOffset in tem_param_module |
|||
type(grw_intarray_type), | private | :: | minBCID | Minimum boundary ID intersect by the node |
|||
type(grw_intarray_type), | private | :: | intersected_object | List of all objects intersecting this node. |
|||
type(grw_intersectobjposarray_type), | private | :: | userObjPos | First and last position of this node's intersected objects in growing array of intersected_object |
|||
type(grw_intarray_type), | private | :: | intersected_distance | List of all sphere_distance objects intersecting this node |
|||
type(grw_intersectobjposarray_type), | private | :: | distObjPos | First and last position of this node's intersected distance refine objects in growing array of intersected_distance |
|||
integer, | private | :: | memLeft_userObj | Memory unused by children from parent intersected object list |
|||
integer, | private | :: | memLeft_distObj | Memory unused by children from parent intersected distance list |
|||
type(grw_intarray_type), | private | :: | minLevel | minLevel for each node. Used in refineleaf and inherit distance refine object. If intersected object level is <= minLevel then that object is not added to intersected object list for children. This should reduce memory to inHerit lot of intersected objects to children |
|||
type(grw_intarray_type), | private | :: | linkpos(6) | This is used to store the location of the 6 neighbors for leaf nodes and the first child for virtual nodes at linkpos(1). |
|||
type(grw_intarray_type), | private | :: | sublevel | If subelement resolution is required, the sublevel keeps track of how deep the subelement resolution is below the target element. |
growing array type for type(grw_intarray_type)
Type | Visibility | Attributes | Name | Initial | |||
---|---|---|---|---|---|---|---|
integer, | private | :: | nvals | = | 0 | ||
integer, | private | :: | containersize | = | 0 | ||
type(grw_intarray_type), | private, | allocatable | :: | val(:) |
Set a bit in the last byte of the node properties in a given node.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(sdr_node_type), | intent(in) | :: | node | |||
integer, | intent(in) | :: | iNode | |||
integer, | intent(in) | :: | bit |
If parent has hasBoundary_bit then this function will inherit this property to eligible childrens
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(sdr_node_type), | intent(in) | :: | node | Description of the nodes in the prototree. |
||
integer, | intent(in) | :: | iNode | Index of the node to evaluate. |
result contains which child has boundary
Return all colors of the given node encoded in an array of characters.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(sdr_node_type), | intent(in) | :: | node | Description of the nodes in the prototree. |
||
integer, | intent(in) | :: | iNode | Index of the node to evaluate. |
Gathered color information in an array of characters.
Return all colors of the given bitfield encoded in an array of characters.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(sdr_node_type), | intent(in) | :: | node | Description of the nodes in the prototree. |
||
integer, | intent(in) | :: | bitfield(:) | Index of the node to evaluate. |
Gathered color information in an array of characters.
Return all colors encoded in an array of characters based on an array of logicals indicating for each color wether it should be set or not.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(sdr_node_type), | intent(in) | :: | node | Description of the nodes in the prototree. |
||
logical, | intent(in) | :: | logicals(:) | Flag for each color wether it should be set or not. |
Gathered color information in an array of characters.
Set a bit in the last byte of the node properties in a given node.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(sdr_node_type), | intent(inout) | :: | node | |||
integer, | intent(in) | :: | iNode | |||
integer, | intent(in) | :: | bit |
Clear a bit in the last byte of the node properties in a given node.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(sdr_node_type), | intent(inout) | :: | node | |||
integer, | intent(in) | :: | iNode | |||
integer, | intent(in) | :: | bit |
This routine floods the node with the given color and increases nFloodedLeaves.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(sdr_node_type), | intent(inout) | :: | node | Node object |
||
integer, | intent(in) | :: | iNode | Node to modify |
||
integer, | intent(inout) | :: | nFloodedLeaves | Number of flooded leaves to increase |
||
integer, | intent(in) | :: | color | Color to set in the given bitfield |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(grw_intersectobjposarray_type), | intent(out) | :: | me | |||
integer, | intent(in), | optional | :: | length |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(grw_intersectobjposarray_type), | intent(inout) | :: | me |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(grw_intersectobjposarray_type) | :: | me |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(grw_intersectobjposarray_type) | :: | me |
adds the value to a given position inside the growing array.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(grw_intersectobjposarray_type) | :: | me | ||||
type(sdr_intersectObjPos_type), | intent(in) | :: | val | |||
integer, | intent(in) | :: | pos | |||
integer, | intent(in), | optional | :: | length | optional length to expand the array |
adds the values starting from a given position inside the growing array.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(grw_intersectobjposarray_type) | :: | me | ||||
type(sdr_intersectObjPos_type), | intent(in) | :: | val(:) | |||
integer, | intent(in) | :: | pos | |||
integer, | intent(in), | optional | :: | length | optional length to expand the array |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(grw_intersectobjposarray_type) | :: | me | ||||
type(sdr_intersectObjPos_type), | intent(in) | :: | val | |||
integer, | intent(in), | optional | :: | length | optional length to expand the array |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(grw_intersectobjposarray_type) | :: | me | ||||
type(sdr_intersectObjPos_type), | intent(in) | :: | val(:) | |||
integer, | intent(in), | optional | :: | length | optional length to expand the array |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(grw_intersectobjposarray_type) | :: | me | ||||
integer, | intent(in), | optional | :: | pos | ||
integer, | intent(in), | optional | :: | length | optional length to expand the array |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(grw_grwintarray_type), | intent(out) | :: | me | |||
integer, | intent(in), | optional | :: | length |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(grw_grwintarray_type), | intent(inout) | :: | me |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(grw_grwintarray_type) | :: | me |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(grw_grwintarray_type) | :: | me |
adds the value to a given position inside the growing array.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(grw_grwintarray_type) | :: | me | ||||
type(grw_intarray_type), | intent(in) | :: | val | |||
integer, | intent(in) | :: | pos | |||
integer, | intent(in), | optional | :: | length | optional length to expand the array |
adds the values starting from a given position inside the growing array.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(grw_grwintarray_type) | :: | me | ||||
type(grw_intarray_type), | intent(in) | :: | val(:) | |||
integer, | intent(in) | :: | pos | |||
integer, | intent(in), | optional | :: | length | optional length to expand the array |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(grw_grwintarray_type) | :: | me | ||||
type(grw_intarray_type), | intent(in) | :: | val | |||
integer, | intent(in), | optional | :: | length | optional length to expand the array |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(grw_grwintarray_type) | :: | me | ||||
type(grw_intarray_type), | intent(in) | :: | val(:) | |||
integer, | intent(in), | optional | :: | length | optional length to expand the array |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(grw_grwintarray_type) | :: | me | ||||
integer, | intent(in), | optional | :: | pos | ||
integer, | intent(in), | optional | :: | length | optional length to expand the array |
Initialize the node type.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(sdr_node_type), | intent(out) | :: | me | The nodelist to initialize. |
||
integer, | intent(in) | :: | nColors | Number of different colors that are to be used. |
||
integer, | intent(in) | :: | none_color_id | Id of the color with the 'none' label, this color will be ignored in the treelm color data. It has to be -1, if there is no none color. |
||
logical, | intent(in) | :: | distanceRefine | If any boundary attribute has distance refine |
||
integer, | intent(in) | :: | nSublevels | Number of levels to refine beyond target element levels for boundaries, that require this. Has to be 0, if there are no such boundaries. |
||
integer, | intent(in), | optional | :: | length | Initial length for the list of nodes. |
Truncate the growing arrays in the node list to their actual size.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(sdr_node_type), | intent(inout) | :: | me | The nodelist to initialize. |
Append a new node to the protoTree.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(sdr_node_type), | intent(inout) | :: | me | The nodelist to which the node is to be appended. |
||
integer(kind=long_k), | intent(in) | :: | treeID | The treeID of the node to append. |
||
integer, | intent(in) | :: | PropertyBits(:) | The Bitmask of initial properties to set. |
||
integer, | intent(in) | :: | sublevel | Sublevel indication, counts down after the target node. Has to be negative if not a subelement. Only relevant if subelement_resolution > 0. Refinement will be stopped, when sublevel 0 is reached. |
||
integer, | intent(in) | :: | minLevel | Minlevel to refine this node |
||
integer, | intent(out) | :: | pos | Position in the list, where the node was appended. |
||
type(grw_longarray_type), | intent(inout), | optional | :: | grwTreeID | growing array of treeID, append treeID to this list if present |
This routine will wet the neighbors sides of the neighbor node
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(sdr_node_type), | intent(inout) | :: | node | List of all nodes in the tree |
||
integer, | intent(in) | :: | iNode | Current node |
||
integer, | intent(in) | :: | col_int | |||
integer, | intent(in) | :: | col_bit |
This routine will wet the neighbors sides of the neighbor node in all colors, that are flooded.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(sdr_node_type), | intent(inout) | :: | node | List of all nodes in the tree |
||
integer, | intent(in) | :: | iNode | Current node |
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
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
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 |
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.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
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 |