OOF: Finite Element Analysis of Microstructures

OOF3D Change History

oof3d logo


  • New Features:
    • Compatibility with VTK 9.
    Bug Fix:
    • Regression tests use png files instead of jpegs. Jpegs aren't portable.


  • New Features:
    • Almost all material properties can now be included in output files using a new Material Constants branch of the Outputs tree.
    • More than one type of output can be printed on one line of an output file, by using the Concatenate output.
  • Bug Fix:
    • Fixed a debugging line that was causing some newer compilers to fail even when not debugging.


  • New Features:
    • The graphics window can now be saved in PDF format.
    • The Voxel/Tet intersection code is now in a stand-alone subdirectory and templated, making it available for use in other contexts.
  • Bug Fixes:
    • Abaqus output from Meshes is now much faster, yet again.
    • Compatiblity changes for macOS 10.14 (Mojave), VTK 8.2.0, and gcc 8.2.0.



  • Bug Fixes:
    • Fixed and updated the tutorials.
    • Skeleton selections are updated in the graphics window during annealing and other iterative skeleton modifications.
    • After cancelling the Box voxel selector, image opacity is restored correctly.
    • Deselecting a boundary in the Skeleton Boundary page no longer raises a spurious warning message.


  • New and Improved Features:
    • Native Macintosh graphics (non-X11) are now supported. Macintosh users should build OOF3D with the --cocoa argument. The vtk and gtk dependencies should also be built to use Cocoa/Quartz instead of X11. Because this is a bit of a pain, a binary installer is now available for Macintosh users.
    • Upgraded the VTK library. OOF3D now requires at least VTK 7, but works best with 8.1.1, and even better with 9.0.0 (which is not yet officially released).
    • Added a interactive method for selecting a rectangular region of voxels. The various Select menu commands have been restructured so that the new method fits more naturally. Now all selections are made in the main menu, like this:
        OOF.ElementSelection.Select(skeleton='ms:skel', method=...) 
      instead of being split between the main menu and a graphics toolbox menu. The commands now refer explicitly to the objects being selected, instead of containing cryptic information about the mouse position and view parameters.
    • Added the Relax Skeleton modifier, as in OOF2.
    • Added a RefinementTarget for splitting the long edges of an element.
    • Modified the Tumble method so that objects are rotated about the center of the visible region if "shift" is pressed when clicking the mouse. If "control" is pressed, objects are rotated around the focal point. If neither is pressed, the previous pivot point is used.
    • Right-clicking on the layer list in the graphics window brings up the layer editing menu. Layers can be rearranged by drag and drop on the list (but maybe not reliably on macOS).
    • The default parameters for new clipping planes now put the plane in a more sensible location.
  • Bug Fixes:
    • Fixed a bug that was making Microstructures recalculate voxel categories far too often.
    • Loading Skeleton node and element selections from data file is now much faster.
    • Fixed a bug that was preventing compilation with gcc 7.
    • Fixed a bug with the Recenter button in the Translate group in the Viewer toolbox.
    • Fixed a bug that was making the Material Color display layer for Microstructures show incorrect colors.
    • Fixed a bug in saving 3D images as a set of files.
    • Fixed the Threshold function for images.
    • Fixed a bug in the widgets for choosing Skeleton groups.
    • Fixed errors in updating filtered Skeleton and Mesh displays.
    • Fixed bugs in the Voxel, Skeleton, and Mesh info displays.
    • Abaqus output from Meshes is now much faster, again.
    • Fixed a bug in the positioning of new clipping planes whose normals weren't in the +x direction.


  • Bug Fixes:
    • Creating a large Skeleton is faster. Voxel categories were being recomputed too often.
    • Saving a large Mesh in abaqus format is now much faster.
    • Fixed a race condition that could cause errors if a Mesh was created while its Skeleton was still computing its homogeneity.
    • Fixed a bug that generated warning messages when drawing the coordinate axes if a Microstructure had a large aspect ratio.


  • Bug Fix:
    • Minor changes to make the old gcc 4.7 compiler happy.


  • New Features:
    • The Skeleton element homogeneity calculation is significantly faster, due to being smarter about ignoring voxels far from the element.
  • Bug Fixes:
    • The Skeleton element homogeneity code is significantly faster in some geometries, due to the removal of an infinite loop.
    • Fixed bugs in the abaqus output for Skeletons and Meshes. The code hadn't been updated since OOF2.


  • New Features:
    • 10 noded quadratic tetrahedral finite elements are now available.
    • The Skeleton element homogeneity calculation is completely new. It is faster and more robust than the old algorithm.
    • Clipping planes in a graphics window can now be manipulated with the mouse. Follow the instructions under the "Clip" option in the Viewer toolbox. Thanks to Ryan Weller for this feature.
    • The setup.py script now understands "~" in vtkdir arguments.
  • Bug Fixes:
    • The filters for limiting display layers to particular voxel or skeleton groups now update properly when the underlying groups are changed.
    • In some situations, voxels that had been removed from a voxel group were still considered to be part of a group. Now they're not.
    • "Fix Illegal Elements" now does a better job with elements that have nodes on the Microstructure's external faces. The status of fixed Skeletons is correctly displayed in the GUI.
    • The Skeleton homogeneity is no longer being recomputed unnecessarily after some Undo and Redo operations.
    • Progress bars work correctly when automatically creating voxel groups. The "Stop" buttons were very slow to respond.
    • Fixed a bug involving cloning graphics windows with hidden display layers.
    • Fixed a bug that prevented the analysis page from retrieving stored analyses.
    • Fixed the "Copy All" command for copying solvers from one Mesh to another.


  • Bug Fixes:
    • The tetrahedron shape energy is now computed correctly. The old values were too high. This fix will change the results of some skeleton modification operations.
    • Graphics windows are now cleared properly when objects are deleted.
    • The skeleton material and skeleton quality displays have been fixed.
    • If a mesh is saved while it's being solved, its status when reloaded will be "Unsolved" rather than "Solving".
    • The interval parameter for output schedules can no longer be set to zero, and the delay can't be negative.
    • The --with-swig option for setup.py is now working correctly.
    • setup.py now works correctly on pythons that report their system type as linux3.
    • Some memory leaks were fixed.
  • New Features:
    • Field initializers can now be copied.


Initial release.