|
|
OOF2 Changes |
2.3.3 |
-
Improvements:
-
Brought the extension machinery for adding
Properties up to date. If
OOF2_DEV_INSTALL is set to ON in CMake, template Properties will be
installed into <prefix>/share/oof2/templates, and
oof2-extension-setup, a tool for instantiating the
templates, will be installed into
<prefix>/bin. Also, OOF2 header files will be
installed into <prefix>/include/oof2. See
the README file in OOF2/EXTENSION_TEMPLATES
or <prefix>/share/oof2/templates.
-
Added a utility script, oof2-extension-setup, to
make it easier to build extensions from the
templates in EXTENSION_TEMPLATES.
-
Added OOF.File.Load.Module, to load python modules
(such as OOF2 extensions).
-
Moved Misorientation_Calculator from the Help/Debug
menu to the Help menu.
-
Moved the menu item
OOF.Settings.Mesh_Defaults.SelfConsistency to
OOF.Settings.Solver.Self_Consistency, and
OOF.Settings.Mesh_Defaults.Numerical_Differentiation
to OOF.Settings.Solver.Numerical_Differentiation.
-
All of the skeleton selection commands that have a
list of points as an argument but only use two of
them now use the first and the last points. It was
inconsistent before. This probably doesn't matter
to anyone because the GUI only put two points in the
list. But if you edited scripts and added points to
a list it might have an effect.
-
Upgraded Eigen to version 3.4.0.
-
Marginally better error detection. Some
incompletely defined problems aren't detected before
attempting to solve them, causing non-square
matrices being passed to the solver. Now the matrix
methods detect non-square matrices and raise an
exception, which is better than crashing.
-
Bug fixes:
-
Disabled selection of interface segments since
interface properties aren't enabled.
-
Fixed OOF.Settings.Theme. It now lists the built-in
system themes and initialzes the list of themes properly.
-
Fixed a bug in the GUI for the "New" button on the
Skeleton Boundaries page.
-
Fixed a bug that was preventing boundary condition
initializers from being copied.
-
Fixed a bug that was making normally unlisted layers
in the graphics window's layer list become listed
after they were edited. That itself wasn't really
so bad, but it meant that they were deleted when the
window was cleared.
-
Fixed a bug that was garbling the Mesh Info
toolbox's list of field values at a node when the
set of defined fields changed.
|
2.3.2 |
Bug fixes.
-
Eliminated some opportunities for roundoff error in
Rationalize that could lead to edge nodes not being
recognized as edge nodes.
-
Fixed some Refine bugs that could allow newly created
nodes on boundaries to move off of the boundaries in
subsequent Skeleton modifications.
-
Rationalize is much faster, after correcting a python
indentation error.
-
The minlength parameter for Bisection and Trisection is now
interpreted in pixel units, not physical units, in Refine
operations.
-
Fixed a bug that was preventing strain components from
being displayed in the GUI or looped over in python.
-
The file selector now handles special characters in file
names correctly.
-
Fixed a problem that was preventing Range outputs from
being computed on edge boundaries and cross sections.
-
The antialias state is read correctly from script files.
-
Fixed a problem in displaying orientation maps as images.
-
The Sanity Check routine for Skeleton debugging is
much faster. It no longer needs to be run in "quick"
mode.
|
2.3.1 |
Minor changes in the build process. There's no need to update
if you've already installed 2.3.0.
-
Changes for compatibility with MacPorts.
-
Changed the names of the user-settable variables in
CMakeLists.txt. DESIRED_PYTHONVERSION is
now OOF2_PYTHON3_VERSION,
and DESIRED_SWIGVERSION is
now OOF2_SWIG_VERSION.
|
2.3.0 |
-
Major Infrastructure Improvements:
-
OOF2 uses Python 3 (version 3.8 or later) instead of
Python 2. This should require very few changes to
existing OOF2 scripts, unless you have added
Python3-incompatible code to them manually.
-
OOF2 uses cmake instead of distutils to build and
install. Full instructions are on
the main OOF2
page.
-
OOF2 uses swig4 to generate the Python/C++ interface
code. An old version of swig is no longer
distributed as part of OOF2.
-
Some of the installation prerequisites have changed.
-
New and Enhanced Features:
-
Segment homogeneity is computed differently. The
new method gives better results when a segment is
following a stair-stepped diagonal pixel
boundary. It does not consider every stair-step to
be a transition point between pixel categories.
When a segment follows a pixel boundary, it's
possible for the homogeneity to be different on the
two sides of the segment.
-
The Refine and Snap Refine
skeleton modifiers have been merged into a
new Refine method, which works a bit
differently. The old Liberal
and Conservative options have been removed,
so it is no longer possible to restrict the
refinement to just triangles or quads. The new
Refine command has two new parameters:
-
The divider parameter determines how
element edges are subdivided, and replaces the
old degree parameter. The choices are
Bisection, Trisection,
and TransitionPoints.
Bisection and Trisection
divide edges into two or three equal length
segments.
The effect of the old Snap Refine method is
obtained by setting divider to
TransitionPoints, which divides edges
at the points where the pixel category
changes. It will never divide an edge into
more than three segments.
-
The rules parameter determines what
refinement rules are applied to the interior
of the elements, after its edges have been
divided. The Large rule set considers
many possibilities and chooses the best one,
given a parameter alpha that determines the
relative weight given to homogeneity and shape
quality. The Quick rule set divides
the elements in the simplest way and generally
doesn't search for the best refinement.
The criterion parameter has been
removed. It allowed you to exclude elements below a
certain area. It was inconsistent with
the criterion parameter in other skeleton
modifiers. Instead, there is a minlength
subparameter in the divider. Existing element edges
will not be subdivided into segments less than
minlength (but new internal edges may be shorter).
-
The targets parameter for the skeleton modifiers
Anneal and Smooth can be set
to Non-boundary Nodes, which will preserve
the positions of skeleton nodes that have more than
one neighboring element category. Annealing with
targets set to Non-boundary Nodes has the
same effect as pinning internal boundary nodes and
then annealing.
-
The Snap Nodes skeleton modifier has been
rewritten and does a better job than it used to. In
particular, it is less likely to move two nodes on a
pixel boundary in a way that leaves no good choice
for a third node between the first two.
-
The Snap Anneal skeleton modifier has been
removed. It was mostly redundant with Snap
Nodes.
-
Element aspect ratio is displayed in the Skeleton
Info toolbox. The aspect ratio is calculated in a
less ad hoc way, involving the ratio of the
principle components of the element's moment of
inertia tensor.
-
The number of digits displayed for floating point
numbers in the GUI can be set with the GUI
Digits item in the Settings menu.
-
The Next button in the tutorial window is
always sensitive. If you want to go ahead without
completing a task, you can. Detecting when the task
was complete was error prone and confusing.
|
2.2.3 |
-
Mesh nodes are drawn at their actual positions by default.
The old behavior, in which they were drawn at their
undisplaced positions, can be selected in the
Settings/Graphics_Defaults/Meshes menu.
-
Version 1.0.3 of OOFCanvas is
now required. This fixes a bug that was causing the
program to hang on some systems when a graphics window
was used while loading a script.
|
2.2.1 and 2.2.2 |
|
2.2.0 |
-
New and Modified Features:
-
OOF2 now uses Gtk3 instead of gtk+2 for its user
interface, so the installation prerequisites
have changed.
Instead of requiring libgnomecanvas, oof2
uses OOFCanvas.
-
Whether or not new objects (Images, Skeletons,
Meshes, etc) are displayed automatically in a
graphics window is now controlled by a "New Layer
Policy" setting in the window's Settings menu. The
choices are
-
Always: All new objects are displayed
with their default representation.
-
Single: New objects are displayed only
if no other similar object is being displayed.
-
Never: New objects are never displayed
automatically. Use the "Layer/New" menu item to
add them.
Single is the closest to the old behavior.
The default value for new graphics windows
is Never, but it can be changed via the
"Settings/Graphics Defaults/New Layer Policy" menu
item in the main OOF2 window.
-
There is no more separate Layer Editor window for
adding graphics layers. The "Layer/New" and
"Layer/Edit" menu items in the graphics window now
bring up a simple dialog box.
-
The "Save Image" command in the graphics window's
File menu is now "Save Canvas". A new "Save Canvas
Region" command can save any rectangular region of
the canvas, and in graphics mode its parameters are
initialized with the currently visible region.
-
Some commands that set colors used to have a
separate opacity parameter, which was confusing when
the color also had an alpha channel for the opacity.
Now there are no separate opacity parameters, and
all colors can be set to be translucent, except in a
few cases where it doesn't make sense.
-
All widgets that can take an "automatic" value used
to have a checkbox that had to be checked before a
non-automatic value could be entered. Now the
widgets are simple text entry boxes, and the
automatic value will be used if the box is empty.
To make it clear what's happening, the box displays
"<automatic>" (in italics) if it's
empty. To use a non-automatic value, just type it
in the box. To change a non-automatic value to an
automatic one, delete the contents of the box.
-
The Eigen linear algebra library was upgraded to
version 3.3.9.
-
The test suites can be run by
typing oof2-test and oof2-guitest,
without having to be in the TEST or TEST/GUI
subdirectories.
-
Bug Fixes:
-
Fixed a bug in Basic solver mode, which was trying
to use an old solver for asymmetric matrices.
-
Changed the Rationalize Skeleton modifier. The old
version could end up in an infinite loop. Now it
takes an "iterations" argument, and repeats that
many times. Each iteration is potentially less
effective than the old method, but is sure to
finish.
-
Sparse matrices are constructed more efficiently,
reducing memory requirements when solving large
systems.
-
Fixed the square brush in the pixel selection
toolbox, which was confused about units and didn't
work correctly unless the physical pixel size was
1x1.
-
Fixed the brush pixel selector, which was trying too
hard to be efficient and could miss points.
|
2.1.19 |
-
New Features:
-
Von Mises stress can now be output or plotted.
-
A new ZStrain material property generalizes
plane-strain by setting the fixed out-of-plane zz
strain to a non-zero constant. To use it, add
the ZStrain property to a Material, mark the
Displacement field as defined, active, and in-plane,
and activate the Force Balance equation.
-
Selection sizes are reported as percentages as well
as in absolute numbers.
-
Skeleton modification routines report the total
number of nodes and elements after each
modification, as well as the changes in them.
-
Bug Fixes:
-
In rare cases, output quantities were being computed
incorrectly because of round-off error in the
routine that found the element enclosing a point,
causing the output to be computed in the wrong element.
-
"python setup.py clean" is now more aggressive.
Previously, doing a clean build after a system
update could cause build errors.
|
2.1.18 |
-
New Features:
-
A new "Auto" button in the Pixel Groups pane on the
Microstructure Page will automatically create pixel
groups even if the image is noisy. It does not
require all the pixels in a group to have identical
values. It can operate either on color values or
orientations, and can optionally create separate
groups for the contiguous subsets of a set of
similar pixels.
The "Group" button on the Image Page is still
present, but it doesn't work on orientation data, is
not tolerant of noise (it only groups precisely
identical pixels), and cannot be restricted to
contiguous groups.
-
Local material properties can be included in output
files, and queried in the Mesh Data Viewer window.
Select "Aggregate" in the Output pane in the
Analysis Page, and choose "Material Constants" in
the Output menu.
-
Multiple output items can be included on a single
line of an output file by choosing "Concatenate" in
the Output pane on the Analysis Page.
|
2.1.17 |
-
New Features:
-
The pixel selection tools that use pixel color now
have equivalents that use orientation, for selecting
pixels in a Microstructure that contains an EBSD
orientation map.
In the Pixel Selection page, the Orientation Range
method selects all pixels whose misorientation with
respect to a given orientation is less than a given
threshold. In the Pixel Selection toolbox in a
graphics window, the Orientation tool selects all
pixels whose misorientation with the clicked pixel
is less than the given threshold, while the
OrientationBurn tool selects contiguous pixels
meeting the same criterion.
The Pixel Info toolbox in the graphics windows can
also compute the misorientation of the clicked pixel
with a reference pixel, which is set using the Set
Reference Point button.
The misorientation is defined as the rotation that
brings one orientation into agreement with another.
Since it's a crystalline lattice that's rotating,
there may be more than one equivalent rotation,
depending on the lattice symmetry. All of the
misorientation tools have a lattice_symmetry
argument, which can be given as a space group number
or a point group name in the Schoenflies or
International conventions. The rotation that
aligns the lattices is expressed in axis/angle form,
and the misorientation is the absolute value of the
angle, minimized over the equivalent orientations of
the lattice.
The Debug menu in the main OOF2 window now contains
a Misorientation Calculator, which computes the
misorientation between two orientations, given a
lattice symmetry.
-
The new element homogeneity algorithm introduced in
2.1.16 is now much faster.
-
Bug Fixes:
-
Fixed a bug that could create inconsistent Skeleton
boundaries when using the Rationalize modifier on
periodic Skeletons. This could make it impossible to
create a Mesh from a Skeleton.
-
Fixed a bug in the Quaternion class in some limiting
cases.
|
2.1.16 |
-
Simpler and much more reliable code for computing element
homogeneity.
|
2.1.15 |
-
Fixed a problem with displaying images in some situations,
due to changes in the ImageMagick library.
-
Fixed a bug in the widgets for choosing Skeleton groups
when used as command arguments.
|
2.1.14 |
-
Bug Fixes:
-
Fixed a bug that could cause spurious error messages
when solving time-dependent problems involving both
thermal diffusion and elasticity.
-
Fixed bugs that were raising spurious error messages in
Relax.
-
Fixed a big in Fix Illegal Elements.
-
Fixed a bug that caused crashes during illegal
Skeleton node moves in debug mode.
-
Fixed Copy_All_Solvers.
-
Fixed a bug that was causing OOF2 to fail to load when
built with gcc 7.
|
2.1.13 |
-
New Features:
-
OOF2 now uses
the Eigen
linear algebra package. Matrix operations should be
noticably faster.
-
More OOF2 operations are done in parallel if your
compiler supports openMP and the --enable-openMP
option is given when OOF2 is built. Speed-ups may not
be noticable in small systems.
-
Bug Fixes:
-
Fixed a bug that was sometimes causing SnapRefine to
create illegal elements and sometimes computing
segment homogeneities incorrectly.
|
2.1.12 |
-
Bug Fixes:
-
Fixed a bug that was causing abaqus output for large
Meshes to be very slow.
-
Fixed a bug that was effectively making all unmeshable
pixel groups meshable.
-
Fixed a bug in annealing and smoothing periodic skeletons.
-
Fixed the Range output.
-
Fixed a bug in logarithmic progress bars.
-
Building and installing:
-
A
separate swig
installation is unnecessary. OOF2 now includes
its own copy of swig.
-
OOF2 now
uses
Google's tcmalloc library for memory allocation.
-
Linux systems that declare themselves as "linux3" in
python are accomodated.
|
2.1.11 |
This list combines changes in versions 2.1.10 and 2.1.11.
-
New Features:
-
Compatibility with the clang++ compiler on OS X 10.9.
-
Bug Fixes:
-
Fixed a possible divide by zero error that could arise
from an unlikely and perverse choice of endpoints for
a cross section.
-
Fixed a bug that could occur when two Skeleton edge
boundaries wrapped around a single element in opposite
directions.
|
2.1.9 |
Version 2.1.8 was never released publicly. This list combines
changes in versions 2.1.8 and 2.1.9.
-
New Features:
-
The GUI Logging menu now contains a "Pause" button,
which is handy when using the gui logging machinery to
record a demo.
-
The build scripts now work on Macs using the Gentoo
prefix package manager.
-
Bug Fixes:
-
Fixed a bug in abaqus format for saving skeletons.
-
The Save button on the Microstructure page now allows
the file format to be specified.
-
Dense matrix multiplications now use a lot less memory.
-
Fixed a bug in the copying of Neumann boundary conditions.
-
Fixed the pole figure tests in the TEST directory.
|
2.1.7 |
-
New Feature:
-
The build scripts now check for the presence of the
GraphicsMagick package, which is not a substitute for
ImageMagick, no matter what they might claim.
-
Bug Fix:
-
Pole figures are generated from the Materials'
orientation properties, not from the orientation maps
directly. This allows them to be made for
Microstructures that don't use orientation maps.
-
The hemisphere argument to the pole figure
command has been removed, because it was confusing.
Plots are now always limited to one hemisphere.
Contact us if that's a problem for you, and we can
figure something out.
|
2.1.6 |
-
New Features:
-
There is now a "Generic" orientation map data file
reader that ought to be able to read most EBSD files.
It can flip the data in the x or y directions and add
an offset to the angles, so it can adapt to different
coordinate and orientation conventions.
-
The TSL and TSL2 orientation map readers can now also
flip the data and offset the angles, although the new
Generic reader makes these readers unnecessary.
-
The Orientation Map menu now contains a "Pole Figure"
menu item. It generates pole figures in pdf format
from any Microstructure. The orientations are
obtained from the Microstructure's Materials, so the
command is most useful if the Materials' orientations
come from an orientation map.
-
Bug Fixes:
-
Made changes to make the code compatible with the
clang compiler in OS X 10.7.
-
Fixed an image modification memory leak.
-
Fixed a bug in reporting malformed materials.
-
Fixed a bug in setting the default display parameters
for selected pixels.
-
Fixed the Skeleton boundary display method, which was
confusing the line width and the arrow size.
|
2.1.5 |
-
Bug Fixes:
-
Rank 2 tensor parameters in scripts and ascii data
files were being written in the wrong format, and
components less than 1.e-6 were being truncated to
zero.
-
The Tetragonal elasticity modulus was being stored
incorrectly in binary data files.
|
2.1.4 |
-
Modifications:
-
The default values of the Hexagonal and Tetragonal
elastic moduli in the GUI widgets for setting those
values have been changed. The old values corresponded
to singular elastic tensors.
-
Bug Fixes:
-
The program would hang intermittently when computing
contour plots due to a bug in the progress bar code.
-
The program was consuming excessive amounts of memory
during contour plotting.
-
Round-off error was causing the program to crash when
using the OrientationMapProperty with Microstructures
of particular unfortunate geometries.
-
The 9-noded quadrilateral element had a bug that would
crash the program. Users probably shouldn't use this
element anyhow, because it's less efficient and no
more accurate than the 8-noded quadrilateral.
|
2.1.3 |
-
Bug Fix:
-
The program would crash when solving or evaluating
flux output quantities on mesh with an orientation
map.
|
2.1.2 |
-
New and modified features:
-
The sign of the heat source property has been changed,
to make it sane. A positive heat source now adds heat
to the system.
-
The offsets of floating boundary conditions can now be
initialized in time dependent problems. The boundary
conditions are now listed by name in the
Initialization pane (formerly the Field Initialization
pane) on the Solver Page, and can be set via the same
buttons that initialize fields.
-
Bug fixes:
-
Time dependent boundary conditions weren't being
treated correctly in quasistatic problems.
-
There was no way to assign an initial value to the
offset of a floating boundary condition.
-
Administrivia:
-
The PREREQUISITES file has been removed from
the distribution. The same information, only better,
is available here.
|
2.1.1 |
-
New and modified features:
-
New images created from orientation maps are
automatically displayed in the graphics window if
there are no other images present.
-
There is now a new orientation map reader, "TSL2",
which can read some more modern TSL .ang files. There
is no good automatic way of detecting which is the
appropriate reader. Try TSL2, and if it doesn't work,
try TSL.
-
Scheduled Output data files are no longer
automatically rewound, ever. When repeating a
calculation, the files need to be rewound explicitly
if the results of the first calculation should be
overwritten.
-
The "Existing Stream" option for specifying a
destination for output data is has been removed. Use
"Output Stream" instead, even when writing more than
one quantity to a single file.
-
The Schedule_Solution and Scrub_Solution commands in
the OOF.Subproblem menu have been renamed to
Enable_Solution and Disable_Solution. The old names
were silly.
-
The Copy_All_Solvers command has been moved from the
OOF.Subproblem menu to the OOF.Mesh menu.
-
Bug fixes:
-
When typing a time in the graphics window, the cursor
isn't moved to the left after every keystroke.
-
The program no longer assumes that the points in TSL
orientation map files are in order, or that the
coordinates are all positive.
-
Some bugs in the abaqus output for skeletons and
skeleton groups have been fixed.
-
OOF2 will now build with Python 2.7. The setup script
includes a work-around for problems introduced by the
Python 2.7 distutils library.
-
When sending multiple Scheduled Outputs to a single
data file, the order of the outputs is no longer
random.
|
2.1.0 |
See Getting Started with OOF2
2.1.0 for a list of the extensive changes between 2.0.5
and 2.1.0.
|
2.0.5a11 |
-
Bug Fix:
-
Fixed the piezoelectric material property.
|
2.0.5a10 |
-
Bug Fixes:
-
Fixed the geometric strain and plane-stress elasticity
calculations, which had compensating incorrect factors
of 1/2 in some components. Calculations that used
plane-stress and measured or coupled to the xz or yz
components of strain were incorrect. Stresses and the
in-plane components of strain were not affected.
-
Fixed a bug on the Boundary Analysis page. The
destination window's value wasn't being used, so
output only went to the Message Window.
-
Added a temporary hack to work around an Ubuntu bug
that could cause the progress bars to crash the
program in text mode. Progress bars no longer adjust
their length if the window width changes. This won't
be an issue in 2.1 and later releases.
|
2.0.5a9 |
-
Bug Fix:
-
Fixed the image save functionality in displaying
orientation map images.
|
2.0.5a8 |
-
Bug Fix:
-
The setup.py script has been modified to write the
oofconfig.h file to the installation directory tree,
to facilitate building extensions.
-
Additional Features:
-
Property API now includes begin_point and end_point
hooks, called at the start and end of operations at a
particular evaluation point. Properties with expensive
point-specific operations can perform them and cache
the result with this hook.
-
The SmallMatrix class now has an inversion function.
|
2.0.5a7 |
-
Bug Fix:
-
Abaqus output for meshes no longer contains split
nodes at internal boundaries and interfaces.
|
2.0.5a6 |
-
Optimization:
-
Fixed more memory leaks, and added leak checking to
the regression tests.
-
Bug Fix:
-
Fixed a bug in the AutoSkeleton command. It was
specifying the min_distance for SnapRefine in the
wrong units.
-
Hack:
-
The current versions of some of the libraries that
OOF2 uses are put in strange places by the fink
package manager on the Macintosh. The OOF2 build
scripts now include a workaround for this.
|
2.0.5a5 |
-
New Features:
-
The Rationalize Skeleton modifier can remove high
aspect ratio quadrilateral elements.
-
Added a --nanoHUB build option for building
the nanoHUB
version of OOF2. If present, using the console and
loading python scripts are disabled for security
reasons.
-
Optimizations:
-
Fixed a large number of memory leaks.
-
Homogeneity isn't computed when alpha==0.
-
Bug Fixes:
-
Constructing edge boundaries from node groups now
works properly.
-
Fixed bugs in the Skeleton Info toolbox that made it
impossible to select illegal elements by double
clicking in the of a segment's or node's elements.
-
The min_distance parameter for Snap Refine now has a
minimum allowed value of 1/100 the pixel size. This
prevents Snap Refine from creating illegal elements.
|
2.0.5a3 |
-
Bug Fix:
-
The Heat Source property no longer raises an error
when solving a system.
|
2.0.5a2 |
-
Bug Fixes:
-
Modified OOF.Skeleton.Auto so that it uses a non-zero
min_distance in the SnapRefine step. This prevents it
from creating illegal elements, which could trigger a
divide-by-zero error in the Rationalize step. The
divide-by-zero bug was also fixed, although it
shouldn't occur independently.
-
Fixed a round-off error bug that could crash the
program when the pixel size wasn't 1x1 in physical
units.
-
Fixed a bug that prevented mesh data files from
loading when the mesh contained initializers for
out-of-plane fields.
-
Removed some of the adaptive mesh refinement tests
from the regression suite, because they weren't
portable. Apparently our refinement algorithm
unstable and susceptible to round-off error.
|
2.0.5a1 |
-
New Features:
-
Right-clicking on the Graphics Window's Layer List
brings up a pop-up menu for operating on the selected
layer.
-
"Perimeter" display method for drawing the outline of
a Mesh.
-
New Features (still under development and undocumented,
so use them with caution!):
-
New "Interfaces" task page, which defines creates and
manages new "Interface" objects, representing internal
or external physical boundaries in a Microstructure.
Unlike Skeleton Boundaries, Interfaces can be defined
even in the absence of a Skeleton.
-
New Materials must be declared to be either "bulk" or
"interface". The declaration restricts the types of
Properties that can be assigned to them.
-
Interfacial material properties can be assigned to
Interfaces and Skeleton Boundaries.
-
"Edgement" display method for drawing the Mesh
segments that belong to an Interface or Skeleton
Boundary.
-
Bug Fixes:
-
The "Save Image" menu item in the Graphics Window's
"File" menu now works even when the window is
displaying a Microstructure's Materials.
-
Modifying a Skeleton, creating a Mesh, unmodifying the
Skeleton, and then modifying its boundaries no longer
causes an error.
-
Adaptive Mesh Refinement can be applied to a
Subproblem.
-
Defining a Field on a Subproblem no longer
reinitializes the Field in locations where it's
already been defined as part of another Subproblem.
|
2.0.4 |
-
Bug Fixes:
-
Fixed a divide by zero error that could occur if a
Microstructure's x and y dimensions were integers with
y>x.
-
Fixed a script loading bug for python versions ≥
2.4. Code blocks in which the first left parenthesis
ended a line weren't being parsed properly.
-
Fixed a bug that was allowing the CG solver to be used
for some non-symmetric problems.
|
2.0.4b2 |
-
Bug Fixes:
-
OOF2 no longer crashes when quitting on NetBSD
systems.
-
NetBSD systems are recognized by the setup.py file,
and shouldn't require special arguments to build.
|
2.0.4b1 |
-
New Features:
-
Element, Node, and Segment groups in a Skeleton can
now be created from existing Pixel Groups in a
Microstructure.
-
The Skeleton Selection page has new buttons for
clearing and for deleting all Skeleton groups of a
given type.
-
The Image AutoGroup command has a new parameter,
name_template, which determines how the automatically
created pixel groups will be named. Any instance of
'%c' in the template will be replaced by the pixel
color. Any instance of '%n' will be replaced by an
integer.
-
Bug Fixes:
-
TSL orientation map data files with points on a
hexagonal lattice won't crash the program. However,
every other row of data will be ignored, so that the
remaining points are on a rectangular lattice.
-
Angles in TSL data files are read correctly. There
was a degrees vs. radians problem earlier.
|
2.0.4a3 |
-
Various fixes and enhancements to the orientation mapping
code:
-
It's no longer necessary to
specify --enable-orientationmap when
building. Orientation maps are always enabled.
-
TSL and HKL data files can now be read.
-
Pixel groups are automatically created from phase data
in the orientation file.
-
Orientation maps can be converted to Images, so that
OOF2's pixel selection tools can be used on them.
-
The Orientation display method for Microstructures was
badly thought out. There are now two methods:
Orientation displays the orientation of a pixel's
Material, and OrientationMap displays a Microstructure's
orientation map, whether or not it's used in a Material.
-
Orientation maps are now saved in Microstructure data
files.
|
2.0.4a2 |
It turns out that "OIM" is a trademark, so the names of all of
the new features for handling orientation mapping data have
been changed from "OIM" to "Orientation Map".
|
2.0.4a1 |
-
Enhancements:
-
Added a "Deviator" invariant output for symmetric 3x3
tensors, which measures the amount of shear
represented by a tensor.
-
The default initial graphics window size and the
default Active Area display parameters can now be set
in the OOF2.Settings.Graphics_Defaults menu.
-
Setup.py can now take a --with-swig argument, allowing
a non-standard swig program to be used. For example,
if you have swig 1.3 installed as "swig" and swig 1.1
build 883 (the version OOF2 requires) installed as
"swig1.1", you can build OOF2 with python setup.py
build --with-swig=swig1.1 etc.
-
Added support for Orientation Imaging Microscopy data
files. See the OOF2 OIM page.
-
Bug Fixes:
-
Fixed some bugs in the Rationalize Skeleton modifier
that could create inconsistent periodic Skeletons.
-
When a Skeleton node is pinned or unpinned, its
periodic partners are now also pinned or unpinned.
-
The "Copy All..." button on the boundary conditions
pages now also copies the periodic boundary
conditions.
|
2.0.3 |
-
Enhancements:
-
Skeletons may be declared to be periodic in
either the x or y direction, or both. Periodic
boundary conditions can be applied to periodic skeletons.
-
A new "Auto" button has been added to the Skeleton
page. It automatically creates and refines a
Skeleton, given a Microstructure and estimates of the
sizes of the microstructural features.
-
Default values for graphics display attributes (eg, mesh
edge color) can be set via the
OOF.Settings.Graphics_Defaults menu.
-
The setup.py script automatically detects whether or
not libg2c is needed to link the blas libraries.
-
The SnapRefine Skeleton modification method has been
improved. It now trisects element edges where
appropriate.
-
Bug Fixes:
-
OOF2 is now compatible with Python 2.5.
-
Colons are prohibited in the names of Microstructures,
Images, Skeletons, Meshes, SubProblems, and
Properties. They caused errors before.
-
Fixed a bug that reported a spurious material property
collision error when a property with a symmetric
tensor parameter was reloaded from a data file or
script.
-
Fixed a bug that would crash the program if the
Activity Viewer window was closed while progress bars
were still active. Thanks to Yu Dong for the bug
report.
-
Fixed a bug that made Skeleton modifications
fail if the Skeleton or its Microstructure had been
renamed.
|
2.0.2 |
-
Enhancements:
-
Subproblems can now be defined on meshes. Different
subproblems can contain different fields, or can be
defined in different parts of the mesh. See the
manual for more details.
-
Changes to the API for OOF2 extensions are documented in
Appendix B in the manual.
-
The Mesh Info toolbox now lists the Fields that are
defined on Nodes.
-
Added OOF.PixelSelection.Select_Material, which
selects all pixels with a given Material assigned to
them. The specified Material may be "<Any>",
"<None>", or any defined Material.
-
Two new Skeleton modification methods have been added.
SnapRefine refines elements but only divides their
segments at pixel boundaries. SnapAnneal is an
annealing method that only moves nodes to pixel
boundaries.
-
Bug Fixes:
-
Fixed a bug that could crash the program if a Material
was redefined in a data file, and that data file was
loaded after a Mesh was created from a Microstructure
that used the old definition of the Material.
-
Fixed an initialization bug for the cross-section
widget on the analysis page. It was initialized
incorrectly if there were already cross-sections in
the mesh.
-
Fixed the energy computation in the stress-free strain.
-
Fixed the conversion routines for the Goldstein XYZ rotation
convention.
-
Fixed a synchronization bug in the Materials page --
properties added via console/menu operations weren't
synchronizing the Materials page correctly.
-
Added right-hand-side contribution code to the
PlaneFluxEquation, so that plane-stress
stress-free-strains are computed correctly.
-
Fixed a bug in the menus for the Analysis page, which
could cause nonsense output to be generated because
Material precomputation wasn't being done.
-
Progress bars are no longer drawn when using the
--batch flag.
-
The "File/Save/Python Log" dialog box's OK button is
now sensitized more or less correctly. It used to be
insensitive if "File/Load/Script" had been used and
the directory hadn't been changed. It's still not
properly desensitized when the new file name is blank,
but that's less bad than having it always be
insensitive.
-
Fixed a bug that was causing locking errors when
changing Skeleton modifiers.
-
Fixed a bug in the layer editor that caused the gui
tests to fail intermittently, and may have caused the
wrong layers to be sent to the graphics windows in
real life, occasionally.
|
2.0.1 |
-
Enhancements:
-
The extensions subdirectory is now installed
along with the rest of the examples.
-
The text of the tutorials can now be saved to a file
via the Save Text item in the Tutorial
Window's File menu.
-
Bug Fixes:
-
The Load button on the Image page is sensitized
correctly.
-
The GUI tests should run more robustly. There are
still timing problems, though. If a test freezes, try
running it again.
-
Installation on Macintosh OS X should be more
reliable. It's now unnecessary to set the
DYLD_LIBRARY_PATH environment variable on
Macs.
|
2.0.0 |
-
Enhancements:
-
There is now a GUI test suite, in the directory
TEST/GUI.
-
The Boundary Analysis page has been improved, and
doesn't look quite so half-hearted anymore.
-
Typing control-D in the console window no longer
closes the window. It deletes a character instead.
This is less destructive for people whose fingers
think they're using emacs.
-
The pixel information toolbox can now display pixel
colors in either RGB or HSV format.
-
Bug fixes:
-
A bug that could cause incorrect output for quantities
that depend on property data has been fixed. In
particular, the elastic energy density for anisotropic
materials had been computed incorrectly.
-
The tetragonal Cijkl widget and the C4i widget have
been fixed. They were displaying the wrong values for
c26 and d32 respectively. The correct values were
being used internally, though.
-
The orthorhombic Cijkl widget has been fixed. It was
discarding c66 and using c55 instead.
-
The C3v tensor widget is now correct.
-
Skeleton nodes that were dragged outside the bounds of
the microstructure couldn't be dragged back inside.
This has been fixed.
-
The script loader code has been fixed so that it can
handle else, elif, and
except blocks. The new code can still be
confused, but you have to go out of your way to
confuse it.
-
A bug that could crash the program when selecting
pixels with the brush tool has been fixed.
-
The topleft and topright boundary points for
quadrilateral skeletons created on non-square
microstructures are now constructed correctly.
-
The physical dimensions of images were being truncated
to integer values, due to a typo which has been fixed.
This was especially bad for images with sizes less
than one.
|
2.0 beta 8 |
-
Enhancements:
-
The stiffness matrix calculation is faster, by a
factor of 2 or 3.
-
Skeleton element homogeneity calculations are faster
by a factor of 2 or more. Many skeleton operations
benefit from this.
-
The size of the undo buffers can be set, in order to
reduce memory usage for large meshes and
microstructures.
-
The display of empty mesh elements (elements with no
assigned material) can be toggled in the graphics
window's Settings menu.
-
The Mesh Data Viewer updates itself correctly. The
coordinates of the queried point can be edited.
-
Elements can be selected according to their Material.
- Bug fixes:
-
Focussed zooming works properly.
-
python setup.py clean no longer removes the
swig output files unless --swig is specified.
-
Many other bugs were fixed, relating to crashes,
deadlocks, and other misbehavior.
|
2.0 beta 7 |
- Enhancements:
-
The monolithic oofcppcmodule.so has been split into
four separate shared libraries, and the swig-generated
wrappers have each been given their own shared
library. This means that code that's not needed
doesn't have to be loaded, and it makes it possible
for external oof2 extensions to be built without
rebuilding oof2 itself.
-
Chapters on writing extensions to oof2 have been added
to the manual. Example extensions are in
examples/extension.
-
Skeletons and Meshes can be saved in abaqus format.
-
Images saved from graphics windows are now in PDF
format, instead of postscript.
-
The SnapNodes function has been sped up by at least
25%.
-
The TEST subdirectory contains a test suite. The
tests are reasonably, but not completely,
comprehensive for the non-GUI parts of oof2.
-
Crystal orientations can be given in Bunge notation,
as well as all of the other formats.
-
Boundary condition profiles can be saved.
-
The boundary condition dialog box stays open after
assigning a boundary condition, making it easy to
assign multiple conditions.
-
Selected Bug Fixes:
-
Buttons in the Layer Editor window are sensitized
properly even after layers have been deleted.
-
The Conjugate Gradient solver is now the default
solver when the stiffness matrix is symmetric, and
unavailable when it isn't. oof2 is better at noticing
when the matrix is symmetric.
-
An indexing error that was preventing the use of the
IC and ILU preconditioners for plane stress elasticity
problems has been fixed.
-
A bug that confused the microstructure material
display after saving it as pdf or postscript has been
fixed.
-
Rank 2 and rank 3 tensors are now saved properly in
binary data files.
-
Active Areas are now saved with their Microstructures
in data files.
-
A bug in the matrix GUIs has been fixed. Invalid
inputs will no longer crash the program.
-
Warning message pop-up windows don't hang the program
anymore.
-
The gaussian integration order was being computed
incorrectly in a few cases. This has been fixed.
-
Loading a named Property from a data file will no
longer change the parameters of an unnamed Property of
the same type.
-
It's now impossible to choose plane-flux equations
when setting boundary conditions.
- Other Changes:
-
The "configure and make" installation scheme is no
longer available. The only way to build and install
oof2 is to use Python distutils. See the README file
in the source distribution for more information.
-
The force density property has no z-component
anymore.
-
Pixel selections aren't displayed unless there's a
microstructure or image layer displayed in the
graphics window.
-
Commands from the PinNodes toolbox now get a
"skeleton" argument. Old scripts that use commands
like OOF.Graphics_1.Toolbox.Pin_Nodes... will have to
be modified.
-
The 'Refine' SkeletonModifier now has an 'alpha'
parameter, because it uses the effective energy of
skeleton elements to choose the best refinement
geometry. This change will break old scripts, but
they can be fixed by adding "alpha=0.5" to the Refine
arguments.
-
The badly named 'selectable' argument in pixel
selection commands has been changed. It's now
'microstructure' for commands in the
OOF.PixelSelection menu, and 'source' for commands in
the OOF.Graphics_n.Toolbox.Pixel_Select menu.
|
2.0 beta 6 |
-
Enhancements:
-
Switched gui libraries from gtk+1.2 to gtk+2.6. 2.6
should be much easier to install.
-
Added a "Settings" menu to the main window, and put a
"Fonts" submenu in it. Fonts/Widgets command changes
the font used in the GUI, and Fonts/Fixed changes the
font used in the Message window and other text
displays.
-
Added a "Theme" command to the Settings menu, allowing
Gnome gui skins to be used.
-
If the file ".oof2rc" exists in the user's home
directory, the OOF2 menu commands in it will be
processed at the start of every OOF2 session.
-
Moved the image-save menu item from OOF.Image.Save to
OOF.File.Save.Image, for consistency with the other
who objects.
-
Bug fixes:
-
Fixed a sign error in the flux output calculation that
was causing incorrect results for fluxes with offset
values, such as stress when the thermal expansion
property has a non-zero T0.
-
Fixed a bug that made it impossible to copy pixel groups.
-
Fixed a bug that could cause crashes when switching
between contour plots with vastly different ranges of
values.
-
Changed the way the matrix symmetrization is done,
making it independent of the order in which equations
are defined. This makes the preconditioners work more
reliably.
|
2.0 beta 5.1 |
This release simply corrects a few errors in the tutorials.
There is no functional difference between beta 5 and beta 5.1.
|
2.0 beta 5 |
-
New Features:
-
During execution, a Python log of the executed
commands is stored in a temporary file. If the
program exits properly, the file is removed.
-
Mesh elements with no Material assigned to them aren't
drawn in the graphics window displays. Skeleton
elements with no Material are still drawn, though.
-
Meshes are now automatically displayed, like
Skeletons.
-
The Viewer toolbox has bee simplified and improved.
-
The Property hierarchy has been reorganized and
rationalized. Elasticity is a now a
subcategory of Mechanical, which also
includes ForceDensity (eg, gravity). Thermal
Conductivity and HeatSource are
subcategories of Thermal. A new
Couplings category includes
ThermalExpansion and
PiezoElectricity.
-
Bug Fixes:
-
A sign error was fixed that was causing thermal
expansion with a non-zero T0 to yield incorrect
results. Other properties that enter the equations in
a similar way (such as gravitational forces) were
similarly affected.
-
The Perimeter display for Meshes wasn't working, and
has been removed. If anybody wants it back, let us
know, and we'll fix it.
-
The solver now complains if asked to solve an equation
to which no Materials contribute.
-
Field initializers are now stored correctly in binary
data files.
-
The calculation of the effective energy of
quadrilateral elements was fixed. The elements were
much too susceptible to deformation.
-
A submatrix extraction bug that led to crashes when
the stiffness matrix contained empty rows has been
fixed.
-
A bug in the element-finding code that could cause
infinite loops when selecting elements with the
Skeleton Info toolbox has been fixed.
-
A bug in deleting boundaries from a copied Skeleton
has been fixed.
-
A deadlock when attempting to copy data from a Mesh to
itself has been eliminated.
-
A bug that could raise an exception when selecting a
node in "keyboard" mode in the Move Node toolbox has
been fixed.
-
The "Meshable" button in the Microstructure page is
now set properly when the selected group changes.
-
A bug, introduced in beta 4, that prevented Materials
from being saved has been fixed.
-
Cancelling the "Save Profile" dialog doesn't cause an
error anymore.
-
A bug that was making modified Images lose their names
has been fixed.
-
A bug that was preventing the Repeat button in the
Selection toolboxes from working properly, sometimes,
has been fixed.
-
Opening a Mesh Data Viewer window when no Fields are
defined no longer crashes the program.
-
Script Interface Changes:
-
The following toolbox commands now take a single Point
argument, instead of separate x and y arguments:
- OOF.Graphics_n.Toolbox.Move_Nodes.SelectNode
- OOF.Graphics_n.Toolbox.Skeleton_Info.QueryElement
- OOF.Graphics_n.Toolbox.Skeleton_Info.QueryNode
- OOF.Graphics_n.Toolbox.Skeleton_Info.QuerySegment
- OOF.Graphics_n.Toolbox.Mesh_Info.QueryElement
- OOF.Graphics_n.Toolbox.Mesh_Info.QueryNode
- OOF.Graphics_n.Toolbox.Pin_Nodes.Pin
- OOF.Graphics_n.Toolbox.Pin_Nodes.UnPin
- OOF.Graphics_n.Toolbox.Pin_Nodes.TogglePin
-
The changes in the Property hierarchy described above
affect all of the Property menus, as well as the way
in which Properties are specified when assembling
Materials.
-
The OOF.Mesh.New command now takes an
element_types argument instead of the
element3 and element4 arguments.
The value of element_types is a list of names
of elements.
-
Neumann boundary conditions aren't as wordy. The
profile set can be abbreviated as
profile=[profile1, profile2] instead of
profile=FluxProfileSet([profile1,profile2]).
The old verbose format is still acceptable, though.
-
Optimizations:
-
The area fractions of pixel categories within Skeleton
elements are now computed via a new algorithm, which
is 3-10 times faster than the old one, and scales
better with element size. (Thanks to Jim Sethna for
suggesting the new method).
|
2.0 beta 4 |
-
New Features:
-
Added a skeleton modifier, called Relax, that uses the
local measure of inhomogeneity and shape quality to
improve the mesh. The modifier creates a finite
element mesh and minimizes an energy functional,
analogous to the one of an elastic-plastic solid.
-
Added the Coulomb equation, electric fields, and
piezoelectric couplings for all the crystallographic
point groups.
-
Added a Newton-Raphson solver (for future
applications).
-
Added a mechanism to make the stiffness matrix
symmetric, if possible. The mesh status window in the
solver page reports the symmetry status of the mesh.
-
Added a display method that colors skeleton elements
according to their effective energy.
-
Improvements:
-
Improved the 'FixIllegal' Skeleton modifier.
-
Interface Changes:
-
Changed the 'skelname' parameter in all PinNodes
operations to 'skeleton'.
-
Added a "Pin Nodes" page to accomodate pinning
processes that don't need mouse clicks.
-
Put widgets for the DirectOutput parameters "comment
character" and "separator" in the Mesh Cross-Section
toolbox.
-
Bug Fixes:
-
Fixed a bug in the destruction of Skeletons when the
undo buffer filled up.
-
Fixed a bug in which the selected Skeleton
boundary would disappear from the display when
its display parameters were edited.
-
Fixed a bug in which the Rationalize skeleton modifier
sometimes destroyed skeleton edge boundaries.
-
Fixed menu sensitization errors. The Layer/Edit menu
item was sensitive even when no layer was selected.
The File/Save menu items were sensitive if there was
nothing to save.
-
Fixed a bug in the node-hashing code which prevented
node selections from working on sparse
high-aspect-ratio skeletons.
-
Made it impossible to delete predefined Properties.
-
Added clean-up code to the Mesh Cross-Section widget.
This fixes a bug where GTK errors would arise after
this widget had been deselected on the analysis page.
-
Fixed the broken "Prev" and "Next" buttons. They
worked in 2.0.b2 but not in 2.0.b3.
-
Fixed signalling problems in the skeleton and movenode
tutorials. The "Next" button wasn't sensitizing
correctly for many tutorial pages.
-
Fixed a bug in the labelled slider widgets which could
cause them to reject typed in values.
-
Eliminated the spurious warnings about uncallable
objects at shut down time.
|
2.0 beta 3 |
-
New Features:
-
Added a "--with-lapack=-l<custom lapack>"
argument to the configuration script.
-
Completely reworked the Analysis page in the main OOF2
window.
-
Command Line Interface Changes. (These changes all
potentially break scripts. Sorry about that. Contact us
if you need to convert scripts from the old format to the
new.)
-
Simplified the names of the Property classes
(Elasticity:Anisotropic:CubicElasticity is now
Elasticity:Anisotropic:Cubic). Added symmetries for
thermal expansion and thermal conductivity. Changed
the display of Properties in the Materials window so
that the full names are shown.
-
The OOF.Mesh.Boundary_Conditions.New menu has been
replaced with an OOF.Mesh.Boundary_Conditions.New
command. The old submenus (Dirichlet, Neumann, etc)
are now arguments to the New command. Similar changes
were made to the OOF.Mesh.Profiles.New menu. This is
more in line with the way other commands work.
-
Simple representations of functions (eg boundary
condition profiles) are now allowed in scripts.
Instead of "function=XYStrFunction('x+y')" it's now
possible to use "function='x+y'". Doing this requires
that *all* arguments used in scripts are keyword
arguments, so 'Gray(0.8)' is now "Gray(value=0.8)".
-
Graphical User Interface Changes:
-
Simplified the Mesh Cross Section toolbox and display
somewhat, by removing the Autodisplay button and
adding a '<None>' entry in the cross section
list.
-
Moved field and flux display out of the Mesh Info
toolbox and into a separate data viewer window. It
can display more values and is a better use of screen
real estate.
-
Boundary construction is now context-sensitive, the
GUI does not present disallowed "Directors" (i.e. you
can't pick left-to-right if your segments form a
loop).
-
Graphical User Interface Bug Fixes:
-
Fixed a sensitization error in dialog boxes with
function parameters.
-
Fixed a bug in which using the window manager's close
button (instead of the window's "Cancel" button) to
close a file selection window could lead to a crash.
-
Command Line Interface Bug Fixes:
-
Two Pixel Groups cannot have the same names in a
Microstructure -- it was possible before, because we
thought it would be fun! Not any more.
-
General Bug Fixes:
-
Starting oof2 in the background ("% oof2 &") works in
GUI mode.
-
Pixel selection and material assignment operations now
all respect the active area, if appropriate.
-
The pixel selection modifier 'Intersect Group' now
works correctly.
-
Attempting to move Skeleton nodes when no Skeleton is
displayed doesn't generate errors anymore.
-
Boundary creation and removal operations which take
place in skeletons are now propagated to meshes
created from that skeleton.
-
Boundary modification now actually works for skeletons
which differ from their parents only by node moves,
and these boundary modifications are propagated to the
meshes.
-
Fixed a divide by zero error that could arise when
selecting nodes in a Skeleton with an unfortunate
choice of dimensions.
-
Required that progress bar delay time be an integer
number of milliseconds.
-
Made the graphics windows (more) thread safe.
-
Fixed the tutorial bug which would sometimes enable
the "Next" button when the last entry was displayed.
-
Fixed a bug in the stopping criterion for iterative
skeleton modifiers.
-
Fixed boundary intersection checking and the reset
function for unpromoting promoted floating boundary
conditions. These were resulting in spurious reports
of boundary condition collisions.
-
Output Bug Fixes:
-
Fixed a bug in the post-script output for saved images
-- selections were being drawn incorrectly for
non-square images.
-
Added an extra margin around postscript output, so
rounding errors in the bounding box or clipping path
don't cause a loss of data.
-
Data files saved in the "script" format load
correctly.
-
Skeleton groups (of nodes, segments, and elements) are
stored in data files.
-
Selecting "actual" for the the "where" parameter in
Mesh displays works even if the displacement field
isn't defined on the Mesh.
-
Optimizations:
-
Upon creating simple skeleton, elements' homogeneity
is automatically set to be 1.0.
-
When finding transition points for Snap Nodes, the
homogeneity of the element is always checked
beforehand -- Purely homogeneous elements will not be
looked at.
-
Stiffness matrix reconstruction is now skipped if it's
not required by changes in the status of the mesh.
|
2.0 beta 2 |
- Used a common scheme for all parameter names.
|