Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/fortran/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Fortran-lbound抛出错误6366“;数组表达式的形状不一致;_Fortran - Fatal编程技术网

Fortran-lbound抛出错误6366“;数组表达式的形状不一致;

Fortran-lbound抛出错误6366“;数组表达式的形状不一致;,fortran,Fortran,所以我又被Fortran搞糊涂了。算了吧,不管怎样,我想写一个非常简单的例程,从数组的末尾去掉值。一切都很复杂,除了我想编写子程序,这样我就不必将输入数组的下限传递给它。下面是子程序: subroutine Strip(list,lstart, index) implicit none integer :: i, index, isize, tsize, lstart, istart real, dimension(:),

所以我又被Fortran搞糊涂了。算了吧,不管怎样,我想写一个非常简单的例程,从数组的末尾去掉值。一切都很复杂,除了我想编写子程序,这样我就不必将输入数组的下限传递给它。下面是子程序:

    subroutine Strip(list,lstart, index)        
        implicit none 
        integer :: i, index, isize, tsize, lstart, istart
        real, dimension(:), allocatable, intent(inout) :: list
        real, dimension(:), allocatable :: tlist             
        isize = size(list)             
        tsize = index-1                
        print *, 'index', index 
        print *, 'isize', isize
        print*, 'lbound', INT(lbound(list))
        print*, 'tsize', tsize      
        istart = lbound(list) !<---- This lines throws the error 
        !These are commented out because everything below here works 
        !allocate(tlist(lstart:tsize))
        !tlist = list(lstart:index-1)
        !deallocate(list) 
        !call move_alloc(tlist,list) 
    end subroutine Strip 
子程序条(列表、第一部分、索引)
隐式无
整数::i,index,isize,tsize,lstart,istart
实数、维度(:)、可分配、意图(inout)::列表
实型,维度(:),可分配::tlist
isize=大小(列表)
tsize=index-1
打印*,“索引”,索引
打印*,'isize',isize
打印*,'lbound',INT(lbound(列表))
打印*,'tsize',tsize
istart=lbound(列表) 
Lbound()
返回一个数组!阅读Fortran手册(RTFM),网址为

它返回一个数组,其元素数与数组的秩(“维”1D,2D,…)相同

要获取特定维度的单个数字,请使用可选参数DIM

istart = lbound(list, 1)
Lbound()
返回一个数组!阅读Fortran手册(RTFM),网址为

它返回一个数组,其元素数与数组的秩(“维”1D,2D,…)相同

要获取特定维度的单个数字,请使用可选参数DIM

istart = lbound(list, 1)

这是哪个编译器?不同的编译器有不同的错误消息。这是哪个编译器?不同的编译器有不同的错误信息。我读过一篇教程,上面说它返回一个整数。世界跆拳道联盟。谢谢你的帮助,如果这不能解决问题,我会给你回复的。好吧,这样就解决了这个问题,但是现在使用“deallocate(list)”和“move_alloc(tlist,list)”抛出访问冲突错误。我也不知道如何解决这个问题。您能帮忙吗?tsize和index-1的值相同吗?在这里您不需要allocate或deallocate,对tlist的赋值将完成分配(您使用的是ifort,所以使用版本17或add-standard语义)。类似地,move_alloc将释放列表。我猜你在某处破坏了记忆。将-CB添加到编译中可能会有所帮助,但是ifort在运行时还没有进行形状检查。Soooo…我应该如何更改函数来解决我的问题?而yaindex-1和tsize应该是相同的。没有完整的代码很难说。这是一个不同的问题,应该提出不同的问题。我同意Steve Lionel的上述建议。我读过一篇教程,上面说它返回一个整数。世界跆拳道联盟。谢谢你的帮助,如果这不能解决问题,我会给你回复的。好吧,这样就解决了这个问题,但是现在使用“deallocate(list)”和“move_alloc(tlist,list)”抛出访问冲突错误。我也不知道如何解决这个问题。您能帮忙吗?tsize和index-1的值相同吗?在这里您不需要allocate或deallocate,对tlist的赋值将完成分配(您使用的是ifort,所以使用版本17或add-standard语义)。类似地,move_alloc将释放列表。我猜你在某处破坏了记忆。将-CB添加到编译中可能会有所帮助,但是ifort在运行时还没有进行形状检查。Soooo…我应该如何更改函数来解决我的问题?而yaindex-1和tsize应该是相同的。没有完整的代码很难说。这是一个不同的问题,应该提出不同的问题。我同意史蒂夫·莱昂内尔的上述建议。