← Back to team overview

dolfin team mailing list archive

Re: SORSolver dependency in real.cpp

 

On 26 November 2010 00:04, Anders Logg <logg@xxxxxxxxx> wrote:
> On Thu, Nov 25, 2010 at 11:02:54PM +0000, Garth N. Wells wrote:
>>
>>
>> On 25/11/10 22:48, Benjamin Kehlet wrote:
>> >On 25 November 2010 23:29, Garth N. Wells<gnw20@xxxxxxxxx>  wrote:
>> >>
>> >>
>> >>On 25/11/10 20:17, Anders Logg wrote:
>> >>>
>> >>>On Thu, Nov 25, 2010 at 05:55:36PM +0000, Garth N. Wells wrote:
>> >>>>
>> >>>>
>> >>>>On 25/11/10 17:34, Anders Logg wrote:
>> >>>>>
>> >>>>>On Thu, Nov 25, 2010 at 05:07:40PM +0000, Garth N. Wells wrote:
>> >>>>>>
>> >>>>>>There is a dependency on
>> >>>>>>
>> >>>>>>    dolfin/ode/SORSolver.h
>> >>>>>>
>> >>>>>>in dolfin/common/real.cpp. This seems odd to me. Is there a reason for
>> >>>>>>it?
>> >>>>>>
>> >>>>>>Garth
>> >>>>>
>> >>>>>real.h/cpp provide some basic algorithms that work on high precision
>> >>>>>floats. One of these is the matrix exponential which is computed by a
>> >>>>>rational approximation, hence the need for solving a linear system.
>> >>>>>
>> >>>>>The SORSolver is the only solver in DOLFIN that handles high precision
>> >>>>>floats (uBLAS etc can't be used).
>> >>>>
>> >>>>What is the typical system size?
>> >>>>
>> >>>>Garth
>> >>>
>> >>>We have used it for (dense) matrices of size up to 100 x 100 for
>> >>>computing quadrature weights etc for the cG(100) method.
>> >>>
>> >>
>> >>You could try Armadillo? I guess it can be templated over the higher
>> >>precision floats.
>> >
>> >Yes. With uBLAS the problem was that, even if it is templated, it
>> >relied on non-templated code (eg. stuff in cmath).
>> >Also Peter Gottschling claims that MTL4 can do this. Maybe it is worth a try?
>> >
>>
>> I would try Armadillo since it's already a required dependency, and
>> it's targeted more at dense problems than MTL4 is.
>>
>> Garth
>
> Agree.
>
> --
> Anders
>

It turns out Armadillo can not handle gmp types.
The Armadillo documentation says: "... type can be one of: char, int,
float, double, std::complex<double>, etc.". However, the promising
"etc." does not contain the gmp types.
So, any other suggestions? Or should we leave as it is (ie. use real*)
and just clean up the code and add comments?

Benjamin



Follow ups

References