/*@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]; char *className; PetscBool opt; 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, 256, &opt);CHKERRQ(ierr); if (opt) { ierr = PetscStrstr(logList, "ds", &className);CHKERRQ(ierr); if (className) {ierr = PetscInfoDeactivateClass(PETSCDS_CLASSID);CHKERRQ(ierr);} } /* Process summary exclusions */ ierr = PetscOptionsGetString(NULL,NULL, "-log_exclude", logList, 256, &opt);CHKERRQ(ierr); if (opt) { ierr = PetscStrstr(logList, "ds", &className);CHKERRQ(ierr); if (className) {ierr = PetscLogEventDeactivateClass(PETSCDS_CLASSID);CHKERRQ(ierr);} } ierr = PetscRegisterFinalize(PetscDSFinalizePackage);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 PetscSetDebuggerFromString - Set the complete path for the debugger for PETSc to use. Not collective Level: developer .seealso: PetscSetDebugger(), PetscSetDefaultDebugger() @*/ PetscErrorCode PetscSetDebuggerFromString(const char *string) { const char *debugger = NULL; PetscBool xterm = PETSC_TRUE; char *f; PetscErrorCode ierr; PetscFunctionBegin; ierr = PetscStrstr(string, "noxterm", &f);CHKERRQ(ierr); if (f) xterm = PETSC_FALSE; ierr = PetscStrstr(string, "ddd", &f);CHKERRQ(ierr); if (f) xterm = PETSC_FALSE; ierr = PetscCheckDebugger_Private("xdb", string, &debugger);CHKERRQ(ierr); ierr = PetscCheckDebugger_Private("dbx", string, &debugger);CHKERRQ(ierr); ierr = PetscCheckDebugger_Private("xldb", string, &debugger);CHKERRQ(ierr); ierr = PetscCheckDebugger_Private("gdb", string, &debugger);CHKERRQ(ierr); ierr = PetscCheckDebugger_Private("idb", string, &debugger);CHKERRQ(ierr); ierr = PetscCheckDebugger_Private("xxgdb", string, &debugger);CHKERRQ(ierr); ierr = PetscCheckDebugger_Private("ddd", string, &debugger);CHKERRQ(ierr); ierr = PetscCheckDebugger_Private("kdbg", string, &debugger);CHKERRQ(ierr); ierr = PetscCheckDebugger_Private("ups", string, &debugger);CHKERRQ(ierr); ierr = PetscCheckDebugger_Private("workshop", string, &debugger);CHKERRQ(ierr); ierr = PetscCheckDebugger_Private("pgdbg", string, &debugger);CHKERRQ(ierr); ierr = PetscCheckDebugger_Private("pathdb", string, &debugger);CHKERRQ(ierr); ierr = PetscCheckDebugger_Private("lldb", string, &debugger);CHKERRQ(ierr); ierr = PetscSetDebugger(debugger, xterm);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 PetscObjectsDump - Prints the currently existing objects. Logically Collective on PetscViewer Input Parameter: + fd - file pointer - all - by default only tries to display objects created explicitly by the user, if all is PETSC_TRUE then lists all outstanding objects Options Database: . -objects_dump <all> Level: advanced Concepts: options database^printing @*/ PetscErrorCode PetscObjectsDump(FILE *fd,PetscBool all) { PetscErrorCode ierr; PetscInt i; #if defined(PETSC_USE_DEBUG) PetscInt j,k=0; #endif PetscObject h; PetscFunctionBegin; if (PetscObjectsCounts) { ierr = PetscFPrintf(PETSC_COMM_WORLD,fd,"The following objects were never freed\n");CHKERRQ(ierr); ierr = PetscFPrintf(PETSC_COMM_WORLD,fd,"-----------------------------------------\n");CHKERRQ(ierr); for (i=0; i<PetscObjectsMaxCounts; i++) { if ((h = PetscObjects[i])) { ierr = PetscObjectName(h);CHKERRQ(ierr); { #if defined(PETSC_USE_DEBUG) PetscStack *stack = 0; char *create,*rclass; /* if the PETSc function the user calls is not a create then this object was NOT directly created by them */ ierr = PetscMallocGetStack(h,&stack);CHKERRQ(ierr); if (stack) { k = stack->currentsize-2; if (!all) { k = 0; while (!stack->petscroutine[k]) k++; ierr = PetscStrstr(stack->function[k],"Create",&create);CHKERRQ(ierr); if (!create) { ierr = PetscStrstr(stack->function[k],"Get",&create);CHKERRQ(ierr); } ierr = PetscStrstr(stack->function[k],h->class_name,&rclass);CHKERRQ(ierr); if (!create) continue; if (!rclass) continue; } } #endif ierr = PetscFPrintf(PETSC_COMM_WORLD,fd,"[%d] %s %s %s\n",PetscGlobalRank,h->class_name,h->type_name,h->name);CHKERRQ(ierr); #if defined(PETSC_USE_DEBUG) ierr = PetscMallocGetStack(h,&stack);CHKERRQ(ierr); if (stack) { for (j=k; j>=0; j--) { fprintf(fd," [%d] %s() in %s\n",PetscGlobalRank,stack->function[j],stack->file[j]); } } #endif } } } } 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 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); }
PetscErrorCode PetscViewerFileSetName_MPIIO(PetscViewer viewer,const char name[]) { PetscMPIInt rank; PetscErrorCode ierr; size_t len; PetscViewer_Binary *vbinary = (PetscViewer_Binary*)viewer->data; char *gz; PetscBool found; PetscFileMode type = vbinary->btype; PetscFunctionBegin; if (type == (PetscFileMode) -1) SETERRQ(PETSC_COMM_SELF,PETSC_ERR_ORDER,"Must call PetscViewerFileSetMode() before PetscViewerFileSetName()"); ierr = PetscViewerFileClose_MPIIO(viewer);CHKERRQ(ierr); ierr = PetscOptionsGetBool(((PetscObject)viewer)->prefix,"-viewer_binary_skip_info",&vbinary->skipinfo,NULL);CHKERRQ(ierr); ierr = PetscOptionsGetBool(((PetscObject)viewer)->prefix,"-viewer_binary_skip_options",&vbinary->skipoptions,NULL);CHKERRQ(ierr); ierr = MPI_Comm_rank(PetscObjectComm((PetscObject)viewer),&rank);CHKERRQ(ierr); ierr = PetscStrallocpy(name,&vbinary->filename);CHKERRQ(ierr); vbinary->storecompressed = PETSC_FALSE; /* only first processor opens file if writeable */ if (type == FILE_MODE_READ) { MPI_File_open(PetscObjectComm((PetscObject)viewer),vbinary->filename,MPI_MODE_RDONLY,MPI_INFO_NULL,&vbinary->mfdes);CHKERRQ(ierr); } else if (type == FILE_MODE_WRITE) { MPI_File_open(PetscObjectComm((PetscObject)viewer),vbinary->filename,MPI_MODE_WRONLY | MPI_MODE_CREATE,MPI_INFO_NULL,&vbinary->mfdes);CHKERRQ(ierr); } /* try to open info file: all processors open this file if read only Below is identical code to the code for Binary above, should be put in seperate routine */ if (!vbinary->skipinfo && (!rank || type == FILE_MODE_READ)) { char infoname[PETSC_MAX_PATH_LEN],iname[PETSC_MAX_PATH_LEN]; ierr = PetscStrcpy(infoname,name);CHKERRQ(ierr); /* remove .gz if it ends library name */ ierr = PetscStrstr(infoname,".gz",&gz);CHKERRQ(ierr); if (gz) { ierr = PetscStrlen(gz,&len);CHKERRQ(ierr); if (len == 3) *gz = 0; } ierr = PetscStrcat(infoname,".info");CHKERRQ(ierr); ierr = PetscFixFilename(infoname,iname);CHKERRQ(ierr); if (type == FILE_MODE_READ) { ierr = PetscFileRetrieve(PetscObjectComm((PetscObject)viewer),iname,infoname,PETSC_MAX_PATH_LEN,&found);CHKERRQ(ierr); ierr = PetscOptionsInsertFile(PetscObjectComm((PetscObject)viewer),infoname,PETSC_FALSE);CHKERRQ(ierr); } else { vbinary->fdes_info = fopen(infoname,"w"); if (!vbinary->fdes_info) SETERRQ1(PETSC_COMM_SELF,PETSC_ERR_FILE_OPEN,"Cannot open .info file %s for writing",infoname); } } #if defined(PETSC_USE_LOG) PetscLogObjectState((PetscObject)viewer,"File: %s",name); #endif 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 MatMFFDInitializePackage - This function initializes everything in the MatMFFD package. It is called from PetscDLLibraryRegister() when using dynamic libraries, and on the first call to MatCreate_MFFD() when using static libraries. Level: developer .keywords: Vec, initialize, package .seealso: PetscInitialize() @*/ PetscErrorCode MatMFFDInitializePackage(void) { char logList[256]; char *className; PetscBool opt; 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, "-info_exclude", logList, 256, &opt); CHKERRQ(ierr); if (opt) { ierr = PetscStrstr(logList, "matmffd", &className); CHKERRQ(ierr); if (className) { ierr = PetscInfoDeactivateClass(MATMFFD_CLASSID); CHKERRQ(ierr); } } /* Process summary exclusions */ ierr = PetscOptionsGetString(NULL, "-log_summary_exclude", logList, 256, &opt); CHKERRQ(ierr); if (opt) { ierr = PetscStrstr(logList, "matmffd", &className); CHKERRQ(ierr); if (className) { ierr = PetscLogEventDeactivateClass(MATMFFD_CLASSID); CHKERRQ(ierr); } } ierr = PetscRegisterFinalize(MatMFFDFinalizePackage); 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 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 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 PetscBoxUpload - Loads a file to the Box Drive This routine has not yet been written; it is just copied from Google Drive Not collective, only the first process in the MPI_Comm uploads the file Input Parameters: + comm - MPI communicator . access_token - obtained with PetscBoxRefresh(), pass NULL to have PETSc generate one - filename - file to upload; if you upload multiple times it will have different names each time on Box Drive Options Database: . -box_refresh_token XXX Usage Patterns: With PETSc option -box_refresh_token XXX given PetscBoxUpload(comm,NULL,filename); will upload file with no user interaction Without PETSc option -box_refresh_token XXX given PetscBoxUpload(comm,NULL,filename); for first use will prompt user to authorize access to Box Drive with their processor With PETSc option -box_refresh_token XXX given PetscBoxRefresh(comm,NULL,access_token,sizeof(access_token)); PetscBoxUpload(comm,access_token,filename); With refresh token entered in some way by the user PetscBoxRefresh(comm,refresh_token,access_token,sizeof(access_token)); PetscBoxUpload(comm,access_token,filename); PetscBoxAuthorize(comm,access_token,refresh_token,sizeof(access_token)); PetscBoxUpload(comm,access_token,filename); Level: intermediate .seealso: PetscURLShorten(), PetscBoxAuthorize(), PetscBoxRefresh() @*/ PetscErrorCode PetscBoxUpload(MPI_Comm comm,const char access_token[],const char filename[]) { SSL_CTX *ctx; SSL *ssl; int sock; PetscErrorCode ierr; char head[1024],buff[8*1024],*body,*title; PetscMPIInt rank; struct stat sb; size_t len,blen,rd; FILE *fd; PetscFunctionBegin; ierr = MPI_Comm_rank(comm,&rank);CHKERRQ(ierr); if (!rank) { ierr = PetscStrcpy(head,"Authorization: Bearer ");CHKERRQ(ierr); ierr = PetscStrcat(head,access_token);CHKERRQ(ierr); ierr = PetscStrcat(head,"\r\n");CHKERRQ(ierr); ierr = PetscStrcat(head,"uploadType: multipart\r\n");CHKERRQ(ierr); ierr = stat(filename,&sb); if (ierr) SETERRQ1(PETSC_COMM_SELF,PETSC_ERR_FILE_OPEN,"Unable to stat file: %s",filename); len = 1024 + sb.st_size; ierr = PetscMalloc1(len,&body);CHKERRQ(ierr); ierr = PetscStrcpy(body,"--foo_bar_baz\r\n" "Content-Type: application/json\r\n\r\n" "{");CHKERRQ(ierr); ierr = PetscPushJSONValue(body,"title",filename,len);CHKERRQ(ierr); ierr = PetscStrcat(body,",");CHKERRQ(ierr); ierr = PetscPushJSONValue(body,"mimeType","text.html",len);CHKERRQ(ierr); ierr = PetscStrcat(body,",");CHKERRQ(ierr); ierr = PetscPushJSONValue(body,"description","a file",len);CHKERRQ(ierr); ierr = PetscStrcat(body, "}\r\n\r\n" "--foo_bar_baz\r\n" "Content-Type: text/html\r\n\r\n");CHKERRQ(ierr); ierr = PetscStrlen(body,&blen);CHKERRQ(ierr); fd = fopen (filename, "r"); if (!fd) SETERRQ1(PETSC_COMM_SELF,PETSC_ERR_FILE_OPEN,"Unable to open file: %s",filename); rd = fread (body+blen, sizeof (unsigned char), sb.st_size, fd); if (rd != (size_t)sb.st_size) SETERRQ3(PETSC_COMM_SELF,PETSC_ERR_FILE_OPEN,"Unable to read entire file: %s %d %d",filename,(int)rd,(int)sb.st_size); fclose(fd); body[blen + rd] = 0; ierr = PetscStrcat(body,"\r\n\r\n" "--foo_bar_baz\r\n");CHKERRQ(ierr); ierr = PetscSSLInitializeContext(&ctx);CHKERRQ(ierr); ierr = PetscHTTPSConnect("www.boxapis.com",443,ctx,&sock,&ssl);CHKERRQ(ierr); ierr = PetscHTTPSRequest("POST","www.boxapis.com/upload/drive/v2/files/",head,"multipart/related; boundary=\"foo_bar_baz\"",body,ssl,buff,sizeof(buff));CHKERRQ(ierr); ierr = PetscFree(body);CHKERRQ(ierr); ierr = PetscSSLDestroyContext(ctx);CHKERRQ(ierr); close(sock); ierr = PetscStrstr(buff,"\"title\"",&title);CHKERRQ(ierr); if (!title) SETERRQ1(PETSC_COMM_SELF,PETSC_ERR_LIB,"Upload of file %s failed",filename); } 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); }
EXTERN_C_END #endif /* This function is called once during the initialize stage. It stashes the timestamp, and uses it when needed. This is so that error handlers may report the date without generating possible additional system errors during the call to get the date. */ #undef __FUNCT__ #define __FUNCT__ "PetscGetDate" /*@C PetscGetDate - Gets the current date. Not collective Input Parameter: . len - length of string to hold date Output Parameter: . date - the date Level: beginner This function DOES make a system call and thus SHOULD NOT be called from an error handler. @*/ PetscErrorCode PETSC_DLLEXPORT PetscGetDate(char date[],size_t len) { char *str=PETSC_NULL; #if defined(PETSC_HAVE_TIME) time_t aclock; #else struct timeval tp; #endif PetscErrorCode ierr; PetscFunctionBegin; #if defined(PETSC_HAVE_TIME) time(&aclock); ierr = PetscStrncpy(date,asctime(localtime(&aclock)),len);CHKERRQ(ierr); #else gettimeofday(&tp,(struct timezone *)0); ierr = PetscStrncpy(date,asctime(localtime((time_t*)&tp.tv_sec)),len);CHKERRQ(ierr); #endif /* now strip out the new-line chars at the end of the string */ ierr = PetscStrstr(date,"\n",&str);CHKERRQ(ierr); if (str) str[0] = 0; 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 PetscPullJSONValue - Given a JSON response containing the substring with "key" : "value" where there may or not be spaces around the : returns the value. Input Parameters: + buff - the char array containing the possible values . key - the key of the requested value - valuelen - the length of the array to contain the value associated with the key Output Parameters: + value - the value obtained - found - flag indicating if the value was found in the buff Level: advanced @*/ PetscErrorCode PetscPullJSONValue(const char buff[],const char key[],char value[],size_t valuelen,PetscBool *found) { PetscErrorCode ierr; char *v,*w; char work[256]; size_t len; PetscFunctionBegin; ierr = PetscStrcpy(work,"\"");CHKERRQ(ierr); ierr = PetscStrlcat(work,key,sizeof(work));CHKERRQ(ierr); ierr = PetscStrcat(work,"\":");CHKERRQ(ierr); ierr = PetscStrstr(buff,work,&v);CHKERRQ(ierr); ierr = PetscStrlen(work,&len);CHKERRQ(ierr); if (v) { v += len; } else { work[len++-1] = 0; ierr = PetscStrcat(work," :");CHKERRQ(ierr); ierr = PetscStrstr(buff,work,&v);CHKERRQ(ierr); if (!v) { *found = PETSC_FALSE; PetscFunctionReturn(0); } v += len; } ierr = PetscStrchr(v,'\"',&v);CHKERRQ(ierr); if (!v) { *found = PETSC_FALSE; PetscFunctionReturn(0); } ierr = PetscStrchr(v+1,'\"',&w);CHKERRQ(ierr); if (!w) { *found = PETSC_FALSE; PetscFunctionReturn(0); } *found = PETSC_TRUE; ierr = PetscStrncpy(value,v+1,PetscMin((size_t)(w-v),valuelen));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); }
/*@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 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); }
/* Removes all zeros but one from .0000 */ PetscErrorCode PetscStripe0(char *buf) { PetscErrorCode ierr; size_t n; PetscBool flg; char *str; PetscFunctionBegin; ierr = PetscStrlen(buf,&n);CHKERRQ(ierr); ierr = PetscStrendswith(buf,"e00",&flg);CHKERRQ(ierr); if (flg) buf[n-3] = 0; ierr = PetscStrstr(buf,"e0",&str);CHKERRQ(ierr); if (str) { buf[n-2] = buf[n-1]; buf[n-1] = 0; } ierr = PetscStrstr(buf,"e-0",&str);CHKERRQ(ierr); if (str) { buf[n-2] = buf[n-1]; buf[n-1] = 0; } 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); }
static PetscErrorCode PetscCheckDebugger_Private(const char defaultDbg[], const char string[], const char *debugger[]) { PetscBool exists; char *f; PetscErrorCode ierr; PetscFunctionBegin; ierr = PetscStrstr(string, defaultDbg, &f);CHKERRQ(ierr); if (f) { ierr = PetscTestFile(string, 'x', &exists);CHKERRQ(ierr); if (exists) *debugger = string; else *debugger = defaultDbg; } 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 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 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); }