//Python Scripts

Python Scripts

Remove duplicate zones in Tecplot

#flist = flist[0:5] # just for testing on 5 files and not all of them!
import tecplot as tp
from tecplot.exception import *
from tecplot.constant import *
# Uncomment the following line to connect to a running instance of Tecplot 360:
tp.session.connect()

for fname in flist:
dataset = tp.data.load_tecplot(fname, read_data_option=2) #option 2 is replace, #option 1 is default which is append
zList = list(dataset.zone_names)
# Find duplicate zones and set to remove
dups = [i for i, x in enumerate(zList) if zList.count(x) > 1]
remDups = dups[0::2]
# Remove duplicate zones
dataset.delete_zones(remDups)
# Save data
tp.data.save_tecplot_plt(f'clean_{fname[4:]}', dataset=dataset, variables=None, zones=None)

DPM to Tec

fnameClean = 'cleanTemp.dat'
def cleanFile(filename):
fnameClean = 'cleanTemp.dat'
with open(filename, 'r') as infile, open(fnameClean, 'w') as outfile:
data = infile.read()
data = data.replace("(", "")
data = data.replace(")", "")
outfile.write(data)

def writeTec(pdData, suffx):
ffname = fname[:-4] + '_'+ suffx +'mic.dat'
ftec = open(ffname, 'w')
ftec.write(f'TITLE = "{fname[:-4]}_{suffx}mic"\n')
ftec.write('VARIABLES = "X", "Y", "Z", "u","v","w","diam" \n')
ftec.write(f'ZONE T="{fname[:-4]}_{suffx}mic" \n')
ftec.write(pdData.to_string(header=False, index=False))
ftec.close()

Generate points in Fluent for monitoring

fname = 'points-for-monitoring.txt'
df = pd.read_csv(fname, skiprows=0, delim_whitespace=True, names=['x','y','z'])
fid = open('createPoints.jou','w')
count = 1
for index, row in df.iterrows():
fid.write(f'/surface/point-surf p{count:02} {row["x"]} {row["y"]} {row["z"]}\n')
count = count+1
fid.close()

Transient Flow Profile

import numpy as np
from matplotlib import pyplot as plt
cycle=1
tStart = (cycle-1)*4+1.65
density=1.225
timestep =0.0001 # timestep size
time = np.arange(timestep,2.35+timestep,timestep)
a1 =      0.3674
b1 =       1.429
a2 =      0.0351
b2 =       6.223
a3 =     0.08071
b3 =       3.572
# ===== THIS PRODUCES L/S convert kg/s by /1000*density     
mfr =  (a1*np.sin(b1*time) + a2*np.sin(b2*time) + a3*np.sin(b3*time))/1000*density
# ===== THIS PRODUCES L/S convert kg/s by /1000*density
printTime = tStart + time
plt.plot(printTime, mfr)
nTerms = len(time)
# check the volume
np.trapz(mfr, x=time)
#print adjusted time
# write transient profile -mass FR
fileName = "exhale-mfr.prof"
nTerms = len(printTime)
fid = open(fileName,"w")      # Open the file for writing
fid.write(f"( (exhale_cycle1 transient {nTerms} 1)\n") #1 =periodic 0=not periodic
fid.write("(time ")
fid.write(" ".join(str(format(i, ".7f")) for i in printTime))
fid.write(")\n")
fid.write("(mass-flow ")
fid.write(" ".join(str(format(i, ".12f")) for i in mfr))
fid.write(")\n")
fid.write(")\n")
fid.close()
2019-07-15T00:40:11+00:00