kronbichler [Wed, 25 Mar 2009 16:55:27 +0000 (16:55 +0000)]
Make the local_to_global functions in the ConstraintMatrix even more efficient by pre-sorting all the rows and columns that are going to be written into the sparsity pattern / sparse matrix. This makes the values added for each element really unique, which is faster. Moreover, the matrix and sparsity pattern classes can now take an additional argument sorted when adding many elements, and some of them already make use of the sorted-ness. For block matrices, the sortedness is used in an even more clever way by writing directly into the blocks (even though I had to introduce a lot of duplicate code to be in line with the templates).
heltai [Mon, 23 Mar 2009 18:00:48 +0000 (18:00 +0000)]
Modified step-34 to implement exclusively the collocation boundary element
method.
This is done now through the QGaussLog and QGaussOneOverR classes that were
previously added to the library.
Extended a little the comments, but there is still a lot of documentation to do.
The solution is the correct one (phi(x) = x).
TODO: Add convergence table for both the potential and the velocity.
kronbichler [Mon, 16 Mar 2009 15:01:24 +0000 (15:01 +0000)]
Final update of local_to_global functions in ConstraintMatrix, making the sparsity pattern creation even faster. One possibly could improve things further by pre-ordering the indices to be added, if our other functions were smart enough to handle that. Right now, that doesn't really help, and all I get from ordering is some additional overhead.
kronbichler [Mon, 16 Mar 2009 09:00:03 +0000 (09:00 +0000)]
Make the local_to_global functions in the ConstraintMatrix class a bit smarter (could still do better,though). Use CSimpleSP in Cuthill_McKee DoFRenumbering instead of CompressedSparsityPattern.
heltai [Fri, 13 Mar 2009 16:10:25 +0000 (16:10 +0000)]
Added better comments to step-34, created interpolate function. It seems to work in 2d. Not completely tested in 3d yet. It does not yet work for higher order approximations. Only for dgp(0).
kronbichler [Wed, 11 Mar 2009 12:05:41 +0000 (12:05 +0000)]
Change the tolerances for when considering a cell a translation of the previous one in the CellSimilarity concept. The old tolerance was not really achievable.
kronbichler [Tue, 10 Mar 2009 16:55:43 +0000 (16:55 +0000)]
Add functions interpolate_boundary_values and project_boundary_values for a ConstraintMatrix argument by using inhomogeneous constraints instead of std::map<unsigned int,double>. There is a lot of duplicated code in vectors.templates.h right now, need to fix that later.
kronbichler [Tue, 10 Mar 2009 14:53:36 +0000 (14:53 +0000)]
Fixed a problem with a system of FE_RT when using CellSimilarity. Changed the calling of CellSimilarity slightly. Now all the regression tests pass (except rounding differences).
kronbichler [Sat, 7 Mar 2009 15:16:42 +0000 (15:16 +0000)]
Make the FEValues::reinit functions (much) more efficient in case we repeatedly work on the same cell - in such a case, the derivatives will not change and need to be regenerated. Introduce a new enum CellSimilarity for doing that and pass it down to the respective functions.
kronbichler [Fri, 6 Mar 2009 22:34:06 +0000 (22:34 +0000)]
Set the tolerances for the Newton iteration at run time in a way that they are not optimized away by the compiler. This makes sure that emulating long doubles as doubles as done e.g. by valgrind does not lead to problems.
kronbichler [Thu, 5 Mar 2009 17:41:02 +0000 (17:41 +0000)]
Turn some dynamic_cast operations into static_cast (while still asserting the correctness of the cast at run-time). This improves performance of the reinit methods that are called very often.
kronbichler [Wed, 4 Mar 2009 22:01:56 +0000 (22:01 +0000)]
Move the ConstraintMatrix class to the lac subdirectory (that's where it belongs to, since it is completely algebraic). Adapt all code that depends on it. Reintroduce a dummy for keeping the inclusion via dofs/dof_constraints.h in one minute.
kronbichler [Wed, 25 Feb 2009 16:16:12 +0000 (16:16 +0000)]
Make the Epetra objects in the TrilinosWrapper classes private. We can still handle the situation with the help of some access functions. Hopefully, I didn't forget to set any plain usage of the Trilinos objects...
kronbichler [Mon, 23 Feb 2009 17:18:49 +0000 (17:18 +0000)]
Now the ConstraintMatrix seems to work also for inhomogeneous constraints, at least when using the distribute_local_to_global function. Still need to check the correctness of the other functions, which I will do some other time.
kronbichler [Mon, 23 Feb 2009 12:23:03 +0000 (12:23 +0000)]
I thought I had gotten the combination of hanging nodes and inhomogeneous constraints coming from inhomogeneous Dirichlet conditions. That's not the case however, and inhomogeneous constraints only work when there are no interferences from other constraints. Need to think about that a bit later. Besides that, duplicated code has been removed.
kronbichler [Sat, 21 Feb 2009 16:12:26 +0000 (16:12 +0000)]
Complete the implementation of inhomogeneous constraints in the ConstraintMatrix class. Need to write a function in VectorTools in order to enable the direct use with Dirichlet b.c.
kronbichler [Wed, 18 Feb 2009 12:14:56 +0000 (12:14 +0000)]
When Trilinos matrices are based on the same sparsity pattern, they can share the SP data if we initialize them correctly. This has been applied to step-31.
kronbichler [Tue, 17 Feb 2009 10:38:45 +0000 (10:38 +0000)]
Add inhomogeneity to the ConstraintMatrix class. Still need to write some new functions that can properly modify vectors when condensing inhomogeneous constraints.
bangerth [Mon, 16 Feb 2009 05:37:37 +0000 (05:37 +0000)]
Move the dependence on Trilinos into the base libs (from the lac libs) since we reference some Trilinos symbols from libbase.so. (This came to the fore because the detached_ma27 program only links against libbase.so, not liblac.so.)
bangerth [Thu, 12 Feb 2009 19:46:57 +0000 (19:46 +0000)]
Adjust to older compilers in which declaring
friend class SparsityPatternIterators::const_iterator;
does not automatically also make
SparsityPatternIterators::const_iterator::Accessor
a friend.