Skip to content

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.