Example codes
and tutorials
The (Not-so) Quick Guide
List of tutorials/demo codes
Single-Physics Problems
Poisson
Adaptivity illustrated for Poisson
Advection-Diffusion
Unsteady heat equation
Linear wave equation
The Young-Laplace equation
Navier-Stokes
Free-surface Navier-Stokes
Axisymmetric Navier-Stokes
Solid mechanics
Beam structures
Shell structures
Multi-physics Problems
Fluid-structure interaction
Boussinesq convection
Steady thermoelasticity
Methods-based example codes and tutorials
Mesh generation
Linear solvers and preconditioners
Visualisation of the results
Parallel processing
How to write a new element
How to write a new refineable element
Default nonlinear solvers -- the sequence of action functions
...
Documentation
FE theory and top-down discussion of the data structure
The (Not-so) Quick Guide
Comprehensive bottom-up discussion of the data structure
List of available structured and unstructured meshes
Linear solvers and preconditioners
Visualisation of the results
Parallel processing
Coding conventions and C++ style
Creating documentation
Optimisation - robustness vs. "raw speed"
Linear vs. nonlinear problems
Storing shape functions
Changing the default "full" integration scheme
Disabling the ALE formulation of unsteady equations
C vs. C++ output
Different sparse assembly techniques and the STL memory pool
Publications
Publications
Talks
Journal publications
Theses
Picture show
Download
Copyright
Download/installation instructions
Download page
FAQ & Contact
FAQ
Change log
Bugs and other known problems
Completeness of the library & our "To-Do List"
Contact the developers
Get involved

 


Beta release!

Please note that the library has not been "officially" released. While we continue to work on the documentation, these web pages are likely to contain broken links and documents in draft form. Please send an email to

oomph-lib AT maths DOT man DOT ac DOT uk

if you wish to be informed of the library's "official" release.

Change log

This document provides an overview of the major changes between different "official" releases of oomph-lib. We provide access to the complete log from our previous (non-public) svn repository. This covers all changes from the intial release of the library (svn revision 132) up to the move to the new public repository, see here for details on how to access this repository, which contains a detailed log of subsequent changes.

You may also want to consult the entries in our bugzilla-based bug-and-feature-tracking system, accessible online at

http://oomph-lib.maths.man.ac.uk/bugzilla

for known bugs and their resolution.

The remainder of this document covers the following issues:



Policy on interface changes

We obviously try to avoid interface changes as much as possible as they may force users to adjust their code when upgrading to a new version. We will only change interfaces (names of objects and/or member functions, or the number or order of their arguments) if
  1. The previously chosen name turned out to be too ambiguous. For instance, the change from
       Problem::actions_before_solve() 
    
    to
       Problem::actions_before_newton_solve()
    
    became necessary because of the addition of further nonlinear (but non-Newton) solvers (e.g. the segregated FSI solver). Since such solvers may call the Newton solver themselves, a more fine-grained control over what we mean by "solving" was required.

  2. The previously chosen name violated our own coding conventions. For instance,
       FiniteElement::n_nodal_position_type()
    
    had to be changed to
       FiniteElement::nnodal_position_type()
    
    because we do not want underscores after the leading "n" in an access function that returns the number of certain objects.

  3. The order of the function arguments violated our own coding conventions. For instance,
       FiniteElement::get_x(Vector<double>& s, const unsigned& t,...) 
    
    had to be changed to
       FiniteElement::get_x(const unsigned& t, Vector<double>& s,...) 
    
    because the discrete "time" argument always comes first.

Changes to function or object names are easy to detect because the compiler will not find the old version when linking against a new version of the library, encouraging the user to consult this list to (hopefully) find the appropriate replacement.

Changes to the order of function arguments can be very dangerous: if the order of two arguments of the same type is exchanged the compiler cannot detect the change to the interface but the code is likely to compute different results. To facilitate the detection of such changes, the new version of such functions contains an explicit warnings that can be enabled by compiling the library with the macro WARN_ABOUT_SUBTLY_CHANGED_OOMPH_INTERFACES. (For a gcc compiler this is done with the compiler flag -DWARN_ABOUT_SUBTLY_CHANGED_OOMPH_INTERFACES).

Here is an example of a function in which the order of the two unsigned arguments was changed. If compiled with WARN_ABOUT_SUBTLY_CHANGED_OOMPH_INTERFACES, the code will issue an appropriate warning every time this function is called.

// Function of two unsigned arguments whose order has changed
// since the previous release
void SomeClass::some_function(const unsigned& t, const unsigned& i)
{

  [...]

 #ifdef WARN_ABOUT_SUBTLY_CHANGED_OOMPH_INTERFACES

   // Throw an oomph-lib warning to alert the user to the change
   // in the oder of the arguments
   OomphLibWarning("Warning: Order of interfaces has changed",
                   "SomeClass::some_function(...)",
                   OOMPH_EXCEPTION_LOCATION);

 #endif

  [...]

}

Obviously, you should only compile the library with WARN_ABOUT_SUBTLY_CHANGED_OOMPH_INTERFACES if you encounter problems after upgrading to a new version.


Changes between version 0.85 and 0.9

Major new functionality


Major interface changes

-
 SolidFiniteElement::add_jacobian_for_solid_ic() 
becomes
 SolidFiniteElement::fill_in_jacobian_for_solid_ic()


-
 SolidFiniteElement::add_residuals_for_ic()
becomes
 SolidFiniteElement::fill_in_residuals_for_solid_ic()


-
 SolidFiniteElement::get_residuals_for_ic()
becomes
 SolidFiniteElement::fill_in_residuals_for_solid_ic()




Changes between version 0.8 and 0.85

Major new functionality


Major interface changes



PDF file

A pdf version of this document is available.
Generated on Thu Aug 13 13:16:47 2009 by  doxygen 1.4.7