Lattice
Overview
The Lattice class provides slip system information, given the lattice vectors and symmetry group describing the crystal system. The class is intelligent enough to automatically generate the complete set of slip group direction and normal vectors given the direction and planes in Miller indices.
NEML divides slip systems into crystallographically identical groups,
i.e. all systems generated by the combination of a particular slip direction
and normal. The documentation uses the index
to indicate the
slip group and the index
to indicate the particular slip system.
Subclasses
Lattice subclasses specialize the general form to particular types of crystal systems, eliminating the need for the user to explicitly provide the lattice vectors and symmetry group.
Parameters
Parameter |
Object type |
Description |
Default |
|---|---|---|---|
|
First lattice vector |
No |
|
|
Second lattice vector |
No |
|
|
Third lattice vector |
No |
|
|
Crystal symmetry group |
No |
|
|
|
Initial list of slip systems |
|
Class description
-
class Lattice
Subclassed by neml::CubicLattice, neml::GeneralLattice, neml::HCPLattice
Public Functions
Initialize with the three lattice vectors, the symmetry group and (optionally) a initial list of slip systems
-
inline const std::vector<std::vector<Vector>> &burgers_vectors()
Return the list of burgers vectors.
-
inline const std::vector<std::vector<Vector>> &slip_directions()
Return the list of normalized slip directions.
-
inline const std::vector<std::vector<Vector>> &slip_planes()
Return the list of normalized slip normals.
-
inline const std::vector<double> characteristic_shears()
Return the list of characteristic shears.
-
virtual Vector miller2cart_direction(std::vector<int> m)
Convert Miller directions to cartesian vectors.
-
virtual Vector miller2cart_plane(std::vector<int> m)
Convert Miller planes to cartesian normal vectors.
-
std::vector<Vector> equivalent_vectors(Vector v)
Find all sets of equivalent vectors (+/- different)
-
std::vector<Vector> equivalent_vectors_bidirectional(Vector v)
Find all all sets of equivalent vectors (+/- the same)
-
virtual void add_slip_system(std::vector<int> d, std::vector<int> p)
Add a slip system given the Miller direction and plane.
-
virtual void add_twin_system(std::vector<int> eta1, std::vector<int> K1, std::vector<int> eta2, std::vector<int> K2)
Add a twin system given the twin direction and plane.
-
size_t ntotal() const
Number of total slip systems.
-
size_t ngroup() const
Number of groups of slip systems.
-
size_t nslip(size_t g) const
Number of slip systems in group g.
-
size_t flat(size_t g, size_t i) const
Flat index of slip group g, system i.
-
double characteristic_shear(size_t g, size_t i) const
Characteristic shear (0 for slip systems)
-
Orientation reorientation(size_t g, size_t i) const
Twin reorientation operator (identity for slip systems)
-
double burgers(size_t g, size_t i) const
Norm of the Burgers vector for a particular system.
-
const Symmetric &M(size_t g, size_t i, const Orientation &Q)
Return the sym(d x n) tensor for group g, system i, rotated with Q.
-
const Skew &N(size_t g, size_t i, const Orientation &Q)
Return the skew(d x n) tensor for group g, system i, rotated with Q.
-
double shear(size_t g, size_t i, const Orientation &Q, const Symmetric &stress)
Calculate the resolved shear stress on group g, system i, rotated with Q given the stress
-
Symmetric d_shear(size_t g, size_t i, const Orientation &Q, const Symmetric &stress)
Calculate the derivative of the resolved shear stress on group g, system i, rotated with Q, given the stress
-
const std::shared_ptr<SymmetryGroup> symmetry()
Access the symmetry operations.
-
const std::vector<Vector> unique_planes() const
Return a list of Cartesian vectors giving the unique slip planes.
-
size_t nplanes() const
The number of unique slip planes.
-
size_t plane_index(size_t g, size_t i) const
Given a slip system return the index into the unique slip planes.
-
std::vector<std::pair<size_t, size_t>> plane_systems(size_t i) const
Given the unique slip plane index return the vector of (g,i) tuples.