android {
signingConfigs {
debug {
storeFile file("debug.keystore")
}
myConfig {
storeFile file("other.keystore")
storePassword "android"
keyAlias "androiddebugkey"
keyPassword "android"
}
}
buildTypes {
foo {
signingConfig signingConfigs.myConfig
}
}
}
我基本上试图以一种糟糕的方式传播波函数..但是这个项目告诉我像这样传播。所以n是常数,h是n乘n阵列。
为什么它一直告诉我左侧和右侧的阵列形状在do循环中不一致?如何改进它以使左右相等?
答案 0 :(得分:1)
Gfortran 5.2在错误中发出更多信息:
psi(n,j) = psi(n,j) - ci * dt * h *psi(n,j)
1
Error: Incompatible ranks 0 and 2 in assignment at (1)
数组的LHS为0,因为psi(n,j)
是标量。在RHS上,psi(n,j)
的两个实例都是0级标量,但h
是排名2的数组。你有:
scalar = scalar - scalar * scalar * rank 2 array * scalar
scalar = scalar - rank 2 array
scalar = rank 2 array
这是因为标量被提升为适合上述操作的数组,因此它们可以作用于h
的所有元素。要使两侧的排名相等,您需要选择h
的单个元素或对其执行一些其他操作,将其缩减为标量。
值得注意的是,您的循环是否正确尚不清楚。您的'n'值固定为用户输入的数组边界值,因此您的循环只迭代数组的一行,并且根据d
和dt
的选择,您将超出数组范围如果t > n
,则间隔dt
之间的所有行元素都不会更改。看到你的计算会触及很少的元素,这让我觉得它不对。您的初始值j
也超出了数组的范围,因为除非明确说明边界,否则fortran数组索引从1开始。