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.