本文整理汇总了C++中PetscOptionsEnd函数的典型用法代码示例。如果您正苦于以下问题:C++ PetscOptionsEnd函数的具体用法?C++ PetscOptionsEnd怎么用?C++ PetscOptionsEnd使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了PetscOptionsEnd函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: ProcessOptions
static PetscErrorCode ProcessOptions(MPI_Comm comm, AppCtx *options)
{
PetscErrorCode ierr;
PetscFunctionBeginUser;
options->dim = 2;
options->cellSimplex = PETSC_TRUE;
options->filename[0] = '\0';
options->testPartition = PETSC_TRUE;
options->testNum = 0;
ierr = PetscOptionsBegin(comm, "", "Meshing Problem Options", "DMPLEX");
CHKERRQ(ierr);
ierr = PetscOptionsInt("-dim", "The topological mesh dimension", "ex13.c", options->dim, &options->dim, NULL);
CHKERRQ(ierr);
ierr = PetscOptionsBool("-cell_simplex", "Use simplices if true, otherwise hexes", "ex13.c", options->cellSimplex, &options->cellSimplex, NULL);
CHKERRQ(ierr);
ierr = PetscOptionsString("-filename", "The mesh file", "ex13.c", options->filename, options->filename, PETSC_MAX_PATH_LEN, NULL);
CHKERRQ(ierr);
ierr = PetscOptionsBool("-test_partition", "Use a fixed partition for testing", "ex13.c", options->testPartition, &options->testPartition, NULL);
CHKERRQ(ierr);
ierr = PetscOptionsInt("-test_num", "The test partition number", "ex13.c", options->testNum, &options->testNum, NULL);
CHKERRQ(ierr);
ierr = PetscOptionsEnd();
PetscFunctionReturn(0);
};
示例2: ProcessOptions
PetscErrorCode ProcessOptions(MPI_Comm comm, AppCtx *options)
{
PetscErrorCode ierr;
PetscFunctionBeginUser;
options->debug = 0;
options->dim = 2;
options->numBatches = 1;
options->numBlocks = 1;
options->showResidual = PETSC_FALSE;
options->showResidual = PETSC_FALSE;
options->showJacobian = PETSC_FALSE;
options->showSolution = PETSC_TRUE;
ierr = MPI_Comm_size(comm, &options->numProcs);CHKERRQ(ierr);
ierr = MPI_Comm_rank(comm, &options->rank);CHKERRQ(ierr);
ierr = PetscOptionsBegin(comm, "", "DMDA Test Problem Options", "DMDA");CHKERRQ(ierr);
ierr = PetscOptionsInt("-debug", "The debugging level", "ex62.c", options->debug, &options->debug, NULL);CHKERRQ(ierr);
ierr = PetscOptionsInt("-dim", "The topological mesh dimension", "ex62.c", options->dim, &options->dim, NULL);CHKERRQ(ierr);
ierr = PetscOptionsInt("-gpu_batches", "The number of cell batches per kernel", "ex62.c", options->numBatches, &options->numBatches, NULL);CHKERRQ(ierr);
ierr = PetscOptionsInt("-gpu_blocks", "The number of concurrent blocks per kernel", "ex62.c", options->numBlocks, &options->numBlocks, NULL);CHKERRQ(ierr);
ierr = PetscOptionsBool("-show_initial", "Output the initial guess for verification", "ex62.c", options->showInitial, &options->showInitial, NULL);CHKERRQ(ierr);
ierr = PetscOptionsBool("-show_residual", "Output the residual for verification", "ex62.c", options->showResidual, &options->showResidual, NULL);CHKERRQ(ierr);
ierr = PetscOptionsBool("-show_jacobian", "Output the Jacobian for verification", "ex62.c", options->showJacobian, &options->showJacobian, NULL);CHKERRQ(ierr);
ierr = PetscOptionsBool("-show_solution", "Output the solution for verification", "ex62.c", options->showSolution, &options->showSolution, NULL);CHKERRQ(ierr);
ierr = PetscOptionsEnd();
ierr = PetscLogEventRegister("Residual", SNES_CLASSID, &options->residualEvent);CHKERRQ(ierr);
ierr = PetscLogEventRegister("IntegResBatchCPU", SNES_CLASSID, &options->integrateResCPUEvent);CHKERRQ(ierr);
ierr = PetscLogEventRegister("IntegJacBatchCPU", SNES_CLASSID, &options->integrateJacCPUEvent);CHKERRQ(ierr);
ierr = PetscLogEventRegister("IntegJacActBatchCPU", SNES_CLASSID, &options->integrateJacActionCPUEvent);CHKERRQ(ierr);
ierr = PetscLogEventRegister("Jacobian", SNES_CLASSID, &options->jacobianEvent);CHKERRQ(ierr);
PetscFunctionReturn(0);
};
示例3: ProcessOptions
static PetscErrorCode ProcessOptions(MPI_Comm comm, AppCtx *options)
{
PetscInt dim;
PetscErrorCode ierr;
PetscFunctionBegin;
options->test = 0;
options->dim = 3;
options->simplex = PETSC_TRUE;
options->interpolate = PETSC_FALSE;
options->filename[0] = '\0';
ierr = PetscOptionsBegin(comm, "", "Zero-sized DMPlexGetCellFields Test Options", "DMPLEX");CHKERRQ(ierr);
ierr = PetscOptionsInt("-test", "Test to run", FILENAME, options->test, &options->test, NULL);CHKERRQ(ierr);
ierr = PetscOptionsInt("-dim", "The topological mesh dimension", FILENAME, options->dim, &options->dim, NULL);CHKERRQ(ierr);
if (options->dim > 3) SETERRQ1(comm, PETSC_ERR_ARG_OUTOFRANGE, "dimension set to %d, must be <= 3", options->dim);
ierr = PetscOptionsBool("-simplex", "Use simplices if true, otherwise hexes", FILENAME, options->simplex, &options->simplex, NULL);CHKERRQ(ierr);
ierr = PetscOptionsBool("-interpolate", "Interpolate the mesh", FILENAME, options->interpolate, &options->interpolate, NULL);CHKERRQ(ierr);
ierr = PetscOptionsString("-filename", "The mesh file", FILENAME, options->filename, options->filename, PETSC_MAX_PATH_LEN, NULL);CHKERRQ(ierr);
options->faces[0] = 1; options->faces[1] = 1; options->faces[2] = 1;
dim = options->dim;
ierr = PetscOptionsIntArray("-faces", "Number of faces per dimension", FILENAME, options->faces, &dim, NULL);CHKERRQ(ierr);
if (dim) options->dim = dim;
ierr = PetscOptionsEnd();
PetscFunctionReturn(0);
}
示例4: F
/*@
MatFDColoringSetFromOptions - Sets coloring finite difference parameters from
the options database.
Collective on MatFDColoring
The Jacobian, F'(u), is estimated with the differencing approximation
.vb
F'(u)_{:,i} = [F(u+h*dx_{i}) - F(u)]/h where
h = error_rel*u[i] if abs(u[i]) > umin
= +/- error_rel*umin otherwise, with +/- determined by the sign of u[i]
dx_{i} = (0, ... 1, .... 0)
.ve
Input Parameter:
. coloring - the coloring context
Options Database Keys:
+ -mat_fd_coloring_err <err> - Sets <err> (square root of relative error in the function)
. -mat_fd_coloring_umin <umin> - Sets umin, the minimum allowable u-value magnitude
. -mat_fd_type - "wp" or "ds" (see MATMFFD_WP or MATMFFD_DS)
. -mat_fd_coloring_view - Activates basic viewing
. -mat_fd_coloring_view ::ascii_info - Activates viewing info
- -mat_fd_coloring_view draw - Activates drawing
Level: intermediate
.keywords: Mat, finite differences, parameters
.seealso: MatFDColoringCreate(), MatFDColoringView(), MatFDColoringSetParameters()
@*/
PetscErrorCode MatFDColoringSetFromOptions(MatFDColoring matfd)
{
PetscErrorCode ierr;
PetscBool flg;
char value[3];
PetscFunctionBegin;
PetscValidHeaderSpecific(matfd,MAT_FDCOLORING_CLASSID,1);
ierr = PetscObjectOptionsBegin((PetscObject)matfd);CHKERRQ(ierr);
ierr = PetscOptionsReal("-mat_fd_coloring_err","Square root of relative error in function","MatFDColoringSetParameters",matfd->error_rel,&matfd->error_rel,0);CHKERRQ(ierr);
ierr = PetscOptionsReal("-mat_fd_coloring_umin","Minimum allowable u magnitude","MatFDColoringSetParameters",matfd->umin,&matfd->umin,0);CHKERRQ(ierr);
ierr = PetscOptionsString("-mat_fd_type","Algorithm to compute h, wp or ds","MatFDColoringCreate",matfd->htype,value,3,&flg);CHKERRQ(ierr);
if (flg) {
if (value[0] == 'w' && value[1] == 'p') matfd->htype = "wp";
else if (value[0] == 'd' && value[1] == 's') matfd->htype = "ds";
else SETERRQ1(PETSC_COMM_SELF,PETSC_ERR_ARG_OUTOFRANGE,"Unknown finite differencing type %s",value);
}
ierr = PetscOptionsInt("-mat_fd_coloring_brows","Number of block rows","MatFDColoringSetBlockSize",matfd->brows,&matfd->brows,NULL);CHKERRQ(ierr);
ierr = PetscOptionsInt("-mat_fd_coloring_bcols","Number of block columns","MatFDColoringSetBlockSize",matfd->bcols,&matfd->bcols,&flg);CHKERRQ(ierr);
if (flg && matfd->bcols > matfd->ncolors) {
/* input bcols cannot be > matfd->ncolors, thus set it as ncolors */
matfd->bcols = matfd->ncolors;
}
/* process any options handlers added with PetscObjectAddOptionsHandler() */
ierr = PetscObjectProcessOptionsHandlers((PetscObject)matfd);CHKERRQ(ierr);
PetscOptionsEnd();CHKERRQ(ierr);
PetscFunctionReturn(0);
}
示例5: RGSetFromOptions
/*@
RGSetFromOptions - Sets RG options from the options database.
Collective on RG
Input Parameters:
. rg - the region context
Notes:
To see all options, run your program with the -help option.
Level: beginner
@*/
PetscErrorCode RGSetFromOptions(RG rg)
{
PetscErrorCode ierr;
char type[256];
PetscBool flg;
PetscFunctionBegin;
PetscValidHeaderSpecific(rg,RG_CLASSID,1);
if (!RGRegisterAllCalled) { ierr = RGRegisterAll();CHKERRQ(ierr); }
ierr = PetscObjectOptionsBegin((PetscObject)rg);CHKERRQ(ierr);
ierr = PetscOptionsFList("-rg_type","Region type","RGSetType",RGList,(char*)(((PetscObject)rg)->type_name?((PetscObject)rg)->type_name:RGINTERVAL),type,256,&flg);CHKERRQ(ierr);
if (flg) {
ierr = RGSetType(rg,type);CHKERRQ(ierr);
}
/*
Set the type if it was never set.
*/
if (!((PetscObject)rg)->type_name) {
ierr = RGSetType(rg,RGINTERVAL);CHKERRQ(ierr);
}
ierr = PetscOptionsBool("-rg_complement","Whether region is complemented or not","RGSetComplement",rg->complement,&rg->complement,&flg);CHKERRQ(ierr);
if (rg->ops->setfromoptions) {
ierr = (*rg->ops->setfromoptions)(rg);CHKERRQ(ierr);
}
ierr = PetscObjectProcessOptionsHandlers((PetscObject)rg);CHKERRQ(ierr);
ierr = PetscOptionsEnd();CHKERRQ(ierr);
PetscFunctionReturn(0);
}
示例6: MatPtAP_SeqAIJ_SeqAIJ
PetscErrorCode MatPtAP_SeqAIJ_SeqAIJ(Mat A,Mat P,MatReuse scall,PetscReal fill,Mat *C)
{
PetscErrorCode ierr;
const char *algTypes[2] = {"scalable","nonscalable"};
PetscInt alg=0; /* set default algorithm */
PetscFunctionBegin;
if (scall == MAT_INITIAL_MATRIX) {
/*
Alg 'scalable' determines which implementations to be used:
"nonscalable": do dense axpy in MatPtAPNumeric() - fastest, but requires storage of struct A*P;
"scalable": do two sparse axpy in MatPtAPNumeric() - might slow, does not store structure of A*P.
*/
ierr = PetscObjectOptionsBegin((PetscObject)A);CHKERRQ(ierr);
ierr = PetscOptionsEList("-matptap_via","Algorithmic approach","MatPtAP",algTypes,2,algTypes[0],&alg,NULL);CHKERRQ(ierr);
ierr = PetscOptionsEnd();CHKERRQ(ierr);
ierr = PetscLogEventBegin(MAT_PtAPSymbolic,A,P,0,0);CHKERRQ(ierr);
switch (alg) {
case 1:
ierr = MatPtAPSymbolic_SeqAIJ_SeqAIJ_DenseAxpy(A,P,fill,C);CHKERRQ(ierr);
break;
default:
ierr = MatPtAPSymbolic_SeqAIJ_SeqAIJ_SparseAxpy(A,P,fill,C);CHKERRQ(ierr);
break;
}
ierr = PetscLogEventEnd(MAT_PtAPSymbolic,A,P,0,0);CHKERRQ(ierr);
}
ierr = PetscLogEventBegin(MAT_PtAPNumeric,A,P,0,0);CHKERRQ(ierr);
ierr = (*(*C)->ops->ptapnumeric)(A,P,*C);CHKERRQ(ierr);
ierr = PetscLogEventEnd(MAT_PtAPNumeric,A,P,0,0);CHKERRQ(ierr);
PetscFunctionReturn(0);
}
示例7: MatColoringApply
/*@
MatColoringSetFromOptions - Sets MatColoring options from user parameters
Collective on MatColoring
Input Parameters:
. mc - MatColoring context
Options Database Keys:
+ -mat_coloring_type - the type of coloring algorithm used
. -mat_coloring_maxcolors - the maximum number of relevant colors, all nodes not in a color are in maxcolors+1
. -mat_coloring_distance - compute a distance 1,2,... coloring.
. -mat_coloring_view - print information about the coloring and the produced index sets
Level: beginner
.keywords: Coloring, Matrix
.seealso: MatColoring, MatColoringApply()
@*/
PetscErrorCode MatColoringSetFromOptions(MatColoring mc)
{
PetscBool flg;
MatColoringType deft = MATCOLORINGSL;
char type[256];
PetscErrorCode ierr;
PetscInt dist,maxcolors;
PetscFunctionBegin;
PetscValidHeaderSpecific(mc,MAT_COLORING_CLASSID,1);
ierr = MatColoringGetDistance(mc,&dist);CHKERRQ(ierr);
ierr = MatColoringGetMaxColors(mc,&maxcolors);CHKERRQ(ierr);
if (!MatColoringRegisterAllCalled) {ierr = MatColoringRegisterAll();CHKERRQ(ierr);}
ierr = PetscObjectOptionsBegin((PetscObject)mc);CHKERRQ(ierr);
if (((PetscObject)mc)->type_name) deft = ((PetscObject)mc)->type_name;
ierr = PetscOptionsFList("-mat_coloring_type","The coloring method used","MatColoringSetType",MatColoringList,deft,type,256,&flg);CHKERRQ(ierr);
if (flg) {
ierr = MatColoringSetType(mc,type);CHKERRQ(ierr);
} else if (!((PetscObject)mc)->type_name) {
ierr = MatColoringSetType(mc,deft);CHKERRQ(ierr);
}
ierr = PetscOptionsInt("-mat_coloring_distance","Distance of the coloring","MatColoringSetDistance",dist,&dist,&flg);CHKERRQ(ierr);
if (flg) {ierr = MatColoringSetDistance(mc,dist);CHKERRQ(ierr);}
ierr = PetscOptionsInt("-mat_coloring_maxcolors","Maximum colors returned at the end. 1 returns an independent set","MatColoringSetMaxColors",maxcolors,&maxcolors,&flg);CHKERRQ(ierr);
if (flg) {ierr = MatColoringSetMaxColors(mc,maxcolors);CHKERRQ(ierr);}
if (mc->ops->setfromoptions) {
ierr = (*mc->ops->setfromoptions)(mc);CHKERRQ(ierr);
}
ierr = PetscOptionsBool("-mat_coloring_valid","Check that a valid coloring has been produced","",mc->valid,&mc->valid,NULL);CHKERRQ(ierr);
ierr = PetscOptionsEnum("-mat_coloring_weight_type","Sets the type of vertex weighting used","MatColoringSetWeightType",MatColoringWeightTypes,(PetscEnum)mc->weight_type,(PetscEnum*)&mc->weight_type,NULL);CHKERRQ(ierr);
ierr = PetscObjectProcessOptionsHandlers((PetscObject)mc);CHKERRQ(ierr);
ierr = PetscOptionsEnd();CHKERRQ(ierr);
PetscFunctionReturn(0);
}
示例8: ProcessOptions
PetscErrorCode ProcessOptions(MPI_Comm comm, AppCtx *options)
{
PetscErrorCode ierr;
PetscFunctionBegin;
options->debug = 0;
options->dim = 2;
options->simplex = PETSC_TRUE;
options->interpolate = PETSC_FALSE;
options->refinementLimit = 0.0;
options->qorder = 0;
options->numComponents = 1;
options->porder = 0;
ierr = PetscOptionsBegin(comm, "", "Projection Test Options", "DMPlex");CHKERRQ(ierr);
ierr = PetscOptionsInt("-debug", "The debugging level", "ex3.c", options->debug, &options->debug, NULL);CHKERRQ(ierr);
ierr = PetscOptionsInt("-dim", "The topological mesh dimension", "ex3.c", options->dim, &options->dim, NULL);CHKERRQ(ierr);
ierr = PetscOptionsBool("-simplex", "Flag for simplices or hexhedra", "ex3.c", options->simplex, &options->simplex, NULL);CHKERRQ(ierr);
ierr = PetscOptionsBool("-interpolate", "Generate intermediate mesh elements", "ex3.c", options->interpolate, &options->interpolate, NULL);CHKERRQ(ierr);
ierr = PetscOptionsReal("-refinement_limit", "The largest allowable cell volume", "ex3.c", options->refinementLimit, &options->refinementLimit, NULL);CHKERRQ(ierr);
ierr = PetscOptionsInt("-qorder", "The quadrature order", "ex3.c", options->qorder, &options->qorder, NULL);CHKERRQ(ierr);
ierr = PetscOptionsInt("-num_comp", "The number of field components", "ex3.c", options->numComponents, &options->numComponents, NULL);CHKERRQ(ierr);
ierr = PetscOptionsInt("-porder", "The order of polynomials to test", "ex3.c", options->porder, &options->porder, NULL);CHKERRQ(ierr);
ierr = PetscOptionsEnd();
spdim = options->dim;
PetscFunctionReturn(0);
};
示例9: ProcessOptions
PetscErrorCode ProcessOptions(MPI_Comm comm, AppCtx *options)
{
PetscErrorCode ierr;
PetscFunctionBegin;
options->debug = 0;
options->dim = 2;
options->cellHybrid = PETSC_TRUE;
options->cellSimplex = PETSC_TRUE;
options->testPartition = PETSC_TRUE;
options->testNum = 0;
options->simplex2tensor = PETSC_FALSE;
options->uninterpolate = PETSC_FALSE;
options->reinterpolate = PETSC_FALSE;
ierr = PetscOptionsBegin(comm, "", "Meshing Problem Options", "DMPLEX");CHKERRQ(ierr);
ierr = PetscOptionsInt("-debug", "The debugging level", "ex4.c", options->debug, &options->debug, NULL);CHKERRQ(ierr);
ierr = PetscOptionsInt("-dim", "The topological mesh dimension", "ex4.c", options->dim, &options->dim, NULL);CHKERRQ(ierr);
ierr = PetscOptionsBool("-cell_hybrid", "Use a hybrid mesh", "ex4.c", options->cellHybrid, &options->cellHybrid, NULL);CHKERRQ(ierr);
ierr = PetscOptionsBool("-cell_simplex", "Use simplices if true, otherwise hexes", "ex4.c", options->cellSimplex, &options->cellSimplex, NULL);CHKERRQ(ierr);
ierr = PetscOptionsBool("-test_partition", "Use a fixed partition for testing", "ex4.c", options->testPartition, &options->testPartition, NULL);CHKERRQ(ierr);
ierr = PetscOptionsInt("-test_num", "The particular mesh to test", "ex4.c", options->testNum, &options->testNum, NULL);CHKERRQ(ierr);
ierr = PetscOptionsBool("-simplex2tensor", "Refine simplicial cells in tensor product cells", "ex4.c", options->simplex2tensor, &options->simplex2tensor, NULL);CHKERRQ(ierr);
ierr = PetscOptionsBool("-uninterpolate", "Uninterpolate the mesh at the end", "ex4.c", options->uninterpolate, &options->uninterpolate, NULL);CHKERRQ(ierr);
ierr = PetscOptionsBool("-reinterpolate", "Reinterpolate the mesh at the end", "ex4.c", options->reinterpolate, &options->reinterpolate, NULL);CHKERRQ(ierr);
ierr = PetscOptionsEnd();
PetscFunctionReturn(0);
}
示例10: ProcessOptions
PetscErrorCode ProcessOptions(MPI_Comm comm, AppCtx *options)
{
PetscErrorCode ierr;
PetscFunctionBegin;
options->debug = 0;
options->dim = 2;
options->interpolate = PETSC_FALSE;
options->refinementLimit = 0.0;
options->cellSimplex = PETSC_TRUE;
options->filename[0] = '\0';
options->testPartition = PETSC_FALSE;
options->overlap = PETSC_FALSE;
options->testShape = PETSC_FALSE;
ierr = PetscOptionsBegin(comm, "", "Meshing Problem Options", "DMPLEX");CHKERRQ(ierr);
ierr = PetscOptionsInt("-debug", "The debugging level", "ex1.c", options->debug, &options->debug, NULL);CHKERRQ(ierr);
ierr = PetscOptionsInt("-dim", "The topological mesh dimension", "ex1.c", options->dim, &options->dim, NULL);CHKERRQ(ierr);
ierr = PetscOptionsBool("-interpolate", "Generate intermediate mesh elements", "ex1.c", options->interpolate, &options->interpolate, NULL);CHKERRQ(ierr);
ierr = PetscOptionsReal("-refinement_limit", "The largest allowable cell volume", "ex1.c", options->refinementLimit, &options->refinementLimit, NULL);CHKERRQ(ierr);
ierr = PetscOptionsBool("-cell_simplex", "Use simplices if true, otherwise hexes", "ex1.c", options->cellSimplex, &options->cellSimplex, NULL);CHKERRQ(ierr);
ierr = PetscOptionsString("-filename", "The mesh file", "ex1.c", options->filename, options->filename, PETSC_MAX_PATH_LEN, NULL);CHKERRQ(ierr);
ierr = PetscOptionsBool("-test_partition", "Use a fixed partition for testing", "ex1.c", options->testPartition, &options->testPartition, NULL);CHKERRQ(ierr);
ierr = PetscOptionsInt("-overlap", "The cell overlap for partitioning", "ex1.c", options->overlap, &options->overlap, NULL);CHKERRQ(ierr);
ierr = PetscOptionsBool("-test_shape", "Report cell shape qualities (Jacobian condition numbers)", "ex1.c", options->testShape, &options->testShape, NULL);CHKERRQ(ierr);
ierr = PetscOptionsEnd();
ierr = PetscLogEventRegister("CreateMesh", DM_CLASSID, &options->createMeshEvent);CHKERRQ(ierr);
PetscFunctionReturn(0);
};
示例11: ProcessOptions
PetscErrorCode ProcessOptions(MPI_Comm comm, AppCtx *options)
{
PetscErrorCode ierr;
PetscFunctionBegin;
options->debug = 0;
options->dim = 2;
options->interpolate = PETSC_FALSE;
options->refinementLimit = 0.0;
ierr = MPI_Comm_size(comm, &options->numProcs);CHKERRQ(ierr);
ierr = MPI_Comm_rank(comm, &options->rank);CHKERRQ(ierr);
ierr = PetscOptionsBegin(comm, "", "Mesh Distribution Options", "DMMESH");CHKERRQ(ierr);
ierr = PetscOptionsInt("-debug", "The debugging level", "ex1.c", options->debug, &options->debug, PETSC_NULL);CHKERRQ(ierr);
ierr = PetscOptionsInt("-dim", "The topological mesh dimension", "ex1.c", options->dim, &options->dim, PETSC_NULL);CHKERRQ(ierr);
ierr = PetscOptionsBool("-interpolate", "Generate intermediate mesh elements", "ex1.c", options->interpolate, &options->interpolate, PETSC_NULL);CHKERRQ(ierr);
ierr = PetscOptionsReal("-refinement_limit", "The largest allowable cell volume", "ex1.c", options->refinementLimit, &options->refinementLimit, PETSC_NULL);CHKERRQ(ierr);
ierr = PetscStrcpy(options->filename, "");CHKERRQ(ierr);
ierr = PetscOptionsString("-filename", "The input filename", "ex1.c", options->filename, options->filename, 2048, PETSC_NULL);CHKERRQ(ierr);
ierr = PetscStrcpy(options->partitioner, "chaco");CHKERRQ(ierr);
ierr = PetscOptionsString("-partitioner", "The graph partitioner", "ex1.c", options->partitioner, options->partitioner, 2048, PETSC_NULL);CHKERRQ(ierr);
ierr = PetscOptionsEnd();
ierr = PetscLogEventRegister("CreateMesh", DM_CLASSID, &options->createMeshEvent);CHKERRQ(ierr);
PetscFunctionReturn(0);
};
示例12: CECreate
static PetscErrorCode CECreate(Problem p)
{
PetscErrorCode ierr;
CECtx *ce;
PetscFunctionBeginUser;
ierr = PetscMalloc(sizeof(CECtx),&ce);CHKERRQ(ierr);
p->data = (void*)ce;
p->destroy = &CEDestroy;
p->function = &CEFunction;
p->jacobian = &CEJacobian;
p->solution = &CESolution;
p->final_time = 10;
p->n = 1;
p->hasexact = PETSC_TRUE;
ce->lambda = 10;
ierr = PetscOptionsBegin(p->comm,NULL,"CE options","");CHKERRQ(ierr);
{
ierr = PetscOptionsReal("-problem_ce_lambda","Parameter controlling stiffness: xdot + lambda*(x - cos(t))","",ce->lambda,&ce->lambda,NULL);CHKERRQ(ierr);
}
ierr = PetscOptionsEnd();CHKERRQ(ierr);
PetscFunctionReturn(0);
}
示例13: PetscViewerCreate
/*@C
PetscViewerSetFromOptions - Sets the graphics type from the options database.
Defaults to a PETSc X windows graphics.
Collective on PetscViewer
Input Parameter:
. PetscViewer - the graphics context
Level: intermediate
Notes:
Must be called after PetscViewerCreate() before the PetscViewer is used.
Concepts: PetscViewer^setting options
.seealso: PetscViewerCreate(), PetscViewerSetType(), PetscViewerType
@*/
PetscErrorCode PetscViewerSetFromOptions(PetscViewer viewer)
{
PetscErrorCode ierr;
char vtype[256];
PetscBool flg;
PetscFunctionBegin;
PetscValidHeaderSpecific(viewer,PETSC_VIEWER_CLASSID,1);
if (!PetscViewerList) {
ierr = PetscViewerRegisterAll();CHKERRQ(ierr);
}
ierr = PetscObjectOptionsBegin((PetscObject)viewer);CHKERRQ(ierr);
ierr = PetscOptionsFList("-viewer_type","Type of PetscViewer","None",PetscViewerList,(char*)(((PetscObject)viewer)->type_name ? ((PetscObject)viewer)->type_name : PETSCVIEWERASCII),vtype,256,&flg);CHKERRQ(ierr);
if (flg) {
ierr = PetscViewerSetType(viewer,vtype);CHKERRQ(ierr);
}
/* type has not been set? */
if (!((PetscObject)viewer)->type_name) {
ierr = PetscViewerSetType(viewer,PETSCVIEWERASCII);CHKERRQ(ierr);
}
if (viewer->ops->setfromoptions) {
ierr = (*viewer->ops->setfromoptions)(PetscOptionsObject,viewer);CHKERRQ(ierr);
}
/* process any options handlers added with PetscObjectAddOptionsHandler() */
ierr = PetscObjectProcessOptionsHandlers((PetscObject)viewer);CHKERRQ(ierr);
ierr = PetscViewerViewFromOptions(viewer,NULL,"-viewer_view");CHKERRQ(ierr);
ierr = PetscOptionsEnd();CHKERRQ(ierr);
PetscFunctionReturn(0);
}
示例14: ProcessOptions
PetscErrorCode ProcessOptions(MPI_Comm comm, AppCtx *options)
{
const char *names[8] = {"none", "ghosted", "mirror", "periodic", "twist", "DMBoundaryType", "DM_BOUNDARY_", NULL};
PetscInt n;
PetscErrorCode ierr;
PetscFunctionBegin;
options->dim = 2;
options->cellSimplex = PETSC_TRUE;
options->faces[0] = 1;
options->faces[1] = 1;
options->faces[2] = 1;
options->periodicity[0] = DM_BOUNDARY_NONE;
options->periodicity[1] = DM_BOUNDARY_NONE;
options->periodicity[2] = DM_BOUNDARY_NONE;
options->filename[0] = '\0';
ierr = PetscOptionsBegin(comm, "", "Meshing Interpolation Test Options", "DMPLEX");CHKERRQ(ierr);
ierr = PetscOptionsInt("-dim", "The topological mesh dimension", "ex32.c", options->dim, &options->dim, NULL);CHKERRQ(ierr);
ierr = PetscOptionsBool("-cell_simplex", "Use simplices if true, otherwise hexes", "ex32.c", options->cellSimplex, &options->cellSimplex, NULL);CHKERRQ(ierr);
n = 3;
ierr = PetscOptionsIntArray("-faces", "Faces per direction", "ex32.c", options->faces, &n, NULL);CHKERRQ(ierr);
n = 3;
ierr = PetscOptionsEnumArray("-periodicity", "Periodicity per direction", "ex32.c", names, (PetscEnum *) options->periodicity, &n, &options->isPeriodic);CHKERRQ(ierr);
ierr = PetscOptionsString("-filename", "The mesh file", "ex32.c", options->filename, options->filename, PETSC_MAX_PATH_LEN, NULL);CHKERRQ(ierr);
ierr = PetscOptionsEnd();
PetscFunctionReturn(0);
}
示例15: MatPartitioningSetFromOptions
/*@
MatPartitioningSetFromOptions - Sets various partitioning options from the
options database.
Collective on MatPartitioning
Input Parameter:
. part - the partitioning context.
Options Database Command:
$ -mat_partitioning_type <type>
$ Use -help for a list of available methods
$ (for instance, parmetis)
Level: beginner
.keywords: partitioning, set, method, type
@*/
PetscErrorCode MatPartitioningSetFromOptions(MatPartitioning part)
{
PetscErrorCode ierr;
PetscBool flag;
char type[256];
const char *def;
PetscFunctionBegin;
ierr = PetscObjectOptionsBegin((PetscObject)part);CHKERRQ(ierr);
if (!((PetscObject)part)->type_name) {
#if defined(PETSC_HAVE_PARMETIS)
def = MATPARTITIONINGPARMETIS;
#else
def = MATPARTITIONINGCURRENT;
#endif
} else {
def = ((PetscObject)part)->type_name;
}
ierr = PetscOptionsList("-mat_partitioning_type","Type of partitioner","MatPartitioningSetType",MatPartitioningList,def,type,256,&flag);CHKERRQ(ierr);
if (flag) {
ierr = MatPartitioningSetType(part,type);CHKERRQ(ierr);
}
/*
Set the type if it was never set.
*/
if (!((PetscObject)part)->type_name) {
ierr = MatPartitioningSetType(part,def);CHKERRQ(ierr);
}
if (part->ops->setfromoptions) {
ierr = (*part->ops->setfromoptions)(part);CHKERRQ(ierr);
}
ierr = PetscOptionsEnd();CHKERRQ(ierr);
PetscFunctionReturn(0);
}