Skip to content

🚀 aiida-thermo_pw: immigrate aiida-thermo_pw to aiida-mechanical#1

Merged
ymzhang0 merged 17 commits into
aiidaplugins:mainfrom
ymzhang0:main
May 26, 2026
Merged

🚀 aiida-thermo_pw: immigrate aiida-thermo_pw to aiida-mechanical#1
ymzhang0 merged 17 commits into
aiidaplugins:mainfrom
ymzhang0:main

Conversation

@ymzhang0

@ymzhang0 ymzhang0 commented May 26, 2026

Copy link
Copy Markdown
Collaborator
  • Ported MIT & Non-Commercial licenses, expanded .gitignore, and set up initial repository metadata.
  • Staged pyproject.toml using the modern hatchling build system, declaring metadata, authors, package dependencies, AiiDA entry points, and developer configurations (pytest, yapf, pylint, etc.).
  • Migrated sample crystal structures (Si.xsf, Pb.xsf), workflow scripts (example_01.py), and plotting utilities.
  • Updated docstrings in calculations to properly refer to the Quantum ESPRESSO pw.x code.
  • Enhanced triclinic and monoclinic Bravais lattice conversions with integer transformation matrix validation, determinant checks, and added the empty get_parameters_from_pymatgen_structure helper method.
  • Consolidated imports in tools/init.py to a single line.
  • Standardized ThermoPwBaseAnalyser as a standalone class, re-enabling active scheduler output parsing, and added the delete_nodes_and_remote_folder utility.
  • Added custom explicit kpoints validation in get_builder_from_protocol and simplified direct structure formatting calls in setup().
  • Renamed the source root from src/aiida_thermo_pw to src/aiida_mechanical (preserving full Git history).
  • Updated all module imports to aiida_mechanical across calculations, parsers, workflows, examples, and documentation.
  • AiiDA Namespace Unified: Updated entry points in pyproject.toml to register under the new general mechanical namespace:
    • Calculation & Parser: mechanical.thermo_pw
    • Workflow: mechanical.thermo_pw.base (you can cleanly add Stacking Fault Energy under mechanical.stacking_fault next to it).
  • Synced package names, titles, and descriptions inside pyproject.toml, .copier-answers.yml, README.md, and the developer guide docs.
  • Added essential scientific package dependencies for dislocation mathematics and plotting: ase, pymatgen, sympy, matplotlib, deprecated>=1.2.0, pyyaml, and rich.
  • Registered AiiDA entry points under the new mechanical.dislocation.* namespaces for custom data structures and workflows.
  • Ported custom SFE data models: cleavaged_structure.py, faulted_structure.py, gliding_systems.py, and system.py.
  • Copied static crystal sample structure files into src/aiida_mechanical/data/structures/.
  • Updated all internal package imports to reference aiida_mechanical instead of aiida_dislocation.
  • Ported core geometric modeling tools: builder.py, calculator.py, cut.py, gliding_systems.py, structure.py, structure_builder.py, and structure_utils.py.
  • Ported structure-generating @calcfunctions (generate_cleavaged_structures, generate_faulted_structures) that construct planar systems.
  • Added the core mechanics workflows: gsfe.py (generalized SFE), gsfe_relax.py (relaxed GSFE), esfe.py (empirical SFE), isfe.py (inherent SFE), usfe.py (unstable SFE), twinning.py (twinning energy), as well as base class sfebase.py, layer_relax.py, and surface.py.
  • Copied YAML default input configurations under workflows/dislocation/protocols/ to fully support builder setup via the AiiDA protocol API (get_builder_from_protocol).
  • Resolved pre-existing linter issues in the ported codebase (e.g., corrected an undefined ax reference in cut.py, removed a duplicate classmethod definition in surface.py, and resolved out-of-scope type annotations in data classes).
  • Formatted and checked the entire integrated package using Ruff to pass CI requirements.

@ymzhang0 ymzhang0 merged commit 32384a5 into aiidaplugins:main May 26, 2026
1 of 3 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant