Valiation Delta Wing NASA experiment for different leading edge radii

Delta Wing - VORTEX AND BOUNDAYR LAYER INTERACTION----Investigation also performed within NATO VFE 2 project (DLR)

DELTA WING DELTA WING

Parameters

alpha = 13.3 Mach = 0.4 Re = 6.0e06

Other parameters may be considered

References

Chu J. and Luckring J. N. (1996). Experimental surface pressure data obtained on 65deg delta wing accorss Reynolds numerb and Mach number ranges. Nasa Technical Memorandum (TM 4645)

References

http://ntrs.nasa.gov/archive/nasa/casi.ntrs.nasa.gov/19960047655.pdf/
http://ntrs.nasa.gov/archive/nasa/casi.ntrs.nasa.gov/19960025648.pdf/
http://ntrs.nasa.gov/archive/nasa/casi.ntrs.nasa.gov/19960020459.pdf/
http://ntrs.nasa.gov/archive/nasa/casi.ntrs.nasa.gov/19960020435.pdf/

Define case name

This is the solver case to be analysed

In [1]:
case_name = 'delta_sharp'

Define Data Location

For remote data the interaction will use ssh to securely interact with the data
This uses the reverse connection capability in paraview so that the paraview server can be submitted to a job scheduler
Note: The default paraview server connection will use port 11111

In [2]:
remote_data = True

data_dir = '/gpfs/cfms/workarea/projects/hyper_flux/delta_wing_high_Re/Delta_Wing_Sharp'

data_host='[email protected]'

remote_server_auto = True

paraview_cmd='mpiexec /gpfs/cfms/apps/bin/pvserver'
if not remote_server_auto:
    paraview_cmd=None

if not remote_data:
    data_host='localhost'
    paraview_cmd=None

Initialise Environment

In [3]:
%pylab inline
from paraview.simple import *

paraview.simple._DisableFirstRenderCameraReset()
import pylab as pl
Populating the interactive namespace from numpy and matplotlib
paraview version 4.2.0-75-gff3f889

Data Connection

This starts paraview server on remote host and connects

In [4]:
from zutil.post import pvserver_connect
from zutil.post import pvserver_process
if remote_data:
    pvserver_connect(data_host=data_host,data_dir=data_dir,paraview_cmd=paraview_cmd)
[[email protected]] Executing task 'port_test'
Selected Port: 12000
[[email protected]] Executing task 'pvserver'
[[email protected]] run: /bin/bash -l -c "cd /gpfs/cfms/workarea/projects/hyper_flux/delta_wing_high_Re/Delta_Wing_Sharp && sleep 2;mpiexec /gpfs/cfms/apps/bin/pvserver -rc --client-host=localhost -sp=12000"
[[email protected]] out: 
[[email protected]] out: 		   _____ ______ __  __  _____ 
[[email protected]] out: 		  / ____|  ____|  \/  |/ ____|
[[email protected]] out: 		 | |    | |__  | \  / | (___  
[[email protected]] out: 		 | |    |  __| | |\/| |\___ \ 
[[email protected]] out: 		 | |____| |    | |  | |____) |
[[email protected]] out: 		  \_____|_|    |_|  |_|_____/ 
[[email protected]] out: 
[[email protected]] out: ++++++++++++++++++++++++++++: System Data :++++++++++++++++++++++++++++
[[email protected]] out: + Hostname = vis03
[a[email protected]] out: + Kernel = 2.6.32-358.el6.x86_64
[[email protected]] out: + RHEL Release = Red Hat Enterprise Linux Server release 6.4 (Santiago)
[[email protected]] out: + Uptime = 12:31:47 up 21 days, 2:16, 11 users,
[[email protected]] out: ++++++++++++++++++++++++++++: User Data :++++++++++++++++++++++++++++++
[[email protected]] out: + Username = acimpoeru
[[email protected]] out: +++++++++++++++++++++++: Contact Information :+++++++++++++++++++++++++
[[email protected]] out: + in case of any problems, contact: [email protected]
[[email protected]] out: + for feedback, contact: [email protected] 
[[email protected]] out: +++++++++++++++++++++: Maintenance Information :+++++++++++++++++++++++
[[email protected]] out: + There is no planned maintenance taking place this week
[[email protected]] out: +++++: Group Home Directory Quota Usage (updated every 10 mins)   +++++
[[email protected]] out: + 
[[email protected]] out: +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
[[email protected]] out: Warning: Conflicting CPU frequencies detected, using: 3059.000000.
[[email protected]] out: [[email protected]] rtunnel: opened reverse tunnel: (u'127.0.0.1', 40505) -> ('172.20.1.25', 22) -> ('localhost', 11111)
Connecting to client (reverse connection requested)...
[[email protected]] out: Connection URL: csrc://localhost:12000
[[email protected]] out: Client connected.
[[email protected]] out: 

Get control dictionary

In [5]:
from zutil.post import get_case_parameters,print_html_parameters
parameters=get_case_parameters(case_name,data_host=data_host,data_dir=data_dir)

Get status file

In [6]:
from zutil.post import get_status_dict
status=get_status_dict(case_name,data_host=data_host,data_dir=data_dir)
num_procs = str(status['num processor'])

Define test conditions

In [7]:
alpha = 13.3 # degrees
reference_area = 594720.0 # inches^2
reference_length = 275.8 # inches, mean chord. 
reference_span = 1156.75 # inches

from IPython.display import HTML
HTML(print_html_parameters(parameters))
Out[7]:
pressure407552.8904
temperature322.0389
Reynolds No6000000.0
Ref length0.3268
Speed0.0
Mach No0.4
In [8]:
import zutil
import zutil.post as post
reload(zutil)
reload(post)
from zutil.post import cp_profile_wall_from_file
from zutil.post import cp_profile_wall_from_file_span
def plot_cp_profile(ax,file_root,loc):
    force_data = cp_profile_wall_from_file_span(file_root,
                              [1.0,0.0,0.0],
                              [loc, 0.0 , 0.0],
                              func=plot_array,
                              axis=ax,
                              loc=loc,
                              alpha=alpha)
loop = 0
loop_data = {}
def plot_array(data_array,pts_array,**kwargs):
    global loop, loop_data
    ax = kwargs['axis']
    loc = kwargs['loc']
    #alpha = kwargs['alpha']
    cp_array = data_array.GetPointData()['cp']
    chord_array = data_array.GetPointData()['chord']
    ax.plot(chord_array, cp_array , 'b.',color='k',label='zCFD SST', markersize=20)
    ax.plot(pts_array.GetPoints()[:,1]/(max(pts_array.GetPoints()[:,1])),
            pts_array.GetPoints()[:,2]/(max(pts_array.GetPoints()[:,2])),
            '_',color='k',markersize=3.0)
    
    ax.legend(loc = 'upper left',numpoints=1,prop = prop)
    loop_data[loop] = (chord_array,cp_array)
    loop += 1   

Comparison Data

In [9]:
# Reproduce plots from delta wing presentation

from collections import OrderedDict
station_values = OrderedDict([("S01" , 0.2), ("S02" , 0.4), ("S03" , 0.6), ("S04" , 0.8),("S05",0.95)])

Experimental data

In [10]:
import zutil
import zutil.post as post
reload(zutil)
reload(post)
from zutil.post import get_csv_data
import os
import glob
from collections import OrderedDict

#Sharp RADIUS
cp_s02 = zutil.post.get_csv_data("/gpfs/cfms/workarea/projects/hyper_flux/delta_wing_high_Re/Delta_Wing_Sharp/0.2Cp.csv",header=True,remote=True,delim=' ')

cp_s04 = zutil.post.get_csv_data("/gpfs/cfms/workarea/projects/hyper_flux/delta_wing_high_Re/Delta_Wing_Sharp/0.4Cp.csv",header=True,remote=True,delim=' ')


cp_s06 = zutil.post.get_csv_data("/gpfs/cfms/workarea/projects/hyper_flux/delta_wing_high_Re/Delta_Wing_Sharp/0.6Cp.csv",header=True,remote=True,delim=' ')


cp_s08 = zutil.post.get_csv_data("/gpfs/cfms/workarea/projects/hyper_flux/delta_wing_high_Re/Delta_Wing_Sharp/0.8Cp.csv",header=True,remote=True,delim=' ')

stat = OrderedDict([("S01" ,(0.2,cp_s02[0],cp_s02[1])),
                    ("S02" ,(0.4,cp_s04[0],cp_s04[1])),
                    ("S03" ,(0.6,cp_s06[0],cp_s06[1])),
                    ("S04" ,(0.8,cp_s08[0],cp_s08[1]))
                  ])
//Applications/paraview.app/Contents/Python/paraview/vtk/numpy_interface/dataset_adapter.py:126: FutureWarning: comparison to `None` will result in an elementwise object comparison in the future.
  if array == None:

Cp Profile

In [11]:
from zutil.post import get_case_root
from zutil.post import get_chord_spanwise
import matplotlib.font_manager as fm
prop=fm.FontProperties(size=20)

fig = pl.figure(figsize=(30, 50),dpi=600, facecolor='w', edgecolor='k')
fig2 = pl.figure(figsize=(30, 50),dpi=600, facecolor='w', edgecolor='k')

plot = 1
for key in stat:
        loc = stat[key][0]
        ax = fig.add_subplot(len(station_values),2,plot)
        ax.set_title('$C_p$ at x/c = '+str(loc), fontsize=40, fontweight='bold')
        ax.grid(True)
        ax.set_xlabel('y/c - Spanwise',fontsize=20, fontweight='bold')
        ax.set_ylabel('$C_p$',fontsize=50, fontweight='bold')
        ax.axis([0.0,1.01,0.5,-3.0])
        plot_cp_profile(ax,get_case_root(case_name,num_procs),loc)
        ax.plot(stat[key][1],stat[key][2],'b.',color='r',label='Experiment', markersize=20)
        ax.legend(loc = 'upper left',numpoints=1,prop = prop)
        plot += 1    
from matplotlib.backends.backend_pdf import PdfPages
pp = PdfPages('sharp_delta.pdf')
pp.savefig()
pp.close()
fig.savefig("sharp_delta.png")
show()
from IPython.display import FileLink, display 
display(FileLink('sharp_delta.png'))
<matplotlib.figure.Figure at 0x11aae08d0>

Convergence

In [12]:
from zutil.post import residual_plot, get_case_report
residual_plot(get_case_report(case_name))
show()

Cleaning up

In [10]:
if remote_data:
    print 'Disconnecting from remote paraview server connection'
    Disconnect()
Disconnecting from remote paraview server connection