Skip to content

Defining a kite geometry in a .yaml file #49

@jellepoland

Description

@jellepoland

Here is an example structure of how I create geometries in Python from a .yaml file:

wing_sections:
  # ---------------------------------------------------------------
  # headers:
  #   - airfoil_id: integer, unique identifier for the airfoil (matches wing_airfoils)
  #   - LE_x: x-coordinate of leading edge
  #   - LE_y: y-coordinate of leading edge
  #   - LE_z: z-coordinate of leading edge
  #   - TE_x: x-coordinate of trailing edge
  #   - TE_y: y-coordinate of trailing edge
  #   - TE_z: z-coordinate of trailing edge
  # ---------------------------------------------------------------
  headers: [airfoil_id, LE_x, LE_y, LE_z, TE_x, TE_y, TE_z]
  data:
    - [19, 0.10494809354160103, 4.110425010287237, 8.27069488190273, 0.9322352740642089, 4.136759541813347, 8.276769856483405]
    - [18, -0.12594856150986303, 4.095312460948618, 8.381752674216157, 0.9480319715306028, 4.119176793915081, 8.387506882641508]
    - [17, -0.415204088177974, 4.058392218797549, 8.602739816172805, 0.9806642670037444, 4.0661917809302714, 8.604784652851428]
    - [16, -0.5839406178913704, 4.017404143963288, 8.823136130673557, 1.0133061573517872, 4.0126965083918655, 8.821802062421128]
    - [15, -0.6731255454312801, 3.9710648600916856, 9.042296994306358, 1.0459407519807051, 3.959304771307195, 9.038711553698102]
    - [14, -0.7630010692513897, 3.808661454565653, 9.461650307607462, 1.1148900094481449, 3.8099544198423287, 9.462462687618386]
    - [13, -0.8034346573868656, 3.671721332477886, 9.640208096108445, 1.1590484514963157, 3.676560321852442, 9.644355401152323]
    - [12, -0.8426236438512831, 3.5037765531662273, 9.793146879047017, 1.2069146554234733, 3.5081098865401383, 9.79813951074277]
    - [11, -0.9107041725649544, 3.136094612354681, 10.04874447891271, 1.3282999037052468, 3.1343435230977734, 10.046504069372347]
    - [10, -0.9734084029764644, 2.799119438334862, 10.344239736588595, 1.341651389866222, 2.7979060165852596, 10.342401274552168]
    - [9, -1.0012604181004636, 2.60606743950073, 10.460915675643339, 1.3470535121521396, 2.607652208222479, 10.4640730423076]
    - [8, -1.0255704673876633, 2.3933957820040352, 10.539222758944668, 1.3704766336634273, 2.3946575320852, 10.542717092764684]
    - [7, -1.066808167099677, 1.9597511829533572, 10.648710571788577, 1.4286937460004634, 1.9587427796536303, 10.645858306351975]
    - [6, -1.102721455861017, 1.5539231291222366, 10.837899390284646, 1.4218476587327253, 1.5529087742581646, 10.834735742551917]
    - [5, -1.1174483964012778, 1.3372547196154843, 10.903130724885706, 1.4206278262933396, 1.337221665561774, 10.902962868560538]
    - [4, -1.1290037004055944, 1.111273134975715, 10.922140965756022, 1.4350857915331694, 1.1111744842343718, 10.920881486234418]
    - [3, -1.1448828836323988, 0.6642030404518473, 10.908203792543517, 1.4733964618305042, 0.6638228115665804, 10.903361447444984]
    - [2, -1.1544229650457856, 0.22477286325409476, 10.989264150331223, 1.4484005139953104, 0.2247570459738744, 10.989096462216464]
    - [1, -1.1557911914860979, 0.0, 11.00491618799836, 1.443146003226444, 0.0, 11.004972573823276]
    - [2, -1.1544229650457856, -0.22477286325409476, 10.989264150331223, 1.4484005139953104, -0.2247570459738744, 10.989096462216464]
    - [3, -1.1448828836323988, -0.6642030404518473, 10.908203792543517, 1.4733964618305042, -0.6638228115665804, 10.903361447444984]
    - [4, -1.1290037004055944, -1.111273134975715, 10.922140965756022, 1.4350857915331694, -1.1111744842343718, 10.920881486234418]
    - [5, -1.1174483964012778, -1.3372547196154843, 10.903130724885706, 1.4206278262933396, -1.337221665561774, 10.902962868560538]
    - [6, -1.102721455861017, -1.5539231291222366, 10.837899390284646, 1.4218476587327253, -1.5529087742581646, 10.834735742551917]
    - [7, -1.066808167099677, -1.9597511829533572, 10.648710571788577, 1.4286937460004634, -1.9587427796536303, 10.645858306351975]
    - [8, -1.0255704673876633, -2.3933957820040352, 10.539222758944668, 1.3704766336634273, -2.3946575320852, 10.542717092764684]
    - [9, -1.0012604181004636, -2.60606743950073, 10.460915675643339, 1.3470535121521396, -2.607652208222479, 10.4640730423076]
    - [10, -0.9734084029764644, -2.799119438334862, 10.344239736588595, 1.341651389866222, -2.7979060165852596, 10.342401274552168]
    - [11, -0.9107041725649544, -3.136094612354681, 10.04874447891271, 1.3282999037052468, -3.1343435230977734, 10.046504069372347]
    - [12, -0.8426236438512831, -3.5037765531662273, 9.793146879047017, 1.2069146554234733, -3.5081098865401383, 9.79813951074277]
    - [13, -0.8034346573868656, -3.671721332477886, 9.640208096108445, 1.1590484514963157, -3.676560321852442, 9.644355401152323]
    - [14, -0.7630010692513897, -3.808661454565653, 9.461650307607462, 1.1148900094481449, -3.8099544198423287, 9.462462687618386]
    - [15, -0.6731255454312801, -3.9710648600916856, 9.042296994306358, 1.0459407519807051, -3.959304771307195, 9.038711553698102]
    - [16, -0.5839406178913704, -4.017404143963288, 8.823136130673557, 1.0133061573517872, -4.0126965083918655, 8.821802062421128]
    - [17, -0.415204088177974, -4.058392218797549, 8.602739816172805, 0.9806642670037444, -4.0661917809302714, 8.604784652851428]
    - [18, -0.12594856150986303, -4.095312460948618, 8.381752674216157, 0.9480319715306028, -4.119176793915081, 8.387506882641508]
    - [19, 0.10494809354160103, -4.110425010287237, 8.27069488190273, 0.9322352740642089, -4.136759541813347, 8.276769856483405]

wing_airfoils:
  # ---------------------------------------------------------------
  # headers:
  #   - airfoil_id: integer, unique identifier for the airfoil
  #   - type: one of [neuralfoil, breukels_regression, masure_regression, polars]
  #   - info_dict: dictionary with parameters depending on 'type'
  #
  # info_dict fields by type:
  #   - breukels_regression:
  #       t: Tube diameter non-dimensionalized by chord (required)
  #       kappa: Maximum camber height/magnitude, non-dimensionalized by chord (required)
  #   - neuralfoil:
  #       dat_file_path: Path to airfoil .dat file (x, y columns)
  #       model_size: NeuralFoil model size (e.g., "xxxlarge")
  #       xtr_lower: Lower transition location (0=forced, 1=free)
  #       xtr_upper: Upper transition location
  #       n_crit: Critical amplification factor (see guidelines below)
  #         n_crit guidelines:
  #           Sailplane:           12–14
  #           Motorglider:         11–13
  #           Clean wind tunnel:   10–12
  #           Average wind tunnel: 9   (standard "e^9 method")
  #           Dirty wind tunnel:   4–8
  #   - polars:
  #       csv_file_path: Path to polar CSV file (columns: alpha [rad], cl, cd, cm)
  #   - masure_regression:
  #       t, eta, kappa, delta, lambda, phi: Regression parameters
  #   - inviscid:
  #       no further data is required 
  # ---------------------------------------------------------------
  alpha_range: [-10, 31, 0.5] # [deg], in this range the polars are calculated
  reynolds: !!float 1e6 # Reynolds number
  headers: [airfoil_id, type, info_dict]
  data:
    - [1, masure_regression, {t: 0.0782, eta: 0.1753, kappa: 0.0955, delta: 0.0, lambda: 0.16, phi: 0.65}]
    - [2, masure_regression, {t: 0.0785, eta: 0.1684, kappa: 0.0952, delta: 0.0, lambda: 0.175, phi: 0.65}]
    - [3, masure_regression, {t: 0.0769, eta: 0.1776, kappa: 0.0947, delta: 0.0, lambda: 0.145, phi: 0.65}]
    - [4, masure_regression, {t: 0.0786, eta: 0.1764, kappa: 0.0933, delta: 0.0, lambda: 0.15, phi: 0.65}]
    - [5, masure_regression, {t: 0.0789, eta: 0.1618, kappa: 0.0924, delta: 0.0, lambda: 0.17, phi: 0.65}]
    - [6, masure_regression, {t: 0.0788, eta: 0.1756, kappa: 0.0920, delta: 0.0, lambda: 0.155, phi: 0.65}]
    - [7, masure_regression, {t: 0.0780, eta: 0.1865, kappa: 0.0894, delta: 0.0, lambda: 0.125, phi: 0.65}]
    - [8, masure_regression, {t: 0.0798, eta: 0.1682, kappa: 0.0847, delta: 0.0, lambda: 0.23, phi: 0.65}]
    - [9, masure_regression, {t: 0.0804, eta: 0.1801, kappa: 0.0854, delta: 0.0, lambda: 0.15, phi: 0.65}]
    - [10, masure_regression, {t: 0.0804, eta: 0.1701, kappa: 0.0834, delta: 0.0, lambda: 0.14, phi: 0.65}]
    - [11, masure_regression, {t: 0.0789, eta: 0.1743, kappa: 0.0760, delta: 0.0, lambda: 0.10, phi: 0.65}]
    - [12, masure_regression, {t: 0.0842, eta: 0.1976, kappa: 0.0732, delta: 0.0, lambda: 0.10, phi: 0.65}]
    - [13, masure_regression, {t: 0.0862, eta: 0.1578, kappa: 0.0667, delta: 0.0, lambda: 0.10, phi: 0.65}]
    - [14, masure_regression, {t: 0.0873, eta: 0.2206, kappa: 0.0666, delta: 0.0, lambda: 0.0, phi: 0.65}]
    - [15, masure_regression, {t: 0.0883, eta: 0.2052, kappa: 0.0574, delta: 0.0, lambda: 0.10, phi: 0.65}]
    - [16, masure_regression, {t: 0.0767, eta: 0.2068, kappa: 0.0549, delta: 0.0, lambda: 0.10, phi: 0.65}]
    - [17, masure_regression, {t: 0.0661, eta: 0.1911, kappa: 0.0567, delta: 0.0, lambda: 0.10, phi: 0.65}]
    - [18, masure_regression, {t: 0.0614, eta: 0.2122, kappa: 0.0622, delta: 0.0, lambda: 0.10, phi: 0.65}]
    - [19, masure_regression, {t: 0.0424, eta: 0.2575, kappa: 0.0677, delta: 0.0, lambda: 0.175, phi: 0.65}]



bridle_nodes:
  # ---------------------------------------------------------------
  # headers:
  #   - id: integer, unique identifier for the node
  #   - x: x-coordinate [m]
  #   - y: y-coordinate [m]
  #   - z: z-coordinate [m]
  #   - type: node type, either 'knot' or 'pulley'
  # ---------------------------------------------------------------
  headers: [id, x, y, z, type]
  data:
    - [21, -0.67653494, 2.10580567, 7.08413599, knot]
    - [22, -0.79196791, 1.01882151, 7.57069579, knot]
    - [23, -0.79196791, -1.01882151, 7.57069579, knot]
    - [24, -0.67653494, -2.10580567, 7.08413599, knot]
    - [25, -0.46444477, 0.77505128, 4.23316161, knot]
    - [26, -0.46444477, -0.77505128, 4.23316161, knot]
    - [27, 0.54344694, 1.57655435, 5.91086207, knot]
    - [28, 0.62960591, 0.92728966, 6.64639402, knot]
    - [29, 0.62960591, -0.92728966, 6.64639402, knot]
    - [30, 0.54344694, -1.57655435, 5.91086207, knot]
    - [31, 0.39092886, 0.71221536, 4.26118728, knot]
    - [32, 0.39092886, -0.71221536, 4.26118728, knot]
    - [33, 0.30679124, 0.49235914, 3.39885672, pulley]
    - [34, 0.28625931, 0.0, 3.19030736, knot]
    - [35, 0.30679124, -0.49235914, 3.39885672, pulley]
    - [36, 0.13269336, 0.23394851, 1.48060245, knot]
    - [37, 0.13269336, -0.23394851, 1.48060245, knot]

bridle_lines:
  # ---------------------------------------------------------------
  # headers:
  #   - name: string, line name
  #   - rest_length: measured rest length [m]
  #   - diameter: line diameter [m]
  #   - material: string, material type (e.g., dyneema)
  #   - density: material density [kg/m^3]
  # ---------------------------------------------------------------
  headers: [name, rest_length, diameter, material, density]
  data:
  # front lines
  - [a6, 11.790, 0.002, dyneema,970]
  - [A5, 2.870, 0.002, dyneema,970]
  - [A3, 3.450, 0.002, dyneema,970]
  - [A2, 3.500, 0.002, dyneema,970]
  - [A1, 3.690, 0.002, dyneema,970]
  - [AII, 3.250, 0.002, dyneema,970]
  - [AI, 3.620, 0.002, dyneema,970]
  - [amain, 3.910, 0.002, dyneema,970]
  # rear lines
  - [br1, 4.410, 0.002, dyneema,970]
  - [br2, 4.170, 0.002, dyneema,970]
  - [br3, 4.140, 0.002, dyneema,970]
  - [br5, 3.580, 0.002, dyneema,970]
  - [br6, 13.560, 0.002, dyneema,970]
  - [BRI, 2.360, 0.002, dyneema,970]
  - [BRII, 2.080, 0.002, dyneema,970]
  - [BR-main-1, .700, 0.002, dyneema,970]
  - [M-line, 2.410, 0.002, dyneema,970]
  # - [S, 1.730, 0.002, dyneema,970] # measured
  # - [Power Tape, 3.330, 0.002, polyester] # measured
  - [Steering Tape, 1.530, 0.002, dyneema,970] # trying 0.2m smalller
  - [Power Tape, 2.900, 0.002, dyneema,970] # trying 0.2m smaller

bridle_connections:
  # ---------------------------------------------------------------
  # headers:
  #   - name: string, line name
  #   - ci: integer, node id (start)
  #   - cj: integer, node id (end)
  #   - ck: integer, third node id (only for pulleys, else omitted or 0)
  # ---------------------------------------------------------------
  headers: [name, ci, cj, ck]
  data:
    # front lines
    - [a6,1,25,33] #e.g. this is a pulley
    - [A5,3,21]
    - [A3,5,21]
    - [A2,7,22]
    - [A1,9,22]
    - [A1,11,23]
    - [A2,13,23]
    - [A3,15,24]
    - [A5,17,24]
    - [a6,19,26,35]
    - [AII,21,25]
    - [AI,22,25]
    - [AI,23,26]
    - [AII,24,26]
    - [amain,25,0]
    - [amain,26,0]
    # rear lines
    - [a6,1,33,25]
    - [br6,2,33,36]
    - [br6,2,36,33]
    - [br5,4,27]
    - [br3,6,27]
    - [br2,8,28]
    - [br1,10,28]
    - [br1,12,29]
    - [br2,14,29]
    - [br3,16,30]
    - [br5,18,30]
    - [a6,19,35,26]
    - [br6,20,35,37]
    - [br6,20,37,35]
    - [BRII,27,31]
    - [BRI,28,31]
    - [BRI,29,32]
    - [BRII,30,32]
    - [BR-main-1,31,33]
    - [BR-main-1,32,35]
    - [M-line,33,36,34]
    - [M-line,33,34,36]
    - [M-line,35,34,37]
    - [M-line,35,37,34]
    - [Steering Tape,36,0]
    - [Power Tape,34,0]
    - [Steering Tape,37,0]

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions