2.3.3.3.150. NXmicrostructure

Status:

base class, 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.

Keep in mind that most specimens are thermo-chemo-mechanically processed prior characterization. Therefore, the characterized microstructure may not have probed 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 support to generate only a two-dimensional representation (projection) of the characterized material. 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 at hand and technical surplus practical limitations.

The term microstructural feature covers here crystals and all sorts of crystal defects within the material. A key challenge with the description of representations and properties of microstructural features is that features with different dimensionality exist and combinations of features of different dimensionality are frequently expected to be documented with intuitive naming conventions using flat property lists. 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.

The descriptive variety is large especially for junctions. Like crystals and interfaces, junctions are features in three-dimensional Euclidean space even if they are formed maybe only through a monolayer or pearl chain of atoms. Either way the local atomic and electronic environment is different compared to the situation of an ideal crystal, which gives typically rise to a plethora of configurations of which some yield useful 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 point or a triple line. Therefore, different representations can be used to describe the location, shape, and structure of the defect. 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 can be dislocation-line-triple-line junctions, likewise dislocations form own junctions.

It is not the aim of this base class to cover all these cases, rather this base class currently provides examples how the typically most relevant types of features can be represented using a combination of base classes in NeXus. Currently, these are crystals, interfaces, triple lines, quadruple junctions.

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

Identifiers can be defined either implicitly or explicitly. Identifiers for implicit indexing are defined on the interval \([identifier\_offset, identifier\_offset + cardinality - 1]\).

Symbols:

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

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_set, NXcg_polygon_set, NXcg_polyhedron_set, NXcg_polyline_set, NXcg_triangle_set, NXobject, NXprocess, NXprogram

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_SET: (optional) NXcg_point_set

CG_POLYLINE_SET: (optional) NXcg_polyline_set

CG_TRIANGLE_SET: (optional) NXcg_triangle_set

CG_POLYGON_SET: (optional) NXcg_polygon_set

CG_POLYHEDRON_SET: (optional) NXcg_polyhedron_set

crystal: (optional) NXobject

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_set for a one-dimensional representation as only a projection is available (like in linear intercept analysis)

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

  • NXcg_polyhedron_set or NXcg_grid for regularly pixelated or voxelated representation in one, two, or three dimensions (like in computer simulations or 3D experiments)

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.

crystal_identifier_offset: (optional) NX_INT {units=NX_UNITLESS}

First identifier whereby to identify crystals implicitly.

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

Identifier whereby to identify each crystal explicitly.

phase_identifier_offset: (optional) NX_INT {units=NX_UNITLESS}

First identifier whereby to identify phases implicitly.

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

Identifier whereby to identify phase for each crystal explicitly.

boundary_contact: (optional) NX_BOOLEAN (Rank: 1, Dimensions: [i])

True or false value, one for each crystal, to communicate whether that featu ...

True or false value, one for each crystal, to communicate whether that feature makes contact with the edge of the ROI.

orientation_spread: (optional) NX_NUMBER (Rank: 1, Dimensions: [i]) {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: [i]) {units=NX_LENGTH}

Length of each crystal

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

Area of each crystal.

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

Volume of each crystal

interface: (optional) NXobject

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.

representation: (optional) NX_CHAR

Reference to an instance of: ...

Reference to an instance of:

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

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

  • NXcg_grid for regularly pixelated or voxelated representation in one, two, or three dimensions 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.

identifier_offset: (optional) NX_INT {units=NX_UNITLESS}

First identifier whereby to identify interfaces implicitly.

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

Identifier whereby to identify each interface explicitly.

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

Set of pairs of crystal_identifier for each interface.

@use_these: (optional) NX_CHAR

The specific identifiers whereby to resolve ambiguities.

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

Set of pairs of phase_identifier for each interface.

@use_these: (optional) NX_CHAR

The specific identifiers whereby to resolve ambiguities.

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

Set of pairs of triple_junction_identifier for each interface.

@use_these: (optional) NX_CHAR

The specific identifiers whereby to resolve ambiguities.

boundary_contact: (optional) NX_BOOLEAN (Rank: 1, Dimensions: [i])

True or false value, one for each crystal, to communicate whether that featu ...

True or false value, one for each crystal, to communicate whether that feature makes contact with the edge of the ROI.

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

Gibbs free surface energy for each interface.

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

Non-intrinsic mobility of each interface.

length: (optional) NX_NUMBER (Rank: 1, Dimensions: [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: [i]) {units=NX_AREA}

The surface area of all interfaces.

triple_junction: (optional) NXobject

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_set for a one-dimensional representation as only a projection is available (like in most experiments)

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

  • NXcg_polygon_set 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_set 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.

identifier_offset: (optional) NX_INT {units=NX_UNITLESS}

First identifier to identify triple junctions implicitly.

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

Identifier to identify each triple junction explicitly.

location: (optional) NX_INT (Rank: 1, Dimensions: [i]) {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_INT (Rank: 2, Dimensions: [i, d]) {units=NX_LENGTH}

Explicit positions.

crystal_identifier: (optional) NX_INT (Rank: 2, Dimensions: [i, 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.

interface_identifier: (optional) NX_INT (Rank: 2, Dimensions: [i, 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.

polyline_identifier: (optional) NX_INT (Rank: 2, Dimensions: [i, 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 polyline identifiers whereby to resolve ambiguities.

boundary_contact: (optional) NX_BOOLEAN (Rank: 1, Dimensions: [i])

True or false value, one for each crystal, to communicate whether that featu ...

True or false value, one for each crystal, to communicate whether that feature makes contact with the edge of the ROI.

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

Specific line energy of each triple junction

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

Non-intrinsic mobility of each triple junction.

length: (optional) NX_NUMBER (Rank: 1, Dimensions: [i]) {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: [i]) {units=NX_VOLUME}

The volume of the each triple junction

quadruple_junction: (optional) NXobject

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

Quadruple junctions as a region where four crystals meet.

An example for a point defect.

representation: (optional) NX_CHAR

Reference to an instance of: ...

Reference to an instance of:

  • NXcg_point_set

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

number_of_junctions: (optional) NX_UINT {units=NX_UNITLESS}

Number of quadruple junctions.

identifier_offset: (optional) NX_INT {units=NX_UNITLESS}

First identifier to identify quadruple junctions implicitly.

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

Identifier to identify each quadruple junction explicitly.

location: (optional) NX_INT (Rank: 1, Dimensions: [i]) {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_INT (Rank: 2, Dimensions: [i, 3]) {units=NX_LENGTH}

Explicit positions.

crystal_identifier: (optional) NX_INT (Rank: 2, Dimensions: [i, 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.

interface_identifier: (optional) NX_INT (Rank: 2, Dimensions: [i, 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.

triple_junction_identifier: (optional) NX_INT (Rank: 2, Dimensions: [i, 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.

phase_identifier: (optional) NX_INT (Rank: 2, Dimensions: [i, 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_BOOLEAN (Rank: 1, Dimensions: [i])

True or false value, one for each crystal, to communicate whether that featu ...

True or false value, one for each crystal, to communicate whether that feature makes contact with the edge of the ROI.

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

Energy of the quadruple_junction as a defect.

mobility: (optional) NX_NUMBER (Rank: 1, Dimensions: [i]) {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