"Smith, Barry F. via petsc-dev" <petsc-dev@mcs.anl.gov> writes:

>> On Jun 26, 2019, at 9:56 AM, Balay, Satish via petsc-dev 
>> <petsc-dev@mcs.anl.gov> wrote:
>> 
>> On Wed, 26 Jun 2019, Jakub Kruzik via petsc-dev wrote:
>> 
>>> Hello,
>>> 
>>> as I mentioned in PR #1819, I would like to use SLEPc in PETSc.
>>> 
>>> Currently when PETSc is configured with --download-slepc, it defines
>>> PETSC_HAVE_SLEPC and each compilation of PETSc recompiles SLEPc.
>> 
>> yes - slepc uses petsc, so when petsc is updated - its best to rebuild slepc
>> 
>> You can ignore PETSC_HAVE_SLEPC flag [its just a build tool thingy]
>> PETSc code does not use this flag - and there is no circular
>> dependency.
>> 
>>> The first way to use SLEPc is from an example. That should be easy, all we
>>> need is to add -lslepc when compiling an example.
>> 
>> Its best to use slepc examples as templates - and slepc makefiles [as 
>> examples].
>> 
>> --download-slepc is a convinence feature to install petsc and slepc in
>> a single go. It does not change how you would use slepc.
>> 
>> Satish
>> 
>> 
>>> 
>>> The other option is to use SLEPc inside PETSc code. I do not know how to
>>> achieve this. One way could be to define PETSC_HAVE_SLEPC after the
>>> compilation of SLEPc and again compile PETSc but this time linking with 
>>> SLEPc.
>>> Although, even if it works, it is ugly.
>
>    If you make SLEPc calls from PETSc source you should only need the SLEPc 
> header files to compile the PETSc source; not the SLEPc library. So one way 
> to accomplish this would be to do a "partial" install of SLEPc, build PETSc 
> (that uses SLEPc) and then complete the SLEPc install. When --download-slepc 
> is used this would mean during the SLEPc.py script it would copy over the 
> SLEPc include files to the prefix location and after PETSc is built it would 
> build the SLEPc libraries and move them to the prefix location.  The on iffy 
> thing is that SLEPc include files may depend on generated PETSc include files 
> (which are not fully generated until configure is done). Thus instead of 
> having SLEPc.py move the SLEPc include to the prefix location it would need 
> to post-pone that until just at the end of configure (we have other packages 
> to do this). So when you ready to try this out let us know and we can help 
> with the infrastructure. (it will avoid 2 builds of either PETSc or SLEPc).

That is disgusting.

If code in libpetsc.so depends on libslepc.so, then you'd have a circular 
dependency.


You can implement and register a PC in SLEPc (it would go in libslepc.so).

Reply via email to