fossil_self_intersection
Source: src/lib/fossil_self_intersection.f90
Dependencies
Contents
- intersection_pair_t
- find_self_intersections
- brute_force_pairs
- traverse_node_pair
- enumerate_leaf_pair
- test_pair
- edge_fold
- edge_fans
- one_fan
- sort_columns_real
- sort_columns_int
- disjoint_pair
- shared_vertex_crossing
- push_pair
- bboxes_overlap
- fan_before
- o3
- cross3
- col_less_real
- col_less_int
- coplanar_relation
- boxes_interiors_meet
- axis_coplanar
- o2
- to_vector
- edge_overlap_at_vertex
- off_plane_one_side
- shared_vertices_number
- vertex_coincident
Variables
| Name | Type | Attributes | Description |
|---|---|---|---|
MAX_CHILDREN | integer(kind=I4P) | parameter | |
SELFINT_CROSSING | integer(kind=I4P) | parameter | |
SELFINT_TOUCHING | integer(kind=I4P) | parameter | |
SELFINT_COPLANAR | integer(kind=I4P) | parameter | |
SELFINT_EDGE_FOLD | integer(kind=I4P) | parameter | |
SELFINT_SHEETS | integer(kind=I4P) | parameter | |
COPLANAR_APART | integer(kind=I4P) | parameter | |
COPLANAR_TOUCH | integer(kind=I4P) | parameter | |
COPLANAR_OVERLAP | integer(kind=I4P) | parameter |
Derived Types
intersection_pair_t
Components
| Name | Type | Attributes | Description |
|---|---|---|---|
a | integer(kind=I4P) | ||
b | integer(kind=I4P) | ||
kind | integer(kind=I4P) | ||
p | type(vector_R8P) | ||
q | type(vector_R8P) |
Subroutines
find_self_intersections
subroutine find_self_intersections(facet, tree, pairs, status, include_touching)Arguments
| Name | Type | Intent | Attributes | Description |
|---|---|---|---|---|
facet | type(facet_object) | in | ||
tree | type(aabb_tree_object) | in | target | |
pairs | type(intersection_pair_t) | out | allocatable | |
status | integer(kind=I4P) | out | optional | |
include_touching | logical | in | optional |
Call graph
brute_force_pairs
subroutine brute_force_pairs(facet, touching, buf, nfound)Arguments
| Name | Type | Intent | Attributes | Description |
|---|---|---|---|---|
facet | type(facet_object) | in | ||
touching | logical | in | ||
buf | type(intersection_pair_t) | inout | allocatable | |
nfound | integer(kind=I4P) | inout |
Call graph
traverse_node_pair
Attributes: recursive
subroutine traverse_node_pair(facet, tree, na, nb, touching, buf, nfound)Arguments
| Name | Type | Intent | Attributes | Description |
|---|---|---|---|---|
facet | type(facet_object) | in | ||
tree | type(aabb_tree_object) | in | ||
na | integer(kind=I4P) | in | ||
nb | integer(kind=I4P) | in | ||
touching | logical | in | ||
buf | type(intersection_pair_t) | inout | allocatable | |
nfound | integer(kind=I4P) | inout |
Call graph
enumerate_leaf_pair
subroutine enumerate_leaf_pair(facet, tree, na, nb, touching, buf, nfound)Arguments
| Name | Type | Intent | Attributes | Description |
|---|---|---|---|---|
facet | type(facet_object) | in | ||
tree | type(aabb_tree_object) | in | ||
na | integer(kind=I4P) | in | ||
nb | integer(kind=I4P) | in | ||
touching | logical | in | ||
buf | type(intersection_pair_t) | inout | allocatable | |
nfound | integer(kind=I4P) | inout |
Call graph
test_pair
subroutine test_pair(fa, fb, touching, hit, kind, p, q)Arguments
| Name | Type | Intent | Attributes | Description |
|---|---|---|---|---|
fa | type(facet_object) | in | ||
fb | type(facet_object) | in | ||
touching | logical | in | ||
hit | logical | out | ||
kind | integer(kind=I4P) | out | ||
p | type(vector_R8P) | out | ||
q | type(vector_R8P) | out |
Call graph
edge_fold
subroutine edge_fold(ta, tb, hit, p, q)Arguments
| Name | Type | Intent | Attributes | Description |
|---|---|---|---|---|
ta | type(vector_R8P) | in | ||
tb | type(vector_R8P) | in | ||
hit | logical | out | ||
p | type(vector_R8P) | out | ||
q | type(vector_R8P) | out |
Call graph
edge_fans
subroutine edge_fans(facet, buf, nfound)Arguments
| Name | Type | Intent | Attributes | Description |
|---|---|---|---|---|
facet | type(facet_object) | in | ||
buf | type(intersection_pair_t) | inout | allocatable | |
nfound | integer(kind=I4P) | inout |
Call graph
one_fan
subroutine one_fan(xyz, vid, ekey, slots, buf, nfound)Arguments
| Name | Type | Intent | Attributes | Description |
|---|---|---|---|---|
xyz | real(kind=R8P) | in | ||
vid | integer(kind=I4P) | in | ||
ekey | integer(kind=I4P) | in | ||
slots | integer(kind=I4P) | in | ||
buf | type(intersection_pair_t) | inout | allocatable | |
nfound | integer(kind=I4P) | inout |
Call graph
sort_columns_real
subroutine sort_columns_real(a, ord)Arguments
| Name | Type | Intent | Attributes | Description |
|---|---|---|---|---|
a | real(kind=R8P) | in | ||
ord | integer(kind=I4P) | out | allocatable |
Call graph
sort_columns_int
subroutine sort_columns_int(a, ord)Arguments
| Name | Type | Intent | Attributes | Description |
|---|---|---|---|---|
a | integer(kind=I4P) | in | ||
ord | integer(kind=I4P) | out | allocatable |
Call graph
disjoint_pair
subroutine disjoint_pair(ta, tb, touching, hit, kind, p, q)Arguments
| Name | Type | Intent | Attributes | Description |
|---|---|---|---|---|
ta | type(vector_R8P) | in | ||
tb | type(vector_R8P) | in | ||
touching | logical | in | ||
hit | logical | out | ||
kind | integer(kind=I4P) | out | ||
p | type(vector_R8P) | out | ||
q | type(vector_R8P) | out |
Call graph
shared_vertex_crossing
subroutine shared_vertex_crossing(ta, tb, hit, p, q, coplanar)Arguments
| Name | Type | Intent | Attributes | Description |
|---|---|---|---|---|
ta | type(vector_R8P) | in | ||
tb | type(vector_R8P) | in | ||
hit | logical | out | ||
p | type(vector_R8P) | out | ||
q | type(vector_R8P) | out | ||
coplanar | logical | out |
Call graph
push_pair
subroutine push_pair(buf, nfound, a, b, kind, p, q)Arguments
| Name | Type | Intent | Attributes | Description |
|---|---|---|---|---|
buf | type(intersection_pair_t) | inout | allocatable | |
nfound | integer(kind=I4P) | inout | ||
a | integer(kind=I4P) | in | ||
b | integer(kind=I4P) | in | ||
kind | integer(kind=I4P) | in | ||
p | type(vector_R8P) | in | ||
q | type(vector_R8P) | in |
Call graph
Functions
bboxes_overlap
Attributes: pure
Returns: logical
function bboxes_overlap(fa, fb) result(yes)Arguments
| Name | Type | Intent | Attributes | Description |
|---|---|---|---|---|
fa | type(facet_object) | in | ||
fb | type(facet_object) | in |
Call graph
fan_before
Returns: logical
function fan_before(h1, h2, p0, p1, w1, w2, tie) result(yes)Arguments
| Name | Type | Intent | Attributes | Description |
|---|---|---|---|---|
h1 | integer(kind=I4P) | in | ||
h2 | integer(kind=I4P) | in | ||
p0 | real(kind=R8P) | in | ||
p1 | real(kind=R8P) | in | ||
w1 | real(kind=R8P) | in | ||
w2 | real(kind=R8P) | in | ||
tie | logical | out |
Call graph
o3
Returns: real(kind=R8P)
function o3(a1, a2, a3, a4) result(sg)Arguments
| Name | Type | Intent | Attributes | Description |
|---|---|---|---|---|
a1 | real(kind=R8P) | in | ||
a2 | real(kind=R8P) | in | ||
a3 | real(kind=R8P) | in | ||
a4 | real(kind=R8P) | in |
Call graph
cross3
Attributes: pure
Returns: real(kind=R8P)
function cross3(x, y) result(z)Arguments
| Name | Type | Intent | Attributes | Description |
|---|---|---|---|---|
x | real(kind=R8P) | in | ||
y | real(kind=R8P) | in |
Call graph
col_less_real
Attributes: pure
Returns: logical
function col_less_real(x, y) result(less)Arguments
| Name | Type | Intent | Attributes | Description |
|---|---|---|---|---|
x | real(kind=R8P) | in | ||
y | real(kind=R8P) | in |
Call graph
col_less_int
Attributes: pure
Returns: logical
function col_less_int(x, y) result(less)Arguments
| Name | Type | Intent | Attributes | Description |
|---|---|---|---|---|
x | integer(kind=I4P) | in | ||
y | integer(kind=I4P) | in |
Call graph
coplanar_relation
Returns: integer(kind=I4P)
function coplanar_relation(ta, tb) result(rel)Arguments
| Name | Type | Intent | Attributes | Description |
|---|---|---|---|---|
ta | type(vector_R8P) | in | ||
tb | type(vector_R8P) | in |
Call graph
boxes_interiors_meet
Attributes: pure
Returns: logical
function boxes_interiors_meet(ta, tb) result(yes)Arguments
| Name | Type | Intent | Attributes | Description |
|---|---|---|---|---|
ta | type(vector_R8P) | in | ||
tb | type(vector_R8P) | in |
Call graph
axis_coplanar
Attributes: pure
Returns: logical
function axis_coplanar(ta, tb) result(yes)Arguments
| Name | Type | Intent | Attributes | Description |
|---|---|---|---|---|
ta | type(vector_R8P) | in | ||
tb | type(vector_R8P) | in |
Call graph
o2
Returns: integer(kind=I4P)
function o2(a, b, c) result(sg)Arguments
| Name | Type | Intent | Attributes | Description |
|---|---|---|---|---|
a | real(kind=R8P) | in | ||
b | real(kind=R8P) | in | ||
c | real(kind=R8P) | in |
Call graph
to_vector
Attributes: pure
Returns: type(vector_R8P)
function to_vector(x) result(v)Arguments
| Name | Type | Intent | Attributes | Description |
|---|---|---|---|---|
x | real(kind=R8P) | in |
Call graph
edge_overlap_at_vertex
Returns: logical
function edge_overlap_at_vertex(ta, tb) result(yes)Arguments
| Name | Type | Intent | Attributes | Description |
|---|---|---|---|---|
ta | type(vector_R8P) | in | ||
tb | type(vector_R8P) | in |
Call graph
off_plane_one_side
Returns: logical
function off_plane_one_side(t, s) result(yes)Arguments
| Name | Type | Intent | Attributes | Description |
|---|---|---|---|---|
t | type(vector_R8P) | in | ||
s | type(vector_R8P) | in |
Call graph
shared_vertices_number
Attributes: pure
Returns: integer(kind=I4P)
function shared_vertices_number(fa, fb) result(n)Arguments
| Name | Type | Intent | Attributes | Description |
|---|---|---|---|---|
fa | type(facet_object) | in | ||
fb | type(facet_object) | in |
Call graph
vertex_coincident
Attributes: pure
Returns: logical
function vertex_coincident(va, vb) result(yes)Arguments
| Name | Type | Intent | Attributes | Description |
|---|---|---|---|---|
va | type(vector_R8P) | in | ||
vb | type(vector_R8P) | in |
Call graph