# 3.3.3.6. Geometry & Microstructure¶

## Introduction¶

The computational-geometry/microstructure-modeling-based part of the proposal has the following aims:

First, we would like to contribute to efforts on standardizing a controlled vocabulary, definitions for these terms, and relations between the terms, for computational-geometry-based descriptions of the structure of materials and atomic configurations used when characterizing materials in experiments and computer simulations.

As far as NeXus is concerned, this proposed set of simple geometric primitives and shapes offer a complementary alternative to the current set of base classes in NeXus for constructive solid geometry such as NXcsg, NXoff_geometry, or NXquadric to name but a few.

Second, we would like to explore with this proposal how we can harmonize terms frequently used by materials scientists in the field of condensed-matter physics with definitions and terms offer by the NOMAD MetaInfo description.

Third, the proposal should yield a substantiated set of arguments and suggestions how descriptors for the structure and atomic architecture of materials can be harmonized. With this we especially would like to reach out and intensify the cooperation between the materials-science-related consortia of the German National Research Infrastructure, specifically, FAIRmat, NFDI-MatWerk, NFDI4Ing, NFDI4Chem, NFDI4Cat, MaRDi, and DAPHNE.

## Physics background¶

Microstructural features or crystal defects are spatial arrangements of atoms. Given their specific atomic arrangement and composition, such features have specific constraints on the degrees of freedom how atoms can arrange. This causes these defects to have specific properties. Provided well-defined coarse-graining procedures are used and regions-of-interest and/or regions-of-applicability are defined, microstructural features are often characterized and modelled to have associated thermodynamic descriptors.

Another motivation for the proposal was the observation that frequently the design of file formats for simulation software in the computational materials science especially those tools at the interface between condensed-matter physics and materials engineering are frequently reimplementing the wheel (at least partly) when it comes to decide how to store e.g. atom and feature positions or shape of regions-of-interest, grids, crystals, grains, precipitates, and dislocations.

Maybe this is a historical burden given the large set of technical terms and jargon in place, which then motivated pragmatic solutions that resulted in many research groups have developed similar formats using similar descriptions.

We see this work on base classes and application definitions not primarily an effort to improve and extend NeXus for now. Rather this part of the proposal is an effort to support activities in materials science to work towards common terminology and using controlled vocabularies more frequently. These are the foundation for more sophisticated thoughts about practically useful ontologies.

Defining crystal defects is a question of how to coarse-grain a given spatiotemporal set of atoms, each having a nuclide type and position/trajectory. Different mathematical/geometrical methods exists to coarse-grain and thus determine how a point, a line, a surface, or a volumetric defect can be described and be spatiotemporally constrained through a geometrical model with defined geometric primitives and associated (materials) properties at a coarser-scale.

The key motivation to such coarse-graining is to reduce the complexity of the description. On the one hand to support visualization and scientific analyses - not only of crystal defect arrangements. On the other hand it is the hope that using descriptors at a coarser level, i.e. nanometre, micrometre, and larger, it is still possible to find sufficiently accurate and precise descriptors that avoid one having to account for the dynamics of each atom to predict or understand the properties of defects and their dynamics.

Nevertheless, experience has shown that computational-geometry-based descriptions when combined with hierarchical clustering/labeling methods, applied on set of atoms and features turn out to yield useful descriptors. Examples include point, line, surface defects, such as vacancies, solute cluster, dislocations, disconnections, interfaces to name but a few.

## Base Classes¶

The following base classes are defined to incentivize the use of NeXus for using computational-geometry-based descriptions. In what follows, base classes for frequently used shapes and geometric primitives are proposed:

- NXcg_sphere_set:
A description for a set of possibly dissimilar spheres.

- NXcg_ellipsoid_set:
A description for a set of possibly dissimilar oriented ellipsoids.

- NXcg_cylinder_set:
A description for a set of possibly dissimilar oriented cylinders.

- NXcg_point_set:
A collection of points with labels.

- NXcg_polyline_set:
A collection of lines and linear segments.

- NXcg_triangle_set:
A collection of triangles.

- NXcg_parallelogram_set:
A collection of possibly dissimilar parallelograms.

- NXcg_triangulated_surface_mesh:
A mesh of triangles.

- NXcg_polygon_set:
A collection of polygons.

- NXcg_polyhedron_set:
A collection of polyhedra.

- NXcg_roi_set:
A container to host a number of different types of primitives.

- NXcg_tetrahedron_set:
A collection of tetrahedra.

- NXcg_hexahedron_set:
A collection of hexahedra with capabilities to represent also simpler (bounding) boxes for e.g. binary trees.

These base classes describe data structures used for more complex geometries:

- NXcg_face_list_data_structure:
In essence, the usual way how polygon/polyhedra data are reported: A list of vertices and faces with identifier and properties.

- NXcg_half_edge_data_structure:
A half-edge data structure (also known as a doubly connected edge list) is a useful complementary descriptor for polygon/polyhedra which enables topological analyses and traversal of the graph of how polygons and polyhedra are connected.

- NXcg_unit_normal_set:
As an additional structuring element especially for meshes, well-documented normal information is crucial for distance computations.

- NXcg_geodesic_mesh:
Geodesic meshes are useful for all applications when meshing the surface of a sphere.

- NXcg_alpha_complex:
Alpha shapes and alpha wrappings, specifically the special case of the convex hull, are frequently used geometrical models for describing a boundary or edge to a set of geometric primitives.

Next, a few base classes are defined for documenting discretized representations of material (area or volume) which can be useful not only for stencil-based methods:

- NXcg_grid:
A grid of cells.

- NXisocontour:
A description for isocontour descriptions.

- NXcg_marching_cubes:
An approach to store metadata of a specific implementation of the Marching Cubes algorithm, whose sensitivity to specific topological configurations is known to result in different triangle collections.

- NXdelocalization:
An approach to document procedures whereby a scalar field is smoothed in a controlled manner.

- NXsimilarity_grouping:
An alternative for NXclustering.

- NXclustering:
A description for clustering of objects (such as atoms or features).

- NXorientation_set:
A set of parameters to describe the relative orientation of members of a set of features/objects.

- NXslip_system_set:
Metadata for a set of slip systems in a given crystal structure.

- NXms_feature_set:
Generic base class to describe any nested set of features of a microstructure at the continuum-, micron-, nano-scale, or to represent a topology of molecules and atoms.

- NXms_snapshot:
A container to describe the state of microstructural features at a given point in time.

- NXms_snapshot_set:
The corresponding class to hold a set of NXms_snapshot objects.

- NXchemical_composition:
(Chemical) composition of a sample or a set of things.

Finally, the following base classes allow data processing software to document its input parameters and to summarize its performance statistics:

- NXprogram:
A named and version of a program of library/component.

- NXcs_filter_boolean_mask:
A boolean mask.

- NXcs_prng:
Metadata of a pseudo-random number generator (PRNG) algorithm.

- NXcs_profiling:
A structuring group holding a set of NXcs_profiling_event instances.

- NXcs_profiling_event:
Profiling/benchmark data to an event of tracking an algorithm/computational step.

- NXcs_computer:
Metadata of a computer.

- NXcs_cpu:
Metadata of a central processing unit.

- NXcs_gpu:
Metadata of a graphical processing unit / accelerator.

- NXcs_mm_sys:
Metadata of the (main) memory (sub-)system.

- NXcs_io_sys:
Metadata of the input/output system.

- NXcs_io_obj:
Metadata of a component storing data of an NXcs_io_sys instance.

## Application definitions for ICME models¶

It is important to embrace the large research community of materials engineers as they are frequent users of electron microscopy and atom probe microscopy. In this community frequently ICME (Integrated Computational Materials Engineering) microstructure models are used. These models are derived from a design strategy and workflow whereby physics-based modelling of microstructure evolution, typically at the mesoscopic scale, is used to understand the relations between the microstructure and technological relevant descriptors for the properties of materials.

The following application definitions are proposed to support discussion on how materials engineering-specific data models connect to or can be mapped on concepts which are equally modellable with NeXus:

- NXms:
An application definition for arbitrary spatiotemporally resolved simulations.

- NXms_score_config:
A specific example of how NXapm_paraprobe_config_ranger can be specialized for documenting the configuration of a computer simulation with the static recrystallization cellular automata model SCORE.

- NXms_score_results:
A specific example of how NXms can be specialized for documenting results of computer simulations with the static recrystallization cellular automata model SCORE.