Hi Barry, That was a good question, and I didn’t know the answer but I did a little digging, and in fact, in the 2018 Fortran standard, an extended form of implicit none was introduced that disable also implicit procedures:
implicit none (type, external) Indeed, when adding that to the little code, the compiler correctly flagged the issue. Thank you for the suggestion! Randy > On Jun 22, 2025, at 6:27 PM, Barry Smith <bsm...@petsc.dev> wrote: > > > implicit none prevents using undeclared variables. Is there a way to avoid > calling any functions/suboutines that don't have an interface declared in a > module? That would have found this problem. > > Barry > > >> On Jun 22, 2025, at 8:06 PM, Randall Mackie <rlmackie...@gmail.com> wrote: >> >> Thanks Barry! >> >> >> >>> On Jun 22, 2025, at 4:50 PM, Barry Smith <bsm...@petsc.dev> wrote: >>> >>> >>> I'm sorry for not getting back to you sooner. I have attached a working >>> version of your code. Since you were missing >>> >>> use petscdmcomposite >>> >>> the compiler could not generate the correct call to >>> DMCompositeGetGlobalISs() >>> >>> Barry >>> >>> <test.F90> >>> >>> >>>> On Jun 17, 2025, at 6:39 PM, Randall Mackie <rlmackie...@gmail.com> wrote: >>>> >>>> Dear Petsc users - >>>> >>>> I am trying to upgrade my code to petsc-3.23 (from 3.19), and I seem to >>>> have run into a problem with DMCompositeGetGlobalISs. >>>> >>>> The example program listed on the man page for DMCompositeGetGlobalISs, >>>> https://urldefense.us/v3/__https://petsc.org/release/src/snes/tutorials/ex73f90t.F90.html__;!!G_uCfscf7eWS!cox-AqD0ZFTWb2Dte6AKZBGOrpXh9j2X73Xnry3XF8giEpfLk-toSdK6pFKr0OeA68ZdmvQ7SS5dSU6zZY6lr2TgZQ$ >>>> >>>> <https://urldefense.us/v3/__https://petsc.org/release/src/snes/tutorials/ex73f90t.F90.html__;!!G_uCfscf7eWS!eBXtwfVGvvppsy1_lM2f-Z61YMsb439eVY8V9SYWa0x6VjvTiJ-rXAnhEbi08ogvqtF3s2AZJt4pk9gNeM9yAjmHvA$>, >>>> seems to indicate that a call to DMCompositeGetGlobalISs does not need to >>>> allocate the IS pointer and you just pass it directly to >>>> DMCompositeGetGlobalISs. >>>> >>>> If I compile and run the simple attached test program (say on 2 >>>> processes), I get the following error: >>>> >>>> [0]PETSC ERROR: >>>> ------------------------------------------------------------------------ >>>> [0]PETSC ERROR: Caught signal number 11 SEGV: Segmentation Violation, >>>> probably memory access out of range >>>> [0]PETSC ERROR: Try option -start_in_debugger or -on_error_attach_debugger >>>> [0]PETSC ERROR: or see >>>> https://urldefense.us/v3/__https://petsc.org/release/faq/*valgrind__;Iw!!G_uCfscf7eWS!cox-AqD0ZFTWb2Dte6AKZBGOrpXh9j2X73Xnry3XF8giEpfLk-toSdK6pFKr0OeA68ZdmvQ7SS5dSU6zZY4s9NJ4yg$ >>>> >>>> <https://urldefense.us/v3/__https://petsc.org/release/faq/*valgrind__;Iw!!G_uCfscf7eWS!eBXtwfVGvvppsy1_lM2f-Z61YMsb439eVY8V9SYWa0x6VjvTiJ-rXAnhEbi08ogvqtF3s2AZJt4pk9gNeM-7MIW3KA$> >>>> and >>>> https://urldefense.us/v3/__https://petsc.org/release/faq/__;!!G_uCfscf7eWS!cox-AqD0ZFTWb2Dte6AKZBGOrpXh9j2X73Xnry3XF8giEpfLk-toSdK6pFKr0OeA68ZdmvQ7SS5dSU6zZY7G_dOMCA$ >>>> >>>> <https://urldefense.us/v3/__https://petsc.org/release/faq/__;!!G_uCfscf7eWS!eBXtwfVGvvppsy1_lM2f-Z61YMsb439eVY8V9SYWa0x6VjvTiJ-rXAnhEbi08ogvqtF3s2AZJt4pk9gNeM_a7QtraQ$> >>>> [0]PETSC ERROR: --------------------- Stack Frames >>>> ------------------------------------ >>>> [0]PETSC ERROR: The line numbers in the error traceback may not be exact. >>>> [0]PETSC ERROR: #1 F90Array1dCreate() at >>>> /home/rmackie/PETSc/petsc-3.23.3/src/sys/ftn-custom/f90_cwrap.c:123 >>>> application called MPI_Abort(MPI_COMM_WORLD, 59) - process 0 >>>> >>>> >>>> If I uncomment the line to allocate the pointer, I get a very long >>>> traceback with lots of error messages. >>>> >>>> What is the correct way to use DMCompositeGetGlobalISs in Fortran? With or >>>> without the pointer allocation, and what is the right way to do this >>>> without the errors it seems to generate? >>>> >>>> Thanks, >>>> >>>> Randy Mackie >>>> >>>> <test.F90> >>> >> >