本文整理汇总了C++中ParameterList::get方法的典型用法代码示例。如果您正苦于以下问题:C++ ParameterList::get方法的具体用法?C++ ParameterList::get怎么用?C++ ParameterList::get使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类ParameterList
的用法示例。
在下文中一共展示了ParameterList::get方法的6个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: clone
//clone a parameterList with new objects
void ParameterList::clone(const ParameterList& parameterListR){
std::string key;
std::string idAux=parameterListR.getId();
setId(idAux);
for (unsigned int it=0; it<parameterListR.size();it++){
Parameter* parameter=parameterListR.get(it,key);
switch (parameter->getType()){
case ACTIVE_INT_PARAMETER:{
IntParameter* intParameter=
new IntParameter(((IntParameter*)parameter)->getValue());
insertToMap(key,intParameter);
}
break;
case ACTIVE_REAL_PARAMETER:{
RealParameter* realParameter=
new RealParameter(((RealParameter*)parameter)->getValue());
insertToMap(key,realParameter);
}
break;
case ACTIVE_STRING_PARAMETER:{
StringParameter* stringParameter=
new StringParameter(((StringParameter*)parameter)->getValue());
insertToMap(key,stringParameter);
}
break;
case ACTIVE_BYTES_PARAMETER:{
BytesParameter* bytesParameter=
new BytesParameter(((BytesParameter*)parameter)->getValue());
insertToMap(key,bytesParameter);
}
break;
}
}
}
示例2: main
int main(int argc, char *argv[])
{
#ifdef HAVE_MPI
MPI_Init(&argc,&argv);
Epetra_MpiComm Comm(MPI_COMM_WORLD);
#else
Epetra_SerialComm Comm;
#endif
#define ML_SCALING
#ifdef ML_SCALING
const int ntimers=4;
enum {total, probBuild, precBuild, solve};
ml_DblLoc timeVec[ntimers], maxTime[ntimers], minTime[ntimers];
for (int i=0; i<ntimers; i++) timeVec[i].rank = Comm.MyPID();
timeVec[total].value = MPI_Wtime();
#endif
int nx;
if (argc > 1) nx = (int) strtol(argv[1],NULL,10);
else nx = 256;
if (nx < 1) nx = 256; // input a nonpositive integer if you want to specify
// the XML input file name.
nx = nx*(int)sqrt((double)Comm.NumProc());
int ny = nx;
printf("nx = %d\nny = %d\n",nx,ny);
fflush(stdout);
char xmlFile[80];
bool readXML=false;
if (argc > 2) {strcpy(xmlFile,argv[2]); readXML = true;}
else sprintf(xmlFile,"%s","params.xml");
ParameterList GaleriList;
GaleriList.set("nx", nx);
GaleriList.set("ny", ny);
#ifdef ML_SCALING
timeVec[probBuild].value = MPI_Wtime();
#endif
Epetra_Map* Map = CreateMap("Cartesian2D", Comm, GaleriList);
Epetra_CrsMatrix* A = CreateCrsMatrix("Laplace2D", Map, GaleriList);
if (!Comm.MyPID()) printf("nx = %d, ny = %d, mx = %d, my = %d\n",nx,ny,GaleriList.get("mx",-1),GaleriList.get("my",-1));
fflush(stdout);
//avoid potential overflow
double numMyRows = A->NumMyRows();
double numGlobalRows;
Comm.SumAll(&numMyRows,&numGlobalRows,1);
if (!Comm.MyPID()) printf("# global rows = %1.0f\n",numGlobalRows);
//printf("pid %d: #rows = %d\n",Comm.MyPID(),A->NumMyRows());
fflush(stdout);
Epetra_MultiVector *coords = CreateCartesianCoordinates("2D", Map,GaleriList);
double *x_coord=0,*y_coord=0,*z_coord=0;
double **ttt;
if (!coords->ExtractView(&ttt)) {
x_coord = ttt[0];
y_coord = ttt[1];
} else {
if (!Comm.MyPID()) printf("Error extracting coordinate vectors\n");
MPI_Finalize();
exit(EXIT_FAILURE);
}
Epetra_Vector LHS(*Map); LHS.Random();
Epetra_Vector RHS(*Map); RHS.PutScalar(0.0);
Epetra_LinearProblem Problem(A, &LHS, &RHS);
AztecOO solver(Problem);
#ifdef ML_SCALING
timeVec[probBuild].value = MPI_Wtime() - timeVec[probBuild].value;
#endif
// =========================== begin of ML part ===========================
#ifdef ML_SCALING
timeVec[precBuild].value = MPI_Wtime();
#endif
ParameterList MLList;
if (readXML) {
MLList.set("read XML",true);
MLList.set("XML input file",xmlFile);
}
else {
cout << "here" << endl;
ML_Epetra::SetDefaults("SA",MLList);
MLList.set("smoother: type","Chebyshev");
MLList.set("smoother: sweeps",3);
MLList.set("coarse: max size",1);
}
MLList.set("x-coordinates", x_coord);
MLList.set("y-coordinates", y_coord);
MLList.set("z-coordinates", z_coord);
//.........这里部分代码省略.........
示例3: main
//.........这里部分代码省略.........
Epetra_Map* Map;
Epetra_CrsMatrix* A;
Epetra_MultiVector* Coord;
if (optMatrixType == "Laplace2D") {
Map = CreateMap("Cartesian2D", Comm, GaleriList);
A = CreateCrsMatrix("Laplace2D", Map, GaleriList);
Coord = CreateCartesianCoordinates("2D", &(A->Map()), GaleriList);
} else if (optMatrixType == "Laplace3D") {
Map = CreateMap("Cartesian3D", Comm, GaleriList);
A = CreateCrsMatrix("Laplace3D", Map, GaleriList);
Coord = CreateCartesianCoordinates("3D", &(A->Map()), GaleriList);
} else {
throw(std::runtime_error("Bad matrix type"));
}
//EpetraExt::RowMatrixToMatlabFile("A.m",*A);
double *x_coord = (*Coord)[0];
double *y_coord = (*Coord)[1];
double* z_coord=NULL;
if (optMatrixType == "Laplace3D") z_coord = (*Coord)[2];
//EpetraExt::MultiVectorToMatrixMarketFile("mlcoords.m",*Coord);
if( Comm.MyPID()==0 ) {
std::cout << "========================================================" << std::endl;
std::cout << " Matrix type: " << optMatrixType << std::endl;
if (optMatrixType == "Laplace2D")
std::cout << " Problem size: " << optNx*optNy << " (" << optNx << "x" << optNy << ")" << std::endl;
else if (optMatrixType == "Laplace3D")
std::cout << " Problem size: " << optNx*optNy*optNz << " (" << optNx << "x" << optNy << "x" << optNz << ")" << std::endl;
int mx = GaleriList.get("mx", -1);
int my = GaleriList.get("my", -1);
int mz = GaleriList.get("my", -1);
std::cout << " Processor subdomains in x direction: " << mx << std::endl
<< " Processor subdomains in y direction: " << my << std::endl;
if (optMatrixType == "Laplace3D")
std::cout << " Processor subdomains in z direction: " << mz << std::endl;
std::cout << "========================================================" << std::endl;
}
// Build a linear system with trivial solution, using a random vector
// as starting solution.
Epetra_Vector LHS(*Map); LHS.Random();
Epetra_Vector RHS(*Map); RHS.PutScalar(0.0);
Epetra_LinearProblem Problem(A, &LHS, &RHS);
// As we wish to use AztecOO, we need to construct a solver object
// for this problem
AztecOO solver(Problem);
#ifdef ML_SCALING
timeVec[probBuild].value = MPI_Wtime() - timeVec[probBuild].value;
#endif
// =========================== begin of ML part ===========================
#ifdef ML_SCALING
timeVec[precBuild].value = MPI_Wtime();
#endif
// create a parameter list for ML options
ParameterList MLList;
// Sets default parameters for classic smoothed aggregation. After this
示例4: mpiSession
int
main (int argc, char *argv[])
{
using namespace TrilinosCouplings; // Yes, this means I'm lazy.
using TpetraIntrepidPoissonExample::exactResidualNorm;
using TpetraIntrepidPoissonExample::makeMatrixAndRightHandSide;
using TpetraIntrepidPoissonExample::solveWithBelos;
using TpetraIntrepidPoissonExample::solveWithBelosGPU;
using IntrepidPoissonExample::makeMeshInput;
using IntrepidPoissonExample::parseCommandLineArguments;
using IntrepidPoissonExample::setCommandLineArgumentDefaults;
using IntrepidPoissonExample::setMaterialTensorOffDiagonalValue;
using IntrepidPoissonExample::setUpCommandLineArguments;
using Tpetra::DefaultPlatform;
using Teuchos::Comm;
using Teuchos::outArg;
using Teuchos::ParameterList;
using Teuchos::parameterList;
using Teuchos::RCP;
using Teuchos::rcp;
using Teuchos::rcpFromRef;
using Teuchos::getFancyOStream;
using Teuchos::FancyOStream;
using std::endl;
// Pull in typedefs from the example's namespace.
typedef TpetraIntrepidPoissonExample::ST ST;
#ifdef HAVE_TRILINOSCOUPLINGS_MUELU
typedef TpetraIntrepidPoissonExample::LO LO;
typedef TpetraIntrepidPoissonExample::GO GO;
#endif // HAVE_TRILINOSCOUPLINGS_MUELU
typedef TpetraIntrepidPoissonExample::Node Node;
typedef Teuchos::ScalarTraits<ST> STS;
typedef STS::magnitudeType MT;
typedef Teuchos::ScalarTraits<MT> STM;
typedef TpetraIntrepidPoissonExample::sparse_matrix_type sparse_matrix_type;
typedef TpetraIntrepidPoissonExample::vector_type vector_type;
typedef TpetraIntrepidPoissonExample::operator_type operator_type;
bool success = true;
try {
Teuchos::oblackholestream blackHole;
Teuchos::GlobalMPISession mpiSession (&argc, &argv, &blackHole);
const int myRank = mpiSession.getRank ();
//const int numProcs = mpiSession.getNProc ();
// Get the default communicator and Kokkos Node instance
RCP<const Comm<int> > comm =
DefaultPlatform::getDefaultPlatform ().getComm ();
RCP<Node> node = DefaultPlatform::getDefaultPlatform ().getNode ();
// Did the user specify --help at the command line to print help
// with command-line arguments?
bool printedHelp = false;
// Values of command-line arguments.
int nx, ny, nz;
std::string xmlInputParamsFile;
bool verbose, debug;
int maxNumItersFromCmdLine = -1; // -1 means "read from XML file"
double tolFromCmdLine = -1.0; // -1 means "read from XML file"
std::string solverName = "GMRES";
ST materialTensorOffDiagonalValue = 0.0;
// Set default values of command-line arguments.
setCommandLineArgumentDefaults (nx, ny, nz, xmlInputParamsFile,
solverName, verbose, debug);
// Parse and validate command-line arguments.
Teuchos::CommandLineProcessor cmdp (false, true);
setUpCommandLineArguments (cmdp, nx, ny, nz, xmlInputParamsFile,
solverName, tolFromCmdLine,
maxNumItersFromCmdLine,
verbose, debug);
cmdp.setOption ("materialTensorOffDiagonalValue",
&materialTensorOffDiagonalValue, "Off-diagonal value in "
"the material tensor. This controls the iteration count. "
"Be careful with this if you use CG, since you can easily "
"make the matrix indefinite.");
// Additional command-line arguments for GPU experimentation.
bool gpu = false;
cmdp.setOption ("gpu", "no-gpu", &gpu,
"Run example using GPU node (if supported)");
int ranks_per_node = 1;
cmdp.setOption ("ranks_per_node", &ranks_per_node,
"Number of MPI ranks per node");
int gpu_ranks_per_node = 1;
cmdp.setOption ("gpu_ranks_per_node", &gpu_ranks_per_node,
"Number of MPI ranks per node for GPUs");
int device_offset = 0;
cmdp.setOption ("device_offset", &device_offset,
"Offset for attaching MPI ranks to CUDA devices");
// Additional command-line arguments for dumping the generated
// matrix or its row Map to output files.
//
// FIXME (mfh 09 Apr 2014) Need to port these command-line
// arguments to the Epetra version.
// If matrixFilename is nonempty, dump the matrix to that file
// in MatrixMarket format.
//.........这里部分代码省略.........
示例5: mpiSession
int
main (int argc, char *argv[])
{
using namespace TrilinosCouplings; // Yes, this means I'm lazy.
using TpetraIntrepidPoissonExample::exactResidualNorm;
using TpetraIntrepidPoissonExample::makeMatrixAndRightHandSide;
using TpetraIntrepidPoissonExample::solveWithBelos;
using TpetraIntrepidPoissonExample::solveWithBelosGPU;
using IntrepidPoissonExample::makeMeshInput;
using IntrepidPoissonExample::setCommandLineArgumentDefaults;
using IntrepidPoissonExample::setUpCommandLineArguments;
using IntrepidPoissonExample::parseCommandLineArguments;
using Tpetra::DefaultPlatform;
using Teuchos::Comm;
using Teuchos::outArg;
using Teuchos::ParameterList;
using Teuchos::parameterList;
using Teuchos::RCP;
using Teuchos::rcp;
using Teuchos::rcpFromRef;
using Teuchos::getFancyOStream;
using Teuchos::FancyOStream;
using std::endl;
// Pull in typedefs from the example's namespace.
typedef TpetraIntrepidPoissonExample::ST ST;
typedef TpetraIntrepidPoissonExample::LO LO;
typedef TpetraIntrepidPoissonExample::GO GO;
typedef TpetraIntrepidPoissonExample::Node Node;
typedef Teuchos::ScalarTraits<ST> STS;
typedef STS::magnitudeType MT;
typedef Teuchos::ScalarTraits<MT> STM;
typedef TpetraIntrepidPoissonExample::sparse_matrix_type sparse_matrix_type;
typedef TpetraIntrepidPoissonExample::vector_type vector_type;
typedef TpetraIntrepidPoissonExample::operator_type operator_type;
bool success = true;
try {
Teuchos::oblackholestream blackHole;
Teuchos::GlobalMPISession mpiSession (&argc, &argv, &blackHole);
const int myRank = mpiSession.getRank ();
//const int numProcs = mpiSession.getNProc ();
// Get the default communicator and Kokkos Node instance
RCP<const Comm<int> > comm =
DefaultPlatform::getDefaultPlatform ().getComm ();
RCP<Node> node = DefaultPlatform::getDefaultPlatform ().getNode ();
// Did the user specify --help at the command line to print help
// with command-line arguments?
bool printedHelp = false;
// Values of command-line arguments.
int nx, ny, nz;
std::string xmlInputParamsFile;
bool verbose, debug;
// Set default values of command-line arguments.
setCommandLineArgumentDefaults (nx, ny, nz, xmlInputParamsFile,
verbose, debug);
// Parse and validate command-line arguments.
Teuchos::CommandLineProcessor cmdp (false, true);
setUpCommandLineArguments (cmdp, nx, ny, nz, xmlInputParamsFile,
verbose, debug);
bool gpu = false;
cmdp.setOption ("gpu", "no-gpu", &gpu,
"Run example using GPU node (if supported)");
int ranks_per_node = 1;
cmdp.setOption("ranks_per_node", &ranks_per_node,
"Number of MPI ranks per node");
int gpu_ranks_per_node = 1;
cmdp.setOption("gpu_ranks_per_node", &gpu_ranks_per_node,
"Number of MPI ranks per node for GPUs");
int device_offset = 0;
cmdp.setOption("device_offset", &device_offset,
"Offset for attaching MPI ranks to CUDA devices");
parseCommandLineArguments (cmdp, printedHelp, argc, argv, nx, ny, nz,
xmlInputParamsFile, verbose, debug);
if (printedHelp) {
// The user specified --help at the command line to print help
// with command-line arguments. We printed help already, so quit
// with a happy return code.
return EXIT_SUCCESS;
}
// Both streams only print on MPI Rank 0. "out" only prints if the
// user specified --verbose.
RCP<FancyOStream> out =
getFancyOStream (rcpFromRef ((myRank == 0 && verbose) ? std::cout : blackHole));
RCP<FancyOStream> err =
getFancyOStream (rcpFromRef ((myRank == 0 && debug) ? std::cerr : blackHole));
#ifdef HAVE_MPI
*out << "PARALLEL executable" << endl;
#else
*out << "SERIAL executable" << endl;
#endif
/**********************************************************************************/
/********************************** GET XML INPUTS ********************************/
//.........这里部分代码省略.........
示例6: catch
void Krylov<MatrixType>::setParameters (const Teuchos::ParameterList& plist)
{
using Teuchos::as;
using Teuchos::ParameterList;
using Teuchos::Exceptions::InvalidParameterName;
using Teuchos::Exceptions::InvalidParameterType;
// FIXME (mfh 12 Sep 2014) Don't rewrite Belos::SolverFactory!!! Use
// that instead.
ParameterList params = plist;
// Get the current parameters' values. We don't assign to the
// instance data directly until we've gotten all the parameters.
// This ensures "transactional" semantics, so that if attempting to
// get some parameter throws an exception, the class' state doesn't
// change.
magnitude_type resTol = resTol_;
int numIters = numIters_;
std::string iterType = iterationType_;
int blockSize = BlockSize_;
bool zeroStartingSolution = ZeroStartingSolution_;
int precType = PreconditionerType_;
//
// Get the "krylov: iteration type" parameter.
//
// We prefer std::string (name of Belos solver), but allow int
// ("enum" value) for backwards compatibility.
//
bool gotIterType = false;
try {
iterType = params.get<std::string> ("krylov: iteration type");
gotIterType = true;
}
catch (InvalidParameterName) {
gotIterType = true; // the parameter is not there, so don't try to get it anymore
}
catch (InvalidParameterType) {
// Perhaps the user specified it as int.
}
// If it's not string, it has to be int.
// We've already checked whether the name exists.
if (! gotIterType) {
const int iterTypeInt = params.get<int> ("krylov: iteration type");
gotIterType = true;
if (iterTypeInt == 1) {
iterType = "GMRES";
} else if (iterTypeInt == 2) {
iterType = "CG";
} else {
TEUCHOS_TEST_FOR_EXCEPTION(
true, std::invalid_argument, "Ifpack2::Krylov::setParameters: Invalid "
"\"krylov: iteration type\" value " << iterTypeInt << ". Valid int "
"values are 1 (GMRES) and 2 (CG). Please prefer setting this "
"parameter as a string (the name of the Krylov solver to use).");
}
}
resTol = params.get ("krylov: residual tolerance", resTol);
numIters = params.get ("krylov: number of iterations", numIters);
blockSize = params.get ("krylov: block size", blockSize);
zeroStartingSolution = params.get ("krylov: zero starting solution",
zeroStartingSolution);
precType = params.get ("krylov: preconditioner type", precType);
// Separate preconditioner parameters into another list
//
// FIXME (mfh 17 Jan 2014) Inner preconditioner's parameters should
// be a sublist, not part of the main list!!!
if (PreconditionerType_ == 1) {
precParams_.set ("relaxation: sweeps",
params.get ("relaxation: sweeps", 1));
precParams_.set ("relaxation: damping factor",
params.get ("relaxation: damping factor", (scalar_type) 1.0));
precParams_.set ("relaxation: min diagonal value",
params.get ("relaxation: min diagonal value", STS::one ()));
precParams_.set ("relaxation: zero starting solution",
params.get ("relaxation: zero starting solution", true));
precParams_.set ("relaxation: backward mode",
params.get ("relaxation: backward mode", false));
}
// FIXME (mfh 17 Jan 2014) AdditiveSchwarz's ParameterList no longer
// takes parameters for its subdomain solver! You have to pass them
// into a sublist.
if (PreconditionerType_ == 2 || PreconditionerType_ == 3) {
// FIXME (mfh 17 Jan 2014) should be an integer, given how ILUT
// works! Furthermore, this parameter does not mean what you
// think it means.
precParams_.set ("fact: ilut level-of-fill",
params.get ("fact: ilut level-of-fill", (double) 1.0));
precParams_.set ("fact: iluk level-of-fill",
params.get ("fact: iluk level-of-fill", (double) 1.0));
// FIXME (mfh 17 Jan 2014) scalar_type or magnitude_type? not
// sure, but double is definitely wrong.
precParams_.set ("fact: absolute threshold",
params.get ("fact: absolute threshold", (double) 0.0));
// FIXME (mfh 17 Jan 2014) scalar_type or magnitude_type? not
// sure, but double is definitely wrong.
//.........这里部分代码省略.........