[petsc-users] problem linking to petsc
Barry Smith
bsmith at petsc.dev
Fri Aug 5 15:42:44 CDT 2022
The secret is in the
> 00000000000fd2ce T __petscsys_MOD_petscinitializenoarguments
> 00000000000fd313 T __petscsys_MOD_petscinitializenohelp
> 00000000000fd3e9 T __petscsys_MOD_petscinitializewithhelp
it looks like the application code was last used with a much older version of PETSc that did not use Fortran 90 modules as much.
You will need to locate in the Fortran code where PetscInitialize is called and make sure the main/or subroutine has a pair like
#include <petsc/finclude/petscsnes.h>
use petscsnes
at the top. See the, for example, src/*/tutorials/*.F* files
The snes maybe ksp or ts depending how the application uses PETSc.
There maybe other updates needed to modernize the PETSc calls to add the use in various places.
Barry
> On Aug 5, 2022, at 3:55 PM, Arun Persaud <apersaud at lbl.gov> wrote:
>
> Hello
>
> I'm trying to compile a plasma simulation package (in fortran + mpi) that uses PETSC and HYPRE.
>
> I'm running on linux (opensuse tumbleweed) and using the distribution provided compilers and openmpi4 packages.
>
> I git cloned petsc and then compiled with the following commands
>
>
> ./configure --prefix=/home/arun --with-mpi-dir=/usr/lib64/mpi/gcc/openmpi4 --with-hypre-lib="-L/usr/lib64/mpi/gcc/openmpi4/lib64 -lHYPRE" --with-hypre-include=/usr/lib64/mpi/gcc/openmpi4/include/hypre/ --download-fblaslapack
>
> make PETSC_DIR=/home/arun/src/petsc PETSC_ARCH=arch-linux-c-debug all
>
> make PETSC_DIR=/home/arun/src/petsc PETSC_ARCH=arch-linux-c-debug install
>
> And this worked without errors, but when I try to use the petsc library to compile and link the simulation package, I'm getting:
>
> pic2d_CurProblemValues.f90:(.text+0x11e5d): undefined reference to `petscinitialize_'
> collect2: error: ld returned 1 exit status
> make: *** [Makefile:50: edipic2d] Error 1
>
>
> pic2d_CurProblemValues.f90 seems to have the same code included that is given in the howto on how to use PETSC.
>
> also, if I check the shared library, I get the following:
>
> arun at apersaud:~/src/petsc> nm arch-linux-c-debug/lib/libpetsc.so |grep -i petscinit
> 00000000003531e6 t PetscInitFortran_Private
> 000000000032e9ac T PetscInitialize
> 0000000002bc82e8 B PetscInitializeCalled
> 000000000032c22d t PetscInitialize_Common
> 0000000000354ac3 T petscinitialized_
> 0000000000327d71 T PetscInitialized
> 00000000001213e5 t PetscInitialize_DynamicLibraries
> 000000000035389d T petscinitializef_
> 0000000000353e38 T petscinitializefortran_
> 0000000000353cd2 T PetscInitializeFortran
> 00000000003279a8 T PetscInitializeNoArguments
> 0000000000327138 T PetscInitializeNoPointers
> 00000000000fd2ce T __petscsys_MOD_petscinitializenoarguments
> 00000000000fd313 T __petscsys_MOD_petscinitializenohelp
> 00000000000fd3e9 T __petscsys_MOD_petscinitializewithhelp
>
> which seems to indicate that the initialize function "petscinitialize_" is missing.
>
> Is there a compiler flag I need to set to or a configure flag when compiling petsc?
>
> Not sure where things are going wrong here and how to debug this.
>
> Any suggestions would be appreciated.
>
> Thanks
>
> Arun
>
More information about the petsc-users
mailing list