> On Jul 8, 2019, at 9:53 PM, Jakub Kruzik via petsc-dev > <petsc-dev@mcs.anl.gov> wrote: > > Just to clarify, the suggested solution is a plug-in sitting anywhere in the > PETSc source tree with postponed compilation and using > __attribute__((constructor)) to register (as in libCEED) for static libraries?
Yes, this is my understanding. Good luck. Barry > > I could try to do that for the computation of eigenvector-based deflation > space for PCDeflation next week. > > Jakub > > On 7/8/19 5:49 PM, Smith, Barry F. via petsc-dev wrote: >> Sorry for the confusion surrounding this issue. Your code needs to go in >> its own standalone library that links against both PETSc and SLEPc. You can >> just the mechanism Jed suggested to have your library call PCRegister() when >> it is utilized (see previous emails/discussion). You could perhaps look at >> how the ctetgen package utilizes the PETSc compile system and copy that for >> your makefile and SLEPc, of course. >> >> Once you have the "framework" that does this you could make a PR labeled >> something like WIP and ask for help in getting the details right. >> >> Barry >> >> >>> On Jul 8, 2019, at 9:58 AM, Pierre Jolivet via petsc-dev >>> <petsc-dev@mcs.anl.gov> wrote: >>> >>> 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 >>>> <petsc-dev@mcs.anl.gov> wrote: >>>> >>>> On Wed, Jun 26, 2019 at 4:11 PM Jed Brown <j...@jedbrown.org> wrote: >>>> Matthew Knepley <knep...@gmail.com> writes: >>>> >>>>> On Wed, Jun 26, 2019 at 3:42 PM Jed Brown via petsc-dev < >>>>> petsc-dev@mcs.anl.gov> wrote: >>>>> >>>>>> "Smith, Barry F." <bsm...@mcs.anl.gov> writes: >>>>>> >>>>>>>> On Jun 26, 2019, at 1:53 PM, Jed Brown <j...@jedbrown.org> wrote: >>>>>>>> >>>>>>>> "Smith, Barry F." <bsm...@mcs.anl.gov> 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/ >