Re: problems to declare ITL preconditioners in a .h file

Márcio Ricardo Pivello <[email protected]> Mon, 4 Apr 2005 18:09:24 +0000
Newsgroups gmane.comp.lib.mtl.devel
Message-ID <[email protected]>
Sorry for the last question, I should have paid more attention to the code. 
It happens because there's no default (empty) constructor for this class, is 
it right?

On Apr 4, 2005 5:48 PM, Márcio Ricardo Pivello <[email protected]> wrote:
> 
> Hi, I'm having some problems when I declare my preconditioners in a 
> separate .h file. If I create the objects in the .cpp file, it works fine.
> Here's what I do:
> 
> file CFEModel.h
> /*******/
> typedef matrix< double, rectangle<>, array< compressed<> >, row_major 
> >::type MTLmatrix;
> 
>  //mtl matrices
>  MTLmatrix mtlU, mtlP;
>  SSOR<MTLmatrix> mtlSSOR_u;
>  SSOR<MTLmatrix> mtlSSOR_p;
> /**************/
> 
> this is how I allocate the objects in the source file:
> 
>  mtlU = MTLmatrix(n_vel_dof,n_vel_dof);
>  mtlP = MTLmatrix(n_pressure_dof,n_pressure_dof);
>  mtlSSOR_u = SSOR<MTLmatrix>(mtlU);
>  mtlSSOR_p = SSOR<MTLmatrix>(mtlP);
> 
> when I compile the project (ITL 4.0.0-1, MTL 2.1.2-21, kdevelop 3.1 on kde 
> 3.3, SuSE 9.2, gcc version 3.3.4 (pre 3.3.5 20040809), Pentium IV), the 
> following error messages come:
> 
> cd '/usr/local/pivello/sources/femcfd2/optimized' && WANT_AUTOCONF_2_5="1" 
> WANT_AUTOMAKE_1_6="1" gmake -k -j1 
> compiling FEModel.cpp (g++)
> /usr/local/pivello/sources/femcfd2/src/FEModel.cpp:5: error: no matching 
> function for call to ` 
> itl::SSOR<mtl::row_matrix<mtl::gen_array2D<mtl::compressed1D<double, int, 0> 
> >, mtl::gen_rect_indexer<mtl::row_orien, 0, 0, size_t> > >::SSOR()'
> /usr/local/include/itl/preconditioner/ssor.h:66: error: candidates are: 
> itl::SSOR<mtl::row_matrix<mtl::gen_array2D<mtl::compressed1D<double, int, 0> 
> >, mtl::gen_rect_indexer<mtl::row_orien, 0, 0, size_t> > >::SSOR(const 
> itl::SSOR<mtl::row_matrix<mtl::gen_array2D<mtl::compressed1D<double, int, 0> 
> >, mtl::gen_rect_indexer<mtl::row_orien, 0, 0, size_t> > >&)
> /usr/local/include/itl/preconditioner/ssor.h:107: error: 
> itl::SSOR<Matrix>::SSOR(const Matrix&) [with Matrix = 
> mtl::row_matrix<mtl::gen_array2D<mtl::compressed1D<double, int, 0> >, 
> mtl::gen_rect_indexer<mtl::row_orien, 0, 0, size_t> >]
> /usr/local/pivello/sources/femcfd2/src/FEModel.cpp:5: error: no matching 
> function for call to ` 
> itl::SSOR<mtl::row_matrix<mtl::gen_array2D<mtl::compressed1D<double, int, 0> 
> >, mtl::gen_rect_indexer<mtl::row_orien, 0, 0, size_t> > >::SSOR()'
> /usr/local/include/itl/preconditioner/ssor.h:66: error: candidates are: 
> itl::SSOR<mtl::row_matrix<mtl::gen_array2D<mtl::compressed1D<double, int, 0> 
> >, mtl::gen_rect_indexer<mtl::row_orien, 0, 0, size_t> > >::SSOR(const 
> itl::SSOR<mtl::row_matrix<mtl::gen_array2D<mtl::compressed1D<double, int, 0> 
> >, mtl::gen_rect_indexer<mtl::row_orien, 0, 0, size_t> > >&)
> /usr/local/include/itl/preconditioner/ssor.h:107: error: 
> itl::SSOR<Matrix>::SSOR(const Matrix&) [with Matrix = 
> mtl::row_matrix<mtl::gen_array2D<mtl::compressed1D<double, int, 0> >, 
> mtl::gen_rect_indexer<mtl::row_orien, 0, 0, size_t> >]
> 
> If I comment the lines where I allocate the preconditioners, the same 
> message comes.
> If, instead of it, I create the object in the .cpp file, as follows, 
> 
>  SSOR<MTLmatrix> mtlSSOR_u(mtlU), mtlSSOR_p(mtlP);
>  ILU<MTLmatrix> mtlILU_p(mtlP),mtlILU_u(mtlU);
> 
> nothing wrong happens and the code works fine.
> 
> What am I doing wrong?
> 
> Thanks in advance
> -- 
> Márcio Ricardo Pivello
> Mechanical Engineer, MSc.
> LTCM and CFD Lab
> Mechanical Engineering School
> Federal University of Uberlândia 
> Uberlândia - MG - Brazil 




-- 
Márcio Ricardo Pivello
Mechanical Engineer, MSc.
LTCM and CFD Lab
Mechanical Engineering School
Federal University of Uberlândia 
Uberlândia - MG - Brazil

_______________________________________________
This list is archived at http://www.osl.iu.edu/MailArchives/mtl-devel/