/
NXcg_polyhedron_set.nxdl.xml
194 lines (191 loc) · 8.4 KB
/
NXcg_polyhedron_set.nxdl.xml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="nxdlformat.xsl"?>
<!--
# NeXus - Neutron and X-ray Common Data Format
#
# Copyright (C) 2014-2024 NeXus International Advisory Committee (NIAC)
#
# This library is free software; you can redistribute it and/or
# modify it under the terms of the GNU Lesser General Public
# License as published by the Free Software Foundation; either
# version 3 of the License, or (at your option) any later version.
#
# This library is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
# Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public
# License along with this library; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
#
# For further information, see http://www.nexusformat.org
-->
<!--it is useful to define own base classes for frequently used classes
a polyhedron is a specific polytope in 3d, do we need
higher-dimensional polytopes? that could be useful for simplicies though
as they are used in numerics etc. maybe reach out here to our friends
from MarDI, for now let's assume we do not need polytopes for d > 3
NeXus already supports polyhedra via NXoff_geometry
the here proposed base class extends the capabilities to qualifiers of
polyhedra and also half_edge_data_structures that can be useful
for clean graph-based descriptions of polyhedra.-->
<definition xmlns="http://definition.nexusformat.org/nxdl/3.1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" category="base" name="NXcg_polyhedron_set" extends="NXobject" type="group" xsi:schemaLocation="http://definition.nexusformat.org/nxdl/3.1 ../nxdl.xsd">
<symbols>
<doc>
The symbols used in the schema to specify e.g. dimensions of arrays.
</doc>
<symbol name="c">
<doc>
The cardinality of the set, i.e. the number of polyhedra.
</doc>
</symbol>
<symbol name="n_e_total">
<doc>
The total number of edges for all polyhedra.
</doc>
</symbol>
<symbol name="n_f_total">
<doc>
The total number of faces for all polyhedra.
</doc>
</symbol>
</symbols>
<doc>
Computational geometry description of a polyhedra in Euclidean space.
Polyhedra, also so-called cells (especially in the convex of tessellations),
here described have to be all non-degenerated, closed, built of and thus
built out of not-self-intersecting polygon meshes. Polyhedra may make contact,
so that this base class can be used for a future description of tessellations.
For more complicated manifolds and especially for polyhedra with holes, users
are advised to check if their particular needs are described by creating
(eventually customized) instances of an NXcg_polygon_set, which can be
extended for the description of piecewise-linear complexes.
</doc>
<field name="dimensionality" type="NX_POSINT" units="NX_UNITLESS">
<enumeration>
<item value="3"/>
</enumeration>
</field>
<field name="cardinality" type="NX_POSINT" units="NX_UNITLESS"/>
<!--qualifiers and properties of polyhedra-->
<field name="volume" type="NX_NUMBER" units="NX_VOLUME">
<doc>
Interior volume
</doc>
<dimensions rank="1">
<dim index="1" value="c"/>
</dimensions>
</field>
<field name="center" type="NX_NUMBER" units="NX_LENGTH">
<doc>
Position of the geometric center, which often is but not necessarily
has to be the center_of_mass of the polyhedra.
</doc>
<dimensions rank="2">
<dim index="1" value="c"/>
<dim index="2" value="3"/>
</dimensions>
</field>
<field name="surface_area" type="NX_NUMBER" units="NX_AREA">
<doc>
Total surface area as the sum of all faces.
</doc>
<dimensions rank="1">
<dim index="1" value="c"/>
</dimensions>
</field>
<field name="number_of_faces" type="NX_POSINT" units="NX_UNITLESS">
<doc>
The number of faces for each polyhedron. Faces of adjoining polyhedra
are counted for each polyhedron. This field can be used to interpret
the array/field with the individual area values for each face.
</doc>
<dimensions rank="1">
<dim index="1" value="c"/>
</dimensions>
</field>
<field name="face_area" type="NX_NUMBER" units="NX_AREA">
<doc>
Area of each of the four triangular faces of each tetrahedron.
</doc>
<dimensions rank="1">
<dim index="1" value="n_f_total"/>
</dimensions>
</field>
<field name="number_of_edges" type="NX_POSINT">
<doc>
The number of edges for each polyhedron. Edges of adjoining polyhedra
are counterd for each polyhedron. This field can be used to interpret
the array/field with the individual length for each edge.
</doc>
</field>
<field name="edge_length" type="NX_NUMBER" units="NX_LENGTH">
<doc>
Length of each edge of each tetrahedron.
</doc>
<dimensions rank="1">
<dim index="1" value="n_e_total"/>
</dimensions>
</field>
<group type="NXtransformations">
<doc>
Reference to or definition of a coordinate system with
which the qualifiers and mesh data are interpretable.
</doc>
</group>
<!--substantially more detailed descriptors of the shape, the mesh-->
<field name="identifier_offset" type="NX_INT" units="NX_UNITLESS">
<doc>
Integer which specifies the first index to be used for distinguishing
polyhedra. Identifiers are defined either implicitly
or explicitly. For implicit indexing the identifiers are defined on the
interval [identifier_offset, identifier_offset+c-1].
For explicit indexing the identifier array has to be defined.
The identifier_offset field can for example be used to communicate if the
identifiers are expected to start from 1 (referred to as Fortran-/Matlab-)
or from 0 (referred to as C-, Python-style index notation) respectively.
</doc>
</field>
<field name="identifier" type="NX_INT" units="NX_UNITLESS">
<doc>
Integer used to distinguish polyhedra for explicit indexing.
</doc>
<dimensions rank="1">
<dim index="1" value="c"/>
</dimensions>
</field>
<group name="vertex_normal" type="NXcg_unit_normal_set"/>
<group name="edge_normal" type="NXcg_unit_normal_set"/>
<group name="face_normal" type="NXcg_unit_normal_set"/>
<!--detailed mesh-based representation-->
<group name="polyhedra" type="NXcg_face_list_data_structure">
<!--exists: [min, 0, max, 1]-->
<doc>
A simple approach to describe the entire set of polyhedra when the
main intention is to store the shape of the polyhedra for visualization.
</doc>
</group>
<group name="polyhedron" type="NXcg_face_list_data_structure">
<!--exists: [min, 0, max, infty] # can this be max, c?-->
<doc>
Disentangled representations of the mesh of specific polyhedron.
</doc>
</group>
<group name="polyhedron_half_edge" type="NXcg_half_edge_data_structure">
<!--exists: [min, 0, max, infty]-->
<doc>
Disentangled representation of the planar graph that each polyhedron
represents. Such a description simplifies topological processing
or analyses of mesh primitive operations and neighborhood queries.
</doc>
</group>
<!-- face_type(NX_UINT): #maybe a better name maybe topology, although this is misleading for the above-mentioned reasons
doc: A concatenated array, for each polygon face the number of vertices.
unit: NX_UNITLESS
dimensions:
rank: 1
dim: [[1, nfaces]]
intersections between members? as a graph
contact with external primitives like simulation domain etc-->
</definition>