本文整理汇总了C++中teuchos::ParameterList::print方法的典型用法代码示例。如果您正苦于以下问题:C++ ParameterList::print方法的具体用法?C++ ParameterList::print怎么用?C++ ParameterList::print使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类teuchos::ParameterList
的用法示例。
在下文中一共展示了ParameterList::print方法的13个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: initializeFromParameterList
//! Initialize from a parameter list
void PresLaplaceLSCStrategy::initializeFromParameterList(const Teuchos::ParameterList & pl,const InverseLibrary & invLib)
{
// get string specifying inverse
std::string invStr="Amesos", invVStr="", invPStr="";
bool useLDU = false;
scaleType_ = AbsRowSum;
// "parse" the parameter list
if(pl.isParameter("Inverse Type"))
invStr = pl.get<std::string>("Inverse Type");
if(pl.isParameter("Inverse Velocity Type"))
invVStr = pl.get<std::string>("Inverse Velocity Type");
if(pl.isParameter("Inverse Pressure Type"))
invPStr = pl.get<std::string>("Inverse Pressure Type");
if(pl.isParameter("Use LDU"))
useLDU = pl.get<bool>("Use LDU");
if(pl.isParameter("Use Mass Scaling"))
useMass_ = pl.get<bool>("Use Mass Scaling");
if(pl.isParameter("Eigen Solver Iterations"))
eigSolveParam_ = pl.get<int>("Eigen Solver Iterations");
if(pl.isParameter("Scaling Type")) {
scaleType_ = getDiagonalType(pl.get<std::string>("Scaling Type"));
TEUCHOS_TEST_FOR_EXCEPT(scaleType_==NotDiag);
}
// set defaults as needed
if(invVStr=="") invVStr = invStr;
if(invPStr=="") invPStr = invStr;
Teko_DEBUG_MSG_BEGIN(5)
DEBUG_STREAM << "LSC Inverse Strategy Parameters: " << std::endl;
DEBUG_STREAM << " inv v type = \"" << invVStr << "\"" << std::endl;
DEBUG_STREAM << " inv p type = \"" << invPStr << "\"" << std::endl;
DEBUG_STREAM << " use ldu = " << useLDU << std::endl;
DEBUG_STREAM << " use mass = " << useMass_ << std::endl;
DEBUG_STREAM << " scale type = " << getDiagonalName(scaleType_) << std::endl;
DEBUG_STREAM << "LSC Pressure Laplace Strategy Parameter list: " << std::endl;
pl.print(DEBUG_STREAM);
Teko_DEBUG_MSG_END()
// build velocity inverse factory
invFactoryV_ = invLib.getInverseFactory(invVStr);
invFactoryP_ = invFactoryV_; // by default these are the same
if(invVStr!=invPStr) // if different, build pressure inverse factory
invFactoryP_ = invLib.getInverseFactory(invPStr);
// set other parameters
setUseFullLDU(useLDU);
}
示例2: getDiagonalType
/** \brief This function builds the internals of the state from a parameter list.
*
* This function builds the internals of the LU 2x2 state
* from a parameter list. Furthermore, it allows a
* developer to easily add a factory to the build system.
*
* \param[in] settings Parameter list to use as the internal settings
* \param[in] invLib Inverse library to use for building inverse factory objects
*
* \note The default implementation does nothing.
*/
void LU2x2DiagonalStrategy::initializeFromParameterList(const Teuchos::ParameterList & pl,
const InverseLibrary & invLib)
{
Teko_DEBUG_SCOPE("LU2x2DiagonalStrategy::initializeFromParameterList",10);
std::string invStr="Amesos", invA00Str="", invSStr="";
// "parse" the parameter list
if(pl.isParameter("Inverse Type"))
invStr = pl.get<std::string>("Inverse Type");
if(pl.isParameter("Inverse A00 Type"))
invA00Str = pl.get<std::string>("Inverse A00 Type");
if(pl.isParameter("Inverse Schur Type"))
invSStr = pl.get<std::string>("Inverse Schur Type");
if(pl.isParameter("Diagonal Type")) {
std::string massInverseStr = pl.get<std::string>("Diagonal Type");
// build inverse types
a00InverseType_ = getDiagonalType(massInverseStr);
}
// set defaults as needed
if(invA00Str=="") invA00Str = invStr;
if(invSStr=="") invSStr = invStr;
Teko_DEBUG_MSG_BEGIN(5)
DEBUG_STREAM << "LU2x2 Diagonal Strategy Parameters: " << std::endl;
DEBUG_STREAM << " inv type = \"" << invStr << "\"" << std::endl;
DEBUG_STREAM << " inv A00 type = \"" << invA00Str << "\"" << std::endl;
DEBUG_STREAM << " inv S type = \"" << invSStr << "\"" << std::endl;
DEBUG_STREAM << "LU2x2 Diagonal Strategy Parameter list: " << std::endl;
pl.print(DEBUG_STREAM);
Teko_DEBUG_MSG_END()
// build velocity inverse factory
invFactoryA00_ = invLib.getInverseFactory(invA00Str);
if(invA00Str==invSStr)
invFactoryS_ = invFactoryA00_;
else
invFactoryS_ = invLib.getInverseFactory(invSStr);
}
示例3: initializeFromParameterList
/** \brief This function builds the internals of the state from a parameter list.
*
* This function builds the internals of the LU 2x2 state
* from a parameter list. Furthermore, it allows a
* developer to easily add a factory to the build system.
*
* \param[in] settings Parameter list to use as the internal settings
* \param[in] invLib Inverse library to use for building inverse factory objects
*
* \note The default implementation does nothing.
*/
void PCDStrategy::initializeFromParameterList(const Teuchos::ParameterList & pl,
const InverseLibrary & invLib)
{
Teko_DEBUG_SCOPE("PCDStrategy::initializeFromParameterList",10);
std::string invStr="Amesos", invFStr="", invSStr="";
massInverseType_ = Diagonal;
// "parse" the parameter list
if(pl.isParameter("Inverse Type"))
invStr = pl.get<std::string>("Inverse Type");
if(pl.isParameter("Inverse F Type"))
invFStr = pl.get<std::string>("Inverse F Type");
if(pl.isParameter("Inverse Laplace Type"))
invSStr = pl.get<std::string>("Inverse Laplace Type");
if(pl.isParameter("Inverse Mass Type")) {
std::string massInverseStr = pl.get<std::string>("Inverse Mass Type");
// build inverse types
massInverseType_ = getDiagonalType(massInverseStr);
}
if(pl.isParameter("Flip Schur Complement Ordering"))
schurCompOrdering_ = pl.get<bool>("Flip Schur Complement Ordering");
// set defaults as needed
if(invFStr=="") invFStr = invStr;
if(invSStr=="") invSStr = invStr;
// read pressure laplace parameters
if(pl.isSublist("Pressure Laplace Parameters"))
lapParams_ = Teuchos::rcp(new Teuchos::ParameterList(pl.sublist("Pressure Laplace Parameters")));
else
lapParams_ = Teuchos::rcp(new Teuchos::ParameterList);
// read pcd operator parameters
if(pl.isSublist("Pressure Convection Diffusion Parameters"))
pcdParams_ = Teuchos::rcp(new Teuchos::ParameterList(pl.sublist("Pressure Convection Diffusion Parameters")));
else
pcdParams_ = Teuchos::rcp(new Teuchos::ParameterList);
// The user should not have already added this parameters
TEUCHOS_TEST_FOR_EXCEPTION(lapParams_->isParameter("Name"),std::logic_error,
"Teko: Parameter \"Name\" is not allowed in the sublist \""+lapParams_->name()+"\"");
TEUCHOS_TEST_FOR_EXCEPTION(lapParams_->isParameter("Tag"),std::logic_error,
"Teko: Parameter \"Tag\" is not allowed in the sublist \""+lapParams_->name()+"\"");
TEUCHOS_TEST_FOR_EXCEPTION(pcdParams_->isParameter("Name"),std::logic_error,
"Teko: Parameter \"Name\" is not allowed in the sublist \""+pcdParams_->name()+"\"");
TEUCHOS_TEST_FOR_EXCEPTION(pcdParams_->isParameter("Tag"),std::logic_error,
"Teko: Parameter \"Tag\" is not allowed in the sublist \""+pcdParams_->name()+"\"");
Teko_DEBUG_MSG_BEGIN(5)
DEBUG_STREAM << "PCD Strategy Parameters: " << std::endl;
DEBUG_STREAM << " inv type = \"" << invStr << "\"" << std::endl;
DEBUG_STREAM << " inv F type = \"" << invFStr << "\"" << std::endl;
DEBUG_STREAM << " inv Laplace type = \"" << invSStr << "\"" << std::endl;
DEBUG_STREAM << " inv Mass type = \"" << Teko::getDiagonalName(massInverseType_) << "\"" << std::endl;
DEBUG_STREAM << "PCD Strategy Parameter list: " << std::endl;
pl.print(DEBUG_STREAM);
Teko_DEBUG_MSG_END()
// build velocity inverse factory
invFactoryF_ = invLib.getInverseFactory(invFStr);
if(invFStr==invSStr)
invFactoryS_ = invFactoryF_;
else
invFactoryS_ = invLib.getInverseFactory(invSStr);
lapParams_->set("Name",getPressureLaplaceString());
pcdParams_->set("Name",getPCDString());
// setup a request for required operators
getRequestHandler()->preRequest<Teko::LinearOp>(getPressureMassString());
// getRequestHandler()->preRequest<Teko::LinearOp>(getPCDString());
// getRequestHandler()->preRequest<Teko::LinearOp>(getPressureLaplaceString());
getRequestHandler()->preRequest<Teko::LinearOp>(Teko::RequestMesg(lapParams_));
getRequestHandler()->preRequest<Teko::LinearOp>(Teko::RequestMesg(pcdParams_));
}
示例4: main
int main(int argc, char *argv[])
{
#ifdef HAVE_MPI
Teuchos::GlobalMPISession mpiSession(&argc, &argv, 0);
Epetra_MpiComm Comm(MPI_COMM_WORLD);
#else
Epetra_SerialComm Comm;
#endif
int nProcs, myPID ;
Teuchos::ParameterList pLUList ; // ParaLU parameters
Teuchos::ParameterList isoList ; // Isorropia parameters
Teuchos::ParameterList shyLUList ; // shyLU parameters
Teuchos::ParameterList ifpackList ; // shyLU parameters
string ipFileName = "ShyLU.xml"; // TODO : Accept as i/p
nProcs = mpiSession.getNProc();
myPID = Comm.MyPID();
if (myPID == 0)
{
cout <<"Parallel execution: nProcs="<< nProcs << endl;
}
// =================== Read input xml file =============================
Teuchos::updateParametersFromXmlFile(ipFileName, &pLUList);
isoList = pLUList.sublist("Isorropia Input");
shyLUList = pLUList.sublist("ShyLU Input");
shyLUList.set("Outer Solver Library", "AztecOO");
// Get matrix market file name
string MMFileName = Teuchos::getParameter<string>(pLUList, "mm_file");
string prec_type = Teuchos::getParameter<string>(pLUList, "preconditioner");
int maxiters = Teuchos::getParameter<int>(pLUList, "Outer Solver MaxIters");
double tol = Teuchos::getParameter<double>(pLUList, "Outer Solver Tolerance");
string rhsFileName = pLUList.get<string>("rhs_file", "");
if (myPID == 0)
{
cout << "Input :" << endl;
cout << "ParaLU params " << endl;
pLUList.print(std::cout, 2, true, true);
cout << "Matrix market file name: " << MMFileName << endl;
}
// ==================== Read input Matrix ==============================
Epetra_CrsMatrix *A;
Epetra_MultiVector *b1;
int err = EpetraExt::MatrixMarketFileToCrsMatrix(MMFileName.c_str(), Comm,
A);
//EpetraExt::MatlabFileToCrsMatrix(MMFileName.c_str(), Comm, A);
//assert(err != 0);
//cout <<"Done reading the matrix"<< endl;
int n = A->NumGlobalRows();
//cout <<"n="<< n << endl;
// Create input vectors
Epetra_Map vecMap(n, 0, Comm);
if (rhsFileName != "")
{
err = EpetraExt::MatrixMarketFileToMultiVector(rhsFileName.c_str(),
vecMap, b1);
}
else
{
b1 = new Epetra_MultiVector(vecMap, 1, false);
b1->PutScalar(1.0);
}
Epetra_MultiVector x(vecMap, 1);
//cout << "Created the vectors" << endl;
// Partition the matrix with hypergraph partitioning and redisstribute
Isorropia::Epetra::Partitioner *partitioner = new
Isorropia::Epetra::Partitioner(A, isoList, false);
partitioner->partition();
Isorropia::Epetra::Redistributor rd(partitioner);
Epetra_CrsMatrix *newA;
Epetra_MultiVector *newX, *newB;
rd.redistribute(*A, newA);
delete A;
A = newA;
rd.redistribute(x, newX);
rd.redistribute(*b1, newB);
Epetra_LinearProblem problem(A, newX, newB);
AztecOO solver(problem);
ifpackList ;
Ifpack_Preconditioner *prec;
ML_Epetra::MultiLevelPreconditioner *MLprec;
if (prec_type.compare("ShyLU") == 0)
{
prec = new Ifpack_ShyLU(A);
prec->SetParameters(shyLUList);
prec->Initialize();
prec->Compute();
//(dynamic_cast<Ifpack_ShyLU *>(prec))->JustTryIt();
//.........这里部分代码省略.........
示例5: if
Teuchos::RCP< std::vector< Teuchos::RCP<PHX::Evaluator<panzer::Traits> > > >
user_app::MyModelFactory<EvalT>::
buildClosureModels(const std::string& model_id,
const Teuchos::ParameterList& models,
const panzer::FieldLayoutLibrary& fl,
const Teuchos::RCP<panzer::IntegrationRule>& ir,
const Teuchos::ParameterList& default_params,
const Teuchos::ParameterList& user_data,
const Teuchos::RCP<panzer::GlobalData>& global_data,
PHX::FieldManager<panzer::Traits>& fm) const
{
using std::string;
using std::vector;
using Teuchos::RCP;
using Teuchos::rcp;
using Teuchos::ParameterList;
using PHX::Evaluator;
RCP< vector< RCP<Evaluator<panzer::Traits> > > > evaluators =
rcp(new vector< RCP<Evaluator<panzer::Traits> > > );
if (!models.isSublist(model_id)) {
models.print(std::cout);
std::stringstream msg;
msg << "Falied to find requested model, \"" << model_id
<< "\", for equation set:\n" << std::endl;
TEUCHOS_TEST_FOR_EXCEPTION(!models.isSublist(model_id), std::logic_error, msg.str());
}
std::vector<Teuchos::RCP<const panzer::PureBasis> > bases;
fl.uniqueBases(bases);
const ParameterList& my_models = models.sublist(model_id);
for (ParameterList::ConstIterator model_it = my_models.begin();
model_it != my_models.end(); ++model_it) {
bool found = false;
const std::string key = model_it->first;
ParameterList input;
const Teuchos::ParameterEntry& entry = model_it->second;
const ParameterList& plist = Teuchos::getValue<Teuchos::ParameterList>(entry);
if (plist.isType<std::string>("Type")) {
if (plist.get<std::string>("Type") == "Parameter") {
TEUCHOS_ASSERT(!plist.isParameter("Value"));
// Defaults for backward compatibility
std::string parameter_name = key;
std::string field_name = key;
if (plist.isType<std::string>("Parameter Name"))
parameter_name = plist.get<std::string>("Parameter Name");
if (plist.isType<std::string>("Field Name"))
field_name = plist.get<std::string>("Field Name");
{ // at IP
RCP< Evaluator<panzer::Traits> > e =
rcp(new panzer::Parameter<EvalT,panzer::Traits>(parameter_name,field_name,ir->dl_scalar,*global_data->pl));
evaluators->push_back(e);
}
for (std::vector<Teuchos::RCP<const panzer::PureBasis> >::const_iterator basis_itr = bases.begin();
basis_itr != bases.end(); ++basis_itr) { // at BASIS
Teuchos::RCP<const panzer::BasisIRLayout> basis = basisIRLayout(*basis_itr,*ir);
RCP< Evaluator<panzer::Traits> > e =
rcp(new panzer::Parameter<EvalT,panzer::Traits>(parameter_name,field_name,basis->functional,*global_data->pl));
evaluators->push_back(e);
}
found = true;
continue;
}
else if (plist.get<std::string>("Type") == "Distributed Parameter") {
// sanity check
TEUCHOS_ASSERT(distr_param_lof!=Teuchos::null);
// build a nodal basis
Teuchos::RCP<const panzer::PureBasis> nodal_basis
= Teuchos::rcp(new panzer::PureBasis("HGrad",1,bases[0]->numCells(),
bases[0]->getCellTopology()));
{
Teuchos::RCP<std::vector<std::string> > dof_names = Teuchos::rcp(new std::vector<std::string>);
dof_names->push_back(key);
ParameterList p("Gather");
p.set("Basis", nodal_basis);
p.set("DOF Names", dof_names);
p.set("Indexer Names", dof_names);
p.set("Sensitivities Name", key);
p.set("Disable Sensitivities", false);
p.set("Gather Seed Index", 0);
p.set("Global Data Key", key);
RCP< PHX::Evaluator<panzer::Traits> > e = distr_param_lof->buildGatherDomain<EvalT>(p);
evaluators->push_back(e);
//.........这里部分代码省略.........
示例6: initializeFromParameterList
//! Initialize from a parameter list
void InvLSCStrategy::initializeFromParameterList(const Teuchos::ParameterList & pl,const InverseLibrary & invLib)
{
// get string specifying inverse
std::string invStr="", invVStr="", invPStr="";
bool rowZeroing = true;
bool useLDU = false;
scaleType_ = Diagonal;
// "parse" the parameter list
if(pl.isParameter("Inverse Type"))
invStr = pl.get<std::string>("Inverse Type");
if(pl.isParameter("Inverse Velocity Type"))
invVStr = pl.get<std::string>("Inverse Velocity Type");
if(pl.isParameter("Inverse Pressure Type"))
invPStr = pl.get<std::string>("Inverse Pressure Type");
if(pl.isParameter("Ignore Boundary Rows"))
rowZeroing = pl.get<bool>("Ignore Boundary Rows");
if(pl.isParameter("Use LDU"))
useLDU = pl.get<bool>("Use LDU");
if(pl.isParameter("Use Mass Scaling"))
useMass_ = pl.get<bool>("Use Mass Scaling");
// if(pl.isParameter("Use Lumping"))
// useLumping_ = pl.get<bool>("Use Lumping");
if(pl.isParameter("Use W-Scaling"))
useWScaling_ = pl.get<bool>("Use W-Scaling");
if(pl.isParameter("Eigen Solver Iterations"))
eigSolveParam_ = pl.get<int>("Eigen Solver Iterations");
if(pl.isParameter("Scaling Type")) {
scaleType_ = getDiagonalType(pl.get<std::string>("Scaling Type"));
TEUCHOS_TEST_FOR_EXCEPT(scaleType_==NotDiag);
}
if(pl.isParameter("Assume Stable Discretization"))
assumeStable_ = pl.get<bool>("Assume Stable Discretization");
Teko_DEBUG_MSG_BEGIN(5)
DEBUG_STREAM << "LSC Inverse Strategy Parameters: " << std::endl;
DEBUG_STREAM << " inv type = \"" << invStr << "\"" << std::endl;
DEBUG_STREAM << " inv v type = \"" << invVStr << "\"" << std::endl;
DEBUG_STREAM << " inv p type = \"" << invPStr << "\"" << std::endl;
DEBUG_STREAM << " bndry rows = " << rowZeroing << std::endl;
DEBUG_STREAM << " use ldu = " << useLDU << std::endl;
DEBUG_STREAM << " use mass = " << useMass_ << std::endl;
DEBUG_STREAM << " use w-scaling = " << useWScaling_ << std::endl;
DEBUG_STREAM << " assume stable = " << assumeStable_ << std::endl;
DEBUG_STREAM << " scale type = " << getDiagonalName(scaleType_) << std::endl;
DEBUG_STREAM << "LSC Inverse Strategy Parameter list: " << std::endl;
pl.print(DEBUG_STREAM);
Teko_DEBUG_MSG_END()
// set defaults as needed
if(invStr=="") invStr = "Amesos";
if(invVStr=="") invVStr = invStr;
if(invPStr=="") invPStr = invStr;
// build velocity inverse factory
invFactoryF_ = invLib.getInverseFactory(invVStr);
invFactoryS_ = invFactoryF_; // by default these are the same
if(invVStr!=invPStr) // if different, build pressure inverse factory
invFactoryS_ = invLib.getInverseFactory(invPStr);
// set other parameters
setUseFullLDU(useLDU);
setRowZeroing(rowZeroing);
if(useMass_) {
Teuchos::RCP<Teko::RequestHandler> rh = getRequestHandler();
rh->preRequest<Teko::LinearOp>(Teko::RequestMesg("Velocity Mass Matrix"));
Teko::LinearOp mass
= rh->request<Teko::LinearOp>(Teko::RequestMesg("Velocity Mass Matrix"));
setMassMatrix(mass);
}
}
示例7: if
Teuchos::RCP< std::vector< Teuchos::RCP<PHX::Evaluator<panzer::Traits> > > >
user_app::MyModelFactory<EvalT>::
buildClosureModels(const std::string& model_id,
const Teuchos::ParameterList& models,
const panzer::FieldLayoutLibrary& fl,
const Teuchos::RCP<panzer::IntegrationRule>& ir,
const Teuchos::ParameterList& default_params,
const Teuchos::ParameterList& user_data,
const Teuchos::RCP<panzer::GlobalData>& global_data,
PHX::FieldManager<panzer::Traits>& fm) const
{
using std::string;
using std::vector;
using Teuchos::RCP;
using Teuchos::rcp;
using Teuchos::ParameterList;
using PHX::Evaluator;
RCP< vector< RCP<Evaluator<panzer::Traits> > > > evaluators =
rcp(new vector< RCP<Evaluator<panzer::Traits> > > );
if (!models.isSublist(model_id)) {
models.print(std::cout);
std::stringstream msg;
msg << "Falied to find requested model, \"" << model_id
<< "\", for equation set:\n" << std::endl;
TEUCHOS_TEST_FOR_EXCEPTION(!models.isSublist(model_id), std::logic_error, msg.str());
}
std::vector<Teuchos::RCP<const panzer::PureBasis> > bases;
fl.uniqueBases(bases);
const ParameterList& my_models = models.sublist(model_id);
for (ParameterList::ConstIterator model_it = my_models.begin();
model_it != my_models.end(); ++model_it) {
bool found = false;
const std::string key = model_it->first;
ParameterList input;
const Teuchos::ParameterEntry& entry = model_it->second;
const ParameterList& plist = Teuchos::getValue<Teuchos::ParameterList>(entry);
#ifdef HAVE_STOKHOS
if (plist.isType<double>("Value") && plist.isType<double>("UQ")
&& plist.isParameter("Expansion")
&& (typeid(EvalT)==typeid(panzer::Traits::SGResidual) ||
typeid(EvalT)==typeid(panzer::Traits::SGJacobian)) ) {
{ // at IP
input.set("Name", key);
input.set("Value", plist.get<double>("Value"));
input.set("UQ", plist.get<double>("UQ"));
input.set("Expansion", plist.get<Teuchos::RCP<Stokhos::OrthogPolyExpansion<int,double> > >("Expansion"));
input.set("Data Layout", ir->dl_scalar);
RCP< Evaluator<panzer::Traits> > e =
rcp(new user_app::ConstantModel<EvalT,panzer::Traits>(input));
evaluators->push_back(e);
}
for (std::vector<Teuchos::RCP<const panzer::PureBasis> >::const_iterator basis_itr = bases.begin();
basis_itr != bases.end(); ++basis_itr) { // at BASIS
input.set("Name", key);
input.set("Value", plist.get<double>("Value"));
input.set("UQ", plist.get<double>("UQ"));
input.set("Expansion", plist.get<Teuchos::RCP<Stokhos::OrthogPolyExpansion<int,double> > >("Expansion"));
Teuchos::RCP<const panzer::BasisIRLayout> basis = basisIRLayout(*basis_itr,*ir);
input.set("Data Layout", basis->functional);
RCP< Evaluator<panzer::Traits> > e =
rcp(new user_app::ConstantModel<EvalT,panzer::Traits>(input));
evaluators->push_back(e);
}
found = true;
}
else
#endif
if (plist.isType<std::string>("Type")) {
if (plist.get<std::string>("Type") == "Parameter") {
{ // at IP
RCP< Evaluator<panzer::Traits> > e =
rcp(new panzer::Parameter<EvalT,panzer::Traits>(key,ir->dl_scalar,plist.get<double>("Value"),*global_data->pl));
evaluators->push_back(e);
}
for (std::vector<Teuchos::RCP<const panzer::PureBasis> >::const_iterator basis_itr = bases.begin();
basis_itr != bases.end(); ++basis_itr) { // at BASIS
Teuchos::RCP<const panzer::BasisIRLayout> basis = basisIRLayout(*basis_itr,*ir);
RCP< Evaluator<panzer::Traits> > e =
rcp(new panzer::Parameter<EvalT,panzer::Traits>(key,basis->functional,plist.get<double>("Value"),*global_data->pl));
evaluators->push_back(e);
}
found = true;
}
}
else if (plist.isType<double>("Value")) {
{ // at IP
//.........这里部分代码省略.........
示例8: printParameterListOptions
// Printing the valid parameter list only showing documentation fields
inline void printParameterListOptions(std::ostream &os, const Teuchos::ParameterList & p) {
p.print(os, Teuchos::ParameterList::PrintOptions().showDoc(true).indent(2).showTypes(true));
os << std::endl;
}
示例9: main
//.........这里部分代码省略.........
cout << "verbosity = " << verbosity << endl;
cout << "method = " << method << endl;
cout << "initvec = " << initvec << endl;
cout << "nev = " << nev << endl;
}
// We need blockSize to be set so we can allocate memory with it.
// If it wasn't set on the command line, set it to the Anasazi defaults here.
// Defaults are those given in the documentation.
if (blockSize < 0)
if (method == "BKS")
blockSize = 1;
else // other methods: LOBPCG, BD, IRTR
blockSize = nev;
// Make sure Epetra was built with 64-bit global indices enabled.
#ifdef EPETRA_NO_64BIT_GLOBAL_INDICES
if (testEpetra64)
testEpetra64 = false;
#endif
Epetra_CrsMatrix *K = NULL;
// Read matrix from file or generate a matrix
if ((gensize > 0 && testEpetra64)) {
// Generate the matrix using long long for global indices
build_simple_matrix<long long>(Comm, K, (long long)gensize, true, verbose);
}
else if (gensize) {
// Generate the matrix using int for global indices
build_simple_matrix<int>(Comm, K, gensize, false, verbose);
}
else {
printf("YOU SHOULDN'T BE HERE \n");
exit(-1);
}
if (verbose && (K->NumGlobalRows64() < TINYMATRIX)) {
if (MyPID == 0) cout << "Input matrix: " << endl;
K->Print(cout);
}
Teuchos::RCP<Epetra_CrsMatrix> rcpK = Teuchos::rcp( K );
// Set Anasazi verbosity level
if (MyPID == 0) cout << "Setting up the problem..." << endl;
int anasazi_verbosity = Anasazi::Errors + Anasazi::Warnings;
if (verbosity >= 1) // low
anasazi_verbosity += Anasazi::FinalSummary + Anasazi::TimingDetails;
if (verbosity >= 2) // medium
anasazi_verbosity += Anasazi::IterationDetails;
if (verbosity >= 3) // high
anasazi_verbosity += Anasazi::StatusTestDetails
+ Anasazi::OrthoDetails
+ Anasazi::Debug;
// Create parameter list to pass into solver
Teuchos::ParameterList MyPL;
MyPL.set("Verbosity", anasazi_verbosity);
MyPL.set("Which", which);
MyPL.set("Convergence Tolerance", tol);
MyPL.set("Relative Convergence Tolerance", relconvtol);
MyPL.set("Orthogonalization", ortho);
// For the following, use Anasazi's defaults unless explicitly specified.
if (numblocks > 0) MyPL.set( "Num Blocks", numblocks);
示例10: main
int main(int argc, char *argv[])
{
#ifdef HAVE_MPI
Teuchos::GlobalMPISession mpiSession(&argc, &argv, 0);
Epetra_MpiComm Comm(MPI_COMM_WORLD);
#else
Epetra_SerialComm Comm;
#endif
int nProcs, myPID ;
Teuchos::ParameterList pLUList ; // ParaLU parameters
Teuchos::ParameterList isoList ; // Isorropia parameters
string ipFileName = "ShyLU.xml"; // TODO : Accept as i/p
nProcs = mpiSession.getNProc();
myPID = Comm.MyPID();
if (myPID == 0)
{
cout <<"Parallel execution: nProcs="<< nProcs << endl;
}
// =================== Read input xml file =============================
Teuchos::updateParametersFromXmlFile(ipFileName, &pLUList);
isoList = pLUList.sublist("Isorropia Input");
// Get matrix market file name
string MMFileName = Teuchos::getParameter<string>(pLUList, "mm_file");
string prec_type = Teuchos::getParameter<string>(pLUList, "preconditioner");
if (myPID == 0)
{
cout << "Input :" << endl;
cout << "ParaLU params " << endl;
pLUList.print(std::cout, 2, true, true);
cout << "Matrix market file name: " << MMFileName << endl;
}
// ==================== Read input Matrix ==============================
Epetra_CrsMatrix *A;
int err = EpetraExt::MatrixMarketFileToCrsMatrix(MMFileName.c_str(), Comm, A);
//EpetraExt::MatlabFileToCrsMatrix(MMFileName.c_str(), Comm, A);
//assert(err != 0);
cout <<"Done reading the matrix"<< endl;
int n = A->NumGlobalRows();
cout <<"n="<< n << endl;
// Create input vectors
Epetra_Map vecMap(n, 0, Comm);
Epetra_MultiVector x(vecMap, 1);
Epetra_MultiVector b(vecMap, 1, false);
b.PutScalar(1.0); // TODO : Accept it as input
// Partition the matrix with hypergraph partitioning and redisstribute
Isorropia::Epetra::Partitioner *partitioner = new
Isorropia::Epetra::Partitioner(A, isoList, false);
partitioner->partition();
Isorropia::Epetra::Redistributor rd(partitioner);
Epetra_CrsMatrix *newA;
Epetra_MultiVector *newX, *newB;
rd.redistribute(*A, newA);
delete A;
A = newA;
rd.redistribute(x, newX);
rd.redistribute(b, newB);
Epetra_LinearProblem problem(A, newX, newB);
Amesos Factory;
char* SolverType = "Amesos_Klu";
bool IsAvailable = Factory.Query(SolverType);
Epetra_LinearProblem *LP = new Epetra_LinearProblem();
LP->SetOperator(A);
LP->SetLHS(newX);
LP->SetRHS(newB);
Amesos_BaseSolver *Solver = Factory.Create(SolverType, *LP);
Solver->SymbolicFactorization();
Teuchos::Time ftime("setup time");
ftime.start();
Solver->NumericFactorization();
cout << "Numeric Factorization" << endl;
Solver->Solve();
cout << "Solve done" << endl;
ftime.stop();
cout << "Time to setup" << ftime.totalElapsedTime() << endl;
// compute ||Ax - b||
double Norm;
Epetra_MultiVector Ax(vecMap, 1);
Epetra_MultiVector *newAx;
rd.redistribute(Ax, newAx);
A->Multiply(false, *newX, *newAx);
newAx->Update(1.0, *newB, -1.0);
newAx->Norm2(&Norm);
//.........这里部分代码省略.........
示例11: main
int main( int argc, char* argv[] )
{
using Teuchos::inoutArg;
Teuchos::GlobalMPISession mpiSession(&argc,&argv);
std::cout << std::endl << Teuchos::Teuchos_Version() << std::endl;
bool success = true;
try {
std::string xmlInFileName = "";
std::string extraXmlFile = "";
std::string xmlOutFileName = "paramList.out";
Teuchos::CommandLineProcessor clp(false); // Don't throw exceptions
clp.setOption("xml-in-file",&xmlInFileName,"The XML file to read into a parameter list");
clp.setOption("extra-xml-file",&extraXmlFile,"File with extra XML text that will modify the initial XML read in");
clp.setOption("xml-out-file",&xmlOutFileName,"The XML file to write the final parameter list to");
clp.setDocString(
"This example program shows how to read in a parameter list from an"
" XML file (given by --xml-in-file=xmlInFileName) and then modify it"
" given some XML specified on the command-line (given by --extra-xml=extrXmlStr)."
" The final parameter list is then written back to an XML file."
" (given by --xml-out-file=xmlOutFileName)."
);
Teuchos::CommandLineProcessor::EParseCommandLineReturn
parse_return = clp.parse(argc,argv);
if( parse_return != Teuchos::CommandLineProcessor::PARSE_SUCCESSFUL ) {
std::cout << "\nEnd Result: TEST FAILED" << std::endl;
return parse_return;
}
Teuchos::ParameterList paramList;
if(xmlInFileName.length()) {
std::cout << "\nReading a parameter list from the XML file \""<<xmlInFileName<<"\" ...\n";
Teuchos::updateParametersFromXmlFile(xmlInFileName, inoutArg(paramList));
std::cout << "\nParameter list read from the XML file \""<<xmlInFileName<<"\":\n\n";
paramList.print(std::cout,2,true,true);
}
std::string line("");
if(extraXmlFile.length()) {
std::ifstream myfile(extraXmlFile.c_str());
if (myfile.is_open())
{
getline (myfile,line);
std::cout << line << "\n";
myfile.close();
}
std::cout << "\nUpdating the parameter list given the extra XML std::string:\n\n"<<line<<"\n";
Teuchos::updateParametersFromXmlString(line, inoutArg(paramList));
std::cout << "\nParameter list after ammending extra XML std::string:\n\n";
paramList.print(std::cout,2,true,true);
}
std::cout << "\nWriting the final parameter list back to the XML file \""<<xmlOutFileName<<"\" ... \n";
Teuchos::writeParameterListToXmlFile(paramList,xmlOutFileName);
}
TEUCHOS_STANDARD_CATCH_STATEMENTS(true,std::cerr,success);
if(success)
std::cout << "\nEnd Result: TEST PASSED" << std::endl;
else
std::cout << "\nEnd Result: TEST FAILED" << std::endl;
return ( success ? 0 : 1 );
}
示例12: rcp
Teuchos::RCP< std::vector< Teuchos::RCP<PHX::Evaluator<panzer::Traits> > > >
Example::ModelFactory<EvalT>::
buildClosureModels(const std::string& model_id,
const Teuchos::ParameterList& models,
const panzer::FieldLayoutLibrary& fl,
const Teuchos::RCP<panzer::IntegrationRule>& ir,
const Teuchos::ParameterList& default_params,
const Teuchos::ParameterList& user_data,
const Teuchos::RCP<panzer::GlobalData>& global_data,
PHX::FieldManager<panzer::Traits>& fm) const
{
using std::string;
using std::vector;
using Teuchos::RCP;
using Teuchos::rcp;
using Teuchos::ParameterList;
using PHX::Evaluator;
RCP< vector< RCP<Evaluator<panzer::Traits> > > > evaluators =
rcp(new vector< RCP<Evaluator<panzer::Traits> > > );
if (!models.isSublist(model_id)) {
models.print(std::cout);
std::stringstream msg;
msg << "Falied to find requested model, \"" << model_id
<< "\", for equation set:\n" << std::endl;
TEUCHOS_TEST_FOR_EXCEPTION(!models.isSublist(model_id), std::logic_error, msg.str());
}
std::vector<Teuchos::RCP<const panzer::PureBasis> > bases;
fl.uniqueBases(bases);
const ParameterList& my_models = models.sublist(model_id);
for (ParameterList::ConstIterator model_it = my_models.begin();
model_it != my_models.end(); ++model_it) {
bool found = false;
const std::string key = model_it->first;
ParameterList input;
const Teuchos::ParameterEntry& entry = model_it->second;
const ParameterList& plist = Teuchos::getValue<Teuchos::ParameterList>(entry);
if (plist.isType<double>("Value")) {
{ // at IP
input.set("Name", key);
input.set("Value", plist.get<double>("Value"));
input.set("Data Layout", ir->dl_scalar);
RCP< Evaluator<panzer::Traits> > e =
rcp(new panzer::Constant<EvalT,panzer::Traits>(input));
evaluators->push_back(e);
}
for (std::vector<Teuchos::RCP<const panzer::PureBasis> >::const_iterator basis_itr = bases.begin();
basis_itr != bases.end(); ++basis_itr) { // at BASIS
input.set("Name", key);
input.set("Value", plist.get<double>("Value"));
Teuchos::RCP<const panzer::BasisIRLayout> basis = basisIRLayout(*basis_itr,*ir);
input.set("Data Layout", basis->functional);
RCP< Evaluator<panzer::Traits> > e =
rcp(new panzer::Constant<EvalT,panzer::Traits>(input));
evaluators->push_back(e);
}
found = true;
}
if (plist.isType<std::string>("Type")) {
const std::string type = plist.get<std::string>("Type");
if (type == "SIMPLE SOURCE") {
RCP<Evaluator<panzer::Traits> > e = rcp(new Example::SimpleSource<EvalT,panzer::Traits>(key, *ir));
evaluators->push_back(e);
found = true;
} else if (type == "EXACT") {
RCP<Evaluator<panzer::Traits> > e = rcp(new Example::Solution<EvalT,panzer::Traits>(key, *ir));
evaluators->push_back(e);
found = true;
} else if (type == "EXACT nonlinear Robin") {
RCP<Evaluator<panzer::Traits> > e = rcp(new Example::Solution<EvalT,panzer::Traits>(key, *ir, false));
evaluators->push_back(e);
found = true;
} else if (type == "ERROR_CALC") {
{
std::vector<std::string> values(2);
values[0] = plist.get<std::string>("Field A");
values[1] = plist.get<std::string>("Field B");
std::vector<double> scalars(2);
scalars[0] = 1.0;
scalars[1] = -1.0;
Teuchos::ParameterList p;
p.set("Sum Name", key + "_DIFF");
p.set<RCP<std::vector<std::string> > >("Values Names", Teuchos::rcpFromRef(values));
p.set<RCP<const std::vector<double> > >("Scalars", Teuchos::rcpFromRef(scalars));
p.set("Data Layout", ir->dl_scalar);
RCP<Evaluator<panzer::Traits> > e = rcp(new panzer::Sum<EvalT,panzer::Traits>(p));
evaluators->push_back(e);
}
//.........这里部分代码省略.........
示例13: rcp
Teuchos::RCP< std::vector< Teuchos::RCP<PHX::Evaluator<panzer::Traits> > > >
user_app::MyModelFactory_Physics1<EvalT>::
buildClosureModels(const std::string& model_id,
const Teuchos::ParameterList& models,
const panzer::FieldLayoutLibrary& fl,
const Teuchos::RCP<panzer::IntegrationRule>& ir,
const Teuchos::ParameterList& default_params,
const Teuchos::ParameterList& user_data,
const Teuchos::RCP<panzer::GlobalData>& global_data,
PHX::FieldManager<panzer::Traits>& fm) const
{
using std::string;
using std::vector;
using Teuchos::RCP;
using Teuchos::rcp;
using Teuchos::ParameterList;
using PHX::Evaluator;
RCP< vector< RCP<Evaluator<panzer::Traits> > > > evaluators =
rcp(new vector< RCP<Evaluator<panzer::Traits> > > );
if (!models.isSublist(model_id)) {
models.print(std::cout);
std::stringstream msg;
msg << "Falied to find requested model, \"" << model_id
<< "\", for equation set:\n" << std::endl;
TEUCHOS_TEST_FOR_EXCEPTION(!models.isSublist(model_id), std::logic_error, msg.str());
}
const ParameterList& my_models = models.sublist(model_id);
for (ParameterList::ConstIterator model_it = my_models.begin();
model_it != my_models.end(); ++model_it) {
bool found = false;
const std::string key = model_it->first;
ParameterList input;
const Teuchos::ParameterEntry& entry = model_it->second;
const ParameterList& plist = Teuchos::getValue<Teuchos::ParameterList>(entry);
if (plist.isType<double>("Value")) {
// at IP
{
input.set("Name", key);
input.set("Value", plist.get<double>("Value"));
input.set("Data Layout", ir->dl_scalar);
RCP< Evaluator<panzer::Traits> > e =
rcp(new panzer::Constant<EvalT,panzer::Traits>(input));
evaluators->push_back(e);
}
// at BASIS
std::vector<Teuchos::RCP<const panzer::PureBasis> > bases;
fl.uniqueBases(bases);
for (std::vector<Teuchos::RCP<const panzer::PureBasis> >::const_iterator basis_itr = bases.begin();
basis_itr != bases.end(); ++basis_itr) {
input.set("Name", key);
input.set("Value", plist.get<double>("Value"));
Teuchos::RCP<const panzer::BasisIRLayout> basis = basisIRLayout(*basis_itr,*ir);
input.set("Data Layout", basis->functional);
RCP< Evaluator<panzer::Traits> > e =
rcp(new panzer::Constant<EvalT,panzer::Traits>(input));
evaluators->push_back(e);
}
found = true;
}
if (!found && m_throw_if_model_not_found) {
std::stringstream msg;
msg << "ClosureModelFactory failed to build evaluator for key \"" << key
<< "\"\nin model \"" << model_id
<< "\". Please correct the type or add support to the \nfactory." <<std::endl;
TEUCHOS_TEST_FOR_EXCEPTION(!found, std::logic_error, msg.str());
}
}
return evaluators;
}