Added new minimal_mpi_variablenp_test and edited a few files to get rid
of warnings.

autogen.sh
bin/minimal_mpi_variablenp_test.cc
In autogen.sh, we test for "--with-mpi-self-tests-variablenp"
If the flag exists, we then test for "OOMPHNP"
The file bin/minimal_mpi_variablenp_test.cc is compiled and
ran on 1, 2, 3, and 4 cores. The results are checked.

In the following files, we move variables inside ifdef OOMPH_HAS_MPI,
and PARANOID sections of the code to get rid of unused variable warnings
if OOMPH-LIB is compiled without PARANOID and/or MPI enabled:
src/generic/block_preconditioner.h
src/generic/linear_algebra_distribution.cc
src/generic/matrices.cc
src/multi_physics/pseudo_elastic_preconditioner.cc

git-svn-id: svn+ssh://vummath.ma.man.ac.uk/home/svn-oomphlib/public/trunk@473 595e1d82-adf1-4282-bac7-b6073fa2ca8e
Minor tweaks to validation tolerances

Changed meaning of Problem::Bifurcation_detection
The sign change of the determinant of the Jacobian will only be monitored
during arc-length stepping if Problem::Bifurcation_detection = true 
(default is false).  
Added the additional flag Problem::Bisect_to_find_bifurcation which plays
the role previously assigned to Bifurcation_detection. It does as it says and
will adjust the arc-length to use bisection to find the point at which the
determinant of the Jacobian matrix is zero.
Note that Bifurcation_detection must be true in order for the 
Bisection method to work.

Fixed a mistake in the boundary coordinates of FaceElements in Telements.cc

Modified the spherical_navier_stokes elements so that the LSC preconditioner
still works with them!



git-svn-id: svn+ssh://vummath.ma.man.ac.uk/home/svn-oomphlib/public/trunk@474 595e1d82-adf1-4282-bac7-b6073fa2ca8e
src/generic/Vector.h
Added a namespace VectorHelpers with the following functions:
dot() - calculated the dot product of two vectors.
magnitude() - calculates the 2-norm of "length" of a vector
angle() - calcuates the angle between two vectors.
cross() - calculates the cross product of two vectors of length 3.

src/generic/elements.cc
src/generic/elements.h
Tangent_direction_pt - a vector describing the general direction
we want the tangent to be. This is used for 3 spatial dimensions
to create continuous tangent vectors along the surface.

continuous_tangent_and_outer_unit_normal()
Creates continuous tangent vectors and the outer unit normal.

Replaced cross product calculations with VectorHelpers::cross()

src/navier_stokes/impose_parallel_outflow_element.h
Has an if-else statement to determine if the we should call
continuous_tangent_and_outer_unit_normal(...)
or get_tang_vec(...)

git-svn-id: svn+ssh://vummath.ma.man.ac.uk/home/svn-oomphlib/public/trunk@475 595e1d82-adf1-4282-bac7-b6073fa2ca8e
Modified:
src/generic/elements.cc
src/navier_stokes/impose_parallel_outflow_element.h

Moved the method for creating tangent vectors on a surface which does
not use a direction vector from impose_parallel_outflow_element.h
to elements.cc's continuous_tangent_and_outer_unit_normal function.
We use the old method if no direction vector is set. This avoids
creating new validata and all previous tests will still work and pass.

ALL SELF TESTS PASSED!

git-svn-id: svn+ssh://vummath.ma.man.ac.uk/home/svn-oomphlib/public/trunk@476 595e1d82-adf1-4282-bac7-b6073fa2ca8e
Modified:
src/generic/block_preconditioner.h
src/generic/general_purpose_block_preconditioners.h
src/generic/matrices.cc
src/generic/oomph_utilities.h
src/navier_stokes/impose_parallel_outflow_element.h
src/generic/elements.h
src/generic/elements.cc
.gitignore
bin/parallel_self_test.py
config/configure_options/private_configure_options/wulfling_debug_paranoid

====================================================================

src/generic/block_preconditioner.h
Now using an assignment instead of resizing the vector, then copying
all the entries over with a for loop.
"Dof_number_in_master_preconditioner = block_map;"

====================================================================

src/generic/general_purpose_block_preconditioners.h
Now using an assignment instead of resizing the vector, then copying
all the entries over with a for loop.
"Dof_to_block_map = dof_to_block_map;"

====================================================================

src/generic/matrices.cc
Modified the the PARANOID tests in CRDoubleMatrix::add(...) so we can
add matrices "in-place".

====================================================================

src/generic/oomph_utilities.h
Added new class DocLinearSolverInfo:

Added Vector<Vector<std::pair<unsigned, double> > > Iterations_and_times
Which stores the timing and iteration counts for each GMRES iteration
per Newton step, per time step.

The accessor function (both read/write and const) for this is
iterations_and_times().

To begin a new time step (or even your first and only newton solve),
call setup_new_time_step().

Get the current number of time step via current_ntime_step()

====================================================================

src/navier_stokes/impose_parallel_outflow_element.h
is made block-preconditionable by implementing the functions
unsigned ndof_types() and
get_dof_numbers_for_unknowns.

====================================================================

src/generic/elements.h
src/generic/elements.cc
Added a private static boolean Ignore_discontinuous_tangent_warning to
the FaceElement class, which switches the warning for discontinous
tangent vectors on and off. It is initialised to false in the
constructor. It can be turned "on" or "off" via
turn_on_warning_for_discontinuous_tangent() and
turn_off_warning_for_discontinuous_tangent() respectively.

====================================================================

Added more files to .gitignore

====================================================================

Dave's new bin/parallel_self_test.py, now you can run selected self
tests! Awesome!

====================================================================

config/configure_options/private_configure_options/wulfling_debug_paranoid
This is the config setting that I use. I noticed that this was missing.
So I added it.

git-svn-id: svn+ssh://vummath.ma.man.ac.uk/home/svn-oomphlib/public/trunk@477 595e1d82-adf1-4282-bac7-b6073fa2ca8e
Modernize config/configure.ac_scripts/start

Old version no longer works with new autoconfig.

Changes made as specified by the error messages.
Remove strange line from "config/configure.ac_scripts/end"

The line is "AS_DIRNAME([/* automatically generated */], $ac_prefix_conf_OUT)".

The autoconfig documentation says this should get the directory name of
        "/* automatically generated */"
which obviously is not a file...

Instead I think it attempts to get the dirname of everything in the glob
"/*", i.e. everything in your root dir. Depending on the version of
autotools this either gives an error or a (long) list of "/"s.

It can't possibly be doing anything useful because the result of the macro
isn't assigned to a variable. So I removed it.
Force the use of the old serial test harness in automake

In automake 1.13 the default way of running tests has changed to using the
"parallel test harness". This is supposed to run tests in parallel and
automate the creation of log files.

However:

1) It does not appear to work with recursive makefiles, so using it would
   require a complete rewrite of the self test makefiles.

2) it breaks the "TESTS_ENVIRONMENT=true" hack (which allows building of
   tests without running them). Which is very handy in general and required
   for the parallel_self_tests.py script.

So for now I have forced to use the old test harness. It may be better to
use the new one in the future if we can rearrange our
makefiles. Alternatively it may be better to drop the use of automake's
test harness altogether since recursively running validate.sh scripts could
easily be done by a shell script.
Make fpdiff and parallel_self_tests work when python3 is default

* fpdiff still uses python2, but now this is explicitly specified by
  the hashbang line.

* parallel_self_tests should work with any version
Quote the compiler names in hypre and trilinos build scripts

Otherwise compiler commands that contain spaces (e.g. "ccache mpicc") crash
the build scripts in weird ways, even if they are quoted in the configure
options file.
Remove "current" options file and "user_drivers.dir_list" from version control

* Useless but constantly cause clashes when updating svn because everyone
  uses different settings.

* Add code to autogen.sh to copy in the "defaults options if no current options
  exists.

* user_drivers.dir_list is already automatically generated in autogen.sh

* Both files are already in .gitignore, I need someone who uses svn directly to
  do the equivalent in svn.
Fix warning spam generated by src/generic/partitioning.cc

Many METIS partitioning functions were declared in one place and then
declared again when they were defined (as though they were part of a
class).

This gives warnings for redundant function declarations.

Removed the unnecessary extra declarations.
Add file open PARANOID checks in creation of triangle meshes from files
Use -isystem instead of -I for external distributions (hides warnings)

This has one side effect: the external distributions are moved to the end
of the list of libraries. I very much doubt that this could break anything
but it's something to keep in mind.
A bunch of small changes

* Initialise Nnewton_iter_taken

* Make get_some_non_boundary_node const

* Add broken virtual nvertex_node() function to FiniteElement

* Rename nprev_values_for_value_at_evaluation_time (new function added by me)
  to nprev_values_for_value_at_evaluation_time, more consistent.

* Move some variable declarations into/out of #ifdefs to get rid of warnings:
** f_ml_settings in demo_drivers/womersley/one_d_womersley/one_d_womersley.cc
** nproc in src/generic/block_preconditioner.h
Fix bug in variable_from_makefile in parallel_self_test.py

If there is no Makefile in the pwd then this function would always fail
because make fails (even though a Makefile in the pwd is not really
needed).

Fixed by setting the cwd for the make command to be that of the Makefile
from which the variable is being extracted.
Add const versions of some functions

* Problem::time_stepper_pt()
* TimeStepper::adaptive_flag()
Add an untemplated base class for UnsteadyHeatEquations

This allows us to do things like setting the source function and getting
the type of the function pointer without needing to know the dimension at
compile time (i.e. without templating the problem class by dimension).
Python 3 compatability for parallel_self_test.py
Add option to CommandLineArgs to throw error on unrecognised args

Default value is false, so nothing should change for currently existing
code.