def operator_2d(current, coeff): u, v = current N, M = v.shape coeff1, coeff2 = coeff a11, b11, c11, d11, e11, f11, a12, b12, c12, d12, e12, f12 = coeff1 a21, b21, c21, d21, e21, f21, a22, b22, c22, d22, e22, f22 = coeff2 defect1 = llt.PDE(u, N, [a11, b11, c11, d11, e11, f11]) + llt.PDE(v, N, [a12, b12, c12, d12, e12, f12]) defect2 = llt.PDE(u, N, [a21, b21, c21, d21, e21, f21]) + llt.PDE(v, N, [a22, b22, c22, d22, e22, f22]) return np.array([defect1, defect2])
def residuals_2d(current, coeff, rhs): u, v = current N, M = v.shape coeff1, coeff2 = coeff a11, b11, c11, d11, e11, f11, a12, b12, c12, d12, e12, f12 = coeff1 a21, b21, c21, d21, e21, f21, a22, b22, c22, d22, e22, f22 = coeff2 r1, r2 = rhs defect1 = r1 - llt.PDE(u, N, [a11, b11, c11, d11, e11, f11]) - llt.PDE(v, N, [a12, b12, c12, d12, e12, f12]) defect2 = r2 - llt.PDE(u, N, [a21, b21, c21, d21, e21, f21]) - llt.PDE(v, N, [a22, b22, c22, d22, e22, f22]) return np.array([defect1, defect2])
def defects_2d(current, coeff, rhs): u, v = current N, M = v.shape coeff1, coeff2 = coeff a11, b11, c11, d11, e11, f11, a12, b12, c12, d12, e12, f12 = coeff1 a21, b21, c21, d21, e21, f21, a22, b22, c22, d22, e22, f22 = coeff2 r1, r2 = rhs defect1 = llt.PDE(u, N, [a11, b11, c11, d11, e11, f11]) + llt.PDE(v, N, [a12, b12, c12, d12, e12, f12]) - r1 defect2 = llt.PDE(u, N, [a21, b21, c21, d21, e21, f21]) + llt.PDE(v, N, [a22, b22, c22, d22, e22, f22]) - r2 d1 = np.linalg.norm(defect1[1:-1, 1:-1].reshape((-1,)), ord=np.inf) d2 = np.linalg.norm(defect2[1:-1, 1:-1].reshape((-1,)), ord=np.inf) return np.array([d1, d2])
def operator_1d(current, coeff): u = current[0] N, M = u.shape coeff1 = coeff[0] a11, b11, c11, d11, e11, f11 = coeff1 defect1 = llt.PDE(u, N, [a11, b11, c11, d11, e11, f11]) return np.array([defect1])
def residuals_1d(current, coeff, rhs): u = current[0] N, M = u.shape coeff1 = coeff[0] a11, b11, c11, d11, e11, f11 = coeff1 r1 = rhs[0] defect1 = - llt.PDE(u, N, [a11, b11, c11, d11, e11, f11]) + r1 return np.array([defect1])
def defects_1d(current, coeff, rhs): u = current[0] N, M = u.shape coeff1 = coeff[0] a11, b11, c11, d11, e11, f11 = coeff1 r1 = rhs[0] defect1 = llt.PDE(u, N, [a11, b11, c11, d11, e11, f11]) - r1 d1 = np.linalg.norm(defect1[1:-1, 1:-1].reshape((-1,)), ord=np.inf) return np.array([d1])