本文整理汇总了C++中PetscLogEventRegister函数的典型用法代码示例。如果您正苦于以下问题:C++ PetscLogEventRegister函数的具体用法?C++ PetscLogEventRegister怎么用?C++ PetscLogEventRegister使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了PetscLogEventRegister函数的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的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);
};
开发者ID:lw4992,项目名称:petsc,代码行数:34,代码来源:ex67.c
示例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);
}
开发者ID:hsahasra,项目名称:petsc-magma-dense-mat,代码行数:33,代码来源:nasm.c
示例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);
}
开发者ID:adrielb,项目名称:DCell,代码行数:13,代码来源:FluidField.c
示例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);
}
开发者ID:pombredanne,项目名称:petsc,代码行数:58,代码来源:dlregisksp.c
示例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);
}
开发者ID:petsc,项目名称:petsc,代码行数:40,代码来源:mffd.c
示例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);
};
开发者ID:feelpp,项目名称:debian-petsc,代码行数:26,代码来源:ex1.c
示例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);
}
开发者ID:tom-klotz,项目名称:petsc,代码行数:35,代码来源:ex9.c
示例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);
};
开发者ID:tom-klotz,项目名称:petsc,代码行数:30,代码来源:ex1.c
示例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);
};
开发者ID:erdc-cm,项目名称:petsc-dev,代码行数:26,代码来源:ex3.c
示例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);
}
开发者ID:ZJLi2013,项目名称:petsc,代码行数:39,代码来源:dlregissf.c
示例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);
}
开发者ID:hsahasra,项目名称:petsc-magma-dense-mat,代码行数:57,代码来源:ex62.c
示例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);
}
开发者ID:erdc-cm,项目名称:petsc-dev,代码行数:57,代码来源:dlregissnes.c
示例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);
}
开发者ID:adrielb,项目名称:DCell,代码行数:56,代码来源:PressurePoisson.c
示例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;
}
开发者ID:ZJLi2013,项目名称:HPC1,代码行数:11,代码来源:NavierStokesSolver.cpp
示例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);
}
开发者ID:00liujj,项目名称:petsc,代码行数:54,代码来源:PLogEvent.c
示例16: TaoCreate
/*@C
TaoLineSearchInitializePackage - This function registers the line-search
algorithms in TAO.
When using static libraries, this function is called from the
first entry to TaoCreate(); when using shared libraries, it is called
from PetscDLLibraryRegister()
Level: developer
.seealso: TaoLineSearchCreate()
@*/
PetscErrorCode TaoLineSearchInitializePackage(void)
{
PetscErrorCode ierr;
PetscFunctionBegin;
if (TaoLineSearchPackageInitialized) PetscFunctionReturn(0);
TaoLineSearchPackageInitialized=PETSC_TRUE;
#if !defined(PETSC_USE_COMPLEX)
ierr = PetscClassIdRegister("TaoLineSearch",&TAOLINESEARCH_CLASSID);CHKERRQ(ierr);
ierr = TaoLineSearchRegister("unit",TaoLineSearchCreate_Unit);CHKERRQ(ierr);
ierr = TaoLineSearchRegister("more-thuente",TaoLineSearchCreate_MT);CHKERRQ(ierr);
ierr = TaoLineSearchRegister("gpcg",TaoLineSearchCreate_GPCG);CHKERRQ(ierr);
ierr = TaoLineSearchRegister("armijo",TaoLineSearchCreate_Armijo);CHKERRQ(ierr);
ierr = TaoLineSearchRegister("owarmijo",TaoLineSearchCreate_OWArmijo);CHKERRQ(ierr);
ierr = PetscLogEventRegister("TaoLineSearchApply",TAOLINESEARCH_CLASSID,&TaoLineSearch_ApplyEvent);CHKERRQ(ierr);
ierr = PetscLogEventRegister("TaoLineSearchComputeObjective[Gradient]",TAOLINESEARCH_CLASSID,&TaoLineSearch_EvalEvent);CHKERRQ(ierr);
#endif
ierr = PetscRegisterFinalize(TaoLineSearchFinalizePackage);CHKERRQ(ierr);
PetscFunctionReturn(0);
}
开发者ID:masa-ito,项目名称:PETScToPoisson,代码行数:31,代码来源:dlregis_taolinesearch.c
示例17: TaoCreate
/*@C
TaoInitializePackage - This function sets up PETSc to use the Tao
package. When using static libraries, this function is called from the
first entry to TaoCreate(); when using shared libraries, it is called
from PetscDLLibraryRegister()
Level: developer
.seealso: TaoCreate()
@*/
PetscErrorCode TaoInitializePackage(void)
{
PetscErrorCode ierr;
PetscFunctionBegin;
if (TaoPackageInitialized) PetscFunctionReturn(0);
TaoPackageInitialized = PETSC_TRUE;
ierr = PetscClassIdRegister("Tao",&TAO_CLASSID);CHKERRQ(ierr);
/* Tell PETSc what solvers are available */
ierr = TaoRegisterAll();CHKERRQ(ierr);
/* Tell PETSc what events are associated with Tao */
ierr = PetscLogEventRegister("TaoSolve",TAO_CLASSID,&Tao_Solve);CHKERRQ(ierr);
ierr = PetscLogEventRegister("TaoObjectiveEval",TAO_CLASSID,&Tao_ObjectiveEval);CHKERRQ(ierr);
ierr = PetscLogEventRegister("TaoGradientEval",TAO_CLASSID,&Tao_GradientEval);CHKERRQ(ierr);
ierr = PetscLogEventRegister("TaoHessianEval",TAO_CLASSID,&Tao_HessianEval);CHKERRQ(ierr);
ierr = PetscLogEventRegister("TaoConstraintsEval",TAO_CLASSID,&Tao_ConstraintsEval);CHKERRQ(ierr);
ierr = PetscLogEventRegister("TaoJacobianEval",TAO_CLASSID,&Tao_JacobianEval);CHKERRQ(ierr);
ierr = PetscRegisterFinalize(TaoFinalizePackage);CHKERRQ(ierr);
PetscFunctionReturn(0);
}
开发者ID:OpenCMISS-Dependencies,项目名称:petsc,代码行数:35,代码来源:dlregistao.c
示例18: TaoGetKSP
/*@
TaoSetupApplicationSolver - This routine creates the vectors,
matrices, linear solvers, and other data structures used in
the during the optimization process. The application provides
the solver with an objective function, constraints, derivative
information, and application data structures. These structures
include a vector of variables, and Hessian matrix.
Collective on TAO_SOLVER
Input Parameters:
+ myapp - user application context
- tao - the TAO_SOLVER solver context
Level: intermediate
Note:
This routine should be called before TaoGetKSP(), but after
TaoAppSetInitialSolutionVec() and after TaoAppSetHessianMat() (when Newton solvers are used).
Note:
This method is called during TaoSetOptions() and TaoSolveApplication()
.keywords: application, context
@*/
int TaoSetupApplicationSolver(TAO_APPLICATION myapp, TAO_SOLVER tao ){
int info;
TaoPetscApplication* taopetscapp;
PetscFunctionBegin;
PetscValidHeaderSpecific(tao,TAO_COOKIE,2);
if (Tao_Solve==0){
info = PetscLogEventRegister("TaoSolve",TAO_APP_COOKIE,&Tao_Solve); CHKERRQ(info);
}
info = TaoAppGetTaoPetscApp(myapp,&taopetscapp);
info = TaoSetApplication(tao,taopetscapp);CHKERRQ(info);
taopetscapp->tao=tao;
PetscFunctionReturn(0);
}
开发者ID:fuentesdt,项目名称:tao-1.10.1-p3,代码行数:39,代码来源:taoapp_util.c
示例19: PetscDLLibraryRegister
/*@C
NEPInitializePackage - This function initializes everything in the NEP package.
It is called from PetscDLLibraryRegister() when using dynamic libraries, and
on the first call to NEPCreate() when using static libraries.
Level: developer
.seealso: SlepcInitialize()
@*/
PetscErrorCode NEPInitializePackage(void)
{
char logList[256];
char *className;
PetscBool opt;
PetscErrorCode ierr;
PetscFunctionBegin;
if (NEPPackageInitialized) PetscFunctionReturn(0);
NEPPackageInitialized = PETSC_TRUE;
/* Register Classes */
ierr = PetscClassIdRegister("Nonlinear Eigenvalue Problem solver",&NEP_CLASSID);CHKERRQ(ierr);
/* Register Constructors */
ierr = NEPRegisterAll();CHKERRQ(ierr);
/* Register Events */
ierr = PetscLogEventRegister("NEPSetUp",NEP_CLASSID,&NEP_SetUp);CHKERRQ(ierr);
ierr = PetscLogEventRegister("NEPSolve",NEP_CLASSID,&NEP_Solve);CHKERRQ(ierr);
ierr = PetscLogEventRegister("NEPRefine",NEP_CLASSID,&NEP_Refine);CHKERRQ(ierr);
ierr = PetscLogEventRegister("NEPFunctionEval",NEP_CLASSID,&NEP_FunctionEval);CHKERRQ(ierr);
ierr = PetscLogEventRegister("NEPJacobianEval",NEP_CLASSID,&NEP_JacobianEval);CHKERRQ(ierr);
/* Process info exclusions */
ierr = PetscOptionsGetString(NULL,"-info_exclude",logList,256,&opt);CHKERRQ(ierr);
if (opt) {
ierr = PetscStrstr(logList,"nep",&className);CHKERRQ(ierr);
if (className)
|
请发表评论