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/