In [1]:
case_name = 'v2'
In [2]:
remote_data = True
data_dir='/gpfs/cfms/workarea/projects/hyper_flux/high_lift/7deg_v3'
data_host='jappa@vis03'
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
In [3]:
%pylab inline
from paraview.simple import *
paraview.simple._DisableFirstRenderCameraReset()
import pylab as pl
import math
import numpy as np
In [4]:
from zutil.post import pvserver_connect
if remote_data:
pvserver_connect(data_host=data_host,data_dir=data_dir,paraview_cmd=paraview_cmd)
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)
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'])
In [7]:
from IPython.display import HTML
HTML(print_html_parameters(parameters))
Out[7]:
In [11]:
from zutil.post import get_csv_data
data_root = 'data/results/results_csv_format'
#meta_comp_results = 'data/results/metacomp_results'
#fluent_comp_results = 'data/results/fluent_results'
exp_data = {'ps01' : {'wing' : {'location': (0.0, 209.67 ,0.0),
},
'flap': {'location': (197.8982043488),
'normal' : (0.003629,-0.996368,-0.085077),
},
'slat': {'location': (-217.4733989342),
},
'eta' : 0.15,
'eta_index' : 15,
},
'ps02' : {'wing' : {'location': (0.0, 403.87 ,0.0),
},
'flap': {'location': (392.1763409519),
'normal' : (0.003626,-0.996367,-0.085081),
},
'slat': {'location':(-411.7473427342),
},
'eta' : 0.285,
'eta_index' : 29,
},
'ps04' : {'wing' : {'location': (0.0, 629.14 ,0.0)},
'flap': {'location': (-617.8606667446),
'normal' : (0.000246,0.989663,0.143413)
},
'slat': {'location':(-637.4499817342)
},
'eta' : 0.449,
'eta_index' : 45,
},
'ps05' : {'wing' : {'location': (0.0, 760.30 ,0.0)},
'flap': {'location': (-749.2356867151),
'normal' : (0.000241,0.989664,0.143404)
},
'slat': {'location':(-768.8322037342)
},
'eta' : 0.543,
'eta_index' : 54,
},
'ps06' : {'wing' : {'location': (0.0, 952.95 ,0.0)},
'flap': {'location': (-942.2476198083),
'normal' : (0.000247,0.989663,0.14341)
},
'slat': {'location':(-961.8352640342)
},
'eta' : 0.681,
'eta_index' : 68,
},
'ps07' : {'wing' : {'location': (0.0, 1001.28 ,0.0)},
'flap': {'location': (-990.6836221217),
'normal' : (0.000229,0.989666,0.143389)
},
'slat': {'location':(-1010.3007059342)
},
'eta' : 0.715,
'eta_index' : 72,
},
'ps08' : {'wing' : {'location': (0.0, 1051.35 ,0.0)},
'flap': {'location': (-1040.0478582652),
'normal' : (0.000244,0.990009,0.141001),
},
'slat': {'location':(-1060.4835625342),
},
'eta' : 0.751,
'eta_index' : 75,
},
'ps09' : {'wing' : {'location': (0.0, 1145.79 ,0.0)
},
'flap': {'location': (-1134.5926478846),
'normal' : (0.000193,0.990019,0.140931)
},
'slat': {'location':(-1155.1131106342)
},
'eta' : 0.818,
'eta_index' : 82,
},
'ps10' : {'wing' : {'location': (0.0, 1247.68 ,0.0)
},
'flap': {'location': (-1236.8582935410),
'normal' : (0.000301,0.989998,0.141080)
},
'slat': {'location':(-1257.1962384342)
},
'eta' : 0.891,
'eta_index' : 89,
},
'ps11' : {'wing' : {'location': (0.0, 1349.83 ,0.0)
},
'flap': {'location': (-1339.1385759566),
'normal' : (0.000256,0.990007,0.141018)
},
'slat': {'location':(-1359.5541526342)
},
'eta' : 0.964,
'eta_index' : 96,
},
}
exp_locations = { 'wing': {'normal':[0.0,1.0,0.0],
},
'slat' : {'normal': [0.003861,0.999926,0.011494],
},
'flap' : {'normal' : [],
},
}
# Read data
for key,value in exp_data.iteritems():
value['wing']['data'] = get_csv_data(data_root+'/cp_'+key+'.csv',
header=True,remote=False,delim=',')
#value['wing']['fluent-data'] = get_csv_data(fluent_comp_results+'/wing_'+str(value['eta_index'])+'_coarse.csv',
# header=True,remote=False,delim=',')
#value['wing']['metacomp-data'] = get_csv_data(meta_comp_results+'/wing_'+str(value['eta_index'])+'_coarse.csv',
# header=True,remote=False,delim=',')
value['flap']['data'] = get_csv_data(data_root+'/cp_'+key+'_flap.csv',
header=True,remote=False,delim=',')
#value['flap']['fluent-data'] = get_csv_data(fluent_comp_results+'/flap_'+str(value['eta_index'])+'_coarse.csv',
# header=True,remote=False,delim=',')
#value['flap']['metacomp-data'] = get_csv_data(meta_comp_results+'/flap_'+str(value['eta_index'])+'_coarse.csv',
# header=True,remote=False,delim=',')
value['slat']['data'] = get_csv_data(data_root+'/cp_'+key+'_slat.csv',
header=True,remote=False,delim=',')
#value['slat']['fluent-data'] = get_csv_data(fluent_comp_results+'/slat_'+str(value['eta_index'])+'_coarse.csv',
# header=True,remote=False,delim=',')
#value['slat']['metacomp-data'] = get_csv_data(meta_comp_results+'/slat_'+str(value['eta_index'])+'_coarse.csv',
# header=True,remote=False,delim=',')
In [ ]:
In [9]:
from zutil.post import cp_profile_wall_from_file
def get_cp_profile(file_root,section_loc,section_normal,section_data):
force_data = cp_profile_wall_from_file(file_root,
section_normal,
section_loc,
func=cp_array,
section_data=section_data,
alpha=0.0)
def cp_array(data_array,pts_array,**kwargs):
cp_array = data_array.GetPointData()['cp']
section_data = kwargs['section_data']
section_data.append((pts_array.GetPoints(),cp_array))
In [12]:
from zutil.post import get_case_root
section_data = {}
for station,val in exp_data.items():
print 'Extracting station: '+station
section_data[station] = {}
for key,data in val.items():
section_data[station][key] = []
if key == 'wing':
#print 'Location: ' + key
get_cp_profile(get_case_root(case_name,num_procs),
data['location'],
exp_locations[key]['normal'],
section_data[station][key]
)
if key == 'flap':
get_cp_profile(get_case_root(case_name,num_procs),
[0.0,-data['location']/data['normal'][1],0.0],
data['normal'],
section_data[station][key]
)
if key == 'slat':
get_cp_profile(get_case_root(case_name,num_procs),
[0.0,-data['location']/exp_locations[key]['normal'][1],0.0],
exp_locations[key]['normal'],
section_data[station][key]
)
In [13]:
for station,val in exp_data.items():
for key,data in val.items():
section = section_data[station][key]
if len(section) == 3:
# First get min loc for each loop
min_loc = []
for loop in section:
pts = loop[0]
lmin = np.amin(pts[:,0])
min_loc.append(lmin)
sort_index = np.argsort(np.array(min_loc))
if key == 'wing':
section_data[station][key] = [section[sort_index[1]]]
if key == 'slat':
section_data[station][key] = [section[sort_index[0]]]
if key == 'flap':
section_data[station][key] = [section[sort_index[2]]]
for loop in section:
pts = loop[0]
cp = loop[1]
lmin = np.amin(pts[:,0])
lmax = np.amax(pts[:,0])
pts[:,0] = (pts[:,0]-lmin)/(lmax-lmin)
zmin = np.amin(pts[:,2])
zmax = np.amax(pts[:,2])
pts[:,2] = (pts[:,2]-zmin)/(lmax-lmin)
#print val['flap']['fluent-data']
#lmin = np.amin(val['slat']['fluent-data']['X'])
#lmax = np.amax(val['slat']['fluent-data']['X'])
#val['slat']['fluent-data']['X'] = (val['slat']['fluent-data']['X']-lmin)/(lmax-lmin)
#lmin = np.amin(val['wing']['fluent-data']['X'])
#lmax = np.amax(val['wing']['fluent-data']['X'])
#val['wing']['fluent-data']['X'] = (val['wing']['fluent-data']['X']-lmin)/(lmax-lmin)
#lmin = np.amin(val['flap']['fluent-data']['X'])
#lmax = np.amax(val['flap']['fluent-data']['X'])
#val['flap']['fluent-data']['X'] = (val['flap']['fluent-data']['X']-lmin)/(lmax-lmin)
#lmin = np.amin(val['slat']['metacomp-data']['X'])
#lmax = np.amax(val['slat']['metacomp-data']['X'])
#val['slat']['metacomp-data']['X'] = (val['slat']['metacomp-data']['X']-lmin)/(lmax-lmin)
#lmin = np.amin(val['wing']['metacomp-data']['X'])
#lmax = np.amax(val['wing']['metacomp-data']['X'])
#val['wing']['metacomp-data']['X'] = (val['wing']['metacomp-data']['X']-lmin)/(lmax-lmin)
#lmin = np.amin(val['flap']['metacomp-data']['X'])
#lmax = np.amax(val['flap']['metacomp-data']['X'])
#val['flap']['metacomp-data']['X'] = (val['flap']['metacomp-data']['X']-lmin)/(lmax-lmin)
In [14]:
from matplotlib.backends.backend_pdf import PdfPages
from IPython.display import FileLink, display
from collections import OrderedDict
import matplotlib.font_manager as fm
prop=fm.FontProperties(size=20)
for station in sorted(exp_data):
val = exp_data[station]
comp_fig1 = pl.figure(figsize=(30, 10),dpi=150, facecolor='w', edgecolor='k')
comp_fig1.suptitle('Eta: '+str(val['eta']), fontsize=30, fontweight='bold')
comp_ax = comp_fig1.add_subplot(1,3,1)
comp_ax_w = comp_fig1.add_subplot(1,3,2)
comp_ax_f = comp_fig1.add_subplot(1,3,3)
comp_ax.grid(True)
comp_ax.set_xlabel('x/c', fontsize=20, fontweight='bold')
comp_ax.set_ylabel('Cp', fontsize=20, fontweight='bold')
comp_ax.set_title('Slat', fontsize=20, fontweight='bold')
comp_ax.axis([0,1,1.5,-4.])
comp_ax2 = comp_ax.twinx()
comp_ax2.axis([0,1,0,1])
comp_ax_w.grid(True)
comp_ax_w.set_xlabel('x/c', fontsize=20, fontweight='bold')
comp_ax_w.set_ylabel('Cp', fontsize=20, fontweight='bold')
comp_ax_w.set_title('Main Wing', fontsize=20, fontweight='bold')
comp_ax_w.axis([0.0,1.0,1.5,-4.])
comp_ax2_w = comp_ax_w.twinx()
comp_ax2_w.axis([0,1,-0.5,0.5])
comp_ax_f.grid(True)
comp_ax_f.set_xlabel('x/c', fontsize=20, fontweight='bold')
comp_ax_f.set_ylabel('Cp', fontsize=20, fontweight='bold')
comp_ax_f.set_title('Flap', fontsize=20, fontweight='bold')
comp_ax_f.axis([0.0,1.0,1.5,-4.])
comp_ax2_f = comp_ax_f.twinx()
comp_ax2_f.axis([0,1,0,1])
section = section_data[station]['slat'][0]
x_loc = section[0][:,0]
z_loc = section[0][:,2]
cp = section[1]
comp_ax.plot(val['slat']['data']['x/c_local'],val['slat']['data']['cp_ETW_RUN238'],'b.', color='b', markersize=25,label = 'Experiment')
comp_ax.plot(x_loc,cp,'b.', color='r',markersize=20,label = 'zCFD')
comp_ax2.plot(x_loc,z_loc, color='gray',markersize=20,label = 'Profile')
#comp_ax.plot(val['slat']['metacomp-data']['X'],val['slat']['metacomp-data']['CP'],'b.',color='k',markersize=20,label='CFD++')
#comp_ax.plot(val['slat']['fluent-data']['X'],val['slat']['fluent-data']['CP'],'b.',color='g',markersize=20,label='FLUENT')
section = section_data[station]['wing'][0]
x_loc = section[0][:,0]
z_loc = section[0][:,2]
cp = section[1]
comp_ax_w.plot(val['wing']['data']['x/c_local'],val['wing']['data']['cp_ETW_RUN238'],'b.', color='b', markersize=25, label = 'Experiment')
comp_ax_w.plot(x_loc,cp ,'b.',color='r',markersize=20,label = 'zCFD')
comp_ax2_w.plot(x_loc,z_loc, color='gray',markersize=20,label = 'Profile')
#comp_ax_w.plot(val['wing']['metacomp-data']['X'],val['wing']['metacomp-data']['CP'] ,'b.',color='k',markersize=20,label = 'CFD++')
#comp_ax_w.plot(val['wing']['fluent-data']['X'],val['wing']['fluent-data']['CP'] ,'b.',color='g',markersize=20,label = 'FLUENT')
section = section_data[station]['flap'][0]
x_loc = section[0][:,0]
z_loc = section[0][:,2]
cp = section[1]
comp_ax_f.plot(val['flap']['data']['x/c_local'],val['flap']['data']['cp_ETW_RUN238'],'b.', color='b', markersize=25,label = 'Experiment')
comp_ax_f.plot(x_loc,cp, 'b.', color ='r', markersize=20,label = 'zCFD')
comp_ax2_f.plot(x_loc,z_loc, color='gray',markersize=20,label = 'Profile')
#comp_ax_f.plot(val['flap']['metacomp-data']['X'],val['flap']['metacomp-data']['CP'], 'b.', color ='k', markersize=20,label = 'CFD++')
#comp_ax_f.plot(val['flap']['fluent-data']['X'],val['flap']['fluent-data']['CP'], 'b.', color ='g', markersize=20,label = 'FLUENT')
comp_ax.legend(loc = 'upper right',numpoints=1,prop = prop)
comp_ax_w.legend(loc = 'upper right',numpoints=1,prop = prop)
comp_ax_f.legend(loc = 'upper right',numpoints=1,prop = prop)
comp_fig1.savefig('images/case2b_'+station+'.svg')
show()
In [34]:
from zutil.post import residual_plot, get_case_report
residual_plot(get_case_report(case_name))
show()
In [15]:
from zutil.post import pvserver_disconnect
if remote_data:
print 'Disconnecting from remote paraview server connection'
pvserver_disconnect()
pass
In [ ]: