enricw
enricw

Reputation: 293

np.savetxt isn't storing array information

I have the following code:

#Time integration
T=28
AT=5/(1440)
L=T/AT
tr=np.linspace(AT,T,AT) %I set minimum_value to AT, 
to avoid a DivisionByZero Error (in function beta_cc(i))
np.savetxt('tiempo_real.csv',tr,delimiter=",")

#Parameters
fcm28=40
beta_cc=0
fcm=0
s=0

# Hardening coeficient (s)
ct=input("Cement Type (1, 2 or 3): ")
print("Cement Type: "+str(ct))
if int(ct)==1:
    s=0.2
elif int(ct)==2:
    s=0.25
elif int(ct)==3:
    s=0.38
else: print("Invalid answer")

# fcm determination
iter=1
maxiter=8065
while iter<maxiter:
    iter += 1
    beta_cc = np.exp(s*(1-(28/tr))**0.5)
    fcm = beta_cc*fcm28
np.savetxt('Fcm_Results.csv',fcm,delimiter=",")

The code runs without errors, and it creates the two desired files, but there is no information stored in neither.

What I would like the np.savetxt to do is to create a .CSV file with the result of fcm at every iteration, (so a 1:8064 array)

Instead of the while-loop, I had previously tried using a For-loop, but as the timestep is a float, I had some problems with it.

Thank you very much.

PS. Not sure if I should mention: I used Python3 on Ubuntu.

Upvotes: 1

Views: 178

Answers (1)

enricw
enricw

Reputation: 293

If anyone has the same issue, I solved this by changing the loop to a FOR loop, appending the iterative values of the functions (beta_cc & fcm) in an array, and using the savetxt command.

iteration=0
maxiteration=8064
fcmM1=[]
tiemporeal=[]
for i in range(iterat,maxiter):
def beta_cc(i):
return np.exp(s*1-(28/tr)**0.5))
def fcm(i):
return beta_cc(i)**fcm28
tr=tr+AT
fcmM1.append(fcm(i))
tiemporeal.append(tr)
np.savetxt('M1_Resultados_fcm.csv',fcmM1,delimiter=",",header="Fcm",fmt="%s")

Upvotes: 1

Related Questions