From 6be61440314519cb19e5a2da51dbbe4a80875b06 Mon Sep 17 00:00:00 2001 From: woutdenolf Date: Thu, 24 Mar 2022 17:44:57 +0100 Subject: [PATCH 01/28] 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 0000000000..47172cd26f --- /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 9729ee34b208328860e7884b13145b532804fbeb Mon Sep 17 00:00:00 2001 From: woutdenolf Date: Mon, 5 Jun 2023 14:49:05 +0200 Subject: [PATCH 02/28] 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 47172cd26f..6e08ba602f 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 1c094c14a5a898adfbd228a19d1c6b8ed4a27df8 Mon Sep 17 00:00:00 2001 From: woutdenolf Date: Fri, 21 Jul 2023 10:36:17 +0200 Subject: [PATCH 03/28] 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 6e08ba602f..94a8e2c52a 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 f86ea28b984692ad74085bfc719bec20bf7fc939 Mon Sep 17 00:00:00 2001 From: woutdenolf Date: Wed, 7 Feb 2024 13:17:05 +0100 Subject: [PATCH 04/28] 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 94a8e2c52a..49d1dc7dc2 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 4acf57b51232a517a80a8cbbd26ef2553a1a6321 Mon Sep 17 00:00:00 2001 From: woutdenolf Date: Wed, 7 Feb 2024 13:28:20 +0100 Subject: [PATCH 05/28] 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 49d1dc7dc2..2efb50309d 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 c515f47a8dbe745d2a2f4ceaf1302eadf9ce5476 Mon Sep 17 00:00:00 2001 From: woutdenolf Date: Wed, 7 Feb 2024 13:59:04 +0100 Subject: [PATCH 06/28] 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 2efb50309d..35285e9a75 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 71dd3f896adc6d2e886bac77227c80d5acc0b6b9 Mon Sep 17 00:00:00 2001 From: woutdenolf Date: Wed, 7 Feb 2024 14:14:56 +0100 Subject: [PATCH 07/28] 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 35285e9a75..b1096b6959 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 fed1d3d7ca3b718c366784ffd546579d30531e18 Mon Sep 17 00:00:00 2001 From: woutdenolf Date: Wed, 7 Feb 2024 14:25:10 +0100 Subject: [PATCH 08/28] 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 b1096b6959..1056bc1fac 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 0a5a477d403059fc6dc7f2978b662a1b69ed8d8a Mon Sep 17 00:00:00 2001 From: woutdenolf Date: Fri, 1 Mar 2024 11:43:15 +0100 Subject: [PATCH 09/28] 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 1056bc1fac..7cf3af3f1f 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 3942a3b4d8687be6fe2b3a3320aee6d8a89296b9 Mon Sep 17 00:00:00 2001 From: woutdenolf Date: Fri, 1 Mar 2024 11:42:01 +0100 Subject: [PATCH 10/28] 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 7cf3af3f1f..f16b958480 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 74822e0b6644e66294693ce66a0f67425060aca9 Mon Sep 17 00:00:00 2001 From: woutdenolf Date: Wed, 8 May 2024 13:41:32 +0200 Subject: [PATCH 11/28] 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 f16b958480..01eb6d186d 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 e7303957b89527b11ae8303d045431a69222e5da Mon Sep 17 00:00:00 2001 From: woutdenolf Date: Wed, 8 May 2024 13:41:48 +0200 Subject: [PATCH 12/28] 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 01eb6d186d..d4f5e39064 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 87f4be3c3ff8011b0eb19cde5a2aac784f1493d9 Mon Sep 17 00:00:00 2001 From: woutdenolf Date: Wed, 8 May 2024 13:42:33 +0200 Subject: [PATCH 13/28] 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 d4f5e39064..f536238528 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 205b4121d25c017ca0652902264ae66e26456b28 Mon Sep 17 00:00:00 2001 From: woutdenolf Date: Wed, 8 May 2024 13:43:51 +0200 Subject: [PATCH 14/28] 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 f536238528..fd01169038 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 e6f45521d850c9f3ecc9b23cefd28fb1ed8d3aca Mon Sep 17 00:00:00 2001 From: woutdenolf Date: Wed, 8 May 2024 15:10:16 +0200 Subject: [PATCH 15/28] 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 fd01169038..7f50bcbe93 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 f77a42b844d5f77caa542a65a427597646cc1c40 Mon Sep 17 00:00:00 2001 From: woutdenolf Date: Wed, 8 May 2024 15:46:47 +0200 Subject: [PATCH 16/28] 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 7f50bcbe93..be795a6b8d 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 bf85e61ff16c9e569ad883f30254ce4df6aa6eb7 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/28] 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 be795a6b8d..dfdb25fe33 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 48c2ac9432b88c3133e015d404e2edb49ea1ee95 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/28] 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 dfdb25fe33..5434bbadc4 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 9ab83c790233bd43d5bba89ad47842f2ceeb4795 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/28] 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 5434bbadc4..432241e817 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 d7976cf71dc595fdb3de88ddb0a27b3e25164906 Mon Sep 17 00:00:00 2001 From: Wout De Nolf Date: Wed, 15 May 2024 14:01:19 +0200 Subject: [PATCH 20/28] 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 432241e817..0a4c3fd784 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 8381e902e9847ed964434c4d877a4415812e2d71 Mon Sep 17 00:00:00 2001 From: woutdenolf Date: Wed, 15 May 2024 14:11:32 +0200 Subject: [PATCH 21/28] 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 0a4c3fd784..317e117146 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 83e2c035f89bba7769669d2b13bffbd3964388ce Mon Sep 17 00:00:00 2001 From: Wout De Nolf Date: Wed, 15 May 2024 17:56:32 +0200 Subject: [PATCH 22/28] 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 317e117146..dcd4bdcdb0 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 64a1a0bcb165618da53d7a732953426a1f11a682 Mon Sep 17 00:00:00 2001 From: woutdenolf Date: Wed, 15 May 2024 17:58:13 +0200 Subject: [PATCH 23/28] 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 dcd4bdcdb0..e6d1857e83 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 b90156650723148142171823da460b60a4b90c94 Mon Sep 17 00:00:00 2001 From: woutdenolf Date: Wed, 15 May 2024 18:03:30 +0200 Subject: [PATCH 24/28] 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 e6d1857e83..ea4ee914ee 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. From f4f35c4d929e932f014dc2f604dbfb1aa130a523 Mon Sep 17 00:00:00 2001 From: woutdenolf Date: Sat, 28 Sep 2024 16:41:52 +0200 Subject: [PATCH 25/28] cannot be distinguished by a reader when the names are optional --- contributed_definitions/NXstress.nxdl.xml | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/contributed_definitions/NXstress.nxdl.xml b/contributed_definitions/NXstress.nxdl.xml index ea4ee914ee..1113fc2283 100644 --- a/contributed_definitions/NXstress.nxdl.xml +++ b/contributed_definitions/NXstress.nxdl.xml @@ -734,43 +734,43 @@ - ``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. From ad5428d12073796d08c9f8649676df18ef7a559a Mon Sep 17 00:00:00 2001 From: woutdenolf Date: Sat, 28 Sep 2024 16:42:07 +0200 Subject: [PATCH 26/28] fix typo --- 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 1113fc2283..4d2ecbaf48 100644 --- a/contributed_definitions/NXstress.nxdl.xml +++ b/contributed_definitions/NXstress.nxdl.xml @@ -798,7 +798,7 @@ 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. + 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. From ae49cbba855d8a574b3595b3f5d5db2e8a037487 Mon Sep 17 00:00:00 2001 From: woutdenolf Date: Wed, 23 Oct 2024 09:45:34 +0200 Subject: [PATCH 27/28] move NXstress to applications --- {contributed_definitions => applications}/NXstress.nxdl.xml | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename {contributed_definitions => applications}/NXstress.nxdl.xml (100%) diff --git a/contributed_definitions/NXstress.nxdl.xml b/applications/NXstress.nxdl.xml similarity index 100% rename from contributed_definitions/NXstress.nxdl.xml rename to applications/NXstress.nxdl.xml From 1ca4c54495451afcd93a3caa0089f180491ccfbb Mon Sep 17 00:00:00 2001 From: woutdenolf Date: Wed, 23 Oct 2024 09:49:46 +0200 Subject: [PATCH 28/28] move NXstress to applications --- .../stress/Beam_profile_sketch3.jpg | Bin .../stress/GV2.jpg | Bin 2 files changed, 0 insertions(+), 0 deletions(-) rename {contributed_definitions => applications}/stress/Beam_profile_sketch3.jpg (100%) rename {contributed_definitions => applications}/stress/GV2.jpg (100%) diff --git a/contributed_definitions/stress/Beam_profile_sketch3.jpg b/applications/stress/Beam_profile_sketch3.jpg similarity index 100% rename from contributed_definitions/stress/Beam_profile_sketch3.jpg rename to applications/stress/Beam_profile_sketch3.jpg diff --git a/contributed_definitions/stress/GV2.jpg b/applications/stress/GV2.jpg similarity index 100% rename from contributed_definitions/stress/GV2.jpg rename to applications/stress/GV2.jpg