class pd3::System
Class that contains information about the given dislocation system, and provides topological operators to manipulate the system.
Summary
| Members | Descriptions |
|---|---|
autosize() const |
The number of nodes currently in the system. |
autosegment_size() const |
The number of segments currently in the system. |
autonode(Eigen::Matrix< double, 1, 3 >, NodeType) |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. |
template<typename P, typename, typename...> inline autoprecipitate(Args &&...) |
Like node, precipitates are only constructable through a system. |
voidfor_each_precipitate(const std::function< void(const Precipitate_ &)> &) const |
Provides copied lookup of precipitates. |
template<typename T, int, typename Itr> autofor_some_segment(Itr, std::function< Eigen::Matrix< T, 1, i >(const Segment)>) const |
Run a function against a set of segments. See for_some_node. |
template<typename T, int> autofor_each_node(std::function< Eigen::Matrix< T, 1, i >(Node_)>) const |
Runs the function accross all the nodes in the system. See for_some_node. |
voidfor_each_segment_pair(const std::function< void(const Segment &, const Segment &)> &) const |
Provides the n^2 examination between all segment pairs. |
template<typename T> autoreduce_segments(std::function< T(const Segment)>, std::function< T(const T, const T)>, T) const |
Apply a reducable function against each segment. |
template<typename T> autoreduce_segments(std::function< T(const Segment)>, std::function< T(const T, const T)>) const |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. |
template<typename T> autofor_each_segment(std::function< T(const Segment)>) const |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. |
template<typename Itr> voidfor_some_segment(Itr, const std::function< void(Segment)> &) const |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. |
voidfor_each_node(const std::function< void(Node_)> &) const |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. |
voidfor_each_segment(const std::function< void(Segment)> &) const |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. |
autostate() |
Produces a pd3::State with displacements set from the given system. |
autofind_segment(const Node_ &, const Node_ &) const |
Find the segment object with system information attached to it. |
autofind_segment(Segment &) const |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. |
autoburgers(const Node_ &, const Node_ &) const |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. |
automerge_node(const Node_ &, const State_ &) |
Provided a virtual dislocation node, coarsen it out of the system. |
autosplit_segment(const Segment &, const State_ &) |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. |
autoupdate_shear(const Segment &, constMiller&, double) |
Update a segment based on changes to its shearing state. |
autoflip_segments(const Node_ &, int) |
Applies flip_segment to all of a given node's connections. |
autocleanup(const Node_ &, const Node_ &) |
Hook to release a segment from the system. |
autocleanup(const Segment &) |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. |
autocleanup(Node *) |
Hook to release a node from the system. |
auto__attribute__((used)) |
Hook to remove a segment from the system given the connecting nodes. |
absl::flat_hash_set< Node_ >nodes |
Set of all given nodes for easy lookup. |
absl::flat_hash_set< Segment >segments |
Set of all given segments for easy lookup. |
absl::flat_hash_set< Precipitate_ >precipitates |
Collection of precipitates for system interaction. |
autocombine_nodes(Node_ &, Node_ &, const State_ &) |
Creates a new node from 2 existing nodes. |
autocombine_nodes(const Node_ &, const Eigen::RowVector3d &, absl::flat_hash_set<Miller> &, const State_ &) |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. |
autoextract_planes(const Node_ &, absl::flat_hash_set<Miller> &) const |
Gets the list of planes that a node is on. |
automerge_hinge(const Triangle &, Segment &, Segment &, const State_ &) |
Or explicitly dictating which arms to fold. |
Members
size
auto size() const
The number of nodes currently in the system.
segment_size
auto segment_size() const
The number of segments currently in the system.
node
auto node(Eigen::Matrix< double, 1, 3 >, NodeType)
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
precipitate
template<typename P, typename, typename... Args>inline auto precipitate(Args &&... args)
Like node, precipitates are only constructable through a system.
for_each_precipitate
void for_each_precipitate(const std::function< void(const Precipitate_ &)> & fn) const
Provides copied lookup of precipitates.
for_some_segment
template<typename T, int i, typename Itr>auto for_some_segment(Itr itr, std::function< Eigen::Matrix< T, 1, i >(const Segment)> fn) const
Run a function against a set of segments. See for_some_node.
for_each_node
template<typename T, int i>auto for_each_node(std::function< Eigen::Matrix< T, 1, i >(Node_)> fn) const
Runs the function accross all the nodes in the system. See for_some_node.
for_each_segment_pair
void for_each_segment_pair(const std::function< void(const Segment &, const Segment &)> & fn) const
Provides the n^2 examination between all segment pairs.
reduce_segments
template<typename T>auto reduce_segments(std::function< T(const Segment)> fn, std::function< T(const T, const T)> reduce, T) const
Apply a reducable function against each segment.
reduce_segments
template<typename T>auto reduce_segments(std::function< T(const Segment)> fn, std::function< T(const T, const T)> reduction) const
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
for_each_segment
template<typename T>auto for_each_segment(std::function< T(const Segment)> fn) const
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
for_some_segment
template<typename Itr>void for_some_segment(Itr, const std::function< void(Segment)> & fn) const
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
for_each_node
void for_each_node(const std::function< void(Node_)> & fn) const
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
for_each_segment
void for_each_segment(const std::function< void(Segment)> & fn) const
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
state
auto state()
Produces a pd3::State with displacements set from the given system.
find_segment
auto find_segment(const Node_ &, const Node_ &) const
Find the segment object with system information attached to it.
find_segment
auto find_segment(Segment & segment) const
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
burgers
auto burgers(const Node_ & a, const Node_ & b) const
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
merge_node
auto merge_node(const Node_ & node, const State_ & state)
Provided a virtual dislocation node, coarsen it out of the system.
split_segment
auto split_segment(const Segment &, const State_ &)
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
update_shear
auto update_shear(const Segment &, const Miller &, double)
Update a segment based on changes to its shearing state.
flip_segments
auto flip_segments(const Node_ &, int flip)
Applies flip_segment to all of a given node's connections.
cleanup
auto cleanup(const Node_ &, const Node_ &)
Hook to release a segment from the system.
cleanup
auto cleanup(const Segment &)
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
cleanup
auto cleanup(Node * unsafe_node)
Hook to release a node from the system.
__attribute__
auto __attribute__((used))
Hook to remove a segment from the system given the connecting nodes.
nodes
protected absl::flat_hash_set< Node_ > nodes
Set of all given nodes for easy lookup.
segments
protected absl::flat_hash_set< Segment > segments
Set of all given segments for easy lookup.
precipitates
protected absl::flat_hash_set< Precipitate_ > precipitates
Collection of precipitates for system interaction.
combine_nodes
protected auto combine_nodes(Node_ & a, Node_ & b, const State_ & state)
Creates a new node from 2 existing nodes.
combine_nodes
protected auto combine_nodes(const Node_ &, const Eigen::RowVector3d &, absl::flat_hash_set< Miller > &, const State_ &)
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
extract_planes
protected auto extract_planes(const Node_ & node, absl::flat_hash_set< Miller > &) const
Gets the list of planes that a node is on.
merge_hinge
protected auto merge_hinge(const Triangle &, Segment &, Segment &, const State_ &)
Or explicitly dictating which arms to fold.