Skip to main content

Cij: Semiemperical thermal elasticity

Calculate high temperature thermal elasticity in Python.

Installation

The package can be installed with pip package manager.

Install from PyPI (Python package index)

$ python3 -m pip install cij

Manual install

At the command prompt, one should navigate to the directory that contains the setup.py script and execute pip install .. Then, the package should be ready for use.

Usage

Command-line programs

After installation, the Cij program can be started by typing cij at your command prompt:

Usage: cij [OPTIONS] COMMAND [ARGS]...

Options:
  --version  Show the version and exit.
  --help     Show this message and exit.

Commands:
  extract           Create data table at specific P or T.
  extract-geotherm  Create data table at geotherm PT.
  fill              Fill non-zero Cij terms based on symmetry.
  modes             Plot interpolated mode frequency vs volume.
  plot              Plot SAM-Cij calculation results.
  run               Perform SAM-Cij calculation.
  run-static        Calculate elastic moduli and acoustic velocities.

SAM-Cij calculations with cij run

Calculation settings file and example

The settings.yaml file is home to all calculation settings. One needs to specify calculation parameters, such as thermal EoS fitting parameters, phonon interpolation settings, input data location, and output variables to store in YAML format. The following is an example settings file.

qha:
  input: input01
  settings:
    # similar to settings in qha
    DT: 100
    P_MIN: 0
    DELTA_P: 0.5
    NTV: 81
    order: 3
    static_only: False
    T_MIN: 0
    NT: 31
    DT_SAMPLE: 100
    DELTA_P_SAMPLE: 5
    volume_ratio: 1.2
elast:
  input: elast.dat
  settings:
    mode_gamma:
      interpolator: spline
      order: 3
    symmetry:
      system: cubic
output:
  pressure_base:
    - cij
    - vs
    - vp
    - bm_V
    - bm_R
    - bm_VRH
    - G_V
    - G_R
    - G_VRH
    - v
  volume_base:
    - p
    # ...

Input data

Input data include a QHA input data file (input01) and a static elasticity input data (elast.dat). See the paper or detailed documentation for description and the examples folder for detailed example.

Command line arguments

Usage: cij run [OPTIONS] SETTINGS_FILENAME

  Perform SAM-Cij calculation.

Options:
  --version                       Show the version and exit.
  --debug [CRITICAL|ERROR|WARNING|INFO|DEBUG|NOTSET]
                                  Logging level
  --help                          Show this message and exit.

Structure of the cij package

The cij package is written in Python 3. The Python source code is located in the cij sub-folder. Input for three examples in the examples sub-folder, documentation in the docs sub-folder, and the installation script setup.py.

The Python code is organized into several modules:

  • cij.core: Core functionalities
    • calculator: The calculator that controls the workflow.
    • mode_gamma: Interpolate phonon frequencies and calculate mode Grüneisen parameters.
    • phonon_contribution: Calculate phonon cijph. full_modulus – Interpolate cijst vs. V, and calculate cijS and cijT. tasks – Handles the ordering of cijph calculation.
  • cij.util: Methods used in the main program
    • voigt: Convert between Voigt (cij) and regular (cijkl) notations of elastic coefficients.
    • units: Handle unit conversion.
  • cij.io: Input output functions and classes.
  • cij.plot: Plotting functionalities.
  • cij.cli: Command-line programs
    • cij run (main.py) – Perform a SAM-Cij calculation.
    • cij run-static (static.py) – Calculate static elastic properties.
    • cij extract (extract.py) – Extract calculation results for a specific T or P to a table.
    • cij extract-geotherm (geotherm.py) – Extract calculation results along geotherm PT (given as input) to a table.
    • cij plot (plot.py) – Convert output data table to PNG plot.
    • cij modes (modes.py) – Plot phonon frequency interpolation results.
    • cij fill (fill.py) – Fill all the non-zero terms for elastic coefficients given the constraint of a crystal system.
  • cij.data: Data distributed with the program, e.g., the relationship between cij’s for different crystal systems, the naming scheme for output files, etc.
  • cij.misc: Miscellaneous functionalities that are not used in the main program, e.g., methods that facilitate the preparation of input files.

Author

The code in this repo is initially authored by Chenxing Luo.

Documentation

See GitHub pages.

Build status

GitHub Actions codecov pypi pypi

How to cite

If you use this software in any publication, please cite:

Luo, C., Deng, X., Wang, W., Shukla, G., Wu, Z., & Wentzcovitch, R. M. (2021). cij: A Python code for quasiharmonic thermoelasticity. Computer Physics Communications, 108067. https://doi.org/10.1016/j.cpc.2021.108067

The paper is also available from arXiv: https://arxiv.org/abs/2101.12596

Licence

Released under GNU GPLv3 license.

Metadata

Release files for cij 1.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for cij 1.1.0
File Size Uploaded Provenance Actions
cij-1.1.0.tar.gz 61.0 kB Without provenance Details for cij-1.1.0.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for cij 1.1.0
File Interpreter ABI Platform Actions
cij-1.1.0-py3-none-any.whl Python 3 none any Details for cij-1.1.0-py3-none-any.whl

Total release size: 132.1 kB

Release files / cij-1.1.0.tar.gz

Download URL cij-1.1.0.tar.gz
Size 61.0 kB
Tags Source
SHA-256 checksum
How to use checksums
7b6e6ba214694b138966997fc912de70d3346a272e028ec0a02d11a9353b816d
BLAKE2b-256 checksum
How to use checksums
38a078686ea2194631f3468272910108eb88246421ea16957eb9d638c6898959
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.14.0

Release files / cij-1.1.0-py3-none-any.whl

Download URL cij-1.1.0-py3-none-any.whl
Size 71.1 kB
Tags Python 3
SHA-256 checksum
How to use checksums
1602be1ad9eafb1782664b8040f59eb0b19bd33c9a998f38c68199e473bdcb64
BLAKE2b-256 checksum
How to use checksums
475d8e4c31c71cefb5ac1f61fc18d6e2b3fde41af23f7162ca9b21d858c964a3
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.14.0

Security for cij 1.1.0

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page