Changes: Development#
General:
Change behavior of
-options_leftwhen set totrue: it no longer triggers a call toPetscOptionsView()Change \(PETSC_DIR/lib/petsc/bin/petscfreesharedmemory to \)PETSC_DIR/lib/petsc/bin/petscfreesharedmemory.sh
Configure/Build:
Make
SYCLadevicePackage, i.e., builds--with-syclnow havePETSC_HAVE_DEVICEdefinedAdd the option
--with-devicelanguageto compilePetscDevicecode using either a C or C++ compilerAdd
Caliper, an instrumentation and performance profiling library that can be used to profileHypre.Add typing stubs for the Python extension module
petsc4py.PETSc.
Sys:
Add
PetscCallHYPRE()to check HYPRE error codes and print error messages on failureAdd
PetscBTCountSet()to count set bits inPetscBT
Event Logging:
Add two approaches for GPU energy monitoring:
-log_view_gpu_energyand-log_view_gpu_energy_meterAdd API
PetscLogGpuEnergy(),PetscLogGpuEnergyMeter(),PetscLogGpuEnergyMeterBegin()andPetscLogGpuEnergyMeterEnd()for GPU energy monitoring
PetscViewer:
Change the final argument of
PetscViewerGLVisSetFields()toPetscCtxDestroyFn *. This means the destroy function must dereference the argument before operating on it
PetscDraw:
AO:
IS:
VecScatter / PetscSF:
PF:
Vec:
PetscSection:
Add
PetscSectionMigrateData(), akin toDMPlexDistributeData()
PetscPartitioner:
Mat:
Change the
destroy()function argument ofMatShellSetMatProductOperation()to typePetscCtxDestroyFn *. This means the destroy function must dereference the argument before operating on itRemove
MatMissingDiagonal(). Developers should useMatGetDiagonalMarkers_SeqXXX()when the functionality is neededChange
MatSetOption(A, MAT_HERMITIAN, PETSC_TRUE)forMatSBAIJto no longer automatically set the optionMAT_SYMMETRICtoPETSC_FALSE. It is now the duty of the user to callMatSetOption(A, MAT_SYMMETRIC, PETSC_FALSE)if aMatSBAIJis Hermitian but not symmetricDeprecate
-matmatmult_Bbnin favor of-matproduct_batch_size
MatCoarsen:
PC:
Add multi-precision support for MUMPS. One could use
-pc_precision <single, double>to set the precision to be used by MUMPS, which can be different fromPetscScalar’s precisionAdd support for MUMPS out-of-core facility with the option
-mat_mumps_ooc_tmpdir <dir>and new functionsMatMumpsSetOocTmpDir(),MatMumpsGetOocTmpDir()
KSP:
Remove
KSPHPDDMPrecisionin favor ofPetscPrecision
SNES:
Change the
destroy()function argument ofSNESSetConvergenceTest()to typePetscCtxDestroyFn *. This means the destroy function must dereference the argument before operating on itChange
SNES_DIVERGED_FNORM_NANtoSNES_DIVERGED_FUNCTION_NANORINFAdd developer functions
SNESCheckFunctionDomainError(),SNESLineSearchCheckFunctionDomainError(),SNESCheckObjectiveDomainError(),SNESLineSearchCheckObjectiveDomainError(),SNESCheckJacobianDomainError(), andSNESLineSearchCheckJacobianDomainError()
SNESLineSearch:
TS:
Add
TSPseudoComputeFunction()to get nonlinear residual while avoiding recalculation if possibleRemove unused
TSPseudoVerifyTimeStepDefault()Remove
TSPseudoComputeTimeStep()andTSPseudoVerifyTimeStep()Change the
destroy()function argument ofTSTrajectorySetTransform()to typePetscCtxDestroyFn *. This means the destroy function must dereference the argument before operating on itCorrect option
-ts_max_rejectto-ts_max_step_rejectionsCorrect option
-ts_dtto-ts_time_step
TAO:
PetscRegressor:
DM/DA:
Change the final argument of
DMShellSetDestroyContext()toPetscCtxDestroyFn *. This means the destroy function must dereference the argument before operating on itAdd
DMLabelGetValueISGlobal()to get globally consistentISof values in aDMLabel
DMSwarm:
DMPlex:
Add an extra communicator argument to
DMPlexFilter()to allow extracting local meshesAdd
DMPlexGetLETKFLocalizationMatrixto compute localization weight matrix for LETKFChange
verticesAdjSavedparameter inDMPlexCreateFromCell*Parallel*()functions to be allocated by function rather than by user
FE/FV:
DMNetwork:
DMStag:
DT:
Fortran:
Replace
./configureoption--with-mpi-f90module-visibilitywith--with-mpi-ftn-module=<mpi or mpi_f08>Add
PETSC_INT_KINDandPETSC_MPIINT_KINDFortran code should now use
MPIU_Comminstead ofMPI_Comm, and similarly for other MPI types, see section “Fortran and MPI” in the users guideFortran interface definitions are now automatically generated for all functions that take context variable arguments, represented in the C source code with a type of
PetscCtx, allowing the use of any Fortran derived type (or PETSc object) as the contextFor all PETSc functions
XXXGetYYY()that return a context variable as an argument, represented in the C source code with an argument type ofPetscCtxRt, a macro is generated used withInterface_XXXGetYYY(AppCtx)which tells the Fortran compiler that a pointer to that derived typetype(AppCtx)is returned from the Fortran version ofXXXGetYYY(). See src/snes/tutorials/ex5f90.F90`