---
name: mat-dft-ferroelectric
description: Calculate the spontaneous ferroelectric polarization across a non-polar to polar structure transition using the Berry Phase method.
metadata:
  category: [materials]
  venv: [cpu]
---

# mat-dft-ferroelectric

## Goal
To calculate the spontaneous polarization ($P_s$) of a ferroelectric material. Because bulk polarization is a multi-valued quantum quantity (only differences in polarization are well-defined), this skill evaluates the continuous evolution of the Berry phase starting from a high-symmetry (centrosymmetric, non-polar) reference state and progressing via linear interpolation to the low-symmetry (polar) state.

## Background
Material spontaneous polarization arises when positive and negative charge centers separate, breaking inversion symmetry. By linearly mixing the atomic positions between a cubic (non-polar) and tetragonal (polar) phase, we calculate the Berry phase for electrons across the geometric path. `FerroelectricMaker` automates the generation of these intermediate supercells, runs VASP with `LCALCPOL=True`, and stitches the branches together to avoid quantum jump discontinuities.

## Instructions

### 1. Construct the Ferroelectric Workflow
Use the provided script to generate the sequence of calculation jobs evaluating the polarization across interpolated intermediate structures.

```bash
${CLAUDE_SKILL_DIR}/../../venv/run cpu python ${CLAUDE_SKILL_DIR}/scripts/generate_inputs.py --output ferroelectric_flow.json
```

### 2. Job Execution
The default script simply serializes the theoretical Directed Acyclic Graph (DAG) for structural reference. Run it locally via `jobflow.run_locally(flow)` if VASP is available, or dispatch it to Fireworks.

### 3. Parse Polarization
The final job merges the electronic polarization and ionic dipoles for each intermediate image, tracing the quantum branches. Extract the total `polarization` (in $\mu\text{C}/\text{cm}^2$) from the terminal task document.

## Examples

Run the example demonstrating the DAG generation for Barium Titanate (BaTiO$_3$).

```bash
cd ${CLAUDE_SKILL_DIR}/examples/BaTiO3
${CLAUDE_SKILL_DIR}/../../venv/run cpu python ../../scripts/generate_inputs.py --output batio3_flow.json
```

## Constraints
- **Environments**: Scripts require the `cpu` environment.
- **Reference State Requirement**: The user *must* provide both a chemically identical polar and non-polar (reference) structure.
- **Continuous Mapping**: The atoms in the polar structure must map one-to-one to the non-polar structure without crossing periodic boundaries incorrectly. Large arbitrary translations will break the Berry phase continuity assumption.

## References
- King-Smith, R. D., & Vanderbilt, D. "Theory of polarization of crystalline solids", *Phys. Rev. B*, 47, 1651 (1993). [DOI](https://doi.org/10.1103/PhysRevB.47.1651)

---

**Author:** Bowen Deng
**Contact:** [GitHub](https://github.com/learningmatter-mit)
