SoundForCp 0.0.2
A software package for calculating specific heat capacity based on sound velocity method.
Requires Python: >=3.6

# SoundForCp

`SoundForCp` is a  software package for calculating specific heat capacity based on sound velocity method.  A detailed description is available in xxxx.

## Requirement

`SoundForCp` requires Python 3 and several third-party libraries that are used by SoundForCp.

- Numpy \- The fundamental package for scientific computing with Python. (>=1.20)
- Scipy \- Fundamental algorithms for scientific computing in Python for scientific computing with Python. (>=1.7)
- PyYaml \- A full-featured [YAML](http://yaml.org/) framework for the Python programming language.(>=6.0)
- Python (>=3.6)

As an example, on Ubuntu Linux some of the required software can be installed using

```bash
sudo apt-get install python3 python3-numpy python3-scipy python3-yaml
```

Before you go any further, make sure you have Python and that the expected version is available from your command line. You can check this by running:

Unix/MacOS:

```
python3 --version
```

Windows:

```
py --version
```

You should get some output like `Python 3.6.3`. If you do not have Python, please install the latest 3.x version from [python.org](https://www.python.org/) or refer to the [Installing Python](https://docs.python-guide.org/starting/installation/#installation) section of the Hitchhiker’s Guide to Python.



We recommend to use [PyPI](https://pypi.org/) which allows to conveniently install SoundForCp and all its software dependencies with a single command. you’ll need to make sure you have [pip](https://packaging.python.org/en/latest/key_projects/#pip) available. You can check this by running:

Unix/MacOS:

```
python3 -m pip --version
```

Windows:

```
py -m pip --version
```

If you installed Python from source, with an installer from [python.org](https://www.python.org/), or via [Homebrew](https://brew.sh/) you should already have pip. If you’re on Linux and installed using your OS package manager, you may have to install pip separately, see [Installing pip/setuptools/wheel with Linux Package Managers](https://packaging.python.org/en/latest/guides/installing-using-linux-tools/).

If `pip` isn’t already installed, then first try to bootstrap it from the standard library:

Unix/MacOS:

```
python3 -m ensurepip --default-pip
```

Windows:

```
python3 -m ensurepip --default-pip
```

To install the remaining packages see the installation instructions at their respective web pages.

## Installation

The preferred method is to use `pip` command to install from the PyPi official/mirrors site.  

```
pip install SoundForCp
```

SounfForCp can be then started from a terminal (e.g. “Anaconda Prompt” on Windows) by executing the “SoundForCp” program.

If you don’t use `pip` or prefer to install from sources, make sure the required software is all in place and run:

```
python setup.py install
```

By default the files are installed to standard system directories, which may require the use of `sudo` for write privileges. If administrator (root) access is not available, see the output from `python setup.py install --help` for options to install as a regular user to user-writable locations. Note that installation to non-standard directories may require adjustments to the PATH and PYTHONPATH environment variables.

## Using

SoundForCp can be then started from a terminal (“Anaconda Prompt” on Windows) by executing the “SoundForCp.exe” program.  An alternative method on Windows is to start SoundForCp through double-click the executable program “SoundForCP.exe”.

Before running SoundForCp, a input file, named as `input.yaml` should have been prepared in a certain folder `xxxx`. `Input.yaml` follows the rule of [YAML language](https://yaml.org/spec/1.2.2/#chapter-2-language-overview). `input.yaml` contains `SoundForCp` settings which are summarized at setting tags.

```bash
cd xxxx
SoundForCp.exe
```

after running successfully, there is an output file named as “out.csv” written in the same folder.

## Setting tags

### Basic tags

#### `Sample_Name`

`Sample_Name` represents the sample name.

#### `Longitudinal_Sound_Velocity`

`Longitudinal_Sound_Velocity` represents the longitudinal Sound velocity of the specific sample. The unit is m/s.

#### `Transverse_Sound_Velocity`

`Transverse_Sound_Velocity` represents the transverse Sound velocity of the specific sample. The unit is m/s.

#### `Sample_Density`

`Sample_Density` represents the density of the specific sample, which can be measured by Archimedes method. The unit is g/cm3.

#### `Number_Atoms`

`Number_Atoms` represents the atom numbers per unit cell for the specific sample. 

#### `Volume_Cell`

`Volume_Cell` represents the lattice volume per unit cell for the specific sample. The unit is A^3.

#### `Temperature`

`Temperature` represents the calculated temperature range for the specific sample. there are 3 sub-tags, i.e.  `Start_Temperature`.  `End_Temperature`, `Interval_Temperature`. The unit is K.

#### `Relative_Atomic_Mass`

`Relative_Atomic_Mass` represents  relative atomic mass for molecular formula.  The unit is g/mol.

#### `Atomic_Mole_Quantity`

`Relative_Atomic_Mass` represents relative mole quantity for molecular formula.



### Required tags

#### `Elastic_Constants_Condition`

`Elastic_Constants_Condition` represent  elastic constants C12 equal C44 or not.  `Elastic_Constants_Condition`=2 represents  non-preferred orientation polycrystals. `Elastic_Constants_Condition`=1 represents  C12=C44. For cubic phase, C12 is equal to  C44  in preferred-oritention polycrystals or single crystal. For non cubic phase, C12 is unequal to  C44  in preferred-oritention polycrystals or single crystal. 



## Optional tags

#### `Adiabatic_Bulk_Modulus`

`Adiabatic_Bulk_Modulus` represents the adiabatic bulk modulus for the specific sample. It can also be calculated by sound velocity method. The unit is GPa.

#### `Linear_Expansion_Coefficient`

`Linear_Expansion_Coefficient` represents the linear expansion coefficient for the specific sample. It can also be calculated by sound velocity method. The unit is 1/K.

#### `Debye_Temperature`

`Debye_Temperature` represents the Debye temperature for the specific sample. It can also be calculated by sound velocity method. The unit is K. 

#### `Poisson_Ratio`

`Poisson_Ratio`  represents the Poisson ratio for the specific sample. It can also be calculated by sound velocity method. The unit is dimensionless. 

#### `Gruneisen_Constant`

`Gruneisen_Constant`  represents the Gruneisen constant for the specific sample. It can also be calculated by sound velocity method. The unit is dimensionless. 



## Development

PDFgui is an open-source software available on GitHub https://github.com/JunPei-China/SoundForCp. Feel free to fork the project and contribute. 

## Contacts

For more information on SoundForCp  please visit the project web-page or email Dr. Jun Pei at Jun_Pei@163.com.