Error using Propeller_Lo_Fid

71 views
Skip to first unread message

Paul

unread,
Jan 18, 2023, 10:09:12 AM1/18/23
to SUAVE FORUM
Hi,
in my vehicle I use the network SUAVE.Components.Energy.Networks.Internal_Combustion_Propeller() and two engines SUAVE.Components.Energy.Converters.Internal_Combustion_Engine(). 

I want to add two propellers and did that by using SUAVE.Components.Energy.Converters.Propeller(). However, this function requires many details about the Propeller, like design altitude, CL, polars, etc. which I copied them from a tutorial file.

My mission has only one cruise segment:
segment = Segments.Cruise.Constant_Speed_Constant_Altitude(base_segment)
segment.tag = "cruise"

segment.analyses.extend(analyses)

segment.altitude = 7620 * Units.m
segment.air_speed = 480 * Units.kph
segment.distance = 5500 * Units.km

ones_row = segment.state.ones_row
segment.state.numerics.number_control_points = 16
segment.state.unknowns.throttle = ones_row(1)
segment = vehicle.networks.internal_combustion.add_unknowns_and_residuals_to_segment(segment, rpm=1200)
segment.process.iterate.conditions.stability = SUAVE.Methods.skip
segment.process.finalize.post_process.stability = SUAVE.Methods.skip

# add to mission
mission.append_segment(segment)

With that everything works. Now I want to replace the propellers with the SUAVE.Components.Energy.Converters.Propeller_Lo_Fid()function, which (in my understanding) only needs tip_radius and propulsive_efficiency.

What do I need to change besides the prop function? Because right now I get the following error:

Traceback (most recent call last):
  File "reference_suave.py", line 446, in <module>
    main()
  File "reference_suave.py", line 51, in main
    results = mission.evaluate()
  File "../SUAVE/Analyses/Mission/Segments/Segment.py", line 180, in evaluate
    self.process(self)
  File "../SUAVE/Analyses/Process.py", line 96, in __call__
    return self.evaluate(*args,**kwarg)
  File "../SUAVE/Analyses/Process.py", line 67, in evaluate
    result = step(*args,**kwarg)
  File "../SUAVE/Methods/Missions/Segments/Common/Sub_Segments.py", line 137, in sequential_sub_segments
    sub_segment.evaluate()
  File "../SUAVE/Analyses/Mission/Segments/Segment.py", line 180, in evaluate
    self.process(self)
  File "../SUAVE/Analyses/Process.py", line 96, in __call__
    return self.evaluate(*args,**kwarg)
  File "../SUAVE/Analyses/Process.py", line 65, in evaluate
    result = step.evaluate(*args,**kwarg)
  File "../SUAVE/Analyses/Process.py", line 67, in evaluate
    result = step(*args,**kwarg)
  File "../SUAVE/Methods/Missions/Segments/converge_root.py", line 50, in converge_root
    unknowns,infodict,ier,msg = root_finder( iterate,
  File "../scipy/optimize/minpack.py", line 160, in fsolve
    res = _root_hybr(func, x0, args, jac=fprime, **options)
  File "../scipy/optimize/minpack.py", line 226, in _root_hybr
    shape, dtype = _check_func('fsolve', 'func', func, x0, args, n, (n,))
  File "../scipy/optimize/minpack.py", line 24, in _check_func
    res = atleast_1d(thefunc(*((x0[:numinputs],) + args)))
  File "../SUAVE/Methods/Missions/Segments/converge_root.py", line 99, in iterate
    segment.process.iterate(segment)
  File "../SUAVE/Analyses/Process.py", line 96, in __call__
    return self.evaluate(*args,**kwarg)
  File "../SUAVE/Analyses/Process.py", line 65, in evaluate
    result = step.evaluate(*args,**kwarg)
  File "../SUAVE/Analyses/Process.py", line 67, in evaluate
    result = step(*args,**kwarg)
  File "../SUAVE/Methods/Missions/Segments/Common/Energy.py", line 87, in update_thrust
    results   = energy_model.evaluate_thrust(segment.state)
  File "../SUAVE/Analyses/Energy/Energy.py", line 65, in evaluate_thrust
    results = network.evaluate_thrust(state)
  File "../SUAVE/Components/Energy/Networks/Network.py", line 142, in evaluate_thrust
    results_p = net.evaluate_thrust(state)
  File "../SUAVE/Components/Energy/Networks/Internal_Combustion_Propeller.py", line 123, in evaluate_thrust
    F, Q, P, Cp, outputs, etap = prop.spin(conditions)
  File "../SUAVE/Components/Energy/Converters/Propeller_Lo_Fid.py", line 89, in spin
    Qm    = self.inputs.torque
  File "../SUAVE/Core/Data.py", line 69, in __getattribute__
    return objgetattrib(self,k)
AttributeError: 'Data' object has no attribute 'torque'


Seems like the propellers aren't connected to the engine?

I hope you can help me with that :)

Paul

Emilio

unread,
Jan 18, 2023, 5:35:06 PM1/18/23
to SUAVE FORUM
Hi Paul,
That makes sense as to why you'd want to use the low fidelity propeller.

The issue comes from the internal combustion network not being compatible with the low fidelity propeller. Really the only one that is, out of the box, is the Solar_Low_Fidelity network. I think any network can be made to be compatible. We just decided not to have too many networks.

Sorry that's not the answer you probably want. But let us know if you have questions.

-Emilio

Paul

unread,
Jan 20, 2023, 11:41:17 AM1/20/23
to SUAVE FORUM
Okay, that's unfortunate. Thanks, though.
Reply all
Reply to author
Forward
0 new messages