CrystallographyBase
Documentation for CrystallographyBase.
See the Index for the complete list of documented functions and types.
The code, which is hosted on GitHub, is tested using various continuous integration services for its validity.
This repository is created and maintained by @singularitti, and contributions are highly welcome.
Package features
- Define crystal lattices and cells
- Compute reciprocal lattices
- Generate supercells and k-point grids
- Enable math utilities for crystal properties
Installation
The package can be installed with the Julia package manager. From the Julia REPL, type ]
to enter the Pkg mode and run:
pkg> add CrystallographyBase
Or, equivalently, via Pkg.jl
:
julia> import Pkg; Pkg.add("CrystallographyBase")
Resolving package versions... Installed CrystallographyBase ─ v0.14.3 Updating `~/work/CrystallographyBase.jl/CrystallographyBase.jl/docs/Project.toml` [93b1d1cd] ~ CrystallographyBase v0.14.3 `~/.julia/dev/CrystallographyBase` ⇒ v0.14.3 Updating `~/work/CrystallographyBase.jl/CrystallographyBase.jl/docs/Manifest.toml` [93b1d1cd] ~ CrystallographyBase v0.14.3 `~/.julia/dev/CrystallographyBase` ⇒ v0.14.3 Precompiling project... ✓ CrystallographyBase 1 dependency successfully precompiled in 2 seconds. 27 already precompiled. 1 dependency precompiled but a different version is currently loaded. Restart julia to access the new version
Documentation
- STABLE — documentation of the most recently tagged version.
- DEV — documentation of the in-development version.
Project status
The package is developed for and tested against Julia v1.6
and above on Linux, macOS, and Windows.
Questions and contributions
You can post usage questions on our discussion page.
We welcome contributions, feature requests, and suggestions. If you encounter any problems, please open an issue. The Contributing page has a few guidelines that should be followed when opening pull requests and contributing code.
Manual outline
- Installation Guide
- Definitions and conventions
- Examples
- Troubleshooting
- Contributing
- Style Guide
- Design Principles
- Consistency vs adherence
- Community contribution guidelines
- Open source contributions are allowed to start small and grow over time
- Generic code is preferred unless code is known to be specific
- Internal types should match the types used by users when possible
- Trait definition and adherence to generic interface is preferred when possible
- Macros should be limited and only be used for syntactic sugar
- Errors should be caught as early as possible, and error messages should be made contextually clear for newcomers
- Subpackaging and interface packages is preferred over conditional modules via Requires.jl
- Functions should either attempt to be non-allocating and reuse caches, or treat inputs as immutable
- Out-of-place and immutability is preferred when sufficient performant
- Tests should attempt to cover a wide gamut of input types
- When in doubt, a submodule should become a subpackage or separate package
- Globals should be avoided whenever possible
- Type-stable and type-grounded code is preferred wherever possible
- Closures should be avoided whenever possible
- Numerical functionality should use the appropriate generic numerical interfaces
- Functions should capture one underlying principle
- Internal choices should be exposed as options whenever possible
- Prefer code reuse over rewrites whenever possible
- Prefer to not shadow functions
Library outline
Index
CrystallographyBase.MetricTensor
CrystallographyBase.MonkhorstPackGrid
CrystallographyBase.PrimitiveFromStandardized
CrystallographyBase.StandardizedFromPrimitive
CrystallographyCore.Cell
CrystallographyCore.Lattice
CrystallographyCore.ReciprocalLattice
CrystallographyBase.atomicmass
CrystallographyBase.cellvolume
CrystallographyBase.crystaldensity
CrystallographyBase.distance
CrystallographyBase.islefthanded
CrystallographyBase.isrighthanded
CrystallographyBase.latticeconstants
CrystallographyBase.latticesystem
CrystallographyBase.lengthof
CrystallographyBase.periodicity
CrystallographyBase.super
CrystallographyCore.basisvectors
CrystallographyCore.eachatom
CrystallographyCore.reciprocal