Exported Types

Basic types

KiteModels.SimFloatType
const SimFloat = Float64

This type is used for all real variables, used in the Simulation. Possible alternatives: Float32, Double64, Dual Other types than Float64 or Float32 do require support of Julia types by the solver.

source
KiteModels.KVec3Type

const KVec3 = MVector{3, SimFloat}

Basic 3-dimensional vector, stack allocated, mutable.

source
KiteModels.SVec3Type

const SVec3 = SVector{3, SimFloat}

Basic 3-dimensional vector, stack allocated, immutable.

source
KiteModels.AbstractKiteModelType
abstract type AbstractKiteModel

All kite models must inherit from this type. All methods that are defined on this type must work with all kite models. All exported methods must work on this type.

source

Struct KPS3 and KPS4 and KPS4_3L

KiteModels.KPS3Type
mutable struct KPS3{S, T, P} <: AbstractKiteModel

State of the kite power system. Parameters:

  • S: Scalar type, e.g. SimFloat In the documentation mentioned as Any, but when used in this module it is always SimFloat and not Any.
  • T: Vector type, e.g. MVector{3, SimFloat}
  • P: number of points of the system, segments+1

Normally a user of this package will not have to access any of the members of this type directly, use the input and output functions instead.

  • set::Settings: Reference to the settings struct

  • kcu::KCU: Reference to the KCU model (Kite Control Unit as implemented in the package KitePodModels

  • am::AtmosphericModel: Reference to the atmospheric model as implemented in the package AtmosphericModels Default: AtmosphericModel()

  • wm::Union{Nothing, AbstractWinchModel}: Reference to winch model as implemented in the package WinchModels Default: nothing

  • iter::Int64: Iterations, number of calls to the function residual! Default: 0

  • calc_cl::Dierckx.Spline1D: Function for calculation the lift coefficent, using a spline based on the provided value pairs.

  • calc_cd::Dierckx.Spline1D: Function for calculation the drag coefficent, using a spline based on the provided value pairs.

  • v_wind::Any: wind vector at the height of the kite Default: zeros(S, 3)

  • v_wind_gnd::Any: wind vector at reference height Default: zeros(S, 3)

  • v_wind_tether::Any: wind vector used for the calculation of the tether drag Default: zeros(S, 3)

  • v_apparent::Any: apparent wind vector at the kite Default: zeros(S, 3)

  • v_app_perp::Any: vector, perpendicular to vapparent; output of calcdrag Default: zeros(S, 3)

  • alpha_2::Any: angle of attack of the kite; output of setclcd! Default: 0.0

  • drag_force::Any: drag force of kite and bridle; output of calcaeroforces Default: zeros(S, 3)

  • lift_force::Any: lift force of the kite; output of calcaeroforces Default: zeros(S, 3)

  • steering_force::Any: steering force acting on the kite; output of calcaeroforces Default: zeros(S, 3)

  • last_force::Any: Default: zeros(S, 3)

  • spring_force::Any: spring force of the current tether segment, output of calc_res Default: zeros(S, 3)

  • total_forces::Any: Default: zeros(S, 3)

  • force::Any: sum of spring and drag forces acting on the current segment, output of calc_res Default: zeros(S, 3)

  • unit_vector::Any: unit vector in the direction of the current tether segment, output of calc_res Default: zeros(S, 3)

  • av_vel::Any: average velocity of the current tether segment, output of calc_res Default: zeros(S, 3)

  • kite_y::Any: y-vector of the kite fixed referense frame, output of calcaeroforces Default: zeros(S, 3)

  • segment::Any: vector representing one tether segment (p1-p2) Default: zeros(S, 3)

  • last_tether_drag::Any: vector of the drag force of the last calculated tether segment Default: zeros(S, 3)

  • vec_z::Any: z vector of the kite reference frame Default: zeros(S, 3)

  • res1::StaticArraysCore.SVector{P, StaticArraysCore.MVector{3, Float64}} where P: part one of the residual, difference between pos' and vel, non-flat, mainly for unit testing Default: zeros(SVector{P, KVec3})

  • res2::StaticArraysCore.SVector{P, StaticArraysCore.MVector{3, Float64}} where P: part two of the residual, difference between vel' and acc, non-flat, mainly for unit testing Default: zeros(SVector{P, KVec3})

  • pos::StaticArraysCore.SVector{P, StaticArraysCore.MVector{3, Float64}} where P: vector of the positions of the particles Default: zeros(SVector{P, KVec3})

  • vel_kite::Any: velocity vector of the kite Default: zeros(S, 3)

  • seg_area::Any: area of one tether segment [m²] Default: zero(S)

  • bridle_area::Any: total actual bridle area [m²] Default: zero(S)

  • c_spring::Any: spring constant, depending on the length of the tether segment Default: zero(S)

  • segment_length::Any: unstressed segment length [m] Default: 0.0

  • damping::Any: damping factor, depending on the length of the tether segment Default: zero(S)

  • last_v_app_norm_tether::Any: last norm of the apparent wind speed at a tether segment [m/s] Default: zero(S)

  • param_cl::Any: lift coefficient of the kite, depending on the angle of attack Default: 0.2

  • param_cd::Any: drag coefficient of the kite, depending on the angle of attack Default: 1.0

  • cor_steering::Any: correction term for the steering, in paper named i_(s,c), Eq. 30 Default: zero(S)

  • psi::Any: azimuth angle in radian; inital value is zero Default: zero(S)

  • beta::Any: elevation angle in radian; initial value about 70 degrees Default: deg2rad((se()).elevation)

  • alpha_depower::Any: depower angle [deg] Default: 0.0

  • t_0::Any: relative start time of the current time interval Default: 0.0

  • v_reel_out::Any: reel out speed of the winch [m/s] Default: 0.0

  • last_v_reel_out::Any: reel out speed during the last time step Default: 0.0

  • l_tether::Any: unstretched tether length Default: 0.0

  • rho::Any: air density at the height of the kite Default: 0.0

  • depower::Any: actual relative depower setting, must be between 0 .. 1.0 Default: 0.0

  • steering::Any: actual relative steering setting, must be between -1.0 .. 1.0 Default: 0.0

  • stiffness_factor::Any: factor for the tether stiffness, used to find the steady state with a low stiffness first Default: 1.0

  • initial_masses::StaticArraysCore.MVector{P, S} where {S, P}: initial masses of the point masses Default: ones(P)

  • masses::StaticArraysCore.MVector{P, S} where {S, P}: current masses, depending on the total tether length Default: ones(P)

  • forces::StaticArraysCore.SVector{P, StaticArraysCore.MVector{3, Float64}} where P: vector of the forces, acting on the particles Default: zeros(SVector{P, KVec3})

  • sync_speed::Union{Nothing, S} where S: synchronous speed of the motor/ generator Default: 0.0

  • set_torque::Union{Nothing, S} where S: set_torque of the motor/generator Default: nothing

source
KiteModels.KPS4Type
mutable struct KPS4{S, T, P, Q, SP} <: AbstractKiteModel

State of the kite power system, using a 4 point kite model. Parameters:

  • S: Scalar type, e.g. SimFloat In the documentation mentioned as Any, but when used in this module it is always SimFloat and not Any.
  • T: Vector type, e.g. MVector{3, SimFloat}
  • P: number of points of the system, segments+1
  • Q: number of springs in the system, P-1
  • SP: struct type, describing a spring

Normally a user of this package will not have to access any of the members of this type directly, use the input and output functions instead.

  • set::Settings: Reference to the settings struct

  • kcu::KCU: Reference to the KCU model (Kite Control Unit as implemented in the package KitePodModels

  • am::AtmosphericModel: Reference to the atmospheric model as implemented in the package AtmosphericModels Default: AtmosphericModel()

  • wm::AbstractWinchModel: Reference to winch model as implemented in the package WinchModels

  • iter::Int64: Iterations, number of calls to the function residual! Default: 0

  • calc_cl::Dierckx.Spline1D: Function for calculation the lift coefficent, using a spline based on the provided value pairs.

  • calc_cd::Dierckx.Spline1D: Function for calculation the drag coefficent, using a spline based on the provided value pairs.

  • v_wind::Any: wind vector at the height of the kite Default: zeros(S, 3)

  • v_wind_gnd::Any: wind vector at reference height Default: zeros(S, 3)

  • v_wind_tether::Any: wind vector used for the calculation of the tether drag Default: zeros(S, 3)

  • v_apparent::Any: apparent wind vector at the kite Default: zeros(S, 3)

  • bridle_factor::Any: bridlefactor = set.lbridle/bridle_length(set) Default: 1.0

  • side_cl::Any: side lift coefficient, the difference of the left and right lift coeficients Default: 0.0

  • drag_force::Any: drag force of kite and bridle; output of calcaeroforces! Default: zeros(S, 3)

  • side_force::Any: side_force acting on the kite Default: zeros(S, 3)

  • ks::Any: max_steering angle in radian Default: 0.0

  • lift_force::Any: lift force of the kite; output of calcaeroforces! Default: zeros(S, 3)

  • spring_force::Any: spring force of the current tether segment, output of calcparticleforces! Default: zeros(S, 3)

  • last_force::Any: last winch force Default: zeros(S, 3)

  • res1::StaticArraysCore.SVector{P, StaticArraysCore.MVector{3, Float64}} where P: a copy of the residual one (pos,vel) for debugging and unit tests Default: zeros(SVector{P, KVec3})

  • res2::StaticArraysCore.SVector{P, StaticArraysCore.MVector{3, Float64}} where P: a copy of the residual two (vel,acc) for debugging and unit tests Default: zeros(SVector{P, KVec3})

  • pos::StaticArraysCore.SVector{P, StaticArraysCore.MVector{3, Float64}} where P: a copy of the actual positions as output for the user Default: zeros(SVector{P, KVec3})

  • vel_kite::Any: velocity vector of the kite Default: zeros(S, 3)

  • segment_length::Any: unstressed segment length [m] Default: 0.0

  • param_cl::Any: lift coefficient of the kite, depending on the angle of attack Default: 0.2

  • param_cd::Any: drag coefficient of the kite, depending on the angle of attack Default: 1.0

  • psi::Any: azimuth angle in radian; inital value is zero Default: zero(S)

  • alpha_depower::Any: depower angle [deg] Default: 0.0

  • alpha_2::Any: aoa at paricle B Default: 0.0

  • alpha_2b::Any: aoa at paricle B, corrected formula Default: 0.0

  • alpha_3::Any: aoa at paricle C Default: 0.0

  • alpha_3b::Any: Default: 0.0

  • alpha_4::Any: aoa at paricle D Default: 0.0

  • alpha_4b::Any: Default: 0.0

  • t_0::Any: relative start time of the current time interval Default: 0.0

  • v_reel_out::Any: reel out speed of the winch Default: 0.0

  • last_v_reel_out::Any: reel out speed at the last time step Default: 0.0

  • l_tether::Any: unstretched tether length Default: 0.0

  • rho::Any: air density at the height of the kite Default: 0.0

  • depower::Any: actual relative depower setting, must be between 0 .. 1.0 Default: 0.0

  • steering::Any: actual relative steering setting, must be between -1.0 .. 1.0 Default: 0.0

  • stiffness_factor::Any: multiplier for the stiffniss of tether and bridle Default: 1.0

  • initial_masses::StaticArraysCore.MVector{P, S} where {S, P}: initial masses of the point masses Default: ones(P)

  • masses::StaticArraysCore.MVector{P, S} where {S, P}: current masses, depending on the total tether length Default: zeros(P)

  • springs::StaticArraysCore.MVector: vector of the springs, defined as struct Default: zeros(SP, Q)

  • forces::StaticArraysCore.SVector{P, StaticArraysCore.MVector{3, Float64}} where P: vector of the forces, acting on the particles Default: zeros(SVector{P, KVec3})

  • sync_speed::Union{Nothing, S} where S: synchronous speed of the motor/ generator Default: 0.0

  • set_torque::Union{Nothing, S} where S: set_torque of the motor/generator Default: nothing

  • x::Any: x vector of kite reference frame Default: zeros(S, 3)

  • y::Any: y vector of kite reference frame Default: zeros(S, 3)

  • z::Any: z vector of kite reference frame Default: zeros(S, 3)

source
KiteModels.KPS4_3LType
mutable struct KPS4_3L{S, T, P, Q, SP} <: AbstractKiteModel

State of the kite power system, using a 3 point kite model and three steering lines to the ground. Parameters:

  • S: Scalar type, e.g. SimFloat In the documentation mentioned as Any, but when used in this module it is always SimFloat and not Any.
  • T: Vector type, e.g. KVec3
  • P: number of points of the system, segments+3
  • Q: number of springs in the system, P-1
  • SP: struct type, describing a spring

Normally a user of this package will not have to access any of the members of this type directly, use the input and output functions instead.

  • set::Settings: Reference to the settings struct

  • set_hash::UInt64: Reference to the settings hash Default: 0

  • last_init_elevation::Any: The last initial elevation Default: 0.0

  • last_init_tether_length::Any: The last initial tether length Default: 0.0

  • last_set_hash::UInt64: Reference to the last settings hash Default: 0

  • am::AtmosphericModel: Reference to the atmospheric model as implemented in the package AtmosphericModels Default: AtmosphericModel()

  • cl_interp::Function: Function for calculating the lift coefficent, using linear interpolation based on the provided value pairs.

  • cd_interp::Function: Function for calculating the drag coefficent, using linear interpolation based on the provided value pairs.

  • c_te_interp::Function: Function for calculating the trailing edge force coefficient, using linear interpolation based on the provided value pairs.

  • motors::StaticArraysCore.SizedArray{Tuple{3}, AbstractWinchModel, N, M, TData} where {N, M, TData<:AbstractArray{AbstractWinchModel, M}}: Reference to the motor models as implemented in the package WinchModels. index 1: middle motor, index 2: left motor, index 3: right motor

  • iter::Int64: Iterations, number of calls to the function residual! Default: 0

  • v_wind::Any: wind vector at the height of the kite Default: zeros(S, 3)

  • v_wind_gnd::Any: wind vector at reference height Default: zeros(S, 3)

  • v_wind_tether::Any: wind vector used for the calculation of the tether drag Default: zeros(S, 3)

  • v_apparent::Any: apparent wind vector at the kite Default: zeros(S, 3)

  • winch_forces::StaticArraysCore.SVector{3}: last winch force Default: [zeros(S, 3) for _ = 1:3]

  • res1::StaticArraysCore.SVector{P, T} where {T, P}: a copy of the residual one (pos,vel) for debugging and unit tests Default: zeros(SVector{P, T})

  • res2::StaticArraysCore.SVector{P, T} where {T, P}: a copy of the residual two (vel,acc) for debugging and unit tests Default: zeros(SVector{P, T})

  • pos::StaticArraysCore.SVector{P, T} where {T, P}: a copy of the actual positions as output for the user Default: zeros(SVector{P, T})

  • vel::StaticArraysCore.SVector{P, T} where {T, P}: Default: zeros(SVector{P, T})

  • veld::StaticArraysCore.SVector{P, T} where {T, P}: Default: zeros(SVector{P, T})

  • flap_acc::StaticArraysCore.MVector{2}: Default: zeros(MVector{2, S})

  • vel_kite::Any: velocity vector of the kite Default: zeros(S, 3)

  • segment_lengths::Any: unstressed segment lengths of the three tethers [m] Default: zeros(S, 3)

  • psi::Any: azimuth angle in radian; inital value is zero Default: zero(S)

  • t_0::Any: relative start time of the current time interval Default: 0.0

  • reel_out_speeds::Any: reel out speed of the winch Default: zeros(S, 3)

  • tether_lengths::Any: unstretched tether length Default: zeros(S, 3)

  • flap_angle::StaticArraysCore.MVector{2}: lengths of the connections of the steering tethers to the kite Default: zeros(S, 2)

  • rho::Any: air density at the height of the kite Default: 0.0

  • damping_coeff::Any: multiplier for the damping of all movement Default: 0.0

  • masses::StaticArraysCore.MVector{P, S} where {S, P}: current masses, depending on the total tether length Default: zeros(P)

  • springs::StaticArraysCore.MVector: vector of the springs, defined as struct Default: zeros(SP, Q)

  • c_spring::Any: unit spring coefficient Default: zero(S)

  • damping::Any: unit damping coefficient Default: zero(S)

  • forces::StaticArraysCore.SVector{P, T} where {T, P}: vector of the forces, acting on the particles Default: zeros(SVector{P, T})

  • set_values::StaticArraysCore.MVector{3, Float64}: synchronous speed or torque of the motor/ generator Default: zeros(KVec3)

  • torque_control::Bool: whether or not to use torque control instead of speed control Default: false

  • e_x::Any: x vector of kite reference frame Default: zeros(S, 3)

  • e_y::Any: y vector of kite reference frame Default: zeros(S, 3)

  • e_z::Any: z vector of kite reference frame Default: zeros(S, 3)

  • num_flap_C::Int64: Point number of C flap connection point Default: 0

  • num_flap_D::Int64: Point number of D flap connection point Default: 0

  • num_E::Int64: Point number of E Default: 0

  • num_C::Int64: Point number of C Default: 0

  • num_D::Int64: Point number of D Default: 0

  • num_A::Int64: Point number of A Default: 0

  • α_l::Any: Angle of left tip Default: 0.0

  • α_r::Any: Angle of right tip Default: 0.0

  • α_C::Any: Angle of point C Default: 0.0

  • kite_length_C::Any: Kite length at point C Default: 0.0

  • L_C::Any: Lift of point C Default: zeros(S, 3)

  • L_D::Any: Lift of point D Default: zeros(S, 3)

  • D_C::Any: Drag of point C Default: zeros(S, 3)

  • D_D::Any: Drag of point D Default: zeros(S, 3)

  • steady_sol::Union{Nothing, SciMLBase.NonlinearSolution}: Solution of the steady state problem Default: nothing

  • simple_sys::Union{Nothing, ModelingToolkit.ODESystem}: Simplified system of the mtk model Default: nothing

  • v_wind_gnd_idx::Union{Nothing, ModelingToolkit.ParameterIndex}: Default: nothing

  • v_wind_idx::Union{Nothing, ModelingToolkit.ParameterIndex}: Default: nothing

  • prob::Union{Nothing, SciMLBase.ODEProblem}: Default: nothing

  • set_set_values::Union{Nothing, SymbolicIndexingInterface.MultipleSetters}: Default: nothing

  • get_pos::Union{Nothing, SymbolicIndexingInterface.MultipleGetters, SymbolicIndexingInterface.TimeDependentObservedFunction}: Default: nothing

  • get_flap_angle::Union{Nothing, SymbolicIndexingInterface.MultipleGetters, SymbolicIndexingInterface.TimeDependentObservedFunction}: Default: nothing

  • get_flap_acc::Union{Nothing, SymbolicIndexingInterface.MultipleGetters, SymbolicIndexingInterface.TimeDependentObservedFunction}: Default: nothing

  • get_kite_vel::Union{Nothing, SymbolicIndexingInterface.MultipleGetters, SymbolicIndexingInterface.TimeDependentObservedFunction}: Default: nothing

  • get_winch_forces::Union{Nothing, SymbolicIndexingInterface.MultipleGetters, SymbolicIndexingInterface.TimeDependentObservedFunction}: Default: nothing

  • get_tether_lengths::Union{Nothing, SymbolicIndexingInterface.MultipleGetters, SymbolicIndexingInterface.TimeDependentObservedFunction}: Default: nothing

  • get_tether_vels::Union{Nothing, SymbolicIndexingInterface.MultipleGetters, SymbolicIndexingInterface.TimeDependentObservedFunction}: Default: nothing

  • get_L_C::Union{Nothing, SymbolicIndexingInterface.MultipleGetters, SymbolicIndexingInterface.TimeDependentObservedFunction}: Default: nothing

  • get_L_D::Union{Nothing, SymbolicIndexingInterface.MultipleGetters, SymbolicIndexingInterface.TimeDependentObservedFunction}: Default: nothing

  • get_D_C::Union{Nothing, SymbolicIndexingInterface.MultipleGetters, SymbolicIndexingInterface.TimeDependentObservedFunction}: Default: nothing

  • get_D_D::Union{Nothing, SymbolicIndexingInterface.MultipleGetters, SymbolicIndexingInterface.TimeDependentObservedFunction}: Default: nothing

  • integrator::Union{Nothing, OrdinaryDiffEqCore.ODEIntegrator, Sundials.CVODEIntegrator}: Default: nothing

  • u0::Vector{Float64}: Default: [0.0]

source

These structs store the state of the one point model and four point model. Only in unit tests it is allowed to access the members directly, otherwise use the input and output functions. The model KPS4_3L is not yet implemented, it is just a copy of KPS4.