我有一个使用gfortran作为编译器完美处理我的Imac的fortran代码。
但是最近我换到另一台可以访问ifort编译器的计算机。
程序编译正确,但是当我运行代码时,我会在任何执行之前得到Segmentation fault,因此它必须是变量声明中的内容或导致此错误的use语句中的内容。 任何的想法?我完全无能为力......
我发布了我的代码的声明部分:
program Stokes
use ziggurat_m
use, intrinsic :: iso_c_binding
implicit none
!Include the FFTW library:
include 'fftw3.f'
!Start declaration of variables:
integer, parameter :: Nelem = 64 ,&
npart = 20 ,&
nsims = 10000 ,&
nphi = 1
!Double precision parameters:
double precision, parameter :: pi= 4.0*atan(1.0)
!Mesh variables:
double precision :: mesh(nelem,nelem,nelem,3), invmesh(nelem,nelem,nelem,3)
double precision :: xp(3,npart), sigma(npart), fpart(3,npart), fspread(nelem,nelem,nelem,3), tpart(3,npart),&
tspread(nelem,nelem,nelem,3),stress_part(5,npart), stress_spread(nelem,nelem,nelem,3)
double precision, allocatable :: partgaussenv(:,:), vec_partgaussenv(:,:,:)
double complex :: fhat(nelem,nelem,nelem,3), uhat(nelem,nelem,nelem,3), fluctstresshat(nelem,nelem,nelem,3,3)
double precision :: u(nelem,nelem,nelem,3), up(3,npart), omegap(3,npart), rate_defp(5,npart)
double precision :: fluctstress(nelem,nelem,nelem,3,3)
double precision, parameter :: kbt = 1.0 ,& !kBT
deltat = 1.0 !deltat
integer, allocatable :: cicle_array(:,:,:)
integer :: max_size
integer :: seed
double precision :: seed_rnd
integer :: i,j,k,l
logical :: test=.true.
!optimization timing variables:
double precision :: start, finish, start1, finish1, transf_time, start2, finish2, transf_time2
!Postprocessing variables:
double precision :: diffcoeff
double precision :: up_msq(3)