0

I wrote a function to write a file based on different inputs. The function works fine when I used it for individual part. However, when I used a for loop to do it, it does not work, I do not know why.

Below is my code

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)

All I tried to do is to write a file called controlDict, It has a list of locations that has a format like the one below

location1
      {
        type uniform;
        axis y;
        start (1000 -300 0.05 );
        end   (1000 9 0.05 );
        nPoints 3000;
      }

All my controlDictRead function does is to find the location name (e.g. location1) I am interested in, and then replace the values (e.g. start, end, nPoints) to the one I inputted. This function works fine when I input these values one by one, for example

controlDict_new=CD.controlDicWritter(3,x_input[2],y_start[2],y_end,z,nPoints)

However, when I did it using a loop like the one shown at the beginning, it does not work, the loop stuck at the first location and kept writing values onto the first location throughout the loop, I am not sure why. Any suggestions?

1
  • Can you provide the code for CD.controlDicWritter? We cannot reproduce this without it. Commented Dec 11, 2017 at 23:32

1 Answer 1

1

It would be helpful to also see the source of the controDictRead module, but I have a suspicion what might be wrong:

Your code seems to be passing an entire array to controlDictWriter, but your example code appears to be passing a single integer. Is that intentional?

Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.