parallel_self_tests: Add ability to run tests on a list of dirs given in a file

git-svn-id: svn+ssh://vummath.ma.man.ac.uk/home/svn-oomphlib/public/trunk@504 595e1d82-adf1-4282-bac7-b6073fa2ca8e
Modified the fpdiff.py script so that it *should* work with python 2.x
and 3.x



git-svn-id: svn+ssh://vummath.ma.man.ac.uk/home/svn-oomphlib/public/trunk@505 595e1d82-adf1-4282-bac7-b6073fa2ca8e
Bypassed David's wo_d_unsteady_heat_midpoint self-tests (bdf and midpoint)
since both fail fairly spectacularly and David isn't around to fix them
at the moment.



git-svn-id: svn+ssh://vummath.ma.man.ac.uk/home/svn-oomphlib/public/trunk@506 595e1d82-adf1-4282-bac7-b6073fa2ca8e
-- Change in exception handling. Error messages now get 
   spawned in destructor of the OomphException. This
   allows them to be suppressed, e.g. when an exception is
   caught. If it's not caught, the destructor may not be called.
   This is handled via the set_terminate(...) function implemented
   in the TerminateHelper namespace. It's called automatically in
   the problem constructor but can be called by everybody. 

-- Changed all test for hanging nodes in specific FaceElements 
   that can't (yet) deal with hanging nodes so that the test
   is only done on their own nodes -- also dealt with various
   memory leaks that the old (stupid) method of checking this
   had created. 

     IMPORTANT: The new method should be used for all new
                face elements! 

   Strategy: build face element first, then check if any of its
   nodes are hanging (this works because face elements are only
   attached to meshes after adaptation (if any) so hang status
   of nodes is already clear). Check that bulk element is 3D and
   refineable first. If it's not the test is obviously not needed.
 
-- Introduced a flag that allows navier stokes preconditoner to work
   with meshes that contain elements that are not of the "right type"
   without issuing warnings -- they get ignored anyway).

-- Made autogen.sh's "order of argument checker" work with variable
   rather than hard-coded config/configure_options/current.

-- Changed parallel mumps test code so that mpi doesn't work with
   copy of mpi_comm_world to stop complaints.

-- Changed boundary enumeration in unstructured torus and point source
   Helmholtz to  suppress warnings about missing boundaries

-- Allowed use of non-navier-stokes elements in ns preconditioner
   for flux control. 

-- Deleted various no-longer used files (headers and demo drivers)
   in melting/heat transfer directory.

-- Added Stefan Boltzmann test code.

-- Added demo-code (working) to demo_drivers/linear_solvers/ to
   illustrate how to write a simple block diagonal preconditioner 
   from scratch (using linear elasticity as an example). Not
   self-tested at the moment, but could form basis
   of tutorial. There's also an (incomplete) code that will/may at some
   point do the same for the LSC preconditioner -- doesn't compile yet
   so added via EXTRA_DIST.

-- Added empty disable_ALE() to spherical_advection_diffusion_elements.h
   to suppress warning; ALE isn't implemented anyway.



git-svn-id: svn+ssh://vummath.ma.man.ac.uk/home/svn-oomphlib/public/trunk@507 595e1d82-adf1-4282-bac7-b6073fa2ca8e
Matthias' check in of Philippe's bug fixes (and additions) to the
Helmholtz machinery:

-- New demo driver (not self-tested yet!) 
 
      demo_drivers/generalised_helmholtz/scattering/unstructured_two_d_helmholtz_scattering.cc

   does scattering problem with pmls (rather than DtN). Agrees
   extremely well!

-- Added flux elements to generalised helmholtz equation (essentially
   the same as those in the normal helmholtz equations). Also provide
   FaceElements that allow the post-processing of the radiated power
   and/or the (ejected volume) flux. 

   NOTE: Like many things to do with Helmholtz, these are unlikely to
         work in 3D. There's actually no good reason for this
         (since, unlike the DtN stuff in the normal Helmholtz
         equations) things should work in any dimension, but 
         too much has just been copied across from there. Will need
         to be fixed at some point when somebody gets around to
         writing a 3D test case.

-- Fixed enumeration problem in the setup of PML meshes -- as written
   this only worked for the one-and-only test case we had. Now it
   should (!) work in general. 

-- removed the dim() function from FaceElements in 

        src/helmholtz/helmholtz_bc_elements.h

   since it created total confusion (by an inappropriate 
   overloading of the FE::dim() function).



git-svn-id: svn+ssh://vummath.ma.man.ac.uk/home/svn-oomphlib/public/trunk@508 595e1d82-adf1-4282-bac7-b6073fa2ca8e
Fixed the "Copy of Boundary Node is not a Boundary Node" error.
The problem is that HijackedNodes are copies, but they are not
BoundaryNodes. This case is now tested and excluded.

Fixed an out-of-range error by commenting out the local 
variable s in temporary_stefan_boltzman.h (which is never used)

For some reason the parallel solver failed to convergene in track_pitch.cc
It worked in serial, but I have fixed this by taking two steps to get to
Re=25, rather than one. I don't know what has changed on the solver side, but
we might want to keep an eye on this.


git-svn-id: svn+ssh://vummath.ma.man.ac.uk/home/svn-oomphlib/public/trunk@509 595e1d82-adf1-4282-bac7-b6073fa2ca8e
modified:   src/navier_stokes/Makefile.am
Added impose_impenetability_element.h

new file:   src/navier_stokes/impose_impenetrability_element.h
New impenetrability element.

new file:   src/navier_stokes/lagrange_enforced_flow_preconditioner.h
New lagrange_enforced_flow_preconditioner.h

git-svn-id: svn+ssh://vummath.ma.man.ac.uk/home/svn-oomphlib/public/trunk@510 595e1d82-adf1-4282-bac7-b6073fa2ca8e
modified:   src/navier_stokes/lagrange_enforced_flow_preconditioner.h
Fixed a bug, the preconditioner now works in parallel (for exact solve)

git-svn-id: svn+ssh://vummath.ma.man.ac.uk/home/svn-oomphlib/public/trunk@511 595e1d82-adf1-4282-bac7-b6073fa2ca8e
Modified: block_preconditioner.h
* set_mesh(...)
    Added paranoid test to see if the mesh pointer to be set is null.
    Changed variable names (so it makes more sense).

* Moved the following variables from private to protected since they are
  useful in derived preconditioners:
    Vector<const Mesh*> Mesh_pt;
    Vector<unsigned> Ndof_types_in_mesh;
    unsigned Nblock_types;
    unsigned Ndof_types;

* block_setup(...)
    added more comments and tidied up the code a bit (functionality has
    not changed).

All self tests currently pass!

git-svn-id: svn+ssh://vummath.ma.man.ac.uk/home/svn-oomphlib/public/trunk@512 595e1d82-adf1-4282-bac7-b6073fa2ca8e
modified:   src/generic/block_preconditioner.h
modified:   src/generic/matrix_vector_product.cc
modified:   src/navier_stokes/lagrange_enforced_flow_preconditioner.h
modified:   src/navier_stokes/navier_stokes_preconditioners.cc
modified:   src/navier_stokes/navier_stokes_preconditioners.h

Details:

src/generic/block_preconditioner.h
 * Modified the get_block_vector_with_original_matrix_ordering and
   return_block_vector_with_original_matrix_ordering functions to be
   more efficient with single sub-block vectors (so no concatenation
   or splitting is required).

src/generic/matrix_vector_product.cc
 * Fixed spacing.

src/navier_stokes/lagrange_enforced_flow_preconditioner.h
 * Removed a lot of class variables which I no longer need.

 * Calling the BlockPreconditioner::set_mesh from the set_meshes
   function instead of the setup function (so it is only done once!).

 * Generally changed a lot of stuff to make it more efficient and
   nicer.

src/navier_stokes/navier_stokes_preconditioners.cc
src/navier_stokes/navier_stokes_preconditioners.h
 * Made to work with blocks passed down. It is still very messy and
   needs cleaning up. I will do this later, but it works for now.

Here's a cat:
                _
                \`*-.
                 )  _`-.
                .  : `. .
                : _   '  \
                ; *` _.   `*-._
                `-.-'          `-.
                  ;       `       `.
                  :.       .        \
                  . \  .   :   .-'   .
                  '  `+.;  ;  '      :
                  :  '  |    ;       ;-.
                  ; '   : :`-:     _.`* ;
               .*' /  .*' ; .*`- +'  `*'
               `*-*   `*-*  `*-*'

git-svn-id: svn+ssh://vummath.ma.man.ac.uk/home/svn-oomphlib/public/trunk@513 595e1d82-adf1-4282-bac7-b6073fa2ca8e
Added loads of debugging flags to the following files:

src/navier_stokes/lagrange_enforced_flow_preconditioner.h
src/navier_stokes/navier_stokes_preconditioners.cc
src/navier_stokes/navier_stokes_preconditioners.h

I will need to take these out once I make sure that everything is
working.

git-svn-id: svn+ssh://vummath.ma.man.ac.uk/home/svn-oomphlib/public/trunk@514 595e1d82-adf1-4282-bac7-b6073fa2ca8e
modified:   src/navier_stokes/lagrange_enforced_flow_preconditioner.h
modified:   src/navier_stokes/navier_stokes_preconditioners.cc
Took out all debug outputs. About to make the LSC preconditioner
compatible with the other code again (it is currently broken since I
have modified the function to get mass matrices)

git-svn-id: svn+ssh://vummath.ma.man.ac.uk/home/svn-oomphlib/public/trunk@515 595e1d82-adf1-4282-bac7-b6073fa2ca8e
modified:   src/navier_stokes/lagrange_enforced_flow_preconditioner.h
Commented out some outputs.

modified:   src/navier_stokes/navier_stokes_preconditioners.cc
Made to work with old codes. Self tests for
NavierStokesSchurComplementPreconditioners pass.

git-svn-id: svn+ssh://vummath.ma.man.ac.uk/home/svn-oomphlib/public/trunk@516 595e1d82-adf1-4282-bac7-b6073fa2ca8e
src/generic/oomph_utilities.h
Modified DocLinearSolverInfo to document preconditioner setup time as
well.

src/generic/preconditioner.h
Added a variable Setup_time to document the last setup time.
Have accessor functions for easy access!

git-svn-id: svn+ssh://vummath.ma.man.ac.uk/home/svn-oomphlib/public/trunk@517 595e1d82-adf1-4282-bac7-b6073fa2ca8e
modified:   src/navier_stokes/lagrange_enforced_flow_preconditioner.h
Fixed a bug with the number of meshes.

git-svn-id: svn+ssh://vummath.ma.man.ac.uk/home/svn-oomphlib/public/trunk@518 595e1d82-adf1-4282-bac7-b6073fa2ca8e
Modified unstructured_three_d_fluid.cc to do time stepping.
Modified fsi_bifurcation_fluid.poly so that the outflow boundary is not
aligned with the cartesian coordinates

git-svn-id: svn+ssh://vummath.ma.man.ac.uk/home/svn-oomphlib/public/trunk@519 595e1d82-adf1-4282-bac7-b6073fa2ca8e
Reverted "demo_drivers/navier_stokes/unstructured_three_d_fluid"

These two files where changed when I coding the 3D time stepping
bifurcation code. This is now moved into my user_driver directory.

demo_drivers/navier_stokes/unstructured_three_d_fluid/fsi_bifurcation_fluid.poly
demo_drivers/navier_stokes/unstructured_three_d_fluid/unstructured_three_d_fluid.cc

git-svn-id: svn+ssh://vummath.ma.man.ac.uk/home/svn-oomphlib/public/trunk@520 595e1d82-adf1-4282-bac7-b6073fa2ca8e
Modified gitigore and all the configure options.

.gitignore: These file are automatically generated by automake 1.13
parallel test harness
  test-driver
  test-suite.log
  validate.sh.log
  validate.sh.trs
  self_test/analyse_self_tests/analyse.sh.log
  self_test/analyse_self_tests/analyse.sh.trs

Added "--with-mpi-self-tests-variablenp" to the following configure
options:
  config/configure_options/bluefern_xlc_linux
  config/configure_options/horace_with_mpi_self_tests
  config/configure_options/private_configure_options/biolaptop_lam
  config/configure_options/private_configure_options/biolaptop_lam_paranoid_debug
  config/configure_options/private_configure_options/biolaptop_lam_paranoid_debug_range_check
  config/configure_options/private_configure_options/csf_gcc
  config/configure_options/private_configure_options/mpi_simple
  config/configure_options/private_configure_options/mpi_with_paranoid_and_range_checking_and_blas_lapack_trilinos_hypre
  config/configure_options/private_configure_options/wulf_gcc4.3.2
  config/configure_options/private_configure_options/wulf_gcc4.3.2_debug_paranoid_no_doc-patrick_edit
  config/configure_options/private_configure_options/wulfling
  config/configure_options/private_configure_options/wulfling_debug_paranoid
  config/configure_options/private_configure_options/wulfling_debug_paranoid_rangecheck

git-svn-id: svn+ssh://vummath.ma.man.ac.uk/home/svn-oomphlib/public/trunk@521 595e1d82-adf1-4282-bac7-b6073fa2ca8e
Updated comments in some validate.sh scripts:
bin/validate_ok_count
self_test/mpi/distribution_concatenation/validate.sh
self_test/mpi/matrix_concatenation_without_communication/validate.sh
self_test/mpi/vector_concatenation/validate.sh
self_test/mpi/vector_concatenation_without_communication/validate.sh
self_test/mpi/vector_split/validate.sh
self_test/mpi/vector_split_without_communication/validate.sh

git-svn-id: svn+ssh://vummath.ma.man.ac.uk/home/svn-oomphlib/public/trunk@522 595e1d82-adf1-4282-bac7-b6073fa2ca8e
matrices.h: Optional parameter in all sparse_indexed_output functions.

Optional unsigned to set the precision of the output stream.

git-svn-id: svn+ssh://vummath.ma.man.ac.uk/home/svn-oomphlib/public/trunk@523 595e1d82-adf1-4282-bac7-b6073fa2ca8e