Source code for openaerostruct.structures.failure_exact

import numpy as np

import openmdao.api as om


[docs] class FailureExact(om.ExplicitComponent): """ Output individual failure constraints on each FEM element. Parameters ---------- vonmises[ny-1, 2] : numpy array von Mises stress magnitudes for each FEM element. Returns ------- failure[ny-1, 2] : numpy array Array of failure conditions. Positive if element has failed. """ def initialize(self): self.options.declare("surface", types=dict) def setup(self): surface = self.options["surface"] if surface["fem_model_type"] == "tube": num_failure_criteria = 2 elif surface["fem_model_type"] == "wingbox": num_failure_criteria = 4 self.ny = surface["mesh"].shape[1] self.sigma = surface["yield"] self.add_input("vonmises", val=np.zeros((self.ny - 1, num_failure_criteria)), units="N/m**2") self.add_output("failure", val=np.zeros((self.ny - 1, num_failure_criteria))) self.declare_partials("failure", "vonmises", val=np.eye(((self.ny - 1) * num_failure_criteria)) / self.sigma) def compute(self, inputs, outputs): outputs["failure"] = inputs["vonmises"] / self.sigma - 1