Пример #1
0
                                    2.99E-07, 2.99E-07, 2.99E-07, 2.99E-07, 2.99E-07, 2.99E-07,
                                    2.99E-07, 2.99E-07, 3.00E-07, 3.00E-07, 3.00E-07, 3.01E-07,
                                    3.01E-07, 3.01E-07, 3.02E-07, 3.02E-07, 3.03E-07, 3.03E-07,
                                    3.03E-07, 3.04E-07, 3.04E-07, 3.04E-07, 3.05E-07, 3.05E-07,
                                    3.05E-07, 3.06E-07, 3.06E-07, 3.06E-07, 3.07E-07, 3.07E-07,
                                    3.08E-07, 3.08E-07, 3.08E-07, 3.09E-07, 3.09E-07, 3.09E-07,
                                    3.10E-07, 3.10E-07, 3.10E-07, 3.11E-07, 3.11E-07, 3.11E-07,
                                    3.13E-07, 3.18E-07, 3.23E-07, 3.28E-07, 3.33E-07, 3.37E-07,
                                    3.42E-07, 3.47E-07, 3.51E-07, 3.56E-07])

T_interp = Akima(USatm1976Data.alt, USatm1976Data.T)
P_interp = Akima(USatm1976Data.alt, USatm1976Data.P)
rho_interp = Akima(USatm1976Data.alt, USatm1976Data.rho)
visc_interp = Akima(USatm1976Data.alt, USatm1976Data.viscosity)

T_interp_deriv = T_interp.derivative(1)
P_interp_deriv = P_interp.derivative(1)
rho_interp_deriv = rho_interp.derivative(1)
visc_interp_deriv = visc_interp.derivative(1)
drho_dh_interp_deriv = rho_interp_deriv.derivative(1)


class USatm1976Comp(ExplicitComponent):

    def initialize(self):
        self.options.declare('num_nodes', types=int,
                             desc='Number of nodes to be evaluated in the RHS')

        gamma = 1.4  # Ratio of specific heads
        gas_c = 1716.49  # Gas constant (ft lbf)/(slug R)
        self._K = gamma * gas_c
Пример #2
0
    0, 0.84, 0.88, 0.891, 0.901, 0.905, 0.9075, 0.909, 0.912, 0.914, 0.915,
    0.915
])
# TGL 2 - beyond next generation technology level ~4% better
EtaPoly_SE2 = np.array([
    0, 0.855, 0.900, 0.912, 0.917, 0.920, 0.922, 0.9235, 0.926, 0.930, 0.931,
    0.931
])

# Create continuously differentiable interpolations
EtaPoly_SE0_interp = Akima(Wc_SE, EtaPoly_SE0)
EtaPoly_SE1_interp = Akima(Wc_SE, EtaPoly_SE1)
EtaPoly_SE2_interp = Akima(Wc_SE, EtaPoly_SE2)

# gather derivatives
EtaPoly_SE0_interp_deriv = EtaPoly_SE0_interp.derivative(1)
EtaPoly_SE1_interp_deriv = EtaPoly_SE1_interp.derivative(1)
EtaPoly_SE2_interp_deriv = EtaPoly_SE2_interp.derivative(1)


class SmallCoreEffBalance(ImplicitComponent):
    """ Polytropic/ Adiabatic efficiency balance. """
    def initialize(self):
        self.options.declare(
            'tech_level',
            default=0,
            values=[0, 1, 2],
            desc=
            'Set Technology level, 0 - current tech, 1 - next gen ~2% better, 2 - beyond next gen ~4% better'
        )
        self.options.declare(
Пример #3
0
    2.99E-07, 2.99E-07, 2.99E-07, 2.99E-07, 2.99E-07, 2.99E-07, 2.99E-07,
    2.99E-07, 2.99E-07, 2.99E-07, 2.99E-07, 2.99E-07, 2.99E-07, 2.99E-07,
    2.99E-07, 2.99E-07, 2.99E-07, 2.99E-07, 2.99E-07, 3.00E-07, 3.00E-07,
    3.00E-07, 3.01E-07, 3.01E-07, 3.01E-07, 3.02E-07, 3.02E-07, 3.03E-07,
    3.03E-07, 3.03E-07, 3.04E-07, 3.04E-07, 3.04E-07, 3.05E-07, 3.05E-07,
    3.05E-07, 3.06E-07, 3.06E-07, 3.06E-07, 3.07E-07, 3.07E-07, 3.08E-07,
    3.08E-07, 3.08E-07, 3.09E-07, 3.09E-07, 3.09E-07, 3.10E-07, 3.10E-07,
    3.10E-07, 3.11E-07, 3.11E-07, 3.11E-07, 3.13E-07, 3.18E-07, 3.23E-07,
    3.28E-07, 3.33E-07, 3.37E-07, 3.42E-07, 3.47E-07, 3.51E-07, 3.56E-07
])  #units='lbf*s/ft**2'

T_interp = Akima(USatm1976Data.alt, USatm1976Data.T)
P_interp = Akima(USatm1976Data.alt, USatm1976Data.P)
rho_interp = Akima(USatm1976Data.alt, USatm1976Data.rho)

T_interp_deriv = T_interp.derivative(1)
P_interp_deriv = P_interp.derivative(1)
rho_interp_deriv = rho_interp.derivative(1)

drho_dh_interp_deriv = rho_interp.derivative(2)


class USatm1976Comp(ExplicitComponent):
    def setup(self):
        self.add_input('alt', val=1., units='ft')

        self.add_output('Ts', val=1., units='degR')
        self.add_output('Ps', val=1., units='psi')
        self.add_output('rhos', val=1., units='slug/ft**3')
        self.add_output('drhos_dalt', val=1., units='slug/ft**4')
                3.53E-07,3.51E-07,3.49E-07,3.47E-07,3.45E-07,3.42E-07,3.40E-07,3.38E-07,3.36E-07,3.34E-07,3.31E-07,3.29E-07,3.27E-07,3.25E-07,
                3.22E-07,3.20E-07,3.18E-07,3.16E-07,3.13E-07,3.11E-07,3.09E-07,3.06E-07,3.04E-07,3.02E-07,2.99E-07,2.99E-07,2.99E-07,2.99E-07,
                2.99E-07,2.99E-07,2.99E-07,2.99E-07,2.99E-07,2.99E-07,2.99E-07,2.99E-07,2.99E-07,2.99E-07,2.99E-07,2.99E-07,2.99E-07,2.99E-07,
                2.99E-07,2.99E-07,2.99E-07,2.99E-07,2.99E-07,2.99E-07,2.99E-07,2.99E-07,2.99E-07,2.99E-07,2.99E-07,2.99E-07,2.99E-07,3.00E-07,
                3.00E-07,3.00E-07,3.01E-07,3.01E-07,3.01E-07,3.02E-07,3.02E-07,3.03E-07,3.03E-07,3.03E-07,3.04E-07,3.04E-07,3.04E-07,3.05E-07,
                3.05E-07,3.05E-07,3.06E-07,3.06E-07,3.06E-07,3.07E-07,3.07E-07,3.08E-07,3.08E-07,3.08E-07,3.09E-07,3.09E-07,3.09E-07,3.10E-07,
                3.10E-07,3.10E-07,3.11E-07,3.11E-07,3.11E-07,3.13E-07,3.18E-07,3.23E-07,3.28E-07,3.33E-07,3.37E-07,3.42E-07,3.47E-07,3.51E-07,
                3.56E-07]) #units='lbf*s/ft**2'

T_interp = Akima(USatm1976Data.alt, USatm1976Data.T)
P_interp = Akima(USatm1976Data.alt, USatm1976Data.P)
rho_interp = Akima(USatm1976Data.alt, USatm1976Data.rho)
a_interp = Akima(USatm1976Data.alt, USatm1976Data.a)
viscosity_interp = Akima(USatm1976Data.alt, USatm1976Data.viscosity)

T_interp_deriv = T_interp.derivative(1)
P_interp_deriv = P_interp.derivative(1)
rho_interp_deriv = rho_interp.derivative(1)
a_interp_deriv = a_interp.derivative(1)
viscosity_interp_deriv = viscosity_interp.derivative(1)


class AtmosComp(ExplicitComponent):

    def setup(self):
        self.add_input('altitude', val=1., units='ft')
        self.add_input('Mach_number', val=1.)

        self.add_output('T', val=1., units='degR')
        self.add_output('P', val=1., units='psi')
        self.add_output('rho', val=1., units='slug/ft**3')
Пример #5
0
    2.99E-07, 2.99E-07, 2.99E-07, 2.99E-07, 2.99E-07, 3.00E-07, 3.00E-07,
    3.00E-07, 3.01E-07, 3.01E-07, 3.01E-07, 3.02E-07, 3.02E-07, 3.03E-07,
    3.03E-07, 3.03E-07, 3.04E-07, 3.04E-07, 3.04E-07, 3.05E-07, 3.05E-07,
    3.05E-07, 3.06E-07, 3.06E-07, 3.06E-07, 3.07E-07, 3.07E-07, 3.08E-07,
    3.08E-07, 3.08E-07, 3.09E-07, 3.09E-07, 3.09E-07, 3.10E-07, 3.10E-07,
    3.10E-07, 3.11E-07, 3.11E-07, 3.11E-07, 3.13E-07, 3.18E-07, 3.23E-07,
    3.28E-07, 3.33E-07, 3.37E-07, 3.42E-07, 3.47E-07, 3.51E-07, 3.56E-07
])  #units='lbf*s/ft**2'

temp_interp = Akima(USatm1976Data.h, USatm1976Data.temp)
pres_interp = Akima(USatm1976Data.h, USatm1976Data.pres)
rho_interp = Akima(USatm1976Data.h, USatm1976Data.rho)
a_interp = Akima(USatm1976Data.h, USatm1976Data.a)
viscosity_interp = Akima(USatm1976Data.h, USatm1976Data.viscosity)

temp_interp_deriv = temp_interp.derivative(1)
pres_interp_deriv = pres_interp.derivative(1)
rho_interp_deriv = rho_interp.derivative(1)
a_interp_deriv = a_interp.derivative(1)
viscosity_interp_deriv = viscosity_interp.derivative(1)


class AtmosComp(ExplicitComponent):
    def initialize(self):
        self.options.declare('num_nodes', types=int, default=1)

    def setup(self):
        nn = self.options['num_nodes']

        self.add_input('h', val=np.ones(nn), units='ft')
Пример #6
0
                                    2.99E-07, 2.99E-07, 3.00E-07, 3.00E-07, 3.00E-07, 3.01E-07,
                                    3.01E-07, 3.01E-07, 3.02E-07, 3.02E-07, 3.03E-07, 3.03E-07,
                                    3.03E-07, 3.04E-07, 3.04E-07, 3.04E-07, 3.05E-07, 3.05E-07,
                                    3.05E-07, 3.06E-07, 3.06E-07, 3.06E-07, 3.07E-07, 3.07E-07,
                                    3.08E-07, 3.08E-07, 3.08E-07, 3.09E-07, 3.09E-07, 3.09E-07,
                                    3.10E-07, 3.10E-07, 3.10E-07, 3.11E-07, 3.11E-07, 3.11E-07,
                                    3.13E-07, 3.18E-07, 3.23E-07, 3.28E-07, 3.33E-07, 3.37E-07,
                                    3.42E-07, 3.47E-07, 3.51E-07, 3.56E-07])

# Interpolations as a function of altitide
T_interp_alt = Akima(USatm1976Data.alt, USatm1976Data.T)
P_interp_alt = Akima(USatm1976Data.alt, USatm1976Data.P)
rho_interp_alt = Akima(USatm1976Data.alt, USatm1976Data.rho)
visc_interp_alt = Akima(USatm1976Data.alt, USatm1976Data.viscosity)
# Their derivatives
T_interp_deriv = T_interp_alt.derivative(1)
P_interp_deriv = P_interp_alt.derivative(1)
rho_interp_deriv = rho_interp_alt.derivative(1)
visc_interp_deriv = visc_interp_alt.derivative(1)
drho_dh_interp_deriv = rho_interp_deriv.derivative(1)

# Interpolations as a function of density
a_vs_rho_interp = Akima(np.flip(USatm1976Data.rho), np.flip(USatm1976Data.a))
a_vs_rho_interp_deriv = a_vs_rho_interp.derivative(1)

class USatm1976Group(Group):
    def initialize(self):
        self.options.declare('num_nodes', types=int,
                             desc='Number of nodes to be evaluated in the RHS')

    def setup(self):