[Trilinos-Users] Run time error msg: wrong type of "smoother: Aztec options" in ML parameter list

Jonathan Hu jhu at sandia.gov
Thu Dec 13 12:33:20 MST 2007


Hi Ernesto,

      You can use AztecOO as a smoother, but will need to change the 
declaration of the options and params variables.  This was changed in ML 
to better handle memory management, but the user's guide wasn't updated.

Regards,
Jonathan

Teuchos::ParameterList*              m_mlList;
// modification #1  options and params should be reference-counted pointers
Teuchos::RCP<std::vector<int> >   m_smootherAztecOptions = rcp(new 
std::vector<int>(AZ_OPTIONS_SIZE));
Teuchos::RCP<std::vector<double> >   m_smootherAztecParams = rcp(new 
std::vector<double>(AZ_PARAMS_SIZE)); 
//end of mod #1
ML_Epetra::MultiLevelPreconditioner* m_mlPreconditioner;

std::string smootherType("Aztec");
// modification #2  AZ_defaults is expecting int* and double*
AZ_defaults(&(*m_smootherAztecOptions)[0],&(*m_smootherAztecParams)[0]);
(*m_smootherAztecOptions)[AZ_precond]         = AZ_dom_decomp;
(*m_smootherAztecOptions)[AZ_subdomain_solve] = AZ_icc;
//end of mod #2
int smootherAztecAsSolver = 0;

m_mlList = new Teuchos::ParameterList();
m_mlList->set("smoother: type",smootherType.c_str());
m_mlList->set("smoother: Aztec options",m_smootherAztecOptions);
m_mlList->set("smoother: Aztec params",m_smootherAztecParams);
m_mlList->set("smoother: Aztec as solver",(bool) smootherAztecAsSolver);
... // other sets
m_mlPreconditioner = new ML_Epetra::MultiLevelPreconditioner(*matrix, 
*m_mlList);


Ernesto Prudencio wrote:
>
> Hi. I have the following data members in a class of mine,
>
> Teuchos::ParameterList*              m_mlList;
> int             m_smootherAztecOptions[AZ_OPTIONS_SIZE];
> double          m_smootherAztecParams[AZ_PARAMS_SIZE];
> ML_Epetra::MultiLevelPreconditioner* m_mlPreconditioner;
>
> and the following code in the constructor of such class:
>
> std::string smootherType("Aztec");
> AZ_defaults(m_smootherAztecOptions,m_smootherAztecParams);
> m_smootherAztecOptions[AZ_precond]         = AZ_dom_decomp;
> m_smootherAztecOptions[AZ_subdomain_solve] = AZ_icc;
> int smootherAztecAsSolver = 0;
>
> m_mlList = new Teuchos::ParameterList();
> m_mlList->set("smoother: type",smootherType.c_str());
> m_mlList->set("smoother: Aztec options",m_smootherAztecOptions);
> m_mlList->set("smoother: Aztec params",m_smootherAztecParams);
> m_mlList->set("smoother: Aztec as solver",(bool) smootherAztecAsSolver);
> ... // other sets
> m_mlPreconditioner = new ML_Epetra::MultiLevelPreconditioner(*matrix, 
> *m_mlList);
> ...
>
> But I am getting the following run time error message:
>
> // BEGIN OF ERROR MESSAGE
>
> Error, the parameter {name="smoother: Aztec 
> options",type="int*",value="0x11bbe9e8"}
> in the parameter (sub)list "ANONYMOUS"
> exists in the list of valid parameters but has the wrong type.
>
> The correct type is "RCP<vector<int>>".
>
> Throw number = 1
>
> ERROR: ML's Teuchos::ParameterList contains an incorrect parameter!
>
> // END OF ERROR MESSAGE
>
> Any idea on what is wrong?
>
> Thanks in advance,
>
> Ernesto.
>
>
> _______________________________________________
> Trilinos-Users mailing list
> Trilinos-Users at software.sandia.gov
> http://software.sandia.gov/mailman/listinfo/trilinos-users
>


-- 
Jonathan J. Hu, mailto:jhu at sandia.gov
Postal address: Sandia National Laboratories
                Mailstop 9159
                PO Box 969, Livermore, CA 94551-0969
Tel / Fax (925) 294-2931 



More information about the Trilinos-Users mailing list