Skip to content
Snippets Groups Projects
plotForces.py 2.21 KiB
Newer Older
  • Learn to ignore specific revisions
  • #!/usr/bin/python
    
    
    Hrvoje Jasak's avatar
    Hrvoje Jasak committed
    forcesfilename = 'forces/0/forces.dat'
    
    import sys
    if len(sys.argv) != 1:
            print 'script assumes forces file ', forcesfilename
            sys.exit()
    
    
    import re
    forceRegex=r"([0-9.Ee\-+]+)\s+\(+([0-9.Ee\-+]+)\s([0-9.Ee\-+]+)\s([0-9.Ee\-+]+)\)\s\(([0-9.Ee\-+]+)\s([0-9.Ee\-+]+)\s([0-9 .Ee\-+]+)\)+\s\(+([0-9.Ee\-+]+)\s([0-9.Ee\-+]+)\s([0-9.Ee\-+]+)\)\s\(([0-9.Ee\-+]+)\s([0-9.Ee\-+]+)\s([0-9.Ee\-+]+)\)+"
    t = []
    fpx = []; fpy = []; fpz = []
    fvx = []; fvy = []; fvz = []
    mpx = []; mpy = []; mpz = []
    mvx = []; mvy = []; mvz = []
    
    Hrvoje Jasak's avatar
    Hrvoje Jasak committed
    
    pipefile=open(forcesfilename,'r')
    
    lines = pipefile.readlines()
    
    for line in lines:
            match=re.search(forceRegex,line)
            if match:
                    t.append(float(match.group(1)))
                    fpx.append(float(match.group(2)))
                    fpy.append(float(match.group(3)))
                    fpz.append(float(match.group(4)))
                    fvx.append(float(match.group(5)))
                    fvy.append(float(match.group(6)))
                    fvz.append(float(match.group(7)))
                    mpx.append(float(match.group(8)))
                    mpy.append(float(match.group(9)))
                    mpz.append(float(match.group(10)))
                    mvx.append(float(match.group(11)))
                    mvy.append(float(match.group(12)))
                    mvz.append(float(match.group(13)))
    
    
    # combine pressure and viscous forces and moments
    fx = fpx
    fy = fpy
    fz = fpz
    
    mx = mpx
    my = mpy
    mz = mpz
    
    for i in range(1,len(t)):
            fx[i] += fvx[i]
            fy[i] += fvy[i]
            fz[i] += fvz[i]
            mx[i] += mvx[i]
            my[i] += mvy[i]
            mz[i] += mvz[i]
    
    
    Hrvoje Jasak's avatar
    Hrvoje Jasak committed
    # write clean data file
    
    outForces=open('forces.dat','w')
    
    Hrvoje Jasak's avatar
    Hrvoje Jasak committed
    
    for data in zip(t,fx,fy,fz):
    
            outForces.write(' '.join([str(d) for d in data])+'\n')
    
    outForces.close()
    
    outMoments=open('moments.dat','w')
    
    for data in zip(t,mx,my,mz):
            outMoments.write(' '.join([str(d) for d in data])+'\n')
    
    outMoments.close()
    
    # plot forces
    import pylab
    pylab.xlabel('iteration')
    pylab.ylabel('force (N)')
    pylab.grid(True)
    #
    pylab.plot(t,fx,'-',label="fx")
    pylab.plot(t,fy,'-',label="fy")
    pylab.plot(t,fz,'-',label="fz")
    
    #pylab.plot(t,mx,'-',label="mx")
    #pylab.plot(t,my,'-',label="my")
    #pylab.plot(t,mz,'-',label="mz")
    
    pylab.legend()
    pylab.show()