Creation of the new public repository.
The change_log from the old repository is stored in the reposiory 
in the file doc/change_log/final_svn_log.txt


git-svn-id: svn+ssh://maths1/home/svn-oomphlib/public/trunk@1 595e1d82-adf1-4282-bac7-b6073fa2ca8e
The inevitable small changes:
 Changed a finite-precision tolerance in the soluble_surfactant test
 Modified the customise_dist.sh script to correctly handle a special
 case.


git-svn-id: svn+ssh://maths1/home/svn-oomphlib/public/trunk@2 595e1d82-adf1-4282-bac7-b6073fa2ca8e
Removed

doc/unsteady_heat/two_d_unsteady_heat/nondist_figures/con.sh

to see if this fixes the problem when this file
is checked out under cygwin.





git-svn-id: svn+ssh://maths1/home/svn-oomphlib/public/trunk@3 595e1d82-adf1-4282-bac7-b6073fa2ca8e
Removed all con.sh files as cygwin-based svn stalled at the next
one (after having removed the one in unsteady heat...).



git-svn-id: svn+ssh://maths1/home/svn-oomphlib/public/trunk@4 595e1d82-adf1-4282-bac7-b6073fa2ca8e
- Finalised the documentation of the linear solvers and
  preconditioners

- Time_pt is now deleted in the Problem destructor -- it's
  the only thing that's actually made internally by the
  Problem (when Problem::add_time_stepper_pt() is called for the
  first time), so it should also be deleted by the Problem.
  Users who store pointers to the Problem's Time_pt
  should expect trouble with the (dangling) pointer
  when the Problem has been deleted...
 


git-svn-id: svn+ssh://maths1/home/svn-oomphlib/public/trunk@5 595e1d82-adf1-4282-bac7-b6073fa2ca8e
Ported a few changes to the previous distribution to the
new repository:
-- fixed a bug in the computation of the energies in the shell 
   elements.
-- Added SuperLU_dist_preconditioner
-- a few more tidy ups.



git-svn-id: svn+ssh://maths1/home/svn-oomphlib/public/trunk@6 595e1d82-adf1-4282-bac7-b6073fa2ca8e
-- Fixed a few errors in range-checking blocks, and got
   rid of a few instances of Vector<bool> -- code didn't
   compile in range checking mode. 

-- Introduced option to evaluate the derivatives of the element 
   residuals w.r.t. to the geometric dofs in the 
   ElementWithMovingNode class by (1) direct finite differencing
   (as before), (2) via the chain rule, (3) by whatever method is
   predicted to be faster. CURRENTLY THE DEFAULT IS BY DIRECT
   FINITE DIFFERENCING SO THE CODE BEHAVES AS BEFORE (will
   change this to "whatever is fastest" when the analytical
   evaluation of the shape derivatives in the Navier-Stokes
   version is working; see below.

-- Since the "jacobian from geometric data" in this class is therefore
   no longer guaranteed to be evaluated by FD, changed
   function names from fill_in_jacobian_from_geometric_data_by_fd(...)
   to fill_in_jacobian_from_geometric_data(...)

-- Provided default, virtual, FD-based implementation of   
   FiniteElement::get_dresidual_dnodal_coordinates(
   RankThreeTensor<double>& dresidual_dnodal_coordinates);
   This can be overloaded for specific elements where the shape
   where the shape derivatives can be evaluated analytically.

-- Moved the auxiliary node update function machinery into the Node base
   class and introduced Node::perform_auxiliary_node_update_fct()

-- Introduced additional boolean, Use_raw_nodal_position, into node
   class to optionally bypass the hanging node information
   during the evaluation of shape derivatives by the chain rule.

-- Introduced analytical shape derivatives into the refineable
   and non-refineable Poisson elements. Same for Navier-Stokes
   but something's still not working 100% -- the no slip 
   condition...

-- Replaced sole constructor for FSIWallElement by argument-free
   version to allow wrapping. Lagrangian and Eulerian coordinates
   of underlying GeomObject etc must now be set by an explicit
   call to setup_fsi_wall_element() -- typically done in the constructor
   of the derived (specific) FSIWallElement. As a result,
   FSIHermiteBeamElements and FSISolidTractionElements no longer
   call constructor of FSIWallElement and GeomObject

-- Provided GeomObject::set_nlagrangian_and_ndim() to allow
   setting of these parameters outside the constructor -- needed
   after re-write of FSIWallElement.

-- Added RankFourTensor and range-checked it and the RankThreeTensor

-- Added Levenberg Marquardt fitter to utilities.

-- Added FSIDiagHermiteShellElement to shell_elements.h
   and made ClampedHermiteShellBoundaryConditionElements
   block preconditionable.

-- Moved the shell mesh into meshes as CircularCylindricalShellMesh.

-- Added driver code & validation for oscillating shell -- checks
   that rate of work done by external load balances the rate of
   change of kinetic + strain energy.



git-svn-id: svn+ssh://maths1/home/svn-oomphlib/public/trunk@7 595e1d82-adf1-4282-bac7-b6073fa2ca8e
Changed "+" to "+=" for EXTRA_DIST fixed in Makefile.am


git-svn-id: svn+ssh://maths1/home/svn-oomphlib/public/trunk@8 595e1d82-adf1-4282-bac7-b6073fa2ca8e
-- Shape derivatives by chain rule (with analytical/FD-based
   version of the first term in the chain rule) now works.
   Analytical evalutiion is implemented for Poisson and 
   Navier-Stokes and is being self-tested in fsi_osc_ring
   and algebraic_free_boundary_poisson driver codes. Reduction
   of cpu times by 30-50% in 3D, less so in most 2D problems.

-- Reimplementation of the effect of no-slip on the shape
   derivatives allowed me to get rid of the 
   Node::Use_raw_nodal_position flag and the associated
   access functions.

-- Removed fill_in_... from ElementWithMovingNodes as its
   presence caused the shape derivatives to be evaluated twice,
   yielding the same result but as twice the computational cost!
   
-- INTERFACE CHANGE: In Navier-Stokes equations:

     void get_body_force_nst(double time, ...
 
     double get_source_nst(double time, ...

   become

      void get_body_force_nst(const double& time, ...

      double get_source_nst(const double& time, ...

   ditto in derived classes.



git-svn-id: svn+ssh://maths1/home/svn-oomphlib/public/trunk@9 595e1d82-adf1-4282-bac7-b6073fa2ca8e
-- Fixed a few "this->" and "std::" problems that manifested
   themselves on gcc 3.4.4.

-- INTERFACE CHANGE: Got rid of all other instances where
   time argument was passed by copy rather than by
   constant reference -- as long as grep-ing for the
   pattern '(double t' detected it. In practice this
   involved various Navier-Stokes traction, body force
   and source functions. 



git-svn-id: svn+ssh://maths1/home/svn-oomphlib/public/trunk@10 595e1d82-adf1-4282-bac7-b6073fa2ca8e
A number of changes that introduce new functionality:

 i) A discontinuous Galerkin base class, together with flux transport
 equations and specific advection and euler equations classes and elements
 and test cases

 ii) Explicit TimeSteppers (at present only Euler and 4th order Runge-Kutta)

 iii) A generalised Advection-Diffusion equation that can handle variable
 diffusivity and also conserved and non-conserved winds (which allows the
 use of more general flux boundary conditions)

  iv) An interface that permits a TriangleScaffoldMesh to be constructed
     from a triangulateio data structure, rather than from three files on 
     the disk.

 Also fixed a few little typos and some ^M's that had appeared in a few files
and the usual this problems.



git-svn-id: svn+ssh://maths1/home/svn-oomphlib/public/trunk@11 595e1d82-adf1-4282-bac7-b6073fa2ca8e
Changes to validation tolerance so that tests pass on the Intel compiler

In addition added a couple of this->'s to refineable_navier_stokes_elements.cc
so that the code compile under Intel.


git-svn-id: svn+ssh://maths1/home/svn-oomphlib/public/trunk@12 595e1d82-adf1-4282-bac7-b6073fa2ca8e
APOLOGY: This is a slightly rushed check-in before the
         wulf goes down and I disappear to Oz -- I know 
         there are a few (trivial) compiler warnings... Will sort 
         these out when I get back.

-- Added analytical Jacobian to all versions of the solid elements.
   This is fully optimised for the non-refineable displacement-based
   formulations. The latest optimisations (suggested by Andrew)
   still have to be ported to the three other versions (the
   non-refinable pressure-based formulation and the two refineable 
   counterparts). 

-- Added demo drivers that explore the performance of
   FD vs analytical Jacobian for 2D and 3D solid problems (both
   cantilever "beams").

-- Added demo driver that explores what happens when we
   approach incompressibility (square loaded by gravitational load)

-- Added demo driver that demonstrates the use of Lagrange multipliers
   for application of displacement boundary conditions for solid
   elements. This is needed to use the pseudo-solid node update
   in FSI problems. 

-- Added the capability of using generalised boundary coordinates
   to the boundary nodes -- though this is not used anywhere
   (and I doubt it ever will...). However, previously existing
   interfaces "used" the generalised coordinate index in a way
   that would have rendered the results incorrect if there
   actually had been generalised boundary degrees of freedom.
   The old interfaces

    Node::set_coordinates_on_boundary(b,zeta) 

   and

    Node::get_coordinates_on_boundary(b,zeta)

   still work. 

-- Added cumulative timer to oomph_utilities (both as a namespace
   and a class). 

-- Renamed src/generic/superlu_dist_bridge.c to
   src/generic/superlu_dist.c to be consistent with
   serial superlu namings. 

-- Added a broken public constructor to the Vector<bool> class
   to stop the compiler from complaining about all constructors
   being private. If called despite the fact that the
   argument is called "dont_call_this_constructor", the
   constructor throws an error telling the user to use
   vector<bool> instead.

-- Added two new config option files (gcc with debugging and paranoia
   with/without doc)

-- Added RankFourTensor and RankFiveTensor, and addded
   raw_direct_access() and offset() functions to the high-order
   tensors to allow direct access to internal C-style column major
   representation of the data. Of course, this totally defeats
   the "hide the implemenation" idea behind object orientation
   but is justified by the faster access speed that is possible
   (and turned out to be crucial for the optimisaton of the
   solid mechanics). Both functions come with strongly worded
   warnings that they should only be used by "expert users".

-- Changed the way in which the Lagrangian coordinates of
   newly created solid nodes are created. By default we now
   use finite-element interpolation for all internal nodes
   and use the "undeformed MacroElement" representation (if
   it exists!) only for newly created nodes on the boundary.
   This ensures that, following mesh refinement a fully converged
   solution remains fully converged: If the Lagrangian coordinates
   of newly created nodes are based on the MacroElement representation
   while the Eulerian position is based on FE interpolation from the
   father, we create "deformations" during the refinement process.
   Under infinite mesh refinment, both methods obviously converge
   to the same solution so there is no real difference between the
   two.

-- The (new) default method for the assignment of the Lagrangian
   coordinates of newly created solid nodes may be altered
   by using the function

   RefineableSolidElement::use_undeformed_macro_element_for_new_lagrangian_coords()

   This was introduced in several driver codes to keep the
   self-tests working. Will update this when documentation is
   written for these. Pseudo solid node update elements also
   retain the previously method as it's likely to give
   slightly better looking meshes.

-- Changed the validata for 
 
       demo_drivers/solid/simple_shear

       demo_drivers/navier_stokes/falling_jet

       demo_drivers/navier_stokes/three_d_static_cap

   These tests were always very sensitive and were affected yet
   again (by small amounts!) by the changes to the solid elements 
   (analytical Jacobian, etc). These all ought to be looked
   at again very carefully when the documentation is written!
 
-- Added the ElasticRefineableRectangularQuadMesh to the
   rectangular_quad_mesh.template.h and changed the default
   position of the mesh. It's now in line with the
   "normal" RectangularQuadMesh, i.e. its bottom left
   corner is at (0,0) -- or at the positon specified by
   the Vector argument, origin. Updated driver codes that use
   it accordingly.

-- Yet more "flag" arguments in generic computation of
   residual/Jacobian converted from "unsigned" to
   "const unsigned&".

-- changed 

     add_jacobian_for_newmark_accel(jacobian);

   to 

     fill_in_jacobian_for_newmark_accel(jacobian);

   in all solid mechanics elements.

-- Changed 

     get_residuals_for_ic(residuals);

   to

     get_residuals_for_solid_ic(residuals);
 
   in all solid mechanics elements.


-- Changed 

     fill_in_residuals_for_ic(residuals);

   to

     fill_in_residuals_for_solid_ic(residuals);
 
   in all solid mechanics elements.


-- Changed order of arguments in \c PVDEquationsBase::BodyForceFctPt
   so that time goes first (as it should!).

-- Fixed an error in the implementation of the 
   generalised Hookean consitutive equation (somebody
   trying to be too clever...). We're now avoiding the
   computation of the elasticity tensor and go 
   straight for the stress, which is the only thing that's
   needed...

-- Made test for bypassing the computation of certain terms
   in the IsotropicStrainEnergyFunctionConstitutiveLaw exact.
   (Previously computation was suppressed if a term was
   less than 1e-10 (rather than zero) -- dangerous...)
    



git-svn-id: svn+ssh://maths1/home/svn-oomphlib/public/trunk@13 595e1d82-adf1-4282-bac7-b6073fa2ca8e
Correction of some left-over this problems from previous check-in.

Addition of navier stokes equations in spherical coordiantes and
a number of test problems. 

Addition of a framework for introducing limiters to the DG framework
and also for permitting the use of implicit timesteppers, but why would you
want to?

Modification of the numerical flux used in the euler equations has
required re-generation of all the test data. This is still not properly
validated, but is in the demo's for testing purposes.

Addition of a weighting factor to include any geometric jacobian terms in
Z2 error calculations in non-carteisan coordiante systems and the 
appropriate regeneration of test data.

Corrected a bug so that the PeSt is now passed to the children of 
advection-diffusion and generalised advection-diffusion elements.

Modified the clamped_shell_with_arclength_cont.cc to include all three
pressure components and tweaked the parameter so that it converges. 
There is a strange problem on hector that Jonathan has discovered, but I
haven't looked into this yet. The output is funny, but the solution is 
correct.



git-svn-id: svn+ssh://maths1/home/svn-oomphlib/public/trunk@14 595e1d82-adf1-4282-bac7-b6073fa2ca8e
Included the disable_ALE() flag in axisymmetric navier-stokes equations.

Fixed the errors that caused the spherical_navier_stokes tests to fail
under the PARANOID flag. The main error was that the Ellipse geometric object
in src/generic/geom_objects.h was not steady when constructed by passing the
values of the two axes (as opposed to GeometricData). The slight mesh-motion
thus induced caused the wrong answer to be computed in cylindrical coordinates
and the the data in ref_cyl_CR.dat.gz has now been corrected.

Fixed a += error in prescribed_displ_lagr_mult/Makefile.am.

Corrected the comments about the ALE_is_disabled boolean flag so that they
are consistent with what the flag does. This was repeated in a number of 
Equation classes.

Found a few more this-> pointers

Modified the build script to pass the correct cfortran.h flag -DgFortran
or -Df2cFortran for versions 3.0 or 4.0 of the GNU compiler suite based what
the compiler does rather than what it is called! Any other compiler-dependent
flags must be specified in CXXFLAGS and an example is given in the intel
file in the configure_options directory. 



git-svn-id: svn+ssh://maths1/home/svn-oomphlib/public/trunk@15 595e1d82-adf1-4282-bac7-b6073fa2ca8e
Jonathan's commit:

-- Have provided example for 1D impedance outflow elements
   for a 2D channel flow problem in 

      demo_drivers/womersley/one_d_womersley 

   The file 

     flux_control_elements.h

   implements the newly developed flux control elements 
   written by Jonathan. This will be moved into 
   the general sources and be accompanied by 
   new self-test.

-- Changed the WomersleyImpedanceTubeBase class to 
   take a second template argument to indicate the
   transverse dimension of the tube (i.e. the spatial
   dimension of the Womersley elements, so it's now

     WomersleyImpedanceTubeBase<ELEMENT,2>

   say.

-- Removed (stupid) string comparisons to determine
   if timestepper is steady by replacing constructions
   like 


      if (time_stepper_pt->type()!="Steady")

    by 

     if (!time_stepper_pt->is_steady())

-- If compiled with MPI, the default sub-preconditioner in
   the fsi preconditioner is now SuperLU_dist.

-- Fixed a memory leak in the fsi preconditioner. The
   extracted solid block is now deleted when we're done.

-- Allows SuperLU_dist to work with CR matrices. 

-- Various other tidy ups.   




git-svn-id: svn+ssh://maths1/home/svn-oomphlib/public/trunk@16 595e1d82-adf1-4282-bac7-b6073fa2ca8e
No change really... Just forgot to mention in the last
commit message that we can accelerate the computation of the
 FSI Jacobians by neglecting shear stress distributions and
by neglecting the shape derivatives in the 
ElementsWithMovingNodes. No self-test for these yet (!)
but Jonathan has tried them.





git-svn-id: svn+ssh://maths1/home/svn-oomphlib/public/trunk@17 595e1d82-adf1-4282-bac7-b6073fa2ca8e
-- Introduced SolidNode::node_update() which performs the
   node's auxiliary node update function (if any). This is
   required in pseudo-solid-based FSI problems for the automatic
   application of the no-slip condition following changes in the
   domain geometry, say.

-- Removed all the casts that used to be required to access an
   algebraic node's auxiliary node update function. This cast
   isn't needed any more since the auxiliary node update function now lives
   in the Node base class.

-- Wrote tutorial for disk compression with and without growth.

-- Wrote tutorial for Lagrange-multiplier-based imposition
   of displacement constraints in solid mechanics.

-- Wrote demo driver that demonstrates how to use pseudo-solid
   for Navier-Stokes problem with moving boundaries (but no FSI).

-- Wrote demo drivers for FSI with pseudo-solid node update with and
   without mesh refinement

-- Copied the optimisations for the analytical computation of the
   solid Jacobian to the refineable version of the displacement-based
   solid elements. Still do be done for pressure based ones.

-- Moved YoungLaplace eqns and demo drivers across into main
   distribution and wrote two tutorials (for straightforward
   Young Laplace and Young Laplace with contact angle boundary
   conditions.)

-- Reduced pressure increment in Airy cantilever beam validation
   to reduce number of Newton steps -- was very close to
   "non-convergence" and therefore unnecessarily shaky...

-- Hacked demo_drivers/navier_stokes/three_d_static_cap/3d_static_cap.cc
   and demo_drivers/navier_stokes/falling_jet/falling_jet.cc so they
   still work with new PseudoSolid elements.

-- Fixed memory leak in fsi preconditioner (didn't delete the solid
   block).

-- Moved ImposeDisplacementByLagrangeMultiplierElement from driver
   code into src/solid/solid_traction_elements.h

-- changed PseudoSolidElements so they work with the analytical solid
   Jacobian -- off diagonals are now computed separately.

-- Removed the reset_in_solid_position_fd(k,i) for elements as it
   seems unnecessary (nobody used it!) and its arguments seemed 
   too restrictive.

-- INTERFACE CHANGE: All the bools in calls to the various 
                     node_update() functions were changed to 
                     const bool& (rather than bool).

-- Added static boolean flag 

     FSIWallElement::Dont_warn_about_missing_adjacent_fluid_elements

   to allow user to switch off warnings.


-- Added static boolean flags 

    GeneralisedElement::Suppress_warning_about_repeated_internal_data

   and 

    GeneralisedElement::Suppress_warning_about_repeated_external_data

   to allow user to switch off warnings.


  


git-svn-id: svn+ssh://maths1/home/svn-oomphlib/public/trunk@18 595e1d82-adf1-4282-bac7-b6073fa2ca8e
-- Completed optimisation of all four (displacement/pressure-displacement 
   & adaptive/non-adaptive) versions of the solid element. Ought to 
   give this another, very final sanity check while investigating if the
   pressure formulations can be made (more) symmetric while remaining
   stable.

-- Fixed customise_dist.sh so that private directories are now
   included when option 1 is chosen. 

-- Modified autogen.sh so that validation for mpi-based demo drivers
   can be requested. This is done with the new flag

       --with-mpi-self-tests="mpirun -np 2"
 
   (or appropriate variants) to configure. This is most easily specified
   in the configure options file if the build is performed
   with autogen. The string must specifiy the command required
   to run an executable on two processors. 

   In future, MPI-based self-test should be placed in the demo_drivers/mpi
   directory and where the output depends on the number of processors
   (e.g. for distributed problems) validata should be generated for
   two processors.

-- INTERFACE CHANGE (sort of): Provided the option to wipe the 
                    validata from the distribution. To make sure that
                    the self-test procedure doesn't break if there's
                    no validata, configure now assesses the
                    availability of validata by checking the existence
                    of demo_drivers/poisson/one_d_poisson/validata/one_d_poisson_results.dat.gz
                    If this is not found, we'll assume that there's
                    no validata anywhere. In that case, "make check" will still
                    compile and run the demo drivers but not use
                    fpdiff.py to compare them against the validata.
                    The behaviour is thus similar to what's done if
                    we don't have python. I therefore modified the 
                    "no_python" argument that used to be passed
                    to all validate.sh scripts to suppress the
                    execution of fpdiff.py and replaced it by
                    "no_fpdiff". As a result all validate.sh scripts
                    had to be changed. 

                      MAKE SURE YOU UPDATE ANY NEWS ONES BEFORE 
                      ADDING THEM TO THE DISTRIBUTION!

                    To reflect the fact that the fpdiff-ing can now
                    be suppressed for multiple reasons, renamed

                         bin/validate_no_python.sh
                    
                    to

                         bin/dummy_validate.sh

-- Clarified that various messages that appear on the screen
   during the build process are issued by oomph-lib.

-- Added additional safety checks to the optional deletion of 
   an existing build directory. For starters, the suggestion for the
   name of the non-default directory is now /home/joe_user/build rather than
   /home/joe_user. Also, if we're offering to wipe the existing
   build directory, the user now has to go through a windows-like
   "are you sure?" step (after being shown the contents of the
   directory) to make sure we don't accidentally delete the
   user's home directory (at his/her request, but still...).
   Thanks to Cedric for spotting this potential trap (the hard way;
   luckily he'd just made a backup...).



      




git-svn-id: svn+ssh://maths1/home/svn-oomphlib/public/trunk@19 595e1d82-adf1-4282-bac7-b6073fa2ca8e
Fixed this-> problems in gcc 4.1
Corrected one_d_womersely.cc driver so that it works in the absence of HYPRE or
TRILINOS

Added Coriolis force terms to spherical and cylindrical Navier Stokes elements 
so that problems can be solved in the rotating frame.


git-svn-id: svn+ssh://maths1/home/svn-oomphlib/public/trunk@20 595e1d82-adf1-4282-bac7-b6073fa2ca8e