Я столкнулся с чем-то непонятным. Мой код передаёт несколько параметров в структуре. Одни функции принимают её успешно, а другая — нет. Возможно, кто-то со стороны заметит ошибку, которую я упускаю.
В этом MWE всё выглядит нормально, пока последняя строка не вызывает ошибку.
using FlexUnits: QuantFieldVector, DimsMod
using Revise
gravity = 9.81u"m/s^2"
net_load(diameter, config) = @. 2*config.initial_load*(sin(acos((config.drum+config.gap)/(config.drum+diameter)))) - π/4*(diameter^2 - config.core^2)*config.density*gravity
limited_load(diameter, config) = max.(net_load(diameter, config), config.min_load)
line_load(diameter, config) = @. (π/4*(diameter^2 - config.core^2)*config.density*gravity + limited_load(diameter, config))/(2*sin(acos((config.drum+config.gap)/(config.drum+diameter))))
mutable struct Carrier{T} <: QuantFieldVector{7,T}
drum::Quantity{T, D"m"}
gap::Quantity{T, D"m"}
core::Quantity{T, D"m"}
span::Quantity{T, D"m"}
min_load::Quantity{T, D"N/m"}
initial_load::Quantity{T, D"N/m"}
density::Quantity{T, D"kg/m^3"}
end
config = Carrier(26u"in", 31u"mm", 110u"mm", 1.4u"m", 5u"lbf/in",14u"lbf/in", 860u"kg/m^3")
transition_diameter = 0.9u"m"
config.initial_load
net_load(440u"mm", config)
limited_load(440u"mm", config)
line_load(440u"mm", config)
ERROR: FieldError: type Float64 has no field `initial_load`; Float64 has no fields at all.
Stacktrace:
[1] getproperty
@ .\Base_compiler.jl:57 [inlined]
[2] net_load(diameter::Quantity{Float64, StaticDims{m}}, config::Float64)
@ Main .\REPL[83]:2
[3] limited_load(diameter::Quantity{Float64, StaticDims{m}}, config::Float64)
@ Main .\REPL[82]:2