def create_potential_table(self): if not self.paraBEM: self.QWarning = QtGui.QLabel("no panel_method installed") self.layout.addWidget(self.QWarning) else: self._vertices, self._panels, self._trailing_edges = paraBEM_Panels( self.ParametricGlider.get_glider_3d(), midribs=0, profile_numpoints=50, num_average=4, distribution=Distribution.from_nose_cos_distribution(0.2), symmetric=True ) case = self.pan3d.DirichletDoublet0Source0Case3(self._panels, self._trailing_edges) case.A_ref = self.ParametricGlider.shape.area case.mom_ref_point = self.paraBEM.Vector3(1.25, 0, -6) case.v_inf = self.paraBEM.Vector(self.ParametricGlider.v_inf) case.drag_calc = "trefftz" case.farfield = 5 case.create_wake(10000000, 20) pols = case.polars(self.paraBEM_utils.v_inf_deg_range3(case.v_inf, 2, 15, 20)) self.cL = [] self.cDi = [] self.cPi = [] self.alpha = [] for i in pols.values: self.alpha.append(i.alpha) self.cL.append(i.cL) self.cDi.append(i.cD) self.cPi.append(i.cP) self.alpha = np.array(self.alpha) self.cL = np.array(self.cL) self.cDi = np.array(self.cDi) self.cPi = np.array(self.cPi)
def min_func(x): global count count += 1 print("\niteration: " + str(count)) _glider2d = deepcopy(glider2d) glider_set_controlpoint(_glider2d, x) glider3d = _glider2d.get_glider_3d() panels = paraBEM_Panels( glider3d, midribs=0, profile_numpoints=40, symmetric=True, distribution=Distribution.from_nose_cos_distribution(40, 0.2), num_average=0) case = Case(panels[1], panels[2]) case.farfield = 5 case.drag_calc = "trefftz" case.A_ref = 23 case.create_wake(length=10000, count=5) case.v_inf = paraBEM.Vector3(8, 0, 1) case.trefftz_cut_pos = case.v_inf * 50 alpha = v_inf_deg_range3(case.v_inf, 5, 9, 20) polars = case.polars(alpha) vtk_writer = CaseToVTK(case, "results/vtk_opt", suffix=str(count)) vtk_writer.write_panels(data_type="point") cL = [] cD = [] for i in polars.values: cL.append(i.cL) cD.append(i.cD) return np.interp(0.6, cL, cD)
def create_potential_table(self): if not self.paraBEM: self.QWarning = QtGui.QLabel('no panel_method installed') self.layout.addWidget(self.QWarning) else: self._vertices, self._panels, self._trailing_edges = paraBEM_Panels( self.parametric_glider.get_glider_3d(), midribs=0, profile_numpoints=50, num_average=4, distribution=Distribution.from_nose_cos_distribution(0.2), symmetric=True) case = self.pan3d.DirichletDoublet0Source0Case3( self._panels, self._trailing_edges) case.A_ref = self.parametric_glider.shape.area case.mom_ref_point = self.paraBEM.Vector3(1.25, 0, -6) case.v_inf = self.paraBEM.Vector(self.parametric_glider.v_inf) case.drag_calc = 'trefftz' case.farfield = 5 case.create_wake(10000000, 20) pols = case.polars( self.paraBEM_utils.v_inf_deg_range3(case.v_inf, 2, 15, 20)) self.cL = [] self.cDi = [] self.cPi = [] self.alpha = [] for i in pols.values: self.alpha.append(i.alpha) self.cL.append(i.cL) self.cDi.append(i.cD) self.cPi.append(i.cP) self.alpha = np.array(self.alpha) self.cL = np.array(self.cL) self.cDi = np.array(self.cDi) self.cPi = np.array(self.cPi)
def min_func(x): global count count += 1 print("\niteration: " + str(count)) _glider2d = deepcopy(glider2d) glider_set_controlpoint(_glider2d, x) glider3d = _glider2d.get_glider_3d() panels = paraBEM_Panels(glider3d, midribs=0, profile_numpoints=40, symmetric=True, distribution=Distribution.from_nose_cos_distribution(40, 0.2), num_average=0) case = Case(panels[1], panels[2]) case.farfield = 5 case.drag_calc = "trefftz" case.A_ref = 23 case.create_wake(length=10000, count=5) case.v_inf = paraBEM.Vector3(8, 0, 1) case.trefftz_cut_pos = case.v_inf * 50 alpha = v_inf_deg_range3(case.v_inf, 5, 9, 20) polars = case.polars(alpha) vtk_writer = CaseToVTK(case, "results/vtk_opt", suffix=str(count)) vtk_writer.write_panels(data_type="point") cL = [] cD = [] for i in polars.values: cL.append(i.cL) cD.append(i.cD) return np.interp(0.6, cL, cD)
def create_panels(self, midribs=0, profile_numpoints=10, mean=False, symmetric=True): self._vertices, self._panels, self._trailing_edges = paraBEM_Panels( self.ParametricGlider.get_glider_3d(), midribs=midribs, profile_numpoints=profile_numpoints, num_average=mean*5, distribution=Distribution.from_nose_cos_distribution(0.2), symmetric=symmetric)
def create_panels(self, midribs=0, profile_numpoints=10, mean=False, symmetric=True): self._vertices, self._panels, self._trailing_edges = paraBEM_Panels( self.parametric_glider.get_glider_3d(), midribs=midribs, profile_numpoints=profile_numpoints, num_average=mean * 5, distribution=Distribution.from_nose_cos_distribution(0.2), symmetric=symmetric)
def create_fem_dict(par_glider): # not yet working # create a paraBEM object and compute the pressure # create a dict with: # nodes, elements, forces, bc, joints vertices, panels, trailing_edges = paraBEM_Panels( par_glider.get_glider_3d(), midribs=0, profile_numpoints=50, num_average=4, distribution=Distribution.from_nose_cos_distribution(0.2), symmetric=True)
def create_fem_dict(par_glider): # create a paraBEM object and compute the pressure # create a dict with: # nodes, elements, forces, bc, joints vertices, panels, trailing_edges = paraBEM_Panels( par_glider.get_glider_3d(), midribs=0, profile_numpoints=50, num_average=4, distribution=Distribution.from_nose_cos_distribution(0.2), symmetric=True) case.A_ref = par_glider.flat_area case.v_inf = paraBEM.Vector(glider.v_inf) self.case.farfield = 5 self.case.create_wake(9999, 10) self.case.run()
def create_fem_dict(par_glider): # create a paraBEM object and compute the pressure # create a dict with: # nodes, elements, forces, bc, joints vertices, panels, trailing_edges = paraBEM_Panels( par_glider.get_glider_3d(), midribs=0, profile_numpoints=50, num_average=4, distribution=Distribution.from_nose_cos_distribution(0.2), symmetric=True ) case.A_ref = par_glider.flat_area case.v_inf = paraBEM.Vector(glider.v_inf) self.case.farfield = 5 self.case.create_wake(9999, 10) self.case.run()
import paraBEM from paraBEM.pan3d import DirichletDoublet0Source0Case3 as Case from paraBEM.vtk_export import CaseToVTK from paraBEM.utils import v_inf_deg_range3 n_x = 30 with open("glider/referenz_schirm_berg.json") as _file: glider_2d = load(_file)["data"] glider_2d.shape.set_const_cell_dist() glider = glider_2d.get_glider_3d() _, panels, trailing_edge = paraBEM_Panels( glider, midribs=3, profile_numpoints=n_x, distribution=Distribution.from_cos_2_distribution(n_x), num_average=0, symmetric=False) v_inf = [8, 0, 1] case = Case(panels, trailing_edge) case.mom_ref_point = paraBEM.Vector3(1.25, 0, 0) case.A_ref = glider_2d.shape.area case.farfield = 5 case.drag_calc = "on_body" case.v_inf = paraBEM.Vector3(v_inf) case.create_wake(length=10000, count=4) # length, count polars = case.polars(v_inf_deg_range3(case.v_inf, -5, 15, 50))
from paraBEM.pan3d import DirichletDoublet0Source0Case3 from paraBEM.utils import check_path count = 0 # load the glider with open("results/glider/optimized.json") as _file: glider2d = load(_file)["data"] area = glider2d.shape.area aspect_ratio = glider2d.shape.aspect_ratio glider3d = glider2d.get_glider_3d() verts, panels, trailing_edge = paraBEM_Panels( glider3d, midribs=0, profile_numpoints=20, symmetric=False, distribution=Distribution.from_cos_2_distribution, num_average=0, ) case = DirichletDoublet0Source0Case3(panels, trailing_edge) case.v_inf = paraBEM.Vector3(*glider2d.v_inf) case.create_wake(1000, 100) case.trefftz_cut_pos = case.v_inf * 20 case.run() gamma_pan = -np.array([edge.vorticity for edge in case.trailing_edge]) ######################LiftingLine############################ te_line = [paraBEM.Vector3(0, i.y, i.z) for i in trailing_edge] lifting_line = LiftingLine(te_line)
from openglider.glider.in_out.export_3d import paraBEM_Panels from openglider.jsonify import load import paraBEM from paraBEM.pan3d import DirichletDoublet0Source0Case3 as Case from paraBEM.vtk_export import CaseToVTK with open("../openglider/glider/referenz_schirm_berg.json") as _file: glider = load(_file)["data"] panels = paraBEM_Panels(glider.get_glider_3d() , 0, 30, 0, False) case = Case(panels[1], panels[2]) case.v_inf = paraBEM.Vector(glider.v_inf) case.drag_calc = "on_body" case.A_ref = glider.shape.area #wake parallel to the x axis print("* wake parallel to the x-axis") case.create_wake(50, 100, paraBEM.Vector3(1., 0., 0.)) case.run() writer = CaseToVTK(case, "results/wake/x-parallel") writer.write_panels() writer.write_wake_panels() print("F_l = ", case.cL * case.A_ref * 1.2 * 11**2 / 2., "F_w = ", case.cD * case.A_ref * 1.2 * 11**2 / 2.) #wake parallel to v_inf print("* wake parallel to v_inf") case.create_wake(50, 100, case.v_inf) case.run() writer = CaseToVTK(case, "results/wake/v_inf-parallel")
from paraBEM.liftingline import LiftingLine from paraBEM.pan3d import DirichletDoublet0Source0Case3 from paraBEM.utils import check_path count = 0 # load the glider with open("results/glider/optimized.json") as _file: glider2d = load(_file)["data"] area = glider2d.shape.area aspect_ratio = glider2d.shape.aspect_ratio glider3d = glider2d.get_glider_3d() verts, panels, trailing_edge = paraBEM_Panels( glider3d, midribs=0, profile_numpoints=20, symmetric=False, distribution=Distribution.from_cos_2_distribution, num_average=0) case = DirichletDoublet0Source0Case3(panels, trailing_edge) case.v_inf = paraBEM.Vector3(*glider2d.v_inf) case.create_wake(1000, 100) case.trefftz_cut_pos = case.v_inf * 20 case.run() gamma_pan = -np.array([edge.vorticity for edge in case.trailing_edge]) ######################LiftingLine############################ te_line = [paraBEM.Vector3(0, i.y, i.z) for i in trailing_edge] lifting_line = LiftingLine(te_line) lifting_line.v_inf = case.v_inf
import paraBEM from paraBEM.pan3d import DirichletDoublet0Source0Case3 as Case from paraBEM.vtk_export import CaseToVTK from paraBEM.utils import v_inf_deg_range3 n_x = 30 with open("glider/referenz_schirm_berg.json") as _file: glider_2d = load(_file)["data"] glider_2d.shape.set_const_cell_dist() glider = glider_2d.get_glider_3d() _, panels, trailing_edge = paraBEM_Panels( glider, midribs=3, profile_numpoints=n_x, distribution=Distribution.cos_2_distribution, num_average=0, symmetric=False) v_inf = [8, 0, 1] case = Case(panels, trailing_edge) case.mom_ref_point = paraBEM.Vector3(1.25, 0, 0) case.A_ref = glider_2d.shape.area case.farfield = 5 case.drag_calc = "on_body" case.v_inf = paraBEM.Vector3(v_inf) case.create_wake(length=10000, count=4) # length, count polars = case.polars(v_inf_deg_range3(case.v_inf, -5, 15, 50))