This is the documentation for asr.c2db.piezoelectrictensor-recipe. This recipe is comprised of a single instruction, namely:

Run this recipe through the CLI interface

$ asr run asr.c2db.piezoelectrictensor

or as a python module

$ python -m asr.c2db.piezoelectrictensor

Detailed description

Piezoelectric tensor.

Module containing functionality for calculating the piezoelectric tensor. The central recipe of this module is asr.c2db.piezoelectrictensor.main().



asr.c2db.piezoelectrictensor.main(atoms, strain_percent=1, calculator={'charge': 0, 'convergence': {'density': 1e-07, 'eigenstates': 1e-11}, 'kpts': {'density': 12.0}, 'mode': {'ecut': 800, 'name': 'pw'}, 'name': 'gpaw', 'occupations': {'name': 'fermi-dirac', 'width': 0.05}, 'symmetry': 'off', 'txt': 'formalpol.txt', 'xc': 'PBE'}, relaxcalculator={'charge': 0, 'convergence': {'forces': 0.0001}, 'kpts': {'density': 6.0, 'gamma': True}, 'mode': {'ecut': 800, 'name': 'pw'}, 'name': 'gpaw', 'occupations': {'name': 'fermi-dirac', 'width': 0.05}, 'symmetry': {'symmorphic': False}, 'txt': 'relax.txt', 'xc': 'PBE'}, fmax=0.01, enforce_symmetry=True)[source]

Calculate piezoelectric tensor.

This recipe calculates the clamped and full piezoelectric tensor. You generally will only need the full piezoelectric tensor. The clamped piezoelectric tensor is useful for analyzing results. The piezoelectric tensor is calculated using a finite difference scheme by calculating the derivative of the polarization density at finite strains.

  • strain_percent (float) – Amount of strain applied to the material.

  • calculator (dict) – Calculator parameters.

  • atoms (ase.atoms.Atoms) –

  • relaxcalculator (dict) –

  • fmax (float) –

  • enforce_symmetry (bool) –

Return type


class asr.c2db.piezoelectrictensor.Result(eps_vvv, eps_clamped_vvv)[source]
property eps_clamped_vvv: List[List[List[float]]]

Piezoelectric tensor.

property eps_vvv: List[List[List[float]]]

Piezoelectric tensor.