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
Matrix Fortran中矩阵构造问题_Matrix_Fortran - Fatal编程技术网

Matrix Fortran中矩阵构造问题

Matrix Fortran中矩阵构造问题,matrix,fortran,Matrix,Fortran,我有一个简单的子程序来构造紧束缚哈密顿量。它仅在对角线和最近的非对角线上构造一个包含2x2块的矩阵。它是这样的(在我的代码中定义了许多参数): 当我在主程序中调用子程序时(顺便说一下,它运行时没有问题): 我得到子例程中a,s变量的以下矩阵(本例中lda=10): 我不明白右上角0.1是从哪里来的,因为在我的子程序中,矩阵的所有条目(明确指定的条目除外)都设置为零。 我没有考虑的索引是否有任何问题???您超出了数组边界。使用错误检查(-fcheck=all或-check或其他方法(取决于编译器)

我有一个简单的子程序来构造紧束缚哈密顿量。它仅在对角线和最近的非对角线上构造一个包含2x2块的矩阵。它是这样的(在我的代码中定义了许多参数):

当我在主程序中调用子程序时(顺便说一下,它运行时没有问题):

我得到子例程中a,s变量的以下矩阵(本例中lda=10):

我不明白右上角0.1是从哪里来的,因为在我的子程序中,矩阵的所有条目(明确指定的条目除外)都设置为零。
我没有考虑的索引是否有任何问题???

您超出了数组边界。使用错误检查(
-fcheck=all
-check
或其他方法(取决于编译器)进行编译,以诊断类似错误

比如说

 s(i+1,i+2+1) 

i
接近
lda
时,
i+1
i+2+1
都过大,并且超过了错误界限。所有行中都存在类似问题。

您超出了数组边界。使用错误检查(
-fcheck=all
-check
或其他方法(取决于编译器)进行编译,以诊断类似错误

比如说

 s(i+1,i+2+1) 

i
接近
lda
时,
i+1
i+2+1
都过大,并且超过了错误界限。所有行中都存在类似的问题。

lda如何在子例程中获得所需的值?您好。在这种情况下,它是一个设置为10的整数参数。
lda
如何在子例程中获得所需的值?您好。在这种情况下,它是一个整数参数,设置为10。谢谢,我会检查它。另一方面,您知道如何使用“英特尔编译器”(ifort)检查错误吗?
-检查,答案部分。。。这是检查边界-当你得到边界、接口和单元化的时候,检查所有是值得开始的。仅仅检查边界是不值得的。他可能有很多错误。谢谢,我会检查的。另一方面,您知道如何使用“英特尔编译器”(ifort)检查错误吗?
-检查,答案部分。。。这是检查边界-当你得到边界、接口和单元化的时候,检查所有是值得开始的。仅仅检查边界是不值得的。他可能会犯很多错误。
 1.000 0.000  0.100 -0.150  0.000  0.000  0.000  0.000  0.000  0.100
 0.000 1.200 -0.150  0.000  0.000  0.000  0.000  0.000  0.000  0.000
 0.100 0.000  1.000  0.000  0.100 -0.150  0.000  0.000  0.000  0.000
 0.000 0.000  0.000  1.200 -0.150  0.000  0.000  0.000  0.000  0.000
 0.000 0.000  0.100  0.000  1.000  0.000  0.100 -0.150  0.000  0.000
 0.000 0.000  0.000  0.000  0.000  1.200 -0.150  0.000  0.000  0.000
 0.000 0.000  0.000  0.000  0.100  0.000  1.000  0.000  0.100 -0.150
 0.000 0.000  0.000  0.000  0.000  0.000  0.000  1.200 -0.150  0.000
 0.000 0.000  0.000  0.000  0.000  0.000  0.100  0.000  1.000  0.000
 0.000 0.000  0.000  0.000  0.000  0.000  0.000  0.000  0.000  1.200
 s(i+1,i+2+1)