DataSources added to modelframe/EsysXML, and tests to run_xml.py. Currently does not actually handle data
sources,
just references. Functionality is in progress.
EsysXML format (URI can be a local file reference, or a remote reference such as an ftp site, fileformat
is currently any string descriptor, such as finleyMesh or gmtdata):
<Parameter type="DataSource">
<Name>
uritest
</Name>
<Value>
<DataSource>
<URI>
somelocalfile.txt
</URI>
<FileFormat>
text
</FileFormat>
</DataSource>
</Value>
</Parameter>

Added serial execution build options for running on the altix. In doing so, a
minor bug in SConstruct was found and fixed. The correct libraries still need
to be sorted after consulting Lutz and/or Ken.

Some modifications to the binary operations +,-,*/, pow.
The code is a bit simpler now and more efficient has there is
no reseising required now. the resizing method has been removed as
it is very, very inefficient. Even serial code should be faster now.
It is now forbidden to do an inplace update of scalar data object with an object
of rank >0 as this is very slow (and does not make much sense).

Tensor products for Data objects are now computed by a C++ method
C_GeneralTensorProduct, which calls C function matrix_matrix_product
to do the actual calculation.
Can perform product with either input transposed in place, meaning
without first computing the transpose in a separate step.

changes to escript/py_src/pdetools.py and /escript/src/Data.h/.cpp to
make the Locator work in MPI. escript::Data::mindp now returns a 3 tuple,
with the MPI rank of the process on which the minimum value occurs
included. escript::Data::convertToNumArrayFromDPNo also takes the ProcNo
to perform the MPI reduction.
This had to be implemented in both the MPI and non-MPI versions to allow
the necesary changes to the Python code in pdetools.py. In the non-MPI
version ProcNo is set to 0. This works for the explicit scripts tested
thus far, however if it causes problems in your scripts contact Ben or
Lutz, or revert the three files (pdetools.py, Data.h and Data.cpp) to
the previous version.

coordinates, element size and normals returned by corresponding
FunctionSpace mesthods are now protected against updates. So
+=, -=, *=, /=, setTaggedValue, fillFromNumArray will through an
excpetion.
The FunctionSpace class does nut buffer the oordinates, element size and
normals yet.

Large number of changes to Finley for meshing in MPI.
- optimisation and neatening up of rectcanglular mesh generation code
- first and second order 1D, 2D and 3D rectangular meshes are now
available in finley and escript using MPI.
- reduced meshes now generated in MPI, and interpolation to and from
reduced data types now supported.

+ Removed nelix_kb_options.py since I no longer have that notebook and as a result it isn't a maintained example of a win32 configuration. coleto_kb_options.py is my new notebooks configuration. Note that this particular set of compilation options target the Core Duo processor (and family relations) and as such won't work on other x86 platforms that don't have the same feature set. See the Intel compiler guide for details on how to target other processors.

+ Updated compilation options for Cognac to squeeze out a bit more performance
+ Now compiles using the Intel Math headers (mathimf.h) rather than plain math.h on both Win32 and Linux platforms when using the Intel compiler. Gives a small boost to performance on Altix and is essential on Windows

Modified nightly testing:
Tests run as batch job via cron
You can choose to run run_tests or all_tests via command-line argument
They use 2 CPUs for run_tests and 4 CPUs for all_tests
Log files from tests are saved in /raid3/ksteube/AutoTests/Logs

The test for the contact normal has been modified to take in cosideration the fact that the normal is unique up to the factor +/-1.
Now the test checks the kllength of the normal for 1 and the angle to the reference normal.

- added directory pythonMPI to the source tree. this directory contains
the c++ wrapper that is used to run python scripts in parallel for the
MPI version of escript/finley
- updated the SConstruct and ./scons/ess_options.py for conditional MPI
compilation. To compile the MPI version on ESS uncomment the #define
PASO_MPI in ./paso/src/Paso.h and add the command line option
useMPI=yes when running scons.
- fixed a compile time error in the MPI build in
finley/src/CPPAdapter/MeshAdapterFactory.cpp

Changes relating to the MPI version of escript
The standard OpenMP version of escript is unchanged
- updated data types (Finley_Mesh, Finley_NodeFile, etc) to store meshes
over multiple MPI processes.
- added CommBuffer code in Paso for communication of Data associated
with distributed meshes
- updates in Finley and Escript to support distributed data and operations
on distributed data (such as interpolation).
- construction of RHS in MPI, so that simple explicit schemes (such as
/docs/examples/wave.py without IO and the Locator) can run in MPI.
- updated mesh generation for first order line, rectangle and brick
meshes and second order line meshes in MPI.
- small changes to trunk/SConstruct and trunk/scons/ess_options.py to
build the MPI version, these changes are turned off by default.

+ Added {inc,py,lib}install paths so that when escript builds on ac it installs the build into /home/escript/escript-<put a revision number here>. That way you can just copy this directory into /opt of wherever for someone to install into ac.

+ Options to build on APAC NF ac machine modified to use /home/escript build area. escript builds using its own version of boost and python2.4.3 (and scons for that matter) in this directory rather than using the APAC NF installations. This eases APAC's module management where different groups want slightly different configurations for various modules.

Major rewrite: now submits a PBS job to run tests on one CPU. Log
files from run are saved in /raid3/ksteube/AutoTests. Runs short
version run_tests or long version all_tests based on value of
command-line argument.

A few changes in the build mechanism and the file structure so scons can build release tar files:
* paso/src/Solver has been moved to paso/src
* all test_.py are now run_.py files and are assumed to be passing python tests. they can run by
scons py_tests and are part of the release test set
* escript/py_src/test_ are moved to escript/test/python and are installed in to the build directory
(rather then the PYTHONPATH).
* all py files in test/python which don't start with run_ or test_ are now 'local_py_tests'. they are installed i
by not run automatically.
* CppUnitTest is now treated as a escript module (against previous decisions).
* scons realse builds nor tar/zip files with relvant source code (src and tests in seperate files)
the python tests don't pass yet due to path problems.

+ Fixed incorrect target path in SConstruct file
+ cognac now links with g++ compiled boost rather than intelc compiled boost due to compilation errors with intel c. (Finley will still compile and work with intel c though) - this is the same configuration as the access altix

+ Modified the env (environment) creation for the ia64 platform to include PATH so it no longer complains about not being able to locate the intel compiler. This is related to the previous fix for windows. Seems it is a scons intelc.py bug.

+ Minor modification to how the ENV external environment is initialised. Originally this was done as part of the env = Environment( ENV = ...) construction. Unfortunately this doesn't work properly on windows as it clobbers the path edits performed by the tools = 'intelc'. The end result is icl is not found. Now the env is initialised without the ENV = and they are added in after construction.
I suspect this is a bug in scons itself on the windows platform.

+ NEW BUILD SYSTEM
This commit contains the new build system with cross-platform support.
Most things work are before though you can have more control.
ENVIRONMENT settings have changed:
+ You no longer require LD_LIBRARY_PATH or PYTHONPATH to point to the
esysroot for building and testing performed via scons
+ ACcESS altix users: It is recommended you change your modules to load
the latest intel compiler and other libraries required by boost to match
the setup in svn (you can override). The correct modules are as follows
module load intel_cc.9.0.026
export
MODULEPATH=${MODULEPATH}:/data/raid2/toolspp4/modulefiles/gcc-3.3.6
module load boost/1.33.0/python-2.4.1
module load python/2.4.1
module load numarray/1.3.3

I have changed some of the documentation and added more explanations for
the online reference guide for esys13. I have modified two of the
example source codes to write out the results for Helmholtz problem and
changed one variable name in the diffusion.py code to avoid confusion.

Scons build options for cognac.ivec.org using intel v9.0.026 compilers
Note: Boost is currently not available as a module on cognac. As a result the boost directories used in this build point to my specific boost installation which should be visible to all ivec users. This will get fixed eventually.

The sparse solver can be called by paso now.
the building has been change to reduce some code redundancy:
now all scons SCscripts are importing scons/esys_options.py which
imports platform specific settings.

Some chnages required for oder numarray versions. mai problem is that
operations on array objects with rank 0 sometimes return float rather
than arrays. This problem seems to be fixed in newer releases.