Hello, I’m not sure what’s the status about this issue. I’m trying to register a PC that is using EPSSolve during PCSetUp, but it’s falling because of undefined references to EPSSomething when linking libpetsc.so How could I fix this, appart from removing my PC from PETSc and compiling this as a separate library (the idea would be to merge my PC in PETSc, so that would be rather counterproductive in the end)?
Thanks, Pierre > On 27 Jun 2019, at 1:04 AM, Matthew Knepley via petsc-dev > <[email protected]> wrote: > > On Wed, Jun 26, 2019 at 4:11 PM Jed Brown <[email protected] > <mailto:[email protected]>> wrote: > Matthew Knepley <[email protected] <mailto:[email protected]>> writes: > > > On Wed, Jun 26, 2019 at 3:42 PM Jed Brown via petsc-dev < > > [email protected] <mailto:[email protected]>> wrote: > > > >> "Smith, Barry F." <[email protected] <mailto:[email protected]>> writes: > >> > >> >> On Jun 26, 2019, at 1:53 PM, Jed Brown <[email protected] > >> >> <mailto:[email protected]>> wrote: > >> >> > >> >> "Smith, Barry F." <[email protected] <mailto:[email protected]>> > >> >> writes: > >> >> > >> >>> It is still a PC, it may as part of its computation solve an > >> eigenvalue problem but its use is as a PC, hence does not belong in SLEPc. > >> >> > >> >> Fine; it does not belong in src/ksp/pc/. > >> > > >> > Why not? From the code mangement point of view that is the perfect > >> place for it. It just depends on an external package in the same way that > >> PCHYPRE depends on an external library. Having it off in some other > >> directory src/plugins would serve no purpose. Of course making sure it > >> doesn't get compiled into -lpetsc may require a tweak to the make > >> infrastructure. Make could, for example, skip plugin subdirectories for > >> example. > >> > >> I think it's confusing to have code that is part of libpetsc.so > >> alongside code that is not (e.g., won't be accessible to users unless > >> they also build SLEPc and link the plugin). > >> > >> > BTW: Matt's perverse use of SNES from DMPLEx could also be fixed to > >> > work this way instead of the disgusting PetscObject casting used to > >> > cancel the SNES object. > >> > >> That code could be part of libpetscsnes.so. > >> > > > > What? I thought I moved everything to SNES a long time ago. > > I thought there was a place where SNES was cast to PetscObject. There > is DMAddField, but it's different. > > I can't find it right now. Yeah, AddField is waiting for a true > Discretization object. > I think its spelled G-O-D-O-T. > > PetscViewerVTKAddField is another example of code that uses PetscObject > to avoid depending on a higher level type like Vec. > > Viewer is a weird mixin with everything. > > Matt > > -- > 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 > > https://www.cse.buffalo.edu/~knepley/ <http://www.cse.buffalo.edu/~knepley/>
