我想通过访问fortran中的边界元素来检查我的数组是否返回废话。我想检查这些值是否小于1,如果是,请将它们更改为1。在阵列上操作元素
这是一张我的代码引起的问题:
lastNeighLabel=(/clusterLabel(jj-1,kk,ll), clusterLabel(jj,kk-1,ll), clusterLabel(jj,kk,ll-1)/)
LastNeighLabel包含集群标签(介于1到n,其中n isthe发现独特的独立簇的总数)在x的最后一个邻居, y,z方向。
当jj
或kk
或ll
是1,他们尝试和在阵列中访问第0个元素,并且如在阵列1 FORTRAN
计数,它试图破坏宇宙。我目前纠结在大约8个if/elseif语句试图为每个可能性编码。但我希望在每个元素上都有一种操作方式。所以基本上我想说where((/jj-1,kk-1,ll-1/).lt.1) do clusterLabel(jj-1,kk,ll)=0 etc
取决于哪个元素导致问题。
但我不能想办法做到这一点,因为哪里只会操纵传递给它的变量,而不是在同一个索引处的不同数组。或者我错了?
如果这没有意义,会很乐意编辑。
你想有例如lastNeighLabel =(/ 0,clusterLabel(JJ,KK-1,LL),clusterLabel(JJ,KK,LL-1)/)如果JJ == 0? –
是的,这就是我所追求的。 – Pureferret