def directional_poisson_ratio(self, n, m, tol=1e-8): """ Calculates the poisson ratio for a specific direction relative to a second, orthogonal direction Args: n (3-d vector): principal direction m (3-d vector): secondary direction orthogonal to n tol (float): tolerance for testing of orthogonality """ n, m = get_uvec(n), get_uvec(m) if not np.abs(np.dot(n, m)) < tol: raise ValueError("n and m must be orthogonal") v = self.compliance_tensor.einsum_sequence([n] * 2 + [m] * 2) v *= -1 / self.compliance_tensor.einsum_sequence([n] * 4) return v
def directional_poisson_ratio(self, n, m, tol=1e-8): """ Calculates the poisson ratio for a specific direction relative to a second, orthogonal direction Args: n (3-d vector): principal direction m (3-d vector): secondary direction orthogonal to n tol (float): tolerance for testing of orthogonality """ n, m = get_uvec(n), get_uvec(m) if not np.abs(np.dot(n, m)) < tol: raise ValueError("n and m must be orthogonal") v = self.compliance_tensor.einsum_sequence([n]*2 + [m]*2) v *= -1 / self.compliance_tensor.einsum_sequence([n]*4) return v
def get_stability_criteria(self, s, n): """ Gets the stability criteria from the symmetric Wallace tensor from an input vector and stress value. Args: s (float): Stress value at which to evaluate the stability criteria n (3x1 array-like): direction of the applied stress """ n = get_uvec(n) stress = s * np.outer(n, n) sym_wallace = self.get_symmetric_wallace_tensor(stress) return np.linalg.det(sym_wallace.voigt)
def get_stability_criteria(self, s, n): """ Gets the stability criteria from the symmetric Wallace tensor from an input vector and stress value. Args: s (float): Stress value at which to evaluate the stability criteria n (3x1 array-like): direction of the applied stress """ n = get_uvec(n) stress = s * np.outer(n, n) sym_wallace = self.get_symmetric_wallace_tensor(stress) return np.linalg.det(sym_wallace.voigt)
def directional_elastic_mod(self, n): """ Calculates directional elastic modulus for a specific vector """ n = get_uvec(n) return self.einsum_sequence([n] * 4)
def directional_elastic_mod(self, n): """ Calculates directional elastic modulus for a specific vector """ n = get_uvec(n) return self.einsum_sequence([n]*4)