/*@C PetscDSInitializePackage - This function initializes everything in the DS package. It is called from PetscDLLibraryRegister() when using dynamic libraries, and on the first call to PetscDSCreate() when using static libraries. Level: developer .keywords: PetscDS, initialize, package .seealso: PetscInitialize() @*/ PetscErrorCode PetscDSInitializePackage(void) { char logList[256]; PetscBool opt,pkg; PetscErrorCode ierr; PetscFunctionBegin; if (PetscDSPackageInitialized) PetscFunctionReturn(0); PetscDSPackageInitialized = PETSC_TRUE; /* Register Classes */ ierr = PetscClassIdRegister("Discrete System", &PETSCDS_CLASSID);CHKERRQ(ierr); /* Register Constructors */ ierr = PetscDSRegisterAll();CHKERRQ(ierr); /* Register Events */ /* Process info exclusions */ ierr = PetscOptionsGetString(NULL,NULL,"-info_exclude",logList,sizeof(logList),&opt);CHKERRQ(ierr); if (opt) { ierr = PetscStrInList("ds",logList,',',&pkg);CHKERRQ(ierr); if (pkg) {ierr = PetscInfoDeactivateClass(PETSCDS_CLASSID);CHKERRQ(ierr);} } /* Process summary exclusions */ ierr = PetscOptionsGetString(NULL,NULL,"-log_exclude",logList,sizeof(logList),&opt);CHKERRQ(ierr); if (opt) { ierr = PetscStrInList("ds",logList,',',&pkg);CHKERRQ(ierr); if (pkg) {ierr = PetscLogEventExcludeClass(PETSCDS_CLASSID);CHKERRQ(ierr);} } /* Register package finalizer */ ierr = PetscRegisterFinalize(PetscDSFinalizePackage);CHKERRQ(ierr); PetscFunctionReturn(0); }
/*@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); }
/*@C PFInitializePackage - This function initializes everything in the PF package. It is called from PetscDLLibraryRegister() when using dynamic libraries, and on the first call to PFCreate() when using static libraries. Input Parameter: . path - The dynamic library path, or PETSC_NULL Level: developer .keywords: Vec, initialize, package .seealso: PetscInitialize() @*/ PetscErrorCode PFInitializePackage(const char path[]) { char logList[256]; char *className; PetscBool opt; PetscErrorCode ierr; PetscFunctionBegin; if (PFPackageInitialized) PetscFunctionReturn(0); PFPackageInitialized = PETSC_TRUE; /* Register Classes */ ierr = PetscClassIdRegister("PointFunction",&PF_CLASSID);CHKERRQ(ierr); /* Register Constructors */ ierr = PFRegisterAll(path);CHKERRQ(ierr); /* Process info exclusions */ ierr = PetscOptionsGetString(PETSC_NULL, "-info_exclude", logList, 256, &opt);CHKERRQ(ierr); if (opt) { ierr = PetscStrstr(logList, "pf", &className);CHKERRQ(ierr); if (className) { ierr = PetscInfoDeactivateClass(PF_CLASSID);CHKERRQ(ierr); } } /* Process summary exclusions */ ierr = PetscOptionsGetString(PETSC_NULL, "-log_summary_exclude", logList, 256, &opt);CHKERRQ(ierr); if (opt) { ierr = PetscStrstr(logList, "pf", &className);CHKERRQ(ierr); if (className) { ierr = PetscLogEventDeactivateClass(PF_CLASSID);CHKERRQ(ierr); } } ierr = PetscRegisterFinalize(PFFinalizePackage);CHKERRQ(ierr); PetscFunctionReturn(0); }
/*@C RGInitializePackage - This function initializes everything in the RG package. It is called from PetscDLLibraryRegister() when using dynamic libraries, and on the first call to RGCreate() when using static libraries. Level: developer .seealso: SlepcInitialize() @*/ PetscErrorCode RGInitializePackage(void) { char logList[256]; char *className; PetscBool opt; PetscErrorCode ierr; PetscFunctionBegin; if (RGPackageInitialized) PetscFunctionReturn(0); RGPackageInitialized = PETSC_TRUE; /* Register Classes */ ierr = PetscClassIdRegister("Region",&RG_CLASSID);CHKERRQ(ierr); /* Register Constructors */ ierr = RGRegisterAll();CHKERRQ(ierr); /* Process info exclusions */ ierr = PetscOptionsGetString(NULL,"-info_exclude",logList,256,&opt);CHKERRQ(ierr); if (opt) { ierr = PetscStrstr(logList,"rg",&className);CHKERRQ(ierr); if (className) { ierr = PetscInfoDeactivateClass(RG_CLASSID);CHKERRQ(ierr); } } /* Process summary exclusions */ ierr = PetscOptionsGetString(NULL,"-log_summary_exclude",logList,256,&opt);CHKERRQ(ierr); if (opt) { ierr = PetscStrstr(logList,"rg",&className);CHKERRQ(ierr); if (className) { ierr = PetscLogEventDeactivateClass(RG_CLASSID);CHKERRQ(ierr); } } ierr = PetscRegisterFinalize(RGFinalizePackage);CHKERRQ(ierr); PetscFunctionReturn(0); }
/*@C DMInitializePackage - This function initializes everything in the DM package. It is called from PetscDLLibraryRegister() when using dynamic libraries, and on the first call to AOCreate() or DMDACreate() when using static libraries. Level: developer .keywords: AO, initialize, package .seealso: PetscInitialize() @*/ PetscErrorCode DMInitializePackage(void) { char logList[256]; char *className; PetscBool opt; PetscErrorCode ierr; PetscFunctionBegin; if (DMPackageInitialized) PetscFunctionReturn(0); DMPackageInitialized = PETSC_TRUE; /* Register Classes */ ierr = PetscClassIdRegister("Distributed Mesh",&DM_CLASSID);CHKERRQ(ierr); #if defined(PETSC_HAVE_HYPRE) ierr = MatRegister(MATHYPRESTRUCT, MatCreate_HYPREStruct);CHKERRQ(ierr); #endif /* Register Constructors */ ierr = DMRegisterAll();CHKERRQ(ierr); /* Register Events */ ierr = PetscLogEventRegister("DMConvert", DM_CLASSID,&DM_Convert);CHKERRQ(ierr); ierr = PetscLogEventRegister("DMGlobalToLocal", DM_CLASSID,&DM_GlobalToLocal);CHKERRQ(ierr); ierr = PetscLogEventRegister("DMLocalToGlobal", DM_CLASSID,&DM_LocalToGlobal);CHKERRQ(ierr); ierr = PetscLogEventRegister("DMDALocalADFunc", DM_CLASSID,&DMDA_LocalADFunction);CHKERRQ(ierr); ierr = PetscLogEventRegister("DMPlexInterpolate", DM_CLASSID,&DMPLEX_Interpolate);CHKERRQ(ierr); ierr = PetscLogEventRegister("DMPlexPartition", DM_CLASSID,&DMPLEX_Partition);CHKERRQ(ierr); ierr = PetscLogEventRegister("DMPlexDistribute", DM_CLASSID,&DMPLEX_Distribute);CHKERRQ(ierr); ierr = PetscLogEventRegister("DMPlexDistribCones", DM_CLASSID,&DMPLEX_DistributeCones);CHKERRQ(ierr); ierr = PetscLogEventRegister("DMPlexDistribLabels", DM_CLASSID,&DMPLEX_DistributeLabels);CHKERRQ(ierr); ierr = PetscLogEventRegister("DMPlexDistribSF", DM_CLASSID,&DMPLEX_DistributeSF);CHKERRQ(ierr); ierr = PetscLogEventRegister("DMPlexDistribField", DM_CLASSID,&DMPLEX_DistributeField);CHKERRQ(ierr); ierr = PetscLogEventRegister("DMPlexDistribData", DM_CLASSID,&DMPLEX_DistributeData);CHKERRQ(ierr); ierr = PetscLogEventRegister("DMPlexStratify", DM_CLASSID,&DMPLEX_Stratify);CHKERRQ(ierr); ierr = PetscLogEventRegister("DMPlexPreallocate", DM_CLASSID,&DMPLEX_Preallocate);CHKERRQ(ierr); ierr = PetscLogEventRegister("DMPlexResidualFEM", DM_CLASSID,&DMPLEX_ResidualFEM);CHKERRQ(ierr); ierr = PetscLogEventRegister("DMPlexJacobianFEM", DM_CLASSID,&DMPLEX_JacobianFEM);CHKERRQ(ierr); /* Process info exclusions */ ierr = PetscOptionsGetString(NULL, "-info_exclude", logList, 256, &opt);CHKERRQ(ierr); if (opt) { ierr = PetscStrstr(logList, "da", &className);CHKERRQ(ierr); if (className) { ierr = PetscInfoDeactivateClass(DM_CLASSID);CHKERRQ(ierr); } } /* Process summary exclusions */ ierr = PetscOptionsGetString(NULL, "-log_summary_exclude", logList, 256, &opt);CHKERRQ(ierr); if (opt) { ierr = PetscStrstr(logList, "da", &className);CHKERRQ(ierr); if (className) { ierr = PetscLogEventDeactivateClass(DM_CLASSID);CHKERRQ(ierr); } } ierr = PetscRegisterFinalize(DMFinalizePackage);CHKERRQ(ierr); PetscFunctionReturn(0); }
/*@C TSInitializePackage - This function initializes everything in the TS package. It is called from PetscDLLibraryRegister() when using dynamic libraries, and on the first call to TSCreate() when using static libraries. Level: developer .keywords: TS, initialize, package .seealso: PetscInitialize() @*/ PetscErrorCode TSInitializePackage(void) { char logList[256]; char *className; PetscBool opt; PetscErrorCode ierr; PetscFunctionBegin; if (TSPackageInitialized) PetscFunctionReturn(0); TSPackageInitialized = PETSC_TRUE; /* Inialize subpackages */ ierr = TSGLLEInitializePackage();CHKERRQ(ierr); ierr = TSRKInitializePackage();CHKERRQ(ierr); ierr = TSGLEEInitializePackage();CHKERRQ(ierr); ierr = TSARKIMEXInitializePackage();CHKERRQ(ierr); ierr = TSRosWInitializePackage();CHKERRQ(ierr); ierr = TSSSPInitializePackage();CHKERRQ(ierr); ierr = TSAdaptInitializePackage();CHKERRQ(ierr); ierr = TSGLLEAdaptInitializePackage();CHKERRQ(ierr); /* Register Classes */ ierr = PetscClassIdRegister("TS",&TS_CLASSID);CHKERRQ(ierr); ierr = PetscClassIdRegister("DMTS",&DMTS_CLASSID);CHKERRQ(ierr); ierr = PetscClassIdRegister("TSTrajectory",&TSTRAJECTORY_CLASSID);CHKERRQ(ierr); /* Register Constructors */ ierr = TSRegisterAll();CHKERRQ(ierr); ierr = TSTrajectoryRegisterAll();CHKERRQ(ierr); /* Register Events */ ierr = PetscLogEventRegister("TSAdjointStep",TS_CLASSID,&TS_AdjointStep);CHKERRQ(ierr); ierr = PetscLogEventRegister("TSTrajSet",TSTRAJECTORY_CLASSID,&TSTrajectory_Set);CHKERRQ(ierr); ierr = PetscLogEventRegister("TSTrajGet",TSTRAJECTORY_CLASSID,&TSTrajectory_Get);CHKERRQ(ierr); ierr = PetscLogEventRegister("TSTrajDiskWrite",TS_CLASSID,&TSTrajectory_DiskWrite);CHKERRQ(ierr); ierr = PetscLogEventRegister("TSTrajDiskRead",TS_CLASSID,&TSTrajectory_DiskRead);CHKERRQ(ierr); ierr = PetscLogEventRegister("TSStep",TS_CLASSID,&TS_Step);CHKERRQ(ierr); ierr = PetscLogEventRegister("TSPseudoCmptTStp",TS_CLASSID,&TS_PseudoComputeTimeStep);CHKERRQ(ierr); ierr = PetscLogEventRegister("TSFunctionEval",TS_CLASSID,&TS_FunctionEval);CHKERRQ(ierr); ierr = PetscLogEventRegister("TSJacobianEval",TS_CLASSID,&TS_JacobianEval);CHKERRQ(ierr); /* Process info exclusions */ ierr = PetscOptionsGetString(NULL,NULL, "-info_exclude", logList, 256, &opt);CHKERRQ(ierr); if (opt) { ierr = PetscStrstr(logList, "ts", &className);CHKERRQ(ierr); if (className) { ierr = PetscInfoDeactivateClass(TS_CLASSID);CHKERRQ(ierr); } } /* Process summary exclusions */ ierr = PetscOptionsGetString(NULL,NULL, "-log_exclude", logList, 256, &opt);CHKERRQ(ierr); if (opt) { ierr = PetscStrstr(logList, "ts", &className);CHKERRQ(ierr); if (className) { ierr = PetscLogEventDeactivateClass(TS_CLASSID);CHKERRQ(ierr); } } ierr = PetscRegisterFinalize(TSFinalizePackage);CHKERRQ(ierr); PetscFunctionReturn(0); }
/*@C ISInitializePackage - This function initializes everything in the IS package. It is called from PetscDLLibraryRegister() when using dynamic libraries, and on the first call to ISCreateXXXX() when using static libraries. Level: developer .keywords: Vec, initialize, package .seealso: PetscInitialize() @*/ PetscErrorCode ISInitializePackage(void) { char logList[256]; char *className; PetscBool opt; PetscErrorCode ierr; PetscFunctionBegin; if (ISPackageInitialized) PetscFunctionReturn(0); ISPackageInitialized = PETSC_TRUE; /* Register Constructors */ ierr = ISRegisterAll();CHKERRQ(ierr); /* Register Classes */ ierr = PetscClassIdRegister("Index Set",&IS_CLASSID);CHKERRQ(ierr); ierr = PetscClassIdRegister("IS L to G Mapping",&IS_LTOGM_CLASSID);CHKERRQ(ierr); ierr = PetscClassIdRegister("Section",&PETSC_SECTION_CLASSID);CHKERRQ(ierr); /* Process info exclusions */ ierr = PetscOptionsGetString(NULL, "-info_exclude", logList, 256, &opt);CHKERRQ(ierr); if (opt) { ierr = PetscStrstr(logList, "is", &className);CHKERRQ(ierr); if (className) { ierr = PetscInfoDeactivateClass(IS_CLASSID);CHKERRQ(ierr); ierr = PetscInfoDeactivateClass(IS_LTOGM_CLASSID);CHKERRQ(ierr); } } /* Process summary exclusions */ ierr = PetscOptionsGetString(NULL, "-log_summary_exclude", logList, 256, &opt);CHKERRQ(ierr); if (opt) { ierr = PetscStrstr(logList, "is", &className);CHKERRQ(ierr); if (className) { ierr = PetscLogEventDeactivateClass(IS_CLASSID);CHKERRQ(ierr); ierr = PetscLogEventDeactivateClass(IS_LTOGM_CLASSID);CHKERRQ(ierr); } } ierr = PetscRegisterFinalize(ISFinalizePackage);CHKERRQ(ierr); PetscFunctionReturn(0); }
PetscErrorCode PetscP4estInitialize(void) { PetscBool psc_catch_signals = PETSC_FALSE; PetscBool psc_print_backtrace = PETSC_TRUE; int psc_log_threshold = SC_LP_DEFAULT; int pp4est_log_threshold = SC_LP_DEFAULT; char logList[256], *className; PetscBool opt; PetscErrorCode ierr; PetscFunctionBegin; if (PetscP4estInitialized) PetscFunctionReturn(0); PetscP4estInitialized = PETSC_TRUE; ierr = PetscClassIdRegister("p4est logging",&P4ESTLOGGING_CLASSID);CHKERRQ(ierr); ierr = PetscOptionsGetString(NULL,NULL, "-info_exclude", logList, 256, &opt);CHKERRQ(ierr); if (opt) { ierr = PetscStrstr(logList, "p4est", &className);CHKERRQ(ierr); if (className) { ierr = PetscInfoDeactivateClass(P4ESTLOGGING_CLASSID);CHKERRQ(ierr); } } ierr = PetscHeaderCreate(P4estLoggingObject,P4ESTLOGGING_CLASSID,"p4est","p4est logging","DM",PETSC_COMM_WORLD,NULL,PetscObjectView);CHKERRQ(ierr); if (sc_package_id == -1) { int log_threshold_shifted = psc_log_threshold + 1; PetscBool set; PetscBeganSc = PETSC_TRUE; ierr = PetscOptionsGetBool(NULL,NULL,"-petsc_sc_catch_signals",&psc_catch_signals,NULL);CHKERRQ(ierr); ierr = PetscOptionsGetBool(NULL,NULL,"-petsc_sc_print_backtrace",&psc_print_backtrace,NULL);CHKERRQ(ierr); ierr = PetscOptionsGetEnum(NULL,NULL,"-petsc_sc_log_threshold",SCLogTypes,(PetscEnum*)&log_threshold_shifted,&set);CHKERRQ(ierr); if (set) psc_log_threshold = log_threshold_shifted - 1; sc_init(PETSC_COMM_WORLD,(int)psc_catch_signals,(int)psc_print_backtrace,PetscScLogHandler,psc_log_threshold); if (sc_package_id == -1) SETERRQ(PETSC_COMM_WORLD,PETSC_ERR_LIB,"Could not initialize libsc package used by p4est"); sc_set_abort_handler(PetscScAbort); } if (p4est_package_id == -1) { int log_threshold_shifted = pp4est_log_threshold + 1; PetscBool set; ierr = PetscOptionsGetEnum(NULL,NULL,"-petsc_p4est_log_threshold",SCLogTypes,(PetscEnum*)&log_threshold_shifted,&set);CHKERRQ(ierr); if (set) pp4est_log_threshold = log_threshold_shifted - 1; PetscStackCallP4est(p4est_init,(PetscScLogHandler,pp4est_log_threshold)); if (p4est_package_id == -1) SETERRQ(PETSC_COMM_WORLD,PETSC_ERR_LIB,"Could not initialize p4est"); } ierr = DMForestRegisterType(DMP4EST);CHKERRQ(ierr); ierr = DMForestRegisterType(DMP8EST);CHKERRQ(ierr); ierr = PetscRegisterFinalize(PetscP4estFinalize);CHKERRQ(ierr); PetscFunctionReturn(0); }
/*@C PetscFVInitializePackage - This function initializes everything in the FV package. It is called from PetscDLLibraryRegister() when using dynamic libraries, and on the first call to PetscFVCreate() when using static libraries. Level: developer .keywords: PetscFV, initialize, package .seealso: PetscInitialize() @*/ PetscErrorCode PetscFVInitializePackage(void) { char logList[256]; char *className; PetscBool opt; PetscErrorCode ierr; PetscFunctionBegin; if (PetscFVPackageInitialized) PetscFunctionReturn(0); PetscFVPackageInitialized = PETSC_TRUE; /* Register Classes */ ierr = PetscClassIdRegister("FV Space", &PETSCFV_CLASSID);CHKERRQ(ierr); ierr = PetscClassIdRegister("Limiter", &PETSCLIMITER_CLASSID);CHKERRQ(ierr); /* Register Constructors */ ierr = PetscFVRegisterAll();CHKERRQ(ierr); /* Register Events */ /* Process info exclusions */ ierr = PetscOptionsGetString(NULL, "-info_exclude", logList, 256, &opt);CHKERRQ(ierr); if (opt) { ierr = PetscStrstr(logList, "fv", &className);CHKERRQ(ierr); if (className) {ierr = PetscInfoDeactivateClass(PETSCFV_CLASSID);CHKERRQ(ierr);} ierr = PetscStrstr(logList, "limiter", &className);CHKERRQ(ierr); if (className) {ierr = PetscInfoDeactivateClass(PETSCLIMITER_CLASSID);CHKERRQ(ierr);} } /* Process summary exclusions */ ierr = PetscOptionsGetString(NULL, "-log_summary_exclude", logList, 256, &opt);CHKERRQ(ierr); if (opt) { ierr = PetscStrstr(logList, "fv", &className);CHKERRQ(ierr); if (className) {ierr = PetscLogEventDeactivateClass(PETSCFV_CLASSID);CHKERRQ(ierr);} ierr = PetscStrstr(logList, "limiter", &className);CHKERRQ(ierr); if (className) {ierr = PetscLogEventDeactivateClass(PETSCLIMITER_CLASSID);CHKERRQ(ierr);} } ierr = PetscRegisterFinalize(PetscFVFinalizePackage);CHKERRQ(ierr); PetscFunctionReturn(0); }
/*@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); }
/*@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. Level: developer .keywords: SNES, initialize, package .seealso: PetscInitialize() @*/ PetscErrorCode SNESInitializePackage(void) { char logList[256]; char *className; PetscBool opt; PetscErrorCode ierr; PetscFunctionBegin; if (SNESPackageInitialized) PetscFunctionReturn(0); SNESPackageInitialized = PETSC_TRUE; /* Initialize subpackages */ ierr = SNESMSInitializePackage();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();CHKERRQ(ierr); ierr = SNESLineSearchRegisterAll();CHKERRQ(ierr); /* Register Events */ ierr = PetscLogEventRegister("SNESSolve", SNES_CLASSID,&SNES_Solve);CHKERRQ(ierr); ierr = PetscLogEventRegister("SNESFunctionEval", SNES_CLASSID,&SNES_FunctionEval);CHKERRQ(ierr); ierr = PetscLogEventRegister("SNESObjectiveEval", SNES_CLASSID,&SNES_ObjectiveEval);CHKERRQ(ierr); ierr = PetscLogEventRegister("SNESNGSEval", SNES_CLASSID,&SNES_NGSEval);CHKERRQ(ierr); ierr = PetscLogEventRegister("SNESNGSFuncEval", SNES_CLASSID,&SNES_NGSFuncEval);CHKERRQ(ierr); ierr = PetscLogEventRegister("SNESJacobianEval", SNES_CLASSID,&SNES_JacobianEval);CHKERRQ(ierr); ierr = PetscLogEventRegister("SNESLineSearch", SNESLINESEARCH_CLASSID,&SNESLINESEARCH_Apply);CHKERRQ(ierr); ierr = PetscLogEventRegister("SNESNPCSolve", SNES_CLASSID,&SNES_NPCSolve);CHKERRQ(ierr); /* Process info exclusions */ ierr = PetscOptionsGetString(NULL,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(NULL,NULL, "-log_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); }
/*@C PetscSysInitializePackage - This function initializes everything in the main Petsc package. It is called from PetscDLLibraryRegister() when using dynamic libraries, and on the call to PetscInitialize() when using static libraries. Level: developer .keywords: Petsc, initialize, package .seealso: PetscInitialize() @*/ PetscErrorCode PetscSysInitializePackage(void) { char logList[256]; char *className; PetscBool opt; PetscErrorCode ierr; PetscFunctionBegin; if (PetscSysPackageInitialized) PetscFunctionReturn(0); PetscSysPackageInitialized = PETSC_TRUE; /* Register Classes */ ierr = PetscClassIdRegister("Object",&PETSC_OBJECT_CLASSID); CHKERRQ(ierr); ierr = PetscClassIdRegister("Container",&PETSC_CONTAINER_CLASSID); CHKERRQ(ierr); /* Register Events */ ierr = PetscLogEventRegister("PetscBarrier", PETSC_SMALLEST_CLASSID,&PETSC_Barrier); CHKERRQ(ierr); /* Process info exclusions */ ierr = PetscOptionsGetString(NULL, "-info_exclude", logList, 256, &opt); CHKERRQ(ierr); if (opt) { ierr = PetscStrstr(logList, "null", &className); CHKERRQ(ierr); if (className) { ierr = PetscInfoDeactivateClass(0); CHKERRQ(ierr); } } /* Process summary exclusions */ ierr = PetscOptionsGetString(NULL, "-log_summary_exclude", logList, 256, &opt); CHKERRQ(ierr); if (opt) { ierr = PetscStrstr(logList, "null", &className); CHKERRQ(ierr); if (className) { ierr = PetscLogEventDeactivateClass(0); CHKERRQ(ierr); } } ierr = PetscRegisterFinalize(PetscSysFinalizePackage); CHKERRQ(ierr); PetscFunctionReturn(0); }
/*@C BVInitializePackage - This function initializes everything in the BV package. It is called from PetscDLLibraryRegister() when using dynamic libraries, and on the first call to BVCreate() when using static libraries. Level: developer .seealso: SlepcInitialize() @*/ PetscErrorCode BVInitializePackage(void) { char logList[256]; char *className; PetscBool opt; PetscErrorCode ierr; PetscFunctionBegin; if (BVPackageInitialized) PetscFunctionReturn(0); BVPackageInitialized = PETSC_TRUE; /* Register Classes */ ierr = PetscClassIdRegister("Basis Vectors",&BV_CLASSID);CHKERRQ(ierr); /* Register Constructors */ ierr = BVRegisterAll();CHKERRQ(ierr); /* Register Events */ ierr = PetscLogEventRegister("BVCreate",BV_CLASSID,&BV_Create);CHKERRQ(ierr); ierr = PetscLogEventRegister("BVCopy",BV_CLASSID,&BV_Copy);CHKERRQ(ierr); ierr = PetscLogEventRegister("BVMult",BV_CLASSID,&BV_Mult);CHKERRQ(ierr); ierr = PetscLogEventRegister("BVDot",BV_CLASSID,&BV_Dot);CHKERRQ(ierr); ierr = PetscLogEventRegister("BVOrthogonalize",BV_CLASSID,&BV_Orthogonalize);CHKERRQ(ierr); ierr = PetscLogEventRegister("BVScale",BV_CLASSID,&BV_Scale);CHKERRQ(ierr); ierr = PetscLogEventRegister("BVNorm",BV_CLASSID,&BV_Norm);CHKERRQ(ierr); ierr = PetscLogEventRegister("BVSetRandom",BV_CLASSID,&BV_SetRandom);CHKERRQ(ierr); ierr = PetscLogEventRegister("BVMatMult",BV_CLASSID,&BV_MatMult);CHKERRQ(ierr); ierr = PetscLogEventRegister("BVMatProject",BV_CLASSID,&BV_MatProject);CHKERRQ(ierr); ierr = PetscLogEventRegister("BVAXPY",BV_CLASSID,&BV_AXPY);CHKERRQ(ierr); /* Process info exclusions */ ierr = PetscOptionsGetString(NULL,"-info_exclude",logList,256,&opt);CHKERRQ(ierr); if (opt) { ierr = PetscStrstr(logList,"bv",&className);CHKERRQ(ierr); if (className) { ierr = PetscInfoDeactivateClass(BV_CLASSID);CHKERRQ(ierr); } } /* Process summary exclusions */ ierr = PetscOptionsGetString(NULL,"-log_summary_exclude",logList,256,&opt);CHKERRQ(ierr); if (opt) { ierr = PetscStrstr(logList,"bv",&className);CHKERRQ(ierr); if (className) { ierr = PetscLogEventDeactivateClass(BV_CLASSID);CHKERRQ(ierr); } } ierr = PetscRegisterFinalize(BVFinalizePackage);CHKERRQ(ierr); PetscFunctionReturn(0); }
/*@C CharacteristicInitializePackage - This function initializes everything in the Characteristic package. It is called from PetscDLLibraryRegister() when using dynamic libraries, and on the first call to CharacteristicCreate() when using static libraries. Level: developer .keywords: Characteristic, initialize, package .seealso: PetscInitialize() @*/ PetscErrorCode CharacteristicInitializePackage(void) { char logList[256]; char *className; PetscBool opt; PetscErrorCode ierr; PetscFunctionBegin; if (CharacteristicPackageInitialized) PetscFunctionReturn(0); CharacteristicPackageInitialized = PETSC_TRUE; /* Register Classes */ ierr = PetscClassIdRegister("Method of Characteristics",&CHARACTERISTIC_CLASSID);CHKERRQ(ierr); /* Register Constructors */ ierr = CharacteristicRegisterAll();CHKERRQ(ierr); /* Register Events */ ierr = PetscLogEventRegister("MOCSetUp", CHARACTERISTIC_CLASSID,&CHARACTERISTIC_SetUp);CHKERRQ(ierr); ierr = PetscLogEventRegister("MOCSolve", CHARACTERISTIC_CLASSID,&CHARACTERISTIC_Solve);CHKERRQ(ierr); ierr = PetscLogEventRegister("MOCQueueSetup", CHARACTERISTIC_CLASSID,&CHARACTERISTIC_QueueSetup);CHKERRQ(ierr); ierr = PetscLogEventRegister("MOCDAUpdate", CHARACTERISTIC_CLASSID,&CHARACTERISTIC_DAUpdate);CHKERRQ(ierr); ierr = PetscLogEventRegister("MOCHalfTimeLocal", CHARACTERISTIC_CLASSID,&CHARACTERISTIC_HalfTimeLocal);CHKERRQ(ierr); ierr = PetscLogEventRegister("MOCHalfTimeRemot", CHARACTERISTIC_CLASSID,&CHARACTERISTIC_HalfTimeRemote);CHKERRQ(ierr); ierr = PetscLogEventRegister("MOCHalfTimeExchg", CHARACTERISTIC_CLASSID,&CHARACTERISTIC_HalfTimeExchange);CHKERRQ(ierr); ierr = PetscLogEventRegister("MOCFullTimeLocal", CHARACTERISTIC_CLASSID,&CHARACTERISTIC_FullTimeLocal);CHKERRQ(ierr); ierr = PetscLogEventRegister("MOCFullTimeRemot", CHARACTERISTIC_CLASSID,&CHARACTERISTIC_FullTimeRemote);CHKERRQ(ierr); ierr = PetscLogEventRegister("MOCFullTimeExchg", CHARACTERISTIC_CLASSID,&CHARACTERISTIC_FullTimeExchange);CHKERRQ(ierr); /* Process info exclusions */ ierr = PetscOptionsGetString(NULL,NULL, "-log_info_exclude", logList, 256, &opt);CHKERRQ(ierr); if (opt) { ierr = PetscStrstr(logList, "characteristic", &className);CHKERRQ(ierr); if (className) { ierr = PetscInfoDeactivateClass(CHARACTERISTIC_CLASSID);CHKERRQ(ierr); } } /* Process summary exclusions */ ierr = PetscOptionsGetString(NULL,NULL, "-log_exclude", logList, 256, &opt);CHKERRQ(ierr); if (opt) { ierr = PetscStrstr(logList, "characteristic", &className);CHKERRQ(ierr); if (className) { ierr = PetscLogEventDeactivateClass(CHARACTERISTIC_CLASSID);CHKERRQ(ierr); } } ierr = PetscRegisterFinalize(CharacteristicFinalizePackage);CHKERRQ(ierr); PetscFunctionReturn(0); }
/*@C KSPInitializePackage - This function initializes everything in the KSP package. It is called from PetscDLLibraryRegister() when using dynamic libraries, and on the first call to KSPCreate() when using static libraries. Level: developer .keywords: KSP, initialize, package .seealso: PetscInitialize() @*/ PetscErrorCode KSPInitializePackage(void) { char logList[256]; char *className; PetscBool opt; PetscErrorCode ierr; PetscFunctionBegin; if (KSPPackageInitialized) PetscFunctionReturn(0); KSPPackageInitialized = PETSC_TRUE; /* Register Classes */ ierr = PetscClassIdRegister("Krylov Solver",&KSP_CLASSID);CHKERRQ(ierr); ierr = PetscClassIdRegister("DMKSP interface",&DMKSP_CLASSID);CHKERRQ(ierr); /* Register Constructors */ ierr = KSPRegisterAll();CHKERRQ(ierr); /* Register matrix implementations packaged in KSP */ ierr = KSPMatRegisterAll();CHKERRQ(ierr); /* Register Events */ ierr = PetscLogEventRegister("KSPGMRESOrthog", KSP_CLASSID,&KSP_GMRESOrthogonalization);CHKERRQ(ierr); ierr = PetscLogEventRegister("KSPSetUp", KSP_CLASSID,&KSP_SetUp);CHKERRQ(ierr); ierr = PetscLogEventRegister("KSPSolve", KSP_CLASSID,&KSP_Solve);CHKERRQ(ierr); /* Process info exclusions */ ierr = PetscOptionsGetString(NULL, "-info_exclude", logList, 256, &opt);CHKERRQ(ierr); if (opt) { ierr = PetscStrstr(logList, "ksp", &className);CHKERRQ(ierr); if (className) { ierr = PetscInfoDeactivateClass(KSP_CLASSID);CHKERRQ(ierr); } } /* Process summary exclusions */ ierr = PetscOptionsGetString(NULL, "-log_summary_exclude", logList, 256, &opt);CHKERRQ(ierr); if (opt) { ierr = PetscStrstr(logList, "ksp", &className);CHKERRQ(ierr); if (className) { ierr = PetscLogEventDeactivateClass(KSP_CLASSID);CHKERRQ(ierr); } } ierr = PetscRegisterFinalize(KSPFinalizePackage);CHKERRQ(ierr); PetscFunctionReturn(0); }
/*@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) { ierr = PetscInfoDeactivateClass(NEP_CLASSID);CHKERRQ(ierr); } } /* Process summary exclusions */ ierr = PetscOptionsGetString(NULL,"-log_summary_exclude",logList,256,&opt);CHKERRQ(ierr); if (opt) { ierr = PetscStrstr(logList,"nep",&className);CHKERRQ(ierr); if (className) { ierr = PetscLogEventDeactivateClass(NEP_CLASSID);CHKERRQ(ierr); } } ierr = PetscRegisterFinalize(NEPFinalizePackage);CHKERRQ(ierr); PetscFunctionReturn(0); }
/*@C PetscViewerInitializePackage - This function initializes everything in the main PetscViewer package. Level: developer .keywords: Petsc, initialize, package .seealso: PetscInitialize() @*/ PetscErrorCode PetscViewerInitializePackage(void) { char logList[256]; char *className; PetscBool opt; PetscErrorCode ierr; PetscFunctionBegin; if (PetscViewerPackageInitialized) PetscFunctionReturn(0); PetscViewerPackageInitialized = PETSC_TRUE; /* Register Classes */ ierr = PetscClassIdRegister("Viewer",&PETSC_VIEWER_CLASSID);CHKERRQ(ierr); /* Register Constructors */ ierr = PetscViewerRegisterAll();CHKERRQ(ierr); /* Process info exclusions */ ierr = PetscOptionsGetString(NULL,NULL, "-info_exclude", logList, 256, &opt);CHKERRQ(ierr); if (opt) { ierr = PetscStrstr(logList, "viewer", &className);CHKERRQ(ierr); if (className) { ierr = PetscInfoDeactivateClass(0);CHKERRQ(ierr); } } /* Process summary exclusions */ ierr = PetscOptionsGetString(NULL,NULL, "-log_exclude", logList, 256, &opt);CHKERRQ(ierr); if (opt) { ierr = PetscStrstr(logList, "viewer", &className);CHKERRQ(ierr); if (className) { ierr = PetscLogEventDeactivateClass(0);CHKERRQ(ierr); } } #if defined(PETSC_HAVE_MATHEMATICA) ierr = PetscViewerMathematicaInitializePackage();CHKERRQ(ierr); #endif ierr = PetscRegisterFinalize(PetscViewerFinalizePackage);CHKERRQ(ierr); PetscFunctionReturn(0); }
/*@C TaoInitializePackage - This function sets up PETSc to use the Tao package. When using static or shared libraries, this function is called from the first entry to TaoCreate(); when using shared or static libraries, it is called from PetscDLLibraryRegister_tao() Level: developer .seealso: TaoCreate() @*/ PetscErrorCode TaoInitializePackage(void) { char logList[256]; PetscBool opt,pkg; PetscErrorCode ierr; PetscFunctionBegin; if (TaoPackageInitialized) PetscFunctionReturn(0); TaoPackageInitialized = PETSC_TRUE; /* Register Classes */ ierr = PetscClassIdRegister("Tao",&TAO_CLASSID);CHKERRQ(ierr); /* Register Constructors */ ierr = TaoRegisterAll();CHKERRQ(ierr); /* Register Events */ 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("TaoObjGradEval", TAO_CLASSID,&TAO_ObjGradEval);CHKERRQ(ierr); ierr = PetscLogEventRegister("TaoHessianEval", TAO_CLASSID,&TAO_HessianEval);CHKERRQ(ierr); ierr = PetscLogEventRegister("TaoConstrEval", TAO_CLASSID,&TAO_ConstraintsEval);CHKERRQ(ierr); ierr = PetscLogEventRegister("TaoJacobianEval", TAO_CLASSID,&TAO_JacobianEval);CHKERRQ(ierr); /* Process info exclusions */ ierr = PetscOptionsGetString(NULL,NULL,"-info_exclude",logList,sizeof(logList),&opt);CHKERRQ(ierr); if (opt) { ierr = PetscStrInList("tao",logList,',',&pkg);CHKERRQ(ierr); if (pkg) {ierr = PetscInfoDeactivateClass(TAO_CLASSID);CHKERRQ(ierr);} } /* Process summary exclusions */ ierr = PetscOptionsGetString(NULL,NULL,"-log_exclude",logList,sizeof(logList),&opt);CHKERRQ(ierr); if (opt) { ierr = PetscStrInList("tao",logList,',',&pkg);CHKERRQ(ierr); if (pkg) {ierr = PetscLogEventExcludeClass(TAO_CLASSID);CHKERRQ(ierr);} } /* Register package finalizer */ ierr = PetscRegisterFinalize(TaoFinalizePackage);CHKERRQ(ierr); PetscFunctionReturn(0); }
/*@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 PETSCSNES_DLLEXPORT SNESInitializePackage(const char path[]) { char logList[256]; char *className; PetscTruth opt; PetscErrorCode ierr; PetscFunctionBegin; if (SNESPackageInitialized) PetscFunctionReturn(0); SNESPackageInitialized = PETSC_TRUE; /* Register Classes */ ierr = PetscCookieRegister("SNES",&SNES_COOKIE);CHKERRQ(ierr); /* Register Constructors */ ierr = SNESRegisterAll(path);CHKERRQ(ierr); /* Register Events */ ierr = PetscLogEventRegister("SNESSolve", SNES_COOKIE,&SNES_Solve);CHKERRQ(ierr); ierr = PetscLogEventRegister("SNESLineSearch", SNES_COOKIE,&SNES_LineSearch);CHKERRQ(ierr); ierr = PetscLogEventRegister("SNESFunctionEval", SNES_COOKIE,&SNES_FunctionEval);CHKERRQ(ierr); ierr = PetscLogEventRegister("SNESJacobianEval", SNES_COOKIE,&SNES_JacobianEval);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_COOKIE);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_COOKIE);CHKERRQ(ierr); } } ierr = PetscRegisterFinalize(SNESFinalizePackage);CHKERRQ(ierr); PetscFunctionReturn(0); }
/*@C PetscInitializeDrawPackage - This function initializes everything in the PetscDraw package. It is called from PetscDLLibraryRegister() when using dynamic libraries, and on the call to PetscInitialize() when using static libraries. Level: developer .keywords: Petsc, initialize, package .seealso: PetscInitialize() @*/ PetscErrorCode PetscDrawInitializePackage(void) { char logList[256]; char *className; PetscBool opt; PetscErrorCode ierr; PetscFunctionBegin; if (PetscDrawPackageInitialized) PetscFunctionReturn(0); PetscDrawPackageInitialized = PETSC_TRUE; /* Register Classes */ ierr = PetscClassIdRegister("Draw",&PETSC_DRAW_CLASSID);CHKERRQ(ierr); ierr = PetscClassIdRegister("Axis",&PETSC_DRAWAXIS_CLASSID);CHKERRQ(ierr); ierr = PetscClassIdRegister("Line Graph",&PETSC_DRAWLG_CLASSID);CHKERRQ(ierr); ierr = PetscClassIdRegister("Histogram",&PETSC_DRAWHG_CLASSID);CHKERRQ(ierr); ierr = PetscClassIdRegister("Bar Grap",&PETSC_DRAWBAR_CLASSID);CHKERRQ(ierr); ierr = PetscClassIdRegister("Scatter Plot",&PETSC_DRAWSP_CLASSID);CHKERRQ(ierr); /* Register Constructors */ ierr = PetscDrawRegisterAll();CHKERRQ(ierr); /* Process info exclusions */ ierr = PetscOptionsGetString(NULL, "-info_exclude", logList, 256, &opt);CHKERRQ(ierr); if (opt) { ierr = PetscStrstr(logList, "draw", &className);CHKERRQ(ierr); if (className) { ierr = PetscInfoDeactivateClass(0);CHKERRQ(ierr); } } /* Process summary exclusions */ ierr = PetscOptionsGetString(NULL, "-log_summary_exclude", logList, 256, &opt);CHKERRQ(ierr); if (opt) { ierr = PetscStrstr(logList, "draw", &className);CHKERRQ(ierr); if (className) { ierr = PetscLogEventDeactivateClass(0);CHKERRQ(ierr); } } ierr = PetscRegisterFinalize(PetscDrawFinalizePackage);CHKERRQ(ierr); PetscFunctionReturn(0); }
/*@C EPSInitializePackage - This function initializes everything in the EPS package. It is called from PetscDLLibraryRegister() when using dynamic libraries, and on the first call to EPSCreate() when using static libraries. Level: developer .seealso: SlepcInitialize() @*/ PetscErrorCode EPSInitializePackage() { char logList[256]; char *className; PetscBool opt; PetscErrorCode ierr; PetscFunctionBegin; if (EPSPackageInitialized) PetscFunctionReturn(0); EPSPackageInitialized = PETSC_TRUE; /* Register Classes */ ierr = PetscClassIdRegister("Eigenvalue Problem Solver",&EPS_CLASSID);CHKERRQ(ierr); /* Register Constructors */ ierr = EPSRegisterAll();CHKERRQ(ierr); /* Register Events */ ierr = PetscLogEventRegister("EPSSetUp",EPS_CLASSID,&EPS_SetUp);CHKERRQ(ierr); ierr = PetscLogEventRegister("EPSSolve",EPS_CLASSID,&EPS_Solve);CHKERRQ(ierr); /* Process info exclusions */ ierr = PetscOptionsGetString(NULL,"-info_exclude",logList,256,&opt);CHKERRQ(ierr); if (opt) { ierr = PetscStrstr(logList,"eps",&className);CHKERRQ(ierr); if (className) { ierr = PetscInfoDeactivateClass(EPS_CLASSID);CHKERRQ(ierr); } } /* Process summary exclusions */ ierr = PetscOptionsGetString(NULL,"-log_summary_exclude",logList,256,&opt);CHKERRQ(ierr); if (opt) { ierr = PetscStrstr(logList,"eps",&className);CHKERRQ(ierr); if (className) { ierr = PetscLogEventDeactivateClass(EPS_CLASSID);CHKERRQ(ierr); } } ierr = PetscRegisterFinalize(EPSFinalizePackage);CHKERRQ(ierr); PetscFunctionReturn(0); }
/*@C AOInitializePackage - This function initializes everything in the AO package. It is called from PetscDLLibraryRegister() when using dynamic libraries, and on the first call to AOCreate(). Input Parameter: path - The dynamic library path, or PETSC_NULL Level: developer .keywords: AO, initialize, package .seealso: PetscInitialize() @*/ PetscErrorCode AOInitializePackage(const char path[]) { char logList[256]; char *className; PetscBool opt; PetscErrorCode ierr; PetscFunctionBegin; if (AOPackageInitialized) PetscFunctionReturn(0); AOPackageInitialized = PETSC_TRUE; /* Register Classes */ ierr = PetscClassIdRegister("Application Order",&AO_CLASSID);CHKERRQ(ierr); /* Register Constructors */ ierr = AORegisterAll(path);CHKERRQ(ierr); /* Register Events */ ierr = PetscLogEventRegister("AOPetscToApplication", AO_CLASSID,&AO_PetscToApplication);CHKERRQ(ierr); ierr = PetscLogEventRegister("AOApplicationToPetsc", AO_CLASSID,&AO_ApplicationToPetsc);CHKERRQ(ierr); /* Process info exclusions */ ierr = PetscOptionsGetString(PETSC_NULL, "-info_exclude", logList, 256, &opt);CHKERRQ(ierr); if (opt) { ierr = PetscStrstr(logList, "ao", &className);CHKERRQ(ierr); if (className) { ierr = PetscInfoDeactivateClass(AO_CLASSID);CHKERRQ(ierr); } } /* Process summary exclusions */ ierr = PetscOptionsGetString(PETSC_NULL, "-log_summary_exclude", logList, 256, &opt);CHKERRQ(ierr); if (opt) { ierr = PetscStrstr(logList, "ao", &className);CHKERRQ(ierr); if (className) { ierr = PetscLogEventDeactivateClass(AO_CLASSID);CHKERRQ(ierr); } } ierr = PetscRegisterFinalize(AOFinalizePackage);CHKERRQ(ierr); PetscFunctionReturn(0); }
/*@C PetscFEInitializePackage - This function initializes everything in the FE package. It is called from PetscDLLibraryRegister() when using dynamic libraries, and on the first call to PetscSpaceCreate() when using static libraries. Level: developer .keywords: PetscFE, initialize, package .seealso: PetscInitialize() @*/ PetscErrorCode PetscFEInitializePackage(void) { char logList[256]; char *className; PetscBool opt; PetscErrorCode ierr; PetscFunctionBegin; if (PetscFEPackageInitialized) PetscFunctionReturn(0); PetscFEPackageInitialized = PETSC_TRUE; /* Register Classes */ ierr = PetscClassIdRegister("Linear Space", &PETSCSPACE_CLASSID);CHKERRQ(ierr); ierr = PetscClassIdRegister("Dual Space", &PETSCDUALSPACE_CLASSID);CHKERRQ(ierr); ierr = PetscClassIdRegister("FE Space", &PETSCFE_CLASSID);CHKERRQ(ierr); /* Register Constructors */ ierr = PetscSpaceRegisterAll();CHKERRQ(ierr); ierr = PetscDualSpaceRegisterAll();CHKERRQ(ierr); ierr = PetscFERegisterAll();CHKERRQ(ierr); /* Register Events */ /* Process info exclusions */ ierr = PetscOptionsGetString(NULL,NULL, "-info_exclude", logList, 256, &opt);CHKERRQ(ierr); if (opt) { ierr = PetscStrstr(logList, "fe", &className);CHKERRQ(ierr); if (className) {ierr = PetscInfoDeactivateClass(PETSCFE_CLASSID);CHKERRQ(ierr);} } /* Process summary exclusions */ ierr = PetscOptionsGetString(NULL,NULL, "-log_exclude", logList, 256, &opt);CHKERRQ(ierr); if (opt) { ierr = PetscStrstr(logList, "fe", &className);CHKERRQ(ierr); if (className) {ierr = PetscLogEventDeactivateClass(PETSCFE_CLASSID);CHKERRQ(ierr);} } ierr = PetscRegisterFinalize(PetscFEFinalizePackage);CHKERRQ(ierr); PetscFunctionReturn(0); }
/*@C MFNInitializePackage - This function initializes everything in the MFN package. It is called from PetscDLLibraryRegister() when using dynamic libraries, and on the first call to MFNCreate() when using static libraries. Level: developer .seealso: SlepcInitialize() @*/ PetscErrorCode MFNInitializePackage(void) { char logList[256]; char *className; PetscBool opt; PetscErrorCode ierr; PetscFunctionBegin; if (MFNPackageInitialized) PetscFunctionReturn(0); MFNPackageInitialized = PETSC_TRUE; /* Register Classes */ ierr = PetscClassIdRegister("Matrix Function",&MFN_CLASSID);CHKERRQ(ierr); /* Register Constructors */ ierr = MFNRegisterAll();CHKERRQ(ierr); /* Register Events */ ierr = PetscLogEventRegister("MFNSetUp",MFN_CLASSID,&MFN_SetUp);CHKERRQ(ierr); ierr = PetscLogEventRegister("MFNSolve",MFN_CLASSID,&MFN_Solve);CHKERRQ(ierr); /* Process info exclusions */ ierr = PetscOptionsGetString(NULL,"-info_exclude",logList,256,&opt);CHKERRQ(ierr); if (opt) { ierr = PetscStrstr(logList,"mfn",&className);CHKERRQ(ierr); if (className) { ierr = PetscInfoDeactivateClass(MFN_CLASSID);CHKERRQ(ierr); } } /* Process summary exclusions */ ierr = PetscOptionsGetString(NULL,"-log_summary_exclude",logList,256,&opt);CHKERRQ(ierr); if (opt) { ierr = PetscStrstr(logList,"mfn",&className);CHKERRQ(ierr); if (className) { ierr = PetscLogEventDeactivateClass(MFN_CLASSID);CHKERRQ(ierr); } } ierr = PetscRegisterFinalize(MFNFinalizePackage);CHKERRQ(ierr); PetscFunctionReturn(0); }
/*@C MatInitializePackage - This function initializes everything in the Mat package. It is called from PetscDLLibraryRegister() when using dynamic libraries, and on the first call to MatCreate() when using static libraries. Level: developer .keywords: Mat, initialize, package .seealso: PetscInitialize() @*/ PetscErrorCode MatInitializePackage(void) { char logList[256]; char *className; PetscBool opt; PetscErrorCode ierr; PetscFunctionBegin; if (MatPackageInitialized) PetscFunctionReturn(0); MatPackageInitialized = PETSC_TRUE; /* Inialize subpackage */ ierr = MatMFFDInitializePackage();CHKERRQ(ierr); /* Register Classes */ ierr = PetscClassIdRegister("Matrix",&MAT_CLASSID);CHKERRQ(ierr); ierr = PetscClassIdRegister("Matrix FD Coloring",&MAT_FDCOLORING_CLASSID);CHKERRQ(ierr); ierr = PetscClassIdRegister("Matrix MatTranspose Coloring",&MAT_TRANSPOSECOLORING_CLASSID);CHKERRQ(ierr); ierr = PetscClassIdRegister("Matrix Partitioning",&MAT_PARTITIONING_CLASSID);CHKERRQ(ierr); ierr = PetscClassIdRegister("Matrix Coarsen",&MAT_COARSEN_CLASSID);CHKERRQ(ierr); ierr = PetscClassIdRegister("Matrix Null Space",&MAT_NULLSPACE_CLASSID);CHKERRQ(ierr); /* Register Constructors */ ierr = MatRegisterAll();CHKERRQ(ierr); ierr = MatOrderingRegisterAll();CHKERRQ(ierr); ierr = MatColoringRegisterAll();CHKERRQ(ierr); ierr = MatPartitioningRegisterAll();CHKERRQ(ierr); ierr = MatCoarsenRegisterAll();CHKERRQ(ierr); /* Register Events */ ierr = PetscLogEventRegister("MatMult", MAT_CLASSID,&MAT_Mult);CHKERRQ(ierr); ierr = PetscLogEventRegister("MatMults", MAT_CLASSID,&MAT_Mults);CHKERRQ(ierr); ierr = PetscLogEventRegister("MatMultConstr", MAT_CLASSID,&MAT_MultConstrained);CHKERRQ(ierr); ierr = PetscLogEventRegister("MatMultAdd", MAT_CLASSID,&MAT_MultAdd);CHKERRQ(ierr); ierr = PetscLogEventRegister("MatMultTranspose", MAT_CLASSID,&MAT_MultTranspose);CHKERRQ(ierr); ierr = PetscLogEventRegister("MatMultTrConstr", MAT_CLASSID,&MAT_MultTransposeConstrained);CHKERRQ(ierr); ierr = PetscLogEventRegister("MatMultTrAdd", MAT_CLASSID,&MAT_MultTransposeAdd);CHKERRQ(ierr); ierr = PetscLogEventRegister("MatSolve", MAT_CLASSID,&MAT_Solve);CHKERRQ(ierr); ierr = PetscLogEventRegister("MatSolves", MAT_CLASSID,&MAT_Solves);CHKERRQ(ierr); ierr = PetscLogEventRegister("MatSolveAdd", MAT_CLASSID,&MAT_SolveAdd);CHKERRQ(ierr); ierr = PetscLogEventRegister("MatSolveTranspos", MAT_CLASSID,&MAT_SolveTranspose);CHKERRQ(ierr); ierr = PetscLogEventRegister("MatSolveTrAdd", MAT_CLASSID,&MAT_SolveTransposeAdd);CHKERRQ(ierr); ierr = PetscLogEventRegister("MatSOR", MAT_CLASSID,&MAT_SOR);CHKERRQ(ierr); ierr = PetscLogEventRegister("MatForwardSolve", MAT_CLASSID,&MAT_ForwardSolve);CHKERRQ(ierr); ierr = PetscLogEventRegister("MatBackwardSolve", MAT_CLASSID,&MAT_BackwardSolve);CHKERRQ(ierr); ierr = PetscLogEventRegister("MatLUFactor", MAT_CLASSID,&MAT_LUFactor);CHKERRQ(ierr); ierr = PetscLogEventRegister("MatLUFactorSym", MAT_CLASSID,&MAT_LUFactorSymbolic);CHKERRQ(ierr); ierr = PetscLogEventRegister("MatLUFactorNum", MAT_CLASSID,&MAT_LUFactorNumeric);CHKERRQ(ierr); ierr = PetscLogEventRegister("MatCholeskyFctr", MAT_CLASSID,&MAT_CholeskyFactor);CHKERRQ(ierr); ierr = PetscLogEventRegister("MatCholFctrSym", MAT_CLASSID,&MAT_CholeskyFactorSymbolic);CHKERRQ(ierr); ierr = PetscLogEventRegister("MatCholFctrNum", MAT_CLASSID,&MAT_CholeskyFactorNumeric);CHKERRQ(ierr); ierr = PetscLogEventRegister("MatILUFactor", MAT_CLASSID,&MAT_ILUFactor);CHKERRQ(ierr); ierr = PetscLogEventRegister("MatILUFactorSym", MAT_CLASSID,&MAT_ILUFactorSymbolic);CHKERRQ(ierr); ierr = PetscLogEventRegister("MatICCFactorSym", MAT_CLASSID,&MAT_ICCFactorSymbolic);CHKERRQ(ierr); ierr = PetscLogEventRegister("MatCopy", MAT_CLASSID,&MAT_Copy);CHKERRQ(ierr); ierr = PetscLogEventRegister("MatConvert", MAT_CLASSID,&MAT_Convert);CHKERRQ(ierr); ierr = PetscLogEventRegister("MatScale", MAT_CLASSID,&MAT_Scale);CHKERRQ(ierr); ierr = PetscLogEventRegister("MatAssemblyBegin", MAT_CLASSID,&MAT_AssemblyBegin);CHKERRQ(ierr); ierr = PetscLogEventRegister("MatAssemblyEnd", MAT_CLASSID,&MAT_AssemblyEnd);CHKERRQ(ierr); ierr = PetscLogEventRegister("MatSetValues", MAT_CLASSID,&MAT_SetValues);CHKERRQ(ierr); ierr = PetscLogEventRegister("MatGetValues", MAT_CLASSID,&MAT_GetValues);CHKERRQ(ierr); ierr = PetscLogEventRegister("MatGetRow", MAT_CLASSID,&MAT_GetRow);CHKERRQ(ierr); ierr = PetscLogEventRegister("MatGetRowIJ", MAT_CLASSID,&MAT_GetRowIJ);CHKERRQ(ierr); ierr = PetscLogEventRegister("MatGetSubMatrice", MAT_CLASSID,&MAT_GetSubMatrices);CHKERRQ(ierr); ierr = PetscLogEventRegister("MatGetColoring", MAT_CLASSID,&MAT_GetColoring);CHKERRQ(ierr); ierr = PetscLogEventRegister("MatGetOrdering", MAT_CLASSID,&MAT_GetOrdering);CHKERRQ(ierr); ierr = PetscLogEventRegister("MatIncreaseOvrlp", MAT_CLASSID,&MAT_IncreaseOverlap);CHKERRQ(ierr); ierr = PetscLogEventRegister("MatPartitioning", MAT_PARTITIONING_CLASSID,&MAT_Partitioning);CHKERRQ(ierr); ierr = PetscLogEventRegister("MatCoarsen", MAT_COARSEN_CLASSID,&MAT_Coarsen);CHKERRQ(ierr); ierr = PetscLogEventRegister("MatZeroEntries", MAT_CLASSID,&MAT_ZeroEntries);CHKERRQ(ierr); ierr = PetscLogEventRegister("MatLoad", MAT_CLASSID,&MAT_Load);CHKERRQ(ierr); ierr = PetscLogEventRegister("MatView", MAT_CLASSID,&MAT_View);CHKERRQ(ierr); ierr = PetscLogEventRegister("MatAXPY", MAT_CLASSID,&MAT_AXPY);CHKERRQ(ierr); ierr = PetscLogEventRegister("MatFDColorCreate", MAT_FDCOLORING_CLASSID,&MAT_FDColoringCreate);CHKERRQ(ierr); ierr = PetscLogEventRegister("MatFDColorApply", MAT_FDCOLORING_CLASSID,&MAT_FDColoringApply);CHKERRQ(ierr); ierr = PetscLogEventRegister("MatFDColorFunc", MAT_FDCOLORING_CLASSID,&MAT_FDColoringFunction);CHKERRQ(ierr); ierr = PetscLogEventRegister("MatTranspose", MAT_CLASSID,&MAT_Transpose);CHKERRQ(ierr); ierr = PetscLogEventRegister("MatMatMult", MAT_CLASSID,&MAT_MatMult);CHKERRQ(ierr); ierr = PetscLogEventRegister("MatMatSolve", MAT_CLASSID,&MAT_MatSolve);CHKERRQ(ierr); ierr = PetscLogEventRegister("MatMatMultSym", MAT_CLASSID,&MAT_MatMultSymbolic);CHKERRQ(ierr); ierr = PetscLogEventRegister("MatMatMultNum", MAT_CLASSID,&MAT_MatMultNumeric);CHKERRQ(ierr); ierr = PetscLogEventRegister("MatMatMatMult", MAT_CLASSID,&MAT_MatMatMult);CHKERRQ(ierr); ierr = PetscLogEventRegister("MatMatMatMultSym", MAT_CLASSID,&MAT_MatMatMultSymbolic);CHKERRQ(ierr); ierr = PetscLogEventRegister("MatMatMatMultNum", MAT_CLASSID,&MAT_MatMatMultNumeric);CHKERRQ(ierr); ierr = PetscLogEventRegister("MatPtAP", MAT_CLASSID,&MAT_PtAP);CHKERRQ(ierr); ierr = PetscLogEventRegister("MatPtAPSymbolic", MAT_CLASSID,&MAT_PtAPSymbolic);CHKERRQ(ierr); ierr = PetscLogEventRegister("MatPtAPNumeric", MAT_CLASSID,&MAT_PtAPNumeric);CHKERRQ(ierr); ierr = PetscLogEventRegister("MatRARt", MAT_CLASSID,&MAT_RARt);CHKERRQ(ierr); ierr = PetscLogEventRegister("MatRARtSymbolic", MAT_CLASSID,&MAT_RARtSymbolic);CHKERRQ(ierr); ierr = PetscLogEventRegister("MatRARtNumeric", MAT_CLASSID,&MAT_RARtNumeric);CHKERRQ(ierr); ierr = PetscLogEventRegister("MatMatTransMult", MAT_CLASSID,&MAT_MatTransposeMult);CHKERRQ(ierr); ierr = PetscLogEventRegister("MatMatTrnMultSym", MAT_CLASSID,&MAT_MatTransposeMultSymbolic);CHKERRQ(ierr); ierr = PetscLogEventRegister("MatMatTrnMultNum", MAT_CLASSID,&MAT_MatTransposeMultNumeric);CHKERRQ(ierr); ierr = PetscLogEventRegister("MatTrnMatMult", MAT_CLASSID,&MAT_TransposeMatMult);CHKERRQ(ierr); ierr = PetscLogEventRegister("MatTrnMatMultSym", MAT_CLASSID,&MAT_TransposeMatMultSymbolic);CHKERRQ(ierr); ierr = PetscLogEventRegister("MatTrnMatMultNum", MAT_CLASSID,&MAT_TransposeMatMultNumeric);CHKERRQ(ierr); ierr = PetscLogEventRegister("MatTrnColorCreate", MAT_CLASSID,&MAT_TransposeColoringCreate);CHKERRQ(ierr); ierr = PetscLogEventRegister("MatGetRedundant", MAT_CLASSID,&MAT_GetRedundantMatrix);CHKERRQ(ierr); ierr = PetscLogEventRegister("MatGetSeqNZStrct", MAT_CLASSID,&MAT_GetSequentialNonzeroStructure);CHKERRQ(ierr); ierr = PetscLogEventRegister("MatGetMultiProcBlock", MAT_CLASSID,&MAT_GetMultiProcBlock);CHKERRQ(ierr); /* these may be specific to MPIAIJ matrices */ ierr = PetscLogEventRegister("MatMPISumSeqNumeric",MAT_CLASSID,&MAT_Seqstompinum);CHKERRQ(ierr); ierr = PetscLogEventRegister("MatMPISumSeqSymbolic",MAT_CLASSID,&MAT_Seqstompisym);CHKERRQ(ierr); ierr = PetscLogEventRegister("MatMPISumSeq",MAT_CLASSID,&MAT_Seqstompi);CHKERRQ(ierr); ierr = PetscLogEventRegister("MatMPIConcateSeq",MAT_CLASSID,&MAT_Merge);CHKERRQ(ierr); ierr = PetscLogEventRegister("MatGetLocalMat",MAT_CLASSID,&MAT_Getlocalmat);CHKERRQ(ierr); ierr = PetscLogEventRegister("MatGetLocalMatCondensed",MAT_CLASSID,&MAT_Getlocalmatcondensed);CHKERRQ(ierr); ierr = PetscLogEventRegister("MatGetBrowsOfAcols",MAT_CLASSID,&MAT_GetBrowsOfAcols);CHKERRQ(ierr); ierr = PetscLogEventRegister("MatGetBrAoCol",MAT_CLASSID,&MAT_GetBrowsOfAocols);CHKERRQ(ierr); ierr = PetscLogEventRegister("MatApplyPAPt_Symbolic",MAT_CLASSID,&MAT_Applypapt_symbolic);CHKERRQ(ierr); ierr = PetscLogEventRegister("MatApplyPAPt_Numeric",MAT_CLASSID,&MAT_Applypapt_numeric);CHKERRQ(ierr); ierr = PetscLogEventRegister("MatApplyPAPt",MAT_CLASSID,&MAT_Applypapt);CHKERRQ(ierr); ierr = PetscLogEventRegister("MatGetSymTrans",MAT_CLASSID,&MAT_Getsymtranspose);CHKERRQ(ierr); ierr = PetscLogEventRegister("MatGetSymTransR",MAT_CLASSID,&MAT_Getsymtransreduced);CHKERRQ(ierr); ierr = PetscLogEventRegister("MatTranspose_SeqAIJ_FAST",MAT_CLASSID,&MAT_Transpose_SeqAIJ);CHKERRQ(ierr); ierr = PetscLogEventRegister("MatCUSPCopyTo",MAT_CLASSID,&MAT_CUSPCopyToGPU);CHKERRQ(ierr); ierr = PetscLogEventRegister("MatCUSPARSECopyTo",MAT_CLASSID,&MAT_CUSPARSECopyToGPU);CHKERRQ(ierr); ierr = PetscLogEventRegister("MatSetValBatch",MAT_CLASSID,&MAT_SetValuesBatch);CHKERRQ(ierr); ierr = PetscLogEventRegister("MatSetValBatch1",MAT_CLASSID,&MAT_SetValuesBatchI);CHKERRQ(ierr); ierr = PetscLogEventRegister("MatSetValBatch2",MAT_CLASSID,&MAT_SetValuesBatchII);CHKERRQ(ierr); ierr = PetscLogEventRegister("MatSetValBatch3",MAT_CLASSID,&MAT_SetValuesBatchIII);CHKERRQ(ierr); ierr = PetscLogEventRegister("MatSetValBatch4",MAT_CLASSID,&MAT_SetValuesBatchIV);CHKERRQ(ierr); /* Turn off high traffic events by default */ ierr = PetscLogEventSetActiveAll(MAT_SetValues, PETSC_FALSE);CHKERRQ(ierr); /* Process info exclusions */ ierr = PetscOptionsGetString(NULL, "-info_exclude", logList, 256, &opt);CHKERRQ(ierr); if (opt) { ierr = PetscStrstr(logList, "mat", &className);CHKERRQ(ierr); if (className) { ierr = PetscInfoDeactivateClass(MAT_CLASSID);CHKERRQ(ierr); } } /* Process summary exclusions */ ierr = PetscOptionsGetString(NULL, "-log_summary_exclude", logList, 256, &opt);CHKERRQ(ierr); if (opt) { ierr = PetscStrstr(logList, "mat", &className);CHKERRQ(ierr); if (className) { ierr = PetscLogEventDeactivateClass(MAT_CLASSID);CHKERRQ(ierr); } } ierr = PetscRegisterFinalize(MatFinalizePackage);CHKERRQ(ierr); PetscFunctionReturn(0); }
/*@C MatInitializePackage - This function initializes everything in the Mat package. It is called from PetscDLLibraryRegister() when using dynamic libraries, and on the first call to MatCreate() when using static libraries. Level: developer .keywords: Mat, initialize, package .seealso: PetscInitialize() @*/ PetscErrorCode MatInitializePackage(void) { char logList[256]; char *className; PetscBool opt; PetscErrorCode ierr; PetscFunctionBegin; if (MatPackageInitialized) PetscFunctionReturn(0); MatPackageInitialized = PETSC_TRUE; /* Inialize subpackage */ ierr = MatMFFDInitializePackage();CHKERRQ(ierr); /* Register Classes */ ierr = PetscClassIdRegister("Matrix",&MAT_CLASSID);CHKERRQ(ierr); ierr = PetscClassIdRegister("Matrix FD Coloring",&MAT_FDCOLORING_CLASSID);CHKERRQ(ierr); ierr = PetscClassIdRegister("Matrix Coloring",&MAT_COLORING_CLASSID);CHKERRQ(ierr); ierr = PetscClassIdRegister("Matrix MatTranspose Coloring",&MAT_TRANSPOSECOLORING_CLASSID);CHKERRQ(ierr); ierr = PetscClassIdRegister("Matrix Partitioning",&MAT_PARTITIONING_CLASSID);CHKERRQ(ierr); ierr = PetscClassIdRegister("Matrix Coarsen",&MAT_COARSEN_CLASSID);CHKERRQ(ierr); ierr = PetscClassIdRegister("Matrix Null Space",&MAT_NULLSPACE_CLASSID);CHKERRQ(ierr); /* Register Constructors */ ierr = MatRegisterAll();CHKERRQ(ierr); ierr = MatOrderingRegisterAll();CHKERRQ(ierr); ierr = MatColoringRegisterAll();CHKERRQ(ierr); ierr = MatPartitioningRegisterAll();CHKERRQ(ierr); ierr = MatCoarsenRegisterAll();CHKERRQ(ierr); /* Register Events */ ierr = PetscLogEventRegister("MatMult", MAT_CLASSID,&MAT_Mult);CHKERRQ(ierr); ierr = PetscLogEventRegister("MatMults", MAT_CLASSID,&MAT_Mults);CHKERRQ(ierr); ierr = PetscLogEventRegister("MatMultConstr", MAT_CLASSID,&MAT_MultConstrained);CHKERRQ(ierr); ierr = PetscLogEventRegister("MatMultAdd", MAT_CLASSID,&MAT_MultAdd);CHKERRQ(ierr); ierr = PetscLogEventRegister("MatMultTranspose", MAT_CLASSID,&MAT_MultTranspose);CHKERRQ(ierr); ierr = PetscLogEventRegister("MatMultTrConstr", MAT_CLASSID,&MAT_MultTransposeConstrained);CHKERRQ(ierr); ierr = PetscLogEventRegister("MatMultTrAdd", MAT_CLASSID,&MAT_MultTransposeAdd);CHKERRQ(ierr); ierr = PetscLogEventRegister("MatSolve", MAT_CLASSID,&MAT_Solve);CHKERRQ(ierr); ierr = PetscLogEventRegister("MatSolves", MAT_CLASSID,&MAT_Solves);CHKERRQ(ierr); ierr = PetscLogEventRegister("MatSolveAdd", MAT_CLASSID,&MAT_SolveAdd);CHKERRQ(ierr); ierr = PetscLogEventRegister("MatSolveTranspos", MAT_CLASSID,&MAT_SolveTranspose);CHKERRQ(ierr); ierr = PetscLogEventRegister("MatSolveTrAdd", MAT_CLASSID,&MAT_SolveTransposeAdd);CHKERRQ(ierr); ierr = PetscLogEventRegister("MatSOR", MAT_CLASSID,&MAT_SOR);CHKERRQ(ierr); ierr = PetscLogEventRegister("MatForwardSolve", MAT_CLASSID,&MAT_ForwardSolve);CHKERRQ(ierr); ierr = PetscLogEventRegister("MatBackwardSolve", MAT_CLASSID,&MAT_BackwardSolve);CHKERRQ(ierr); ierr = PetscLogEventRegister("MatLUFactor", MAT_CLASSID,&MAT_LUFactor);CHKERRQ(ierr); ierr = PetscLogEventRegister("MatLUFactorSym", MAT_CLASSID,&MAT_LUFactorSymbolic);CHKERRQ(ierr); ierr = PetscLogEventRegister("MatLUFactorNum", MAT_CLASSID,&MAT_LUFactorNumeric);CHKERRQ(ierr); ierr = PetscLogEventRegister("MatCholeskyFctr", MAT_CLASSID,&MAT_CholeskyFactor);CHKERRQ(ierr); ierr = PetscLogEventRegister("MatCholFctrSym", MAT_CLASSID,&MAT_CholeskyFactorSymbolic);CHKERRQ(ierr); ierr = PetscLogEventRegister("MatCholFctrNum", MAT_CLASSID,&MAT_CholeskyFactorNumeric);CHKERRQ(ierr); ierr = PetscLogEventRegister("MatILUFactor", MAT_CLASSID,&MAT_ILUFactor);CHKERRQ(ierr); ierr = PetscLogEventRegister("MatILUFactorSym", MAT_CLASSID,&MAT_ILUFactorSymbolic);CHKERRQ(ierr); ierr = PetscLogEventRegister("MatICCFactorSym", MAT_CLASSID,&MAT_ICCFactorSymbolic);CHKERRQ(ierr); ierr = PetscLogEventRegister("MatCopy", MAT_CLASSID,&MAT_Copy);CHKERRQ(ierr); ierr = PetscLogEventRegister("MatConvert", MAT_CLASSID,&MAT_Convert);CHKERRQ(ierr); ierr = PetscLogEventRegister("MatScale", MAT_CLASSID,&MAT_Scale);CHKERRQ(ierr); ierr = PetscLogEventRegister("MatResidual", MAT_CLASSID,&MAT_Residual);CHKERRQ(ierr); ierr = PetscLogEventRegister("MatAssemblyBegin", MAT_CLASSID,&MAT_AssemblyBegin);CHKERRQ(ierr); ierr = PetscLogEventRegister("MatAssemblyEnd", MAT_CLASSID,&MAT_AssemblyEnd);CHKERRQ(ierr); ierr = PetscLogEventRegister("MatSetValues", MAT_CLASSID,&MAT_SetValues);CHKERRQ(ierr); ierr = PetscLogEventRegister("MatGetValues", MAT_CLASSID,&MAT_GetValues);CHKERRQ(ierr); ierr = PetscLogEventRegister("MatGetRow", MAT_CLASSID,&MAT_GetRow);CHKERRQ(ierr); ierr = PetscLogEventRegister("MatGetRowIJ", MAT_CLASSID,&MAT_GetRowIJ);CHKERRQ(ierr); ierr = PetscLogEventRegister("MatGetSubMatrice", MAT_CLASSID,&MAT_GetSubMatrices);CHKERRQ(ierr); ierr = PetscLogEventRegister("MatGetSubMatrix", MAT_CLASSID,&MAT_GetSubMatrix);CHKERRQ(ierr); ierr = PetscLogEventRegister("MatGetOrdering", MAT_CLASSID,&MAT_GetOrdering);CHKERRQ(ierr); ierr = PetscLogEventRegister("MatIncreaseOvrlp", MAT_CLASSID,&MAT_IncreaseOverlap);CHKERRQ(ierr); ierr = PetscLogEventRegister("MatPartitioning", MAT_PARTITIONING_CLASSID,&MAT_Partitioning);CHKERRQ(ierr); ierr = PetscLogEventRegister("MatCoarsen", MAT_COARSEN_CLASSID,&MAT_Coarsen);CHKERRQ(ierr); ierr = PetscLogEventRegister("MatZeroEntries", MAT_CLASSID,&MAT_ZeroEntries);CHKERRQ(ierr); ierr = PetscLogEventRegister("MatLoad", MAT_CLASSID,&MAT_Load);CHKERRQ(ierr); ierr = PetscLogEventRegister("MatView", MAT_CLASSID,&MAT_View);CHKERRQ(ierr); ierr = PetscLogEventRegister("MatAXPY", MAT_CLASSID,&MAT_AXPY);CHKERRQ(ierr); ierr = PetscLogEventRegister("MatFDColorCreate", MAT_FDCOLORING_CLASSID,&MAT_FDColoringCreate);CHKERRQ(ierr); ierr = PetscLogEventRegister("MatFDColorSetUp", MAT_FDCOLORING_CLASSID,&MAT_FDColoringSetUp);CHKERRQ(ierr); ierr = PetscLogEventRegister("MatFDColorApply", MAT_FDCOLORING_CLASSID,&MAT_FDColoringApply);CHKERRQ(ierr); ierr = PetscLogEventRegister("MatFDColorFunc", MAT_FDCOLORING_CLASSID,&MAT_FDColoringFunction);CHKERRQ(ierr); ierr = PetscLogEventRegister("MatTranspose", MAT_CLASSID,&MAT_Transpose);CHKERRQ(ierr); ierr = PetscLogEventRegister("MatMatMult", MAT_CLASSID,&MAT_MatMult);CHKERRQ(ierr); ierr = PetscLogEventRegister("MatMatSolve", MAT_CLASSID,&MAT_MatSolve);CHKERRQ(ierr); ierr = PetscLogEventRegister("MatMatMultSym", MAT_CLASSID,&MAT_MatMultSymbolic);CHKERRQ(ierr); ierr = PetscLogEventRegister("MatMatMultNum", MAT_CLASSID,&MAT_MatMultNumeric);CHKERRQ(ierr); ierr = PetscLogEventRegister("MatMatMatMult", MAT_CLASSID,&MAT_MatMatMult);CHKERRQ(ierr); ierr = PetscLogEventRegister("MatMatMatMultSym", MAT_CLASSID,&MAT_MatMatMultSymbolic);CHKERRQ(ierr); ierr = PetscLogEventRegister("MatMatMatMultNum", MAT_CLASSID,&MAT_MatMatMultNumeric);CHKERRQ(ierr); ierr = PetscLogEventRegister("MatPtAP", MAT_CLASSID,&MAT_PtAP);CHKERRQ(ierr); ierr = PetscLogEventRegister("MatPtAPSymbolic", MAT_CLASSID,&MAT_PtAPSymbolic);CHKERRQ(ierr); ierr = PetscLogEventRegister("MatPtAPNumeric", MAT_CLASSID,&MAT_PtAPNumeric);CHKERRQ(ierr); ierr = PetscLogEventRegister("MatRARt", MAT_CLASSID,&MAT_RARt);CHKERRQ(ierr); ierr = PetscLogEventRegister("MatRARtSym", MAT_CLASSID,&MAT_RARtSymbolic);CHKERRQ(ierr); ierr = PetscLogEventRegister("MatRARtNum", MAT_CLASSID,&MAT_RARtNumeric);CHKERRQ(ierr); ierr = PetscLogEventRegister("MatMatTransMult", MAT_CLASSID,&MAT_MatTransposeMult);CHKERRQ(ierr); ierr = PetscLogEventRegister("MatMatTrnMultSym", MAT_CLASSID,&MAT_MatTransposeMultSymbolic);CHKERRQ(ierr); ierr = PetscLogEventRegister("MatMatTrnMultNum", MAT_CLASSID,&MAT_MatTransposeMultNumeric);CHKERRQ(ierr); ierr = PetscLogEventRegister("MatTrnMatMult", MAT_CLASSID,&MAT_TransposeMatMult);CHKERRQ(ierr); ierr = PetscLogEventRegister("MatTrnMatMultSym", MAT_CLASSID,&MAT_TransposeMatMultSymbolic);CHKERRQ(ierr); ierr = PetscLogEventRegister("MatTrnMatMultNum", MAT_CLASSID,&MAT_TransposeMatMultNumeric);CHKERRQ(ierr); ierr = PetscLogEventRegister("MatTrnColorCreate", MAT_CLASSID,&MAT_TransposeColoringCreate);CHKERRQ(ierr); ierr = PetscLogEventRegister("MatRedundantMat", MAT_CLASSID,&MAT_RedundantMat);CHKERRQ(ierr); ierr = PetscLogEventRegister("MatGetSeqNZStrct", MAT_CLASSID,&MAT_GetSequentialNonzeroStructure);CHKERRQ(ierr); ierr = PetscLogEventRegister("MatGetMultiProcBlock", MAT_CLASSID,&MAT_GetMultiProcBlock);CHKERRQ(ierr); /* these may be specific to MPIAIJ matrices */ ierr = PetscLogEventRegister("MatMPISumSeqNumeric",MAT_CLASSID,&MAT_Seqstompinum);CHKERRQ(ierr); ierr = PetscLogEventRegister("MatMPISumSeqSymbolic",MAT_CLASSID,&MAT_Seqstompisym);CHKERRQ(ierr); ierr = PetscLogEventRegister("MatMPISumSeq",MAT_CLASSID,&MAT_Seqstompi);CHKERRQ(ierr); ierr = PetscLogEventRegister("MatMPIConcateSeq",MAT_CLASSID,&MAT_Merge);CHKERRQ(ierr); ierr = PetscLogEventRegister("MatGetLocalMat",MAT_CLASSID,&MAT_Getlocalmat);CHKERRQ(ierr); ierr = PetscLogEventRegister("MatGetLocalMatCondensed",MAT_CLASSID,&MAT_Getlocalmatcondensed);CHKERRQ(ierr); ierr = PetscLogEventRegister("MatGetBrowsOfAcols",MAT_CLASSID,&MAT_GetBrowsOfAcols);CHKERRQ(ierr); ierr = PetscLogEventRegister("MatGetBrAoCol",MAT_CLASSID,&MAT_GetBrowsOfAocols);CHKERRQ(ierr); ierr = PetscLogEventRegister("MatApplyPAPt_Symbolic",MAT_CLASSID,&MAT_Applypapt_symbolic);CHKERRQ(ierr); ierr = PetscLogEventRegister("MatApplyPAPt_Numeric",MAT_CLASSID,&MAT_Applypapt_numeric);CHKERRQ(ierr); ierr = PetscLogEventRegister("MatApplyPAPt",MAT_CLASSID,&MAT_Applypapt);CHKERRQ(ierr); ierr = PetscLogEventRegister("MatGetSymTrans",MAT_CLASSID,&MAT_Getsymtranspose);CHKERRQ(ierr); ierr = PetscLogEventRegister("MatGetSymTransR",MAT_CLASSID,&MAT_Getsymtransreduced);CHKERRQ(ierr); ierr = PetscLogEventRegister("MatTranspose_SeqAIJ_FAST",MAT_CLASSID,&MAT_Transpose_SeqAIJ);CHKERRQ(ierr); ierr = PetscLogEventRegister("MatCUSPCopyTo",MAT_CLASSID,&MAT_CUSPCopyToGPU);CHKERRQ(ierr); ierr = PetscLogEventRegister("MatCUSPARSECopyTo",MAT_CLASSID,&MAT_CUSPARSECopyToGPU);CHKERRQ(ierr); ierr = PetscLogEventRegister("MatViennaCLCopyTo",MAT_CLASSID,&MAT_ViennaCLCopyToGPU);CHKERRQ(ierr); ierr = PetscLogEventRegister("MatSetValBatch",MAT_CLASSID,&MAT_SetValuesBatch);CHKERRQ(ierr); ierr = PetscLogEventRegister("MatSetValBatch1",MAT_CLASSID,&MAT_SetValuesBatchI);CHKERRQ(ierr); ierr = PetscLogEventRegister("MatSetValBatch2",MAT_CLASSID,&MAT_SetValuesBatchII);CHKERRQ(ierr); ierr = PetscLogEventRegister("MatSetValBatch3",MAT_CLASSID,&MAT_SetValuesBatchIII);CHKERRQ(ierr); ierr = PetscLogEventRegister("MatSetValBatch4",MAT_CLASSID,&MAT_SetValuesBatchIV);CHKERRQ(ierr); ierr = PetscLogEventRegister("MatColoringApply",MAT_COLORING_CLASSID,&Mat_Coloring_Apply);CHKERRQ(ierr); ierr = PetscLogEventRegister("MatColoringComm",MAT_COLORING_CLASSID,&Mat_Coloring_Comm);CHKERRQ(ierr); ierr = PetscLogEventRegister("MatColoringLocal",MAT_COLORING_CLASSID,&Mat_Coloring_Local);CHKERRQ(ierr); ierr = PetscLogEventRegister("MatColoringIS",MAT_COLORING_CLASSID,&Mat_Coloring_ISCreate);CHKERRQ(ierr); ierr = PetscLogEventRegister("MatColoringSetUp",MAT_COLORING_CLASSID,&Mat_Coloring_SetUp);CHKERRQ(ierr); ierr = PetscLogEventRegister("MatColoringWeights",MAT_COLORING_CLASSID,&Mat_Coloring_Weights);CHKERRQ(ierr); /* Turn off high traffic events by default */ ierr = PetscLogEventSetActiveAll(MAT_SetValues, PETSC_FALSE);CHKERRQ(ierr); /* Process info exclusions */ ierr = PetscOptionsGetString(NULL, "-info_exclude", logList, 256, &opt);CHKERRQ(ierr); if (opt) { ierr = PetscStrstr(logList, "mat", &className);CHKERRQ(ierr); if (className) { ierr = PetscInfoDeactivateClass(MAT_CLASSID);CHKERRQ(ierr); } } /* Process summary exclusions */ ierr = PetscOptionsGetString(NULL, "-log_summary_exclude", logList, 256, &opt);CHKERRQ(ierr); if (opt) { ierr = PetscStrstr(logList, "mat", &className);CHKERRQ(ierr); if (className) { ierr = PetscLogEventDeactivateClass(MAT_CLASSID);CHKERRQ(ierr); } } /* Register the external package factorization based solvers Eventually we don't want to have these hardwired here at compile time of PETSc */ #if defined(PETSC_HAVE_MUMPS) ierr = MatSolverPackageRegister_MUMPS();CHKERRQ(ierr); #endif #if defined(PETSC_HAVE_CUSP) ierr = MatSolverPackageRegister_CUSPARSE();CHKERRQ(ierr); #endif #if defined(PETSC_HAVE_ELEMENTAL) ierr = MatSolverPackageRegister_Elemental();CHKERRQ(ierr); #endif #if defined(PETSC_HAVE_MATLAB_ENGINE) ierr = MatSolverPackageRegister_Matlab();CHKERRQ(ierr); #endif #if defined(PETSC_HAVE_PETSC_HAVE_ESSL) && !defined(PETSC_USE_COMPLEX) && !defined(PETSC_USE_REAL_SINGLE) && !defined(PETSC_USE_REAL___FLOAT128) ierr = MatSolverPackageRegister_Essl();CHKERRQ(ierr); #endif #if defined(PETSC_HAVE_SUPERLU) ierr = MatSolverPackageRegister_SuperLU();CHKERRQ(ierr); #endif #if defined(PETSC_HAVE_PASTIX) ierr = MatSolverPackageRegister_Pastix();CHKERRQ(ierr); #endif #if defined(PETSC_HAVE_SUPERLU_DIST) ierr = MatSolverPackageRegister_SuperLU_DIST();CHKERRQ(ierr); #endif #if defined(PETSC_HAVE_CLIQUE) ierr = MatSolverPackageRegister_Clique();CHKERRQ(ierr); #endif #if defined(PETSC_HAVE_MKL_PARDISO) ierr = MatSolverPackageRegister_MKL_Pardiso();CHKERRQ(ierr); #endif #if defined(PETSC_HAVE_MKL_CPARDISO) ierr = MatSolverPackageRegister_MKL_CPardiso();CHKERRQ(ierr); #endif #if defined(PETSC_HAVE_SUITESPARSE) ierr = MatSolverPackageRegister_SuiteSparse();CHKERRQ(ierr); #endif #if defined(PETSC_HAVE_LUSOL) ierr = MatSolverPackageRegister_Lusol();CHKERRQ(ierr); #endif #if defined(PETSC_HAVE_CLIQUE) ierr = MatSolverPackageRegister_Clique();CHKERRQ(ierr); #endif /* Register the PETSc built in factorization based solvers */ ierr = MatSolverPackageRegister(MATSOLVERBAS, MATSEQAIJ, MAT_FACTOR_ICC,MatGetFactor_seqaij_bas);CHKERRQ(ierr); ierr = MatSolverPackageRegister(MATSOLVERPETSC, MATSEQAIJ, MAT_FACTOR_LU,MatGetFactor_seqaij_petsc);CHKERRQ(ierr); ierr = MatSolverPackageRegister(MATSOLVERPETSC, MATSEQAIJ, MAT_FACTOR_CHOLESKY,MatGetFactor_seqaij_petsc);CHKERRQ(ierr); ierr = MatSolverPackageRegister(MATSOLVERPETSC, MATSEQAIJ, MAT_FACTOR_ILU,MatGetFactor_seqaij_petsc);CHKERRQ(ierr); ierr = MatSolverPackageRegister(MATSOLVERPETSC, MATSEQAIJ, MAT_FACTOR_ICC,MatGetFactor_seqaij_petsc);CHKERRQ(ierr); ierr = MatSolverPackageRegister(MATSOLVERPETSC, MATSEQAIJPERM, MAT_FACTOR_LU,MatGetFactor_seqaij_petsc);CHKERRQ(ierr); ierr = MatSolverPackageRegister(MATSOLVERPETSC, MATSEQAIJPERM, MAT_FACTOR_CHOLESKY,MatGetFactor_seqaij_petsc);CHKERRQ(ierr); ierr = MatSolverPackageRegister(MATSOLVERPETSC, MATSEQAIJPERM, MAT_FACTOR_ILU,MatGetFactor_seqaij_petsc);CHKERRQ(ierr); ierr = MatSolverPackageRegister(MATSOLVERPETSC, MATSEQAIJPERM, MAT_FACTOR_ICC,MatGetFactor_seqaij_petsc);CHKERRQ(ierr); ierr = MatSolverPackageRegister(MATSOLVERPETSC, MATSEQAIJCRL, MAT_FACTOR_LU,MatGetFactor_seqaij_petsc);CHKERRQ(ierr); ierr = MatSolverPackageRegister(MATSOLVERPETSC, MATSEQAIJCRL, MAT_FACTOR_CHOLESKY,MatGetFactor_seqaij_petsc);CHKERRQ(ierr); ierr = MatSolverPackageRegister(MATSOLVERPETSC, MATSEQAIJCRL, MAT_FACTOR_ILU,MatGetFactor_seqaij_petsc);CHKERRQ(ierr); ierr = MatSolverPackageRegister(MATSOLVERPETSC, MATSEQAIJCRL, MAT_FACTOR_ICC,MatGetFactor_seqaij_petsc);CHKERRQ(ierr); ierr = MatSolverPackageRegister(MATSOLVERPETSC, MATSEQBAIJ, MAT_FACTOR_LU,MatGetFactor_seqbaij_petsc);CHKERRQ(ierr); ierr = MatSolverPackageRegister(MATSOLVERPETSC, MATSEQBAIJ, MAT_FACTOR_CHOLESKY,MatGetFactor_seqbaij_petsc);CHKERRQ(ierr); ierr = MatSolverPackageRegister(MATSOLVERPETSC, MATSEQBAIJ, MAT_FACTOR_ILU,MatGetFactor_seqbaij_petsc);CHKERRQ(ierr); ierr = MatSolverPackageRegister(MATSOLVERPETSC, MATSEQBAIJ, MAT_FACTOR_ICC,MatGetFactor_seqbaij_petsc);CHKERRQ(ierr); ierr = MatSolverPackageRegister(MATSOLVERBSTRM, MATSEQBAIJ, MAT_FACTOR_LU,MatGetFactor_seqbaij_bstrm);CHKERRQ(ierr); ierr = MatSolverPackageRegister(MATSOLVERBSTRM, MATSEQBAIJ, MAT_FACTOR_ILU,MatGetFactor_seqbaij_bstrm);CHKERRQ(ierr); ierr = MatSolverPackageRegister(MATSOLVERSBSTRM,MATSEQSBAIJ, MAT_FACTOR_CHOLESKY,MatGetFactor_seqsbaij_sbstrm);CHKERRQ(ierr); ierr = MatSolverPackageRegister(MATSOLVERSBSTRM,MATSEQSBAIJ, MAT_FACTOR_ICC,MatGetFactor_seqsbaij_sbstrm);CHKERRQ(ierr); ierr = MatSolverPackageRegister(MATSOLVERPETSC, MATSEQSBAIJ, MAT_FACTOR_CHOLESKY,MatGetFactor_seqsbaij_petsc);CHKERRQ(ierr); ierr = MatSolverPackageRegister(MATSOLVERPETSC, MATSEQSBAIJ, MAT_FACTOR_ICC,MatGetFactor_seqsbaij_petsc);CHKERRQ(ierr); ierr = MatSolverPackageRegister(MATSOLVERPETSC, MATSEQDENSE, MAT_FACTOR_LU,MatGetFactor_seqdense_petsc);CHKERRQ(ierr); ierr = MatSolverPackageRegister(MATSOLVERPETSC, MATSEQDENSE, MAT_FACTOR_CHOLESKY,MatGetFactor_seqdense_petsc);CHKERRQ(ierr); ierr = PetscRegisterFinalize(MatFinalizePackage);CHKERRQ(ierr); PetscFunctionReturn(0); }
/*@C VecInitializePackage - This function initializes everything in the Vec package. It is called from PetscDLLibraryRegister() when using dynamic libraries, and on the first call to VecCreate() when using static libraries. Level: developer .keywords: Vec, initialize, package .seealso: PetscInitialize() @*/ PetscErrorCode VecInitializePackage(void) { char logList[256]; char *className; PetscBool opt; PetscErrorCode ierr; PetscInt i; PetscFunctionBegin; if (VecPackageInitialized) PetscFunctionReturn(0); VecPackageInitialized = PETSC_TRUE; /* Register Classes */ ierr = PetscClassIdRegister("Vector",&VEC_CLASSID);CHKERRQ(ierr); ierr = PetscClassIdRegister("Vector Scatter",&VEC_SCATTER_CLASSID);CHKERRQ(ierr); /* Register Constructors */ ierr = VecRegisterAll();CHKERRQ(ierr); /* Register Events */ ierr = PetscLogEventRegister("VecView", VEC_CLASSID,&VEC_View);CHKERRQ(ierr); ierr = PetscLogEventRegister("VecMax", VEC_CLASSID,&VEC_Max);CHKERRQ(ierr); ierr = PetscLogEventRegister("VecMin", VEC_CLASSID,&VEC_Min);CHKERRQ(ierr); ierr = PetscLogEventRegister("VecDotBarrier", VEC_CLASSID,&VEC_DotBarrier);CHKERRQ(ierr); ierr = PetscLogEventRegister("VecDot", VEC_CLASSID,&VEC_Dot);CHKERRQ(ierr); ierr = PetscLogEventRegister("VecDotNormBarr", VEC_CLASSID,&VEC_DotNormBarrier);CHKERRQ(ierr); ierr = PetscLogEventRegister("VecDotNorm2", VEC_CLASSID,&VEC_DotNorm);CHKERRQ(ierr); ierr = PetscLogEventRegister("VecMDotBarrier", VEC_CLASSID,&VEC_MDotBarrier);CHKERRQ(ierr); ierr = PetscLogEventRegister("VecMDot", VEC_CLASSID,&VEC_MDot);CHKERRQ(ierr); ierr = PetscLogEventRegister("VecTDot", VEC_CLASSID,&VEC_TDot);CHKERRQ(ierr); ierr = PetscLogEventRegister("VecMTDot", VEC_CLASSID,&VEC_MTDot);CHKERRQ(ierr); ierr = PetscLogEventRegister("VecNormBarrier", VEC_CLASSID,&VEC_NormBarrier);CHKERRQ(ierr); ierr = PetscLogEventRegister("VecNorm", VEC_CLASSID,&VEC_Norm);CHKERRQ(ierr); ierr = PetscLogEventRegister("VecScale", VEC_CLASSID,&VEC_Scale);CHKERRQ(ierr); ierr = PetscLogEventRegister("VecCopy", VEC_CLASSID,&VEC_Copy);CHKERRQ(ierr); ierr = PetscLogEventRegister("VecSet", VEC_CLASSID,&VEC_Set);CHKERRQ(ierr); ierr = PetscLogEventRegister("VecAXPY", VEC_CLASSID,&VEC_AXPY);CHKERRQ(ierr); ierr = PetscLogEventRegister("VecAYPX", VEC_CLASSID,&VEC_AYPX);CHKERRQ(ierr); ierr = PetscLogEventRegister("VecAXPBYCZ", VEC_CLASSID,&VEC_AXPBYPCZ);CHKERRQ(ierr); ierr = PetscLogEventRegister("VecWAXPY", VEC_CLASSID,&VEC_WAXPY);CHKERRQ(ierr); ierr = PetscLogEventRegister("VecMAXPY", VEC_CLASSID,&VEC_MAXPY);CHKERRQ(ierr); ierr = PetscLogEventRegister("VecSwap", VEC_CLASSID,&VEC_Swap);CHKERRQ(ierr); ierr = PetscLogEventRegister("VecOps", VEC_CLASSID,&VEC_Ops);CHKERRQ(ierr); ierr = PetscLogEventRegister("VecAssemblyBegin", VEC_CLASSID,&VEC_AssemblyBegin);CHKERRQ(ierr); ierr = PetscLogEventRegister("VecAssemblyEnd", VEC_CLASSID,&VEC_AssemblyEnd);CHKERRQ(ierr); ierr = PetscLogEventRegister("VecPointwiseMult", VEC_CLASSID,&VEC_PointwiseMult);CHKERRQ(ierr); ierr = PetscLogEventRegister("VecSetValues", VEC_CLASSID,&VEC_SetValues);CHKERRQ(ierr); ierr = PetscLogEventRegister("VecLoad", VEC_CLASSID,&VEC_Load);CHKERRQ(ierr); ierr = PetscLogEventRegister("VecScatterBarrie", VEC_CLASSID,&VEC_ScatterBarrier);CHKERRQ(ierr); ierr = PetscLogEventRegister("VecScatterBegin", VEC_CLASSID,&VEC_ScatterBegin);CHKERRQ(ierr); ierr = PetscLogEventRegister("VecScatterEnd", VEC_CLASSID,&VEC_ScatterEnd);CHKERRQ(ierr); ierr = PetscLogEventRegister("VecSetRandom", VEC_CLASSID,&VEC_SetRandom);CHKERRQ(ierr); ierr = PetscLogEventRegister("VecReduceArith", VEC_CLASSID,&VEC_ReduceArithmetic);CHKERRQ(ierr); ierr = PetscLogEventRegister("VecReduceBarrier", VEC_CLASSID,&VEC_ReduceBarrier);CHKERRQ(ierr); ierr = PetscLogEventRegister("VecReduceComm", VEC_CLASSID,&VEC_ReduceCommunication);CHKERRQ(ierr); /* must follow barrier */ ierr = PetscLogEventRegister("VecReduceBegin", VEC_CLASSID,&VEC_ReduceBegin);CHKERRQ(ierr); ierr = PetscLogEventRegister("VecReduceEnd", VEC_CLASSID,&VEC_ReduceEnd);CHKERRQ(ierr); ierr = PetscLogEventRegister("VecNormalize", VEC_CLASSID,&VEC_Normalize);CHKERRQ(ierr); #if defined(PETSC_HAVE_CUSP) ierr = PetscLogEventRegister("VecCUSPCopyTo", VEC_CLASSID,&VEC_CUSPCopyToGPU);CHKERRQ(ierr); ierr = PetscLogEventRegister("VecCUSPCopyFrom", VEC_CLASSID,&VEC_CUSPCopyFromGPU);CHKERRQ(ierr); ierr = PetscLogEventRegister("VecCopyToSome", VEC_CLASSID,&VEC_CUSPCopyToGPUSome);CHKERRQ(ierr); ierr = PetscLogEventRegister("VecCopyFromSome", VEC_CLASSID,&VEC_CUSPCopyFromGPUSome);CHKERRQ(ierr); #endif #if defined(PETSC_HAVE_VIENNACL) ierr = PetscLogEventRegister("VecViennaCLCopyTo", VEC_CLASSID,&VEC_ViennaCLCopyToGPU);CHKERRQ(ierr); ierr = PetscLogEventRegister("VecViennaCLCopyFrom", VEC_CLASSID,&VEC_ViennaCLCopyFromGPU);CHKERRQ(ierr); #endif /* Turn off high traffic events by default */ ierr = PetscLogEventSetActiveAll(VEC_DotBarrier, PETSC_FALSE);CHKERRQ(ierr); ierr = PetscLogEventSetActiveAll(VEC_DotNormBarrier, PETSC_FALSE);CHKERRQ(ierr); ierr = PetscLogEventSetActiveAll(VEC_MDotBarrier, PETSC_FALSE);CHKERRQ(ierr); ierr = PetscLogEventSetActiveAll(VEC_NormBarrier, PETSC_FALSE);CHKERRQ(ierr); ierr = PetscLogEventSetActiveAll(VEC_SetValues, PETSC_FALSE);CHKERRQ(ierr); ierr = PetscLogEventSetActiveAll(VEC_ScatterBarrier, PETSC_FALSE);CHKERRQ(ierr); ierr = PetscLogEventSetActiveAll(VEC_ReduceBarrier, PETSC_FALSE);CHKERRQ(ierr); /* Process info exclusions */ ierr = PetscOptionsGetString(NULL, "-info_exclude", logList, 256, &opt);CHKERRQ(ierr); if (opt) { ierr = PetscStrstr(logList, "vec", &className);CHKERRQ(ierr); if (className) { ierr = PetscInfoDeactivateClass(VEC_CLASSID);CHKERRQ(ierr); } } /* Process summary exclusions */ ierr = PetscOptionsGetString(NULL, "-log_summary_exclude", logList, 256, &opt);CHKERRQ(ierr); if (opt) { ierr = PetscStrstr(logList, "vec", &className);CHKERRQ(ierr); if (className) { ierr = PetscLogEventDeactivateClass(VEC_CLASSID);CHKERRQ(ierr); } } /* Special processing */ opt = PETSC_FALSE; ierr = PetscOptionsGetBool(NULL, "-log_sync", &opt,NULL);CHKERRQ(ierr); if (opt) { ierr = PetscLogEventSetActiveAll(VEC_ScatterBarrier, PETSC_TRUE);CHKERRQ(ierr); ierr = PetscLogEventSetActiveAll(VEC_NormBarrier, PETSC_TRUE);CHKERRQ(ierr); ierr = PetscLogEventSetActiveAll(VEC_DotBarrier, PETSC_TRUE);CHKERRQ(ierr); ierr = PetscLogEventSetActiveAll(VEC_DotNormBarrier, PETSC_TRUE);CHKERRQ(ierr); ierr = PetscLogEventSetActiveAll(VEC_MDotBarrier, PETSC_TRUE);CHKERRQ(ierr); ierr = PetscLogEventSetActiveAll(VEC_ReduceBarrier, PETSC_TRUE);CHKERRQ(ierr); } /* Create the special MPI reduction operation that may be used by VecNorm/DotBegin() */ ierr = MPI_Op_create(PetscSplitReduction_Local,1,&PetscSplitReduction_Op);CHKERRQ(ierr); ierr = MPI_Op_create(VecMax_Local,2,&VecMax_Local_Op);CHKERRQ(ierr); ierr = MPI_Op_create(VecMin_Local,2,&VecMin_Local_Op);CHKERRQ(ierr); /* Register the different norm types for cached norms */ for (i=0; i<4; i++) { ierr = PetscObjectComposedDataRegister(NormIds+i);CHKERRQ(ierr); } /* Register finalization routine */ ierr = PetscRegisterFinalize(VecFinalizePackage);CHKERRQ(ierr); PetscFunctionReturn(0); }
PetscErrorCode PetscOptionsCheckInitial_Private(void) { char string[64],mname[PETSC_MAX_PATH_LEN],*f; MPI_Comm comm = PETSC_COMM_WORLD; PetscBool flg1 = PETSC_FALSE,flg2 = PETSC_FALSE,flg3 = PETSC_FALSE,flag; PetscErrorCode ierr; PetscReal si; PetscInt intensity; int i; PetscMPIInt rank; char version[256]; #if !defined(PETSC_HAVE_THREADSAFETY) PetscReal logthreshold; #endif #if defined(PETSC_USE_LOG) PetscViewerFormat format; PetscBool flg4 = PETSC_FALSE; #endif PetscFunctionBegin; ierr = MPI_Comm_rank(PETSC_COMM_WORLD,&rank);CHKERRQ(ierr); #if !defined(PETSC_HAVE_THREADSAFETY) /* Setup the memory management; support for tracing malloc() usage */ ierr = PetscOptionsHasName(NULL,"-malloc_log",&flg3);CHKERRQ(ierr); logthreshold = 0.0; ierr = PetscOptionsGetReal(NULL,"-malloc_log_threshold",&logthreshold,&flg1);CHKERRQ(ierr); if (flg1) flg3 = PETSC_TRUE; #if defined(PETSC_USE_DEBUG) ierr = PetscOptionsGetBool(NULL,"-malloc",&flg1,&flg2);CHKERRQ(ierr); if ((!flg2 || flg1) && !petscsetmallocvisited) { if (flg2 || !(PETSC_RUNNING_ON_VALGRIND)) { /* turn off default -malloc if valgrind is being used */ ierr = PetscSetUseTrMalloc_Private();CHKERRQ(ierr); } } #else ierr = PetscOptionsGetBool(NULL,"-malloc_dump",&flg1,NULL);CHKERRQ(ierr); ierr = PetscOptionsGetBool(NULL,"-malloc",&flg2,NULL);CHKERRQ(ierr); if (flg1 || flg2 || flg3) {ierr = PetscSetUseTrMalloc_Private();CHKERRQ(ierr);} #endif if (flg3) { ierr = PetscMallocSetDumpLogThreshold((PetscLogDouble)logthreshold);CHKERRQ(ierr); } flg1 = PETSC_FALSE; ierr = PetscOptionsGetBool(NULL,"-malloc_debug",&flg1,NULL);CHKERRQ(ierr); if (flg1) { ierr = PetscSetUseTrMalloc_Private();CHKERRQ(ierr); ierr = PetscMallocDebug(PETSC_TRUE);CHKERRQ(ierr); } flg1 = PETSC_FALSE; ierr = PetscOptionsGetBool(NULL,"-malloc_test",&flg1,NULL);CHKERRQ(ierr); #if defined(PETSC_USE_DEBUG) if (flg1 && !PETSC_RUNNING_ON_VALGRIND) { ierr = PetscSetUseTrMalloc_Private();CHKERRQ(ierr); ierr = PetscMallocSetDumpLog();CHKERRQ(ierr); ierr = PetscMallocDebug(PETSC_TRUE);CHKERRQ(ierr); } #endif flg1 = PETSC_FALSE; ierr = PetscOptionsGetBool(NULL,"-malloc_info",&flg1,NULL);CHKERRQ(ierr); if (!flg1) { flg1 = PETSC_FALSE; ierr = PetscOptionsGetBool(NULL,"-memory_view",&flg1,NULL);CHKERRQ(ierr); } if (flg1) { ierr = PetscMemorySetGetMaximumUsage();CHKERRQ(ierr); } #endif #if defined(PETSC_USE_LOG) ierr = PetscOptionsHasName(NULL,"-objects_dump",&PetscObjectsLog);CHKERRQ(ierr); #endif /* Set the display variable for graphics */ ierr = PetscSetDisplay();CHKERRQ(ierr); /* Print the PETSc version information */ ierr = PetscOptionsHasName(NULL,"-v",&flg1);CHKERRQ(ierr); ierr = PetscOptionsHasName(NULL,"-version",&flg2);CHKERRQ(ierr); ierr = PetscOptionsHasName(NULL,"-help",&flg3);CHKERRQ(ierr); if (flg1 || flg2 || flg3) { /* Print "higher-level" package version message */ if (PetscExternalVersionFunction) { ierr = (*PetscExternalVersionFunction)(comm);CHKERRQ(ierr); } ierr = PetscGetVersion(version,256);CHKERRQ(ierr); ierr = (*PetscHelpPrintf)(comm,"--------------------------------------------\ ------------------------------\n");CHKERRQ(ierr); ierr = (*PetscHelpPrintf)(comm,"%s\n",version);CHKERRQ(ierr); ierr = (*PetscHelpPrintf)(comm,"%s",PETSC_AUTHOR_INFO);CHKERRQ(ierr); ierr = (*PetscHelpPrintf)(comm,"See docs/changes/index.html for recent updates.\n");CHKERRQ(ierr); ierr = (*PetscHelpPrintf)(comm,"See docs/faq.html for problems.\n");CHKERRQ(ierr); ierr = (*PetscHelpPrintf)(comm,"See docs/manualpages/index.html for help. \n");CHKERRQ(ierr); ierr = (*PetscHelpPrintf)(comm,"Libraries linked from %s\n",PETSC_LIB_DIR);CHKERRQ(ierr); ierr = (*PetscHelpPrintf)(comm,"--------------------------------------------\ ------------------------------\n");CHKERRQ(ierr); } /* Print "higher-level" package help message */ if (flg3) { if (PetscExternalHelpFunction) { ierr = (*PetscExternalHelpFunction)(comm);CHKERRQ(ierr); } } /* Setup the error handling */ flg1 = PETSC_FALSE; ierr = PetscOptionsGetBool(NULL,"-on_error_abort",&flg1,NULL);CHKERRQ(ierr); if (flg1) { ierr = MPI_Comm_set_errhandler(PETSC_COMM_WORLD,MPI_ERRORS_ARE_FATAL);CHKERRQ(ierr); ierr = PetscPushErrorHandler(PetscAbortErrorHandler,0);CHKERRQ(ierr); } flg1 = PETSC_FALSE; ierr = PetscOptionsGetBool(NULL,"-on_error_mpiabort",&flg1,NULL);CHKERRQ(ierr); if (flg1) { ierr = PetscPushErrorHandler(PetscMPIAbortErrorHandler,0);CHKERRQ(ierr);} flg1 = PETSC_FALSE; ierr = PetscOptionsGetBool(NULL,"-mpi_return_on_error",&flg1,NULL);CHKERRQ(ierr); if (flg1) { ierr = MPI_Comm_set_errhandler(comm,MPI_ERRORS_RETURN);CHKERRQ(ierr); } flg1 = PETSC_FALSE; ierr = PetscOptionsGetBool(NULL,"-no_signal_handler",&flg1,NULL);CHKERRQ(ierr); if (!flg1) {ierr = PetscPushSignalHandler(PetscSignalHandlerDefault,(void*)0);CHKERRQ(ierr);} flg1 = PETSC_FALSE; ierr = PetscOptionsGetBool(NULL,"-fp_trap",&flg1,NULL);CHKERRQ(ierr); if (flg1) {ierr = PetscSetFPTrap(PETSC_FP_TRAP_ON);CHKERRQ(ierr);} ierr = PetscOptionsGetInt(NULL,"-check_pointer_intensity",&intensity,&flag);CHKERRQ(ierr); if (flag) {ierr = PetscCheckPointerSetIntensity(intensity);CHKERRQ(ierr);} /* Setup debugger information */ ierr = PetscSetDefaultDebugger();CHKERRQ(ierr); ierr = PetscOptionsGetString(NULL,"-on_error_attach_debugger",string,64,&flg1);CHKERRQ(ierr); if (flg1) { MPI_Errhandler err_handler; ierr = PetscSetDebuggerFromString(string);CHKERRQ(ierr); ierr = MPI_Comm_create_errhandler((MPI_Handler_function*)Petsc_MPI_DebuggerOnError,&err_handler);CHKERRQ(ierr); ierr = MPI_Comm_set_errhandler(comm,err_handler);CHKERRQ(ierr); ierr = PetscPushErrorHandler(PetscAttachDebuggerErrorHandler,0);CHKERRQ(ierr); } ierr = PetscOptionsGetString(NULL,"-debug_terminal",string,64,&flg1);CHKERRQ(ierr); if (flg1) { ierr = PetscSetDebugTerminal(string);CHKERRQ(ierr); } ierr = PetscOptionsGetString(NULL,"-start_in_debugger",string,64,&flg1);CHKERRQ(ierr); ierr = PetscOptionsGetString(NULL,"-stop_for_debugger",string,64,&flg2);CHKERRQ(ierr); if (flg1 || flg2) { PetscMPIInt size; PetscInt lsize,*nodes; MPI_Errhandler err_handler; /* we have to make sure that all processors have opened connections to all other processors, otherwise once the debugger has stated it is likely to receive a SIGUSR1 and kill the program. */ ierr = MPI_Comm_size(PETSC_COMM_WORLD,&size);CHKERRQ(ierr); if (size > 2) { PetscMPIInt dummy = 0; MPI_Status status; for (i=0; i<size; i++) { if (rank != i) { ierr = MPI_Send(&dummy,1,MPI_INT,i,109,PETSC_COMM_WORLD);CHKERRQ(ierr); } } for (i=0; i<size; i++) { if (rank != i) { ierr = MPI_Recv(&dummy,1,MPI_INT,i,109,PETSC_COMM_WORLD,&status);CHKERRQ(ierr); } } } /* check if this processor node should be in debugger */ ierr = PetscMalloc1(size,&nodes);CHKERRQ(ierr); lsize = size; ierr = PetscOptionsGetIntArray(NULL,"-debugger_nodes",nodes,&lsize,&flag);CHKERRQ(ierr); if (flag) { for (i=0; i<lsize; i++) { if (nodes[i] == rank) { flag = PETSC_FALSE; break; } } } if (!flag) { ierr = PetscSetDebuggerFromString(string);CHKERRQ(ierr); ierr = PetscPushErrorHandler(PetscAbortErrorHandler,0);CHKERRQ(ierr); if (flg1) { ierr = PetscAttachDebugger();CHKERRQ(ierr); } else { ierr = PetscStopForDebugger();CHKERRQ(ierr); } ierr = MPI_Comm_create_errhandler((MPI_Handler_function*)Petsc_MPI_AbortOnError,&err_handler);CHKERRQ(ierr); ierr = MPI_Comm_set_errhandler(comm,err_handler);CHKERRQ(ierr); } ierr = PetscFree(nodes);CHKERRQ(ierr); } ierr = PetscOptionsGetString(NULL,"-on_error_emacs",emacsmachinename,128,&flg1);CHKERRQ(ierr); if (flg1 && !rank) {ierr = PetscPushErrorHandler(PetscEmacsClientErrorHandler,emacsmachinename);CHKERRQ(ierr);} /* Setup profiling and logging */ #if defined(PETSC_USE_INFO) { char logname[PETSC_MAX_PATH_LEN]; logname[0] = 0; ierr = PetscOptionsGetString(NULL,"-info",logname,250,&flg1);CHKERRQ(ierr); if (flg1 && logname[0]) { ierr = PetscInfoAllow(PETSC_TRUE,logname);CHKERRQ(ierr); } else if (flg1) { ierr = PetscInfoAllow(PETSC_TRUE,NULL);CHKERRQ(ierr); } } #endif #if defined(PETSC_USE_LOG) mname[0] = 0; ierr = PetscOptionsGetString(NULL,"-history",mname,PETSC_MAX_PATH_LEN,&flg1);CHKERRQ(ierr); if (flg1) { if (mname[0]) { ierr = PetscOpenHistoryFile(mname,&petsc_history);CHKERRQ(ierr); } else { ierr = PetscOpenHistoryFile(NULL,&petsc_history);CHKERRQ(ierr); } } #if defined(PETSC_HAVE_MPE) flg1 = PETSC_FALSE; ierr = PetscOptionsHasName(NULL,"-log_mpe",&flg1);CHKERRQ(ierr); if (flg1) {ierr = PetscLogMPEBegin();CHKERRQ(ierr);} #endif flg1 = PETSC_FALSE; flg3 = PETSC_FALSE; ierr = PetscOptionsGetBool(NULL,"-log_all",&flg1,NULL);CHKERRQ(ierr); ierr = PetscOptionsHasName(NULL,"-log_summary",&flg3);CHKERRQ(ierr); if (flg1) { ierr = PetscLogAllBegin();CHKERRQ(ierr); } else if (flg3) { ierr = PetscLogDefaultBegin();CHKERRQ(ierr);} ierr = PetscOptionsGetString(NULL,"-log_trace",mname,250,&flg1);CHKERRQ(ierr); if (flg1) { char name[PETSC_MAX_PATH_LEN],fname[PETSC_MAX_PATH_LEN]; FILE *file; if (mname[0]) { sprintf(name,"%s.%d",mname,rank); ierr = PetscFixFilename(name,fname);CHKERRQ(ierr); file = fopen(fname,"w"); if (!file) SETERRQ1(PETSC_COMM_SELF,PETSC_ERR_FILE_OPEN,"Unable to open trace file: %s",fname); } else file = PETSC_STDOUT; ierr = PetscLogTraceBegin(file);CHKERRQ(ierr); } ierr = PetscOptionsGetViewer(PETSC_COMM_WORLD,NULL,"-log_view",NULL,&format,&flg4);CHKERRQ(ierr); if (flg4) { if (format == PETSC_VIEWER_ASCII_XML){ ierr = PetscLogNestedBegin();CHKERRQ(ierr); } else { ierr = PetscLogDefaultBegin();CHKERRQ(ierr); } } #endif ierr = PetscOptionsGetBool(NULL,"-saws_options",&PetscOptionsPublish,NULL);CHKERRQ(ierr); #if defined(PETSC_HAVE_CUDA) ierr = PetscOptionsHasName(NULL,"-cuda_show_devices",&flg1);CHKERRQ(ierr); if (flg1) { struct cudaDeviceProp prop; int devCount; int device; cudaError_t err = cudaSuccess; err = cudaGetDeviceCount(&devCount); if (err != cudaSuccess) SETERRQ1(PETSC_COMM_SELF,PETSC_ERR_SYS,"error in cudaGetDeviceCount %s",cudaGetErrorString(err)); for (device = 0; device < devCount; ++device) { err = cudaGetDeviceProperties(&prop, device); if (err != cudaSuccess) SETERRQ1(PETSC_COMM_SELF,PETSC_ERR_SYS,"error in cudaGetDeviceProperties %s",cudaGetErrorString(err)); ierr = PetscPrintf(PETSC_COMM_WORLD, "CUDA device %d: %s\n", device, prop.name);CHKERRQ(ierr); } } { int size; ierr = MPI_Comm_size(PETSC_COMM_WORLD,&size);CHKERRQ(ierr); if (size>1) { int devCount, device, rank; cudaError_t err = cudaSuccess; /* check to see if we force multiple ranks to hit the same GPU */ ierr = PetscOptionsGetInt(NULL,"-cuda_set_device", &device, &flg1);CHKERRQ(ierr); if (flg1) { err = cudaSetDevice(device); if (err != cudaSuccess) SETERRQ1(PETSC_COMM_SELF,PETSC_ERR_SYS,"error in cudaSetDevice %s",cudaGetErrorString(err)); } else { /* we're not using the same GPU on multiple MPI threads. So try to allocated different GPUs to different processes */ /* First get the device count */ err = cudaGetDeviceCount(&devCount); if (err != cudaSuccess) SETERRQ1(PETSC_COMM_SELF,PETSC_ERR_SYS,"error in cudaGetDeviceCount %s",cudaGetErrorString(err)); /* next determine the rank and then set the device via a mod */ ierr = MPI_Comm_rank(PETSC_COMM_WORLD,&rank);CHKERRQ(ierr); device = rank % devCount; err = cudaSetDevice(device); if (err != cudaSuccess) SETERRQ1(PETSC_COMM_SELF,PETSC_ERR_SYS,"error in cudaSetDevice %s",cudaGetErrorString(err)); } /* set the device flags so that it can map host memory ... do NOT throw exception on err!=cudaSuccess multiple devices may try to set the flags on the same device. So long as one of them succeeds, things are ok. */ err = cudaSetDeviceFlags(cudaDeviceMapHost); if (err != cudaSuccess) SETERRQ1(PETSC_COMM_SELF,PETSC_ERR_SYS,"error in cudaSetDeviceFlags %s",cudaGetErrorString(err)); } else { int device; cudaError_t err = cudaSuccess; /* the code below works for serial GPU simulations */ ierr = PetscOptionsGetInt(NULL,"-cuda_set_device", &device, &flg1);CHKERRQ(ierr); if (flg1) { err = cudaSetDevice(device); if (err != cudaSuccess) SETERRQ1(PETSC_COMM_SELF,PETSC_ERR_SYS,"error in cudaSetDevice %s",cudaGetErrorString(err)); } /* set the device flags so that it can map host memory ... here, we error check. */ err = cudaSetDeviceFlags(cudaDeviceMapHost); if (err != cudaSuccess) SETERRQ1(PETSC_COMM_SELF,PETSC_ERR_SYS,"error in cudaSetDeviceFlags %s",cudaGetErrorString(err)); } } #endif /* Print basic help message */ ierr = PetscOptionsHasName(NULL,"-help",&flg1);CHKERRQ(ierr); if (flg1) { ierr = (*PetscHelpPrintf)(comm,"Options for all PETSc programs:\n");CHKERRQ(ierr); ierr = (*PetscHelpPrintf)(comm," -help: prints help method for each option\n");CHKERRQ(ierr); ierr = (*PetscHelpPrintf)(comm," -on_error_abort: cause an abort when an error is detected. Useful \n ");CHKERRQ(ierr); ierr = (*PetscHelpPrintf)(comm," only when run in the debugger\n");CHKERRQ(ierr); ierr = (*PetscHelpPrintf)(comm," -on_error_attach_debugger [gdb,dbx,xxgdb,ups,noxterm]\n");CHKERRQ(ierr); ierr = (*PetscHelpPrintf)(comm," start the debugger in new xterm\n");CHKERRQ(ierr); ierr = (*PetscHelpPrintf)(comm," unless noxterm is given\n");CHKERRQ(ierr); ierr = (*PetscHelpPrintf)(comm," -start_in_debugger [gdb,dbx,xxgdb,ups,noxterm]\n");CHKERRQ(ierr); ierr = (*PetscHelpPrintf)(comm," start all processes in the debugger\n");CHKERRQ(ierr); ierr = (*PetscHelpPrintf)(comm," -on_error_emacs <machinename>\n");CHKERRQ(ierr); ierr = (*PetscHelpPrintf)(comm," emacs jumps to error file\n");CHKERRQ(ierr); ierr = (*PetscHelpPrintf)(comm," -debugger_nodes [n1,n2,..] Nodes to start in debugger\n");CHKERRQ(ierr); ierr = (*PetscHelpPrintf)(comm," -debugger_pause [m] : delay (in seconds) to attach debugger\n");CHKERRQ(ierr); ierr = (*PetscHelpPrintf)(comm," -stop_for_debugger : prints message on how to attach debugger manually\n");CHKERRQ(ierr); ierr = (*PetscHelpPrintf)(comm," waits the delay for you to attach\n");CHKERRQ(ierr); ierr = (*PetscHelpPrintf)(comm," -display display: Location where X window graphics and debuggers are displayed\n");CHKERRQ(ierr); ierr = (*PetscHelpPrintf)(comm," -no_signal_handler: do not trap error signals\n");CHKERRQ(ierr); ierr = (*PetscHelpPrintf)(comm," -mpi_return_on_error: MPI returns error code, rather than abort on internal error\n");CHKERRQ(ierr); ierr = (*PetscHelpPrintf)(comm," -fp_trap: stop on floating point exceptions\n");CHKERRQ(ierr); ierr = (*PetscHelpPrintf)(comm," note on IBM RS6000 this slows run greatly\n");CHKERRQ(ierr); ierr = (*PetscHelpPrintf)(comm," -malloc_dump <optional filename>: dump list of unfreed memory at conclusion\n");CHKERRQ(ierr); ierr = (*PetscHelpPrintf)(comm," -malloc: use our error checking malloc\n");CHKERRQ(ierr); ierr = (*PetscHelpPrintf)(comm," -malloc no: don't use error checking malloc\n");CHKERRQ(ierr); ierr = (*PetscHelpPrintf)(comm," -malloc_info: prints total memory usage\n");CHKERRQ(ierr); ierr = (*PetscHelpPrintf)(comm," -malloc_log: keeps log of all memory allocations\n");CHKERRQ(ierr); ierr = (*PetscHelpPrintf)(comm," -malloc_debug: enables extended checking for memory corruption\n");CHKERRQ(ierr); ierr = (*PetscHelpPrintf)(comm," -options_table: dump list of options inputted\n");CHKERRQ(ierr); ierr = (*PetscHelpPrintf)(comm," -options_left: dump list of unused options\n");CHKERRQ(ierr); ierr = (*PetscHelpPrintf)(comm," -options_left no: don't dump list of unused options\n");CHKERRQ(ierr); ierr = (*PetscHelpPrintf)(comm," -tmp tmpdir: alternative /tmp directory\n");CHKERRQ(ierr); ierr = (*PetscHelpPrintf)(comm," -shared_tmp: tmp directory is shared by all processors\n");CHKERRQ(ierr); ierr = (*PetscHelpPrintf)(comm," -not_shared_tmp: each processor has separate tmp directory\n");CHKERRQ(ierr); ierr = (*PetscHelpPrintf)(comm," -memory_view: print memory usage at end of run\n");CHKERRQ(ierr); #if defined(PETSC_USE_LOG) ierr = (*PetscHelpPrintf)(comm," -get_total_flops: total flops over all processors\n");CHKERRQ(ierr); ierr = (*PetscHelpPrintf)(comm," -log[_summary _summary_python]: logging objects and events\n");CHKERRQ(ierr); ierr = (*PetscHelpPrintf)(comm," -log_trace [filename]: prints trace of all PETSc calls\n");CHKERRQ(ierr); #if defined(PETSC_HAVE_MPE) ierr = (*PetscHelpPrintf)(comm," -log_mpe: Also create logfile viewable through Jumpshot\n");CHKERRQ(ierr); #endif ierr = (*PetscHelpPrintf)(comm," -info <optional filename>: print informative messages about the calculations\n");CHKERRQ(ierr); #endif ierr = (*PetscHelpPrintf)(comm," -v: prints PETSc version number and release date\n");CHKERRQ(ierr); ierr = (*PetscHelpPrintf)(comm," -options_file <file>: reads options from file\n");CHKERRQ(ierr); ierr = (*PetscHelpPrintf)(comm," -petsc_sleep n: sleeps n seconds before running program\n");CHKERRQ(ierr); ierr = (*PetscHelpPrintf)(comm,"-----------------------------------------------\n");CHKERRQ(ierr); } #if defined(PETSC_HAVE_POPEN) { char machine[128]; ierr = PetscOptionsGetString(NULL,"-popen_machine",machine,128,&flg1);CHKERRQ(ierr); if (flg1) { ierr = PetscPOpenSetMachine(machine);CHKERRQ(ierr); } } #endif ierr = PetscOptionsGetReal(NULL,"-petsc_sleep",&si,&flg1);CHKERRQ(ierr); if (flg1) { ierr = PetscSleep(si);CHKERRQ(ierr); } ierr = PetscOptionsGetString(NULL,"-info_exclude",mname,PETSC_MAX_PATH_LEN,&flg1);CHKERRQ(ierr); if (flg1) { ierr = PetscStrstr(mname,"null",&f);CHKERRQ(ierr); if (f) { ierr = PetscInfoDeactivateClass(0);CHKERRQ(ierr); } } #if defined(PETSC_HAVE_CUSP) || defined(PETSC_HAVE_VIENNACL) ierr = PetscOptionsHasName(NULL,"-log_summary",&flg3);CHKERRQ(ierr); if (!flg3) { ierr = PetscOptionsHasName(NULL,"-log_view",&flg3);CHKERRQ(ierr); } #endif #if defined(PETSC_HAVE_CUSP) ierr = PetscOptionsGetBool(NULL,"-cusp_synchronize",&flg3,NULL);CHKERRQ(ierr); PetscCUSPSynchronize = flg3; #elif defined(PETSC_HAVE_VIENNACL) ierr = PetscOptionsGetBool(NULL,"-viennacl_synchronize",&flg3,NULL);CHKERRQ(ierr); PetscViennaCLSynchronize = flg3; #endif PetscFunctionReturn(0); }
/*@C DMInitializePackage - This function initializes everything in the DM package. It is called from PetscDLLibraryRegister_petscdm() when using dynamic libraries, and on the first call to AOCreate() or DMDACreate() when using shared or static libraries. Level: developer .keywords: AO, initialize, package .seealso: PetscInitialize() @*/ PetscErrorCode DMInitializePackage(void) { char logList[256]; PetscBool opt,pkg; PetscErrorCode ierr; PetscFunctionBegin; if (DMPackageInitialized) PetscFunctionReturn(0); DMPackageInitialized = PETSC_TRUE; /* Register Classes */ ierr = PetscClassIdRegister("Distributed Mesh",&DM_CLASSID);CHKERRQ(ierr); ierr = PetscClassIdRegister("DM Label",&DMLABEL_CLASSID);CHKERRQ(ierr); ierr = PetscClassIdRegister("GraphPartitioner",&PETSCPARTITIONER_CLASSID);CHKERRQ(ierr); #if defined(PETSC_HAVE_HYPRE) ierr = MatRegister(MATHYPRESTRUCT, MatCreate_HYPREStruct);CHKERRQ(ierr); ierr = MatRegister(MATHYPRESSTRUCT, MatCreate_HYPRESStruct);CHKERRQ(ierr); #endif ierr = PetscSectionSymRegister(PETSCSECTIONSYMLABEL,PetscSectionSymCreate_Label);CHKERRQ(ierr); /* Register Constructors */ ierr = DMRegisterAll();CHKERRQ(ierr); /* Register Events */ ierr = PetscLogEventRegister("DMConvert", DM_CLASSID,&DM_Convert);CHKERRQ(ierr); ierr = PetscLogEventRegister("DMGlobalToLocal", DM_CLASSID,&DM_GlobalToLocal);CHKERRQ(ierr); ierr = PetscLogEventRegister("DMLocalToGlobal", DM_CLASSID,&DM_LocalToGlobal);CHKERRQ(ierr); ierr = PetscLogEventRegister("DMLocatePoints", DM_CLASSID,&DM_LocatePoints);CHKERRQ(ierr); ierr = PetscLogEventRegister("DMCoarsen", DM_CLASSID,&DM_Coarsen);CHKERRQ(ierr); ierr = PetscLogEventRegister("DMCreateInterp", DM_CLASSID,&DM_CreateInterpolation);CHKERRQ(ierr); ierr = PetscLogEventRegister("DMCreateRestrict", DM_CLASSID,&DM_CreateRestriction);CHKERRQ(ierr); ierr = PetscLogEventRegister("Mesh Partition", DM_CLASSID,&DMPLEX_Partition);CHKERRQ(ierr); ierr = PetscLogEventRegister("Mesh Migration", DM_CLASSID,&DMPLEX_Migrate);CHKERRQ(ierr); ierr = PetscLogEventRegister("DMPlexInterp", DM_CLASSID,&DMPLEX_Interpolate);CHKERRQ(ierr); ierr = PetscLogEventRegister("DMPlexDistribute", DM_CLASSID,&DMPLEX_Distribute);CHKERRQ(ierr); ierr = PetscLogEventRegister("DMPlexDistCones", DM_CLASSID,&DMPLEX_DistributeCones);CHKERRQ(ierr); ierr = PetscLogEventRegister("DMPlexDistLabels", DM_CLASSID,&DMPLEX_DistributeLabels);CHKERRQ(ierr); ierr = PetscLogEventRegister("DMPlexDistSF", DM_CLASSID,&DMPLEX_DistributeSF);CHKERRQ(ierr); ierr = PetscLogEventRegister("DMPlexDistOvrlp", DM_CLASSID,&DMPLEX_DistributeOverlap);CHKERRQ(ierr); ierr = PetscLogEventRegister("DMPlexDistField", DM_CLASSID,&DMPLEX_DistributeField);CHKERRQ(ierr); ierr = PetscLogEventRegister("DMPlexDistData", DM_CLASSID,&DMPLEX_DistributeData);CHKERRQ(ierr); ierr = PetscLogEventRegister("DMPlexInterpSF", DM_CLASSID,&DMPLEX_InterpolateSF);CHKERRQ(ierr); ierr = PetscLogEventRegister("DMPlexGToNBegin", DM_CLASSID,&DMPLEX_GlobalToNaturalBegin);CHKERRQ(ierr); ierr = PetscLogEventRegister("DMPlexGToNEnd", DM_CLASSID,&DMPLEX_GlobalToNaturalEnd);CHKERRQ(ierr); ierr = PetscLogEventRegister("DMPlexNToGBegin", DM_CLASSID,&DMPLEX_NaturalToGlobalBegin);CHKERRQ(ierr); ierr = PetscLogEventRegister("DMPlexNToGEnd", DM_CLASSID,&DMPLEX_NaturalToGlobalEnd);CHKERRQ(ierr); ierr = PetscLogEventRegister("DMPlexStratify", DM_CLASSID,&DMPLEX_Stratify);CHKERRQ(ierr); ierr = PetscLogEventRegister("DMPlexPrealloc", DM_CLASSID,&DMPLEX_Preallocate);CHKERRQ(ierr); ierr = PetscLogEventRegister("DMPlexResidualFE", DM_CLASSID,&DMPLEX_ResidualFEM);CHKERRQ(ierr); ierr = PetscLogEventRegister("DMPlexJacobianFE", DM_CLASSID,&DMPLEX_JacobianFEM);CHKERRQ(ierr); ierr = PetscLogEventRegister("DMPlexInterpFE", DM_CLASSID,&DMPLEX_InterpolatorFEM);CHKERRQ(ierr); ierr = PetscLogEventRegister("DMPlexInjectorFE", DM_CLASSID,&DMPLEX_InjectorFEM);CHKERRQ(ierr); ierr = PetscLogEventRegister("DMPlexIntegralFEM", DM_CLASSID,&DMPLEX_IntegralFEM);CHKERRQ(ierr); ierr = PetscLogEventRegister("DMPlexCreateGmsh", DM_CLASSID,&DMPLEX_CreateGmsh);CHKERRQ(ierr); ierr = PetscLogEventRegister("DMSwarmMigrate", DM_CLASSID,&DMSWARM_Migrate);CHKERRQ(ierr); ierr = PetscLogEventRegister("DMSwarmDETSetup", DM_CLASSID,&DMSWARM_DataExchangerTopologySetup);CHKERRQ(ierr); ierr = PetscLogEventRegister("DMSwarmDExBegin", DM_CLASSID,&DMSWARM_DataExchangerBegin);CHKERRQ(ierr); ierr = PetscLogEventRegister("DMSwarmDExEnd", DM_CLASSID,&DMSWARM_DataExchangerEnd);CHKERRQ(ierr); ierr = PetscLogEventRegister("DMSwarmDESendCnt", DM_CLASSID,&DMSWARM_DataExchangerSendCount);CHKERRQ(ierr); ierr = PetscLogEventRegister("DMSwarmDEPack", DM_CLASSID,&DMSWARM_DataExchangerPack);CHKERRQ(ierr); ierr = PetscLogEventRegister("DMSwarmAddPnts", DM_CLASSID,&DMSWARM_AddPoints);CHKERRQ(ierr); ierr = PetscLogEventRegister("DMSwarmRmvPnts", DM_CLASSID,&DMSWARM_RemovePoints);CHKERRQ(ierr); ierr = PetscLogEventRegister("DMSwarmSort", DM_CLASSID,&DMSWARM_Sort);CHKERRQ(ierr); ierr = PetscLogEventRegister("DMSwarmSetSizes", DM_CLASSID,&DMSWARM_SetSizes);CHKERRQ(ierr); /* Process info exclusions */ ierr = PetscOptionsGetString(NULL,NULL,"-info_exclude",logList,sizeof(logList),&opt);CHKERRQ(ierr); if (opt) { ierr = PetscStrInList("dm",logList,',',&pkg);CHKERRQ(ierr); if (pkg) {ierr = PetscInfoDeactivateClass(DM_CLASSID);CHKERRQ(ierr);} } /* Process summary exclusions */ ierr = PetscOptionsGetString(NULL,NULL,"-log_exclude",logList,sizeof(logList),&opt);CHKERRQ(ierr); if (opt) { ierr = PetscStrInList("dm",logList,',',&pkg);CHKERRQ(ierr); if (pkg) {ierr = PetscLogEventExcludeClass(DM_CLASSID);CHKERRQ(ierr);} } ierr = DMPlexGenerateRegisterAll();CHKERRQ(ierr); ierr = PetscRegisterFinalize(DMPlexGenerateRegisterDestroy);CHKERRQ(ierr); ierr = PetscRegisterFinalize(DMFinalizePackage);CHKERRQ(ierr); PetscFunctionReturn(0); }
/*@C DMInitializePackage - This function initializes everything in the DM package. It is called from PetscDLLibraryRegister() when using dynamic libraries, and on the first call to AOCreate() or DMDACreate() when using static libraries. Level: developer .keywords: AO, initialize, package .seealso: PetscInitialize() @*/ PetscErrorCode DMInitializePackage(void) { char logList[256]; char *className; PetscBool opt; PetscErrorCode ierr; PetscFunctionBegin; if (DMPackageInitialized) PetscFunctionReturn(0); DMPackageInitialized = PETSC_TRUE; /* Register Classes */ ierr = PetscClassIdRegister("Distributed Mesh",&DM_CLASSID);CHKERRQ(ierr); ierr = PetscClassIdRegister("GraphPartitioner",&PETSCPARTITIONER_CLASSID);CHKERRQ(ierr); #if defined(PETSC_HAVE_HYPRE) ierr = MatRegister(MATHYPRESTRUCT, MatCreate_HYPREStruct);CHKERRQ(ierr); #endif ierr = PetscSectionSymRegister(PETSCSECTIONSYMLABEL,PetscSectionSymCreate_Label);CHKERRQ(ierr); /* Register Constructors */ ierr = DMRegisterAll();CHKERRQ(ierr); /* Register Events */ ierr = PetscLogEventRegister("DMConvert", DM_CLASSID,&DM_Convert);CHKERRQ(ierr); ierr = PetscLogEventRegister("DMGlobalToLocal", DM_CLASSID,&DM_GlobalToLocal);CHKERRQ(ierr); ierr = PetscLogEventRegister("DMLocalToGlobal", DM_CLASSID,&DM_LocalToGlobal);CHKERRQ(ierr); ierr = PetscLogEventRegister("DMLocatePoints", DM_CLASSID,&DM_LocatePoints);CHKERRQ(ierr); ierr = PetscLogEventRegister("DMCoarsen", DM_CLASSID,&DM_Coarsen);CHKERRQ(ierr); ierr = PetscLogEventRegister("DMCreateInterp", DM_CLASSID,&DM_CreateInterpolation);CHKERRQ(ierr); ierr = PetscLogEventRegister("DMCreateRestrict", DM_CLASSID,&DM_CreateRestriction);CHKERRQ(ierr); ierr = PetscLogEventRegister("DMDALocalADFunc", DM_CLASSID,&DMDA_LocalADFunction);CHKERRQ(ierr); ierr = PetscLogEventRegister("Mesh Partition", PETSCPARTITIONER_CLASSID,&PETSCPARTITIONER_Partition);CHKERRQ(ierr); ierr = PetscLogEventRegister("Mesh Migration", DM_CLASSID,&DMPLEX_Migrate);CHKERRQ(ierr); ierr = PetscLogEventRegister("DMPlexInterp", DM_CLASSID,&DMPLEX_Interpolate);CHKERRQ(ierr); ierr = PetscLogEventRegister("DMPlexDistribute", DM_CLASSID,&DMPLEX_Distribute);CHKERRQ(ierr); ierr = PetscLogEventRegister("DMPlexDistCones", DM_CLASSID,&DMPLEX_DistributeCones);CHKERRQ(ierr); ierr = PetscLogEventRegister("DMPlexDistLabels", DM_CLASSID,&DMPLEX_DistributeLabels);CHKERRQ(ierr); ierr = PetscLogEventRegister("DMPlexDistribSF", DM_CLASSID,&DMPLEX_DistributeSF);CHKERRQ(ierr); ierr = PetscLogEventRegister("DMPlexDistribOL", DM_CLASSID,&DMPLEX_DistributeOverlap);CHKERRQ(ierr); ierr = PetscLogEventRegister("DMPlexDistField", DM_CLASSID,&DMPLEX_DistributeField);CHKERRQ(ierr); ierr = PetscLogEventRegister("DMPlexDistData", DM_CLASSID,&DMPLEX_DistributeData);CHKERRQ(ierr); ierr = PetscLogEventRegister("DMPlexInterpSF", DM_CLASSID,&DMPLEX_InterpolateSF);CHKERRQ(ierr); ierr = PetscLogEventRegister("DMPlexGToNBegin", DM_CLASSID,&DMPLEX_GlobalToNaturalBegin);CHKERRQ(ierr); ierr = PetscLogEventRegister("DMPlexGToNEnd", DM_CLASSID,&DMPLEX_GlobalToNaturalEnd);CHKERRQ(ierr); ierr = PetscLogEventRegister("DMPlexNToGBegin", DM_CLASSID,&DMPLEX_NaturalToGlobalBegin);CHKERRQ(ierr); ierr = PetscLogEventRegister("DMPlexNToGEnd", DM_CLASSID,&DMPLEX_NaturalToGlobalEnd);CHKERRQ(ierr); ierr = PetscLogEventRegister("DMPlexStratify", DM_CLASSID,&DMPLEX_Stratify);CHKERRQ(ierr); ierr = PetscLogEventRegister("DMPlexPrealloc", DM_CLASSID,&DMPLEX_Preallocate);CHKERRQ(ierr); ierr = PetscLogEventRegister("DMPlexResidualFE", DM_CLASSID,&DMPLEX_ResidualFEM);CHKERRQ(ierr); ierr = PetscLogEventRegister("DMPlexJacobianFE", DM_CLASSID,&DMPLEX_JacobianFEM);CHKERRQ(ierr); ierr = PetscLogEventRegister("DMPlexInterpFE", DM_CLASSID,&DMPLEX_InterpolatorFEM);CHKERRQ(ierr); ierr = PetscLogEventRegister("DMPlexInjectorFE", DM_CLASSID,&DMPLEX_InjectorFEM);CHKERRQ(ierr); ierr = PetscLogEventRegister("DMPlexIntegralFEM", DM_CLASSID,&DMPLEX_IntegralFEM);CHKERRQ(ierr); ierr = PetscLogEventRegister("DMPlexCreateGmsh", DM_CLASSID,&DMPLEX_CreateGmsh);CHKERRQ(ierr); /* Process info exclusions */ ierr = PetscOptionsGetString(NULL,NULL, "-info_exclude", logList, 256, &opt);CHKERRQ(ierr); if (opt) { ierr = PetscStrstr(logList, "da", &className);CHKERRQ(ierr); if (className) { ierr = PetscInfoDeactivateClass(DM_CLASSID);CHKERRQ(ierr); } } /* Process summary exclusions */ ierr = PetscOptionsGetString(NULL,NULL, "-log_exclude", logList, 256, &opt);CHKERRQ(ierr); if (opt) { ierr = PetscStrstr(logList, "da", &className);CHKERRQ(ierr); if (className) { ierr = PetscLogEventDeactivateClass(DM_CLASSID);CHKERRQ(ierr); } } ierr = PetscRegisterFinalize(DMFinalizePackage);CHKERRQ(ierr); PetscFunctionReturn(0); }