Parent Directory
|
Revision Log
Links to HEAD: | (view) (annotate) |
Sticky Revision: |
Branch commit. Added a note about mismatched allocs and decallocs. Added Data::actsExpanded and friends. Modified DataC::isExpanded to call it instead of Data::isExpanded.
Branch commit. Modifed getSampleData to take a buffer. Added calls to allocate and free buffers. Passes unit tests on badger but have not tried on savanna yet.
Branching to experiment with changes to the DataC interface. The goal is to separate read and write access to pointers.
Resolve mantis issue 216. Removed the asAbstractContinuousDomain(X) member which did not take cast failure into account. Rewrote the few places where it was used.
Addressing mantis issue #221. Interpolation.. and probeInterpolation.. now "work" for the NullDomain. Work means throw a descriptive exception if you try to move into or out of the NullDomain. The bad_cast exception related to this has been fixed.
Added checks in C_GeneralTensorProduct (Data:: and Delayed forms) as well as the DataAbstract Constructor to prevent Objects with Rank>4 being created. Moved the relevant #define into systemdep. Removed some comments.
Added c++ unit tests for new operations. Added resolve to some operations in Data
Fixed a warning in cpp unit tests under dodebug Pointed the url for python doco at shake200 rather than iservo. Added support for trace and transpose to LazyData. Fixed bug in trace to initialise running totals.
escript/Data: Another fix for parallel var initialization. Also, the (error) return value of MPI_Gather was not used. I applied the same 'hack' as in other places in the file, namely declaring the variable beforehand but still ignoring the return value :-/
Two changes. 1. Move blocktimer from escript to esysUtils. 2. Make it possible to link to paso as a DLL or .so. Should have no effect on 'nix's In respect of 1., blocktimer had begun to spring up everywhere, so for the moment I thought it best to move it to the only other library that pops up all over the place. In respect of 2., paso needed to be a DLL in order to use the windows intelc /fast option, which does aggressive multi-file optimisations. Even in its current form, it either vectorises or parallelises hundreds more loops in the esys system than appear in the pragmas. In achieving 2. I have not been too delicate in adding PASO_DLL_API declarations to the .h files in paso/src. Only toward the end of the process of the conversion, when the number of linker errors dropped below 20, say, did I choosy about what functions in a header I declared PASO_DLL_API. As a result, there are likely to be many routines declared as external functions symbols that are in fact internal to the paso DLL. Why is this an issue? It prevents the intelc compiler from getting aggressive on the paso module. With pain there is sometimes gain. At least all the DLL rules in windows give good (non-microsoft) compiler writers a chance to really shine. So, if you should see a PASO_DLL_API on a function in a paso header file, and think to yourself, "that function is only called in paso, why export it?", then feel free to delete the PASO_DLL_API export declaration. Here's hoping for no breakage.....
Fixed Data::toString to look at the amount of data actually stored rather than the number of points in the domain. Added support for GeneralTensorProduct to LazyData
A little refinement of what to leave out of UnaryFuncs.h if using the intelc compiler on windows.
Experimental commit to move the code to a windows box on the other side of a firewall. Purpose: add support for the imploved intelc math library on windows.
Fixed some warnings in the unit tests. Added support for symmetric and nonsymmetric operations on LazyData.
Bringing all changes across from schroedinger. (Note this does not mean development is done, just that it will happen on the trunk for now). If anyone notices any problems please contact me.
More warning removal.
removed one signed/unsigned value comparison. The remaining one at line 863 is far more difficult to deal with.
A cleanup of some of the problems I found doing a Wall compile. Removed some commented out lines. Swapped some member initialisers. Removed virtual qualifiers from some methods in FunctionSpace. Fixed some unused or (possibly) uninitialised variables.
Jump through hoops to meet the OPENMP 2.5 restrictions on loop variables. It's all ready for OPENMP 3.0 improvments, and should compile cleanly on other platforms.
fix a signed and unsigned integer comparison. As your meshes get larger, this type of error will bite.
Modified Data::toString() so it doesn't throw on DataEmpty. Added setEscriptParamInt and getEscriptParamInt as free functions. At the moment all they do is allow you to set the param TOO_MANY_LINES. This is used to determine when printing a Data object will show you the points and when it will print a summary. I've set the default value back to 80 lines. If you need to see more lines use (in python): setEscriptParamInt("TOO_MANY_LINES",80000)
new version of JacobiFree Newton GMRES + test added.
Fixed a compile error under MPI. Cleaned up a comment.
Closing the moreshared branch
first version of testing for transport solver.
Modified Data::copyWithMask to have a less cryptic implementation.
modification on LinearPDE class and a first version of Transport class
Copyright updated in all files
All about making DataEmpty instances throw. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Exposed getDim from AbstractDomain to python to fix bug. Added isEmpty member to DataAbstract to allow it to throw is queries are made about a DataEmpty instance. Added exceptions to DataAbstract, DataEmpty and Data to prevent calls being made against DataEmpty objects. The following still work as expected on DataEmpty instances copy, getDomain, getFunctionSpace, isEmpty, isExpanded, isProtected, isTagged, setprotection. You can also call interpolate, however it should throw if you try to change FunctionSpaces.
Added Data::copySelf() [Note: this is exposed as copy() in python]. This method returns a pointer to a deep copy of the target. There are c++ tests but no python tests for this yet. All DataAbstracts now have a deepCopy() which simplifies the implementation of the compy methods.
Merged noarrayview branch onto trunk.
Modified toString() on Data objects. str(x) or print x will now print a summary of the data rather than all the points if the output would take more than 80 lines.
Merge of branches/windows_from_1431_trunk. Revamp of the exception system. Fix unused vars and signed/unsigned comparisons. defined a macro THROW(ARG) in the system_dep.h's to deal with the expectations of declarations on different architectures. Details in the logs of branches/windows_from_1431_trunk. pre-merge snapshot of the trunk in tags/trunk_at_1452
getTagNumber called the wrong corresponding FunctionSpace method. Results were wrong for number of data points per sample >1.
And get the *(&(*&(* name right
Restore the trunk that existed before the windows changes were committed to the (now moved to branches) old trunk.
Make a temp copy of the trunk before checking in the windows changes
setTaggedValue works now for expanded data.
Reversed the removal of blocktimer code. This needs to be fixed properly for the Windows stuff to work.
Removed blocktimer code from gradOn().
Disambiguation of more template argument parameters so that it compiles under Windows.
Disambiguation of several template argument parameters so that it compiles under Windows.
Initial rewrite of escript unary operations. The rewritten operations are now single-pass.
Pow now uses the new binary function interface of C_TensorBinaryOperation.
Fixed bug in power operation.
Initial rewrite of binary escript operations.
DataArray is no longer needed. However, the unit tests still require it.
The MPI branch is hereby closed. All future work should be in trunk. Previously in revision 1295 I merged the latest changes to trunk into trunk-mpi-branch. In this revision I copied all files from trunk-mpi-branch over the corresponding trunk files. I did not use 'svn merge', it was a copy.
Some changes to make things run on windows. There is still a problem with netcdf an long file names on windows but there is the suspicion that this is a bigger problem related to boost (compiler options). In fact runs with large numbers of iteration/time steps tend to create seg faults.
This version passes the tests on windows except for * vtk * netCDF The version needs to be tested on altix and linux
problem with reset of faulty PDE rhs fixed.
the useless profilinf for data.cpp removed (doDebug=yes should work again) and a small bug in the gmsh reader fixed.
clear name tagging is supported now.
In VC++ boost has problems with numarray arguments from python. This fixes that problem by taking python::object arguments from the python level and converting it into python::numeric::array on the C++ level. This hasn't been tested with VC++ yet. Moreover the two Data methods dealing with big numarrays as argument and return value have been removed.
Implement inverse hyp. functions.
Finer control of the inverse hyp. functions.
modifications to be compliant with _WIN32. The substitutes for asinh, acosh, atanh are still missing (erf will through an exception)
Data.cpp - indefed out the erf & inv. hyperbolics on windows. DataAlgorithmAdapterTestCase & DataTestCase - Fix the ifndef on _WIN32 & _INTEL_COMPILER SConstruct - chamges to the PATH so windows can find DLLs.
The set/getRefVal functions of Data objects have been removed (mainly to avoid later problems with MPI). Moreover, a faster access to the reference id of samples has been introduced. I don't think that anybody will profit form this at this stage but it will allow a faster dump of data objects.
escript data objects can now be saved to netCDF files, see http://www.unidata.ucar.edu/software/netcdf/. Currently only constant data are implemented with expanded and tagged data to follow. There are two new functions to dump a data object s=Data(...) s.dump(<filename>) and to recover it s=load(<filename>, domain) Notice that the function space of s is recovered but domain is still need. dump and load will replace archive and extract. The installation needs now the netCDF installed.
Win32 port modifications "or" is not a valid modifier under win intel compiler * Data.cpp - incorrect "or"s * DataExpanded.cpp - incorrect "or"s
setValueOfDataPoint accepts double value as argument now
I have done some clarification on functions that allow to access individual data point values in a Data object. The term "data point number" is always local on a MPI process and referes to the value (data_point_in_sample, sample) as a single identifyer (data_point_in_sample + sample * number_data_points_per_sample). a "global data point number" referes to a tuple of a processour id and local data point number. The function convertToNumArrayFromSampleNo has been removed now and convertToNumArrayFromDPNo renamed to getValueOfDataPoint. There are two new functions: getNumberOfDataPoints setValueOfDataPoint This allows you to do things like: in=Data(..) out=Data(..) for i in xrange(in.getNumberOfDataPoints()) in_loc=in.getValueOfDataPoint(i) out_loc=< some operations on in_loc> out.setValueOfDataPoint(i,out_loc) Also mindp is renamed to minGlobalDataPoint and there is a new function getValueOfGlobalDataPoint. While in MPI the functions getNumberOfDataPoints and getValueOfDataPoint are working locally on each process (so the code above is executed in parallel). the latter allows getting a single value across all processors.
Added erf (error function) implementation
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).
ken and I did not have a good afternoon. our checkin was very buggy. fixed
C_GeneralTensorProduct was modifying the function space of the first arg. Now creating a shallow copy and using the copy to avoid this.
small bug in general tensor propduct fixed
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.
the new function swap_axes + tests added. (It replaces swap).
new function _swap. Python wrapper + testing is still missing.
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.
Modified the following python methods in escript/py_src/util.py to call faster C++ methods: escript_trace escript_transpose escript_symmetric escript_nonsymmetric
+ Merge of intelc_win32 branch (revision 741:755) with trunk. Tested on iVEC altix (run_tests and py_tests all pass)
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.
tests pass now on gcc: some tests did not take round-off errors into consideration
now float**Data is running
test with tagged data pass now
More copyright information.
some steps towards eigenvalue and eigenvector calculation
modify whereZero etc methods to also accept a tolerance parameter
rationalise #includes and forward declarations
restructure escript source tree move src/Data/* -> src remove inc modify #includes and cpppath settings accordingly
bug fixed in integrate method. don;t use a[i,j]=.. to set a value in the numeric::array a but a[make_tuple(i,j)].
length method is removed as it is too slow. use length in util.py instead
move all directories from trunk/esys2 into trunk and remove esys2
Merge of development branch dev-02 back to main trunk on 2005-10-25
Merge of development branch dev-02 back to main trunk on 2005-09-22
Merge of development branch dev-02 back to main trunk on 2005-09-15
Merge of development branch dev-02 back to main trunk on 2005-09-01
Merge of development branch dev-02 back to main trunk on 2005-08-23
erge of development branch dev-02 back to main trunk on 2005-08-12
Merge of development branch back to main trunk on 2005-07-22
Merge of development branch back to main trunk on 2005-07-08
Merge of development branch back to main trunk on 2005-06-09
Merge of development branch back to main trunk on 2005-05-06
*** empty log message ***
*** empty log message ***
*** empty log message ***
*** empty log message ***
*** empty log message ***
*** empty log message ***
*** empty log message ***
*** empty log message ***
*** empty log message ***
*** empty log message ***
*** empty log message ***
This form allows you to request diffs between any two revisions of this file. For each of the two "sides" of the diff, enter a numeric revision.
ViewVC Help | |
Powered by ViewVC 1.1.26 |