我写了一个函数来根据不同的输入写一个文件。当我将它用于单个部件时,该功能正常工作。但是,当我使用for循环来做它时,它不起作用,我不知道为什么。
以下是我的代码
import controDictRead as CD
import numpy as np
Totallength=180000
x=np.arange(0.,Totallength,1.)
h=300*np.ones(len(x))
Relaxationzone=1000 # Relaxation zone width
#I=2
#x_input=1000
#y_start=-200
y_end=9
z=0.05
nPoints=4000
dx=20000
threshold=1000
x_input=np.zeros(int(np.floor(Totallength/dx)))
y_start=np.zeros(len(x_input))
I=np.zeros(len(x_input))
for i in range(len(x_input)):
if i==0:
x_input[i]=Relaxationzone
else:
x_input[i]=dx*i
if x_input[i]>=Totallength-Relaxationzone:
x_input[i]=Totallength-Relaxationzone
I[i]=i+1
y_start[i]=np.interp(x_input[i],x,h)
controlDict_new=CD.controlDicWritter(I,x_input[i],y_start[i],y_end,z,nPoints)
我试图做的就是写一个名为controlDict的文件,它有一个位置列表,其格式如下所示
location1
{
type uniform;
axis y;
start (1000 -300 0.05 );
end (1000 9 0.05 );
nPoints 3000;
}
我的所有controlDictRead函数都是找到我感兴趣的位置名称(例如location1),然后将值(例如start,end,nPoints)替换为我输入的值。当我逐个输入这些值时,此功能正常工作,例如
controlDict_new=CD.controlDicWritter(3,x_input[2],y_start[2],y_end,z,nPoints)
然而,当我使用类似于开头所示的循环时,它不起作用,循环卡在第一个位置并且在整个循环中将值写入第一个位置,我不知道为什么。有什么建议?
答案 0 :(得分:1)
查看controDictRead
模块的来源会很有帮助,但我怀疑可能出错:
您的代码似乎将整个数组传递给controlDictWriter
,但您的示例代码似乎传递了一个整数。这是故意的吗?