Appearance
fossil_alpha_wrap
Source: src/lib/fossil_alpha_wrap.f90
Dependencies
Contents
- awrap_octree_node_t
- awrap_octree_t
- awrap_build_octree
- subdivide
- allocate_children
- grow_node_array
- filter_overlapping
- compute_facet_bbox
- recount
- awrap_classify_leaves
- face_probe_point
- grow_queue
- count_classifications
- awrap_extract_surface
- face_corners
- emit_quad
- grow_facet_buffer
- awrap_project_vertices
- dedup_wrap_vertices
- lex_sort
- awrap_run
- collect_high_error_leaves
- find_leaf_at_point
- point_in_node
- leaf_touches_root_min
- lex_greater
- triangle_area
Variables
| Name | Type | Attributes | Description |
|---|---|---|---|
AWRAP_STATUS_OK | integer(kind=I4P) | parameter | |
AWRAP_STATUS_BAD_INPUT | integer(kind=I4P) | parameter | |
AWRAP_STATUS_DEGENERATE | integer(kind=I4P) | parameter | |
AWRAP_STATUS_NOT_CONVERGED | integer(kind=I4P) | parameter | |
AWRAP_LEAF_FLAG_INTERIOR | integer(kind=I4P) | parameter | |
AWRAP_LEAF_FLAG_BOUNDARY | integer(kind=I4P) | parameter | |
AWRAP_LEAF_FLAG_EMPTY | integer(kind=I4P) | parameter | |
AWRAP_LEAF_FLAG_OUTSIDE | integer(kind=I4P) | parameter | |
AWRAP_LEAF_FLAG_INSIDE | integer(kind=I4P) | parameter | |
AWRAP_MAX_DEPTH | integer(kind=I4P) | parameter | |
AWRAP_INITIAL_CAPACITY | integer(kind=I4P) | parameter | |
AWRAP_PADDING_FACTOR | real(kind=R8P) | parameter | |
AWRAP_DEFAULT_PROJECTION_ITERATIONS | integer(kind=I4P) | parameter | |
AWRAP_DEFAULT_MAX_OUTER_ITERATIONS | integer(kind=I4P) | parameter | |
AWRAP_VERTEX_DEDUP_TOL | real(kind=R8P) | parameter | |
AWRAP_AREA_DROP_REVERT | real(kind=R8P) | parameter |
Derived Types
awrap_octree_node_t
Components
| Name | Type | Attributes | Description |
|---|---|---|---|
bmin | type(vector_R8P) | ||
bmax | type(vector_R8P) | ||
first_child | integer(kind=I4P) | ||
depth | integer(kind=I4P) | ||
leaf_flag | integer(kind=I4P) | ||
facet_ids | integer(kind=I4P) | allocatable |
awrap_octree_t
Components
| Name | Type | Attributes | Description |
|---|---|---|---|
node | type(awrap_octree_node_t) | allocatable | |
n_nodes | integer(kind=I4P) | ||
n_leaves | integer(kind=I4P) | ||
n_boundary_leaves | integer(kind=I4P) | ||
n_inside_leaves | integer(kind=I4P) | ||
n_outside_leaves | integer(kind=I4P) | ||
alpha | real(kind=R8P) |
Subroutines
awrap_build_octree
fortran
subroutine awrap_build_octree(facet, alpha, octree, status)Arguments
| Name | Type | Intent | Attributes | Description |
|---|---|---|---|---|
facet | type(facet_object) | in | ||
alpha | real(kind=R8P) | in | ||
octree | type(awrap_octree_t) | out | ||
status | integer(kind=I4P) | out | optional |
Call graph
subdivide
Attributes: recursive
fortran
subroutine subdivide(octree, node_id, facet, candidate_facets)Arguments
| Name | Type | Intent | Attributes | Description |
|---|---|---|---|---|
octree | type(awrap_octree_t) | inout | ||
node_id | integer(kind=I4P) | in | ||
facet | type(facet_object) | in | ||
candidate_facets | integer(kind=I4P) | in |
Call graph
allocate_children
fortran
subroutine allocate_children(octree, parent_id)Arguments
| Name | Type | Intent | Attributes | Description |
|---|---|---|---|---|
octree | type(awrap_octree_t) | inout | ||
parent_id | integer(kind=I4P) | in |
Call graph
grow_node_array
fortran
subroutine grow_node_array(octree)Arguments
| Name | Type | Intent | Attributes | Description |
|---|---|---|---|---|
octree | type(awrap_octree_t) | inout |
Call graph
filter_overlapping
Attributes: pure
fortran
subroutine filter_overlapping(node_bmin, node_bmax, facet, candidate, kept, n_kept)Arguments
| Name | Type | Intent | Attributes | Description |
|---|---|---|---|---|
node_bmin | type(vector_R8P) | in | ||
node_bmax | type(vector_R8P) | in | ||
facet | type(facet_object) | in | ||
candidate | integer(kind=I4P) | in | ||
kept | integer(kind=I4P) | out | allocatable | |
n_kept | integer(kind=I4P) | out |
Call graph
compute_facet_bbox
Attributes: pure
fortran
subroutine compute_facet_bbox(facet, bmin, bmax)Arguments
| Name | Type | Intent | Attributes | Description |
|---|---|---|---|---|
facet | type(facet_object) | in | ||
bmin | type(vector_R8P) | out | ||
bmax | type(vector_R8P) | out |
Call graph
recount
fortran
subroutine recount(octree)Arguments
| Name | Type | Intent | Attributes | Description |
|---|---|---|---|---|
octree | type(awrap_octree_t) | inout |
Call graph
awrap_classify_leaves
fortran
subroutine awrap_classify_leaves(octree, status)Arguments
| Name | Type | Intent | Attributes | Description |
|---|---|---|---|---|
octree | type(awrap_octree_t) | inout | ||
status | integer(kind=I4P) | out | optional |
Call graph
face_probe_point
Attributes: pure
fortran
subroutine face_probe_point(node, axis, side, half_alpha, probe)Arguments
| Name | Type | Intent | Attributes | Description |
|---|---|---|---|---|
node | type(awrap_octree_node_t) | in | ||
axis | integer(kind=I4P) | in | ||
side | integer(kind=I4P) | in | ||
half_alpha | real(kind=R8P) | in | ||
probe | type(vector_R8P) | out |
Call graph
grow_queue
fortran
subroutine grow_queue(queue, cap)Arguments
| Name | Type | Intent | Attributes | Description |
|---|---|---|---|---|
queue | integer(kind=I4P) | inout | allocatable | |
cap | integer(kind=I4P) | inout |
Call graph
count_classifications
fortran
subroutine count_classifications(octree)Arguments
| Name | Type | Intent | Attributes | Description |
|---|---|---|---|---|
octree | type(awrap_octree_t) | inout |
Call graph
awrap_extract_surface
fortran
subroutine awrap_extract_surface(octree, wrapped_facets, status)Arguments
| Name | Type | Intent | Attributes | Description |
|---|---|---|---|---|
octree | type(awrap_octree_t) | in | ||
wrapped_facets | type(facet_object) | out | allocatable | |
status | integer(kind=I4P) | out | optional |
Call graph
face_corners
Attributes: pure
fortran
subroutine face_corners(node, axis, side, c0, c1, c2, c3)Arguments
| Name | Type | Intent | Attributes | Description |
|---|---|---|---|---|
node | type(awrap_octree_node_t) | in | ||
axis | integer(kind=I4P) | in | ||
side | integer(kind=I4P) | in | ||
c0 | type(vector_R8P) | out | ||
c1 | type(vector_R8P) | out | ||
c2 | type(vector_R8P) | out | ||
c3 | type(vector_R8P) | out |
Call graph
emit_quad
fortran
subroutine emit_quad(tmp, n_facets, cap, c0, c1, c2, c3, side, axis)Arguments
| Name | Type | Intent | Attributes | Description |
|---|---|---|---|---|
tmp | type(facet_object) | inout | allocatable | |
n_facets | integer(kind=I4P) | inout | ||
cap | integer(kind=I4P) | inout | ||
c0 | type(vector_R8P) | in | ||
c1 | type(vector_R8P) | in | ||
c2 | type(vector_R8P) | in | ||
c3 | type(vector_R8P) | in | ||
side | integer(kind=I4P) | in | ||
axis | integer(kind=I4P) | in |
Call graph
grow_facet_buffer
fortran
subroutine grow_facet_buffer(tmp, cap)Arguments
| Name | Type | Intent | Attributes | Description |
|---|---|---|---|---|
tmp | type(facet_object) | inout | allocatable | |
cap | integer(kind=I4P) | inout |
Call graph
awrap_project_vertices
fortran
subroutine awrap_project_vertices(wrap_facets, input_facet, input_tree, offset, iterations, status)Arguments
| Name | Type | Intent | Attributes | Description |
|---|---|---|---|---|
wrap_facets | type(facet_object) | inout | ||
input_facet | type(facet_object) | in | ||
input_tree | type(aabb_tree_object) | in | ||
offset | real(kind=R8P) | in | ||
iterations | integer(kind=I4P) | in | optional | |
status | integer(kind=I4P) | out | optional |
Call graph
dedup_wrap_vertices
fortran
subroutine dedup_wrap_vertices(wrap_facets, vertex_uid, unique_pos, dedup_tol_out)Arguments
| Name | Type | Intent | Attributes | Description |
|---|---|---|---|---|
wrap_facets | type(facet_object) | in | ||
vertex_uid | integer(kind=I4P) | out | allocatable | |
unique_pos | type(vector_R8P) | out | allocatable | |
dedup_tol_out | real(kind=R8P) | out |
Call graph
lex_sort
Attributes: pure
fortran
subroutine lex_sort(keys, order)Arguments
| Name | Type | Intent | Attributes | Description |
|---|---|---|---|---|
keys | real(kind=R8P) | in | ||
order | integer(kind=I4P) | inout |
Call graph
awrap_run
fortran
subroutine awrap_run(input_facet, input_tree, alpha, offset, max_iterations, wrapped_facets, status)Arguments
| Name | Type | Intent | Attributes | Description |
|---|---|---|---|---|
input_facet | type(facet_object) | in | ||
input_tree | type(aabb_tree_object) | in | ||
alpha | real(kind=R8P) | in | ||
offset | real(kind=R8P) | in | ||
max_iterations | integer(kind=I4P) | in | optional | |
wrapped_facets | type(facet_object) | out | allocatable | |
status | integer(kind=I4P) | out | optional |
Call graph
collect_high_error_leaves
fortran
subroutine collect_high_error_leaves(octree, wrap_facets, input_facet, input_tree, offset, leaves_to_refine, n_to_refine, max_err)Arguments
| Name | Type | Intent | Attributes | Description |
|---|---|---|---|---|
octree | type(awrap_octree_t) | in | ||
wrap_facets | type(facet_object) | in | ||
input_facet | type(facet_object) | in | ||
input_tree | type(aabb_tree_object) | in | ||
offset | real(kind=R8P) | in | ||
leaves_to_refine | integer(kind=I4P) | out | allocatable | |
n_to_refine | integer(kind=I4P) | out | ||
max_err | real(kind=R8P) | out |
Call graph
Functions
find_leaf_at_point
Attributes: pure
Returns: integer(kind=I4P)
fortran
function find_leaf_at_point(octree, point) result(leaf_id)Arguments
| Name | Type | Intent | Attributes | Description |
|---|---|---|---|---|
octree | type(awrap_octree_t) | in | ||
point | type(vector_R8P) | in |
Call graph
point_in_node
Attributes: pure
Returns: logical
fortran
function point_in_node(node, point) result(yes)Arguments
| Name | Type | Intent | Attributes | Description |
|---|---|---|---|---|
node | type(awrap_octree_node_t) | in | ||
point | type(vector_R8P) | in |
Call graph
leaf_touches_root_min
Attributes: pure
Returns: logical
fortran
function leaf_touches_root_min(octree, leaf_id) result(yes)Arguments
| Name | Type | Intent | Attributes | Description |
|---|---|---|---|---|
octree | type(awrap_octree_t) | in | ||
leaf_id | integer(kind=I4P) | in |
Call graph
lex_greater
Attributes: pure
Returns: logical
fortran
function lex_greater(a, b) result(yes)Arguments
| Name | Type | Intent | Attributes | Description |
|---|---|---|---|---|
a | real(kind=R8P) | in | ||
b | real(kind=R8P) | in |
Call graph
triangle_area
Attributes: pure
Returns: real(kind=R8P)
fortran
function triangle_area(v1, v2, v3) result(a)Arguments
| Name | Type | Intent | Attributes | Description |
|---|---|---|---|---|
v1 | type(vector_R8P) | in | ||
v2 | type(vector_R8P) | in | ||
v3 | type(vector_R8P) | in |
Call graph