Skip to content

Protocol Documentation

pd3/proto/study.proto

package pd3.proto

Burgers

Burgers vectors are expected to be expressed in terms of lattice points and a ratio.

Field Type Description
inv_scale int32 A ratio of 1/inv_scale is applied to the Burgers vector value.
miller Miller

A list of edges/links/segments describing the DD graph.

Field Type Description
leading int64 The relative leading node. This should index into State.nodes.
trailing int64 The relative trailing node. This should index into State.nodes.
normal Miller Stacking fault normal of this segment.
burgers Burgers Burgers vector of this segment.
plane Miller Burgers vector of this segment.
periodicity_cell int32 How this link is reflected if it is periodic.
slip int32 The slip system of this segment. Note this is set for paradis outputs, but not always pd3 outputs.

Miller

Miller indices are typically 1x3 in cubic systems and 1x4 in hexagonal systems. Currently hexagonal implementations are not supported.

Field Type Description
indices int32

Node

Marks a position in space, and a NodeType.

Field Type Description
x double
y double
z double
type NodeType

Precipitate

A list of precipitates for the given study.

Field Type Description
type PrecipitateType
x double
y double
z double
radius double

Series

All simulation states.

Field Type Description
state State
config Config
precipitate Precipitate

State

Field Type Description
nodes State.NodesEntry Hash map of id to node. Id can be arbitrary, and in the current implementation is the raw pointer of the pd3::Node.
links Link
time double The simulation time of this state from simulation start.

State.NodesEntry

Field Type Description
key int64
value Node

NodeType

Node Type determines particular node behavior. There is a corollary in pd3::NodeType

Name Number Description
IMMOBILE 0 Node should not move. Note, this is not fully physical, but very useful.
MOBILE 1 Node is capable of moving.
PLACEHOLDER 2 Used internally, marks a trial segment. Do not use.

PrecipitateType

Denotes the type of precipitate interaction.

Name Number Description
CIRCULAR_PRECIPITATE 0 This comes from Ahmed's work.
ENERGY_PRECIPITATE 1 Method first introduced in pd3, that uses the quasi-static time step to resolve the energy difference in shearing, thus determining the amount of shearing allowed.

Scalar Value Types

.proto Type Notes C++ Python
double double float
float float float
int32 Uses variable-length encoding. Inefficient for encoding negative numbers – if your field is likely to have negative values, use sint32 instead. int32 int
int64 Uses variable-length encoding. Inefficient for encoding negative numbers – if your field is likely to have negative values, use sint64 instead. int64 int/long
uint32 Uses variable-length encoding. uint32 int/long
uint64 Uses variable-length encoding. uint64 int/long
sint32 Uses variable-length encoding. Signed int value. These more efficiently encode negative numbers than regular int32s. int32 int
sint64 Uses variable-length encoding. Signed int value. These more efficiently encode negative numbers than regular int64s. int64 int/long
fixed32 Always four bytes. More efficient than uint32 if values are often greater than 2^28. uint32 int
fixed64 Always eight bytes. More efficient than uint64 if values are often greater than 2^56. uint64 int/long
sfixed32 Always four bytes. int32 int
sfixed64 Always eight bytes. int64 int/long
bool bool boolean
string A string must always contain UTF-8 encoded or 7-bit ASCII text. string str/unicode
bytes May contain any arbitrary sequence of bytes. string str