[petsc-users] Compile issue
Mark Adams
mfadams at lbl.gov
Fri May 8 06:52:33 CDT 2026
Result from (cut and paste into) Claude:
## Diagnosis
The compile error is caused by **fixed-form Fortran line truncation at
column 72**. Your file `parstop.F` uses the `.F` extension, which tells
`gfortran` to use **fixed-form** parsing (72-column limit by default).
In PETSc 3.25, the
[`PetscObjectIsNull`](include/petsc/finclude/petscsysbase.h:132) macro
expanded significantly. It is now defined as:
```fortran
#define PetscObjectIsNull(obj) (obj%v == 0 .or. obj%v ==
PETSC_FORTRAN_TYPE_INITIALIZE .or. obj%v == -3)
```
When the preprocessor expands `PetscObjectIsNull(Mdiag)`, the resulting
line is far longer than 72 characters and gets truncated mid-expression,
producing the syntax error. The compiler warnings confirm this:
```
parstop.F:64:72:
Warning: Line truncated at (1) [-Wline-truncation]
```
## Solution: Rename `.F` to `.F90`
**Rename `parstop.F` → `parstop.F90`** (and do the same for any other `.F`
files that use `PetscObjectIsNull`).
Your code is already written in free-form Fortran style (`!` comments, `::`
declarations, `implicit none`), so the `.F` extension is misleading. The
`.F90` extension will:
1. Invoke the C preprocessor (uppercase `F` is preserved)
2. Use **free-form** parsing (132-column default limit)
3. Work with your existing `-ffree-line-length-none` flag, which removes
the line length limit entirely
This is the cleanest fix and requires no code changes — only a file rename.
### Alternative: Keep `.F` and add a compiler flag
If renaming is not feasible, add `-ffixed-line-length-none` to your
`mpif90` flags to remove the 72-column truncation for fixed-form files.
On Thu, May 7, 2026 at 6:26 PM Sanjay Govindjee via petsc-users <
petsc-users at mcs.anl.gov> wrote:
> I am trying to update our code to petsc 3.25.1. We were previously on
> 3.22.4. I am running into a compile error that I can not understand. I
> went through the release notes but can not see what is wrong. Any
> suggestions will be appreciated.
>
> -sanjay
>
> /Users/sg/petsc/gnu/bin/mpif90 -o parstop.o -c -fPIC -Wall
> -ffree-line-length-none -ffree-line-length-0 -Wno-lto-type-mismatch
> -Wno-unused-dummy-argument -g -O -I/Users/sg/petsc/include
> -I/Users/sg/petsc/gnu/include -I/opt/X11/include
> -I/Users/sg/Feap/ver87/include -I/Users/sg/Feap/ver87/modules
> -I/usr/local/include -J/Users/sg/Feap/ver87/modules parstop.F
> parstop.F:64:72:
>
> 64 | if(.not.PetscObjectIsNull(Mdiag)) then
> |
> 1
> Warning: Line truncated at (1) [-Wline-truncation]
> parstop.F:64:70:
>
> 64 | if(.not.PetscObjectIsNull(Mdiag)) then
> |
> 1
> Error: Syntax error in IF-clause after (1)
> parstop.F:66:9:
>
> 66 | endif
> | 1
> Error: Expecting END SUBROUTINE statement at (1)
> parstop.F:68:72:
>
> 68 | if(.not.PetscObjectIsNull(Msqrt)) then
> |
> 1
> Warning: Line truncated at (1) [-Wline-truncation]
> parstop.F:68:70:
>
> 68 | if(.not.PetscObjectIsNull(Msqrt)) then
> |
> 1
> Error: Syntax error in IF-clause after (1)
> parstop.F:70:9:
>
> 70 | endif
> | 1
> Error: Expecting END SUBROUTINE statement at (1)
>
> The subroutine is super simple:
>
> # include <petsc/finclude/petscksp.h>
> use petscksp
> use pfeapc
> implicit none
>
> # include "pfeapb.h"
>
> PetscErrorCode ierr
>
> logical :: eflag
>
> save
>
> ! Close out PETSc matrices
> if(.not.PetscObjectIsNull(Kmat)) then
> call MatDestroy(Kmat, ierr)
> endif
>
> if(.not.PetscObjectIsNull(Pmat)) then
> call MatDestroy(Pmat, ierr)
> endif
>
> if(.not.PetscObjectIsNull(Mmat)) then
> call MatDestroy(Mmat, ierr)
> endif
>
> if(pfeap_dstr) then
> call KSPDestroy(kspsol, ierr)
> endif
>
> ! Close out PETSc vectors
> if(.not.PetscObjectIsNull(Mdiag)) then
> call VecDestroy(Mdiag, ierr)
> endif
>
> if(.not.PetscObjectIsNull(Msqrt)) then
> call VecDestroy(Msqrt, ierr)
> endif
>
> The custom module pfeapc contains the objects:
>
> module pfeapc
> # include <petsc/finclude/petscksp.h>
> use petscksp
> implicit none
>
> Vec :: rhs, sol, xvec
> Vec :: yvec, zvec
> Vec :: Mdiag, Msqrt
> Mat :: Kmat, Mmat, Pmat
> KSP :: kspsol
> end module pfeapc
>
>
>
> ------
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mcs.anl.gov/pipermail/petsc-users/attachments/20260508/87a219e1/attachment.html>
More information about the petsc-users
mailing list