openglider.lines

class openglider.lines.Line(lower_node, upper_node, v_inf, line_type=<openglider.lines.line_types.linetype.LineType object>, target_length=None, number=None, name=None, color='')[source]

Bases: CachedObject

property color
property diff_vector

Line Direction vector (normalized) :return:

property diff_vector_projected
drag_total

Get total drag of line :return: 1/2 * cw * A * v^2

force_projected
get_connected_ribs(glider)[source]

return the connected ribs

get_correction_influence(residual_force)[source]

returns an influence factor [force / length] which is a proposal for the correction of a residual force if the line is moved in the direction of the residual force

get_line_point(x, sag=True)[source]

pos(x) [x,y,z], x: [0,1]

get_line_points(sag=True, numpoints=10)[source]

Return points of the line

get_mesh(numpoints)[source]
get_rib_normal(glider)[source]

return the rib normal of the connected rib(s)

get_sag(x)[source]

sag u(x) [m], x: [0,1]

get_stretched_length(pre_load=50, sag=True)[source]

Get the total line-length for production using a given stretch length = len_0 * (1 + stretch*force)

get_weight()[source]
property has_geo

true if upper and lower nodes of the line were already computed

property length_no_sag
length_projected
length_with_sag
property ortho_pressure

drag per meter (projected) :return: 1/2 * cw * d * v^2

rho_air = 1.2
rib_line_norm(glider)[source]

returns the squared norm of the cross-product of the line direction and the normal-direction of the connected rib(s)

property v_inf
property v_inf_0
class openglider.lines.LineSet(lines, v_inf=None)[source]

Bases: object

Set of different lines

property attachment_points
calc_forces(start_lines)[source]
calculate_sag = True
copy()[source]
create_tree(start_node=None)[source]

Create a tree of lines :return: [(line, [(upper_line1, []),…]),(…)]

property floors

number of line-levels

Type:

floors

get_connected_lines(node)[source]
get_drag()[source]

Get Total drag of the lineset :return: Center of Pressure, Drag (1/2*cw*A*v^2)

get_floor_strength(node: Node = None)[source]
get_force_table()[source]
get_line_length(line)[source]
get_lines_by_floor(target_floor: int = 0, node: Node = None, en_style=True)[source]

starting from node: walk up “target_floor” floors and return all the lines.

when en_style is True the uppermost lines are added in case there is no such floor (see EN 926.1 for details)

get_lower_connected_lines(node)[source]
get_main_attachment_point()[source]
get_mesh(numpoints=10, main_lines_only=False)[source]
get_normalized_drag()[source]

get the line drag normalized by the velocity ** 2 / 2

get_residual_force(node)[source]

compute the residual force in a node to due simplified computation of lines

get_table()[source]
get_table_2()[source]
get_table_sorted_lengths()[source]
get_tangential_comp(line, pos_vec)[source]
get_upper_connected_force(node)[source]

get the sum of the forces of all upper-connected lines

get_upper_connected_lines(node)[source]
get_upper_influence_nodes(line=None, node=None)[source]

get the points that have influence on the line and are connected to the wing

get_upper_line_mesh(numpoints=1, breaks=False)[source]
get_upper_lines(node)[source]

recursive upper lines for node :param node: :return:

get_weight()[source]
iterate_target_length(steps=10, pre_load=50)[source]

iterative method to satisfy the target length

knots_table = [['liros.ltc65', 'liros.ltc65', 2, 2.0, 2.0]]
property lower_attachment_points
property lowest_lines
node_group_rex = re.compile('[^A-Za-z]*([A-Za-z]*)[^A-Za-z]*')
property nodes
recalc(calculate_sag=True, iterations=1)[source]

Recalculate Lineset Geometry. if LineSet.calculate_sag = True, drag induced sag will be calculated :return: self

rename_lines()[source]
scale(factor)[source]
sort_lines(lines=None)[source]
property total_length
property uppermost_lines
class openglider.lines.Node(node_type, position_vector=None, attachment_point=None, name=None)[source]

Bases: object

calc_force_infl(vec)[source]
calc_proj_vec(v_inf)[source]
copy()[source]
get_diff()[source]
get_position()[source]
is_upper()[source]