@staticmethod
    def checkOrthogonal(A, tol=10**-6, softCheck = False, investigate = False, arrayInfo = "?"):
        diff = numpy.linalg.norm(A.conj().T.dot(A) - numpy.eye(A.shape[1]))
        if diff > tol:
            try :
                return Parameter.whatToDo("Non-orthogonal matrix A=" + arrayInfo + ": ||A*A.T - Id||_F = " + str(diff), softCheck)
            finally : # s.t. when raising an error, the investigation appears after
                if investigate:
                    Diff = A.conj().T.dot(A) - numpy.eye(A.shape[1])
                    print("indexes:\n", (abs(Diff)>tol).nonzero())
                    print("values\n", Diff[abs(Diff)>tol])
        return True
helper function to handle a petsc backwards incompatibility between 3.6
dataset/ETHPy150Open charanpald/APGL/apgl/util/Parameter.py/Parameter.checkOrthogonal--crossover with--dataset/ETHPy150Open OpenMDAO/OpenMDAO/openmdao/solvers/petsc_ksp.py/_get_petsc_vec_array_new