Changes: 3.15#
General:
Add
PetscKokkosInitializeCheck()
, which initializes Kokkos if it is not yet initializedAdd support for
-debug_terminal
Terminal to use Apple’s Terminal instead of xterm, allowing use of cut-pasteMake Terminal the default device to display the debugger on Apple instead of xterm
Add PetscHasExternalPackage() determining whether PETSc has been configured with the given external package such as “hdf5”
Configure/Build:
On macOS,
MACOS_FIREWALL=1
orMACOS_FIREWALL_REFRESH=1
can be passed to make to automatically add firewall rules preventing firewall popups during testing. Seemake -f gmakefile.test help
for details./configure --with-macos-firewall-rules
makesMACOS_FIREWALL=1
the defaultChange
--download-petsc4py
to--with-petsc4py
to have PETSc build and use petsc4pyAdd
--download-mmg
and--download-parmmg
, 3D unstructured mesh adaptation package (interaction with DMPlex not available yet)Improve detection of Git repositories when a
--download-package
option is usedSupport
ssh://*.git
andhttps://*.git
URLs without the additionalgit://
prefixLocal directories can be specified without the
git://
prefix as wellAny valid Git repository (including bare and with
--separate-git-dir
) is now correctly detected
--download-yaml
or--with-yaml
are no longer required for YAML support (but can still be used to avoid compiling source included with PETSc)
Sys:
Add
PETSCRANDOMCURAND
to support CURAND random number generatorAdd
PetscRandomGetValues()
andPetscRandomGetValuesReal()
to retrieve an array of random numbersAdd
PetscOptions
argument toPetscOptionsInsertFileYAML()
Add
PetscCalloc()
to allocate zeroed memoryAutomatically detect YAML and JSON option files by extension or particular first line
Update YAML options file processing to ignore keys starting with
$
, Add some special processingAdd
PetscBagViewFromOptions()
Add
PetscLogEventDeactivatePush()
,PetscLogEventDeactivatePop()
Add new option to
-log_view
to view nested event timing information as a flame graph
PetscViewer:
PetscViewerAndFormat
now allows a payloadChange
PetscViewerFlowControlStepMaster()
,PetscViewerFlowControlEndMaster()
toPetscViewerFlowControlStepMain()
,PetscViewerFlowControlEndMain()
HDF5:
FILE_MODE_APPEND
(=FILE_MODE_UPDATE
) now creates a new file if it does not exist yetVU:
PetscViewerVUSetMode()
is now deprecated; please use standardPetscViewerFileSetMode()
instead
PetscDraw:
AO:
IS:
VecScatter / PetscSF:
VecScatter
is now the same type asPetscSF
, in other words, we havetypedef PetscSF VecScatter
Remove
VecScatter
typesVECSCATTER{SEQ,MPI1,MPI3,MPI3NODE,SF}
. One can use allPetcSF
types asVecScatter
typesRename
PetscLayoutsCreateSF()
toPetscSFCreateFromLayouts()
and move its declaration frompetscis.h
topetscsf.h
Deprecate
MPIU_REPLACE
; UseMPI_REPLACE
insteadDeprecate
PetscSFBcastAndOp
variants; UsePetscSFBcast
insteadDeprecate
PetscSFCreateEmbeddedSF
; UsePetscSFCreateEmbeddedRootSF
insteadAdd experimental NVIDIA NVSHMEM support; For details on how to use it, contact petsc-maint@mcs.anl.gov
Add
PetscSFCreateByMatchingIndices()
to create SF by matching root and leaf indices
PF:
Vec:
Change
Vec{Get,Restore}Array{Read}Inplace
toVec{Get,Restore}Array{Read}AndMemType()
and add an extra argument to also return the memory type of the arrayRemove vector type
VECNODE
Add
VecConcatenate()
function for vertically concatenating an array of vectors into a single vector. Also returns an array of index sets to access the original components within the concatenated final vector
PetscSection:
PetscPartitioner:
Mat:
Add
MatSetPreallocationCOO()
andMatSetValuesCOO()
to preallocate and set values in a matrix using COO format. Currently efficiently implemented only forMATCUSPARSE
Add the option
MAT_FORCE_DIAGONAL_ENTRIES
forMatSetOption()
. It forces allocation of all diagonal entriesRemove
MAT_NEW_DIAGONALS
fromMatOption
Add
UNKNOW_NONZERO_PATTERN
as new value forMatStructure
. It indicates that the relationship is unknown, when set the AIJ matrices check if the two matrices have identical patterns and if so use the faster codeAdd
MAT_FACTOR_QR
,MatQRFactor()
,MatQRFactorSymbolic()
, andMatQRFactorNumeric()
for QR factorizations. Currently the only built-in implementation uses LAPACK on sequential dense matricesChange option
-mat_cusparse_transgen
to-mat_form_explicit_transpose
to hint PETSc to form an explicit transpose for repeated operations like MatMultTranspose. Currently implemented only forAIJCUSPARSE
andAIJKOKKOS
PC:
Add
PCGAMGSetRankReductionFactors()
, provide an array,-pc_gamg_rank_reduction_factors factors
, tp specify factor by which to reduce active processors on coarse grids inPCGAMG
that overrides default heuristicsChange
PCCompositeAddPC()
toPCCompositeAddPCType()
, nowPCCompositeAddPC()
adds a specificPC
objectAdd a Compatible Relaxation (CR) viewer
PCMG
with-pc_mg_adapt_cr
Experimental: Add support for assembling AIJ (CUSPARSE and KOKKOS) matrix on the Cuda device with
MatSetValuesDevice()
,MatCUSPARSEGetDeviceMatWrite()
, and Kokkos withMatKokkosGetDeviceMatWrite
Add
PCMGSetResidualTranspose()
to support transposed linear solve usingPCMG
andPCGAMG
KSP:
Add
-all_ksp_monitor
which turns on monitoring for all KSP solvers regardless of their prefix. This is useful for monitoring solvers with inner solvers such asPCMG
,PCGAMG
,PCFIELDSPLIT
.Add support for monitor
KSPPREONLY
. This is useful for monitoring solvers with inner solvers such asPCMG
,PCGAMG
,PCFIELDSPLIT
.Add
KSPConvergedReasonViewSet()
to set an ADDITIONAL function that is to be used at the end of the linear solver to display the convergence reason of the linear solverAdd
KSPConvergedReasonViewCancel()
to remove all user-added converged reason view functionsAdd
KSPGetConvergedReasonString()
to retrieve a human readable string for ksp converged reasonChange
KSPReasonView()
toKSPConvergenceReasonView()
Change
KSPReasonViewFromOptions()
toKSPConvergedReasonViewFromOptions()
Add
KSPConvergedDefaultSetConvergedMaxits()
to declare convergence when the maximum number of iterations is reachedFix many
KSP
implementations to actually perform the number of iterations requestedChebyshev uses
MAT_SPD
to default to CG for the eigen estimateAdd
KSPPIPECG2
, a pipelined solver that reduces the number of allreduces to one per two iterations and overlaps it with two PCs and SPMVs using non-blocking allreduceAdd
KSPConvergedRateView()
andKSPComputeConvergenceRate()
to check the convergence rate of a linear solveAdd
KSPSetUseExplicitTranspose()
to explicitly transpose the system inKSPSolveTranspose()
Add
KSPMonitorLGCreate()
, and removeKSPMonitorLGResidualNorm*()
andKSPMonitorLGTrueResidualNorm*()
Add
KSPMonitorError()
, used by-ksp_monitor_error
Add arguments to
KSPMonitorSetFromOptions()
to allow line graphs to be configuredDeprecate
KSP{Set|Get}MatSolveBlockSize()
, useKSP{Set|Get}MatSolveBatchSize()
insteadReduce default
KSPView()
ASCII output to a single subdomain’s KSP/PC information forPCASM
, resp.PCBJacobi
. Use-ksp_view ::ascii_info_detail
to output KSP/PC information for all subdomains
SNES:
Add
SNESConvergedCorrectPressure()
, which can be selected using-snes_convergence_test correct_pressure
Remove
SNESMonitorLGCreate()
andSNESMonitorLGResidualNorm()
which are now handled by the default monitorAdd
SNESConvergedReasonViewSet()
to set an ADDITIONAL function that is to be used at the end of the nonlinear solver to display the convergence reason of the nonlinear solverAdd
SNESConvergedReasonViewCancel()
to remove all user-added converged reason view functionsAdd
SNESGetConvergedReasonString()
to retrieve a human readable string for snes converged reasonAdd
SNESFASFullSetTotal()
to use total residual restriction and total solution interpolation in the initial cycle of full FAS multigridDeprecate
-snes_nasm_sub_view
, use-snes_view ::ascii_info_detail
instead
SNESLineSearch:
TS:
Change to
--download-sundials2
to indicate the version of SUNDIALS PETSc downloads, which is very old and out-datedAdd forward and adjoint sensitivity support for cases that involve parameterized mass matrices
Add
TSGetNumEvents()
to retrieve the number of eventsAdd
-ts_monitor_cancel
Now
-ts_view_solution
respects the TS prefixAdd
TSSetMatStructure()
to indicate the relationship between the nonzero structures of the I Jacobian and the RHS JacobianAutomatically set the
MatStructure
flag of TS toSAME_NONZERO_PATTERN
if the RHS matrix is obtained with aMatDuplicate()
from the I Jacobian
TAO:
Add
TaoSetRecycleFlag()
andTaoGetRecycleFlag()
interfaces to enable some Tao algorithms to re-use iterate information from the previousTaoSolve()
callAdd new Augmented Lagrangian Multiplier Method (
TAOALMM
) for solving optimization problems with general nonlinear constraints
DM/DA:
Remove unneeded
Vec
argument fromDMPatchZoom()
Change
DMDACreatePatchIS()
to collective operation and add an extra argument to indicate whether off processor values will be returnedAdd
DMComputeError()
, which usesPetscDS
information for the exact solutionAdd
DMShellGetGLobalVector()
Add
DMInterpolateSolution()
for interpolating solutions between meshes in a potentially nonlinear wayDMInterpolationSetUp()
now can drop points outside the domain
DMSwarm:
DMSwarmViewXDMF()
can now use a full path for the filenameAdd
-dm_view_radius
to set size of drawn particles
DMPlex:
Using
-petscpartitioner_simple_node_grid
and-petscpartitioner_simple_process_grid
, the Simple partitioner can now make grid partitionsAdd
DMGet/SetFieldAvoidTensor()
to allow fields to exclude tensor cells in their definitionRemove regular refinement and marking from
DMPlexCreateDoublet()
Add high order FEM interpolation to
DMInterpolationEvaluate()
FE/FV:
Add
PetscDualSpaceTransformHessian()
,PetscDualSpacePushforwardHessian()
, andPetscFEPushforwardHessian()
Now
PetscFEGetCellTabulation()
andPetscFEGetFaceTabulation()
ask for the number of derivativesAdd
PetscDualSpaceLagrangeGet/SetUseMoments()
andPetscDualSpaceLagrangeGet/SetMomentOrder()
to allow a moment integral for P0
DMNetwork:
Add
DMNetworkAddSubnetwork()
for network of subnetworksAdd
DMNetworkAdd/GetSharedVertices()
,DMNetworkIsSharedVertex()
Remove
DMNetworkSetEdgeList()
,DMNetworkSet/GetComponentNumVariables()
,DMNetworkSet/Add/GetNumVariables()
,DMNetworkGetComponentKeyOffset()
,DMNetworkGetVariableOffset()
,DMNetworkGetVariableGlobalOffset()
Change the prototypes for
DMNetworkAdd/GetComponent()
Rename
DMNetworkSet/GetSizes()
toDMNetworkSet/GetNumSubNetworks()
Rename
DMNetworkGetComponentVariableOffset()
toDMNetworkGetLocalVecOffset()
,DMNetworkGetComponentVariableGlobalOffset()
toDMNetworkGetGlobalVecOffset()
Rename
DMNetworkGetSubnetworkInfo()
toDMNetworkGetSubnetwork()
DT:
PetscDSCopyBoundary()
now takes a list of fields for which boundary copying is doneAdd
PetscDSGet/SetJetDegree()
, and-dm_ds_jet_degree
is needed to enable it under a DMAdd
PetscWeakForm
class to manage function pointers for problem assembly
Fortran:
Add configure option
--with-mpi-f90module-visibility
[default=``1``]. With0
,mpi.mod
will not be visible in use code (viapetscsys.mod
) - sompi_f08
can now be usedAdd
PetscDLAddr()
to get name for a symbol