Introduction
|
OOF2 version 2.3.3 is
now available.
The major difference between 2.3 and 2.2 is that 2.3 uses
Python3 instead of Python2. There are other significant
improvements. See the change log
for details.
OOF2 version 2.3.1 can now be run on
the nanoHUB.
See the
announcement
for more details.
OOF2 retains (almost) all of the features of OOF1,
although it does not read OOF1 data files. The latest
versions of OOF1, however, can write OOF2 data files.
OOF2 is a set of C++ classes for finite elements and
material properties, tied together in a Python
infrastructure.
Python
is an easy to use, high-level, object-oriented
scripting language.
OOF2 is in
an Active
Development status.
|
|
Current Features |
Here is a brief list of OOF2 features:
-
OOF2 can potentially handle any problem of the form:
- "Flux = Modulus times gradient of Field"
and
- "divergence of Flux = Applied Force".
Currently OOF2 can solve the heat equation, mechanical force
balance, and the Coulomb equation. It includes material
properties for linear elasticity, body forces (gravity),
thermal conductivity, heat sources, dielectric permittivity,
space charge (in an approximation in which charges interact
only with the local polarization field, not with other charges
at a distance), thermal expansion, and piezoelectricity.
-
New Fields and Fluxes can be added with only a few lines of
Python code. New material properties can be added with a few
lines of Python code, or, if speed is an issue, in C++.
(Defining new Properties is not quite as simple as defining
new Fields.) Instructions for adding features to OOF2 are
given in the manual.
-
Materials are built from a collection of Properties. Any
combination of Properties is allowed, with reasonable
constraints on completeness and unambiguity.
-
OOF2 contains a small variety of finite elements and new ones
can be added easily in C++. OOF2 has 3 noded triangles, 4
noded quadrilaterals, 6 noded subparametric triangles, and 8
noded subparametric quadrilaterals.
-
OOF2 generates and refines triangular,
quadrilateral, and mixed meshes from image data.
Element order is specified independently from
element geometry.
-
OOF2 incorporates nonlinear solvers. (But not many
non-linear material properties are yet present.)
-
OOF2 can refine meshes adaptively using a-posteriori
error estimators.
-
OOF2 is threaded, meaning that it can perform
multiple calculations simultaneously.
OOF2 is not yet fully parallel -- many operations that could
be done in parallel are not.
-
OOF2 is completely scriptable in Python, and can
also be run interactively from a graphical user
interface.
-
OOF2 has flexible graphical output.
-
OOF2 can export mesh geometry directly into
abaqus
input files.
-
OOF2 can read EBSD
orientation map data files. See the
OOF2 Orientation Mapping
page for more information.
-
OOF2 can solve time dependent problems.
-
OOF2 can solve problems in
which the flux cannot be written as modulus times
field gradients.
|
|
Future Features |
We're working on including the following features in OOF2:
-
Expanding the scope of the problems solved.
-
Non-linear physics, including plasticity and large strain.
-
Line elements, as well as elements with higher order
continuity (for phase-field or strain-gradient
models).
-
Parallel execution.
-
OOF2 is the basis for OOF3D, which solves 3
dimensional problems. OOF2 and OOF3D are separate programs,
but are more or less evolving together.
|
|
System Requirements |
OOF2 will run on any computer running a relatively recent
variant of the Unix operating system, including Linux and
Macintosh, as long as the prerequisites listed below are
available.
OOF2 requires
-
The Python
scripting language, version 3.8 or later.
-
The OOFCanvas library, version
1.1.0 or later.
-
The Image
Magick++ image processing library, version 6.x. OOF2
does not work with ImageMagick 7.
-
The Gtk3
graphics toolkit. OOF2 requires version
3.22 or later, but not as late as version 4.0.
-
The Python bindings for
Gtk, PyGObject,
version 3.26 or later.
-
The BLAS
basic linear algebra subroutines and the lapack
linear algebra library. These are provided with
many computer systems.
In addition, if you are going to be compiling OOF2, you
should have
Detailed instructions for installing the prerequisites
on various operating systems may be
found here.
|
|
Download
|
Please read the Disclaimer and
Copyright notice before downloading this
software.
Useful links:
|
|
Installation
|
Please read the Disclaimer and
Copyright notice before installing this
software.
This is just a summary! Please see
the README file for the
details.
-
Install the
OOF2 prerequisites, which are
listed above. We strongly
recommend that you use a package management system to do
so.
Instructions for
installing the prerequisites on various operating
systems are
available here.
-
Mac users
running MacPorts
can download and install oof2 and its
prerequisites by typing
sudo port install oof2 +quartz -x11
See the full
instructions, and be aware that the version on
MacPorts may not be up to date. This page will always
be updated sooner.
-
Users of Arch Linux can install OOF2 and its
prerequisites using
the AUR
package manager. (This package is not
maintained by NIST.)
-
The downloaded file is a compressed tar archive. If
your browser didn't unpack it for you, unpack it
like this:
tar -xf oof2-2.3.0.tar.gz
This will create a directory called "oof2-2.3.0".
-
Make a build directory and cd to it.
-
Read the README file and follow the
directions in it. Additional system-specific installation
notes are available here, and
some frequently asked questions are answered in
the FAQ.
Configure OOF2 by using cmake or ccmake.
If you want to use the default settings, type
cmake [path to the build directory]
If you want to modify the default settings, type
ccmake [path to the build directory]
Changing the default settings will allow you to control
where OOF2 is installed and what version of Python it
uses, among other things.
Build OOF2 by typing
make
followed by
make install
to install it. If you're installing in a
a system directory, you'll need to type
sudo make install
instead. But please read
the README file.
-
If you like, run the test suites located in the
TEST and TEST/GUI subdirectories of the OOF2
distribution. Read the README files in those
directories for instructions. You can also run the tests
via the programs oof2-test and
oof2-guitest which are installed when OOF2 is
installed.
|
|
Getting Started
|
After installing OOF2, you should have an executable
file named oof2 in a bin directory in your
execution path. You can now simply type oof2
at your shell prompt, and OOF2 will start up.
OOF also has many command line options. You can get a
summary of them by typing oof2 --help.
By default, OOF runs in graphics mode, opening a couple
of windows to get you started. If you don't want this,
you can use the --text option to run it in
command-line mode.
Most importantly, explore the Tutorials in the
Help menu. (The tutorials are only available in
graphics mode.) Also, please please read the
OOF2 Manual.
If you run into trouble, please check the
FAQ.
|
|
Manual
|
The OOF2 Manual is available
at http://www.ctcms.nist.gov/~langer/oof2man/index.html.
You can also download the html
files as a gzipped tar file (8926465 bytes).
Use tar -xzf oof2man.tgz to unpack it.
The manual is being updated, and a new version will be
available soon. The old version is still informative in
general, but some details are incorrect.
|
|
Reporting Bugs
|
Please check the list of known bugs
and the FAQ before submitting bug
reports. Send bug reports via e-mail
to oof_bugs@list.nist.gov.
Include the following information with your report:
-
The type of computer and operating system that
you're using.
-
The version of OOF2 that you're using. Starting
OOF2 with the --version flag will print the
version number.
-
A complete description of the problem: what
happened, and what did you do to make it happen? Be
as specific and detailed as possible.
-
If possible, an OOF2 script that reproduces the
problem. A script can be saved from the
"File/Save/Python Log" menu item in the main OOF2
window, or the "Save" button in the "Quit" dialog
box.
If OOF2 crashes before you get a chance to save a
script, a script will be saved automatically in
the directory that your operating system uses for
temporary files, which is probably /tmp.
Look for a file with oof2 in its name
in a subdirectory of /tmp.
Be sure to include any files that the script requires, such
as images or other scripts that have been read.
It is very difficult to fix a bug if we can't reproduce the
problem for ourselves, so include as much information as
possible.
|
|
Disclaimer and Copyright
|
The research software provided on this web site
("software") is provided by NIST as a public
service. You may use, copy and distribute copies of
the software in any medium, provided that you keep
intact this entire notice. You may improve, modify and
create derivative works of the software or any portion
of the software, and you may copy and distribute such
modifications or works. Modified works should carry a
notice stating that you changed the software and
should note the date and nature of any such
change. Please explicitly acknowledge the National
Institute of Standards and Technology as the source of
the software. To facilitate maintenance we ask that
before distributing modified versions of this
software, you first contact the authors at
oof_manager@list.nist.gov.
The software is expressly provided "AS IS". NIST MAKES
NO WARRANTY OF ANY KIND, EXPRESS, IMPLIED, IN FACT OR
ARISING BY OPERATION OF LAW, INCLUDING, WITHOUT
LIMITATION, THE IMPLIED WARRANTY OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE, NON-INFRINGEMENT AND
DATA ACCURACY. NIST NEITHER REPRESENTS NOR WARRANTS
THAT THE OPERATION OF THE SOFTWARE WILL BE
UNINTERRUPTED OR ERROR-FREE, OR THAT ANY DEFECTS WILL
BE CORRECTED. NIST DOES NOT WARRANT OR MAKE ANY
REPRESENTATIONS REGARDING THE USE OF THE SOFTWARE OR
THE RESULTS THEREOF, INCLUDING BUT NOT LIMITED TO THE
CORRECTNESS, ACCURACY, RELIABILITY, OR USEFULNESS OF
THE SOFTWARE.
You are solely responsible for determining the
appropriateness of using and distributing the software
and you assume all risks associated with its use,
including but not limited to the risks and costs of
program errors, compliance with applicable laws,
damage to or loss of data, programs or equipment, and
the unavailability or interruption of operation. This
software is not intended to be used in any situation
where a failure could cause risk of injury or damage
to property. The software was developed by NIST
employees. NIST employee contributions are not subject
to copyright protection within the United States.
|
|