From 54b97d26cd926402ccdcd5ddd74af81f343d48bf Mon Sep 17 00:00:00 2001 From: woutdenolf Date: Thu, 24 Mar 2022 17:44:57 +0100 Subject: [PATCH 01/24] contribution for stress-strain analysis --- contributed_definitions/NXstress.nxdl.xml | 525 ++++++++++++++++++++++ 1 file changed, 525 insertions(+) create mode 100644 contributed_definitions/NXstress.nxdl.xml diff --git a/contributed_definitions/NXstress.nxdl.xml b/contributed_definitions/NXstress.nxdl.xml new file mode 100644 index 000000000..47172cd26 --- /dev/null +++ b/contributed_definitions/NXstress.nxdl.xml @@ -0,0 +1,525 @@ + + + + + + + Number of diffractogram channels. + + + Number of diffractograms. For example the number of energy-dispersive detectors or the number of azimuthal sections in an area detector. + + + Number of reflections. + + + Diffractogram X units. + + + Diffractogram Y units. + + + Converted diffractogram X units (could be the same as *xUnit*). + + + + Application definition for stress and strain analysis of crystalline material defined by the `EASI-STRESS consortium <https://easi-stress.eu>`_. + + When a crystal is loaded (applied or residual stress) its crystallographic parameters change. + + Stress and strain analysis calculates deformation (strain) and the associated force (stress) + from diffraction data. + + This application definition essentially standardizes the result of diffraction pattern analysis + from different types of diffraction experiments for the purpose of stress and strain analysis. + The analysis is typically some form of diffraction peak indexing and fitting. + The experiments are for example + + - energy-dispersive X-ray powder diffraction + - angular-dispersive X-ray powder diffraction + - angular-dispersive neutron powder diffraction + - time-of-flight (TOF) neutron powder diffraction. + + Sample and detector positions can be defined with :ref:`NXtransformations`. If you don't specify the direction of gravity + and the direction of the beam then the standard NeXus Coordinate System is used. + + + + + Official NeXus NXDL schema to which this file conforms + + + + + + + Extended title for the entry. + + + + Unique identifier for the experiment as defined + by the facility (e.g. DOI, proposal id, ...). + + + + Brief summary of the experiment, including key objectives. + + + + User or Data Acquisition defined identifier from which + the content of this application definition is derived. + + + + Brief summary of the collection, including grouping criteria. + + + + + Name of the instrument. + + Short name for the instrument, perhaps the acronym. + + + + Zero or more of these groups describe the detectors used in the experiment. + + name/manufacturer/model/etc. information + + + + This is the distance to the previous component in the + instrument; most often the sample. The usage depends on the + nature of the detector: Most often it is the distance of the + detector assembly. But there are irregular detectors. In this + case the distance must be specified for each detector pixel. + + + + + + The axis on which the detector position depends may be stored + anywhere, but is normally stored in the NXtransformations + group within the NXdetector group. + + + + + This is the recommended location for detector goniometer + and other related axes. + + + + + + + + Defines the probed volume in the sample + + Defines the primary beam size in the vertical direction. + + + Defines the primary beam size in the horizontal direction. + + + + Defines the depth of the probe volume as determined by + detector collimators. + + + + + + + The axis on which the sample position depends may be stored + anywhere, but is normally stored in the NXtransformations + group within the NXsample group. + + + + + This is the recommended location for sample goniometer + and other related axes. + + + + + + + Zero or more groups to describe the data processing steps + to obtain the content of this application definition. + + + + + + User description of the data acquisitions. + A description of data analysis goes in the + *NXprocess* group(s). + + + + + + This group contains all diffraction peak parameters that could be needed for stress-strain calculations. + These parameters are derived from :ref:`peak_parameters </NXstress/ENTRY/peak_parameters-group>` and additional metadata. + + + First Miller index. + + + + + + Second Miller index. + + + + + + Third Miller index. + + + + + + Crystal lattice systems (*cubic*, *hexagonal*, ...) + + + + + + Crystallographic space group (*Fm3m*, *Im3m*, ...) + + + + + + Name of the crystallographic phase (hematite, goethite, a-Al2O3, ...). + + + + + + + First component of the *normalized* scattering vector *Q* in the sample reference frame. + The sample reference frame is defined by the :ref:`sample transformations </NXstress/ENTRY/SAMPLE/TRANSFORMATIONS-group>`. + + + + + + + + Second component of the *normalized* scattering vector *Q* in the sample reference frame. + The sample reference frame is defined by the :ref:`sample transformations </NXstress/ENTRY/SAMPLE/TRANSFORMATIONS-group>`. + + + + + + + + Third component of the *normalized* scattering vector *Q* in the sample reference frame. + The sample reference frame is defined by the :ref:`sample transformations </NXstress/ENTRY/SAMPLE/TRANSFORMATIONS-group>`. + + + + + + + Diffraction peak position. + + + + + + Uncentrainties on :ref:`center </NXstress/ENTRY/peaks/center-field>`. + + + + + + + The space in which :ref:`center </NXstress/ENTRY/peaks/center-field>` is defined. + Note that *cUnit* must correspond. For example if *center_type="two-theta"* then *cUnit* + must have an angle unit (*degrees*, *rad*, ...). + + + + + + + + + + + + First component of the sample position in the sample reference frame. + The sample reference frame is defined by the :ref:`sample transformations </NXstress/ENTRY/SAMPLE/TRANSFORMATIONS-group>`. + + + + + + + + First component of the sample position in the sample reference frame. + The sample reference frame is defined by the :ref:`sample transformations </NXstress/ENTRY/SAMPLE/TRANSFORMATIONS-group>`. + + + + + + + + First component of the sample position in the sample reference frame. + The sample reference frame is defined by the :ref:`sample transformations </NXstress/ENTRY/SAMPLE/TRANSFORMATIONS-group>`. + + + + + + + + + + This group contains all diffraction peak fit parameters. + This information is not required for stress-strain calculations. + Note that as in any *NXdata* group, each field can have uncertainties + associated to them (e.g. *center_errors* would be the uncertainties + on the peak center). + + + Diffraction peak profile. + + + + + + + + + + + + Diffraction peak position. + + + + + + + The space in which the peak profile is measured. Note that `xUnit` + must correspond. For example if `center_type="two-theta"` then `xUnit` + must be an angle unit (`degrees`, `rad`, ...). + + + + + + + + + + + Diffraction peak area (not including the background). + + + + + + + Diffraction peak height (not including the background). + + + + + + Diffraction peak full width at half maximum. + + + + + + + Left-side FWHM for split profiles. + + + + + + Right-side FWHM for split profiles. + + + + + + + - Voigt or Pseudo-Voigt: Lorentzian fraction + - Pearson VII: decay parameter + - Other profiles: not applicable + + + + + + + + Angle that define the position of the integrated sector in the diffraction cone + for angular-dispersive diffraction or the position of the detector for energy-dispersive + diffraction. + + + + + + + + + + This group contains all background fit parameters. + This information is not required for stress-strain caluclations. + + + + Diffraction background profile. Required when background parameters fields are present. + For example: ``linear``, ``5-degree polynomial`` + + + + Background parameter(s). For example a second-degree polynomial will have fields ``A0``, ``A1`` and ``A2``. + + + + + + The background area integrated over a confidence interval around the center (*0.95* by default). + + + + + + + Confidence interval from which the background counts are integrated. + For example *0.95* means that the background is integrated over the range in + which the integrated peak area is 95% of the total peak area. + + + + + + + Diffractogram with fit results in :ref:`peak_parameters </NXstress/ENTRY/peak_parameters-group>` + and :ref:`background_parameters </NXstress/ENTRY/background_parameters-group>`. + This information is not required for stress-strain caluclations. + + + List of the two axes field names to be used by default. + + + + + One or more fields that contain the values for the **nD** dimension. + For example the azimuthal positions of different energy-dispersive detectors + or the average azimuth of different azimuthal sections on an area detector. + + + + + + + + + One or more fields that contain the values for the **nX** dimension. + For example: MCA channels, scattering angle \ :math:`2\theta` in degrees, + scattering vector length q in \ :math:`\mathrm{nm}^{-1}`, ... + + + + + + + + Default field name to be plotted. + + + + + + + List of additional field names to be plotted. + + + + Diffractogram counts (default signal) + + + + + + + + + + + + Diffractogram fit counts (auxiliary signal). + + + + + + + + + + + + Diffractogram background counts (auxiliary signal). + + + + + + + + + + + + Difference between diffractogram and fit (auxiliary signal). + + + + + + + + + + + + + + \ No newline at end of file From f70a2d1286888b631184691f31804d3d90258cfc Mon Sep 17 00:00:00 2001 From: woutdenolf Date: Mon, 5 Jun 2023 14:49:05 +0200 Subject: [PATCH 02/24] ILL contributions --- contributed_definitions/NXstress.nxdl.xml | 1399 +++++++++++++-------- 1 file changed, 875 insertions(+), 524 deletions(-) diff --git a/contributed_definitions/NXstress.nxdl.xml b/contributed_definitions/NXstress.nxdl.xml index 47172cd26..6e08ba602 100644 --- a/contributed_definitions/NXstress.nxdl.xml +++ b/contributed_definitions/NXstress.nxdl.xml @@ -1,525 +1,876 @@ - - - - - - - Number of diffractogram channels. - - - Number of diffractograms. For example the number of energy-dispersive detectors or the number of azimuthal sections in an area detector. - - - Number of reflections. - - - Diffractogram X units. - - - Diffractogram Y units. - - - Converted diffractogram X units (could be the same as *xUnit*). - - - - Application definition for stress and strain analysis of crystalline material defined by the `EASI-STRESS consortium <https://easi-stress.eu>`_. - - When a crystal is loaded (applied or residual stress) its crystallographic parameters change. - - Stress and strain analysis calculates deformation (strain) and the associated force (stress) - from diffraction data. - - This application definition essentially standardizes the result of diffraction pattern analysis - from different types of diffraction experiments for the purpose of stress and strain analysis. - The analysis is typically some form of diffraction peak indexing and fitting. - The experiments are for example - - - energy-dispersive X-ray powder diffraction - - angular-dispersive X-ray powder diffraction - - angular-dispersive neutron powder diffraction - - time-of-flight (TOF) neutron powder diffraction. - - Sample and detector positions can be defined with :ref:`NXtransformations`. If you don't specify the direction of gravity - and the direction of the beam then the standard NeXus Coordinate System is used. - - - - - Official NeXus NXDL schema to which this file conforms - - - - - - - Extended title for the entry. - - - - Unique identifier for the experiment as defined - by the facility (e.g. DOI, proposal id, ...). - - - - Brief summary of the experiment, including key objectives. - - - - User or Data Acquisition defined identifier from which - the content of this application definition is derived. - - - - Brief summary of the collection, including grouping criteria. - - - - - Name of the instrument. - - Short name for the instrument, perhaps the acronym. - - - - Zero or more of these groups describe the detectors used in the experiment. - - name/manufacturer/model/etc. information - - - - This is the distance to the previous component in the - instrument; most often the sample. The usage depends on the - nature of the detector: Most often it is the distance of the - detector assembly. But there are irregular detectors. In this - case the distance must be specified for each detector pixel. - - - - - - The axis on which the detector position depends may be stored - anywhere, but is normally stored in the NXtransformations - group within the NXdetector group. - - - - - This is the recommended location for detector goniometer - and other related axes. - - - - - - - - Defines the probed volume in the sample - - Defines the primary beam size in the vertical direction. - - - Defines the primary beam size in the horizontal direction. - - - - Defines the depth of the probe volume as determined by - detector collimators. - - - - - - - The axis on which the sample position depends may be stored - anywhere, but is normally stored in the NXtransformations - group within the NXsample group. - - - - - This is the recommended location for sample goniometer - and other related axes. - - - - - - - Zero or more groups to describe the data processing steps - to obtain the content of this application definition. - - - - - - User description of the data acquisitions. - A description of data analysis goes in the - *NXprocess* group(s). - - - - - - This group contains all diffraction peak parameters that could be needed for stress-strain calculations. - These parameters are derived from :ref:`peak_parameters </NXstress/ENTRY/peak_parameters-group>` and additional metadata. - - - First Miller index. - - - - - - Second Miller index. - - - - - - Third Miller index. - - - - - - Crystal lattice systems (*cubic*, *hexagonal*, ...) - - - - - - Crystallographic space group (*Fm3m*, *Im3m*, ...) - - - - - - Name of the crystallographic phase (hematite, goethite, a-Al2O3, ...). - - - - - - - First component of the *normalized* scattering vector *Q* in the sample reference frame. - The sample reference frame is defined by the :ref:`sample transformations </NXstress/ENTRY/SAMPLE/TRANSFORMATIONS-group>`. - - - - - - - - Second component of the *normalized* scattering vector *Q* in the sample reference frame. - The sample reference frame is defined by the :ref:`sample transformations </NXstress/ENTRY/SAMPLE/TRANSFORMATIONS-group>`. - - - - - - - - Third component of the *normalized* scattering vector *Q* in the sample reference frame. - The sample reference frame is defined by the :ref:`sample transformations </NXstress/ENTRY/SAMPLE/TRANSFORMATIONS-group>`. - - - - - - - Diffraction peak position. - - - - - - Uncentrainties on :ref:`center </NXstress/ENTRY/peaks/center-field>`. - - - - - - - The space in which :ref:`center </NXstress/ENTRY/peaks/center-field>` is defined. - Note that *cUnit* must correspond. For example if *center_type="two-theta"* then *cUnit* - must have an angle unit (*degrees*, *rad*, ...). - - - - - - - - - - - - First component of the sample position in the sample reference frame. - The sample reference frame is defined by the :ref:`sample transformations </NXstress/ENTRY/SAMPLE/TRANSFORMATIONS-group>`. - - - - - - - - First component of the sample position in the sample reference frame. - The sample reference frame is defined by the :ref:`sample transformations </NXstress/ENTRY/SAMPLE/TRANSFORMATIONS-group>`. - - - - - - - - First component of the sample position in the sample reference frame. - The sample reference frame is defined by the :ref:`sample transformations </NXstress/ENTRY/SAMPLE/TRANSFORMATIONS-group>`. - - - - - - - - - - This group contains all diffraction peak fit parameters. - This information is not required for stress-strain calculations. - Note that as in any *NXdata* group, each field can have uncertainties - associated to them (e.g. *center_errors* would be the uncertainties - on the peak center). - - - Diffraction peak profile. - - - - - - - - - - - - Diffraction peak position. - - - - - - - The space in which the peak profile is measured. Note that `xUnit` - must correspond. For example if `center_type="two-theta"` then `xUnit` - must be an angle unit (`degrees`, `rad`, ...). - - - - - - - - - - - Diffraction peak area (not including the background). - - - - - - - Diffraction peak height (not including the background). - - - - - - Diffraction peak full width at half maximum. - - - - - - - Left-side FWHM for split profiles. - - - - - - Right-side FWHM for split profiles. - - - - - - - - Voigt or Pseudo-Voigt: Lorentzian fraction - - Pearson VII: decay parameter - - Other profiles: not applicable - - - - - - - - Angle that define the position of the integrated sector in the diffraction cone - for angular-dispersive diffraction or the position of the detector for energy-dispersive - diffraction. - - - - - - - - - - This group contains all background fit parameters. - This information is not required for stress-strain caluclations. - - - - Diffraction background profile. Required when background parameters fields are present. - For example: ``linear``, ``5-degree polynomial`` - - - - Background parameter(s). For example a second-degree polynomial will have fields ``A0``, ``A1`` and ``A2``. - - - - - - The background area integrated over a confidence interval around the center (*0.95* by default). - - - - - - - Confidence interval from which the background counts are integrated. - For example *0.95* means that the background is integrated over the range in - which the integrated peak area is 95% of the total peak area. - - - - - - - Diffractogram with fit results in :ref:`peak_parameters </NXstress/ENTRY/peak_parameters-group>` - and :ref:`background_parameters </NXstress/ENTRY/background_parameters-group>`. - This information is not required for stress-strain caluclations. - - - List of the two axes field names to be used by default. - - - - - One or more fields that contain the values for the **nD** dimension. - For example the azimuthal positions of different energy-dispersive detectors - or the average azimuth of different azimuthal sections on an area detector. - - - - - - - - - One or more fields that contain the values for the **nX** dimension. - For example: MCA channels, scattering angle \ :math:`2\theta` in degrees, - scattering vector length q in \ :math:`\mathrm{nm}^{-1}`, ... - - - - - - - - Default field name to be plotted. - - - - - - - List of additional field names to be plotted. - - - - Diffractogram counts (default signal) - - - - - - - - - - - - Diffractogram fit counts (auxiliary signal). - - - - - - - - - - - - Diffractogram background counts (auxiliary signal). - - - - - - - - - - - - Difference between diffractogram and fit (auxiliary signal). - - - - - - - - - - - - - + + + + + + + Number of diffractogram channels. + + + Number of diffractograms. For example the number of energy-dispersive detectors or the number of azimuthal sections in an area detector. + + + Number of reflections. + + + Diffractogram X units. + + + Diffractogram Y units. + + + Converted diffractogram X units (could be the same as *xUnit*). + + + + Application definition for stress and strain analysis of crystalline material defined by the `EASI-STRESS consortium <https://easi-stress.eu>`_. + + When a crystal is loaded (applied or residual stress) its crystallographic parameters change. + + Stress and strain analysis calculates deformation (strain) and the associated force (stress) + from diffraction data. + + This application definition essentially standardizes the result of diffraction pattern analysis + from different types of diffraction experiments for the purpose of stress and strain analysis. + The analysis is typically some form of diffraction peak indexing and fitting. + The experiments are for example + + - energy-dispersive X-ray powder diffraction + - angular-dispersive X-ray powder diffraction + - angular-dispersive neutron powder diffraction + - time-of-flight (TOF) neutron powder diffraction. + + In addition, the application definition guarantees that the information about instrumental setups, measurement conditions, and data analysis workflows are described. + This ensures not only the reproducibility and traceability of the measured data, but also the meta-data. Since not all participating beamlines or instruments can provide an input to all the NXfields listed in this application definition, not all of them are "required". + However, when possible and technically feasible, the instrument using the NXstress application definition is expected to provide the type of information outlined below. + + Sample and detector positions can be defined with :ref:`NXtransformations`. If you don't specify the direction of gravity + and the direction of the beam then the standard NeXus Coordinate System is used. + + It is highly recommended that in case certain parameters or values are the same for all the measurements (acquisitions) in the same + file, that they are stored only in one location and then linked in the other instances. For example, if during an acquisition all + instrumental parameters but one stay the same and only the sample table moves in one direction (e.g. Xtranslation), then all the + static instrumental parameters should be saved just once (e.g. in just one NXentry or in a *Shared_Information group*) and their + vales linked to every *instrument group* under all the other acquisitions. The value for the variable that changes, Xtranslation + in this example, is suggested to only be saved at every instrument group under each acquisition but not in the *Shared_Information group*. + It is not always necessary to link each field. In case all the fields with an entire group are the same, the entire group can be linked. + + + + + The name of the *NXentry group(s)* can be freely chosen by the facility. The *NXentry group* can contain any form of data acquisition (e.g. a measurement point, multiple measurement points, a line scan, a mesh, all data points from one sample …). + + + Official NeXus NXDL schema to which this file conforms + + + + + + Extended title for the entry. + + + + Unique identifier for the experiment as defined by the facility (e.g. DOI, proposal id, ...). At ILL, this could be, for example, ``exp_1-02-286``, ``exp_INDU-229``, or ``exp_INTER-569``. + + + + + Brief summary of the experiment, including key objectives. At least one of the following information should be provided: + * ``energy-dispersive X-ray powder diffraction`` + * ``angular-dispersive X-ray powder diffraction`` + * ``angular-dispersive neutron powder diffraction`` + * ``time-of-flight (TOF) neutron powder diffraction`` + + + + + + The starting time(s) of measurement(s) which can be provided in form of a list if multiple measurements are included in the same NXentry. + + + + + The end time(s) of measurement(s) which can be provided in form of a list if multiple measurements are included in the same NXentry. + + + + + + User or Data Acquisition defined identifier from which + the content of this application definition is derived. This can be freely chosen by the user or the instrument scientist and could be, for example, ``05_DA_650_AX_B3P5``, ``SENB-14``, ``Quartz``,.... + + + + + Brief summary of the collection, including grouping criteria. The information provided in this field can highlight, for example, the measurement setup or information about experimental conditions. + + + + This variable describes the type of data plotted in the diffractogram and describes the type of calculation used in the EASI-STRESS software. Any of these values are valid: + * ``two-theta`` + * ``energy`` + * ``d-spacing`` + + + + Describes the specific measurement direction covered by the data in this file. Any of these values are valid: + * ``radial`` + * ``longitudinal`` + * ``normal`` + * ``tangential`` + * ``multiple`` + + + + Information about the person who performed the experiment. + + + + Role of user responsible for this entry. Suggested roes are, for example, ``local contact``, ``beamline_scientist``, ``post_doc``,… + + + + + Name of the diffractometer, instrument, or beamline used for the experiment. This could be, for example, *Strain Analyser for Large and Small scale engineering Applications*. + + Short name for the instrument, perhaps the acronym, which would be for the the example above ``SALSA``. + + + + Date of last calibration (geometry and / or efficiency) measurements. + + + File name and/or path (withing a file) containing data from the last calibration. + + + File name and/or path (withing a file) containing data from the last calibration. + + + + + Type of radiation source (pick one from the enumerated list and spell exactly) + Any of these values: + - ``Spallation Neutron Source`` + - ``Pulsed Reactor Neutron Source`` + - ``Reactor Neutron Source`` + - ``Synchrotron X-ray Source`` + - ``Rotating Anode X-ray`` + - ``Fixed Tube X-ray`` + - ``Metal Jet X-ray`` + + + + Type of radiation probe (pick one from the enumerated list and spell exactly) + Any of these values: ``neutron`` | ``X-ray`` + + + + + Source energy. The energy should be provided in keV, but if chosen otherwise, the units must be clearly specified. For storage rings, this would be the particle beam energy. + For X-ray tubes, this would be the excitation voltage. In case of energy dispersive diffraction, the + + + + + In case of monochromatic radiation, the wavelength used during the experiment. The wavelength should be provided in \ :math:`\unicode{x212B}`, but if chosen otherwise, the units must be clearly specified. + + + + + Zero or more of these groups describe the detectors used in the experiment. + + name/manufacturer/model/etc. information + + + + Description of type such as \ :sup:`3`\ He gas cylinder, \ :sup:`3`\ He PSD, scintillator, fission chamber, proportion counter, ion chamber, ccd, pixel, image plate, CMOS, … + + + + + This is the distance to the previous component in the + instrument; most often the sample. The usage depends on the + nature of the detector: Most often it is the distance of the + detector assembly. But there are irregular detectors. In this + case the distance must be specified for each detector pixel. + + + + efficiency of the detector + + + + + + + + This field can be two things: + + 1. For a pixel detector it provides the nominal wavelength + for which the detector has been calibrated. + + 2. For other detectors this field has to be seen together with + the efficiency field above. + For some detectors, the efficiency is wavelength dependent. + Thus this field provides the wavelength axis for the efficiency field. + In this use case, the efficiency and wavelength arrays must + have the same dimensionality. + + + + + + + + + Detector dead time + + + + + + + + Elapsed actual counting time + + + + + + + The axis on which the detector position depends may be stored + anywhere, but is normally stored in the *NXtransformations + group* within the *NXdetector group*. + + + + + This is the recommended location for detector goniometer + and other related axes. + + + + + Defines the beam size volume used for probing the sample. This corresponds to the instrumental gauge volume. + + If the beam size was measured, the filename of the measurement can be specified here. + + + + Defines the device used to shape the beam. This could be, for example, a radial collimator or a slit. + + + + Defines the bottom of the primary beam size intensity profile in the vertical direction. + + + + + Defines the top of the primary beam size intensity profile in the vertical direction. + + + + + Defines the distance between the center of the gauge volume and the beam shaping device. + + + + + Defines the device used to shape the beam. This could be, for example, a radial collimator or a slit. + + + + Defines the bottom of the primary beam size intensity profile in the horizontal direction. + + + + + Defines the top of the primary beam size intensity profile in the horizontal direction. + + + + + Defines the distance between the center of the gauge volume and the beam shaping device. + + + + + Defines the device used to shape the beam. This could be, for example, a radial collimator or a slit. + + + + Defines the bottom of the secondary beam size intensity profile in the horizontal direction. + + + + + Defines the top of the secondary beam size intensity profile in the horizontal direction. + + + + + Defines the distance between the center of the gauge volume and the beam shaping device. + + + + + + + + This is the recommended location for describing parameters associated with the sample. + + + + Descriptive name of sample + + + + + The chemical formula specified using CIF conventions. + Abbreviated version of CIF standard: + + * Only recognized element symbols may be used. + * Each element symbol is followed by a 'count' number. A count of '1' may be omitted. + * A space or parenthesis must separate each cluster of (element symbol + count). + * Where a group of elements is enclosed in parentheses, the multiplier for the + group must follow the closing parentheses. That is, all element and group + multipliers are assumed to be printed as subscripted numbers. + * Unless the elements are ordered in a manner that corresponds to their chemical + structure, the order of the elements within any group or moiety depends on + whether or not carbon is present. + * If carbon is present, the order should be: + + - C, then H, then the other elements in alphabetical order of their symbol. + - If carbon is not present, the elements are listed purely in alphabetic order of their symbol. + + * This is the *Hill* system used by Chemical Abstracts. + + + + Sample temperature. This could be a scanned variable + + + + + + Applied external stress field + + + + + + + + + + + + + + The axis on which the sample position depends may be stored + anywhere, but is normally stored in the NXtransformations + group within the NXsample group. + + + + + This is the recommended location for sample goniometer + and other related axes. + + + + + + + Zero or more groups to describe the data processing steps + to obtain the content of this application definition. + + + + The raw data file name(s) used during the data reduction process. + + + + + Date when the raw data was reduced and the data in the *NXstress* file format generated. + + + + + Software package used to perform data reduction including the version number or release date. + + + + + Describes how the data was integrated. + + + + + Describes the type of binning used during data reduction. + + + + + Describes how the fitting of the peaks was done. For example, single peak fit, multiple peak fit, Pawley refinement, Rietveld refinement, … + + + + + Describes the data range used for peak fitting. + + + + + Type and value describing the goodness of fit. For example, Rw 0.23. + + + + + Describes whether the data was normalized and if so , how. Examples of valid entries are: None, time, primary monitor, detector, … + + + + Information about the person who performed the data reduction. + + + + Role of user responsible for this entry. Suggested roes are, for example, ``local contact``, ``beamline_scientist``, ``post_doc``,… + + + + + + + User description of the data acquisitions. + A description of data analysis goes in the + *fig_log group*. + + + + + + This group contains all diffraction peak parameters that could be needed for stress and strain calculations. + These parameters are derived from :ref:`peak_parameters </NXstress/ENTRY/peak_parameters-group>` and additional metadata. + + + First Miller index. + + + + + + Second Miller index. + + + + + + Third Miller index. + + + + + + Crystal lattice systems (*cubic*, *hexagonal*, ...) + + + + + + Crystallographic space group (*Fm3m*, *Im3m*, ...) + + + + + + Name of the crystallographic phase (hematite, goethite, a-Al\ :sub:`2`\ O\ :sub:`3`\ , ...). + + + + + + + First component of the *normalized* scattering vector *Q* in the sample reference frame. + The sample reference frame is defined by the :ref:`sample transformations </NXstress/ENTRY/sample_description/TRANSFORMATIONS-group>`. + + + + + + + + Second component of the *normalized* scattering vector *Q* in the sample reference frame. + The sample reference frame is defined by the :ref:`sample transformations </NXstress/ENTRY/sample_description/TRANSFORMATIONS-group>`. + + + + + + + + Third component of the *normalized* scattering vector *Q* in the sample reference frame. + The sample reference frame is defined by the :ref:`sample transformations </NXstress/ENTRY/sample_description/TRANSFORMATIONS-group>`. + + + + + + + Diffraction peak position. + + + + + + Uncertainties on :ref:`center </NXstress/ENTRY/peaks/center-field>`. + + + + + + + The space in which :ref:`center </NXstress/ENTRY/peaks/center-field>` is defined. + Note that *cUnit* must correspond: + + - if *center_type="two-theta"* then *cUnit* must have the angle unit *degrees* + - if *center_type="energy"* then *cUnit* must have the energy unit *keV* + - if *center_type="momentum-transfer"* then *cUnit* must have the energy unit \ :math:`\unicode{x212B}^{-1}` + - if *center_type="d-spacing"* then *cUnit* must have the energy unit \ :math:`\unicode{x212B}` + - if *center_type="channel"* then *cUnit* must be *dimensionless* + - if *center_type="time-of-flight"* then *cUnit* must have the time-of-flight unit \ :math:`\mu\mathrm{s}` + + + + + + + + + + + + + First component of the sample position in the sample reference frame. + The sample reference frame is defined by the :ref:`sample transformations </NXstress/ENTRY/sample_description/TRANSFORMATIONS-group>`. + + + + + + + + + First component of the sample position in the sample reference frame. + The sample reference frame is defined by the :ref:`sample transformations </NXstress/ENTRY/sample_description/TRANSFORMATIONS-group>`. + + + + + + + + First component of the sample position in the sample reference frame. + The sample reference frame is defined by the :ref:`sample transformations </NXstress/ENTRY/sample_description/TRANSFORMATIONS-group>`. + + + + + + + + + + This group contains all diffraction peak fit parameters. + This information is not required for stress and strain calculations. + Note that as in any *NXdata* group, each field can have uncertainties + associated to them (e.g. *center_errors* would be the uncertainties + on the peak center). + + + Diffraction peak profile. + + + + + + + + + + + Diffraction peak area (not including the background). + + + + + + + Diffraction peak height (not including the background). + + + + + + Diffraction peak full width at half maximum. + + + + + + + Left-side FWHM for split profiles. + + + + + + Right-side FWHM for split profiles. + + + + + + + - Voigt or Pseudo-Voigt: Lorentzian fraction + - Pearson VII: decay parameter + - Other profiles: not applicable + + + + + + + + Error value(s) associated with the form_factor. + + + + + + + + Angle that define the position of the integrated sector in the diffraction cone + for angular-dispersive diffraction or the position of the detector for energy-dispersive + diffraction. + + + + + + + + + + This group contains all background fit parameters. + This information is not required for stress and strain calculations. + + + + Diffraction background profile. Required when background parameter fields are present. + Some example values with equations are shown below: + + - ``manual`` : No equations nor variables needed to describe this background. + - ``linear`` : \ :math:`\small background= A0 + A1 \cdot x` + - ``5-degree polynomial`` : \ :math:`\small background= A0 + A1 \cdot x + A2 \cdot \mathrm{x}^{2} + A3 \cdot \mathrm{x}^{3} + A4 \cdot \mathrm{x}^{4} + A5 \cdot \mathrm{x}^{5}` + - ``shape function plus polynomial`` : A shape function is not a mathematical function, it contains a manual background obtained from a fit and a polynomial part. This allows to adapt and modify the fit for subsequent measurements in the same measurement campaign. The function describing it is the following: \ :math:`\small background= as + b \cdot SHAPE(x-o)` Where SHAPE is the name of the variable used to describe the background value at the position x. x can be e.g. the scattering angle \ :math:`2\theta` in degrees. + + + + Background parameter(s). For example a second-degree polynomial will have fields ``A0``, ``A1`` and ``A2``. + + + + + + Background parameter *constant* for SHAPE function. + + + + + + Error associated with background parameter *constant* for SHAPE function. + + + + + + Background parameter *amplitude* for SHAPE function. + + + + + + Error associated with background parameter *amplitude* for SHAPE function. + + + + + + Background parameter *offset* for SHAPE function. + + + + + + Error associated with background parameter *offset* for SHAPE function. + + + + + + The background area integrated over a confidence interval around the center (*0.95* by default). + + + + + + + Confidence interval from which the background counts are integrated. + For example *0.95* means that the background is integrated over the range in + which the integrated peak area is 95% of the total peak area. + + + + + + + Diffractogram with fit results in :ref:`peak_parameters </NXstress/ENTRY/peak_parameters-group>` + and :ref:`background_parameters </NXstress/ENTRY/background_parameters-group>`. + This information is not required for stress and strain calculations. + + + List of the one to two axes field name(s) to be used by default. The axes are further described in the fields DAXIS and XAXIS. + + + + + One or more fields that contain the values for the **nD** dimension. + For example the azimuthal positions of different energy-dispersive detectors + or the average azimuth of different azimuthal sections on an area detector. + + + + + + + + + One or more fields that contain the values for the **nX** dimension. + For example: MCA channels, scattering angle \ :math:`2\theta` in degrees, + scattering vector length q in \ :math:`\mathrm{nm}^{-1}`, ... + + + + + + + + Default field name to be plotted. + + + + + + + List of additional field names to be plotted. This could be e.g. fit, background, residuals, … + + + + Diffractogram counts (default signal) + + + + + + + + + + + + + Diffractogram counts error (default signal) + + + + + + + + + + + + + Diffractogram fit counts (auxiliary signal). + + + + + + + + + + + + + Diffractogram fit counts error (auxiliary signal). + + + + + + + + In case the diffraction background was manually determined. Diffractogram background counts (auxiliary signal). + + + + + + + + + + + + Difference between diffractogram and fit (auxiliary signal). + + + + + + + + + + + + + \ No newline at end of file From c1626d7cf1bbae9c54ea24e096cb26684345b0db Mon Sep 17 00:00:00 2001 From: woutdenolf Date: Fri, 21 Jul 2023 10:36:17 +0200 Subject: [PATCH 03/24] Updated NXstress --- contributed_definitions/NXstress.nxdl.xml | 709 ++++++++++-------- .../stress/Beam_profile_sketch3.jpg | Bin 0 -> 127844 bytes contributed_definitions/stress/GV2.jpg | Bin 0 -> 18187 bytes 3 files changed, 383 insertions(+), 326 deletions(-) create mode 100644 contributed_definitions/stress/Beam_profile_sketch3.jpg create mode 100644 contributed_definitions/stress/GV2.jpg diff --git a/contributed_definitions/NXstress.nxdl.xml b/contributed_definitions/NXstress.nxdl.xml index 6e08ba602..94a8e2c52 100644 --- a/contributed_definitions/NXstress.nxdl.xml +++ b/contributed_definitions/NXstress.nxdl.xml @@ -63,18 +63,18 @@ - time-of-flight (TOF) neutron powder diffraction. In addition, the application definition guarantees that the information about instrumental setups, measurement conditions, and data analysis workflows are described. - This ensures not only the reproducibility and traceability of the measured data, but also the meta-data. Since not all participating beamlines or instruments can provide an input to all the NXfields listed in this application definition, not all of them are "required". + This ensures not only the reproducability and tracability of the measured data, but also the meta-data. Since not all participating beamlines or instruments can provide an input to all the NXfields listed in this application definition, not all of them are "required". However, when possible and technically feasible, the instrument using the NXstress application definition is expected to provide the type of information outlined below. Sample and detector positions can be defined with :ref:`NXtransformations`. If you don't specify the direction of gravity and the direction of the beam then the standard NeXus Coordinate System is used. - It is highly recommended that in case certain parameters or values are the same for all the measurements (acquisitions) in the same + It is highly recommended that in case certain parameters or values are the same for all the measurements (acquistions) in the same file, that they are stored only in one location and then linked in the other instances. For example, if during an acquisition all instrumental parameters but one stay the same and only the sample table moves in one direction (e.g. Xtranslation), then all the static instrumental parameters should be saved just once (e.g. in just one NXentry or in a *Shared_Information group*) and their - vales linked to every *instrument group* under all the other acquisitions. The value for the variable that changes, Xtranslation - in this example, is suggested to only be saved at every instrument group under each acquisition but not in the *Shared_Information group*. + vales linked to every *instrument group* under all the other acquistions. The value for the variable that changes, Xtranslation + in this example, is suggested to only be saved at every instrument group under each acquistion but not in the *Shared_Information group*. It is not always necessary to link each field. In case all the fields with an entire group are the same, the entire group can be linked. @@ -160,13 +160,13 @@ - Date of last calibration (geometry and / or efficiency) measurements. + Date of last calibration (geometry and / or efficiency) measurement(s). - File name and/or path (withing a file) containing data from the last calibration. + File name(s) and/or path(s) (withing file(s)) containing data from the last calibration(s). This can be a list. - File name and/or path (withing a file) containing data from the last calibration. + File name(s) and/or path(s) (withing a file(s)) containing data from the last calibration(s). This can be a list. @@ -206,7 +206,7 @@ - Description of type such as \ :sup:`3`\ He gas cylinder, \ :sup:`3`\ He PSD, scintillator, fission chamber, proportion counter, ion chamber, ccd, pixel, image plate, CMOS, … + Description of type such as \ :sup:`3`\ He gas cylinder, \ :sup:`3`\ He PSD, scintillator, fission chamber, proportion counter, ion chamber, CCD, pixel, image plate, CMOS, … @@ -274,67 +274,92 @@ - Defines the beam size volume used for probing the sample. This corresponds to the instrumental gauge volume. + + Defines the dimensions of the beam profile used for probing the sample which corresponds to or can be used to determine the instrumental gauge volume. + A description of the subsequent fields can be found in the folowing figure. The term "primary" in the subsequent fields refers to the beam path between the sample and the source. The term "secondary" refers to the beam path between the sample and the detector(s). + + .. figure:: stress/Beam_profile_sketch3.jpg + :width: 70% + :alt: Examples for the beam intensity profile. + + Some examples for the beam intensity profile. The 1D description of the beam profile on the right can equally be applied for the horizontal and vertical direction for the primary and the secondary side. + + - If the beam size was measured, the filename of the measurement can be specified here. + If the beam profile was measured, the filename(s) of the measurement can be specified here. - - Defines the device used to shape the beam. This could be, for example, a radial collimator or a slit. + + Defines the last device right in front of the sample used to shape the beam. This could be, for example, a :ref:`(radial) collimator <NXcollimator>` or a :ref:`slit <NXslit>`. - + - Defines the bottom of the primary beam size intensity profile in the vertical direction. + Defines the primary beam size intensity profile on the side closer to the source in the vertical direction. - + - Defines the top of the primary beam size intensity profile in the vertical direction. + Defines the primary beam size intensity profile on the side closer to the sample in the vertical direction. - + Defines the distance between the center of the gauge volume and the beam shaping device. + + + Describes how the beam intensity profile in the primary vertical direction was determined. Examples of valid entries are: ``measured``, ``theoretical``, ``estimated``, ... + + - - Defines the device used to shape the beam. This could be, for example, a radial collimator or a slit. + + Defines the last device right in front of the sample used to shape the beam. This could be, for example, a :ref:`(radial) collimator <NXcollimator>` or a :ref:`slit <NXslit>`. - + - Defines the bottom of the primary beam size intensity profile in the horizontal direction. + Defines the primary beam size intensity profile on the side closer to the source in the horizontal direction. - + - Defines the top of the primary beam size intensity profile in the horizontal direction. + Defines the primary beam size intensity profile on the side closer to the sample in the horizontal direction. - + Defines the distance between the center of the gauge volume and the beam shaping device. + + + Describes how the beam intensity profile in the primary horizontal direction was determined. Examples of valid entries are: ``measured``, ``theoretical``, ``estimated``, ... + + - - Defines the device used to shape the beam. This could be, for example, a radial collimator or a slit. + + Defines the last device right in front of the sample used to shape the beam. This could be, for example, a :ref:`(radial) collimator <NXcollimator>` or a :ref:`slit <NXslit>`. - + - Defines the bottom of the secondary beam size intensity profile in the horizontal direction. + Defines the secondary beam size intensity profile on the side closer to the detector in the horizontal direction. - + - Defines the top of the secondary beam size intensity profile in the horizontal direction. + Defines the secondary beam size intensity profile on the side closer to the sample in the horizontal direction. - + Defines the distance between the center of the gauge volume and the beam shaping device. + + + Describes how the beam intensity profile in the secondary horizontal direction was determined. Examples of valid entries are: ``measured``, ``theoretical``, ``estimated``, ... + + @@ -388,37 +413,61 @@ - - + + The gauge volume can be described with the following parameters: + .. figure:: stress/GV2.jpg + :width: 70% + :alt: Dimensions of the gauge volume. + + Parameters describing the gauge volume. + + + + Length of the first diagonal. + + + + + Length of the second diagonal normal to :ref:`a </NXstress/ENTRY/sample_description/gauge_volume/x-field>`. + + + + + Height of the gauge volume. + + + + The axis on which the sample position depends may be stored anywhere, but is normally stored in the NXtransformations group within the NXsample group. - - - - + + + + This is the recommended location for sample goniometer and other related axes. - - + + + - + Zero or more groups to describe the data processing steps to obtain the content of this application definition. - The raw data file name(s) used during the data reduction process. + The raw data file name(s) used during the data reduction process. This can be a list. - + Date when the raw data was reduced and the data in the *NXstress* file format generated. - + Software package used to perform data reduction including the version number or release date. @@ -450,7 +499,7 @@ - Describes whether the data was normalized and if so , how. Examples of valid entries are: None, time, primary monitor, detector, … + Describes whether the data was normalized and if so , how. Examples of valid entries are: ``None``, ``time``, ``primary monitor``, ``detector``, … @@ -458,8 +507,286 @@ - Role of user responsible for this entry. Suggested roes are, for example, ``local contact``, ``beamline_scientist``, ``post_doc``,… - + Role of user responsible for this entry. Suggested roles are, for example, ``local contact``, ``beamline_scientist``, ``post_doc``,… + + + + + The note will contain information about how the data was processed + or anything about the data provenance. + The contents of the note can be anything that the processing code + can understand, or a simple text. + + The name will be numbered to allow for ordering of steps. + + + + + This group contains all diffraction peak fit parameters. + This information is not required for stress and strain calculations. + Note that as in any *NXdata* group, each field can have uncertainties + associated to them (e.g. *center_errors* would be the uncertainties + on the peak center). + + + Diffraction peak profile. + + + + + + + + + + + Diffraction peak area (not including the background). + + + + + + + Diffraction peak height (not including the background). + + + + + + Diffraction peak full width at half maximum. + + + + + + + Left-side FWHM for split profiles. + + + + + + Right-side FWHM for split profiles. + + + + + + + - Voigt or Pseudo-Voigt: Lorentzian fraction + - Pearson VII: decay parameter + - Other profiles: not applicable + + + + + + + + Error value(s) asscociated with the form_factor. + + + + + + + + Angle that define the position of the integrated sector in the diffraction cone + for angular-dispersive diffraction or the position of the detector for energy-dispersive + diffraction. + + + + + + + + + This group contains all background fit parameters. + This information is not required for stress and strain caluclations. + + + + Diffraction background profile. Required when background parameter fields are present. + Some example values with equations are shown below: + + - ``manual`` : No equations nor variables needed to describe this background. + - ``linear`` : \ :math:`\small background= A0 + A1 \cdot x` + - ``5-degree polynomial`` : \ :math:`\small background= A0 + A1 \cdot x + A2 \cdot \mathrm{x}^{2} + A3 \cdot \mathrm{x}^{3} + A4 \cdot \mathrm{x}^{4} + A5 \cdot \mathrm{x}^{5}` + - ``shape function plus polynomial`` : A shape function is not a mathematical function, it contains a manual background obtained from a fit and a polynomial part. This allows to adapt and modify the fit for subsequent measurements in the same measurement campaign. The function describing it is the following: \ :math:`\small background= as + b \cdot SHAPE(x-o)` Where SHAPE is the name of the variable used to describe the background value at the position x. x can be e.g. the scattering angle \ :math:`2\theta` in degrees. + + + + Background parameter(s). For example a second-degree polynomial will have fields ``A0``, ``A1`` and ``A2``. + + + + + + Background parameter *constant* for SHAPE function. + + + + + + Error associated with background parameter *constant* for SHAPE function. + + + + + + Background parameter *amplitude* for SHAPE function. + + + + + + Error associated with background parameter *amplitude* for SHAPE function. + + + + + + Background parameter *offset* for SHAPE function. + + + + + + Error associated with background parameter *offset* for SHAPE function. + + + + + + The background area integrated over a confidence interval around the center (*0.95* by default). + + + + + + + Confidence interval from which the background counts are integrated. + For example *0.95* means that the background is integrated over the range in + which the integrated peak area is 95% of the total peak area. + + + + + + + Diffractogram with fit results in :ref:`peak_parameters </NXstress/ENTRY/fit/peak_parameters-group>` + and :ref:`background_parameters </NXstress/ENTRY/fit/background_parameters-group>`. + This information is not required for stress and strain caluclations. + + + List of the one to two axes field name(s) to be used by default. The axes are further described in the fields DAXIS and XAXIS. + + + + + One or more fields that contain the values for the **nD** dimension. + For example the azimuthal positions of different energy-dispersive detectors + or the average azimuth of different azimuthal sections on an area detector. + + + + + + + + + One or more fields that contain the values for the **nX** dimension. + For example: MCA channels, scattering angle \ :math:`2\theta` in degrees, + scattering vector length q in \ :math:`\mathrm{nm}^{-1}`, ... + + + + + + + + Default field name to be plotted. + + + + + + + List of additional field names to be plotted. This could be e.g. fit, background, residuals, … + + + + Diffractogram counts (default signal) + + + + + + + + + + + + + Diffractogram counts error (default signal) + + + + + + + + + + + + + Diffractogram fit counts (auxiliary signal). + + + + + + + + + + + + + Diffractogram fit counts error (auxiliary signal). + + + + + + + + In case the diffraction background was manually determined. Diffractogram background counts (auxiliary signal). + + + + + + + + + + + + Difference between diffractogram and fit (auxiliary signal). + + + + + + + + + + @@ -474,7 +801,7 @@ This group contains all diffraction peak parameters that could be needed for stress and strain calculations. - These parameters are derived from :ref:`peak_parameters </NXstress/ENTRY/peak_parameters-group>` and additional metadata. + These parameters are derived from :ref:`peak_parameters </NXstress/ENTRY/fit/peak_parameters-group>` and additional metadata. First Miller index. @@ -501,7 +828,7 @@ - Crystallographic space group (*Fm3m*, *Im3m*, ...) + Crystallographic space group :math:`(Fm\bar{3}m, Im\bar{3}m, ...)` @@ -515,7 +842,7 @@ First component of the *normalized* scattering vector *Q* in the sample reference frame. - The sample reference frame is defined by the :ref:`sample transformations </NXstress/ENTRY/sample_description/TRANSFORMATIONS-group>`. + The sample reference frame is defined by the :ref:`sample transformations </NXstress/ENTRY/sample_description/gauge_volume/TRANSFORMATIONS-group>`. @@ -524,7 +851,7 @@ Second component of the *normalized* scattering vector *Q* in the sample reference frame. - The sample reference frame is defined by the :ref:`sample transformations </NXstress/ENTRY/sample_description/TRANSFORMATIONS-group>`. + The sample reference frame is defined by the :ref:`sample transformations </NXstress/ENTRY/sample_description/gauge_volume/TRANSFORMATIONS-group>`. @@ -533,7 +860,7 @@ Third component of the *normalized* scattering vector *Q* in the sample reference frame. - The sample reference frame is defined by the :ref:`sample transformations </NXstress/ENTRY/sample_description/TRANSFORMATIONS-group>`. + The sample reference frame is defined by the :ref:`sample transformations </NXstress/ENTRY/sample_description/gauge_volume/TRANSFORMATIONS-group>`. @@ -546,7 +873,7 @@ - Uncertainties on :ref:`center </NXstress/ENTRY/peaks/center-field>`. + Uncentrainties on :ref:`center </NXstress/ENTRY/peaks/center-field>`. @@ -560,7 +887,7 @@ - if *center_type="energy"* then *cUnit* must have the energy unit *keV* - if *center_type="momentum-transfer"* then *cUnit* must have the energy unit \ :math:`\unicode{x212B}^{-1}` - if *center_type="d-spacing"* then *cUnit* must have the energy unit \ :math:`\unicode{x212B}` - - if *center_type="channel"* then *cUnit* must be *dimensionless* + - if *center_type="channel"* then *cUnit* must be *dimensioness* - if *center_type="time-of-flight"* then *cUnit* must have the time-of-flight unit \ :math:`\mu\mathrm{s}` @@ -575,7 +902,7 @@ First component of the sample position in the sample reference frame. - The sample reference frame is defined by the :ref:`sample transformations </NXstress/ENTRY/sample_description/TRANSFORMATIONS-group>`. + The sample reference frame is defined by the :ref:`sample transformations </NXstress/ENTRY/sample_description/gauge_volume/TRANSFORMATIONS-group>`. @@ -585,7 +912,7 @@ First component of the sample position in the sample reference frame. - The sample reference frame is defined by the :ref:`sample transformations </NXstress/ENTRY/sample_description/TRANSFORMATIONS-group>`. + The sample reference frame is defined by the :ref:`sample transformations </NXstress/ENTRY/sample_description/gauge_volume/TRANSFORMATIONS-group>`. @@ -594,7 +921,7 @@ First component of the sample position in the sample reference frame. - The sample reference frame is defined by the :ref:`sample transformations </NXstress/ENTRY/sample_description/TRANSFORMATIONS-group>`. + The sample reference frame is defined by the :ref:`sample transformations </NXstress/ENTRY/sample_description/gauge_volume/TRANSFORMATIONS-group>`. @@ -602,275 +929,5 @@ - - - This group contains all diffraction peak fit parameters. - This information is not required for stress and strain calculations. - Note that as in any *NXdata* group, each field can have uncertainties - associated to them (e.g. *center_errors* would be the uncertainties - on the peak center). - - - Diffraction peak profile. - - - - - - - - - - - Diffraction peak area (not including the background). - - - - - - - Diffraction peak height (not including the background). - - - - - - Diffraction peak full width at half maximum. - - - - - - - Left-side FWHM for split profiles. - - - - - - Right-side FWHM for split profiles. - - - - - - - - Voigt or Pseudo-Voigt: Lorentzian fraction - - Pearson VII: decay parameter - - Other profiles: not applicable - - - - - - - - Error value(s) associated with the form_factor. - - - - - - - - Angle that define the position of the integrated sector in the diffraction cone - for angular-dispersive diffraction or the position of the detector for energy-dispersive - diffraction. - - - - - - - - - - This group contains all background fit parameters. - This information is not required for stress and strain calculations. - - - - Diffraction background profile. Required when background parameter fields are present. - Some example values with equations are shown below: - - - ``manual`` : No equations nor variables needed to describe this background. - - ``linear`` : \ :math:`\small background= A0 + A1 \cdot x` - - ``5-degree polynomial`` : \ :math:`\small background= A0 + A1 \cdot x + A2 \cdot \mathrm{x}^{2} + A3 \cdot \mathrm{x}^{3} + A4 \cdot \mathrm{x}^{4} + A5 \cdot \mathrm{x}^{5}` - - ``shape function plus polynomial`` : A shape function is not a mathematical function, it contains a manual background obtained from a fit and a polynomial part. This allows to adapt and modify the fit for subsequent measurements in the same measurement campaign. The function describing it is the following: \ :math:`\small background= as + b \cdot SHAPE(x-o)` Where SHAPE is the name of the variable used to describe the background value at the position x. x can be e.g. the scattering angle \ :math:`2\theta` in degrees. - - - - Background parameter(s). For example a second-degree polynomial will have fields ``A0``, ``A1`` and ``A2``. - - - - - - Background parameter *constant* for SHAPE function. - - - - - - Error associated with background parameter *constant* for SHAPE function. - - - - - - Background parameter *amplitude* for SHAPE function. - - - - - - Error associated with background parameter *amplitude* for SHAPE function. - - - - - - Background parameter *offset* for SHAPE function. - - - - - - Error associated with background parameter *offset* for SHAPE function. - - - - - - The background area integrated over a confidence interval around the center (*0.95* by default). - - - - - - - Confidence interval from which the background counts are integrated. - For example *0.95* means that the background is integrated over the range in - which the integrated peak area is 95% of the total peak area. - - - - - - - Diffractogram with fit results in :ref:`peak_parameters </NXstress/ENTRY/peak_parameters-group>` - and :ref:`background_parameters </NXstress/ENTRY/background_parameters-group>`. - This information is not required for stress and strain calculations. - - - List of the one to two axes field name(s) to be used by default. The axes are further described in the fields DAXIS and XAXIS. - - - - - One or more fields that contain the values for the **nD** dimension. - For example the azimuthal positions of different energy-dispersive detectors - or the average azimuth of different azimuthal sections on an area detector. - - - - - - - - - One or more fields that contain the values for the **nX** dimension. - For example: MCA channels, scattering angle \ :math:`2\theta` in degrees, - scattering vector length q in \ :math:`\mathrm{nm}^{-1}`, ... - - - - - - - - Default field name to be plotted. - - - - - - - List of additional field names to be plotted. This could be e.g. fit, background, residuals, … - - - - Diffractogram counts (default signal) - - - - - - - - - - - - - Diffractogram counts error (default signal) - - - - - - - - - - - - - Diffractogram fit counts (auxiliary signal). - - - - - - - - - - - - - Diffractogram fit counts error (auxiliary signal). - - - - - - - - In case the diffraction background was manually determined. Diffractogram background counts (auxiliary signal). - - - - - - - - - - - - Difference between diffractogram and fit (auxiliary signal). - - - - - - - - - - - - \ No newline at end of file diff --git a/contributed_definitions/stress/Beam_profile_sketch3.jpg b/contributed_definitions/stress/Beam_profile_sketch3.jpg new file mode 100644 index 0000000000000000000000000000000000000000..1d9e51d690f45cf256fb906a1c9939b9a5dd510e GIT binary patch literal 127844 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 J_dUNx{|h?z2Sfk> literal 0 HcmV?d00001 diff --git a/contributed_definitions/stress/GV2.jpg b/contributed_definitions/stress/GV2.jpg new file mode 100644 index 0000000000000000000000000000000000000000..a9940c8c69e2788aa74a42ef92a37c595bcacd5e GIT binary patch literal 18187 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 literal 0 HcmV?d00001 From 776c5ec148059e4a63c72eefb392454020ef8d7e Mon Sep 17 00:00:00 2001 From: woutdenolf Date: Wed, 7 Feb 2024 13:17:05 +0100 Subject: [PATCH 04/24] peaks are NXreflections instead of NXdata --- contributed_definitions/NXstress.nxdl.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/contributed_definitions/NXstress.nxdl.xml b/contributed_definitions/NXstress.nxdl.xml index 94a8e2c52..49d1dc7dc 100644 --- a/contributed_definitions/NXstress.nxdl.xml +++ b/contributed_definitions/NXstress.nxdl.xml @@ -798,7 +798,7 @@ - + This group contains all diffraction peak parameters that could be needed for stress and strain calculations. These parameters are derived from :ref:`peak_parameters </NXstress/ENTRY/fit/peak_parameters-group>` and additional metadata. From d3e4e9f460772a6a90f3de168b3b09a2622507b3 Mon Sep 17 00:00:00 2001 From: woutdenolf Date: Wed, 7 Feb 2024 13:28:20 +0100 Subject: [PATCH 05/24] units cannot be defined by symbols --- contributed_definitions/NXstress.nxdl.xml | 121 +++++++++++++++++----- 1 file changed, 97 insertions(+), 24 deletions(-) diff --git a/contributed_definitions/NXstress.nxdl.xml b/contributed_definitions/NXstress.nxdl.xml index 49d1dc7dc..2efb50309 100644 --- a/contributed_definitions/NXstress.nxdl.xml +++ b/contributed_definitions/NXstress.nxdl.xml @@ -539,37 +539,52 @@ - - Diffraction peak area (not including the background). + + Diffraction peak area (not including the background) in *yUnit* units. + + Specify the *yUnit* units + - - Diffraction peak height (not including the background). + + Diffraction peak height (not including the background) in *yUnit* units. + + Specify the *yUnit* units + - - Diffraction peak full width at half maximum. + + Diffraction peak full width at half maximum in *xUnit* units. + + Specify the *xUnit* units + - - Left-side FWHM for split profiles. + + Left-side FWHM for split profiles in *xUnit* units. + + Specify the *xUnit* units + - - Right-side FWHM for split profiles. + + Right-side FWHM for split profiles in *xUnit* units. + + Specify the *xUnit* units + @@ -658,11 +673,14 @@ - - The background area integrated over a confidence interval around the center (*0.95* by default). + + The background area in *yUnit* units, integrated over a confidence interval around the center (*0.95* by default). + + Specify the *yUnit* units + @@ -694,15 +712,18 @@ - + - One or more fields that contain the values for the **nX** dimension. + One or more fields that contain the values for the **nX** dimension in *xUnit* units. For example: MCA channels, scattering angle \ :math:`2\theta` in degrees, scattering vector length q in \ :math:`\mathrm{nm}^{-1}`, ... + + Specify the *xUnit* units + @@ -716,8 +737,8 @@ List of additional field names to be plotted. This could be e.g. fit, background, residuals, … - - Diffractogram counts (default signal) + + Diffractogram counts in *yUnit* units (default signal) @@ -727,10 +748,13 @@ + + Specify the *yUnit* units + - - Diffractogram counts error (default signal) + + Diffractogram counts error in *yUnit* units (default signal) @@ -740,6 +764,9 @@ + + Specify the *yUnit* units + @@ -866,26 +893,72 @@ - - Diffraction peak position. + + Diffraction peak position in *cUnit* units. + + Specify the *cUnit* units (see :ref:`center_type </NXstress/ENTRY/peaks/center_type-field>`) + + + two-theta + + + energy + + + momentum-transfer + + + d-spacing + + + time-of-flight + + + channel (dimensionless) + + + - - Uncentrainties on :ref:`center </NXstress/ENTRY/peaks/center-field>`. + + Uncentrainties on :ref:`center </NXstress/ENTRY/peaks/center-field>` in *cUnit* units. + + Specify the *cUnit* units (see :ref:`center_type </NXstress/ENTRY/peaks/center_type-field>`) + + + two-theta + + + energy + + + momentum-transfer + + + d-spacing + + + time-of-flight + + + channel (dimensionless) + + + The space in which :ref:`center </NXstress/ENTRY/peaks/center-field>` is defined. - Note that *cUnit* must correspond: + It defines the *cUnit* as follows - if *center_type="two-theta"* then *cUnit* must have the angle unit *degrees* - if *center_type="energy"* then *cUnit* must have the energy unit *keV* - - if *center_type="momentum-transfer"* then *cUnit* must have the energy unit \ :math:`\unicode{x212B}^{-1}` + - if *center_type="momentum-transfer"* then *cUnit* must have the energy unit \ :math:`\unicode{x212B}^{-1}` - if *center_type="d-spacing"* then *cUnit* must have the energy unit \ :math:`\unicode{x212B}` - if *center_type="channel"* then *cUnit* must be *dimensioness* - if *center_type="time-of-flight"* then *cUnit* must have the time-of-flight unit \ :math:`\mu\mathrm{s}` From d9ab621351df5bd188fdcbd4bacb244b18daf121 Mon Sep 17 00:00:00 2001 From: woutdenolf Date: Wed, 7 Feb 2024 13:59:04 +0100 Subject: [PATCH 06/24] beam_intensity_profile becomes NXbeam instead of NXcollection --- contributed_definitions/NXstress.nxdl.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/contributed_definitions/NXstress.nxdl.xml b/contributed_definitions/NXstress.nxdl.xml index 2efb50309..35285e9a7 100644 --- a/contributed_definitions/NXstress.nxdl.xml +++ b/contributed_definitions/NXstress.nxdl.xml @@ -273,7 +273,7 @@ - + Defines the dimensions of the beam profile used for probing the sample which corresponds to or can be used to determine the instrumental gauge volume. A description of the subsequent fields can be found in the folowing figure. The term "primary" in the subsequent fields refers to the beam path between the sample and the source. The term "secondary" refers to the beam path between the sample and the detector(s). From 0a2183c02e363043d439c1900c86352487c12045 Mon Sep 17 00:00:00 2001 From: woutdenolf Date: Wed, 7 Feb 2024 14:14:56 +0100 Subject: [PATCH 07/24] use NXnote groups with a required calibration_type field for calibration --- contributed_definitions/NXstress.nxdl.xml | 30 ++++++++++++++++------- 1 file changed, 21 insertions(+), 9 deletions(-) diff --git a/contributed_definitions/NXstress.nxdl.xml b/contributed_definitions/NXstress.nxdl.xml index 35285e9a7..b1096b695 100644 --- a/contributed_definitions/NXstress.nxdl.xml +++ b/contributed_definitions/NXstress.nxdl.xml @@ -159,15 +159,27 @@ Short name for the instrument, perhaps the acronym, which would be for the the example above ``SALSA``. - - Date of last calibration (geometry and / or efficiency) measurement(s). - - - File name(s) and/or path(s) (withing file(s)) containing data from the last calibration(s). This can be a list. - - - File name(s) and/or path(s) (withing a file(s)) containing data from the last calibration(s). This can be a list. - + + Geometry and/or efficiency measurement(s). + + Describe the type of calibration + + + Name of the calibration file + + + Calibration file content. + + + Mime content type of note *data* field e.g. text/plain, application/json + + + Author or creator of note + + + Date note created/added + + From e5372e0f41cc76e2bf54e8f0a89ce03ad20e5af1 Mon Sep 17 00:00:00 2001 From: woutdenolf Date: Wed, 7 Feb 2024 14:25:10 +0100 Subject: [PATCH 08/24] add sin2psi diffraction type and qmagnitude in case cUnits is not enough (like sin2pi) --- contributed_definitions/NXstress.nxdl.xml | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/contributed_definitions/NXstress.nxdl.xml b/contributed_definitions/NXstress.nxdl.xml index b1096b695..1056bc1fa 100644 --- a/contributed_definitions/NXstress.nxdl.xml +++ b/contributed_definitions/NXstress.nxdl.xml @@ -133,6 +133,7 @@ * ``two-theta`` * ``energy`` * ``d-spacing`` + * ``sin2psi`` @@ -905,6 +906,18 @@ + + + The magnitude of the scattering vector *Q*. This is provided in case having the data in *cUnits* units is not enough for stress/strain calculations. + + + + + + + + + Diffraction peak position in *cUnit* units. From a3e4f426545631483dae34b7cc4090198074f764 Mon Sep 17 00:00:00 2001 From: woutdenolf Date: Fri, 1 Mar 2024 11:43:15 +0100 Subject: [PATCH 09/24] qmagnitude is redundant (it is center with type momentum transfer) and can cause confusion --- contributed_definitions/NXstress.nxdl.xml | 12 ------------ 1 file changed, 12 deletions(-) diff --git a/contributed_definitions/NXstress.nxdl.xml b/contributed_definitions/NXstress.nxdl.xml index 1056bc1fa..7cf3af3f1 100644 --- a/contributed_definitions/NXstress.nxdl.xml +++ b/contributed_definitions/NXstress.nxdl.xml @@ -906,18 +906,6 @@ - - - The magnitude of the scattering vector *Q*. This is provided in case having the data in *cUnits* units is not enough for stress/strain calculations. - - - - - - - - - Diffraction peak position in *cUnit* units. From 914e8ef5f941f8c9dda94ea96483d0b6d59e8eb8 Mon Sep 17 00:00:00 2001 From: woutdenolf Date: Fri, 1 Mar 2024 11:42:01 +0100 Subject: [PATCH 10/24] fix NXsample transformations --- contributed_definitions/NXstress.nxdl.xml | 24 +++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/contributed_definitions/NXstress.nxdl.xml b/contributed_definitions/NXstress.nxdl.xml index 7cf3af3f1..f16b95848 100644 --- a/contributed_definitions/NXstress.nxdl.xml +++ b/contributed_definitions/NXstress.nxdl.xml @@ -456,13 +456,13 @@ group within the NXsample group. - - - This is the recommended location for sample goniometer - and other related axes. - - + + + This is the recommended location for sample goniometer + and other related axes. + + @@ -882,7 +882,7 @@ First component of the *normalized* scattering vector *Q* in the sample reference frame. - The sample reference frame is defined by the :ref:`sample transformations </NXstress/ENTRY/sample_description/gauge_volume/TRANSFORMATIONS-group>`. + The sample reference frame is defined by the :ref:`sample transformations </NXstress/ENTRY/sample_description/TRANSFORMATIONS-group>`. @@ -891,7 +891,7 @@ Second component of the *normalized* scattering vector *Q* in the sample reference frame. - The sample reference frame is defined by the :ref:`sample transformations </NXstress/ENTRY/sample_description/gauge_volume/TRANSFORMATIONS-group>`. + The sample reference frame is defined by the :ref:`sample transformations </NXstress/ENTRY/sample_description/TRANSFORMATIONS-group>`. @@ -900,7 +900,7 @@ Third component of the *normalized* scattering vector *Q* in the sample reference frame. - The sample reference frame is defined by the :ref:`sample transformations </NXstress/ENTRY/sample_description/gauge_volume/TRANSFORMATIONS-group>`. + The sample reference frame is defined by the :ref:`sample transformations </NXstress/ENTRY/sample_description/TRANSFORMATIONS-group>`. @@ -988,7 +988,7 @@ First component of the sample position in the sample reference frame. - The sample reference frame is defined by the :ref:`sample transformations </NXstress/ENTRY/sample_description/gauge_volume/TRANSFORMATIONS-group>`. + The sample reference frame is defined by the :ref:`sample transformations </NXstress/ENTRY/sample_description/TRANSFORMATIONS-group>`. @@ -998,7 +998,7 @@ First component of the sample position in the sample reference frame. - The sample reference frame is defined by the :ref:`sample transformations </NXstress/ENTRY/sample_description/gauge_volume/TRANSFORMATIONS-group>`. + The sample reference frame is defined by the :ref:`sample transformations </NXstress/ENTRY/sample_description/TRANSFORMATIONS-group>`. @@ -1007,7 +1007,7 @@ First component of the sample position in the sample reference frame. - The sample reference frame is defined by the :ref:`sample transformations </NXstress/ENTRY/sample_description/gauge_volume/TRANSFORMATIONS-group>`. + The sample reference frame is defined by the :ref:`sample transformations </NXstress/ENTRY/sample_description/TRANSFORMATIONS-group>`. From 87bc8cb8ae1ea7d0a42f814141deae4d234dfde3 Mon Sep 17 00:00:00 2001 From: woutdenolf Date: Wed, 8 May 2024 13:41:32 +0200 Subject: [PATCH 11/24] fix indentation --- contributed_definitions/NXstress.nxdl.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/contributed_definitions/NXstress.nxdl.xml b/contributed_definitions/NXstress.nxdl.xml index f16b95848..01eb6d186 100644 --- a/contributed_definitions/NXstress.nxdl.xml +++ b/contributed_definitions/NXstress.nxdl.xml @@ -456,7 +456,7 @@ group within the NXsample group. - + This is the recommended location for sample goniometer From 97066428fb8e9dacff0f46bbd41c8858c5fead75 Mon Sep 17 00:00:00 2001 From: woutdenolf Date: Wed, 8 May 2024 13:41:48 +0200 Subject: [PATCH 12/24] fix link name --- contributed_definitions/NXstress.nxdl.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/contributed_definitions/NXstress.nxdl.xml b/contributed_definitions/NXstress.nxdl.xml index 01eb6d186..d4f5e3906 100644 --- a/contributed_definitions/NXstress.nxdl.xml +++ b/contributed_definitions/NXstress.nxdl.xml @@ -441,7 +441,7 @@ - Length of the second diagonal normal to :ref:`a </NXstress/ENTRY/sample_description/gauge_volume/x-field>`. + Length of the second diagonal normal to :ref:`x </NXstress/ENTRY/sample_description/gauge_volume/x-field>`. From 83cd26588110069fccb23c122a70be821f502961 Mon Sep 17 00:00:00 2001 From: woutdenolf Date: Wed, 8 May 2024 13:42:33 +0200 Subject: [PATCH 13/24] use enumerations --- contributed_definitions/NXstress.nxdl.xml | 43 ++++++++++++++--------- 1 file changed, 26 insertions(+), 17 deletions(-) diff --git a/contributed_definitions/NXstress.nxdl.xml b/contributed_definitions/NXstress.nxdl.xml index d4f5e3906..f53623852 100644 --- a/contributed_definitions/NXstress.nxdl.xml +++ b/contributed_definitions/NXstress.nxdl.xml @@ -137,13 +137,16 @@ - Describes the specific measurement direction covered by the data in this file. Any of these values are valid: - * ``radial`` - * ``longitudinal`` - * ``normal`` - * ``tangential`` - * ``multiple`` + + Describes the specific measurement direction covered by the data in this file. + + + + + + + Information about the person who performed the experiment. @@ -184,21 +187,27 @@ - Type of radiation source (pick one from the enumerated list and spell exactly) - Any of these values: - - ``Spallation Neutron Source`` - - ``Pulsed Reactor Neutron Source`` - - ``Reactor Neutron Source`` - - ``Synchrotron X-ray Source`` - - ``Rotating Anode X-ray`` - - ``Fixed Tube X-ray`` - - ``Metal Jet X-ray`` + + Type of radiation source + + + + + + + + + - Type of radiation probe (pick one from the enumerated list and spell exactly) - Any of these values: ``neutron`` | ``X-ray`` + + Type of radiation probe + + + + From 2c766f2e77a96494d54355c761e6d08096f25274 Mon Sep 17 00:00:00 2001 From: woutdenolf Date: Wed, 8 May 2024 13:43:51 +0200 Subject: [PATCH 14/24] rename diffraction_type to processing_type, use enumeration and add more descriptions --- contributed_definitions/NXstress.nxdl.xml | 40 +++++++++++++++++++---- 1 file changed, 34 insertions(+), 6 deletions(-) diff --git a/contributed_definitions/NXstress.nxdl.xml b/contributed_definitions/NXstress.nxdl.xml index f53623852..fd0116903 100644 --- a/contributed_definitions/NXstress.nxdl.xml +++ b/contributed_definitions/NXstress.nxdl.xml @@ -128,13 +128,41 @@ Brief summary of the collection, including grouping criteria. The information provided in this field can highlight, for example, the measurement setup or information about experimental conditions. - - This variable describes the type of data plotted in the diffractogram and describes the type of calculation used in the EASI-STRESS software. Any of these values are valid: - * ``two-theta`` - * ``energy`` - * ``d-spacing`` - * ``sin2psi`` + + + Describes the way strain `\varepsilon ` can be calculated from the :ref:`center </NXstress/ENTRY/peaks/center-field>` + peak parameter. + + + + \ :math:`\varepsilon = \large \frac{sin(\mathrm{\theta}_{0})}{sin(\mathrm{\theta})}-1` + + + + + \ :math:`\varepsilon = \large \frac{\mathrm{E}_{0}}{\mathrm{E}}-1` + + + + + \ :math:`\varepsilon = \large \frac{\mathrm{d}}{\mathrm{d}_{0}}-1` + + + + + \ :math:`\varepsilon = \large \frac{\mathrm{TOF}}{\mathrm{TOF}_{0}}-1` + + + + + A description of the \ :math:`\mathrm{\sin}^{2}\psi` method can be found in the literature. Two examples are: + `Fitzpatrick, M. E. et. al.; Determination of residual stresses by X-ray diffraction; National Physical Laboratory, Teddington, 2005` + and + `EN 15305:2009 standard: Non-destructive testing - Test Method for Residual Stress analysis by X-ray Diffraction`. + + + From a89a4046c948601c609554462e2600bbbd86c387 Mon Sep 17 00:00:00 2001 From: woutdenolf Date: Wed, 8 May 2024 15:10:16 +0200 Subject: [PATCH 15/24] fix PDF build --- contributed_definitions/NXstress.nxdl.xml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/contributed_definitions/NXstress.nxdl.xml b/contributed_definitions/NXstress.nxdl.xml index fd0116903..7f50bcbe9 100644 --- a/contributed_definitions/NXstress.nxdl.xml +++ b/contributed_definitions/NXstress.nxdl.xml @@ -245,7 +245,7 @@ - In case of monochromatic radiation, the wavelength used during the experiment. The wavelength should be provided in \ :math:`\unicode{x212B}`, but if chosen otherwise, the units must be clearly specified. + In case of monochromatic radiation, the wavelength used during the experiment. The wavelength should be provided in \ :math:`Å`, but if chosen otherwise, the units must be clearly specified. @@ -1007,11 +1007,11 @@ It defines the *cUnit* as follows - if *center_type="two-theta"* then *cUnit* must have the angle unit *degrees* - - if *center_type="energy"* then *cUnit* must have the energy unit *keV* - - if *center_type="momentum-transfer"* then *cUnit* must have the energy unit \ :math:`\unicode{x212B}^{-1}` - - if *center_type="d-spacing"* then *cUnit* must have the energy unit \ :math:`\unicode{x212B}` + - if *center_type="energy"* then *cUnit* must have the unit *keV* + - if *center_type="momentum-transfer"* then *cUnit* must have the unit \ :math:`Å^{-1}` + - if *center_type="d-spacing"* then *cUnit* must have the unit \ :math:`Å` - if *center_type="channel"* then *cUnit* must be *dimensioness* - - if *center_type="time-of-flight"* then *cUnit* must have the time-of-flight unit \ :math:`\mu\mathrm{s}` + - if *center_type="time-of-flight"* then *cUnit* must have the unit \ :math:`\mu\mathrm{s}` From e28cb892176f5bb6d17e4df3d4d8a6a92acaf2f4 Mon Sep 17 00:00:00 2001 From: woutdenolf Date: Wed, 8 May 2024 15:46:47 +0200 Subject: [PATCH 16/24] fix math blocks --- contributed_definitions/NXstress.nxdl.xml | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/contributed_definitions/NXstress.nxdl.xml b/contributed_definitions/NXstress.nxdl.xml index 7f50bcbe9..be795a6b8 100644 --- a/contributed_definitions/NXstress.nxdl.xml +++ b/contributed_definitions/NXstress.nxdl.xml @@ -130,33 +130,33 @@ - Describes the way strain `\varepsilon ` can be calculated from the :ref:`center </NXstress/ENTRY/peaks/center-field>` + Describes the way strain :math:`\varepsilon` can be calculated from the :ref:`center </NXstress/ENTRY/peaks/center-field>` peak parameter. - \ :math:`\varepsilon = \large \frac{sin(\mathrm{\theta}_{0})}{sin(\mathrm{\theta})}-1` + :math:`\varepsilon = \large \frac{sin(\mathrm{\theta}_{0})}{sin(\mathrm{\theta})}-1` - \ :math:`\varepsilon = \large \frac{\mathrm{E}_{0}}{\mathrm{E}}-1` + :math:`\varepsilon = \large \frac{\mathrm{E}_{0}}{\mathrm{E}}-1` - \ :math:`\varepsilon = \large \frac{\mathrm{d}}{\mathrm{d}_{0}}-1` + :math:`\varepsilon = \large \frac{\mathrm{d}}{\mathrm{d}_{0}}-1` - \ :math:`\varepsilon = \large \frac{\mathrm{TOF}}{\mathrm{TOF}_{0}}-1` + :math:`\varepsilon = \large \frac{\mathrm{TOF}}{\mathrm{TOF}_{0}}-1` - A description of the \ :math:`\mathrm{\sin}^{2}\psi` method can be found in the literature. Two examples are: + A description of the :math:`\mathrm{\sin}^{2}\psi` method can be found in the literature. Two examples are: `Fitzpatrick, M. E. et. al.; Determination of residual stresses by X-ray diffraction; National Physical Laboratory, Teddington, 2005` and `EN 15305:2009 standard: Non-destructive testing - Test Method for Residual Stress analysis by X-ray Diffraction`. From b125713c825a814b47ccd8373b1e70dc7624a115 Mon Sep 17 00:00:00 2001 From: Arnold Paecklar <61598106+aapaecklar@users.noreply.github.com> Date: Fri, 10 May 2024 14:19:08 +0200 Subject: [PATCH 17/24] Update NXstress.nxdl.xml --- contributed_definitions/NXstress.nxdl.xml | 24 +++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/contributed_definitions/NXstress.nxdl.xml b/contributed_definitions/NXstress.nxdl.xml index be795a6b8..dfdb25fe3 100644 --- a/contributed_definitions/NXstress.nxdl.xml +++ b/contributed_definitions/NXstress.nxdl.xml @@ -192,24 +192,24 @@ - Geometry and/or efficiency measurement(s). - - Describe the type of calibration + This group contains information about the geometry and/or efficiency measurement(s). + + Describe the type of calibration. - Name of the calibration file + File name(s) and/or path(s) (withing file(s)) containing data from the last calibration(s). This can be a list. Calibration file content. - Mime content type of note *data* field e.g. text/plain, application/json + Mime content type of calibration *data* field e.g. text/plain, application/json,... - Author or creator of note + Author or creator of the calibration. - Date note created/added + Date calibration was created/added @@ -240,7 +240,7 @@ Source energy. The energy should be provided in keV, but if chosen otherwise, the units must be clearly specified. For storage rings, this would be the particle beam energy. - For X-ray tubes, this would be the excitation voltage. In case of energy dispersive diffraction, the + For X-ray tubes, this would be the excitation voltage. In case of energy dispersive diffraction, the lowest and highest energy should be provided. @@ -911,7 +911,7 @@ - Name of the crystallographic phase (hematite, goethite, a-Al\ :sub:`2`\ O\ :sub:`3`\ , ...). + Name of the crystallographic phase (hematite, goethite, \ :math:`\alpha`-Al\ :sub:`2`\ O\ :sub:`3`\ , ...). @@ -1008,8 +1008,8 @@ - if *center_type="two-theta"* then *cUnit* must have the angle unit *degrees* - if *center_type="energy"* then *cUnit* must have the unit *keV* - - if *center_type="momentum-transfer"* then *cUnit* must have the unit \ :math:`Å^{-1}` - - if *center_type="d-spacing"* then *cUnit* must have the unit \ :math:`Å` + - if *center_type="momentum-transfer"* then *cUnit* must have the unit \ :math:`\unicode{x212B}^{-1}` + - if *center_type="d-spacing"* then *cUnit* must have the unit \ :math:`\unicode{x212B}` - if *center_type="channel"* then *cUnit* must be *dimensioness* - if *center_type="time-of-flight"* then *cUnit* must have the unit \ :math:`\mu\mathrm{s}` @@ -1053,4 +1053,4 @@ - \ No newline at end of file + From a7d55e59f7324b0e80195fad94e014f8c01bba38 Mon Sep 17 00:00:00 2001 From: Arnold Paecklar <61598106+aapaecklar@users.noreply.github.com> Date: Mon, 13 May 2024 14:53:46 +0200 Subject: [PATCH 18/24] Update contributed_definitions/NXstress.nxdl.xml Deleted the energy dispersive information. --- contributed_definitions/NXstress.nxdl.xml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/contributed_definitions/NXstress.nxdl.xml b/contributed_definitions/NXstress.nxdl.xml index dfdb25fe3..5434bbadc 100644 --- a/contributed_definitions/NXstress.nxdl.xml +++ b/contributed_definitions/NXstress.nxdl.xml @@ -240,7 +240,8 @@ Source energy. The energy should be provided in keV, but if chosen otherwise, the units must be clearly specified. For storage rings, this would be the particle beam energy. - For X-ray tubes, this would be the excitation voltage. In case of energy dispersive diffraction, the lowest and highest energy should be provided. + For X-ray tubes, this would be the excitation voltage. + From cb6b1a8e3bd37ab84a4be211b387d4ea20eba7a3 Mon Sep 17 00:00:00 2001 From: Arnold Paecklar <61598106+aapaecklar@users.noreply.github.com> Date: Mon, 13 May 2024 15:09:45 +0200 Subject: [PATCH 19/24] Update contributed_definitions/NXstress.nxdl.xml Change back again the angstrom symbol --- contributed_definitions/NXstress.nxdl.xml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/contributed_definitions/NXstress.nxdl.xml b/contributed_definitions/NXstress.nxdl.xml index 5434bbadc..432241e81 100644 --- a/contributed_definitions/NXstress.nxdl.xml +++ b/contributed_definitions/NXstress.nxdl.xml @@ -1009,7 +1009,8 @@ - if *center_type="two-theta"* then *cUnit* must have the angle unit *degrees* - if *center_type="energy"* then *cUnit* must have the unit *keV* - - if *center_type="momentum-transfer"* then *cUnit* must have the unit \ :math:`\unicode{x212B}^{-1}` + - if *center_type="momentum-transfer"* then *cUnit* must have the unit \ :math:`Å^{-1}`^{-1}` + - if *center_type="d-spacing"* then *cUnit* must have the unit \ :math:`\unicode{x212B}` - if *center_type="channel"* then *cUnit* must be *dimensioness* - if *center_type="time-of-flight"* then *cUnit* must have the unit \ :math:`\mu\mathrm{s}` From 4bd7821bf9eb777bbf70d901b951ca345cc2dcdc Mon Sep 17 00:00:00 2001 From: Wout De Nolf Date: Wed, 15 May 2024 14:01:19 +0200 Subject: [PATCH 20/24] Update contributed_definitions/NXstress.nxdl.xml Co-authored-by: Arnold Paecklar <61598106+aapaecklar@users.noreply.github.com> --- contributed_definitions/NXstress.nxdl.xml | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/contributed_definitions/NXstress.nxdl.xml b/contributed_definitions/NXstress.nxdl.xml index 432241e81..0a4c3fd78 100644 --- a/contributed_definitions/NXstress.nxdl.xml +++ b/contributed_definitions/NXstress.nxdl.xml @@ -1009,9 +1009,8 @@ - if *center_type="two-theta"* then *cUnit* must have the angle unit *degrees* - if *center_type="energy"* then *cUnit* must have the unit *keV* - - if *center_type="momentum-transfer"* then *cUnit* must have the unit \ :math:`Å^{-1}`^{-1}` - - - if *center_type="d-spacing"* then *cUnit* must have the unit \ :math:`\unicode{x212B}` + - if *center_type="momentum-transfer"* then *cUnit* must have the unit \ :math:`Å^{-1}` + - if *center_type="d-spacing"* then *cUnit* must have the unit \ :math:`Å` - if *center_type="channel"* then *cUnit* must be *dimensioness* - if *center_type="time-of-flight"* then *cUnit* must have the unit \ :math:`\mu\mathrm{s}` From 155b3716a13d2eb1945c0a6b144e2dd656dbb15f Mon Sep 17 00:00:00 2001 From: woutdenolf Date: Wed, 15 May 2024 14:11:32 +0200 Subject: [PATCH 21/24] fix misconception about energy/wavelength --- contributed_definitions/NXstress.nxdl.xml | 20 ++++++-------------- 1 file changed, 6 insertions(+), 14 deletions(-) diff --git a/contributed_definitions/NXstress.nxdl.xml b/contributed_definitions/NXstress.nxdl.xml index 0a4c3fd78..317e11714 100644 --- a/contributed_definitions/NXstress.nxdl.xml +++ b/contributed_definitions/NXstress.nxdl.xml @@ -212,7 +212,6 @@ Date calibration was created/added - @@ -237,18 +236,6 @@ - - - Source energy. The energy should be provided in keV, but if chosen otherwise, the units must be clearly specified. For storage rings, this would be the particle beam energy. - For X-ray tubes, this would be the excitation voltage. - - - - - - In case of monochromatic radiation, the wavelength used during the experiment. The wavelength should be provided in \ :math:`Å`, but if chosen otherwise, the units must be clearly specified. - - Zero or more of these groups describe the detectors used in the experiment. @@ -290,7 +277,6 @@ In this use case, the efficiency and wavelength arrays must have the same dimensionality. - @@ -411,6 +397,12 @@ Describes how the beam intensity profile in the secondary horizontal direction was determined. Examples of valid entries are: ``measured``, ``theoretical``, ``estimated``, ... + + Incident energy mostly useful for monochromatic beams. + + + Incident wavelength mostly useful for monochromatic beams. + From 8e54403e6986760aed8a67265b8ea68464e0754b Mon Sep 17 00:00:00 2001 From: Wout De Nolf Date: Wed, 15 May 2024 17:56:32 +0200 Subject: [PATCH 22/24] Update contributed_definitions/NXstress.nxdl.xml Co-authored-by: Aaron S. Brewster --- contributed_definitions/NXstress.nxdl.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/contributed_definitions/NXstress.nxdl.xml b/contributed_definitions/NXstress.nxdl.xml index 317e11714..dcd4bdcdb 100644 --- a/contributed_definitions/NXstress.nxdl.xml +++ b/contributed_definitions/NXstress.nxdl.xml @@ -73,7 +73,7 @@ file, that they are stored only in one location and then linked in the other instances. For example, if during an acquisition all instrumental parameters but one stay the same and only the sample table moves in one direction (e.g. Xtranslation), then all the static instrumental parameters should be saved just once (e.g. in just one NXentry or in a *Shared_Information group*) and their - vales linked to every *instrument group* under all the other acquistions. The value for the variable that changes, Xtranslation + values linked to every *instrument group* under all the other acquisitions. The value for the variable that changes, Xtranslation in this example, is suggested to only be saved at every instrument group under each acquistion but not in the *Shared_Information group*. It is not always necessary to link each field. In case all the fields with an entire group are the same, the entire group can be linked. From 2f3744c169e8c3440d74c18ee9cb19e30a438c0d Mon Sep 17 00:00:00 2001 From: woutdenolf Date: Wed, 15 May 2024 17:58:13 +0200 Subject: [PATCH 23/24] fix missing peak_parameters groups --- contributed_definitions/NXstress.nxdl.xml | 69 ++++++++++++++++++++++- 1 file changed, 66 insertions(+), 3 deletions(-) diff --git a/contributed_definitions/NXstress.nxdl.xml b/contributed_definitions/NXstress.nxdl.xml index dcd4bdcdb..e6d1857e8 100644 --- a/contributed_definitions/NXstress.nxdl.xml +++ b/contributed_definitions/NXstress.nxdl.xml @@ -582,6 +582,7 @@ + Diffraction peak area (not including the background) in *yUnit* units. @@ -591,6 +592,32 @@ Specify the *yUnit* units + + + Error value(s) asscociated with :ref:`area </NXstress/ENTRY/fit/peak_parameters/area-field>` + + + + + + + + Diffraction peak position in *xUnit* units. + + + + + Specify the *xUnit* units + + + + + Error value(s) asscociated with :ref:`center </NXstress/ENTRY/fit/peak_parameters/center-field>` + + + + + Diffraction peak height (not including the background) in *yUnit* units. @@ -601,6 +628,15 @@ Specify the *yUnit* units + + + Error value(s) asscociated with :ref:`height </NXstress/ENTRY/fit/peak_parameters/height-field>` + + + + + + Diffraction peak full width at half maximum in *xUnit* units. @@ -610,6 +646,14 @@ Specify the *xUnit* units + + + Error value(s) asscociated with :ref:`fwhm </NXstress/ENTRY/fit/peak_parameters/fwhm-field>` + + + + + Left-side FWHM for split profiles in *xUnit* units. @@ -620,6 +664,15 @@ Specify the *xUnit* units + + + Error value(s) asscociated with :ref:`fwhm_left </NXstress/ENTRY/fit/peak_parameters/fwhm_left-field>` + + + + + + Right-side FWHM for split profiles in *xUnit* units. @@ -629,6 +682,15 @@ Specify the *xUnit* units + + + Error value(s) asscociated with :ref:`fwhm_right </NXstress/ENTRY/fit/peak_parameters/fwhm_right-field>` + + + + + + - Voigt or Pseudo-Voigt: Lorentzian fraction @@ -639,17 +701,18 @@ - + - Error value(s) asscociated with the form_factor. + Error value(s) asscociated with :ref:`form_factor </NXstress/ENTRY/fit/peak_parameters/form_factor-field>` + - Angle that define the position of the integrated sector in the diffraction cone + Angle that defines the position of the integrated sector in the diffraction cone for angular-dispersive diffraction or the position of the detector for energy-dispersive diffraction. From 3afae1c37b0725f8bfb0bc763419ef7b07d33028 Mon Sep 17 00:00:00 2001 From: woutdenolf Date: Wed, 15 May 2024 18:03:30 +0200 Subject: [PATCH 24/24] use NXparameters where appropriate --- contributed_definitions/NXstress.nxdl.xml | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/contributed_definitions/NXstress.nxdl.xml b/contributed_definitions/NXstress.nxdl.xml index e6d1857e8..ea4ee914e 100644 --- a/contributed_definitions/NXstress.nxdl.xml +++ b/contributed_definitions/NXstress.nxdl.xml @@ -456,7 +456,7 @@ - + The gauge volume can be described with the following parameters: .. figure:: stress/GV2.jpg :width: 70% @@ -563,13 +563,10 @@ The name will be numbered to allow for ordering of steps. - + This group contains all diffraction peak fit parameters. This information is not required for stress and strain calculations. - Note that as in any *NXdata* group, each field can have uncertainties - associated to them (e.g. *center_errors* would be the uncertainties - on the peak center). Diffraction peak profile. @@ -721,10 +718,10 @@ - + This group contains all background fit parameters. - This information is not required for stress and strain caluclations. + This information is not required for stress and strain calculations.