#orientation #compression #cpo #pole-figures #lpo #crytal-preferred

bin+lib cpo_analyzer

Tools to analyzer Crystal Preferred Orientation data, including creating polefigures

1 unstable release

0.1.0 Feb 10, 2021

#468 in Science

GPL-2.0-or-later

3.5MB
3K SLoC

Continous integration Build Status codecov

CPO analyzer

pole figure

This crate contains tools to analyzer Crystal/Lattice Preffered Orientation (CPO/LPO) data. It is currently designed to easily create pole figure from the CPO data produced by ASPECT (https://github.com/geodynamics/aspect/issues/3885), but it is not limited to that. However, other type of inputs and plots of analysis are in the scope of this crate.

Note that this crate is a very early (beta) release, and it functions for the specific purpose it was build for, but a lot of functionality that is currently hard-coded can be generalized and expanded if there is interest. This also means that the current interface and input file structure are subject to change.

To run the analyzer, a configuration file is needed. The configuration files are written in the .toml language. Here is a example file to create pole figures from ASPECT data:

base_dir = "/path/to/base/dir/"
experiment_dirs = ["experiment_1","experiment2"]
compressed = true

[pole_figures]
  elastisity_header = false
  times = [1.0,5.0,10]
  particle_ids = [1,10]
  axes = ["AAxis","BAxis","CAxis"]
  minerals = ["Olivine","Enstatite"]

The configuration file with some comments (lines starting with a #) explaining the options:

# the location of the experiment dirs.
base_dir = "/path/to/base/dir/"

# the directories containing the experiments. Currently only ASPECT output directories
# are supported.
experiment_dirs = ["experiment_1","experiment2"]
 
# Whether the Data was compressed with ZLIB.
compressed = true

[pole_figures]
  # Wheter to include elasticity information in the header of the polefigure plots.
  elastisity_header = false

  # For each time in this vector a new polefigure plot is made.
  times = [1.0,5.0,10]

  # For each id in this vector a new polefigure plot is made.
  particle_ids = [1,10]

  # A vector containing the pole figure axis to be plotted. These will be added as a
  # horizontal axis to the plot. Available options are `AAxis`, `BAxis` and `CAxis`.
  axes = ["AAxis","BAxis","CAxis"]

  # A vector containing the minerals to be plotted. These will be added as a vertical
  # axis  to the plot. Available options are `Olivine` and `Enstatite`.
  minerals = ["Olivine","Enstatite"]

Note that there are more options availble then shown in this example, which are currently only visible in the code (src/configuration/ dir) and the code documentation. There is also a more elaborate example in the example folder.

Installation

User installation

The CPO Analyzer is written in rust and starting from version 0.1.0 published on crates.io. For this option, first cargo needs to be installed. Then users should be able to use cargo install cpo_analyzer to install the program. Note that this installation method is untested until the first publication is made on crates.io.

Developer installation

There are no special instructions for installation by cloning the git repository and running cargo build or cargo run config_file.toml. Just note that this build the debug version, which is significantly slower than the release version. To build/run the release version add the --release flag.

Dependencies

Ubuntu Linux

sudo apt install pkg-config libfreetype6-dev libfontconfig1-dev

Dependencies

~16MB
~274K SLoC