2.3.3.3.57. NXmicrostructure

Status:

base class (contribution), extends NXobject

Description:

Base class to describe a microstructure, its structural aspects, associated desc ...

Base class to describe a microstructure, its structural aspects, associated descriptors, properties.

Whether one uses a continuum or atomic scale description of materials, these are always a model only of the true internal structure of a material. Such models are useful as they enable a coarse-graining and categorizing of properties and representational aspects from which measured or simulated descriptions can be correlated with properties, i.e. descriptor values. The base class here can be used to describe the structural aspect of a region-of-interest for a specimen that was investigated or a computer simulation that was performed for a virtual specimen.

Specimens experience thermo-chemo-mechanical processing (steps) before characterization. Therefore, the characterized microstructure may not turn out to be the same structure as of the untreated sample from which the region-of-interests on the specimen were sampled.

Fields such as time and increment enable a quantification of the spatiotemporal evolution of a materials’ structure by using multiple instances of NXmicrostructure. Both measurements and simulation virtually always sample this evolution. Most microscopy techniques characterize only a two-dimensional representation (projection) of the characterized material volume. Often materials are characterized only for specific states or via sampling coarsely in time relative to the timescale at which the physical phenomena take place. This is typically a compromise between the research questions and technical surplus practical limitations.

The term microstructural feature covers here crystals and all sorts of crystal defects within the material (interfaces, triple junctions, dislocations, pores, etc.). A key challenge with the description of representations and properties of such microstructural features is that they can be represented and view as features with different dimensionality. Furthermore, combinations of features of different dimensionality are frequently expected to be documented with intuitive naming conventions when flat property lists are used. For these key-value dictionaries often folksonomies are used. These can be based on ad hoc documentation of such dictionaries in the literature and the metadata section of public data repositories.

NXmicrostructure is an attempt to standardize these descriptions stronger.

For crystals the number of typically used technical terms are smaller than for interfaces or line like defects and junctions of different types of crystal defects. The term grain describes a contiguous region of material that is delineated by interfaces (phase or grain boundaries). With its origin motivated by light optical microscopy though a grain is not necessarily a single crystal but can have an internal structure of defect such as dislocations. In this base class we use the term and respective group crystals though for single crystals and grains. The reason why this is possible is that when e.g. materials engineers talk about grains they inherently assume that the internal structure of these grains can be described with homogenized effective properties. If alternatively the individual structural crystalline or features of this grain should be distinguished it is useful to instantiate these as individual instances of crystals.

Grain boundaries and phase boundaries are two main categories of interfaces. A grain boundary delineates two regions with similar crystal structure and phase but different orientation. A grain boundary is thus a homophase interface. By contrast, a heterophase boundary delineates two regions with typically but not necessarily dissimilar crystal structure but a different atomic occupation that justifies to distinguish two phases. There is a substantial variety of interfaces whose distinction was classically based on geometrical arguments but considers that atomic segregation is an equally important structural aspect to consider when classifying grain boundaries. A concise overview on theoretical aspect of and the semantics for characterizing interfaces and their properties is provided in e.g. W. Bollmann and A. Sutton and R. W. Baluffi, Interfaces in Crystalline Materials, Clarendon Press, ISBN 9780198500612.

Also for junctions between crystal defects there is a considerable variety of terms. Junctions are features in three-dimensional Euclidean space even if they are formed maybe only through a monolayer or a pearl chain of atoms. Either way their local atomic and electronic environment is different compared to the situation of an ideal crystal, or the adjoining defects, which gives typically rise to a plethora of configurations of which some yield useful material properties or affect material properties.

Like crystals and interfaces, junctions are assumed to represent groups of atoms that have specific descriptor values which are different to other features. Taking an example, a triple junction is practically a three-dimensional defect as its atoms are arranged in three-dimensional space but the characteristics of that defect can often be reduced to a lower-dimensional description such as a triple line or a triple point as the projection of a line. Therefore, different representations can be used to describe the location, shape, and structure of such defect.

This base class provides definitions for crystals, grains, interfaces, triple junctions, and quadruple junctions thus covering, volumetric, patch, line, and point like features that can serve as examples for future extension.

As different types of crystal defects can interact, there is a substantial number of in principle characterizable and representable objects. Take again a triple line as an example. It is a tubular feature built from three adjoining interfaces. However, dislocations as line defects can interact with triple lines. Therefore, one can also argue that along a triple line there exist dislocation-line- triple-line junctions, likewise dislocations form own junctions.

The description took inspiration from E. E. Underwood and E. E. Underwood’s book on Quantitative Stereology published in 1970 to categorize features based on their dimensionality.

Indices can be defined either implicitly or explicitly. Indices for implicit indexing are defined on the interval \([index\_offset, index\_offset + cardinality - 1]\). Indices can be used as identifiers for distinguishing instances, i.e. indices are equivalent to instance names of individual crystals.

Symbols:

The symbols used in the schema to specify e.g. dimensions of arrays.

n_c: The number of crystals or their projections

n_i: The number of interfaces or their projections

n_tj: The number of triple junctions or their projections

n_qj: The number of quadruple junctions or their projections

n_c_one: The number of one-dimensional crystal projections

n_i_one: The number of one-dimensional interface projections

n_c_two: The number of two-dimensional crystal projections

n_i_two: The number of two-dimensional interface projections

n_tj_two: The number of two-dimensional triple line projections

n_ld_two: The number of two-dimensional line defect projections

n_c_three: The number of crystals (grain and sub-grain are exact synonyms for crystal).

n_i_three: The number of interfaces (grain boundary and phase boundary are subclasses of interfaces).

n_tj_three: The number of triple junctions (triple line is a exact synonym for triple junction, triple point is projection of a triple junction).

n_qj_three: The number of quadruple junctions.

d: The dimensionality of the representation that needs to match the value for configuration/dimensionality

Groups cited:

NXcg_grid, NXcg_point, NXcg_polygon, NXcg_polyhedron, NXcg_polyline, NXcg_triangle, NXchemical_composition, NXmicrostructure_feature, NXphase, NXprocess, NXprogram, NXrotations

Structure:

comment: (optional) NX_CHAR

Discouraged free-text field for leaving comments

date: (optional) NX_DATE_TIME

ISO8601 with offset to local time zone included when a timestamp is required.

time: (optional) NX_NUMBER {units=NX_TIME}

Measured or simulated physical time stamp for this microstructure snapshot. ...

Measured or simulated physical time stamp for this microstructure snapshot. Not to be confused with wall-clock timing or profiling data.

iteration: (optional) NX_INT {units=NX_UNITLESS}

Iteration or increment counter.

configuration: (optional) NXprocess

Group where to store details about the configuration and parameterization of a ...

Group where to store details about the configuration and parameterization of algorithms used whereby microstructural features were identified.

dimensionality: (optional) NX_POSINT {units=NX_UNITLESS}

Dimensionality of Euclidean space in which the analysis is performed. ...

Dimensionality of Euclidean space in which the analysis is performed.

This field can be used e.g. by a research data management system to identify if the description specifies one-, two-, or three-dimensional microstructural representations.

Any of these values: 1 | 2 | 3

algorithm: (optional) NX_CHAR

Algorithm whereby interfaces between crystals were reconstructed. ...

Algorithm whereby interfaces between crystals were reconstructed.

  • Disorientation clustering groups nearby material points based on their crystallographic disorientation

  • Fast multiscale clustering based on D. Kushnir et al.

  • Markov chain clustering F. Niessen et al.

Any of these values:

  • unknown

  • disorientation_clustering

  • fast_multiscale_clustering

  • markov_chain_clustering

disorientation_threshold: (optional) NX_NUMBER {units=NX_ANGLE}

Threshold to define at which disorientation angle to assume two crystalline ...

Threshold to define at which disorientation angle to assume two crystalline regions have a significant orientation difference that warrants to assume that there exists an interface between the two regions.

PROGRAM: (optional) NXprogram

The program with which the microstructure was reconstructed.

CG_GRID: (optional) NXcg_grid

CG_POINT: (optional) NXcg_point

CG_POLYLINE: (optional) NXcg_polyline

CG_TRIANGLE: (optional) NXcg_triangle

CG_POLYGON: (optional) NXcg_polygon

CG_POLYHEDRON: (optional) NXcg_polyhedron

chemical_composition: (optional) NXchemical_composition

The chemical composition of this microstructure (region).

phases: (optional) NXmicrostructure_feature

Different (thermodynamic) phases can be distinguished for the region-of- ...

Different (thermodynamic) phases can be distinguished for the region-of- interest.

index_offset: (optional) NX_INT {units=NX_UNITLESS}

First identifier whereby to identify phases implicitly.

PHASE: (optional) NXphase

crystals: (optional) NXmicrostructure_feature

One- or two-dimensional projections, or three-dimensional representations of c ...

One- or two-dimensional projections, or three-dimensional representations of crystals.

An example for a volume bounded by other crystal defects. Crystals can be grains of different phases, precipitates, dispersoids; there are many terms used specifically in the materials engineering community.

Typically, crystals are measured on the surface of a sample via optical or electron microscopy. Using X-ray diffraction methods crystals can be observed in bulk specimens.

Crystals are represented by a set of pixel, voxel, or polygons and their polyline boundaries. In rare cases the volume bounded gets represented using constructive solid geometry approaches.

representation: (optional) NX_CHAR

Reference to an instance of: ...

Reference to an instance of:

  • NXcg_polyline for a one- or two-dimensional representation as only a projection is available (like in linear intercept analysis)

  • NXcg_polygon, NXcg_triangle, or NXcg_polyhedron for a two- or three-dimensional representation as only a projection is available (like in most experiments)

  • NXcg_grid for regularly pixelated (in 1D, 2D) or voxelated representations (in 3D)

which represent the geometrical entities of the discretization.

number_of_crystals: (optional) NX_UINT {units=NX_UNITLESS}

How many crystals are distinguished. ...

How many crystals are distinguished.

Crystals are listed irrespective of the phase to which these are assigned.

number_of_phases: (optional) NX_UINT {units=NX_UNITLESS}

How many phases are distinguished. ...

How many phases are distinguished.

Phases are typically distinguished based on statistical thermodynamics argument and crystal structure.

index_offset: (optional) NX_INT {units=NX_UNITLESS}

First identifier whereby to identify crystals implicitly.

indices_crystal: (optional) NX_INT (Rank: 1, Dimensions: [n_c]) {units=NX_UNITLESS}

Identifier whereby to identify each crystal explicitly.

indices_phase: (optional) NX_INT (Rank: 1, Dimensions: [n_c]) {units=NX_UNITLESS}

Identifier whereby to identify phase for each crystal explicitly.

boundary_contact: (optional) NX_UINT (Rank: 1, Dimensions: [n_c])

True, if the feature makes contact with the edge of the ROI. ...

True, if the feature makes contact with the edge of the ROI. False, if the feature does not make contact with the edge of the ROI.

orientation_spread: (optional) NX_NUMBER (Rank: 1, Dimensions: [n_c]) {units=NX_ANGLE}

Average disorientation angle for each crystal between individual orientation ...

Average disorientation angle for each crystal between individual orientations of that crystal evaluated as a summary statistic for all probed positions vs the average disorientation of that crystal.

length: (optional) NX_NUMBER (Rank: 1, Dimensions: [n_c]) {units=NX_LENGTH}

Length of each crystal

area: (optional) NX_NUMBER (Rank: 1, Dimensions: [n_c]) {units=NX_AREA}

Area of each crystal.

volume: (optional) NX_NUMBER (Rank: 1, Dimensions: [n_c]) {units=NX_VOLUME}

Volume of each crystal

orientation: (optional) NXrotations

Possibility to store the mean orientation of the grain.

interfaces: (optional) NXmicrostructure_feature

One- or two-dimensional projections or three-dimensional representation of int ...

One- or two-dimensional projections or three-dimensional representation of interfaces between crystals as topological entities equivalent to dual_junctions.

An example for a surface defect. Most important are interfaces such as grain and phase boundaries but factually interfaces also exist between the environment and crystals exposed at the surface of the specimen or internal surfaces like between crystals, cracks, or pores.

Interfaces are typically reported as discretized features. For interface projections on the 2D plane these are most frequently polyline segments. For interface patches in 3D these are most frequently triangulations. Descriptions with continuous functions are seldom used unless simplified configurations are studied in modeling and theoretical studies.

When using discretizations the individual interface segments need to be distinguished from the interfaces themselves. Consequently, there are two sets of indices.

representation: (optional) NX_CHAR

Reference to an instance of: ...

Reference to an instance of:

  • NXcg_point for a one-dimensional representation as only a projection is available (as in linear intercept analyses)

  • NXcg_polyline or NXcg_polygon for a two-dimensional representation as only a projection is available (like in most experiments)

  • NXcg_grid for regularly pixelated (in 1D, 2D) or voxelated representations (in 3D) using (boolean) masks (like in computer simulations or 3D experiments)

which represent the geometrical entities of the discretization.

number_of_interfaces: (optional) NX_UINT {units=NX_UNITLESS}

How many interfaces are distinguished.

index_offset: (optional) NX_INT {units=NX_UNITLESS}

First identifier whereby to identify interfaces implicitly.

indices_interface: (optional) NX_INT (Rank: 1, Dimensions: [n_i]) {units=NX_UNITLESS}

Identifier whereby to identify each interface explicitly. ...

Identifier whereby to identify each interface explicitly.

An array with as many entries as interfaces or their projections.

indices_crystal: (optional) NX_INT (Rank: 2, Dimensions: [n_i, 2]) {units=NX_UNITLESS}

Set of pairs of indices_crystal values, for each interface one value pair. ...

Set of pairs of indices_crystal values, for each interface one value pair.

An array with as many pairs as interfaces or their projections.

@use_these: (optional) NX_CHAR

The specific identifiers whereby to resolve ambiguities.

indices_phase: (optional) NX_INT (Rank: 2, Dimensions: [n_i, 2]) {units=NX_UNITLESS}

Set of pairs of indices_phase values, for each interface one value pair. ...

Set of pairs of indices_phase values, for each interface one value pair.

An array with as many pairs as interfaces or their projections.

@use_these: (optional) NX_CHAR

The specific identifiers whereby to resolve ambiguities.

number_of_triple_junctions: (optional) NX_UINT (Rank: 1, Dimensions: [n_i]) {units=NX_UNITLESS}

Interfaces can be the physical three-dimensional surfaces or two- or one-dim ...

Interfaces can be the physical three-dimensional surfaces or two- or one-dimensional projections. The latter situation applies typically for characterization with electron microscopy.

In the case of a two-dimensional projection interfaces are interface traces. These have two terminating junctions. In three dimensions though the interface is a surface patch that is bounded by multiple triple lines.

Number of triple_junctions adjoining each interface. This array resolves the number of values along the second dimension for the field indices_triple_junctions.

indices_triple_junction: (optional) NX_INT (Rank: 1, Dimensions: [i]) {units=NX_UNITLESS}

Set of pairs of indices_triple_junction for each interface. ...

Set of pairs of indices_triple_junction for each interface.

An array with as many tuples of pairs to describe all junctions about all interfaces.

@use_these: (optional) NX_CHAR

The specific identifiers whereby to resolve ambiguities.

boundary_contact: (optional) NX_UINT (Rank: 1, Dimensions: [n_i])

True, if the interface makes contact with the edge of the ROI. ...

True, if the interface makes contact with the edge of the ROI. False, if the interface does not make contact with the edge of the ROI.

surface_energy: (optional) NX_NUMBER (Rank: 1, Dimensions: [n_i]) {units=NX_ANY}

Gibbs free surface energy for each interface.

mobility: (optional) NX_NUMBER (Rank: 1, Dimensions: [n_i]) {units=NX_ANY}

Non-intrinsic mobility of each interface.

length: (optional) NX_NUMBER (Rank: 1, Dimensions: [n_i]) {units=NX_LENGTH}

The length of each interface if only projections are available. ...

The length of each interface if only projections are available.

This is not necessarily the same as the length of the individual polyline segments whereby the interface is discretized.

area: (optional) NX_NUMBER (Rank: 1, Dimensions: [n_i]) {units=NX_AREA}

The surface area of all interfaces.

triple_junctions: (optional) NXmicrostructure_feature

Projections or representations of junctions at which three interfaces meet. ...

Projections or representations of junctions at which three interfaces meet.

An example for a line defect. Triple junctions are characterized as triple lines or triple points as their projections, or junctions observed between crystals (at the specimen surface exposed to an environment) (including wetting phenomena) or inside the specimen (crack, pores).

representation: (optional) NX_CHAR

Reference to an instance of: ...

Reference to an instance of:

  • NXcg_point for a one-dimensional representation as only a projection is available (like in most experiments)

  • NXcg_polyline for a two-dimensional representation as only a projection is available

  • NXcg_polygon for a two-dimensional representation in the (seldom) case of sufficient spatial resolution and the line in the projection plane or cases where triple junction locations are approximated e.g. using a set of triangles

  • NXcg_polyhedron for a three-dimensional representation via e.g. a representation of Voronoi cells about atoms

  • NXcg_grid for regularly pixelated or voxelated representation in one, two, or three dimensions using (boolean) masks

which represent the geometrical entities of the discretization.

number_of_junctions: (optional) NX_UINT {units=NX_UNITLESS}

Number of triple junctions.

index_offset: (optional) NX_INT {units=NX_UNITLESS}

First identifier to identify triple junctions implicitly.

indices_triple_junction: (optional) NX_INT (Rank: 1, Dimensions: [n_tj]) {units=NX_UNITLESS}

Identifier to identify each triple junction explicitly.

location: (optional) NX_INT (Rank: 1, Dimensions: [n_tj]) {units=NX_UNITLESS}

Set of identifier for positions whereby to identify the location of each ...

Set of identifier for positions whereby to identify the location of each junction.

@use_these: (optional) NX_CHAR

The specific identifiers whereby to resolve ambiguities.

position: (optional) NX_NUMBER (Rank: 2, Dimensions: [n_tj, d]) {units=NX_LENGTH}

Explicit positions.

indices_crystal: (optional) NX_INT (Rank: 2, Dimensions: [n_tj, 3]) {units=NX_UNITLESS}

Set of tuples of identifier of crystals connected to the junction for each ...

Set of tuples of identifier of crystals connected to the junction for each triple junction.

indices_interface: (optional) NX_INT (Rank: 2, Dimensions: [n_tj, 3]) {units=NX_UNITLESS}

Set of tuples of identifier of interfaces connected to the junction for each ...

Set of tuples of identifier of interfaces connected to the junction for each triple junction.

@use_these: (optional) NX_CHAR

The specific interface identifiers whereby to resolve ambiguities.

indices_polyline: (optional) NX_INT (Rank: 2, Dimensions: [n_tj, 3]) {units=NX_UNITLESS}

Set of tuples of identifier for polyline segments connected to the junction ...

Set of tuples of identifier for polyline segments connected to the junction for each triple junction.

@use_these: (optional) NX_CHAR

The specific indices_polyline whereby to resolve ambiguities.

boundary_contact: (optional) NX_UINT (Rank: 1, Dimensions: [n_tj])

True, if the triple line makes contact with the edge of the ROI. ...

True, if the triple line makes contact with the edge of the ROI. False, if the triple line does not make contact with the edge of the ROI.

line_energy: (optional) NX_NUMBER (Rank: 1, Dimensions: [n_tj]) {units=NX_ANY}

Specific line energy of each triple junction

mobility: (optional) NX_NUMBER (Rank: 1, Dimensions: [n_tj]) {units=NX_ANY}

Non-intrinsic mobility of each triple junction.

length: (optional) NX_NUMBER (Rank: 1, Dimensions: [n_tj]) {units=NX_LENGTH}

The length of each triple junction. ...

The length of each triple junction.

This is not necessarily the same as the length of the individual polyline segments whereby the junction is discretized.

volume: (optional) NX_NUMBER (Rank: 1, Dimensions: [n_tj]) {units=NX_VOLUME}

The volume about each triple junction. ...

The volume about each triple junction.

Respective cut-off criteria need to be specified.

quadruple_junctions: (optional) NXmicrostructure_feature

Quadruple junctions as a region where four crystals meet. ...

Quadruple junctions as a region where four crystals meet.

An example for a point (like) defect.

Thermodynamically such junctions can be unstable. Specifically when discretizations are used in simulations that do not address the thermodynamics of and splitting characteristics of junctions in cases when more than four crystals meet, it is possible that so-called higher-order junctions are observed.

representation: (optional) NX_CHAR

Reference to an instance of: ...

Reference to an instance of:

  • NXcg_point

  • NXcg_grid for regularly pixelated (in 1D, 2D) or voxelated representations (in 3D) using (boolean) masks

which represent the geometrical entities of the discretization.

number_of_junctions: (optional) NX_UINT {units=NX_UNITLESS}

Number of quadruple junctions.

index_offset: (optional) NX_INT {units=NX_UNITLESS}

First identifier to identify quadruple junctions implicitly.

indices_quadruple_junction: (optional) NX_INT (Rank: 1, Dimensions: [i]) {units=NX_UNITLESS}

Identifier to identify each quadruple junction explicitly.

location: (optional) NX_INT (Rank: 1, Dimensions: [n_qj]) {units=NX_UNITLESS}

Set of identifier for positions whereby to identify the location of each ...

Set of identifier for positions whereby to identify the location of each junction.

@use_these: (optional) NX_CHAR

The specific point identifier whereby to resolve ambiguities.

position: (optional) NX_NUMBER (Rank: 2, Dimensions: [n_qj, d]) {units=NX_LENGTH}

Explicit positions.

indices_crystal: (optional) NX_INT (Rank: 2, Dimensions: [n_qj, 4]) {units=NX_UNITLESS}

Set of tuples of identifier of crystals connected to the junction for each ...

Set of tuples of identifier of crystals connected to the junction for each junction.

@use_these: (optional) NX_CHAR

The specific identifier to instances of crystal identifiers whereby to res ...

The specific identifier to instances of crystal identifiers whereby to resolve ambiguities.

indices_interface: (optional) NX_INT (Rank: 2, Dimensions: [n_qj, 4]) {units=NX_UNITLESS}

Set of tuples of identifier of interfaces connected to the junction for each ...

Set of tuples of identifier of interfaces connected to the junction for each junction.

@use_these: (optional) NX_CHAR

The specific identifier to instances of interface identifiers whereby to r ...

The specific identifier to instances of interface identifiers whereby to resolve ambiguities.

indices_triple_junction: (optional) NX_INT (Rank: 2, Dimensions: [n_qj, 3]) {units=NX_UNITLESS}

Set of tuples of identifier for triple junctions connected to the junction f ...

Set of tuples of identifier for triple junctions connected to the junction for each quadruple junction.

@use_these: (optional) NX_CHAR

The specific identifier to instances of triple junction identifiers whereb ...

The specific identifier to instances of triple junction identifiers whereby to resolve ambiguities.

indices_phase: (optional) NX_INT (Rank: 2, Dimensions: [n_qj, 4]) {units=NX_UNITLESS}

Set of tuples of identifier for phases of crystals connected to the junction ...

Set of tuples of identifier for phases of crystals connected to the junction for each quadruple junction.

@use_these: (optional) NX_CHAR

The specific identifier to instances of phase identifier whereby to resolv ...

The specific identifier to instances of phase identifier whereby to resolve ambiguities.

boundary_contact: (optional) NX_UINT (Rank: 1, Dimensions: [n_qj])

True, if the junction makes contact with the edge of the ROI. ...

True, if the junction makes contact with the edge of the ROI. True, if the junction does not make contact with the edge of the ROI.

energy: (optional) NX_NUMBER (Rank: 1, Dimensions: [n_qj]) {units=NX_ANY}

Energy of the quadruple_junction as a defect.

mobility: (optional) NX_NUMBER (Rank: 1, Dimensions: [n_qj]) {units=NX_ANY}

Non-intrinsic mobility of each quadruple_junction.

Hypertext Anchors

List of hypertext anchors for all groups, fields, attributes, and links defined in this class.

NXDL Source:

https://github.com/FAIRmat-NFDI/nexus_definitions/tree/fairmat/contributed_definitions/NXmicrostructure.nxdl.xml