OOF2: The Manual

The OOF2 Manual

Revision 5.0.0 for OOF2 Version 2.3.4

Stephen A. Langer

Andrew C.E. Reid

Günay Doğan

Shahriyar Kesharvarz


Table of Contents

I. Using OOF2
Overview
1. Introduction
2. Disclaimer
3. About This Manual
1. Getting Started
1.1. Acquiring and Installing OOF2
1.2. Running OOF2
1.3. Learning OOF2
2. OOF2 Concepts
2.1. Preliminaries
2.2. Microstructures
2.3. Materials
2.4. Skeletons
2.5. Meshes and SubProblems
2.6. File Formats
3. Task Pages
3.1. Overview
3.2. The Microstructure Page
3.3. The Image Page
3.4. The Pixel Selection Page
3.5. The Active Area Page
3.6. The Materials Page
3.7. The Skeleton Page
3.8. The Pin Nodes Page
3.9. The Skeleton Selection Page
3.10. The Skeleton Boundaries Page
3.11. The FE Mesh Page
3.12. The Fields & Equations Page
3.13. The Boundary Conditions Page
3.14. The Scheduled Output Page
3.15. The Solver Page
3.16. The Analysis Page
3.17. The Boundary Analysis Page
4. The Graphics Window
4.1. Layers
4.2. The Layer List
4.3. The Contour Map
4.4. Setting the Time
4.5. Toolboxes
5. Auxiliary Windows
5.1. Messages
5.2. Activity Viewer
5.3. Console
II. OOF2 Command Reference
6. Reference
6.1. How to use this Chapter
6.2. Menus
6.3. Outputs
6.4. Built-In Physics: Fields, Fluxes, Equations, and Properties
6.5. Registered Classes
6.6. Enumerated Types
6.7. Other Objects
6.8. Searchable Index of Reference Pages
III. Extending OOF2
7. Extending OOF2
7.1. The Mechanics of Extending OOF2
7.2. External Extensions
7.3. Compiling and Installing External Extensions
7.4. Running OOF2 with External Extensions
7.5. Internal Extensions
8. Writing OOF2 Extensions
8.1. Source Directory Layout
8.2. Python Package Layout
8.3. Adding New Fields, Fluxes, and Equations
8.4. Indices and Iterators
8.5. Conjugate Pairs
8.6. Adding New Material Properties
8.7. Adding New Outputs
IV. OOF2 Extending Reference
I. Tools for Building Extensions
swig_sources — CMake function for running swig and building Python extension modules.
oof2-extension-setup — Generate the infrastructure of the code for an OOF2 extension.
II. Points and Coordinates
Coord — Coordinate classes
MasterPosition and MasterCoord — Position in master coordinate space
Point — Python point class
III. Field Classes and Functions
Field — Base class for fields
CompoundField — A Field with both in- and out-of-plane parts.
ScalarField — A scalar-valued Field
TwoVectorField — A two dimensional vector-valued Field object
ThreeVectorField — A three dimensional vector-valued Field object.
getField — Retrieve a Field object by name
IV. Flux Classes and Functions
Flux — Base class for Fluxes
VectorFlux — A vector-valued Flux
SymmetricTensorFlux — A 3×3 symmetric tensor valued Flux
getFlux — Retrieve a Flux object by name
V. Equation Classes and Functions
Equation — Base class for Equations
DivergenceEquation — An Equation subclass for divergence equations
PlaneFluxEquation — An Equation subclass for enforcing plane-flux constraints
getEquation — Retrieve a Equation object by name
VI. Indices and Iterators
FieldIndex — Base class for index objects
IndexP — Generic wrapper for index objects
ScalarFieldIndex — Index object for a scalar Field
VectorFieldIndex — Index a vector field
OutOfPlaneVectorFieldIndex — Index the out-of-plane components of a vector
SymTensorIndex — Index a symmetric 3×3 tensor
OutOfPlaneSymTensorIndex — Index the out-of-plane components of a 3×3 symmetric tensor
Components — Iterable object containing a set of FieldIndexes
ComponentIterator — Base class for iterators that loop over Components objects
ComponentIteratorP — Wrapper for ComponentIterator pointers
EmptyFieldIterator — Iterate over a Field with no components
ScalarFieldIterator — Iterate over a the components of ScalarField.
VectorFieldIterator — Iterate over the components of a TwoVectorField or ThreeVectorField
OutOfPlaneVectorFieldIterator — Iterate over the out-of-plane components of a vector Field
SymTensorIterator — Iterate over the components of a symmetric 3×3 tensor
OutOfPlaneSymTensorIterator — Iterate over the out-of-plane components of a symmetric 3×3 tensor
Planarity — Specify the range of component iterators
VII. Property and Material Classes
PropertyRegistration — Register new Properties
Property — Base class for material properties
PhysicalProperty — Intermediate base class for FluxProperty and EqnProperty
FluxProperty — A Property that contributes to a Flux
EqnProperty — A Property that contributes to an Equation
AuxiliaryProperty — A Property that doesn't contribute directly to a Flux or Equation
Material — Collection of Properties
VIII. Mesh Classes and Functions
FEMesh — C++ FE mesh class
CSubProblem — C++ subproblem class
Element — Element class for finite element meshes
Node, FuncNode — Node classes for finite element meshes
ElementNodeIterator — Iterate over Nodes in an Element
ElementShapeFuncIterator — Base class for other Node iterators
ElementMapNodeIterator — Iterate over mapping nodes in an Element
ElementFuncNodeIterator — Iterate over function nodes in an Element
ElementCornerNodeIterator — Iterate over the corner Nodes of an Element
DegreeOfFreedom — Degree of freedom at a Node
conjugatePair — Establish conjugacy relations
SmallSystem — A small part of the linear system constructed by Properties
CSubProblem — C++ representation of subproblem
IX. Output Classes and Functions
Output — Compute output data on a Mesh
PropertyOutput — Compute Property-dependent data on a Mesh
PropertyOutputRegistration — Define a new Property-dependent output quantity
PropertyOutputInit — Initialize Property Outputs
definePositionOutput, defineScalarOutput, defineAggregateOutput — Install Outputs in the GUI
OutputVal — Wrappers for Output data
OutputValue — Wrapper for OutputVal classes
X. Miscellaneous Classes and Functions
Parameter — Parameter classes for OOF2 menu commands, Properties, Outputs, and RegisteredClasses.
acquirePyLock — ensure thread-safe Python API calls
ErrError — Classes and functions for handling exceptions
loadFile — Load documentation from a file
A. Text Mode
B. What's New in OOF2 2.1
B.1. Time Dependence
B.2. Nonlinearity
B.3. Behavioral Changes to Old Features
B.4. Other New Features
B.5. GUI Changes
B.6. Changes That May Break OOF2 Scripts
B.7. Bug Fixes
B.8. Miscellany
C. Changes to the API
C.1. Changes from version 2.0.1 to 2.0.2

List of Figures

1.1. The Error Dialog Box
1.2. The Tutorial Window
2.1. Object Organization and Information Flow
2.2. Path Menus
2.3. Anatomy of a Skeleton
2.4. Skeleton Element Homogeneity
2.5. Creating Illegal Elements
2.6. Default Node Mobility
2.7. Homogeneity of a Segment
2.8. Segment Homogeneity Subtleties
3.1. The Main OOF2 Window
3.2. The Microstructure Page
3.3. The Image Page
3.4. The Copy Image Dialog Box
3.5. The Pixel Selection Page
3.6. The Active Area Page
3.7. The Override Button
3.8. The Materials Page
3.9. Collapsed and Expanded Property Hierarchies
3.10. The Hexagonal Elasticity Property Dialog Box
3.11. The Color Property Dialog Box
3.12. Assigning Materials to Pixels
3.13. The Skeleton Page
3.14. The Pin Nodes Page
3.15. The Skeleton Selection Page
3.16. The Skeleton Boundaries Page
3.17. A Selected Boundary
3.18. The New Boundary Dialog Box
3.19. The FE Mesh Page
3.20. The Fields Page
3.21. The Boundary Conditions Page
3.22. New Boundary Condition Dialog
3.23. The Scheduled Output Window
3.24. The Solver Page
3.25. The Analysis Page
3.26. The Time Control Widgets
3.27. Two Versions of the Domain Pane
3.28. The Boundary Analysis Page
4.1. The Graphics Window
4.2. The Layer List
4.3. The Contour Map Pane
4.4. Graphics Window Time Controls
4.5. The Viewer Toolbox
4.6. The Pixel Info Toolbox
4.7. Orientation in the Pixel Info Toolbox
4.8. The Empty Misorientation Pane
4.9. Misorientation
4.10. The Pixel Selection Toolbox
4.11. The Skeleton Info Toolbox
4.12. The Skeleton Selection Toolbox
4.13. The Move Nodes Toolbox
4.14. The Pin Nodes Toolbox
4.15. The Mesh Info Toolbox
4.16. The Mesh Data Viewer
4.17. The Mesh Data Viewer, Collapsed
4.18. The Mesh Cross Section Toolbox
5.1. The Messages Window
5.2. The Activity Viewer
5.3. The Console Window
6.1. Active Area Examples
6.2. Expanding the Element Selection
6.3. Selecting Heterogeneous Elements
6.4. Selecting Elements by Material
6.5. Element Selection by Shape Energy
6.6. Selecting Elements from Selected Nodes
6.7. Selecting Elements from Selected Segments
6.8. The New Graphics Layer dialog
6.9. Antialiasing Lines
6.10. Antialiasing Filled Polygons
6.11. Contour Map Aspect Ratio
6.12. Hiding Empty Mesh Elements
6.13. Unlisted Layers
6.14. The Display Margin
6.15. Selecting Pixels with the Brush
6.16. Selecting Pixels with the Burn Algorithm
6.17. Selecting a Circular Region of Pixels
6.18. Selecting Pixels by Color
6.19. Selecting a Elliptical Region of Pixels
6.20. Selecting a Rectangular Region of Pixels
6.21. Selecting Elements by Pixel Type
6.22. Selecting a Circular Set of Elements
6.23. Selecting a Elliptical Set of Elements
6.24. Selecting a Rectangular Set of Elements
6.25. Selecting a Circular Set of Nodes
6.26. Selecting a Elliptical Set of Nodes
6.27. Selecting a Rectangular Set of Nodes
6.28. Selecting a Circular Set of Segments
6.29. Selecting a Elliptical Set of Segments
6.30. Selecting a Rectangular Set of Segments
6.31. Blurring an Image
6.32. Adjusting Contrast
6.33. Despeckling an Image
6.34. Dimming an Image
6.35. Detecting Edges in an Image
6.36. Enhancing an Image
6.37. Equalizing an Image
6.38. Fading an Image
6.39. Applying a Median Filter to an Image
6.40. Negating an Image
6.41. Normalizing an Image
6.42. Reducing Noise in an Image
6.43. Reilluminating an Image
6.44. Sharpening an Image
6.45. Thresholding an Image
6.46. Expanding the Node Selection
6.47. Selecting Internal Boundary Nodes
6.48. Selecting Nodes from the Selected Elements
6.49. Selecting Nodes from Selected Segments
6.50. Poorly Autogrouping an Antialiased Image
6.51. Better Autogrouping of an Antialiased Image
6.52. Despeckling the Pixel Selection
6.53. Gnilkcepsed the Pixel Selection
6.54. Selecting Internal Boundary Segments
6.55. Selecting Heterogeneous Segments
6.56. Selecting Segments from Selected Elements
6.57. Pinning Skeleton Nodes
6.58. Pinning Internal Boundary Nodes
6.59. Detail of Internal Boundary Nodes
6.60. Pinning Nodes of Selected Elements
6.61. Structure of a Cubic Fourth Rank Tensor
6.62. Structure of an Isotropic Fourth Rank Tensor
6.63. Key to the Tensor Diagrams
6.64. Converting Between Isotropic Tensor Representations
6.65. Adding Segments to a Boundary
6.66. Annealing
6.67. An Un-annealed Skeleton
6.68. Annealing the Skeleton
6.69. Comparison between the Annealed Skeleton and the Microstructure
6.70. A Node Move
6.71. Refining Elements with High Aspect Ratios
6.72. Refining Heterogeneous Segments
6.73. Constructing an Edge Boundary from Elements
6.74. Constructing a Closed Edge Boundary from Nodes
6.75. Constructing an Open Edge Boundary from Nodes
6.76. Failing to Construct an Edge Boundary
6.77. Constructing an Edge Boundary Again
6.78. More Failed Configurations
6.79. Constructing an Edge Boundary from Segments
6.80. Fixing Illegal Elements
6.81. The GammaGray Color Map
6.82. Splitting Quads Geographically
6.83. Selection with a Circular Brush
6.84. Selection with a Square Brush
6.85. The Gist Earth Color Map
6.86. The Gray Color Map
6.87. The HSV Color Map
6.88. Setting Values for Cij as an Isotropic Rank4 Tensor
6.89. Merging Triangles
6.90. Selecting Cross Sections to Display
6.91. The Normal Direction for an Edge Boundary
6.92. Constructing a Point Boundary from Elements
6.93. Constructing a Point Boundary from Segments
6.94. Applying QuadSplit
6.95. Rationalizing a Skeleton
6.96. Refining a Skeleton
6.97. Excessive and Appropriate Refinement
6.98. Skeleton Relaxation
6.99. Removing Bad Acute Angles
6.100. Removing Bad Obtuse Angles
6.101. Removing Segments from a Boundary
6.102. Applying RemoveShortSide
6.103. The Skeleton Quality Display
6.104. Schematics of Smooth
6.105. Smoothing a Skeleton
6.106. Smoothing without Losing Homogeneity
6.107. Transition Points
6.108. Snapping Nodes
6.109. Snapping Nodes with a Large alpha
6.110. Selecting Rationalization Tools
6.111. The Spectral Color Map
6.112. Using SplitQuads
6.113. Swapping Element Edges
6.114. Swapping Edges
6.115. The Tequila Sunrise Color Map
6.116. The Thermal Color Map
6.117. Transition Points
6.118. Normal Patch Recovery
6.119. Boundary Patch Recovery
6.120. Diagonal Arrangements for Triangular Skeletons
6.121. Elements with 2 corners
6.122. Elements with 3 corners
6.123. Elements with 4 corners
6.124. The selection placeholder
6.125. Automatic Widgets
6.126. Structure of a Cubic Second Rank Tensor
6.127. Structure of a Hexagonal Second Rank Tensor
6.128. Structure of a Trigonal Second Rank Tensor
6.129. Structure of a Tetragonal Second Rank Tensor
6.130. Structure of a Orthorhombic Second Rank Tensor
6.131. Structure of a Monoclinic Second Rank Tensor
6.132. Structure of a Triclinic Second Rank Tensor
6.133. Structure of a C1 Third Rank Tensor
6.134. Structure of a C2 Third Rank Tensor
6.135. Structure of a Cs Third Rank Tensor
6.136. Structure of a D2 Third Rank Tensor
6.137. Structure of a C2v Third Rank Tensor
6.138. Structure of a C4 Third Rank Tensor
6.139. Structure of a C4i Third Rank Tensor
6.140. Structure of a D4 Third Rank Tensor
6.141. Structure of a C4v Third Rank Tensor
6.142. Structure of a D2d Third Rank Tensor
6.143. Structure of a C3 Third Rank Tensor
6.144. Structure of a D3 Third Rank Tensor
6.145. Structure of a C3v Third Rank Tensor
6.146. Structure of a C6 Third Rank Tensor
6.147. Structure of a D6i Third Rank Tensor
6.148. Structure of a D6 Third Rank Tensor
6.149. Structure of a C6v Third Rank Tensor
6.150. Structure of a D3h Third Rank Tensor
6.151. Structure of a Td Third Rank Tensor
6.152. Structure of a Hexagonal Fourth Rank Tensor
6.153. Structure of a Tetragonal Fourth Rank Tensor
6.154. Structure of a Trigonal-A Fourth Rank Tensor
6.155. Structure of a Trigonal-B Fourth Rank Tensor
6.156. Structure of a Orthorhombic Fourth Rank Tensor
6.157. Structure of a Monoclinic Fourth Rank Tensor
6.158. Structure of a Triclinic Fourth Rank Tensor
7.1. Components of an OOF2 Extension
7.2. Simple Extension Directory Layout
7.3. Less Simple Extension Directory Layout
8.1. Output Widgets
222. Master Coordinates
223. BooleanParameter Widget
224. EnumParameter Widget
225. IntRangeParameter Widget
226. FloatRangeParameter Widget
227. RegisteredParameter Widget
228. ConvertibleRegisteredParameter Widget
229. RegisteredListParameter widget
230. AutoNumericParameter widget
231. AutoIntParameter widget
232. Rank 4 Tensor Parameter Widget
233. Rank 3 Tensor Parameter Widget
234. Rank 2 Tensor Parameter Widget