[petsc-dev] Fwd: Changes in PETSc

Barry Smith bsmith at mcs.anl.gov
Tue Aug 21 11:24:47 CDT 2012


On Aug 21, 2012, at 10:53 AM, Jed Brown <jedbrown at mcs.anl.gov> wrote:

> On Tue, Aug 21, 2012 at 10:39 AM, Matthew Knepley <knepley at ci.uchicago.edu> wrote:
> Wolfgang is not wrong here. I was against the name change :)
> 
> I complained about this in May when it was pushed.

    Then who the fuck changed this. It sure as hell wasn't me.

    Barry


>  
> 
>    Matt
> 
> ---------- Forwarded message ----------
> From: Wolfgang Bangerth <bangerth at math.tamu.edu>
> Date: Mon, Aug 20, 2012 at 10:30 PM
> Subject: Changes in PETSc
> To: Matthew Knepley <knepley at ci.uchicago.edu>, "Toby D. Young" <tyoung at ippt.gov.pl>
> 
> 
> 
> Hi Matt,
> I ran across something today that I believe perfectly illustrates the kind of thing that drives everyone completely mad about PETSc's habit of changing everything in every release. I was staring for a long time at a patch by one of our contributors labeled "fix catastrophic typo" that reads like this:
> ...........................
> -    int ierr = KSPSetType (ksp, const_cast<char *>(KSPCHEBYSHEV));
> +                                     // set the type of solver.
> +    int ierr;
> +
> +#ifdef DEAL_II_PETSC_VERSION_LT(3,3,0)
> +    ierr = KSPSetType (ksp, const_cast<char *>(KSPCHEBYCHEV));
> 
> They can get rid of the const_cast.
> 
> Also, instead of the magic version nonsense, they can write
> 
> #ifndef KSPCHEBYSHEV
> #  define KSPCHEBYSHEV KSPCHEBYCHEV
> #endif
> 
> and then always use the new version in their code.
> 
> Also, a package like deal.II would be better off snooping the list of valid parameters using PetscFListGet() so that they would *automatically* support *all* KSPs and PCs in PETSc.
>  
> +#else
> +    ierr = KSPSetType (ksp, const_cast<char *>(KSPCHEBYSHEV));
> +#endif
> ...........................
> It took me minutes to find the difference: before 3.3, the name was spelled chebyChev, after that chebyShev. That's really a completely unnecessary change -- but hugely disruptive because not compatible, incredible difficult to see, and it also has no real value at all: whether you want to spell the name the French or the American way really makes no difference at all. Worst of all, it would have been absolutely trivial to make the change backward compatible by simply doing
>   #define KSPCHEBYSHEV KSPCHEBYCHEV
> but that didn't happen.
> 
> So why do it? Sorry for venting, but it just doesn't make sense to me...
> Best
>  W.
> 
> -- 
> ------------------------------------------------------------------------
> Wolfgang Bangerth               email:            bangerth at math.tamu.edu
>                                 www: http://www.math.tamu.edu/~bangerth/
> 
> 
> 
> 
> -- 
> What most experimenters take for granted before they begin their experiments is infinitely more interesting than any results to which their experiments lead.
> -- Norbert Wiener
> 




More information about the petsc-dev mailing list