Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,11 @@
# Changelog

### KiteUtils v0.11.0 26-08-2025
#### Changed
- BREAKING: renamed c_spring to axial_stiffness and damping to axial_damping
#### Added
- the fields tether_induced_force and tether_induced_moment

### KiteUtils v0.10.16 14-08-2025
#### Fixed
- support subdirectories in data dir
Expand Down
2 changes: 1 addition & 1 deletion Project.toml
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
name = "KiteUtils"
uuid = "90980105-b163-44e5-ba9f-8b1c83bb0533"
authors = ["Uwe Fechner <uwe.fechner.msc@gmail.com> and contributors"]
version = "0.10.16"
version = "0.11.0"

[deps]
Arrow = "69666777-d1a9-59fb-9406-91d4454c9d45"
Expand Down
Binary file modified data/Test_flight.arrow
Binary file not shown.
8 changes: 4 additions & 4 deletions data/settings.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -69,8 +69,8 @@ kps4:
cmq: 0.0 # pitch rate dependant moment coefficient [-]
cord_length: 2.0 # average aerodynamic cord length of the kite [m]
kps5:
c_spring_kite: 614600.0 # unit spring constant coefficient of the kite springs [N]
damping_kite_springs: 473.0 # unit damping coefficient [Ns]
axial_stiffness_kite: 614600.0 # unit spring constant coefficient of the kite springs [N]
axial_damping_kite: 473.0 # unit damping coefficient [Ns]
rel_mass_p2: 0.25 # rel mass of p2
rel_mass_p3: 0.25 # rel mass of p3
rel_mass_p4: 0.25 # rel mass of p4 and p5
Expand Down Expand Up @@ -98,8 +98,8 @@ kcu:
tether:
d_tether: 4 # tether diameter [mm]
cd_tether: 0.958 # drag coefficient of the tether
damping: 473.0 # unit damping coefficient [Ns]
c_spring: 614600.0 # unit spring constant coefficient [N]
axial_damping: 473.0 # unit damping coefficient [Ns]
axial_stiffness: 614600.0 # unit spring constant coefficient [N]
rho_tether: 724.0 # density of Dyneema [kg/m³]
e_tether: 5.5e10 # axial tensile modulus of Dyneema (M.B. Ruppert) [Pa]
# SK75: 109 to 132 GPa according to datasheet
Expand Down
4 changes: 2 additions & 2 deletions data/settings2.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -88,8 +88,8 @@ kcu:
tether:
d_tether: 4 # tether diameter [mm]
cd_tether: 0.958 # drag coefficient of the tether
damping: 473.0 # unit damping coefficient [Ns]
c_spring: 614600.0 # unit spring constant coefficient [N]
axial_damping: 473.0 # unit damping coefficient [Ns]
axial_stiffness: 614600.0 # unit spring constant coefficient [N]
rho_tether: 724.0 # density of Dyneema [kg/m³]
e_tether: 55000000000.0 # axial tensile modulus of Dyneema (M.B. Ruppert) [Pa]
# SK75: 109 to 132 GPa according to datasheet
Expand Down
2 changes: 1 addition & 1 deletion data/settings_ram.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,7 @@ tether:
steering_tether_diameter: 1 # [mm]
cd_tether: 0.958 # drag coefficient of the tether
damping: 473.0 # unit damping coefficient [Ns]
c_spring: 614600.0 # unit spring constant coefficient [N]
axial_stiffness: 614600.0 # unit spring constant coefficient [N]
rho_tether: 724.0 # density of Dyneema [kg/m³]
e_tether: 55000000000.0 # axial tensile modulus of Dyneema (M.B. Ruppert) [Pa]
# SK75: 109 to 132 GPa according to datasheet
Expand Down
22 changes: 13 additions & 9 deletions src/_demo_syslog.jl
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ function demo_syslog(P, name="Test flight"; duration=10)
azimuth_vec = Vector{MyFloat}(undef, steps)
l_tether_vec = Vector{MVector{4, MyFloat}}(undef, steps)
v_reelout_vec = Vector{MVector{4, MyFloat}}(undef, steps)
force_vec = Vector{MVector{4, MyFloat}}(undef, steps)
winch_force_vec = Vector{MVector{4, MyFloat}}(undef, steps)
depower_vec = Vector{MyFloat}(undef, steps)
steering_vec = Vector{MyFloat}(undef, steps)
kcu_steering_vec = Vector{MyFloat}(undef, steps)
Expand All @@ -48,6 +48,8 @@ function demo_syslog(P, name="Test flight"; duration=10)
CD2_vec = Vector{MyFloat}(undef, steps)
aero_force_b_vec = Vector{MVector{3, MyFloat}}(undef, steps)
aero_moment_b_vec = Vector{MVector{3, MyFloat}}(undef, steps)
tether_induced_force_vec = Vector{MVector{3, MyFloat}}(undef, steps)
tether_induced_moment_vec = Vector{MVector{3, MyFloat}}(undef, steps)
twist_angles_vec = Vector{MVector{4, MyFloat}}(undef, steps)
vel_kite_vec = Vector{MVector{3, MyFloat}}(undef, steps)
acc_vec = Vector{MyFloat}(undef, steps)
Expand Down Expand Up @@ -91,7 +93,7 @@ function demo_syslog(P, name="Test flight"; duration=10)
azimuth_vec[i+1] = state.azimuth
l_tether_vec[i+1] = state.l_tether
v_reelout_vec[i+1] = state.v_reelout
force_vec[i+1] = state.force
winch_force_vec[i+1] = state.winch_force
depower_vec[i+1] = state.depower
steering_vec[i+1] = state.steering
kcu_steering_vec[i+1] = state.kcu_steering
Expand All @@ -113,6 +115,8 @@ function demo_syslog(P, name="Test flight"; duration=10)
CD2_vec[i+1] = state.CD2
aero_force_b_vec[i+1] = state.aero_force_b
aero_moment_b_vec[i+1] = state.aero_moment_b
tether_induced_force_vec[i+1] = state.tether_induced_force
tether_induced_moment_vec[i+1] = state.tether_induced_moment
twist_angles_vec[i+1] = state.twist_angles
vel_kite_vec[i+1] = state.vel_kite
acc_vec[i+1] = state.acc
Expand Down Expand Up @@ -144,13 +148,13 @@ function demo_syslog(P, name="Test flight"; duration=10)
end
StructArray{SysState{P}}((time_vec, t_sim_vec, sys_state_vec, cycle_vec, fig_8_vec, e_mech_vec,
orient_vec, turn_rates_vec, elevation_vec, azimuth_vec, l_tether_vec, v_reelout_vec,
force_vec, depower_vec, steering_vec, kcu_steering_vec, set_steering_vec, heading_vec,
winch_force_vec, depower_vec, steering_vec, kcu_steering_vec, set_steering_vec, heading_vec,
heading_rate_vec, course_vec, bearing_vec, attractor_vec, v_app_vec, v_wind_gnd_vec,
v_wind_200m_vec, v_wind_kite_vec, AoA_vec, side_slip_vec, alpha3_vec, alpha4_vec,
CL2_vec, CD2_vec, aero_force_b_vec, aero_moment_b_vec, twist_angles_vec, vel_kite_vec,
acc_vec, X_vec, Y_vec, Z_vec, set_torque_vec, set_speed_vec,
set_force_vec, roll_vec, pitch_vec, yaw_vec, var_01_vec, var_02_vec,
var_03_vec, var_04_vec, var_05_vec, var_06_vec, var_07_vec, var_08_vec,
var_09_vec, var_10_vec, var_11_vec, var_12_vec, var_13_vec, var_14_vec,
var_15_vec, var_16_vec))
CL2_vec, CD2_vec, aero_force_b_vec, aero_moment_b_vec, tether_induced_force_vec, tether_induced_moment_vec,
twist_angles_vec, vel_kite_vec, acc_vec, X_vec, Y_vec, Z_vec,
set_torque_vec, set_speed_vec, set_force_vec, roll_vec, pitch_vec, yaw_vec,
var_01_vec, var_02_vec, var_03_vec, var_04_vec, var_05_vec, var_06_vec,
var_07_vec, var_08_vec, var_09_vec, var_10_vec, var_11_vec, var_12_vec,
var_13_vec, var_14_vec, var_15_vec, var_16_vec))
end
16 changes: 8 additions & 8 deletions src/_load_log.jl
Original file line number Diff line number Diff line change
Expand Up @@ -45,16 +45,16 @@ function load_log(filename::String; path="")
# example_metadata = KiteUtils.Arrow.getmetadata(table.var_01)
syslog = StructArray{SysState{P}}((table.time, table.t_sim, table.sys_state, table.cycle, table.fig_8,
table.e_mech, table.orient, table.turn_rates, table.elevation, table.azimuth,
table.l_tether, table.v_reelout, table.force, table.depower, table.steering,
table.l_tether, table.v_reelout, table.winch_force, table.depower, table.steering,
table.kcu_steering, table.set_steering, table.heading, table.heading_rate, table.course,
table.bearing, table.attractor, table.v_app, table.v_wind_gnd, table.v_wind_200m,
table.v_wind_kite, table.AoA, table.side_slip, table.alpha3, table.alpha4,
table.CL2, table.CD2, table.aero_force_b, table.aero_moment_b, table.twist_angles,
table.vel_kite, table.acc, table.X, table.Y, table.Z,
table.set_torque, table.set_speed, table.set_force, table.roll, table.pitch,
table.yaw, table.var_01, table.var_02, table.var_03, table.var_04,
table.var_05, table.var_06, table.var_07, table.var_08, table.var_09,
table.var_10, table.var_11, table.var_12, table.var_13, table.var_14,
table.var_15, table.var_16))
table.CL2, table.CD2, table.aero_force_b, table.aero_moment_b, table.tether_induced_force,
table.tether_induced_moment, table.twist_angles, table.vel_kite, table.acc, table.X,
table.Y, table.Z, table.set_torque, table.set_speed, table.set_force,
table.roll, table.pitch, table.yaw, table.var_01, table.var_02,
table.var_03, table.var_04, table.var_05, table.var_06, table.var_07,
table.var_08, table.var_09, table.var_10, table.var_11, table.var_12,
table.var_13, table.var_14, table.var_15, table.var_16))
return SysLog{P}(basename(fullname[1:end-6]), colmeta, syslog)
end
4 changes: 3 additions & 1 deletion src/_log.jl
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ function log!(logger::Logger, state::SysState)
logger.azimuth_vec[i] = state.azimuth
logger.l_tether_vec[i] .= state.l_tether
logger.v_reelout_vec[i] .= state.v_reelout
logger.force_vec[i] .= state.force
logger.winch_force_vec[i] .= state.winch_force
logger.depower_vec[i] = state.depower
logger.steering_vec[i] = state.steering
logger.kcu_steering_vec[i] = state.kcu_steering
Expand All @@ -50,6 +50,8 @@ function log!(logger::Logger, state::SysState)
logger.CD2_vec[i] = state.CD2
logger.aero_force_b_vec[i] .= state.aero_force_b
logger.aero_moment_b_vec[i] .= state.aero_moment_b
logger.tether_induced_force_vec[i] .= state.tether_induced_force
logger.tether_induced_moment_vec[i] .= state.tether_induced_moment
logger.twist_angles_vec[i] .= state.twist_angles
logger.vel_kite_vec[i] .= state.vel_kite
logger.acc_vec[i] = state.acc
Expand Down
4 changes: 3 additions & 1 deletion src/_logger.jl
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ $(TYPEDFIELDS)
azimuth_vec::Vector{MyFloat} = zeros(MyFloat, Q)
l_tether_vec::Vector{MVector{4, MyFloat}} = [zero(MVector{4, MyFloat}) for _ in 1:Q]
v_reelout_vec::Vector{MVector{4, MyFloat}} = [zero(MVector{4, MyFloat}) for _ in 1:Q]
force_vec::Vector{MVector{4, MyFloat}} = [zero(MVector{4, MyFloat}) for _ in 1:Q]
winch_force_vec::Vector{MVector{4, MyFloat}} = [zero(MVector{4, MyFloat}) for _ in 1:Q]
depower_vec::Vector{MyFloat} = zeros(MyFloat, Q)
steering_vec::Vector{MyFloat} = zeros(MyFloat, Q)
kcu_steering_vec::Vector{MyFloat} = zeros(MyFloat, Q)
Expand All @@ -55,6 +55,8 @@ $(TYPEDFIELDS)
CD2_vec::Vector{MyFloat} = zeros(MyFloat, Q)
aero_force_b_vec::Vector{MVector{3, MyFloat}} = [zero(MVector{3, MyFloat}) for _ in 1:Q]
aero_moment_b_vec::Vector{MVector{3, MyFloat}} = [zero(MVector{3, MyFloat}) for _ in 1:Q]
tether_induced_force_vec::Vector{MVector{3, MyFloat}} = [zero(MVector{3, MyFloat}) for _ in 1:Q]
tether_induced_moment_vec::Vector{MVector{3, MyFloat}} = [zero(MVector{3, MyFloat}) for _ in 1:Q]
twist_angles_vec::Vector{MVector{4, MyFloat}} = [zero(MVector{4, MyFloat}) for _ in 1:Q]
vel_kite_vec::Vector{MVector{3, MyFloat}} = [zero(MVector{3, MyFloat}) for _ in 1:Q]
acc_vec::Vector{MyFloat} = zeros(MyFloat, Q)
Expand Down
4 changes: 3 additions & 1 deletion src/_save_log.jl
Original file line number Diff line number Diff line change
Expand Up @@ -61,7 +61,7 @@ function save_log(logger::Logger, name="sim_log", compress=true;
resize!(logger.azimuth_vec, nl)
resize!(logger.l_tether_vec, nl)
resize!(logger.v_reelout_vec, nl)
resize!(logger.force_vec, nl)
resize!(logger.winch_force_vec, nl)
resize!(logger.depower_vec, nl)
resize!(logger.steering_vec, nl)
resize!(logger.kcu_steering_vec, nl)
Expand All @@ -83,6 +83,8 @@ function save_log(logger::Logger, name="sim_log", compress=true;
resize!(logger.CD2_vec, nl)
resize!(logger.aero_force_b_vec, nl)
resize!(logger.aero_moment_b_vec, nl)
resize!(logger.tether_induced_force_vec, nl)
resize!(logger.tether_induced_moment_vec, nl)
resize!(logger.twist_angles_vec, nl)
resize!(logger.vel_kite_vec, nl)
resize!(logger.acc_vec, nl)
Expand Down
4 changes: 3 additions & 1 deletion src/_show.jl
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ function Base.show(io::IO, st::SysState)
println(io, "azimuth [rad]: ", st.azimuth)
println(io, "l_tether [m]: ", st.l_tether)
println(io, "v_reelout [m/s]: ", st.v_reelout)
println(io, "force [N]: ", st.force)
println(io, "winch_force [N]: ", st.winch_force)
println(io, "depower [0..1]: ", st.depower)
println(io, "steering [-1..1]: ", st.steering)
println(io, "kcu_steering [-1..1]:", st.kcu_steering)
Expand All @@ -40,6 +40,8 @@ function Base.show(io::IO, st::SysState)
println(io, "CD2 [-]: ", st.CD2)
println(io, "aero_force_b [N]: ", st.aero_force_b)
println(io, "aero_moment_b [Nm]:", st.aero_moment_b)
println(io, "tether_induced_force [N]:", st.tether_induced_force)
println(io, "tether_induced_moment [Nm]:", st.tether_induced_moment)
println(io, "twist_angles [rad]:", st.twist_angles)
println(io, "vel_kite [m/s]: ", st.vel_kite)
println(io, "acc [m/s²]: ", st.acc)
Expand Down
16 changes: 8 additions & 8 deletions src/_syslog.jl
Original file line number Diff line number Diff line change
Expand Up @@ -9,15 +9,15 @@ function syslog(logger::Logger)
l = logger
StructArray{SysState{l.points}}((l.time_vec, l.t_sim_vec, l.sys_state_vec, l.cycle_vec, l.fig_8_vec,
l.e_mech_vec, l.orient_vec, l.turn_rates_vec, l.elevation_vec, l.azimuth_vec,
l.l_tether_vec, l.v_reelout_vec, l.force_vec, l.depower_vec, l.steering_vec,
l.l_tether_vec, l.v_reelout_vec, l.winch_force_vec, l.depower_vec, l.steering_vec,
l.kcu_steering_vec, l.set_steering_vec, l.heading_vec, l.heading_rate_vec, l.course_vec,
l.bearing_vec, l.attractor_vec, l.v_app_vec, l.v_wind_gnd_vec, l.v_wind_200m_vec,
l.v_wind_kite_vec, l.AoA_vec, l.side_slip_vec, l.alpha3_vec, l.alpha4_vec,
l.CL2_vec, l.CD2_vec, l.aero_force_b_vec, l.aero_moment_b_vec, l.twist_angles_vec,
l.vel_kite_vec, l.acc_vec, l.X_vec, l.Y_vec, l.Z_vec,
l.set_torque_vec, l.set_speed_vec, l.set_force_vec, l.roll_vec, l.pitch_vec,
l.yaw_vec, l.var_01_vec, l.var_02_vec, l.var_03_vec, l.var_04_vec,
l.var_05_vec, l.var_06_vec, l.var_07_vec, l.var_08_vec, l.var_09_vec,
l.var_10_vec, l.var_11_vec, l.var_12_vec, l.var_13_vec, l.var_14_vec,
l.var_15_vec, l.var_16_vec))
l.CL2_vec, l.CD2_vec, l.aero_force_b_vec, l.aero_moment_b_vec, l.tether_induced_force_vec,
l.tether_induced_moment_vec, l.twist_angles_vec, l.vel_kite_vec, l.acc_vec, l.X_vec,
l.Y_vec, l.Z_vec, l.set_torque_vec, l.set_speed_vec, l.set_force_vec,
l.roll_vec, l.pitch_vec, l.yaw_vec, l.var_01_vec, l.var_02_vec,
l.var_03_vec, l.var_04_vec, l.var_05_vec, l.var_06_vec, l.var_07_vec,
l.var_08_vec, l.var_09_vec, l.var_10_vec, l.var_11_vec, l.var_12_vec,
l.var_13_vec, l.var_14_vec, l.var_15_vec, l.var_16_vec))
end
8 changes: 6 additions & 2 deletions src/_sysstate.jl
Original file line number Diff line number Diff line change
Expand Up @@ -38,8 +38,8 @@ Base.@kwdef mutable struct SysState{P}
l_tether::MVector{4, MyFloat} = [0.0, 0.0, 0.0, 0.0]
"reelout speed, tether 1 to 4 [m/s]"
v_reelout::MVector{4, MyFloat} = [0.0, 0.0, 0.0, 0.0]
"tether force, tether 1 to 4 [N]"
force::MVector{4, MyFloat} = [0.0, 0.0, 0.0, 0.0]
"tether force at the winch, tether 1 to 4 [N]"
winch_force::MVector{4, MyFloat} = [0.0, 0.0, 0.0, 0.0]
"depower settings [0..1]"
depower::MyFloat = 0
"actual steering [-1..1]"
Expand Down Expand Up @@ -82,6 +82,10 @@ Base.@kwdef mutable struct SysState{P}
aero_force_b::MVector{3, MyFloat} = [0.0, 0.0, 0.0]
"aerodynamic moment in KB reference frame [Nm]"
aero_moment_b::MVector{3, MyFloat} = [0.0, 0.0, 0.0]
"net tether force vector acting on kite [N]"
tether_induced_force::MVector{3, MyFloat} = [0.0, 0.0, 0.0]
"net tether moment acting on kite [Nm]"
tether_induced_moment::MVector{3, MyFloat} = [0.0, 0.0, 0.0]
"twist angles for the 4 segment groups [rad]"
twist_angles::MVector{4, MyFloat} = [0.0, 0.0, 0.0, 0.0]
"velocity vector of the kite [m/s]"
Expand Down
Loading
Loading