From a11eb44598c4fef4493ca18d83b33b64fbb51b66 Mon Sep 17 00:00:00 2001 From: GBenedett <113425078+GBenedett@users.noreply.github.com> Date: Tue, 5 Dec 2023 14:20:28 +0100 Subject: [PATCH] Improvement of the mesh generation and control pt. 1 (#280) Many new features: new mesh parameters and a new way to control mesh generation; automatic aeromap, actdisk in marker monitoring --- ceasiompy/CPACS2GMSH/__specs__.py | 68 +- ceasiompy/CPACS2GMSH/cpacs2gmsh.py | 30 +- ceasiompy/CPACS2GMSH/func/advancemeshing.py | 17 +- ceasiompy/CPACS2GMSH/func/generategmesh.py | 71 +- ceasiompy/CPACS2GMSH/func/mesh_sizing.py | 288 ++++ .../CPACS2GMSH/tests/test_advancemeshing.py | 26 +- .../CPACS2GMSH/tests/test_engineconversion.py | 1 - .../CPACS2GMSH/tests/test_generatemesh.py | 89 +- .../CPACS2GMSH/tests/test_mesh_sizing.py | 58 + .../tests/test_wingclassification.py | 15 +- ceasiompy/CPACS2SUMO/cpacs2sumo.py | 64 +- ceasiompy/ExportCSV/exportcsv.py | 9 +- ceasiompy/Optimisation/func/dictionnary.py | 3 +- ceasiompy/SU2Run/__specs__.py | 18 +- ceasiompy/SU2Run/func/su2config.py | 65 +- .../tests/tests_su2utils/test_mesh1.su2 | 4 +- .../tests/tests_su2utils/test_su2utils.py | 5 +- ceasiompy/SUMOAutoMesh/sumoautomesh.py | 8 +- ceasiompy/SkinFriction/skinfriction.py | 9 +- ceasiompy/utils/commonnames.py | 4 +- ceasiompy/utils/commonxpath.py | 8 +- ceasiompy/utils/moduleinterfaces.py | 5 - setup.py | 3 +- src/streamlit/.streamlit/config.toml | 3 + .../02_\342\232\231\357\270\217_Settings.py" | 137 +- tests/Test_input.xml | 1163 +++++++++++------ tests/Test_input2.xml | 234 ++-- tests/test_integration_tests.py | 5 - 28 files changed, 1710 insertions(+), 700 deletions(-) create mode 100644 ceasiompy/CPACS2GMSH/func/mesh_sizing.py create mode 100644 ceasiompy/CPACS2GMSH/tests/test_mesh_sizing.py diff --git a/ceasiompy/CPACS2GMSH/__specs__.py b/ceasiompy/CPACS2GMSH/__specs__.py index 2f226ce65..cdefcd57c 100644 --- a/ceasiompy/CPACS2GMSH/__specs__.py +++ b/ceasiompy/CPACS2GMSH/__specs__.py @@ -5,6 +5,8 @@ GMSH_EXHAUST_PERCENT_XPATH, GMSH_EXPORT_PROP_XPATH, GMSH_FARFIELD_FACTOR_XPATH, + GMSH_N_POWER_FACTOR_XPATH, + GMSH_N_POWER_FIELD_XPATH, GMSH_INTAKE_PERCENT_XPATH, GMSH_MESH_SIZE_FARFIELD_XPATH, GMSH_MESH_SIZE_FUSELAGE_XPATH, @@ -16,6 +18,8 @@ GMSH_REFINE_FACTOR_XPATH, GMSH_SYMMETRY_XPATH, SU2MESH_XPATH, + GMSH_MESH_SIZE_FACTOR_FUSELAGE_XPATH, + GMSH_MESH_SIZE_FACTOR_WINGS_XPATH, ) from ceasiompy.utils.moduleinterfaces import CPACSInOut @@ -84,38 +88,39 @@ ) cpacs_inout.add_input( - var_name="farfield_mesh_size", + var_name="farfield_mesh_size_factor", var_type=float, - default_value=25, - unit="[m]", - descr="Value assigned for the farfield surface mesh size", + default_value=10, + unit="[-]", + descr="""Factor proportional to the biggest cell on the plane + to obtain cell size on the farfield""", xpath=GMSH_MESH_SIZE_FARFIELD_XPATH, gui=True, - gui_name="Farfield", + gui_name="Farfield mesh size factor", gui_group="Mesh size", ) cpacs_inout.add_input( - var_name="fuselage_mesh_size", + var_name="fuselage_mesh_size_factor", var_type=float, - default_value=0.4, - unit="[m]", - descr="Value assigned for the fuselage surfaces mesh size", - xpath=GMSH_MESH_SIZE_FUSELAGE_XPATH, + default_value=1, + unit="[-]", + descr="Factor proportional to fuselage radius of curvature to obtain cell size on it", + xpath=GMSH_MESH_SIZE_FACTOR_FUSELAGE_XPATH, gui=True, - gui_name="Fuselage", + gui_name="Fuselage mesh size factor", gui_group="Mesh size", ) cpacs_inout.add_input( - var_name="wing_mesh_size", + var_name="wing_mesh_size_factor", var_type=float, - default_value=0.23, - unit="[m]", - descr="Value assigned for the wings surfaces mesh size", - xpath=GMSH_MESH_SIZE_WINGS_XPATH, + default_value=1.5, + unit="[-]", + descr="Factor proportional to wing radius of curvature to obtain cell size on it", + xpath=GMSH_MESH_SIZE_FACTOR_WINGS_XPATH, gui=True, - gui_name="Wings", + gui_name="Wings mesh size factor", gui_group="Mesh size", ) @@ -130,6 +135,7 @@ gui_name="Engines", gui_group="Mesh size", ) + cpacs_inout.add_input( var_name="propeller_mesh_size", var_type=float, @@ -142,10 +148,34 @@ gui_group="Mesh size", ) +cpacs_inout.add_input( + var_name="n_power_factor", + var_type=float, + default_value=2, + unit="1", + descr="Value that changes the number of cells near the aircraft parts", + xpath=GMSH_N_POWER_FACTOR_XPATH, + gui=True, + gui_name="n power factor", + gui_group="Advanced mesh parameters", +) + +cpacs_inout.add_input( + var_name="n_power_field", + var_type=float, + default_value=0.9, + unit="1", + descr="Value that changes the measure of fist cells near aircraft parts", + xpath=GMSH_N_POWER_FIELD_XPATH, + gui=True, + gui_name="n power field", + gui_group="Advanced mesh parameters", +) + cpacs_inout.add_input( var_name="refine_factor", var_type=float, - default_value=7.0, + default_value=2.0, unit="1", descr="Refinement factor of wing leading/trailing edge mesh", xpath=GMSH_REFINE_FACTOR_XPATH, @@ -168,7 +198,7 @@ cpacs_inout.add_input( var_name="auto_refine", var_type=bool, - default_value=True, + default_value=False, unit="1", descr="Automatically refine the mesh on surfaces that are small compare to the chosen mesh" "size, this option increase the mesh generation time", diff --git a/ceasiompy/CPACS2GMSH/cpacs2gmsh.py b/ceasiompy/CPACS2GMSH/cpacs2gmsh.py index 279d2b47e..648a849da 100644 --- a/ceasiompy/CPACS2GMSH/cpacs2gmsh.py +++ b/ceasiompy/CPACS2GMSH/cpacs2gmsh.py @@ -33,10 +33,12 @@ GMSH_AUTO_REFINE_XPATH, GMSH_EXHAUST_PERCENT_XPATH, GMSH_FARFIELD_FACTOR_XPATH, + GMSH_N_POWER_FACTOR_XPATH, + GMSH_N_POWER_FIELD_XPATH, GMSH_INTAKE_PERCENT_XPATH, GMSH_MESH_SIZE_FARFIELD_XPATH, - GMSH_MESH_SIZE_FUSELAGE_XPATH, - GMSH_MESH_SIZE_WINGS_XPATH, + GMSH_MESH_SIZE_FACTOR_FUSELAGE_XPATH, + GMSH_MESH_SIZE_FACTOR_WINGS_XPATH, GMSH_MESH_SIZE_ENGINES_XPATH, GMSH_MESH_SIZE_PROPELLERS_XPATH, GMSH_OPEN_GUI_XPATH, @@ -65,7 +67,6 @@ def cpacs2gmsh(cpacs_path, cpacs_out_path): - # Get option from the CPACS file cpacs = CPACS(cpacs_path) @@ -78,9 +79,15 @@ def cpacs2gmsh(cpacs_path, cpacs_out_path): open_gmsh = get_value_or_default(cpacs.tixi, GMSH_OPEN_GUI_XPATH, False) farfield_factor = get_value_or_default(cpacs.tixi, GMSH_FARFIELD_FACTOR_XPATH, 6) symmetry = get_value_or_default(cpacs.tixi, GMSH_SYMMETRY_XPATH, False) - mesh_size_farfield = get_value_or_default(cpacs.tixi, GMSH_MESH_SIZE_FARFIELD_XPATH, 25) - mesh_size_fuselage = get_value_or_default(cpacs.tixi, GMSH_MESH_SIZE_FUSELAGE_XPATH, 0.4) - mesh_size_wings = get_value_or_default(cpacs.tixi, GMSH_MESH_SIZE_WINGS_XPATH, 0.23) + farfield_size_factor = get_value_or_default(cpacs.tixi, GMSH_MESH_SIZE_FARFIELD_XPATH, 17) + n_power_factor = get_value_or_default(cpacs.tixi, GMSH_N_POWER_FACTOR_XPATH, 2) + n_power_field = get_value_or_default(cpacs.tixi, GMSH_N_POWER_FIELD_XPATH, 0.9) + fuselage_mesh_size_factor = get_value_or_default( + cpacs.tixi, + GMSH_MESH_SIZE_FACTOR_FUSELAGE_XPATH, + 1, + ) + wing_mesh_size_factor = get_value_or_default(cpacs.tixi, GMSH_MESH_SIZE_FACTOR_WINGS_XPATH, 1) mesh_size_engines = get_value_or_default(cpacs.tixi, GMSH_MESH_SIZE_ENGINES_XPATH, 0.23) mesh_size_propellers = get_value_or_default(cpacs.tixi, GMSH_MESH_SIZE_PROPELLERS_XPATH, 0.23) refine_factor = get_value_or_default(cpacs.tixi, GMSH_REFINE_FACTOR_XPATH, 7.0) @@ -93,14 +100,17 @@ def cpacs2gmsh(cpacs_path, cpacs_out_path): export_brep(cpacs, brep_dir, (intake_percent, exhaust_percent)) mesh_path, _ = generate_gmsh( cpacs, + cpacs_path, brep_dir, results_dir, open_gmsh=open_gmsh, farfield_factor=farfield_factor, symmetry=symmetry, - mesh_size_farfield=mesh_size_farfield, - mesh_size_fuselage=mesh_size_fuselage, - mesh_size_wings=mesh_size_wings, + farfield_size_factor=farfield_size_factor, + n_power_factor=n_power_factor, + n_power_field=n_power_field, + fuselage_mesh_size_factor=fuselage_mesh_size_factor, + wing_mesh_size_factor=wing_mesh_size_factor, mesh_size_engines=mesh_size_engines, mesh_size_propellers=mesh_size_propellers, refine_factor=refine_factor, @@ -124,7 +134,6 @@ def cpacs2gmsh(cpacs_path, cpacs_out_path): def main(cpacs_path, cpacs_out_path): - log.info("----- Start of " + MODULE_NAME + " -----") check_cpacs_input_requirements(cpacs_path) @@ -135,7 +144,6 @@ def main(cpacs_path, cpacs_out_path): if __name__ == "__main__": - cpacs_path = get_toolinput_file_path(MODULE_NAME) cpacs_out_path = get_tooloutput_file_path(MODULE_NAME) diff --git a/ceasiompy/CPACS2GMSH/func/advancemeshing.py b/ceasiompy/CPACS2GMSH/func/advancemeshing.py index 07d14eab7..2382af026 100644 --- a/ceasiompy/CPACS2GMSH/func/advancemeshing.py +++ b/ceasiompy/CPACS2GMSH/func/advancemeshing.py @@ -12,8 +12,7 @@ TODO: - -Add a parameter to let the user tune the powerlaw governing the mesh - in the fluid domaine and the powerlaw for the wing surface mesh + -Add a parameter to let the user tune the powerlaw for the wing surface mesh """ @@ -253,14 +252,12 @@ def refine_wing_section( # For each wing section get the mean chord and le/te lines for wing_section in wing_part.wing_sections: - chord_mean = wing_section["mean_chord"] x_chord = chord_mean * chord_percent lines_to_refine = wing_section["lines_tags"] # If the wing is truncated: if len(lines_to_refine) == 3: - # Find the trailing edge thickness x1, y1, z1 = gmsh.model.occ.getCenterOfMass(1, lines_to_refine[0]) x2, y2, z2 = gmsh.model.occ.getCenterOfMass(1, lines_to_refine[1]) @@ -274,7 +271,6 @@ def refine_wing_section( # Overwrite the trailing edge refinement if (mesh_size_wings / te_thickness > refine) and refine_truncated: - refine = mesh_size_wings / te_thickness # 1 : Math eval field @@ -331,7 +327,8 @@ def set_domain_mesh( mesh_size_farfield, aircraft_charact_length, final_domain_volume_tag, - n_power=1.5, + n_power_factor, + n_power_field, ): """ Function to define the domain mesh between the farfield and the aircraft @@ -375,7 +372,6 @@ def set_domain_mesh( log.info("Set mesh refinement of fluid domain") for part in aircraft_parts: - # 1 : Math eval field between the part surface and the farfield mesh_fields = distance_field(mesh_fields, 2, part.surfaces_tags) @@ -388,7 +384,7 @@ def set_domain_mesh( mesh_fields["nbfields"], "F", f"{part.mesh_size} + ({mesh_size_farfield} - {part.mesh_size})*" - f"(F{distance_field_tag}/{aircraft_charact_length})^{n_power}", + f"(F{distance_field_tag}/{aircraft_charact_length})^{n_power_factor}", ) mesh_fields = restrict_fields(mesh_fields, 3, final_domain_volume_tag) @@ -399,7 +395,9 @@ def set_domain_mesh( gmsh.model.mesh.field.add("Threshold", mesh_fields["nbfields"]) gmsh.model.mesh.field.setNumber(mesh_fields["nbfields"], "InField", distance_field_tag) gmsh.model.mesh.field.setNumber(mesh_fields["nbfields"], "SizeMax", part.mesh_size) - gmsh.model.mesh.field.setNumber(mesh_fields["nbfields"], "SizeMin", part.mesh_size * 0.9) + gmsh.model.mesh.field.setNumber( + mesh_fields["nbfields"], "SizeMin", part.mesh_size * n_power_field + ) mesh_fields = restrict_fields(mesh_fields, 2, part.surfaces_tags) @@ -519,5 +517,4 @@ def refine_small_surfaces( # ================================================================================================= if __name__ == "__main__": - print("Nothing to execute!") diff --git a/ceasiompy/CPACS2GMSH/func/generategmesh.py b/ceasiompy/CPACS2GMSH/func/generategmesh.py index 0a1e984ea..1b644bb89 100644 --- a/ceasiompy/CPACS2GMSH/func/generategmesh.py +++ b/ceasiompy/CPACS2GMSH/func/generategmesh.py @@ -40,6 +40,7 @@ ENGINE_INTAKE_SUFFIX, GMSH_ENGINE_CONFIG_NAME, ) +from ceasiompy.utils.commonxpath import GMSH_MESH_SIZE_FUSELAGE_XPATH, GMSH_MESH_SIZE_WINGS_XPATH from ceasiompy.utils.configfiles import ConfigFile import gmsh import numpy as np @@ -55,6 +56,10 @@ from ceasiompy.utils.ceasiomlogger import get_logger from ceasiompy.utils.ceasiompyutils import get_part_type +from cpacspy.cpacsfunctions import create_branch + +from ceasiompy.CPACS2GMSH.func.mesh_sizing import fuselage_size, wings_size + log = get_logger() @@ -78,7 +83,6 @@ class ModelPart: """ def __init__(self, uid): - self.uid = uid self.part_type = "" @@ -124,7 +128,6 @@ def associate_child_to_parent(self, child_dimtag): # 2D child and parent elif child_dimtag[0] == 2: - child_surfaces = [child_dimtag] child_lines = list( gmsh.model.getBoundary( @@ -167,7 +170,6 @@ def clean_inside_entities(self, final_domain): final_domain part """ if self.part_type == "rotor": - # Detect all the entities in the domain with gmsh functions self.surfaces = sorted( list(set(self.surfaces).intersection(set(gmsh.model.getEntities(dim=2)))) @@ -533,7 +535,6 @@ def control_disk_actuator_normal(): # Check the disk actuator inlet normal, should point forward (x>0)) for inlet_group in inlet_groups: - # Get the normal surface_tag = gmsh.model.getEntitiesForPhysicalGroup(*inlet_group) surface_dimtag = (2, *surface_tag) @@ -561,17 +562,20 @@ def control_disk_actuator_normal(): def generate_gmsh( cpacs, + cpacs_path, brep_dir, results_dir, open_gmsh=False, farfield_factor=6, symmetry=False, - mesh_size_farfield=25, - mesh_size_fuselage=0.4, - mesh_size_wings=0.23, + farfield_size_factor=10, + n_power_factor=2, + n_power_field=0.9, + fuselage_mesh_size_factor=1, + wing_mesh_size_factor=1.5, mesh_size_engines=0.23, mesh_size_propellers=0.23, - refine_factor=7.0, + refine_factor=2.0, refine_truncated=False, auto_refine=True, testing_gmsh=False, @@ -657,7 +661,6 @@ def generate_gmsh( parts_parent_dimtag = [] log.info(f"Importing files from {brep_dir}") for brep_file in brep_files: - # Import the part and create the aircraft part object part_entities = gmsh.model.occ.importShapes(str(brep_file), highestDimOnly=False) gmsh.model.occ.synchronize() @@ -772,16 +775,13 @@ def generate_gmsh( # Some parent may have no children (due to symmetry), we need to remove them unwanted_parents = [] for parent in aircraft_parts: - if parent.part_type == "rotor": # Control possible 2D children not removed by the fragment symmetry unwanted_children for dimtag in list(parent.children_dimtag): try: # check if the child exists in the model - gmsh.model.getType(*dimtag) except Exception: - # if not remove it from the parent parent.children_dimtag.remove(dimtag) @@ -801,7 +801,6 @@ def generate_gmsh( if len(aircraft_parts) > 1: for p, part in enumerate(aircraft_parts): for other_part in aircraft_parts[(p + 1) :]: - shared_children = part.children_dimtag.intersection(other_part.children_dimtag) if shared_children: @@ -823,7 +822,6 @@ def generate_gmsh( for parent in aircraft_parts: for child_dimtag in parent.children_dimtag: if child_dimtag not in unwanted_children: - good_children.append(child_dimtag) log.info(f"Associating child {child_dimtag} to parent {parent.uid}") parent.associate_child_to_parent(child_dimtag) @@ -856,7 +854,6 @@ def generate_gmsh( aircraft = ModelPart("aircraft") for part in aircraft_parts: - part.clean_inside_entities(final_domain) aircraft.points.extend(part.points) @@ -892,7 +889,6 @@ def generate_gmsh( farfield_surfaces_tags = list(set(final_domain.surfaces_tags) - set(aircraft.surfaces_tags)) if symmetry: - symmetry_surfaces = [] symmetry_surfaces_tags = [] @@ -907,7 +903,6 @@ def generate_gmsh( _, adj_lines_tags = gmsh.model.getAdjacencies(*farfield_surface) if set(adj_lines_tags).intersection(set(aircraft.lines_tags)): - farfield_surfaces.remove(farfield_surface) farfield_surfaces_tags.remove(farfield_surface[1]) @@ -935,13 +930,27 @@ def generate_gmsh( # Thus be sure to define mesh size in a certain order to control # the size of the points on boundaries. + fuselage_maxlen, fuselage_minlen = fuselage_size(cpacs_path) + mesh_size_fuselage = fuselage_mesh_size_factor * fuselage_minlen + log.info(f"Mesh size fuselage={mesh_size_fuselage:.3f} m") + + create_branch(cpacs.tixi, GMSH_MESH_SIZE_FUSELAGE_XPATH) + cpacs.tixi.updateDoubleElement(GMSH_MESH_SIZE_FUSELAGE_XPATH, mesh_size_fuselage, "%.3f") + + wing_maxlen, wing_minlen = wings_size(cpacs_path) + mesh_size_wing = wing_mesh_size_factor * wing_minlen + log.info(f"Mesh size wing={mesh_size_wing:.3f} m") + + create_branch(cpacs.tixi, GMSH_MESH_SIZE_WINGS_XPATH) + cpacs.tixi.updateDoubleElement(GMSH_MESH_SIZE_WINGS_XPATH, mesh_size_wing, "%.3f") + for part in aircraft_parts: if part.part_type == "fuselage": part.mesh_size = mesh_size_fuselage gmsh.model.mesh.setSize(part.points, part.mesh_size) gmsh.model.setColor(part.surfaces, *MESH_COLORS[part.part_type], recursive=False) elif part.part_type in ["wing", "pylon"]: - part.mesh_size = mesh_size_wings + part.mesh_size = mesh_size_wing gmsh.model.mesh.setSize(part.points, part.mesh_size) gmsh.model.setColor(part.surfaces, *MESH_COLORS[part.part_type], recursive=False) elif part.part_type == "engine": @@ -954,6 +963,11 @@ def generate_gmsh( gmsh.model.setColor(part.surfaces, *MESH_COLORS[part.part_type], recursive=False) # Set mesh size and color of the farfield + h_max_model = max(wing_maxlen, fuselage_maxlen) + mesh_size_farfield = h_max_model * farfield_size_factor + + log.info(f"Farfield mesh size={mesh_size_farfield:.3f} m") + gmsh.model.mesh.setSize(farfield_points, mesh_size_farfield) gmsh.model.setColor(farfield_surfaces, *MESH_COLORS["farfield"], recursive=False) @@ -965,7 +979,8 @@ def generate_gmsh( if part.part_type == "wing": classify_wing(part, aircraft_parts) log.info( - f"Classification of {part.uid} done" f"{len(part.wing_sections)} section(s) found " + f"Classification of {part.uid} done" + f" {len(part.wing_sections)} section(s) found " ) # Generate advance meshing features @@ -978,7 +993,7 @@ def generate_gmsh( final_domain.volume_tag, aircraft, part, - mesh_size_wings, + mesh_size_wing, refine=refine_factor, refine_truncated=refine_truncated, ) @@ -990,6 +1005,8 @@ def generate_gmsh( mesh_size_farfield, max(model_dimensions), final_domain.volume_tag, + n_power_factor, + n_power_field, ) # Generate the minimal background mesh field @@ -1009,7 +1026,6 @@ def generate_gmsh( # Control of the mesh quality if refine_factor != 1 and auto_refine: - bad_surfaces = [] for part in aircraft_parts: @@ -1029,7 +1045,6 @@ def generate_gmsh( mesh_fields = min_fields(mesh_fields) if open_gmsh: - log.info("Insufficient mesh size surfaces are displayed in red") log.info("GMSH GUI is open, close it to continue...") gmsh.fltk.run() @@ -1040,7 +1055,6 @@ def generate_gmsh( gmsh.model.mesh.generate(2) for surface in bad_surfaces: - gmsh.model.setColor([(2, surface)], *MESH_COLORS["good_surface"], recursive=False) log.info("Remeshing process finished") @@ -1049,9 +1063,14 @@ def generate_gmsh( # Apply smoothing log.info("2D mesh smoothing process started") - gmsh.model.mesh.optimize("Laplace2D", niter=1) + gmsh.model.mesh.optimize("Laplace2D", niter=10) log.info("Smoothing process finished") + gmsh.model.occ.synchronize() + + mesh_2d_path = Path(results_dir, "2d_mesh.msh") + gmsh.write(str(mesh_2d_path)) + if open_gmsh: log.info("Result of 2D surface mesh") log.info("GMSH GUI is open, close it to continue...") @@ -1076,6 +1095,9 @@ def generate_gmsh( su2mesh_path = Path(results_dir, "mesh.su2") gmsh.write(str(su2mesh_path)) + cgnsmesh_path = Path(results_dir, "mesh.cgns") + gmsh.write(str(cgnsmesh_path)) + process_gmsh_log(gmsh.logger.get()) if open_gmsh: @@ -1097,5 +1119,4 @@ def generate_gmsh( # ================================================================================================= if __name__ == "__main__": - print("Nothing to execute!") diff --git a/ceasiompy/CPACS2GMSH/func/mesh_sizing.py b/ceasiompy/CPACS2GMSH/func/mesh_sizing.py new file mode 100644 index 000000000..122d034d3 --- /dev/null +++ b/ceasiompy/CPACS2GMSH/func/mesh_sizing.py @@ -0,0 +1,288 @@ +""" +CEASIOMpy: Conceptual Aircraft Design Software + +Developed by CFS ENGINEERING, 1015 Lausanne, Switzerland + +This script contains different functions to classify and manipulate wing elements + +Python version: >=3.8 + +| Author: Giacomo Benedetti +| Creation: 2023-11-20 + + +""" + + +# ================================================================================================= +# IMPORTS +# ================================================================================================= + +import math +from ceasiompy.CPACS2SUMO.func.getprofile import get_profile_coord +from ceasiompy.utils.ceasiomlogger import get_logger + +from ceasiompy.utils.generalclasses import Transformation + +from ceasiompy.utils.commonxpath import FUSELAGES_XPATH, WINGS_XPATH +from cpacspy.cpacsfunctions import open_tixi + +log = get_logger() + +# ================================================================================================= +# FUNCTIONS +# ================================================================================================= + + +def fuselage_size(cpacs_path): + tixi = open_tixi(cpacs_path) + if tixi.checkElement(FUSELAGES_XPATH): + fus_cnt = tixi.getNamedChildrenCount(FUSELAGES_XPATH, "fuselage") + for i_fus in range(fus_cnt): + fus_xpath = FUSELAGES_XPATH + "/fuselage[" + str(i_fus + 1) + "]" + fus_transf = Transformation() + fus_transf.get_cpacs_transf(tixi, fus_xpath) + + # Positionings + if tixi.checkElement(fus_xpath + "/positionings"): + pos_cnt = tixi.getNamedChildrenCount(fus_xpath + "/positionings", "positioning") + + pos_x_list = [] + pos_y_list = [] + pos_z_list = [] + from_sec_list = [] + to_sec_list = [] + + for i_pos in range(pos_cnt): + pos_xpath = fus_xpath + "/positionings/positioning[" + str(i_pos + 1) + "]" + + length = tixi.getDoubleElement(pos_xpath + "/length") + sweep_deg = tixi.getDoubleElement(pos_xpath + "/sweepAngle") + sweep = math.radians(sweep_deg) + dihedral_deg = tixi.getDoubleElement(pos_xpath + "/dihedralAngle") + dihedral = math.radians(dihedral_deg) + + # Get the corresponding translation of each positioning + pos_x_list.append(length * math.sin(sweep)) + pos_y_list.append(length * math.cos(dihedral) * math.cos(sweep)) + pos_z_list.append(length * math.sin(dihedral) * math.cos(sweep)) + # Get which section are connected by the positioning + if tixi.checkElement(pos_xpath + "/fromSectionUID"): + from_sec = tixi.getTextElement(pos_xpath + "/fromSectionUID") + else: + from_sec = "" + from_sec_list.append(from_sec) + if tixi.checkElement(pos_xpath + "/toSectionUID"): + to_sec = tixi.getTextElement(pos_xpath + "/toSectionUID") + else: + to_sec = "" + to_sec_list.append(to_sec) + + for j_pos in range(pos_cnt): + if from_sec_list[j_pos] == "": + prev_pos_x = 0 + prev_pos_y = 0 + prev_pos_z = 0 + elif from_sec_list[j_pos] == to_sec_list[j_pos - 1]: + prev_pos_x = pos_x_list[j_pos - 1] + prev_pos_y = pos_y_list[j_pos - 1] + prev_pos_z = pos_z_list[j_pos - 1] + else: + index_prev = to_sec_list.index(from_sec_list[j_pos]) + prev_pos_x = pos_x_list[index_prev] + prev_pos_y = pos_y_list[index_prev] + prev_pos_z = pos_z_list[index_prev] + + if j_pos < len(pos_y_list): + pos_x_list[j_pos] += prev_pos_x + pos_y_list[j_pos] += prev_pos_y + pos_z_list[j_pos] += prev_pos_z + + else: + log.error('No "positionings" have been found!') + pos_cnt = 0 + + # Sections + sec_cnt = tixi.getNamedChildrenCount(fus_xpath + "/sections", "section") + + if pos_cnt == 0: + pos_x_list = [0.0] * sec_cnt + pos_y_list = [0.0] * sec_cnt + pos_z_list = [0.0] * sec_cnt + + # print(pos_cnt) + body_frm_height_values = [] + body_frm_width_values = [] + + for i_sec in range(sec_cnt): + sec_xpath = fus_xpath + "/sections/section[" + str(i_sec + 1) + "]" + + sec_transf = Transformation() + sec_transf.get_cpacs_transf(tixi, sec_xpath) + + # Elements + elem_cnt = tixi.getNamedChildrenCount(sec_xpath + "/elements", "element") + + for i_elem in range(elem_cnt): + elem_xpath = sec_xpath + "/elements/element[" + str(i_elem + 1) + "]" + elem_transf = Transformation() + elem_transf.get_cpacs_transf(tixi, elem_xpath) + + # Fuselage profiles + prof_uid = tixi.getTextElement(elem_xpath + "/profileUID") + _, prof_vect_y, prof_vect_z = get_profile_coord(tixi, prof_uid) + + prof_size_y = (max(prof_vect_y) - min(prof_vect_y)) / 2 + prof_size_z = (max(prof_vect_z) - min(prof_vect_z)) / 2 + + prof_vect_y[:] = [y / prof_size_y for y in prof_vect_y] + prof_vect_z[:] = [z / prof_size_z for z in prof_vect_z] + + prof_min_y = min(prof_vect_y) + prof_min_z = min(prof_vect_z) + + prof_vect_y[:] = [y - 1 - prof_min_y for y in prof_vect_y] + prof_vect_z[:] = [z - 1 - prof_min_z for z in prof_vect_z] + + if i_sec < len(pos_y_list): + pos_y_list[i_sec] += ((1 + prof_min_y) * prof_size_y) * elem_transf.scaling.y + if i_sec < len(pos_z_list): + pos_z_list[i_sec] += ((1 + prof_min_z) * prof_size_z) * elem_transf.scaling.z + + body_frm_height = ( + prof_size_z + * 2 + * elem_transf.scaling.z + * sec_transf.scaling.z + * fus_transf.scaling.z + ) + + body_frm_width = ( + prof_size_y + * 2 + * elem_transf.scaling.y + * sec_transf.scaling.y + * fus_transf.scaling.y + ) + + body_frm_height_values.append(body_frm_height) + body_frm_width_values.append(body_frm_width) + + # Extrapolate mesh values + circ_list = [] + min_radius = 10e6 + + for height, width in zip(body_frm_height_values, body_frm_width_values): + # Calculate the sum of squares for each element in the lists + circ_list.append(2 * math.pi * math.sqrt((height**2 + width**2) / 2)) + + # Get overall minimum radius (semi-minor axis for ellipse) + min_radius = min(min_radius, height, width) + + mean_circ = sum(circ_list) / len(circ_list) + + # Calculate mesh parameters from inputs and geometry + fuselage_maxlen = 0.08 * mean_circ + fuselage_minlen = min(0.1 * fuselage_maxlen, min_radius / 2) + + log.info(f"Fuselage maxlen={fuselage_maxlen:.3f} m") + log.info(f"Fuselage minlen={fuselage_minlen:.3f} m") + + return fuselage_maxlen, fuselage_minlen + + +def wings_size(cpacs_path): + tixi = open_tixi(cpacs_path) + if tixi.checkElement(WINGS_XPATH): + wing_cnt = tixi.getNamedChildrenCount(WINGS_XPATH, "wing") + + chord_list = [] + + for i_wing in range(wing_cnt): + wing_xpath = WINGS_XPATH + "/wing[" + str(i_wing + 1) + "]" + wing_transf = Transformation() + wing_transf.get_cpacs_transf(tixi, wing_xpath) + + # Positionings + if tixi.checkElement(wing_xpath + "/positionings"): + pos_cnt = tixi.getNamedChildrenCount(wing_xpath + "/positionings", "positioning") + + pos_x_list = [] + pos_y_list = [] + pos_z_list = [] + from_sec_list = [] + to_sec_list = [] + + for i_pos in range(pos_cnt): + pos_xpath = wing_xpath + "/positionings/positioning[" + str(i_pos + 1) + "]" + + length = tixi.getDoubleElement(pos_xpath + "/length") + sweep_deg = tixi.getDoubleElement(pos_xpath + "/sweepAngle") + sweep = math.radians(sweep_deg) + dihedral_deg = tixi.getDoubleElement(pos_xpath + "/dihedralAngle") + dihedral = math.radians(dihedral_deg) + + # Get the corresponding translation of each positioning + pos_x_list.append(length * math.sin(sweep)) + pos_y_list.append(length * math.cos(dihedral) * math.cos(sweep)) + pos_z_list.append(length * math.sin(dihedral) * math.cos(sweep)) + # Get which section are connected by the positioning + if tixi.checkElement(pos_xpath + "/fromSectionUID"): + from_sec = tixi.getTextElement(pos_xpath + "/fromSectionUID") + else: + from_sec = "" + from_sec_list.append(from_sec) + if tixi.checkElement(pos_xpath + "/toSectionUID"): + to_sec = tixi.getTextElement(pos_xpath + "/toSectionUID") + else: + to_sec = "" + to_sec_list.append(to_sec) + + for j_pos in range(pos_cnt): + if from_sec_list[j_pos] == "": + prev_pos_x = 0 + prev_pos_y = 0 + prev_pos_z = 0 + elif from_sec_list[j_pos] == to_sec_list[j_pos - 1]: + prev_pos_x = pos_x_list[j_pos - 1] + prev_pos_y = pos_y_list[j_pos - 1] + prev_pos_z = pos_z_list[j_pos - 1] + else: + index_prev = to_sec_list.index(from_sec_list[j_pos]) + prev_pos_x = pos_x_list[index_prev] + prev_pos_y = pos_y_list[index_prev] + prev_pos_z = pos_z_list[index_prev] + pos_x_list[j_pos] += prev_pos_x + pos_y_list[j_pos] += prev_pos_y + pos_z_list[j_pos] += prev_pos_z + + else: + log.error('No "positionings" have been found!') + pos_cnt = 0 + + # Sections + sec_cnt = tixi.getNamedChildrenCount(wing_xpath + "/sections", "section") + + if pos_cnt == 0: + pos_x_list = [0.0] * sec_cnt + pos_y_list = [0.0] * sec_cnt + pos_z_list = [0.0] * sec_cnt + + for i_sec in range(sec_cnt): + sec_xpath = wing_xpath + "/sections/section[" + str(i_sec + 1) + "]" + + sec_transf = Transformation() + sec_transf.get_cpacs_transf(tixi, sec_xpath) + + chord_list.append(sec_transf.scaling.x) + + ref_chord = sum(chord_list) / len(chord_list) + + # Calculate mesh parameter from inputs and geometry + wing_maxlen = 0.15 * ref_chord + wing_minlen = 0.08 * wing_maxlen + + log.info(f"Wing maxlen={wing_maxlen:.3f} m") + log.info(f"Wing minlen={wing_minlen:.3f} m") + + return wing_maxlen, wing_minlen diff --git a/ceasiompy/CPACS2GMSH/tests/test_advancemeshing.py b/ceasiompy/CPACS2GMSH/tests/test_advancemeshing.py index 41bd16555..a0d4cc146 100644 --- a/ceasiompy/CPACS2GMSH/tests/test_advancemeshing.py +++ b/ceasiompy/CPACS2GMSH/tests/test_advancemeshing.py @@ -219,15 +219,19 @@ def test_refine_wing_section(): generate_gmsh( cpacs=cpacs, + cpacs_path=CPACS_IN_PATH, brep_dir=TEST_OUT_PATH, results_dir=TEST_OUT_PATH, open_gmsh=False, - mesh_size_farfield=5, - mesh_size_fuselage=0.5, - mesh_size_wings=0.5, + farfield_factor=2, + symmetry=False, + farfield_size_factor=30, + n_power_factor=2, + n_power_field=0.9, + fuselage_mesh_size_factor=5, + wing_mesh_size_factor=5, mesh_size_engines=0.5, mesh_size_propellers=0.5, - symmetry=False, refine_factor=2.0, refine_truncated=False, auto_refine=False, @@ -245,7 +249,7 @@ def test_refine_wing_section(): ) # Check if a Matheval field was generated with the correct formula - assert gmsh.model.mesh.field.getString(2, "F") == "(0.5/2.0) + 0.5*(1-(1/2.0))*(F1/0.25)^2" + assert gmsh.model.mesh.field.getString(2, "F") == "(0.06/2.0) + 0.06*(1-(1/2.0))*(F1/0.25)^2" assert gmsh.model.mesh.field.getType(2) == "MathEval" # Check if the restrict field was applied on the wing @@ -277,15 +281,19 @@ def test_auto_refine(): generate_gmsh( cpacs=cpacs, + cpacs_path=CPACS_IN_PATH, brep_dir=TEST_OUT_PATH, results_dir=TEST_OUT_PATH, open_gmsh=False, - mesh_size_farfield=5, - mesh_size_fuselage=0.5, - mesh_size_wings=0.5, + farfield_factor=5, + symmetry=False, + farfield_size_factor=17, + n_power_factor=2, + n_power_field=0.9, + fuselage_mesh_size_factor=10, + wing_mesh_size_factor=10, mesh_size_engines=0.5, mesh_size_propellers=0.5, - symmetry=False, refine_factor=2.0, refine_truncated=False, auto_refine=True, diff --git a/ceasiompy/CPACS2GMSH/tests/test_engineconversion.py b/ceasiompy/CPACS2GMSH/tests/test_engineconversion.py index ee2e27bdc..f0cd2b992 100644 --- a/ceasiompy/CPACS2GMSH/tests/test_engineconversion.py +++ b/ceasiompy/CPACS2GMSH/tests/test_engineconversion.py @@ -103,7 +103,6 @@ def test_close_engine(): # ================================================================================================= if __name__ == "__main__": - print("Test CPACS2GMSH") print("To run test use the following command:") print(">> pytest -v") diff --git a/ceasiompy/CPACS2GMSH/tests/test_generatemesh.py b/ceasiompy/CPACS2GMSH/tests/test_generatemesh.py index f97d75264..215619704 100644 --- a/ceasiompy/CPACS2GMSH/tests/test_generatemesh.py +++ b/ceasiompy/CPACS2GMSH/tests/test_generatemesh.py @@ -64,16 +64,19 @@ def test_generate_gmsh(): generate_gmsh( cpacs=cpacs, + cpacs_path=CPACS_IN_PATH, brep_dir=TEST_OUT_PATH, results_dir=TEST_OUT_PATH, open_gmsh=False, - farfield_factor=5, + farfield_factor=2, symmetry=False, - mesh_size_farfield=5, - mesh_size_fuselage=0.5, - mesh_size_wings=0.5, - mesh_size_engines=0.5, - mesh_size_propellers=0.5, + farfield_size_factor=17, + n_power_factor=2, + n_power_field=0.9, + fuselage_mesh_size_factor=5, + wing_mesh_size_factor=5, + mesh_size_engines=0.2, + mesh_size_propellers=0.2, refine_factor=1.0, refine_truncated=False, auto_refine=False, @@ -104,14 +107,17 @@ def test_generate_gmsh_symm(): generate_gmsh( cpacs=cpacs, + cpacs_path=CPACS_IN_PATH, brep_dir=TEST_OUT_PATH, results_dir=TEST_OUT_PATH, open_gmsh=False, farfield_factor=5, symmetry=True, - mesh_size_farfield=5, - mesh_size_fuselage=0.5, - mesh_size_wings=0.5, + farfield_size_factor=17, + n_power_factor=2, + n_power_field=0.9, + fuselage_mesh_size_factor=5, + wing_mesh_size_factor=5, mesh_size_engines=0.5, mesh_size_propellers=0.5, refine_factor=1.0, @@ -209,14 +215,17 @@ def test_assignation(): _, aircraft_parts = generate_gmsh( cpacs=cpacs, + cpacs_path=CPACS_IN_PATH, brep_dir=TEST_OUT_PATH, results_dir=TEST_OUT_PATH, open_gmsh=False, farfield_factor=5, symmetry=False, - mesh_size_farfield=5, - mesh_size_fuselage=0.5, - mesh_size_wings=0.5, + farfield_size_factor=17, + n_power_factor=2, + n_power_field=0.9, + fuselage_mesh_size_factor=5, + wing_mesh_size_factor=5, mesh_size_engines=0.5, mesh_size_propellers=0.5, refine_factor=1.0, @@ -265,14 +274,17 @@ def test_define_engine_bc(): generate_gmsh( cpacs=cpacs, + cpacs_path=CPACS_IN_SIMPLE_ENGINE_PATH, brep_dir=TEST_OUT_PATH, results_dir=TEST_OUT_PATH, open_gmsh=False, farfield_factor=2, symmetry=False, - mesh_size_farfield=2, - mesh_size_fuselage=0.2, - mesh_size_wings=0.2, + farfield_size_factor=17, + n_power_factor=2, + n_power_field=0.9, + fuselage_mesh_size_factor=8, + wing_mesh_size_factor=8, mesh_size_engines=0.2, mesh_size_propellers=0.2, refine_factor=1.0, @@ -288,11 +300,11 @@ def test_define_engine_bc(): assert gmsh.model.getPhysicalName(*physical_groups[0]) == "Pylon" assert gmsh.model.getPhysicalName(*physical_groups[1]) == "Pylon_mirrored" assert gmsh.model.getPhysicalName(*physical_groups[2]) == "SimpleEngine" - assert gmsh.model.getPhysicalName(*physical_groups[3]) == "SimpleEngine_fan_Intake" - assert gmsh.model.getPhysicalName(*physical_groups[4]) == "SimpleEngine_fan_Exhaust" + assert gmsh.model.getPhysicalName(*physical_groups[3]) == "SimpleEngine_fan_In" + assert gmsh.model.getPhysicalName(*physical_groups[4]) == "SimpleEngine_fan_Ex" assert gmsh.model.getPhysicalName(*physical_groups[5]) == "SimpleEngine_mirrored" - assert gmsh.model.getPhysicalName(*physical_groups[6]) == "SimpleEngine_mirrored_fan_Intake" - assert gmsh.model.getPhysicalName(*physical_groups[7]) == "SimpleEngine_mirrored_fan_Exhaust" + assert gmsh.model.getPhysicalName(*physical_groups[6]) == "SimpleEngine_mirrored_fan_In" + assert gmsh.model.getPhysicalName(*physical_groups[7]) == "SimpleEngine_mirrored_fan_Ex" assert gmsh.model.getPhysicalName(*physical_groups[8]) == "SimpleFuselage" assert gmsh.model.getPhysicalName(*physical_groups[9]) == "Wing" assert gmsh.model.getPhysicalName(*physical_groups[10]) == "Wing_mirrored" @@ -327,14 +339,17 @@ def test_define_doubleflux_engine_bc(): generate_gmsh( cpacs=cpacs, + cpacs_path=CPACS_IN_SIMPLE_ENGINE_PATH, brep_dir=TEST_OUT_PATH, results_dir=TEST_OUT_PATH, open_gmsh=False, - farfield_factor=2, + farfield_factor=3, symmetry=False, - mesh_size_farfield=2, - mesh_size_fuselage=0.5, - mesh_size_wings=0.05, + farfield_size_factor=13, + n_power_factor=2, + n_power_field=0.9, + fuselage_mesh_size_factor=10, + wing_mesh_size_factor=10, mesh_size_engines=0.05, mesh_size_propellers=0.05, refine_factor=1.0, @@ -347,12 +362,12 @@ def test_define_doubleflux_engine_bc(): # Check if the engine integration did not disturb the BC assignation assert len(physical_groups) == 15 - assert gmsh.model.getPhysicalName(*physical_groups[3]) == "SimpleEngine_fan_Intake" - assert gmsh.model.getPhysicalName(*physical_groups[4]) == "SimpleEngine_fan_Exhaust" - assert gmsh.model.getPhysicalName(*physical_groups[5]) == "SimpleEngine_core_Exhaust" - assert gmsh.model.getPhysicalName(*physical_groups[7]) == "SimpleEngine_mirrored_fan_Intake" - assert gmsh.model.getPhysicalName(*physical_groups[8]) == "SimpleEngine_mirrored_fan_Exhaust" - assert gmsh.model.getPhysicalName(*physical_groups[9]) == "SimpleEngine_mirrored_core_Exhaust" + assert gmsh.model.getPhysicalName(*physical_groups[3]) == "SimpleEngine_fan_In" + assert gmsh.model.getPhysicalName(*physical_groups[4]) == "SimpleEngine_fan_Ex" + assert gmsh.model.getPhysicalName(*physical_groups[5]) == "SimpleEngine_core_Ex" + assert gmsh.model.getPhysicalName(*physical_groups[7]) == "SimpleEngine_mirrored_fan_In" + assert gmsh.model.getPhysicalName(*physical_groups[8]) == "SimpleEngine_mirrored_fan_Ex" + assert gmsh.model.getPhysicalName(*physical_groups[9]) == "SimpleEngine_mirrored_core_Ex" # Check that the correct surfaces were assigned to the engine inlet outlet bc assert gmsh.model.getEntitiesForPhysicalGroup(*physical_groups[3]) == [22] @@ -385,16 +400,19 @@ def test_disk_actuator_conversion(): generate_gmsh( cpacs=cpacs, + cpacs_path=CPACS_IN_PROPELLER_ENGINE_PATH, brep_dir=TEST_OUT_PATH, results_dir=TEST_OUT_PATH, open_gmsh=False, - farfield_factor=5, + farfield_factor=3, symmetry=False, - mesh_size_farfield=5, - mesh_size_fuselage=0.5, - mesh_size_wings=0.5, - mesh_size_engines=0.5, - mesh_size_propellers=0.5, + farfield_size_factor=10, + n_power_factor=2, + n_power_field=0.9, + fuselage_mesh_size_factor=100, + wing_mesh_size_factor=100, + mesh_size_engines=0.2, + mesh_size_propellers=0.1, refine_factor=1.0, refine_truncated=False, auto_refine=False, @@ -423,7 +441,6 @@ def test_disk_actuator_conversion(): # ================================================================================================= if __name__ == "__main__": - print("Test CPACS2GMSH") print("To run test use the following command:") print(">> pytest -v") diff --git a/ceasiompy/CPACS2GMSH/tests/test_mesh_sizing.py b/ceasiompy/CPACS2GMSH/tests/test_mesh_sizing.py new file mode 100644 index 000000000..a243f1c59 --- /dev/null +++ b/ceasiompy/CPACS2GMSH/tests/test_mesh_sizing.py @@ -0,0 +1,58 @@ +""" +CEASIOMpy: Conceptual Aircraft Design Software + +Developed by CFS ENGINEERING, 1015 Lausanne, Switzerland + +Test functions for 'ceasiompy/CPACS2GMSH/mesh_sizing.py' + +Python version: >=3.8 + +| Author : Giacomo Benedetti +| Creation: 2023-11-23 + +""" + +# ================================================================================================= +# IMPORTS +# ================================================================================================= + +from pathlib import Path + +from pytest import approx +from ceasiompy.CPACS2GMSH.func.mesh_sizing import fuselage_size, wings_size +from ceasiompy.utils.commonpaths import CPACS_FILES_PATH + +CPACS_IN_PATH = Path(CPACS_FILES_PATH, "simpletest_cpacs.xml") + +# ================================================================================================= +# CLASSES +# ================================================================================================= + + +# ================================================================================================= +# FUNCTIONS +# ================================================================================================= + + +def test_fuselage_size(): + """ + This test takes the fuselage dimension from simpletest_cpacs.xml, + on which the mesh size is calculated + """ + + fuselage_maxlen, fuselage_minlen = fuselage_size(CPACS_IN_PATH) + + assert fuselage_maxlen == approx(0.5, abs=1e-2) + assert fuselage_minlen == approx(0.05, abs=1e-3) + + +def test_wing_size(): + """ + This test takes the fuselage dimension from simpletest_cpacs.xml, + on which the mesh size is calculated + """ + + wing_maxlen, wing_minlen = wings_size(CPACS_IN_PATH) + + assert wing_maxlen == approx(0.15, abs=1e-2) + assert wing_minlen == approx(0.012, abs=1e-4) diff --git a/ceasiompy/CPACS2GMSH/tests/test_wingclassification.py b/ceasiompy/CPACS2GMSH/tests/test_wingclassification.py index 37a4e045c..4b9f13778 100644 --- a/ceasiompy/CPACS2GMSH/tests/test_wingclassification.py +++ b/ceasiompy/CPACS2GMSH/tests/test_wingclassification.py @@ -233,16 +233,19 @@ def test_classify_wing(): _, aircraft_parts = generate_gmsh( cpacs=cpacs, + cpacs_path=CPACS_IN_PATH, brep_dir=TEST_OUT_PATH, results_dir=TEST_OUT_PATH, open_gmsh=False, - farfield_factor=5, + farfield_factor=2, symmetry=False, - mesh_size_farfield=5, - mesh_size_fuselage=0.5, - mesh_size_wings=0.5, - mesh_size_engines=0.5, - mesh_size_propellers=0.5, + farfield_size_factor=17, + n_power_factor=2, + n_power_field=0.9, + fuselage_mesh_size_factor=1, + wing_mesh_size_factor=1, + mesh_size_engines=0.2, + mesh_size_propellers=0.2, refine_factor=1.0, refine_truncated=False, auto_refine=False, diff --git a/ceasiompy/CPACS2SUMO/cpacs2sumo.py b/ceasiompy/CPACS2SUMO/cpacs2sumo.py index 635c02efe..dbca904c1 100644 --- a/ceasiompy/CPACS2SUMO/cpacs2sumo.py +++ b/ceasiompy/CPACS2SUMO/cpacs2sumo.py @@ -222,7 +222,6 @@ def convert_cpacs_to_sumo(cpacs_path, cpacs_out_path): sec_transf.get_cpacs_transf(tixi, sec_xpath) if sec_transf.rotation.x or sec_transf.rotation.y or sec_transf.rotation.z: - log.warning( f"Sections '{sec_uid}' is rotated, it is" "not possible to take that into account in SUMO !" @@ -306,8 +305,8 @@ def convert_cpacs_to_sumo(cpacs_path, cpacs_out_path): * fus_transf.scaling.z ) - if body_frm_height < 0.01: - body_frm_height = 0.01 + if body_frm_height < 0.005: + body_frm_height = 0.005 body_frm_width = ( prof_size_y * 2 @@ -315,8 +314,8 @@ def convert_cpacs_to_sumo(cpacs_path, cpacs_out_path): * sec_transf.scaling.y * fus_transf.scaling.y ) - if body_frm_width < 0.01: - body_frm_width = 0.01 + if body_frm_width < 0.005: + body_frm_width = 0.005 # Convert the profile points in the SMX format prof_str = "" @@ -627,16 +626,16 @@ def convert_cpacs_to_sumo(cpacs_path, cpacs_out_path): # then TE(1 0), but not reverse way. # to avoid double zero, not accepted by SUMO - for i, item in enumerate(prof_vect_x): - # if not (prof_vect_x[i] == prof_vect_x[i-1] or \ - # round(prof_vect_z[i],4) == round(prof_vect_z[i-1],4)): - if round(prof_vect_z[i], 4) != round(prof_vect_z[i - 1], 4): - prof_str += ( - str(round(prof_vect_x[i], 4)) - + " " - + str(round(prof_vect_z[i], 4)) - + " " - ) + prof_str += ( + str(round(prof_vect_x[0], 4)) + " " + str(round(prof_vect_z[0], 4)) + " " + ) + + for i in range(1, len(prof_vect_x)): + dx_squared = (prof_vect_x[i] - prof_vect_x[i - 1]) ** 2 + dz_squared = (prof_vect_z[i] - prof_vect_z[i - 1]) ** 2 + + if dx_squared + dz_squared > 1e-8: + prof_str += f"{round(prof_vect_x[i], 4)} {round(prof_vect_z[i], 4)} " sumo.addTextElementAtIndex(wg_sk_xpath, "WingSection", prof_str, wing_sec_index) wg_sec_xpath = wg_sk_xpath + "/WingSection[" + str(wing_sec_index) + "]" @@ -884,16 +883,15 @@ def convert_cpacs_to_sumo(cpacs_path, cpacs_out_path): # then TE(1 0), but not reverse way. # to avoid double zero, not accepted by SUMO - for i, item in enumerate(prof_vect_x): - # if not (prof_vect_x[i] == prof_vect_x[i-1] or \ - # round(prof_vect_z[i],4) == round(prof_vect_z[i-1],4)): - if round(prof_vect_z[i], 4) != round(prof_vect_z[i - 1], 4): - prof_str += ( - str(round(prof_vect_x[i], 4)) - + " " - + str(round(prof_vect_z[i], 4)) - + " " - ) + prof_str += ( + str(round(prof_vect_x[0], 4)) + " " + str(round(prof_vect_z[0], 4)) + " " + ) + for i in range(1, len(prof_vect_x)): + dx_squared = (prof_vect_x[i] - prof_vect_x[i - 1]) ** 2 + dz_squared = (prof_vect_z[i] - prof_vect_z[i - 1]) ** 2 + + if dx_squared + dz_squared > 1e-6: + prof_str += f"{round(prof_vect_x[i], 4)} {round(prof_vect_z[i], 4)} " sumo.addTextElementAtIndex(wg_sk_xpath, "WingSection", prof_str, wing_sec_index) wg_sec_xpath = wg_sk_xpath + "/WingSection[" + str(wing_sec_index) + "]" @@ -953,13 +951,11 @@ def convert_cpacs_to_sumo(cpacs_path, cpacs_out_path): engineparts = [engine.nacelle.fancowl, engine.nacelle.corecowl, engine.nacelle.centercowl] for engpart in engineparts: - if not engpart.isengpart: log.info("This engine part is not define.") continue if engpart.iscone: - xcontours = engpart.pointlist.xlist ycontours = engpart.pointlist.ylist @@ -969,7 +965,6 @@ def convert_cpacs_to_sumo(cpacs_path, cpacs_out_path): zsectransl = 0 else: - xlist = engpart.section.pointlist.xlist ylist = engpart.section.pointlist.ylist @@ -1025,7 +1020,6 @@ def convert_cpacs_to_sumo(cpacs_path, cpacs_out_path): # Add section for i_sec in range(len(xcontours)): - namesec = "section_" + str(i_sec + 1) # Only circle profiles prof_str = " 0 -1 0.7071 -0.7071 1 0 0.7071 0.7071 0 1" @@ -1033,8 +1027,8 @@ def convert_cpacs_to_sumo(cpacs_path, cpacs_out_path): frame_xpath = body_xpath + "/BodyFrame[" + str(i_sec + 1) + "]" diam = (ycontours[i_sec] + zsectransl) * 2 - if diam < 0.01: - diam = 0.01 + if diam < 0.005: + diam = 0.005 sumo.addTextAttribute( frame_xpath, "center", sumo_str_format(xcontours[i_sec], 0, 0) @@ -1050,7 +1044,6 @@ def convert_cpacs_to_sumo(cpacs_path, cpacs_out_path): sumo_add_engine_bc(sumo, "Engine", engpart.uid) if engine.sym: - sumo.createElementAtIndex("/Assembly", "BodySkeleton", i_fus + 1) body_xpath = "/Assembly/BodySkeleton[" + str(i_fus + 1) + "]" @@ -1067,7 +1060,6 @@ def convert_cpacs_to_sumo(cpacs_path, cpacs_out_path): # Add section for i_sec in range(len(xcontours)): - namesec = "section_" + str(i_sec + 1) # Only circle profiles prof_str = " 0 -1 0.7071 -0.7071 1 0 0.7071 0.7071 0 1" @@ -1075,8 +1067,8 @@ def convert_cpacs_to_sumo(cpacs_path, cpacs_out_path): frame_xpath = body_xpath + "/BodyFrame[" + str(i_sec + 1) + "]" diam = (ycontours[i_sec] + zsectransl) * 2 - if diam < 0.01: - diam = 0.01 + if diam < 0.005: + diam = 0.005 sumo.addTextAttribute( frame_xpath, "center", sumo_str_format(xcontours[i_sec], 0, 0) @@ -1109,7 +1101,6 @@ def convert_cpacs_to_sumo(cpacs_path, cpacs_out_path): def main(cpacs_path, cpacs_out_path): - log.info("----- Start of " + MODULE_NAME + " -----") convert_cpacs_to_sumo(cpacs_path, cpacs_out_path) @@ -1118,7 +1109,6 @@ def main(cpacs_path, cpacs_out_path): if __name__ == "__main__": - cpacs_path = get_toolinput_file_path(MODULE_NAME) cpacs_out_path = get_tooloutput_file_path(MODULE_NAME) diff --git a/ceasiompy/ExportCSV/exportcsv.py b/ceasiompy/ExportCSV/exportcsv.py index eca3e8218..edd0bd999 100644 --- a/ceasiompy/ExportCSV/exportcsv.py +++ b/ceasiompy/ExportCSV/exportcsv.py @@ -32,6 +32,7 @@ ) from ceasiompy.utils.commonxpath import CEASIOMPY_XPATH from cpacspy.cpacspy import CPACS +from cpacspy.cpacsfunctions import get_value_or_default log = get_logger() @@ -56,6 +57,11 @@ def export_aeromaps(cpacs_path, cpacs_out_path): aeromap_to_export_xpath = CEASIOMPY_XPATH + "/export/aeroMapToExport" aeromap_uid_list = get_aeromap_list_from_xpath(cpacs, aeromap_to_export_xpath) + if not aeromap_uid_list: + aeromap_uid_list = get_value_or_default( + cpacs.tixi, aeromap_to_export_xpath, "DefaultAeromap" + ) + results_dir = get_results_directory("ExportCSV") for aeromap_uid in aeromap_uid_list: @@ -78,7 +84,6 @@ def main(cpacs_path, cpacs_out_path): log.info("----- Start of " + MODULE_NAME + " -----") - check_cpacs_input_requirements(cpacs_path) export_aeromaps(cpacs_path, cpacs_out_path) log.info("----- End of " + MODULE_NAME + " -----") @@ -90,3 +95,5 @@ def main(cpacs_path, cpacs_out_path): cpacs_out_path = get_tooloutput_file_path(MODULE_NAME) main(cpacs_path, cpacs_out_path) + + check_cpacs_input_requirements(cpacs_path) diff --git a/ceasiompy/Optimisation/func/dictionnary.py b/ceasiompy/Optimisation/func/dictionnary.py index 6ebe948f8..db0d0922b 100755 --- a/ceasiompy/Optimisation/func/dictionnary.py +++ b/ceasiompy/Optimisation/func/dictionnary.py @@ -204,7 +204,7 @@ def init_elem_param(sec_name, section, elem_nb, scmd): """Create wing section element variable. Add design variables and constrains relative to the wing section elements - to the dictionnary. + to the dictionary. Args: sec_name (str) : Name of the wing section @@ -401,5 +401,4 @@ def init_geom_var_dict(tixi): if __name__ == "__main__": - print("Nothing to execute!") diff --git a/ceasiompy/SU2Run/__specs__.py b/ceasiompy/SU2Run/__specs__.py index 278764db6..ecd05f417 100644 --- a/ceasiompy/SU2Run/__specs__.py +++ b/ceasiompy/SU2Run/__specs__.py @@ -58,6 +58,18 @@ gui_group="Aeromap settings", ) +# cpacs_inout.add_input( +# var_name="mesh_upload", +# var_type=str, +# default_value="your path", +# unit=None, +# descr="Name of the mesh to upload", +# xpath=SU2MESH_XPATH, +# gui=True, +# gui_name="Path of the mesh", +# gui_group="Mesh upload", +# ) + cpacs_inout.add_input( var_name="ref_len", var_type=float, @@ -210,7 +222,7 @@ unit="1", descr="CFL Number, Courant–Friedrichs–Lewy condition", xpath=SU2_CFL_NB_XPATH, - gui=True, + gui=False, gui_name="CFL Number", gui_group="SU2 Parameters", ) @@ -218,7 +230,7 @@ cpacs_inout.add_input( var_name="cfl_adapt", var_type=bool, - default_value=True, + default_value=False, unit="1", descr="CFL Adaptation", xpath=SU2_CFL_ADAPT_XPATH, @@ -364,7 +376,7 @@ cpacs_inout.add_input( var_name="prandtl", var_type=bool, - default_value=True, + default_value=False, unit=None, descr="Enable or disable the tip loss correction of Prandtl", xpath=PROP_XPATH + "/propeller/blade/loss", diff --git a/ceasiompy/SU2Run/func/su2config.py b/ceasiompy/SU2Run/func/su2config.py index 8705c3f02..7b77a9bc6 100644 --- a/ceasiompy/SU2Run/func/su2config.py +++ b/ceasiompy/SU2Run/func/su2config.py @@ -156,7 +156,6 @@ def add_actuator_disk(cfg, cpacs, case_dir_path, actuator_disk_file, mesh_marker rotor_uid_pos = {} for i in range(1, rotorcraft_config.get_rotor_count() + 1): - rotor = rotorcraft_config.get_rotor(i) rotor_uid = rotor.get_uid() @@ -327,21 +326,48 @@ def generate_su2_cfd_config(cpacs_path, cpacs_out_path, wkdir): bc_farfiled_str = ";".join(mesh_markers["engine_intake"] + mesh_markers["engine_exhaust"]) cpacs.tixi.updateTextElement(SU2_BC_FARFIELD_XPATH, bc_farfiled_str) + create_branch(cpacs.tixi, SU2_ACTUATOR_DISK_XPATH) + bc_actuator_disk_str = ";".join( + mesh_markers["actuator_disk_inlet"] + mesh_markers["actuator_disk_outlet"] + ) + cpacs.tixi.updateTextElement(SU2_ACTUATOR_DISK_XPATH, bc_actuator_disk_str) + fixed_cl = get_value_or_default(cpacs.tixi, SU2_FIXED_CL_XPATH, "NO") target_cl = get_value_or_default(cpacs.tixi, SU2_TARGET_CL_XPATH, 1.0) if fixed_cl == "NO": + # Get the first aeroMap as default one or create automatically one + aeromap_list = cpacs.get_aeromap_uid_list() + + if aeromap_list: + aeromap_default = aeromap_list[0] + log.info(f'The aeromap is {aeromap_default}') + + aeromap_uid = get_value_or_default(cpacs.tixi, SU2_AEROMAP_UID_XPATH, aeromap_default) + + activate_aeromap = cpacs.get_aeromap_by_uid(aeromap_uid) + alt_list = activate_aeromap.get("altitude").tolist() + mach_list = activate_aeromap.get("machNumber").tolist() + aoa_list = activate_aeromap.get("angleOfAttack").tolist() + aos_list = activate_aeromap.get("angleOfSideslip").tolist() + + else: + default_aeromap = cpacs.create_aeromap("DefaultAeromap") + default_aeromap.description = "AeroMap created automatically" + + mach = get_value_or_default(cpacs.tixi, RANGE_XPATH + "/cruiseMach", 0.3) + alt = get_value_or_default(cpacs.tixi, RANGE_XPATH + "/cruiseAltitude", 10000) - # Get the first aeroMap as default one - aeromap_default = cpacs.get_aeromap_uid_list()[0] - aeromap_uid = get_value_or_default(cpacs.tixi, SU2_AEROMAP_UID_XPATH, aeromap_default) - log.info(f'Configuration file for "{aeromap_uid}" calculation will be created.') + default_aeromap.add_row(alt=alt, mach=mach, aos=0.0, aoa=0.0) + default_aeromap.save() - active_aeromap = cpacs.get_aeromap_by_uid(aeromap_uid) - alt_list = active_aeromap.get("altitude").tolist() - mach_list = active_aeromap.get("machNumber").tolist() - aoa_list = active_aeromap.get("angleOfAttack").tolist() - aos_list = active_aeromap.get("angleOfSideslip").tolist() + alt_list = [alt] + mach_list = [mach] + aoa_list = [0.0] + aos_list = [0.0] + + aeromap_uid = get_value_or_default(cpacs.tixi, SU2_AEROMAP_UID_XPATH, "DefaultAeromap") + log.info(f"{aeromap_uid} has been created") else: # if fixed_cl == 'YES': log.info("Configuration file for fixed CL calculation will be created.") @@ -403,6 +429,7 @@ def generate_su2_cfd_config(cpacs_path, cpacs_out_path, wkdir): # Mesh Marker bc_wall_str = f"( {','.join(mesh_markers['wall'])} )" + cfg["MARKER_EULER"] = bc_wall_str farfield_bc = ( mesh_markers["farfield"] + mesh_markers["engine_intake"] + mesh_markers["engine_exhaust"] @@ -422,7 +449,6 @@ def generate_su2_cfd_config(cpacs_path, cpacs_out_path, wkdir): # Parameters which will vary for the different cases (alt,mach,aoa,aos) for case_nb in range(len(alt_list)): - cfg["MESH_FILENAME"] = str(su2_mesh) alt = alt_list[case_nb] @@ -449,7 +475,6 @@ def generate_su2_cfd_config(cpacs_path, cpacs_out_path, wkdir): case_dir_path.mkdir() if get_value_or_default(cpacs.tixi, SU2_ACTUATOR_DISK_XPATH, False): - actuator_disk_file = Path(wkdir, ACTUATOR_DISK_FILE_NAME) add_actuator_disk( cfg, cpacs, case_dir_path, actuator_disk_file, mesh_markers, alt, mach @@ -459,6 +484,19 @@ def generate_su2_cfd_config(cpacs_path, cpacs_out_path, wkdir): case_actuator_disk_file = Path(case_dir_path, ACTUATOR_DISK_FILE_NAME) copyfile(actuator_disk_file, case_actuator_disk_file) + bc_wall_str = ( + "(" + + ",".join( + mesh_markers["wall"] + + mesh_markers["actuator_disk_inlet"] + + mesh_markers["actuator_disk_outlet"] + ) + + ")" + ) + + cfg["MARKER_PLOTTING"] = bc_wall_str + cfg["MARKER_MONITORING"] = bc_wall_str + config_output_path = Path(case_dir_path, CONFIG_CFD_NAME) cfg.write_file(config_output_path, overwrite=True) @@ -468,7 +506,6 @@ def generate_su2_cfd_config(cpacs_path, cpacs_out_path, wkdir): # Control surfaces deflections (TODO: create a subfunctions) if get_value_or_default(cpacs.tixi, SU2_CONTROL_SURF_XPATH, False): - # Get deformed mesh list if cpacs.tixi.checkElement(SU2_DEF_MESH_XPATH): su2_def_mesh_list = get_string_vector(cpacs.tixi, SU2_DEF_MESH_XPATH) @@ -477,7 +514,6 @@ def generate_su2_cfd_config(cpacs_path, cpacs_out_path, wkdir): su2_def_mesh_list = [] for su2_def_mesh in su2_def_mesh_list: - mesh_path = Path(wkdir, "MESH", su2_def_mesh) config_dir_path = Path(wkdir, case_dir_name + "_" + su2_def_mesh.split(".")[0]) config_dir_path.mkdir() @@ -493,5 +529,4 @@ def generate_su2_cfd_config(cpacs_path, cpacs_out_path, wkdir): # ================================================================================================= if __name__ == "__main__": - log.info("Nothing to execute!") diff --git a/ceasiompy/SU2Run/tests/tests_su2utils/test_mesh1.su2 b/ceasiompy/SU2Run/tests/tests_su2utils/test_mesh1.su2 index 008198f20..a4052b73d 100644 --- a/ceasiompy/SU2Run/tests/tests_su2utils/test_mesh1.su2 +++ b/ceasiompy/SU2Run/tests/tests_su2utils/test_mesh1.su2 @@ -37,14 +37,14 @@ MARKER_ELEMS=27600 5 24129 24130 26792 5 20341 26793 20342 5 20303 20304 26790 -MARKER_TAG=D150_ENGINE1_Intake +MARKER_TAG=D150_ENGINE1_In MARKER_ELEMS=27600 5 20302 20303 26790 5 26791 26794 26795 5 24129 24130 26792 5 20341 26793 20342 5 20303 20304 26790 -MARKER_TAG= D150_ENGINE1_Exhaust +MARKER_TAG= D150_ENGINE1_Ex MARKER_ELEMS=27600 5 20302 20303 26790 5 26791 26794 26795 diff --git a/ceasiompy/SU2Run/tests/tests_su2utils/test_su2utils.py b/ceasiompy/SU2Run/tests/tests_su2utils/test_su2utils.py index ed33e4496..f41a80a95 100644 --- a/ceasiompy/SU2Run/tests/tests_su2utils/test_su2utils.py +++ b/ceasiompy/SU2Run/tests/tests_su2utils/test_su2utils.py @@ -71,8 +71,8 @@ def test_get_mesh_marker(): "D150_VAMP_HL1", "D150_VAMP_W1", ] - assert mesh_markers["engine_intake"] == ["D150_ENGINE1_Intake"] - assert mesh_markers["engine_exhaust"] == ["D150_ENGINE1_Exhaust"] + assert mesh_markers["engine_intake"] == ["D150_ENGINE1_In"] + assert mesh_markers["engine_exhaust"] == ["D150_ENGINE1_Ex"] assert mesh_markers["actuator_disk_inlet"] == ["D150_PROPELLER1_AD_Inlet"] assert mesh_markers["actuator_disk_outlet"] == ["D150_PROPELLER1_AD_Outlet"] assert mesh_markers["farfield"] == ["Farfield"] @@ -187,5 +187,4 @@ def test_get_wetted_area(): # ================================================================================================= if __name__ == "__main__": - print("Nothing to execute!") diff --git a/ceasiompy/SUMOAutoMesh/sumoautomesh.py b/ceasiompy/SUMOAutoMesh/sumoautomesh.py index 00ccd2e74..964d7846f 100644 --- a/ceasiompy/SUMOAutoMesh/sumoautomesh.py +++ b/ceasiompy/SUMOAutoMesh/sumoautomesh.py @@ -184,12 +184,12 @@ def add_mesh_parameters(sumo_file_path, refine_level=0.0): # in sumo it is 0.08*maxlen or 0.7*min leading edge radius...? # Default value in SUMO - lerfactor = 1 / 2.0 - terfactor = 1 / 2.0 + lerfactor = 1 / 4.0 + terfactor = 1 / 4.0 if refine_level > 1: - lerfactor = 1 / (2.0 + 0.5 * (refine_level - 1)) - terfactor = 1 / (2.0 + 0.5 * (refine_level - 1)) + lerfactor = 1 / (4.0 + 0.5 * (refine_level - 1)) + terfactor = 1 / (4.0 + 0.5 * (refine_level - 1)) # Add mesh parameters in the XML file (.smx) meshcrit_xpath = wing_xpath + "/WingCriterion" diff --git a/ceasiompy/SkinFriction/skinfriction.py b/ceasiompy/SkinFriction/skinfriction.py index 6a353205d..ba6a8ca3a 100644 --- a/ceasiompy/SkinFriction/skinfriction.py +++ b/ceasiompy/SkinFriction/skinfriction.py @@ -237,6 +237,11 @@ def add_skin_friction(cpacs_path, cpacs_out_path): cpacs, aeromap_to_plot_xpath, empty_if_not_found=True ) + if not aeromap_uid_list: + aeromap_uid_list = get_value_or_default( + cpacs.tixi, aeromap_to_plot_xpath, "DefaultAeromap" + ) + new_aeromap_to_plot = aeromap_uid_list + new_aeromap_uid_list new_aeromap_to_plot = list(set(new_aeromap_to_plot)) add_string_vector(cpacs.tixi, aeromap_to_plot_xpath, new_aeromap_to_plot) @@ -254,8 +259,6 @@ def main(cpacs_path, cpacs_out_path): log.info("----- Start of " + MODULE_NAME + " -----") - check_cpacs_input_requirements(cpacs_path) - add_skin_friction(cpacs_path, cpacs_out_path) log.info("----- End of " + MODULE_NAME + " -----") @@ -271,3 +274,5 @@ def main(cpacs_path, cpacs_out_path): cpacs_out_path = get_tooloutput_file_path(MODULE_NAME) main(cpacs_path, cpacs_out_path) + + check_cpacs_input_requirements(cpacs_path) diff --git a/ceasiompy/utils/commonnames.py b/ceasiompy/utils/commonnames.py index f4c741f09..2fcdabd97 100644 --- a/ceasiompy/utils/commonnames.py +++ b/ceasiompy/utils/commonnames.py @@ -34,8 +34,8 @@ SURFACE_FLOW_FORCE_FILE_NAME = "surface_flow_forces.vtu" FORCE_FILE_NAME = "forces.csv" -ENGINE_INTAKE_SUFFIX = "_Intake" -ENGINE_EXHAUST_SUFFIX = "_Exhaust" +ENGINE_INTAKE_SUFFIX = "_In" +ENGINE_EXHAUST_SUFFIX = "_Ex" ACTUATOR_DISK_FILE_NAME = "ActuatorDisk.dat" ACTUATOR_DISK_INLET_SUFFIX = "_AD_Inlet" diff --git a/ceasiompy/utils/commonxpath.py b/ceasiompy/utils/commonxpath.py index 602fae8d3..0b9e28a57 100644 --- a/ceasiompy/utils/commonxpath.py +++ b/ceasiompy/utils/commonxpath.py @@ -94,9 +94,13 @@ GMSH_SYMMETRY_XPATH = GMSH_XPATH + "/symmetry" GMSH_EXPORT_PROP_XPATH = GMSH_XPATH + "/exportPropellers" GMSH_FARFIELD_FACTOR_XPATH = GMSH_XPATH + "/farfield_factor" +GMSH_N_POWER_FACTOR_XPATH = GMSH_XPATH + "/n_power_factor" +GMSH_N_POWER_FIELD_XPATH = GMSH_XPATH + "/n_power_field" GMSH_MESH_SIZE_FARFIELD_XPATH = GMSH_XPATH + "/mesh_size/farfield" -GMSH_MESH_SIZE_FUSELAGE_XPATH = GMSH_XPATH + "/mesh_size/fuselage" -GMSH_MESH_SIZE_WINGS_XPATH = GMSH_XPATH + "/mesh_size/wings" +GMSH_MESH_SIZE_FUSELAGE_XPATH = GMSH_XPATH + "/mesh_size/fuselage/value" +GMSH_MESH_SIZE_FACTOR_FUSELAGE_XPATH = GMSH_XPATH + "/mesh_size/fuselage/factor" +GMSH_MESH_SIZE_WINGS_XPATH = GMSH_XPATH + "/mesh_size/wings/value" +GMSH_MESH_SIZE_FACTOR_WINGS_XPATH = GMSH_XPATH + "/mesh_size/wings/factor" GMSH_MESH_SIZE_ENGINES_XPATH = GMSH_XPATH + "/mesh_size/engines" GMSH_MESH_SIZE_PROPELLERS_XPATH = GMSH_XPATH + "/mesh_size/propellers" GMSH_REFINE_FACTOR_XPATH = GMSH_XPATH + "/refine_factor" diff --git a/ceasiompy/utils/moduleinterfaces.py b/ceasiompy/utils/moduleinterfaces.py index e5ef0a6cb..1b6d6d812 100644 --- a/ceasiompy/utils/moduleinterfaces.py +++ b/ceasiompy/utils/moduleinterfaces.py @@ -248,11 +248,6 @@ def get_module_list(only_active=True): if only_active: if module_status: module_list.append(module_name) - else: - log.info( - f"{module_name} has not been added to the module list because it is marked as " - "deactivated (module_status = False in __specs__.py) " - ) else: module_list.append(module_name) diff --git a/setup.py b/setup.py index f1c99ec3a..d5a71ad53 100644 --- a/setup.py +++ b/setup.py @@ -3,6 +3,7 @@ # Author: Aaron Dettmann # Modif: Aidan Jungo +# Modif: Giacomo Benedetti import platform import setuptools @@ -12,7 +13,7 @@ EXCLUDE_DIRS = ["test_cases", "test_files", "installation"] VERSION = "0.2.0" AUTHOR = "CFS Engineering" -EMAIL = "aidan.jungo@cfse.ch" +EMAIL = "giacomo.benedetti@cfse.ch" DESCRIPTION = "A conceptual aircraft design environment" URL = "https://github.com/cfsengineering/CEASIOMpy" REQUIRES_PYTHON = ">=3.8.0" diff --git a/src/streamlit/.streamlit/config.toml b/src/streamlit/.streamlit/config.toml index f5a381aff..bb68e8081 100644 --- a/src/streamlit/.streamlit/config.toml +++ b/src/streamlit/.streamlit/config.toml @@ -3,3 +3,6 @@ primaryColor="#ff7f2a" backgroundColor="#e0e0d4" secondaryBackgroundColor="#9e9e93" textColor="#000000" + +[server] +maxUploadSize=2500 diff --git "a/src/streamlit/pages/02_\342\232\231\357\270\217_Settings.py" "b/src/streamlit/pages/02_\342\232\231\357\270\217_Settings.py" index 99453c577..e9f74ed04 100644 --- "a/src/streamlit/pages/02_\342\232\231\357\270\217_Settings.py" +++ "b/src/streamlit/pages/02_\342\232\231\357\270\217_Settings.py" @@ -16,10 +16,14 @@ from collections import OrderedDict from pathlib import Path +from cpacspy.cpacsfunctions import create_branch + +from tixi3 import tixi3wrapper +from cpacspy.cpacsfunctions import open_tixi import pandas as pd import streamlit as st -from ceasiompy.utils.moduleinterfaces import get_specs_for_module +from ceasiompy.utils.moduleinterfaces import get_specs_for_module, get_toolinput_file_path from cpacspy.cpacsfunctions import ( add_string_vector, add_value, @@ -28,6 +32,9 @@ ) from cpacspy.cpacspy import CPACS from streamlitutils import create_sidebar +from ceasiompy.utils.commonxpath import SU2MESH_XPATH + +import os how_to_text = ( "### How to use Settings?\n" @@ -55,7 +62,6 @@ def update_value(xpath, key): - if key in st.session_state: value = st.session_state[key] @@ -70,13 +76,11 @@ def update_value(xpath, key): def update_all_modified_value(): - for xpath, key in st.session_state.xpath_to_update.items(): update_value(xpath, key) def save_cpacs_file(): - update_all_modified_value() saved_cpacs_file = Path(st.session_state.workflow.working_dir, "CPACS_selected_from_GUI.xml") st.session_state.cpacs.save_cpacs(saved_cpacs_file, overwrite=True) @@ -84,14 +88,35 @@ def save_cpacs_file(): st.session_state.cpacs = CPACS(saved_cpacs_file) -def section_edit_aeromap(): +# def upload_and_save_file(file_uploader, save_dir): + +# file = file_uploader("Select a file", type=["cgns", "su2"], key="file_uploader_key") + +# if file is not None: +# file_name = file.name + +# # Crea la cartella di salvataggio se non esiste +# os.makedirs(save_dir, exist_ok=True) + +# # Salva il file nella directory specificata +# file_path = os.path.join(save_dir, file_name) +# with open(file_path, "wb") as f: +# f.write(file.getbuffer()) + +# # Visualizza il percorso completo del file locale +# st.success(f"File saved to: {file_path}") + +# return file_path + +# return None + +def section_edit_aeromap(): st.markdown("#### Available aeromaps") aeromap_uid_list = st.session_state.cpacs.get_aeromap_uid_list() for i, aeromap in enumerate(aeromap_uid_list): - col1, col2, col3, _ = st.columns([6, 1, 1, 5]) with col1: @@ -179,7 +204,6 @@ def section_edit_aeromap(): uploaded_aeromap_uid = uploaded_csv.name.split(".csv")[0] if st.button("Add this aeromap"): - if uploaded_aeromap_uid in aeromap_uid_list: st.error("There is already an aeromap with this name!") return @@ -190,8 +214,60 @@ def section_edit_aeromap(): st.experimental_rerun() -def add_module_tab(): +def mesh_file_upload(): + st.markdown("#### Upload mesh file") + + # Verifica se è stato caricato un file mesh + uploaded_mesh = st.file_uploader( + "Select a mesh file", + key="00_mesh_upload", + type=["su2", "cgns"], + ) + + if uploaded_mesh: + # Crea la cartella "mesh" se non esiste + mesh_dir = os.path.join(st.session_state.workflow.working_dir, "mesh") + os.makedirs(mesh_dir, exist_ok=True) + + # Crea un nuovo percorso per il file .su2 nella cartella "mesh" + mesh_new_path = os.path.join(mesh_dir, uploaded_mesh.name) + print(f"mesh path: {mesh_new_path}") + + try: + # Scrivi il file nel percorso specificato + with open(mesh_new_path, "wb") as f: + f.write(uploaded_mesh.getbuffer()) + + # Apri il file CPACS + cpacs_path = st.session_state.workflow.cpacs_in + print(f"cpacs_path: {cpacs_path}") + tixi = open_tixi(cpacs_path) + + # Definisci la variabile mesh_xpath in base alla tua struttura CPACS + mesh_xpath = "/cpacs/toolspecific/CEASIOMpy/filesPath/su2Mesh" + + # Verifica se il percorso esiste + if not tixi.checkElement(mesh_xpath): + # Se il percorso non esiste, crealo + create_branch(tixi, mesh_xpath) + if st.button("Add this mesh"): + # Aggiorna il percorso del file SU2 mesh nel documento CPACS + tixi.updateTextElement(mesh_xpath, str(mesh_new_path)) + + # Salva il file CPACS + save_cpacs_file() + + return mesh_new_path + + except Exception as e: + st.error(f"An error occurred: {e}") + return None + + return None + + +def add_module_tab(): if "cpacs" not in st.session_state: st.warning("No CPACS file has been selected!") return @@ -199,6 +275,9 @@ def add_module_tab(): with st.expander("Edit Aeromaps"): section_edit_aeromap() + # with st.expander("Add mesh"): + # mesh_file_upload() + if "tabs" not in st.session_state: st.session_state["tabs"] = [] @@ -210,9 +289,7 @@ def add_module_tab(): for m, (tab, module) in enumerate( zip(st.session_state.tabs, st.session_state.workflow_modules) ): - with tab: - st.text("") specs = get_specs_for_module(module) inputs = specs.cpacs_inout.get_gui_dict() @@ -231,9 +308,7 @@ def add_module_tab(): st.markdown(f"**{group}**") for name, default_value, var_type, unit, xpath, description, group in inputs.values(): - with groups_container[group]: - if not group: group = "none" @@ -243,7 +318,6 @@ def add_module_tab(): name = f"{name} {unit}" if name == "__AEROMAP_SELECTION": - aeromap_uid_list = st.session_state.cpacs.get_aeromap_uid_list() if not len(aeromap_uid_list): @@ -266,7 +340,6 @@ def add_module_tab(): ) elif name == "__AEROMAP_CHECKBOX": - aeromap_uid_list = st.session_state.cpacs.get_aeromap_uid_list() if not len(aeromap_uid_list): @@ -287,8 +360,19 @@ def add_module_tab(): help=description, ) - elif var_type == int: + elif name == "pathtype": + # Chiama la funzione mesh_file_upload() e ottieni il percorso del file mesh + mesh_path = mesh_file_upload() + with st.columns([1, 2])[0]: + st.text_input( + "Mesh Path", + value=mesh_path, + key=key, + help="Path to the mesh file", + ) + + elif var_type == int: with st.columns([1, 2])[0]: st.number_input( name, @@ -302,13 +386,13 @@ def add_module_tab(): ) elif var_type == float: - with st.columns([1, 2])[0]: st.number_input( name, value=get_value_or_default( st.session_state.cpacs.tixi, xpath, default_value ), + format="%0.3f", key=key, help=description, ) @@ -336,18 +420,14 @@ def add_module_tab(): help=description, ) - elif var_type == "pathtype": - st.warning( - "Pathtype not implemented yet, " - "it should not influance your use of CEASIOMpy." - ) - # st.file_uploader( - # "Select a file", - # key=key, - # type=["xml"], - # help=description, - # on_change=update_value(xpath, key), - # ) + # elif var_type == "pathtype": + + # save_dir = "tempDir" + # mesh_path = upload_and_save_file(st.file_uploader, save_dir) + # print(f"mesh_path={mesh_path}") + # st.text_input(get_value_or_default( + # st.session_state.cpacs.tixi, xpath, mesh_path)) + # update_value(xpath, key) else: with st.columns([1, 2])[0]: @@ -364,7 +444,6 @@ def add_module_tab(): def section_settings(): - if "workflow_modules" not in st.session_state: st.warning("No module selected!") return diff --git a/tests/Test_input.xml b/tests/Test_input.xml index f3ede1cd7..c4d779208 100644 --- a/tests/Test_input.xml +++ b/tests/Test_input.xml @@ -1,5 +1,6 @@ - +
D150 D150 geometry @@ -74,7 +75,8 @@ 0 0 - + 0 0 -0.723764 @@ -95,7 +97,8 @@ 0 0 - + 0 0 0 @@ -106,18 +109,22 @@ Name Rumpf_Sec1_Elem1 Beschreibung Rumpf_Sec1_Element1 Fuselage1_ProfCirc - - + + 1 1 1 - + 0 0 0 - + 0 0 0 @@ -140,7 +147,8 @@ 0 0 - + 0 0 0 @@ -151,18 +159,22 @@ Name Rumpf_Sec2_Elem1 Beschreibung Rumpf_Sec2_Element1 Fuselage1_ProfCirc - - + + 1 1 1 - + 0 0 0 - + 0 0 0 @@ -185,7 +197,8 @@ 0 0 - + 0 0 0 @@ -196,18 +209,22 @@ Name Rumpf_Sec3_Elem1 Beschreibung Rumpf_Sec3_Element1 Fuselage1_ProfCirc - - + + 1 1 1 - + 0 0 0 - + 0 0 0 @@ -230,7 +247,8 @@ 0 0 - + 0 0 0 @@ -241,18 +259,22 @@ Name Rumpf_Sec4_Elem1 Beschreibung Rumpf_Sec4_Element1 Fuselage1_ProfCirc - - + + 1 1 1 - + 0 0 0 - + 0 0 0 @@ -275,7 +297,8 @@ 0 0 - + 0 0 0 @@ -286,18 +309,22 @@ Name Rumpf_Sec5_Elem1 Beschreibung Rumpf_Sec5_Element1 Fuselage1_ProfCirc - - + + 1 1 1 - + 0 0 0 - + 0 0 0 @@ -320,7 +347,8 @@ 0 0 - + 0 0 0 @@ -331,18 +359,22 @@ Name Rumpf_Sec6_Elem1 Beschreibung Rumpf_Sec6_Element1 Fuselage1_ProfCirc - - + + 1 1 1 - + 0 0 0 - + 0 0 0 @@ -365,7 +397,8 @@ 0 0 - + 0 0 0 @@ -376,18 +409,22 @@ Name Rumpf_Sec7_Elem1 Beschreibung Rumpf_Sec7_Element1 Fuselage1_ProfCirc - - + + 1 1 1 - + 0 0 0 - + 0 0 0 @@ -410,7 +447,8 @@ 0 0 - + 0 0 0 @@ -421,18 +459,22 @@ Name Rumpf_Sec8_Elem1 Beschreibung Rumpf_Sec8_Element1 Fuselage1_ProfCirc - - + + 1 1 1 - + 0 0 0 - + 0 0 0 @@ -455,7 +497,8 @@ 0 0 - + 0 0 0 @@ -466,18 +509,22 @@ Name Rumpf_Sec9_Elem1 Beschreibung Rumpf_Sec9_Element1 Fuselage1_ProfCirc - - + + 1 1 1 - + 0 0 0 - + 0 0 0 @@ -500,7 +547,8 @@ 0 0 - + 0 0 0 @@ -511,18 +559,22 @@ Name Rumpf_Sec10_Elem1 Beschreibung Rumpf_Sec10_Element1 Fuselage1_ProfCirc - - + + 1 1 1 - + 0 0 0 - + 0 0 0 @@ -545,7 +597,8 @@ 0 0 - + 0 0 0 @@ -556,18 +609,22 @@ Name Rumpf_Sec11_Elem1 Beschreibung Rumpf_Sec11_Element1 Fuselage1_ProfCirc - - + + 1 1 1 - + 0 0 0 - + 0 0 0 @@ -590,7 +647,8 @@ 0 0 - + 0 0 0 @@ -601,18 +659,22 @@ Name Rumpf_Sec12_Elem1 Beschreibung Rumpf_Sec12_Element1 Fuselage1_ProfCirc - - + + 1 1 1 - + 0 0 0 - + 0 0 0 @@ -635,7 +697,8 @@ 0 0 - + 0 0 0 @@ -646,18 +709,22 @@ Name Rumpf_Sec13_Elem1 Beschreibung Rumpf_Sec13_Element1 Fuselage1_ProfCirc - - + + 1 1 1 - + 0 0 0 - + 0 0 0 @@ -680,7 +747,8 @@ 0 0 - + 0 0 0 @@ -691,18 +759,22 @@ Name Rumpf_Sec14_Elem1 Beschreibung Rumpf_Sec14_Element1 Fuselage1_ProfCirc - - + + 1 1 1 - + 0 0 0 - + 0 0 0 @@ -725,7 +797,8 @@ 0 0 - + 0 0 0 @@ -736,18 +809,22 @@ Name Rumpf_Sec15_Elem1 Beschreibung Rumpf_Sec15_Element1 Fuselage1_ProfCirc - - + + 1 1 1 - + 0 0 0 - + 0 0 0 @@ -770,7 +847,8 @@ 0 0 - + 0 0 0 @@ -781,18 +859,22 @@ Name Rumpf_Sec16_Elem1 Beschreibung Rumpf_Sec16_Element1 Fuselage1_ProfCirc - - + + 1 1 1 - + 0 0 0 - + 0 0 0 @@ -815,7 +897,8 @@ 0 0 - + 0 0 0 @@ -826,18 +909,22 @@ Name Rumpf_Sec17_Elem1 Beschreibung Rumpf_Sec17_Element1 Fuselage1_ProfCirc - - + + 1 1 1 - + 0 0 0 - + 0 0 0 @@ -860,7 +947,8 @@ 0 0 - + 0 0 0 @@ -871,18 +959,22 @@ Name Rumpf_Sec18_Elem1 Beschreibung Rumpf_Sec18_Element1 Fuselage1_ProfCirc - - + + 1 1 1 - + 0 0 0 - + 0 0 0 @@ -905,7 +997,8 @@ 0 0 - + 0 0 0 @@ -916,18 +1009,22 @@ Name Rumpf_Sec19_Elem1 Beschreibung Rumpf_Sec19_Element1 Fuselage1_ProfCirc - - + + 1 1 1 - + 0 0 0 - + 0 0 0 @@ -950,7 +1047,8 @@ 0 0 - + 0 0 0 @@ -961,18 +1059,22 @@ Name Rumpf_Sec20_Elem1 Beschreibung Rumpf_Sec20_Element1 Fuselage1_ProfCirc - - + + 1 1 1 - + 0 0 0 - + 0 0 0 @@ -995,7 +1097,8 @@ 0 0 - + 0 0 0 @@ -1006,18 +1109,22 @@ Name Rumpf_Sec21_Elem1 Beschreibung Rumpf_Sec21_Element1 Fuselage1_ProfCirc - - + + 1 1 1 - + 0 0 0 - + 0 0 0 @@ -1040,7 +1147,8 @@ 0 0 - + 0 0 0 @@ -1051,18 +1159,22 @@ Name Rumpf_Sec22_Elem1 Beschreibung Rumpf_Sec22_Element1 Fuselage1_ProfCirc - - + + 1 1 1 - + 0 0 0 - + 0 0 0 @@ -1085,7 +1197,8 @@ 0 0 - + 0 0 0 @@ -1096,18 +1209,22 @@ Name Rumpf_Sec23_Elem1 Beschreibung Rumpf_Sec23_Element1 Fuselage1_ProfCirc - - + + 1 1 1 - + 0 0 0 - + 0 0 0 @@ -1130,7 +1247,8 @@ 0 0 - + 0 0 0 @@ -1141,18 +1259,22 @@ Name Rumpf_Sec24_Elem1 Beschreibung Rumpf_Sec24_Element1 Fuselage1_ProfCirc - - + + 1 1 1 - + 0 0 0 - + 0 0 0 @@ -1175,7 +1297,8 @@ 0 0 - + 0 0 0 @@ -1186,18 +1309,22 @@ Name Rumpf_Sec25_Elem1 Beschreibung Rumpf_Sec25_Element1 Fuselage1_ProfCirc - - + + 1 1 1 - + 0 0 0 - + 0 0 0 @@ -1220,7 +1347,8 @@ 0 0 - + 0 0 0 @@ -1231,18 +1359,22 @@ Name Rumpf_Sec26_Elem1 Beschreibung Rumpf_Sec26_Element1 Fuselage1_ProfCirc - - + + 1 1 1 - + 0 0 0 - + 0 0 0 @@ -1265,7 +1397,8 @@ 0 0 - + 0 0 0 @@ -1276,18 +1409,22 @@ Name Rumpf_Sec27_Elem1 Beschreibung Rumpf_Sec27_Element1 Fuselage1_ProfCirc - - + + 1 1 1 - + 0 0 0 - + 0 0 0 @@ -1310,7 +1447,8 @@ 0 0 - + 0 0 0 @@ -1321,18 +1459,22 @@ Name Rumpf_Sec28_Elem1 Beschreibung Rumpf_Sec28_Element1 Fuselage1_ProfCirc - - + + 1 1 1 - + 0 0 0 - + 0 0 0 @@ -1355,7 +1497,8 @@ 0 0 - + 0 0 0 @@ -1366,18 +1509,22 @@ Name Rumpf_Sec29_Elem1 Beschreibung Rumpf_Sec29_Element1 Fuselage1_ProfCirc - - + + 1 1 1 - + 0 0 0 - + 0 0 0 @@ -1400,7 +1547,8 @@ 0 0 - + 0 0 0 @@ -1411,18 +1559,22 @@ Name Rumpf_Sec30_Elem1 Beschreibung Rumpf_Sec30_Element1 Fuselage1_ProfCirc - - + + 1 1 1 - + 0 0 0 - + 0 0 0 @@ -1445,7 +1597,8 @@ 0 0 - + 0 0 0 @@ -1456,18 +1609,22 @@ Name Rumpf_Sec31_Elem1 Beschreibung Rumpf_Sec31_Element1 Fuselage1_ProfCirc - - + + 1 1 1 - + 0 0 0 - + 0 0 0 @@ -1490,7 +1647,8 @@ 0 0 - + 0 0 0 @@ -1501,18 +1659,22 @@ Name Rumpf_Sec32_Elem1 Beschreibung Rumpf_Sec32_Element1 Fuselage1_ProfCirc - - + + 1 1 1 - + 0 0 0 - + 0 0 0 @@ -1535,7 +1697,8 @@ 0 0 - + 0 0 0 @@ -1546,18 +1709,22 @@ Name Rumpf_Sec33_Elem1 Beschreibung Rumpf_Sec33_Element1 Fuselage1_ProfCirc - - + + 1 1 1 - + 0 0 0 - + 0 0 0 @@ -1580,7 +1747,8 @@ 0 0 - + 0 0 0 @@ -1591,18 +1759,22 @@ Name Rumpf_Sec34_Elem1 Beschreibung Rumpf_Sec34_Element1 Fuselage1_ProfCirc - - + + 1 1 1 - + 0 0 0 - + 0 0 0 @@ -1625,7 +1797,8 @@ 0 0 - + 0 0 0 @@ -1636,18 +1809,22 @@ Name Rumpf_Sec35_Elem1 Beschreibung Rumpf_Sec35_Element1 Fuselage1_ProfCirc - - + + 1 1 1 - + 0 0 0 - + 0 0 0 @@ -1670,7 +1847,8 @@ 0 0 - + 0 0 0 @@ -1681,18 +1859,22 @@ Name Rumpf_Sec36_Elem1 Beschreibung Rumpf_Sec36_Element1 Fuselage1_ProfCirc - - + + 1 1 1 - + 0 0 0 - + 0 0 0 @@ -1715,7 +1897,8 @@ 0 0 - + 0 0 0 @@ -1726,18 +1909,22 @@ Name Rumpf_Sec37_Elem1 Beschreibung Rumpf_Sec37_Element1 Fuselage1_ProfCirc - - + + 1 1 1 - + 0 0 0 - + 0 0 0 @@ -1760,7 +1947,8 @@ 0 0 - + 0 0 0 @@ -1771,18 +1959,22 @@ Name Rumpf_Sec38_Elem1 Beschreibung Rumpf_Sec38_Element1 Fuselage1_ProfCirc - - + + 1 1 1 - + 0 0 0 - + 0 0 0 @@ -1805,7 +1997,8 @@ 0 0 - + 0 0 0 @@ -1816,18 +2009,22 @@ Name Rumpf_Sec39_Elem1 Beschreibung Rumpf_Sec39_Element1 Fuselage1_ProfCirc - - + + 1 1 1 - + 0 0 0 - + 0 0 0 @@ -1850,7 +2047,8 @@ 0 0 - + 0 0 0 @@ -1861,18 +2059,22 @@ Name Rumpf_Sec40_Elem1 Beschreibung Rumpf_Sec40_Element1 Fuselage1_ProfCirc - - + + 1 1 1 - + 0 0 0 - + 0 0 0 @@ -1895,7 +2097,8 @@ 0 0 - + 0 0 0 @@ -1906,18 +2109,22 @@ Name Rumpf_Sec41_Elem1 Beschreibung Rumpf_Sec41_Element1 Fuselage1_ProfCirc - - + + 1 1 1 - + 0 0 0 - + 0 0 0 @@ -1940,7 +2147,8 @@ 0 0 - + 0 0 0 @@ -1951,18 +2159,22 @@ Name Rumpf_Sec42_Elem1 Beschreibung Rumpf_Sec42_Element1 Fuselage1_ProfCirc - - + + 1 1 1 - + 0 0 0 - + 0 0 0 @@ -1985,7 +2197,8 @@ 0 0 - + 0 0 0 @@ -1996,18 +2209,22 @@ Name Rumpf_Sec43_Elem1 Beschreibung Rumpf_Sec43_Element1 Fuselage1_ProfCirc - - + + 1 1 1 - + 0 0 0 - + 0 0 0 @@ -2030,7 +2247,8 @@ 0 0 - + 0 0 0 @@ -2041,18 +2259,22 @@ Name Rumpf_Sec44_Elem1 Beschreibung Rumpf_Sec44_Element1 Fuselage1_ProfCirc - - + + 1 1 1 - + 0 0 0 - + 0 0 0 @@ -2075,7 +2297,8 @@ 0 0 - + 0 0 0 @@ -2086,18 +2309,22 @@ Name Rumpf_Sec45_Elem1 Beschreibung Rumpf_Sec45_Element1 Fuselage1_ProfCirc - - + + 1 1 1 - + 0 0 0 - + 0 0 0 @@ -2120,7 +2347,8 @@ 0 0 - + 0 0 0 @@ -2131,18 +2359,22 @@ Name Rumpf_Sec46_Elem1 Beschreibung Rumpf_Sec46_Element1 Fuselage1_ProfSupEl1 - - + + 1 1 1 - + 0 0 0 - + 0 0 0 @@ -2165,7 +2397,8 @@ 0 0 - + 0 0 0 @@ -2176,18 +2409,22 @@ Name Rumpf_Sec47_Elem1 Beschreibung Rumpf_Sec47_Element1 Fuselage1_ProfSupEl2 - - + + 1 1 1 - + 0 0 0 - + 0 0 0 @@ -2210,7 +2447,8 @@ 0 0 - + 0 0 0 @@ -2221,18 +2459,22 @@ Name Rumpf_Sec48_Elem1 Beschreibung Rumpf_Sec48_Element1 Fuselage1_ProfSupEl3 - - + + 1 1 1 - + 0 0 0 - + 0 0 0 @@ -2255,7 +2497,8 @@ 0 0 - + 0 0 0 @@ -2266,18 +2509,22 @@ Name Rumpf_Sec49_Elem1 Beschreibung Rumpf_Sec49_Element1 Fuselage1_ProfSupEl4 - - + + 1 1 1 - + 0 0 0 - + 0 0 0 @@ -2300,7 +2547,8 @@ 0 0 - + 0 0 0 @@ -2311,18 +2559,22 @@ Name Rumpf_Sec50_Elem1 Beschreibung Rumpf_Sec50_Element1 Fuselage1_ProfSupEl5 - - + + 1 1 1 - + 0 0 0 - + 0 0 0 @@ -2345,7 +2597,8 @@ 0 0 - + 0 0 0 @@ -2356,18 +2609,22 @@ Name Rumpf_Sec51_Elem1 Beschreibung Rumpf_Sec51_Element1 Fuselage1_ProfSupEl6 - - + + 1 1 1 - + 0 0 0 - + 0 0 0 @@ -2390,7 +2647,8 @@ 0 0 - + 0 0 0 @@ -2401,18 +2659,22 @@ Name Rumpf_Sec52_Elem1 Beschreibung Rumpf_Sec52_Element1 Fuselage1_ProfSupEl7 - - + + 1 1 1 - + 0 0 0 - + 0 0 0 @@ -2435,7 +2697,8 @@ 0 0 - + 0 0 0 @@ -2446,18 +2709,22 @@ Name Rumpf_Sec53_Elem1 Beschreibung Rumpf_Sec53_Element1 Fuselage1_ProfSupEl8 - - + + 1 1 1 - + 0 0 0 - + 0 0 0 @@ -2480,7 +2747,8 @@ 0 0 - + 0 0 0 @@ -2491,18 +2759,22 @@ Name Rumpf_Sec54_Elem1 Beschreibung Rumpf_Sec54_Element1 Fuselage1_ProfSupEl9 - - + + 1 1 1 - + 0 0 0 - + 0 0 0 @@ -2525,7 +2797,8 @@ 0 0 - + 0 0 0 @@ -2536,18 +2809,22 @@ Name Rumpf_Sec55_Elem1 Beschreibung Rumpf_Sec55_Element1 Fuselage1_ProfSupEl10 - - + + 1 1 1 - + 0 0 0 - + 0 0 0 @@ -2570,7 +2847,8 @@ 0 0 - + 0 0 0 @@ -2581,18 +2859,22 @@ Name Rumpf_Sec56_Elem1 Beschreibung Rumpf_Sec56_Element1 Fuselage1_ProfCirc - - + + 1 1 1 - + 0 0 0 - + 0 0 0 @@ -2615,7 +2897,8 @@ 0 0 - + 0 0 0 @@ -2626,18 +2909,22 @@ Name Rumpf_Sec57_Elem1 Beschreibung Rumpf_Sec57_Element1 Fuselage1_ProfCirc - - + + 1 1 1 - + 0 0 0 - + 0 0 0 @@ -2660,7 +2947,8 @@ 0 0 - + 0 0 0 @@ -2671,18 +2959,22 @@ Name Rumpf_Sec58_Elem1 Beschreibung Rumpf_Sec58_Element1 Fuselage1_ProfCirc - - + + 1 1 1 - + 0 0 0 - + 0 0 0 @@ -2705,7 +2997,8 @@ 0 0 - + 0 0 0 @@ -2716,18 +3009,22 @@ Name Rumpf_Sec59_Elem1 Beschreibung Rumpf_Sec59_Element1 Fuselage1_ProfCirc - - + + 1 1 1 - + 0 0 0 - + 0 0 0 @@ -2750,7 +3047,8 @@ 0 0 - + 0 0 0 @@ -2761,18 +3059,22 @@ Name Rumpf_Sec60_Elem1 Beschreibung Rumpf_Sec60_Element1 Fuselage1_ProfCirc - - + + 1 1 1 - + 0 0 0 - + 0 0 0 @@ -2790,7 +3092,7 @@ 0 Fuselage1_Sec1 - + pos2 @@ -3639,7 +3941,8 @@ 2 0 - + 12.7456 0 -1.13628 @@ -3660,7 +3963,8 @@ 0 0 - + 0 0 0 @@ -3671,18 +3975,21 @@ Wing_Sec1_Elem1 Wing_Sec1_Element1 D150_VAMP_W_SupCritProf1 - + 1 1 1 - + 0 0 0 - + 0 0 0 @@ -3705,7 +4012,8 @@ 0 0 - + 0 0 0 @@ -3716,18 +4024,21 @@ Wing_Sec2_Elem1 Wing_Sec2_Element1 D150_VAMP_W_SupCritProf1 - + 1 1 1 - + 0 0 0 - + 0 0 0 @@ -3750,7 +4061,8 @@ 0 0 - + 0 0 0 @@ -3761,18 +4073,21 @@ Wing_Sec3_Elem1 Wing_Sec3_Element1 D150_VAMP_W_SupCritProf1 - + 1 1 1 - + 0 0 0 - + 0 0 0 @@ -3795,7 +4110,8 @@ 0 0 - + 0 0 0 @@ -3806,18 +4122,21 @@ Wing_Sec4_Elem1 Wing_Sec4_Element1 D150_VAMP_W_SupCritProf1 - + 1 1 1 - + 0 0 0 - + 0 0 0 @@ -3835,7 +4154,7 @@ 0 Wing1_Sec1 - + p2 @@ -4561,7 +4880,8 @@ 0 0 - + 31.4657 0 0.697137 @@ -4582,7 +4902,8 @@ 0 0 - + 0 0 0 @@ -4593,18 +4914,21 @@ Hoehenleitwerk_Sec1_Elem1 Hoehenleitwerk_Sec1_Element1 D150_VAMP_HL_NACA0000Prof1 - + 1 1 1 - + 0 0 0 - + 0 0 0 @@ -4627,7 +4951,8 @@ 0 0 - + 0 0 0 @@ -4638,18 +4963,21 @@ Hoehenleitwerk_Sec2_Elem1 Hoehenleitwerk_Sec2_Element1 D150_VAMP_HL_NACA0000Prof1 - + 1 1 1 - + 0 0 0 - + 0 0 0 @@ -4667,7 +4995,7 @@ 0 Wing2H_Sec1 - + w2p2 @@ -4800,7 +5128,8 @@ 0 -2.2 - + 29.838 -0.00200292 1.89101 @@ -4821,7 +5150,8 @@ 0 0 - + 0 0 0 @@ -4832,18 +5162,21 @@ Seitenleitwerk_Sec1_Elem1 Seitenleitwerk_Sec1_Element1 D150_VAMP_SL_NACA0000Prof1 - + 1 1 1 - + 0 0 0 - + 0 0 0 @@ -4866,7 +5199,8 @@ 0 0 - + 0 0 0 @@ -4877,18 +5211,21 @@ Seitenleitwerk_Sec2_Elem1 Seitenleitwerk_Sec2_Element1 D150_VAMP_SL_NACA0000Prof1 - + 1 1 1 - + 0 0 0 - + 0 0 0 @@ -4900,16 +5237,16 @@ - + 0 0 0 Wing3V_Sec1 - + - + 7.70151 40.3982 0 @@ -5089,99 +5426,132 @@ Circle Profile build up from set of Points on Circle where max Dimensions are 1..-1 - 0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0 - 0;0.0774924;0.154519;0.230616;0.305326;0.3782;0.448799;0.516699;0.581492;0.642788;0.700217;0.753436;0.802123;0.845986;0.884762;0.918216;0.946148;0.96839;0.984808;0.995303;0.999812;0.998308;0.9908;0.977334;0.95799;0.932884;0.902167;0.866025;0.824675;0.778365;0.727374;0.672008;0.612601;0.549509;0.483113;0.413811;0.34202;0.268173;0.192712;0.116093;0.0387754;-0.0387754;-0.116093;-0.192712;-0.268173;-0.34202;-0.413811;-0.483113;-0.549509;-0.612601;-0.672008;-0.727374;-0.778365;-0.824675;-0.866025;-0.902167;-0.932884;-0.95799;-0.977334;-0.9908;-0.998308;-0.999812;-0.995303;-0.984808;-0.96839;-0.946148;-0.918216;-0.884762;-0.845986;-0.802123;-0.753436;-0.700217;-0.642788;-0.581492;-0.516699;-0.448799;-0.3782;-0.305326;-0.230616;-0.154519;-0.0774924;0 - 1;0.996993;0.98799;0.973045;0.952248;0.925724;0.893633;0.856167;0.813552;0.766044;0.71393;0.657521;0.597159;0.533204;0.466044;0.39608;0.323734;0.249441;0.173648;0.0968109;0.0193913;-0.0581448;-0.135331;-0.211704;-0.286803;-0.360178;-0.431386;-0.5;-0.565607;-0.627812;-0.686242;-0.740544;-0.790393;-0.835488;-0.875558;-0.910363;-0.939693;-0.963371;-0.981255;-0.993238;-0.999248;-0.999248;-0.993238;-0.981255;-0.963371;-0.939693;-0.910363;-0.875558;-0.835488;-0.790393;-0.740544;-0.686242;-0.627812;-0.565607;-0.5;-0.431386;-0.360178;-0.286803;-0.211704;-0.135331;-0.0581448;0.0193913;0.0968109;0.173648;0.249441;0.323734;0.39608;0.466044;0.533204;0.597159;0.657521;0.71393;0.766044;0.813552;0.856167;0.893633;0.925724;0.952248;0.973045;0.98799;0.996993;1 + + 0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0 + + 0;0.0774924;0.154519;0.230616;0.305326;0.3782;0.448799;0.516699;0.581492;0.642788;0.700217;0.753436;0.802123;0.845986;0.884762;0.918216;0.946148;0.96839;0.984808;0.995303;0.999812;0.998308;0.9908;0.977334;0.95799;0.932884;0.902167;0.866025;0.824675;0.778365;0.727374;0.672008;0.612601;0.549509;0.483113;0.413811;0.34202;0.268173;0.192712;0.116093;0.0387754;-0.0387754;-0.116093;-0.192712;-0.268173;-0.34202;-0.413811;-0.483113;-0.549509;-0.612601;-0.672008;-0.727374;-0.778365;-0.824675;-0.866025;-0.902167;-0.932884;-0.95799;-0.977334;-0.9908;-0.998308;-0.999812;-0.995303;-0.984808;-0.96839;-0.946148;-0.918216;-0.884762;-0.845986;-0.802123;-0.753436;-0.700217;-0.642788;-0.581492;-0.516699;-0.448799;-0.3782;-0.305326;-0.230616;-0.154519;-0.0774924;0 + + 1;0.996993;0.98799;0.973045;0.952248;0.925724;0.893633;0.856167;0.813552;0.766044;0.71393;0.657521;0.597159;0.533204;0.466044;0.39608;0.323734;0.249441;0.173648;0.0968109;0.0193913;-0.0581448;-0.135331;-0.211704;-0.286803;-0.360178;-0.431386;-0.5;-0.565607;-0.627812;-0.686242;-0.740544;-0.790393;-0.835488;-0.875558;-0.910363;-0.939693;-0.963371;-0.981255;-0.993238;-0.999248;-0.999248;-0.993238;-0.981255;-0.963371;-0.939693;-0.910363;-0.875558;-0.835488;-0.790393;-0.740544;-0.686242;-0.627812;-0.565607;-0.5;-0.431386;-0.360178;-0.286803;-0.211704;-0.135331;-0.0581448;0.0193913;0.0968109;0.173648;0.249441;0.323734;0.39608;0.466044;0.533204;0.597159;0.657521;0.71393;0.766044;0.813552;0.856167;0.893633;0.925724;0.952248;0.973045;0.98799;0.996993;1 SuperEllipse Normalized SuperEllipse with Ratio - 0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0 - 0;0.000976562;0.078125;0.15625;0.234375;0.308594;0.382812;0.457031;0.525391;0.591797;0.654297;0.712891;0.767578;0.816406;0.861328;0.900391;0.933594;0.958984;0.979492;0.992676;0.999268;0.999999;0.996826;0.987793;0.972656;0.951172;0.923828;0.890625;0.853516;0.808594;0.759766;0.707031;0.648438;0.587891;0.523438;0.453125;0.382812;0.308594;0.234375;0.15625;0.078125;-0.078125;-0.15625;-0.234375;-0.308594;-0.382812;-0.453125;-0.523438;-0.587891;-0.648438;-0.707031;-0.759766;-0.808594;-0.853516;-0.890625;-0.923828;-0.951172;-0.972656;-0.987793;-0.996826;-0.999999;-0.999268;-0.992676;-0.979492;-0.958984;-0.933594;-0.900391;-0.861328;-0.816406;-0.767578;-0.712891;-0.654297;-0.591797;-0.525391;-0.457031;-0.382812;-0.308594;-0.234375;-0.15625;-0.078125;-0.000976562;-0 - 1;1;0.99707;0.988226;0.9733;0.953215;0.92698;0.894028;0.857037;0.814117;0.766332;0.713645;0.655823;0.594975;0.528421;0.458476;0.384905;0.313131;0.234549;0.157216;0.0780917;-0.00138107;-0.0796089;-0.155772;-0.232249;-0.308662;-0.382808;-0.454739;-0.521067;-0.588367;-0.650197;-0.707182;-0.761268;-0.80894;-0.852064;-0.891447;-0.923826;-0.951194;-0.972146;-0.987718;-0.996944;-0.996944;-0.987718;-0.972146;-0.951194;-0.923826;-0.891447;-0.852064;-0.80894;-0.761268;-0.707182;-0.650197;-0.588367;-0.521067;-0.454739;-0.382808;-0.308662;-0.232249;-0.155772;-0.0796089;-0.00138107;0.0780917;0.157216;0.234549;0.313131;0.384905;0.458476;0.528421;0.594975;0.655823;0.713645;0.766332;0.814117;0.857037;0.894028;0.92698;0.953215;0.9733;0.988226;0.99707;1;1 + + 0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0 + + 0;0.000976562;0.078125;0.15625;0.234375;0.308594;0.382812;0.457031;0.525391;0.591797;0.654297;0.712891;0.767578;0.816406;0.861328;0.900391;0.933594;0.958984;0.979492;0.992676;0.999268;0.999999;0.996826;0.987793;0.972656;0.951172;0.923828;0.890625;0.853516;0.808594;0.759766;0.707031;0.648438;0.587891;0.523438;0.453125;0.382812;0.308594;0.234375;0.15625;0.078125;-0.078125;-0.15625;-0.234375;-0.308594;-0.382812;-0.453125;-0.523438;-0.587891;-0.648438;-0.707031;-0.759766;-0.808594;-0.853516;-0.890625;-0.923828;-0.951172;-0.972656;-0.987793;-0.996826;-0.999999;-0.999268;-0.992676;-0.979492;-0.958984;-0.933594;-0.900391;-0.861328;-0.816406;-0.767578;-0.712891;-0.654297;-0.591797;-0.525391;-0.457031;-0.382812;-0.308594;-0.234375;-0.15625;-0.078125;-0.000976562;-0 + + 1;1;0.99707;0.988226;0.9733;0.953215;0.92698;0.894028;0.857037;0.814117;0.766332;0.713645;0.655823;0.594975;0.528421;0.458476;0.384905;0.313131;0.234549;0.157216;0.0780917;-0.00138107;-0.0796089;-0.155772;-0.232249;-0.308662;-0.382808;-0.454739;-0.521067;-0.588367;-0.650197;-0.707182;-0.761268;-0.80894;-0.852064;-0.891447;-0.923826;-0.951194;-0.972146;-0.987718;-0.996944;-0.996944;-0.987718;-0.972146;-0.951194;-0.923826;-0.891447;-0.852064;-0.80894;-0.761268;-0.707182;-0.650197;-0.588367;-0.521067;-0.454739;-0.382808;-0.308662;-0.232249;-0.155772;-0.0796089;-0.00138107;0.0780917;0.157216;0.234549;0.313131;0.384905;0.458476;0.528421;0.594975;0.655823;0.713645;0.766332;0.814117;0.857037;0.894028;0.92698;0.953215;0.9733;0.988226;0.99707;1;1 SuperEllipse Normalized SuperEllipse with Ratio - 0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0 - 0;0.000976562;0.078125;0.15625;0.234375;0.314453;0.394531;0.472656;0.550781;0.625;0.699219;0.771484;0.837891;0.896484;0.945312;0.979492;0.998047;1;1;1;1;0.999999;0.996826;0.987793;0.972656;0.951172;0.923828;0.890625;0.853516;0.808594;0.759766;0.707031;0.648438;0.587891;0.523438;0.453125;0.382812;0.308594;0.234375;0.15625;0.078125;-0.078125;-0.15625;-0.234375;-0.308594;-0.382812;-0.453125;-0.523438;-0.587891;-0.648438;-0.707031;-0.759766;-0.808594;-0.853516;-0.890625;-0.923828;-0.951172;-0.972656;-0.987793;-0.996826;-0.999999;-1;-1;-1;-1;-0.998047;-0.979492;-0.945312;-0.896484;-0.837891;-0.771484;-0.699219;-0.625;-0.550781;-0.472656;-0.394531;-0.314453;-0.234375;-0.15625;-0.078125;-0.000976562;-0 - 1;1;0.998083;0.992295;0.982527;0.968178;0.949114;0.925505;0.896274;0.862384;0.821159;0.771815;0.7151;0.650636;0.577297;0.499082;0.411878;0.324219;0.238281;0.160156;0.078125;-0.00138107;-0.0796089;-0.155772;-0.232249;-0.308662;-0.382808;-0.454739;-0.521067;-0.588367;-0.650197;-0.707182;-0.761268;-0.80894;-0.852064;-0.891447;-0.923826;-0.951194;-0.972146;-0.987718;-0.996944;-0.996944;-0.987718;-0.972146;-0.951194;-0.923826;-0.891447;-0.852064;-0.80894;-0.761268;-0.707182;-0.650197;-0.588367;-0.521067;-0.454739;-0.382808;-0.308662;-0.232249;-0.155772;-0.0796089;-0.00138107;0.078125;0.160156;0.238281;0.324219;0.411878;0.499082;0.577297;0.650636;0.7151;0.771815;0.821159;0.862384;0.896274;0.925505;0.949114;0.968178;0.982527;0.992295;0.998083;1;1 + + 0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0 + + 0;0.000976562;0.078125;0.15625;0.234375;0.314453;0.394531;0.472656;0.550781;0.625;0.699219;0.771484;0.837891;0.896484;0.945312;0.979492;0.998047;1;1;1;1;0.999999;0.996826;0.987793;0.972656;0.951172;0.923828;0.890625;0.853516;0.808594;0.759766;0.707031;0.648438;0.587891;0.523438;0.453125;0.382812;0.308594;0.234375;0.15625;0.078125;-0.078125;-0.15625;-0.234375;-0.308594;-0.382812;-0.453125;-0.523438;-0.587891;-0.648438;-0.707031;-0.759766;-0.808594;-0.853516;-0.890625;-0.923828;-0.951172;-0.972656;-0.987793;-0.996826;-0.999999;-1;-1;-1;-1;-0.998047;-0.979492;-0.945312;-0.896484;-0.837891;-0.771484;-0.699219;-0.625;-0.550781;-0.472656;-0.394531;-0.314453;-0.234375;-0.15625;-0.078125;-0.000976562;-0 + + 1;1;0.998083;0.992295;0.982527;0.968178;0.949114;0.925505;0.896274;0.862384;0.821159;0.771815;0.7151;0.650636;0.577297;0.499082;0.411878;0.324219;0.238281;0.160156;0.078125;-0.00138107;-0.0796089;-0.155772;-0.232249;-0.308662;-0.382808;-0.454739;-0.521067;-0.588367;-0.650197;-0.707182;-0.761268;-0.80894;-0.852064;-0.891447;-0.923826;-0.951194;-0.972146;-0.987718;-0.996944;-0.996944;-0.987718;-0.972146;-0.951194;-0.923826;-0.891447;-0.852064;-0.80894;-0.761268;-0.707182;-0.650197;-0.588367;-0.521067;-0.454739;-0.382808;-0.308662;-0.232249;-0.155772;-0.0796089;-0.00138107;0.078125;0.160156;0.238281;0.324219;0.411878;0.499082;0.577297;0.650636;0.7151;0.771815;0.821159;0.862384;0.896274;0.925505;0.949114;0.968178;0.982527;0.992295;0.998083;1;1 SuperEllipse Normalized SuperEllipse with Ratio - 0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0 - 0;0.000976562;0.078125;0.15625;0.238281;0.316406;0.398438;0.480469;0.5625;0.648438;0.730469;0.808594;0.882812;0.945312;0.989258;1;1;1;1;1;1;1;1;0.996582;0.98584;0.967773;0.942383;0.910156;0.871094;0.826172;0.775391;0.71875;0.660156;0.595703;0.527344;0.457031;0.384766;0.308594;0.234375;0.15625;0.078125;-0.078125;-0.15625;-0.234375;-0.308594;-0.384766;-0.457031;-0.527344;-0.595703;-0.660156;-0.71875;-0.775391;-0.826172;-0.871094;-0.910156;-0.942383;-0.967773;-0.98584;-0.996582;-1;-1;-1;-1;-1;-1;-1;-1;-0.989258;-0.945312;-0.882812;-0.808594;-0.730469;-0.648438;-0.5625;-0.480469;-0.398438;-0.316406;-0.238281;-0.15625;-0.078125;-0.000976562;-0 - 1;1;0.998589;0.99433;0.986702;0.976281;0.961772;0.94322;0.920038;0.889785;0.853626;0.809962;0.755188;0.688911;0.605818;0.507812;0.414062;0.324219;0.238281;0.160156;0.078125;0;-0.078125;-0.158587;-0.236622;-0.313787;-0.38965;-0.462776;-0.533262;-0.599576;-0.662003;-0.720506;-0.77174;-0.819503;-0.862104;-0.898606;-0.92939;-0.955236;-0.974453;-0.988735;-0.997197;-0.997197;-0.988735;-0.974453;-0.955236;-0.92939;-0.898606;-0.862104;-0.819503;-0.77174;-0.720506;-0.662003;-0.599576;-0.533262;-0.462776;-0.38965;-0.313787;-0.236622;-0.158587;-0.078125;0;0.078125;0.160156;0.238281;0.324219;0.414062;0.507812;0.605818;0.688911;0.755188;0.809962;0.853626;0.889785;0.920038;0.94322;0.961772;0.976281;0.986702;0.99433;0.998589;1;1 + + 0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0 + + 0;0.000976562;0.078125;0.15625;0.238281;0.316406;0.398438;0.480469;0.5625;0.648438;0.730469;0.808594;0.882812;0.945312;0.989258;1;1;1;1;1;1;1;1;0.996582;0.98584;0.967773;0.942383;0.910156;0.871094;0.826172;0.775391;0.71875;0.660156;0.595703;0.527344;0.457031;0.384766;0.308594;0.234375;0.15625;0.078125;-0.078125;-0.15625;-0.234375;-0.308594;-0.384766;-0.457031;-0.527344;-0.595703;-0.660156;-0.71875;-0.775391;-0.826172;-0.871094;-0.910156;-0.942383;-0.967773;-0.98584;-0.996582;-1;-1;-1;-1;-1;-1;-1;-1;-0.989258;-0.945312;-0.882812;-0.808594;-0.730469;-0.648438;-0.5625;-0.480469;-0.398438;-0.316406;-0.238281;-0.15625;-0.078125;-0.000976562;-0 + + 1;1;0.998589;0.99433;0.986702;0.976281;0.961772;0.94322;0.920038;0.889785;0.853626;0.809962;0.755188;0.688911;0.605818;0.507812;0.414062;0.324219;0.238281;0.160156;0.078125;0;-0.078125;-0.158587;-0.236622;-0.313787;-0.38965;-0.462776;-0.533262;-0.599576;-0.662003;-0.720506;-0.77174;-0.819503;-0.862104;-0.898606;-0.92939;-0.955236;-0.974453;-0.988735;-0.997197;-0.997197;-0.988735;-0.974453;-0.955236;-0.92939;-0.898606;-0.862104;-0.819503;-0.77174;-0.720506;-0.662003;-0.599576;-0.533262;-0.462776;-0.38965;-0.313787;-0.236622;-0.158587;-0.078125;0;0.078125;0.160156;0.238281;0.324219;0.414062;0.507812;0.605818;0.688911;0.755188;0.809962;0.853626;0.889785;0.920038;0.94322;0.961772;0.976281;0.986702;0.99433;0.998589;1;1 SuperEllipse Normalized SuperEllipse with Ratio - 0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0 - 0;0.000976562;0.078125;0.15625;0.238281;0.316406;0.398438;0.484375;0.566406;0.652344;0.738281;0.820312;0.896484;0.960938;0.99707;1;1;1;1;1;1;1;1;1;0.996094;0.98291;0.960938;0.929688;0.890625;0.84375;0.791016;0.734375;0.669922;0.603516;0.535156;0.460938;0.386719;0.3125;0.234375;0.15625;0.078125;-0.078125;-0.15625;-0.234375;-0.3125;-0.386719;-0.460938;-0.535156;-0.603516;-0.669922;-0.734375;-0.791016;-0.84375;-0.890625;-0.929688;-0.960938;-0.98291;-0.996094;-1;-1;-1;-1;-1;-1;-1;-1;-1;-0.99707;-0.960938;-0.896484;-0.820312;-0.738281;-0.652344;-0.566406;-0.484375;-0.398438;-0.316406;-0.238281;-0.15625;-0.078125;-0.000976562;-0 - 1;1;0.998716;0.994838;0.987895;0.978409;0.965201;0.947409;0.926087;0.898265;0.863202;0.820093;0.765947;0.696053;0.611886;0.507812;0.414062;0.324219;0.238281;0.160156;0.078125;0;-0.078125;-0.160156;-0.239316;-0.319234;-0.396562;-0.472976;-0.545056;-0.613471;-0.676098;-0.731957;-0.785095;-0.830918;-0.870468;-0.906078;-0.935085;-0.958213;-0.97676;-0.989752;-0.99745;-0.99745;-0.989752;-0.97676;-0.958213;-0.935085;-0.906078;-0.870468;-0.830918;-0.785095;-0.731957;-0.676098;-0.613471;-0.545056;-0.472976;-0.396562;-0.319234;-0.239316;-0.160156;-0.078125;0;0.078125;0.160156;0.238281;0.324219;0.414062;0.507812;0.611886;0.696053;0.765947;0.820093;0.863202;0.898265;0.926087;0.947409;0.965201;0.978409;0.987895;0.994838;0.998716;1;1 + + 0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0 + + 0;0.000976562;0.078125;0.15625;0.238281;0.316406;0.398438;0.484375;0.566406;0.652344;0.738281;0.820312;0.896484;0.960938;0.99707;1;1;1;1;1;1;1;1;1;0.996094;0.98291;0.960938;0.929688;0.890625;0.84375;0.791016;0.734375;0.669922;0.603516;0.535156;0.460938;0.386719;0.3125;0.234375;0.15625;0.078125;-0.078125;-0.15625;-0.234375;-0.3125;-0.386719;-0.460938;-0.535156;-0.603516;-0.669922;-0.734375;-0.791016;-0.84375;-0.890625;-0.929688;-0.960938;-0.98291;-0.996094;-1;-1;-1;-1;-1;-1;-1;-1;-1;-0.99707;-0.960938;-0.896484;-0.820312;-0.738281;-0.652344;-0.566406;-0.484375;-0.398438;-0.316406;-0.238281;-0.15625;-0.078125;-0.000976562;-0 + + 1;1;0.998716;0.994838;0.987895;0.978409;0.965201;0.947409;0.926087;0.898265;0.863202;0.820093;0.765947;0.696053;0.611886;0.507812;0.414062;0.324219;0.238281;0.160156;0.078125;0;-0.078125;-0.160156;-0.239316;-0.319234;-0.396562;-0.472976;-0.545056;-0.613471;-0.676098;-0.731957;-0.785095;-0.830918;-0.870468;-0.906078;-0.935085;-0.958213;-0.97676;-0.989752;-0.99745;-0.99745;-0.989752;-0.97676;-0.958213;-0.935085;-0.906078;-0.870468;-0.830918;-0.785095;-0.731957;-0.676098;-0.613471;-0.545056;-0.472976;-0.396562;-0.319234;-0.239316;-0.160156;-0.078125;0;0.078125;0.160156;0.238281;0.324219;0.414062;0.507812;0.611886;0.696053;0.765947;0.820093;0.863202;0.898265;0.926087;0.947409;0.965201;0.978409;0.987895;0.994838;0.998716;1;1 SuperEllipse Normalized SuperEllipse with Ratio - 0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0 - 0;0.000976562;0.078125;0.15625;0.238281;0.316406;0.398438;0.484375;0.566406;0.652344;0.738281;0.820312;0.896484;0.960938;0.99707;1;1;1;1;1;1;1;1;1;0.999146;0.989258;0.969727;0.939453;0.900391;0.853516;0.800781;0.740234;0.675781;0.609375;0.537109;0.464844;0.388672;0.3125;0.234375;0.15625;0.078125;-0.078125;-0.15625;-0.234375;-0.3125;-0.388672;-0.464844;-0.537109;-0.609375;-0.675781;-0.740234;-0.800781;-0.853516;-0.900391;-0.939453;-0.969727;-0.989258;-0.999146;-1;-1;-1;-1;-1;-1;-1;-1;-1;-0.99707;-0.960938;-0.896484;-0.820312;-0.738281;-0.652344;-0.566406;-0.484375;-0.398438;-0.316406;-0.238281;-0.15625;-0.078125;-0.000976562;-0 - 1;1;0.998716;0.994838;0.987895;0.978409;0.965201;0.947409;0.926087;0.898265;0.863202;0.820093;0.765947;0.696053;0.611886;0.507812;0.414062;0.324219;0.238281;0.160156;0.078125;0;-0.078125;-0.160156;-0.239823;-0.322964;-0.400683;-0.478776;-0.552049;-0.62023;-0.681993;-0.740189;-0.791535;-0.835766;-0.875913;-0.909122;-0.937655;-0.960287;-0.977913;-0.990261;-0.997576;-0.997576;-0.990261;-0.977913;-0.960287;-0.937655;-0.909122;-0.875913;-0.835766;-0.791535;-0.740189;-0.681993;-0.62023;-0.552049;-0.478776;-0.400683;-0.322964;-0.239823;-0.160156;-0.078125;0;0.078125;0.160156;0.238281;0.324219;0.414062;0.507812;0.611886;0.696053;0.765947;0.820093;0.863202;0.898265;0.926087;0.947409;0.965201;0.978409;0.987895;0.994838;0.998716;1;1 + + 0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0 + + 0;0.000976562;0.078125;0.15625;0.238281;0.316406;0.398438;0.484375;0.566406;0.652344;0.738281;0.820312;0.896484;0.960938;0.99707;1;1;1;1;1;1;1;1;1;0.999146;0.989258;0.969727;0.939453;0.900391;0.853516;0.800781;0.740234;0.675781;0.609375;0.537109;0.464844;0.388672;0.3125;0.234375;0.15625;0.078125;-0.078125;-0.15625;-0.234375;-0.3125;-0.388672;-0.464844;-0.537109;-0.609375;-0.675781;-0.740234;-0.800781;-0.853516;-0.900391;-0.939453;-0.969727;-0.989258;-0.999146;-1;-1;-1;-1;-1;-1;-1;-1;-1;-0.99707;-0.960938;-0.896484;-0.820312;-0.738281;-0.652344;-0.566406;-0.484375;-0.398438;-0.316406;-0.238281;-0.15625;-0.078125;-0.000976562;-0 + + 1;1;0.998716;0.994838;0.987895;0.978409;0.965201;0.947409;0.926087;0.898265;0.863202;0.820093;0.765947;0.696053;0.611886;0.507812;0.414062;0.324219;0.238281;0.160156;0.078125;0;-0.078125;-0.160156;-0.239823;-0.322964;-0.400683;-0.478776;-0.552049;-0.62023;-0.681993;-0.740189;-0.791535;-0.835766;-0.875913;-0.909122;-0.937655;-0.960287;-0.977913;-0.990261;-0.997576;-0.997576;-0.990261;-0.977913;-0.960287;-0.937655;-0.909122;-0.875913;-0.835766;-0.791535;-0.740189;-0.681993;-0.62023;-0.552049;-0.478776;-0.400683;-0.322964;-0.239823;-0.160156;-0.078125;0;0.078125;0.160156;0.238281;0.324219;0.414062;0.507812;0.611886;0.696053;0.765947;0.820093;0.863202;0.898265;0.926087;0.947409;0.965201;0.978409;0.987895;0.994838;0.998716;1;1 SuperEllipse Normalized SuperEllipse with Ratio - 0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0 - 0;0.000976562;0.078125;0.15625;0.238281;0.316406;0.398438;0.480469;0.566406;0.648438;0.734375;0.816406;0.890625;0.953125;0.993164;1;1;1;1;1;1;1;1;1;0.999146;0.989258;0.969727;0.939453;0.900391;0.853516;0.800781;0.740234;0.675781;0.609375;0.537109;0.464844;0.388672;0.3125;0.234375;0.15625;0.078125;-0.078125;-0.15625;-0.234375;-0.3125;-0.388672;-0.464844;-0.537109;-0.609375;-0.675781;-0.740234;-0.800781;-0.853516;-0.900391;-0.939453;-0.969727;-0.989258;-0.999146;-1;-1;-1;-1;-1;-1;-1;-1;-1;-0.993164;-0.953125;-0.890625;-0.816406;-0.734375;-0.648438;-0.566406;-0.480469;-0.398438;-0.316406;-0.238281;-0.15625;-0.078125;-0.000976562;-0 - 1;1;0.998652;0.994584;0.987299;0.977345;0.963486;0.945767;0.922446;0.894727;0.858337;0.813683;0.759559;0.692461;0.610507;0.507812;0.414062;0.324219;0.238281;0.160156;0.078125;0;-0.078125;-0.160156;-0.239823;-0.322964;-0.400683;-0.478776;-0.552049;-0.62023;-0.681993;-0.740189;-0.791535;-0.835766;-0.875913;-0.909122;-0.937655;-0.960287;-0.977913;-0.990261;-0.997576;-0.997576;-0.990261;-0.977913;-0.960287;-0.937655;-0.909122;-0.875913;-0.835766;-0.791535;-0.740189;-0.681993;-0.62023;-0.552049;-0.478776;-0.400683;-0.322964;-0.239823;-0.160156;-0.078125;0;0.078125;0.160156;0.238281;0.324219;0.414062;0.507812;0.610507;0.692461;0.759559;0.813683;0.858337;0.894727;0.922446;0.945767;0.963486;0.977345;0.987299;0.994584;0.998652;1;1 + + 0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0 + + 0;0.000976562;0.078125;0.15625;0.238281;0.316406;0.398438;0.480469;0.566406;0.648438;0.734375;0.816406;0.890625;0.953125;0.993164;1;1;1;1;1;1;1;1;1;0.999146;0.989258;0.969727;0.939453;0.900391;0.853516;0.800781;0.740234;0.675781;0.609375;0.537109;0.464844;0.388672;0.3125;0.234375;0.15625;0.078125;-0.078125;-0.15625;-0.234375;-0.3125;-0.388672;-0.464844;-0.537109;-0.609375;-0.675781;-0.740234;-0.800781;-0.853516;-0.900391;-0.939453;-0.969727;-0.989258;-0.999146;-1;-1;-1;-1;-1;-1;-1;-1;-1;-0.993164;-0.953125;-0.890625;-0.816406;-0.734375;-0.648438;-0.566406;-0.480469;-0.398438;-0.316406;-0.238281;-0.15625;-0.078125;-0.000976562;-0 + + 1;1;0.998652;0.994584;0.987299;0.977345;0.963486;0.945767;0.922446;0.894727;0.858337;0.813683;0.759559;0.692461;0.610507;0.507812;0.414062;0.324219;0.238281;0.160156;0.078125;0;-0.078125;-0.160156;-0.239823;-0.322964;-0.400683;-0.478776;-0.552049;-0.62023;-0.681993;-0.740189;-0.791535;-0.835766;-0.875913;-0.909122;-0.937655;-0.960287;-0.977913;-0.990261;-0.997576;-0.997576;-0.990261;-0.977913;-0.960287;-0.937655;-0.909122;-0.875913;-0.835766;-0.791535;-0.740189;-0.681993;-0.62023;-0.552049;-0.478776;-0.400683;-0.322964;-0.239823;-0.160156;-0.078125;0;0.078125;0.160156;0.238281;0.324219;0.414062;0.507812;0.610507;0.692461;0.759559;0.813683;0.858337;0.894727;0.922446;0.945767;0.963486;0.977345;0.987299;0.994584;0.998652;1;1 SuperEllipse Normalized SuperEllipse with Ratio - 0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0 - 0;0.000976562;0.078125;0.15625;0.238281;0.316406;0.398438;0.476562;0.558594;0.640625;0.722656;0.800781;0.871094;0.933594;0.978516;0.999756;1;1;1;1;1;1;1;1;0.999146;0.989258;0.969727;0.939453;0.900391;0.853516;0.800781;0.740234;0.675781;0.609375;0.537109;0.464844;0.388672;0.3125;0.234375;0.15625;0.078125;-0.078125;-0.15625;-0.234375;-0.3125;-0.388672;-0.464844;-0.537109;-0.609375;-0.675781;-0.740234;-0.800781;-0.853516;-0.900391;-0.939453;-0.969727;-0.989258;-0.999146;-1;-1;-1;-1;-1;-1;-1;-1;-0.999756;-0.978516;-0.933594;-0.871094;-0.800781;-0.722656;-0.640625;-0.558594;-0.476562;-0.398438;-0.316406;-0.238281;-0.15625;-0.078125;-0.000976562;-0 - 1;1;0.998462;0.993821;0.985509;0.974154;0.958343;0.939198;0.914195;0.883212;0.844653;0.798243;0.743991;0.67719;0.600641;0.508036;0.414062;0.324219;0.238281;0.160156;0.078125;0;-0.078125;-0.160156;-0.239823;-0.322964;-0.400683;-0.478776;-0.552049;-0.62023;-0.681993;-0.740189;-0.791535;-0.835766;-0.875913;-0.909122;-0.937655;-0.960287;-0.977913;-0.990261;-0.997576;-0.997576;-0.990261;-0.977913;-0.960287;-0.937655;-0.909122;-0.875913;-0.835766;-0.791535;-0.740189;-0.681993;-0.62023;-0.552049;-0.478776;-0.400683;-0.322964;-0.239823;-0.160156;-0.078125;0;0.078125;0.160156;0.238281;0.324219;0.414062;0.508036;0.600641;0.67719;0.743991;0.798243;0.844653;0.883212;0.914195;0.939198;0.958343;0.974154;0.985509;0.993821;0.998462;1;1 + + 0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0 + + 0;0.000976562;0.078125;0.15625;0.238281;0.316406;0.398438;0.476562;0.558594;0.640625;0.722656;0.800781;0.871094;0.933594;0.978516;0.999756;1;1;1;1;1;1;1;1;0.999146;0.989258;0.969727;0.939453;0.900391;0.853516;0.800781;0.740234;0.675781;0.609375;0.537109;0.464844;0.388672;0.3125;0.234375;0.15625;0.078125;-0.078125;-0.15625;-0.234375;-0.3125;-0.388672;-0.464844;-0.537109;-0.609375;-0.675781;-0.740234;-0.800781;-0.853516;-0.900391;-0.939453;-0.969727;-0.989258;-0.999146;-1;-1;-1;-1;-1;-1;-1;-1;-0.999756;-0.978516;-0.933594;-0.871094;-0.800781;-0.722656;-0.640625;-0.558594;-0.476562;-0.398438;-0.316406;-0.238281;-0.15625;-0.078125;-0.000976562;-0 + + 1;1;0.998462;0.993821;0.985509;0.974154;0.958343;0.939198;0.914195;0.883212;0.844653;0.798243;0.743991;0.67719;0.600641;0.508036;0.414062;0.324219;0.238281;0.160156;0.078125;0;-0.078125;-0.160156;-0.239823;-0.322964;-0.400683;-0.478776;-0.552049;-0.62023;-0.681993;-0.740189;-0.791535;-0.835766;-0.875913;-0.909122;-0.937655;-0.960287;-0.977913;-0.990261;-0.997576;-0.997576;-0.990261;-0.977913;-0.960287;-0.937655;-0.909122;-0.875913;-0.835766;-0.791535;-0.740189;-0.681993;-0.62023;-0.552049;-0.478776;-0.400683;-0.322964;-0.239823;-0.160156;-0.078125;0;0.078125;0.160156;0.238281;0.324219;0.414062;0.508036;0.600641;0.67719;0.743991;0.798243;0.844653;0.883212;0.914195;0.939198;0.958343;0.974154;0.985509;0.993821;0.998462;1;1 SuperEllipse Normalized SuperEllipse with Ratio - 0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0 - 0;0.000976562;0.078125;0.15625;0.234375;0.316406;0.394531;0.472656;0.552734;0.630859;0.707031;0.78125;0.847656;0.908203;0.956055;0.988281;0.999996;1;1;1;1;1;1;1;0.999146;0.989258;0.969727;0.939453;0.900391;0.853516;0.800781;0.740234;0.675781;0.609375;0.537109;0.464844;0.388672;0.3125;0.234375;0.15625;0.078125;-0.078125;-0.15625;-0.234375;-0.3125;-0.388672;-0.464844;-0.537109;-0.609375;-0.675781;-0.740234;-0.800781;-0.853516;-0.900391;-0.939453;-0.969727;-0.989258;-0.999146;-1;-1;-1;-1;-1;-1;-1;-0.999996;-0.988281;-0.956055;-0.908203;-0.847656;-0.78125;-0.707031;-0.630859;-0.552734;-0.472656;-0.394531;-0.316406;-0.234375;-0.15625;-0.078125;-0.000976562;-0 - 1;1;0.998209;0.992804;0.98368;0.969899;0.952473;0.930423;0.902364;0.868698;0.828438;0.779829;0.724947;0.659317;0.585879;0.503534;0.415718;0.324219;0.238281;0.160156;0.078125;0;-0.078125;-0.160156;-0.239823;-0.322964;-0.400683;-0.478776;-0.552049;-0.62023;-0.681993;-0.740189;-0.791535;-0.835766;-0.875913;-0.909122;-0.937655;-0.960287;-0.977913;-0.990261;-0.997576;-0.997576;-0.990261;-0.977913;-0.960287;-0.937655;-0.909122;-0.875913;-0.835766;-0.791535;-0.740189;-0.681993;-0.62023;-0.552049;-0.478776;-0.400683;-0.322964;-0.239823;-0.160156;-0.078125;0;0.078125;0.160156;0.238281;0.324219;0.415718;0.503534;0.585879;0.659317;0.724947;0.779829;0.828438;0.868698;0.902364;0.930423;0.952473;0.969899;0.98368;0.992804;0.998209;1;1 + + 0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0 + + 0;0.000976562;0.078125;0.15625;0.234375;0.316406;0.394531;0.472656;0.552734;0.630859;0.707031;0.78125;0.847656;0.908203;0.956055;0.988281;0.999996;1;1;1;1;1;1;1;0.999146;0.989258;0.969727;0.939453;0.900391;0.853516;0.800781;0.740234;0.675781;0.609375;0.537109;0.464844;0.388672;0.3125;0.234375;0.15625;0.078125;-0.078125;-0.15625;-0.234375;-0.3125;-0.388672;-0.464844;-0.537109;-0.609375;-0.675781;-0.740234;-0.800781;-0.853516;-0.900391;-0.939453;-0.969727;-0.989258;-0.999146;-1;-1;-1;-1;-1;-1;-1;-0.999996;-0.988281;-0.956055;-0.908203;-0.847656;-0.78125;-0.707031;-0.630859;-0.552734;-0.472656;-0.394531;-0.316406;-0.234375;-0.15625;-0.078125;-0.000976562;-0 + + 1;1;0.998209;0.992804;0.98368;0.969899;0.952473;0.930423;0.902364;0.868698;0.828438;0.779829;0.724947;0.659317;0.585879;0.503534;0.415718;0.324219;0.238281;0.160156;0.078125;0;-0.078125;-0.160156;-0.239823;-0.322964;-0.400683;-0.478776;-0.552049;-0.62023;-0.681993;-0.740189;-0.791535;-0.835766;-0.875913;-0.909122;-0.937655;-0.960287;-0.977913;-0.990261;-0.997576;-0.997576;-0.990261;-0.977913;-0.960287;-0.937655;-0.909122;-0.875913;-0.835766;-0.791535;-0.740189;-0.681993;-0.62023;-0.552049;-0.478776;-0.400683;-0.322964;-0.239823;-0.160156;-0.078125;0;0.078125;0.160156;0.238281;0.324219;0.415718;0.503534;0.585879;0.659317;0.724947;0.779829;0.828438;0.868698;0.902364;0.930423;0.952473;0.969899;0.98368;0.992804;0.998209;1;1 SuperEllipse Normalized SuperEllipse with Ratio - 0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0 - 0;0.000976562;0.078125;0.15625;0.234375;0.3125;0.388672;0.464844;0.537109;0.609375;0.675781;0.740234;0.800781;0.853516;0.900391;0.939453;0.969727;0.989258;0.999146;1;1;1;1;1;0.996094;0.98291;0.960938;0.929688;0.890625;0.84375;0.791016;0.734375;0.669922;0.603516;0.535156;0.460938;0.386719;0.3125;0.234375;0.15625;0.078125;-0.078125;-0.15625;-0.234375;-0.3125;-0.386719;-0.460938;-0.535156;-0.603516;-0.669922;-0.734375;-0.791016;-0.84375;-0.890625;-0.929688;-0.960938;-0.98291;-0.996094;-1;-1;-1;-1;-1;-0.999146;-0.989258;-0.969727;-0.939453;-0.900391;-0.853516;-0.800781;-0.740234;-0.675781;-0.609375;-0.537109;-0.464844;-0.388672;-0.3125;-0.234375;-0.15625;-0.078125;-0.000976562;-0 - 1;1;0.997576;0.990261;0.977913;0.960287;0.937655;0.909122;0.875913;0.835766;0.791535;0.740189;0.681993;0.62023;0.552049;0.478776;0.400683;0.322964;0.239823;0.160156;0.078125;0;-0.078125;-0.160156;-0.239316;-0.319234;-0.396562;-0.472976;-0.545056;-0.613471;-0.676098;-0.731957;-0.785095;-0.830918;-0.870468;-0.906078;-0.935085;-0.958213;-0.97676;-0.989752;-0.99745;-0.99745;-0.989752;-0.97676;-0.958213;-0.935085;-0.906078;-0.870468;-0.830918;-0.785095;-0.731957;-0.676098;-0.613471;-0.545056;-0.472976;-0.396562;-0.319234;-0.239316;-0.160156;-0.078125;0;0.078125;0.160156;0.239823;0.322964;0.400683;0.478776;0.552049;0.62023;0.681993;0.740189;0.791535;0.835766;0.875913;0.909122;0.937655;0.960287;0.977913;0.990261;0.997576;1;1 + + 0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0 + + 0;0.000976562;0.078125;0.15625;0.234375;0.3125;0.388672;0.464844;0.537109;0.609375;0.675781;0.740234;0.800781;0.853516;0.900391;0.939453;0.969727;0.989258;0.999146;1;1;1;1;1;0.996094;0.98291;0.960938;0.929688;0.890625;0.84375;0.791016;0.734375;0.669922;0.603516;0.535156;0.460938;0.386719;0.3125;0.234375;0.15625;0.078125;-0.078125;-0.15625;-0.234375;-0.3125;-0.386719;-0.460938;-0.535156;-0.603516;-0.669922;-0.734375;-0.791016;-0.84375;-0.890625;-0.929688;-0.960938;-0.98291;-0.996094;-1;-1;-1;-1;-1;-0.999146;-0.989258;-0.969727;-0.939453;-0.900391;-0.853516;-0.800781;-0.740234;-0.675781;-0.609375;-0.537109;-0.464844;-0.388672;-0.3125;-0.234375;-0.15625;-0.078125;-0.000976562;-0 + + 1;1;0.997576;0.990261;0.977913;0.960287;0.937655;0.909122;0.875913;0.835766;0.791535;0.740189;0.681993;0.62023;0.552049;0.478776;0.400683;0.322964;0.239823;0.160156;0.078125;0;-0.078125;-0.160156;-0.239316;-0.319234;-0.396562;-0.472976;-0.545056;-0.613471;-0.676098;-0.731957;-0.785095;-0.830918;-0.870468;-0.906078;-0.935085;-0.958213;-0.97676;-0.989752;-0.99745;-0.99745;-0.989752;-0.97676;-0.958213;-0.935085;-0.906078;-0.870468;-0.830918;-0.785095;-0.731957;-0.676098;-0.613471;-0.545056;-0.472976;-0.396562;-0.319234;-0.239316;-0.160156;-0.078125;0;0.078125;0.160156;0.239823;0.322964;0.400683;0.478776;0.552049;0.62023;0.681993;0.740189;0.791535;0.835766;0.875913;0.909122;0.937655;0.960287;0.977913;0.990261;0.997576;1;1 SuperEllipse Normalized SuperEllipse with Ratio - 0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0 - 0;0.000976562;0.078125;0.15625;0.234375;0.308594;0.382812;0.457031;0.525391;0.591797;0.654297;0.712891;0.767578;0.816406;0.861328;0.900391;0.933594;0.958984;0.979492;0.992676;0.999268;1;0.999268;0.992676;0.979492;0.958984;0.933594;0.900391;0.861328;0.816406;0.767578;0.712891;0.654297;0.591797;0.525391;0.457031;0.382812;0.308594;0.234375;0.15625;0.078125;-0.078125;-0.15625;-0.234375;-0.308594;-0.382812;-0.457031;-0.525391;-0.591797;-0.654297;-0.712891;-0.767578;-0.816406;-0.861328;-0.900391;-0.933594;-0.958984;-0.979492;-0.992676;-0.999268;-1;-0.999268;-0.992676;-0.979492;-0.958984;-0.933594;-0.900391;-0.861328;-0.816406;-0.767578;-0.712891;-0.654297;-0.591797;-0.525391;-0.457031;-0.382812;-0.308594;-0.234375;-0.15625;-0.078125;-0.000976562;-0 - 1;1;0.99707;0.988226;0.9733;0.953215;0.92698;0.894028;0.857037;0.814117;0.766332;0.713645;0.655823;0.594975;0.528421;0.458476;0.384905;0.313131;0.234549;0.157216;0.0780917;0;-0.0780917;-0.157216;-0.234549;-0.313131;-0.384905;-0.458476;-0.528421;-0.594975;-0.655823;-0.713645;-0.766332;-0.814117;-0.857037;-0.894028;-0.92698;-0.953215;-0.9733;-0.988226;-0.99707;-0.99707;-0.988226;-0.9733;-0.953215;-0.92698;-0.894028;-0.857037;-0.814117;-0.766332;-0.713645;-0.655823;-0.594975;-0.528421;-0.458476;-0.384905;-0.313131;-0.234549;-0.157216;-0.0780917;0;0.0780917;0.157216;0.234549;0.313131;0.384905;0.458476;0.528421;0.594975;0.655823;0.713645;0.766332;0.814117;0.857037;0.894028;0.92698;0.953215;0.9733;0.988226;0.99707;1;1 + + 0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0 + + 0;0.000976562;0.078125;0.15625;0.234375;0.308594;0.382812;0.457031;0.525391;0.591797;0.654297;0.712891;0.767578;0.816406;0.861328;0.900391;0.933594;0.958984;0.979492;0.992676;0.999268;1;0.999268;0.992676;0.979492;0.958984;0.933594;0.900391;0.861328;0.816406;0.767578;0.712891;0.654297;0.591797;0.525391;0.457031;0.382812;0.308594;0.234375;0.15625;0.078125;-0.078125;-0.15625;-0.234375;-0.308594;-0.382812;-0.457031;-0.525391;-0.591797;-0.654297;-0.712891;-0.767578;-0.816406;-0.861328;-0.900391;-0.933594;-0.958984;-0.979492;-0.992676;-0.999268;-1;-0.999268;-0.992676;-0.979492;-0.958984;-0.933594;-0.900391;-0.861328;-0.816406;-0.767578;-0.712891;-0.654297;-0.591797;-0.525391;-0.457031;-0.382812;-0.308594;-0.234375;-0.15625;-0.078125;-0.000976562;-0 + + 1;1;0.99707;0.988226;0.9733;0.953215;0.92698;0.894028;0.857037;0.814117;0.766332;0.713645;0.655823;0.594975;0.528421;0.458476;0.384905;0.313131;0.234549;0.157216;0.0780917;0;-0.0780917;-0.157216;-0.234549;-0.313131;-0.384905;-0.458476;-0.528421;-0.594975;-0.655823;-0.713645;-0.766332;-0.814117;-0.857037;-0.894028;-0.92698;-0.953215;-0.9733;-0.988226;-0.99707;-0.99707;-0.988226;-0.9733;-0.953215;-0.92698;-0.894028;-0.857037;-0.814117;-0.766332;-0.713645;-0.655823;-0.594975;-0.528421;-0.458476;-0.384905;-0.313131;-0.234549;-0.157216;-0.0780917;0;0.0780917;0.157216;0.234549;0.313131;0.384905;0.458476;0.528421;0.594975;0.655823;0.713645;0.766332;0.814117;0.857037;0.894028;0.92698;0.953215;0.9733;0.988226;0.99707;1;1 @@ -5190,27 +5560,36 @@ NameD150_VAMP_W_SupCritProf1 Profile generated automaticallz bz WingLib - 1;0.993181;0.972909;0.939737;0.89457;0.838641;0.773474;0.700848;0.622743;0.54129;0.45871;0.377257;0.299152;0.226526;0.161359;0.10543;0.0602631;0.0270914;0.00681934;0;0.00681934;0.0270914;0.0602631;0.10543;0.161359;0.226526;0.299152;0.377257;0.45871;0.54129;0.622743;0.700848;0.773474;0.838641;0.89457;0.939737;0.972909;0.993181;1 - 0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0 - 0;-0.00057906;-0.00238273;-0.00582898;-0.0117713;-0.0209512;-0.0334801;-0.0477972;-0.0619857;-0.0738688;-0.0820266;-0.0861878;-0.0865919;-0.0834552;-0.0770162;-0.0675308;-0.0546752;-0.0377444;-0.0203324;0;0.0234472;0.0414468;0.0542718;0.0620023;0.0660096;0.0669758;0.0652781;0.0618709;0.0573285;0.0520147;0.0461073;0.0396056;0.0324085;0.0247134;0.0170446;0.0100999;0.00478703;0.00156842;0 + + 1;0.993181;0.972909;0.939737;0.89457;0.838641;0.773474;0.700848;0.622743;0.54129;0.45871;0.377257;0.299152;0.226526;0.161359;0.10543;0.0602631;0.0270914;0.00681934;0;0.00681934;0.0270914;0.0602631;0.10543;0.161359;0.226526;0.299152;0.377257;0.45871;0.54129;0.622743;0.700848;0.773474;0.838641;0.89457;0.939737;0.972909;0.993181;1 + + 0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0 + + 0;-0.00057906;-0.00238273;-0.00582898;-0.0117713;-0.0209512;-0.0334801;-0.0477972;-0.0619857;-0.0738688;-0.0820266;-0.0861878;-0.0865919;-0.0834552;-0.0770162;-0.0675308;-0.0546752;-0.0377444;-0.0203324;0;0.0234472;0.0414468;0.0542718;0.0620023;0.0660096;0.0669758;0.0652781;0.0618709;0.0573285;0.0520147;0.0461073;0.0396056;0.0324085;0.0247134;0.0170446;0.0100999;0.00478703;0.00156842;0 NameD150_VAMP_HL_NACA0000Prof1 Profile generated automaticallz bz WingLib - 1;0.95;0.9;0.8;0.7;0.6;0.5;0.4;0.3;0.25;0.2;0.15;0.1;0.075;0.05;0.025;0.0125;0;0.0125;0.025;0.05;0.075;0.1;0.15;0.2;0.25;0.3;0.4;0.5;0.6;0.7;0.8;0.9;0.95;1 - 0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0 - 0;-0.00672;-0.01207;-0.02187;-0.03053;-0.03803;-0.04412;-0.04837;-0.05002;-0.04952;-0.04782;-0.04455;-0.03902;-0.035;-0.02962;-0.02178;-0.01578;0;0.01578;0.02178;0.02962;0.035;0.03902;0.04455;0.04782;0.04952;0.05002;0.04837;0.04412;0.03803;0.03053;0.02187;0.01207;0.00672;0 + + 1;0.95;0.9;0.8;0.7;0.6;0.5;0.4;0.3;0.25;0.2;0.15;0.1;0.075;0.05;0.025;0.0125;0;0.0125;0.025;0.05;0.075;0.1;0.15;0.2;0.25;0.3;0.4;0.5;0.6;0.7;0.8;0.9;0.95;1 + + 0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0 + + 0;-0.00672;-0.01207;-0.02187;-0.03053;-0.03803;-0.04412;-0.04837;-0.05002;-0.04952;-0.04782;-0.04455;-0.03902;-0.035;-0.02962;-0.02178;-0.01578;0;0.01578;0.02178;0.02962;0.035;0.03902;0.04455;0.04782;0.04952;0.05002;0.04837;0.04412;0.03803;0.03053;0.02187;0.01207;0.00672;0 NameD150_VAMP_SL_NACA0000Prof1 Profile generated automaticallz bz WingLib - 1;0.95;0.9;0.8;0.7;0.6;0.5;0.4;0.3;0.25;0.2;0.15;0.1;0.075;0.05;0.025;0.0125;0;0.0125;0.025;0.05;0.075;0.1;0.15;0.2;0.25;0.3;0.4;0.5;0.6;0.7;0.8;0.9;0.95;1 - 0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0 - 0;-0.00672;-0.01207;-0.02187;-0.03053;-0.03803;-0.04412;-0.04837;-0.05002;-0.04952;-0.04782;-0.04455;-0.03902;-0.035;-0.02962;-0.02178;-0.01578;0;0.01578;0.02178;0.02962;0.035;0.03902;0.04455;0.04782;0.04952;0.05002;0.04837;0.04412;0.03803;0.03053;0.02187;0.01207;0.00672;0 + + 1;0.95;0.9;0.8;0.7;0.6;0.5;0.4;0.3;0.25;0.2;0.15;0.1;0.075;0.05;0.025;0.0125;0;0.0125;0.025;0.05;0.075;0.1;0.15;0.2;0.25;0.3;0.4;0.5;0.6;0.7;0.8;0.9;0.95;1 + + 0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0 + + 0;-0.00672;-0.01207;-0.02187;-0.03053;-0.03803;-0.04412;-0.04837;-0.05002;-0.04952;-0.04782;-0.04455;-0.03902;-0.035;-0.02962;-0.02178;-0.01578;0;0.01578;0.02178;0.02962;0.035;0.03902;0.04455;0.04782;0.04952;0.05002;0.04837;0.04412;0.03803;0.03053;0.02187;0.01207;0.00672;0 @@ -5236,7 +5615,7 @@ Fuselage1;Wing3V;Wing2H;Wing1 - + NO 1 @@ -5272,9 +5651,13 @@ 4 True - 25 - 0.45 - 0.3 + 13 + + 1.0 + + + 1.0 + 1.6 False @@ -5314,4 +5697,4 @@ test_apm - + \ No newline at end of file diff --git a/tests/Test_input2.xml b/tests/Test_input2.xml index aed7185e3..155150841 100644 --- a/tests/Test_input2.xml +++ b/tests/Test_input2.xml @@ -1,5 +1,6 @@ - +
Cpacs2Test Simple Wing for unit testing @@ -9,7 +10,8 @@ 3.2 - Converted to cpacs 3.0 using cpacs2to3 - does not include structure update + Converted to cpacs 3.0 using cpacs2to3 - does not include structure + update cpacs2to3 2018-01-15T09:22:57 0.2 @@ -113,7 +115,8 @@ 0 0 - + 0 0 0 @@ -299,7 +302,8 @@
- First Section containing the profile curve in flow direction of the nacelle + First Section containing the profile curve in flow + direction of the nacelle upperSection fanCowlUpperSectionProfile @@ -392,7 +396,8 @@ 0 0 - + 0 0 0 @@ -402,17 +407,20 @@
D150_Fuselage_1Section1 - + 1 1 1 - + 0 0 0 - + 0 0 0 @@ -422,18 +430,22 @@ D150_Fuselage_1Section1 fuselageCircleProfileuID - - + + 1 1 1 - + 0 0 0 - + 0 0 0 @@ -445,17 +457,20 @@
D150_Fuselage_1Section2 - + 1 1 1 - + 0 0 0 - + 0.5 0 0 @@ -465,18 +480,22 @@ D150_Fuselage_1Section2 fuselageCircleProfileuID - - + + 1 1 1 - + 0 0 0 - + 0 0 0 @@ -488,17 +507,20 @@
D150_Fuselage_1Section3 - + 1 1 1 - + 0 0 0 - + 0 0 0 @@ -508,18 +530,22 @@ D150_Fuselage_1Section3 fuselageCircleProfileuID - - + + 1 1 1 - + 0 0 0 - + 0 0 0 @@ -597,7 +623,8 @@ 0 0 - + 0 0 0 @@ -608,18 +635,22 @@ Cpacs2Test - Wing Section 1 Main Element Cpacs2Test - Wing Section 1 Main Element NACA0006 - - + + 1 1 1 - + 0 0 0 - + 0 0 0 @@ -642,7 +673,8 @@ 0 0 - + 0 0 0 @@ -653,18 +685,22 @@ Cpacs2Test - Wing Section 2 Main Element Cpacs2Test - Wing Section 2 Main Element NACA0006 - - + + 1 1 1 - + 0 0 0 - + 0 0 0 @@ -687,7 +723,8 @@ 0 0 - + 0 0 0 @@ -698,18 +735,22 @@ Cpacs2Test - Wing Section 3 Main Element Cpacs2Test - Wing Section 3 Main Element NACA0006 - - + + 0.5 0.5 0.5 - + 0 0 0 - + 0.5 0 0 @@ -752,7 +793,8 @@ 0 0 - + 0 0 0 @@ -790,7 +832,8 @@ Cpacs2Test_Wing_Sec3 - Autogenerated positioning to set the position of section: Cpacs2Test_Wing_Sec3After + Autogenerated positioning to set the position of section: + Cpacs2Test_Wing_Sec3After 3.12517 16.2707 0 @@ -799,14 +842,18 @@ - Fuselage Segment from Cpacs2Test - Wing Section 1 Main Element to Cpacs2Test - Wing Section 2 Main Element - Fuselage Segment from Cpacs2Test - Wing Section 1 Main Element to Cpacs2Test - Wing Section 2 Main Element + Fuselage Segment from Cpacs2Test - Wing Section 1 Main Element + to Cpacs2Test - Wing Section 2 Main Element + Fuselage Segment from Cpacs2Test - Wing Section 1 Main + Element to Cpacs2Test - Wing Section 2 Main Element Cpacs2Test_Wing_Sec1_El1 Cpacs2Test_Wing_Sec2_El1 - Fuselage Segment from Cpacs2Test - Wing Section 2 Main Element to Cpacs2Test - Wing Section 3 Main Element - Fuselage Segment from Cpacs2Test - Wing Section 2 Main Element to Cpacs2Test - Wing Section 3 Main Element + Fuselage Segment from Cpacs2Test - Wing Section 2 Main Element + to Cpacs2Test - Wing Section 3 Main Element + Fuselage Segment from Cpacs2Test - Wing Section 2 Main + Element to Cpacs2Test - Wing Section 3 Main Element Cpacs2Test_Wing_Sec2_El1 Cpacs2Test_Wing_Sec3_El1 @@ -914,7 +961,7 @@ Cpacs2Test - Wing Section 1 Main Element PylonProfile - +
@@ -931,7 +978,7 @@ Cpacs2Test - Wing Section 1 Main Element PylonProfile - +
@@ -948,7 +995,7 @@ Cpacs2Test - Wing Section 1 Main Element PylonProfile - +
@@ -1019,7 +1066,7 @@ PylonR section 1 element 1 PylonRProfile - +
@@ -1181,10 +1228,13 @@ NACA0.00.00.12 - rotation Curve for center cowl of nacelle is currently lower half of NACA 12 + rotation Curve for center cowl of nacelle is currently lower half + of NACA 12 - 2;1.975;1.95;1.925;1.9;1.875;1.85;1.825;1.8;1.775;1.75;1.725;1.7;1.675;1.65;1.625;1.6;1.575;1.55;1.525;1.5;1.475;1.45;1.425;1.4;1.375;1.35;1.325;1.3;1.275;1.25;1.225;1.2;1.175;1.15;1.125;1.1;1.075;1.05;1.025;1;0.975;0.95;0.925;0.9;0.875;0.85;0.825;0.8;0.775;0.75;0.725;0.7;0.675;0.65;0.625;0.6;0.575;0.55;0.525;0.5;0.475;0.45;0.425;0.4;0.375;0.35;0.325;0.3;0.275;0.25;0.225;0.2;0.175;0.15;0.125;0.1;0.075;0.05;0.025;0 - -0.00189;-0.00450063;-0.00707159;-0.00960385;-0.0120984;-0.0145561;-0.0169777;-0.019364;-0.0217158;-0.0240336;-0.0263179;-0.0285694;-0.0307884;-0.0329754;-0.0351306;-0.0372543;-0.0393468;-0.0414079;-0.043438;-0.045437;-0.0474047;-0.0493408;-0.0512454;-0.0531182;-0.0549586;-0.0567663;-0.0585408;-0.0602814;-0.0619875;-0.0636584;-0.065293;-0.0668909;-0.0684505;-0.0699712;-0.0714516;-0.0728904;-0.0742865;-0.0756379;-0.0769437;-0.0782018;-0.0794105;-0.0805677;-0.0816717;-0.0827203;-0.0837111;-0.0846415;-0.0855093;-0.0863115;-0.0870452;-0.0877073;-0.0882944;-0.088803;-0.0892293;-0.0895692;-0.0898185;-0.0899724;-0.090026;-0.0899735;-0.0898092;-0.0895266;-0.0891186;-0.0885774;-0.0878944;-0.08706;-0.0860631;-0.0848918;-0.0835315;-0.0819666;-0.0801774;-0.0781415;-0.075831;-0.0732122;-0.0702415;-0.0668626;-0.0629985;-0.05854;-0.0533204;-0.0470609;-0.0392208;-0.0284085;0 + + 2;1.975;1.95;1.925;1.9;1.875;1.85;1.825;1.8;1.775;1.75;1.725;1.7;1.675;1.65;1.625;1.6;1.575;1.55;1.525;1.5;1.475;1.45;1.425;1.4;1.375;1.35;1.325;1.3;1.275;1.25;1.225;1.2;1.175;1.15;1.125;1.1;1.075;1.05;1.025;1;0.975;0.95;0.925;0.9;0.875;0.85;0.825;0.8;0.775;0.75;0.725;0.7;0.675;0.65;0.625;0.6;0.575;0.55;0.525;0.5;0.475;0.45;0.425;0.4;0.375;0.35;0.325;0.3;0.275;0.25;0.225;0.2;0.175;0.15;0.125;0.1;0.075;0.05;0.025;0 + + -0.00189;-0.00450063;-0.00707159;-0.00960385;-0.0120984;-0.0145561;-0.0169777;-0.019364;-0.0217158;-0.0240336;-0.0263179;-0.0285694;-0.0307884;-0.0329754;-0.0351306;-0.0372543;-0.0393468;-0.0414079;-0.043438;-0.045437;-0.0474047;-0.0493408;-0.0512454;-0.0531182;-0.0549586;-0.0567663;-0.0585408;-0.0602814;-0.0619875;-0.0636584;-0.065293;-0.0668909;-0.0684505;-0.0699712;-0.0714516;-0.0728904;-0.0742865;-0.0756379;-0.0769437;-0.0782018;-0.0794105;-0.0805677;-0.0816717;-0.0827203;-0.0837111;-0.0846415;-0.0855093;-0.0863115;-0.0870452;-0.0877073;-0.0882944;-0.088803;-0.0892293;-0.0895692;-0.0898185;-0.0899724;-0.090026;-0.0899735;-0.0898092;-0.0895266;-0.0891186;-0.0885774;-0.0878944;-0.08706;-0.0860631;-0.0848918;-0.0835315;-0.0819666;-0.0801774;-0.0781415;-0.075831;-0.0732122;-0.0702415;-0.0668626;-0.0629985;-0.05854;-0.0533204;-0.0470609;-0.0392208;-0.0284085;0 @@ -1201,15 +1251,19 @@ NACA0.00.00.12 upper section of the outer nacelle geometry - 1;0.9875;0.975;0.9625;0.95;0.9375;0.925;0.9125;0.9;0.8875;0.875;0.8625;0.85;0.8375;0.825;0.8125;0.8;0.7875;0.775;0.7625;0.75;0.7375;0.725;0.7125;0.7;0.6875;0.675;0.6625;0.65;0.6375;0.625;0.6125;0.6;0.5875;0.575;0.5625;0.55;0.5375;0.525;0.5125;0.5;0.4875;0.475;0.4625;0.45;0.4375;0.425;0.4125;0.4;0.3875;0.375;0.3625;0.35;0.3375;0.325;0.3125;0.3;0.2875;0.275;0.2625;0.25;0.2375;0.225;0.2125;0.2;0.1875;0.175;0.1625;0.15;0.1375;0.125;0.1125;0.1;0.0875;0.075;0.0625;0.05;0.0375;0.025;0.0125;0;0.0125;0.025;0.0375;0.05;0.0625;0.075;0.0875;0.1;0.1125;0.125;0.1375;0.15;0.1625;0.175;0.1875;0.2;0.2125;0.225;0.2375;0.25;0.2625;0.275;0.2875;0.3;0.3125;0.325;0.3375;0.35;0.3625;0.375;0.3875;0.4;0.4125;0.425;0.4375;0.45;0.4625;0.475;0.4875;0.5;0.5125;0.525;0.5375;0.55;0.5625;0.575;0.5875;0.6;0.6125;0.625;0.6375;0.65;0.6625;0.675;0.6875;0.7;0.7125;0.725;0.7375;0.75;0.7625;0.775;0.7875;0.8;0.8125;0.825;0.8375;0.85;0.8625;0.875;0.8875;0.9;0.9125;0.925;0.9375;0.95;0.9625;0.975;0.9875;1 - -0.00126;-0.00300042;-0.00471439;-0.00640257;-0.00806559;-0.00970404;-0.0113185;-0.0129093;-0.0144772;-0.0160224;-0.0175453;-0.0190463;-0.0205256;-0.0219836;-0.0234204;-0.0248362;-0.0262312;-0.0276053;-0.0289587;-0.0302913;-0.0316031;-0.0328939;-0.0341636;-0.0354121;-0.0366391;-0.0378442;-0.0390272;-0.0401876;-0.041325;-0.0424389;-0.0435287;-0.0445939;-0.0456337;-0.0466475;-0.0476344;-0.0485936;-0.0495243;-0.0504253;-0.0512958;-0.0521345;-0.0529403;-0.0537118;-0.0544478;-0.0551469;-0.0558074;-0.0564277;-0.0570062;-0.057541;-0.0580301;-0.0584715;-0.0588629;-0.059202;-0.0594862;-0.0597128;-0.059879;-0.0599816;-0.0600173;-0.0599823;-0.0598728;-0.0596844;-0.0594124;-0.0590516;-0.0585963;-0.05804;-0.0573754;-0.0565945;-0.0556877;-0.0546444;-0.0534516;-0.0520943;-0.050554;-0.0488081;-0.0468277;-0.0445751;-0.041999;-0.0390267;-0.0355469;-0.0313739;-0.0261472;-0.018939;0;0.018939;0.0261472;0.0313739;0.0355469;0.0390267;0.041999;0.0445751;0.0468277;0.0488081;0.050554;0.0520943;0.0534516;0.0546444;0.0556877;0.0565945;0.0573754;0.05804;0.0585963;0.0590516;0.0594124;0.0596844;0.0598728;0.0599823;0.0600173;0.0599816;0.059879;0.0597128;0.0594862;0.059202;0.0588629;0.0584715;0.0580301;0.057541;0.0570062;0.0564277;0.0558074;0.0551469;0.0544478;0.0537118;0.0529403;0.0521345;0.0512958;0.0504253;0.0495243;0.0485936;0.0476344;0.0466475;0.0456337;0.0445939;0.0435287;0.0424389;0.041325;0.0401876;0.0390272;0.0378442;0.0366391;0.0354121;0.0341636;0.0328939;0.0316031;0.0302913;0.0289587;0.0276053;0.0262312;0.0248362;0.0234204;0.0219836;0.0205256;0.0190463;0.0175453;0.0160224;0.0144772;0.0129093;0.0113185;0.00970404;0.00806559;0.00640257;0.00471439;0.00300042;0.00126 + + 1;0.9875;0.975;0.9625;0.95;0.9375;0.925;0.9125;0.9;0.8875;0.875;0.8625;0.85;0.8375;0.825;0.8125;0.8;0.7875;0.775;0.7625;0.75;0.7375;0.725;0.7125;0.7;0.6875;0.675;0.6625;0.65;0.6375;0.625;0.6125;0.6;0.5875;0.575;0.5625;0.55;0.5375;0.525;0.5125;0.5;0.4875;0.475;0.4625;0.45;0.4375;0.425;0.4125;0.4;0.3875;0.375;0.3625;0.35;0.3375;0.325;0.3125;0.3;0.2875;0.275;0.2625;0.25;0.2375;0.225;0.2125;0.2;0.1875;0.175;0.1625;0.15;0.1375;0.125;0.1125;0.1;0.0875;0.075;0.0625;0.05;0.0375;0.025;0.0125;0;0.0125;0.025;0.0375;0.05;0.0625;0.075;0.0875;0.1;0.1125;0.125;0.1375;0.15;0.1625;0.175;0.1875;0.2;0.2125;0.225;0.2375;0.25;0.2625;0.275;0.2875;0.3;0.3125;0.325;0.3375;0.35;0.3625;0.375;0.3875;0.4;0.4125;0.425;0.4375;0.45;0.4625;0.475;0.4875;0.5;0.5125;0.525;0.5375;0.55;0.5625;0.575;0.5875;0.6;0.6125;0.625;0.6375;0.65;0.6625;0.675;0.6875;0.7;0.7125;0.725;0.7375;0.75;0.7625;0.775;0.7875;0.8;0.8125;0.825;0.8375;0.85;0.8625;0.875;0.8875;0.9;0.9125;0.925;0.9375;0.95;0.9625;0.975;0.9875;1 + + -0.00126;-0.00300042;-0.00471439;-0.00640257;-0.00806559;-0.00970404;-0.0113185;-0.0129093;-0.0144772;-0.0160224;-0.0175453;-0.0190463;-0.0205256;-0.0219836;-0.0234204;-0.0248362;-0.0262312;-0.0276053;-0.0289587;-0.0302913;-0.0316031;-0.0328939;-0.0341636;-0.0354121;-0.0366391;-0.0378442;-0.0390272;-0.0401876;-0.041325;-0.0424389;-0.0435287;-0.0445939;-0.0456337;-0.0466475;-0.0476344;-0.0485936;-0.0495243;-0.0504253;-0.0512958;-0.0521345;-0.0529403;-0.0537118;-0.0544478;-0.0551469;-0.0558074;-0.0564277;-0.0570062;-0.057541;-0.0580301;-0.0584715;-0.0588629;-0.059202;-0.0594862;-0.0597128;-0.059879;-0.0599816;-0.0600173;-0.0599823;-0.0598728;-0.0596844;-0.0594124;-0.0590516;-0.0585963;-0.05804;-0.0573754;-0.0565945;-0.0556877;-0.0546444;-0.0534516;-0.0520943;-0.050554;-0.0488081;-0.0468277;-0.0445751;-0.041999;-0.0390267;-0.0355469;-0.0313739;-0.0261472;-0.018939;0;0.018939;0.0261472;0.0313739;0.0355469;0.0390267;0.041999;0.0445751;0.0468277;0.0488081;0.050554;0.0520943;0.0534516;0.0546444;0.0556877;0.0565945;0.0573754;0.05804;0.0585963;0.0590516;0.0594124;0.0596844;0.0598728;0.0599823;0.0600173;0.0599816;0.059879;0.0597128;0.0594862;0.059202;0.0588629;0.0584715;0.0580301;0.057541;0.0570062;0.0564277;0.0558074;0.0551469;0.0544478;0.0537118;0.0529403;0.0521345;0.0512958;0.0504253;0.0495243;0.0485936;0.0476344;0.0466475;0.0456337;0.0445939;0.0435287;0.0424389;0.041325;0.0401876;0.0390272;0.0378442;0.0366391;0.0354121;0.0341636;0.0328939;0.0316031;0.0302913;0.0289587;0.0276053;0.0262312;0.0248362;0.0234204;0.0219836;0.0205256;0.0190463;0.0175453;0.0160224;0.0144772;0.0129093;0.0113185;0.00970404;0.00806559;0.00640257;0.00471439;0.00300042;0.00126 cr001sm_il - 0.996194;0.993754;0.986971;0.976729;0.963458;0.947066;0.92744;0.904744;0.879219;0.851108;0.820703;0.788289;0.754153;0.718592;0.681903;0.644385;0.606339;0.568023;0.529718;0.491436;0.453179;0.415238;0.377744;0.34092;0.30497;0.270075;0.236471;0.20436;0.173917;0.145373;0.118912;0.0947228;0.0729665;0.0537642;0.0372754;0.0235897;0.0127525;0.00500524;0.00074618;0;0.00123634;0.00614245;0.0144781;0.0258662;0.0400693;0.0570392;0.0766765;0.0988121;0.12332;0.150039;0.178779;0.209361;0.241554;0.275188;0.31006;0.345937;0.382642;0.419975;0.457723;0.495757;0.533793;0.571832;0.609867;0.64762;0.684836;0.721221;0.75648;0.79032;0.822449;0.852586;0.880447;0.905742;0.928227;0.947659;0.963881;0.97701;0.987132;0.993808;0.996194 - -0.087172;-0.0868298;-0.085883;-0.0844168;-0.0824767;-0.0800629;-0.0772055;-0.0739912;-0.0705214;-0.0669055;-0.0632255;-0.0595545;-0.0559497;-0.0524611;-0.0491307;-0.0459768;-0.0430096;-0.0402517;-0.0377195;-0.0353821;-0.0332236;-0.0312292;-0.0294105;-0.0277307;-0.0261674;-0.0246966;-0.0232824;-0.0218864;-0.0204838;-0.0190466;-0.0175587;-0.0160367;-0.0144705;-0.0128548;-0.0112034;-0.00952422;-0.00775697;-0.0056658;-0.00271537;0;0.00288723;0.00733255;0.0119677;0.0164964;0.0207306;0.0245782;0.0279355;0.0307048;0.0328249;0.0342857;0.0350959;0.0352712;0.0348237;0.0337442;0.0320103;0.0296103;0.0265677;0.0229159;0.018714;0.0140052;0.00885457;0.00328603;-0.00268361;-0.00899806;-0.0156028;-0.0224158;-0.0293553;-0.0363392;-0.0432618;-0.05001;-0.056487;-0.0625868;-0.0682079;-0.0732808;-0.0776392;-0.081213;-0.084042;-0.0862161;-0.087172 + + 0.996194;0.993754;0.986971;0.976729;0.963458;0.947066;0.92744;0.904744;0.879219;0.851108;0.820703;0.788289;0.754153;0.718592;0.681903;0.644385;0.606339;0.568023;0.529718;0.491436;0.453179;0.415238;0.377744;0.34092;0.30497;0.270075;0.236471;0.20436;0.173917;0.145373;0.118912;0.0947228;0.0729665;0.0537642;0.0372754;0.0235897;0.0127525;0.00500524;0.00074618;0;0.00123634;0.00614245;0.0144781;0.0258662;0.0400693;0.0570392;0.0766765;0.0988121;0.12332;0.150039;0.178779;0.209361;0.241554;0.275188;0.31006;0.345937;0.382642;0.419975;0.457723;0.495757;0.533793;0.571832;0.609867;0.64762;0.684836;0.721221;0.75648;0.79032;0.822449;0.852586;0.880447;0.905742;0.928227;0.947659;0.963881;0.97701;0.987132;0.993808;0.996194 + + -0.087172;-0.0868298;-0.085883;-0.0844168;-0.0824767;-0.0800629;-0.0772055;-0.0739912;-0.0705214;-0.0669055;-0.0632255;-0.0595545;-0.0559497;-0.0524611;-0.0491307;-0.0459768;-0.0430096;-0.0402517;-0.0377195;-0.0353821;-0.0332236;-0.0312292;-0.0294105;-0.0277307;-0.0261674;-0.0246966;-0.0232824;-0.0218864;-0.0204838;-0.0190466;-0.0175587;-0.0160367;-0.0144705;-0.0128548;-0.0112034;-0.00952422;-0.00775697;-0.0056658;-0.00271537;0;0.00288723;0.00733255;0.0119677;0.0164964;0.0207306;0.0245782;0.0279355;0.0307048;0.0328249;0.0342857;0.0350959;0.0352712;0.0348237;0.0337442;0.0320103;0.0296103;0.0265677;0.0229159;0.018714;0.0140052;0.00885457;0.00328603;-0.00268361;-0.00899806;-0.0156028;-0.0224158;-0.0293553;-0.0363392;-0.0432618;-0.05001;-0.056487;-0.0625868;-0.0682079;-0.0732808;-0.0776392;-0.081213;-0.084042;-0.0862161;-0.087172 @@ -1218,9 +1272,12 @@ NACA0.00.00.12 NACA 4 Series Profile - 1;0.9875;0.975;0.9625;0.95;0.9375;0.925;0.9125;0.9;0.8875;0.875;0.8625;0.85;0.8375;0.825;0.8125;0.8;0.7875;0.775;0.7625;0.75;0.7375;0.725;0.7125;0.7;0.6875;0.675;0.6625;0.65;0.6375;0.625;0.6125;0.6;0.5875;0.575;0.5625;0.55;0.5375;0.525;0.5125;0.5;0.4875;0.475;0.4625;0.45;0.4375;0.425;0.4125;0.4;0.3875;0.375;0.3625;0.35;0.3375;0.325;0.3125;0.3;0.2875;0.275;0.2625;0.25;0.2375;0.225;0.2125;0.2;0.1875;0.175;0.1625;0.15;0.1375;0.125;0.1125;0.1;0.0875;0.075;0.0625;0.05;0.0375;0.025;0.0125;0;0.0125;0.025;0.0375;0.05;0.0625;0.075;0.0875;0.1;0.1125;0.125;0.1375;0.15;0.1625;0.175;0.1875;0.2;0.2125;0.225;0.2375;0.25;0.2625;0.275;0.2875;0.3;0.3125;0.325;0.3375;0.35;0.3625;0.375;0.3875;0.4;0.4125;0.425;0.4375;0.45;0.4625;0.475;0.4875;0.5;0.5125;0.525;0.5375;0.55;0.5625;0.575;0.5875;0.6;0.6125;0.625;0.6375;0.65;0.6625;0.675;0.6875;0.7;0.7125;0.725;0.7375;0.75;0.7625;0.775;0.7875;0.8;0.8125;0.825;0.8375;0.85;0.8625;0.875;0.8875;0.9;0.9125;0.925;0.9375;0.95;0.9625;0.975;0.9875;1 - 0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0 - -0.00126;-0.00300042;-0.00471439;-0.00640257;-0.00806559;-0.00970404;-0.0113185;-0.0129093;-0.0144772;-0.0160224;-0.0175453;-0.0190463;-0.0205256;-0.0219836;-0.0234204;-0.0248362;-0.0262312;-0.0276053;-0.0289587;-0.0302913;-0.0316031;-0.0328939;-0.0341636;-0.0354121;-0.0366391;-0.0378442;-0.0390272;-0.0401876;-0.041325;-0.0424389;-0.0435287;-0.0445939;-0.0456337;-0.0466475;-0.0476344;-0.0485936;-0.0495243;-0.0504253;-0.0512958;-0.0521345;-0.0529403;-0.0537118;-0.0544478;-0.0551469;-0.0558074;-0.0564277;-0.0570062;-0.057541;-0.0580301;-0.0584715;-0.0588629;-0.059202;-0.0594862;-0.0597128;-0.059879;-0.0599816;-0.0600173;-0.0599823;-0.0598728;-0.0596844;-0.0594124;-0.0590516;-0.0585963;-0.05804;-0.0573754;-0.0565945;-0.0556877;-0.0546444;-0.0534516;-0.0520943;-0.050554;-0.0488081;-0.0468277;-0.0445751;-0.041999;-0.0390267;-0.0355469;-0.0313739;-0.0261472;-0.018939;0;0.018939;0.0261472;0.0313739;0.0355469;0.0390267;0.041999;0.0445751;0.0468277;0.0488081;0.050554;0.0520943;0.0534516;0.0546444;0.0556877;0.0565945;0.0573754;0.05804;0.0585963;0.0590516;0.0594124;0.0596844;0.0598728;0.0599823;0.0600173;0.0599816;0.059879;0.0597128;0.0594862;0.059202;0.0588629;0.0584715;0.0580301;0.057541;0.0570062;0.0564277;0.0558074;0.0551469;0.0544478;0.0537118;0.0529403;0.0521345;0.0512958;0.0504253;0.0495243;0.0485936;0.0476344;0.0466475;0.0456337;0.0445939;0.0435287;0.0424389;0.041325;0.0401876;0.0390272;0.0378442;0.0366391;0.0354121;0.0341636;0.0328939;0.0316031;0.0302913;0.0289587;0.0276053;0.0262312;0.0248362;0.0234204;0.0219836;0.0205256;0.0190463;0.0175453;0.0160224;0.0144772;0.0129093;0.0113185;0.00970404;0.00806559;0.00640257;0.00471439;0.00300042;0.00126 + + 1;0.9875;0.975;0.9625;0.95;0.9375;0.925;0.9125;0.9;0.8875;0.875;0.8625;0.85;0.8375;0.825;0.8125;0.8;0.7875;0.775;0.7625;0.75;0.7375;0.725;0.7125;0.7;0.6875;0.675;0.6625;0.65;0.6375;0.625;0.6125;0.6;0.5875;0.575;0.5625;0.55;0.5375;0.525;0.5125;0.5;0.4875;0.475;0.4625;0.45;0.4375;0.425;0.4125;0.4;0.3875;0.375;0.3625;0.35;0.3375;0.325;0.3125;0.3;0.2875;0.275;0.2625;0.25;0.2375;0.225;0.2125;0.2;0.1875;0.175;0.1625;0.15;0.1375;0.125;0.1125;0.1;0.0875;0.075;0.0625;0.05;0.0375;0.025;0.0125;0;0.0125;0.025;0.0375;0.05;0.0625;0.075;0.0875;0.1;0.1125;0.125;0.1375;0.15;0.1625;0.175;0.1875;0.2;0.2125;0.225;0.2375;0.25;0.2625;0.275;0.2875;0.3;0.3125;0.325;0.3375;0.35;0.3625;0.375;0.3875;0.4;0.4125;0.425;0.4375;0.45;0.4625;0.475;0.4875;0.5;0.5125;0.525;0.5375;0.55;0.5625;0.575;0.5875;0.6;0.6125;0.625;0.6375;0.65;0.6625;0.675;0.6875;0.7;0.7125;0.725;0.7375;0.75;0.7625;0.775;0.7875;0.8;0.8125;0.825;0.8375;0.85;0.8625;0.875;0.8875;0.9;0.9125;0.925;0.9375;0.95;0.9625;0.975;0.9875;1 + + 0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0 + + -0.00126;-0.00300042;-0.00471439;-0.00640257;-0.00806559;-0.00970404;-0.0113185;-0.0129093;-0.0144772;-0.0160224;-0.0175453;-0.0190463;-0.0205256;-0.0219836;-0.0234204;-0.0248362;-0.0262312;-0.0276053;-0.0289587;-0.0302913;-0.0316031;-0.0328939;-0.0341636;-0.0354121;-0.0366391;-0.0378442;-0.0390272;-0.0401876;-0.041325;-0.0424389;-0.0435287;-0.0445939;-0.0456337;-0.0466475;-0.0476344;-0.0485936;-0.0495243;-0.0504253;-0.0512958;-0.0521345;-0.0529403;-0.0537118;-0.0544478;-0.0551469;-0.0558074;-0.0564277;-0.0570062;-0.057541;-0.0580301;-0.0584715;-0.0588629;-0.059202;-0.0594862;-0.0597128;-0.059879;-0.0599816;-0.0600173;-0.0599823;-0.0598728;-0.0596844;-0.0594124;-0.0590516;-0.0585963;-0.05804;-0.0573754;-0.0565945;-0.0556877;-0.0546444;-0.0534516;-0.0520943;-0.050554;-0.0488081;-0.0468277;-0.0445751;-0.041999;-0.0390267;-0.0355469;-0.0313739;-0.0261472;-0.018939;0;0.018939;0.0261472;0.0313739;0.0355469;0.0390267;0.041999;0.0445751;0.0468277;0.0488081;0.050554;0.0520943;0.0534516;0.0546444;0.0556877;0.0565945;0.0573754;0.05804;0.0585963;0.0590516;0.0594124;0.0596844;0.0598728;0.0599823;0.0600173;0.0599816;0.059879;0.0597128;0.0594862;0.059202;0.0588629;0.0584715;0.0580301;0.057541;0.0570062;0.0564277;0.0558074;0.0551469;0.0544478;0.0537118;0.0529403;0.0521345;0.0512958;0.0504253;0.0495243;0.0485936;0.0476344;0.0466475;0.0456337;0.0445939;0.0435287;0.0424389;0.041325;0.0401876;0.0390272;0.0378442;0.0366391;0.0354121;0.0341636;0.0328939;0.0316031;0.0302913;0.0289587;0.0276053;0.0262312;0.0248362;0.0234204;0.0219836;0.0205256;0.0190463;0.0175453;0.0160224;0.0144772;0.0129093;0.0113185;0.00970404;0.00806559;0.00640257;0.00471439;0.00300042;0.00126 @@ -1235,24 +1292,30 @@ NACA0006 - 1;0.998459;0.993844;0.986185;0.975528;0.96194;0.945503;0.92632;0.904508;0.880203;0.853553;0.824724;0.793893;0.761249;0.726995;0.691342;0.654508;0.616723;0.578217;0.53923;0.5;0.46077;0.421783;0.383277;0.345492;0.308658;0.273005;0.238751;0.206107;0.175276;0.146447;0.119797;0.095492;0.07368;0.054497;0.03806;0.024472;0.013815;0.006156;0.001541;0;0.001541;0.006156;0.013815;0.024472;0.03806;0.054497;0.07368;0.095492;0.119797;0.146447;0.175276;0.206107;0.238751;0.273005;0.308658;0.345492;0.383277;0.421783;0.46077;0.5;0.53923;0.578217;0.616723;0.654508;0.691342;0.726995;0.761249;0.793893;0.824724;0.853553;0.880203;0.904508;0.92632;0.945503;0.96194;0.975528;0.986185;0.993844;0.998459;1 - 0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0 - 0;-0.000112;-0.000446;-0.000995;-0.001751;-0.002699;-0.003825;-0.005111;-0.006535;-0.008079;-0.009719;-0.011434;-0.013202;-0.015;-0.016805;-0.018594;-0.020343;-0.022027;-0.023621;-0.025098;-0.026431;-0.027592;-0.028554;-0.029291;-0.029778;-0.029994;-0.029921;-0.029544;-0.028856;-0.027854;-0.026541;-0.024927;-0.023024;-0.020853;-0.018433;-0.01579;-0.012947;-0.009927;-0.006752;-0.003438;0;0.003438;0.006752;0.009927;0.012947;0.01579;0.018433;0.020853;0.023024;0.024927;0.026541;0.027854;0.028856;0.029544;0.029921;0.029994;0.029778;0.029291;0.028554;0.027592;0.026431;0.025098;0.023621;0.022027;0.020343;0.018594;0.016805;0.015;0.013202;0.011434;0.009719;0.008079;0.006535;0.005111;0.003825;0.002699;0.001751;0.000995;0.000446;0.000112;0 + + 1;0.998459;0.993844;0.986185;0.975528;0.96194;0.945503;0.92632;0.904508;0.880203;0.853553;0.824724;0.793893;0.761249;0.726995;0.691342;0.654508;0.616723;0.578217;0.53923;0.5;0.46077;0.421783;0.383277;0.345492;0.308658;0.273005;0.238751;0.206107;0.175276;0.146447;0.119797;0.095492;0.07368;0.054497;0.03806;0.024472;0.013815;0.006156;0.001541;0;0.001541;0.006156;0.013815;0.024472;0.03806;0.054497;0.07368;0.095492;0.119797;0.146447;0.175276;0.206107;0.238751;0.273005;0.308658;0.345492;0.383277;0.421783;0.46077;0.5;0.53923;0.578217;0.616723;0.654508;0.691342;0.726995;0.761249;0.793893;0.824724;0.853553;0.880203;0.904508;0.92632;0.945503;0.96194;0.975528;0.986185;0.993844;0.998459;1 + + 0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0 + + 0;-0.000112;-0.000446;-0.000995;-0.001751;-0.002699;-0.003825;-0.005111;-0.006535;-0.008079;-0.009719;-0.011434;-0.013202;-0.015;-0.016805;-0.018594;-0.020343;-0.022027;-0.023621;-0.025098;-0.026431;-0.027592;-0.028554;-0.029291;-0.029778;-0.029994;-0.029921;-0.029544;-0.028856;-0.027854;-0.026541;-0.024927;-0.023024;-0.020853;-0.018433;-0.01579;-0.012947;-0.009927;-0.006752;-0.003438;0;0.003438;0.006752;0.009927;0.012947;0.01579;0.018433;0.020853;0.023024;0.024927;0.026541;0.027854;0.028856;0.029544;0.029921;0.029994;0.029778;0.029291;0.028554;0.027592;0.026431;0.025098;0.023621;0.022027;0.020343;0.018594;0.016805;0.015;0.013202;0.011434;0.009719;0.008079;0.006535;0.005111;0.003825;0.002699;0.001751;0.000995;0.000446;0.000112;0 Engine pylonR circle profile - 0.5;0.4;0.3;0.2;0.1;0;-0.1;-0.2;-0.3;-0.4;-0.5;-0.4;-0.3;-0.2;-0.1;0;0.1;0.2;0.3;0.4;0.5 + + 0.5;0.4;0.3;0.2;0.1;0;-0.1;-0.2;-0.3;-0.4;-0.5;-0.4;-0.3;-0.2;-0.1;0;0.1;0.2;0.3;0.4;0.5 0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0 - 0;-0.3;-0.4;-0.458258;-0.489898;-0.5;-0.489898;-0.458258;-0.4;-0.3;0;0.3;0.4;0.458258;0.489898;0.5;0.489898;0.458258;0.4;0.3;0 + + 0;-0.3;-0.4;-0.458258;-0.489898;-0.5;-0.489898;-0.458258;-0.4;-0.3;0;0.3;0.4;0.458258;0.489898;0.5;0.489898;0.458258;0.4;0.3;0 Circle - Profile build up from set of Points on Circle where may Dimensions are 1..-1 + Profile build up from set of Points on Circle where may Dimensions + are 1..-1 0;0;0;0;0 0;1;0;-1;0 @@ -1265,9 +1328,12 @@ NACA0.00.00.10 NACA 4 Series Profile - 1;0.9875;0.975;0.9625;0.95;0.9375;0.925;0.9125;0.9;0.8875;0.875;0.8625;0.85;0.8375;0.825;0.8125;0.8;0.7875;0.775;0.7625;0.75;0.7375;0.725;0.7125;0.7;0.6875;0.675;0.6625;0.65;0.6375;0.625;0.6125;0.6;0.5875;0.575;0.5625;0.55;0.5375;0.525;0.5125;0.5;0.4875;0.475;0.4625;0.45;0.4375;0.425;0.4125;0.4;0.3875;0.375;0.3625;0.35;0.3375;0.325;0.3125;0.3;0.2875;0.275;0.2625;0.25;0.2375;0.225;0.2125;0.2;0.1875;0.175;0.1625;0.15;0.1375;0.125;0.1125;0.1;0.0875;0.075;0.0625;0.05;0.0375;0.025;0.0125;0;0.0125;0.025;0.0375;0.05;0.0625;0.075;0.0875;0.1;0.1125;0.125;0.1375;0.15;0.1625;0.175;0.1875;0.2;0.2125;0.225;0.2375;0.25;0.2625;0.275;0.2875;0.3;0.3125;0.325;0.3375;0.35;0.3625;0.375;0.3875;0.4;0.4125;0.425;0.4375;0.45;0.4625;0.475;0.4875;0.5;0.5125;0.525;0.5375;0.55;0.5625;0.575;0.5875;0.6;0.6125;0.625;0.6375;0.65;0.6625;0.675;0.6875;0.7;0.7125;0.725;0.7375;0.75;0.7625;0.775;0.7875;0.8;0.8125;0.825;0.8375;0.85;0.8625;0.875;0.8875;0.9;0.9125;0.925;0.9375;0.95;0.9625;0.975;0.9875;1 - 0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0 - -0.00105;-0.00250035;-0.00392865;-0.00533547;-0.00672133;-0.0080867;-0.00943205;-0.0107578;-0.0120643;-0.013352;-0.0146211;-0.0158719;-0.0171047;-0.0183197;-0.019517;-0.0206969;-0.0218593;-0.0230044;-0.0241322;-0.0252427;-0.0263359;-0.0274116;-0.0284697;-0.0295101;-0.0305326;-0.0315368;-0.0325226;-0.0334896;-0.0344375;-0.0353657;-0.0362739;-0.0371615;-0.0380281;-0.0388729;-0.0396953;-0.0404947;-0.0412702;-0.0420211;-0.0427465;-0.0434454;-0.0441169;-0.0447598;-0.0453732;-0.0459557;-0.0465061;-0.0470231;-0.0475052;-0.0479508;-0.0483584;-0.0487262;-0.0490524;-0.049335;-0.0495718;-0.0497607;-0.0498992;-0.0499847;-0.0500144;-0.0499853;-0.049894;-0.049737;-0.0495104;-0.0492097;-0.0488303;-0.0483666;-0.0478129;-0.0471621;-0.0464065;-0.045537;-0.044543;-0.0434119;-0.0421284;-0.0406734;-0.0390231;-0.0371459;-0.0349992;-0.0325222;-0.0296224;-0.0261449;-0.0217893;-0.0157825;0;0.0157825;0.0217893;0.0261449;0.0296224;0.0325222;0.0349992;0.0371459;0.0390231;0.0406734;0.0421284;0.0434119;0.044543;0.045537;0.0464065;0.0471621;0.0478129;0.0483666;0.0488303;0.0492097;0.0495104;0.049737;0.049894;0.0499853;0.0500144;0.0499847;0.0498992;0.0497607;0.0495718;0.049335;0.0490524;0.0487262;0.0483584;0.0479508;0.0475052;0.0470231;0.0465061;0.0459557;0.0453732;0.0447598;0.0441169;0.0434454;0.0427465;0.0420211;0.0412702;0.0404947;0.0396953;0.0388729;0.0380281;0.0371615;0.0362739;0.0353657;0.0344375;0.0334896;0.0325226;0.0315368;0.0305326;0.0295101;0.0284697;0.0274116;0.0263359;0.0252427;0.0241322;0.0230044;0.0218593;0.0206969;0.019517;0.0183197;0.0171047;0.0158719;0.0146211;0.013352;0.0120643;0.0107578;0.00943205;0.0080867;0.00672133;0.00533547;0.00392865;0.00250035;0.00105 + + 1;0.9875;0.975;0.9625;0.95;0.9375;0.925;0.9125;0.9;0.8875;0.875;0.8625;0.85;0.8375;0.825;0.8125;0.8;0.7875;0.775;0.7625;0.75;0.7375;0.725;0.7125;0.7;0.6875;0.675;0.6625;0.65;0.6375;0.625;0.6125;0.6;0.5875;0.575;0.5625;0.55;0.5375;0.525;0.5125;0.5;0.4875;0.475;0.4625;0.45;0.4375;0.425;0.4125;0.4;0.3875;0.375;0.3625;0.35;0.3375;0.325;0.3125;0.3;0.2875;0.275;0.2625;0.25;0.2375;0.225;0.2125;0.2;0.1875;0.175;0.1625;0.15;0.1375;0.125;0.1125;0.1;0.0875;0.075;0.0625;0.05;0.0375;0.025;0.0125;0;0.0125;0.025;0.0375;0.05;0.0625;0.075;0.0875;0.1;0.1125;0.125;0.1375;0.15;0.1625;0.175;0.1875;0.2;0.2125;0.225;0.2375;0.25;0.2625;0.275;0.2875;0.3;0.3125;0.325;0.3375;0.35;0.3625;0.375;0.3875;0.4;0.4125;0.425;0.4375;0.45;0.4625;0.475;0.4875;0.5;0.5125;0.525;0.5375;0.55;0.5625;0.575;0.5875;0.6;0.6125;0.625;0.6375;0.65;0.6625;0.675;0.6875;0.7;0.7125;0.725;0.7375;0.75;0.7625;0.775;0.7875;0.8;0.8125;0.825;0.8375;0.85;0.8625;0.875;0.8875;0.9;0.9125;0.925;0.9375;0.95;0.9625;0.975;0.9875;1 + + 0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0 + + -0.00105;-0.00250035;-0.00392865;-0.00533547;-0.00672133;-0.0080867;-0.00943205;-0.0107578;-0.0120643;-0.013352;-0.0146211;-0.0158719;-0.0171047;-0.0183197;-0.019517;-0.0206969;-0.0218593;-0.0230044;-0.0241322;-0.0252427;-0.0263359;-0.0274116;-0.0284697;-0.0295101;-0.0305326;-0.0315368;-0.0325226;-0.0334896;-0.0344375;-0.0353657;-0.0362739;-0.0371615;-0.0380281;-0.0388729;-0.0396953;-0.0404947;-0.0412702;-0.0420211;-0.0427465;-0.0434454;-0.0441169;-0.0447598;-0.0453732;-0.0459557;-0.0465061;-0.0470231;-0.0475052;-0.0479508;-0.0483584;-0.0487262;-0.0490524;-0.049335;-0.0495718;-0.0497607;-0.0498992;-0.0499847;-0.0500144;-0.0499853;-0.049894;-0.049737;-0.0495104;-0.0492097;-0.0488303;-0.0483666;-0.0478129;-0.0471621;-0.0464065;-0.045537;-0.044543;-0.0434119;-0.0421284;-0.0406734;-0.0390231;-0.0371459;-0.0349992;-0.0325222;-0.0296224;-0.0261449;-0.0217893;-0.0157825;0;0.0157825;0.0217893;0.0261449;0.0296224;0.0325222;0.0349992;0.0371459;0.0390231;0.0406734;0.0421284;0.0434119;0.044543;0.045537;0.0464065;0.0471621;0.0478129;0.0483666;0.0488303;0.0492097;0.0495104;0.049737;0.049894;0.0499853;0.0500144;0.0499847;0.0498992;0.0497607;0.0495718;0.049335;0.0490524;0.0487262;0.0483584;0.0479508;0.0475052;0.0470231;0.0465061;0.0459557;0.0453732;0.0447598;0.0441169;0.0434454;0.0427465;0.0420211;0.0412702;0.0404947;0.0396953;0.0388729;0.0380281;0.0371615;0.0362739;0.0353657;0.0344375;0.0334896;0.0325226;0.0315368;0.0305326;0.0295101;0.0284697;0.0274116;0.0263359;0.0252427;0.0241322;0.0230044;0.0218593;0.0206969;0.019517;0.0183197;0.0171047;0.0158719;0.0146211;0.013352;0.0120643;0.0107578;0.00943205;0.0080867;0.00672133;0.00533547;0.00392865;0.00250035;0.00105 @@ -1302,21 +1368,29 @@ False - True - 8.0 + False + False + 3.0 - 6.0 - 0.12 - 0.08 - 0.06 + 13.0 + + 5.0 + + + 5.0 + + 0.05 0.05 - 3.0 - True + 2.0 + 0.9 + 1.0 + False + False 20.0 - 25.0 + 20.0 - + \ No newline at end of file diff --git a/tests/test_integration_tests.py b/tests/test_integration_tests.py index 54b30c6b2..87173559e 100644 --- a/tests/test_integration_tests.py +++ b/tests/test_integration_tests.py @@ -62,7 +62,6 @@ def workflow_ends(): @pytest.mark.skipif(not shutil.which("pytornado"), reason="PyTornado not installed") def test_integration_1(): - modules_to_run = [ "WeightConventional", "PyTornado", @@ -81,7 +80,6 @@ def test_integration_1(): @pytest.mark.skipif(not shutil.which("dwfsumo"), reason="SUMO not installed") @pytest.mark.skipif(not shutil.which("SU2_CFD"), reason="SU2_CFD not installed") def test_integration_2(): - modules_to_run = ["CPACS2SUMO", "SUMOAutoMesh", "SU2Run", "ExportCSV"] with change_working_dir(WORKFLOW_TEST_DIR): @@ -94,7 +92,6 @@ def test_integration_2(): @pytest.mark.skipif(not shutil.which("dwfsumo"), reason="SUMO not installed") @pytest.mark.skipif(not shutil.which("SU2_CFD"), reason="SU2_CFD not installed") def test_integration_3(): - modules_to_run = ["CLCalculator", "CPACS2SUMO", "SUMOAutoMesh", "SU2Run"] with change_working_dir(WORKFLOW_TEST_DIR): @@ -107,7 +104,6 @@ def test_integration_3(): @pytest.mark.skipif(not shutil.which("gmsh"), reason="GMSH not installed") @pytest.mark.skipif(not shutil.which("SU2_CFD"), reason="SU2_CFD not installed") def test_integration_4(): - modules_to_run = ["CPACS2GMSH", "SU2Run", "SaveAeroCoefficients"] with change_working_dir(WORKFLOW_TEST_DIR): @@ -121,7 +117,6 @@ def test_integration_4(): # ================================================================================================= if __name__ == "__main__": - print("Integration tests") print("To run test use the following command:") print(">> pytest -v . --cov=../ceasiompy --cov-report term")