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 |