本文整理汇总了C++中PetscLogEventRegister函数的典型用法代码示例。如果您正苦于以下问题:C++ PetscLogEventRegister函数的具体用法?C++ PetscLogEventRegister怎么用?C++ PetscLogEventRegister使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了PetscLogEventRegister函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: 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);
};
示例2: SNESSetFromOptions_NASM
PetscErrorCode SNESSetFromOptions_NASM(SNES snes)
{
PetscErrorCode ierr;
PCASMType asmtype;
PetscBool flg,monflg,subviewflg;
SNES_NASM *nasm = (SNES_NASM*)snes->data;
PetscFunctionBegin;
ierr = PetscOptionsHead("Nonlinear Additive Schwartz options");CHKERRQ(ierr);
ierr = PetscOptionsEnum("-snes_nasm_type","Type of restriction/extension","",SNESNASMTypes,(PetscEnum)nasm->type,(PetscEnum*)&asmtype,&flg);CHKERRQ(ierr);
if (flg) nasm->type = asmtype;
flg = PETSC_FALSE;
monflg = PETSC_TRUE;
ierr = PetscOptionsReal("-snes_nasm_damping","Log times for subSNES solves and restriction","SNESNASMSetDamping",nasm->damping,&nasm->damping,&flg);CHKERRQ(ierr);
if (flg) {ierr = SNESNASMSetDamping(snes,nasm->damping);CHKERRQ(ierr);}
subviewflg = PETSC_FALSE;
ierr = PetscOptionsBool("-snes_nasm_sub_view","Print detailed information for every processor when using -snes_view","",subviewflg,&subviewflg,&flg);CHKERRQ(ierr);
if (flg) {
nasm->same_local_solves = PETSC_FALSE;
if (!subviewflg) {
nasm->same_local_solves = PETSC_TRUE;
}
}
ierr = PetscOptionsBool("-snes_nasm_finaljacobian","Compute the global jacobian of the final iterate (for ASPIN)","",nasm->finaljacobian,&nasm->finaljacobian,NULL);CHKERRQ(ierr);
ierr = PetscOptionsEList("-snes_nasm_finaljacobian_type","The type of the final jacobian computed.","",SNESNASMFJTypes,3,SNESNASMFJTypes[0],&nasm->fjtype,NULL);CHKERRQ(ierr);
ierr = PetscOptionsBool("-snes_nasm_log","Log times for subSNES solves and restriction","",monflg,&monflg,&flg);CHKERRQ(ierr);
if (flg) {
ierr = PetscLogEventRegister("SNESNASMSubSolve",((PetscObject)snes)->classid,&nasm->eventsubsolve);CHKERRQ(ierr);
ierr = PetscLogEventRegister("SNESNASMRestrict",((PetscObject)snes)->classid,&nasm->eventrestrictinterp);CHKERRQ(ierr);
}
ierr = PetscOptionsTail();CHKERRQ(ierr);
PetscFunctionReturn(0);
}
示例3: FluidFieldRegisterEvents
PetscErrorCode FluidFieldRegisterEvents( )
{
PetscErrorCode ierr;
if( EVENTS_registered )
PetscFunctionReturn(0);
ierr = PetscLogEventRegister("FluidMaxVel",0,&EVENT_FluidFieldMaxVelocityMag); CHKERRQ(ierr);
ierr = PetscLogEventRegister("FluidDiscreteCC",0,&EVENT_FluidField_DiscreteCompatibilityCondition); CHKERRQ(ierr);
EVENTS_registered = PETSC_TRUE;
PetscFunctionReturn(0);
}
示例4: PetscDLLibraryRegister
/*@C
PCInitializePackage - This function initializes everything in the PC package. It is called
from PetscDLLibraryRegister() when using dynamic libraries, and on the first call to PCCreate()
when using static libraries.
Level: developer
.keywords: PC, initialize, package
.seealso: PetscInitialize()
@*/
PetscErrorCode PCInitializePackage(void)
{
char logList[256];
char *className;
PetscBool opt;
PetscErrorCode ierr;
PetscFunctionBegin;
if (PCPackageInitialized) PetscFunctionReturn(0);
PCPackageInitialized = PETSC_TRUE;
/* Initialize subpackages */
ierr = PCGAMGInitializePackage();CHKERRQ(ierr);
/* Register Classes */
ierr = PetscClassIdRegister("Preconditioner",&PC_CLASSID);CHKERRQ(ierr);
/* Register Constructors */
ierr = PCRegisterAll();CHKERRQ(ierr);
/* Register Events */
ierr = PetscLogEventRegister("PCSetUp", PC_CLASSID,&PC_SetUp);CHKERRQ(ierr);
ierr = PetscLogEventRegister("PCSetUpOnBlocks", PC_CLASSID,&PC_SetUpOnBlocks);CHKERRQ(ierr);
ierr = PetscLogEventRegister("PCApplyOnBlocks", PC_CLASSID,&PC_ApplyOnBlocks);CHKERRQ(ierr);
ierr = PetscLogEventRegister("PCApplyOnMproc", PC_CLASSID,&PC_ApplyOnMproc);CHKERRQ(ierr);
ierr = PetscLogEventRegister("PCApply", PC_CLASSID,&PC_Apply);CHKERRQ(ierr);
ierr = PetscLogEventRegister("PCApplyCoarse", PC_CLASSID,&PC_ApplyCoarse);CHKERRQ(ierr);
ierr = PetscLogEventRegister("PCApplyMultiple", PC_CLASSID,&PC_ApplyMultiple);CHKERRQ(ierr);
ierr = PetscLogEventRegister("PCApplySymmLeft", PC_CLASSID,&PC_ApplySymmetricLeft);CHKERRQ(ierr);
ierr = PetscLogEventRegister("PCApplySymmRight", PC_CLASSID,&PC_ApplySymmetricRight);CHKERRQ(ierr);
ierr = PetscLogEventRegister("PCModifySubMatri", PC_CLASSID,&PC_ModifySubMatrices);CHKERRQ(ierr);
/* Process info exclusions */
ierr = PetscOptionsGetString(NULL, "-info_exclude", logList, 256, &opt);CHKERRQ(ierr);
if (opt) {
ierr = PetscStrstr(logList, "pc", &className);CHKERRQ(ierr);
if (className) {
ierr = PetscInfoDeactivateClass(PC_CLASSID);CHKERRQ(ierr);
}
}
/* Process summary exclusions */
ierr = PetscOptionsGetString(NULL, "-log_summary_exclude", logList, 256, &opt);CHKERRQ(ierr);
if (opt) {
ierr = PetscStrstr(logList, "pc", &className);CHKERRQ(ierr);
if (className) {
ierr = PetscLogEventDeactivateClass(PC_CLASSID);CHKERRQ(ierr);
}
}
/* Register data */
ierr = PetscObjectComposedDataRegister(&PetscMGLevelId);CHKERRQ(ierr);
ierr = PetscRegisterFinalize(PCFinalizePackage);CHKERRQ(ierr);
PetscFunctionReturn(0);
}
示例5: MatInitializePackage
/*@C
MatMFFDInitializePackage - This function initializes everything in the MatMFFD package. It is called
from MatInitializePackage().
Level: developer
.keywords: Vec, initialize, package
.seealso: PetscInitialize()
@*/
PetscErrorCode MatMFFDInitializePackage(void)
{
char logList[256];
PetscBool opt,pkg;
PetscErrorCode ierr;
PetscFunctionBegin;
if (MatMFFDPackageInitialized) PetscFunctionReturn(0);
MatMFFDPackageInitialized = PETSC_TRUE;
/* Register Classes */
ierr = PetscClassIdRegister("MatMFFD",&MATMFFD_CLASSID);CHKERRQ(ierr);
/* Register Constructors */
ierr = MatMFFDRegisterAll();CHKERRQ(ierr);
/* Register Events */
ierr = PetscLogEventRegister("MatMult MF",MATMFFD_CLASSID,&MATMFFD_Mult);CHKERRQ(ierr);
/* Process info exclusions */
ierr = PetscOptionsGetString(NULL,NULL,"-info_exclude",logList,sizeof(logList),&opt);CHKERRQ(ierr);
if (opt) {
ierr = PetscStrInList("matmffd",logList,',',&pkg);CHKERRQ(ierr);
if (pkg) {ierr = PetscInfoDeactivateClass(MATMFFD_CLASSID);CHKERRQ(ierr);}
}
/* Process summary exclusions */
ierr = PetscOptionsGetString(NULL,NULL,"-log_exclude",logList,sizeof(logList),&opt);CHKERRQ(ierr);
if (opt) {
ierr = PetscStrInList("matmffd",logList,',',&pkg);CHKERRQ(ierr);
if (pkg) {ierr = PetscLogEventExcludeClass(MATMFFD_CLASSID);CHKERRQ(ierr);}
}
/* Register package finalizer */
ierr = PetscRegisterFinalize(MatMFFDFinalizePackage);CHKERRQ(ierr);
PetscFunctionReturn(0);
}
示例6: ProcessOptions
PetscErrorCode ProcessOptions(MPI_Comm comm, AppCtx *options)
{
PetscErrorCode ierr;
PetscFunctionBegin;
options->debug = 0;
options->dim = 2;
options->interpolate = PETSC_FALSE;
options->refinementUniform = PETSC_FALSE;
options->refinementLimit = 0.0;
options->cellSimplex = PETSC_TRUE;
options->filename[0] = '\0';
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 = PetscOptionsBool("-refinement_uniform", "Uniformly refine the mesh", "ex1.c", options->refinementUniform, &options->refinementUniform, 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", "ex7.c", options->filename, options->filename, PETSC_MAX_PATH_LEN, NULL);CHKERRQ(ierr);
ierr = PetscOptionsEnd();
ierr = PetscLogEventRegister("CreateMesh", DM_CLASSID, &options->createMeshEvent);CHKERRQ(ierr);
PetscFunctionReturn(0);
};
示例7: TestCone
static PetscErrorCode TestCone(DM dm, AppCtx *user)
{
PetscInt numRuns, cStart, cEnd, c, i;
PetscReal maxTimePerRun = user->maxConeTime;
PetscLogStage stage;
PetscLogEvent event;
PetscEventPerfInfo eventInfo;
PetscErrorCode ierr;
PetscFunctionBegin;
ierr = PetscLogStageRegister("DMPlex Cone Test", &stage);CHKERRQ(ierr);
ierr = PetscLogEventRegister("Cone", PETSC_OBJECT_CLASSID, &event);CHKERRQ(ierr);
ierr = PetscLogStagePush(stage);CHKERRQ(ierr);
ierr = DMPlexGetHeightStratum(dm, 0, &cStart, &cEnd);CHKERRQ(ierr);
ierr = PetscLogEventBegin(event,0,0,0,0);CHKERRQ(ierr);
for (i = 0; i < user->iterations; ++i) {
for (c = cStart; c < cEnd; ++c) {
const PetscInt *cone;
ierr = DMPlexGetCone(dm, c, &cone);CHKERRQ(ierr);
}
}
ierr = PetscLogEventEnd(event,0,0,0,0);CHKERRQ(ierr);
ierr = PetscLogStagePop();CHKERRQ(ierr);
ierr = PetscLogEventGetPerfInfo(stage, event, &eventInfo);CHKERRQ(ierr);
numRuns = (cEnd-cStart) * user->iterations;
if (eventInfo.count != 1) SETERRQ2(PETSC_COMM_SELF, PETSC_ERR_PLIB, "Number of event calls %d should be %d", eventInfo.count, 1);
if ((PetscInt) eventInfo.flops != 0) SETERRQ2(PETSC_COMM_SELF, PETSC_ERR_PLIB, "Number of event flops %d should be %d", (PetscInt) eventInfo.flops, 0);
if (eventInfo.time > maxTimePerRun * numRuns) {
ierr = PetscPrintf(PETSC_COMM_SELF, "Cones: %d Average time per cone: %gs standard: %gs\n", numRuns, eventInfo.time/numRuns, maxTimePerRun);
if (user->errors) SETERRQ2(PETSC_COMM_SELF, PETSC_ERR_PLIB, "Average time for cone %g > standard %g", eventInfo.time/numRuns, maxTimePerRun);
}
PetscFunctionReturn(0);
}
示例8: 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);
};
示例9: 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);
};
示例10: PetscSFFinalizePackage
/*@C
PetscSFInitializePackage - Initialize SF package
Logically Collective
Level: developer
.seealso: PetscSFFinalizePackage()
@*/
PetscErrorCode PetscSFInitializePackage(void)
{
PetscErrorCode ierr;
PetscFunctionBegin;
if (PetscSFPackageInitialized) PetscFunctionReturn(0);
PetscSFPackageInitialized = PETSC_TRUE;
ierr = PetscClassIdRegister("Bipartite Graph",&PETSCSF_CLASSID);
CHKERRQ(ierr);
ierr = PetscSFRegisterAll();
CHKERRQ(ierr);
ierr = PetscLogEventRegister("PetscSFSetGraph" , PETSCSF_CLASSID, &PETSCSF_SetGraph);
CHKERRQ(ierr);
ierr = PetscLogEventRegister("PetscSFBcastBegin" , PETSCSF_CLASSID, &PETSCSF_BcastBegin);
CHKERRQ(ierr);
ierr = PetscLogEventRegister("PetscSFBcastEnd" , PETSCSF_CLASSID, &PETSCSF_BcastEnd);
CHKERRQ(ierr);
ierr = PetscLogEventRegister("PetscSFReduceBegin" , PETSCSF_CLASSID, &PETSCSF_ReduceBegin);
CHKERRQ(ierr);
ierr = PetscLogEventRegister("PetscSFReduceEnd" , PETSCSF_CLASSID, &PETSCSF_ReduceEnd);
CHKERRQ(ierr);
ierr = PetscLogEventRegister("PetscSFFetchOpBegin" , PETSCSF_CLASSID, &PETSCSF_FetchAndOpBegin);
CHKERRQ(ierr);
ierr = PetscLogEventRegister("PetscSFFetchOpEnd" , PETSCSF_CLASSID, &PETSCSF_FetchAndOpEnd);
CHKERRQ(ierr);
ierr = PetscRegisterFinalize(PetscSFFinalizePackage);
CHKERRQ(ierr);
PetscFunctionReturn(0);
}
示例11: ProcessOptions
PetscErrorCode ProcessOptions(MPI_Comm comm, AppCtx *options)
{
const char *bcTypes[2] = {"neumann", "dirichlet"};
const char *runTypes[2] = {"full", "test"};
PetscInt bc, run;
PetscErrorCode ierr;
PetscFunctionBeginUser;
options->debug = 0;
options->runType = RUN_FULL;
options->dim = 2;
options->interpolate = PETSC_FALSE;
options->refinementLimit = 0.0;
options->bcType = DIRICHLET;
options->numBatches = 1;
options->numBlocks = 1;
options->jacobianMF = PETSC_FALSE;
options->showInitial = PETSC_FALSE;
options->showSolution = PETSC_TRUE;
options->fem.f0Funcs = (void (**)(const PetscScalar[], const PetscScalar[], const PetscScalar[], const PetscScalar[], const PetscReal[], PetscScalar[])) &options->f0Funcs;
options->fem.f1Funcs = (void (**)(const PetscScalar[], const PetscScalar[], const PetscScalar[], const PetscScalar[], const PetscReal[], PetscScalar[])) &options->f1Funcs;
options->fem.g0Funcs = (void (**)(const PetscScalar[], const PetscScalar[], const PetscScalar[], const PetscScalar[], const PetscReal[], PetscScalar[])) &options->g0Funcs;
options->fem.g1Funcs = (void (**)(const PetscScalar[], const PetscScalar[], const PetscScalar[], const PetscScalar[], const PetscReal[], PetscScalar[])) &options->g1Funcs;
options->fem.g2Funcs = (void (**)(const PetscScalar[], const PetscScalar[], const PetscScalar[], const PetscScalar[], const PetscReal[], PetscScalar[])) &options->g2Funcs;
options->fem.g3Funcs = (void (**)(const PetscScalar[], const PetscScalar[], const PetscScalar[], const PetscScalar[], const PetscReal[], PetscScalar[])) &options->g3Funcs;
ierr = MPI_Comm_size(comm, &options->numProcs);CHKERRQ(ierr);
ierr = MPI_Comm_rank(comm, &options->rank);CHKERRQ(ierr);
ierr = PetscOptionsBegin(comm, "", "Stokes Problem Options", "DMPLEX");CHKERRQ(ierr);
ierr = PetscOptionsInt("-debug", "The debugging level", "ex62.c", options->debug, &options->debug, NULL);CHKERRQ(ierr);
run = options->runType;
ierr = PetscOptionsEList("-run_type", "The run type", "ex62.c", runTypes, 2, runTypes[options->runType], &run, NULL);CHKERRQ(ierr);
options->runType = (RunType) run;
ierr = PetscOptionsInt("-dim", "The topological mesh dimension", "ex62.c", options->dim, &options->dim, NULL);CHKERRQ(ierr);
spatialDim = options->dim;
ierr = PetscOptionsBool("-interpolate", "Generate intermediate mesh elements", "ex62.c", options->interpolate, &options->interpolate, NULL);CHKERRQ(ierr);
ierr = PetscOptionsReal("-refinement_limit", "The largest allowable cell volume", "ex62.c", options->refinementLimit, &options->refinementLimit, NULL);CHKERRQ(ierr);
ierr = PetscStrcpy(options->partitioner, "chaco");CHKERRQ(ierr);
ierr = PetscOptionsString("-partitioner", "The graph partitioner", "pflotran.cxx", options->partitioner, options->partitioner, 2048, NULL);CHKERRQ(ierr);
bc = options->bcType;
ierr = PetscOptionsEList("-bc_type","Type of boundary condition","ex62.c",bcTypes,2,bcTypes[options->bcType],&bc,NULL);CHKERRQ(ierr);
options->bcType = (BCType) bc;
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("-jacobian_mf", "Calculate the action of the Jacobian on the fly", "ex62.c", options->jacobianMF, &options->jacobianMF, 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_solution", "Output the solution for verification", "ex62.c", options->showSolution, &options->showSolution, NULL);CHKERRQ(ierr);
ierr = PetscOptionsEnd();
ierr = PetscLogEventRegister("CreateMesh", DM_CLASSID, &options->createMeshEvent);CHKERRQ(ierr);
PetscFunctionReturn(0);
}
示例12: PetscDLLibraryRegister
/*@C
SNESInitializePackage - This function initializes everything in the SNES package. It is called
from PetscDLLibraryRegister() when using dynamic libraries, and on the first call to SNESCreate()
when using static libraries.
Input Parameter:
path - The dynamic library path, or PETSC_NULL
Level: developer
.keywords: SNES, initialize, package
.seealso: PetscInitialize()
@*/
PetscErrorCode SNESInitializePackage(const char path[])
{
char logList[256];
char *className;
PetscBool opt;
PetscErrorCode ierr;
PetscFunctionBegin;
if (SNESPackageInitialized) PetscFunctionReturn(0);
SNESPackageInitialized = PETSC_TRUE;
/* Initialize subpackages */
ierr = SNESMSInitializePackage(path);CHKERRQ(ierr);
/* Register Classes */
ierr = PetscClassIdRegister("SNES",&SNES_CLASSID);CHKERRQ(ierr);
ierr = PetscClassIdRegister("SNESLineSearch",&SNESLINESEARCH_CLASSID);CHKERRQ(ierr);
ierr = PetscClassIdRegister("DMSNES",&DMSNES_CLASSID);CHKERRQ(ierr);
/* Register Constructors */
ierr = SNESRegisterAll(path);CHKERRQ(ierr);
ierr = SNESLineSearchRegisterAll(path);CHKERRQ(ierr);
/* Register Events */
ierr = PetscLogEventRegister("SNESSolve", SNES_CLASSID,&SNES_Solve);CHKERRQ(ierr);
ierr = PetscLogEventRegister("SNESFunctionEval", SNES_CLASSID,&SNES_FunctionEval);CHKERRQ(ierr);
ierr = PetscLogEventRegister("SNESGSEval", SNES_CLASSID,&SNES_GSEval);CHKERRQ(ierr);
ierr = PetscLogEventRegister("SNESJacobianEval", SNES_CLASSID,&SNES_JacobianEval);CHKERRQ(ierr);
ierr = PetscLogEventRegister("SNESLineSearch", SNESLINESEARCH_CLASSID,&SNESLineSearch_Apply);CHKERRQ(ierr);
/* Process info exclusions */
ierr = PetscOptionsGetString(PETSC_NULL, "-info_exclude", logList, 256, &opt);CHKERRQ(ierr);
if (opt) {
ierr = PetscStrstr(logList, "snes", &className);CHKERRQ(ierr);
if (className) {
ierr = PetscInfoDeactivateClass(SNES_CLASSID);CHKERRQ(ierr);
}
}
/* Process summary exclusions */
ierr = PetscOptionsGetString(PETSC_NULL, "-log_summary_exclude", logList, 256, &opt);CHKERRQ(ierr);
if (opt) {
ierr = PetscStrstr(logList, "snes", &className);CHKERRQ(ierr);
if (className) {
ierr = PetscLogEventDeactivateClass(SNES_CLASSID);CHKERRQ(ierr);
}
}
ierr = PetscRegisterFinalize(SNESFinalizePackage);CHKERRQ(ierr);
PetscFunctionReturn(0);
}
示例13: PressurePoisson
PetscErrorCode PressurePoisson( UserContext *uc )
{
Mat A;
Vec b, px, py, p, u, v, ss, c;
KSP ksp;
PetscErrorCode ierr;
PetscFunctionBegin;
PetscLogEventBegin(EVENT_PressurePoisson,0,0,0,0);
PetscLogEventRegister(&EVENT_PressurePoisson,"PressurePoisson", 0);
/* Assemble and Solve for pressure */
ierr = PetscPrintf(PETSC_COMM_WORLD, "***********************\nPRESSURE\n"); CHKERRQ(ierr);
ierr = AssemblePressureMatrx( uc ); CHKERRQ(ierr);
ierr = AssemblePressureRHS( uc ); CHKERRQ(ierr);
ierr = SolvePressure( uc ); CHKERRQ(ierr);
ierr = WriteResult( uc, uc->p, "p_pressure" ); CHKERRQ(ierr);
/* Assemble and Solve for Velocity */
ierr = PetscPrintf(PETSC_COMM_WORLD, "***********************\nVELOCITY\n"); CHKERRQ(ierr);
ierr = AssembleVelocityRHS( uc ); CHKERRQ(ierr);
ierr = AssembleVelocityMatrix( uc ); CHKERRQ(ierr);
ierr = KSPSetOperators(uc->ksp,uc->A, uc->A, SAME_PRECONDITIONER); CHKERRQ(ierr);
ierr = KSPSolve(uc->ksp,uc->px,uc->u);CHKERRQ(ierr);
ierr = KSPSolve(uc->ksp,uc->py,uc->v);CHKERRQ(ierr);
ierr = WriteResult( uc, uc->u, "u_velocity" ); CHKERRQ(ierr);
ierr = WriteResult( uc, uc->v, "v_velocity" ); CHKERRQ(ierr);
ierr = ComputeShearStress(uc); CHKERRQ(ierr);
ierr = WriteResult( uc, uc->ss,"shear_stress" ); CHKERRQ(ierr);
ierr = ConservationTest(uc); CHKERRQ(ierr);
/* Output indexing */
PetscReal *idx;
VecGetArray(uc->b,&idx);
for( int i = 0; i < uc->numNodes; i++)
idx[i] = i;
VecRestoreArray(uc->b,&idx);
WriteResult(uc, uc->b, "indexes");
VecSet(uc->b, 0.);
ierr = VecDestroy(uc->c); CHKERRQ(ierr);
ierr = VecDestroy(uc->ss); CHKERRQ(ierr);
ierr = MatDestroy(uc->A); CHKERRQ(ierr);
ierr = KSPDestroy(uc->ksp); CHKERRQ(ierr);
ierr = VecDestroy(uc->b); CHKERRQ(ierr);
ierr = VecDestroy(uc->p); CHKERRQ(ierr);
ierr = VecDestroy(uc->px); CHKERRQ(ierr);
ierr = VecDestroy(uc->py); CHKERRQ(ierr);
ierr = VecDestroy(uc->u); CHKERRQ(ierr);
ierr = VecDestroy(uc->v); CHKERRQ(ierr);
PetscLogEventEnd(EVENT_PressurePoisson,0,0,0,0);
PetscFunctionReturn(0);
}
示例14: generateQTBNQ
PetscErrorCode NavierStokesSolver:: generateQTBNQ()
{
PetscErrorCode ierr;
PetscLogEvent GENERATE_QTBNQ;
ierr = PetscLogEventRegister("generateQTBNQ",0, &GENERATE_QTBNQ); CHKERRQ(ierr);
ierr = PetscLogEventBegin(GENERATE_QTBNQ, 0, 0, 0, 0); CHKERRQ(ierr);
ierr = MatMatMult(QT, BNQ, MAT_INITIAL_MATRIX, PETSC_DEFAULT, &QTBNQ); CHKERRQ(ierr);
ierr = PetscLogEventEnd(GENERATE_QTBNQ, 0, 0, 0,0); CHKERRQ(ierr);
return 0;
}
示例15: main
int main(int argc,char **argv)
{
PetscLogDouble x,y;
PetscLogEvent e1;
PetscErrorCode ierr;
PetscBool flg;
PetscInitialize(&argc,&argv,0,0);
PetscLogEventRegister("*DummyEvent",0,&e1);
/* To take care of the paging effects */
ierr = PetscTime(&x);CHKERRQ(ierr);
ierr = PetscLogEventBegin(e1,&x,0,0,0);CHKERRQ(ierr);
ierr = PetscLogEventEnd(e1,&x,0,0,0);CHKERRQ(ierr);
ierr = PetscTime(&x);CHKERRQ(ierr);
/* 10 Occurences of the dummy event */
ierr = PetscLogEventBegin(e1,&x,0,0,0);CHKERRQ(ierr);
ierr = PetscLogEventEnd(e1,&x,0,0,0);CHKERRQ(ierr);
ierr = PetscLogEventBegin(e1,&x,&y,0,0);CHKERRQ(ierr);
ierr = PetscLogEventEnd(e1,&x,&y,0,0);CHKERRQ(ierr);
ierr = PetscLogEventBegin(e1,&y,0,0,0);CHKERRQ(ierr);
ierr = PetscLogEventEnd(e1,&y,0,0,0);CHKERRQ(ierr);
ierr = PetscLogEventBegin(e1,&x,0,0,0);CHKERRQ(ierr);
ierr = PetscLogEventEnd(e1,&x,0,0,0);CHKERRQ(ierr);
ierr = PetscLogEventBegin(e1,&x,&y,0,0);CHKERRQ(ierr);
ierr = PetscLogEventEnd(e1,&x,&y,0,0);CHKERRQ(ierr);
ierr = PetscLogEventBegin(e1,&y,0,0,0);CHKERRQ(ierr);
ierr = PetscLogEventEnd(e1,&y,0,0,0);CHKERRQ(ierr);
ierr = PetscLogEventBegin(e1,&x,0,0,0);CHKERRQ(ierr);
ierr = PetscLogEventEnd(e1,&x,0,0,0);CHKERRQ(ierr);
ierr = PetscLogEventBegin(e1,&x,&y,0,0);CHKERRQ(ierr);
ierr = PetscLogEventEnd(e1,&x,&y,0,0);CHKERRQ(ierr);
ierr = PetscLogEventBegin(e1,&y,0,0,0);CHKERRQ(ierr);
ierr = PetscLogEventEnd(e1,&y,0,0,0);CHKERRQ(ierr);
ierr = PetscLogEventBegin(e1,&x,&e1,0,0);CHKERRQ(ierr);
ierr = PetscLogEventEnd(e1,&x,&e1,0,0);CHKERRQ(ierr);
ierr = PetscTime(&y);CHKERRQ(ierr);
fprintf(stderr,"%-15s : %e sec, with options : ","PetscLogEvent",(y-x)/10.0);
ierr = PetscOptionsHasName(NULL,"-log",&flg);CHKERRQ(ierr);
if (flg) fprintf(stderr,"-log ");
ierr = PetscOptionsHasName(NULL,"-log_all",&flg);CHKERRQ(ierr);
if (flg) fprintf(stderr,"-log_all ");
ierr = PetscOptionsHasName(NULL,"-log_summary",&flg);CHKERRQ(ierr);
if (flg) fprintf(stderr,"-log_summary ");
ierr = PetscOptionsHasName(NULL,"-log_mpe",&flg);CHKERRQ(ierr);
if (flg) fprintf(stderr,"-log_mpe ");
fprintf(stderr,"\n");
ierr = PetscFinalize();
PetscFunctionReturn(0);
}