File petsc.changes of Package petsc

-------------------------------------------------------------------
Mon Dec 30 19:41:59 UTC 2024 - Stefan Brüns <stefan.bruens@rwth-aachen.de>

- Update to version 3.22:
  * General:
    + Add -mpiuni-allow-multiprocess-launch to allow mpiexec to
      launch multiple indendent MPI-Uni jobs. Previously a sanity
      check error message was always produced
  * Configure/Build:
    + Add --with-openmp-kernels
    + Update to work with python-3.13
    + Change MPIU_Allreduce() to always returns an MPI error
      code that should be checked with PetscCallMPI()
    + Add PetscCallReturnMPI(), PetscCallMPIReturnMPI(), and
      PetscCheckReturnMPI() to check for in PETSc provided MPI
      callbacks
  * Sys:
    + Add PetscPragmaUseOMPKernels
    + Deprecate PetscOptionsRestoreViewer() in favor of
      PetscViewerDestroy()
    + Deprecate PetscOptionsGetViewer() and PetscOptionsGetViewers()
      in favor of PetscOptionsCreateViewer() and
      PetscOptionsCreateViewers()
    + Deprecate PetscOptionsPushGetViewerOff(),
      PetscOptionsPopGetViewerOff(), and PetscOptionsGetViewerOff()
      in favor of PetscOptionsPushCreateViewerOff(),
      PetscOptionsPopCreateViewerOff(), and
      PetscOptionsGetCreateViewerOff()
    + Add PetscObjectContainerCompose() and
      PetscObjectContainerQuery()
    + Add size_t argument to PetscMPIErrorString()
    + Add PetscCallExternalAbort() for calling external library
      functions from functions not returning PetscErrorCode
    + Add PetscRandomSetOptionsPrefix()
    + Add PetscOptionsGetBool3() to get a ternary logical value
      from a command line option
  * PetscViewer:
    + Add PetscViewerASCIIStdoutSetFileUnit()
    + Add PetscShmgetAllocateArrayScalar(),
      PetscShmgetDeallocateArrayScalar(),
      PetscShmgetAllocateArrayInt(), and
      PetscShmgetDeallocateArrayInt() for Fortran
  * VecScatter / PetscSF:
    + Add PetscSFRegisterPersistent() and
      PetscSFDeregisterPersistent() for safe optimization of
      persistent communication
  * Vec:
    + The IS passed to VecISAXPY() and VecISCopy(). VecISSet() and
      VecISShift() must have the same communicator of the vectors used
      Make VecLock API active in optimized mode
    + VecNestSetSubVec() and VecNestSetSubVecs() now take references
      to input vectors rather than creating duplicates Deprecate
      VecSetInf() with VecFlag()
  * Mat:
    + Change MatProductSetFill() to support PETSC_DETERMINE and
      PETSC_CURRENT. MatMatMult() and its friends and relations now
      accept PETSC_DETERMINE and PETSC_CURRENT in the fill argument.
      PETSC_DEFAULT is deprecated for those functions
    + Change the default MatType of the output Mat of
      MatSchurComplementComputeExplicitOperator() to be MATDENSE.
      It may be changed from the command line, e.g.,
      -fieldsplit_1_explicit_operator_mat_type aij

    + Add MATOP_GET_BLOCK_DIAGONAL and MATOP_GET_VBLOCK_DIAGONAL to
      set methods returning the diagonal point blocks of a matrix
   * PC:
     + Add support in PCFieldSplitSetFields() including with
       -pc_fieldsplit_%d_fields fields for MATNEST,  making it
       possible to utilize multiple levels of PCFIELDSPLIT with
       MATNEST from the command line
     + Add PCCompositeSpecialSetAlphaMat() API to use a matrix
       other than the identity in preconditioners based on an
       alternating direction iteration, e.g., setting M for
       P = (A + alpha M) M^{-1} (alpha M + B)
     + Reuse the result of T = A_{00}^-1 A_{01} in
       PCApply_FieldSplit_Schur with -pc_fieldsplit_schur_fact_type
       full
     + Change the option database keys for coarsening for PCGAMG to
       use the prefix -pc_gamg_, for example -pc_gamg_mat_coarsen_type
     + Add PCGAMGSetGraphSymmetrize() and -pc_gamg_graph_symmetrize to
       control symmetrization when coarsening the graph Add
       -pc_hypre_type ilu with -pc_hypre_ilu_type,
       -pc_hypre_ilu_iterative_setup_type,
       -pc_hypre_ilu_iterative_setup_maxiter,
       -pc_hypre_ilu_iterative_setup_tolerance,
       -pc_hypre_ilu_print_level, -pc_hypre_ilu_logging,
       -pc_hypre_ilu_level, -pc_hypre_ilu_max_nnz_per_row,
       -pc_hypre_ilu_tol, -pc_hypre_ilu_maxiter,
       -pc_hypre_ilu_drop_threshold, -pc_hypre_ilu_tri_solve,
       -pc_hypre_ilu_lower_jacobi_iters,
       -pc_hypre_ilu_upper_jacobi_iters, and
       -pc_hypre_ilu_local_reordering
     + Improve -pc_type boomeramg with
       -pc_hypre_boomeramg_smooth_num_sweeps,
       -pc_hypre_boomeramg_ilu_type,
       -pc_hypre_boomeramg_ilu_iterative_setup_type,
       -pc_hypre_boomeramg_ilu_iterative_setup_option,
       -pc_hypre_boomeramg_ilu_iterative_setup_maxiter,
       -pc_hypre_boomeramg_ilu_iterative_setup_tolerance,
       -pc_hypre_boomeramg_ilu_print_level,
       -pc_hypre_boomeramg_ilu_logging, -pc_hypre_boomeramg_ilu_level,
       -pc_hypre_boomeramg_ilu_max_nnz_per_row,
       -pc_hypre_boomeramg_ilu_maxiter,
       -pc_hypre_boomeramg_ilu_drop_tol,
       -pc_hypre_boomeramg_ilu_tri_solve,
       -pc_hypre_boomeramg_ilu_lower_jacobi_iters,
       -pc_hypre_boomeramg_ilu_upper_jacobi_iters, and
       -pc_hypre_boomeramg_ilu_local_reordering
  * KSP:
    + Add support for PETSC_DETERMINE as an argument to
      KSPSetTolerances() to set the parameter back to its initial
      value when the object's type was set
    + Deprecate PETSC_DEFAULT in favor of PETSC_CURRENT for
      KSPSetTolerances()
  * SNES:
    + Add support for PETSC_DETERMINE as an argument to
      SNESSetTolerances() to set the parameter back to its initial
      value when the object's type was set
    + Deprecate PETSC_DEFAULT in favor of PETSC_CURRENT for
      SNESSetTolerances()
    + Add DMAdaptorMonitor(), DMAdaptorMonitorSet(),
      DMAdaptorMonitorCancel(), and DMAdaptorMonitorSetFromOptions()
    + Add DMAdaptorMonitorSize(), DMAdaptorMonitorError(),
      DMAdaptorMonitorErrorDraw(),
      DMAdaptorMonitorErrorDrawLGCreate(), and
      DMAdaptorMonitorErrorDrawLG()
    + Add DMAdaptorMonitorRegister(), DMAdaptorMonitorRegisterAll(),
      and DMAdaptorMonitorRegisterDestroy()
    + Add DMAdaptorGetCriterion() and DMAdaptorSetCriterion()
    + Add DMAdaptorSetOptionsPrefix()
    + Add Newton's method with arc length continuation: SNESNEWTONAL
      with SNESNewtonALSetFunction(), SNESNewtonALGetFunction(),
      SNESNewtonALComputeFunction(), SNESNewtonALGetLoadParameter(),
      and SNESNewtonALSetCorrectionType()
    + Add SNESNewtonTRSetTolerances() and
      SNESNewtonTRSetUpdateParameters() to programmatically set trust
      region parameters Deprecate SNESSetTrustRegionTolerance() in
      favor of SNESNewtonTRSetTolerances()
    + Add SNESResetCounters() to reset counters for linear iterations
      and function evaluations
  * TS:
    + Add Rosenbrock-W methods from :cite:`rang2015improved` with
      B_{PR} stability: TSROSWR34PRW, TSROSWR3PRL2, TSROSWRODASPR,
      and TSROSWRODASPR2
    + Add support for PETSC_DETERMINE as an argument to
      TSSetTolerances() to set the parameter back to its initial
      value when the object's type was set Deprecate PETSC_DEFAULT
      in favor of PETSC_CURRENT for  TSSetTolerances()
    + Add support for PETSC_DETERMINE as an argument to
      TSSetMaxSteps() and TSSetMaxTime()
    + Deprecate PETSC_DEFAULT in favor of PETSC_CURRENT for
      TSAdaptSetSafety()
    + Deprecate PETSC_DEFAULT in favor of PETSC_CURRENT for
      TSAdaptSetClip()
    + Deprecate PETSC_DEFAULT in favor of PETSC_CURRENT for
      TSAdaptSetStepLimits()
    + Add  TSGetStepResize()
    + Add  -ts_monitor_solution_vtk_interval to control the interval
      for dumping files
    + Add a new ARKIMEX solver for fast-slow systems that are
      partitioned component-wise and additively at the same time
    + Add TSRHSSplitSetIFunction(), TSRHSSplitSetIJacobian(),
      TSRHSSplitSetSNES(), TSRHSSplitGetSNES(),
      TSARKIMEXSetFastSlowSplit(), and TSARKIMEXGetFastSlowSplit()
      to support the new solver
  * TAO:
    + Add support for PETSC_DETERMINE as an argument to
      TaoSetTolerances() and TaoSetConstraintTolerances() to set
      the parameter back to its initial value when the object's
      type was set
    + Deprecate PETSC_DEFAULT in favor of PETSC_CURRENT for
      TaoSetTolerances() and TaoSetConstraintTolerances()
  * DM/DA:
    + Add DMGetSparseLocalize() and DMSetSparseLocalize()
    + Add DMGeomModelRegister(), DMGeomModelRegisterAll(),
      DMGeomModelRegisterDestroy(), DMSnapToGeomModel(), and
      DMSetSnapToGeomModel() to support registering geometric models
    + Add DMGetOutputSequenceLength()
    + Add an additional return vector to DMCreateMassMatrixLumped()
      to retrieve the local mass lumping
    + Add DMPlexMigrateGlobalToNaturalSF() modifies the NaturalSF to
      map from the SF's old global section to the new global section
  * DMPlex:
    + Add DMLabelGetValueBounds()
    + Add DMPlexOrientLabel()
    + Add an argument to DMPlexLabelCohesiveComplete() in order to
      change behavior at surface boundary Remove
      DMPlexSnapToGeomModel()
    + Add refinement argument to DMPlexCreateHexCylinderMesh()
    + Now DMPlexComputeBdIntegral() takes one function per field
    + Add DMPlexCreateEdgeNumbering()
    + Add DMPlexComputeL2FluxDiffVec() and
      DMPlexComputeL2FluxDiffVecLocal()
    + Add DMAdaptorSetType(), DMAdaptorGetType(), DMAdaptorRegister(),
      DMAdaptorRegisterAll(), and DMAdaptorRegisterDestroy()
    + Add DMAdaptorGetMixedSetupFunction() and
      DMAdaptorSetMixedSetupFunction()
    + Add DMPlexCreateCellNumbering()
    + Add DMPlexBuildFromCellSectionParallel() and
      DMPlexCreateFromCellSectionParallel()
    + Add -dm_plex_box_label to add "Face Sets" label with current
      "box" conventions
    + Add "Face Sets" label to simplex meshes using current "box"
      conventions Update PetscViewerExodusII object to cache variable
      names  for faster and  more robust look-ups
    + Add PetscViewerExodusIISetNodalVariable(),
      PetscViewerExodusIISetZonalVariable(),
      PetscViewerExodusIIGetNodalVariable(), and
      PetscViewerExodusIIGetZonalVariable() to set or get the number
      of variables in a file
    + Add PetscViewerExodusIISetNodalVariableName(),
      PetscViewerExodusIISetZonalVariableName(),
      PetscViewerExodusIIGetNodalVariableName(), and
      PetscViewerExodusIIGetZonalVariableName() to set or get a
      single variable name
    + Add PetscViewerExodusIISetNodalVariablesNames(),
      PetscViewerExodusIISetZonalVariablesNames(),
      PetscViewerExodusIIGetNodalVariablesNames(), and
      PetscViewerExodusIIGetZonalVariablesNames() to set or get all
      variable names at the same time (not available in Fortran)
    + Add degree bounds to DMCopyFields(), DMCopyDS(), PetscDSCopy(),
      and PetscDSSelectDiscretizations()
    + Add PetscFELimitDegree()
    + Add localizationHeight and sparseLocalize arguments to
      DMPlexCreateBoxMesh() for coordinate localization on periodic
      meshes
    + Add parallel CGNS reader, enabled by -dm_plex_cgns_parallel
    + Add CGNS function for VecLoad() of solutions in parallel (must
      be run with -dm_plex_cgns_parallel)
    + Add PetscViewerCGNSOpen() convenience function
    + Add PetscViewerCGNSGetSolutionTime(),
      PetscViewerCGNSGetSolutionName(),
      PetscViewerCGNSSetSolutionIndex(), and
      PetscViewerCGNSGetSolutionIndex()
    + Add DMPlexGetDepthStratumGlobalSize()
  * DT:
    + Add PetscDSSetIntegrationParameters() and
      PetscDSSetCellParameters()
  * Fortran:
    + Add PETSC_NULL_ENUM to be used instead of PETSC_NULL_INTEGER
      when a pointer to an enum is expected in a PETSc function call
    + Add PETSC_NULL_INTEGER_ARRAY, PETSC_NULL_SCALAR_ARRAY, and
      PETSC_NULL_REAL_ARRAY for use instead of PETSC_NULL_INTEGER,
      PETSC_NULL_SCALAR,  and PETSC_NULL_REAL when an array is
      expected in a PETSc function call
    + Add automatically generated interface definitions for most
      PETSc functions to detect illegal usage at compile time
    + Add PetscObjectIsNull() for users to check if a PETSc
      object is NULL
    + Change the PETSc Fortran API so that non-array values, v,
      passed to PETSc routines expecting arrays must be cast with
      [v] in the calling sequence

-------------------------------------------------------------------
Mon Dec  9 15:23:50 UTC 2024 - Atri Bhattacharya <badshah400@gmail.com>

- Add necessary BuildRequires for hpc flavours to allow use of
  %requires_eq.

-------------------------------------------------------------------
Thu Jul 25 19:18:20 UTC 2024 - Andreas Stieger <andreas.stieger@gmx.de>

- fix missing libyaml requirement of -devel package boo#1228280

-------------------------------------------------------------------
Tue Jun 18 05:25:24 UTC 2024 - Egbert Eich <eich@suse.com>

- Update to version 3.21:
  - General:
    * Add single precision support for using HYPRE and MFEM
    * Require Fortran 2003 compiler with `GET_COMMAND_ARGUMENT()` support
      for building PETSc with Fortran bindings
  - Sys:
    * Add `PetscBench` an object class for managing benchmarks in PETSc
    * Deprecate `PetscVoidFunction`, `PetscVoidStarFunction`, and
      `PetscErrorCodeFunction` typedefs in favor of `PetscVoidFn` and
      `PetscErrorCodeFn`.
    * Add `PetscOptionsBoundedReal()` and `PetscOptionsRangeReal()`.
    * Rename Petsc stream types to `PETSC_STREAM_DEFAULT`,
      `PETSC_STREAM_NONBLOCKING`, `PETSC_STREAM_DEFAULT`_WITH_BARRIER` and
      `PETSC_STREAM_NONBLOCKING_WITH_BARRIER`. The root device context uses
      `PETSC_STREAM_DEFAULT` by default.
  - PetscViewer:
    * Change `PetscViewerRestoreSubViewer()` to no longer need a call to
      `PetscViewerFlush()` after it.
    * Introduce `PetscOptionsRestoreViewer()` that must be called after
      `PetscOptionsGetViewer()` and `PetscOptionsGetViewers()` to ensure
      thread safety.
    * Add `PetscViewerASCIIWORLDSetFileUnit()`.
  - VecScatter / PetscSF:
     * Add MPI-4.0 persistent neighborhood collectives support. Use
       `-sf_neighbor_persistent` along with `-sf_type` neighbor to enable it.
     * Add `PetscSFCreateStridedSF()` to communicate strided blocks of data/
  - Vec:
    * Add `VecGhostGetGhostIS()` to get the ghost indices of a ghosted vector.
    * Add `-vec_mdot_use_gemv` to let `VecMDot()`, `VecMTDot()` use BLAS2
      `gemv()` instead of custom unrolled kernel. Default is on.
    * Add `-vec_maxpy_use_gemv` to let `VecMAXPY()` use BLAS2 `gemv()`
      instead of custom unrolled kernel. Default is off.
    * `VecReplaceArray()` on the first Vec obtained from `VecDuplicateVecs()`
      with either of the two above *_use_gemv options won’t work anymore.
      If needed, turn them off or use VecDuplicateVec() instead `VecScale()`
      is now a logically collective operation.
    * Add `VecISShift()` to shift a part of the vector.
    * `VecISSet()` does no longer accept NULL as index set.
    * `VecLoad()` automatically determines whether the file was written
      using 32-bit or 64-bit indices, and files can read with PETSc built
      either way.
  - PetscSection:
    * Add `PetscSectionGetBlockStarts()` and `PetscSectionSetBlockStarts()`.
    * Add argument to `PetscSectionCreateGlobalSection()` that can ignore
      the local section permutation.
    * Add `PetscSectionCreateComponentSubsection()`.
  - PetscPartitioner:
    * Add edge weights to `PetscPartitionerPartition()`
  - Mat:
    * Reset `MATLMVM` history vectors if size is changed.
    * Add specific support for `MatMultHermitianTranspose()` and
      `MatMultHermitianTransposeAdd()` in `MATSHELL`, `MATDENSE`,
      `MATNEST`, and `MATSCALAPACK`
    * Add function `MatProductGetAlgorithm()` `MATTRANSPOSEVIRTUAL`,
      `MATHERMITIANTRANSPOSEVIRTUAL`, `MATNORMAL`, `MATNORMALHERMITIAN`
      and `MATCOMPOSITE` now derive from `MATSHELL`. This implies a new
      behavior for those Mat, as calling `MatAssemblyBegin()`/
      `MatAssemblyEnd()` destroys scalings and shifts for `MATSHELL`, but
      it was not previously the case for other `MatType`.
    * Add function `MatGetRowSumAbs()` to compute vector of L1 norms of
      rows ([`B`]`AIJ` only).
    * Add partial support for `MatBackwardSolve()`/`MatForwardSolve()` with
      `MATSOLVERMKL_PARDISO` and `MATSOLVERMKL_CPARDISO`.
    * Deprecate `MATIS` options `-matis_xxx`. Use `-mat_is_xxx`.
    * Add support for repeated entries in the local part of the local to
      global map for `MATIS` via the routines `MatISSetAllowRepeated()`
      and `MatISGetAllowRepeated()`.
    * Add support to dump and load a matrix of `MATIS` type.
    * Add dense representations of symmetric Broyden matrices
      `MATLMVMDBFGS`, `MATLMVMDDFP`, and `MATLMVMDQN`.
    * Add `MATSELLHIP` and the corresponding HIP kernels for matrix-vector
      multiplication.
  - MatCoarsen:
    * Add `MatCoarsenSetMaximumIterations()` with corresponding option
      `-mat_coarsen_max_it <4>`. The number of iteration of the coarsening
      method. Used for the HEM coarsener.
    * Add `MatCoarsenSetThreshold()` with corresponding option
      `-mat_coarsen_threshold <-1>`. Threshold for filtering graph for HEM.
      Like GAMG < 0 means no filtering.
    * Change API for several PetscCD methods used internally in `PCGAMG` and
      `MatCoarsen` (eg, change `PetscCDSetChuckSize()` to
      `PetscCDSetChunckSize()`), remove Mat argument from
      `PetscCDGetASMBlocks()`.
  - PC:
    * Add `PCGAMGSetLowMemoryFilter()` with corresponding option
      `-pc_gamg_low_memory_threshold_filter`. Use the system `MatFilter`
      graph/matrix filter, without a temporary copy of the graph, otherwise
      use method that can be faster.
    * Add `PCGAMGASMSetHEM()` with corresponding option
      `-pc_gamg_asm_hem_aggs N`. Use ASM smoother constructed from N
      applications of heavy edge matching.
    * `PCMAT` use `MatSolve()` if implemented by the matrix type.
    * Add `PCLMVMSetUpdateVec()` for the automatic update of the LMVM
      preconditioner inside a SNES solve.
    * Add `PCGAMGSetInjectionIndex()` with corresponding option
      `-pc_gamg_injection_index i,j,k...`. Inject provided indices of fine
      grid operator as first coarse grid restriction (sort of p-multigrid
      for C1 elements).
    * Add `PC_JACOBI_ROWL1` to `PCJacobiType` to use (scaled) l1 row norms
      for diagonal approximation with scaling of off-diagonal elements.
    * Add `PCJacobiSetRowl1Scale()` and `-pc_jacobi_rowl1_scale` scale to
      access new scale member of PC_Jacobi class, for new row l1 Jacobi.
    * Add `-mg_fine_...` prefix alias for fine grid options to override
      `-mg_levels_...` options, like `-mg_coarse_...`.
    * The generated sub-matrices in `PCFIELDSPLIT`, `PCASM`, and `PCBJACOBI`
      now retain any null space or near null space attached to them even
      if the non-zero structure of the outer matrix changes.
    * Add support for multiple subdomain per MPI process in `PCBDDC`.
    * Add `PCJacobiGetDiagonal()` to access the Jacobi inverted matrix
      diagonal and its square root variant.
  - SNES:
    * Add support for Quasi-Newton models in `SNESNEWTONTR` via
      `SNESNewtonTRSetQNType`.
    * Add support for trust region norm customization in `SNESNEWTONTR` via
      `SNESNewtonTRSetNormType`.
    * Remove default of `KSPPREONLY` and `PCLU` for `SNESNASM` subdomain
      solves: for `SNESASPIN` use `-npc_sub_ksp_type preonly -npc_sub_pc_type
      lu`.
    * Add function typedefs `SNESInitialGuessFn`, `SNESFunctionFn`,
      `SNESObjectiveFn`, `SNESJacobianFn`, and `SNESNGSFn`.
    * Deprecate `DMDASNESFunction`, `DMDASNESJacobian`, `DMDASNESObjective`,
      `DMDASNESFunctionVec`, `DMDASNESJacobianVec`, and `DMDASNESObjectiveVec`
      in favor of `DMDASNESFunctionFn`, `DMDASNESJacobianFn`,
      `DMDASNESObjectiveFn`, `DMDASNESFunctionVecFn`, `DMDASNESJacobianVecFn`,
      and `DMDASNESObjectiveVecFn`.
  - SNESLineSearch:
    * Deprecate `SNESLineSearchShellSetUserFunc()` and
      `SNESLineSearchShellGetUserFunc()` in favor of
      `SNESLineSearchShellSetApply()` and `SNESLineSearchShellGetApply()`.
  - TS:
    * Add support for custom predictor callbacks in the second-order
      generalized-alpha method using `TSAlpha2SetPredictor()`.
    * Allow adaptivity to change time step size in first step of
      second-order generalized-alpha method.
    * Add `TSSetPostEventStep()` to control the first step after event.
    * Rename `TSSetPostEventIntervalStep()` to `TSSetPostEventSecondStep()`,
      controlling the second step after event.
    * Rename option `-ts_event_post_eventinterval_step` to
      `-ts_event_post_event_second_step`.
    * Change the (event) indicator functions type from `PetscScalar[]` to
      `PetscReal[]` in the user `indicator()` callback set by
      `TSSetEventHandler()`.
    * Add `TSGetStepRollBack()` to access the internal rollback flag.
    * Add boolean flag to TSSetResize() to control when to resize.
  - TAO:
    * Deprecate `TaoCancelMonitors()` (resp. `-tao_cancelmonitors`) in
      favor of `TaoMonitorCancel()` (resp. `-tao_monitor_cancel`).
    * Deprecate `-tao_view_gradient`, `-tao_view_ls_residual`,
      `-tao_view_solution`, and `-tao_view_stepdirection` in favor of
      `-tao_monitor_gradient`, `-tao_monitor_ls_residual`,
      `-tao_monitor_solution`, and `-tao_monitor_step`.
    * Deprecate `-tao_draw_solution`, `-tao_draw_gradient`, and
      `-tao_draw_step` in favor of `-tao_monitor_solution_draw`,
      `-tao_monitor_gradient_draw`, and `-tao_monitor_step_draw`.
    * Deprecate `TaoSetMonitor()` in favor of `TaoMonitorSet()`.
    * Deprecate all of the provided Tao monitor routine names in favor of
      the standard PETSc naming conventions.
  - DM/DA:
    * Add MPI reduction inside `SNESComputeObjective_DMDA()`. No need to
      call reduction in local callback.
    * Deprecate `PetscSimplePointFunc` in favor of `PetscSimplePointFn`.
    * Move `DMPlexReorderDefaultFlag` to `DMReorderDefaultFlag`.
    * Add `DMCreateSectionPermutation()`, `DMReorderSectionGetType()`,
      and `DMReorderSectionSetType()`.
    * Add `DMReorderSectionGetDefault()` and `DMReorderSectionSetDefault()`
      to allow point permutations when sections are built automatically.
    * Change interface to `DMCreateSectionSubDM()` to add component
       specification.
    * Add DMDAGetBoundaryType().
  - DMSwarm:
    * Add continuous DM argument to `DMSwarmProjectFields()`.
    * Add `DMSwarmGetFieldInfo()`.
    * Add `DMSwarmVectorGetField()`.
  - DMPlex:
    * Drop support for MED, i.e. remove `DMPlexCreateMedFromFile()` and
      `--with-med`.
    * Change protototype of `DMPlexSetSNESLocalFEM()`. Now it accepts a
      single context and a Boolean indicating to use the objective function
      callback.
    * Replace `DMProjectCoordinates()` with `DMSetCoordinateDisc()`.
    * Add argument to `DMPlexCreateCoordinateSpace()`.
    * Add `DMPlexCoordMap` and some default maps.
    * Add Boolean argument to `DMPlexPartitionLabelCreateSF()` to sort ranks.
    * Add `DMClearAuxiliaryVec()` to clear the auxiliary data.
    * Add `ignoreLabelHalo`, `sanitizeSubmesh`, and `ownershipTransferSF`
      arguments to `DMPlexFilter()`.
    * Change `DMPlexSetIsoperiodicFaceSF()`, `DMPlexGetIsoperiodicFaceSF()`,
      and `DMPlexSetIsoperiodicFaceTransform()` to accept multiple values
      for different periodic pairings.
  - FE/FV:
    * Add Jacobian type argument to `PetscFEIntegrateBdJacobian()`.
    * Add `PetscFVClone()`.
    * Add `PetscFVCreateDualSpace()`.
  - DMStag:
    * Add support for `DMLocalToLocalBegin()` and `DMLocalToLocalEnd()`.
    * Add `DMStagSetRefinementFactor()` and `DMStagGetRefinementFactor()`
      to set and get the refinement ratio.
    * Add support for arbitrary refinement ratio and degree of freedom in
      interpolation and restriction.
  - DT:
    * Add `PetscDSUpdateBoundaryLabels()`.

- Update to version 3.20:
  - General:
    * Add `PetscOptionsBegin()`, `PetscOptionsEnd()`, `PetscOptionsInt()`,
      `PetscOptionsBool()`, `PetscOptionsIntArray()`, `PetscOptionsReal()`,
      `PetscOptionsRealArray()`, and `PetscOptionsScalar()` for Fortran.
    * Add `PetscAssertPointer()` as a replacement for `PetscValidPointer()`,
      `PetscValidCharPointer()`, `PetscValidIntPointer()`,
      `PetscValidInt64Pointer()`, `PetscValidCountPointer()`,
      `PetscValidBoolPointer()`, `PetscvalidScalarPointer()`, and
      `PetscValidRealPointer()`.
    *  Convert standard header-guards in PETSc header-files to `#pragma`
       once. Users relying on specific preprocessor definitions to determine
       whether particular PETSc headers (e.g. `petscdm.h` used to be guarded
       by PETSCDM_H) have been included will find that this no longer works.
       While header-guards are technically “public” (insofar that they appear
       in public header-files), their name and value are considered
       implementation details.
  - Sys:
    * Add `PetscDeviceContextGetStreamHandle()` to return a handle to the
      stream the current device context is using.
    * Add utility functions `PetscGetCurrentCUDAStream()` and
      `PetscGetCurrentHIPStream()` to return the GPU stream the current
      device context is using.
    * Add `PetscStrcmpAny()` to compare against multiple non-empty strings.
    * Change arguments 4 and 5 of `PetscViewerBinaryReadAll()` and
      `PetscViewerBinaryWriteAll()` to `PetscInt64`.
    * Add `PetscIsCloseAtTolScalar()`.
    * Remove `PetscTellMyCell()` and related runtime option.
    * Remove `PetscTextBelt()` and related runtime option.
    * Remove deprecated `-malloc [no]` startup option.
    * Remove deprecated `-malloc_info` startup option.
    * Remove deprecated `-log_summary` option.
    * Remove `PetscURLShorten()`, it has not worked since 2019.
      Move `PetscIntStackCreate()`, `PetscIntStackDestroy()`,
      `PetscIntStackPush()`, `PetscIntStackPop()`, and `PetscIntStackEmpty()`
      declarations to public API in `petsclog.h`.
    * Add `-on_error_malloc_dump` option.
  - Event Logging:
    * Add `PetscLogState` interface for describing profiling events and
      stages.
    * Add `PetscLogHandler` interface that interprets the profiling events
      of a `PetscLogState`.
    * Add `PETSCLOGHANDLERDEFAULT` implementation of `PetscLogHandler`.
    * Add `PETSCLOGHANDLERNESTED` implementation of `PetscLogHandler`.
    * Add `PETSCLOGHANDLERTRACE` implementation of `PetscLogHandler`.
    * Add `PetscLogHandlerCreateTrace()`.
    * Add `PETSCLOGHANDLERMPE` implementation of `PetscLogHandler`.
    * Add `PETSCLOGHANDLERPERFSTUBS` implementation of `PetscLogHandler`.
    * Add `PETSCLOGHANDLERLEGACY` implementation of `PetscLogHandler`.
    * Add `PetscLogHandlerCreateLegacy()`.
    * Add `PetscLogPerfstubsBegin()` for log handling with PerfStubs/TAU.
    * Add `PetscLogLegacyCallbacksBegin()` to transition old log handler
      callbacks to the PetscLogHandler-based approach.
    * Add `PetscLogHandlerStart()` to connect a `PetscLogHandler` to
      PETSc’s global logging events.
    * Add `PetscLogStageGetName()`.
    * Add `PetscLogEventGetName()`.
    * Add `PetscLogEventsPause()` and `PetscLogEventsResume()` to isolate
      a logging event from unrelated in-process events.
    * Add `PetscLogClassGetClassId()`.
    * Add `PetscLogClassIdGetName()`.
    * Deprecate `PetscLogClassPerfInfoClear()` ,
      `PetscLogClassPerfLogCreate()`, and `PetscLogClassPerfLogDestroy()`.
    * Deprecate `PetscClassPerfLogEnsureSize()`, `PetscClassRegInfoDestroy()`,
      `PetscClassRegLogCreate()`, `PetscClassRegLogDestroy()`,
      `PetscClassRegLogGetClass()`, and `PetscClassRegLogRegister()`.
    * Deprecate `PetscEventPerfInfoClear()` and `PetscEventPerfInfoCopy()`.
    * Deprecate `PetscEventPerfLogActivate()`,
      `PetscEventPerfLogActivateClass()`, `PetscEventPerfLogCreate()`,
      `PetscEventPerfLogDeactivate()`, `PetscEventPerfLogDeactivateClass()`,
      `PetscEventPerfLogDeactivatePop()`, `PetscEventPerfLogDeactivatePush()`,
      `PetscEventPerfLogDestroy()`, `PetscEventPerfLogEnsureSize()`,
      `PetscEventPerfLogGetVisible()`, and `PetscEventPerfLogSetVisible()`.
    * Deprecate `PetscEventRegLogCreate()`, `PetscEventRegLogDestroy()`,
      `PetscEventRegLogGetEvent()`, and `PetscEventRegLogRegister()`.
    * Deprecate `PetscStageLogCreate()`, `PetscStageLogDestroy()`,
      `PetscStageLogGetActive()`, `PetscStageLogGetClassPerfLog()`,
      `PetscStageLogGetClassRegLog()`, `PetscStageLogGetEventRegLog()`,
      `PetscStageLogGetStage()`, `PetscStageLogGetVisible()`,
      `PetscStageLogPop()`, `PetscStageLogPush()`, `PetscStageLogRegister()`,
      `PetscStageLogSetActive()`, `PetscStageLogSetVisible()`,
      `PetscStageLogGetCurrent()`, and `PetscStageLogGetEventPerfLog()`.
    * Deprecate `PetscLogGetStageLog()`.
    * Deprecate `PetscLogPushCurrentEvent_Internal()`.
    * Deprecate `PetscLogPopCurrentEvent_Internal()`.
    * Deprecate `PetscLogAllBegin()`.
    * Deprecate `PetscLogSet()`.
    * Add `PetscLogHandlerGetEventPerfInfo()`.
    * Add `PetscLogHandlerSetLogActions()`.
    * Add `PetscLogHandlerSetLogObjects()`.
    * Add `PetscLogHandlerLogObjectState()`.
    * Add `PetscLogHandlerGetNumObjects()`.
    * Add `PetscLogHandlerEventDeactivatePush()`.
    * Add `PetscLogHandlerEventDeactivatePop()`.
    * Add `PetscLogHandlerEventsPause()`.
    * Add `PetscLogHandlerEventsResume()`.
    * Add `PetscLogHandlerDump()`.
    * Add `PetscLogHandlerStageSetVisible()`.
    * Add `PetscLogHandlerStageGetVisible()`.
    * Add `PetscLogHandlerGetStagePerfInfo()`.
    * Add `PetscLogStageGetPerfInfo()`.
    * Add `PETSCLOGHANDLERNVTX` implementation of `PetscLogHandler`.
  - PetscViewer:
    * Add `PetscViewerASCIIOpenWithFileUnit()` and
      `PetscViewerASCIISetFileUnit()`.
  - Vec:
    * Add `VecErrorWeightedNorms()` to unify weighted local truncation
      error norms used in TS.
    * Add CUDA/HIP implementations for `VecAbs()`, `VecSqrt()`, `VecExp()`,
      `VecLog()`, `VecPointwiseMax()`, `VecPointwiseMaxAbs()`, and
      `VecPointwiseMin()`.
    * Add `VecMAXPBY()`.
    * Deprecate `VecChop()` in favor of `VecFilter()`.
    * Add `VecCreateFromOptions()`.
  - Mat:
    * Add `MatCreateDenseFromVecType()`.
    * Add support for calling `MatDuplicate()` on a matrix preallocated
      via `MatSetPreallocationCOO()`, and then `MatSetValuesCOO()` on the
      new matrix.
    * Remove MATSOLVERSPARSEELEMENTAL since it is no longer functional
    * Add `MATSELLCUDA`. It supports fast `MatMult()`, `MatMultTranspose()`,
      and `MatMultAdd()` on GPUs.
    * Add support for `MAT_FACTOR_LU` and `MAT_FACTOR_CHOLESKY` with
      `MATSOLVERMUMPS` for `MATNEST`.
    * `MatGetFactor()` can now return NULL for some combinations of
       matrices and solvers types. This is to support those combinations
       that can only be inspected at runtime (i.e. MatNest with AIJ blocks
       vs MatNest with SHELL blocks).
    * Remove `MatSetValuesDevice()`, `MatCUSPARSEGetDeviceMatWrite()`,
      `MatKokkosGetDeviceMatWrite`.
    * Add `MatDenseCUDASetPreallocation()` and `MatDenseHIPSetPreallocation()`.
    * Add support for `KOKKOS` in `MATH2OPUS`.
    * Add `-pc_precision` single option for use with `MATSOLVERSUPERLU_DIST`.
    * Add `MATDIAGONAL` which can be created with `MatCreateDiagonal()`.
    * Add `MatDiagonalGetDiagonal()`, `MatDiagonalRestoreDiagonal()`,
      `MatDiagonalGetInverseDiagonal()`, and
      `MatDiagonalRestoreInverseDiagonal()`.
    * Add support for `MatLoad()` and `MatView()` to load and store
      `MATMPIAIJ` matrices that have more than `PETSC_INT_MAX` nonzeros,
      so long as each rank has fewer than `PETSC_INT_MAX`.
    * Add `MatLRCSetMats()` and register creation routine for `MatLRC`.
    * Add CUDA/HIP implementation for `MatGetDiagonal()`.
    * Add a Boolean parameter to `MatEliminateZeros()` to force the removal
      of zero diagonal coefficients.
    * Expose `MatComputeVariableBlockEnvelope()` in public headers.
    * Add `MatEliminateZeros()` implementations for `MatBAIJ` and `MatSBAIJ`.
    * Deprecate `MatChop()` in favor of `MatFilter()`, with two additional
      Boolean parameters to compress the underlying storage and keep or
      discard near-zero diagonal coefficients.
    * Add `MatCreateFromOptions()`.
    * Add `MatSTRUMPACKGetReordering()`, `MatSTRUMPACKSetGeometricNxyz()`,
      `MatSTRUMPACKSetGeometricComponents()`,
      `MatSTRUMPACKSetGeometricWidth()`, `MatSTRUMPACKGetColPerm()`,
      `MatSTRUMPACKSetGPU()`, `MatSTRUMPACKGetGPU()`,
      `MatSTRUMPACKSetCompression()`, `MatSTRUMPACKGetCompression()`,
      `MatSTRUMPACKSetCompRelTol()`, `MatSTRUMPACKGetCompRelTol()`,
      `MatSTRUMPACKSetCompAbsTol()`, `MatSTRUMPACKGetCompAbsTol()`,
      `MatSTRUMPACKSetCompMinSepSize()`, `MatSTRUMPACKGetCompMinSepSize()`,
      `MatSTRUMPACKSetCompLeafSize()`, `MatSTRUMPACKGetCompLeafSize()`,
      `MatSTRUMPACKSetCompLossyPrecision()`,
      `MatSTRUMPACKGetCompLossyPrecision()`,
      `MatSTRUMPACKSetCompButterflyLevels()`,
      `MatSTRUMPACKGetCompButterflyLevels()`.
    * Add `MAT_STRUMPACK_GEOMETRIC`, `MAT_STRUMPACK_AMD`, `MAT_STRUMPACK_MMD`,
      `MAT_STRUMPACK_AND`, `MAT_STRUMPACK_MLF`, `MAT_STRUMPACK_SPECTRAL`
      to `MatSTRUMPACKReordering`.
    * Add `MatSTRUMPACKCompressionType`.
    * Remove `MatSTRUMPACKSetHSSLeafSize()`, `MatSTRUMPACKSetHSSMaxRank()`,
      `MatSTRUMPACKSetHSSMinSize()`, `MatSTRUMPACKSetHSSMinSepSize()`,
      `MatSTRUMPACKSetHSSAbsTol()`, `MatSTRUMPACKSetHSSRelCompTol()`,
      `MatSTRUMPACKSetHSSRelTol()`.
  - PC:
    * Add `PCMatGetApplyOperation()` and `PCMatSetApplyOperation()`.
    * Add `PCReduceFailedReason()`.
    * Add `PCSetKSPNestLevel()` and `PCSetKSPNestLevel()`.
    * Refactor PCMPI to be a private system used automatically when
      `-mpi_linear_solver_server` is used. The KSP and PC objects that
      solve the system now inherit any prefix provided initially with
      `KSPSetPrefix()` and do not require the previously required
      `mpi_` prefix.
    * Add option `-fieldsplit_1_pc_hpddm_schur_precondition` to use
      `PCHPDDM` on the Schur complements from `PCFIELDSPLIT`.
    * Add `PCGAMGSetAggressiveSquareGraph()` to use square graph method
      for aggressive coarsening that was the previous default coarsening
      approach before release 3.19.
    * Add `PCGAMGSetAggressiveMISk()` to set the number of levels (k) of
      aggressive MIS-k coarseing (2 is very common).
    * Add `PCGAMGSetMinDegreeOrderingMISk()` to use a minimum degree
      ordering for the (greedy) MIS-k algorithm.
    * Change `PCGAMGSetUseParallelCoarseGridSolve()` to
      `PCGAMGSetParallelCoarseGridSolve()`.
    * Add `PCGAMGSetRecomputeEstEig()` to set flag to have Chebyshev
      recompute its eigen estimates (default set to true).
  - KSP:
    * Add `KSPSetMinimumIterations()` and `KSPGetMinimumIterations()`.
    * Add `KSPSetNestLevel()` and `KSPGetNestLevel()`.
    * Support `KSPSetInitialGuessNonzero()` with `KSPPREONLY` and
      `PCDISTRIBUTE` when it is called on both the outer and inner KSP.
  - SNES:
    * Add a convenient, developer-level SNESConverged() function that
      runs the convergence test and updates the internal converged reason.
    * Swap the order of monitor and convergence test. Now monitors are
      always called after a convergence test.
    * Deprecate option -snes_ms_norms in favor of -snes_norm_schedule always.
  - TS:
    * Remove `TSErrorWeightedNormInfinity()`, `TSErrorWeightedNorm2()`,
      `TSErrorWeightedENormInfinity()`, `TSErrorWeightedENorm2()` since
      the same functionality can be obtained with `VecErrorWeightedNorms()`.
    * Add support for time-dependent solvers with varying solution size
      using `TSSetResize()`.
    * Add support for Diagonally Implicit Runge-Kutta methods with the new
      `TSDIRK` type.
  - TAO:
    * Add `TaoADMMGetRegularizerCoefficient()`.
    * Add `TAOBNCG`, `TaoBNCGGetType()` and `TaoBNCGSetType()`.
  - DM/DA:
    * Add support for `DMDAGetElements()` for Fortran.
    * Add support for clearing named vectors with
      `DMClearNamedGlobalVectors()` and `DMClearNamedLocalVectors()`.
    * Add `DMPrintCellIndices()` for debugging.
    * Add `DMUseTensorOrder()`.
    * Add `DMCeedCreate()`, `DMCeedComputeGeometry()`, and `DMCeedDestroy()`.
  - DMSwarm:
    * Add scatter mode to `DMSwarmProjectFields()` and no longer create
      vectors.
    * Promote `DMSwarmDataFieldGetEntries()`,
      `DMSwarmDataFieldRestoreEntries()`,
      `DMSwarmDataBucketGetDMSwarmDataFieldByName()`,
      `DMSwarmDataBucketGetDMSwarmDataFieldIdByName()`, and
      `DMSwarmDataBucketQueryDMSwarmDataFieldByName()` to public interface.
  - DMPlex:
    * Add `DMPlexTransformExtrudeGetPeriodic()` and
      `DMPlexTransformExtrudeSetPeriodic()`.
    * Replace `DMPlexGetGhostCellStratum()` with `DMPlexGetCellTypeStratum()`.
    * Add `DMPlexSetUseMatClosurePermutation()` and
      `DMPlexGetUseMatClosurePermutation()`.
    * Add `DMPlexGetUseCeed()`, `DMPlexSetUseCeed()`, and
      `DMPlexSNESComputeResidualCEED()`.
    * Add `DMPlexSNESComputeResidualDS()`.
  - FE/FV:
    * Add `PLEXFE_QFUNCTION` macro to create CEED QFunctions from Plex
      pointwise functions.
  - DMNetwork:
    * Add `DMNetworkViewSetShowRanks()`, `DMNetworkViewSetViewRanks()`,
      `DMNetworkViewSetShowGlobal()`, `DMNetworkViewSetShowVertices()`,
      `DMNetworkViewSetShowNumbering()`.
    * Add `-dmnetwork_view_all_ranks`, `-dmnetwork_view_rank_range`,
      `-dmnetwork_view_no_vertices`, `-dmnetwork_view_no_numbering`,
      for viewing DMNetworks with the Matplotlib viewer.
    * Add `-dmnetwork_view_zoomin_vertices`
      `-dmnetwork_view_zoomin_vertices_padding` for viewing `DMNetworks`
      with the Matplotlib viewer.
  - DT:
    * Add `PETSCFEVECTOR` for making a finite element that is a vector
      of copies of another finite element.
    * Add `PetscFECreateVector()`.
    * Add `PETSCDUALSPACESUM` for a finite element dual basis that is
      the sum of other dual bases.
    * Add `PetscDualSpaceCreateSum()`.
    * Add `PetscDualSpaceSumSetNumSubspaces()`.
    * Add `PetscDualSpaceSumGetNumSubspaces()`.
    * Add `PetscDualSpaceSumSetSubspace()`.
    * Add `PetscDualSpaceSumGetSubspace()`.
    * Add `PetscDualSpaceSumSetConcatenate()`.
    * Add `PetscDualSpaceSumGetConcatenate()`.
    * Add `PetscDualSpaceSumSetInterleave()`.
    * Add `PetscDualSpaceSumGetInterleave()`.
    * Add `PetscSpaceSumSetInterleave()`.
    * Add `PetscSpaceSumGetInterleave()`.
    * Add `PetscDualSpaceGetInteriorSection()`.
  - Fortran:
    * Add `PetscCheck()` and `PetscCheckA()` for Fortran.
    * Change `PETSC_HAVE_FORTRAN` to `PETSC_USE_FORTRAN_BINDINGS` to
      indicate if PETSc is built with Fortran bindings.

- Update to version 3.19:
  - General:
    * Add `PetscOptionsBegin()`, `PetscOptionsEnd()`, `PetscOptionsInt()`,
      `PetscOptionsBool()`, `PetscOptionsIntArray()`, `PetscOptionsReal()`,
      `PetscOptionsRealArray()`, and `PetscOptionsScalar()` for Fortran.
    * Add `PetscAssertPointer()` as a replacement for `PetscValidPointer()`,
      `PetscValidCharPointer()`, `PetscValidIntPointer()`,
      `PetscValidInt64Pointer()`, `PetscValidCountPointer()`,
      `PetscValidBoolPointer()`, `PetscvalidScalarPointer()` and
      `PetscValidRealPointer()`.
    * Convert standard header-guards in PETSc header-files to
      `#pragma once`. Users relying on specific preprocessor definitions to
      determine whether particular PETSc headers (e.g. `petscdm.h` used
      to be guarded by `PETSCDM_H`) have been included will find that this
      no longer works. While header-guards are technically "public"
      (insofar that they appear in public header-files), their name and
      value are considered implementation details.
  - Sys:
    * Add `PetscDeviceContextGetStreamHandle()` to return a handle to
      the stream the current device context is using.
    * Add utility functions `PetscGetCurrentCUDAStream()` and
      `PetscGetCurrentHIPStream()` to return the GPU stream the current
      device context is using.
    * Add `PetscStrcmpAny()` to compare against multiple non-empty strings.
    * Change arguments 4 and 5 of `PetscViewerBinaryReadAll()` and
      `PetscViewerBinaryWriteAll()` to `PetscInt64`.
    * Add `PetscIsCloseAtTolScalar()`.
    * Remove `PetscTellMyCell()` and related runtime option.
    * Remove `PetscTextBelt()` and related runtime option.
    * Remove deprecated `-malloc [no]` startup option.
    * Remove deprecated `-malloc_info` startup option.
    * Remove deprecated `-log_summary` option.
    * Remove `PetscURLShorten()`, it has not worked since 2019.
    * Move `PetscIntStackCreate()`, `PetscIntStackDestroy()`,
      `PetscIntStackPush()`, `PetscIntStackPop()`, and `PetscIntStackEmpty()`
      declarations to public API in `petsclog.h`.
    * Add `-on_error_malloc_dump` option.
  - Event Logging:
    * Add `PetscLogState` interface for describing profiling events and stages
    * Add `PetscLogHandler` interface that interprets the profiling events
      of a `PetscLogState`
    * Add `PETSCLOGHANDLERDEFAULT` implementation of `PetscLogHandler`
    * Add `PETSCLOGHANDLERNESTED` implementation of `PetscLogHandler`
    * Add `PETSCLOGHANDLERTRACE` implementation of `PetscLogHandler`
    * Add `PetscLogHandlerCreateTrace()`
    * Add `PETSCLOGHANDLERMPE` implementation of `PetscLogHandler`
    * Add `PETSCLOGHANDLERPERFSTUBS` implementation of `PetscLogHandler`
    * Add `PETSCLOGHANDLERLEGACY` implementation of `PetscLogHandler`
    * Add `PetscLogHandlerCreateLegacy()`
    * Add `PetscLogPerfstubsBegin()` for log handling with PerfStubs/TAU
    * Add `PetscLogLegacyCallbacksBegin()` to transition old log handler
      callbacks to the `PetscLogHandler`-based approach
    * Add `PetscLogHandlerStart()` to connect a `PetscLogHandler` to
      PETSc's global logging events.
    * Add `PetscLogStageGetName()`.
    * Add `PetscLogEventGetName()`.
    * Add `PetscLogEventsPause()` and `PetscLogEventsResume()` to isolate
      a logging event from unrelated in-process events.
    * Add `PetscLogClassGetClassId()`.
    * Add `PetscLogClassIdGetName()`.
    * Deprecate `PetscLogClassPerfInfoClear()`,
    `PetscLogClassPerfLogCreate()`, and `PetscLogClassPerfLogDestroy()`.
    * Deprecate `PetscClassPerfLogEnsureSize()`, `PetscClassRegInfoDestroy()`,
      `PetscClassRegLogCreate()`, `PetscClassRegLogDestroy()`,
      `PetscClassRegLogGetClass()`, and `PetscClassRegLogRegister()`.
    * Deprecate `PetscEventPerfInfoClear()` and `PetscEventPerfInfoCopy()`.
    * Deprecate `PetscEventPerfLogActivate()`,
      `PetscEventPerfLogActivateClass()`, `PetscEventPerfLogCreate()`,
      `PetscEventPerfLogDeactivate()`, `PetscEventPerfLogDeactivateClass()`,
      `PetscEventPerfLogDeactivatePop()`, `PetscEventPerfLogDeactivatePush()`,
      `PetscEventPerfLogDestroy()`, `PetscEventPerfLogEnsureSize()`,
      `PetscEventPerfLogGetVisible()`, and `PetscEventPerfLogSetVisible()`.
    * Deprecate `PetscEventRegLogCreate()`, `PetscEventRegLogDestroy()`,
      `PetscEventRegLogGetEvent()`, and `PetscEventRegLogRegister()`.
    * Deprecate `PetscStageLogCreate()`, `PetscStageLogDestroy()`,
      `PetscStageLogGetActive()`, `PetscStageLogGetClassPerfLog()`,
      `PetscStageLogGetClassRegLog()`, `PetscStageLogGetEventRegLog()`,
      `PetscStageLogGetStage()`, `PetscStageLogGetVisible()`,
      `PetscStageLogPop()`, `PetscStageLogPush()`, `PetscStageLogRegister()`,
      `PetscStageLogSetActive()`, `PetscStageLogSetVisible()`,
      `PetscStageLogGetCurrent()`, and `PetscStageLogGetEventPerfLog()`.
    * Deprecate `PetscLogGetStageLog()`.
    * Deprecate `PetscLogPushCurrentEvent_Internal()`.
    * Deprecate `PetscLogPopCurrentEvent_Internal()`.
    * Deprecate `PetscLogAllBegin()`.
    * Deprecate `PetscLogSet()`.
    * Add `PetscLogHandlerGetEventPerfInfo()`.
    * Add `PetscLogHandlerSetLogActions()`.
    * Add `PetscLogHandlerSetLogObjects()`.
    * Add `PetscLogHandlerLogObjectState()`.
    * Add `PetscLogHandlerGetNumObjects()`.
    * Add `PetscLogHandlerEventDeactivatePush()`.
    * Add `PetscLogHandlerEventDeactivatePop()`.
    * Add `PetscLogHandlerEventsPause()`.
    * Add `PetscLogHandlerEventsResume()`.
    * Add `PetscLogHandlerDump()`.
    * Add `PetscLogHandlerStageSetVisible()`.
    * Add `PetscLogHandlerStageGetVisible()`.
    * Add `PetscLogHandlerGetStagePerfInfo()`.
    * Add `PetscLogStageGetPerfInfo()`.
    * Add `PETSCLOGHANDLERNVTX` implementation of `PetscLogHandler`.
  - PetscViewer:
    * Add `PetscViewerASCIIOpenWithFileUnit()` and
      `PetscViewerASCIISetFileUnit()`.
  - Vec:
    * Add `VecErrorWeightedNorms()` to unify weighted local truncation
      error norms used in `TS`.
    * Add CUDA/HIP implementations for `VecAbs()`, `VecSqrt()`,
      `VecExp()`, `VecLog()`, `VecPointwiseMax()`, `VecPointwiseMaxAbs()`
      and `VecPointwiseMin()`.
    * Add `VecMAXPBY()`.
    * Deprecate `VecChop()` in favor of `VecFilter()`.
    * Add `VecCreateFromOptions()`.
  - PetscSection:
    * Add `PetscSectionResetClosurePermutation()`.
  - Mat:
    * Add `MatCreateDenseFromVecType()`.
    * Add support for calling `MatDuplicate()` on a matrix preallocated
      via `MatSetPreallocationCOO()`, and then `MatSetValuesCOO()` on
      the new matrix.
    * Remove `MATSOLVERSPARSEELEMENTAL` since it is no longer functional.
    * Add `MATSELLCUDA`. It supports fast `MatMult()`, `MatMultTranspose()`,
      and `MatMultAdd()` on GPUs.
    * Add support for `MAT_FACTOR_LU` and `MAT_FACTOR_CHOLESKY` with
      `MATSOLVERMUMPS` for `MATNEST`.
    * `MatGetFactor()` can now return `NULL` for some combinations of
      matrices and solvers types. This is to support those combinations
      that can only be inspected at runtime (i.e. MatNest with AIJ blocks
      vs MatNest with SHELL blocks).
    * Remove `MatSetValuesDevice()`, `MatCUSPARSEGetDeviceMatWrite()`,
      `MatKokkosGetDeviceMatWrite`
    * Add `MatDenseCUDASetPreallocation()` and `MatDenseHIPSetPreallocation()`.
    * Add support for KOKKOS in `MATH2OPUS`.
    * Add `-pc_precision single` option for use with `MATSOLVERSUPERLU_DIST`.
    * Add `MATDIAGONAL` which can be created with `MatCreateDiagonal()`.
    * Add `MatDiagonalGetDiagonal()`, `MatDiagonalRestoreDiagonal()`,
      `MatDiagonalGetInverseDiagonal()`, and
      `MatDiagonalRestoreInverseDiagonal()`.
    * Add support for `MatLoad()` and `MatView()` to load and store
      `MATMPIAIJ` matrices that have more than `PETSC_INT_MAX` nonzeros,
      so long as each rank has fewer than `PETSC_INT_MAX`.
    * Add `MatLRCSetMats()` and register creation routine for `MatLRC`.
    * Add CUDA/HIP implementation for `MatGetDiagonal()`.
    * Add a Boolean parameter to `MatEliminateZeros()` to force the
      removal of zero diagonal coefficients.
    * Expose `MatComputeVariableBlockEnvelope()` in public headers.
    * Add `MatEliminateZeros()` implementations for `MatBAIJ` and
      `MatSBAIJ`.
    * Deprecate `MatChop()` in favor of `MatFilter()`, with two additional
      Boolean parameters to compress the underlying storage and keep or
      discard near-zero diagonal coefficients.
    * Add `MatCreateFromOptions()`.
    * Add `MatSTRUMPACKGetReordering()`, `MatSTRUMPACKSetGeometricNxyz()`,
      `MatSTRUMPACKSetGeometricComponents()`,
      `MatSTRUMPACKSetGeometricWidth()`, `MatSTRUMPACKGetColPerm()`,
      `MatSTRUMPACKSetGPU()`, `MatSTRUMPACKGetGPU()`,
      `MatSTRUMPACKSetCompression()`, `MatSTRUMPACKGetCompression()`,
      `MatSTRUMPACKSetCompRelTol()`, `MatSTRUMPACKGetCompRelTol()`,
      `MatSTRUMPACKSetCompAbsTol()`, `MatSTRUMPACKGetCompAbsTol()`,
      `MatSTRUMPACKSetCompMinSepSize()`, `MatSTRUMPACKGetCompMinSepSize()`,
      `MatSTRUMPACKSetCompLeafSize()`, `MatSTRUMPACKGetCompLeafSize()`,
      `MatSTRUMPACKSetCompLossyPrecision()`,
      `MatSTRUMPACKGetCompLossyPrecision()`,
      `MatSTRUMPACKSetCompButterflyLevels()`,
      `MatSTRUMPACKGetCompButterflyLevels()`.
    * Add `MAT_STRUMPACK_GEOMETRIC`, `MAT_STRUMPACK_AMD`, `MAT_STRUMPACK_MMD`,
      `MAT_STRUMPACK_AND`, `MAT_STRUMPACK_MLF`, `MAT_STRUMPACK_SPECTRAL`
      to `MatSTRUMPACKReordering`.
    * Add `MatSTRUMPACKCompressionType`.
    * Remove `MatSTRUMPACKSetHSSLeafSize()`, `MatSTRUMPACKSetHSSMaxRank()`,
      `MatSTRUMPACKSetHSSMinSize()`, `MatSTRUMPACKSetHSSMinSepSize()`,
      `MatSTRUMPACKSetHSSAbsTol()`, `MatSTRUMPACKSetHSSRelCompTol()`,
      `MatSTRUMPACKSetHSSRelTol()`.
  - PC:
    * Add `PCMatGetApplyOperation()` and `PCMatSetApplyOperation()`.
    * Add `PCReduceFailedReason()`.
    * Add `PCSetKSPNestLevel()` and `PCSetKSPNestLevel()`.
    * Refactor `PCMPI` to be a private system used automatically when
      `-mpi_linear_solver_server` is used. The `KSP` and `PC` objects
      that solve the system now inherit any prefix provided initially
      with `KSPSetPrefix()` and do not require the previously required
      `mpi_` prefix.
    * Add option `-fieldsplit_1_pc_hpddm_schur_precondition` to use
      `PCHPDDM` on the Schur complements from `PCFIELDSPLIT`.
    * Add `PCGAMGSetAggressiveSquareGraph()` to use square graph
      method for aggressive coarsening that was the previous default
      coarsening approach before release 3.19.
    * Add `PCGAMGSetAggressiveMISk()` to set the number of levels (k)
      of aggressive MIS-k coarseing (2 is very common).
    * Add `PCGAMGSetMinDegreeOrderingMISk()` to use a minimum degree
      ordering for the (greedy) MIS-k algorithm.
    * Change `PCGAMGSetUseParallelCoarseGridSolve()` to
      `PCGAMGSetParallelCoarseGridSolve()`.
    * Add `PCGAMGSetRecomputeEstEig()` to set flag to have Chebyshev
      recompute its eigen estimates (default set to true).
  - KSP:
    * Add `KSPSetMinimumIterations()` and `KSPGetMinimumIterations()`.
    * Add `KSPSetNestLevel()` and `KSPGetNestLevel()`.
    * Support `KSPSetInitialGuessNonzero()` with `KSPPREONLY` and
      `PCDISTRIBUTE` when it is called on both the outer and inner `KSP`.
  - SNES:
    * Add a convenient, developer-level `SNESConverged()` function
      that runs the convergence test and updates the internal
      converged reason.
    * Swap the order of monitor and convergence test. Now monitors
      are always called after a convergence test.
    * Deprecate option `-snes_ms_norms` in favor of
      `-snes_norm_schedule always`.
  - SNESLineSearch:
  - TS:
    * Remove `TSErrorWeightedNormInfinity()`, `TSErrorWeightedNorm2()`,
      `TSErrorWeightedENormInfinity()`, `TSErrorWeightedENorm2()`
      since the same functionality can be obtained with
      `VecErrorWeightedNorms()`.
    * Add support for time-dependent solvers with varying solution
      size using `TSSetResize()`.
    * Add support for Diagonally Implicit Runge-Kutta methods with
      the new `TSDIRK` type.
  - TAO:
    * Add `TaoADMMGetRegularizerCoefficient()`.
    * Add `TAOBNCG`, `TaoBNCGGetType()` and `TaoBNCGSetType()`.
  - DM/DA:
    * Add support for `DMDAGetElements()` for Fortran.
    * Add support for clearing named vectors with
      `DMClearNamedGlobalVectors()` and `DMClearNamedLocalVectors()`.
    * Add `DMPrintCellIndices()` for debugging.
    * Add `DMUseTensorOrder()`.
    * Add `DMCeedCreate()`, `DMCeedComputeGeometry()`, and `DMCeedDestroy()`.
  - DMSwarm:
    * Add scatter mode to `DMSwarmProjectFields()` and no longer
      create vectors.
    * Promote `DMSwarmDataFieldGetEntries()`,
      `DMSwarmDataFieldRestoreEntries()`,
      `DMSwarmDataBucketGetDMSwarmDataFieldByName()`,
      `DMSwarmDataBucketGetDMSwarmDataFieldIdByName()`, and
      `DMSwarmDataBucketQueryDMSwarmDataFieldByName()` to public interface.
  - DMPlex:
    * Add `DMPlexTransformExtrudeGetPeriodic()` and
      `DMPlexTransformExtrudeSetPeriodic()`.
    * Replace `DMPlexGetGhostCellStratum()` with `DMPlexGetCellTypeStratum()`.
    * Add `DMPlexSetUseMatClosurePermutation()` and
      `DMPlexGetUseMatClosurePermutation()`.
    * Add `DMPlexGetUseCeed()`, `DMPlexSetUseCeed()`, and
      `DMPlexSNESComputeResidualCEED()`.
    * Add `DMPlexSNESComputeResidualDS()`.
  - FE/FV:
    * Add `PLEXFE_QFUNCTION` macro to create CEED QFunctions from
      Plex pointwise functions.
  - DMNetwork:
    * Add `DMNetworkViewSetShowRanks()`, `DMNetworkViewSetViewRanks()`,
      `DMNetworkViewSetShowGlobal()`, `DMNetworkViewSetShowVertices()`,
      `DMNetworkViewSetShowNumbering()`.
    * Add `-dmnetwork_view_all_ranks` `-dmnetwork_view_rank_range`
      `-dmnetwork_view_no_vertices` `-dmnetwork_view_no_numbering`
      for viewing DMNetworks with the Matplotlib viewer.
    * Add `-dmnetwork_view_zoomin_vertices`
      `-dmnetwork_view_zoomin_vertices_padding` for viewing DMNetworks
      with the Matplotlib viewer.
  - DT:
    * Add `PETSCFEVECTOR` for making a finite element that is a vector
      of copies of another finite element.
    * Add `PetscFECreateVector()`.
    * Add `PETSCDUALSPACESUM` for a finite element dual basis that
      is the sum of other dual bases.
    * Add `PetscDualSpaceCreateSum()`.
    * Add `PetscDualSpaceSumSetNumSubspaces()`.
    * Add `PetscDualSpaceSumGetNumSubspaces()`.
    * Add `PetscDualSpaceSumSetSubspace()`.
    * Add `PetscDualSpaceSumGetSubspace()`.
    * Add `PetscDualSpaceSumSetConcatenate()`.
    * Add `PetscDualSpaceSumGetConcatenate()`.
    * Add `PetscDualSpaceSumSetInterleave()`.
    * Add `PetscDualSpaceSumGetInterleave()`.
    * Add `PetscSpaceSumSetInterleave()`.
    * Add `PetscSpaceSumGetInterleave()`.
    * Add `PetscDualSpaceGetInteriorSection()`.
  - Fortran:
    * Add `PetscCheck()` and `PetscCheckA()` for Fortran.
    * Change `PETSC_HAVE_FORTRAN` to `PETSC_USE_FORTRAN_BINDINGS`
      to indicate if PETSc is built with Fortran bindings.
- Use packaged libYAML instead of building the clone incorporated
  in the PETSc source code. This allows to address security issues
  through updates to that package (CVE-2024-35328, boo#1226364).
- Refresh & Rename:
  petsc-3.3-p2-no-rpath.patch -> Remove-rpath-test.patch
- Add:
  Allow-lib64-as-library-directory-for-scalapack.patch

-------------------------------------------------------------------
Sun Dec  3 12:24:27 UTC 2023 - Atri Bhattacharya <badshah400@gmail.com>

- Make a symlink to the real pkgconfig dir (for example, in an
  installed system) for package's absurdly located pkgconfig file.
  This is a minimal workaround to boo#1217751, I guess.
- Cosmetic touch-ups.

-------------------------------------------------------------------
Mon Oct 23 19:21:28 UTC 2023 - Egbert Eich <eich@suse.com>

- Disable HPC flavors on i586

-------------------------------------------------------------------
Mon Oct 23 12:01:23 UTC 2023 - Nicolas Morey <nicolas.morey@suse.com>

- Drop support for obsolete openmpi[123]
- Prepare support for openmpi5

-------------------------------------------------------------------
Wed Mar 22 02:39:29 UTC 2023 - Stefan Brüns <stefan.bruens@rwth-aachen.de>

- Update to version 3.18.5.
  * Too many changes to list, for details see
    https://petsc.org/release/docs/changes/
- Fix broken usage of MAKEFLAGS, causing build failures with
  gmake >= 4.4.1.

-------------------------------------------------------------------
Wed Feb 15 05:13:56 UTC 2023 - Stefan Brüns <stefan.bruens@rwth-aachen.de>

- Remove incorrect library symlink with major version only.

-------------------------------------------------------------------
Mon Feb  6 07:16:48 UTC 2023 - Stefan Brüns <stefan.bruens@rwth-aachen.de>

- Update to version 3.18.4.
  * Too many changes to list, for details see 
    https://petsc.org/release/docs/changes/
- Use Python3 also on Leap/SLE, Python 2.7 is no longer supported
- Clean up spec file
- Remove unreproducible build host core count from petscvariables
  (NPMAX, MAKE_NP etc).
- Remove doc subpackage, documentation is no longer included in
  upstream tarball.

-------------------------------------------------------------------
Sat Jul 16 19:49:40 UTC 2022 - Stefan Brüns <stefan.bruens@rwth-aachen.de>

- Fix library package name for non-HPC flavors.
- Remove openmpi1 for non-HPC.
- Correct valgrind-devel BuildRequires.
- Add rpmlintrc to ignore some empty files in examples

-------------------------------------------------------------------
Wed Feb 16 15:39:12 UTC 2022 - Egbert Eich <eich@suse.com>

- Fix HPC module settings (bsc#1195782).
- Remove dependency on librt for libsuitparse to make the non-HPC
  build on Factory again.

-------------------------------------------------------------------
Wed Mar 24 09:50:05 UTC 2021 - Egbert Eich <eich@suse.com>

- Update to version 3.14.5.
  * Documentation & man page fixes, removal of non-existing functions.
  * CPARDISO: stick to OpenMPI BLACS when needed
  * bugfix for MatMatMultSymbolic_MPIAIJ_MPIDense() when Bbn1 = 0.
    Bb (column block size) zero lead to infinite loop in
    MatMatMultNumeric_MPIAIJ_MPIDense() with n=0.
  * petscviewer: fix the fortran bindings of XXXViewFromOptions
    when called with obj=PETSC_NULL_XXX.
  * PetscOptionsPrefixPush: Accept numbers if the stack is not
    empty.
  * PetscOptionsClearValue: Also clear 'help_intro' slot.
  * PetscOptionsDestroyDefault: Fix possible NULL-dereference.
  * PetscOptionsUsed: Fix for case-insensitive string comparison.
  * Do not use MPI_Bcast() on a single rank - This allows direct
    reading  of much larger files, in, for example, MatLoad_SeqAIJ_Binary.
  * PCHPDDM: fix for KSPLSQR.
  * DMPlexVTKWriteAll_VTU: numerous bugfixes.
  * MatBAIJ: FIx specialization for size 9.

-------------------------------------------------------------------
Wed Feb 24 16:27:54 UTC 2021 - Christian Goll <cgoll@suse.com>

- Updated to version 3.14.4 (jsc#SLE-14959)
  * versionToTuple: ignore leading strings in package versions.
      i.e 5.3.3consortium -> 5.3.3
  * Add error checks for integer overflow for
    MatSeqXAIJSetPreallocation when the user provides nnz[].
    Otherwise PetscMalloc() can produce error messages with requests to
    absurds amount of memory.
    Improve the error message for PetscIntMultError() and other casting
    routines and add more seealso entries to the manual pages.
  * Update dmlocalts.c to prevent zeroing out of locX_t after being computed
    in TSComputeIJacobian_DMLocal.
  * nargs.Arg: Remove interactiveness; provide useful error when key is not
    found.
  * DMPlexLandau: fix implicit conversion.
  * Allow users to mistaken use openmpi or mpich when setting mpi or mpi-dir
    and consistently use local variable 'name'
  * Consume -help in PetscOptionsSetValue() so it can be set from RC file etc.
  * Enable search patterns to have 'src*' at start.
  * Fix Matlab int32 to match changed changes in PETSc data types.
  * Generate error instead of crashing when estimating eigenvalues for
    Chebyshev, no right hand side vector is available and the user requested
    to not use a noisy right hand side.
  * Fix pcmgsetlevels() for Fortran to properly convert the C MPI communictors
    to Fortran.
  * Fix PCMGSetLevels_MG() to support the use of MPI_COMM_NULL for
    communicators that that live on a subset of the orginal communicator.
  *  Add additional documentation material to PCMGSetLevels() explaining how
     one must handle the restriction and interpolation operations that move
     between different levels which have a different number of MPI ranks.
  * Call PetscCUDAInitializeCheck() in
    MatConvert_SeqAIJ_SeqAIJCUSPARSE since it uses cuSparse().
  * Missing this sometimes produces errors in the CU tests, but other times
    it passes. I don't understand why it is not needed.
  * checkbadSource now prints line numbers of where it finds problems.
  * Add support to Fortran interface for PCASMGetSubKSP() and PCGASMGetSubKSP()
    to use PETSC_NULL_INT for first two arguments.
  * Missing define in landaucu.cu.
  * Fix for PCView_BJacobi() case when neither if case is statisfied.
  * DMCreateInterpolation() requires a custom Fortran stub because it RETURNS
    an optional vector.
  * Add -da_refine to manual page for DMDASetRefinementFactor().
  * AIJMKL: cannot print a scalar in case of complex.
  * Fix memory leaks in TSTrajectoryCreate_Memory() and possibly bugs
  * Don't generate an error if the user does not free all objects while using
    SuperLU_DIST.
  * -ksp_view -ksp_type gmres -pc_type gasm fails on one process. Fixed by
    removing special case handling of size 1 that tried to reuse
    orginal viewer as subviewer which does not work.
  * Add KSPGMRESSetBreakdownTolerance() and -ksp_gmres_breakdown_tolerance
    - to restore old GMRES behaviour for MOOSE.
  * Fix bug introduced by PCASMSetSubMatType() when MAT_REUSE_MATRIX is
    used with a different type of pmat compared to pmat[i].
  * Always destroy previously created pmat[i] and use   MAT_INITIAL_MATRIX
  * Clarify integers set with to ISCreateBlock() and ISBlockSetIndices() in
    manual pages.
  * Remove ierr = VecSetInf(ksp->vec_sol);CHKERRQ(ierr); from
    KSPSetUp_Chebyshev() since ksp->vec_sol may not yet exist and it is not
    needed since VecSetInf(ksp->vec_sol) is set in KSPSolve() just before
    the actual solve if ksp->reason = KSP_DIVERGED_PC_FAILED.
  * Remove mention of DMDAGetLocalInfoF90() since it does not exist, Fortran
    version has same name as C version.
  * MATSHELL: matrix sizes may not be known at creation time.
  * Pass PetscDrawSetSave() and PetscDrawSetSaveFinalImage() to
    PetscViewerGetSubViewer_Draw(). Otherwise MatView() on parallel matrices,
    for example, will not generate an image file.
  * config MPI: fix type of self.libdir (which is passed to os.path.join).
  * MUMPS: add -DBLR_MT when configuring --with-openmp.
  * missing PDIPM and typo in BQNLS for fortran imports.
  * Fixed issue where scalapack matrix is created with a communicator different
    from MPI_COMM_WORLD.
  * Fix PetscErrorCode typos in Fortran stubs.
  * Remove interface declarations for functions that don't exist.
  * SNESMultiblock: add back into build (had been missing -  still untested).
  * MATDAAD: remove vestigial references to deleted DAAD.
  * Fix device atomics with 64-bit indices and prefer long long over int64_t
  * petsc4py.py: set download-petsc4py-commit to None to overcome missing key
    error.
  * petsc4py: Update Cython build
      * Set `language_level` to `3str` if supported (Cython >= 0.29)
      * Initial preparations for upcoming release Cython 3.0
      * Require Cython >= 0.24, older versions do not longer work
  * Improve python-related entries in configure --help.
      * add missing --download-petsc4py option.
      * remove python options other than --with-python-exec
        which have no effect.
      * move --with-python-exec to PETSc section.
  * PetscPythonFindLibrary: One more way to get pythonlib.
    Hotfix for case when LDLIBRARY yields libpython<version>.a
    erroneously.
  * SLEPc: pass PYTHONPATH for slepc4py.
  * Add manual page for MATMPIDENSE.
  * Fix outdated mention of "-snes_ksp_ew_conv" in users manual.
  * Improve manual pages for MatGetValuesLocal() and MatGetValues() to clarify
    what values may be obtained with these routines.
  * Add to manual pages the use of call XXXView(x,0) from the debugger.
  * KSPGCR: add man pages for setting and getting restart.
  * Put the docs for -snes_test_jacobian in SNESSetFromOptions() instead of
    hidden away in developer routine.
  * Improve clarity of docs for PETSC_VIEWER_SOCKET with Matlab.
- Refactored patches:
  * petsc-3.3-p2-no-rpath.patch
  * petsc-3.7-fix-pastix-detection.patch

-------------------------------------------------------------------
Fri Feb  5 20:18:20 UTC 2021 - Egbert Eich <eich@suse.com>

- Add build support for gcc10 to HPC build (bsc#1174439).
- Add openmpi4 flavors.

-------------------------------------------------------------------
Thu Jan 28 18:30:29 UTC 2021 - Egbert Eich <eich@suse.com>

- Change 'Requires:' to other HPC packages to %requires_eq to depend
  on the exact version. This should take care of HPC packages ignoring
  proper ABI versioning.

-------------------------------------------------------------------
Thu Nov  5 16:52:47 UTC 2020 - Ana Guerrero Lopez <aguerrero@suse.com>

- Update to version 3.14.1
  * https://www.mcs.anl.gov/petsc/documentation/changes/314.html
- Refresh patches

-------------------------------------------------------------------
Tue Jun 23 12:43:57 UTC 2020 - Egbert Eich <eich@suse.com>

- Make sure, doc package is built for SLE (bsc#1173269).

-------------------------------------------------------------------
Wed Jan  8 15:40:51 UTC 2020 - Stefan Brüns <stefan.bruens@rwth-aachen.de>

- Force use of python3 on Tumbleweed. As the python2 executable was
  also set in petsc's configuration, dependent packages no longer
  depend on python2.
- Fix she-bangs in python scripts
- Only require python{2,3}-base packages instead of full packages.

-------------------------------------------------------------------
Wed Dec 11 17:31:03 UTC 2019 - Egbert Eich <eich@suse.com>

- Remove unneeded dependency from HPC devel package.

-------------------------------------------------------------------
Tue Dec  3 08:31:20 UTC 2019 - Egbert Eich <eich@suse.com>

- Update to version 3.12.2 (jsc#SLE-8505)
  * https://www.mcs.anl.gov/petsc/documentation/changes/312.html
- Remove petsc-3.3-p2-fix-shared-libs-sonames.patch
  link created directly in %install section
- Remove petsc-3.3-p2-dont-check-for-option-mistakes.patch
  not needed.
- Remove petsc-3.3-fix-error-detection-in-makefile.patch
  not needed.
- Add non-HPC build with openmpi3
- Add HPC builds for gcc8 & gcc 9 (jsc#SLE-7766 & jsc#SLE-8604).
- Disable openmpi1 builds for SLE/Leap > 15.1.
- Enable openmpi3 builds for Leap and SLE > 15.1 (jsc#SLE-7773).

-------------------------------------------------------------------
Wed Nov 27 16:38:25 UTC 2019 - Stefan Brüns <stefan.bruens@rwth-aachen.de>

- Reflect renaming of openmpi packages to openmpi1 in Tumbleweed,
  fixes unresolvable packages.
- Fix copy'n'paste error, mpi_vers vs. mpi_ver
- Add non-HPC openmpi2 flavor.

-------------------------------------------------------------------
Wed Aug 21 08:20:23 UTC 2019 - Ana Guerrero Lopez <aguerrero@suse.com>

- Update to version 3.11.3 (jsc#SLE-8505)
  - https://www.mcs.anl.gov/petsc/documentation/changes/311.html
  - Binaries have changed path from bin/ to lib/petsc/bin/
- Patches removed, merged by upstream
  * Python-Fix-a-number-of-scripts-to-by-Python-3-compliant.patch
  * petsc-fix-nonmpi.patch
- Patches refreshed
  * petsc-3.3-p2-fix-shared-libs-sonames.patch
  * petsc-3.3-p2-no-rpath.patch
  * petsc-3.3-p2-dont-check-for-option-mistakes.patch
  * petsc-3.3-fix-error-detection-in-makefile.patch
  * petsc-3.7-fix-pastix-detection.patch
- Set -fPIC also on x86_64

-------------------------------------------------------------------
Fri Jul 19 16:15:44 UTC 2019 - Egbert Eich <eich@suse.com>

- Upped memory constraints to 6G for non-ppc systems as well,
  leaving the special ppc treatment in place in case we need to up it
  some more there.

-------------------------------------------------------------------
Wed Jul 17 06:07:56 UTC 2019 - Michel Normand <normand@linux.vnet.ibm.com>

- update _constraints for PowerPC more than 4G memory
- Add BuildRequires libopenblas-gnu-hpc >=  0.3.6 for hpc to  avoid
  to build when openblas library not available.

-------------------------------------------------------------------
Tue Mar 26 15:29:56 UTC 2019 - Stefan Brüns <stefan.bruens@rwth-aachen.de>

- Disable pastix also in openmpi flavor, same as for serial and HPC flavors.
  Pastix is only built with openmpi, and not available in Factory.

-------------------------------------------------------------------
Wed Mar 20 18:15:58 UTC 2019 - Stefan Brüns <stefan.bruens@rwth-aachen.de>

- Fix building non-MPI flavors of packages depending on petsc
  Add petsc-fix-nonmpi.patch
- Do not move headers to /usr/include and symlink, causes problems with
  -isystem

-------------------------------------------------------------------
Wed Mar 13 23:34:19 UTC 2019 - Stefan Brüns <stefan.bruens@rwth-aachen.de>

- Fix spec for non-HPC, reenable serial and non-HPC openmpi build.
- Disable HYPRE for non-HPC, same as for HPC.

-------------------------------------------------------------------
Wed Feb 13 11:40:48 UTC 2019 - Egbert Eich <eich@suse.com>

- Consolidate use of openmpi1, openmpi2, openmpi3.
- Do not build non-HPC on SLE.

-------------------------------------------------------------------
Mon Apr 30 18:10:21 UTC 2018 - eich@suse.com

- (Temporarily) disable fpr S390* as a check test for netcdf fails
  currently on BE (bsc#1091474). 

-------------------------------------------------------------------
Fri Apr 27 12:53:49 UTC 2018 - guillaume.gardet@opensuse.org

- Add _constraints to avoid OOM errors

-------------------------------------------------------------------
Tue Apr 17 12:55:59 UTC 2018 - eich@suse.com

- Do not require 'Modules' for HPC build: seetings from 
  /etc/profile.d/lmod.[c]sh will be overwritten by
  /etc/profile.d/modules.[c]sh installed by Modules
  (bsc#1089865).

-------------------------------------------------------------------
Sun Apr  1 19:12:40 UTC 2018 - eich@suse.com

- Convert doc package build to noarch. This will hopefully avoid
  spurious build errors on SLE-12.

-------------------------------------------------------------------
Tue Mar 27 16:29:59 UTC 2018 - stefan.bruens@rwth-aachen.de

- Set '-fPIC' also on aarch64

-------------------------------------------------------------------
Tue Mar 27 10:34:46 UTC 2018 - eich@suse.com

- Reenable flavor 'serial' to build the doc package only
  (bsc#1087050).
  Note: for this flavor nothing else gets built: once the
  missing dependencies have been fixed, rearrange the 
  #%if 0%{?makedoc:1} ... %endif.

-------------------------------------------------------------------
Tue Mar 20 13:54:00 CET 2018 - ro@suse.de

- use "-fPIC" also on s390, like on ppc64 (bsc#1086008)

-------------------------------------------------------------------
Fri Mar  9 12:30:57 UTC 2018 - eich@suse.com

- Don't build the serial flavor as the build presently breaks
  everywhere (bsc#1084677).

-------------------------------------------------------------------
Sun Mar  4 09:11:32 UTC 2018 - eich@suse.com

- Python-Fix-a-number-of-scripts-to-by-Python-3-compliant.patch:
  Fix python scripts - convert to Python 3 (bsc#1082209).
- Restructure package: factor out SAWs stuff. We cannot
  support this as SAWs itself isn't available for SUSE.
- Move python files that are not stand-alone out of the
  bin directory.
- Fix permissions in bin and other directories.
- Removed some unwanted scripts:
  rules - make rules
  sendToJenkins - this should probably be modified to print an error message
  uncrustify.cfg - used by 'rules'
- Removed win32fe: DLLs for Windows
- Set '-fPIC' on ppc64.

-------------------------------------------------------------------
Thu Feb 22 13:56:02 UTC 2018 - eich@suse.com

- Update to version 3.8.3:
  http://www.mcs.anl.gov/petsc/documentation/changes/37.html
  (FATE#325333).

-------------------------------------------------------------------
Fri Feb  9 20:14:15 UTC 2018 - eich@suse.com

- Since the OpenBLAS build was fixed, reenable scalapack
  on s390 (bsc#1079513).
- Add support for openmpi2 for HPC (FATE#325089).
- Fix build on ppc64le (bsc#1080380).

-------------------------------------------------------------------
Fri Feb  9 15:00:10 UTC 2018 - cgoll@suse.com

- Fix summary in module files (bnc#1080259)

-------------------------------------------------------------------
Tue Feb  6 09:18:55 UTC 2018 - eich@suse.com

- Don't use baselibs.conf: some dependencies are not available for
  i586 on Factory.

-------------------------------------------------------------------
Tue Feb  6 09:13:14 UTC 2018 - eich@suse.com

- The HPC build of petsc depends on openBLAS. OpenBLAS doesn't
  support s390: skip building on s390 (bsc#1079513).

-------------------------------------------------------------------
Mon Jan 29 15:22:04 UTC 2018 - eich@suse.com

- Fix build with rpm v4.14.

-------------------------------------------------------------------
Fri Jan 12 15:49:16 UTC 2018 - eich@suse.com

- Disable the openmpi3 flavor in some products.

-------------------------------------------------------------------
Fri Jan  5 19:15:30 UTC 2018 - eich@suse.com

- Switch from gcc6 to gcc7 as additional compiler flavor for HPC on SLES.
- Fix library package requires - use HPC macro (boo#1074890).
- Add support for mpich and openmpi3 for HPC.
- Fix unexpanded rpm macro in environment module file for HPC (boo#1074897).

-------------------------------------------------------------------
Tue Nov 14 11:40:02 UTC 2017 - eich@suse.com

- emvironment modules: only set BIN when binary path exists.
- Fix RPM macro name %hpc_upcase.

-------------------------------------------------------------------
Fri Nov 10 17:02:52 UTC 2017 - eich@suse.com

- Add libhdf5/libscalapack*-hpc as Requires to the library package 
  for HPC.

-------------------------------------------------------------------
Thu Nov  2 19:28:46 UTC 2017 - eich@suse.com

- Simplify Group: - do not destinguish between MPI
  and non-MPI: the IBS check scripts cannot handle
  this well.

-------------------------------------------------------------------
Mon Oct 30 23:55:37 UTC 2017 - eich@suse.com

- Fix Requires for HPC build.

-------------------------------------------------------------------
Sun Oct 22 19:29:23 UTC 2017 - eich@suse.com

- Disable non-HPC openmpi flavor due to missing dependencies.

-------------------------------------------------------------------
Fri Sep  8 19:13:36 UTC 2017 - eich@suse.com

- Convert to multibuild.
- Add HPC build using environment modules
  (FATE#321718).
- Generate baselib.conf dynamically and only for the non-HPC
  builds: this avoids issues with the source validator.
- Updated to 3.7.6 (in sync with OpenHPC)
  Changelog at: http://www.mcs.anl.gov/petsc/documentation/changes/37.html

-------------------------------------------------------------------
Thu Mar  9 15:40:18 UTC 2017 - kkhere.geo@gmail.com

- recreate petsc package with version 3.7.5
  previously existing petsc package was deleted for unknown reasons.
  package in science repository is just a broken link.
  previous changelog salvaged from installed rpm is below.
- upstream version changelogs available at
  https://www.mcs.anl.gov/petsc/petsc-as/documentation/changes/index.html

-------------------------------------------------------------------
Mon Sep 28 15:44:21 UTC 2015 - kkhere.geo@gmail.com

- Refix blacs dependency, since blacs is now merged in scalapack

-------------------------------------------------------------------
Tue Jul 28 10:41:48 UTC 2015 - toddrme2178@gmail.com

- Fix blacs dependency ambiguity

-------------------------------------------------------------------
Wed Jul 15 09:21:49 UTC 2015 - toddrme2178@gmail.com

- Fix building on ppc64 and ppc64le

-------------------------------------------------------------------
Sat Apr  5 16:04:56 UTC 2014 - scorot@free.fr

- update files list of mvapich2 package and then fix build on SLE

-------------------------------------------------------------------
Thu Jan  9 14:27:31 UTC 2014 - kkhere.geo@gmail.com

- update to version 3.4.3
  * changelog at
    http://www.mcs.anl.gov/research/projects/petsc/petsc-as/documentation/changes/34.html
- modified patches:
  * petsc-3.3-fix-error-detection-in-makefile.patch
  * petsc-3.3-p2-dont-check-for-option-mistakes.patch
  * petsc-3.3-p2-fix-shared-libs-sonames.patch
  * petsc-3.3-p2-no-rpath.patch
-------------------------------------------------------------------
Wed May 22 20:11:36 UTC 2013 - scorot@free.fr

- update ot latest patch level p7
  * No changelog available for a patch level upgrade

-------------------------------------------------------------------
Sun Feb 24 14:59:13 UTC 2013 - scorot@free.fr

- updated to patch level p6
  * No changelog available for a patch level upgrade

-------------------------------------------------------------------
Mon Feb  4 20:28:03 UTC 2013 - scorot@free.fr

- updated to patch level p5
  * No changelog available for a patch level upgrade

-------------------------------------------------------------------
Mon Sep 17 21:27:12 UTC 2012 - scorot@free.fr

- fix module file for parallel version

-------------------------------------------------------------------
Sun Sep 16 20:30:11 UTC 2012 - scorot@free.fr

- add modules files
- add version number in the petsc directory to allow multiple
  versions to be installed at the same time
- update to patch level p3

-------------------------------------------------------------------
Sun Sep  2 10:47:04 UTC 2012 - scorot@free.fr

- add suitesparce-devel in the requirements list of devel packages

-------------------------------------------------------------------
Thu Aug 30 21:18:42 UTC 2012 - scorot@free.fr

- add requirments in devel packages
- fix license

-------------------------------------------------------------------
Thu Aug 23 19:07:07 UTC 2012 - scorot@free.fr

- enable umfpack and cholmod
- enable blacs and scalapack for parallel version

-------------------------------------------------------------------
Sat Aug 11 10:56:14 UTC 2012 - scorot@free.fr

- fix typo in spec file making install failure on x86_64

-------------------------------------------------------------------
Sat Aug 11 10:18:29 UTC 2012 - scorot@free.fr

- add missing %%_petsc_arch to %%_prefix path

-------------------------------------------------------------------
Sat Aug 11 09:49:39 UTC 2012 - scorot@free.fr

- add PETSC_ARCH in the subdirectory path

-------------------------------------------------------------------
Thu Aug  9 13:42:04 UTC 2012 - scorot@free.fr

- add symlink petsc_dir/include to %%_includedir

-------------------------------------------------------------------
Sat Aug  4 20:35:26 UTC 2012 - scorot@free.fr

- version 3.3
  * see http://www.mcs.anl.gov/petsc/documentation/changes/33.html
    for a list of changes

-------------------------------------------------------------------
Fri Aug  3 20:27:15 UTC 2012 - scorot@free.fr

- mvapich2 build for SLE 11
- update baselibs.conf

-------------------------------------------------------------------
Tue Jul 31 20:46:24 UTC 2012 - scorot@free.fr

- compress source tarball with xz

-------------------------------------------------------------------
Tue Jul 31 17:26:00 UTC 2012 - scorot@free.fr

- enable hypre support for openmpi build

-------------------------------------------------------------------
Fri Jul 27 20:54:50 UTC 2012 - scorot@free.fr

- enable fortran interface and c++ support

-------------------------------------------------------------------
Thu Jul 26 22:10:50 UTC 2012 - scorot@free.fr

- fix library dirs in petsc conf files

-------------------------------------------------------------------
Thu Jul 26 21:30:35 UTC 2012 - scorot@free.fr

- put all petsc file in a dedicated dir

-------------------------------------------------------------------
Tue Jul 24 22:27:11 UTC 2012 - scorot@free.fr

- add openmpi package
- fix libs dependencies

-------------------------------------------------------------------
Thu Jun  7 18:27:19 UTC 2012 - scorot@free.fr

- add baselibs.conf

-------------------------------------------------------------------
Sat May 19 15:14:53 UTC 2012 - scorot@free.fr

- first package base on spec file from Fabrice Bellet for fedora
openSUSE Build Service is sponsored by