SPECFEM3D_Cartesian simulates acoustic (fluid), elastic (solid), coupled acoustic/elastic, poroelastic or seismic wave propagation in any type of conforming mesh of hexahedra (structured or not).
When compiling specFEM3D on a linux machine with the latest versions of gfortran and MPICH, I find that there are issues with MPI functions signatures; namely, two functions with different signatures, used in different modules are flagged by during compilation with mpif90. I have read that this issue can be resolved by using a module mpi_f08, which specFEM3D does not have. Hasn't anybody come across this issue? Specifically, I get errors of the following form when calling Make:
Any help would be appreciated. (Where is the best place to ask questions?) Thanks.
mpif90 -g -O2 -std=f2003 -fimplicit-none -frange-check -fmax-errors=10 -pedantic -pedantic-errors -Waliasing -Wampersand -Wcharacter-truncation -Wline-truncation -Wsurprising -Wno-tabs -Wunderflow -ffpe-trap=invalid,zero,overflow -Wunused -Werror -O3 -finline-functions -J./obj -I./obj -I. -I./setup -c -o obj/parallel.sharedmpi.o src/shared/parallel.f90
src/shared/parallel.f90:314:17:
314 | call MPI_BCAST(buffer,1,MPI_INTEGER,0,my_local_mpi_comm_world,ier)
| 1
......
332 | call MPI_BCAST(buffer,1,MPI_LOGICAL,0,my_local_mpi_comm_world,ier)
| 2
Error: Type mismatch between actual argument at (1) and actual argument at (2) (INTEGER(4)/LOGICAL(4)).
src/shared/parallel.f90:484:17:
332 | call MPI_BCAST(buffer,1,MPI_LOGICAL,0,my_local_mpi_comm_world,ier)
| 2
......
484 | call MPI_BCAST(buffer,countval,MPI_LOGICAL,0,my_local_mpi_comm_world,ier)
| 1
Error: Rank mismatch between actual argument at (1) and actual argument at (2) (scalar and rank-1)
src/shared/parallel.f90:731:18:
661 | call MPI_REDUCE(sendbuf,recvbuf,1,MPI_INTEGER,MPI_MIN,0,my_local_mpi_comm_world,ier)
| 2
......
731 | call MPI_REDUCE(sendbuf,recvbuf,1,CUSTOM_MPI_TYPE,MPI_MIN,0,my_local_mpi_comm_world,ier)
| 1
Error: Type mismatch between actual argument at (1) and actual argument at (2) (REAL(4)/INTEGER(4)).
src/shared/parallel.f90:751:21:
710 | call MPI_ALLREDUCE(send, buffer, countval, MPI_INTEGER, MPI_MAX, my_local_mpi_comm_world, ier)
| 2
......
751 | call MPI_ALLREDUCE(sendbuf,recvbuf,1,CUSTOM_MPI_TYPE,MPI_MIN,my_local_mpi_comm_world,ier)
| 1
Error: Type mismatch between actual argument at (1) and actual argument at (2) (REAL(4)/INTEGER(4)).
src/shared/parallel.f90:936:21:
When compiling specFEM3D on a linux machine with the latest versions of gfortran and MPICH, I find that there are issues with MPI functions signatures; namely, two functions with different signatures, used in different modules are flagged by during compilation with mpif90. I have read that this issue can be resolved by using a module
mpi_f08
, which specFEM3D does not have. Hasn't anybody come across this issue? Specifically, I get errors of the following form when calling Make: Any help would be appreciated. (Where is the best place to ask questions?) Thanks.