23 March 2020 12:13:44 PM LAPLACIAN_TEST C++ version Test the LAPLACIAN library. TEST01 A full-storage matrix is returned by: L1DD: Dirichlet/Dirichlet BC; L1DN: Dirichlet/Neumann BC; L1ND: Neumann/Dirichlet BC; L1NN: Neumann/Neumann BC; L1PP: Periodic BC; Using spacing H = 1 L1DD: Col: 0 1 2 3 4 Row 0: 2 -1 0 0 0 1: -1 2 -1 0 0 2: 0 -1 2 -1 0 3: 0 0 -1 2 -1 4: 0 0 0 -1 2 L1DN: Col: 0 1 2 3 4 Row 0: 2 -1 0 0 0 1: -1 2 -1 0 0 2: 0 -1 2 -1 0 3: 0 0 -1 2 -1 4: 0 0 0 -1 1 L1ND: Col: 0 1 2 3 4 Row 0: 1 -1 0 0 0 1: -1 2 -1 0 0 2: 0 -1 2 -1 0 3: 0 0 -1 2 -1 4: 0 0 0 -1 2 L1NN: Col: 0 1 2 3 4 Row 0: 1 -1 0 0 0 1: -1 2 -1 0 0 2: 0 -1 2 -1 0 3: 0 0 -1 2 -1 4: 0 0 0 -1 1 L1PP: Col: 0 1 2 3 4 Row 0: 2 -1 0 0 -1 1: -1 2 -1 0 0 2: 0 -1 2 -1 0 3: 0 0 -1 2 -1 4: -1 0 0 -1 2 Using spacing H = 0.166667 L1DD: Col: 0 1 2 3 4 Row 0: 72 -36 0 0 0 1: -36 72 -36 0 0 2: 0 -36 72 -36 0 3: 0 0 -36 72 -36 4: 0 0 0 -36 72 L1DN: Col: 0 1 2 3 4 Row 0: 72 -36 0 0 0 1: -36 72 -36 0 0 2: 0 -36 72 -36 0 3: 0 0 -36 72 -36 4: 0 0 0 -36 36 L1ND: Col: 0 1 2 3 4 Row 0: 36 -36 0 0 0 1: -36 72 -36 0 0 2: 0 -36 72 -36 0 3: 0 0 -36 72 -36 4: 0 0 0 -36 72 L1NN: Col: 0 1 2 3 4 Row 0: 36 -36 0 0 0 1: -36 72 -36 0 0 2: 0 -36 72 -36 0 3: 0 0 -36 72 -36 4: 0 0 0 -36 36 L1PP: Col: 0 1 2 3 4 Row 0: 72 -36 0 0 -36 1: -36 72 -36 0 0 2: 0 -36 72 -36 0 3: 0 0 -36 72 -36 4: -36 0 0 -36 72 TEST02 The Laplacian L is applied to data U by: L1DD_APPLY for Dirichlet/Dirichlet BC; L1DN_APPLY for Dirichlet/Neumann BC; L1ND_APPLY for Neumann/Dirichlet BC; L1NN_APPLY for Neumann/Neumann BC; L1PP_APPLY for Periodic BC; Using spacing H = 0.1 Vector U: 0: 0.09 1: 0.16 2: 0.21 3: 0.24 4: 0.25 5: 0.24 6: 0.21 7: 0.16 8: 0.09 L1DD(U): 0: 2 1: 2 2: 2 3: 2 4: 2 5: 2 6: 2 7: 2 8: 2 L1DN(U): 0: 2 1: 2 2: 2 3: 2 4: 2 5: 2 6: 2 7: 2 8: -7 L1ND(U): 0: -7 1: 2 2: 2 3: 2 4: 2 5: 2 6: 2 7: 2 8: 2 L1NN(U): 0: -7 1: 2 2: 2 3: 2 4: 2 5: 2 6: 2 7: 2 8: -7 L1PP(U): 0: -7 1: 2 2: 2 3: 2 4: 2 5: 2 6: 2 7: 2 8: -7 TEST03 Compute eigen information for the Laplacian: L1DD_EIGEN for Dirichlet/Dirichlet BC; L1DN_EIGEN for Dirichlet/Neumann BC; L1ND_EIGEN for Neumann/Dirichlet BC; L1NN_EIGEN for Neumann/Neumann BC; L1PP_EIGEN for Periodic BC; Using spacing H = 1 L1DD Eigenvalues: 0: 0.267949 1: 1 2: 2 3: 3 4: 3.73205 L1DD Eigenvectors: Col: 0 1 2 3 4 Row 0: 0.288675 0.5 0.57735 0.5 0.288675 1: 0.5 0.5 7.0705e-17 -0.5 -0.5 2: 0.57735 7.0705e-17 -0.57735 -1.4141e-16 0.57735 3: 0.5 -0.5 -1.4141e-16 0.5 -0.5 4: 0.288675 -0.5 0.57735 -0.5 0.288675 L1DD eigenerror = 1.07099e-15 L1DN Eigenvalues: 0: 0.0810141 1: 0.690279 2: 1.71537 3: 2.83083 4: 3.68251 L1DN Eigenvectors: Col: 0 1 2 3 4 Row 0: 0.169891 0.455734 0.596885 0.548529 0.326019 1: 0.326019 0.596885 0.169891 -0.455734 -0.548529 2: 0.455734 0.326019 -0.548529 -0.169891 0.596885 3: 0.548529 -0.169891 -0.326019 0.596885 -0.455734 4: 0.596885 -0.548529 0.455734 -0.326019 0.169891 L1DN eigenerror = 1.47635e-15 L1ND Eigenvalues: 0: 0.0810141 1: 0.690279 2: 1.71537 3: 2.83083 4: 3.68251 L1ND Eigenvectors: Col: 0 1 2 3 4 Row 0: 0.596885 0.548529 0.455734 0.326019 0.169891 1: 0.548529 0.169891 -0.326019 -0.596885 -0.455734 2: 0.455734 -0.326019 -0.548529 0.169891 0.596885 3: 0.326019 -0.596885 0.169891 0.455734 -0.548529 4: 0.169891 -0.455734 0.596885 -0.548529 0.326019 L1ND eigenerror = 1.4371e-15 L1NN Eigenvalues: 0: 0 1: 0.381966 2: 1.38197 3: 2.61803 4: 3.61803 L1NN Eigenvectors: Col: 0 1 2 3 4 Row 0: 2.23607 0.601501 0.511667 0.371748 0.19544 1: 2.23607 0.371748 -0.19544 -0.601501 -0.511667 2: 2.23607 3.87267e-17 -0.632456 -1.1618e-16 0.632456 3: 2.23607 -0.371748 -0.19544 0.601501 -0.511667 4: 2.23607 -0.601501 0.511667 -0.371748 0.19544 L1NN eigenerror = 8.60588e-16 L1PP Eigenvalues: 0: 0 1: 1.38197 2: 1.38197 3: 3.61803 4: 3.61803 L1PP Eigenvectors: Col: 0 1 2 3 4 Row 0: 0.447214 0.371748 0.511667 0.601501 0.19544 1: 0.447214 0.601501 -0.19544 -0.371748 -0.511667 2: 0.447214 7.74535e-17 -0.632456 -1.54907e-16 0.632456 3: 0.447214 -0.601501 -0.19544 0.371748 -0.511667 4: 0.447214 -0.371748 0.511667 -0.601501 0.19544 L1PP eigenerror = 8.06193e-16 Using spacing H = 0.166667 L1DD Eigenvalues: 0: 9.64617 1: 36 2: 72 3: 108 4: 134.354 L1DD Eigenvectors: Col: 0 1 2 3 4 Row 0: 0.288675 0.5 0.57735 0.5 0.288675 1: 0.5 0.5 7.0705e-17 -0.5 -0.5 2: 0.57735 7.0705e-17 -0.57735 -1.4141e-16 0.57735 3: 0.5 -0.5 -1.4141e-16 0.5 -0.5 4: 0.288675 -0.5 0.57735 -0.5 0.288675 L1DD eigenerror = 4.98107e-14 L1DN Eigenvalues: 0: 2.91651 1: 24.85 2: 61.7533 3: 101.91 4: 132.57 L1DN Eigenvectors: Col: 0 1 2 3 4 Row 0: 0.169891 0.455734 0.596885 0.548529 0.326019 1: 0.326019 0.596885 0.169891 -0.455734 -0.548529 2: 0.455734 0.326019 -0.548529 -0.169891 0.596885 3: 0.548529 -0.169891 -0.326019 0.596885 -0.455734 4: 0.596885 -0.548529 0.455734 -0.326019 0.169891 L1DN eigenerror = 4.45168e-14 L1ND Eigenvalues: 0: 2.91651 1: 24.85 2: 61.7533 3: 101.91 4: 132.57 L1ND Eigenvectors: Col: 0 1 2 3 4 Row 0: 0.596885 0.548529 0.455734 0.326019 0.169891 1: 0.548529 0.169891 -0.326019 -0.596885 -0.455734 2: 0.455734 -0.326019 -0.548529 0.169891 0.596885 3: 0.326019 -0.596885 0.169891 0.455734 -0.548529 4: 0.169891 -0.455734 0.596885 -0.548529 0.326019 L1ND eigenerror = 6.01291e-14 L1NN Eigenvalues: 0: 0 1: 13.7508 2: 49.7508 3: 94.2492 4: 130.249 L1NN Eigenvectors: Col: 0 1 2 3 4 Row 0: 2.23607 0.601501 0.511667 0.371748 0.19544 1: 2.23607 0.371748 -0.19544 -0.601501 -0.511667 2: 2.23607 3.87267e-17 -0.632456 -1.1618e-16 0.632456 3: 2.23607 -0.371748 -0.19544 0.601501 -0.511667 4: 2.23607 -0.601501 0.511667 -0.371748 0.19544 L1NN eigenerror = 3.1745e-14 L1PP Eigenvalues: 0: 0 1: 49.7508 2: 49.7508 3: 130.249 4: 130.249 L1PP Eigenvectors: Col: 0 1 2 3 4 Row 0: 0.447214 0.371748 0.511667 0.601501 0.19544 1: 0.447214 0.601501 -0.19544 -0.371748 -0.511667 2: 0.447214 7.74535e-17 -0.632456 -1.54907e-16 0.632456 3: 0.447214 -0.601501 -0.19544 0.371748 -0.511667 4: 0.447214 -0.371748 0.511667 -0.601501 0.19544 L1PP eigenerror = 4.17302e-14 TEST04 The inverse of a full-storage matrix is returned by: L1DD_INVERSE: Dirichlet/Dirichlet BC; L1DN_INVERSE: Dirichlet/Neumann BC; L1ND_INVERSE: Neumann/Dirichlet BC; Using spacing H = 1 L1DD: Col: 0 1 2 3 4 Row 0: 2 -1 0 0 0 1: -1 2 -1 0 0 2: 0 -1 2 -1 0 3: 0 0 -1 2 -1 4: 0 0 0 -1 2 L1DD_INVERSE: Col: 0 1 2 3 4 Row 0: 0.833333 0.666667 0.5 0.333333 0.166667 1: 0.666667 1.33333 1 0.666667 0.333333 2: 0.5 1 1.5 1 0.5 3: 0.333333 0.666667 1 1.33333 0.666667 4: 0.166667 0.333333 0.5 0.666667 0.833333 L1DD inverse error = 6.86635e-16 L1DN: Col: 0 1 2 3 4 Row 0: 2 -1 0 0 0 1: -1 2 -1 0 0 2: 0 -1 2 -1 0 3: 0 0 -1 2 -1 4: 0 0 0 -1 1 L1DN_INVERSE: Col: 0 1 2 3 4 Row 0: 1 1 1 1 1 1: 1 2 2 2 2 2: 1 2 3 3 3 3: 1 2 3 4 4 4: 1 2 3 4 5 L1DN inverse error = 0 L1ND: Col: 0 1 2 3 4 Row 0: 1 -1 0 0 0 1: -1 2 -1 0 0 2: 0 -1 2 -1 0 3: 0 0 -1 2 -1 4: 0 0 0 -1 2 L1ND_INVERSE: Col: 0 1 2 3 4 Row 0: 5 4 3 2 1 1: 4 4 3 2 1 2: 3 3 3 2 1 3: 2 2 2 2 1 4: 1 1 1 1 1 L1ND inverse error = 0 Using spacing H = 0.166667 L1DD: Col: 0 1 2 3 4 Row 0: 72 -36 0 0 0 1: -36 72 -36 0 0 2: 0 -36 72 -36 0 3: 0 0 -36 72 -36 4: 0 0 0 -36 72 L1DD_INVERSE: Col: 0 1 2 3 4 Row 0: 0.0231481 0.0185185 0.0138889 0.00925926 0.00462963 1: 0.0185185 0.037037 0.0277778 0.0185185 0.00925926 2: 0.0138889 0.0277778 0.0416667 0.0277778 0.0138889 3: 0.00925926 0.0185185 0.0277778 0.037037 0.0185185 4: 0.00462963 0.00925926 0.0138889 0.0185185 0.0231481 L1DD inverse error = 1.16573e-15 L1DN: Col: 0 1 2 3 4 Row 0: 72 -36 0 0 0 1: -36 72 -36 0 0 2: 0 -36 72 -36 0 3: 0 0 -36 72 -36 4: 0 0 0 -36 36 L1DN_INVERSE: Col: 0 1 2 3 4 Row 0: 0.0277778 0.0277778 0.0277778 0.0277778 0.0277778 1: 0.0277778 0.0555556 0.0555556 0.0555556 0.0555556 2: 0.0277778 0.0555556 0.0833333 0.0833333 0.0833333 3: 0.0277778 0.0555556 0.0833333 0.111111 0.111111 4: 0.0277778 0.0555556 0.0833333 0.111111 0.138889 L1DN inverse error = 2.51215e-15 L1ND: Col: 0 1 2 3 4 Row 0: 36 -36 0 0 0 1: -36 72 -36 0 0 2: 0 -36 72 -36 0 3: 0 0 -36 72 -36 4: 0 0 0 -36 72 L1ND_INVERSE: Col: 0 1 2 3 4 Row 0: 0.138889 0.111111 0.0833333 0.0555556 0.0277778 1: 0.111111 0.111111 0.0833333 0.0555556 0.0277778 2: 0.0833333 0.0833333 0.0833333 0.0555556 0.0277778 3: 0.0555556 0.0555556 0.0555556 0.0555556 0.0277778 4: 0.0277778 0.0277778 0.0277778 0.0277778 0.0277778 L1ND inverse error = 2.51215e-15 TEST05 Compute upper Cholesky factors for the Laplacian: L1DD_CHOLESKY for Dirichlet/Dirichlet BC; L1DN_CHOLESKY for Dirichlet/Neumann BC; L1ND_CHOLESKY for Neumann/Dirichlet BC; L1NN_CHOLESKY for Neumann/Neumann BC; L1PP_CHOLESKY for Periodic BC; Using spacing H = 1 L1DD Cholesky factor: Col: 0 1 2 3 4 Row 0: 1.41421 -0.707107 0 0 0 1: 0 1.22474 -0.816497 0 0 2: 0 0 1.1547 -0.866025 0 3: 0 0 0 1.11803 -0.894427 4: 0 0 0 0 1.09545 L1DD Cholesky error = 8.88178e-16 L1DN Cholesky factor: Col: 0 1 2 3 4 Row 0: 1.41421 -0.707107 0 0 0 1: 0 1.22474 -0.816497 0 0 2: 0 0 1.1547 -0.866025 0 3: 0 0 0 1.11803 -0.894427 4: 0 0 0 0 0.447214 L1DN Cholesky error = 7.77156e-16 L1ND Cholesky factor: Col: 0 1 2 3 4 Row 0: 1 -1 0 0 0 1: 0 1 -1 0 0 2: 0 0 1 -1 0 3: 0 0 0 1 -1 4: 0 0 0 0 1 L1ND Cholesky error = 0 L1NN Cholesky factor: Col: 0 1 2 3 4 Row 0: 1 -1 0 0 0 1: 0 1 -1 0 0 2: 0 0 1 -1 0 3: 0 0 0 1 -1 4: 0 0 0 0 0 L1NN Cholesky error = 0 L1PP Cholesky factor: Col: 0 1 2 3 4 Row 0: 1.41421 -0.707107 0 0 -0.707107 1: 0 1.22474 -0.816497 0 -0.408248 2: 0 0 1.1547 -0.866025 -0.288675 3: 0 0 0 1.11803 -1.11803 4: 0 0 0 0 0 L1PP Cholesky error = 1.113e-15 Using spacing H = 0.166667 L1DD Cholesky factor: Col: 0 1 2 3 4 Row 0: 8.48528 -4.24264 0 0 0 1: 0 7.34847 -4.89898 0 0 2: 0 0 6.9282 -5.19615 0 3: 0 0 0 6.7082 -5.36656 4: 0 0 0 0 6.57267 L1DD Cholesky error = 3.75984e-14 L1DN Cholesky factor: Col: 0 1 2 3 4 Row 0: 8.48528 -4.24264 0 0 0 1: 0 7.34847 -4.89898 0 0 2: 0 0 6.9282 -5.19615 0 3: 0 0 0 6.7082 -5.36656 4: 0 0 0 0 2.68328 L1DN Cholesky error = 3.75984e-14 L1ND Cholesky factor: Col: 0 1 2 3 4 Row 0: 6 -6 0 0 0 1: 0 6 -6 0 0 2: 0 0 6 -6 0 3: 0 0 0 6 -6 4: 0 0 0 0 6 L1ND Cholesky error = 0 L1NN Cholesky factor: Col: 0 1 2 3 4 Row 0: 6 -6 0 0 0 1: 0 6 -6 0 0 2: 0 0 6 -6 0 3: 0 0 0 6 -6 4: 0 0 0 0 0 L1NN Cholesky error = 0 L1PP Cholesky factor: Col: 0 1 2 3 4 Row 0: 8.48528 -4.24264 0 0 -4.24264 1: 0 7.34847 -4.89898 0 -2.44949 2: 0 0 6.9282 -5.19615 -1.73205 3: 0 0 0 6.7082 -6.7082 4: 0 0 0 0 0 L1PP Cholesky error = 4.14314e-14 TEST06 Compute LU factors for the Laplacian: L1DD_LU for Dirichlet/Dirichlet BC; L1DN_LU for Dirichlet/Neumann BC; L1ND_LU for Neumann/Dirichlet BC; L1NN_LU for Neumann/Neumann BC; L1PP_LU for Periodic BC; Using spacing H = 1 L1DD L factor: Col: 0 1 2 3 4 Row 0: 1 0 0 0 0 1: -0.5 1 0 0 0 2: 0 -0.666667 1 0 0 3: 0 0 -0.75 1 0 4: 0 0 0 -0.8 1 L1DD U factor: Col: 0 1 2 3 4 Row 0: 2 -1 0 0 0 1: 0 1.5 -1 0 0 2: 0 0 1.33333 -1 0 3: 0 0 0 1.25 -1 4: 0 0 0 0 1.2 L1DD LU error = 0 L1DN L factor: Col: 0 1 2 3 4 Row 0: 1 0 0 0 0 1: -0.5 1 0 0 0 2: 0 -0.666667 1 0 0 3: 0 0 -0.75 1 0 4: 0 0 0 -0.8 1 L1DN U factor: Col: 0 1 2 3 4 Row 0: 2 -1 0 0 0 1: 0 1.5 -1 0 0 2: 0 0 1.33333 -1 0 3: 0 0 0 1.25 -1 4: 0 0 0 0 0.2 L1DN LU error = 0 L1ND L factor: Col: 0 1 2 3 4 Row 0: 1 0 0 0 0 1: -1 1 0 0 0 2: 0 -1 1 0 0 3: 0 0 -1 1 0 4: 0 0 0 -1 1 L1ND U factor: Col: 0 1 2 3 4 Row 0: 1 -1 0 0 0 1: 0 1 -1 0 0 2: 0 0 1 -1 0 3: 0 0 0 1 -1 4: 0 0 0 0 1 L1ND LU error = 0 L1NN L factor: Col: 0 1 2 3 4 Row 0: 1 0 0 0 0 1: -1 1 0 0 0 2: 0 -1 1 0 0 3: 0 0 -1 1 0 4: 0 0 0 -1 1 L1NN U factor: Col: 0 1 2 3 4 Row 0: 1 -1 0 0 0 1: 0 1 -1 0 0 2: 0 0 1 -1 0 3: 0 0 0 1 -1 4: 0 0 0 0 0 L1NN LU error = 0 L1PP L factor: Col: 0 1 2 3 4 Row 0: 1 0 0 0 0 1: -0.5 1 0 0 0 2: 0 -0.666667 1 0 0 3: 0 0 -0.75 1 0 4: -0.5 -0.333333 -0.25 -1 1 L1PP U factor: Col: 0 1 2 3 4 Row 0: 2 -1 0 0 -1 1: 0 1.5 -1 0 -0.5 2: 0 0 1.33333 -1 -0.333333 3: 0 0 0 1.25 -1.25 4: 0 0 0 0 0 L1PP LU error = 0 Using spacing H = 0.166667 L1DD L factor: Col: 0 1 2 3 4 Row 0: 6 0 0 0 0 1: -3 6 0 0 0 2: 0 -4 6 0 0 3: 0 0 -4.5 6 0 4: 0 0 0 -4.8 6 L1DD U factor: Col: 0 1 2 3 4 Row 0: 12 -6 0 0 0 1: 0 9 -6 0 0 2: 0 0 8 -6 0 3: 0 0 0 7.5 -6 4: 0 0 0 0 7.2 L1DD LU error = 7.10543e-15 L1DN L factor: Col: 0 1 2 3 4 Row 0: 6 0 0 0 0 1: -3 6 0 0 0 2: 0 -4 6 0 0 3: 0 0 -4.5 6 0 4: 0 0 0 -4.8 6 L1DN U factor: Col: 0 1 2 3 4 Row 0: 12 -6 0 0 0 1: 0 9 -6 0 0 2: 0 0 8 -6 0 3: 0 0 0 7.5 -6 4: 0 0 0 0 1.2 L1DN LU error = 1.00486e-14 L1ND L factor: Col: 0 1 2 3 4 Row 0: 6 0 0 0 0 1: -6 6 0 0 0 2: 0 -6 6 0 0 3: 0 0 -6 6 0 4: 0 0 0 -6 6 L1ND U factor: Col: 0 1 2 3 4 Row 0: 6 -6 0 0 0 1: 0 6 -6 0 0 2: 0 0 6 -6 0 3: 0 0 0 6 -6 4: 0 0 0 0 6 L1ND LU error = 0 L1NN L factor: Col: 0 1 2 3 4 Row 0: 6 0 0 0 0 1: -6 6 0 0 0 2: 0 -6 6 0 0 3: 0 0 -6 6 0 4: 0 0 0 -6 6 L1NN U factor: Col: 0 1 2 3 4 Row 0: 6 -6 0 0 0 1: 0 6 -6 0 0 2: 0 0 6 -6 0 3: 0 0 0 6 -6 4: 0 0 0 0 0 L1NN LU error = 0 L1PP L factor: Col: 0 1 2 3 4 Row 0: 6 0 0 0 0 1: -3 6 0 0 0 2: 0 -4 6 0 0 3: 0 0 -4.5 6 0 4: -3 -2 -1.5 -6 6 L1PP U factor: Col: 0 1 2 3 4 Row 0: 12 -6 0 0 -6 1: 0 9 -6 0 -3 2: 0 0 8 -6 -2 3: 0 0 0 7.5 -7.5 4: 0 0 0 0 0 L1PP LU error = 0 LAPLACIAN_TEST Normal end of execution. 23 March 2020 12:13:44 PM