Source code for openaerostruct.structures.total_loads

import numpy as np

import openmdao.api as om


[docs] class TotalLoads(om.ExplicitComponent): """ Add the loads from the aerodynamics, structural weight, and fuel weight. Parameters ---------- loads[ny, 6] : numpy array Array containing the loads applied on the FEM component, computed from the sectional forces. struct_weight_loads[ny, 6] : numpy array Array containing the loads applied on the FEM component, computed from the weight of the wing-structure segments. fuel_weight_loads[ny, 6] : numpy array Array containing the loads applied on the FEM component, computed from the weight of the fuel. loads_from_point_masses[ny, 6] : numpy array The cumulative loads from all point masses. Returns ------- total_loads[ny, 6] : numpy array Flattened array containing the total loads applied on the FEM. """ def initialize(self): self.options.declare("surface", types=dict) def setup(self): self.surface = surface = self.options["surface"] self.ny = surface["mesh"].shape[1] self.add_input("loads", val=np.ones((self.ny, 6)), units="N") if surface["struct_weight_relief"]: self.add_input("struct_weight_loads", val=np.zeros((self.ny, 6)), units="N") if surface["distributed_fuel_weight"]: self.add_input("fuel_weight_loads", val=np.zeros((self.ny, 6)), units="N") if "n_point_masses" in surface.keys(): self.add_input("loads_from_point_masses", val=np.zeros((self.ny, 6)), units="N") self.add_input("loads_from_thrusts", val=np.zeros((self.ny, 6)), units="N") self.add_output("total_loads", val=np.ones((self.ny, 6)), units="N") arange = np.arange(self.ny * 6) self.declare_partials("total_loads", "loads", rows=arange, cols=arange, val=1.0) if self.surface["struct_weight_relief"]: self.declare_partials("total_loads", "struct_weight_loads", rows=arange, cols=arange, val=1.0) if self.surface["distributed_fuel_weight"]: self.declare_partials("total_loads", "fuel_weight_loads", rows=arange, cols=arange, val=1.0) if "n_point_masses" in surface.keys(): self.declare_partials("total_loads", "loads_from_point_masses", rows=arange, cols=arange, val=1.0) self.declare_partials("total_loads", "loads_from_thrusts", rows=arange, cols=arange, val=1.0) def compute(self, inputs, outputs): outputs["total_loads"] = inputs["loads"] if self.surface["struct_weight_relief"]: outputs["total_loads"] += inputs["struct_weight_loads"] if self.surface["distributed_fuel_weight"]: outputs["total_loads"] += inputs["fuel_weight_loads"] if "n_point_masses" in self.surface.keys(): outputs["total_loads"] += inputs["loads_from_point_masses"] outputs["total_loads"] += inputs["loads_from_thrusts"]