-
Notifications
You must be signed in to change notification settings - Fork 392
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #535 from Sof222/develop
Turboelectric HTS Ducted Fan Network
- Loading branch information
Showing
24 changed files
with
1,683 additions
and
7 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
377 changes: 377 additions & 0 deletions
377
...sion/scripts/turboelectric_HTS_ducted_fan_network/turboelectric_HTS_ducted_fan_network.py
Large diffs are not rendered by default.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,92 @@ | ||
## @ingroup Attributes-Solids | ||
# Copper.py | ||
# | ||
# Created: Feb 2020, K. Hamilton | ||
|
||
#------------------------------------------------------------------------------- | ||
# Imports | ||
#------------------------------------------------------------------------------- | ||
|
||
from .Solid import Solid | ||
from SUAVE.Core import Units | ||
from scipy import interpolate | ||
from array import * | ||
|
||
#------------------------------------------------------------------------------- | ||
# RRR=50 OFHC Copper Class | ||
#------------------------------------------------------------------------------- | ||
|
||
## @ingroup Attributes-Solid | ||
class Copper(Solid): | ||
|
||
""" Physical Constants Specific to copper RRR=50 OFHC | ||
Assumptions: | ||
None | ||
Source: | ||
"PROPERTIES OF SELECTED MATERIALS AT CRYOGENIC TEMPERATURES" Peter E. Bradley and Ray Radebaugh | ||
"A copper resistance temperature scale" Dauphinee, TM and Preston-Thomas, H | ||
Inputs: | ||
N/A | ||
Outputs: | ||
N/A | ||
Properties Used: | ||
None | ||
""" | ||
|
||
def __defaults__(self): | ||
"""Sets material properties at instantiation. | ||
Assumptions: | ||
None | ||
Source: | ||
N/A | ||
Inputs: | ||
N/A | ||
Outputs: | ||
N/A | ||
Properties Used: | ||
None | ||
""" | ||
|
||
self.density = 8960.0 # [kg/(m**3)] | ||
self.conductivity_electrical = 58391886.09 # [mhos/m] | ||
self.conductivity_thermal = 392.4 # [W/(m*K)] | ||
|
||
def thermal_conductivity(self, temperature): | ||
# Lookup table arrays. Temperature in K, conductivity in W/(m*K) | ||
temperatures = [4.0, 6.0, 8.0, 10.0, 12.0, 14.0, 16.0, 18.0, 20.0, 30.0, 40.0, 50.0, 60.0, 70.0, 80.0, 90.0, 100.0, 120.0, 140.0, 160.0, 180.0, 200.0, 220.0, 240.0, 260.0, 280.0, 300.0] | ||
conductivities = [3.204, 4.668, 6.223, 7.781, 9.273, 10.64, 11.85, 12.87, 13.68, 14.44, 11.63, 8.636, 6.7, 5.611, 5.003, 4.651, 4.439, 4.218, 4.116, 4.06, 4.026, 4.001, 3.982, 3.965, 3.95, 3.936, 3.924] | ||
|
||
# Function that interpolates the lookup table data | ||
c = interpolate.interp1d(temperatures, conductivities, kind = 'cubic', fill_value='extrapolate') | ||
|
||
# Create output variable | ||
|
||
conductivity = c(temperature) | ||
|
||
return conductivity | ||
|
||
|
||
|
||
# lookup table and interpolator for estimating the electrical conductivity of copper at cryogenic temperatures. | ||
def electrical_conductivity(self, temperature): | ||
# Lookup table. Temperature in K, conductivity in mhos/m | ||
temperatures = [4.2, 19.0, 20.0, 21.0, 22.0, 23.0, 24.0, 25.0, 26.0, 27.0, 28.0, 29.0, 30.0, 31.0, 32.0, 33.0, 34.0, 35.0, 36.0, 38.0, 40.0, 42.0, 44.0, 46.0, 48.0, 50.0, 52.0, 54.0, 56.0, 58.0, 60.0, 64.0, 68.0, 72.0, 76.0, 80.0, 85.0, 90.0, 95.0, 100.0, 110.0, 120.0, 130.0, 140.0, 150.0, 160.0, 170.0, 180.0, 190.0, 200.0, 210.0, 220.0, 230.0, 240.0, 250.0, 260.0, 270.0, 273.16, 280.0, 290.0, 300.0, 310.0, 320.0] | ||
conductivities = [62706513.73, 59649351.1, 58823529.41, 57862233.7, 56756705.27, 55547010.82, 54265718.98, 52838319.53, 51265727.5, 49621943.91, 47879990.68, 46119256.86, 44295117.43, 42462678.59, 40594025.68, 38689780.55, 36839664.93, 34982975.23, 33178363.63, 29768952.17, 26747761.29, 23951445.97, 21412914.59, 19097216.66, 17144994.46, 15418051.98, 13912657.74, 12602171.91, 11436522.41, 10413826.85, 9526550.123, 8071135.431, 6915841.211, 6030094.818, 5295406.175, 4719663.549, 4129948.887, 3661837.678, 3283955.516, 2972855.668, 2494427.41, 2147259.712, 1884972.1, 1680269.452, 1516360.227, 1382622.667, 1270747.745, 1176213.988, 1095370.181, 1025134.636, 963654.7402, 909308.7026, 860944.9011, 817561.3102, 778513.0909, 742977.6209, 710652.6341, 701058.8235, 681102.5197, 653862.9927, 628729.7528, 605483.2867, 583918.8609] | ||
|
||
# Function that interpolates the lookup table data | ||
c = interpolate.interp1d(temperatures, conductivities, kind = 'cubic', fill_value='extrapolate') | ||
|
||
|
||
conductivity = c(temperature) | ||
|
||
return conductivity |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
111 changes: 111 additions & 0 deletions
111
trunk/SUAVE/Components/Energy/Converters/Motor_HTS_Rotor.py
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,111 @@ | ||
## @ingroup Components-Energy-Converters | ||
# Motor_HTS_Rotor.py | ||
# | ||
# Created: Feb 2020, K. Hamilton | ||
# Modified: Nov 2021, S. Claridge | ||
|
||
# ---------------------------------------------------------------------- | ||
# Imports | ||
# ---------------------------------------------------------------------- | ||
|
||
# suave imports | ||
import SUAVE | ||
|
||
# package imports | ||
from SUAVE.Components.Energy.Energy_Component import Energy_Component | ||
|
||
# ---------------------------------------------------------------------- | ||
# HTS Rotor Class | ||
# ---------------------------------------------------------------------- | ||
## @ingroup Components-Energy-Converters | ||
class Motor_HTS_Rotor(Energy_Component): | ||
"""This represents just the rotor of a HTS motor, i.e. the superconducting components. | ||
This is used to estimate the power and cooling required for the HTS components. | ||
The power used here could be considered the same as that used by the motor as inefficiency, however many publications consider the overall motor efficiency, i.e. including cryocooler and/or motor drive electronics. | ||
Assumptions: | ||
No ACLoss in the HTS, | ||
HTS is operated within the Ic and Tc limits. | ||
i.e the power used by the coil is only due to solder resistances only, and is not affected by the motor output power or speed. | ||
Source: | ||
None | ||
""" | ||
def __defaults__(self): | ||
"""This sets the default values for the component to function. | ||
Assumptions: | ||
None | ||
Source: | ||
N/A | ||
Inputs: | ||
None | ||
Outputs: | ||
None | ||
Properties Used: | ||
None | ||
""" | ||
self.temperature = 0.0 # Temperature inside of the rotor [K] | ||
self.skin_temp = 300.0 # Temperature of the outside of the rotor [K] | ||
self.current = 0.0 # HTS coil current. [A] | ||
self.resistance = 0.0 # Resistance of the HTS oils. [ohm] | ||
self.length = 0.0 # Physical size of rotor exterior [m] | ||
self.diameter = 0.0 # Physical size of rotor exterior [m] | ||
self.surface_area = 0.0 # Surface area of the rotor. [m2] | ||
self.R_value = 125.0 # R_Value of the cryostat wall. [K.m2/W] | ||
self.number_of_engines = 2.0 # Number of rotors on the vehicle | ||
|
||
def power(self, current, ambient_temp): | ||
""" Calculates the electrical power draw from the HTS coils, and the total heating load on the HTS rotor cryostat. | ||
Assumptions: | ||
No ACLoss in the HTS, | ||
HTS is operated within the Ic and Tc limits. | ||
i.e the power used by the coil is only due to solder resistances only. | ||
Source: | ||
N/A | ||
Inputs: | ||
current [A] | ||
ambient_temp [K] | ||
Outputs: | ||
input_power [W] | ||
cryogenic_load [W] | ||
Properties Used: | ||
self. | ||
temperature [K] | ||
resistance [ohm] | ||
surface_area [m2] | ||
R_value [K.m2/W] | ||
""" | ||
# unpack | ||
cryo_temp = self.temperature | ||
coil_R = self.resistance | ||
surface_area = self.surface_area | ||
r_value = self.R_value | ||
|
||
# Calculate HTS coil power | ||
# This is both the electrical power required to operate the coil, and the thermal load imparted by the coil into the cryostat. | ||
coil_power = coil_R * current**2 | ||
coil_voltage = current*coil_R | ||
|
||
# Estimate heating from external heat conducting through the cryostat wall. | ||
# Given the non-cryogenic armature coils are usually very close to this external wall it is likely the temperature at the wall is above ambient. | ||
Q = (ambient_temp - cryo_temp)/(r_value/surface_area) | ||
|
||
# Sum the heat loads to give total rotor heat load. | ||
cryo_load = coil_power + Q | ||
|
||
# Store the outputs. | ||
self.outputs.coil_power = coil_power | ||
self.outputs.coil_voltage = coil_voltage | ||
self.outputs.cryo_load = cryo_load | ||
|
||
return coil_power |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,84 @@ | ||
## @ingroup Components-Energy-Converters | ||
# Turboelectric.py | ||
# | ||
# Created: Nov 2019, K. Hamilton | ||
# Modified: Nov 2021, S. Claridge | ||
# ---------------------------------------------------------------------- | ||
# Imports | ||
# ---------------------------------------------------------------------- | ||
|
||
# suave imports | ||
import SUAVE | ||
|
||
# package imports | ||
from SUAVE.Core import Units | ||
from SUAVE.Components.Energy.Energy_Component import Energy_Component | ||
from SUAVE.Methods.Power.Turboelectric.Discharge import zero_fidelity | ||
|
||
# ---------------------------------------------------------------------- | ||
# Turboelectric Class | ||
# ---------------------------------------------------------------------- | ||
## @ingroup Components-Energy-Converters | ||
class Turboelectric(Energy_Component): | ||
"""This is a turboelectic component. | ||
Assumptions: | ||
None | ||
Source: | ||
None | ||
""" | ||
def __defaults__(self): | ||
"""This sets the default values for the component to function. | ||
Assumptions: | ||
None | ||
Source: | ||
https://new.siemens.com/global/en/products/energy/power-generation/gas-turbines/sgt-a30-a35-rb.html | ||
Inputs: | ||
None | ||
Outputs: | ||
None | ||
Properties Used: | ||
None | ||
""" | ||
self.propellant = None | ||
self.oxidizer = None | ||
self.number_of_engines = 0.0 # number of turboelectric machines, not propulsors | ||
self.efficiency = .37 # Approximate average gross efficiency across the product range. | ||
self.volume = 0.0 | ||
self.rated_power = 0.0 | ||
self.mass_properties.mass = 0.0 | ||
self.specific_power = 0.0 | ||
self.mass_density = 0.0 | ||
self.discharge_model = zero_fidelity # Simply takes the fuel specific power and applies an efficiency. | ||
|
||
|
||
|
||
def energy_calc(self,conditions,numerics): | ||
"""This calls the assigned discharge method. | ||
Assumptions: | ||
None | ||
Source: | ||
N/A | ||
Inputs: | ||
see properties used | ||
Outputs: | ||
mdot [kg/s] (units may change depending on selected model) | ||
Properties Used: | ||
self.discharge_model(self, conditions, numerics) | ||
""" | ||
|
||
mdot = self.discharge_model(self, conditions, numerics) | ||
return mdot | ||
|
||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.