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 ) : 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
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