Protocol Documentation
pd3/proto/config.proto
package pd3.proto
Config
General settings for setting up a given system.
Field |
Type |
Description |
name |
string |
Name of this given study setup. |
Physical Parameters
Field |
Type |
Description |
lattice |
double |
Lattice length in FCC crystals in meters. This doubles as the units for our cartesian system. |
mu |
double |
Shear modulus of the primary matrix. |
nu |
double |
Possion's ratio of the primary matrix. |
crystal_type |
CrystalType |
Crystal type for the system. Only FCC is supported in pd3, but drt can handle different cubic crystals. |
Stacking Fault Energies
Field |
Type |
Description |
sf_energy |
double |
Stacking fault energy should arise between partials in a perfect lattice. For non-partial simulations this can be ignored. |
sisf_energy |
double |
Super intrinsic stacking fault energy arises between partials in a precipitate. |
apb_energy |
double |
APB energy details the force induced by a sheared precipitate. |
cf_energy |
double |
Complex stacking fault energy. |
Geometric Parameters
Field |
Type |
Description |
min_area |
double |
Note that all distances prescribed in this section should be provided in burgers vectors. Minimum triangular area allowed by the simulation. Coarsening will occur if a topology breaks this limit. |
max_area |
double |
Maximum triangular area allowed by the simulation. Refinement will occur if a topology breaks this limit. |
collision_horizon |
double |
The distance at which dislocations will be seen to be colliding. Note that this is also used as the core radius for a dislocation. |
min_length |
int32 |
Minimum length of a segment. |
max_length |
int32 |
Maximum length of a segment. |
max_connections |
int32 |
Unused. The number of connections that a physical dislocation can have. This is unlimited currently, but listed here for compatibility with DDLab. |
topology_attempts |
int32 |
Number of attempts at refinement before moving on |
collision_cutoff |
double |
The length percentage to a node at which we consider node segment collision over segment segment collision |
min_plane_distance |
double |
Provided that two dislocations are on the same slip-plane, this sets a threshold whether 2 dislocations are on exactly the same plane. i.e:
|
Time Parameters
Field |
Type |
Description |
dt0 |
double |
The initial to start integrating with. Note DDD typically dynamically changes integration steps. |
max_steps |
int32 |
The maximum number of steps the simulation will run to by default. |
integration_convergence |
int32 |
Maximum attempts for integration convegerence. An additional step will perform a refinement of backwards euler. |
integration_limit |
int32 |
Maximum attempt at integration. Each integration attempt wil shrink the value. |
integration_tolerance |
double |
Maximum allowable convergence error in refinable integration techniques. |
time_growth_max |
double |
The maximum step that our time factor can take when we are adaptivly increasing our value. |
time_growth_pow |
double |
Influences the rate of time step growth. Larger numbers reduce the rate of growth, Default is ~20. |
max_movement |
double |
The largest jump that a dislocation node can move in a given step. |
fixed_timestep |
bool |
Run the simulations with a fixed timestep. integration_limit must be set to 0. |
Lock Energy Parameters
Field |
Type |
Description |
perfect_energy |
double |
|
shockley_energy |
double |
|
stair_rod_energy |
double |
|
hirth_energy |
double |
|
frank_energy |
double |
|
frank_energy_barrier |
double |
The term to stop thrashing between dislocation states (example, partials and perfects) |
Dislocation Type Parameters
Field |
Type |
Description |
edge_coefficient |
double |
|
screw_coefficient |
double |
|
climb_coefficient |
double |
|
sense_coefficient |
double |
|
Debugging Parameters
Field |
Type |
Description |
print_freq |
int32 |
The number of steps between logging events. |
debug_level |
int32 |
Debug Level goes all the way to 4 Level 0 - No output at all Level 1 - Output for major events Level 2 - Debugging output is enabled. Level 3 - Remeshing is broken into atomic steps for easier Level 4 - PB dumps are created eery step. debugging. |
logger_type |
LoggerType |
The logger to use. This will be used for primary and debugging events. |
log_location |
string |
The location to which the logger should default output. (Unused) |
Compute Parameters
Field |
Type |
Description |
threads |
int32 |
|
Boolean Flags
Field |
Type |
Description |
do_seperation |
bool |
|
do_partials |
bool |
|
do_inclusion |
bool |
|
do_SFT |
bool |
Unused. |
do_shielding |
bool |
Unused. |
do_cross_slip |
bool |
Unused. |
do_remesh |
bool |
|
do_collision |
bool |
|
do_precipitates |
bool |
|
do_validation |
bool |
|
do_interaction |
bool |
|
do_pk |
bool |
|
do_self |
bool |
|
Boundary Conditions
PeriodicCondition
Periodic Conditions are prescribed by a rotation of the frame reference (by
XZX Euler Angles) and a displacement. In addition, we have cell size given
by the extents.
Field |
Type |
Description |
alpha |
double |
Rotation about the X axis in radians (E.g. 1/4 = 45deg) |
beta |
double |
Rotation about the Z axis in radians. |
gamma |
double |
Rotation about the X' axis in radians. |
extent_x |
double |
1/2 cell size in the rotated frame for x. |
extent_y |
double |
1/2 cell size in the rotated frame for y. |
extent_z |
double |
1/2 cell size in the rotated frame for z. |
center_x |
double |
Displacement of periodicity frame for x. |
center_y |
double |
Displacement of periodicity frame for y. |
center_z |
double |
Displacement of periodicity frame for z. |
CrystalType
Name |
Number |
Description |
FCC |
0 |
Face Centered Cubic (default) |
BCC |
1 |
Body Centered Cubic |
SIMPLE |
2 |
Simple cubic |
LoggerType
Name |
Number |
Description |
TXT |
0 |
By default we'll use the text logger similar to DDLab. |
PROTO |
1 |
This provides a system description Series as detailed in |
PARAVIEW |
2 |
config.proto. |
This logger creates a ParaView friendly output for quick viewing. |
| PARADIS | 3 | This logger creates a Paradis restart file. |
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 |