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 |
|
Link
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.
Precipitate
A list of precipitates for the given study.
Series
All simulation states.
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
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 |