From 0d8b4c004ea1038cc13b2736eb3c6ce8306bdc49 Mon Sep 17 00:00:00 2001 From: Christian Glusa Date: Fri, 26 Jul 2024 14:46:38 -0600 Subject: [PATCH 1/2] MueLu: Remove Epetra from CMake Signed-off-by: Christian Glusa --- packages/muelu/CMakeLists.txt | 43 - packages/muelu/adapters/CMakeLists.txt | 22 - packages/muelu/cmake/Dependencies.cmake | 7 +- packages/muelu/doc/CMakeLists.txt | 6 - packages/muelu/doc/Tutorial/CMakeLists.txt | 9 - packages/muelu/doc/Tutorial/README | 59 - .../muelu/doc/Tutorial/src/CMakeLists.txt | 88 - packages/muelu/doc/Tutorial/src/Challenge.cpp | 229 - .../doc/Tutorial/src/MLParameterList.cpp | 337 - .../muelu/doc/Tutorial/src/MueLu_Agg2VTK.py | 448 - .../muelu/doc/Tutorial/src/ScalingTest.cpp | 660 - .../doc/Tutorial/src/ScalingTestParamList.cpp | 494 - packages/muelu/doc/Tutorial/src/hands-on.py | 889 - packages/muelu/doc/Tutorial/src/laplace2d.cpp | 423 - packages/muelu/doc/Tutorial/src/recirc2d.cpp | 373 - .../muelu/doc/Tutorial/src/recirc2d_api.cpp | 401 - .../Tutorial/src/tmpl/MueLu_Agg2VTK.py_TMPL | 448 - .../doc/Tutorial/src/tmpl/muelu.xml_TMPL | 205 - .../doc/Tutorial/src/tmpl/muelu_easy.xml_TMPL | 38 - .../doc/Tutorial/src/xml/ml_ParameterList.xml | 7 - .../src/xml/ml_RebalancedParameterList.xml | 11 - .../Tutorial/src/xml/muelu_ParameterList.xml | 67 - .../muelu/doc/Tutorial/src/xml/n1_easy.xml | 24 - .../muelu/doc/Tutorial/src/xml/n1_easy_pg.xml | 25 - .../doc/Tutorial/src/xml/n2_easy_agg.xml | 26 - .../doc/Tutorial/src/xml/n2_easy_agg2.xml | 27 - .../doc/Tutorial/src/xml/n2_easy_agg3.xml | 27 - .../doc/Tutorial/src/xml/n2_easy_export.xml | 23 - .../muelu/doc/Tutorial/src/xml/s1_easy.xml | 26 - .../doc/Tutorial/src/xml/s1_easy_10levels.xml | 26 - .../src/xml/s1_easy_3levels_smoothed.xml | 26 - .../src/xml/s1_easy_3levels_unsmoothed.xml | 26 - .../doc/Tutorial/src/xml/s1_easy_exercise.xml | 20 - .../doc/Tutorial/src/xml/s1_easy_jacobi.xml | 26 - .../doc/Tutorial/src/xml/s1_easy_jacobi2.xml | 29 - .../muelu/doc/Tutorial/src/xml/s2_adv_a.xml | 31 - .../muelu/doc/Tutorial/src/xml/s2_adv_b.xml | 42 - .../muelu/doc/Tutorial/src/xml/s2_adv_c.xml | 78 - .../muelu/doc/Tutorial/src/xml/s2_easy.xml | 58 - packages/muelu/doc/Tutorial/src/xml/s2a.xml | 138 - packages/muelu/doc/Tutorial/src/xml/s2b.xml | 83 - packages/muelu/doc/Tutorial/src/xml/s3a.xml | 34 - .../muelu/doc/Tutorial/src/xml/s3a_easy.xml | 22 - packages/muelu/doc/Tutorial/src/xml/s3b.xml | 66 - packages/muelu/doc/Tutorial/src/xml/s3b1.xml | 66 - packages/muelu/doc/Tutorial/src/xml/s3b2.xml | 66 - packages/muelu/doc/Tutorial/src/xml/s3b3.xml | 66 - .../muelu/doc/Tutorial/src/xml/s3b_easy.xml | 22 - packages/muelu/doc/Tutorial/src/xml/s3c.xml | 73 - .../muelu/doc/Tutorial/src/xml/s3c_easy.xml | 22 - packages/muelu/doc/Tutorial/src/xml/s4a.xml | 72 - packages/muelu/doc/Tutorial/src/xml/s4av.xml | 87 - packages/muelu/doc/Tutorial/src/xml/s4b.xml | 81 - packages/muelu/doc/Tutorial/src/xml/s4c.xml | 82 - packages/muelu/doc/Tutorial/src/xml/s5a.xml | 119 - packages/muelu/doc/Tutorial/src/xml/s5b.xml | 184 - .../muelu/doc/Tutorial/src/xml/s6_dep.xml | 20 - .../muelu/doc/Tutorial/src/xml/s6_export.xml | 23 - .../muelu/doc/Tutorial/tex/CMakeLists.txt | 75 - packages/muelu/doc/Tutorial/tex/bookstyle.tex | 408 - .../muelu/doc/Tutorial/tex/definitions.tex | 52 - packages/muelu/doc/Tutorial/tex/main.tex | 3520 -- .../Tutorial/tex/pics/1level_1000jac09.png | Bin 79456 -> 0 bytes .../doc/Tutorial/tex/pics/1level_100jac09.png | Bin 79098 -> 0 bytes .../doc/Tutorial/tex/pics/1level_10jac09.png | Bin 85894 -> 0 bytes .../doc/Tutorial/tex/pics/1level_1jac09.png | Bin 105697 -> 0 bytes .../Tutorial/tex/pics/2level_1000jac09.png | Bin 81991 -> 0 bytes .../doc/Tutorial/tex/pics/2level_100jac09.png | Bin 82470 -> 0 bytes .../doc/Tutorial/tex/pics/2level_10jac09.png | Bin 80270 -> 0 bytes .../doc/Tutorial/tex/pics/2level_1jac09.png | Bin 105697 -> 0 bytes .../doc/Tutorial/tex/pics/3level_100jac09.png | Bin 81825 -> 0 bytes .../doc/Tutorial/tex/pics/3level_10jac09.png | Bin 82475 -> 0 bytes .../doc/Tutorial/tex/pics/3level_1jac09.png | Bin 80113 -> 0 bytes .../tex/pics/5sweeps_1level_100jac09.png | Bin 79856 -> 0 bytes .../tex/pics/5sweeps_1level_10jac09.png | Bin 83882 -> 0 bytes .../tex/pics/5sweeps_1level_1jac09.png | Bin 92733 -> 0 bytes .../tex/pics/5sweeps_2level_100jac09.png | Bin 80933 -> 0 bytes .../tex/pics/5sweeps_2level_10jac09.png | Bin 79041 -> 0 bytes .../tex/pics/5sweeps_2level_1jac09.png | Bin 83097 -> 0 bytes .../tex/pics/5sweeps_3level_100jac09.png | Bin 91458 -> 0 bytes .../tex/pics/5sweeps_3level_10jac09.png | Bin 83796 -> 0 bytes .../tex/pics/5sweeps_3level_1jac09.png | Bin 80300 -> 0 bytes .../doc/Tutorial/tex/pics/aggsNonSymm.png | Bin 35357 -> 0 bytes .../muelu/doc/Tutorial/tex/pics/aggsSymm.png | Bin 32908 -> 0 bytes .../doc/Tutorial/tex/pics/aggsSymmCoupled.png | Bin 33120 -> 0 bytes .../doc/Tutorial/tex/pics/aggsSymmReb.png | Bin 61880 -> 0 bytes .../doc/Tutorial/tex/pics/background.pdf | Bin 15253 -> 0 bytes .../muelu/doc/Tutorial/tex/pics/dep_graph.png | Bin 146851 -> 0 bytes .../doc/Tutorial/tex/pics/installation_1.png | Bin 117107 -> 0 bytes .../doc/Tutorial/tex/pics/installation_2.png | Bin 136371 -> 0 bytes .../muelu/doc/Tutorial/tex/pics/lubuntu_1.png | Bin 177689 -> 0 bytes .../muelu/doc/Tutorial/tex/pics/lubuntu_2.png | Bin 673049 -> 0 bytes .../muelu/doc/Tutorial/tex/pics/lubuntu_3.png | Bin 408127 -> 0 bytes .../muelu/doc/Tutorial/tex/pics/lubuntu_4.png | Bin 101962 -> 0 bytes .../muelu/doc/Tutorial/tex/pics/lubuntu_5.png | Bin 164288 -> 0 bytes .../muelu/doc/Tutorial/tex/pics/lubuntu_6.png | Bin 139328 -> 0 bytes .../muelu/doc/Tutorial/tex/pics/s4al1.png | Bin 38797 -> 0 bytes .../muelu/doc/Tutorial/tex/pics/s4al2.png | Bin 29236 -> 0 bytes .../muelu/doc/Tutorial/tex/pics/s4al3.png | Bin 11001 -> 0 bytes .../muelu/doc/Tutorial/tex/pics/s4bl1.png | Bin 40428 -> 0 bytes .../muelu/doc/Tutorial/tex/pics/s4bl2.png | Bin 70600 -> 0 bytes .../muelu/doc/Tutorial/tex/pics/s4bl3.png | Bin 59234 -> 0 bytes .../muelu/doc/Tutorial/tex/pics/tut1_1.png | Bin 50089 -> 0 bytes .../muelu/doc/Tutorial/tex/pics/tut1_10.png | Bin 86365 -> 0 bytes .../muelu/doc/Tutorial/tex/pics/tut1_11.png | Bin 36706 -> 0 bytes .../muelu/doc/Tutorial/tex/pics/tut1_12.png | Bin 31788 -> 0 bytes .../muelu/doc/Tutorial/tex/pics/tut1_13.png | Bin 80056 -> 0 bytes .../muelu/doc/Tutorial/tex/pics/tut1_14.png | Bin 88662 -> 0 bytes .../muelu/doc/Tutorial/tex/pics/tut1_15.png | Bin 71112 -> 0 bytes .../muelu/doc/Tutorial/tex/pics/tut1_16.png | Bin 82202 -> 0 bytes .../muelu/doc/Tutorial/tex/pics/tut1_17.png | Bin 109721 -> 0 bytes .../muelu/doc/Tutorial/tex/pics/tut1_18.png | Bin 133310 -> 0 bytes .../muelu/doc/Tutorial/tex/pics/tut1_2.png | Bin 64042 -> 0 bytes .../muelu/doc/Tutorial/tex/pics/tut1_3.png | Bin 68092 -> 0 bytes .../muelu/doc/Tutorial/tex/pics/tut1_4.png | Bin 83439 -> 0 bytes .../muelu/doc/Tutorial/tex/pics/tut1_5.png | Bin 62076 -> 0 bytes .../muelu/doc/Tutorial/tex/pics/tut1_6.png | Bin 80148 -> 0 bytes .../muelu/doc/Tutorial/tex/pics/tut1_7.png | Bin 66644 -> 0 bytes .../muelu/doc/Tutorial/tex/pics/tut1_8.png | Bin 82856 -> 0 bytes .../muelu/doc/Tutorial/tex/pics/tut1_9.png | Bin 99954 -> 0 bytes .../doc/Tutorial/tex/prepareTexTutorial.py | 215 - packages/muelu/doc/Tutorial/tex/s1_easy.txt | 1 - packages/muelu/doc/Tutorial/tex/version.txt | 1 - .../example/ParameterList/CMakeLists.txt | 15 +- .../example/advanced/levelwrap/CMakeLists.txt | 6 +- .../example/advanced/memory/CMakeLists.txt | 7 - .../advanced/multiplesolve/CMakeLists.txt | 14 +- packages/muelu/example/basic/CMakeLists.txt | 22 +- packages/muelu/research/q2q1/CMakeLists.txt | 8 +- .../research/semicoarsening/CMakeLists.txt | 4 +- .../research/tawiesn/aria/CMakeLists.txt | 3 +- .../research/tawiesn/crada/CMakeLists.txt | 3 +- packages/muelu/src/CMakeLists.txt | 27 - packages/muelu/test/CMakeLists.txt | 3 - .../muelu/test/blockedtransfer/CMakeLists.txt | 35 - .../muelu/test/convergence/CMakeLists.txt | 24 - packages/muelu/test/helmholtz/CMakeLists.txt | 11 - packages/muelu/test/interface/CMakeLists.txt | 71 - packages/muelu/test/longlong/CMakeLists.txt | 2 - packages/muelu/test/maxwell/CMakeLists.txt | 69 - .../muelu/test/navierstokes/A_re1000_5932.txt | 27952 ---------------- .../muelu/test/navierstokes/CMakeLists.txt | 197 - .../Navier2DBlocked_BraessSarazin.cpp | 499 - .../Navier2DBlocked_BraessSarazinSmoother.cpp | 324 - .../navierstokes/Navier2DBlocked_Epetra.cpp | 542 - .../navierstokes/Navier2DBlocked_Simple.cpp | 533 - .../Navier2DBlocked_SimpleSmoother.cpp | 353 - .../navierstokes/Navier2DBlocked_test2.cpp | 612 - .../test/navierstokes/Navier2DBlocked_xml.cpp | 308 - .../test/navierstokes/Navier2D_Epetra.cpp | 443 - .../test/navierstokes/Navier2D_Helpers.cpp | 11 - .../test/navierstokes/Navier2D_Helpers.h | 245 - .../muelu/test/navierstokes/b_re1000_5932.txt | 1502 - packages/muelu/test/navierstokes/myBGS1.xml | 211 - packages/muelu/test/navierstokes/myBS1.xml | 210 - packages/muelu/test/navierstokes/myBS2.xml | 193 - packages/muelu/test/navierstokes/myBS3.xml | 201 - .../muelu/test/navierstokes/myIndefDiag1.xml | 211 - packages/muelu/test/navierstokes/mySIM1.xml | 212 - packages/muelu/test/navierstokes/mySIM2.xml | 212 - packages/muelu/test/navierstokes/myUzawa1.xml | 211 - packages/muelu/test/navierstokes/myUzawa2.xml | 219 - packages/muelu/test/navierstokes/myUzawa3.xml | 217 - packages/muelu/test/navierstokes/myXML.xml | 201 - packages/muelu/test/navierstokes/myXML2.xml | 215 - packages/muelu/test/navierstokes/myXMLg.xml | 217 - .../test/perf_tests_kokkos/CMakeLists.txt | 15 +- .../muelu/test/permutation/CMakeLists.txt | 17 - .../muelu/test/permutation/Permutation.cpp | 310 - packages/muelu/test/permutation/exp1.txt | 3 - packages/muelu/test/permutation/exp2.txt | 6 - packages/muelu/test/permutation/exp3.txt | 6 - packages/muelu/test/permutation/exp4.txt | 6 - packages/muelu/test/permutation/exp5.txt | 13 - packages/muelu/test/permutation/test1.txt | 3 - packages/muelu/test/permutation/test2.txt | 6 - packages/muelu/test/permutation/test3.txt | 6 - packages/muelu/test/permutation/test4.txt | 6 - packages/muelu/test/permutation/test5.txt | 10 - packages/muelu/test/scaling/CMakeLists.txt | 141 +- packages/muelu/test/simple1D/CMakeLists.txt | 74 - packages/muelu/test/simple1D/Emin.cpp | 365 - packages/muelu/test/simple1D/aggregation.cpp | 107 - packages/muelu/test/simple1D/amesos2.cpp | 282 - .../muelu/test/simple1D/amesos2StandAlone.cpp | 134 - .../muelu/test/simple1D/mainMergedSmoo.cpp | 270 - .../simple1D-UncoupledAggregation.cpp | 165 - packages/muelu/test/structured/CMakeLists.txt | 34 - .../muelu/test/toggletransfer/CMakeLists.txt | 48 - packages/muelu/test/unit_tests/CMakeLists.txt | 96 +- packages/muelu/test/viz/CMakeLists.txt | 23 - 191 files changed, 15 insertions(+), 50108 deletions(-) delete mode 100644 packages/muelu/doc/Tutorial/CMakeLists.txt delete mode 100644 packages/muelu/doc/Tutorial/README delete mode 100644 packages/muelu/doc/Tutorial/src/CMakeLists.txt delete mode 100644 packages/muelu/doc/Tutorial/src/Challenge.cpp delete mode 100644 packages/muelu/doc/Tutorial/src/MLParameterList.cpp delete mode 100755 packages/muelu/doc/Tutorial/src/MueLu_Agg2VTK.py delete mode 100644 packages/muelu/doc/Tutorial/src/ScalingTest.cpp delete mode 100644 packages/muelu/doc/Tutorial/src/ScalingTestParamList.cpp delete mode 100755 packages/muelu/doc/Tutorial/src/hands-on.py delete mode 100644 packages/muelu/doc/Tutorial/src/laplace2d.cpp delete mode 100644 packages/muelu/doc/Tutorial/src/recirc2d.cpp delete mode 100644 packages/muelu/doc/Tutorial/src/recirc2d_api.cpp delete mode 100755 packages/muelu/doc/Tutorial/src/tmpl/MueLu_Agg2VTK.py_TMPL delete mode 100644 packages/muelu/doc/Tutorial/src/tmpl/muelu.xml_TMPL delete mode 100644 packages/muelu/doc/Tutorial/src/tmpl/muelu_easy.xml_TMPL delete mode 100644 packages/muelu/doc/Tutorial/src/xml/ml_ParameterList.xml delete mode 100644 packages/muelu/doc/Tutorial/src/xml/ml_RebalancedParameterList.xml delete mode 100644 packages/muelu/doc/Tutorial/src/xml/muelu_ParameterList.xml delete mode 100644 packages/muelu/doc/Tutorial/src/xml/n1_easy.xml delete mode 100644 packages/muelu/doc/Tutorial/src/xml/n1_easy_pg.xml delete mode 100644 packages/muelu/doc/Tutorial/src/xml/n2_easy_agg.xml delete mode 100644 packages/muelu/doc/Tutorial/src/xml/n2_easy_agg2.xml delete mode 100644 packages/muelu/doc/Tutorial/src/xml/n2_easy_agg3.xml delete mode 100644 packages/muelu/doc/Tutorial/src/xml/n2_easy_export.xml delete mode 100644 packages/muelu/doc/Tutorial/src/xml/s1_easy.xml delete mode 100644 packages/muelu/doc/Tutorial/src/xml/s1_easy_10levels.xml delete mode 100644 packages/muelu/doc/Tutorial/src/xml/s1_easy_3levels_smoothed.xml delete mode 100644 packages/muelu/doc/Tutorial/src/xml/s1_easy_3levels_unsmoothed.xml delete mode 100644 packages/muelu/doc/Tutorial/src/xml/s1_easy_exercise.xml delete mode 100644 packages/muelu/doc/Tutorial/src/xml/s1_easy_jacobi.xml delete mode 100644 packages/muelu/doc/Tutorial/src/xml/s1_easy_jacobi2.xml delete mode 100644 packages/muelu/doc/Tutorial/src/xml/s2_adv_a.xml delete mode 100644 packages/muelu/doc/Tutorial/src/xml/s2_adv_b.xml delete mode 100644 packages/muelu/doc/Tutorial/src/xml/s2_adv_c.xml delete mode 100644 packages/muelu/doc/Tutorial/src/xml/s2_easy.xml delete mode 100644 packages/muelu/doc/Tutorial/src/xml/s2a.xml delete mode 100644 packages/muelu/doc/Tutorial/src/xml/s2b.xml delete mode 100644 packages/muelu/doc/Tutorial/src/xml/s3a.xml delete mode 100644 packages/muelu/doc/Tutorial/src/xml/s3a_easy.xml delete mode 100644 packages/muelu/doc/Tutorial/src/xml/s3b.xml delete mode 100644 packages/muelu/doc/Tutorial/src/xml/s3b1.xml delete mode 100644 packages/muelu/doc/Tutorial/src/xml/s3b2.xml delete mode 100644 packages/muelu/doc/Tutorial/src/xml/s3b3.xml delete mode 100644 packages/muelu/doc/Tutorial/src/xml/s3b_easy.xml delete mode 100644 packages/muelu/doc/Tutorial/src/xml/s3c.xml delete mode 100644 packages/muelu/doc/Tutorial/src/xml/s3c_easy.xml delete mode 100644 packages/muelu/doc/Tutorial/src/xml/s4a.xml delete mode 100644 packages/muelu/doc/Tutorial/src/xml/s4av.xml delete mode 100644 packages/muelu/doc/Tutorial/src/xml/s4b.xml delete mode 100644 packages/muelu/doc/Tutorial/src/xml/s4c.xml delete mode 100644 packages/muelu/doc/Tutorial/src/xml/s5a.xml delete mode 100755 packages/muelu/doc/Tutorial/src/xml/s5b.xml delete mode 100644 packages/muelu/doc/Tutorial/src/xml/s6_dep.xml delete mode 100644 packages/muelu/doc/Tutorial/src/xml/s6_export.xml delete mode 100644 packages/muelu/doc/Tutorial/tex/CMakeLists.txt delete mode 100755 packages/muelu/doc/Tutorial/tex/bookstyle.tex delete mode 100644 packages/muelu/doc/Tutorial/tex/definitions.tex delete mode 100644 packages/muelu/doc/Tutorial/tex/main.tex delete mode 100644 packages/muelu/doc/Tutorial/tex/pics/1level_1000jac09.png delete mode 100644 packages/muelu/doc/Tutorial/tex/pics/1level_100jac09.png delete mode 100644 packages/muelu/doc/Tutorial/tex/pics/1level_10jac09.png delete mode 100644 packages/muelu/doc/Tutorial/tex/pics/1level_1jac09.png delete mode 100644 packages/muelu/doc/Tutorial/tex/pics/2level_1000jac09.png delete mode 100644 packages/muelu/doc/Tutorial/tex/pics/2level_100jac09.png delete mode 100644 packages/muelu/doc/Tutorial/tex/pics/2level_10jac09.png delete mode 100644 packages/muelu/doc/Tutorial/tex/pics/2level_1jac09.png delete mode 100644 packages/muelu/doc/Tutorial/tex/pics/3level_100jac09.png delete mode 100644 packages/muelu/doc/Tutorial/tex/pics/3level_10jac09.png delete mode 100644 packages/muelu/doc/Tutorial/tex/pics/3level_1jac09.png delete mode 100644 packages/muelu/doc/Tutorial/tex/pics/5sweeps_1level_100jac09.png delete mode 100644 packages/muelu/doc/Tutorial/tex/pics/5sweeps_1level_10jac09.png delete mode 100644 packages/muelu/doc/Tutorial/tex/pics/5sweeps_1level_1jac09.png delete mode 100644 packages/muelu/doc/Tutorial/tex/pics/5sweeps_2level_100jac09.png delete mode 100644 packages/muelu/doc/Tutorial/tex/pics/5sweeps_2level_10jac09.png delete mode 100644 packages/muelu/doc/Tutorial/tex/pics/5sweeps_2level_1jac09.png delete mode 100644 packages/muelu/doc/Tutorial/tex/pics/5sweeps_3level_100jac09.png delete mode 100644 packages/muelu/doc/Tutorial/tex/pics/5sweeps_3level_10jac09.png delete mode 100644 packages/muelu/doc/Tutorial/tex/pics/5sweeps_3level_1jac09.png delete mode 100644 packages/muelu/doc/Tutorial/tex/pics/aggsNonSymm.png delete mode 100644 packages/muelu/doc/Tutorial/tex/pics/aggsSymm.png delete mode 100644 packages/muelu/doc/Tutorial/tex/pics/aggsSymmCoupled.png delete mode 100644 packages/muelu/doc/Tutorial/tex/pics/aggsSymmReb.png delete mode 100644 packages/muelu/doc/Tutorial/tex/pics/background.pdf delete mode 100644 packages/muelu/doc/Tutorial/tex/pics/dep_graph.png delete mode 100644 packages/muelu/doc/Tutorial/tex/pics/installation_1.png delete mode 100644 packages/muelu/doc/Tutorial/tex/pics/installation_2.png delete mode 100644 packages/muelu/doc/Tutorial/tex/pics/lubuntu_1.png delete mode 100644 packages/muelu/doc/Tutorial/tex/pics/lubuntu_2.png delete mode 100644 packages/muelu/doc/Tutorial/tex/pics/lubuntu_3.png delete mode 100644 packages/muelu/doc/Tutorial/tex/pics/lubuntu_4.png delete mode 100644 packages/muelu/doc/Tutorial/tex/pics/lubuntu_5.png delete mode 100644 packages/muelu/doc/Tutorial/tex/pics/lubuntu_6.png delete mode 100644 packages/muelu/doc/Tutorial/tex/pics/s4al1.png delete mode 100644 packages/muelu/doc/Tutorial/tex/pics/s4al2.png delete mode 100644 packages/muelu/doc/Tutorial/tex/pics/s4al3.png delete mode 100644 packages/muelu/doc/Tutorial/tex/pics/s4bl1.png delete mode 100644 packages/muelu/doc/Tutorial/tex/pics/s4bl2.png delete mode 100644 packages/muelu/doc/Tutorial/tex/pics/s4bl3.png delete mode 100644 packages/muelu/doc/Tutorial/tex/pics/tut1_1.png delete mode 100644 packages/muelu/doc/Tutorial/tex/pics/tut1_10.png delete mode 100644 packages/muelu/doc/Tutorial/tex/pics/tut1_11.png delete mode 100644 packages/muelu/doc/Tutorial/tex/pics/tut1_12.png delete mode 100644 packages/muelu/doc/Tutorial/tex/pics/tut1_13.png delete mode 100644 packages/muelu/doc/Tutorial/tex/pics/tut1_14.png delete mode 100644 packages/muelu/doc/Tutorial/tex/pics/tut1_15.png delete mode 100644 packages/muelu/doc/Tutorial/tex/pics/tut1_16.png delete mode 100644 packages/muelu/doc/Tutorial/tex/pics/tut1_17.png delete mode 100644 packages/muelu/doc/Tutorial/tex/pics/tut1_18.png delete mode 100644 packages/muelu/doc/Tutorial/tex/pics/tut1_2.png delete mode 100644 packages/muelu/doc/Tutorial/tex/pics/tut1_3.png delete mode 100644 packages/muelu/doc/Tutorial/tex/pics/tut1_4.png delete mode 100644 packages/muelu/doc/Tutorial/tex/pics/tut1_5.png delete mode 100644 packages/muelu/doc/Tutorial/tex/pics/tut1_6.png delete mode 100644 packages/muelu/doc/Tutorial/tex/pics/tut1_7.png delete mode 100644 packages/muelu/doc/Tutorial/tex/pics/tut1_8.png delete mode 100644 packages/muelu/doc/Tutorial/tex/pics/tut1_9.png delete mode 100755 packages/muelu/doc/Tutorial/tex/prepareTexTutorial.py delete mode 100644 packages/muelu/doc/Tutorial/tex/s1_easy.txt delete mode 100644 packages/muelu/doc/Tutorial/tex/version.txt delete mode 100644 packages/muelu/test/navierstokes/A_re1000_5932.txt delete mode 100644 packages/muelu/test/navierstokes/CMakeLists.txt delete mode 100644 packages/muelu/test/navierstokes/Navier2DBlocked_BraessSarazin.cpp delete mode 100644 packages/muelu/test/navierstokes/Navier2DBlocked_BraessSarazinSmoother.cpp delete mode 100644 packages/muelu/test/navierstokes/Navier2DBlocked_Epetra.cpp delete mode 100644 packages/muelu/test/navierstokes/Navier2DBlocked_Simple.cpp delete mode 100644 packages/muelu/test/navierstokes/Navier2DBlocked_SimpleSmoother.cpp delete mode 100644 packages/muelu/test/navierstokes/Navier2DBlocked_test2.cpp delete mode 100644 packages/muelu/test/navierstokes/Navier2DBlocked_xml.cpp delete mode 100644 packages/muelu/test/navierstokes/Navier2D_Epetra.cpp delete mode 100644 packages/muelu/test/navierstokes/Navier2D_Helpers.cpp delete mode 100644 packages/muelu/test/navierstokes/Navier2D_Helpers.h delete mode 100644 packages/muelu/test/navierstokes/b_re1000_5932.txt delete mode 100644 packages/muelu/test/navierstokes/myBGS1.xml delete mode 100644 packages/muelu/test/navierstokes/myBS1.xml delete mode 100644 packages/muelu/test/navierstokes/myBS2.xml delete mode 100644 packages/muelu/test/navierstokes/myBS3.xml delete mode 100644 packages/muelu/test/navierstokes/myIndefDiag1.xml delete mode 100644 packages/muelu/test/navierstokes/mySIM1.xml delete mode 100644 packages/muelu/test/navierstokes/mySIM2.xml delete mode 100644 packages/muelu/test/navierstokes/myUzawa1.xml delete mode 100644 packages/muelu/test/navierstokes/myUzawa2.xml delete mode 100644 packages/muelu/test/navierstokes/myUzawa3.xml delete mode 100644 packages/muelu/test/navierstokes/myXML.xml delete mode 100644 packages/muelu/test/navierstokes/myXML2.xml delete mode 100644 packages/muelu/test/navierstokes/myXMLg.xml delete mode 100644 packages/muelu/test/permutation/CMakeLists.txt delete mode 100644 packages/muelu/test/permutation/Permutation.cpp delete mode 100644 packages/muelu/test/permutation/exp1.txt delete mode 100644 packages/muelu/test/permutation/exp2.txt delete mode 100644 packages/muelu/test/permutation/exp3.txt delete mode 100644 packages/muelu/test/permutation/exp4.txt delete mode 100644 packages/muelu/test/permutation/exp5.txt delete mode 100644 packages/muelu/test/permutation/test1.txt delete mode 100644 packages/muelu/test/permutation/test2.txt delete mode 100644 packages/muelu/test/permutation/test3.txt delete mode 100644 packages/muelu/test/permutation/test4.txt delete mode 100644 packages/muelu/test/permutation/test5.txt delete mode 100644 packages/muelu/test/simple1D/CMakeLists.txt delete mode 100644 packages/muelu/test/simple1D/Emin.cpp delete mode 100644 packages/muelu/test/simple1D/aggregation.cpp delete mode 100644 packages/muelu/test/simple1D/amesos2.cpp delete mode 100644 packages/muelu/test/simple1D/amesos2StandAlone.cpp delete mode 100644 packages/muelu/test/simple1D/mainMergedSmoo.cpp delete mode 100644 packages/muelu/test/simple1D/simple1D-UncoupledAggregation.cpp diff --git a/packages/muelu/CMakeLists.txt b/packages/muelu/CMakeLists.txt index 6f27ca3b36b5..486ede9230c8 100644 --- a/packages/muelu/CMakeLists.txt +++ b/packages/muelu/CMakeLists.txt @@ -8,7 +8,6 @@ TRIBITS_PACKAGE(MueLu ENABLE_SHADOWING_WARNINGS) # B) Set up package-specific options # -ASSERT_DEFINED(Xpetra_ENABLE_Epetra) ASSERT_DEFINED(Xpetra_ENABLE_Tpetra) ASSERT_DEFINED(Xpetra_INT_LONG_LONG) ASSERT_DEFINED(Xpetra_ENABLE_Experimental) @@ -64,32 +63,13 @@ IF (HAVE_${PACKAGE_NAME_UC}_DEPRECATED_TESTS) MESSAGE(STATUS "MueLu: Enabling deprecated tests") ENDIF () -IF (${PACKAGE_NAME}_ENABLE_Epetra AND NOT ${PACKAGE_NAME}_ENABLE_EpetraExt) - MESSAGE(FATAL_ERROR "You have enabled Epetra, but not EpetraExt. MueLu requires that either both are enabled, or both are disabled. Please either disable Epetra, or enable EpetraExt.") -ENDIF() - - -# If you want MueLu Epetra, you need Xpetra Epetra -ASSERT_DEFINED(Xpetra_ENABLE_Epetra) -IF (NOT Xpetra_ENABLE_Epetra AND ${PACKAGE_NAME}_ENABLE_Epetra) - MESSAGE(FATAL_ERROR "MueLu Epetra support requires Xpetra Epetra support") -ENDIF() -# If you want MueLu Epetra, you need Xpetra Tpetra ASSERT_DEFINED(Xpetra_ENABLE_Tpetra) IF (NOT Xpetra_ENABLE_Tpetra) MESSAGE(FATAL_ERROR "MueLu Tpetra support requires Xpetra Tpetra support") ENDIF() -# Need to do this because Xpetra_ENABLE_Epetra might have been disabled after -# HAVE_MUELU_EPETRA was first set automatically -GLOBAL_SET(HAVE_${PACKAGE_NAME_UC}_EPETRA ${${PACKAGE_NAME}_ENABLE_Epetra}) - # Print a warning when we might be lacking a coarse solver. -ASSERT_DEFINED(${PACKAGE_NAME}_ENABLE_Amesos) -IF (${PACKAGE_NAME}_ENABLE_Epetra AND NOT ${PACKAGE_NAME}_ENABLE_Amesos) - MESSAGE(WARNING "MueLu's Epetra backend is enabled, but Amesos is disabled. This means only iterative coarse solves are available when using Epetra.") -ENDIF () ASSERT_DEFINED(${PACKAGE_NAME}_ENABLE_Amesos2) IF (NOT ${PACKAGE_NAME}_ENABLE_Amesos2) MESSAGE(WARNING "MueLu's Amesos2 backend is disabled. This means only iterative coarse solves are available when using Tpetra.") @@ -215,7 +195,6 @@ IF(${PACKAGE_NAME}_ENABLE_EXPLICIT_INSTANTIATION) GLOBAL_SET(${PACKAGE_NAME}_HAVE_GO_LONG_LONG OFF) # - # Examples and tests need at least this one, also if Epetra is enabled IF(Tpetra_INST_DOUBLE AND Tpetra_INST_INT_INT) GLOBAL_SET(${PACKAGE_NAME}_HAVE_GO_INT ON) GLOBAL_SET(${PACKAGE_NAME}_INST_DOUBLE_INT_INT ON) @@ -231,12 +210,6 @@ IF(${PACKAGE_NAME}_ENABLE_EXPLICIT_INSTANTIATION) # ENDIF() #ENDIF() - #IF(${PACKAGE_NAME}_ENABLE_Epetra) - # IF (NOT ${PACKAGE_NAME}_INST_DOUBLE_INT_INT) - # MESSAGE(FATAL_ERROR "Error: MueLu needs explicit template instantation with when enabling Epetra. Turn on the options Tpetra_INST_DOUBLE and Tpetra_INST_INT_INT or disable Epetra.") - # ENDIF() - #ENDIF() - # IF(Tpetra_INST_DOUBLE AND Tpetra_INST_INT_LONG) GLOBAL_SET(${PACKAGE_NAME}_HAVE_GO_LONG ON) @@ -328,10 +301,6 @@ IF(${PACKAGE_NAME}_ENABLE_EXPLICIT_INSTANTIATION) GLOBAL_SET (HAVE_${PACKAGE_NAME_UC}_CUDA ${Tpetra_INST_CUDA}) GLOBAL_SET (HAVE_${PACKAGE_NAME_UC}_HIP ${Tpetra_INST_HIP}) GLOBAL_SET (HAVE_${PACKAGE_NAME_UC}_SYCL ${Tpetra_INST_SYCL}) - IF (${PACKAGE_NAME}_ENABLE_Epetra) - # If Epetra is active, always activate SerialNode - GLOBAL_SET (HAVE_${PACKAGE_NAME_UC}_SERIAL ON) - ENDIF () MESSAGE(STATUS " HAVE_${PACKAGE_NAME_UC}_SERIAL : ${HAVE_${PACKAGE_NAME_UC}_SERIAL}") MESSAGE(STATUS " HAVE_${PACKAGE_NAME_UC}_OPENMP : ${HAVE_${PACKAGE_NAME_UC}_OPENMP}") MESSAGE(STATUS " HAVE_${PACKAGE_NAME_UC}_CUDA : ${HAVE_${PACKAGE_NAME_UC}_CUDA}") @@ -350,14 +319,6 @@ ELSE() GLOBAL_SET(${PACKAGE_NAME}_INST_FLOAT_INT_LONG_LONG OFF) GLOBAL_SET(HAVE_${PACKAGE_NAME_UC}_INST_FLOAT_INT_LONG_LONG OFF) - # If Epetra only is enabled, ETI is off by default. We have to make sure that - # the HAVE_MUELU_SERIAL variable is set such that the IfpackSmoother and other - # purely Epetra-related routines are enabled properly - IF (${PACKAGE_NAME}_ENABLE_Epetra) - # If Epetra only is active, only activate SerialNode by default - GLOBAL_SET (HAVE_${PACKAGE_NAME_UC}_SERIAL ON) - ENDIF() - # With ETI off, free to leave int as the default GO ENDIF() @@ -425,10 +386,6 @@ if(TPL_ENABLE_MATLAB) IF (NOT ${PROJECT_NAME}_ENABLE_EXPLICIT_INSTANTIATION) MESSAGE(FATAL_ERROR "Muemex interfaces require \"-D${PROJECT_NAME}_ENABLE_EXPLICIT_INSTANTIATION:BOOL=ON\".") ENDIF() - - IF(NOT ${PACKAGE_NAME}_ENABLE_Epetra) - MESSAGE(FATAL_ERROR "Muemex interfaces require \"-D${PACKAGE_NAME}_ENABLE_Epetra:BOOL=ON\".") - ENDIF() ENDIF() if(TPL_ENABLE_MATLAB) diff --git a/packages/muelu/adapters/CMakeLists.txt b/packages/muelu/adapters/CMakeLists.txt index f6498df28a69..cf3310179747 100644 --- a/packages/muelu/adapters/CMakeLists.txt +++ b/packages/muelu/adapters/CMakeLists.txt @@ -27,28 +27,6 @@ IF (${PACKAGE_NAME}_ENABLE_Belos) ENDIF() -# -# Epetra -# -IF (${PACKAGE_NAME}_ENABLE_Epetra) - - TRIBITS_INCLUDE_DIRECTORIES(${CMAKE_CURRENT_SOURCE_DIR}/epetra) - TRIBITS_SET_AND_INC_DIRS(DIR ${CMAKE_CURRENT_SOURCE_DIR}/aztecoo) - - APPEND_SET(HEADERS - epetra/MueLu_EpetraOperator.hpp - epetra/MueLu_CreateEpetraPreconditioner.hpp - aztecoo/MueLu_AztecEpetraOperator.hpp - ) - - APPEND_SET(SOURCES - epetra/MueLu_EpetraOperator.cpp - epetra/MueLu_CreateEpetraPreconditioner.cpp - aztecoo/MueLu_AztecEpetraOperator.cpp - ) - -ENDIF() - # # Tpetra # diff --git a/packages/muelu/cmake/Dependencies.cmake b/packages/muelu/cmake/Dependencies.cmake index 3448abbc02bd..3a8ea1cc24f9 100644 --- a/packages/muelu/cmake/Dependencies.cmake +++ b/packages/muelu/cmake/Dependencies.cmake @@ -1,8 +1,7 @@ SET(LIB_REQUIRED_DEP_PACKAGES Teuchos Tpetra Xpetra Kokkos KokkosKernels) -SET(LIB_OPTIONAL_DEP_PACKAGES Amesos Amesos2 AvatarT Belos Epetra EpetraExt Teko - Ifpack Ifpack2 Intrepid2 ML - Zoltan Zoltan2Core Stratimikos Thyra ThyraTpetraAdapters - Isorropia) +SET(LIB_OPTIONAL_DEP_PACKAGES Amesos2 AvatarT Belos Teko + Ifpack2 Intrepid2 ML + Zoltan Zoltan2Core Stratimikos Thyra) SET(TEST_REQUIRED_DEP_PACKAGES Galeri) SET(TEST_OPTIONAL_DEP_PACKAGES AztecOO Pamgen) SET(LIB_REQUIRED_DEP_TPLS BLAS LAPACK) diff --git a/packages/muelu/doc/CMakeLists.txt b/packages/muelu/doc/CMakeLists.txt index 305929b30e41..67eba88a117e 100644 --- a/packages/muelu/doc/CMakeLists.txt +++ b/packages/muelu/doc/CMakeLists.txt @@ -9,10 +9,4 @@ COMMENT "Generating ${PACKAGE_NAME} API documentation with Doxygen" VERBATIM ) endif(DOXYGEN_FOUND) -if (${PACKAGE_NAME}_ENABLE_Tutorial) - TRIBITS_ADD_EXAMPLE_DIRECTORIES(Tutorial) -else() - MESSAGE(STATUS "disabling tutorial") -endif() - ADD_SUBDIRECTORY(UsersGuide) diff --git a/packages/muelu/doc/Tutorial/CMakeLists.txt b/packages/muelu/doc/Tutorial/CMakeLists.txt deleted file mode 100644 index 65e9210a17a4..000000000000 --- a/packages/muelu/doc/Tutorial/CMakeLists.txt +++ /dev/null @@ -1,9 +0,0 @@ -ADD_SUBDIRECTORY(src) -ADD_SUBDIRECTORY(tex) - -TRIBITS_COPY_FILES_TO_BINARY_DIR(copy_tutorial_build_files - SOURCE_FILES - src/Challenge.cpp - src/MLParameterList.cpp - src/laplace2d.cpp - ) diff --git a/packages/muelu/doc/Tutorial/README b/packages/muelu/doc/Tutorial/README deleted file mode 100644 index 79fd3a6fbccd..000000000000 --- a/packages/muelu/doc/Tutorial/README +++ /dev/null @@ -1,59 +0,0 @@ -How to build the Tutorial -------------------------- - -1) Compile MueLu with the tests and examples enabled. You should find the - executables in the packages/muelu/doc/Tutorial/src subfolder of the build - folder of Trilinos. - -2) Switch to the packages/muelu/doc/Tutorial/tex subfolder of your Trilinos - build folder. - -3) Run the command - - ./prepareTexTutorial.py - - This python scripts runs the examples using the executables built in step 1 - of this tutorial, parses the screen output and includes the results and - code-snippets into the LaTeX document. This way, the MueLu tutorial always - contains the latest numbers/results. - - The screen output of the python script should look like the following: - - Prepare files... - Split source files in src folder for inclusion in pdf... - Run test examples to include results in pdf... - s1_easy.txt OK - s1_easy_10levels OK - s1_easy_3levels_unsmoothed OK - s1_easy_3levels_smoothed OK - s1_easy_jacobi OK - s1_easy_jacobi2 OK - s1_easy_exercise OK - s2_adv_b OK - s2_adv_c OK - s3a OK - s3b OK - s3b1 OK - s3b2 OK - s3b3 OK - s5a OK - s5a.txt OK - Run LaTeX to generate PDF... - If the script stops here you can skip the step by pressing CTRL+C and run - "pdflatex main.tex" by hand to fix the errors - Success - Clean up files... - Finished. - - Note, that running the script might take a while (especially the LaTeX call - in the end). - -4) It might be necessary to run the latex process one or two times more to - resolve all references. Use the command - - pdflatex main.tex - - You need a rather new LaTeX version which understands Tikz commands. - -5) If successful you should have a main.pdf which has the most recent version - of the MueLu tutorial. diff --git a/packages/muelu/doc/Tutorial/src/CMakeLists.txt b/packages/muelu/doc/Tutorial/src/CMakeLists.txt deleted file mode 100644 index 4c396e99ff33..000000000000 --- a/packages/muelu/doc/Tutorial/src/CMakeLists.txt +++ /dev/null @@ -1,88 +0,0 @@ - -TRIBITS_INCLUDE_DIRECTORIES(${CMAKE_CURRENT_SOURCE_DIR}) - -ASSERT_DEFINED( - ${PACKAGE_NAME}_ENABLE_Amesos - ${PACKAGE_NAME}_ENABLE_AztecOO - ${PACKAGE_NAME}_ENABLE_Epetra - ${PACKAGE_NAME}_ENABLE_EpetraExt - ${PACKAGE_NAME}_ENABLE_Ifpack - ) - -IF (${PACKAGE_NAME}_ENABLE_Amesos AND - ${PACKAGE_NAME}_ENABLE_AztecOO AND - ${PACKAGE_NAME}_ENABLE_Epetra AND - ${PACKAGE_NAME}_ENABLE_EpetraExt AND - ${PACKAGE_NAME}_ENABLE_Ifpack - ) - TRIBITS_ADD_EXECUTABLE( - tutorial_laplace2d - SOURCES laplace2d.cpp - COMM mpi serial - ) - - TRIBITS_COPY_FILES_TO_BINARY_DIR(tutorial_laplace2d_cp - SOURCE_FILES hands-on.py MueLu_Agg2VTK.py - tmpl/MueLu_Agg2VTK.py_TMPL tmpl/muelu.xml_TMPL tmpl/muelu_easy.xml_TMPL - xml/s1_easy.xml xml/s1_easy_3levels_smoothed.xml xml/s1_easy_3levels_unsmoothed.xml - xml/s1_easy_10levels.xml xml/s1_easy_exercise.xml xml/s1_easy_jacobi.xml xml/s1_easy_jacobi2.xml - xml/s2_adv_a.xml xml/s2_adv_b.xml xml/s2_adv_c.xml - xml/s2a.xml xml/s2b.xml - xml/s4a.xml xml/s4av.xml xml/s4b.xml xml/s4c.xml - xml/s5a.xml xml/s5b.xml - xml/s6_dep.xml xml/s6_export.xml - xml/s2_easy.xml xml/s3a_easy.xml xml/s3b_easy.xml xml/s3c_easy.xml - xml/n1_easy.xml xml/n1_easy_pg.xml - xml/n2_easy_agg.xml xml/n2_easy_agg2.xml xml/n2_easy_agg3.xml xml/n2_easy_export.xml - EXEDEPS tutorial_laplace2d - ) - - TRIBITS_ADD_EXECUTABLE( - tutorial_recirc2d - SOURCES recirc2d.cpp - COMM mpi serial - ) - - TRIBITS_COPY_FILES_TO_BINARY_DIR(tutorial_recirc2d_cp - SOURCE_FILES xml/s3a.xml xml/s3b.xml xml/s3c.xml xml/s3b1.xml xml/s3b2.xml xml/s3b3.xml - EXEDEPS tutorial_recirc2d - ) - - TRIBITS_ADD_EXECUTABLE( - tutorial_recirc2d_api - SOURCES recirc2d_api.cpp - COMM mpi serial - ) - - TRIBITS_COPY_FILES_TO_BINARY_DIR(userguide_srcfiles_cp - SOURCE_FILES ScalingTest.cpp ScalingTestParamList.cpp - EXEDEPS tutorial_recirc2d_api - ) - - TRIBITS_ADD_EXECUTABLE( - Challenge_XML - SOURCES Challenge.cpp - COMM mpi - ) - - #TRIBITS_ADD_TEST( - # Challenge_XML - # NAME "Challenge_convectiondiffusion" - # ARGS "--globalNumDofs=16641 --nDofsPerNode=1 --solver=gmres --tol=1e-12 --xml=challenges/condif2d_reference.xml --problem=challenges/condif2d" - # NUM_MPI_PROCS 2 - # COMM mpi - # ) - - #TRIBITS_ADD_TEST( - # Challenge_XML - # NAME "Challenge_structure" - # ARGS "--globalNumDofs=7020 --nDofsPerNode=2 --solver=cg --tol=1e-12 --xml=challenges/stru2d_reference.xml --problem=challenges/stru2d" - # NUM_MPI_PROCS 2 - # COMM mpi - # ) - - #TRIBITS_COPY_FILES_TO_BINARY_DIR(userguide_challenge_cp - # SOURCE_FILES challenges/condif2d_A.txt challenges/condif2d_b.txt challenges/condif2d_ns.txt challenges/condif2d_reference.xml - # challenges/stru2d_A.txt challenges/stru2d_b.txt challenges/stru2d_ns.txt challenges/stru2d_reference.xml - # ) -ENDIF() diff --git a/packages/muelu/doc/Tutorial/src/Challenge.cpp b/packages/muelu/doc/Tutorial/src/Challenge.cpp deleted file mode 100644 index e9723aeb797b..000000000000 --- a/packages/muelu/doc/Tutorial/src/Challenge.cpp +++ /dev/null @@ -1,229 +0,0 @@ -// @HEADER -// ***************************************************************************** -// MueLu: A package for multigrid based preconditioning -// -// Copyright 2012 NTESS and the MueLu contributors. -// SPDX-License-Identifier: BSD-3-Clause -// ***************************************************************************** -// @HEADER - -/* - * Structure2D_epetra.cpp - * - * Created on: Oct 24, 2011 - * Author: wiesner - */ - -#include -#include -#include -#include - -// Teuchos -#include -#include -#include -#include -#include -#include - -// Epetra -#include -#include -#include - -#include - -// AztecOO -#include - -// Xpetra -#include -#include -#include -#include -#include - -// MueLu -#include -#include -#include - -#if defined(HAVE_MUELU_EPETRA) -#include - -// prescribe types -// run plain Epetra -typedef double Scalar; -typedef int LocalOrdinal; -typedef int GlobalOrdinal; -typedef Xpetra::EpetraNode Node; -#endif - -/*! - * 2d structural mechanics example for Epetra - * - * (Nearly) Symmetric problem (except of Dirichlet boundaries) solved with AMG solver using a - * 3 level multigrid with smoothed aggregation transfer operators. - * - */ - -int main(int argc, char* argv[]) { -#if defined(HAVE_MUELU_EPETRA) -#include "MueLu_UseShortNames.hpp" - using Teuchos::RCP; - using Teuchos::rcp; - - Teuchos::oblackholestream blackhole; - Teuchos::GlobalMPISession mpiSession(&argc, &argv, &blackhole); - - bool success = false; - try { - RCP > comm = Teuchos::DefaultComm::getComm(); - RCP out = Teuchos::fancyOStream(Teuchos::rcpFromRef(std::cout)); - out->setOutputToRootOnly(0); - -#ifndef HAVE_XPETRA_INT_LONG_LONG - *out << "Warning: scaling test was not compiled with long long int support" << std::endl; -#endif - - // ========================================================================= - // Parameters initialization - // ========================================================================= - Teuchos::CommandLineProcessor clp(false); - - std::string xmlFileName = "xml/muelu_ParameterList.xml"; - clp.setOption("xml", &xmlFileName, "read parameters from a file [default = 'xml/muelu_ParameterList.xml']"); - - int globalNumDofs = 0; // 7020; - clp.setOption("globalNumDofs", &globalNumDofs, "global number of degrees of freedom [has to be set by user, default = 0 -> error]"); - int nDofsPerNode = 1; - clp.setOption("nDofsPerNode", &nDofsPerNode, "number of degrees of freedom per node [has to be set by user, default = 1]"); - int nProcs = comm->getSize(); - std::string dsolveType = "cg"; - clp.setOption("solver", &dsolveType, "solve type: (none | cg | gmres | standalone) [default = cg]"); - double dtol = 1e-12; - clp.setOption("tol", &dtol, "solver convergence tolerance [default = 1e-12]"); - std::string problemFile = "stru2d"; - clp.setOption("problem", &problemFile, "string for problem file (e.g. 'stru2d' expects 'stru2d_A.txt', 'stru2d_b.txt' and 'stru2d_ns.txt')"); - std::string coordsFile = ""; - clp.setOption("coordinates", &coordsFile, "file name containing coordinates in matrix market format"); - - switch (clp.parse(argc, argv)) { - case Teuchos::CommandLineProcessor::PARSE_HELP_PRINTED: return EXIT_SUCCESS; - case Teuchos::CommandLineProcessor::PARSE_ERROR: - case Teuchos::CommandLineProcessor::PARSE_UNRECOGNIZED_OPTION: return EXIT_FAILURE; - case Teuchos::CommandLineProcessor::PARSE_SUCCESSFUL: break; - } - - if (globalNumDofs == 0) { - std::cout << "Please specify '--globalNumDofs'! Simulation cannot run without that parameter correctly set" << std::endl; - return EXIT_FAILURE; - } - - int nLocalDofs = (int)globalNumDofs / nProcs; - nLocalDofs = nLocalDofs - (nLocalDofs % nDofsPerNode); - int nCumulatedDofs = 0; - MueLu_sumAll(comm, nLocalDofs, nCumulatedDofs); - - if (comm->getRank() == nProcs - 1) { - nLocalDofs += globalNumDofs - nCumulatedDofs; - } - - // read in problem - Epetra_Map emap(globalNumDofs, nLocalDofs, 0, *Xpetra::toEpetra(comm)); - Epetra_CrsMatrix* ptrA = 0; - Epetra_Vector* ptrf = 0; - Epetra_MultiVector* ptrNS = 0; - - std::cout << "Reading matrix market file" << std::endl; - - std::stringstream ssA, ssB, ssNS; - ssA << problemFile << "_A.txt"; - ssB << problemFile << "_b.txt"; - ssNS << problemFile << "_ns.txt"; - std::string fileA = ssA.str(); - std::string fileB = ssB.str(); - std::string fileNS = ssNS.str(); - EpetraExt::MatrixMarketFileToCrsMatrix(fileA.c_str(), emap, emap, emap, ptrA); - EpetraExt::MatrixMarketFileToVector(fileB.c_str(), emap, ptrf); - EpetraExt::MatrixMarketFileToMultiVector(fileNS.c_str(), emap, ptrNS); - RCP epA = Teuchos::rcp(ptrA); - RCP epB = Teuchos::rcp(ptrf); - RCP epNS = Teuchos::rcp(ptrNS); - - // read in coordinates - RCP xCoords = Teuchos::null; - if (coordsFile != "") { - Epetra_MultiVector* ptrcoords = 0; - Epetra_Map coords_emap(globalNumDofs / nDofsPerNode, nLocalDofs / nDofsPerNode, 0, *Xpetra::toEpetra(comm)); - EpetraExt::MatrixMarketFileToMultiVector(coordsFile.c_str(), coords_emap, ptrcoords); - RCP epCoords = Teuchos::rcp(ptrcoords); - xCoords = Teuchos::rcp(new Xpetra::EpetraMultiVectorT(epCoords)); - } - - // Epetra_CrsMatrix -> Xpetra::Matrix - RCP exA = Teuchos::rcp(new Xpetra::EpetraCrsMatrixT(epA)); - RCP crsOp = Teuchos::rcp(new CrsMatrixWrap(exA)); - RCP Op = Teuchos::rcp_dynamic_cast(crsOp); - Op->SetFixedBlockSize(nDofsPerNode); - - RCP xNS = Teuchos::rcp(new Xpetra::EpetraMultiVectorT(epNS)); - - // Epetra_Map -> Xpetra::Map - const RCP map = Xpetra::toXpetra(emap); - - ParameterListInterpreter mueLuFactory(xmlFileName, *comm); - RCP H = mueLuFactory.CreateHierarchy(); - RCP Finest = H->GetLevel(0); - Finest->setDefaultVerbLevel(Teuchos::VERB_HIGH); - Finest->Set("A", Op); - Finest->Set("Nullspace", xNS); - if (xCoords != Teuchos::null) Finest->Set("Coordinates", xCoords); - - mueLuFactory.SetupHierarchy(*H); - -#ifdef HAVE_MUELU_AZTECOO - - H->IsPreconditioner(true); - MueLu::EpetraOperator mueluPrec(H); // Wrap MueLu preconditioner into an Epetra Operator - - // create a solution vector - RCP epX = rcp(new Epetra_Vector(epA->RowMap())); - epX->PutScalar((Scalar)0.0); - - Epetra_LinearProblem eProblem(epA.get(), epX.get(), epB.get()); - - // AMG as preconditioner within AztecOO - AztecOO solver(eProblem); - solver.SetPrecOperator(&mueluPrec); - if (dsolveType == "cg") - solver.SetAztecOption(AZ_solver, AZ_cg); - else if (dsolveType == "gmres") - solver.SetAztecOption(AZ_solver, AZ_gmres); - else { // use fix point method instead - solver.SetAztecOption(AZ_solver, AZ_fixed_pt); - } - solver.SetAztecOption(AZ_output, 1); - - solver.Iterate(500, dtol); - - { // TODO: simplify this - RCP mueluX = rcp(new Xpetra::EpetraVectorT(epX)); - RCP mueluB = rcp(new Xpetra::EpetraVectorT(epB)); - // Print relative residual norm - Teuchos::ScalarTraits::magnitudeType residualNorms = Utilities::ResidualNorm(*Op, *mueluX, *mueluB)[0]; - if (comm->getRank() == 0) - std::cout << "||Residual|| = " << residualNorms << std::endl; - } -#endif // HAVE_MUELU_AZTECOO - - success = true; - } - TEUCHOS_STANDARD_CATCH_STATEMENTS(true, std::cerr, success); - - return (success ? EXIT_SUCCESS : EXIT_FAILURE); -#else - return EXIT_SUCCESS; -#endif // #ifdef defined(HAVE_MUELU_EPETRA) and defined(HAVE_MUELU_SERIAL) -} diff --git a/packages/muelu/doc/Tutorial/src/MLParameterList.cpp b/packages/muelu/doc/Tutorial/src/MLParameterList.cpp deleted file mode 100644 index 2cce1ff9bcb9..000000000000 --- a/packages/muelu/doc/Tutorial/src/MLParameterList.cpp +++ /dev/null @@ -1,337 +0,0 @@ -// @HEADER -// ***************************************************************************** -// MueLu: A package for multigrid based preconditioning -// -// Copyright 2012 NTESS and the MueLu contributors. -// SPDX-License-Identifier: BSD-3-Clause -// ***************************************************************************** -// @HEADER - -#include - -#include - -#include // getParametersFromXmlFile() -#if defined(HAVE_MUELU_ML) && defined(HAVE_MUELU_EPETRA) -#include -#include -#include -#endif - -#ifdef HAVE_MUELU_AZTECOO -#include -#endif - -#if defined(HAVE_MUELU_EPETRA) -#include - -#include -#include -#include - -// Galeri -#include -#include - -// prescribe types -// run plain Epetra -typedef double Scalar; -typedef int LocalOrdinal; -typedef int GlobalOrdinal; -typedef Xpetra::EpetraNode Node; -#endif - -// Default problem is Laplace1D with nx = 8748. Use --help to list available options. - -int main(int argc, char *argv[]) { -#if defined(HAVE_MUELU_EPETRA) -#include - - using Teuchos::RCP; - using Teuchos::rcp; - - // - // MPI initialization using Teuchos - // - - Teuchos::GlobalMPISession mpiSession(&argc, &argv, NULL); - RCP > comm = Teuchos::DefaultComm::getComm(); - - // - // Parameters - // - - // TODO: FIXME: option by default does not work for MueLu/Tpetra - - int nIts = 9; - - Teuchos::CommandLineProcessor clp(false); // Note: - - Galeri::Xpetra::Parameters matrixParameters(clp, 256); // manage parameters of the test case - Xpetra::Parameters xpetraParameters(clp); // manage parameters of xpetra - - std::string xmlFileName; - clp.setOption("xml", &xmlFileName, "read parameters from a file. Otherwise, this example uses by default an hard-coded parameter list."); - int muelu = true; - clp.setOption("muelu", &muelu, "use muelu"); // TODO: bool instead of int - int ml = true; -#if defined(HAVE_MUELU_ML) && defined(HAVE_MUELU_EPETRA) - clp.setOption("ml", &ml, "use ml"); -#endif - - switch (clp.parse(argc, argv)) { - case Teuchos::CommandLineProcessor::PARSE_HELP_PRINTED: return EXIT_SUCCESS; break; - case Teuchos::CommandLineProcessor::PARSE_ERROR: - case Teuchos::CommandLineProcessor::PARSE_UNRECOGNIZED_OPTION: return EXIT_FAILURE; break; - case Teuchos::CommandLineProcessor::PARSE_SUCCESSFUL: break; - } - - // TODO: check -ml and --linAlgebra - - if (comm->getRank() == 0) { - std::cout << xpetraParameters << matrixParameters; - } - if (ml && xpetraParameters.GetLib() == Xpetra::UseTpetra) { - ml = false; - std::cout << "ML preconditionner can only be built if --linAlgebra=Epetra. Option --ml ignored" << std::endl; - } - - // - // Construct the problem - // - - // TUTORIALSPLIT =========================================================== - RCP map = MapFactory::Build(xpetraParameters.GetLib(), matrixParameters.GetNumGlobalElements(), 0, comm); - RCP > Pr = - Galeri::Xpetra::BuildProblem(matrixParameters.GetMatrixType(), map, matrixParameters.GetParameterList()); - RCP A = Pr->BuildMatrix(); - // TUTORIALSPLIT =========================================================== - - // - // Preconditionner configuration - // - - // ML parameter list - RCP params; - if (xmlFileName != "") { - std::cout << "Reading " << xmlFileName << " ..." << std::endl; - // TUTORIALSPLIT =========================================================== - params = Teuchos::getParametersFromXmlFile(xmlFileName); - // TUTORIALSPLIT =========================================================== - - } else { - std::cout << "Using hard-coded parameter list:" << std::endl; - // TUTORIALSPLIT =========================================================== - params = rcp(new Teuchos::ParameterList()); - - params->set("ML output", 10); - params->set("max levels", 2); - params->set("smoother: type", "symmetric Gauss-Seidel"); - - if (xpetraParameters.GetLib() == Xpetra::UseTpetra) - params->set("coarse: type", "Amesos-Superlu"); - else - params->set("coarse: type", "Amesos-KLU"); - // TUTORIALSPLIT =========================================================== - } - - std::cout << "Initial parameter list" << std::endl; - std::cout << *params << std::endl; - - if (muelu) { - // - // Construct a multigrid preconditioner - // - - // Multigrid Hierarchy - // TUTORIALSPLIT =========================================================== - std::string paramXML = MueLu::ML2MueLuParameterTranslator::translate(*params, ""); - params = Teuchos::getParametersFromXmlString(paramXML); - ParameterListInterpreter mueLuFactory(*params); - RCP H = mueLuFactory.CreateHierarchy(); - // TUTORIALSPLIT =========================================================== - - // build default null space - LocalOrdinal numPDEs = 1; - if (A->IsView("stridedMaps") == true) { - Xpetra::viewLabel_t oldView = A->SwitchToView("stridedMaps"); // note: "stridedMaps are always non-overlapping (correspond to range and domain maps!) - numPDEs = Teuchos::rcp_dynamic_cast(A->getRowMap())->getFixedBlockSize(); - oldView = A->SwitchToView(oldView); - } - - // TUTORIALSPLIT =========================================================== - RCP nullspace = MultiVectorFactory::Build(A->getDomainMap(), numPDEs); - - for (int i = 0; i < numPDEs; ++i) { - Teuchos::ArrayRCP nsValues = nullspace->getDataNonConst(i); - int numBlocks = nsValues.size() / numPDEs; - for (int j = 0; j < numBlocks; ++j) { - nsValues[j * numPDEs + i] = 1.0; - } - } - // TUTORIALSPLIT =========================================================== - H->GetLevel(0)->Set("Nullspace", nullspace); - H->GetLevel(0)->Set("A", A); - // TUTORIALSPLIT =========================================================== - - // - // build hierarchy - // - // TUTORIALSPLIT =========================================================== - mueLuFactory.SetupHierarchy(*H); - // TUTORIALSPLIT =========================================================== - - // - // Solve Ax = b - // - - RCP X = VectorFactory::Build(map); - RCP B = VectorFactory::Build(map); - - X->putScalar((Scalar)0.0); - B->setSeed(846930886); - B->randomize(); - - // AMG as a standalone solver - H->IsPreconditioner(false); - H->Iterate(*B, *X, nIts); - - // Print relative residual norm - Teuchos::ScalarTraits::magnitudeType residualNorms = Utils::ResidualNorm(*A, *X, *B)[0]; - if (comm->getRank() == 0) - std::cout << "||Residual|| = " << residualNorms << std::endl; - -#if defined(HAVE_MUELU_EPETRA) && defined(HAVE_MUELU_AZTECOO) - if (xpetraParameters.GetLib() == Xpetra::UseEpetra) { // TODO: should be doable with Tpetra too - - // AMG as a preconditioner - - // TODO: name mueluPrec and mlPrec not - - H->IsPreconditioner(true); - MueLu::EpetraOperator mueluPrec(H); // Wrap MueLu preconditioner into an Epetra Operator - - // - // Solve Ax = b - // - RCP eA; // duplicate code - { // TODO: simplify this - RCP xCrsOp = Teuchos::rcp_dynamic_cast(A, true); - RCP xCrsMtx = xCrsOp->getCrsMatrix(); - RCP > eCrsMtx = Teuchos::rcp_dynamic_cast >(xCrsMtx, true); - eA = eCrsMtx->getEpetra_CrsMatrixNonConst(); - } - - RCP eX = rcp(new Epetra_Vector(eA->RowMap())); - RCP eB = rcp(new Epetra_Vector(eA->RowMap())); - - eX->PutScalar((Scalar)0.0); - eB->SetSeed(846930886); - eB->Random(); - - Epetra_LinearProblem eProblem(eA.get(), eX.get(), eB.get()); - - // AMG as a standalone solver - AztecOO solver(eProblem); - solver.SetPrecOperator(&mueluPrec); - solver.SetAztecOption(AZ_solver, AZ_fixed_pt); - solver.SetAztecOption(AZ_output, 1); - - solver.Iterate(nIts, 1e-10); - - { // TODO: simplify this - RCP mueluX = rcp(new Xpetra::EpetraVector(eX)); - RCP mueluB = rcp(new Xpetra::EpetraVector(eB)); - // Print relative residual norm - Teuchos::ScalarTraits::magnitudeType residualNorms2 = Utils::ResidualNorm(*A, *mueluX, *mueluB)[0]; - if (comm->getRank() == 0) - std::cout << "||Residual|| = " << residualNorms2 << std::endl; - } - - // TODO: AMG as a preconditioner (AZ_cg) - } -#endif // HAVE_MUELU_AZTECOO - - } // if (muelu) - -#if defined(HAVE_MUELU_ML) && defined(HAVE_MUELU_EPETRA) - if (ml) { - std::cout << std::endl - << std::endl - << std::endl - << std::endl - << "**** ML ml ML ml ML" << std::endl - << std::endl - << std::endl - << std::endl; - - // - // Construct a multigrid preconditioner - // - - // Multigrid Hierarchy - // TUTORIALSPLIT =========================================================== - RCP crsOp = Teuchos::rcp_dynamic_cast(A, true); - RCP crsMtx = crsOp->getCrsMatrix(); - RCP > epetraCrsMtx = Teuchos::rcp_dynamic_cast >(crsMtx, true); - RCP epetra_CrsMtx = epetraCrsMtx->getEpetra_CrsMatrix(); - - RCP eA; - { - // TUTORIALSPLIT =========================================================== - RCP xCrsOp = Teuchos::rcp_dynamic_cast(A, true); - RCP xCrsMtx = xCrsOp->getCrsMatrix(); - RCP > eCrsMtx = Teuchos::rcp_dynamic_cast >(xCrsMtx, true); - eA = eCrsMtx->getEpetra_CrsMatrixNonConst(); - // TUTORIALSPLIT =========================================================== - } - // TUTORIALSPLIT =========================================================== - RCP mlPrec = rcp(new ML_Epetra::MultiLevelPreconditioner(*eA, *params)); - // TUTORIALSPLIT =========================================================== -#ifdef HAVE_MUELU_AZTECOO - - // - // Solve Ax = b - // - - RCP eX = rcp(new Epetra_Vector(eA->RowMap())); - RCP eB = rcp(new Epetra_Vector(eA->RowMap())); - - eX->PutScalar((Scalar)0.0); - eB->SetSeed(846930886); - eB->Random(); - - Epetra_LinearProblem eProblem(eA.get(), eX.get(), eB.get()); - - // AMG as a standalone solver - AztecOO solver(eProblem); - solver.SetPrecOperator(mlPrec.get()); - solver.SetAztecOption(AZ_solver, AZ_fixed_pt); - solver.SetAztecOption(AZ_output, 1); - - solver.Iterate(nIts, 1e-10); - - { // TODO: simplify this - RCP mueluX = rcp(new Xpetra::EpetraVector(eX)); - RCP mueluB = rcp(new Xpetra::EpetraVector(eB)); - // Print relative residual norm - Teuchos::ScalarTraits::magnitudeType residualNorms = Utils::ResidualNorm(*A, *mueluX, *mueluB)[0]; - if (comm->getRank() == 0) - std::cout << "||Residual|| = " << residualNorms << std::endl; - } - - // TODO: AMG as a preconditioner (AZ_cg) -#else - std::cout << "Enable AztecOO to see solution" << std::endl; -#endif // HAVE_MUELU_AZTECOO - - std::cout << "Parameter list after ML run" << std::endl; - const Teuchos::ParameterList ¶msAfterML = mlPrec->GetList(); - std::cout << paramsAfterML << std::endl; - - } // if (ml) - -#endif // HAVE_MUELU_ML && HAVE_MUELU_EPETRA -#endif // #if defined(HAVE_MUELU_EPETRA) and defined(HAVE_MUELU_SERIAL) - return EXIT_SUCCESS; -} diff --git a/packages/muelu/doc/Tutorial/src/MueLu_Agg2VTK.py b/packages/muelu/doc/Tutorial/src/MueLu_Agg2VTK.py deleted file mode 100755 index f8eddaddd6d1..000000000000 --- a/packages/muelu/doc/Tutorial/src/MueLu_Agg2VTK.py +++ /dev/null @@ -1,448 +0,0 @@ -#!/usr/bin/env python -import sys -import os -import vtk -import random -from subprocess import Popen, PIPE, STDOUT -from vtk import * - -############################################ -# read in nodes file -def read_nodecoords_from_file(filename): - global_nodecoords = [] - for l in file(filename): - line = l.strip() - if len(line)==1: - dimension = int(line) - else: - line = line.split(" ") - x = float(line[0]) #+ 0.0001 * random.random() - y = float(line[1]) #+ 0.0001 * random.random() - if len(line) == 3: - z = float(line[2]) #+ 0.0001 * random.random() - global_nodecoords.append((x,y,z)) - else: - global_nodecoords.append((x,y)) - return global_nodecoords,dimension - -def read_finelevel_nodecoords_from_file(filename): - global_nodecoords = [] - dimension = 2 # we only support 2D aggregates here... - for l in file(filename): - line = l.strip() - if line.find("#") == 0: - continue - else: - while ' ' in line: - line = line.replace(' ', ' ') - line = line.split(" ") - x = float(line[2]) #+ 0.0001 * random.random() - y = float(line[3]) #+ 0.0001 * random.random() - global_nodecoords.append((x,y)) - return global_nodecoords,dimension - -# dimension: problem dimension, i.e. either 2 or 3 -# agg_globalnodeidx: global node ids of current aggregate -# global_nodecoords: coordinates of nodes -# aggpolygons: vtk append object for aggregates -# aggid: aggregate id (global) -# aggid2nodes: map aggid -> nodeid (for visualization) -# aggid2procs: map aggid -> proc id (for visualization) -def prepareDelaunayData3d(dimension, agg_globalnodeidx, global_nodecoords, aggpolygons, aggid, aggid2nodes, aggid2procs): - - local_nodeidx2global_nodeidx = {} - no_of_aggnodes = len(agg_globalnodeidx) - no_aggs = len(aggid2nodes) - - Points = vtk.vtkPoints() - Vertices = vtk.vtkCellArray() - - for i in range(0,len(agg_globalnodeidx)): - id = -1 - local_nodeidx2global_nodeidx[i] = agg_globalnodeidx[i] - nodecoords = global_nodecoords[int(agg_globalnodeidx[i])] - id = Points.InsertNextPoint(nodecoords[0]+ 0.0001 * random.random(),nodecoords[1]+ 0.0001 * random.random(),nodecoords[2]+ 0.0001 * random.random()) - Vertices.InsertNextCell(1) - Vertices.InsertCellPoint(id) - - polydata2 = vtk.vtkPolyData() - polydata2.SetPoints(Points) - polydata2.Modified() - polydata2.Update() - - delaunay = vtk.vtkDelaunay3D() - delaunay.SetInput(polydata2) - delaunay.Update() - - # create surfaceFilter - surfaceFilter = vtk.vtkDataSetSurfaceFilter() - surfaceFilter.SetInputConnection(delaunay.GetOutputPort()) - surfaceFilter.Update() - - pt_polydata = surfaceFilter.GetOutput() - - lookupTable = vtk.vtkLookupTable() - lookupTable.SetNumberOfTableValues(no_aggs) - lookupTable.Build() - - Ids = vtk.vtkUnsignedIntArray() - Ids.SetNumberOfComponents(1) - Ids.SetName("Ids") - for i in range(0,Points.GetNumberOfPoints()): - Ids.InsertNextTuple1(int(aggid)) - Ids.SetLookupTable(lookupTable) - - Procs = vtk.vtkUnsignedCharArray() - Procs.SetNumberOfComponents(1) - Procs.SetName("proc") - for i in range(0,Points.GetNumberOfPoints()): - Procs.InsertNextTuple1(aggid2procs[aggid]) - - polydata3 = vtk.vtkPolyData() - polydata3 = surfaceFilter.GetOutput() - polydata3.GetPointData().SetScalars(Ids) - polydata3.GetPointData().AddArray(Procs) - - polydata4 = vtk.vtkPolyData() - polydata4.SetPoints(Points) - polydata4.SetVerts(Vertices) - polydata4.GetPointData().SetScalars(Ids) - polydata4.GetPointData().AddArray(Procs) - - #datamapper = vtk.vtkDataSetMapper() - #datamapper.SetInputConnection(delaunay.GetOutputPort()) - #datamapper.SetInput(polydata3) - - #actor = vtk.vtkActor() - #actor.SetMapper(datamapper) - - #renderer = vtk.vtkRenderer() - #renderWindow = vtk.vtkRenderWindow() - #renderWindow.AddRenderer(renderer) - #renderWindowInteractor = vtk.vtkRenderWindowInteractor() - #renderWindowInteractor.SetRenderWindow(renderWindow) - #renderer.AddActor(actor) - #renderWindow.Render() - #renderWindowInteractor.Start() - - #print polydata.GetVertices() - - aggpolygons.AddInput(polydata3) - aggpolygons.AddInput(polydata4) - -# dimension: problem dimension, i.e. either 2 or 3 -# agg_globalnodeidx: global node ids of current aggregate -# global_nodecoords: coordinates of nodes -# aggpolygons: vtk append object for aggregates -# aggid: aggregate id (global) -# aggid2nodes: map aggid -> nodeid (for visualization) -# aggid2procs: map aggid -> proc id (for visualization) -def prepareDelaunayData(dimension, agg_globalnodeidx, global_nodecoords, aggpolygons, aggid, aggid2nodes, aggid2procs): - local_nodeidx2global_nodeidx = {} - no_of_aggnodes = len(agg_globalnodeidx) - dim = len(global_nodecoords[0]) - - no_aggs = len(aggid2nodes) - - Points = vtk.vtkPoints() - Vertices = vtk.vtkCellArray() - - for i in range(0,len(agg_globalnodeidx)): - local_nodeidx2global_nodeidx[i] = agg_globalnodeidx[i] - nodecoords = global_nodecoords[int(agg_globalnodeidx[i])] - if dimension==2: - id = Points.InsertNextPoint(nodecoords[0],nodecoords[1],0.0) - elif dimension==3: - id = Points.InsertNextPoint(nodecoords[0]+ 0.001 * random.random(),nodecoords[1]+ 0.001 * random.random(),nodecoords[2]+ 0.001 * random.random()) - Vertices.InsertNextCell(1) - Vertices.InsertCellPoint(id) - - # create polygon for current aggregate - polydata = vtk.vtkPolyData() - polydata.SetPoints(Points) - polydata.SetVerts(Vertices) - polydata.Modified() - polydata.Update() - - polydata2 = vtk.vtkPolyData() - if Points.GetNumberOfPoints()>2: # todo: avoid error messages + add support for lines/surfaces - # create delaunay object - if dimension==2: - delaunay = vtk.vtkDelaunay2D() - elif dimension==3: - delaunay = vtk.vtkDelaunay3D() - #delaunay.SetAlpha(0.1) - delaunay.SetInput(polydata) - delaunay.Update() - - # create surfaceFilter - surfaceFilter = vtk.vtkDataSetSurfaceFilter() - surfaceFilter.SetInputConnection(delaunay.GetOutputPort()) - surfaceFilter.Update() - - polydata2 = surfaceFilter.GetOutput() - - lookupTable = vtk.vtkLookupTable() - lookupTable.SetNumberOfTableValues(no_aggs) - lookupTable.Build() - - Ids = vtk.vtkUnsignedIntArray() - Ids.SetNumberOfComponents(1) - Ids.SetName("Ids") - for i in range(0,Points.GetNumberOfPoints()): - Ids.InsertNextTuple1(int(aggid)) - Ids.SetLookupTable(lookupTable) - - Procs = vtk.vtkUnsignedCharArray() - Procs.SetNumberOfComponents(1) - Procs.SetName("proc") - for i in range(0,Points.GetNumberOfPoints()): - Procs.InsertNextTuple1(aggid2procs[aggid]) - - - polydata2.SetPoints(Points) - polydata2.SetVerts(Vertices) - polydata2.GetPointData().SetScalars(Ids) - polydata2.GetPointData().AddArray(Procs) - polydata2.Modified() - polydata2.Update() - - aggpolygons.AddInput(polydata2) - - -################################################################################ -# READ IN AGGREGATES -# routines that read aggregation information from files - -def checkAggregateLine(line): - if line.find("Agg ") == 0: - return 1,line - else: - return 0,line - -def read_aggregates_from_file(filename,procid): - aggid2nodes = {} - aggid2procs = {} - for l in file(filename): - line = l.strip() - - # filter out only Agg lines - ret,line = checkAggregateLine(line) - if ret == 0: - continue - - # line now contains a list of all tokens in that line - line = line.split(": ") - - # extract aggid and proc number - agginfo = line[0] - agginfo = agginfo.split(" ") - - aggid = agginfo[1] - procid = agginfo[3] - - # handle node ids for aggregate - aggnodeids = line[1] - aggnodeids = aggnodeids.split(" ") - - # fill in data variables - aggid2nodes[aggid] = aggnodeids - aggid2procs[aggid] = int(procid) - - return aggid2nodes,aggid2procs - -################################################################################ -# read in aggregation info from file -# input: filename_prototype string with prototype for filename, e.g. aggs_level%LEVEL_proc%PROCS.outlines -# the variables %LEVEL and %PROCS are replaced by the corresponding values -# input: procs: number of processors (4 means that information from processors 0..3 is expected) -# input: level: level number -def readin_aggregates(filename_prototype,procs,level): - aggid2nodes = {} - aggid2procs = {} - for proc in range(0,procs): - #filename = "aggs_level" + str(level) + "_proc" + str(proc) + ".out" - filename = filename_prototype - filename = filename.replace("%LEVEL",str(level)) - filename = filename.replace("%PROC",str(proc)) - print "process ", filename - if os.path.exists(filename): - [aggid2nodesfromproc,aggid2procsfromproc] = read_aggregates_from_file(filename,proc) - aggid2nodes.update(aggid2nodesfromproc) - aggid2procs.update(aggid2procsfromproc) - - return aggid2nodes,aggid2procs - -################################################################################ -# HELPER ROUTINES -# for generating next level information (nodesX.txt) - -################################################################################ -# get_agg_coords (helper function for get_rootnodes) -# input: list of nodes (coordinates) -# input: map aggid2gids: map of local agg ids -> GIDs -# input: aggid: global aggregate id -# output: returns set of node coordinates for aggregate with global aggid -def get_agg_coords(nodes,aggid2nodes,aggid): - agg_nodes = aggid2nodes[aggid] - nodeset = [] - for node in range(0,len(agg_nodes)): - nodeset.append(nodes[int(agg_nodes[node])]) - return nodeset - -################################################################################ -# get rootnodes -# input: aggs = map: aggid -> list of nodeids in this agg -# output: list of rootnodes -# note: we calculate the "midpoint" of each aggregate -# TODO extend me for 3d! -def get_rootnodes(aggid2nodes,nodes): - dim = 2 - if len(nodes[0]) == 3: - dim = 3 - - rootnodes = [] - for i in range(0,len(aggid2nodes.keys())): - rootnodes.append((0,0)) - for k in aggid2nodes.keys(): - - nodecoords = get_agg_coords(nodes,aggid2nodes,k) - - x = 0.0 - y = 0.0 - z = 0.0 - for m in nodecoords: - - x = x + m[0] - y = y + m[1] - if dim==3: - z = z + m[2] - x = x/len(aggid2nodes[k]) - y = y/len(aggid2nodes[k]) - if dim == 3: - z = z/len(aggid2nodes[k]) - - if dim == 2: - rootnodes[int(k)] = (x,y) - elif dim == 3: - rootnodes[int(k)] = (x,y,z) - else: print "error: dim must be 2 or 3 but it is " + str(dim) - - return rootnodes - -# write nodes file -# input: filename: filename for nodes file (should follow nodeX.txt style) -# input: aggid2nodes map for aggid to list of global nodeidx -# input: nodes list of node coordinates -# input: dimension (2 or 3) -def write_nodes_file(filename,aggid2nodes,nodes,dimension): - - # calculate root nodes (works only for 2d) - rootnodes = get_rootnodes(aggid2nodes,nodes) - - # write nodes file - f = open(filename,"w") - f.write(str(dimension)) - f.write("\r\n") - for i in range(len(rootnodes)): - rootnode = rootnodes[i] - f.write(str(rootnode[0])) - f.write(" ") - f.write(str(rootnode[1])) - if len(rootnode)==3: - f.write(" ") - f.write(str(rootnode[2])) - f.write("\r\n") - f.close() - print "node file " + filename + " generated: OK" - -################################################################################ -# check if all files exist to proceed with next level -# we need a nodesX.txt file for the node coordinates -# and all aggregation information files (from the AggregationExportFactory) -# input: nextlevel: id for next level -# procs: number of procs -# file_prototype: prototype for filename of aggregation information -def check_files_for_next_level(nextlevel,procs,file_prototype): - - if nextlevel==0: - if os.path.isfile("example.txt") == False: - return False - else: - # check if coarse level node coordinates are available - if os.path.isfile("nodes"+str(nextlevel)+".txt") == False: - return False - - #for p in range(0,procs): - for p in range(0,1): # check only processor one - filename = file_prototype - filename = filename.replace("%LEVEL",str(nextlevel)) - filename = filename.replace("%PROC",str(p)) - if os.path.isfile(filename) == False: - return False - - return True - -########### -# MAIN routine -def main(argv=None): - dimension = 2 - numprocs = 2 - level = 0 # startlevel - - no_multigridlevels = 0 - - # check how many processors generated aggregation output - #while check_files_for_next_level(0,numprocs, "aggs_level%LEVEL_proc%PROC.out") == True: - # numprocs = numprocs + 1 - #numprocs = numprocs - 1 - #print "Aggregtaion information for " + str(numprocs) + " processors found" - - # process all multigrid levels - while check_files_for_next_level(level,numprocs,"aggs_level%LEVEL_proc%PROC.out"): - global_nodecoords = [] - - print "Level " + str(level) - - if level==0: # read in coordinates (finest level - global_nodecoords,dimension = read_finelevel_nodecoords_from_file("example.txt") - else: - global_nodecoords,dimension = read_nodecoords_from_file("nodes"+str(level)+".txt") - - # read aggregates - aggid2nodes, aggid2procs = readin_aggregates("aggs_level%LEVEL_proc%PROC.out",numprocs,level) - - # vtk polygon for output - aggpolygons = vtk.vtkAppendPolyData() - - # collect all aggregates - for aggid,agg_nodes in aggid2nodes.iteritems(): - # build an aggregate - if dimension==2: - prepareDelaunayData(dimension, agg_nodes, global_nodecoords, aggpolygons, aggid, aggid2nodes, aggid2procs) - else: - prepareDelaunayData3d(dimension, agg_nodes, global_nodecoords, aggpolygons, aggid, aggid2nodes, aggid2procs) - - #aggpolygons.GetOutput().GetPointData().SetVectors(vtkDisplacementVector) - #aggpolygons.Update() - - writer = vtk.vtkXMLPolyDataWriter() - fname = "aggs"+str(level)+".vtp" - writer.SetFileName(fname) - writer.SetInput(aggpolygons.GetOutput()) - writer.Write() - - - write_nodes_file("nodes"+str(level+1)+".txt",aggid2nodes,global_nodecoords,dimension) - - # increment number of multigrid levels that have been found in the files - if no_multigridlevels < level: - no_multigridlevels = level - - print "VTK Export for level " + str(level) + " finished...\r\n" - - level = level + 1 - - -if __name__ == "__main__": - sys.exit(main()) diff --git a/packages/muelu/doc/Tutorial/src/ScalingTest.cpp b/packages/muelu/doc/Tutorial/src/ScalingTest.cpp deleted file mode 100644 index 872879f5f99d..000000000000 --- a/packages/muelu/doc/Tutorial/src/ScalingTest.cpp +++ /dev/null @@ -1,660 +0,0 @@ -// @HEADER -// ***************************************************************************** -// MueLu: A package for multigrid based preconditioning -// -// Copyright 2012 NTESS and the MueLu contributors. -// SPDX-License-Identifier: BSD-3-Clause -// ***************************************************************************** -// @HEADER - -#include -#include - -// Teuchos -#include -#include -#include -#include -#include - -// Xpetra -#include -#include -#include -#include -#include -#include - -// Galeri -#include -#include -#include - -// MueLu -#include "MueLu_ConfigDefs.hpp" -#include "MueLu_Memory.hpp" -#include "MueLu_Hierarchy.hpp" -#include "MueLu_SaPFactory.hpp" -#include "MueLu_RAPFactory.hpp" -#include "MueLu_TrilinosSmoother.hpp" -#include "MueLu_DirectSolver.hpp" -#include "MueLu_Utilities.hpp" -#include "MueLu_Exceptions.hpp" -#include "MueLu_UncoupledAggregationFactory.hpp" -#include "MueLu_TentativePFactory.hpp" -#include "MueLu_TransPFactory.hpp" -#include "MueLu_SmootherFactory.hpp" -#include "MueLu_RepartitionFactory.hpp" -#include "MueLu_RebalanceTransferFactory.hpp" -#include "MueLu_CoordinatesTransferFactory.hpp" -#include "MueLu_ZoltanInterface.hpp" -#include "MueLu_RebalanceAcFactory.hpp" -#include "MueLu_CoalesceDropFactory.hpp" - -// Belos -#ifdef HAVE_MUELU_BELOS -#include "BelosConfigDefs.hpp" -#include "BelosLinearProblem.hpp" -#include "BelosBlockCGSolMgr.hpp" -#include "BelosBlockGmresSolMgr.hpp" -#include "BelosXpetraAdapter.hpp" // this header defines Belos::XpetraOp() -#include "BelosMueLuAdapter.hpp" // this header defines Belos::MueLuOp() -#endif - -#ifdef HAVE_MUELU_ISORROPIA -#include "MueLu_IsorropiaInterface.hpp" -#endif - -// -typedef double Scalar; -typedef int LocalOrdinal; -// FIXME we need a HAVE_MUELU_LONG_LONG_INT option -// -// NOTE (mfh 11 Aug 2015) I just added a HAVE_XPETRA_INT_LONG_LONG option. - -#ifdef HAVE_XPETRA_INT_LONG_LONG -typedef long long int GlobalOrdinal; -#else -typedef int GlobalOrdinal; -#endif -// -typedef Tpetra::KokkosClassic::DefaultNode::DefaultNodeType Node; -// - -int main(int argc, char *argv[]) { -#include "MueLu_UseShortNames.hpp" - - using Teuchos::RCP; - using Teuchos::rcp; - using Teuchos::TimeMonitor; - // using Galeri::Xpetra::CreateCartesianCoordinates; - - Teuchos::oblackholestream blackhole; - Teuchos::GlobalMPISession mpiSession(&argc, &argv, &blackhole); - - // USER GUIDE // define communicator - RCP > comm = Teuchos::DefaultComm::getComm(); - // USER GUIDE // create fancy output stream - RCP out = Teuchos::fancyOStream(Teuchos::rcpFromRef(std::cout)); - out->setOutputToRootOnly(0); - *out << MueLu::MemUtils::PrintMemoryUsage() << std::endl; - -// out->setOutputToRootOnly(-1); -// out->precision(12); - -// FIXME we need a HAVE_MUELU_LONG_LONG_INT option -// -// NOTE (mfh 11 Aug 2015) I just added a HAVE_XPETRA_INT_LONG_LONG option. -// -#ifndef HAVE_XPETRA_INT_LONG_LONG - *out << "Warning: scaling test was not compiled with long long int support" << std::endl; -#endif - - // - // SET TEST PARAMETERS - // - // Note: use --help to list available options. - Teuchos::CommandLineProcessor clp(false); - - // Default is Laplace1D with nx = 8748. - // It's a nice size for 1D and perfect aggregation. (6561 = 3^8) - // Nice size for 1D and perfect aggregation on small numbers of processors. (8748 = 4*3^7) - Galeri::Xpetra::Parameters matrixParameters(clp, 8748); // manage parameters of the test case - Xpetra::Parameters xpetraParameters(clp); // manage parameters of xpetra - - // Custom command line parameters - int optDump = 0; - clp.setOption("dump", &optDump, "write matrix to file"); - int optTimings = 0; - clp.setOption("timings", &optTimings, "print timings to screen"); - - // - Levels - LO optMaxLevels = 10; - clp.setOption("maxLevels", &optMaxLevels, "maximum number of levels allowed"); - int optMaxCoarseSize = 50; - clp.setOption("maxCoarseSize", &optMaxCoarseSize, "maximum #dofs in coarse operator"); // FIXME clp doesn't like long long int - - // - Smoothed-Aggregation - Scalar optSaDamping = 4. / 3; - clp.setOption("saDamping", &optSaDamping, "prolongator damping factor"); - - // - Aggregation - std::string optAggOrdering = "natural"; - clp.setOption("aggOrdering", &optAggOrdering, "aggregation ordering strategy (natural, random, graph)"); - int optMinPerAgg = 2; - clp.setOption("minPerAgg", &optMinPerAgg, "minimum #DOFs per aggregate"); - int optMaxNbrSel = 0; - clp.setOption("maxNbrSel", &optMaxNbrSel, "maximum # of nbrs allowed to be in other aggregates"); - - // - R - int optExplicitR = 1; - clp.setOption("explicitR", &optExplicitR, "restriction will be explicitly stored as transpose of prolongator"); - - // - Smoothers - std::string optSmooType = "sgs"; - clp.setOption("smooType", &optSmooType, "smoother type ('l1-sgs', 'sgs 'or 'cheby')"); - int optSweeps = 2; - clp.setOption("sweeps", &optSweeps, "sweeps to be used in SGS (or Chebyshev degree)"); - - // - Repartitioning -#if defined(HAVE_MPI) && defined(HAVE_MUELU_ZOLTAN) - int optRepartition = 1; - clp.setOption("repartition", &optRepartition, "enable repartitioning (0=no repartitioning, 1=Zoltan RCB, 2=Isorropia+Zoltan PHG"); - LO optMinRowsPerProc = 2000; - clp.setOption("minRowsPerProc", &optMinRowsPerProc, "min #rows allowable per proc before repartitioning occurs"); - double optNnzImbalance = 1.2; - clp.setOption("nnzImbalance", &optNnzImbalance, "max allowable nonzero imbalance before repartitioning occurs"); -#else - int optRepartition = 0; -#endif // HAVE_MPI && HAVE_MUELU_ZOLTAN - - // - Solve - int optFixPoint = 1; - clp.setOption("fixPoint", &optFixPoint, "apply multigrid as solver"); - int optPrecond = 1; - clp.setOption("precond", &optPrecond, "apply multigrid as preconditioner"); - LO optIts = 10; - clp.setOption("its", &optIts, "number of multigrid cycles"); - double optTol = 1e-7; - clp.setOption("tol", &optTol, "stopping tolerance for Krylov method"); - - switch (clp.parse(argc, argv)) { - case Teuchos::CommandLineProcessor::PARSE_HELP_PRINTED: return EXIT_SUCCESS; break; - case Teuchos::CommandLineProcessor::PARSE_ERROR: - case Teuchos::CommandLineProcessor::PARSE_UNRECOGNIZED_OPTION: return EXIT_FAILURE; break; - case Teuchos::CommandLineProcessor::PARSE_SUCCESSFUL: break; - } - - RCP globalTimeMonitor = rcp(new TimeMonitor(*TimeMonitor::getNewTimer("ScalingTest: S - Global Time"))); - - matrixParameters.check(); - xpetraParameters.check(); - // TODO: check custom parameters - std::transform(optSmooType.begin(), optSmooType.end(), optSmooType.begin(), ::tolower); - Xpetra::UnderlyingLib lib = xpetraParameters.GetLib(); - - if (comm->getRank() == 0) { - std::cout << xpetraParameters << matrixParameters; - // TODO: print custom parameters // Or use paramList::print()! - } - - // - // CREATE INITIAL MATRIX */ - // - RCP map; - RCP A; - - RCP coordinates; - { - TimeMonitor tm(*TimeMonitor::getNewTimer("ScalingTest: 1 - Matrix Build")); - - map = MapFactory::Build(lib, matrixParameters.GetNumGlobalElements(), 0, comm); - Teuchos::RCP > Pr = - Galeri::Xpetra::BuildProblem(matrixParameters.GetMatrixType(), map, matrixParameters.GetParameterList()); // TODO: Matrix vs. CrsMatrixWrap - A = Pr->BuildMatrix(); - - if (matrixParameters.GetMatrixType() == "Laplace1D") { - coordinates = Galeri::Xpetra::Utils::CreateCartesianCoordinates("1D", map, matrixParameters.GetParameterList()); - } else if (matrixParameters.GetMatrixType() == "Laplace2D") { - coordinates = Galeri::Xpetra::Utils::CreateCartesianCoordinates("2D", map, matrixParameters.GetParameterList()); - } else if (matrixParameters.GetMatrixType() == "Laplace3D") { - coordinates = Galeri::Xpetra::Utils::CreateCartesianCoordinates("3D", map, matrixParameters.GetParameterList()); - } - } - - // - // - // - - // dump matrix to file - if (optDump) { - std::string fileName = "Amat.mm"; - Utils::Write(fileName, *A); - } - - // USER GUIDE // define near null space - RCP nullspace = MultiVectorFactory::Build(map, 1); - nullspace->putScalar((SC)1.0); - // USER GUIDE // - Teuchos::Array::magnitudeType> norms(1); - - nullspace->norm1(norms); - if (comm->getRank() == 0) - std::cout << "||NS|| = " << norms[0] << std::endl; - - // USER GUIDE // create new hierarchy - RCP > H; - // USER GUIDE // - - // - // - // SETUP - // - // - - { - TimeMonitor tm(*TimeMonitor::getNewTimer("ScalingTest: 2 - MueLu Setup")); - - // - // Hierarchy - // - - // USER GUIDE // instantiate new Hierarchy object - H = rcp(new Hierarchy()); - H->setDefaultVerbLevel(Teuchos::VERB_HIGH); - H->SetMaxCoarseSize((GO)optMaxCoarseSize); - // USER GUIDE // - - // - // Finest level - // - - // USER GUIDE // create a fine level object - RCP Finest = H->GetLevel(); - Finest->setDefaultVerbLevel(Teuchos::VERB_HIGH); - Finest->Set("A", A); - Finest->Set("Nullspace", nullspace); - Finest->Set("Coordinates", coordinates); // FIXME: XCoordinates, YCoordinates, .. - // USER GUIDE // - - // - // FactoryManager - // - - // USER GUIDE // define a factory manager - FactoryManager M; - // USER GUIDE // - - // - // - // Aggregation - // - - { - RCP AggregationFact = rcp(new UncoupledAggregationFactory()); - *out << "========================= Aggregate option summary =========================" << std::endl; - *out << "min DOFs per aggregate : " << optMinPerAgg << std::endl; - *out << "min # of root nbrs already aggregated : " << optMaxNbrSel << std::endl; - AggregationFact->SetMinNodesPerAggregate(optMinPerAgg); // TODO should increase if run anything othpermRFacter than 1D - AggregationFact->SetMaxNeighAlreadySelected(optMaxNbrSel); - std::transform(optAggOrdering.begin(), optAggOrdering.end(), optAggOrdering.begin(), ::tolower); - if (optAggOrdering == "natural" || optAggOrdering == "random" || optAggOrdering == "graph") { - *out << "aggregate ordering : " << optAggOrdering << std::endl; - AggregationFact->SetOrdering(optAggOrdering); - } else { - std::string msg = - "main: bad aggregation option " - "" + - optAggOrdering + - "" - "."; - throw(MueLu::Exceptions::RuntimeError(msg)); - } - // AggregationFact->SetPhase3AggCreation(0.5); - M.SetFactory("Aggregates", AggregationFact); - - *out << "=============================================================================" << std::endl; - } - - // - // Transfer - // - - { - // - // Non rebalanced factories - // - - // USER GUIDE // declare some factories (potentially overwrite default factories) - RCP PFact = rcp(new SaPFactory()); - PFact->SetParameter("sa: damping factor", ParameterEntry(optSaDamping)); - - RCP RFact = rcp(new TransPFactory()); - - RCP AFact = rcp(new RAPFactory()); - AFact->setVerbLevel(Teuchos::VERB_HIGH); - // USER GUIDE // - - if (!optExplicitR) { - H->SetImplicitTranspose(true); - ParameterList Aclist = *(AFact->GetValidParameterList()); - Aclist.set("transpose: use implicit", true); - AFact->SetParameterList(Aclist); - if (comm->getRank() == 0) std::cout << "\n\n* ***** USING IMPLICIT RESTRICTION OPERATOR ***** *\n" - << std::endl; - } - - // - // Repartitioning (if needed) - // - - if (optRepartition == 0) { - // No repartitioning - - // USER GUIDE // configure factory manager - M.SetFactory("P", PFact); - M.SetFactory("R", RFact); - M.SetFactory("A", AFact); - // USER GUIDE // - - } else { -#if defined(HAVE_MPI) && defined(HAVE_MUELU_ZOLTAN) - // Repartitioning - - // The Factory Manager will be configured to return the rebalanced versions of P, R, A by default. - // Everytime we want to use the non-rebalanced versions, we need to explicitly define the generating factory. - RFact->SetFactory("P", PFact); - // - AFact->SetFactory("P", PFact); - AFact->SetFactory("R", RFact); - - // Transfer coordinates - RCP TransferCoordinatesFact = rcp(new CoordinatesTransferFactory()); - AFact->AddTransferFactory(TransferCoordinatesFact); // FIXME REMOVE - - // Compute partition (creates "Partition" object) - if (optRepartition == 1) { // use plain Zoltan Interface - - } else if (optRepartition == 2) { // use Isorropia + Zoltan interface - } - - // Repartitioning (creates "Importer" from "Partition") - RCP RepartitionFact = rcp(new RepartitionFactory()); - { - Teuchos::ParameterList paramList; - paramList.set("repartition: min rows per proc", optMinRowsPerProc); - paramList.set("repartition: max imbalance", optNnzImbalance); - RepartitionFact->SetParameterList(paramList); - } - RepartitionFact->SetFactory("A", AFact); - - if (optRepartition == 1) { - RCP ZoltanFact = rcp(new ZoltanInterface()); - ZoltanFact->SetFactory("A", AFact); - ZoltanFact->SetFactory("Coordinates", TransferCoordinatesFact); - RepartitionFact->SetFactory("Partition", ZoltanFact); - } else if (optRepartition == 2) { -#if defined(HAVE_MPI) && defined(HAVE_MUELU_ISORROPIA) - RCP > isoInterface = rcp(new MueLu::IsorropiaInterface()); - isoInterface->SetFactory("A", AFact); - // we don't need Coordinates here! - RepartitionFact->SetFactory("Partition", isoInterface); -#else - if (comm->getRank() == 0) - std::cout << "Please recompile Trilinos with Isorropia support enabled." << std::endl; - return EXIT_FAILURE; -#endif - } - - // Reordering of the transfer operators - RCP RebalancedPFact = rcp(new RebalanceTransferFactory()); - RebalancedPFact->SetParameter("type", Teuchos::ParameterEntry(std::string("Interpolation"))); - RebalancedPFact->SetFactory("P", PFact); - RebalancedPFact->SetFactory("Coordinates", TransferCoordinatesFact); - RebalancedPFact->SetFactory("Nullspace", M.GetFactory("Ptent")); // TODO - - RCP RebalancedRFact = rcp(new RebalanceTransferFactory()); - RebalancedRFact->SetParameter("type", Teuchos::ParameterEntry(std::string("Restriction"))); - RebalancedRFact->SetFactory("R", RFact); - - // Compute Ac from rebalanced P and R - RCP RebalancedAFact = rcp(new RebalanceAcFactory()); - RebalancedAFact->SetFactory("A", AFact); - - // Configure FactoryManager - M.SetFactory("A", RebalancedAFact); - M.SetFactory("P", RebalancedPFact); - M.SetFactory("R", RebalancedRFact); - M.SetFactory("Nullspace", RebalancedPFact); - M.SetFactory("Coordinates", RebalancedPFact); - M.SetFactory("Importer", RepartitionFact); - -#else - TEUCHOS_TEST_FOR_EXCEPT(true); -#endif - } // optRepartition - - } // Transfer - - // - // Smoothers - // - - { - // USER GUIDE // define smoother object - std::string ifpackType; - Teuchos::ParameterList ifpackList; - ifpackList.set("relaxation: sweeps", (LO)optSweeps); - ifpackList.set("relaxation: damping factor", (SC)1.0); - if (optSmooType == "sgs") { - ifpackType = "RELAXATION"; - ifpackList.set("relaxation: type", "Symmetric Gauss-Seidel"); - } - // USER GUIDE // - else if (optSmooType == "l1-sgs") { - ifpackType = "RELAXATION"; - ifpackList.set("relaxation: type", "Symmetric Gauss-Seidel"); - ifpackList.set("relaxation: use l1", true); - } else if (optSmooType == "cheby") { - ifpackType = "CHEBYSHEV"; - ifpackList.set("chebyshev: degree", (LO)optSweeps); - - if (matrixParameters.GetMatrixType() == "Laplace1D") { - ifpackList.set("chebyshev: ratio eigenvalue", (SC)3); - } else if (matrixParameters.GetMatrixType() == "Laplace2D") { - ifpackList.set("chebyshev: ratio eigenvalue", (SC)7); - } else if (matrixParameters.GetMatrixType() == "Laplace3D") { - ifpackList.set("chebyshev: ratio eigenvalue", (SC)20); - } - // ifpackList.set("chebyshev: max eigenvalue", (double) -1.0); - // ifpackList.set("chebyshev: min eigenvalue", (double) 1.0); - } - - // USER GUIDE // create smoother factory - RCP smootherPrototype = rcp(new TrilinosSmoother(ifpackType, ifpackList)); - M.SetFactory("Smoother", rcp(new SmootherFactory(smootherPrototype))); - // USER GUIDE // - } - - // - // Setup preconditioner - // - - // USER GUIDE // setup multigrid hierarchy - int startLevel = 0; - H->Setup(M, startLevel, optMaxLevels); - // USER GUIDE // - - } // end of Setup TimeMonitor - - /*{ // some debug output - // print out content of levels - std::cout << "FINAL CONTENT of multigrid levels" << std::endl; - for(LO l = 0; l < H->GetNumLevels(); l++) { - RCP coarseLevel = H->GetLevel(l); - coarseLevel->print(*out); - } - std::cout << "END FINAL CONTENT of multigrid levels" << std::endl; - } // end debug output*/ - - // - // - // SOLVE - // - // - - // USER GUIDE // Define X, B - RCP X = MultiVectorFactory::Build(map, 1); - RCP B = MultiVectorFactory::Build(map, 1); - - X->setSeed(846930886); - X->randomize(); - A->apply(*X, *B, Teuchos::NO_TRANS, (SC)1.0, (SC)0.0); - B->norm2(norms); - B->scale(1.0 / norms[0]); - // USER GUIDE // - - // - // Use AMG directly as an iterative method - // - - if (optFixPoint) { - X->putScalar((SC)0.0); - - TimeMonitor tm(*TimeMonitor::getNewTimer("ScalingTest: 3 - Fixed Point Solve")); - - H->IsPreconditioner(false); - H->Iterate(*B, *X, optIts); - - } // optFixedPt - - // - // Use AMG as a preconditioner in Belos - // - -#ifdef HAVE_MUELU_BELOS - - if (optPrecond) { - RCP tm; - tm = rcp(new TimeMonitor(*TimeMonitor::getNewTimer("ScalingTest: 5 - Belos Solve"))); - - // USER GUIDE // Operator and Multivector type that will be used with Belos - typedef MultiVector MV; - typedef Belos::OperatorT OP; - H->IsPreconditioner(true); - - // Define Operator and Preconditioner - Teuchos::RCP belosOp = Teuchos::rcp(new Belos::XpetraOp(A)); // Turns a Xpetra::Operator object into a Belos operator - Teuchos::RCP belosPrec = Teuchos::rcp(new Belos::MueLuOp(H)); // Turns a MueLu::Hierarchy object into a Belos operator - - // Construct a Belos LinearProblem object - RCP > belosProblem = rcp(new Belos::LinearProblem(belosOp, X, B)); - belosProblem->setLeftPrec(belosPrec); - - bool set = belosProblem->setProblem(); - if (set == false) { - if (comm->getRank() == 0) - std::cout << std::endl - << "ERROR: Belos::LinearProblem failed to set up correctly!" << std::endl; - return EXIT_FAILURE; - } - // USER GUIDE // - - // USER GUIDE // Belos parameter list - int maxIts = 100; - Teuchos::ParameterList belosList; - belosList.set("Maximum Iterations", maxIts); // Maximum number of iterations allowed - belosList.set("Convergence Tolerance", optTol); // Relative convergence tolerance requested - // belosList.set("Verbosity", Belos::Errors + Belos::Warnings + Belos::TimingDetails + Belos::StatusTestDetails); - belosList.set("Verbosity", Belos::Errors + Belos::Warnings + Belos::StatusTestDetails); - belosList.set("Output Frequency", 1); - belosList.set("Output Style", Belos::Brief); - - // Create an iterative solver manager - RCP > solver = rcp(new Belos::BlockCGSolMgr(belosProblem, rcp(&belosList, false))); - // USER GUIDE // - - // Perform solve - Belos::ReturnType ret = Belos::Unconverged; - try { - { - TimeMonitor tm2(*TimeMonitor::getNewTimer("ScalingTest: 5bis - Belos Internal Solve")); - // USER GUIDE // solve linear system - ret = solver->solve(); - // USER GUIDE // - } // end of TimeMonitor - - // Get the number of iterations for this solve. - if (comm->getRank() == 0) - std::cout << "Number of iterations performed for this solve: " << solver->getNumIters() << std::endl; - - // Compute actual residuals. - int numrhs = 1; - std::vector actual_resids(numrhs); // TODO: double? - std::vector rhs_norm(numrhs); - RCP resid = MultiVectorFactory::Build(map, numrhs); - - typedef Belos::OperatorTraits OPT; - typedef Belos::MultiVecTraits MVT; - - OPT::Apply(*belosOp, *X, *resid); - MVT::MvAddMv(-1.0, *resid, 1.0, *B, *resid); - MVT::MvNorm(*resid, actual_resids); - MVT::MvNorm(*B, rhs_norm); - *out << "---------- Actual Residuals (normalized) ----------" << std::endl - << std::endl; - for (int i = 0; i < numrhs; i++) { - double actRes = actual_resids[i] / rhs_norm[i]; - *out << "Problem " << i << " : \t" << actRes << std::endl; - // if (actRes > tol) { badRes = true; } - } - - } // try - - catch (...) { - if (comm->getRank() == 0) - std::cout << std::endl - << "ERROR: Belos threw an error! " << std::endl; - } - - // USER GUIDE // Check convergence - if (ret != Belos::Converged) { - if (comm->getRank() == 0) std::cout << std::endl - << "ERROR: Belos did not converge! " << std::endl; - } else { - if (comm->getRank() == 0) std::cout << std::endl - << "SUCCESS: Belos converged!" << std::endl; - } - // USER GUIDE // - tm = Teuchos::null; - - } // if (optPrecond) - -#endif // HAVE_MUELU_BELOS - - // - // Timer final summaries - // - - globalTimeMonitor = Teuchos::null; // stop this timer before summary - - if (optTimings) - TimeMonitor::summarize(); - - // - - return EXIT_SUCCESS; -} - -// TODO: add warning if: -// DEBUG_MODE, LONG_LONG or KLU - -/* test direct solve */ -/* if (optMaxLevels == 1) { - Teuchos::ParameterList amesosList; - amesosList.set("PrintTiming", true); - smootherPrototype = rcp(new DirectSolver("", amesosList)); - } -*/ - -// TODO: option one level diff --git a/packages/muelu/doc/Tutorial/src/ScalingTestParamList.cpp b/packages/muelu/doc/Tutorial/src/ScalingTestParamList.cpp deleted file mode 100644 index 44c727aa3cc7..000000000000 --- a/packages/muelu/doc/Tutorial/src/ScalingTestParamList.cpp +++ /dev/null @@ -1,494 +0,0 @@ -// @HEADER -// ***************************************************************************** -// MueLu: A package for multigrid based preconditioning -// -// Copyright 2012 NTESS and the MueLu contributors. -// SPDX-License-Identifier: BSD-3-Clause -// ***************************************************************************** -// @HEADER - -#include -#include -#include - -#include - -#include // For Epetra only runs this points to FakeKokkos in Xpetra - -#include "Xpetra_ConfigDefs.hpp" -#include -#include - -// Galeri -#include -#include -#include -#include -// - -#include -#include -#include -#include // TODO: move into MueLu.hpp - -#include - -#include - -#ifdef HAVE_MUELU_BELOS -#include -#include -#include -#include -#include -#include // => This header defines Belos::XpetraOp -#include // => This header defines Belos::MueLuOp -#endif - -// Define default data types -typedef double Scalar; -typedef int LocalOrdinal; -typedef int GlobalOrdinal; -typedef Tpetra::KokkosClassic::DefaultNode::DefaultNodeType Node; - -int main(int argc, char* argv[]) { -#include - - using Teuchos::ArrayRCP; - using Teuchos::ParameterList; - using Teuchos::RCP; - using Teuchos::rcp; - using Teuchos::TimeMonitor; - - // ========================================================================= - // MPI initialization using Teuchos - // ========================================================================= - Teuchos::GlobalMPISession mpiSession(&argc, &argv, NULL); - RCP > comm = Teuchos::DefaultComm::getComm(); - - // ========================================================================= - // Convenient definitions - // ========================================================================= - typedef Teuchos::ScalarTraits STS; - SC zero = STS::zero(), one = STS::one(); - - // ========================================================================= - // Parameters initialization - // ========================================================================= - Teuchos::CommandLineProcessor clp(false); - - GO nx = 100, ny = 100, nz = 100; - Galeri::Xpetra::Parameters galeriParameters(clp, nx, ny, nz, "Laplace2D"); // manage parameters of the test case - Xpetra::Parameters xpetraParameters(clp); // manage parameters of Xpetra - - std::string xmlFileName = "scalingTest.xml"; - clp.setOption("xml", &xmlFileName, "read parameters from a file [default = 'scalingTest.xml']"); - bool printTimings = true; - clp.setOption("timings", "notimings", &printTimings, "print timings to screen"); - int writeMatricesOPT = -2; - clp.setOption("write", &writeMatricesOPT, "write matrices to file (-1 means all; i>=0 means level i)"); - std::string dsolveType = "cg", solveType; - clp.setOption("solver", &dsolveType, "solve type: (none | cg | gmres | standalone)"); - double dtol = 1e-12, tol; - clp.setOption("tol", &dtol, "solver convergence tolerance"); - - std::string mapFile; - clp.setOption("map", &mapFile, "map data file"); - std::string matrixFile; - clp.setOption("matrix", &matrixFile, "matrix data file"); - std::string coordFile; - clp.setOption("coords", &coordFile, "coordinates data file"); - std::string nullFile; - clp.setOption("nullspace", &nullFile, "nullspace data file"); - int numRebuilds = 0; - clp.setOption("rebuild", &numRebuilds, "#times to rebuild hierarchy"); - int maxIts = 200; - clp.setOption("its", &maxIts, "maximum number of solver iterations"); - bool scaleResidualHistory = true; - clp.setOption("scale", "noscale", &scaleResidualHistory, "scaled Krylov residual history"); - - switch (clp.parse(argc, argv)) { - case Teuchos::CommandLineProcessor::PARSE_HELP_PRINTED: return EXIT_SUCCESS; - case Teuchos::CommandLineProcessor::PARSE_ERROR: - case Teuchos::CommandLineProcessor::PARSE_UNRECOGNIZED_OPTION: return EXIT_FAILURE; - case Teuchos::CommandLineProcessor::PARSE_SUCCESSFUL: break; - } - - Xpetra::UnderlyingLib lib = xpetraParameters.GetLib(); - - ParameterList paramList; - Teuchos::updateParametersFromXmlFileAndBroadcast(xmlFileName, Teuchos::Ptr(¶mList), *comm); - bool isDriver = paramList.isSublist("Run1"); - if (isDriver) { - // update galeriParameters with the values from the XML file - ParameterList& realParams = galeriParameters.GetParameterList(); - - for (ParameterList::ConstIterator it = realParams.begin(); it != realParams.end(); it++) { - const std::string& name = realParams.name(it); - if (paramList.isParameter(name)) - realParams.setEntry(name, paramList.getEntry(name)); - } - } - - // Retrieve matrix parameters (they may have been changed on the command line) - // [for instance, if we changed matrix type from 2D to 3D we need to update nz] - ParameterList galeriList = galeriParameters.GetParameterList(); - - // ========================================================================= - // Problem construction - // ========================================================================= - std::ostringstream galeriStream; - comm->barrier(); - RCP globalTimeMonitor = rcp(new TimeMonitor(*TimeMonitor::getNewTimer("ScalingTest: S - Global Time"))); - RCP tm = rcp(new TimeMonitor(*TimeMonitor::getNewTimer("ScalingTest: 1 - Matrix Build"))); - - RCP A; - RCP map; - RCP coordinates; - RCP nullspace; - if (matrixFile.empty()) { - galeriStream << "========================================================\n" - << xpetraParameters << galeriParameters; - - // Galeri will attempt to create a square-as-possible distribution of subdomains di, e.g., - // d1 d2 d3 - // d4 d5 d6 - // d7 d8 d9 - // d10 d11 d12 - // A perfect distribution is only possible when the #processors is a perfect square. - // This *will* result in "strip" distribution if the #processors is a prime number or if the factors are very different in - // size. For example, np=14 will give a 7-by-2 distribution. - // If you don't want Galeri to do this, specify mx or my on the galeriList. - std::string matrixType = galeriParameters.GetMatrixType(); - - // Create map and coordinates - // In the future, we hope to be able to first create a Galeri problem, and then request map and coordinates from it - // At the moment, however, things are fragile as we hope that the Problem uses same map and coordinates inside - if (matrixType == "Laplace1D") { - map = Galeri::Xpetra::CreateMap(xpetraParameters.GetLib(), "Cartesian1D", comm, galeriList); - coordinates = Galeri::Xpetra::Utils::CreateCartesianCoordinates("1D", map, galeriList); - - } else if (matrixType == "Laplace2D" || matrixType == "Star2D" || - matrixType == "BigStar2D" || matrixType == "Elasticity2D") { - map = Galeri::Xpetra::CreateMap(xpetraParameters.GetLib(), "Cartesian2D", comm, galeriList); - coordinates = Galeri::Xpetra::Utils::CreateCartesianCoordinates("2D", map, galeriList); - - } else if (matrixType == "Laplace3D" || matrixType == "Brick3D" || matrixType == "Elasticity3D") { - map = Galeri::Xpetra::CreateMap(xpetraParameters.GetLib(), "Cartesian3D", comm, galeriList); - coordinates = Galeri::Xpetra::Utils::CreateCartesianCoordinates("3D", map, galeriList); - } - - // Expand map to do multiple DOF per node for block problems - if (matrixType == "Elasticity2D") - map = Xpetra::MapFactory::Build(map, 2); - if (matrixType == "Elasticity3D") - map = Xpetra::MapFactory::Build(map, 3); - - galeriStream << "Processor subdomains in x direction: " << galeriList.get("mx") << std::endl - << "Processor subdomains in y direction: " << galeriList.get("my") << std::endl - << "Processor subdomains in z direction: " << galeriList.get("mz") << std::endl - << "========================================================" << std::endl; - - if (matrixType == "Elasticity2D" || matrixType == "Elasticity3D") { - // Our default test case for elasticity: all boundaries of a square/cube have Neumann b.c. except left which has Dirichlet - galeriList.set("right boundary", "Neumann"); - galeriList.set("bottom boundary", "Neumann"); - galeriList.set("top boundary", "Neumann"); - galeriList.set("front boundary", "Neumann"); - galeriList.set("back boundary", "Neumann"); - } - - RCP > Pr = - Galeri::Xpetra::BuildProblem(galeriParameters.GetMatrixType(), map, galeriList); - A = Pr->BuildMatrix(); - - if (matrixType == "Elasticity2D" || - matrixType == "Elasticity3D") { - nullspace = Pr->BuildNullspace(); - A->SetFixedBlockSize((galeriParameters.GetMatrixType() == "Elasticity2D") ? 2 : 3); - } - - } else { - if (!mapFile.empty()) - map = Utils2::ReadMap(mapFile, xpetraParameters.GetLib(), comm); - comm->barrier(); - - if (lib == Xpetra::UseEpetra) { - A = Utils::Read(matrixFile, map); - - } else { - // Tpetra matrix reader is still broken, so instead we read in - // a matrix in a binary format and then redistribute it - const bool binaryFormat = true; - A = Utils::Read(matrixFile, lib, comm, binaryFormat); - - if (!map.is_null()) { - RCP newMatrix = MatrixFactory::Build(map, 1); - RCP importer = ImportFactory::Build(A->getRowMap(), map); - newMatrix->doImport(*A, *importer, Xpetra::INSERT); - newMatrix->fillComplete(); - - A.swap(newMatrix); - } - } - map = A->getMap(); - - comm->barrier(); - - if (!coordFile.empty()) - coordinates = Utils2::ReadMultiVector(coordFile, map); - - if (!nullFile.empty()) - nullspace = Utils2::ReadMultiVector(nullFile, map); - } - - comm->barrier(); - tm = Teuchos::null; - - galeriStream << "Galeri complete.\n========================================================" << std::endl; - - int numReruns = 1; - if (paramList.isParameter("number of reruns")) - numReruns = paramList.get("number of reruns"); - - const bool mustAlreadyExist = true; - for (int rerunCount = 1; rerunCount <= numReruns; rerunCount++) { - ParameterList mueluList, runList; - - bool stop = false; - if (isDriver) { - runList = paramList.sublist("Run1", mustAlreadyExist); - mueluList = runList.sublist("MueLu", mustAlreadyExist); - } else { - mueluList = paramList; - stop = true; - } - - if (nullspace.is_null()) { - int blkSize = 1; - if (mueluList.isSublist("Matrix")) { - // Factory style parameter list - const Teuchos::ParameterList& operatorList = paramList.sublist("Matrix"); - if (operatorList.isParameter("PDE equations")) - blkSize = operatorList.get("PDE equations"); - - } else if (paramList.isParameter("number of equations")) { - // Easy style parameter list - blkSize = paramList.get("number of equations"); - } - - nullspace = MultiVectorFactory::Build(map, blkSize); - for (int i = 0; i < blkSize; i++) { - RCP domainMap = A->getDomainMap(); - GO indexBase = domainMap->getIndexBase(); - - ArrayRCP nsData = nullspace->getDataNonConst(i); - for (int j = 0; j < nsData.size(); j++) { - GO GID = domainMap->getGlobalElement(j) - indexBase; - - if ((GID - i) % blkSize == 0) - nsData[j] = Teuchos::ScalarTraits::one(); - } - } - } - - int runCount = 1; - do { - A->SetMaxEigenvalueEstimate(-one); - - solveType = dsolveType; - tol = dtol; - - int savedOut = -1; - FILE* openedOut = NULL; - if (isDriver) { - if (runList.isParameter("filename")) { - // Redirect all output into a filename We have to redirect all output, - // including printf's, therefore we cannot simply replace C++ cout - // buffers, and have to use heavy machinary (dup2) - std::string filename = runList.get("filename"); - if (numReruns > 1) - filename += "_run" + MueLu::toString(rerunCount); - filename += (lib == Xpetra::UseEpetra ? ".epetra" : ".tpetra"); - - savedOut = dup(STDOUT_FILENO); - openedOut = fopen(filename.c_str(), "w"); - dup2(fileno(openedOut), STDOUT_FILENO); - } - if (runList.isParameter("solver")) solveType = runList.get("solver"); - if (runList.isParameter("tol")) tol = runList.get("tol"); - } - - // Instead of checking each time for rank, create a rank 0 stream - RCP fancy = Teuchos::fancyOStream(Teuchos::rcpFromRef(std::cout)); - Teuchos::FancyOStream& out = *fancy; - out.setOutputToRootOnly(0); - - out << galeriStream.str(); - - // ========================================================================= - // Preconditioner construction - // ========================================================================= - comm->barrier(); - tm = rcp(new TimeMonitor(*TimeMonitor::getNewTimer("ScalingTest: 1.5 - MueLu read XML"))); - //============================================ SPLIT - RCP mueLuFactory = rcp(new ParameterListInterpreter(mueluList)); - //============================================ SPLIT - comm->barrier(); - tm = rcp(new TimeMonitor(*TimeMonitor::getNewTimer("ScalingTest: 2 - MueLu Setup"))); - //============================================ SPLIT - RCP H; - //============================================ SPLIT - for (int i = 0; i <= numRebuilds; i++) { - A->SetMaxEigenvalueEstimate(-one); - //============================================ SPLIT - H = mueLuFactory->CreateHierarchy(); - H->GetLevel(0)->Set("A", A); - H->GetLevel(0)->Set("Nullspace", nullspace); - if (!coordinates.is_null()) - H->GetLevel(0)->Set("Coordinates", coordinates); - mueLuFactory->SetupHierarchy(*H); - //============================================ SPLIT - } - - comm->barrier(); - tm = Teuchos::null; - - // ========================================================================= - // System solution (Ax = b) - // ========================================================================= - comm->barrier(); - tm = rcp(new TimeMonitor(*TimeMonitor::getNewTimer("ScalingTest: 3 - LHS and RHS initialization"))); - - RCP X = VectorFactory::Build(map); - RCP B = VectorFactory::Build(map); - - { - // we set seed for reproducibility - Utils::SetRandomSeed(*comm); - X->randomize(); - A->apply(*X, *B, Teuchos::NO_TRANS, one, zero); - - Teuchos::Array norms(1); - B->norm2(norms); - B->scale(one / norms[0]); - X->putScalar(zero); - } - tm = Teuchos::null; - - if (writeMatricesOPT > -2) { - tm = rcp(new TimeMonitor(*TimeMonitor::getNewTimer("ScalingTest: 3.5 - Matrix output"))); - H->Write(writeMatricesOPT, writeMatricesOPT); - tm = Teuchos::null; - } - - comm->barrier(); - if (solveType == "none") { - // Do not perform a solve - - } else if (solveType == "standalone") { - tm = rcp(new TimeMonitor(*TimeMonitor::getNewTimer("ScalingTest: 4 - Fixed Point Solve"))); - - H->IsPreconditioner(false); - H->Iterate(*B, *X, maxIts); - - } else if (solveType == "cg" || solveType == "gmres") { -#ifdef HAVE_MUELU_BELOS - tm = rcp(new TimeMonitor(*TimeMonitor::getNewTimer("ScalingTest: 5 - Belos Solve"))); - - // Operator and Multivector type that will be used with Belos - typedef MultiVector MV; - typedef Belos::OperatorT OP; - - H->IsPreconditioner(true); - - // Define Operator and Preconditioner - Teuchos::RCP belosOp = Teuchos::rcp(new Belos::XpetraOp(A)); // Turns a Xpetra::Matrix object into a Belos operator - Teuchos::RCP belosPrec = Teuchos::rcp(new Belos::MueLuOp(H)); // Turns a MueLu::Hierarchy object into a Belos operator - - // Construct a Belos LinearProblem object - RCP > belosProblem = rcp(new Belos::LinearProblem(belosOp, X, B)); - belosProblem->setRightPrec(belosPrec); - - bool set = belosProblem->setProblem(); - if (set == false) { - out << "\nERROR: Belos::LinearProblem failed to set up correctly!" << std::endl; - return EXIT_FAILURE; - } - - // Belos parameter list - Teuchos::ParameterList belosList; - belosList.set("Maximum Iterations", maxIts); // Maximum number of iterations allowed - belosList.set("Convergence Tolerance", tol); // Relative convergence tolerance requested - belosList.set("Verbosity", Belos::Errors + Belos::Warnings + Belos::StatusTestDetails); - belosList.set("Output Frequency", 1); - belosList.set("Output Style", Belos::Brief); - if (!scaleResidualHistory) - belosList.set("Implicit Residual Scaling", "None"); - - // Create an iterative solver manager - RCP > solver; - if (solveType == "cg") { - solver = rcp(new Belos::PseudoBlockCGSolMgr(belosProblem, rcp(&belosList, false))); - } else if (solveType == "gmres") { - solver = rcp(new Belos::BlockGmresSolMgr(belosProblem, rcp(&belosList, false))); - } - - // Perform solve - Belos::ReturnType ret = Belos::Unconverged; - try { - ret = solver->solve(); - - // Get the number of iterations for this solve. - out << "Number of iterations performed for this solve: " << solver->getNumIters() << std::endl; - - } catch (const std::exception& ex) { - out << std::endl - << "ERROR: Belos threw an error! The exception message is:" << std::endl; - std::cout << ex.what() << std::endl; - } - - catch (...) { - out << std::endl - << "ERROR: Belos threw an unknown error! " << std::endl; - } - - // Check convergence - if (ret != Belos::Converged) - out << std::endl - << "ERROR: Belos did not converge! " << std::endl; - else - out << std::endl - << "SUCCESS: Belos converged!" << std::endl; -#endif // ifdef HAVE_MUELU_BELOS - } else { - throw MueLu::Exceptions::RuntimeError("Unknown solver type: \"" + solveType + "\""); - } - comm->barrier(); - tm = Teuchos::null; - globalTimeMonitor = Teuchos::null; - - if (printTimings) - TimeMonitor::summarize(A->getRowMap()->getComm().ptr(), std::cout, false, true, false, Teuchos::Union, "", true); - - TimeMonitor::clearCounters(); - - if (isDriver) { - if (openedOut != NULL) { - dup2(savedOut, STDOUT_FILENO); - fclose(openedOut); - openedOut = NULL; - } - try { - runList = paramList.sublist("Run" + MueLu::toString(++runCount), mustAlreadyExist); - mueluList = runList.sublist("MueLu", mustAlreadyExist); - } catch (std::exception) { - stop = true; - } - } - - } while (stop == false); - } - - return 0; -} // main diff --git a/packages/muelu/doc/Tutorial/src/hands-on.py b/packages/muelu/doc/Tutorial/src/hands-on.py deleted file mode 100755 index c3f6acaa615b..000000000000 --- a/packages/muelu/doc/Tutorial/src/hands-on.py +++ /dev/null @@ -1,889 +0,0 @@ -#!/usr/bin/env python -import os -import sys -import math -import subprocess - -def getstatusoutput(cmd): - """Return (status, output) of executing cmd in a shell.""" - pipe = os.popen(cmd + ' 2>&1', 'r') - text = pipe.read() - sts = pipe.close() - if sts is None: sts = 0 - if text[-1:] == '\n': text = text[:-1] - return sts, text - - -def deleteDir(path): - """deletes the path entirely""" - cmd = "rm -rf "+path - result = getstatusoutput(cmd) - if(result[0]!=0): - raise RuntimeError(result[1]) - -def createDir(path): - """deletes the path entirely""" - cmd = "mkdir "+path - result = getstatusoutput(cmd) - if(result[0]!=0): - raise RuntimeError(result[1]) - -def runCommand(cmd): - """deletes the path entirely""" - result = getstatusoutput(cmd) - #if(result[0]!=0): - # raise RuntimeError(result[1]) - return result[1] - -def clearWindow(): - os.system('cls' if os.name == 'nt' else 'clear') - -def waitForKey(): - os.system("""bash -c 'read -s -n 1 -p "Press any key to continue..."'""") - print - -def is_number(s): - try: - float(s) - return True - except ValueError: - return False - -# some colors -class bcolors: - HEADER = '\033[95m' - OKBLUE = '\033[94m' - OKGREEN = '\033[92m' - OKDARKGREEN = '\033[32m' - WARNING = '\033[93m' - FAIL = '\033[91m' - ENDC = '\033[0m' - -def disable(self): - self.HEADER = '' - self.OKBLUE = '' - self.OKGREEN = '' - self.OKDARKGREEN = '' - self.WARNING = '' - self.FAIL = '' - self.ENDC = '' - - -class ProblemHandler(): - """Class for handling demonstration problems""" - - def __init__(self): - self.problem = "Laplace 2D" - self.solver = "cg" - self.executable = "MueLu_tutorial_laplace2d.exe" - self.meshx = 50 - self.meshy = 50 - self.mgsweeps = 1 - self.numprocs = 2 - self.xmlFileName = "xml/s2a.xml" - - self.proc1 = subprocess.Popen(['gnuplot','-p'], shell=True, stdin=subprocess.PIPE, ) - self.proc2 = subprocess.Popen(['gnuplot','-p'], shell=True, stdin=subprocess.PIPE, ) - self.proc3 = subprocess.Popen(['gnuplot','-p'], shell=True, stdin=subprocess.PIPE, ) - self.proc4 = subprocess.Popen(['gnuplot','-p'], shell=True, stdin=subprocess.PIPE, ) - self.proc5 = subprocess.Popen(['gnuplot','-p'], shell=True, stdin=subprocess.PIPE, ) - - self.isDirty = True # flag to store, whether problem has to be rerun or not - - self.editor = "gedit" # TODO replace me by local editor... - - def main(self): - self.printMainMenu() - - def runMenu(self,options,callbacks): - for i,option in enumerate(options): - print('%s. %s' % (i, option)) # display all options - choice = raw_input('your choice? ') - if is_number(str(choice)) and int(choice) < len(options): - callbacks[int(choice)]() # call correspondending function - else: - print "ups: choice = " + str(choice) + " len(option)=" + str(len(option)) - - - - def doLaplace2Dn(self): - self.problem = "Laplace 2D" - self.executable = "MueLu_tutorial_laplace2d.exe" - self.solver = "cg" - self.meshx = raw_input("Mesh: Elements in x direction = ") - self.meshy = raw_input("Mesh: Elements in y direction = ") - self.runLaplaceProblem() - - def doLaplace2D50(self): - self.problem = "Laplace 2D" - self.executable = "MueLu_tutorial_laplace2d.exe" - self.solver = "cg" - self.meshx = 50 - self.meshy = 50 - self.runLaplaceProblem() - - def doRecirc2Dn(self): - self.problem = "Recirc 2D" - self.executable = "MueLu_tutorial_recirc2d.exe" - self.solver = "gmres" - self.meshx = raw_input("Mesh: Elements in x direction = ") - self.meshy = raw_input("Mesh: Elements in y direction = ") - self.runLaplaceProblem() # we can use the same routine as for Laplace... - - def doRecirc2D50(self): - self.problem = "Recirc 2D" - self.executable = "MueLu_tutorial_recirc2d.exe" - self.solver = "gmres" - self.meshx = 50 - self.meshy = 50 - self.runLaplaceProblem() # we can use the same routine as for Laplace... - - def doChallenge1(self): - m = MueLu_XMLChallengeMode() - m.numProcs = 1 # number of processors - m.globalNumDofs = 16641 # number of DOFs - m.nDofsPerNode = 1 # DOFs per node - m.solver = "gmres" # AztecOO solver - m.tol = 1e-12 # solver tolerance - m.executable = "./MueLu_Challenge_XML.exe" # executable - m.problem = "condif2d" # string describing problem - m.main() - - def doChallenge2(self): - m = MueLu_XMLChallengeMode() - m.numProcs = 1 # number of processors - m.globalNumDofs = 7020 # number of DOFs - m.nDofsPerNode = 2 # DOFs per node - m.solver = "cg" # AztecOO solver - m.tol = 1e-12 # solver tolerance - m.executable = "./MueLu_Challenge_XML.exe" # executable - m.problem = "stru2d" # string describing problem - m.main() - - def runLaplaceProblem(self): - # check whether xml file exists - - while self.xmlFileName == "" or not os.path.isfile(self.xmlFileName) or not os.access(self.xmlFileName, os.R_OK): - print bcolors.FAIL+"Solver xml parameters: "+bcolors.ENDC + str(self.xmlFileName) + bcolors.FAIL + " invalid" + bcolors.ENDC - m = MueLu_XMLgenerator() - m.askForSolver() - self.xmlFileName = m.xmlFileName # store xml file - - while True: - self.printActionMenu() - - def printActionMenu(self): - #options = ['Rerun example', 'Show screen output', 'Change solver', 'Change processors', 'Exit'] - #callbacks = [self.runExample,self.printScreenOutput,self.changeSolver,self.changeProcs,self.doExitProgram] - options = ['Rerun simulation', 'Show screen output', 'Change solver', 'Open xml file', 'Change procs', 'Change MG sweeps','Plot solution','Plot residual norm over ' + self.solver + ' solver iterations','Postprocess aggregates', 'Exit'] - callbacks = [self.runExample,self.printScreenOutput,self.changeSolver,self.openXMLfile,self.changeProcs, self.changeMGsweeps,self.plotSolution,self.doPlotResidual, self.postprocessAggregates, self.doExitProgram] - while True: - clearWindow() - self.printSettings() - print "" - if self.isDirty == True: - print bcolors.FAIL+ "DO NOT FORGET TO RUN THE EXAMPLE (option 0)" + bcolors.ENDC - else: - print bcolors.OKDARKGREEN + "Results up to date!" + bcolors.ENDC - print "" - self.runMenu(options,callbacks) - - def runExample(self): - # runs example - print "PREPARE SIMULATON" - cmd = "rm *.vtp *.mat example*.txt output.log aggs*.txt nodes*.txt" - runCommand(cmd) - print "RUN EXAMPLE" - cmd = "mpirun -np " + str(self.numprocs) + " " + str(self.executable) + " --nx=" + str(self.meshx) + " --ny=" + str(self.meshy) + " --mgridSweeps=" + str(self.mgsweeps) + " --xml=" + str(self.xmlFileName) + " | tee output.log 2>&1" - print cmd - runCommand(cmd) - runCommand("echo 'Press q to return.' >> output.log") - print "POSTPROCESSING..." - runCommand("cat example*.txt > example.txt") - print "COMPLETE" - self.isDirty = False - waitForKey() - - def plotSolution(self): - #cmd = "gnuplot -persist << _TTT_" - #print cmd - #runCommand(cmd) - #cmd = "set dgrid3d " + str(self.meshy) + "," + str(self.meshx) + "\n set style data lines\n set nolabel \n set key off\n set autoscale\n splot " + "example.txt" + " using 3:4:5\n quit\n_TTT_" - #runCommand(cmd) - - #proc1 = subprocess.Popen(['gnuplot','-p'], shell=True, stdin=subprocess.PIPE, ) - self.proc1.stdin.write("set term x11 1\n") - self.proc1.stdin.write("set title \"Solution\"\n") - self.proc1.stdin.write("set dgrid3d " + str(self.meshy) + "," + str(self.meshx) + "\n") - self.proc1.stdin.write("set style data lines\n") - self.proc1.stdin.write("set nolabel\n") - self.proc1.stdin.write("set key off\n") - self.proc1.stdin.write("set autoscale\n") - self.proc1.stdin.write("splot \"example.txt\" using 3:4:5\n") - #self.proc1.stdin.write("quit\n") #close the gnuplot window - self.proc1.stdin.flush() - - #proc2 = subprocess.Popen(['gnuplot','-p'], shell=True, stdin=subprocess.PIPE, ) - self.proc2.stdin.write("set term x11 2\n") #wxt - if (self.mgsweeps==1): - self.proc2.stdin.write("set title \"Multigrid solution after " + str(self.mgsweeps) + " multigrid sweep\"\n") - else: - self.proc2.stdin.write("set title \"Multigrid solution after " + str(self.mgsweeps) + " multigrid sweeps\"\n") - self.proc2.stdin.write("set dgrid3d " + str(self.meshy) + "," + str(self.meshx) + "\n") - self.proc2.stdin.write("set style data lines\n") - self.proc2.stdin.write("set nolabel\n") - self.proc2.stdin.write("set key off\n") - self.proc2.stdin.write("set autoscale\n") - self.proc2.stdin.write("splot \"example.txt\" using 3:4:7\n") - #self.proc2.stdin.write("quit\n") #close the gnuplot window - self.proc2.stdin.flush() - - #proc3 = subprocess.Popen(['gnuplot','-p'], shell=True, stdin=subprocess.PIPE, ) - self.proc3.stdin.write("set term x11 3\n") - if (self.mgsweeps==1): - self.proc3.stdin.write("set title \"Error (Exact vs. " + str(self.mgsweeps) + " multigrid sweep)\"\n") - else: - self.proc3.stdin.write("set title \"Error (Exact vs. " + str(self.mgsweeps) + " multigrid sweeps)\"\n") - self.proc3.stdin.write("set dgrid3d " + str(self.meshy) + "," + str(self.meshx) + "\n") - self.proc3.stdin.write("set style data lines\n") - self.proc3.stdin.write("set palette model RGB defined ( 0 'black', 1 'white')\n") - self.proc3.stdin.write("set nolabel\n") - self.proc3.stdin.write("set key off\n") - self.proc3.stdin.write("set autoscale\n") - self.proc3.stdin.write("set hidden3d\n") - self.proc3.stdin.write("set style line 1 lt 4 lw .5\n") - self.proc3.stdin.write("set pm3d\n") - self.proc3.stdin.write("splot \"example.txt\" using 3:4:($ 5-$ 7) with lines palette\n") - #self.proc3.stdin.write("quit\n") #close the gnuplot window - self.proc3.stdin.flush() - - #proc4 = subprocess.Popen(['gnuplot','-p'], shell=True, stdin=subprocess.PIPE, ) - self.proc4.stdin.write("set term x11 4\n") - self.proc4.stdin.write("set title \"Distribution of processors\"\n") - self.proc4.stdin.write("set dgrid3d " + str(self.meshy) + "," + str(self.meshx) + "\n") - self.proc4.stdin.write("set style data lines\n") - self.proc4.stdin.write("set palette model RGB defined ( 0 'red', 1 'green', 2 'blue', 3 'yellow', 4 'pink')\n") - self.proc4.stdin.write("set nolabel\n") - self.proc4.stdin.write("set key off\n") - self.proc4.stdin.write("set autoscale\n") - self.proc4.stdin.write("set hidden3d\n") - self.proc4.stdin.write("set style line 1 lt 4 lw .5\n") - self.proc4.stdin.write("set pm3d\n") - self.proc4.stdin.write("splot \"example.txt\" using 3:4:1 with points palette\n") - #self.proc3.stdin.write("quit\n") #close the gnuplot window - self.proc3.stdin.flush() - - def postprocessAggregates(self): - # check whether "example.txt" is available - if os.path.isfile("example.txt") == False: - print bcolors.FAIL+"Simulation data not available. Run the simulation first." + bcolors.ENDC - waitForKey() - return - - if os.path.isfile("aggs_level0_proc0.out") == False: - print bcolors.FAIL+"No aggregation debug output found. Do not forget to turn on the AggregationExport factory in your xml file." + bcolors.ENDC - waitForKey() - return - - if os.path.isfile("MueLu_Agg2VTK.py"): - os.remove("MueLu_Agg2VTK.py") - o = open("MueLu_Agg2VTK.py","a") - for line in open("tmpl/MueLu_Agg2VTK.py_TMPL"): - line = line.replace("$NUMPROCS", str(self.numprocs)) - o.write(line) - o.close() - - print "POSTPROCESS AGGREGATION OUTPUT DATA" - cmd = "chmod 750 ./MueLu_Agg2VTK.py" - runCommand(cmd) - cmd = "./MueLu_Agg2VTK.py" - print runCommand(cmd) - - if os.path.isfile("aggs0.vtp") == False: - print bcolors.WARNING+"Seems that the postprocessing failed (vtp files could not be created)." + bcolors.ENDC - waitForKey() - return - - print bcolors.OKDARKGREEN+"Use paraview to visualize generated vtk files for aggregates." + bcolors.ENDC - waitForKey() - - def printScreenOutput(self): - clearWindow() - if not os.path.isfile("output.log") or not os.access("output.log", os.R_OK): - print bcolors.FAIL+"Screen output not available."+bcolors.ENDC - else: - print runCommand("less output.log") - waitForKey() - - def openXMLfile(self): - editor = subprocess.Popen([self.editor + " " + self.xmlFileName], shell=True, stdin=subprocess.PIPE, ) - - def printProblemSelectionMenu(self): - options = ['Laplace 2D (50x50)', 'Laplace 2D', 'Recirc 2D (50x50)', 'Recirc 2D', 'Challenge: Convection diffusion', 'Challenge: Elasticity problem', 'Exit'] - callbacks = [self.doLaplace2D50,self.doLaplace2Dn,self.doRecirc2D50,self.doRecirc2Dn,self.doChallenge1,self.doChallenge2, self.doExitProgram] - while True: - self.runMenu(options,callbacks) - - def changeSolver(self): - self.xmlFileName = raw_input("XML file name: ") - self.isDirty = True - while self.xmlFileName == "" or not os.path.isfile(self.xmlFileName) or not os.access(self.xmlFileName, os.R_OK): - print bcolors.FAIL+"Solver xml parameters: "+bcolors.ENDC + str(self.xmlFileName) + bcolors.FAIL + " invalid" + bcolors.ENDC - m = MueLu_XMLgenerator() - m.xmlFileName=self.xmlFileName - m.generateXMLfile() - m.askForSolver() - m.generateXMLfile() - self.xmlFileName = m.xmlFileName # store xml file - - def changeProcs(self): - self.numprocs = raw_input("Number of processors: ") - while not is_number(str(self.numprocs)): - self.numprocs = raw_input("Number of processors: ") - self.isDirty = True - - def changeMGsweeps(self): - self.mgsweeps = raw_input("Number of Multigrid sweeps: ") - while not is_number(str(self.mgsweeps)): - self.mgsweeps = raw_input("Number of Multigrid sweeps: ") - self.isDirty = True - - def doPlotResidual(self): - - # prepare residual output file - cmd = "grep iter: output.log > output.res" - runCommand(cmd) - - self.proc5.stdin.write("set term x11 1\n") - self.proc5.stdin.write("set title \"Residual norm over " + str(self.solver) + " iterations\"\n") - self.proc5.stdin.write("set style data lines\n") - self.proc5.stdin.write("set xlabel \"# iterations\"\n") - self.proc5.stdin.write("set ylabel \"Relative residual\"\n") - self.proc5.stdin.write("set autoscale\n") - self.proc5.stdin.write("set logscale y\n") - printcmd = "plot \"output.res\" using 5 w linespoints title \"" + str(self.xmlFileName) + "\"\n" - self.proc5.stdin.write(printcmd) - self.proc5.stdin.flush() - - def printMainMenu(self): - clearWindow() - self.printSettings() - print "" - print "" - while True: - self.printProblemSelectionMenu() - - def doExitProgram(self): - print "CLEAN UP temporary data" - cmd = "rm *.vtp *.mat example*.txt output.log aggs*.txt nodes*.txt" - runCommand(cmd) - print "QUIT" - sys.exit() - - def printSettings(self): - ## print out all made settings for xml file - print bcolors.HEADER+"*************************** PROBLEM ****************************"+bcolors.ENDC - print bcolors.WARNING+"Problem type: "+bcolors.ENDC + str(self.problem) - print bcolors.WARNING+"Mesh: "+bcolors.ENDC + str(self.meshx) + "x" + str(self.meshy) - print "" - if self.xmlFileName == "" or not os.path.isfile(self.xmlFileName) or not os.access(self.xmlFileName, os.R_OK): - print bcolors.FAIL+"Solver xml parameters: "+bcolors.ENDC + str(self.xmlFileName) + bcolors.FAIL + " invalid" + bcolors.ENDC - else: - print bcolors.WARNING+"Solver xml parameters: "+bcolors.ENDC + str(self.xmlFileName) - print bcolors.WARNING+"Number of processors: "+bcolors.ENDC + str(self.numprocs) - print bcolors.WARNING+"Number of Multigrid solving sweeps: "+bcolors.ENDC + str(self.mgsweeps) - print bcolors.HEADER+"*************************** PROBLEM ****************************"+bcolors.ENDC - -class MueLu_XMLChallengeMode(): - """ Menu and options for challenge mode """ - - def __init__(self): - - self.numProcs = 1 # number of processors - self.globalNumDofs = 7020 # number of DOFs - self.nDofsPerNode = 2 # DOFs per node - self.solver = "cg" # AztecOO solver - self.tol = 1e-12 # solver tolerance - self.executable = "./MueLu_Challenge_XML.exe" # executable - self.problem = "stru2d" # string describing problem - self.xmlReferenceFileName = "" - self.xmlFileName = "" - self.isDirty = True # dirty flag - self.editor = "gedit" ### fix me - self.has_coords = False - - self.proc1 = subprocess.Popen(['gnuplot','-p'], shell=True, stdin=subprocess.PIPE, ) - - def main(self): - - # check if tar.gz file with data is in subfolder challenges: - if os.path.isfile("challenges/" + self.problem + ".tar.gz") == False: - cmd = "rm -Rf challenges" - runCommand(cmd) - print "Download additional files" - print bcolors.WARNING+"https://trilinos.org/wordpress/wp-content/uploads/2015/07/MueLu_tutorial_challenges.tar.gz"+bcolors.ENDC - cmd = "wget --no-check-certificate https://trilinos.org/wordpress/wp-content/uploads/2015/07/MueLu_tutorial_challenges.tar.gz" - runCommand(cmd) - print "Extract files..." - cmd = "tar xvf MueLu_tutorial_challenges.tar.gz" - runCommand(cmd) - print bcolors.OKDARKGREEN + "Success!" + bcolors.ENDC - - # generate results for reference xml files - self.xmlReferenceFileName = "challenges/" + self.problem + "_reference.xml" - - # copy file with reference parameters for this example - cmd = "cp challenges/" + self.problem + "_reference.xml " + self.problem + "_parameters.xml" - runCommand(cmd) - - self.xmlFileName = self.problem + "_parameters.xml" # xml parameter file - - if os.path.isfile("challenges/" + self.problem + "_coords.txt"): - self.has_coords = True - - self.doRunReference() - - while True: - self.printMainMenu() - - def runMenu(self,options,callbacks): - for i,option in enumerate(options): - print('%s. %s' % (i, option)) # display all options - choice = raw_input('your choice? ') - if is_number(str(choice)) and int(choice) < len(options): - callbacks[int(choice)]() # call correspondending function - - # print main menu for challenge mode - def printMainMenu(self): - clearWindow() - self.printSettings() - print "" - if self.isDirty == True: - print bcolors.FAIL+ "DO NOT FORGET TO RUN THE EXAMPLE (option 0)" + bcolors.ENDC - else: - print bcolors.OKDARKGREEN + "Results up to date!" + bcolors.ENDC - print "" - self.printResults() - print "" - - options = ['Run example','Show screen output', 'Change XML parameter file', 'Open xml file', 'Change procs', 'Change linear solver', 'Plot residual', 'Exit'] - callbacks = [self.doRunExample,self.printScreenOutput,self.changeSolver,self.openXMLfile,self.changeProcs, self.doSolverMenu,self.doPlotResidual, self.doExitProgram] - - self.runMenu(options,callbacks) - - def printSettings(self): - ## print out all made settings for xml file - print bcolors.HEADER+"*************************** PROBLEM ****************************"+bcolors.ENDC - print bcolors.WARNING+"Problem type: "+bcolors.ENDC + str(self.problem) - print bcolors.WARNING+"Problem size: "+bcolors.ENDC + str(self.globalNumDofs) - print "" - if self.xmlFileName == "" or not os.path.isfile(self.xmlFileName) or not os.access(self.xmlFileName, os.R_OK): - print bcolors.FAIL+"Solver xml parameters: "+bcolors.ENDC + str(self.xmlFileName) + bcolors.FAIL + " invalid" + bcolors.ENDC - else: - print bcolors.WARNING+"Solver xml parameters: "+bcolors.ENDC + str(self.xmlFileName) - print bcolors.WARNING+"Number of processors: "+bcolors.ENDC + str(self.numProcs) - print bcolors.WARNING+"Solver (Tolerance): "+bcolors.ENDC + str(self.solver) + " (" + str(self.tol) + ")" - print bcolors.HEADER+"*************************** PROBLEM ****************************"+bcolors.ENDC - - def printResults(self): - cmd = "grep 'total iterations:' output.log" - iter = runCommand(cmd) - cmd = "grep 'Solution time:' output.log" - time = runCommand(cmd) - cmd = "grep 'total iterations:' reference.log" - refiter = runCommand(cmd) - cmd = "grep 'Solution time:' reference.log" - reftime = runCommand(cmd) - print bcolors.HEADER+"*************************** RESULTS ****************************"+bcolors.ENDC - print "Reference settings:" - print str(refiter) - print str(reftime) - print "Your settings:" - print str(iter) - print str(time) - print bcolors.HEADER+"*************************** RESULTS ****************************"+bcolors.ENDC - - def doRunReference(self): - print "Please wait..." - # runs example - cmd = "rm -f *.vtp *.mat example*.txt output.log output.res reference.log reference.res aggs*.txt nodes*.txt" - runCommand(cmd) - cmd = "mpirun -np " + str(self.numProcs) + " " + str(self.executable) + " --globalNumDofs=" + str(self.globalNumDofs) + " --nDofsPerNode=" + str(self.nDofsPerNode) + " --solver=" + str(self.solver) + " --tol=" + str(self.tol) + " --xml=" + self.xmlReferenceFileName + " --problem=challenges/" + str(self.problem) + " --coordinates=challenges/" + str(self.problem) + "_coords.txt" + " | tee reference.log 2>&1" - runCommand(cmd) - self.isDirty = False - - - def doRunExample(self): - # runs example - print "PREPARE SIMULATON" - cmd = "rm -f *.vtp *.mat example*.txt output.log output.res aggs*.txt nodes*.txt" - runCommand(cmd) - print "RUN EXAMPLE" - cmd = "mpirun -np " + str(self.numProcs) + " " + str(self.executable) + " --globalNumDofs=" + str(self.globalNumDofs) + " --nDofsPerNode=" + str(self.nDofsPerNode) + " --solver=" + str(self.solver) + " --tol=" + str(self.tol) + " --xml=" + self.xmlFileName + " --problem=challenges/" + str(self.problem) + " --coordinates=challenges/" + str(self.problem) + "_coords.txt" + " | tee output.log 2>&1" - print cmd - runCommand(cmd) - runCommand("echo 'Press q to return.' >> output.log") - print "POSTPROCESSING..." - runCommand("cat example*.txt > example.txt") - print "COMPLETE" - self.isDirty = False - waitForKey() - - def printScreenOutput(self): - clearWindow() - if not os.path.isfile("output.log") or not os.access("output.log", os.R_OK): - print bcolors.FAIL+"Screen output not available."+bcolors.ENDC - else: - print runCommand("less output.log") - waitForKey() - - def changeSolver(self): - self.xmlFileName = raw_input("XML file name: ") - self.isDirty = True - while self.xmlFileName == "" or not os.path.isfile(self.xmlFileName) or not os.access(self.xmlFileName, os.R_OK): - print bcolors.FAIL+"Solver xml parameters: "+bcolors.ENDC + str(self.xmlFileName) + bcolors.FAIL + " invalid" + bcolors.ENDC - m = MueLu_XMLgenerator() - m.xmlFileName=self.xmlFileName - m.generateXMLfile() - m.askForSolver() - m.generateXMLfile() - self.xmlFileName = m.xmlFileName # store xml file - - def openXMLfile(self): - editor = subprocess.Popen([self.editor + " " + self.xmlFileName], shell=True, stdin=subprocess.PIPE, ) - - def changeProcs(self): - self.numProcs = raw_input("Number of processors: ") - while not is_number(str(self.numProcs)): - self.numProcs = raw_input("Number of processors: ") - self.isDirty = True - self.doRunReference() - - def doCGIteration(self): - self.solver = "cg" - self.isDirty = True - self.doRunReference() - def doGMRESIteration(self): - self.solver = "gmres" - self.isDirty = True - self.doRunReference() - - def doSolverMenu(self): - options = ['CG method', 'GMRES method'] - callbacks = [self.doCGIteration,self.doGMRESIteration] - #while self.exitLoop == False: - self.runMenu(options,callbacks) - #self.exitLoop=True #False - - def doPlotResidual(self): - - # prepare residual output file - cmd = "grep iter: output.log > output.res" - runCommand(cmd) - - # prepare reference data - cmd = "grep iter: reference.log > reference.res" - runCommand(cmd) - self.proc1.stdin.write("set term x11 1\n") - self.proc1.stdin.write("set title \"Residual norm over " + str(self.solver) + " iterations\"\n") - self.proc1.stdin.write("set style data lines\n") - self.proc1.stdin.write("set xlabel \"# iterations\"\n") - self.proc1.stdin.write("set ylabel \"Relative residual\"\n") - self.proc1.stdin.write("set autoscale\n") - self.proc1.stdin.write("set logscale y\n") - printcmd = "plot \"reference.res\" using 5 w linespoints title \"REFERENCE\", \"output.res\" using 5 w linespoints title \"" + str(self.xmlFileName) + "\"\n" - self.proc1.stdin.write(printcmd) - - self.proc1.stdin.flush() - - def doExitProgram(self): - runCommand("rm output.log reference.log output.res reference.res") - sys.exit() # terminate full program - - - # gnuplot commands - # set logscale y - # plot "temp.log" using 5 w linespoints - -class MueLu_XMLgenerator(): - """Simple generator for MueLu xml files.""" - - def __init__(self): - # common MG settings - self.xmlFileName = "" # output file name for xml data - self.maxMultLevels = 5 # maximum number of levels - self.maxCoarseSize = 1000 # max. coarse size - - # aggregate settings - self.dropTolerance = 0.0 - self.minAggSize = 4 - self.maxAggSize = 9 - self.maxNeighCount = 0 - - # smoother settings - self.levelSmoother = "Jacobi" - self.levelSmootherSweeps = 1 - self.levelSmootherDamp = 0.7 - self.coarseSolver = "Direct" - - # transfer operators - self.transferOps = "PA-AMG" - self.transferOpDamp = 1.33 - - # restriction operators - self.restrictionOp = "TransPFactory" - - # rebalancing - self.doRebalancing = False - self.minRowsPerProc = 800 - self.nnzImbalance = 1.1 - self.rebStartLevel = 1 - - self.isDirty = True # flag to store, whether changes have been saved or not - self.exitLoop = False # set to true to exit current loop - - print bcolors.FAIL+'===================================================================================='+bcolors.ENDC - print '===================================================================================='+bcolors.ENDC - - - - - def main(self): - #self.view, self.exit_view = self.setup_view() - #self.loop = urwid.MainLoop(self.view, self.palette, - # unhandled_input=self.unhandled_input) - #self.loop.run() - while True: - self.printMainMenu() - - def askForSolver(self): - - self.exitLoop = False - while self.exitLoop == False: - self.printMainMenu() - - def doFileName(self): - self.xmlFileName = raw_input("XML file name: ") - self.isDirty = True - - def doRelaxationMaxLevels(self): - self.maxMultLevels = raw_input("Max. multigrid levels: ") - self.isDirty = True - - def doRelaxationMaxCoarseSize(self): - self.maxCoarseSize = raw_input("Max. coarse size: ") - self.isDirty = True - - def doRelaxationJacobi(self): - self.levelSmoother = "Jacobi" - self.levelSmootherSweeps = raw_input("Smoother sweeps: ") - self.levelSmootherDamp = raw_input("Smoother damping: ") - self.isDirty = True - - def doRelaxationGS(self): - self.levelSmoother = "Gauss-Seidel" - self.levelSmootherSweeps = raw_input("Smoother sweeps: ") - self.levelSmootherDamp = raw_input("Smoother damping: ") - self.isDirty = True - - def doRelaxationSymGS(self): - self.levelSmoother = "Sym.Gauss-Seidel" - self.levelSmootherSweeps = raw_input("Smoother sweeps: ") - self.levelSmootherDamp = raw_input("Smoother damping: ") - self.isDirty = True - - def doDropTolerance(self): - self.dropTolerance = raw_input("Drop tolerance for matrix graph (default = 0.0): ") - self.isDirty = True - def doMinAggSize(self): - self.minAggSize = raw_input("Minimum number of nodes per aggregate: ") - self.isDirty - def doMaxAggSize(self): - self.maxAggSize = raw_input("Maximum number of nodes per aggregate: ") - self.isDirty - def doMaxNeigh(self): - self.maxNeighCount = raw_input("Maximum number of already aggregated neighbor nodes (default = 0): ") - self.isDirty - - # Transfer operators - def doPaAMG(self): - self.transferOps = "PA-AMG" - self.transferOpDamp = 0.0 - if self.restrictionOp == "GenericRFactory": - self.restrictionOp = "TransPFactory" - print bcolors.WARNING + "GenericRFactory cannot be used with non-smoothed PA-AMG prolongation operators. We change it back to TransPFactory."+bcolors.ENDC - print "" - print "Press any key to proceed" - waitForKey() - - self.isDirty = True - def doSaAMG(self): - self.transferOps = "SA-AMG" - self.transferOpDamp = raw_input("Transfer operator damping: ") - self.isDirty = True - def doPgAMG(self): - self.transferOps = "PG-AMG" - self.transferOpDamp = 0.0 - self.isDirty = True - - # Restriction operators - def doSymR(self): - self.restrictionOp = "TransPFactory" - self.isDirty = True - def doNonsymR(self): - self.restrictionOp = "GenericRFactory" - if self.transferOps == "PA-AMG": - self.restrictionOp = "TransPFactory" - print bcolors.WARNING+"GenericRFactory cannot be used with non-smoothed PA-AMG prolongation operators. We change it back to TransPFactory." - print "To use GenericRFactory you have to select either SaPFactory or PgPFactory for prolongation."+bcolors.ENDC - print "" - print "Press any key to proceed" - waitForKey() - self.isDirty = True - - # Rebalancing - def doRebalancingOption(self): - self.doRebalancing = True - self.minRowsPerProc = raw_input("Minimum number of DOFs per processor: ") - self.nnzImbalance = raw_input("Max. nonzero imbalance (default 1.1): ") - self.rebStartLevel = raw_input("Start rebalancing on level (default 1): ") - self.isDirty = True - - def doNoRebalancingOption(self): - self.doRebalancing = False - self.isDirty = True - - def runMenu(self,options,callbacks): - for i,option in enumerate(options): - print('%s. %s' % (i, option)) # display all options - choice = raw_input('your choice? ') - if is_number(str(choice)) and int(choice) < len(options): - callbacks[int(choice)]() # call correspondending function - - def doCommonMenu(self): - options = ['Max. multigrid levels', 'Max. coarse size', 'Back'] - callbacks = [self.doRelaxationMaxLevels,self.doRelaxationMaxCoarseSize, self.askForSolver] - while self.exitLoop == False: - self.runMenu(options,callbacks) - self.exitLoop=True #False - - def doAggregatesMenu(self): - options = ['Drop tolerance', 'Min. aggregate size', 'Max. aggregate size', 'Max. Neighbor Count', 'Back'] - callbacks = [self.doDropTolerance,self.doMinAggSize, self.doMaxAggSize, self.doMaxNeigh, self.askForSolver] - while self.exitLoop == False: - self.runMenu(options,callbacks) - self.exitLoop=True #False - - def doSmootherMenu(self): - options = ['Jacobi', 'Gauss-Seidel', 'Sym. Gauss-Seidel', 'Back'] - callbacks = [self.doRelaxationJacobi,self.doRelaxationGS, self.doRelaxationSymGS, self.askForSolver] - self.runMenu(options,callbacks) - - def doTransferMenu(self): - options = ['Non-smoothed transfer (PA-AMG)', 'Smoothed transfer (SA-AMG)', 'Smoothed transfer (PG-AMG)', 'Back'] - callbacks = [self.doPaAMG,self.doSaAMG, self.doPgAMG, self.askForSolver] - self.runMenu(options,callbacks) - - def doRestrictorMenu(self): - options = ['Symmetric', 'Non-symmetric', 'Back'] - callbacks = [self.doSymR,self.doNonsymR, self.askForSolver] - self.runMenu(options,callbacks) - - def doRebalancingMenu(self): - options = ['No rebalancing', 'Activate rebalancing', 'Back'] - callbacks = [self.doNoRebalancingOption,self.doRebalancingOption, self.askForSolver] - self.runMenu(options,callbacks) - - def doExitProgram(self): - #sys.exit() - print "doEXIT" - self.exitLoop = True - - def printMainMenu(self): - clearWindow() - self.printSettings() - print "" - print "" - - #options = ['Set Output file name','Common Multigrid settings', 'Level smoother settings', 'Transfer operators', 'Restriction operators', 'Save XML file', 'Exit'] - #callbacks = [self.doFileName, self.doCommonMenu, self.doSmootherMenu, self.doTransferMenu, self.doRestrictorMenu, self.generateXMLfile, self.doExitProgram] - options = ['Common Multigrid settings', 'Aggregate settings', 'Level smoother settings', 'Transfer operators', 'Restriction operators', 'Rebalancing options', 'Save XML file', 'Back'] - callbacks = [self.doCommonMenu, self.doAggregatesMenu, self.doSmootherMenu, self.doTransferMenu, self.doRestrictorMenu, self.doRebalancingMenu, self.generateXMLfile, self.doExitProgram] - - self.runMenu(options,callbacks) - - def printSettings(self): - ## print out all made settings for xml file - print bcolors.HEADER+"*************************** SETTINGS ****************************"+bcolors.ENDC - print bcolors.WARNING+"XML file name: "+bcolors.ENDC + str(self.xmlFileName) - print "" - print bcolors.WARNING+"Max. MultiGrid levels: "+bcolors.ENDC + str(self.maxMultLevels) - print bcolors.WARNING+"Max. CoarseSize: "+bcolors.ENDC + str(self.maxCoarseSize) - print "" - print bcolors.WARNING+"Level smoother: "+bcolors.ENDC + str(self.levelSmoother) - print bcolors.WARNING+"Level smoothing sweeps: "+bcolors.ENDC + str(self.levelSmootherSweeps) - print bcolors.WARNING+"Level damping parameter: "+bcolors.ENDC + str(self.levelSmootherDamp) - print "" - print bcolors.WARNING+"Coarse solver: "+bcolors.ENDC + str(self.coarseSolver) - print "" - print bcolors.WARNING+"Graph drop tolerance: "+bcolors.ENDC + str(self.dropTolerance) - print bcolors.WARNING+"Aggregate size (min/max):"+bcolors.ENDC + str(self.minAggSize) + "/" + str(self.maxAggSize) - print bcolors.WARNING+"Max. neighbor count: "+bcolors.ENDC + str(self.maxNeighCount) - print "" - print bcolors.WARNING+"Transfer operators: "+bcolors.ENDC + str(self.transferOps) - print bcolors.WARNING+"Transfer smoothing par.:"+bcolors.ENDC + str(self.transferOpDamp) - print "" - print bcolors.WARNING+"Restriction operator: "+bcolors.ENDC + str(self.restrictionOp) - print "" - if self.doRebalancing == False: - print bcolors.WARNING+"NO Rebalancing"+bcolors.ENDC - else: - print bcolors.WARNING+"Rebalancing active:"+ bcolors.ENDC - print bcolors.WARNING+"Minimum DOFs per proc: "+ bcolors.ENDC + str(self.minRowsPerProc) - print bcolors.WARNING+"Nonzero imbalance: "+ bcolors.ENDC + str(self.nnzImbalance) - print bcolors.WARNING+"Start level for rebal.: "+ bcolors.ENDC + str(self.rebStartLevel) - print bcolors.HEADER+"*************************** SETTINGS ****************************"+bcolors.ENDC - - print "" - if self.isDirty == True: - print bcolors.FAIL+ "CHANGES HAVE NOT BEEN SAVED!" + bcolors.ENDC - else: - print bcolors.OKDARKGREEN + "CHANGES HAVE BEEN SAVED!" + bcolors.ENDC - - def generateXMLfile(self): - # generate HEAD file for pre_exodus - if os.path.isfile(self.xmlFileName): - os.remove(self.xmlFileName) - o = open(self.xmlFileName,"a") - for line in open("tmpl/muelu.xml_TMPL"): - #for line in open(headfile_tmpl): - line = line.replace("$SMOO_SWEEPS", str(self.levelSmootherSweeps)) - line = line.replace("$SMOO_DAMP" , str(self.levelSmootherDamp)) - line = line.replace("$SMOOTHER" , str(self.levelSmoother)) - line = line.replace("$MAXLEVELS" , str(self.maxMultLevels)) - line = line.replace("$MAXCOARSESIZE", str(self.maxCoarseSize)) - line = line.replace("$RESTRICTOR", str(self.restrictionOp)) - line = line.replace("$PROLONGATOR", str(self.transferOps)) - line = line.replace("$SADAMPING" , str(self.transferOpDamp)) - line = line.replace("$DROPTOL" , str(self.dropTolerance)) - line = line.replace("$MAXNEIGH" , str(self.maxNeighCount)) - line = line.replace("$MINAGGS" , str(self.minAggSize)) - line = line.replace("$MAXAGGS" , str(self.maxAggSize)) - - if self.doRebalancing == False: - line = line.replace("$MANAGER_PROLONGATOR", str(self.transferOps)) - line = line.replace("$MANAGER_RESTRICTOR", "myRestrictorFact") - line = line.replace("$MANAGER_RAP", "myRAPFact") - line = line.replace("$MANAGER_NULLSPACE", "PA-AMG") - else: - line = line.replace("$MANAGER_PROLONGATOR", "myRebalanceProlongatorFact") - line = line.replace("$MANAGER_RESTRICTOR", "myRebalanceRestrictionFact") - line = line.replace("$MANAGER_RAP", "myRebalanceAFact") - line = line.replace("$MANAGER_NULLSPACE", "myRebalanceProlongatorFact") - o.write(line) - o.close() - self.isDirty = False - -if __name__ == '__main__': - #MueLu_XMLgenerator().main() - ProblemHandler().main() diff --git a/packages/muelu/doc/Tutorial/src/laplace2d.cpp b/packages/muelu/doc/Tutorial/src/laplace2d.cpp deleted file mode 100644 index ae82cf59c02b..000000000000 --- a/packages/muelu/doc/Tutorial/src/laplace2d.cpp +++ /dev/null @@ -1,423 +0,0 @@ -// @HEADER -// ***************************************************************************** -// MueLu: A package for multigrid based preconditioning -// -// Copyright 2012 NTESS and the MueLu contributors. -// SPDX-License-Identifier: BSD-3-Clause -// ***************************************************************************** -// @HEADER - -#include - -#include - -#include - -#include -#include -#include -#include - -// EpetraExt -#include -#include -#include -#include -#include -#include -#include -#include -#include - -// Galeri -#include -#include -#include - -#include -#include -#include -#include // TODO: move into MueLu.hpp - -#include - -#include - -#include -#include -#include -#include - -#if defined(HAVE_MUELU_EPETRA) -#include - -// prescribe types -// run plain Epetra -typedef double Scalar; -typedef int LocalOrdinal; -typedef int GlobalOrdinal; -typedef Xpetra::EpetraNode Node; -#endif - -int main(int argc, char* argv[]) { -#if defined(HAVE_MUELU_EPETRA) -#include - - using Teuchos::RCP; // reference count pointers - using Teuchos::rcp; - using Teuchos::TimeMonitor; - - // TUTORIALSPLIT =========================================================== - Teuchos::GlobalMPISession mpiSession(&argc, &argv, NULL); - - bool success = false; - try { - RCP > comm = Teuchos::DefaultComm::getComm(); - int MyPID = comm->getRank(); - int NumProc = comm->getSize(); - - const Teuchos::RCP epComm = Teuchos::rcp_const_cast(Xpetra::toEpetra(comm)); - - // TUTORIALSPLIT =========================================================== - // ================================ - // Convenient definitions - // ================================ - // SC zero = Teuchos::ScalarTraits::zero(); - SC one = Teuchos::ScalarTraits::one(); - - // Instead of checking each time for rank, create a rank 0 stream - RCP fancy = Teuchos::fancyOStream(Teuchos::rcpFromRef(std::cout)); - Teuchos::FancyOStream& fancyout = *fancy; - fancyout.setOutputToRootOnly(0); - - // ================================ - // Parameters initialization - // ================================ - Teuchos::CommandLineProcessor clp(false); - GO nx = 100; - clp.setOption("nx", &nx, "mesh size in x direction"); - GO ny = 100; - clp.setOption("ny", &ny, "mesh size in y direction"); - std::string xmlFileName = "xml/s2a.xml"; - clp.setOption("xml", &xmlFileName, "read parameters from a file"); - int mgridSweeps = 1; - clp.setOption("mgridSweeps", &mgridSweeps, "number of multigrid sweeps within Multigrid solver."); - std::string printTimings = "no"; - clp.setOption("timings", &printTimings, "print timings to screen [yes/no]"); - double tol = 1e-12; - clp.setOption("tol", &tol, "solver convergence tolerance"); - int importOldData = 0; - clp.setOption("importOldData", &importOldData, "import map and matrix from previous run (highly experimental)."); - - switch (clp.parse(argc, argv)) { - case Teuchos::CommandLineProcessor::PARSE_HELP_PRINTED: return EXIT_SUCCESS; break; - case Teuchos::CommandLineProcessor::PARSE_ERROR: - case Teuchos::CommandLineProcessor::PARSE_UNRECOGNIZED_OPTION: return EXIT_FAILURE; break; - case Teuchos::CommandLineProcessor::PARSE_SUCCESSFUL: break; - } - - // ================================ - // Problem construction - // ================================ - RCP globalTimeMonitor = rcp(new TimeMonitor(*TimeMonitor::getNewTimer("ScalingTest: S - Global Time"))), tm; - - comm->barrier(); - tm = rcp(new TimeMonitor(*TimeMonitor::getNewTimer("ScalingTest: 1 - Matrix Build"))); - - Teuchos::ParameterList GaleriList; - GaleriList.set("nx", nx); - GaleriList.set("ny", ny); - GaleriList.set("mx", epComm->NumProc()); - GaleriList.set("my", 1); - GaleriList.set("lx", 1.0); // length of x-axis - GaleriList.set("ly", 1.0); // length of y-axis - - Teuchos::RCP epMap = Teuchos::null; - Teuchos::RCP epCoord = Teuchos::null; - Teuchos::RCP epA = Teuchos::null; - - if (importOldData == 0) { - // TUTORIALSPLIT =========================================================== - // create map - epMap = Teuchos::rcp(Galeri::CreateMap("Cartesian2D", *epComm, GaleriList)); - - // create coordinates - epCoord = Teuchos::rcp(Galeri::CreateCartesianCoordinates("2D", epMap.get(), GaleriList)); - - // create matrix - epA = Teuchos::rcp(Galeri::CreateCrsMatrix("Laplace2D", epMap.get(), GaleriList)); - - double hx = 1. / (nx - 1); - double hy = 1. / (ny - 1); - epA->Scale(1. / (hx * hy)); - // TUTORIALSPLIT =========================================================== - } else { - std::cout << "Import old data" << std::endl; - Epetra_Map* myEpMap; - EpetraExt::MatrixMarketFileToMap("ARowMap.mat", *(Xpetra::toEpetra(comm)), myEpMap); - epMap = Teuchos::rcp(myEpMap); - comm->barrier(); - Epetra_MultiVector* myEpVector; - EpetraExt::MatrixMarketFileToMultiVector("ACoordVector.mat", *epMap, myEpVector); - epCoord = Teuchos::rcp(myEpVector); - comm->barrier(); - Epetra_CrsMatrix* myEpMatrix; - EpetraExt::MatrixMarketFileToCrsMatrix("A.mat", *(Xpetra::toEpetra(comm)), myEpMatrix); - epA = Teuchos::rcp(myEpMatrix); - comm->barrier(); - } - - // TUTORIALSPLIT =========================================================== - // Epetra -> Xpetra - Teuchos::RCP exA = Teuchos::rcp(new Xpetra::EpetraCrsMatrixT(epA)); - Teuchos::RCP exAWrap = Teuchos::rcp(new CrsMatrixWrap(exA)); - - RCP A = Teuchos::rcp_dynamic_cast(exAWrap); - A->SetFixedBlockSize(1); - - // TUTORIALSPLIT =========================================================== - // set rhs and solution vector - RCP B = Teuchos::rcp(new Epetra_Vector(*epMap)); - RCP X = Teuchos::rcp(new Epetra_Vector(*epMap)); - B->PutScalar(1.0); - X->PutScalar(0.0); - - // Epetra -> Xpetra - RCP xB = Teuchos::rcp(new Xpetra::EpetraVectorT(B)); - RCP xX = Teuchos::rcp(new Xpetra::EpetraVectorT(X)); - RCP coords = Teuchos::rcp(new Xpetra::EpetraMultiVectorT(epCoord)); - - xX->setSeed(100); - xX->randomize(); - - // TUTORIALSPLIT =========================================================== - // build null space vector - RCP map = A->getRowMap(); - RCP nullspace = MultiVectorFactory::Build(map, 1); - nullspace->putScalar(one); - - // TUTORIALSPLIT =========================================================== - comm->barrier(); - tm = Teuchos::null; - - fancyout << "========================================================\nGaleri complete.\n========================================================" << std::endl; - - // ================================ - // Preconditioner construction - // ================================ - comm->barrier(); - tm = rcp(new TimeMonitor(*TimeMonitor::getNewTimer("ScalingTest: 1.5 - MueLu read XML"))); - // TUTORIALSPLIT =========================================================== - ParameterListInterpreter mueLuFactory(xmlFileName, *comm); - // TUTORIALSPLIT =========================================================== - comm->barrier(); - tm = Teuchos::null; - - tm = rcp(new TimeMonitor(*TimeMonitor::getNewTimer("ScalingTest: 2 - MueLu Setup"))); - - // TUTORIALSPLIT =========================================================== - RCP H = mueLuFactory.CreateHierarchy(); - - H->GetLevel(0)->Set("A", A); - H->GetLevel(0)->Set("Nullspace", nullspace); - H->GetLevel(0)->Set("Coordinates", coords); - - mueLuFactory.SetupHierarchy(*H); - - // TUTORIALSPLIT =========================================================== - comm->barrier(); - tm = Teuchos::null; - - // ================================ - // System solution (Ax = b) - // ================================ - - // - // generate exact solution using a direct solver - // - RCP exactLsgVec = rcp(new Epetra_Vector(X->Map())); - { - fancyout << "========================================================\nCalculate exact solution." << std::endl; - tm = rcp(new TimeMonitor(*TimeMonitor::getNewTimer("ScalingTest: 3 - direct solve"))); - exactLsgVec->PutScalar(0.0); - exactLsgVec->Update(1.0, *X, 1.0); - Epetra_LinearProblem epetraProblem(epA.get(), exactLsgVec.get(), B.get()); - - Amesos amesosFactory; - RCP rcp_directSolver = Teuchos::rcp(amesosFactory.Create("Amesos_Klu", epetraProblem)); - rcp_directSolver->SymbolicFactorization(); - rcp_directSolver->NumericFactorization(); - rcp_directSolver->Solve(); - - comm->barrier(); - tm = Teuchos::null; - } - - // - // Solve Ax = b using AMG as a preconditioner in AztecOO - // - // TUTORIALSPLIT =========================================================== - RCP precLsgVec = rcp(new Epetra_Vector(X->Map())); - // TUTORIALSPLIT =========================================================== - { - fancyout << "========================================================\nUse multigrid hierarchy as preconditioner within CG." << std::endl; - tm = rcp(new TimeMonitor(*TimeMonitor::getNewTimer("ScalingTest: 4 - AMG as preconditioner"))); - - // TUTORIALSPLIT =========================================================== - precLsgVec->PutScalar(0.0); - precLsgVec->Update(1.0, *X, 1.0); - Epetra_LinearProblem epetraProblem(epA.get(), precLsgVec.get(), B.get()); - - AztecOO aztecSolver(epetraProblem); - aztecSolver.SetAztecOption(AZ_solver, AZ_cg); - - MueLu::EpetraOperator aztecPrec(H); - aztecSolver.SetPrecOperator(&aztecPrec); - - int maxIts = 50; - - aztecSolver.Iterate(maxIts, tol); - // TUTORIALSPLIT =========================================================== - comm->barrier(); - tm = Teuchos::null; - } - - ////////////////// - // TUTORIALSPLIT =========================================================== - // use multigrid hierarchy as solver - RCP mgridLsgVec = VectorFactory::Build(map); - mgridLsgVec->putScalar(0.0); - { - fancyout << "========================================================\nUse multigrid hierarchy as solver." << std::endl; - tm = rcp(new TimeMonitor(*TimeMonitor::getNewTimer("ScalingTest: 5 - Multigrid Solve"))); - mgridLsgVec->update(1.0, *xX, 1.0); - H->IsPreconditioner(false); - H->Iterate(*xB, *mgridLsgVec, mgridSweeps); - comm->barrier(); - tm = Teuchos::null; - } - // TUTORIALSPLIT =========================================================== - ////////////////// - - fancyout << "========================================================\nExport results.\n========================================================" << std::endl; - std::ofstream myfile; - std::stringstream ss; - ss << "example" << MyPID << ".txt"; - myfile.open(ss.str().c_str()); - - ////////////////// - - // loop over all procs - for (int iproc = 0; iproc < NumProc; iproc++) { - if (MyPID == iproc) { - int NumVectors1 = 2; - int NumMyElements1 = epCoord->Map().NumMyElements(); - int MaxElementSize1 = epCoord->Map().MaxElementSize(); - int* FirstPointInElementList1 = NULL; - if (MaxElementSize1 != 1) FirstPointInElementList1 = epCoord->Map().FirstPointInElementList(); - double** A_Pointers = epCoord->Pointers(); - - if (MyPID == 0) { - myfile.width(8); - myfile << "# MyPID"; - myfile << " "; - myfile.width(12); - if (MaxElementSize1 == 1) - myfile << "GID "; - else - myfile << " GID/Point"; - for (int j = 0; j < NumVectors1; j++) { - myfile.width(20); - myfile << "Value "; - } - myfile << std::endl; - } - for (int i = 0; i < NumMyElements1; i++) { - for (int ii = 0; ii < epCoord->Map().ElementSize(i); ii++) { - int iii; - myfile.width(10); - myfile << MyPID; - myfile << " "; - myfile.width(10); - if (MaxElementSize1 == 1) { - if (epCoord->Map().GlobalIndicesInt()) { - int* MyGlobalElements1 = epCoord->Map().MyGlobalElements(); - myfile << MyGlobalElements1[i] << " "; - } - - iii = i; - } else { - if (epCoord->Map().GlobalIndicesInt()) { - int* MyGlobalElements1 = epCoord->Map().MyGlobalElements(); - myfile << MyGlobalElements1[i] << "/" << ii << " "; - } - - iii = FirstPointInElementList1[i] + ii; - } - for (int j = 0; j < NumVectors1; j++) { - myfile.width(20); - myfile << A_Pointers[j][iii]; - } - - myfile.precision(18); // set high precision for output - - // add solution vector entry - myfile.width(25); - myfile << (*exactLsgVec)[iii]; - - // add preconditioned solution vector entry - myfile.width(25); - myfile << (*precLsgVec)[iii]; - - myfile.width(25); - Teuchos::ArrayRCP mgridLsgVecData = mgridLsgVec->getDataNonConst(0); - myfile << mgridLsgVecData[iii]; - - myfile.precision(6); // set default precision - myfile << std::endl; - } - } // end loop over all lines on current proc - myfile << std::flush; - - // syncronize procs - comm->barrier(); - comm->barrier(); - comm->barrier(); - - } // end myProc - } - - // export map - RCP Amap = A->getRowMap(); - RCP > epAmap = Teuchos::rcp_dynamic_cast >(Amap); - - // Epetra_Map* eMap; - // int rv = EpetraExt::MatrixMarketFileToMap(fileName.c_str(), *(Xpetra::toEpetra(comm)), eMap); - EpetraExt::BlockMapToMatrixMarketFile("ARowMap.mat", epAmap->getEpetra_BlockMap(), - "ARowMap", - "Row map of matrix A", - true); - - EpetraExt::MultiVectorToMatrixMarketFile("ACoordVector.mat", *epCoord, "Coordinate multi vector", "Multi vector with mesh coordinates", true); - EpetraExt::RowMatrixToMatrixMarketFile("A.mat", *epA, "A matrix", "Matrix A", true); - - //////////// - myfile.close(); - - comm->barrier(); - tm = Teuchos::null; - globalTimeMonitor = Teuchos::null; - - if (printTimings == "yes") { - TimeMonitor::summarize(A->getRowMap()->getComm().ptr(), std::cout, false, true, false, Teuchos::Union, "", true); - } - - success = true; - } - TEUCHOS_STANDARD_CATCH_STATEMENTS(true, std::cerr, success); - - return (success ? EXIT_SUCCESS : EXIT_FAILURE); -#else - return EXIT_SUCCESS; -#endif // #if defined(HAVE_MUELU_EPETRA) and defined(HAVE_MUELU_SERIAL) -} // main diff --git a/packages/muelu/doc/Tutorial/src/recirc2d.cpp b/packages/muelu/doc/Tutorial/src/recirc2d.cpp deleted file mode 100644 index d7fb93a33a11..000000000000 --- a/packages/muelu/doc/Tutorial/src/recirc2d.cpp +++ /dev/null @@ -1,373 +0,0 @@ -// @HEADER -// ***************************************************************************** -// MueLu: A package for multigrid based preconditioning -// -// Copyright 2012 NTESS and the MueLu contributors. -// SPDX-License-Identifier: BSD-3-Clause -// ***************************************************************************** -// @HEADER - -#include - -#include - -#include - -#include -#include -#include -#include - -// Galeri -#include -#include -#include -// - -//#include - -#include -#include -#include -#include // TODO: move into MueLu.hpp - -#include - -#include - -#include -#include -#include -#include - -#if defined(HAVE_MUELU_EPETRA) -#include - -// prescribe types -// run plain Epetra -typedef double Scalar; -typedef int LocalOrdinal; -typedef int GlobalOrdinal; -typedef Xpetra::EpetraNode Node; // Epetra needs SerialNode -#endif - -int main(int argc, char* argv[]) { -#if defined(HAVE_MUELU_EPETRA) -#include - - using Teuchos::RCP; // reference count pointers - using Teuchos::rcp; - using Teuchos::TimeMonitor; - - // ========================================================================= - // MPI initialization using Teuchos - // ========================================================================= - Teuchos::GlobalMPISession mpiSession(&argc, &argv, NULL); - - bool success = false; - bool verbose = true; - try { - RCP > comm = Teuchos::DefaultComm::getComm(); - int MyPID = comm->getRank(); - int NumProc = comm->getSize(); - - const Teuchos::RCP epComm = Teuchos::rcp_const_cast(Xpetra::toEpetra(comm)); - - // ========================================================================= - // Convenient definitions - // ========================================================================= - // SC zero = Teuchos::ScalarTraits::zero(), one = Teuchos::ScalarTraits::one(); - - // Instead of checking each time for rank, create a rank 0 stream - RCP fancy = Teuchos::fancyOStream(Teuchos::rcpFromRef(std::cout)); - Teuchos::FancyOStream& fancyout = *fancy; - fancyout.setOutputToRootOnly(0); - - // ========================================================================= - // Parameters initialization - // ========================================================================= - Teuchos::CommandLineProcessor clp(false); - GO nx = 100, ny = 100; - clp.setOption("nx", &nx, "mesh size in x direction"); - clp.setOption("ny", &ny, "mesh size in y direction"); - std::string xmlFileName = "xml/s3a.xml"; - clp.setOption("xml", &xmlFileName, "read parameters from a file. Otherwise, this example uses by default 'tutorial1a.xml'"); - int mgridSweeps = 1; - clp.setOption("mgridSweeps", &mgridSweeps, "number of multigrid sweeps within Multigrid solver."); - std::string printTimings = "no"; - clp.setOption("timings", &printTimings, "print timings to screen [yes/no]"); - double tol = 1e-12; - clp.setOption("tol", &tol, "solver convergence tolerance"); - - switch (clp.parse(argc, argv)) { - case Teuchos::CommandLineProcessor::PARSE_HELP_PRINTED: return EXIT_SUCCESS; break; - case Teuchos::CommandLineProcessor::PARSE_ERROR: - case Teuchos::CommandLineProcessor::PARSE_UNRECOGNIZED_OPTION: return EXIT_FAILURE; break; - case Teuchos::CommandLineProcessor::PARSE_SUCCESSFUL: break; - } - - // ========================================================================= - // Problem construction - // ========================================================================= - RCP globalTimeMonitor = rcp(new TimeMonitor(*TimeMonitor::getNewTimer("ScalingTest: S - Global Time"))), tm; - - comm->barrier(); - tm = rcp(new TimeMonitor(*TimeMonitor::getNewTimer("ScalingTest: 1 - Matrix Build"))); - - Teuchos::ParameterList GaleriList; - GaleriList.set("nx", nx); - GaleriList.set("ny", ny); - GaleriList.set("mx", epComm->NumProc()); - GaleriList.set("my", 1); - GaleriList.set("lx", 1.0); // length of x-axis - GaleriList.set("ly", 1.0); // length of y-axis - GaleriList.set("diff", 1e-5); - GaleriList.set("conv", 1.0); - - // create map - Teuchos::RCP epMap = Teuchos::rcp(Galeri::CreateMap("Cartesian2D", *epComm, GaleriList)); - - // create coordinates - Teuchos::RCP epCoord = Teuchos::rcp(Galeri::CreateCartesianCoordinates("2D", epMap.get(), GaleriList)); - - // create matrix - Teuchos::RCP epA = Teuchos::rcp(Galeri::CreateCrsMatrix("Recirc2D", epMap.get(), GaleriList)); - - // Epetra -> Xpetra - Teuchos::RCP exA = Teuchos::rcp(new Xpetra::EpetraCrsMatrixT(epA)); - Teuchos::RCP exAWrap = Teuchos::rcp(new CrsMatrixWrap(exA)); - - RCP A = Teuchos::rcp_dynamic_cast(exAWrap); - int numPDEs = 1; - A->SetFixedBlockSize(numPDEs); - - // set rhs and solution vector - RCP B = Teuchos::rcp(new Epetra_Vector(*epMap)); - RCP X = Teuchos::rcp(new Epetra_Vector(*epMap)); - B->PutScalar(1.0); - X->PutScalar(0.0); - - // Epetra -> Xpetra - RCP xB = Teuchos::rcp(new Xpetra::EpetraVectorT(B)); - RCP xX = Teuchos::rcp(new Xpetra::EpetraVectorT(X)); - RCP coords = Teuchos::rcp(new Xpetra::EpetraMultiVectorT(epCoord)); - - xX->setSeed(100); - xX->randomize(); - - // build null space vector - RCP map = A->getRowMap(); - RCP nullspace = MultiVectorFactory::Build(map, numPDEs); - - for (int i = 0; i < numPDEs; ++i) { - Teuchos::ArrayRCP nsValues = nullspace->getDataNonConst(i); - int numBlocks = nsValues.size() / numPDEs; - for (int j = 0; j < numBlocks; ++j) { - nsValues[j * numPDEs + i] = 1.0; - } - } - - comm->barrier(); - tm = Teuchos::null; - - fancyout << "========================================================\nGaleri complete.\n========================================================" << std::endl; - - // ========================================================================= - // Preconditioner construction - // ========================================================================= - comm->barrier(); - tm = rcp(new TimeMonitor(*TimeMonitor::getNewTimer("ScalingTest: 1.5 - MueLu read XML"))); - ParameterListInterpreter mueLuFactory(xmlFileName, *comm); - comm->barrier(); - tm = Teuchos::null; - - tm = rcp(new TimeMonitor(*TimeMonitor::getNewTimer("ScalingTest: 2 - MueLu Setup"))); - - RCP H = mueLuFactory.CreateHierarchy(); - - H->GetLevel(0)->Set("A", A); - H->GetLevel(0)->Set("Nullspace", nullspace); - H->GetLevel(0)->Set("Coordinates", coords); - - mueLuFactory.SetupHierarchy(*H); - - comm->barrier(); - tm = Teuchos::null; - - // ========================================================================= - // System solution (Ax = b) - // ========================================================================= - - // - // generate exact solution using a direct solver - // - RCP exactLsgVec = rcp(new Epetra_Vector(X->Map())); - { - fancyout << "========================================================\nCalculate exact solution." << std::endl; - tm = rcp(new TimeMonitor(*TimeMonitor::getNewTimer("ScalingTest: 3 - direct solve"))); - exactLsgVec->PutScalar(0.0); - exactLsgVec->Update(1.0, *X, 1.0); - Epetra_LinearProblem epetraProblem(epA.get(), exactLsgVec.get(), B.get()); - - Amesos amesosFactory; - RCP rcp_directSolver = Teuchos::rcp(amesosFactory.Create("Amesos_Klu", epetraProblem)); - rcp_directSolver->SymbolicFactorization(); - rcp_directSolver->NumericFactorization(); - rcp_directSolver->Solve(); - - comm->barrier(); - tm = Teuchos::null; - } - - // - // Solve Ax = b using AMG as a preconditioner in AztecOO - // - - RCP precLsgVec = rcp(new Epetra_Vector(X->Map())); - { - fancyout << "========================================================\nUse multigrid hierarchy as preconditioner within CG." << std::endl; - tm = rcp(new TimeMonitor(*TimeMonitor::getNewTimer("ScalingTest: 4 - AMG as preconditioner"))); - - precLsgVec->PutScalar(0.0); - precLsgVec->Update(1.0, *X, 1.0); - Epetra_LinearProblem epetraProblem(epA.get(), precLsgVec.get(), B.get()); - - AztecOO aztecSolver(epetraProblem); - aztecSolver.SetAztecOption(AZ_solver, AZ_gmres); - - MueLu::EpetraOperator aztecPrec(H); - aztecSolver.SetPrecOperator(&aztecPrec); - - int maxIts = 50; - - aztecSolver.Iterate(maxIts, tol); - - comm->barrier(); - tm = Teuchos::null; - } - - ////////////////// - - // use multigrid hierarchy as solver - RCP mgridLsgVec = VectorFactory::Build(map); - mgridLsgVec->putScalar(0.0); - { - fancyout << "========================================================\nUse multigrid hierarchy as solver." << std::endl; - tm = rcp(new TimeMonitor(*TimeMonitor::getNewTimer("ScalingTest: 5 - Multigrid Solve"))); - mgridLsgVec->update(1.0, *xX, 1.0); - H->IsPreconditioner(false); - H->Iterate(*xB, *mgridLsgVec, mgridSweeps); - comm->barrier(); - tm = Teuchos::null; - } - - ////////////////// - - fancyout << "========================================================\nExport results.\n========================================================" << std::endl; - std::ofstream myfile; - std::stringstream ss; - ss << "example" << MyPID << ".txt"; - myfile.open(ss.str().c_str()); - - ////////////////// - - // loop over all procs - for (int iproc = 0; iproc < NumProc; iproc++) { - if (MyPID == iproc) { - int NumVectors1 = 2; - int NumMyElements1 = epCoord->Map().NumMyElements(); - int MaxElementSize1 = epCoord->Map().MaxElementSize(); - int* FirstPointInElementList1 = NULL; - if (MaxElementSize1 != 1) FirstPointInElementList1 = epCoord->Map().FirstPointInElementList(); - double** A_Pointers = epCoord->Pointers(); - - if (MyPID == 0) { - myfile.width(8); - myfile << "# MyPID"; - myfile << " "; - myfile.width(12); - if (MaxElementSize1 == 1) - myfile << "GID "; - else - myfile << " GID/Point"; - for (int j = 0; j < NumVectors1; j++) { - myfile.width(20); - myfile << "Value "; - } - myfile << std::endl; - } - for (int i = 0; i < NumMyElements1; i++) { - for (int ii = 0; ii < epCoord->Map().ElementSize(i); ii++) { - int iii; - myfile.width(10); - myfile << MyPID; - myfile << " "; - myfile.width(10); - if (MaxElementSize1 == 1) { - if (epCoord->Map().GlobalIndicesInt()) { - int* MyGlobalElements1 = epCoord->Map().MyGlobalElements(); - myfile << MyGlobalElements1[i] << " "; - } - - iii = i; - } else { - if (epCoord->Map().GlobalIndicesInt()) { - int* MyGlobalElements1 = epCoord->Map().MyGlobalElements(); - myfile << MyGlobalElements1[i] << "/" << ii << " "; - } - - iii = FirstPointInElementList1[i] + ii; - } - for (int j = 0; j < NumVectors1; j++) { - myfile.width(20); - myfile << A_Pointers[j][iii]; - } - - myfile.precision(18); // set high precision for output - - // add solution vector entry - myfile.width(25); - myfile << (*exactLsgVec)[iii]; - - // add preconditioned solution vector entry - myfile.width(25); - myfile << (*precLsgVec)[iii]; - - Teuchos::ArrayRCP mgridLsgVecData = mgridLsgVec->getDataNonConst(0); - myfile.width(25); - myfile << mgridLsgVecData[iii]; - - myfile.precision(6); // set default precision - myfile << std::endl; - } - } // end loop over all lines on current proc - myfile << std::flush; - - // syncronize procs - comm->barrier(); - comm->barrier(); - comm->barrier(); - - } // end myProc - } - - //////////// - myfile.close(); - - comm->barrier(); - tm = Teuchos::null; - globalTimeMonitor = Teuchos::null; - - if (printTimings == "yes") { - TimeMonitor::summarize(A->getRowMap()->getComm().ptr(), std::cout, false, true, false, Teuchos::Union, "", true); - } - - success = true; - } - TEUCHOS_STANDARD_CATCH_STATEMENTS(verbose, std::cerr, success); - - return (success ? EXIT_SUCCESS : EXIT_FAILURE); -#else - return EXIT_SUCCESS; -#endif // #if defined(HAVE_MUELU_EPETRA) and defined(HAVE_MUELU_SERIAL) -} // main diff --git a/packages/muelu/doc/Tutorial/src/recirc2d_api.cpp b/packages/muelu/doc/Tutorial/src/recirc2d_api.cpp deleted file mode 100644 index fd2bef0152c0..000000000000 --- a/packages/muelu/doc/Tutorial/src/recirc2d_api.cpp +++ /dev/null @@ -1,401 +0,0 @@ -// @HEADER -// ***************************************************************************** -// MueLu: A package for multigrid based preconditioning -// -// Copyright 2012 NTESS and the MueLu contributors. -// SPDX-License-Identifier: BSD-3-Clause -// ***************************************************************************** -// @HEADER - -#include - -#include - -#include - -#include -#include -#include -#include - -// Galeri -#include -#include -#include -// - -#include -#include -#include -#include -#include -#include - -#include - -#include - -#include -#include -#include -#include - -#if defined(HAVE_MUELU_EPETRA) -#include - -// prescribe types -// run plain Epetra -typedef double Scalar; -typedef int LocalOrdinal; -typedef int GlobalOrdinal; -typedef Xpetra::EpetraNode Node; // Epetra needs SerialNode -#endif - -int main(int argc, char* argv[]) { -#if defined(HAVE_MUELU_EPETRA) -#include - - using Teuchos::RCP; // reference count pointers - using Teuchos::rcp; - using Teuchos::TimeMonitor; - - // ========================================================================= - // MPI initialization using Teuchos - // ========================================================================= - Teuchos::GlobalMPISession mpiSession(&argc, &argv, NULL); - - bool success = false; - try { - RCP > comm = Teuchos::DefaultComm::getComm(); - int MyPID = comm->getRank(); - int NumProc = comm->getSize(); - - const Teuchos::RCP epComm = Teuchos::rcp_const_cast(Xpetra::toEpetra(comm)); - - // ========================================================================= - // Convenient definitions - // ========================================================================= - // SC zero = Teuchos::ScalarTraits::zero(), one = Teuchos::ScalarTraits::one(); - - // Instead of checking each time for rank, create a rank 0 stream - RCP fancy = Teuchos::fancyOStream(Teuchos::rcpFromRef(std::cout)); - Teuchos::FancyOStream& fancyout = *fancy; - fancyout.setOutputToRootOnly(0); - - // ========================================================================= - // Parameters initialization - // ========================================================================= - Teuchos::CommandLineProcessor clp(false); - GO nx = 100, ny = 100; - GO maxCoarseSize = 10; - LO maxLevels = 4; - clp.setOption("nx", &nx, "mesh size in x direction"); - clp.setOption("ny", &ny, "mesh size in y direction"); - clp.setOption("maxCoarseSize", &maxCoarseSize, "maximum coarse size"); - clp.setOption("maxLevels", &maxLevels, "maximum number of multigrid levels"); - int mgridSweeps = 1; - clp.setOption("mgridSweeps", &mgridSweeps, "number of multigrid sweeps within Multigrid solver."); - std::string printTimings = "no"; - clp.setOption("timings", &printTimings, "print timings to screen [yes/no]"); - double tol = 1e-12; - clp.setOption("tol", &tol, "solver convergence tolerance"); - - switch (clp.parse(argc, argv)) { - case Teuchos::CommandLineProcessor::PARSE_HELP_PRINTED: return EXIT_SUCCESS; break; - case Teuchos::CommandLineProcessor::PARSE_ERROR: - case Teuchos::CommandLineProcessor::PARSE_UNRECOGNIZED_OPTION: return EXIT_FAILURE; break; - case Teuchos::CommandLineProcessor::PARSE_SUCCESSFUL: break; - } - - // ========================================================================= - // Problem construction - // ========================================================================= - RCP globalTimeMonitor = rcp(new TimeMonitor(*TimeMonitor::getNewTimer("ScalingTest: S - Global Time"))), tm; - - comm->barrier(); - tm = rcp(new TimeMonitor(*TimeMonitor::getNewTimer("ScalingTest: 1 - Matrix Build"))); - - Teuchos::ParameterList GaleriList; - GaleriList.set("nx", nx); - GaleriList.set("ny", ny); - GaleriList.set("mx", epComm->NumProc()); - GaleriList.set("my", 1); - GaleriList.set("lx", 1.0); // length of x-axis - GaleriList.set("ly", 1.0); // length of y-axis - GaleriList.set("diff", 1e-5); - GaleriList.set("conv", 1.0); - - // create map - Teuchos::RCP epMap = Teuchos::rcp(Galeri::CreateMap("Cartesian2D", *epComm, GaleriList)); - - // create coordinates - Teuchos::RCP epCoord = Teuchos::rcp(Galeri::CreateCartesianCoordinates("2D", epMap.get(), GaleriList)); - - // create matrix - Teuchos::RCP epA = Teuchos::rcp(Galeri::CreateCrsMatrix("Recirc2D", epMap.get(), GaleriList)); - - // Epetra -> Xpetra - Teuchos::RCP exA = Teuchos::rcp(new Xpetra::EpetraCrsMatrixT(epA)); - Teuchos::RCP exAWrap = Teuchos::rcp(new CrsMatrixWrap(exA)); - - RCP A = Teuchos::rcp_dynamic_cast(exAWrap); - int numPDEs = 1; - A->SetFixedBlockSize(numPDEs); - - // set rhs and solution vector - RCP B = Teuchos::rcp(new Epetra_Vector(*epMap)); - RCP X = Teuchos::rcp(new Epetra_Vector(*epMap)); - B->PutScalar(1.0); - X->PutScalar(0.0); - - // Epetra -> Xpetra - RCP xB = Teuchos::rcp(new Xpetra::EpetraVectorT(B)); - RCP xX = Teuchos::rcp(new Xpetra::EpetraVectorT(X)); - - xX->setSeed(100); - xX->randomize(); - - // build null space vector - RCP map = A->getRowMap(); - RCP nullspace = MultiVectorFactory::Build(map, numPDEs); - - for (int i = 0; i < numPDEs; ++i) { - Teuchos::ArrayRCP nsValues = nullspace->getDataNonConst(i); - int numBlocks = nsValues.size() / numPDEs; - for (int j = 0; j < numBlocks; ++j) { - nsValues[j * numPDEs + i] = 1.0; - } - } - - comm->barrier(); - tm = Teuchos::null; - - fancyout << "========================================================\nGaleri complete.\n========================================================" << std::endl; - - // ========================================================================= - // Preconditioner construction - // ========================================================================= - comm->barrier(); - tm = rcp(new TimeMonitor(*TimeMonitor::getNewTimer("ScalingTest: 1.5 - MueLu read XML"))); - - RCP H = rcp(new Hierarchy()); - H->setDefaultVerbLevel(Teuchos::VERB_HIGH); - H->SetMaxCoarseSize(maxCoarseSize); - - // build finest Level - RCP Finest = H->GetLevel(); - Finest->setDefaultVerbLevel(Teuchos::VERB_HIGH); - Finest->Set("A", A); - Finest->Set("Nullspace", nullspace); - - // create factories for transfer operators - RCP PFact = Teuchos::rcp(new TentativePFactory()); - RCP RFact = Teuchos::rcp(new TransPFactory()); - RFact->SetFactory("P", PFact); - - // build level smoothers - // use symmetric Gauss-Seidel both for fine and coarse level smoother - RCP smooProto; - std::string ifpackType; - Teuchos::ParameterList ifpackList; - ifpackList.set("relaxation: sweeps", (LO)1); - ifpackList.set("relaxation: damping factor", (SC)1.0); - ifpackType = "RELAXATION"; - ifpackList.set("relaxation: type", "Symmetric Gauss-Seidel"); - - smooProto = Teuchos::rcp(new TrilinosSmoother(ifpackType, ifpackList)); - RCP SmooFact; - if (maxLevels > 1) - SmooFact = rcp(new SmootherFactory(smooProto)); - - // design multigrid hierarchy - FactoryManager M; - M.SetFactory("P", PFact); - M.SetFactory("R", RFact); - M.SetFactory("Nullspace", PFact); - M.SetFactory("Smoother", SmooFact); - M.SetFactory("CoarseSolver", SmooFact); - - H->Setup(M, 0, maxLevels); - - comm->barrier(); - tm = Teuchos::null; - - // ========================================================================= - // System solution (Ax = b) - // ========================================================================= - - // - // generate exact solution using a direct solver - // - RCP exactLsgVec = rcp(new Epetra_Vector(X->Map())); - { - fancyout << "========================================================\nCalculate exact solution." << std::endl; - tm = rcp(new TimeMonitor(*TimeMonitor::getNewTimer("ScalingTest: 3 - direct solve"))); - exactLsgVec->PutScalar(0.0); - exactLsgVec->Update(1.0, *X, 1.0); - Epetra_LinearProblem epetraProblem(epA.get(), exactLsgVec.get(), B.get()); - - Amesos amesosFactory; - RCP rcp_directSolver = Teuchos::rcp(amesosFactory.Create("Amesos_Klu", epetraProblem)); - rcp_directSolver->SymbolicFactorization(); - rcp_directSolver->NumericFactorization(); - rcp_directSolver->Solve(); - - comm->barrier(); - tm = Teuchos::null; - } - - // - // Solve Ax = b using AMG as a preconditioner in AztecOO - // - - RCP precLsgVec = rcp(new Epetra_Vector(X->Map())); - { - fancyout << "========================================================\nUse multigrid hierarchy as preconditioner within CG." << std::endl; - tm = rcp(new TimeMonitor(*TimeMonitor::getNewTimer("ScalingTest: 4 - AMG as preconditioner"))); - - precLsgVec->PutScalar(0.0); - precLsgVec->Update(1.0, *X, 1.0); - Epetra_LinearProblem epetraProblem(epA.get(), precLsgVec.get(), B.get()); - - AztecOO aztecSolver(epetraProblem); - aztecSolver.SetAztecOption(AZ_solver, AZ_gmres); - - MueLu::EpetraOperator aztecPrec(H); - aztecSolver.SetPrecOperator(&aztecPrec); - - int maxIts = 100; - // double tol2 = 1e-8; - - aztecSolver.Iterate(maxIts, tol); - - comm->barrier(); - tm = Teuchos::null; - } - - ////////////////// - - // use multigrid hierarchy as solver - RCP mgridLsgVec = VectorFactory::Build(map); - mgridLsgVec->putScalar(0.0); - { - fancyout << "========================================================\nUse multigrid hierarchy as solver." << std::endl; - tm = rcp(new TimeMonitor(*TimeMonitor::getNewTimer("ScalingTest: 5 - Multigrid Solve"))); - mgridLsgVec->update(1.0, *xX, 1.0); - H->IsPreconditioner(false); - H->Iterate(*xB, *mgridLsgVec, mgridSweeps); - comm->barrier(); - tm = Teuchos::null; - } - - ////////////////// - - fancyout << "========================================================\nExport results.\n========================================================" << std::endl; - std::ofstream myfile; - std::stringstream ss; - ss << "example" << MyPID << ".txt"; - myfile.open(ss.str().c_str()); - - ////////////////// - - // loop over all procs - for (int iproc = 0; iproc < NumProc; iproc++) { - if (MyPID == iproc) { - int NumVectors1 = 2; - int NumMyElements1 = epCoord->Map().NumMyElements(); - int MaxElementSize1 = epCoord->Map().MaxElementSize(); - int* FirstPointInElementList1 = NULL; - if (MaxElementSize1 != 1) FirstPointInElementList1 = epCoord->Map().FirstPointInElementList(); - double** A_Pointers = epCoord->Pointers(); - - if (MyPID == 0) { - myfile.width(8); - myfile << "# MyPID"; - myfile << " "; - myfile.width(12); - if (MaxElementSize1 == 1) - myfile << "GID "; - else - myfile << " GID/Point"; - for (int j = 0; j < NumVectors1; j++) { - myfile.width(20); - myfile << "Value "; - } - myfile << std::endl; - } - for (int i = 0; i < NumMyElements1; i++) { - for (int ii = 0; ii < epCoord->Map().ElementSize(i); ii++) { - int iii; - myfile.width(10); - myfile << MyPID; - myfile << " "; - myfile.width(10); - if (MaxElementSize1 == 1) { - if (epCoord->Map().GlobalIndicesInt()) { - int* MyGlobalElements1 = epCoord->Map().MyGlobalElements(); - myfile << MyGlobalElements1[i] << " "; - } - - iii = i; - } else { - if (epCoord->Map().GlobalIndicesInt()) { - int* MyGlobalElements1 = epCoord->Map().MyGlobalElements(); - myfile << MyGlobalElements1[i] << "/" << ii << " "; - } - - iii = FirstPointInElementList1[i] + ii; - } - for (int j = 0; j < NumVectors1; j++) { - myfile.width(20); - myfile << A_Pointers[j][iii]; - } - - myfile.precision(18); // set high precision for output - - // add solution vector entry - myfile.width(25); - myfile << (*exactLsgVec)[iii]; - - // add preconditioned solution vector entry - myfile.width(25); - myfile << (*precLsgVec)[iii]; - - Teuchos::ArrayRCP mgridLsgVecData = mgridLsgVec->getDataNonConst(0); - myfile.width(25); - myfile << mgridLsgVecData[iii]; - - myfile.precision(6); // set default precision - myfile << std::endl; - } - } // end loop over all lines on current proc - myfile << std::flush; - - // syncronize procs - comm->barrier(); - comm->barrier(); - comm->barrier(); - - } // end myProc - } - - //////////// - myfile.close(); - - comm->barrier(); - tm = Teuchos::null; - globalTimeMonitor = Teuchos::null; - - if (printTimings == "yes") { - TimeMonitor::summarize(A->getRowMap()->getComm().ptr(), std::cout, false, true, false, Teuchos::Union, "", true); - } - - success = true; - } - TEUCHOS_STANDARD_CATCH_STATEMENTS(true, std::cerr, success); - - return (success ? EXIT_SUCCESS : EXIT_FAILURE); -#else - return EXIT_SUCCESS; -#endif // #if defined(HAVE_MUELU_EPETRA) and defined(HAVE_MUELU_SERIAL) -} // main diff --git a/packages/muelu/doc/Tutorial/src/tmpl/MueLu_Agg2VTK.py_TMPL b/packages/muelu/doc/Tutorial/src/tmpl/MueLu_Agg2VTK.py_TMPL deleted file mode 100755 index 99bda9c2328d..000000000000 --- a/packages/muelu/doc/Tutorial/src/tmpl/MueLu_Agg2VTK.py_TMPL +++ /dev/null @@ -1,448 +0,0 @@ -#!/usr/bin/python -import sys -import os -import vtk -import random -from subprocess import Popen, PIPE, STDOUT -from vtk import * - -############################################ -# read in nodes file -def read_nodecoords_from_file(filename): - global_nodecoords = [] - for l in file(filename): - line = l.strip() - if len(line)==1: - dimension = int(line) - else: - line = line.split(" ") - x = float(line[0]) #+ 0.0001 * random.random() - y = float(line[1]) #+ 0.0001 * random.random() - if len(line) == 3: - z = float(line[2]) #+ 0.0001 * random.random() - global_nodecoords.append((x,y,z)) - else: - global_nodecoords.append((x,y)) - return global_nodecoords,dimension - -def read_finelevel_nodecoords_from_file(filename): - global_nodecoords = [] - dimension = 2 # we only support 2D aggregates here... - for l in file(filename): - line = l.strip() - if line.find("#") == 0: - continue - else: - while ' ' in line: - line = line.replace(' ', ' ') - line = line.split(" ") - x = float(line[2]) #+ 0.0001 * random.random() - y = float(line[3]) #+ 0.0001 * random.random() - global_nodecoords.append((x,y)) - return global_nodecoords,dimension - -# dimension: problem dimension, i.e. either 2 or 3 -# agg_globalnodeidx: global node ids of current aggregate -# global_nodecoords: coordinates of nodes -# aggpolygons: vtk append object for aggregates -# aggid: aggregate id (global) -# aggid2nodes: map aggid -> nodeid (for visualization) -# aggid2procs: map aggid -> proc id (for visualization) -def prepareDelaunayData3d(dimension, agg_globalnodeidx, global_nodecoords, aggpolygons, aggid, aggid2nodes, aggid2procs): - - local_nodeidx2global_nodeidx = {} - no_of_aggnodes = len(agg_globalnodeidx) - no_aggs = len(aggid2nodes) - - Points = vtk.vtkPoints() - Vertices = vtk.vtkCellArray() - - for i in range(0,len(agg_globalnodeidx)): - id = -1 - local_nodeidx2global_nodeidx[i] = agg_globalnodeidx[i] - nodecoords = global_nodecoords[int(agg_globalnodeidx[i])] - id = Points.InsertNextPoint(nodecoords[0]+ 0.0001 * random.random(),nodecoords[1]+ 0.0001 * random.random(),nodecoords[2]+ 0.0001 * random.random()) - Vertices.InsertNextCell(1) - Vertices.InsertCellPoint(id) - - polydata2 = vtk.vtkPolyData() - polydata2.SetPoints(Points) - polydata2.Modified() - polydata2.Update() - - delaunay = vtk.vtkDelaunay3D() - delaunay.SetInput(polydata2) - delaunay.Update() - - # create surfaceFilter - surfaceFilter = vtk.vtkDataSetSurfaceFilter() - surfaceFilter.SetInputConnection(delaunay.GetOutputPort()) - surfaceFilter.Update() - - pt_polydata = surfaceFilter.GetOutput() - - lookupTable = vtk.vtkLookupTable() - lookupTable.SetNumberOfTableValues(no_aggs) - lookupTable.Build() - - Ids = vtk.vtkUnsignedIntArray() - Ids.SetNumberOfComponents(1) - Ids.SetName("Ids") - for i in range(0,Points.GetNumberOfPoints()): - Ids.InsertNextTuple1(int(aggid)) - Ids.SetLookupTable(lookupTable) - - Procs = vtk.vtkUnsignedCharArray() - Procs.SetNumberOfComponents(1) - Procs.SetName("proc") - for i in range(0,Points.GetNumberOfPoints()): - Procs.InsertNextTuple1(aggid2procs[aggid]) - - polydata3 = vtk.vtkPolyData() - polydata3 = surfaceFilter.GetOutput() - polydata3.GetPointData().SetScalars(Ids) - polydata3.GetPointData().AddArray(Procs) - - polydata4 = vtk.vtkPolyData() - polydata4.SetPoints(Points) - polydata4.SetVerts(Vertices) - polydata4.GetPointData().SetScalars(Ids) - polydata4.GetPointData().AddArray(Procs) - - #datamapper = vtk.vtkDataSetMapper() - #datamapper.SetInputConnection(delaunay.GetOutputPort()) - #datamapper.SetInput(polydata3) - - #actor = vtk.vtkActor() - #actor.SetMapper(datamapper) - - #renderer = vtk.vtkRenderer() - #renderWindow = vtk.vtkRenderWindow() - #renderWindow.AddRenderer(renderer) - #renderWindowInteractor = vtk.vtkRenderWindowInteractor() - #renderWindowInteractor.SetRenderWindow(renderWindow) - #renderer.AddActor(actor) - #renderWindow.Render() - #renderWindowInteractor.Start() - - #print polydata.GetVertices() - - aggpolygons.AddInput(polydata3) - aggpolygons.AddInput(polydata4) - -# dimension: problem dimension, i.e. either 2 or 3 -# agg_globalnodeidx: global node ids of current aggregate -# global_nodecoords: coordinates of nodes -# aggpolygons: vtk append object for aggregates -# aggid: aggregate id (global) -# aggid2nodes: map aggid -> nodeid (for visualization) -# aggid2procs: map aggid -> proc id (for visualization) -def prepareDelaunayData(dimension, agg_globalnodeidx, global_nodecoords, aggpolygons, aggid, aggid2nodes, aggid2procs): - local_nodeidx2global_nodeidx = {} - no_of_aggnodes = len(agg_globalnodeidx) - dim = len(global_nodecoords[0]) - - no_aggs = len(aggid2nodes) - - Points = vtk.vtkPoints() - Vertices = vtk.vtkCellArray() - - for i in range(0,len(agg_globalnodeidx)): - local_nodeidx2global_nodeidx[i] = agg_globalnodeidx[i] - nodecoords = global_nodecoords[int(agg_globalnodeidx[i])] - if dimension==2: - id = Points.InsertNextPoint(nodecoords[0],nodecoords[1],0.0) - elif dimension==3: - id = Points.InsertNextPoint(nodecoords[0]+ 0.001 * random.random(),nodecoords[1]+ 0.001 * random.random(),nodecoords[2]+ 0.001 * random.random()) - Vertices.InsertNextCell(1) - Vertices.InsertCellPoint(id) - - # create polygon for current aggregate - polydata = vtk.vtkPolyData() - polydata.SetPoints(Points) - polydata.SetVerts(Vertices) - polydata.Modified() - polydata.Update() - - polydata2 = vtk.vtkPolyData() - if Points.GetNumberOfPoints()>2: # todo: avoid error messages + add support for lines/surfaces - # create delaunay object - if dimension==2: - delaunay = vtk.vtkDelaunay2D() - elif dimension==3: - delaunay = vtk.vtkDelaunay3D() - #delaunay.SetAlpha(0.1) - delaunay.SetInput(polydata) - delaunay.Update() - - # create surfaceFilter - surfaceFilter = vtk.vtkDataSetSurfaceFilter() - surfaceFilter.SetInputConnection(delaunay.GetOutputPort()) - surfaceFilter.Update() - - polydata2 = surfaceFilter.GetOutput() - - lookupTable = vtk.vtkLookupTable() - lookupTable.SetNumberOfTableValues(no_aggs) - lookupTable.Build() - - Ids = vtk.vtkUnsignedIntArray() - Ids.SetNumberOfComponents(1) - Ids.SetName("Ids") - for i in range(0,Points.GetNumberOfPoints()): - Ids.InsertNextTuple1(int(aggid)) - Ids.SetLookupTable(lookupTable) - - Procs = vtk.vtkUnsignedCharArray() - Procs.SetNumberOfComponents(1) - Procs.SetName("proc") - for i in range(0,Points.GetNumberOfPoints()): - Procs.InsertNextTuple1(aggid2procs[aggid]) - - - polydata2.SetPoints(Points) - polydata2.SetVerts(Vertices) - polydata2.GetPointData().SetScalars(Ids) - polydata2.GetPointData().AddArray(Procs) - polydata2.Modified() - polydata2.Update() - - aggpolygons.AddInput(polydata2) - - -################################################################################ -# READ IN AGGREGATES -# routines that read aggregation information from files - -def checkAggregateLine(line): - if line.find("Agg ") == 0: - return 1,line - else: - return 0,line - -def read_aggregates_from_file(filename,procid): - aggid2nodes = {} - aggid2procs = {} - for l in file(filename): - line = l.strip() - - # filter out only Agg lines - ret,line = checkAggregateLine(line) - if ret == 0: - continue - - # line now contains a list of all tokens in that line - line = line.split(": ") - - # extract aggid and proc number - agginfo = line[0] - agginfo = agginfo.split(" ") - - aggid = agginfo[1] - procid = agginfo[3] - - # handle node ids for aggregate - aggnodeids = line[1] - aggnodeids = aggnodeids.split(" ") - - # fill in data variables - aggid2nodes[aggid] = aggnodeids - aggid2procs[aggid] = int(procid) - - return aggid2nodes,aggid2procs - -################################################################################ -# read in aggregation info from file -# input: filename_prototype string with prototype for filename, e.g. aggs_level%LEVEL_proc%PROCS.outlines -# the variables %LEVEL and %PROCS are replaced by the corresponding values -# input: procs: number of processors (4 means that information from processors 0..3 is expected) -# input: level: level number -def readin_aggregates(filename_prototype,procs,level): - aggid2nodes = {} - aggid2procs = {} - for proc in range(0,procs): - #filename = "aggs_level" + str(level) + "_proc" + str(proc) + ".out" - filename = filename_prototype - filename = filename.replace("%LEVEL",str(level)) - filename = filename.replace("%PROC",str(proc)) - print "process ", filename - if os.path.exists(filename): - [aggid2nodesfromproc,aggid2procsfromproc] = read_aggregates_from_file(filename,proc) - aggid2nodes.update(aggid2nodesfromproc) - aggid2procs.update(aggid2procsfromproc) - - return aggid2nodes,aggid2procs - -################################################################################ -# HELPER ROUTINES -# for generating next level information (nodesX.txt) - -################################################################################ -# get_agg_coords (helper function for get_rootnodes) -# input: list of nodes (coordinates) -# input: map aggid2gids: map of local agg ids -> GIDs -# input: aggid: global aggregate id -# output: returns set of node coordinates for aggregate with global aggid -def get_agg_coords(nodes,aggid2nodes,aggid): - agg_nodes = aggid2nodes[aggid] - nodeset = [] - for node in range(0,len(agg_nodes)): - nodeset.append(nodes[int(agg_nodes[node])]) - return nodeset - -################################################################################ -# get rootnodes -# input: aggs = map: aggid -> list of nodeids in this agg -# output: list of rootnodes -# note: we calculate the "midpoint" of each aggregate -# TODO extend me for 3d! -def get_rootnodes(aggid2nodes,nodes): - dim = 2 - if len(nodes[0]) == 3: - dim = 3 - - rootnodes = [] - for i in range(0,len(aggid2nodes.keys())): - rootnodes.append((0,0)) - for k in aggid2nodes.keys(): - - nodecoords = get_agg_coords(nodes,aggid2nodes,k) - - x = 0.0 - y = 0.0 - z = 0.0 - for m in nodecoords: - - x = x + m[0] - y = y + m[1] - if dim==3: - z = z + m[2] - x = x/len(aggid2nodes[k]) - y = y/len(aggid2nodes[k]) - if dim == 3: - z = z/len(aggid2nodes[k]) - - if dim == 2: - rootnodes[int(k)] = (x,y) - elif dim == 3: - rootnodes[int(k)] = (x,y,z) - else: print "error: dim must be 2 or 3 but it is " + str(dim) - - return rootnodes - -# write nodes file -# input: filename: filename for nodes file (should follow nodeX.txt style) -# input: aggid2nodes map for aggid to list of global nodeidx -# input: nodes list of node coordinates -# input: dimension (2 or 3) -def write_nodes_file(filename,aggid2nodes,nodes,dimension): - - # calculate root nodes (works only for 2d) - rootnodes = get_rootnodes(aggid2nodes,nodes) - - # write nodes file - f = open(filename,"w") - f.write(str(dimension)) - f.write("\r\n") - for i in range(len(rootnodes)): - rootnode = rootnodes[i] - f.write(str(rootnode[0])) - f.write(" ") - f.write(str(rootnode[1])) - if len(rootnode)==3: - f.write(" ") - f.write(str(rootnode[2])) - f.write("\r\n") - f.close() - print "node file " + filename + " generated: OK" - -################################################################################ -# check if all files exist to proceed with next level -# we need a nodesX.txt file for the node coordinates -# and all aggregation information files (from the AggregationExportFactory) -# input: nextlevel: id for next level -# procs: number of procs -# file_prototype: prototype for filename of aggregation information -def check_files_for_next_level(nextlevel,procs,file_prototype): - - if nextlevel==0: - if os.path.isfile("example.txt") == False: - return False - else: - # check if coarse level node coordinates are available - if os.path.isfile("nodes"+str(nextlevel)+".txt") == False: - return False - - #for p in range(0,procs): - for p in range(0,1): # check only processor one - filename = file_prototype - filename = filename.replace("%LEVEL",str(nextlevel)) - filename = filename.replace("%PROC",str(p)) - if os.path.isfile(filename) == False: - return False - - return True - -########### -# MAIN routine -def main(argv=None): - dimension = 2 - numprocs = $NUMPROCS - level = 0 # startlevel - - no_multigridlevels = 0 - - # check how many processors generated aggregation output - #while check_files_for_next_level(0,numprocs, "aggs_level%LEVEL_proc%PROC.out") == True: - # numprocs = numprocs + 1 - #numprocs = numprocs - 1 - #print "Aggregtaion information for " + str(numprocs) + " processors found" - - # process all multigrid levels - while check_files_for_next_level(level,numprocs,"aggs_level%LEVEL_proc%PROC.out"): - global_nodecoords = [] - - print "Level " + str(level) - - if level==0: # read in coordinates (finest level - global_nodecoords,dimension = read_finelevel_nodecoords_from_file("example.txt") - else: - global_nodecoords,dimension = read_nodecoords_from_file("nodes"+str(level)+".txt") - - # read aggregates - aggid2nodes, aggid2procs = readin_aggregates("aggs_level%LEVEL_proc%PROC.out",numprocs,level) - - # vtk polygon for output - aggpolygons = vtk.vtkAppendPolyData() - - # collect all aggregates - for aggid,agg_nodes in aggid2nodes.iteritems(): - # build an aggregate - if dimension==2: - prepareDelaunayData(dimension, agg_nodes, global_nodecoords, aggpolygons, aggid, aggid2nodes, aggid2procs) - else: - prepareDelaunayData3d(dimension, agg_nodes, global_nodecoords, aggpolygons, aggid, aggid2nodes, aggid2procs) - - #aggpolygons.GetOutput().GetPointData().SetVectors(vtkDisplacementVector) - #aggpolygons.Update() - - writer = vtk.vtkXMLPolyDataWriter() - fname = "aggs"+str(level)+".vtp" - writer.SetFileName(fname) - writer.SetInput(aggpolygons.GetOutput()) - writer.Write() - - - write_nodes_file("nodes"+str(level+1)+".txt",aggid2nodes,global_nodecoords,dimension) - - # increment number of multigrid levels that have been found in the files - if no_multigridlevels < level: - no_multigridlevels = level - - print "VTK Export for level " + str(level) + " finished...\r\n" - - level = level + 1 - - -if __name__ == "__main__": - sys.exit(main()) diff --git a/packages/muelu/doc/Tutorial/src/tmpl/muelu.xml_TMPL b/packages/muelu/doc/Tutorial/src/tmpl/muelu.xml_TMPL deleted file mode 100644 index 3bc306943a3b..000000000000 --- a/packages/muelu/doc/Tutorial/src/tmpl/muelu.xml_TMPL +++ /dev/null @@ -1,205 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - > - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/packages/muelu/doc/Tutorial/src/tmpl/muelu_easy.xml_TMPL b/packages/muelu/doc/Tutorial/src/tmpl/muelu_easy.xml_TMPL deleted file mode 100644 index f9c15cf155a6..000000000000 --- a/packages/muelu/doc/Tutorial/src/tmpl/muelu_easy.xml_TMPL +++ /dev/null @@ -1,38 +0,0 @@ - - - - - - - - - - - - - - - - - - - - -$IF_CHEBYSHEV - - - - - -$ENDIF_CHEBYSHEV -$IF_RELAXATION - - - -$ENDIF_RELAXATION - - - - - diff --git a/packages/muelu/doc/Tutorial/src/xml/ml_ParameterList.xml b/packages/muelu/doc/Tutorial/src/xml/ml_ParameterList.xml deleted file mode 100644 index ccef1f584a58..000000000000 --- a/packages/muelu/doc/Tutorial/src/xml/ml_ParameterList.xml +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/packages/muelu/doc/Tutorial/src/xml/ml_RebalancedParameterList.xml b/packages/muelu/doc/Tutorial/src/xml/ml_RebalancedParameterList.xml deleted file mode 100644 index 30d58e42afc3..000000000000 --- a/packages/muelu/doc/Tutorial/src/xml/ml_RebalancedParameterList.xml +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - - diff --git a/packages/muelu/doc/Tutorial/src/xml/muelu_ParameterList.xml b/packages/muelu/doc/Tutorial/src/xml/muelu_ParameterList.xml deleted file mode 100644 index a58192418d8e..000000000000 --- a/packages/muelu/doc/Tutorial/src/xml/muelu_ParameterList.xml +++ /dev/null @@ -1,67 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/packages/muelu/doc/Tutorial/src/xml/n1_easy.xml b/packages/muelu/doc/Tutorial/src/xml/n1_easy.xml deleted file mode 100644 index 381875567795..000000000000 --- a/packages/muelu/doc/Tutorial/src/xml/n1_easy.xml +++ /dev/null @@ -1,24 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/packages/muelu/doc/Tutorial/src/xml/n1_easy_pg.xml b/packages/muelu/doc/Tutorial/src/xml/n1_easy_pg.xml deleted file mode 100644 index 33215cccbfbc..000000000000 --- a/packages/muelu/doc/Tutorial/src/xml/n1_easy_pg.xml +++ /dev/null @@ -1,25 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/packages/muelu/doc/Tutorial/src/xml/n2_easy_agg.xml b/packages/muelu/doc/Tutorial/src/xml/n2_easy_agg.xml deleted file mode 100644 index d2fde4c9f131..000000000000 --- a/packages/muelu/doc/Tutorial/src/xml/n2_easy_agg.xml +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/packages/muelu/doc/Tutorial/src/xml/n2_easy_agg2.xml b/packages/muelu/doc/Tutorial/src/xml/n2_easy_agg2.xml deleted file mode 100644 index 1c7edd079731..000000000000 --- a/packages/muelu/doc/Tutorial/src/xml/n2_easy_agg2.xml +++ /dev/null @@ -1,27 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/packages/muelu/doc/Tutorial/src/xml/n2_easy_agg3.xml b/packages/muelu/doc/Tutorial/src/xml/n2_easy_agg3.xml deleted file mode 100644 index a473fd0d1eff..000000000000 --- a/packages/muelu/doc/Tutorial/src/xml/n2_easy_agg3.xml +++ /dev/null @@ -1,27 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/packages/muelu/doc/Tutorial/src/xml/n2_easy_export.xml b/packages/muelu/doc/Tutorial/src/xml/n2_easy_export.xml deleted file mode 100644 index 7ce75acc701d..000000000000 --- a/packages/muelu/doc/Tutorial/src/xml/n2_easy_export.xml +++ /dev/null @@ -1,23 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - diff --git a/packages/muelu/doc/Tutorial/src/xml/s1_easy.xml b/packages/muelu/doc/Tutorial/src/xml/s1_easy.xml deleted file mode 100644 index 0088ea906c4d..000000000000 --- a/packages/muelu/doc/Tutorial/src/xml/s1_easy.xml +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/packages/muelu/doc/Tutorial/src/xml/s1_easy_10levels.xml b/packages/muelu/doc/Tutorial/src/xml/s1_easy_10levels.xml deleted file mode 100644 index 701cfa38e689..000000000000 --- a/packages/muelu/doc/Tutorial/src/xml/s1_easy_10levels.xml +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/packages/muelu/doc/Tutorial/src/xml/s1_easy_3levels_smoothed.xml b/packages/muelu/doc/Tutorial/src/xml/s1_easy_3levels_smoothed.xml deleted file mode 100644 index 03674583be0b..000000000000 --- a/packages/muelu/doc/Tutorial/src/xml/s1_easy_3levels_smoothed.xml +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/packages/muelu/doc/Tutorial/src/xml/s1_easy_3levels_unsmoothed.xml b/packages/muelu/doc/Tutorial/src/xml/s1_easy_3levels_unsmoothed.xml deleted file mode 100644 index c7818ddec7a6..000000000000 --- a/packages/muelu/doc/Tutorial/src/xml/s1_easy_3levels_unsmoothed.xml +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/packages/muelu/doc/Tutorial/src/xml/s1_easy_exercise.xml b/packages/muelu/doc/Tutorial/src/xml/s1_easy_exercise.xml deleted file mode 100644 index 7b00631d0108..000000000000 --- a/packages/muelu/doc/Tutorial/src/xml/s1_easy_exercise.xml +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - - - - - - - - - - - - - - - diff --git a/packages/muelu/doc/Tutorial/src/xml/s1_easy_jacobi.xml b/packages/muelu/doc/Tutorial/src/xml/s1_easy_jacobi.xml deleted file mode 100644 index 355b9f6a5499..000000000000 --- a/packages/muelu/doc/Tutorial/src/xml/s1_easy_jacobi.xml +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/packages/muelu/doc/Tutorial/src/xml/s1_easy_jacobi2.xml b/packages/muelu/doc/Tutorial/src/xml/s1_easy_jacobi2.xml deleted file mode 100644 index 37eb039d0afb..000000000000 --- a/packages/muelu/doc/Tutorial/src/xml/s1_easy_jacobi2.xml +++ /dev/null @@ -1,29 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/packages/muelu/doc/Tutorial/src/xml/s2_adv_a.xml b/packages/muelu/doc/Tutorial/src/xml/s2_adv_a.xml deleted file mode 100644 index e303bd46f45b..000000000000 --- a/packages/muelu/doc/Tutorial/src/xml/s2_adv_a.xml +++ /dev/null @@ -1,31 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/packages/muelu/doc/Tutorial/src/xml/s2_adv_b.xml b/packages/muelu/doc/Tutorial/src/xml/s2_adv_b.xml deleted file mode 100644 index e972413a230c..000000000000 --- a/packages/muelu/doc/Tutorial/src/xml/s2_adv_b.xml +++ /dev/null @@ -1,42 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/packages/muelu/doc/Tutorial/src/xml/s2_adv_c.xml b/packages/muelu/doc/Tutorial/src/xml/s2_adv_c.xml deleted file mode 100644 index 2f53c07663c5..000000000000 --- a/packages/muelu/doc/Tutorial/src/xml/s2_adv_c.xml +++ /dev/null @@ -1,78 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/packages/muelu/doc/Tutorial/src/xml/s2_easy.xml b/packages/muelu/doc/Tutorial/src/xml/s2_easy.xml deleted file mode 100644 index bf44a8444a94..000000000000 --- a/packages/muelu/doc/Tutorial/src/xml/s2_easy.xml +++ /dev/null @@ -1,58 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/packages/muelu/doc/Tutorial/src/xml/s2a.xml b/packages/muelu/doc/Tutorial/src/xml/s2a.xml deleted file mode 100644 index 2b67e5301535..000000000000 --- a/packages/muelu/doc/Tutorial/src/xml/s2a.xml +++ /dev/null @@ -1,138 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - > - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/packages/muelu/doc/Tutorial/src/xml/s2b.xml b/packages/muelu/doc/Tutorial/src/xml/s2b.xml deleted file mode 100644 index 4c1bafa5dbd2..000000000000 --- a/packages/muelu/doc/Tutorial/src/xml/s2b.xml +++ /dev/null @@ -1,83 +0,0 @@ - - - - - - - - - - - - - - - - - - - > - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/packages/muelu/doc/Tutorial/src/xml/s3a.xml b/packages/muelu/doc/Tutorial/src/xml/s3a.xml deleted file mode 100644 index 3302e709839e..000000000000 --- a/packages/muelu/doc/Tutorial/src/xml/s3a.xml +++ /dev/null @@ -1,34 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/packages/muelu/doc/Tutorial/src/xml/s3a_easy.xml b/packages/muelu/doc/Tutorial/src/xml/s3a_easy.xml deleted file mode 100644 index dcd8b2ba8328..000000000000 --- a/packages/muelu/doc/Tutorial/src/xml/s3a_easy.xml +++ /dev/null @@ -1,22 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - diff --git a/packages/muelu/doc/Tutorial/src/xml/s3b.xml b/packages/muelu/doc/Tutorial/src/xml/s3b.xml deleted file mode 100644 index 84b7556fe854..000000000000 --- a/packages/muelu/doc/Tutorial/src/xml/s3b.xml +++ /dev/null @@ -1,66 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/packages/muelu/doc/Tutorial/src/xml/s3b1.xml b/packages/muelu/doc/Tutorial/src/xml/s3b1.xml deleted file mode 100644 index 792cb5ebe38a..000000000000 --- a/packages/muelu/doc/Tutorial/src/xml/s3b1.xml +++ /dev/null @@ -1,66 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/packages/muelu/doc/Tutorial/src/xml/s3b2.xml b/packages/muelu/doc/Tutorial/src/xml/s3b2.xml deleted file mode 100644 index 588c596993b7..000000000000 --- a/packages/muelu/doc/Tutorial/src/xml/s3b2.xml +++ /dev/null @@ -1,66 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/packages/muelu/doc/Tutorial/src/xml/s3b3.xml b/packages/muelu/doc/Tutorial/src/xml/s3b3.xml deleted file mode 100644 index 51e5e069a4f5..000000000000 --- a/packages/muelu/doc/Tutorial/src/xml/s3b3.xml +++ /dev/null @@ -1,66 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/packages/muelu/doc/Tutorial/src/xml/s3b_easy.xml b/packages/muelu/doc/Tutorial/src/xml/s3b_easy.xml deleted file mode 100644 index 0b729300e58d..000000000000 --- a/packages/muelu/doc/Tutorial/src/xml/s3b_easy.xml +++ /dev/null @@ -1,22 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - diff --git a/packages/muelu/doc/Tutorial/src/xml/s3c.xml b/packages/muelu/doc/Tutorial/src/xml/s3c.xml deleted file mode 100644 index 17a487d848ea..000000000000 --- a/packages/muelu/doc/Tutorial/src/xml/s3c.xml +++ /dev/null @@ -1,73 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/packages/muelu/doc/Tutorial/src/xml/s3c_easy.xml b/packages/muelu/doc/Tutorial/src/xml/s3c_easy.xml deleted file mode 100644 index 08d3b8695d69..000000000000 --- a/packages/muelu/doc/Tutorial/src/xml/s3c_easy.xml +++ /dev/null @@ -1,22 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - diff --git a/packages/muelu/doc/Tutorial/src/xml/s4a.xml b/packages/muelu/doc/Tutorial/src/xml/s4a.xml deleted file mode 100644 index 0f63a4171a66..000000000000 --- a/packages/muelu/doc/Tutorial/src/xml/s4a.xml +++ /dev/null @@ -1,72 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/packages/muelu/doc/Tutorial/src/xml/s4av.xml b/packages/muelu/doc/Tutorial/src/xml/s4av.xml deleted file mode 100644 index 904a99aae29b..000000000000 --- a/packages/muelu/doc/Tutorial/src/xml/s4av.xml +++ /dev/null @@ -1,87 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/packages/muelu/doc/Tutorial/src/xml/s4b.xml b/packages/muelu/doc/Tutorial/src/xml/s4b.xml deleted file mode 100644 index da7800e51bb5..000000000000 --- a/packages/muelu/doc/Tutorial/src/xml/s4b.xml +++ /dev/null @@ -1,81 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/packages/muelu/doc/Tutorial/src/xml/s4c.xml b/packages/muelu/doc/Tutorial/src/xml/s4c.xml deleted file mode 100644 index 740c92e44707..000000000000 --- a/packages/muelu/doc/Tutorial/src/xml/s4c.xml +++ /dev/null @@ -1,82 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/packages/muelu/doc/Tutorial/src/xml/s5a.xml b/packages/muelu/doc/Tutorial/src/xml/s5a.xml deleted file mode 100644 index fcba9e41cb26..000000000000 --- a/packages/muelu/doc/Tutorial/src/xml/s5a.xml +++ /dev/null @@ -1,119 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/packages/muelu/doc/Tutorial/src/xml/s5b.xml b/packages/muelu/doc/Tutorial/src/xml/s5b.xml deleted file mode 100755 index 7ac0441b3175..000000000000 --- a/packages/muelu/doc/Tutorial/src/xml/s5b.xml +++ /dev/null @@ -1,184 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - > - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/packages/muelu/doc/Tutorial/src/xml/s6_dep.xml b/packages/muelu/doc/Tutorial/src/xml/s6_dep.xml deleted file mode 100644 index 7bc96244d158..000000000000 --- a/packages/muelu/doc/Tutorial/src/xml/s6_dep.xml +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - - - - - - - - - - - - - - - diff --git a/packages/muelu/doc/Tutorial/src/xml/s6_export.xml b/packages/muelu/doc/Tutorial/src/xml/s6_export.xml deleted file mode 100644 index 328a5c5c1f4f..000000000000 --- a/packages/muelu/doc/Tutorial/src/xml/s6_export.xml +++ /dev/null @@ -1,23 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - diff --git a/packages/muelu/doc/Tutorial/tex/CMakeLists.txt b/packages/muelu/doc/Tutorial/tex/CMakeLists.txt deleted file mode 100644 index d61c3f1428d6..000000000000 --- a/packages/muelu/doc/Tutorial/tex/CMakeLists.txt +++ /dev/null @@ -1,75 +0,0 @@ - -TRIBITS_INCLUDE_DIRECTORIES(${CMAKE_CURRENT_SOURCE_DIR}) - - - #TRIBITS_ADD_EXECUTABLE_AND_TEST( - # tutorial_laplace2d - # SOURCES laplace2d.cpp - # NUM_MPI_PROCS 2 - # COMM mpi serial - #) - - TRIBITS_COPY_FILES_TO_BINARY_DIR(tutorial_generateTutorial - SOURCE_FILES prepareTexTutorial.py main.tex definitions.tex bookstyle.tex - pics/1level_100jac09.png - pics/1level_1000jac09.png - pics/3level_1jac09.png - pics/3level_10jac09.png - pics/3level_100jac09.png - pics/s4bl1.png - pics/s4bl2.png - pics/s4bl3.png - pics/aggsSymm.png - pics/aggsSymmReb.png - pics/aggsNonSymm.png - pics/aggsSymmCoupled.png - pics/1level_1jac09.png - pics/1level_10jac09.png - pics/2level_1jac09.png - pics/2level_10jac09.png - pics/2level_100jac09.png - pics/2level_1000jac09.png - pics/5sweeps_1level_1jac09.png - pics/5sweeps_1level_10jac09.png - pics/5sweeps_1level_100jac09.png - pics/5sweeps_2level_1jac09.png - pics/5sweeps_2level_10jac09.png - pics/5sweeps_2level_100jac09.png - pics/5sweeps_3level_1jac09.png - pics/5sweeps_3level_10jac09.png - pics/5sweeps_3level_100jac09.png - pics/background.pdf - pics/lubuntu_1.png - pics/lubuntu_2.png - pics/lubuntu_3.png - pics/lubuntu_4.png - pics/lubuntu_5.png - pics/lubuntu_6.png - pics/dep_graph.png - pics/installation_1.png - pics/installation_2.png - pics/s4al1.png - pics/s4al2.png - pics/s4al3.png - pics/tut1_1.png - pics/tut1_2.png - pics/tut1_3.png - pics/tut1_4.png - pics/tut1_5.png - pics/tut1_6.png - pics/tut1_7.png - pics/tut1_8.png - pics/tut1_9.png - pics/tut1_10.png - pics/tut1_11.png - pics/tut1_12.png - pics/tut1_13.png - pics/tut1_14.png - pics/tut1_15.png - pics/tut1_16.png - pics/tut1_17.png - pics/tut1_18.png - ) - - - diff --git a/packages/muelu/doc/Tutorial/tex/bookstyle.tex b/packages/muelu/doc/Tutorial/tex/bookstyle.tex deleted file mode 100755 index a6ed6358ecd5..000000000000 --- a/packages/muelu/doc/Tutorial/tex/bookstyle.tex +++ /dev/null @@ -1,408 +0,0 @@ -%---------------------------------------------------------------------------------------- -% VARIOUS REQUIRED PACKAGES -%---------------------------------------------------------------------------------------- - -\usepackage{titlesec} % Allows customization of titles - -\usepackage{graphicx} % Required for including pictures -%\graphicspath{{Pictures/}} % Specifies the directory where pictures are stored - - -\usepackage{tikz} % Required for drawing custom shapes - -\usepackage[english]{babel} % English language/hyphenation - -\usepackage{enumitem} % Customize lists -\setlist{nolistsep} % Reduce spacing between bullet points and numbered lists - -\usepackage{booktabs} % Required for nicer horizontal rules in tables - -\usepackage{eso-pic} % Required for specifying an image background in the title page - -%---------------------------------------------------------------------------------------- -% MAIN TABLE OF CONTENTS -%---------------------------------------------------------------------------------------- - -\usepackage{titletoc} % Required for manipulating the table of contents - -\contentsmargin{0cm} % Removes the default margin -% Chapter text styling -\titlecontents{chapter}[1.25cm] % Indentation -{\addvspace{15pt}\large\sffamily\bfseries} % Spacing and font options for chapters -{\color{ocre!60}\contentslabel[\Large\thecontentslabel]{1.25cm}\color{ocre}} % Chapter number -{} -{\color{ocre!60}\normalsize\sffamily\bfseries\;\titlerule*[.5pc]{.}\;\thecontentspage} % Page number -% Section text styling -\titlecontents{section}[1.25cm] % Indentation -{\addvspace{5pt}\sffamily\bfseries} % Spacing and font options for sections -{\contentslabel[\thecontentslabel]{1.25cm}} % Section number -{} -{\sffamily\hfill\color{black}\thecontentspage} % Page number -[] -% Subsection text styling -\titlecontents{subsection}[1.25cm] % Indentation -{\addvspace{1pt}\sffamily\small} % Spacing and font options for subsections -{\contentslabel[\thecontentslabel]{1.25cm}} % Subsection number -{} -{\sffamily\;\titlerule*[.5pc]{.}\;\thecontentspage} % Page number -[] - -%---------------------------------------------------------------------------------------- -% MINI TABLE OF CONTENTS IN CHAPTER HEADS -%---------------------------------------------------------------------------------------- - -% Section text styling -\titlecontents{lsection}[0em] % Indendating -{\footnotesize\sffamily} % Font settings -{} -{} -{} - -% Subsection text styling -\titlecontents{lsubsection}[.5em] % Indentation -{\normalfont\footnotesize\sffamily} % Font settings -{} -{} -{} - -%---------------------------------------------------------------------------------------- -% PAGE HEADERS -%---------------------------------------------------------------------------------------- - -\usepackage{fancyhdr} % Required for header and footer configuration - -\pagestyle{fancy} -\renewcommand{\chaptermark}[1]{\markboth{\sffamily\normalsize\bfseries\chaptername\ \thechapter.\ #1}{}} % Chapter text font settings -\renewcommand{\sectionmark}[1]{\markright{\sffamily\normalsize\thesection\hspace{5pt}#1}{}} % Section text font settings -\fancyhf{} \fancyhead[LE,RO]{\sffamily\normalsize\thepage} % Font setting for the page number in the header -\fancyhead[LO]{\rightmark} % Print the nearest section name on the left side of odd pages -\fancyhead[RE]{\leftmark} % Print the current chapter name on the right side of even pages -\renewcommand{\headrulewidth}{0.5pt} % Width of the rule under the header -\addtolength{\headheight}{2.5pt} % Increase the spacing around the header slightly -\renewcommand{\footrulewidth}{0pt} % Removes the rule in the footer -\fancypagestyle{plain}{\fancyhead{}\renewcommand{\headrulewidth}{0pt}} % Style for when a plain pagestyle is specified - -% Removes the header from odd empty pages at the end of chapters -\makeatletter -\renewcommand{\cleardoublepage}{ -\clearpage\ifodd\c@page\else -\hbox{} -\vspace*{\fill} -\thispagestyle{empty} -\newpage -\fi} - -%---------------------------------------------------------------------------------------- -% THEOREM STYLES -%---------------------------------------------------------------------------------------- - -\usepackage{amsmath,amsfonts,amssymb,amsthm} % For math equations, theorems, symbols, etc - -\newcommand{\intoo}[2]{\mathopen{]}#1\,;#2\mathclose{[}} -\newcommand{\ud}{\mathop{\mathrm{{}d}}\mathopen{}} -\newcommand{\intff}[2]{\mathopen{[}#1\,;#2\mathclose{]}} -\newtheorem{notation}{Notation}[chapter] - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%%%%%%%%%%%%%%%%%%%% dedicated to boxed/framed environements %%%%%%%%%%%%%% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\newtheoremstyle{ocrenumbox}% % Theorem style name -{0pt}% Space above -{0pt}% Space below -{\normalfont}% % Body font -{}% Indent amount -{\small\bf\sffamily\color{ocre}}% % Theorem head font -{\;}% Punctuation after theorem head -{0.25em}% Space after theorem head -{\small\sffamily\color{ocre}\thmname{#1}\nobreakspace\thmnumber{\@ifnotempty{#1}{}\@upn{#2}}% Theorem text (e.g. Theorem 2.1) -\thmnote{\nobreakspace\the\thm@notefont\sffamily\bfseries\color{black}---\nobreakspace#3.}} % Optional theorem note -\renewcommand{\qedsymbol}{$\blacksquare$}% Optional qed square - -\newtheoremstyle{blacknumex}% Theorem style name -{5pt}% Space above -{5pt}% Space below -{\normalfont}% Body font -{} % Indent amount -{\small\bf\sffamily}% Theorem head font -{\;}% Punctuation after theorem head -{0.25em}% Space after theorem head -{\small\sffamily{\tiny\ensuremath{\blacksquare}}\nobreakspace\thmname{#1}\nobreakspace\thmnumber{\@ifnotempty{#1}{}\@upn{#2}}% Theorem text (e.g. Theorem 2.1) -\thmnote{\nobreakspace\the\thm@notefont\sffamily\bfseries---\nobreakspace#3.}}% Optional theorem note - -\newtheoremstyle{blacknumbox} % Theorem style name -{0pt}% Space above -{0pt}% Space below -{\normalfont}% Body font -{}% Indent amount -{\small\bf\sffamily}% Theorem head font -{\;}% Punctuation after theorem head -{0.25em}% Space after theorem head -{\small\sffamily\thmname{#1}\nobreakspace\thmnumber{\@ifnotempty{#1}{}\@upn{#2}}% Theorem text (e.g. Theorem 2.1) -\thmnote{\nobreakspace\the\thm@notefont\sffamily\bfseries---\nobreakspace#3.}}% Optional theorem note - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%%%%%%%%%%%%% dedicated to non-boxed/non-framed environements %%%%%%%%%%%%% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\newtheoremstyle{ocrenum}% % Theorem style name -{5pt}% Space above -{5pt}% Space below -{\normalfont}% % Body font -{}% Indent amount -{\small\bf\sffamily\color{ocre}}% % Theorem head font -{\;}% Punctuation after theorem head -{0.25em}% Space after theorem head -{\small\sffamily\color{ocre}\thmname{#1}\nobreakspace\thmnumber{\@ifnotempty{#1}{}\@upn{#2}}% Theorem text (e.g. Theorem 2.1) -\thmnote{\nobreakspace\the\thm@notefont\sffamily\bfseries\color{black}---\nobreakspace#3.}} % Optional theorem note -\renewcommand{\qedsymbol}{$\blacksquare$}% Optional qed square -\makeatother - -% Defines the theorem text style for each type of theorem to one of the three styles above -\newcounter{dummy} -\numberwithin{dummy}{section} -\theoremstyle{ocrenumbox} -\newtheorem{theoremeT}[dummy]{Theorem} -\newtheorem{problem}{Problem}[chapter] -\newtheorem{exerciseT}{Exercise}[chapter] -\theoremstyle{blacknumex} -\newtheorem{exampleT}{Example}[chapter] -\theoremstyle{blacknumbox} -\newtheorem{vocabulary}{Vocabulary}[chapter] -\newtheorem{definitionT}{Definition}[section] -\newtheorem{corollaryT}[dummy]{Corollary} -\theoremstyle{ocrenum} -\newtheorem{proposition}[dummy]{Proposition} - -%---------------------------------------------------------------------------------------- -% DEFINITION OF COLORED BOXES -%---------------------------------------------------------------------------------------- - -\RequirePackage[framemethod=default]{mdframed} % Required for creating the theorem, definition, exercise and corollary boxes - -% Theorem box -\newmdenv[skipabove=7pt, -skipbelow=7pt, -backgroundcolor=black!5, -linecolor=ocre, -innerleftmargin=5pt, -innerrightmargin=5pt, -innertopmargin=5pt, -leftmargin=0cm, -rightmargin=0cm, -innerbottommargin=5pt]{tBox} - -% Exercise box -\newmdenv[skipabove=7pt, -skipbelow=7pt, -rightline=false, -leftline=true, -topline=false, -bottomline=false, -backgroundcolor=ocre!10, -linecolor=ocre, -innerleftmargin=5pt, -innerrightmargin=5pt, -innertopmargin=5pt, -innerbottommargin=5pt, -leftmargin=0cm, -rightmargin=0cm, -linewidth=4pt]{eBox} - -% Definition box -\newmdenv[skipabove=7pt, -skipbelow=7pt, -rightline=false, -leftline=true, -topline=false, -bottomline=false, -linecolor=ocre, -innerleftmargin=5pt, -innerrightmargin=5pt, -innertopmargin=0pt, -leftmargin=0cm, -rightmargin=0cm, -linewidth=4pt, -innerbottommargin=0pt]{dBox} - -% Corollary box -\newmdenv[skipabove=7pt, -skipbelow=7pt, -rightline=false, -leftline=true, -topline=false, -bottomline=false, -linecolor=gray, -backgroundcolor=black!5, -innerleftmargin=5pt, -innerrightmargin=5pt, -innertopmargin=5pt, -leftmargin=0cm, -rightmargin=0cm, -linewidth=4pt, -innerbottommargin=5pt]{cBox} - -% Creates an environment for each type of theorem and assigns it a theorem text style from the "Theorem Styles" section above and a colored box from above -\newenvironment{theorem}{\begin{tBox}\begin{theoremeT}}{\end{theoremeT}\end{tBox}} -\newenvironment{exercise}{\begin{eBox}\begin{exerciseT}}{\hfill{\color{ocre}\tiny\ensuremath{\blacksquare}}\end{exerciseT}\end{eBox}} -\newenvironment{definition}{\begin{dBox}\begin{definitionT}}{\end{definitionT}\end{dBox}} -\newenvironment{example}{\begin{exampleT}}{\hfill{\tiny\ensuremath{\blacksquare}}\end{exampleT}} -\newenvironment{corollary}{\begin{cBox}\begin{corollaryT}}{\end{corollaryT}\end{cBox}} - -%---------------------------------------------------------------------------------------- -% REMARK ENVIRONMENT -%---------------------------------------------------------------------------------------- - -\newenvironment{remark}{\par\vspace{10pt}\small % Vertical white space above the remark and smaller font size -\begin{list}{}{ -\leftmargin=35pt % Indentation on the left -\rightmargin=25pt}\item\ignorespaces % Indentation on the right -\makebox[-2.5pt]{\begin{tikzpicture}[overlay] -\node[draw=ocre!60,line width=1pt,circle,fill=ocre!25,font=\sffamily\bfseries,inner sep=2pt,outer sep=0pt] at (-15pt,0pt){\textcolor{ocre}{R}};\end{tikzpicture}} % Orange R in a circle -\advance\baselineskip -1pt}{\end{list}\vskip5pt} % Tighter line spacing and white space after remark - -%---------------------------------------------------------------------------------------- -% SECTION NUMBERING IN THE MARGIN -%---------------------------------------------------------------------------------------- - -\makeatletter -\renewcommand{\@seccntformat}[1]{\llap{\textcolor{ocre}{\csname the#1\endcsname}\hspace{1em}}} -\renewcommand{\section}{\@startsection{section}{1}{\z@} -{-4ex \@plus -1ex \@minus -.4ex} -{1ex \@plus.2ex } -{\normalfont\large\sffamily\bfseries}} -\renewcommand{\subsection}{\@startsection {subsection}{2}{\z@} -{-3ex \@plus -0.1ex \@minus -.4ex} -{0.5ex \@plus.2ex } -{\normalfont\sffamily\bfseries}} -\renewcommand{\subsubsection}{\@startsection {subsubsection}{3}{\z@} -{-2ex \@plus -0.1ex \@minus -.2ex} -{.2ex \@plus.2ex } -{\normalfont\small\sffamily\bfseries}} -\renewcommand\paragraph{\@startsection{paragraph}{4}{\z@} -{-2ex \@plus-.2ex \@minus .2ex} -{.1ex} -{\normalfont\small\sffamily\bfseries}} - -%---------------------------------------------------------------------------------------- -% HYPERLINKS IN THE DOCUMENTS -%---------------------------------------------------------------------------------------- - -% For an unclear reason, the package should be loaded now and not later -\usepackage{hyperref} -\hypersetup{hidelinks,backref=true,pagebackref=true,hyperindex=true,colorlinks=false,breaklinks=true,urlcolor= ocre,bookmarks=true,bookmarksopen=false,pdftitle={Title},pdfauthor={Author}} - -%---------------------------------------------------------------------------------------- -% PART HEADINGS -%---------------------------------------------------------------------------------------- - -\titleformat{\part}[display] %[frame] - {\Huge\color{black}} % format - % label: PART I - { - %\tikzexternaldisable\tikz{% - %\draw[->](0,0) -- (10,-10) -- (5,10); - %} % end tikz - %\tikzexternalenable - }% - {1pt} - { - \tikz{% - %\draw[-,color=black] (0,0.3\textheight) -- (\textwidth,0.3\textheight); - %\draw[-,color=black] (0,0.5\textheight) -- (\textwidth,0.5\textheight); - \node [fill=white,font=\fontsize{35}{35}\selectfont\color{black}] (mid) at (0.5\textwidth, 0.4 \textheight) - {\begin{minipage}{0.8\textwidth}\centering \normalfont\fontsize{35}{35}\sffamily\selectfont #1\end{minipage}}; - \draw[fill=ocre!50!white,color=ocre!50!white,rounded corners=2mm] (0.12\textwidth,0.445\textheight) rectangle ++(1.3cm,1.3cm); - \draw[fill=ocre!40!white,color=ocre!40!white,rounded corners=2mm] (0.22\textwidth,0.445\textheight) rectangle ++(1.3cm,1.3cm); - \draw[fill=ocre!30!white,color=ocre!30!white,rounded corners=2mm] (0.32\textwidth,0.445\textheight) rectangle ++(1.3cm,1.3cm); - \draw[fill=ocre!20!white,color=ocre!20!white,rounded corners=2mm] (0.42\textwidth,0.445\textheight) rectangle ++(1.3cm,1.3cm); - \draw[fill=ocre!10!white,color=ocre!10!white,rounded corners=2mm] (0.52\textwidth,0.445\textheight) rectangle ++(1.3cm,1.3cm); - \draw[fill=gray!10!white,color=gray!10!white,rounded corners=2mm] (0.52\textwidth,0.295\textheight) rectangle ++(1.3cm,1.3cm); - \draw[fill=gray!20!white,color=gray!20!white,rounded corners=2mm] (0.62\textwidth,0.295\textheight) rectangle ++(1.3cm,1.3cm); - \draw[fill=gray!30!white,color=gray!30!white,rounded corners=2mm] (0.72\textwidth,0.295\textheight) rectangle ++(1.3cm,1.3cm); - \draw[fill=gray!40!white,color=gray!40!white,rounded corners=2mm] (0.82\textwidth,0.295\textheight) rectangle ++(1.3cm,1.3cm); - \draw[fill=gray!50!white,color=gray!50!white,rounded corners=2mm] (0.92\textwidth,0.295\textheight) rectangle ++(1.3cm,1.3cm); - } % end tikz - %\partname #1%\IfColorDefined{sectioncolor}{}{}% - } - -%---------------------------------------------------------------------------------------- -% CHAPTER HEADINGS -%---------------------------------------------------------------------------------------- - -% The set-up below should be (sadly) manually adapted to the overall margin page septup controlled by the geometry package loaded in the main.tex document. It is possible to implement below the dimensions used in the goemetry package (top,bottom,left,right)... TO BE DONE - -\newcommand{\thechapterimage}{} -\newcommand{\chapterimage}[1]{\renewcommand{\thechapterimage}{#1}} - -% Numbered chapters with mini tableofcontents -\def\thechapter{\arabic{chapter}} -\def\@makechapterhead#1{ -\thispagestyle{empty} -{\centering \normalfont\sffamily -\ifnum \c@secnumdepth >\m@ne -\if@mainmatter -\startcontents -\begin{tikzpicture}[remember picture,overlay] -\node at (current page.north west) -{\begin{tikzpicture}[remember picture,overlay] -%\node[anchor=north west,inner sep=0pt] at (0,0) {\includegraphics[width=\paperwidth]{\thechapterimage}}; -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% Commenting the 3 lines below removes the small contents box in the chapter heading -%\fill[color=ocre!10!white,opacity=.6,rounded corners=2mm] (13cm,-2cm) rectangle (18cm,-6.5cm); -%\node[anchor=north west] at (13.1cm,-2.35cm) {\parbox[t][5cm][t]{4.5cm}{\huge\bfseries\flushleft \printcontents{l}{1}{\setcounter{tocdepth}{2}}}}; -%\node[anchor=north west] at (13.1cm,-2.2cm) {\textbf{Content:}}; -\draw[anchor=west] (5cm,-9cm) node [rounded corners=20pt,fill=ocre!10!white,text opacity=1,draw=ocre,draw opacity=1,line width=1.5pt,fill opacity=.6,inner sep=12pt]{\huge\sffamily\bfseries\textcolor{black}{\thechapter. #1\strut\makebox[22cm]{}}}; - \draw[fill=ocre!50!white,color=ocre!50!white,rounded corners=2mm] (4,-5) rectangle ++(1.3cm,1.3cm); - \draw[fill=ocre!40!white,color=ocre!40!white,rounded corners=2mm] (5.5,-6.5) rectangle ++(1.3cm,1.3cm); - \draw[fill=ocre!30!white,color=ocre!30!white,rounded corners=2mm] (5.5,-5) rectangle ++(1.3cm,1.3cm); - \draw[fill=ocre!20!white,color=ocre!20!white,rounded corners=2mm] (8.5,-5) rectangle ++(1.3cm,1.3cm); - \draw[fill=ocre!10!white,color=ocre!10!white,rounded corners=2mm] (10,-6.5) rectangle ++(1.3cm,1.3cm); - - \draw[fill=gray!10!white,color=gray!10!white,rounded corners=2mm] (11.5,-6.5) rectangle ++(1.3cm,1.3cm); - \draw[fill=gray!20!white,color=gray!20!white,rounded corners=2mm] (7,-3.5) rectangle ++(1.3cm,1.3cm); - \draw[fill=gray!30!white,color=gray!30!white,rounded corners=2mm] (4,-3.5) rectangle ++(1.3cm,1.3cm); - \draw[fill=gray!40!white,color=gray!40!white,rounded corners=2mm] (7,-6.5) rectangle ++(1.3cm,1.3cm); - \draw[fill=gray!50!white,color=gray!50!white,rounded corners=2mm] (4,-6.5) rectangle ++(1.3cm,1.3cm); - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\end{tikzpicture}}; -\end{tikzpicture}} -\par\vspace*{230\p@} -\fi -\fi} - -% Unnumbered chapters without mini tableofcontents (could be added though) -\def\@makeschapterhead#1{ -\thispagestyle{empty} -{\centering \normalfont\sffamily -\ifnum \c@secnumdepth >\m@ne -\if@mainmatter -\begin{tikzpicture}[remember picture,overlay] -\node at (current page.north west) -{\begin{tikzpicture}[remember picture,overlay] -%\node[anchor=north west,inner sep=0pt] at (0,0) {\includegraphics[width=\paperwidth]{\thechapterimage}}; -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% Commenting the 3 lines below removes the small contents box in the chapter heading -%\fill[color=ocre!10!white,opacity=.6,rounded corners=2mm] (13cm,-2cm) rectangle (18cm,-6.5cm); -%\node[anchor=north west] at (13.1cm,-2.35cm) {\parbox[t][5cm][t]{4.5cm}{\huge\bfseries\flushleft \printcontents{l}{1}{\setcounter{tocdepth}{2}}}}; -%\node[anchor=north west] at (13.1cm,-2.2cm) {\textbf{Content:}}; -\draw[anchor=west] (5cm,-9cm) node [rounded corners=20pt,fill=ocre!10!white,text opacity=1,draw=ocre,draw opacity=1,line width=1.5pt,fill opacity=.6,inner sep=12pt]{\huge\sffamily\bfseries\textcolor{black}{#1\strut\makebox[22cm]{}}}; - \draw[fill=ocre!50!white,color=ocre!50!white,rounded corners=2mm] (4,-5) rectangle ++(1.3cm,1.3cm); - \draw[fill=ocre!40!white,color=ocre!40!white,rounded corners=2mm] (5.5,-6.5) rectangle ++(1.3cm,1.3cm); - \draw[fill=ocre!30!white,color=ocre!30!white,rounded corners=2mm] (5.5,-5) rectangle ++(1.3cm,1.3cm); - \draw[fill=ocre!20!white,color=ocre!20!white,rounded corners=2mm] (8.5,-5) rectangle ++(1.3cm,1.3cm); - \draw[fill=ocre!10!white,color=ocre!10!white,rounded corners=2mm] (10,-6.5) rectangle ++(1.3cm,1.3cm); - - \draw[fill=gray!10!white,color=gray!10!white,rounded corners=2mm] (11.5,-6.5) rectangle ++(1.3cm,1.3cm); - \draw[fill=gray!20!white,color=gray!20!white,rounded corners=2mm] (7,-3.5) rectangle ++(1.3cm,1.3cm); - \draw[fill=gray!30!white,color=gray!30!white,rounded corners=2mm] (4,-3.5) rectangle ++(1.3cm,1.3cm); - \draw[fill=gray!40!white,color=gray!40!white,rounded corners=2mm] (7,-6.5) rectangle ++(1.3cm,1.3cm); - \draw[fill=gray!50!white,color=gray!50!white,rounded corners=2mm] (4,-6.5) rectangle ++(1.3cm,1.3cm); - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\end{tikzpicture}}; -\end{tikzpicture}} -\par\vspace*{230\p@} -\fi -\fi -} -\makeatother \ No newline at end of file diff --git a/packages/muelu/doc/Tutorial/tex/definitions.tex b/packages/muelu/doc/Tutorial/tex/definitions.tex deleted file mode 100644 index 5268dc614c80..000000000000 --- a/packages/muelu/doc/Tutorial/tex/definitions.tex +++ /dev/null @@ -1,52 +0,0 @@ -\newcommand{\amesos} {\textsc{Amesos}\xspace} -\newcommand{\amesostwo} {\textsc{Amesos2}\xspace} -\newcommand{\anasazi} {\textsc{Anasazi}\xspace} -\newcommand{\aztecoo} {\textsc{AztecOO}\xspace} -\newcommand{\belos} {\textsc{Belos}\xspace} -\newcommand{\epetra} {\textsc{Epetra}\xspace} -\newcommand{\epetraext} {\textsc{EpetraExt}\xspace} -\newcommand{\galeri} {\textsc{Galeri}\xspace} -\newcommand{\ifpack} {\textsc{Ifpack}\xspace} -\newcommand{\ifpacktwo} {\textsc{Ifpack2}\xspace} -\newcommand{\isorropia} {\textsc{Isorropia}\xspace} -\newcommand{\loca} {\textsc{Loca}\xspace} -\newcommand{\ml} {\textsc{ML}\xspace} -\newcommand{\muelu} {\textsc{MueLu}\xspace} -\newcommand{\nox} {\textsc{NOX}\xspace} -\newcommand{\stratimikos} {\textsc{Stratimikos}\xspace} -\newcommand{\teuchos} {\textsc{Teuchos}\xspace} -\newcommand{\teko} {\textsc{Teko}\xspace} -\newcommand{\thyra} {\textsc{Thyra}\xspace} -\newcommand{\tpetra} {\textsc{Tpetra}\xspace} -\newcommand{\trilinos} {\textsc{Trilinos}\xspace} -\newcommand{\xpetra} {\textsc{Xpetra}\xspace} -\newcommand{\zoltan} {\textsc{Zoltan}\xspace} -\newcommand{\zoltantwo} {\textsc{Zoltan2}\xspace} - - -\newcommand{\klu} {\textsc{Klu}\xspace} -\newcommand{\metis} {\textsc{Metis}\xspace} -\newcommand{\mumps} {\textsc{Mumps}\xspace} -\newcommand{\umfpack} {\textsc{Umfpack}\xspace} -\newcommand{\superlu} {\textsc{SuperLU}\xspace} -\newcommand{\superludist} {\textsc{SuperLU\_dist}\xspace} -\newcommand{\parmetis} {\textsc{ParMetis}\xspace} -\newcommand{\paraview} {\textsc{ParaView}\xspace} - -\newcommand{\parameterlist}{\texttt{ParameterList}\xspace} - -\newcommand \trilinosWeb {trilinos.sandia.gov\xspace} - -%\newcommand{\be} {\begin{enumerate}} -%\newcommand{\ee} {\end{enumerate}} -%\newcommand{\cba}[3]{\choicebox{\texttt{#1}}{[{\texttt #2}] #3}} -%\newcommand{\cbb}[4]{\choicebox{\texttt{#1}}{[{\texttt #2}] #4 {\bf Default:~}#3.}} -%\newcommand{\cbc}[4]{\choicebox{\texttt{\color{red}#1}}{[{\texttt #2}] #4 {\bf Default:~}#3.}} -% -%\newcommand{\comm}[2]{\bigskip -% \begin{tabular}{|p{4.5in}|}\hline -% \multicolumn{1}{|c|}{{\bf Comment by #1}}\\ \hline -% #2\\ \hline -% \end{tabular}\\ -% \bigskip -% } diff --git a/packages/muelu/doc/Tutorial/tex/main.tex b/packages/muelu/doc/Tutorial/tex/main.tex deleted file mode 100644 index feae3cdb5f2e..000000000000 --- a/packages/muelu/doc/Tutorial/tex/main.tex +++ /dev/null @@ -1,3520 +0,0 @@ - -%\documentclass{article} -\documentclass[10pt,fleqn]{book} -\usepackage[top=3cm,bottom=3cm,left=3.2cm,right=3.2cm,headsep=10pt,a4paper]{geometry} % Page margins - -\usepackage{xcolor} % Required for specifying colors by name -\definecolor{ocre}{RGB}{243,102,25} % Define the orange color used for highlighting throughout the book - -% Font Settings -\usepackage{avant} % Use the Avantgarde font for headings -%\usepackage{times} % Use the Times font for headings -%\usepackage{mathptmx} % Use the Adobe Times Roman as the default text font together with math symbols from the Symbol, Chancery and Computer Modern fonts - -\usepackage{microtype} % Slightly tweak font spacing for aesthetics - -\usepackage[latin1]{inputenc} -\usepackage[T1]{fontenc} -\usepackage{xspace} -\usepackage{amsmath} -\usepackage{amsfonts} -\usepackage{amssymb} -\usepackage{makeidx} -\usepackage{amsthm} -\usepackage{pifont} -\usepackage{listings} -\usepackage{calc} -\usepackage{subfigure} - -\usepackage{flowchart} % also loads tikz -\usepackage{tikz} -\usetikzlibrary{arrows,shapes,positioning,calc} -\usepackage{dot2texi} - -\usepackage[explicit]{titlesec} -\usepackage{titletoc} -\usepackage{keystroke} - -\input{bookstyle} - -% -\definecolor{hellgelb}{rgb}{1,1,0.8} -\definecolor{hellgrau}{rgb}{0.9,0.9,0.9} -\definecolor{hellblau}{HTML}{B0FAFF} -\definecolor{hellgruen}{HTML}{C2FFA4} -\definecolor{hellrot}{HTML}{FFA4C2} -\definecolor{colKeys}{rgb}{0,0,1} -\definecolor{colIdentifier}{rgb}{0,0,0} -\definecolor{colComments}{rgb}{1,0,0} -\definecolor{colString}{rgb}{0,0.5,0} - -\lstset{% - float=hbp,% - basicstyle=\ttfamily\small, % - identifierstyle=\color{colIdentifier}, % - keywordstyle=\color{colKeys}, % - stringstyle=\color{colString}, % - commentstyle=\color{colComments}, % - columns=flexible, % - tabsize=2, % - frame=single, % - extendedchars=true, % - showspaces=false, % - showstringspaces=false, % - numbers=left, % - numberstyle=\tiny, % - breaklines=true, % - backgroundcolor=\color{ocre!20!white}, % - breakautoindent=true, % - captionpos=b% -} - - -\newtheorem*{mycomment}{\ding{42}} -\newtheoremstyle{plain} - {\topsep} % ABOVESPACE - {\topsep} % BELOWSPACE - {\normalfont} % BODYFONT - {0pt} % INDENT (empty value is the same as 0pt) - {\bfseries} % HEADFONT - {} % HEADPUNCT - {5pt plus 1pt minus 1pt} % HEADSPACE - {} % CUSTOM-HEAD-SPEC - - -\definecolor{MyGray}{rgb}{0.96,0.97,0.98} -\makeatletter\newenvironment{graybox}{% - \noindent\begin{lrbox}{\@tempboxa}\begin{minipage}{0.95\textwidth}}{\end{minipage}\end{lrbox}% - \colorbox{MyGray}{\usebox{\@tempboxa}} -}\makeatother - -\newcommand\printScreenOutput[1]{ -\lstinputlisting[firstline=2]{#1} -{\vspace{-0.3cm}\hfill\tiny{created with \muelu version \input{version.txt}}} -} - -\providecommand\printCppListing[1]{ -\lstinputlisting[language=C++]{#1} -%{\vspace{-0.3cm}\hfill\tiny{created with \muelu version \input{version.txt}}} -} -\providecommand\printCppListingSkipLine[1]{ -\lstinputlisting[language=C++,firstline=2]{#1} -%{\vspace{-0.3cm}\hfill\tiny{created with \muelu version \input{version.txt}}} -} - -\providecommand\printError[1]{ -\begin{lstlisting} -#1 -\end{lstlisting} -} - -\title{A MueLu hands-on tutorial} -\author{Tobias A. Wiesner \\ - Institute for Computational Mechanics \\ - Technische Universit\"at M\"unchen \\ - Boltzmannstr. 15 \\ - 85747 Garching - \and -Michael W. Gee\\ -Mechanics \& High Performance Computing Group \\ - Technische Universit\"at M\"unchen \\ - Parkring 35 \\ - 85748 Garching - \and -Andrey Prokopenko \\ -Scalable Algorithms \\ -Sandia National Laboratories\\ -Mailstop 1318 \\ -P.O.~Box 5800 \\ -Albuquerque, NM 87185-1318\\ -\and -Jonathan J. Hu \\ -Scalable Algorithms \\ -Sandia National Laboratories\\ -Mailstop 9159 \\ -P.O.~Box 0969 \\ -Livermore, CA 94551-0969 - } - -\date{\today} - -\begin{document} - -\include{definitions} - -%---------------------------------------------------------------------------------------- -% TITLE PAGE -%---------------------------------------------------------------------------------------- - -\begingroup -\thispagestyle{empty} -\AddToShipoutPicture*{\put(6,5){\includegraphics[scale=1]{pics/background}}} % Image background -\centering -\vspace*{9cm} -\par\normalfont\fontsize{35}{35}\sffamily\selectfont -The \muelu tutorial \par % Book title -\vspace*{1cm} -{\Huge \parbox{10cm}{Tobias Wiesner\newline Michael Gee \newline Andrey Prokopenko \newline Jonathan Hu}}\par % Author name -\endgroup - -%---------------------------------------------------------------------------------------- -% COPYRIGHT PAGE -%---------------------------------------------------------------------------------------- - -\newpage -~\vfill -\thispagestyle{empty} - -\noindent \textbf{Tobias A. Wiesner} \\ -Institute for Computational Mechanics \\ -Technische Universit\"at M\"unchen \\ -Boltzmannstr. 15 \\ -85747 Garching\\ -Germany\\ - -\noindent \textbf{Michael W. Gee}\\ -Mechanics \& High Performance Computing Group \\ -Technische Universit\"at M\"unchen \\ -Parkring 35 \\ -85748 Garching\\ -Germany\\ - -\noindent \textbf{Andrey Prokopenko} \\ -Scalable Algorithms \\ -Sandia National Laboratories\\ -Mailstop 1318 \\ -P.O.~Box 5800 \\ -Albuquerque, NM 87185-1318\\ - -\noindent \textbf{Jonathan J. Hu} \\ -Scalable Algorithms \\ -Sandia National Laboratories\\ -Mailstop 9159 \\ -P.O.~Box 0969 \\ -Livermore, CA 94551-0969\\ - -\noindent Sandia National Laboratories is a multimission laboratory -managed and operated by National Technology \& Engineering Solutions -of Sandia, LLC, a wholly owned subsidiary of Honeywell International -Inc., for the U.S. Department of Energy’s National Nuclear Security -Administration under contract DE-NA0003525. - - -%\noindent Copyright \copyright\ 2013 John Smith\\ % Copyright notice -% -%\noindent \textsc{Published by Publisher}\\ % Publisher -% - -% - - -%\noindent Licensed under the Creative Commons Attribution-NonCommercial 3.0 Unported License (the ``License''). You may not use this file except in compliance with the License. You may obtain a copy of the License at \url{http://creativecommons.org/licenses/by-nc/3.0}. Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \textsc{``as is'' basis, without warranties or conditions of any kind}, either express or implied. See the License for the specific language governing permissions and limitations under the License.\\ % License information - -\noindent \textsc{http://trilinos.org/packages/muelu/}\\ % URL - -\noindent \textit{SAND2014-18624 R} - -\noindent \textit{First printing, September 2014} % Printing/edition date - -\noindent {\tiny{\textit{Version: \input{version.txt}}}} - -\chapter*{Preface} - -\section*{Idea and concept} -The \muelu tutorial is written as a hands-on tutorial for \muelu, the next generation multigrid framework in \trilinos. It covers the whole spectrum from absolute beginners' topics to expert level. Since the focus of this tutorial is on practical and technical aspects of multigrid methods in general and \muelu in particular, the reader is expected to have a basic understanding of multigrid methods and its general underlying concepts. Please refer to multigrid textbooks (e.g. \cite{briggs}) for the theoretical background. - -\subsection*{Content} -The tutorial is split into three parts. The first part contains four tutorials for beginners who are interested in using multigrid methods. -No knowledge about C++ is required if the programs are used that come with the tutorial (in the \trilinos repository). If one uses the virtual box image one can even avoid the \trilinos compilation process. -So, the tutorials in the first part can also be used for teaching purposes. One can easily study the smoothing effect of multigrid smoothers and perform some very basic experiments which helps to gain a better understanding of multigrid methods. In the quick start tutorial all steps are documented step by step such that it should be very easy to follow the tutorial. Different exercises may encourage the reader for performing some more experiments and tests. The following tutorials give an overview of the existing level smoothers and transfer operators that can easily be used with the simple XML format \muelu uses for defining the multigrid hierarchies. In addition, it is explained how to visualize the aggregates and export the multigrid levels for a more in-depth analysis. - -The second part consists of five tutorials which are for users which are interested in some more background on the underlying techniques that are used in \muelu. The user still does not need explicit knowledge of C++ or any other programming language, but some interest in object-oriented design concepts may be helpful to understand the factory concept. The focus of the second part is on the introduction of the advanced XML interface for \muelu which describes all internal building blocks of the multigrid setup procedures with its internal dependencies. In context of transfer operator smoothing a brief introduction of the theory is given with some in-depth details on the algorithmic design in \muelu. More advanced topics such as rebalancing are handled as well as aggregation strategies. Additional exercises help the reader to perform some experiments in practice. - -The third part is meant for expert users who want to use \muelu within their own software. Many detailed C++ examples show how to use \muelu from an user application as preconditioner for a Krylov subspace method or as a standalone multigrid solver. We expect the reader to be familiar with \trilinos, especially with the linear algebra packages \epetra and \tpetra as well as the linear solver packages \aztecoo or \belos. For users who are already using \ml, the predecessor multigrid package of \muelu in \trilinos, we provide a chapter describing the migration process from \ml to \muelu. - -\section*{References} - -For a complete overview of all features and available parameters in \muelu the reader may refer to the \muelu user guide \cite{Mue}. For the most current version of \muelu it is recommended to visit the homepage -\begin{verbatim} -http://trilinos.org/packages/muelu/ -\end{verbatim} -If you find errors in this tutorial, please contact the \muelu user list -\begin{verbatim} -muelu-users@software.sandia.gov -\end{verbatim} - -\section*{Acknowledgments} -Many people have helped to develop \muelu, and we would like to acknowledge their contributions: Tom Benson, Julian Cortial, Jeremie Gaidamour, Axel Gerstenberger, Chetan Jhurani, Mark Hoemmen, Jonathan Hu, Paul Lin, Eric Phipps, Andrey Prokopenko, Chris Siefert, Paul Tsuji, Ray Tuminaro, and Tobias Wiesner. - -\part{Beginners tutorial} - -\lstset{ - breaklines=true, % sets automatic line breaking -} - - - -%\chapterimage{chapter_head_1.pdf} % Table of contents heading image -\chapterimage{pics/ch_bg1_small.png} % Table of contents heading image -\chapter{Quick start} - -The first example is meant to quickly get into touch with \muelu. - -\section{Example problem} -\label{lab:examplesym} -We generate a test matrix corresponding to the stencil of a 2D Laplacian operator on a structured Cartesian grid. The matrix stencil is -\begin{equation} -\label{lab:eq1} -\frac{1}{h^2}\begin{pmatrix} & -1 & \\ -1 & 4 & -1 \\ & -1 & \end{pmatrix}, -\end{equation} -where $h$ denotes the mesh size parameter. -The resulting matrix is symmetric positive definite. We choose the right hand side to be the constant vector one and use a random initial guess for the iterative solution process. The problem domain is the unit square with a Cartesian (uniform) mesh. - -\section{User interface} -For this tutorial there is an easy-to-use user interface to perform some experiments with multigrid methods for the given problem as described in \S\ref{lab:examplesym}. -To use the user-interface run -\begin{verbatim} -./hands-on.py -\end{verbatim} -in a terminal in the \texttt{doc/Tutorial/src} folder. - -First one has to choose a problem. For this tutorial the right choice is the option 0 for the Laplace 2D problem on a $50\times 50$ mesh. -\begin{center}\includegraphics[width=10cm]{pics/tut1_1.png} \end{center} - -Next one has to choose a xml file with the multigrid parameters. Choose option 2 and put in \texttt{xml/s1\_easy.xml} as filename for the xml file containing the xml parameters that are used for the multigrid method. -\begin{mycomment} -Please make sure that you enter a filename that actually exists on your hard disk! -\end{mycomment} - -\begin{center}\includegraphics[width=10cm]{pics/tut1_3.png} \end{center} - -The \texttt{s1\_easy.xml} file has the following content -\small -\lstinputlisting{../src/xml/s1_easy.xml} -\normalsize -As one can easily find from the xml parameters, a multigrid method with not more than 3 levels and a damped Jacobi method for level smoothing shall be used. - -Next, choose option 0 and run the example. That is, the linear system is created and iteratively solved both by a preconditioned CG method (from the \aztecoo package) with a \muelu multigrid preconditioner and a standalone multigrid solver (again using \muelu) with the given multigrid parameters. -\begin{center}\includegraphics[width=10cm]{pics/tut1_4.png} \end{center} -Note that the line \texttt{mpirun -np 2 MueLu\_tutorial\_laplace2d.exe --nx ...} is the command that is executed in the background. Per default are 2 processors used. - -After pressing a key we are ready for a first analysis as it is stated by the green letters \textit{Results up to date!} -\begin{center}\includegraphics[width=10cm]{pics/tut1_5.png} \end{center} -\begin{mycomment} -If the results are not up to date always choose option 0 first to recalculate the results. -\end{mycomment} - -To check the output select option 1 and you should find the following screen output: - -\printScreenOutput{s1_easy.txt_3.fragment_1.fragment} - -\begin{mycomment} -Depending on the number of lines in your terminal you may have to scroll up to the top of the file. -\end{mycomment} - -These lines give you some information about the setup process with some details on the aggregation process and the transfer operators. Note that for this example three levels are built (Level 0 for the finest level, level 1 as inter-medium level and level 2 for the coarsest level). Then an overview of the different multigrid levels is given by - -\printScreenOutput{s1_easy.txt_3.fragment_3.fragment} - -One can see that a three level multigrid method is used with a direct solver on the coarsest level and Jacobi level smoothers on the fine and inter-medium level. Furthermore some basic information is printed such as the operator complexity. - -In the end the CG convergence is printed when applying the generated multigrid method as preconditioner within a CG solver from the \aztecoo package in \trilinos. -The numbers give the relative residual after the corresponding number of iterations as well as the solution time in seconds. -\printScreenOutput{s1_easy.txt_5.fragment} - -Selecting option 6 gives you four plots. -\begin{center}\includegraphics[width=10cm]{pics/tut1_6.png} \end{center} -The lower left plot shows the exact solution of the linear system (using a direct solver from the \amesos package). The lower right plot shows the multigrid solution when 1 sweep with a V-cycle of the multigrid method as defined in the xml parameter file is applied to the linear system as a standalone multigrid solver. As one can see, the multigrid solution with a random initial guess is far away from the exact solution. The upper left plot shows the difference between the multigrid solution and the exact solution. Finally, the upper right plot shows the distribution of the fine level mesh nodes over the processors (in our example we use 2 processors). - -\begin{mycomment} -Note, that the plots do not show the solution of the preconditioned CG method! The solution of the CG method is always exact up to a given tolerance as long as the multigrid preconditioner is sufficient. This can be checked by the screen output under option 1. -\end{mycomment} - -As a first experiment we change the number of multigrid sweeps for the stand alone multigrid smoother. Let's choose option 5 and use 10 multigrid sweeps. -\begin{center}\includegraphics[width=10cm]{pics/tut1_7.png} \end{center} -Then, do not forget to rerun the examples to update the results. That is, choose option 0 and wait for the simulation to finish. Then plot again the results using menu option 6 and you should obtain -\begin{center}\includegraphics[width=10cm]{pics/tut1_8.png} \end{center} -As one can see is the multigrid solution rather close to the exact solution. In the error plot one finds some low and high frequency error components. - -\begin{exercise} -Change the number of processors. Use option 4 and select for example 4 processors (instead of 2). Rerun the example and plot the results. -\begin{center}\includegraphics[width=10cm]{pics/tut1_9.png} \end{center} -\end{exercise} -\begin{exercise} -Compare the output when using 4 processors with the output for only 2 processors. Is the number of aggregates changing? Is there some effect on the quality of the multigrid solution. How does the number and convergence history change for the preconditioned CG method? -\end{exercise} -\begin{exercise} -Choose option 9 to close the program. -\end{exercise} - -\section{The XML input deck -- multigrid parameters} - -After we have learned the basics of the driver program for our experiments we now perform some experiments with our multigrid methods. We again use the simple 2D Laplace problem. First, we create a copy of the solver parameters using -\begin{verbatim} -cp xml/s1_easy.xml mysolver.xml -\end{verbatim} -Then, we run the driver program again using -\begin{verbatim} -./hands-on.sh -\end{verbatim} -and choose option 0 for the 2D Laplace example on the $50\times 50$ mesh. Use the xml parameters from the \texttt{mysolver.xml} file, that is, choose option 2 and put in \texttt{mysolver.xml}. Make sure that the problem can be solved with the parameters (option 0) and verify the solver output. - -Once that is done it is time for some first experiments. Open you \texttt{mysolver.xml} file in a text editor. You can try option 3 for doing that, but alternatively you can also do it by hand choosing your favorite text editor. - -\begin{center}\includegraphics[width=\textwidth]{pics/tut1_10.png} \end{center} - -Now, let's change the maximum number of multigrid levels from 3 to 10 in the xml file, that is, change the value of the parameter \textit{max levels} from 3 to 10. Do not forget to save the file and rerun the example by choosing option 0 in the driver program. -The screen output should be the following - -\printScreenOutput{s1_easy_10levels.txt_3.fragment_3.fragment} - -Note that even though we allow for at maximum 10 multigrid levels the coarsening process stops after level 4. The reason is that the linear operator on multigrid level 4 has only 4 lines and therefore is smaller than the \texttt{coarse: max size} parameter in the xml parameter list which defines the maximum size of the linear operator on the coarsest level. - - -\begin{exercise} -How do you have to choose the \texttt{coarse: max size} parameter to obtain a 3 level multigrid method again? Increase the parameter accordingly, rerun the simulation and check your results. -\end{exercise} -\begin{exercise} -What happens if you allow only for a 1 level method (i.e., no multigrid)? How does this affect the preconditioned CG method? -\end{exercise} - -The option \texttt{sa} for \textit{smoothed aggregation} in the \texttt{multigrid algorithm} parameter can be considered to be optimal for symmetric positive definite problems. We can compare it with the option \texttt{unsmoothed} as a robust but slower alternative. Let's choose a 3 level multigrid method with unsmoothed transfer operators (i.e., \texttt{max levels = 3}, \texttt{multigrid algorithm = unsmoothed}), then we obtain -\printScreenOutput{s1_easy_3levels_unsmoothed.txt_5.fragment} - -Compared with the smoothed aggregation method (\texttt{multigrid algorithm = sa}) which uses some smoothed transfer operator basis functions within the multigrid method, the unsmoothed multigrid algorithm needs a significantly higher number of iterations. -The same method with smoothed transfer operator basis functions gives -\printScreenOutput{s1_easy_3levels_smoothed.txt_5.fragment} -\begin{mycomment} -You can find the corresponding xml files also in \texttt{xml/s1\_easy\_3levels\_unsmoothed.xml} and \texttt{xml/s1\_easy\_3levels\_smoothed.xml}. -\end{mycomment} - -\begin{exercise} -Compare the screen output of the unsmoothed multigrid method and the smoothed aggregation multigrid method. Which parts are missing in the multigrid setup for the unsmoothed multigrid method? How does the multigrid method affect the aggregates? -\end{exercise} -\begin{exercise} -Performing 10 multigrid sweeps both with the unsmoothed and the smoothed aggregation multigrid method gives the following error plots - \begin{center}\includegraphics[width=8cm]{pics/tut1_11.png} -\includegraphics[width=8cm]{pics/tut1_12.png} \end{center} - Which one belongs to the unsmoothed multigrid method? -\end{exercise} - -\chapter{Level smoothers} - -From the last tutorial we have learned that the used multigrid algorithm may have a significant influence in the convergence speed. When comparing the error plots for the standalone multigrid smoothers with unsmoothed and smoothed aggregation multigrid one finds also a notable difference in the ``smoothness'' of the error. - -\section{Background on multigrid methods} -Obviously there are cases where some highly oscillatory error modes are left and overlaying some low frequency modes. In other cases there are only low frequency error modes left. Theses are basically the two typical cases one might find in practice. - -Multigrid methods are based on the fact, that (cheap) level smoothing method often are able to smooth out high oscillatory error components whereas they cannot reduce low frequency error components very well. These low frequency error components then are transferred to a coarse level where they can be seen as high frequency error component for a level smoother on the coarse level. - -One should not forget that for an efficient multigrid method both the so-called coarse level correction method and the level smoothers have to work together. That is, one has to choose the right multigrid method (e.g., \texttt{unsmoothed} or \texttt{sa}) in combination with an appropriate level smoothing strategy. - -\section{Example} -In context of multigrid level smoothers we have to define both the level smoothers and the coarse solver. Usually, a direct solver is used as coarse solver that is applied to the coarsest multigrid levels. However, it is also possible to apply any other kind of iterative smoothing method or even no solver at all (even though this would be non-standard). The following XML file shows how to use a Jacobi smoother both for level smoothing and as coarse solver. -\lstinputlisting{../src/xml/s1_easy_jacobi.xml} -The corresponding multigrid hierarchy is -\printScreenOutput{s1_easy_jacobi.txt_3.fragment_3.fragment} - -Figures \ref{fig:1vcycles} and \ref{fig:5vcycles} show the multigrid effect of different number of Jacobi smoothers on all multigrid levels. - -One has even more fine-grained control over pre- and post-smoothing. -\lstinputlisting{../src/xml/s1_easy_jacobi2.xml} -This produces the following multigrid hierarchy -\printScreenOutput{s1_easy_jacobi2.txt_3.fragment_3.fragment} - -\begin{mycomment} -Note that the relaxation based methods provided by the \ifpack package are embedded in an outer additive Schwarz method. -\end{mycomment} - -Of course, there exist other smoother methods such as polynomial smoothers (Chebyshev) and ILU based methods. -A detailed overview of the different available smoothers can be found in the \muelu users guide (\cite{Mue}). - - -\begin{figure} -\subfigure[1 level with 1 Jacobi sweep ($\omega=0.9$)\label{fig:2dlap111}]{\includegraphics[width=0.3\textwidth]{pics/1level_1jac09.png}}\hspace{0.03\textwidth} -\subfigure[1 level with 10 Jacobi sweeps ($\omega=0.9$)\label{fig:2dlap1110}]{\includegraphics[width=0.3\textwidth]{pics/1level_10jac09.png}}\hspace{0.03\textwidth} -\subfigure[1 level with 100 Jacobi sweeps ($\omega=0.9$)\label{fig:2dlap11100}]{\includegraphics[width=0.3\textwidth]{pics/1level_100jac09.png}} \\ -\subfigure[2 level with 1 Jacobi sweep ($\omega=0.9$)\label{fig:2dlap121}]{\includegraphics[width=0.3\textwidth]{pics/2level_1jac09.png}}\hspace{0.03\textwidth} -\subfigure[2 level with 10 Jacobi sweeps ($\omega=0.9$)\label{fig:2dlap1210}]{\includegraphics[width=0.3\textwidth]{pics/2level_10jac09.png}}\hspace{0.03\textwidth} -\subfigure[2 level with 100 Jacobi sweeps ($\omega=0.9$)\label{fig:2dlap12100}]{\includegraphics[width=0.3\textwidth]{pics/2level_100jac09.png}} \\ -\subfigure[3 level with 1 Jacobi sweep ($\omega=0.9$)\label{fig:2dlap131}]{\includegraphics[width=0.3\textwidth]{pics/3level_1jac09.png}}\hspace{0.03\textwidth} -\subfigure[3 level with 10 Jacobi sweeps ($\omega=0.9$)\label{fig:2dlap1310}]{\includegraphics[width=0.3\textwidth]{pics/3level_10jac09.png}}\hspace{0.03\textwidth} -\subfigure[3 level with 100 Jacobi sweeps ($\omega=0.9$)\label{fig:2dlap13100}]{\includegraphics[width=0.3\textwidth]{pics/3level_100jac09.png}} \\ -\caption{2D Laplace equation on $50\times 50$ mesh after 1 V-cycle with an AMG multigrid solver and Jacobi smoothers on all multigrid levels. (2 processors)} -\label{fig:1vcycles} -\end{figure} - - -\begin{figure} -\subfigure[1 level with 1 Jacobi sweep ($\omega=0.9$)\label{fig:2dlap511}]{\includegraphics[width=0.3\textwidth]{pics/5sweeps_1level_1jac09.png}}\hspace{0.03\textwidth} -\subfigure[1 level with 10 Jacobi sweeps ($\omega=0.9$)\label{fig:2dlap5110}]{\includegraphics[width=0.3\textwidth]{pics/5sweeps_1level_10jac09.png}}\hspace{0.03\textwidth} -\subfigure[1 level with 100 Jacobi sweeps ($\omega=0.9$)\label{fig:2dlap51100}]{\includegraphics[width=0.3\textwidth]{pics/5sweeps_1level_100jac09.png}} \\ -\subfigure[2 level with 1 Jacobi sweep ($\omega=0.9$)\label{fig:2dlap521}]{\includegraphics[width=0.3\textwidth]{pics/5sweeps_2level_1jac09.png}}\hspace{0.03\textwidth} -\subfigure[2 level with 10 Jacobi sweeps ($\omega=0.9$)\label{fig:2dlap5210}]{\includegraphics[width=0.3\textwidth]{pics/5sweeps_2level_10jac09.png}}\hspace{0.03\textwidth} -\subfigure[2 level with 100 Jacobi sweeps ($\omega=0.9$)\label{fig:2dlap52100}]{\includegraphics[width=0.3\textwidth]{pics/5sweeps_2level_100jac09.png}} \\ -\subfigure[3 level with 1 Jacobi sweep ($\omega=0.9$)\label{fig:2dlap531}]{\includegraphics[width=0.3\textwidth]{pics/5sweeps_3level_1jac09.png}}\hspace{0.03\textwidth} -\subfigure[3 level with 10 Jacobi sweeps ($\omega=0.9$)\label{fig:2dlap5310}]{\includegraphics[width=0.3\textwidth]{pics/5sweeps_3level_10jac09.png}}\hspace{0.03\textwidth} -\subfigure[3 level with 100 Jacobi sweeps ($\omega=0.9$)\label{fig:2dlap53100}]{\includegraphics[width=0.3\textwidth]{pics/5sweeps_3level_100jac09.png}} \\ -\caption{2D Laplace equation on $50\times 50$ mesh after 5 V-cycle with an AMG multigrid solver and Jacobi smoothers on all multigrid levels. (2 processors)} -\label{fig:5vcycles} -\end{figure} - -\begin{exercise} -Play around with the smoother parameters and study their effect on the error plot and the convergence of the preconditioned cg method. For all available smoothing options and parameters refer to the \muelu user guide (\cite{Mue}). Hint: use \texttt{unsmoothed} transfer operator basis functions (i.e., \texttt{multigrid algorithm = unsmoothed}) to highlight the effect of the level smoothers. -\end{exercise} -\begin{exercise} -Use the following parameters to solve the $50\times 50$ Laplace 2D problem on 2 processors - \lstinputlisting{../src/xml/s1_easy_exercise.xml} - That is, we change to smoothed aggregation AMG. You can find the xml file also in \texttt{xml/s1\_easy\_exercise.xml}. - Run the example on 2 processors and check the number of linear iterations and the solver timings in the screen output. - Can you find smoother parameters which reduce the number of iterations? Can you find smoother parameters which reduce the iteration timings? -\end{exercise} - -\chapter{Multigrid for non-symmetric problems} - -\section{Test example} -\label{sec:recircexample} -The \texttt{Recirc2D} example uses a matrix corresponding to the finite-difference discretization of the problem -\begin{displaymath} --\varepsilon\Delta u + (v_x,v_y)\cdot \nabla u=f -\end{displaymath} -on the unit square, with $\varepsilon=1e-5$ and homogeneous Dirichlet boundary conditions. It is $v_x=4x(x-1)(1-2y)$ and $v_y=-4y(y-1)(1-2x)$. -The right hand side vector $f$ is chosen to be the constant vector 1. Due to the convective term the resulting linear system is non-symmetric and therefore more challenging for the iterative solver. The multigrid algorithm has to be adapted to the non-symmetry to obtain good convergence behavior. - -\section{User interface} - -For this tutorial again we can use the easy-to-use user interface. Run the \texttt{hands-on.py} script in your terminal and choose option 2 for the \texttt{Recirc 2D} example on a $50\times 50$ mesh. -Note that the default values from the file \texttt{xml/s2a.xml} do not lead to a convergent multigrid preconditioner. -\begin{center}\includegraphics[width=10cm]{pics/tut1_13.png} \end{center} - -The convergence of the used unsmoothed transfer operators (\texttt{multigrid algorithm = unsmoothed}) is not optimal. In case of symmetric problems one can reduce the number of iterations using smoothed aggregation algebraic multigrid methods. In context of non-symmetric problems, especially when arising from problems with (highly) convective phenomena, one should use a Petrov-Galerkin approach for smoothing the prolongation and restriction operators more carefully. - -In \muelu one can choose a Petrov-Galerkin approach for the transfer operators by setting \texttt{multigrid algorithm = pg}. Furthermore, one has to state that the system is non-symmetric by setting \texttt{problem: symmetric = false}. In addition you have to set \texttt{transpose: use implicit = false} to make sure that the prolongation and restriction are built separately. This is highly important for non-symmetric problems since $R=P^T$ is not a good choice for non-symmetric problems (see, e.g., \cite{sala2008,wiesner2013}). - -The role of the \texttt{transpose: use implicit} and the \texttt{problem: symmetric} paramters are the following: -\begin{description} -\item[transpose: use implicit] Use $R=P^T$ for the restriction operator and do not explicitly build the operator $R$. This can save a lot of memory and might be very performant when building the multigrid Galerkin product. However, for non-symmetric problems this is not working and has to be turned off. -\item[problem: symmetric] If \texttt{true}, use $R=P^T$ as restriction operator. Depending on the \texttt{transpose: use implicit} parameter the restriction operator is explicitly built. If \texttt{false} a Petrov-Galerkin approach as described in \cite{sala2008} is used to build the restriction operator separately. Note, that for the Galerkin approach it is necessary to build the restriction operator explicitly and store it. -\end{description} - -\begin{mycomment} -One can also use unsmoothed transfer operators (\texttt{multigrid algorithm = unsmoothed}) for non-symmetric problems. These might not give optimal results with respect to the iteration count, but they can be used with \texttt{transpose: use implicit = true} for non-symmetric problems, too, without disturbing the convergence. This way one can save a significant amount of memory compared to the smoothed aggregation method with Petrov-Galerkin for non-symmetric problems. -\end{mycomment} - -\begin{exercise} Choose the parameters from the \texttt{n1\_easy.xml} file. If you run the example you might find that the GMRES method did not converge within 50 iterations. Use \texttt{multigrid algorithm = pg} and compare the results with \texttt{multigrid algorithm = unsmoothed}. Do not forget to set the other parameters correctly for Petrov-Galerkin methods as described before. What is the difference in the number of GMRES iterations? What is changing in the multigrid setup? -\end{exercise} -\begin{exercise} -For slightly non-symmetric problems the \texttt{sa} method often performs satisfactorily. Change the verbosity to high (\texttt{verbosity = high}) and compare the results of the \texttt{multigrid algorithm = pg} option with the \texttt{multigrid algorithm = sa} option. Check the role of the \texttt{transpose: use implicit} parameter. What is changed by the \texttt{problem: symmetric} parameter? Try different values between 0 and 1.5 for the damping parameter within the smoothed aggregation method (i.e., try values 0.0, 0.5, 1.0, 1.33 and 1.5 for \texttt{sa: damping factor}). What do you observe? -\end{exercise} - -\chapter{Useful tools for analysis} - -\section{Visualization of aggregates} - -\subsection{Technical prerequisites} -\muelu allows to export plain aggregation information in simple text files that have to be interpreted by some post-processing scripts to generate pictures from the raw data. The post-processing script provided with the \muelu tutorial is written in python and produces VTK output. Please make sure that you have all necessary python packages installed on your machine (including \verb|python-vtk|). - -\begin{mycomment} -The visualization script has successfully been tested with VTK 5.x. Note that it is not compatible to VTK 6.x. -\end{mycomment} - -\subsection{Visualization of aggregates with \muelu using VTK} -We can visualize the aggregates using the vtk file format and paraview. First add the parameter \texttt{aggregation: export visualization data = true} to the list of aggregation parameters. Use, e.g., the following xml file -\lstinputlisting{../src/xml/n2_easy_agg.xml} -The file is stored in \texttt{xml/n2\_easy\_agg.xml}. - -Run the \texttt{hands-on.py} script and select, e.g., the Laplace 2D example on a $50\times 50$ mesh. Select above xml file for the multigrid parameters with the \texttt{aggregation: export visualization data} enabled. Run the program and then choose option 8 for post-processing the aggregates. -\begin{center}\includegraphics[width=10cm]{pics/tut1_14.png} \end{center} -\begin{mycomment} -Be aware that without \texttt{aggregation: export visualization data = true} the post processing step for the aggregates will fail. -\end{mycomment} - -Once the visualization data is exported and post-processed you can run \texttt{paraview} (if it is installed on your machine) and open the files \texttt{aggs0.vtp} and \texttt{aggs1.vtp} for visualization. - -Start \verb|paraview| and open the files \texttt{aggs0.vtp} and/or \texttt{aggs1.vtp}. Do not forget to press the \verb|Apply| button to show the aggregates on screen. -\begin{center}\includegraphics[width=\textwidth]{pics/tut1_17.png} \end{center} -Then the aggregates should be visualized as follows. -\begin{center}\includegraphics[width=\textwidth]{pics/tut1_18.png} \end{center} -Here the colors represent the unique aggregate id. You can change the coloring in the left column from \verb|Ids| to \verb|proc| which denotes the owning processor of the aggregate. - -Figure \ref{fig:symAggs} shows the aggregates for the Laplace2D problem on the different multigrid levels starting with an isotropic $50\times 50$ mesh. No dropping of small entries was used when building the matrix graph (\texttt{aggregation: drop tol=0.0}). For visualization purposes the ``midpoint'' of each aggregate defines the coordinate of the supernode on the next coarser level. Be aware that these supernodes are purely algebraic. There is no coarse mesh for algebraic multigrid methods. As one can see from the colors an uncoupled aggregation strategy has been applied using 2 processors. The aggregates do not cross the processor boundaries. - -\begin{figure} -\centering -\includegraphics[width=0.7\textwidth]{pics/aggsSymm.png} -\caption{Aggregates for Laplace2D example on $50\times 50$ mesh without dropping.} -\label{fig:symAggs} -\end{figure} - -\begin{exercise} -Repeat above steps for the \verb|Recirc2D| example on a $50\times 50$ mesh. Compare the aggregates from the \verb|xml/n2_easy_agg.xml| parameter file with the aggregates when using the \verb|xml/n2_easy_agg2.xml| parameter file, which drops some small entries of the fine level matrix $A$ when building the graph. -\end{exercise} -\begin{exercise} -Vary the number of processors. Do not forget to export the aggregation data (option 7) after the simulation has rerun with a new number of processors. In \verb|paraview| choose the variable \verb|proc| for the coloring. Then the color denotes the processor the aggregate belongs to. How do the aggregates change when switching from 2 to 3 processors? -% \item Try the solver parameters from \verb|xml/s4c.xml| vor the \verb|Recirc2D| example on a $50\times 50$ mesh and compare them with the results for the \verb|xml/s4a.xml| and \verb|xml/s4b.xml| parameters. Which differences do you observe? -\end{exercise} - -Figure \ref{fig:nonsymAggs} shows the aggregates for the Recirc2D problem. When building the matrix graph, entries with values smaller than $0.01$ were dropped. Obviously the shape of the aggregates follows the direction of convection of the example. Using an uncoupled aggregation method (i.e., \texttt{aggregation: type = uncoupled}) as default the aggregates do not cross processor boundaries. -\begin{figure} -\centering -\includegraphics[width=0.7\textwidth]{pics/aggsNonSymm.png} -\caption{Aggregates for Recirc2D example on $50\times 50$ mesh with dropping.} -\label{fig:nonsymAggs} -\end{figure} - -\paragraph{Note on coupled aggregation strategy:} -Comparing Figures \ref{fig:symAggs} and \ref{fig:nonsymAggsCoupled} one finds the difference between the \verb|uncoupled| and the \verb|coupled| aggregation method (\texttt{aggregation: type}). For the \verb|coupled| aggregation strategy the aggregates can overlap processor boundaries. -\begin{figure} -\centering -\includegraphics[width=0.7\textwidth]{pics/aggsSymmCoupled.png} -\caption{Aggregates for Laplace2D example on $50\times 50$ mesh without dropping using a coupled aggregation strategy.} -\label{fig:nonsymAggsCoupled} -\end{figure} - -\begin{mycomment} -Using the \verb|coupled| aggregation in general is not recommended, since -\begin{itemize} -\item[-] the aggregation routine itself needs some global communication, -\item[-] building the tentative prolongation operator from the aggregates needs some global communication, -\item[-] prolongator smoothing is more expensive due to a higher overlap. -\end{itemize} -The implementation of a \verb|coupled| aggregation method is much more complicated and therefore error-prone and less robust. -\end{mycomment} - - - -\section{Export data} -\label{sec:exportdatasimple} -For debugging purposes it can be very helpful to have a look at the coarse level matrices as well as the transfer operators. \muelu allows to export the corresponding operators to the matrix market format such that the files can be imported, e.g., into MATLAB (or FreeMat\footnote{In the virtual image you find a FreeMat installation (\texttt{http://freemat.sourceforge.net/}).}) for some in-depth analysis. - -Using the following xml file writes the fine level operator and the coarse level operator as well as the prolongation and restriction operator to the hard disk using the filenames \texttt{A\_0.m}, \texttt{A\_1.m} as well as \texttt{P\_1.m} and \texttt{R\_1.m} -\lstinputlisting{../src/xml/n2_easy_export.xml} -\begin{mycomment} -Be aware that there is no prolongator and restrictor on the finest level (level 0) since the transfer operators between level $\ell$ and $\ell+1$ are always associated with the coarse level $\ell +1$ (for technical reasons). So, be not confused if there is no \texttt{P\_0.m} and \texttt{R\_0.m}. Only the operators are written to external files which really exist and are requested in the corresponding list in the xml parameters. -\end{mycomment} - -The exported files can easily imported into MATLAB and used for some in-depth analysis (determining the eigenvalue spectrum, sparsity pattern,\ldots). - -\chapter{Challenge: CD example} - -\section{Practical example} - -Often one has only very rough information about the linear system that is supposed to be effectively solved using iterative methods with multigrid preconditioners. Therefore, it is highly essential to gain some experience with the solver and preconditioner parameters and learn to optimize the multigrid parameters just by looking at the convergence behavior of the linear solver. - -Here, we consider a convection-diffusion example with $16641$ degrees of freedom. No further information is provided (geometry, discretization technique, \ldots). - -\section{User-interface} -Run the \verb|hands-on.sh| script and choose the option 4 for the convection-diffusion example. The script automatically generates a XML file with reference multigrid parameters which are far from being optimal. -\begin{center}\includegraphics[width=10cm]{pics/tut1_16.png} \end{center} - -When using the reference settings for the multigrid preconditioner we need 94 linear iterations. The challenge is to find optimized multigrid settings which results in a significantly lower number of linear iterations and -- even more important -- a lower computational time. - -\begin{mycomment} -Please notice that we have automatically chosen GMRES as solver as the linear systems arising from convection-diffusion problems are non-symmetric (due to the convective term). A CG methods would not converge. -\end{mycomment} - -\begin{exercise} -Open the \verb|condif2d_parameters.xml| file by pressing option 3. Try to find optimized multigrid settings using your knowledge from the previous tutorials. Save the file and rerun the example (using option 0). Compare your results with the reference results. With option 6 you can plot the convergence of the relative residual of the iterative solver (for comparison). -\end{exercise} - -\section{General hints} -\label{sec:generalhings} -There is a very simple strategy for optimizing the solver and preconditioner parameters iteratively that works for many examples surprisingly well. - -\subsection{Linear solver settings} -The parameters for the linear solver usually are fixed. Just make sure that you consider the non-symmetry in the choice of your iterative method and choose the solver tolerance in a reasonable way. Before you think about finding good preconditioner parameters you should be absolutely sure that your linear solver is chosen appropriately for your problem. - -\subsection{General multigrid settings} -Next, one should choose the multigrid settings. This includes the desired number of multigrid levels and the stopping criterion for the coarsening process. An appropriate choice here is mainly dominated by the size of the problem and the discretization. The multigrid parameters should be chosen such that one obtains a reasonably small problem on the coarsest level which is solved directly. - -\subsection{Transfer operators} -Then, one should think about the transfer operators. In the symmetric case one can try smoothed aggregation transfer operators. If unsure, the non-smooth transfer operators always should be a safe and robust starting point. - -\subsection{Level smoothers} -Once the multigrid skeleton is fixed by the choice of transfer operators one can start with optimizing the level smoothers. When using relaxation based level smoothers one should first try different smoothing parameters and increase the number of smoothing sweeps only when necessary. - -\subsection{Fine tuning} -Sometimes it is very helpful to have a look at the multigrid matrices. -First of all, one should check whether the aggregation is working properly. This can be done by checking the screen output for the coarsening rate and the aggregation details (this is often the only way to do it if aggregates cannot be visualized due to missing node coordinates). If there is some problem with the aggregation one should try to adapt the aggregation parameters. Here it might make sense to export the coarse level matrices first and study their properties. For finding aggregation parameters one should, e.g., check the number of non-zeros in each row and choose the minimum aggregation size accordingly. - -\part{Advanced topics} - -\chapter{XML interface for advanced users} - -This tutorial introduces the more advanced (and more flexible) XML interface that can be used for setting up multigrid hierarchies in \muelu. -Again we use the 2D Laplace problem on a $50\times 50$ mesh as introduced in \S\ref{lab:examplesym}. That is, in the \verb|hands-on.py| script you have to choose option 0 for the problem type. - - -\section{One-level method} -Before applying a multigrid method as solver, we start with a simple Jacobi iteration as solver and look at the error. By setting the maximum number of multigrid levels to 1 and using a Jacobi smoother as coarse solver we obtain a pseudo multigrid method which corresponds to a simple Jacobi iteration. - -\lstinputlisting{../src/xml/s2_adv_a.xml} - -The advanced XML format is more hierarchical in the structure. Each XML file in the advanced format consists of two major blocks. First there is a set of ``Factory'' blocks which describe the building blocks within your multigrid methods. In above example there is only one building block specified for the Jacobi method. Each building block needs a (unique) name. In above example the building block has the name \textit{myJacobi}. It is a factory of type \verb|TrilinosSmoother| and describes a damped Jacobi method as declared by the internal parameters. - -Later we will see examples for other building blocks describing transfer operators or the aggregation strategy. -In the ``Factories'' list, the user has to declare all building blocks of the multigrid method that are used for the setup. The user cannot specify all building blocks involved in the setup process. \muelu will take care of that and use default building blocks for all parts of the setup process where the user makes no explicit statement. This way the user only has to describe what he explicitly needs. - -It is not sufficient just to declare some building blocks. One also has to register them in the setup process. This is done in the second part of the XML file. The so-called \textit{Hierarchy} block describes the setup process. First there are some basic multigrid parameters that are well-known from the easy XML interface (cf. the previous tutorials). Then, there is an additional list of parameters \textit{All} which encapsulates the information which factory block is responsible to provide certain data. In above example you can see, that the building block \textit{myJacobi} shall be used both for the level smoother and the coarse solver. Since it is only a 1 level problem it would be sufficient to define a coarse solver only. -The name of the parameter list \textit{All} can be chosen by the user. It basically describes the user-specified parts of the setup process for all multigrid levels. In this case we just overwrite the internal default factories both for the level smoother and the coarse solver by our Jacobi smoother. -\begin{mycomment} -Be aware that we can have different parameter list sets for different levels, that is, we can use different factories on certain levels. -\end{mycomment} - -\begin{exercise} -Run the \verb|hands-on.py| script and choose the XML file \texttt{xml/s2\_adv\_a.xml} which contains above XML parameters. Use only 1 processor and visualize the error for an increasing number of multigrid cycles (e.g. 1, 5, 10, 30, 100). What do you observe? -\end{exercise} -\begin{exercise} -Note that the relaxation based smoothers are based on a Schwarz method (see \ifpack documentation). Repeat above steps using 2 processors. What do you observe in the error plots? -\end{exercise} - -\section{Multigrid method} -The next step is to introduce a full multigrid algorithm. First one should increase the number of multigrid levels. Second, we switch to a direct solver on the coarsest level.\\ - -\begin{exercise} -Create your own copy of the \texttt{xml/s2\_adv\_a.xml} parameter file. Adapt it to obtain a 3 level multigrid method. Check how this affects the error plots. -\end{exercise} -\begin{exercise} -Change to a direct solver on the coarsest level. You can do this by using \texttt{} in the \textit{Hierarchy} block of the xml file. Check the output of the multigrid hierarchy. -\end{exercise} - -\section{Level smoothers} -\label{sec:advLevelSmoothers} -Next, we give some building blocks for different types of level smoothers that you can use. Note that all these xml blocks can be put into the \textit{Factories} block of the advanced \muelu XML file format. Then you can use them by adding the corresponding link into the \textit{Hierarchy} block using the name of the parameter block. - -\subsection{Standard level smoothers} - -Here is a list of the standard level smoothers and how to define them in the XML format. All these standard smoothers are generated by the \texttt{TrilinosSmoother} factory class (set in the \texttt{factory} parameter in the xml snippets below). - -\begin{itemize} - -\item Chebyshev smoother: -\begin{lstlisting} - - - - - - > - - - - - -\end{lstlisting} -\item Jacobi smoother: -\begin{lstlisting} - - - - - - - - - -\end{lstlisting} -\item Gauss--Seidel smoother variants: -\begin{lstlisting} - - - - - - - - - -\end{lstlisting} - -\begin{lstlisting} - - - - - - - - - - - -\end{lstlisting} - -\begin{lstlisting} - - - - - - - - - - - -\end{lstlisting} -\item ILU smoothers: -\begin{lstlisting} - - - - - - - -\end{lstlisting} -Above listing shows how to create an ILU(0) level smoother (using Ifpack). Please refer to the Ifpack documentation of all parameters on how to choose, e.g. overlapping. - -\begin{remark} -There is an inconsistency between \texttt{Ifpack} (for the \texttt{Epetra} stack) and \texttt{Ifpack2} (for the \texttt{Tpetra} stack) with respect to the \texttt{type} parameter in above listing. Not all types of ILU methods available in \texttt{Ifpack} are available in \texttt{Ifpack2} and vice versa. \texttt{Ifpack2} has an implementation of ILUT (\texttt{type = ILUT}), but there ILUT parameters may also be slightly different. Please check and adapt the parameters if you switch between the \texttt{Epetra} and \texttt{Tpetra} stack. Please refer to the \texttt{Ifpack} and \texttt{Ifpack2} documentation for the details -\end{remark} - -For Ifpack2 ILUT you can use, e.g., the following settings -\begin{lstlisting} - - - - - - - -\end{lstlisting} - -In Ifpack the parameters might be -\begin{lstlisting} - - - - - - - -\end{lstlisting} -\end{itemize} - -\begin{exercise} -Pick out one level smoother from above and use them for your problem. Note that you may have to adapt the \texttt{relaxation: damping factor} for reasonable results. -\end{exercise} - -\subsection{Level smoothers for the Epetra and Tpetra stack} - -Generally, the \texttt{TrilinosSmoother} factory class tries to provide the same set of standard level smoothers for the \texttt{Epetra} and \texttt{Tpetra} stack as far as possible. Under the hood it uses \texttt{Ifpack} and \texttt{Ifpack2}. -\texttt{MueLu} partially tries to internally translate the parameters from \texttt{Ifpack2} to \texttt{Ifpack}, but this is not always possible and error-prone. The available values for the \texttt{type} parameter are \texttt{RELAXATION}, \texttt{CHEBYSHEV}, \texttt{ILUT}, \texttt{RILUK} and \texttt{ILU}. - -\begin{remark} -In order to define a multigrid hierarchy that is working for both the \texttt{Epetra} and \texttt{Tpetra} stack it is recommended to use \texttt{CHEBYSHEV} or \texttt{RELAXATION} based smoothers. -\end{remark} - -The \texttt{TrilinosSmoother} factory may provide support more types of smoothers, but these have to be considered as experimental and often are only available for the \texttt{Tpetra} branch. Please check the source code for a list of all available smoothers and options. More advanced smoothing strategies will also introduced later in this guide (e.g. line smoothing in Section \ref{sec:linesmoothing}). - -\section{Advanced features} -\muelu allows full control over the behavior of the multigrid levels. Here, we demonstrate the capabilities of \muelu using the level smoothers. -Take a look at the following example XML parameter list -\lstinputlisting{../src/xml/s2_adv_b.xml} - -You can find the parameters in \texttt{xml/s2\_adv\_b.xml}. We have one building block \textit{BackwardGaussSeidel} representing the level smoother that we want to use in our multigrid hierarchy. As one can see from the \textit{Hierarchy} block we request a 4 level multigrid method. There are two blocks called \textit{Finest} and \textit{Remaining} describing the behavior of the different multigrid levels. Note the \texttt{startLevel} parameter in the block \textit{Remaining}. This parameter is missing in the \textit{Finest} block (where it is assumed to be the default value which is zero). That is, in this example we use the backward Gauss--Seidel method as pre-smoother on the finest level (note the keyword \textit{NoFactory} for \texttt{PostSmoother}). The parameter \texttt{startLevel=1} in the \textit{Remaining} block means that for level 1 and all coarser levels (unless there is another block with \texttt{startLevel > 1}) the building blocks from \textit{Remaining} shall be used for the multigrid setup. -That is, on the multigrid levels 1 and 2 the backward Gauss--Seidel method is used for post smoothing only. The corresponding multigrid hierarchy has the form -\printScreenOutput{s2_adv_b.txt_3.fragment_3.fragment} - -\begin{exercise} - Create an XML file in advanced format which produces the following multigrid layout - \printScreenOutput{s2_adv_c.txt_3.fragment_3.fragment}. - - Hint: create a copy of the file \texttt{xml/s2\_adv\_b.xml} and extend it accordingly. A possible solution can be found in \texttt{xml/s2\_adv\_c.xml}. -\end{exercise} - - -\chapter{\muelu factories for transfer operators} - -For this example we reuse the \verb|Recirc2D| example as introduced in \S\ref{sec:recircexample}. The resulting linear systems are (slightly) non-symmetric and classical smoothed aggregation methods may be able to solve the problem but are not optimal in sense of convergence. - -\section{Multigrid setup phase -- algorithmic design} - -Smoothed aggregation based algebraic multigrid methods originally have not been designed for non-symmetric linear systems. Inappropriately smoothed transfer operators may significantly deteriorate the convergence rate or even break convergence completely. - -\subsection{Unsmoothed transfer operators} -Before we introduce smoothed aggregation methods for non-symmetric linear systems we first go back one step and demonstrate how to use non-smoothed transfer operators which are eligible for non-symmetric linear systems. Figure \ref{fig:simpledesignnonsmoothed} gives a simplified example how to build the coarse level matrix $A_c$ using the fine level matrix $A$ only. First, we ``somehow'' build aggregates using the information of the fine level matrix $A$. The aggregates are then used to build the tentative non-smoothed prolongation operator. The restrictor is just the transpose of the (tentative) prolongator and finally the coarse level matrix $A_c$ is calculated by the triple product $A_c=RAP$. - -In Figure \ref{fig:simpledesignsaamg} the \verb|SaPFactory| has been added after the \verb|TentativePFactory|. Therein the non-smoothed transfer operator from the \verb|TentativePFactory| is smoothed using information of the fine level matrix $A$. This transfer operator design is used per default when the user does not specify its own transfer operator design. The default settings are optimal for symmetric positive definite systems. However for our non-symmetric problem they might be problematic. - -\begin{figure} -\subfigure[Non-smoothed aggregation based AMG\label{fig:simpledesignnonsmoothed}]{ -\scalebox{0.5}{ -\begin{tikzpicture}[>=latex',font={\sf \small}, node distance=2cm] -\def\datawidth{2cm} -\def\dataheight{0.5cm} -\def\factorywidth{4cm} -\def\factoryheight{0.75cm} -%\draw[help lines] (-10,-10) grid (10,10); -\begin{scope}[>=triangle 60] -\node(A) at (-3,10) [draw, terminal, minimum width=\datawidth, minimum height=\dataheight]{$A$}; -\node(nothing) at (-3,8) [draw, process, minimum width=\factorywidth, minimum height=\factoryheight]{...}; -\node [draw, process, minimum width=\factorywidth, minimum height=\factoryheight, below of=nothing] (AggregationFactory) {AggregationFactory}; -\node [draw, process, minimum width=\factorywidth, minimum height=\factoryheight, below of=AggregationFactory] (TentativePFactory) {TentativePFactory}; -\node [draw, process, minimum width=\factorywidth, minimum height=\factoryheight, right of=TentativePFactory,node distance=6cm] (TransPFactory) {TransPFactory}; -\node [draw, process, minimum width=\factorywidth, minimum height=\factoryheight, below of=TentativePFactory] (RAPFactory) {RAPFactory}; -\node(A2) at (-3,0) [draw, terminal, minimum width=\datawidth, minimum height=\dataheight]{$A_c$}; -\draw[->] (A) -- (nothing); -\draw[->] (nothing) -- (AggregationFactory); -\draw[->] (A) to[out=180,in=180] node [near start, left] {} (TentativePFactory); -\draw[->] (A) to[out=180,in=180] node [near start, left] {} (RAPFactory); -\draw[->] (AggregationFactory) -- node [near start, left] {Aggregates} (TentativePFactory); -\draw[->] (TentativePFactory) -- node [near start, below] {P} (TransPFactory); -\draw[->] (TentativePFactory) -- node [near start, left] {P} (RAPFactory); -\draw[->] (TransPFactory) -- node [near start, below] {R} (RAPFactory); -\draw[->] (RAPFactory) -- node [near start, below] {} (A2); -\end{scope} -\end{tikzpicture} -} % end scalebox -} % end subfigure 1 -\subfigure[Smoothed aggregation AMG (SA-AMG)\label{fig:simpledesignsaamg}]{ -\scalebox{0.5}{ -\begin{tikzpicture}[>=latex',font={\sf \small}, node distance=2cm] -\def\datawidth{2cm} -\def\dataheight{0.5cm} -\def\factorywidth{4cm} -\def\factoryheight{0.75cm} -%\draw[help lines] (-10,-10) grid (10,10); -\begin{scope}[>=triangle 60] -\node(A) at (-3,10) [draw, terminal, minimum width=\datawidth, minimum height=\dataheight]{$A$}; -\node(nothing) at (-3,8) [draw, process, minimum width=\factorywidth, minimum height=\factoryheight]{...}; -\node [draw, process, minimum width=\factorywidth, minimum height=\factoryheight, below of=nothing] (AggregationFactory) {AggregationFactory}; -\node [draw, process, minimum width=\factorywidth, minimum height=\factoryheight, below of=AggregationFactory] (TentativePFactory) {TentativePFactory}; -\node [draw, process, minimum width=\factorywidth, minimum height=\factoryheight, below of=TentativePFactory] (SaPFactory) {SaPFactory}; -\node [draw, process, minimum width=\factorywidth, minimum height=\factoryheight, right of=SaPFactory,node distance=6cm] (TransPFactory) {TransPFactory}; -\node [draw, process, minimum width=\factorywidth, minimum height=\factoryheight, below of=SaPFactory] (RAPFactory) {RAPFactory}; -\node(A2) at (-3,-2) [draw, terminal, minimum width=\datawidth, minimum height=\dataheight]{$A_c$}; -\draw[->] (A) -- (nothing); -\draw[->] (nothing) -- (AggregationFactory); -\draw[->] (A) to[out=180,in=180] node [near start, left] {} (TentativePFactory); -\draw[->] (A) to[out=180,in=180] node [near start, left] {} (SaPFactory); -\draw[->] (A) to[out=180,in=180] node [near start, left] {} (RAPFactory); -\draw[->] (AggregationFactory) -- node [near start, left] {Aggregates} (TentativePFactory); -\draw[->] (TentativePFactory) -- node [near start, left] {P} (SaPFactory); -\draw[->] (SaPFactory) -- node [near start, below] {P} (TransPFactory); -\draw[->] (SaPFactory) -- node [near start, left] {P} (RAPFactory); -\draw[->] (TransPFactory) -- node [near start, below] {R} (RAPFactory); -\draw[->] (RAPFactory) -- node [near start, below] {} (A2); -\end{scope} -\end{tikzpicture} -} % end scalebox -} % end subfigure 2 -\caption{Simple factory design for aggregation based algebraic multigrid methods.} -\label{fig:simpledesign} -\end{figure} - - -\subsection{Smoothed transfer operators for non-symmetric systems} -In case of non-symmetric linear systems it is $A\neq A^T$. Therefore it is a bad idea just to use the transposed of the smoothed prolongation operator for the restrictor. Let $\widehat{P}$ be the non-smoothed tentative prolongation operator. Then the smoothed prolongation operator $P$ is built using -\begin{displaymath} -P = \bigl(I-\omega A\bigr) \widehat{P}, -\end{displaymath} -with some reasonable smoothing parameter $\omega>0$. -The standard restrictor is -\begin{displaymath} -R = P^T = \widehat{P}^T - \omega \widehat{P}^T A^T = \widehat{P}^T\bigl(I-\omega A^T\bigr). -\end{displaymath} -That is, the restrictor would be smoothed using the information of $A^T$. However, for non-symmetric systems we want to use the information of matrix $A$ for smoothing the restriction operator, too. The restriction operator shall we built by the formula -\begin{displaymath} -R = P^T = \widehat{P}^T - \omega \widehat{P}^T A. -\end{displaymath} -This corresponds to apply the same smoothing strategy to the non-smoothed restriction operator $\widehat{R}=\widehat{P}^T$ which is applied to the (tentative) prolongation operator with using $A^T$ as input instead of matrix $A$. Figure \ref{fig:simpledesignpgamg} shows the changed factory design. The dashed line denotes, that the same smoothing strategy is used than for the prolongation operator. The concept is known as Petrov-Galerkin smoothed aggregation approach in the literature. -A more advanced transfer operator smoothing strategy for non-symmetric linear systems that is based on the Petrov-Galerkin approach is described in \cite{sala2008}. Another approach based on SchurComplement approximations can be found in \cite{wiesner2013}. - -\begin{figure} -\begin{center} -\scalebox{0.5}{ -\begin{tikzpicture}[>=latex',font={\sf \small}, node distance=2cm] -\def\datawidth{2cm} -\def\dataheight{0.5cm} -\def\factorywidth{4cm} -\def\factoryheight{0.75cm} -%\draw[help lines] (-10,-10) grid (10,10); -\begin{scope}[>=triangle 60] -\node(A) at (-3,10) [draw, terminal, minimum width=\datawidth, minimum height=\dataheight]{$A$}; -\node(nothing) at (-3,8) [draw, process, minimum width=\factorywidth, minimum height=\factoryheight]{...}; -\node [draw, process, minimum width=\factorywidth, minimum height=\factoryheight, below of=nothing] (AggregationFactory) {AggregationFactory}; -\node [draw, process, minimum width=\factorywidth, minimum height=\factoryheight, below of=AggregationFactory] (TentativePFactory) {TentativePFactory}; -\node [draw, process, minimum width=\factorywidth, minimum height=\factoryheight, below of=TentativePFactory] (SaPFactory) {SaPFactory}; -\node [draw, process, minimum width=\factorywidth, minimum height=\factoryheight, right of=SaPFactory,node distance=6cm] (GenericRFactory) {GenericRFactory}; -\node [draw, process, minimum width=\factorywidth, minimum height=\factoryheight, below of=SaPFactory] (RAPFactory) {RAPFactory}; -\node(A2) at (-3,-2) [draw, terminal, minimum width=\datawidth, minimum height=\dataheight]{$A_c$}; -\draw[->] (A) -- (nothing); -\draw[->] (nothing) -- (AggregationFactory); -\draw[->] (A) to[out=180,in=180] node [near start, left] {} (TentativePFactory); -\draw[->] (A) to[out=180,in=180] node [near start, left] {} (SaPFactory); -\draw[->] (A) to[out=180,in=180] node [near start, left] {} (RAPFactory); -\draw[->] (A) to[out=0,in=90] node [near end, right] {$A^T$} (GenericRFactory); -\draw[->] (AggregationFactory) -- node [near start, left] {Aggregates} (TentativePFactory); -\draw[->] (TentativePFactory) -- node [near start, left] {P} (SaPFactory); -\draw[->,dashed] (SaPFactory) -- node [near start, below] {} (GenericRFactory); -\draw[->] (SaPFactory) -- node [near start, left] {P} (RAPFactory); -\draw[->] (GenericRFactory) -- node [near start, below] {R} (RAPFactory); -\draw[->] (RAPFactory) -- node [near start, below] {} (A2); -\end{scope} -\end{tikzpicture} -} % end scalebox -\end{center} -\caption{Simple factory design for smoothed aggregation based algebraic multigrid methods for non-symmetric systems.} -\label{fig:simpledesignpgamg} -\end{figure} - -\section{XML interface} - -\subsection{Unsmoothed transfer operators} -To construct a multigrid hierarchy with unsmoothed transfer operators one can use the following XML file (stored in \texttt{xml/s3a.xml}) - -\lstinputlisting{../src/xml/s3a.xml} - -Beside the \verb|TentativePFactory| which is responsible to generate the unsmoothed transfer operators we also introduce the \verb|UncoupledAggregationFactory| with this example. In the \textit{Factories} section of the XML file you find both an entry for the aggregation factory and the prolongation operator factory with its parameters. In the \textit{Hierarchy} section the defined factories are just put in into the multigrid setup algorithm. That is, the factory with the name \verb|UncoupledAggregationFact| is used to generate the \verb|Aggregates| and the \verb|myTentativePFact| is responsible for generating both the (unsmoothed) prolongation operator \verb|P| and the (coarse) near null space vectors \verb|Nullspace|.\\ - -\begin{mycomment} -Be aware that it is highly important not to forget to register the \verb|myTentativePFact| object for generating null space \verb|Nullspace|. It is not visualized in the dependency trees, but the \verb|TentativePFactory| factory both generates the unsmoothed prolongation operator and the set of near null space vectors for the coarse level. So, if you declare your own explicit instance of a \verb|TentativePFactory| you \textbf{always have to register} it for the near null space, too. In general it is a good idea to register a factory in the \textit{Hierarchy} sublist for all output variables of the factory. -\end{mycomment} - -\begin{mycomment} -For some more details about the (hidden) \texttt{NullspaceFactory} which is internally used to handle the null space information and the dependencies, the reader might refer to Section \ref{sec:blocktransfersetup}. -\end{mycomment} - -\begin{mycomment} -Note that one can also use the \verb|Ptent| variable for registering a \verb|TentativePFactory|. This makes the \verb|TentativePFactory| somewhat special in its central role for generating an aggregation based multigrid hierarchy. \muelu is smart enough to understand that you want to use the near null space vectors generated by the factory registered as \verb|Ptent| for setting up the transfer operators. - -That is, the following code would explicitly use the \verb|TentativePFactory| object that is created as \verb|myTentativePFact|. Since no factory is specified for the prolongation operator \verb|P| \muelu would decide to use a smoothed aggregation prolongation operator (represented by the \verb|SaPFactory|) which correctly uses the factory for \verb|Ptent| for the unsmoothed transfers with all its dependencies. -\begin{lstlisting} - - - - - - - - - - - - - -\end{lstlisting} - -\end{mycomment} - -\begin{exercise} - Create a sublist in the \textit{Factories} part of the XML file for the restriction operator factory. Use a \verb|TransPFactory| which builds the transposed of \verb|P| to generate the restriction operator \verb|R|. Register your restriction factory in the \textit{Hierarchy} section to generate the variable \verb|R|. -\end{exercise} - -\subsection{Smoothed aggregation for non-symmetric problems} - -Next, let's try smoothed transfer operators for the non-symmetric linear system and compare the results of the transfer operator designs. Take a look at the XML file (in \texttt{xml/s3b.xml}). - -\lstinputlisting{../src/xml/s3b.xml} - -The interesting part is the \textit{Factories} section where several different factories for the restriction operator are defined -\begin{description} -\item[\textit{myTentRestrictorFact:}] just uses the transposed of the unsmoothed prolongator for restriction. -\item[\textit{mySymRestrictorFact:}] uses the transposed of the smoothed prolongator for restriction. -\item[\textit{myNonsymRestrictorFact:}] uses the special non-symmetric smoothing for the restriction operator (based on the \verb|SaPFactory| smoothing factory). -\end{description} - -\begin{mycomment} -The \muelu framework is very flexible and allows for arbitrary combinations of factories. However, be aware that the \verb|TentativePFactory| cannot be used as input for the \verb|GenericRFactory|. That is no problem since this combination not really makes sense. If you are using the \verb|TentativePFactory| as your final prolongation operator you always have to use the \verb|TransPFactory| for generating the restriction operators. -\end{mycomment} - -\begin{exercise} -Run the \verb|Recirc2D| example with the different restriction operator strategies and compare the results for the iterative solver. What do you observe? What is the best choice for the transfer operators in the non-symmetric case? -\end{exercise} -\begin{exercise} -Change the \verb|myProlongatorFact| from type \verb|SaPFactory| to \verb|PgPFactory| which uses automatically calculated local damping factors instead of a global damping factor (with some user parameter \texttt{sa: damping factor}). Note that the \verb|PgPFactory| might not accept the \verb|sa: damping factor| parameter such that you have to comment it out (using \texttt{}). -\end{exercise} -\begin{exercise} -Try to set up a multigrid hierarchy with unsmoothed transfer operators for the transition from the finest level to level 1 and then use smoothed aggregation for the coarser levels (starting from level 1). -\end{exercise} - -% results -%\printScreenOutput{s3b1.txt_5.fragment} -%\printScreenOutput{s3b2.txt_5.fragment} -%\printScreenOutput{s3b3.txt_5.fragment} - -\chapter{Rebalancing - Hypergraph repartitioning} - -\section{Basic concepts and parameters} -Especially when using the uncoupled aggregation strategy it is essential to reduce the number of processors used on the coarser levels. A natural strategy is to make sure that each processor gets a minimum number of equations to solve and reduce the number of active processors accordingly. - -In this tutorial we use a hypergraph based repartitioning for the coarse level matrices $A_c$ to rebalance the coarse level problems. The repartitioning algorithm is implemented in the \zoltan package of \trilinos. The advantage of the hypergraph based repartitioning methods is, that they do not need additional information such as node coordinates and therefore are the consequent choice within algebraic multigrid preconditioners. - -\begin{mycomment} -Hypergraph partitioning algorithms as PHG are not available in the new \zoltantwo package of \trilinos, yet. Therefore we can use this type of repartitioning only in context of \epetra based applications. If you use the new templated \tpetra stack you have to use repartitioning algorithms which are available in \zoltantwo such as RCB. -\end{mycomment} - -Repartitioning algorithms are a very wide field of research and can be very complicated. Here, we cannot go into details and just focus on how to use them. Basically there are only a few really important parameters that the user has to set properly: -\begin{description} -\item \texttt{repartition: min rows per proc} the minimum number of rows each processor shall handle. This parameter is used to reduce the number of involved processors on the coarser levels. If for example the parameter value is chosen to be 1000 and the fine level problem has 10000 rows whereas the coarse level problem has 2000 rows, then the fine level problem is solved on not more than 10 processors at maximum and for the coarse level problem there are not more processors than at maximum 2 being used. -\item \texttt{repartition: max imbalance} This parameter defines the maximum allowed imbalance ratio of nonzeros on all processors. If the value is set to 1.2, and there is one processor with more than 20\% nonzeros compared to another processor, than the problem will be rebalanced. -\item \texttt{repartition: start level} start rebalancing on given level and coarser levels. This allows to avoid the costs of rebalancing on the finer levels (where it is not really necessary). -\end{description} - -\section{Transfer operator design} - -Figure \ref{fig:rebalanceddesignpgamg} gives the extended factory design for smoothed aggregation based AMG for non-symmetric linear systems with rebalancing enabled. Nothing has changed in the upper part where the non-rebalanced Galerkin product has been calculated using the \verb|RAPFactory|. The coarse level matrix $A_c$ as output from the \verb|RAPFactory| then is checked for its partition and rebalanced. - -The \verb|AmalgamationFactory| amalgamates the matrix, i.e. it generates some mapping between the actual degrees of freedom and the corresponding nodes or supernodes. In fact the \verb|AmalgamationFactory| is only important if there are more than one degree of freedom per node. Otherwise the mappings are trivial to build. - -The \verb|RepartitionHeuristicFactory| contains the rebalancing logic. Depending on the chosen repartitioning parameters it determines the number of partitions (variable name \verb|number of partitions|) for the coarse level problem. -The \verb|IsorropiaInterface| class first builds internally the graph of the coarse level matrix $A_c$ using the information from the \verb|AmalgamationInformation| and then calls the repartitioning algorithm from \zoltan through the \isorropia interface\footnote{\isorropia is a \trilinos package which provides an easy-to-use interface to many partitioning algorithms in \zoltan.}. The output is an amalgamated repartitioning information. Then the \verb|RepartitionInterface| factory resembles the un-amalgamated repartitioning information which is put into the \verb|RepartitionFactory|. - -The \verb|RepartitionFactory| creates the communication ``plan'' that is used to rebalance the transfer operators and the coarse level matrix. - -\begin{figure} -\begin{center} -\scalebox{0.8}{ -\begin{tikzpicture}[>=latex',font={\sf \small}, node distance=2cm] -\def\datawidth{2cm} -\def\dataheight{0.5cm} -\def\factorywidth{4cm} -\def\factoryheight{0.75cm} -%\draw[help lines] (-10,-10) grid (10,10); -\begin{scope}[>=triangle 60] -\node(A) at (0,10) [draw, terminal, minimum width=\datawidth, minimum height=\dataheight]{$A$}; -\node(nothing) at (-3,8) [draw, process, minimum width=\factorywidth, minimum height=\factoryheight]{...}; -\node [draw, process, minimum width=\factorywidth, minimum height=\factoryheight, below of=nothing] (AggregationFactory) {AggregationFactory}; -\node [draw, process, minimum width=\factorywidth, minimum height=\factoryheight, below of=AggregationFactory] (TentativePFactory) {TentativePFactory}; -\node [draw, process, minimum width=\factorywidth, minimum height=\factoryheight, below of=TentativePFactory] (SaPFactory) {PgPFactory}; -\node [draw, process, minimum width=\factorywidth, minimum height=\factoryheight, right of=SaPFactory,node distance=6cm] (GenericRFactory) {GenericRFactory}; -\node(RAPFactory) at(0,0) [draw, process, minimum width=\factorywidth, minimum height=\factoryheight] {RAPFactory}; - -\node [draw, process, minimum width=\factorywidth, minimum height=\factoryheight, below left = 1cm and -1cm of RAPFactory] (RebAmalgFactory) {AmalgamationFactory}; -\node [draw, process, minimum width=\factorywidth, minimum height=\factoryheight, below right = 1cm and -1cm of RAPFactory] (RebHeuristicFactory) {RepartitionHeuristicFactory}; -\node [draw, process, minimum width=\factorywidth, minimum height=\factoryheight, below right = 1cm and -1cm of RebAmalgFactory] (IsorropiaInterface) {IsorropiaInterface}; -\node [draw, process, minimum width=\factorywidth, minimum height=\factoryheight, below of=IsorropiaInterface] (RepartitionInterface) {RepartitionInterface}; -\node [draw, process, minimum width=\factorywidth, minimum height=\factoryheight, below of=RepartitionInterface] (RepartitionFactory) {RepartitionFactory}; -\node(RebalanceTransferFactory) at(-3,-10) [draw, process, minimum width=\factorywidth, minimum height=\factoryheight] {RebalanceTransferFactory}; -\node [draw, process, minimum width=\factorywidth, minimum height=\factoryheight, right of=RebalanceTransferFactory,node distance=6cm] (RebalanceTransferFactory2) {RebalanceTransferFactory}; -\node(RebalanceAcFactory) at (0,-12) [draw, process, minimum width=\factorywidth, minimum height=\factoryheight] {RebalanceAcFactory}; - -\node(A2) at (0,-14) [draw, terminal, minimum width=\datawidth, minimum height=\dataheight]{$A_c$}; -\node(P2) [draw, terminal, minimum width=\datawidth, minimum height=\dataheight,node distance=3cm, left of=A2]{$P$}; -\node(R2) [draw, terminal, minimum width=\datawidth, minimum height=\dataheight,node distance=3cm, right of=A2]{$R$}; -\node(H1) [left = 0.2cm of RebAmalgFactory]{}; -\node(H2) [left = 0.2cm of RebalanceTransferFactory]{}; -\draw[->] (A) -- (nothing); -\draw[->] (nothing) -- (AggregationFactory); -\draw[->] (A) to[out=270,in=25] node [near start, left] {} (TentativePFactory); -\draw[->] (A) to[out=270,in=25] node [near start, left] {} (SaPFactory); -\draw[->] (A) to[out=270,in=90] node [near start, left] {} (RAPFactory); -\draw[->] (A) to[out=0,in=90] node [near end, right] {$A^T$} (GenericRFactory); -\draw[->] (AggregationFactory) -- node [near start, left] {Aggregates} (TentativePFactory); -\draw[->] (TentativePFactory) -- node [near start, left] {P} (SaPFactory); -\draw[->,dashed] (SaPFactory) -- node [near start, below] {} (GenericRFactory); -\draw[->] (SaPFactory) -- node [near start, below] {P} (RAPFactory); -\draw[->] (GenericRFactory) -- node [near start, below] {R} (RAPFactory); -%\draw[->] (RAPFactory) -- node [near start, below] {} (A2); -\draw[->] (RAPFactory) -- node [near start, right] {$A_c$} (RebAmalgFactory); -\draw[->] (RAPFactory) -- node [near start, left] {$A_c$} (RebHeuristicFactory); -\draw[->] (RAPFactory) -- node [near end, left] {$A_c$} (IsorropiaInterface); -\draw[->] (RebHeuristicFactory) to[out=290,in=0] node {} (RepartitionInterface); -\draw[->] (RebHeuristicFactory) to[out=290,in=0] node [near start, left] {number of part.} (IsorropiaInterface); -\draw[->] (RebHeuristicFactory) to[out=290,in=0] node {} (RepartitionFactory); -%\draw[->] (RAPFactory) to[out=190,in=180] node [near end, left] {$A_c$} (RepartitionInterface); -%\draw[->] (RAPFactory) to[out=190,in=180] node [near end, left] {$A_c$} (RepartitionFactory); -\draw[->] (RAPFactory) to[out=180,in=70] node [near end, left] {} (H1) to[out=250,in=180] node [near end, left] {$A_c$} (RepartitionFactory); -\draw[->] (RAPFactory) to[out=180,in=70] node [near end, left] {} (H1) to[out=250,in=180] node [near end, left] {$A_c$} (RepartitionInterface); -\draw[->] (H1) to[out=250,in=110] node [near end, left] {} (H2) to[out=290,in=180] node [below] {$A_c$} (RebalanceAcFactory); -\draw[->] (RebAmalgFactory) to [out=250,in=180] node [near start, right] {UnAmalg.Info} (IsorropiaInterface); -%\draw[->] (RebAmalgFactory) to[out=0,in=0] node [near start, right] {UnAmalg.Info} (RepartitionInterface); -\draw[->] (IsorropiaInterface) -- node [near start, left] {Amalg.Partition} (RepartitionInterface); -\draw[->] (RepartitionInterface) -- node [near start, left] {Partition} (RepartitionFactory); -\draw[->] (RepartitionFactory) -- node [near start, left] {Importer} (RebalanceTransferFactory); -\draw[->] (RepartitionFactory) -- node [near start, right] {Importer} (RebalanceTransferFactory2); -\draw[->] (RepartitionFactory) -- node [near end, left] {Importer} (RebalanceAcFactory); -\draw[->] (RebalanceAcFactory) -- node [near end, left] {} (A2); -\draw[->] (SaPFactory) to[out=210,in=150] node [near end, right] {P} (RebalanceTransferFactory); -\draw[->] (GenericRFactory) to[out=330,in=30] node [near end, left] {R} (RebalanceTransferFactory2); -\draw[->] (RebalanceTransferFactory) -- (P2); -\draw[->] (RebalanceTransferFactory2) -- (R2); -\end{scope} -\end{tikzpicture} -} % end scalebox -\end{center} -\caption{Factory design for smoothed aggregation based algebraic multigrid methods for non-symmetric systems with rebalancing.} -\label{fig:rebalanceddesignpgamg} -\end{figure} - -\section{XML interface} -The corresponding XML parameter file looks as - -\lstinputlisting{../src/xml/s5a.xml} - -It is stored in \texttt{xml/s5a.xml}. In this example we define a smoothed aggregation transfer operator strategy (using the \verb|PgPFactory|) for non-symmetric systems. The level smoother is chosen to be an over-relaxed symmetric Gauss--Seidel method. A direct solver is applied on the coarsest level. Please compare the building blocks in the xml file with Figure \ref{fig:rebalanceddesignpgamg}. Be aware that the \textit{Nullspace} variable now is also generated by the \texttt{myRebalanceProlongatorFact}. - -\begin{exercise} -Choose option 1 in the problem menu of \verb|hands-on.py| to run the \verb|Laplace 2D| example on a $300\times 300$ mesh. -Change the solver to \verb|xml/s5a.xml|. -Use a reasonable number of processors. For demonstration purposes 4 processors should be fine for the $300\times 300$ mesh. -Run the example and check the screen output to see the effect of rebalancing. Try to visualize the ownership of the aggregates. -\begin{mycomment} -The XML parameters in \verb|xml/s5a.xml| write out the aggregation data for debugging. See the next tutorial for some more background information on aggregation and debugging. -\end{mycomment} -\end{exercise} - -You should observe a multigrid hierarchy as follows - -\printScreenOutput{s5a.txt_3.fragment_3.fragment} - -\chapter{Aggregation} - -This tutorial provides some background information about the aggregation process in \muelu. A very detailed description of the aggregation algorithms with all internal details can be found in \cite[Chapter 3.3]{wiesner2014}. - -\section{Building aggregates} - -The aggregates are built using the graph of the fine level matrix $A$. The graph is generated by the \verb|CoalesceDropFactory|. Since we still only restrict ourselves to scalar problems with one degree of freedom per node (\texttt{DofsPerNode=1}), the graph of the fine level matrix is trivial to build. -Figure \ref{fig:simpledesignaggregates} shows the extended transfer operator design with the additional \verb|CoalesceDropFactory|. - -\begin{figure} -\begin{center} -\scalebox{0.6}{ -\begin{tikzpicture}[>=latex',font={\sf \small}, node distance=2cm] -\def\datawidth{2cm} -\def\dataheight{0.5cm} -\def\factorywidth{4cm} -\def\factoryheight{0.75cm} -%\draw[help lines] (-10,-10) grid (10,10); -\begin{scope}[>=triangle 60] -\node(A) at (-3,10) [draw, terminal, minimum width=\datawidth, minimum height=\dataheight]{$A$}; -\node(CoalesceDropFactory) at (-3,8) [draw, process, minimum width=\factorywidth, minimum height=\factoryheight]{CoalesceDropFactory}; -\node [draw, process, minimum width=\factorywidth, minimum height=\factoryheight, below of=nothing] (AggregationFactory) {AggregationFactory}; -\node [draw, process, minimum width=\factorywidth, minimum height=\factoryheight, below of=AggregationFactory] (TentativePFactory) {TentativePFactory}; -\node [draw, process, minimum width=\factorywidth, minimum height=\factoryheight, below of=TentativePFactory] (SaPFactory) {SaPFactory}; -\node [draw, process, minimum width=\factorywidth, minimum height=\factoryheight, right of=SaPFactory,node distance=6cm] (TransPFactory) {TransPFactory}; -\node [draw, process, minimum width=\factorywidth, minimum height=\factoryheight, below of=SaPFactory] (RAPFactory) {RAPFactory}; -%\node [draw, process, minimum width=\factorywidth, minimum height=\factoryheight, right of=RAPFactory,node distance=9cm] (AggExportFactory) {AggregationExportFactory}; -\node(A2) at (-3,-2) [draw, terminal, minimum width=\datawidth, minimum height=\dataheight]{$A_c$}; -\draw[->] (A) -- (CoalesceDropFactory); -\draw[->] (CoalesceDropFactory) -- node [near start, left] {Graph} (AggregationFactory); -\draw[->] (A) to[out=180,in=180] node [near start, left] {} (TentativePFactory); -\draw[->] (A) to[out=180,in=180] node [near start, left] {} (SaPFactory); -\draw[->] (A) to[out=180,in=180] node [near start, left] {} (RAPFactory); -\draw[->] (AggregationFactory) -- node [near start, left] {Aggregates} (TentativePFactory); -\draw[->] (TentativePFactory) -- node [near start, left] {P} (SaPFactory); -\draw[->] (SaPFactory) -- node [near start, below] {} (TransPFactory); -\draw[->] (SaPFactory) -- node [near start, left] {P} (RAPFactory); -\draw[->] (TransPFactory) -- node [near start, below] {R} (RAPFactory); -\draw[->] (RAPFactory) -- node [near start, below] {} (A2); -%\draw[o->] (RAPFactory) -- (AggExportFactory); -%\draw[->] (AggregationFactory) to[out=0,in=100] node [near start, right] {Aggregates} (AggExportFactory); -%\draw[->] (CoalesceDropFactory) to[out=0,in=80] node [near start, right] {DofsPerNode} (AggExportFactory); -\end{scope} -\end{tikzpicture} -} % end scalebox -\end{center} -\caption{Simple factory design for building aggregates.} -\label{fig:simpledesignaggregates} -\end{figure} - - -Especially for anisotropic or non-symmetric problems it may be advantageous to drop small entries from the graph of $A$ and use a filtered graph for generating aggregates. - -The following listing shows the definition of the \verb|myCoalesceDropFactory| which drops all values of the fine level matrix $A$ with the absolute value smaller than $0.01$. Of course, the \verb|myCoalesceDropFactory| has to be registered to generate the variable \verb|Graph|, which is used by the aggregation factory. -The \verb|Graph| and the variable \verb|DofsPerNode| generated by the \verb|myCoalesceDropFactory| are needed as input by the \verb|UncoupledAggregationFact|. Note that the aggregation routine always works on the node-based information instead of DOF-based information. Therefore, we first have to build the graph of $A$ which then can be processed by the aggregation algorithm. - -\lstinputlisting{../src/xml/s4a.xml} - -The listing shows how the \verb|Graph| and the variable \verb|DofsPerNode| generated by the coalescing factory \verb|myCoalesceDropFact| are explicitly used as input for the aggregation routine. This is an example for a direct link of variables from output to the corresponding input. In addition, the \verb|myCoalesceDropFact| is registered to produce the variable \verb|Graph| in the \textit{Hierarchy} section of the XML file. One should also register \verb|myCoalesceDropFact| to produce the \verb|DofsPerNode| information. In our case it is not really necessary, since all factories which rely on information from \verb|DofsPerNode| get the information directly in the XML file (see also \verb|myAggExportFact| in above listing). So, one has in general two possibilities to declare inter-factory dependencies. One can either explicitly describe the input for each factory (as demonstrated for the \verb|Graph| in \verb|UncoupledAggregationFact|) or use the default factories (provided either by \muelu or explicitly -set by the user in the \textit{Hierarchy} section). \muelu uses the following ordering: first, the explicit input dependencies within the factories are used by \muelu. If a user does not define input variables (e.g., there is no input for \verb|Aggregates| in \verb|myTentativePFact|), \muelu checks whether there is a default factory for the data variable set in the \textit{Hierarchy} section (in above listing it will find \verb|UncoupledAggregationFact| to be responsible to provide the \verb|Aggregates|). Otherwise \muelu will use some internal default factory. - -For demonstration purposes we also introduced a \verb|RAPFactory| which makes use of the user-defined transfer factories \verb|myProlongatorFact| as well as \verb|myRestrictorFact|. The full XML file can be found in \verb|xml/s4a.xml|.\\ - - - -\section{Visualization of aggregates} - -For debugging purposes it can be very useful to visualize the aggregates. \muelu~provides several ways to graphically visualize the coarsening process and the aggregates. In order to visualize aggregates one needs the coordinates of the mesh nodes as geometric information. Whereas the user is expected to provide the mesh node coordinates in the \verb|Coordinates| variable on the finest level, we have to transfer the mesh information to the coarser levels. - -\subsection{General data transfer} - -The \verb|RAPFactory| is responsible to generate the coarse level matrix $A_c$, which is beside the transfer operators $P$ and $R$ the only information needed for an algebraic multigrid method to further coarsen the problem. However, in some situations the user might be able to transfer further user-specific information to coarser levels. The \verb|RAPFactory| can be extended by further helper transfer functions. These helper factories have to be registered in the \verb|RAPFactory| and then are called during the multigrid setup phase after the Galerkin product has been built. A typical example for such a helper factory is the \verb|CoordinatesTransferFactory| which transfers the \verb|Coordinates| variable to the coarser level and builds coarse node coordinates using the aggregation information. Further examples for special helper transfer factories are the \verb|AggregationExportFactory| and the \verb|CoarseningVisualizationFactory| which are all introduced in the following sections. - -\subsection{Use the AggregationExportFactory} - -\begin{figure} -\begin{center} -\scalebox{0.6}{ -\begin{tikzpicture}[>=latex',font={\sf \small}, node distance=2cm] -\def\datawidth{2cm} -\def\dataheight{0.5cm} -\def\factorywidth{4cm} -\def\factoryheight{0.75cm} -%\draw[help lines] (-10,-10) grid (10,10); -\begin{scope}[>=triangle 60] -\node(A) at (-3,10) [draw, terminal, minimum width=\datawidth, minimum height=\dataheight]{$A$}; -\node(Coordinates) at (12,10) [draw, terminal, minimum width=\datawidth, minimum height=\dataheight]{Coordinates}; -\node(CoalesceDropFactory) at (-3,8) [draw, process, minimum width=\factorywidth, minimum height=\factoryheight]{CoalesceDropFactory}; -\node [draw, process, minimum width=\factorywidth, minimum height=\factoryheight, below of=nothing] (AggregationFactory) {AggregationFactory}; -\node [draw, process, minimum width=\factorywidth, minimum height=\factoryheight, below of=AggregationFactory] (TentativePFactory) {TentativePFactory}; -\node [draw, process, minimum width=\factorywidth, minimum height=\factoryheight, below of=TentativePFactory] (SaPFactory) {SaPFactory}; -\node [draw, process, minimum width=\factorywidth, minimum height=\factoryheight, right of=SaPFactory,node distance=6cm] (TransPFactory) {TransPFactory}; -\node [draw, process, minimum width=\factorywidth, minimum height=\factoryheight, below of=SaPFactory] (RAPFactory) {RAPFactory}; -\node [draw, process, minimum width=\factorywidth, minimum height=\factoryheight, right of=RAPFactory,node distance=9cm] (AggExportFactory) {AggregationExportFactory}; -\node [draw, process, minimum width=\factorywidth, minimum height=\factoryheight, right of=AggExportFactory,node distance=6cm] (CoordinatesTransferFactory) {CoordinatesTransferFactory}; -\node(A2) at (-3,-2) [draw, terminal, minimum width=\datawidth, minimum height=\dataheight]{$A_c$}; -\node(Coordinates2) at (12,-2) [draw, terminal, minimum width=\datawidth, minimum height=\dataheight]{Coordinates}; -\draw[->] (A) -- (CoalesceDropFactory); -\draw[->] (CoalesceDropFactory) -- node [near start, left] {Graph} (AggregationFactory); -\draw[->] (A) to[out=180,in=180] node [near start, left] {} (TentativePFactory); -\draw[->] (A) to[out=180,in=180] node [near start, left] {} (SaPFactory); -\draw[->] (A) to[out=180,in=180] node [near start, left] {} (RAPFactory); -\draw[->] (AggregationFactory) -- node [near start, left] {Aggregates} (TentativePFactory); -\draw[->] (TentativePFactory) -- node [near start, left] {P} (SaPFactory); -\draw[->] (SaPFactory) -- node [near start, below] {} (TransPFactory); -\draw[->] (SaPFactory) -- node [near start, left] {P} (RAPFactory); -\draw[->] (TransPFactory) -- node [near start, below] {R} (RAPFactory); -\draw[->] (RAPFactory) -- node [near start, below] {} (A2); -\draw[o->] (RAPFactory) -- (AggExportFactory); -\draw[o->] (RAPFactory) to[out=-20,in=200] node [near start, right] {} (CoordinatesTransferFactory); -\draw[->] (AggregationFactory) to[out=0,in=100] node [near start, right] {Aggregates} (AggExportFactory); -\draw[->] (CoalesceDropFactory) to[out=0,in=80] node [near start, right] {DofsPerNode} (AggExportFactory); -\draw[->] (Coordinates) to[out=270,in=70] node [near end, right] {} (AggExportFactory); -\draw[->] (AggregationFactory) to[out=0,in=100] node [near end, right] {} (CoordinatesTransferFactory); -\draw[->] (Coordinates) to[out=270,in=90] node [near end, right] {} (CoordinatesTransferFactory); -\draw[->] (CoordinatesTransferFactory) to[out=270,in=90] node [near end, right] {} (Coordinates2); -\draw[->,dashed] (TentativePFactory) to[out=0,in=100] node [near start, below] {CoarseMap} (CoordinatesTransferFactory); -\end{scope} -\end{tikzpicture} -} % end scalebox -\end{center} -\caption{Visualization of aggregates using the AggregationExportFactory.} -\label{fig:simpledesignaggregatesvis} -\end{figure} - -If you have an aggregation-based algebraic multigrid method, the \verb|AggregationExportFactory| is the first choice to export the aggregates for visualization purposes. - -The file \verb|xml/s4av.xml| extends the multigrid hierarchy from file \verb|xml/s4a.xml| for support of visualization of aggregates. -The important changes are the following: - -{\small -\begin{lstlisting} - - - - - - - - - - - - - - - - - - - -\end{lstlisting} -} - -The \verb|AggregationExportFactory| acts as a small helper factory within the \verb|RAPFactory| which writes out some aggregation information to VTK files on the hard disk (see Figure \ref{fig:simpledesignaggregatesvis}). For visualization the user has to provide the coordinates associated with the mesh nodes in the \verb|Coordinates| variable. The coordinates are transferred to the coarse level by the \verb|CoordinatesTransferFactory| which is also a helper transfer factory called by the \verb|RAPFactory| as the \verb|AggregationExportFactory|. The \verb|CoordinatesTransferFactory| needs the aggregation information to build a coarse coordinate by using the midpoint of each aggregate. -Note, that the \verb|RAPFactory| accepts a sublist \verb|TransferFactories| to register all the additional helper transfer factories which are called after the Galerkin product is calculated. The helper transfer factories are called in the ordering in which they are registered in the \verb|RAPFactory|, but for this example the ordering is not important. - -To complete the xml file one has to declare the \verb|CoordinatesTransferFactory| to be the default factory for producing \verb|coordinates| by making the following statements in the \verb|Hierarchy| sublist of the xml file. - -\begin{lstlisting} - - - - - - - - - - - - - - - - - -\end{lstlisting} - -This way, the \verb|myCoordTransferFact| is declared as the default factory to generate the coarse coordinates in \verb|Coordinates| on the coarser levels. - -\begin{mycomment} -The fine level coordinates have to be provided by the user in the \verb|Coordinates| variable on the finest level. They are automatically used as input for the \verb|CoordinatesTransferFactory| to produce the coarse level coordinates for level 1. On the coarser levels then the \verb|CoordinatesTransferFactory| serves as input factory for being responsible to produce the coarse coordinates vector. Therefore, it is not a problem to declare \verb|myCoordTransferFact| as generating factory for the \verb|Coordinates| on all multigrid levels as per default input data on level 0 provided by the user has always precedence over factory-generated data. -\end{mycomment} - -\begin{figure} -\centering -%\subfigure[Aggregates with settings from \texttt{xml/s4a.xml}]{\includegraphics[width=0.3\textwidth]{pics/s4al1.png}\includegraphics[width=0.3\textwidth]{pics/s4al2.png}\includegraphics[width=0.3\textwidth]{pics/s4al3.png}} -%\subfigure[Aggregates with settings from \texttt{xml/s4b.xml} (default parameters)]{\includegraphics[width=0.3\textwidth]{pics/s4bl1.png}\includegraphics[width=0.3\textwidth]{pics/s4bl2.png}\includegraphics[width=0.3\textwidth]{pics/s4bl3.png}} -\includegraphics[width=0.3\textwidth]{pics/s4al1.png}\includegraphics[width=0.3\textwidth]{pics/s4al2.png}\includegraphics[width=0.3\textwidth]{pics/s4al3.png} -\caption{Aggregates with settings from \texttt{xml/s4av.xml}} -\label{fig:diffaggregates} -\end{figure} - -\begin{exercise} -Run the \verb|Laplace 2D| example on a $50\times 50$ mesh using the XML file \verb|xml/s4av.xml|. Open \verb|paraview| and load the \verb|aggs\_level*\_proc.out-master.pvtu| file. -\end{exercise} -\begin{exercise} -In the \verb|xml/s4av.xml| file an uncoupled aggregation factory has been explicitly defined using with some user-chosen aggregation parameters. Make a copy of \verb|xml/s4av.xml| and use the default (uncoupled) aggregation routine that is provided by \muelu if no user-specified aggregation algorithm with parameters is prescribed. Which line in the XML file do you have to remove to obtain this behavior? Compare the results (screen output of aggregates, multigrid hierarchy). Try to visualize the aggregates. -\end{exercise} - -\begin{figure} -\centering -%\subfigure[Aggregates with settings from \texttt{xml/s4a.xml}]{\includegraphics[width=0.3\textwidth]{pics/s4al1.png}\includegraphics[width=0.3\textwidth]{pics/s4al2.png}\includegraphics[width=0.3\textwidth]{pics/s4al3.png}} -%\subfigure[Aggregates with settings from \texttt{xml/s4b.xml} (default parameters)]{\includegraphics[width=0.3\textwidth]{pics/s4bl1.png}\includegraphics[width=0.3\textwidth]{pics/s4bl2.png}\includegraphics[width=0.3\textwidth]{pics/s4bl3.png}} -\includegraphics[width=0.3\textwidth]{pics/s4bl1.png}\includegraphics[width=0.3\textwidth]{pics/s4bl2.png}\includegraphics[width=0.3\textwidth]{pics/s4bl3.png} -\caption{Demonstration of different visualization options. Convex hulls with fine level mesh, coarse level mesh and jacks.} -\label{fig:diffaggregatesstyles} -\end{figure} - -The \verb|AggregationExportFactory| has several parameters which allow to change the visualization of the aggregates. The -\verb|aggregation: output file: agg style| parameter allows to change the style of the aggregates. It can be \verb|Point Cloud|, \verb|Jacks| or \verb|Convex Hulls|. With the boolean parameter \verb|aggregation: output file: fine graph edges| the factory also writes out mesh information for visualization. Figure \ref{fig:diffaggregatesstyles} shows some examples of visualization. All data is exported to vtk files and can be loaded into \verb|paraview| where it can be combined in overlays. One can, e.g., show the fine level aggregates with the "mesh information" from the next coarser levels which visualizes the connections between aggregates. The \verb|Jacks| style in the rightmost picture of Figure \ref{fig:diffaggregatesstyles} shows which nodes are attached to the supernode in each aggregate. - - -\subsection{Use the CoarseningVisualizationFactory} - -A more general alternative to visualize coarsening information is available with the so-called \verb|CoarseningVisualizationFactory|. It uses the same graphical VTK backend for writing out data. But instead of \verb|Aggregates| as input it expects a prolongation operator \verb|P| or \verb|Ptent|. Internally, the coarsening information is reconstructed from the prolongator basis functions through reverse engineering. - -\begin{mycomment} -The prolongator basis functions must not overlap. That is, only transfer operators generated by the \verb|TentativePFactory| or the \verb|SemiCoarsenPFactory| are valid input transfer operators. -\end{mycomment} - -The usage is very similar to the \verb|AggregationExportFactory|: -\begin{lstlisting} - - - - - - - - - - - - - - - - - - - - -\end{lstlisting} - -\begin{figure} -\begin{center} -\scalebox{0.6}{ -\begin{tikzpicture}[>=latex',font={\sf \small}, node distance=2cm] -\def\datawidth{2cm} -\def\dataheight{0.5cm} -\def\factorywidth{4cm} -\def\factoryheight{0.75cm} -%\draw[help lines] (-10,-10) grid (10,10); -\begin{scope}[>=triangle 60] -\node(A) at (-3,10) [draw, terminal, minimum width=\datawidth, minimum height=\dataheight]{$A$}; -\node(Coordinates) at (12,10) [draw, terminal, minimum width=\datawidth, minimum height=\dataheight]{Coordinates}; -\node(CoalesceDropFactory) at (-3,8) [draw, process, minimum width=\factorywidth, minimum height=\factoryheight]{CoalesceDropFactory}; -\node [draw, process, minimum width=\factorywidth, minimum height=\factoryheight, below of=nothing] (AggregationFactory) {AggregationFactory}; -\node [draw, process, minimum width=\factorywidth, minimum height=\factoryheight, below of=AggregationFactory] (TentativePFactory) {TentativePFactory}; -\node [draw, process, minimum width=\factorywidth, minimum height=\factoryheight, below of=TentativePFactory] (SaPFactory) {SaPFactory}; -\node [draw, process, minimum width=\factorywidth, minimum height=\factoryheight, right of=SaPFactory,node distance=6cm] (TransPFactory) {TransPFactory}; -\node [draw, process, minimum width=\factorywidth, minimum height=\factoryheight, below of=SaPFactory] (RAPFactory) {RAPFactory}; -\node [draw, process, minimum width=\factorywidth, minimum height=\factoryheight, right of=RAPFactory,node distance=9cm] (AggExportFactory) {CoarseningVisualizationFactory}; -\node [draw, process, minimum width=\factorywidth, minimum height=\factoryheight, right of=AggExportFactory,node distance=6cm] (CoordinatesTransferFactory) {CoordinatesTransferFactory}; -\node(A2) at (-3,-2) [draw, terminal, minimum width=\datawidth, minimum height=\dataheight]{$A_c$}; -\node(Coordinates2) at (12,-2) [draw, terminal, minimum width=\datawidth, minimum height=\dataheight]{Coordinates}; -\draw[->] (A) -- (CoalesceDropFactory); -\draw[->] (CoalesceDropFactory) -- node [near start, left] {Graph} (AggregationFactory); -\draw[->] (A) to[out=180,in=180] node [near start, left] {} (TentativePFactory); -\draw[->] (A) to[out=180,in=180] node [near start, left] {} (SaPFactory); -\draw[->] (A) to[out=180,in=180] node [near start, left] {} (RAPFactory); -\draw[->] (AggregationFactory) -- node [near start, left] {Aggregates} (TentativePFactory); -\draw[->] (TentativePFactory) -- node [near start, left] {P} (SaPFactory); -\draw[->] (SaPFactory) -- node [near start, below] {} (TransPFactory); -\draw[->] (SaPFactory) -- node [near start, left] {P} (RAPFactory); -\draw[->] (TransPFactory) -- node [near start, below] {R} (RAPFactory); -\draw[->] (RAPFactory) -- node [near start, below] {} (A2); -\draw[o->] (RAPFactory) -- (AggExportFactory); -\draw[o->] (RAPFactory) to[out=-20,in=200] node [near start, right] {} (CoordinatesTransferFactory); -\draw[->] (TentativePFactory) to[out=0,in=90] node [near start, below] {P} (AggExportFactory); -\draw[->] (CoalesceDropFactory) to[out=0,in=80] node [near start, right] {DofsPerNode} (AggExportFactory); -\draw[->] (Coordinates) to[out=270,in=70] node [near end, right] {} (AggExportFactory); -\draw[->] (AggregationFactory) to[out=0,in=100] node [near start, below] {Aggregates} (CoordinatesTransferFactory); -\draw[->] (Coordinates) to[out=270,in=90] node [near end, right] {} (CoordinatesTransferFactory); -\draw[->] (CoordinatesTransferFactory) to[out=270,in=90] node [near end, right] {} (Coordinates2); -\draw[->,dashed] (TentativePFactory) to[out=0,in=100] node [near start, above] {CoarseMap} (CoordinatesTransferFactory); -\end{scope} -\end{tikzpicture} -} % end scalebox -\end{center} -\caption{Visualization of aggregates using the CoarseningVisualizationFactory.} -\label{fig:simpledesignaggregatesvis2} -\end{figure} - -The most important difference is, that the user has to specify either \verb|P| or \verb|Ptent| as input for visualization. Furthermore, the parameter names for the \verb|CoarseningVisualizationFactory| are different to the corresponding parameters of the \verb|AggregationExportFactory|. - -\begin{mycomment} -Note, that in the factory configuration as shown in Figure \ref{fig:simpledesignaggregatesvis2} one still needs the \verb|Aggregates| for building the coarse level node coordinates in the \verb|CoordinatesTransferFacotory|. That is, for coarsening methods other than aggregation-based coarsening the user has to provide a mechanism to generate the coarse level coordinates (e.g., using geometric considerations). -\end{mycomment} - -\begin{exercise} -Run the \verb|Laplace 2D| example on a $50\times 50$ mesh using the XML file \verb|xml/s4av.xml|. Create a copy of the \verb|xml/s4av.xml| file and try to adapt it to use the \verb|CoarseningVisualizationFactory| instead of the \verb|AggregationExportFactory|. The aggregates should be the same in both cases. -\end{exercise} - -\subsection{General remarks} -Before we close this tutorial there are some general remarks that might help in setting up valid XML files. -\begin{mycomment} -In general it is a good idea to use the \textit{Hierarchy} section to register the factories to generate the variables. It is very hard to declare all dependencies in the factory sections itself. In the worst case you declare, e.g., a \verb|UncoupledAggregationFactory| and use it as input for the \verb|TentativePFactory| but forget to declare it also explicitly as input for the aggregation export factory \verb|AggregationExportFactory|. If you \verb|UncoupledAggregationFactory| is not declared as default for \verb|Aggregates| in the \verb|AggregationExportFactory|, the \verb|AggregationExportFactory| will use default aggregates provided by \muelu which are not identical to the aggregates used for building the transfer operators! Missing or wrong dependencies in the factory list are very hard to debug. Therefore one should always start with the \textit{Hierarchy} section and only locally overwrite the dependencies where necessary. -\end{mycomment} - -\chapter{Advanced concepts} - -As already mentioned in the beginning, \muelu~is designed as a multigrid framework, and, even though initiated as an aggregation-based algebraic multigrid method, it can also be used for other kinds of coarsening methods. In this chapter we demonstrate the combination of a semi-coarsening method with an aggregation-based coarsening on the coarser levels. Semi-coarsening is combined with a line-smoothing method which then changes to a point-relaxation smoothing once no further semi-coarsening is possible. In both cases, the semi-coarsening and the line-smoothing, the key element here is the dynamic switch from one to the another coarsening or smoothing strategy during runtime. - -\section{Semi-coarsening} - -\subsection{Basic idea} -Assuming that you have a 3D problem which is based on an extruded 2D mesh, semi-coarsening might be an interesting option. That is, on the finer levels we apply a semi-coarsening transfer operator which basically reduces the problem to a pseudo 2D problem which then is handled by any other type of (smoothed aggregation based) transfer operator the usual way. - -\subsection{Factory layout without rebalancing} - -The semi-coarsening is provided by the \texttt{SemiCoarsenPFactory} for generating the semi-coarsening transfer operators in combination with the \texttt{LineDetectionFactory} which performs the line detection, i.e. it searchs for the vertical node lines along the extrusion axis of the 2D mesh. -Once all mesh layers are reduced to one by the \texttt{SemiCoarsenPFactory} we switch to the aggregation-based standard coarsening process. There is a \texttt{TogglePFactory} which allows to switch back and forth between two different transfer operator strategies (such as semi-coarsening and standard aggregation-based coarsening). In principle, any combination of two different transfer operator strategies is allowed. However, the current implementation only contains decision criteria to switch between semi-coarsening and aggregation-based types of coarsening. - -Figure \ref{fig:rebalancedtoggledesign} shows a typical factory layout for the combination of semi-coarsening with a standard (non-smoothed) aggregation-based coarsening with repartitioning enabled. First, one can see the \texttt{TogglePFactory} which has knowledge about the two different transfer operator branches and makes a decision which transfer operator is used and provided to the restriction operator factory and the \texttt{RAPFactory}. Depending on the line detection algorithm in \texttt{LineDetectionFactory} one might also need some information about the fine level mesh (such as the fine level coordinates). The user only has to provide the mesh on the finest level. On the coarser levels the \texttt{LineDetectionFactory} uses a standard ordering of the degrees of freedom which corresponds to a vertical node ordering. - -\begin{figure} -\begin{center} -\scalebox{0.8}{ -\begin{tikzpicture}[>=latex',font={\sf \small}, node distance=2cm] -\def\datawidth{2cm} -\def\dataheight{0.5cm} -\def\factorywidth{4cm} -\def\factoryheight{0.75cm} -%\draw[help lines] (-10,-10) grid (10,10); -\begin{scope}[>=triangle 60] -\node(A) at (0,10) [draw, terminal, minimum width=\datawidth, minimum height=\dataheight]{$A$}; -\node [draw, terminal, minimum width=\datawidth, minimum height=\dataheight, left of=A,node distance=6cm] (Coords) {Coordinates}; - -\node(nothing) at (-3,8) [draw, process, minimum width=\factorywidth, minimum height=\factoryheight]{...}; -\node [draw, process, minimum width=\factorywidth, minimum height=\factoryheight, below of=nothing] (AggregationFactory) {AggregationFactory}; -\node [draw, process, minimum width=\factorywidth, minimum height=\factoryheight, below of=AggregationFactory] (TentativePFactory) {TentativePFactory}; -\node [draw, process, minimum width=\factorywidth, minimum height=\factoryheight, below of=TentativePFactory] (TogglePFactory) {TogglePFactory}; -\node [draw, process, minimum width=\factorywidth, minimum height=\factoryheight, right of=SaPFactory,node distance=6cm] (TransPFactory) {TransPFactory}; -\node(RAPFactory) at(0,0) [draw, process, minimum width=\factorywidth, minimum height=\factoryheight] {RAPFactory}; - -\node [draw, process, minimum width=\factorywidth, minimum height=\factoryheight, left of=TentativePFactory,node distance=6cm] (SemiCoarsenPFactory) {SemiCoarsenPFactory}; - -\node [draw, process, minimum width=\factorywidth, minimum height=\factoryheight, left of=AggregationFactory,node distance=6cm] (LineDetectionFactory) {LineDetectionFactory}; - -\node(A2) at (0,-3) [draw, terminal, minimum width=\datawidth, minimum height=\dataheight]{$A_c$}; -\node(P2) [draw, terminal, minimum width=\datawidth, minimum height=\dataheight,node distance=3cm, left of=A2]{$P$}; -\node(R2) [draw, terminal, minimum width=\datawidth, minimum height=\dataheight,node distance=3cm, right of=A2]{$R$}; -\draw[->] (A) -- (nothing); -\draw[->] (nothing) -- (AggregationFactory); -\draw[->] (A) to[out=270,in=25] node [near start, left] {} (TentativePFactory); -\draw[->] (A) to[out=270,in=25] node [near start, left] {} (TogglePFactory); -\draw[->] (A) to[out=270,in=90] node [near start, left] {} (RAPFactory); -%\draw[->] (A) to[out=0,in=90] node [near end, right] {$A^T$} (GenericRFactory); -\draw[->] (AggregationFactory) -- node [near start, right] {Aggregates} (TentativePFactory); -\draw[->] (TentativePFactory) -- node [near start, right] {P} (TogglePFactory); -\draw[->] (TentativePFactory) -- node [near start, left] {Nullspace} (TogglePFactory); -\draw[->] (LineDetectionFactory) -- node [near start, right] {VertLineIds,$\ldots$} (SemiCoarsenPFactory); -\draw[->] (SemiCoarsenPFactory) -- node [near end, below] {P} (TogglePFactory); -\draw[->] (SemiCoarsenPFactory) -- node [near start, below] {Nullspace} (TogglePFactory); -\draw[->] (TogglePFactory) -- node [near start, below] {P} (TransPFactory); -\draw[->] (TogglePFactory) -- node [near start, below] {P} (RAPFactory); -\draw[->] (TransPFactory) -- node [near start, below] {R} (RAPFactory); -%\draw[->] (RAPFactory) -- node [near start, below] {} (A2); -\draw[->] (RAPFactory) -- node [near start, left] {$A_c$} (A2); - -\draw[->] (Coords) to[out=200,in=90] node [near end, left] {} (LineDetectionFactory); -\draw[->] (Coords) to[out=270,in=20] node [near end, left] {} (SemiCoarsenPFactory); -%\draw[->] (SaPFactory) to[out=230,in=130] node [near end, left] {P} (RebalanceTransferFactory); -%\draw[->] (GenericRFactory) to[out=310,in=50] node [near end, left] {R} (RebalanceTransferFactory2); -\draw[->] (TogglePFactory) -- (P2); -\draw[->] (TransPFactory) -- (R2); -\end{scope} -\end{tikzpicture} -} % end scalebox -\end{center} -\caption{Factory design for semi-coarsening with rebalancing enabled on the coarser levels.} -\label{fig:rebalancedtoggledesign} -\end{figure} - -\subsection{Factory layout with rebalancing} - -Figure \ref{fig:rebalancedtogglerebalancingdesign} gives the extended factory layout when rebalancing is enabled. -There is a new \texttt{ToggleCoordinatesTransferFactory} which is controlled by the \texttt{TogglePFactory} and appropriately generates the coarse coordinates depending on the used transfer operator. In case of semi-coarsening, the \texttt{SemiCoarsenPFactory} provides the coarse coordinates which are then piped through the \texttt{ToggleCoordinatesTransferFactory}. In case of standard aggregation the \texttt{CoordinatesTransferFactory} calculates the coarse coordinates using the aggregation information provided by the \texttt{AggregationFactory}. The coarse coordinate information is finally rebalanced by the \texttt{RebalanceTransferFactory} based on the rebalancing information provided by the \texttt{RepartitionFactory}. - -\begin{mycomment} -Note, that the \texttt{LineDetectionFactory} algorithm expects all nodes of a vertical line along the extrusion axis of the underlying 2D mesh to be owned by the same processor. Do not allow for rebalancing before semi-coarsening is complete! Alternatively, you can implement a new interface class to replace the \texttt{ZoltanInterface} which makes sure that the nodes are rebalanced appropriately. This could be easily done by rebalancing the \texttt{VertLineIds} info that is provided by the \texttt{LineDetectionFactory} and reconstruct the node based \texttt{Partition} data. The \texttt{Chosen P} variable provided by the \texttt{TogglePFactory} would tell the new interface class whether we are in semi-coarsening mode or in standard aggregation mode. -\end{mycomment} - -\begin{figure} -\begin{center} -\scalebox{0.8}{ -\begin{tikzpicture}[>=latex',font={\sf \small}, node distance=2cm] -\def\datawidth{2cm} -\def\dataheight{0.5cm} -\def\factorywidth{4cm} -\def\factoryheight{0.75cm} -%\draw[help lines] (-10,-10) grid (10,10); -\begin{scope}[>=triangle 60] -\node(A) at (0,10) [draw, terminal, minimum width=\datawidth, minimum height=\dataheight]{$A$}; -\node [draw, terminal, minimum width=\datawidth, minimum height=\dataheight, left of=A,node distance=6cm] (Coords) {Coordinates}; - -\node(nothing) at (-3,8) [draw, process, minimum width=\factorywidth, minimum height=\factoryheight]{...}; -\node [draw, process, minimum width=\factorywidth, minimum height=\factoryheight, below of=nothing] (AggregationFactory) {AggregationFactory}; -\node [draw, process, minimum width=\factorywidth, minimum height=\factoryheight, below of=AggregationFactory] (TentativePFactory) {TentativePFactory}; -\node [draw, process, minimum width=\factorywidth, minimum height=\factoryheight, below of=TentativePFactory] (TogglePFactory) {TogglePFactory}; -\node [draw, process, minimum width=\factorywidth, minimum height=\factoryheight, right of=SaPFactory,node distance=6cm] (TransPFactory) {TransPFactory}; -\node(RAPFactory) at(0,-2) [draw, process, minimum width=\factorywidth, minimum height=\factoryheight] {RAPFactory}; - -\node [draw, process, minimum width=\factorywidth, minimum height=\factoryheight, below of=RAPFactory] (ZoltanInterface) {ZoltanInterface}; -\node [draw, process, minimum width=\factorywidth, minimum height=\factoryheight, below of=ZoltanInterface] (RepartitionFactory) {RepartitionFactory}; -\node(RebalanceTransferFactory) at(-3,-8) [draw, process, minimum width=\factorywidth, minimum height=\factoryheight] {RebalanceTransferFactory}; -\node [draw, process, minimum width=\factorywidth, minimum height=\factoryheight, right of=RebalanceTransferFactory,node distance=6cm] (RebalanceTransferFactory2) {RebalanceTransferFactory}; -\node(RebalanceAcFactory) at (0,-10) [draw, process, minimum width=\factorywidth, minimum height=\factoryheight] {RebalanceAcFactory}; - -\node [draw, process, minimum width=\factorywidth, minimum height=\factoryheight, left of=TentativePFactory,node distance=6cm] (SemiCoarsenPFactory) {SemiCoarsenPFactory}; - -\node [draw, process, minimum width=\factorywidth, minimum height=\factoryheight, left of=AggregationFactory,node distance=6cm] (LineDetectionFactory) {LineDetectionFactory}; - -\node [draw, process, minimum width=\factorywidth, minimum height=\factoryheight, left of=RAPFactory,node distance=6cm] (ToggleCoordinatesTransferFactory) {ToggleCoordinatesTransferFactory}; - -\node [draw, process, minimum width=\factorywidth, minimum height=\factoryheight, above of=ToggleCoordinatesTransferFactory,node distance=2cm] (CoordinatesTransferFactory) {CoordinatesTransferFactory}; - -\node [right of=RebalanceTransferFactory2,node distance=3cm] (H1) {}; - -\node(A2) at (0,-14) [draw, terminal, minimum width=\datawidth, minimum height=\dataheight]{$A_c$}; -\node(P2) [draw, terminal, minimum width=\datawidth, minimum height=\dataheight,node distance=3cm, left of=A2]{$P$}; -\node(R2) [draw, terminal, minimum width=\datawidth, minimum height=\dataheight,node distance=3cm, right of=A2]{$R$}; -\node(Coords2) [draw, terminal, minimum width=\datawidth, minimum height=\dataheight,node distance=3cm, left of=P2]{Coordinates}; -\draw[->] (A) -- (nothing); -\draw[->] (nothing) -- (AggregationFactory); -\draw[->] (A) to[out=270,in=25] node [near start, left] {} (TentativePFactory); -\draw[->] (A) to[out=270,in=25] node [near start, left] {} (TogglePFactory); -\draw[->] (A) to[out=270,in=90] node [near start, left] {} (RAPFactory); -%\draw[->] (A) to[out=0,in=90] node [near end, right] {$A^T$} (GenericRFactory); -\draw[->] (AggregationFactory) -- node [near start, right] {Aggregates} (TentativePFactory); -\draw[->] (TentativePFactory) -- node [near start, right] {P} (TogglePFactory); -\draw[->] (TentativePFactory) -- node [near start, left] {Nullspace} (TogglePFactory); -\draw[->] (LineDetectionFactory) -- node [near start, right] {VertLineIds,$\ldots$} (SemiCoarsenPFactory); -\draw[->] (SemiCoarsenPFactory) -- node [near end, below] {P} (TogglePFactory); -\draw[->] (SemiCoarsenPFactory) -- node [near start, below] {Nullspace} (TogglePFactory); -\draw[->] (TogglePFactory) to[out=270,in=25] node [near end, right] {Chosen P} (ToggleCoordinatesTransferFactory); -\draw[->] (TogglePFactory) -- node [near start, below] {P} (TransPFactory); -\draw[->] (TogglePFactory) -- node [near start, below] {P} (RAPFactory); -\draw[->] (TransPFactory) -- node [near start, below] {R} (RAPFactory); -%\draw[->] (RAPFactory) -- node [near start, below] {} (A2); -\draw[->] (RAPFactory) -- node [near start, left] {$A_c$} (ZoltanInterface); -\draw[<->,dashed] (RAPFactory) -- (ToggleCoordinatesTransferFactory); -\draw[->] (RAPFactory) to[out=190,in=180] node [near end, left] {$A_c$} (RepartitionFactory); -\draw[->] (ZoltanInterface) -- node [near start, left] {Partition} (RepartitionFactory); -\draw[->] (CoordinatesTransferFactory) -- node [near start, left] {Coordinates} (ToggleCoordinatesTransferFactory); -\draw[->] (SemiCoarsenPFactory) to[out=270,in=160] node [near start, left] {Coordinates} (ToggleCoordinatesTransferFactory); -\draw[->] (ToggleCoordinatesTransferFactory) to[out=270,in=160] node [near start, left] {Coordinates} (RebalanceTransferFactory); -\draw[-] (RAPFactory) to[out=0,in=90] node [near end, left] {$A_c$} (H1.north east); -\draw[->] (H1.north east) to[out=270,in=0] node [near end, left] {} (RebalanceAcFactory); -\draw[->] (RepartitionFactory) -- node [near start, left] {Importer} (RebalanceTransferFactory); -\draw[->] (RepartitionFactory) -- node [near start, right] {Importer} (RebalanceTransferFactory2); -\draw[->] (RepartitionFactory) -- node [near end, left] {Importer} (RebalanceAcFactory); -\draw[->] (RebalanceAcFactory) -- node [near end, left] {} (A2); -\draw[->] (AggregationFactory) to[out=200,in=80] node [near start, right] {Aggregates} (CoordinatesTransferFactory); -\draw[->] (Coords) -- node [near end, left] {} (CoordinatesTransferFactory); -\draw[->] (Coords) to[out=200,in=90] node [near end, left] {} (LineDetectionFactory); -\draw[->] (Coords) to[out=270,in=20] node [near end, left] {} (SemiCoarsenPFactory); -\draw[->] (RebalanceTransferFactory) to[out=220,in=90] node [near end, left] {} (Coords2); -%\draw[->] (SaPFactory) to[out=230,in=130] node [near end, left] {P} (RebalanceTransferFactory); -%\draw[->] (GenericRFactory) to[out=310,in=50] node [near end, left] {R} (RebalanceTransferFactory2); -\draw[->] (RebalanceTransferFactory) -- (P2); -\draw[->] (RebalanceTransferFactory2) -- (R2); -\end{scope} -\end{tikzpicture} -} % end scalebox -\end{center} -\caption{Factory design for semi-coarsening with rebalancing enabled on the coarser levels.} -\label{fig:rebalancedtogglerebalancingdesign} -\end{figure} - -The following listing shows exemplary the content of the xml file to set up a factory hierarchy similar to the one shown in Figure \ref{fig:rebalancedtogglerebalancingdesign}. - -In the \verb|Factories| section, first the \verb|SemiCoarsenPFactory| and the line detection algorithm are defined representing the left transfer operator branch. Next, the smoothed aggregation coarsening branch is defined in Part II together with an instance of the \verb|TransferCoordinatesTransferFactory| for calculating the corresponding coarse coordinates. -In Part III the \verb|TogglePFactory| is defined. It contains a \verb|TransferFactories| sublist where all different coarsening branches (i.e., the semi-coarsening and aggregation-based coarsening) are defined. The corresponding prolongation operators are listed using the variable name \verb|P| with a number between 1 and 9. In addition to the prolongation operator factories one has also to declare the factories providing the coarse level null space and the \textit{tentative} prolongation operator. In case of semi-coarsening this is the \verb|SemiCoarsenPFactory| and for the aggregation-based coarsening this is the \verb|TentativePFactory|. These factories are declared for generating the \verb|Nullspace| variable with a number between 1 and 9 corresponding to the associated transfer operator branch. Similar for the \textit{tentative} prolongation operators denoted by the variable \verb|Ptent|. - -\begin{mycomment} -\verb|SemiCoarsenPFactory| provides this information for compatibility reasons even though there is no tentative prolongation operator for the geometrically generated \verb|SemiCoarsenPFactory| operator. But the \verb|TogglePFactory| is designed to be more general and allows for combining different kinds of smoothed prolongation operators. These need information about the non-smoothed transfer operators in the variable \verb|Ptent|. -\end{mycomment} - -Similarly, a \verb|ToggleCoordinatesTransferFactory| is declared with an internal list of all factories providing the coarse level coordinates. This is the previously defined \verb|CoordinatesTransferFactory| for the standard aggregation-based coarsening branch and the \verb|SemiCoarsenPFactory| for the semi-coarsening branch. - -Part IV contains the standard factories for the rebalancing. - -Finally, it is important to declare all necessary main factories in the \verb|Hierarchy| section of the xml file. - -\begin{lstlisting} - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -\end{lstlisting} - -\section{Line-smoothing} -\label{sec:linesmoothing} -\subsection{General idea} -Semi-coarsening should be combined with line-smoothing as the complementary smoothing operation. Whereas semi-coarsening coarsens, e.g., along the z-axis trying to produce a 2D representation of a 3D problem, the line-smoothing operates orthogonal to the coarsening and smoothes in the x- and y-direction and interprets all vertical z-layers technically as nodes in a pseudo 2D problem. - -\subsection{Usage} - -The following listing shows how to choose a Jacobi line smoother. The reader might compare the xml code snippets with Section \ref{sec:advLevelSmoothers} for a detailed description of the different smoothers and parameters. - -\begin{lstlisting} - - - - - - - - - - - - - - - - - - -\end{lstlisting} - -The parameters are standard except of \verb|type|. The standard choice would be \verb|RELAXATION| for relaxation based smoothers. To use line-smoothing instead one has the following options: - -\begin{description} -\item [LINESMOOTHING\_BANDEDRELAXATION] Use banded containers to store the local block associated with one vertical line. This is the recommended variant as it saves memory and is usually faster. -\item [LINESMOOTHING\_BLOCKEDRELAXATION] Use a dense matrix container to store the local block associated with one vertical line. This is the safe fallback variant. Use the \verb|LINESMOOTHING\_BANDEDRELAXATION| variant instead. -\end{description} - -All the other parameters in the parameter sublist correspond to the usual parameters for relaxation based smoothers such as Jacobi, Gauss-Seidel or Symmetric Gauss-Seidel methods. Refer to Section \ref{sec:advLevelSmoothers} or the \muelu user guide \cite{Mue} for an overview of all available parameters. - -\chapter{Useful commands and debugging} - -\section{Export level information} -Of course, it is possible to export the multigrid hierarchy in matrix market format similar to \S\ref{sec:exportdatasimple} when using the advanced XML file format instead of the simple XML format. - -To export the multigrid hierarchy one can use, e.g., the following parameters - -\lstinputlisting{../src/xml/s6_export.xml} - -\section{Dependency trees} -\label{sec:dependencytrees} -For debugging it can be extremely helpful to automatically generate the dependency tree of the factories for a given XML file. However, it shall be noticed that even with a graphical dependency tree it might be hard to find the missing links and dependencies without a sufficient understanding of the overall framework. - -To write out the dependencies you just have to put in the \verb|dependencyOutputLevel| parameter. The value gives you the fine level index that you are interested in (e.g., 1 means: print dependencies between level 1 and level 2). - -\lstinputlisting{../src/xml/s6_dep.xml} - -After running the example you should find a file named \verb|dep_graph.dot| in the current folder which you can transform into a graph using the \verb|dot| utility from the graphviz package. -Run, e.g. the commands -\begin{verbatim} -sed -i 's/label=Graph\]/label=\"Graph\"\]/' dep_graph.dot -sed -i 's/\\"/"/g' dep_graph.dot -sed -i 's/""/>/' dep_graph.dot -dot -Tpng dep_graph.dot -o dep_graph.dot.png -\end{verbatim} -in your terminal to obtain the graph as given in Figure \ref{fig:autograph}. -\begin{figure} -\begin{center} -\includegraphics[width=1.0\textwidth]{pics/dep_graph} -\end{center} -\caption{Visualization of aggregates using the CoarseningVisualizationFactory.} -\label{fig:autograph} -\end{figure} - -Note that the red arrows correspond to the fine level (level 1) and the blue arrows correspond to data on the coarse level (level 2). - -\begin{mycomment} -In case that the file \verb|dep_graph.dot| is not generated you have to check the prerequisites. To be able to auto-generate the dependency graphs you have to compile \muelu with Boost enabled. Furthermore you have to set the \verb|MueLu_ENABLE_Boost_for_real:BOOL = ON| defines flag in your configuration script. If these requirements are not fulfilled you should find the error message \textit{Dependency graph output requires boost and MueLu\_ENABLE\_Boost\_for\_real} in the screen output of \muelu. -\end{mycomment} - -As one can see from the dependency output there are also some internal factories which have not been visualized in the Figures \ref{fig:simpledesign}. A good example is the \verb|NullspaceFactory| which seems to build a dependency cycle with the \verb|TentativePFactory|. In fact, the \verb|NullspaceFactory| is a helper factory which allows to use the user-provided near null space vectors as input on the finest level. On the coarser levels it just loops through the generated coarse set of near null space vectors from the \verb|TentativePFactory|. This is a technical detail which sometimes can cause some problems when the corresponding dependency is not defined properly in the XML file. -Another example for a special factory is the \verb|NoFactory|. This special factory is used for all data which is kept in memory and needed by the level smoothers during the iteration. Usually, the final transfer operators $P$ and $R$ as well as the level matrix $A$ are transformed to \verb|NoFactory| objects after the setup phase has completed. However, expert users can also use the \verb|NoFactory| mechanism for special data during the setup phase. But this is not recommended. - -\begin{exercise} -Compare the factory layout in Figure \ref{fig:simpledesignaggregates} with above dependency graph. Try to read it from bottom to top. Which factories are missing in Figure \ref{fig:simpledesignaggregates}? Which variables are missing in Figure \ref{fig:simpledesignaggregates}? -\end{exercise} - -\section{Helper routines for mathematical analysis of level operators} - -There is a small helper transfer factory \verb|MatrixAnalysisFactory| which can be registered in the \verb|RAPFactory|. It checks the current fine level operator $A$ for certain properties and prints the result on screen. The intention of this helper factory is to provide a simple tool for tracking mathematical problems, such as nan's or inf entries during the calculation. - -The \verb|MatrixAnalysisFactory| is used as follows: -\begin{lstlisting} - - - - - - - - - - -\end{lstlisting} - - -In particular, the factory performs the following checks: -\begin{itemize} -\item Check for empty processors in distribution. In contrary to the \ml~package, empty processors should technically not be a problem for \muelu, but it can be an indicator for a failure in the rebalancing mechanism. -\item Check the matrix diagonal for zero entries or nan's/inf values. Zero entries on the diagonal are usually catastrophic for any kind of smoothing, including relaxation-based level smoothers or transfer operator smoothing. Infinite values are a sign of defect operators or can result from incited error modes (e.g., missing or insufficient damping for the level smoothers). -\item Check whether matrix is diagonally dominant. Diagonal dominance is an important property for (relaxation-based) level smoothers. -\item Apply a one-vector and a random vector to the operator $A$ and check the result for zeros and inf values. -\item Perform one sweep with a damped Jacobi method applied to the one-vector and a random vector. Check the result for zeros and inf values. -\end{itemize} - -\section{Graphical assistant for XML file generation} - -The \verb|hands-on.py| driver script contains a graphical assistant to generate new XML parameter files in the advanced \muelu file format. - -Just run the \verb|hands-on.py| script and choose a problem type from the list. Then choose option 2 to set the xml file. If you enter a filename that does not exist then the assistant is started to generate that new XML file. - -\begin{center}\includegraphics[width=10cm]{pics/tut1_15.png} \end{center} - -Just go through the menu and make your choices for level smoothers, transfer operators and so on. Do not forget to call option 6 to save the XML file under the given name, that you have entered before. Then you can use option 7 to go back to the main menu for the example problem and try your new preconditioner with your parameter choices. - -\begin{mycomment} -Of course, we could have introduced this feature with the earlier tutorials, but the idea was to familiarize the user with the XML files. -\end{mycomment} - -\chapter{Challenge: elasticity example} -\section{Practical example} - -For the second challenge, we consider an 2D elasticity example with $7020$ degrees of freedom. No further information is provided (geometry, discretization technique, \ldots). - -\section{User-interface} -Run the \verb|hands-on.sh| script and choose the option 5 for the elasticity. The script automatically generates a XML file with reference multigrid parameters which are far from being optimal. The resulting problem matrix is symmetric. Therefore, we can use a CG method as outer linear solver. - -\begin{exercise} -Open the \verb|stru2d_parameters.xml| file by pressing option 3. Try to find optimized multigrid settings using your knowledge from the previous tutorials. We have 2 (displacement) degrees of freedom per node and 3 vectors describing the near null space components (rigid body modes). All this information is automatically set correctly by the \verb|hands-on.py| script. -Run the example. Check the screen output (using option 1) and verify \verb|blockdim=2| on level 1 and \verb|blockdim=3| on level 2. -\end{exercise} - -In the screen output of the \verb|CoalesceDropFactory| the \verb|blockdim| denotes the number of degrees of freedom per node (or super node on the coarser levels). Since the number of near null space vectors differs from the number of PDE equations, the number of degrees of freedom per node changes on the different multigrid levels. - -\begin{exercise} -Open the XML parameter file (choose option 3) and try to find optimized settings. Use the advanced XML file format. Save the file, rerun the example (option 0) and compare the output with the reference results. -\end{exercise} - -\begin{mycomment} -Use \S\ref{sec:generalhings} for a general step-by-step procedure to optimize the multigrid parameters. -\end{mycomment} - -\begin{exercise} -How do the reference settings and your XML parameter settings perform when increasing the number of processors? -\end{exercise} - -\begin{exercise} -Compare the results of the reference method and your preconditioner parameters when changing to a GMRES solver (instead of CG). What is changing? What about the solver timings? -\end{exercise} - - -\part{Expert tutorials} - -\chapter{Multigrid for Multiphysics} - -\section{General concept} -Assuming we have a multiphysics application which generates a $n\times n$ block operator (e.g. a Fluid-Structure-Interaction problem, or a Navier-Stokes problem with the splitting into velocity and pressure degrees of freedom), the idea is to preserve the block structure on the coarse levels using block-diagonal segregated transfer operators and block smoothers on all multigrid levels. -The blocks $P_{i,i}$ and $R_{i,i}$ in the block-diagonal transfer operators $P$ and $R$ usually are built using the diagonal blocks $A_{i,i}$ or - for applications where $A_{i,i}$ does not contain sufficient information to build aggregates - any other kind of application-specific method. - -For the block smoothers we apply well-established block smoothers (e.g. block relaxation methods or Schur complement based methods) as well as application-specific adaptions. - -\section{Exemplary setup for a $2\times 2$ problem} - -\subsection{Setup of block transfer operators} -\label{sec:blocktransfersetup} - -Figure \ref{fig:transferoperatorsetup} shows a typical layout for the setup of a $2\times 2$ blocked operator block transfer operators. We group factories for building transfer operators for the upper-left and lower-right blocks and build the corresponding blocked transfer operators. In general we can distinguish volume-coupled and interface-coupled problems. In the simpler case of volume-coupled problems we usually can use the same aggregates for the second block than we have built for the first block. That is, we reuse the same aggregates (built, e.g., by \texttt{myAggFact1}) for the second block. For interface-coupled problems we usually need a separate aggregation strategy for the interface DOFs. This can be a second standard aggregation factory object or an application-specific aggregation routine. - -In the following we give more details on the corresponding xml files for setting up the transfer operator layout given in Figure \ref{fig:transferoperatorsetup}. - - -\begin{figure} -\begin{tikzpicture}[>=latex',font={\sf \small}, node distance=2cm] - \tikzstyle{style_factory}=[anchor=center,rectangle, draw=black, fill=white, text centered, anchor=north, text=black, text width=3cm, line width=0.5mm]% - \tikzstyle{style_var_output}=[anchor=center, rounded corners=3pt, draw=black, fill=white, text centered, anchor=north, text=black, text width=1.4cm, line width=0.5mm]% - \tikzstyle{myarrow}=[->, >=stealth, line width=0.5mm] - \begin{scope}[shift={(-2.5,0)}] - \node[node distance=6.5] (SubBlockAFact1) [style_factory] { \tiny mySubBlockAFactory1 }; - \node[node distance=25] (AggFact1) [style_factory,below of=SubBlockAFact1] { \tiny myAggFact1 }; - \node[node distance=25] (CoarseMapFact1) [style_factory,below of=AggFact1] { \tiny myCoarseMap1 }; - \node[node distance=25] (TentativePFact1) [style_factory,below of=CoarseMapFact1] { \tiny myTentativePFact1 }; - \node[node distance=25] (NullspaceFact1) [style_factory,below of=TentativePFact1] { \tiny myNspFact1 }; - \node[node distance=80] (varA1) [style_var_output,left of=SubBlockAFact1] { \tiny A }; - \node[node distance=80] (varAgg1) [style_var_output,left of=AggFact1] { \tiny Aggregates }; - \node[node distance=80] (varCoarseMap1) [style_var_output,left of=CoarseMapFact1] { \tiny CoarseMap }; - \node[node distance=80] (varTentativeP1) [style_var_output,left of=TentativePFact1] { \tiny P }; - \node[node distance=80] (varNullspace1) [style_var_output,left of=NullspaceFact1] { \tiny Nullspace }; - \draw[myarrow,->] (SubBlockAFact1) -- (varA1); - \draw[myarrow,->] (AggFact1) -- (varAgg1); - \draw[myarrow,->] (TentativePFact1) -- (varTentativeP1); - \draw[myarrow,->] (CoarseMapFact1) -- (varCoarseMap1); - \draw[myarrow,->] (NullspaceFact1) -- (varNullspace1); - \draw[myarrow,->] (CoarseMapFact1) -- (TentativePFact1); - \draw[myarrow,->] (TentativePFact1) -- (NullspaceFact1); - \draw[red,thick,line width=0.5mm, dotted] ($(varA1.north west)+(-0.3,0.3)$) rectangle ($(NullspaceFact1.south east)+(0.3,-0.3)$); - \end{scope} -% - \begin{scope}[shift={(2.5,0)}] - \node[node distance=6.5] (SubBlockAFact2) [style_factory] { \tiny mySubBlockAFactory2 }; - \node[node distance=50] (CoarseMapFact2) [style_factory,below of=SubBlockAFact2] { \tiny myCoarseMap2 }; - \node[node distance=25] (TentativePFact2) [style_factory,below of=CoarseMapFact2] { \tiny myTentativePFact }; - \node[node distance=25] (NullspaceFact2) [style_factory,below of=TentativePFact2] { \tiny myNspFact2 }; - \node[node distance=80] (varA2) [style_var_output,right of=SubBlockAFact2] { \tiny A }; - \node[node distance=25] (varAgg2) [style_var_output,below of=varA2] { \tiny Aggregates }; - \node[node distance=80] (varCoarseMap2) [style_var_output,right of=CoarseMapFact2] { \tiny CoarseMap }; - \node[node distance=80] (varTentativeP2) [style_var_output,right of=TentativePFact2] { \tiny P }; - \node[node distance=80] (varNullspace2) [style_var_output,right of=NullspaceFact2] { \tiny Nullspace }; - \draw[myarrow,->] (SubBlockAFact2) -- (varA2); - \draw[myarrow,->] (AggFact1) -- (varAgg2); - \draw[myarrow,->] (TentativePFact2) -- (varTentativeP2); - \draw[myarrow,->] (CoarseMapFact2) -- (varCoarseMap2); - \draw[myarrow,->] (NullspaceFact2) -- (varNullspace2); - \draw[myarrow,->] (CoarseMapFact2) -- (TentativePFact2); - \draw[myarrow,->] (TentativePFact2) -- (NullspaceFact2); - \draw[red,thick,line width=0.5mm, dotted] ($(SubBlockAFact2.north west)+(-0.3,0.3)$) rectangle ($(varNullspace2.south east)+(0.3,-0.3)$); - \end{scope} - - \draw[myarrow,->] (CoarseMapFact1) -- (CoarseMapFact2); - - - \node[node distance=50] (BlockedPFact) [style_factory,below of=NullspaceFact1] { \tiny myBlockedPFact }; - \node[node distance=50] (BlockedRFact) [style_factory,below of=NullspaceFact2] { \tiny myBlockedRFact }; - - \draw[myarrow,->] (BlockedPFact) -- (BlockedRFact); - - \node[node distance=40] (BlockedRAPFact) [style_factory,below of=BlockedRFact] { \tiny myBlockedRAPFact }; - \draw[myarrow,->] (BlockedPFact) -- (BlockedRAPFact); - \draw[myarrow,->] (BlockedRFact) -- (BlockedRAPFact); - - \draw[myarrow,red] ($(NullspaceFact1.south)+(0.0,-0.3)$) -- node[left]{\tiny myFirstGroup} (BlockedPFact); - \draw[myarrow,red] ($(NullspaceFact2.south)+(0.0,-0.3)$) -- node[above]{\tiny mySecondGroup} ($(BlockedPFact.north)+(+1.6,0.0)$); - - %\draw[myarrow,green] ($(AggFact1.east)+(0.0,0.0)$) -|node[right, near end]{\tiny block2} ($(TentativePFact2.west)+(-0.5,0.0)$) -- ($(TentativePFact2.west)+(0.0,0.0)$); - -\end{tikzpicture} -\caption{Setup of $2\times 2$ block transfer operators} -\label{fig:transferoperatorsetup} -\end{figure} - -\subsubsection{Factory list} -All the following definitions of factories are contained in the \texttt{Factories} sublist of the \texttt{MueLu} parameter list, which basically is meant as a factory collection for all used factories in the multigrid setup. -To keep things simple, we only give the factories necessary to define the setup for the most upper-left block in the $n\times n$ block matrix. - -\begin{lstlisting} - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -\end{lstlisting} - -\begin{mycomment} -Please note, that the ordering of the factories is important in the sense that factories have to be defined before they are used as input -for other following factories. As an example, the \texttt{myCoarseMap1} factory has to be defined before the \texttt{myTentativePFact1} as it is used as input for the \texttt{CoarseMap} variable. Switching the ordering of the factories in the xml file would result in an error that \texttt{myCoarseMap1} is unknown. Technically, one could avoid this restriction by a two pass reading process which first reads all factories and then resolves the dependencies. On the other side, this restriction helps to keep a straightforward linear design of the setup process. -\end{mycomment} - -\noindent The meaning of the factories is the following:\smallskip -\begin{description} -\item[SubBlockAFactory] Given a $n\times n$ block operator $A$, the \texttt{SubBlockAFactory} extracts the $(i,j)$ block where $i$ is defined by the parameter \texttt{block row} and $j$ by the parameter \texttt{block col} where $0\leq i,j < n$. Above example assumes a Thyra-style numbering of the global ids for a simple 2D Navier-Stokes example. That is, the matrix block $A_{00}$ has two degrees of freedom per node (one for the velocity in $x$-direction and one in the $y$-direction). The \texttt{Range map: Striding info} contains this information (i.e. 2 dofs per node), since this information might get lost (or never was stored) when using Thyra block operators. -\item[UncoupledAggregationFactory] The aggregation factory is used to build the aggregates. In this case the aggregates shall be built using the graph of $A_{00}$ that is returned by the \texttt{SubBlockAFactory}. In this example we only give the user parameters for the aggregation. Later it is shown how to declare the \texttt{FactoryManager} which makes sure that this concrete instance of an aggregation factory builds the aggregates for $A_{00}$ only. -\item[CoarseMapFactory] The \texttt{CoarseMapFactory} is used in the \texttt{TentativePFactory} and basically is responsible to provide a proper domain map for the transfer operator block $P_i$. For $P_0$ this is usually a standard map. The only information that is important is \texttt{Striding info} which means that the coarse domain map has 2 dofs per node again. Note: we have 2 dofs per node (for the velocities in $x$ and $y$-direction). We have 2 null space vectors. Therefore, the coarse problem has also 2 dofs per node which means the domain map of $P_i$ has to be built for 2 dofs per node. -\item[TentativePFactory] Here, the \texttt{TentativePFactory} builds the $P_i$ block for the blocked transfer operator $P$. We explicitly give the names of the factories used to generate $P_i$, which include the previously defined factories for the \texttt{CoarseMap, Aggregates} and \texttt{A}. This information is not really needed in this place as we later define a \texttt{FactoryManager} for the $i$-th block, but often it makes it easier to understand the dependencies. That is, the short version would just be -\begin{lstlisting} - - - -\end{lstlisting} -\item[NullspaceFactory] For defining multigrid methods for multiphysics problems the \texttt{NullspaceFactory} is very important. In general, the \texttt{TentativePFactory} uses the provided fine level near null space vectors to generate the tentative prolongation operator $P_i$ together with a coarse represenation of the near null space vectors. That is, the \texttt{TentativePFactory} produces the \texttt{Nullspace} information that it needs itself on the next coarser level. That is a hidden dependency which usually automatically works without any changes necessary by the user. The user is only responsible to provide proper fine level near null space vectors as \texttt{Nullspace} variable on the finest level. -The \texttt{NullspaceFactory} is just a helper factory which processes the null space information on the finest level and pipes it in into the global setup process. For multiphysics problems, the user has to provide $n$ partial near null space vectors (one for each mathematical or physical field) using the variable names ``Nullspace1'' to ``Nullspace9'' on the finest level. The \texttt{Fine level nullspace} parameter in the \texttt{NullspaceFactory} then can be set to the corresponding variable name (e.g. \texttt{Nullspace1}). That is, the \texttt{NullspaceFactory} checks the fine level variable container for a variable named ``Nullspace1'' and uses the content as fine level null space for input in the \texttt{TentativePFactory}. It is important, that besides of the \texttt{Fine level nullspace} parameter another parameter with the name of the near null space vector (in above case ``Nullspace1'') is declared with the corresponding \texttt{TentativePFactory} name as value. This closes the circle for the null space generation for block $P_i$ on all coarser levels. -It is important that the \texttt{NullspaceFactory} is defined after the corresponding \texttt{TentativePFactory} class such that the dependency circle can be closed correctly. -\end{description} -\begin{mycomment} -Instead of \texttt{TentativePFactory} any other factory which generates a coarse null space can be used as well (e.g. \texttt{SemiCoarsenPFactory}). -\end{mycomment} -\begin{mycomment} -Of course, above factory list can be extended for smoothed aggregation. We also skipped the factories for the restriction operators. -\end{mycomment} - -\subsubsection{Factory manager} -Once the necessary factories for building $P_i$ are defined in the \texttt{FactoryList} section of the xml file, we can group them together. Right after the factories we can add a \texttt{FactoryManager} block in the \texttt{FactoryList} section. - -\begin{lstlisting} - - - - - - - - - -\end{lstlisting} - -The name for the group can be chosen freely (e.g. ``myFirstGroup''). Besides the declaration of the \texttt{FactoryManager} group using the -\begin{lstlisting} - -\end{lstlisting} -parameter, it contains a list of all factories which are used in context of building the coarsening information for the corresponding block. - -The group block defining a \texttt{FactoryManager} has a similar role than in the \texttt{Hierarchy} section in the xml file later. It allows to group together factories into subgroups that can be referred to by the common name (e.g. ``myFirstGroup'') later. These groups help to organize the different factories. Note, that we basically need one group for each physical/mathematical field in our $n\times n$ block operator, that is we need $n$ groups. - -\begin{mycomment} -The group block for the second row in the block operator could look like the following -\begin{lstlisting} - - - - - - - - - - -\end{lstlisting} -This assumes that all the factories have been defined before similar to the first group blocks. Note, that in some cases for certain applications it is possible to reuse information from the first block in the second block. In this case we use the abstract aggregation information that has been built using the velocity information for the associated pressure degrees of freedom. This is possible, since in our example each node has 2 velocity and 1 pressure degree of freedom. -\end{mycomment} - -\subsubsection{Block prolongation operator} - -The diagonal block prolongation operator is built using -\begin{lstlisting} - - - - - - - - - - - - -\end{lstlisting} -in the \texttt{FactoryList} section of the xml file after all groups have been defined. It contains basically sublist with the names ``block1'' to ``block\texttt{n}''. Each of these sublists contains a parameter \texttt{group} with the group name defined before. - -\begin{mycomment} -Instead of using groups you could also put all the factory definitions within the corresponding ``block\texttt{n}'' parameter list. But this would mean that you have to set all inter-factory dependencies in the corresponding block by hand. You cannot use the general defaults that are defined in the groups. It would also make it impossible to reuse information from factories belonging to a different block (e.g., you could not reuse the aggregation information built by the \texttt{myAggFact1} for the aggregates in block 2. -\end{mycomment} - -\subsubsection{Block restriction operator and coarse level operator} - -The following definitions should be the standard for nearly all multiphysics problems. We use the \texttt{GenericRFactory} for building the restriction operator out of the blocked prolongation factory. - -\begin{lstlisting} - - - - - - -\end{lstlisting} - -It uses the blocks $P_i$ to generate the corresponding blocks $R_i$ for the diagonal of the restriction operator. If PG-AMG is used for some or all blocks $P_i$ this is automatically considered when generating $R_i$. - -\begin{mycomment} -Please note, that you cannot use \texttt{TransPFactory} as it has no support for block operators. However, this is not a problem, since the \texttt{TransPFactory} might be used locally for single blocks wherever possible. -\end{mycomment} - -Once, the block diagonal transfer operators $P$ and $R$ are set up, the \texttt{BlockedRAPFactory} builds the coarse $n\times n$ operator: -\begin{lstlisting} - - - - - -\end{lstlisting} - -\subsection{Setup of block smoothers} - -Once the transfer operators are set up properly, it is time to define the block smoothing methods - -\subsubsection{Xpetra block smoothers} - -Xpetra contains a set of general block smoothers, including a block Gauss-Seidel method for $n\times n$ block operators and a Schur complement based SIMPLE variant for $2\times 2$ block operators. Here we just explain the setup for the Schur complement smoother as an example. - -The Schur complement based smoother internally needs two solvers/smoothers. The first smoother/solver is need for calculating a prediction for the velocities, the second solver/smoother then has to (approximately) solve the Schur complement equation. - -We are still in the \texttt{FactoryList} section of the xml file and define the corresponding solver/smoother blocks: - -\begin{lstlisting} - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -\end{lstlisting} - -It is not necessary but helpful to declare variable ``A'' in ``mySmooFact1'' to be the diagonal block $A_{00}$ of the blocked operator. This way it is obvious that this smoother is supposed to generate the prediction within the Schur complement approach. The second smoother (with the name ``mySchurSmooFact'' is supposed to solve the Schur complement equation, that is, the input matrix $A$ for this smoother should be the Schur complement operator $A_{11}-A_{10}A_{00}^{-1}A_{01}$ or at least a good approximation of the Schur complement operator. This operator is provided by the \texttt{SchurComplementFactory}. Be aware, that the \texttt{SchurComplementFactory} uses the full $2\times 2$ operator $A$ as input to generate the approximation of the Schur complement operator. It is not defined as input variable ``A'' since the full $2\times 2$ operator is the standard answer for variable ``A''. It would make sense, though, to declare ``mySchurCompFact'' as variable ``A'' for ``mySchurSmooFact''. - -The Schur complement smoother then is defined by the block: - -\begin{lstlisting} - - - - - - - - - - - - - - - - - - - - - -\end{lstlisting} - -In this case, we use the \texttt{SimpleSmoother} as example. Besides of the typical smoother parameters (number of sweeps, damping, \ldots) the interesting part are the sublists ``block1'' and ``block2'' which contain the information about the internal smoothers/solvers. In above example we just declare the factories for ``A'' and ``Smoother''. The variable ``A'' always gives the internal linear operator that is used within the solver/smoother. By defining ``A'' in this place, we do not really have to define it extra in the smoother blocks above. - -\begin{mycomment} -Please note, that instead of the explicit variable definitions in the ``block\texttt{n}'' sublists, one could also have given just the group names. However, this only works if the ``Smoother'' variable is also contained in the corresponding groups. In above examples from the previous section we skipped the ``Smoother'' variable. This makes sense especially if the aggregation information is built using a different $A$ operator as the smoother is using. In above example we do not build aggregates using the Schur complement operator but want to reuse aggregates from the first block. -\end{mycomment} - -As a side note it shall be mentioned, that you can also directly make all definitions in the ``block\texttt{n}'' parameter lists: -\begin{lstlisting} - - - - - - - - - - - - - - - - - - - - -\end{lstlisting} -However, this is not really recommended since it prevents the reuse of factories in several places. E.g., instead of the new \texttt{SubBlockAFactory} one should just reuse the \texttt{SubBlockAFactory} which has been defined and used before for the block transfers. This drastically simplifies and shortens the factory definitions and reduces the number of potential errors. Be aware, that each new block in the xml file means that a new instance of the corresponding factory is instantiated and built. In the worst case some expensive information is calculated twice which might heavily impact the overall performance. - -\subsubsection{Teko block smoothers} - -In \trilinos the \teko package provides block preconditioners that can be used as alternative to the existing Xpetra block smoothers. The \xpetra linear algebra layer also provides support for \thyra block operators which allows us to use the \teko block smoothers within a \muelu multigrid hierarchy. In case of the \teko SIMPLE implementation one again needs to internal solvers/smoothers (one for the prediction of the primary variables and one for the solution of the Schur complement equation). \teko uses the \stratimikos interface for defining the corresponding smoothers/solvers. So, instead of the \texttt{SimpleSmoother} object from the previous subsection one can also use the SIMPLE implementation from \teko. - -We define a \texttt{TekoSmoother} as block smoother using -\begin{lstlisting} - - - - - - - - - - - - - -\end{lstlisting} - -The \texttt{tekosmoother} accepts the full $2\times 2$ block operator as input (not declared above, since it is the default) and contains a sublist with the name \texttt{Inverse Factory Library}. Within this sublist all local smoothers/solvers as well as the \teko block smoother (or several \teko block smoothers) are defined. In the above example, there is only one \teko block smoother (of type ``NS SIMPLE'') declare which internally uses direct solvers from the \amesos package for the velocity and pressure (Schur complement) problem. -The \texttt{Inverse Type} parameter of the \texttt{TekoSmoother} defines the \teko block smoother from the \texttt{Inverse Factory Library}. -For the available parameters and block smoothers in \teko, the reader is referred to the \teko documentation. - -\begin{mycomment} -\muelu provides the \thyra blocked operator for \teko. There are subtle differences between the native Xpetra format for blocked operators and the more abstract \thyra format. For the block smoothers in \teko this makes no difference. The reader might refer to Section \ref{sec:xpetraversusthyra} for a detailed description of the differences and the effect on the design of multigrid hierarchies. -\end{mycomment} - -\subsection{Multigrid setup} - -Last but not least, once both the transfers and the block smoothers are defined the multigrid method itself has to be set up. -Note, that all previous definitions and declarations have been made in the \texttt{Factories} section of the xml file. The multigrid setup is done in the \texttt{Hierarchy} section of the xml file and looks like that: - -\begin{lstlisting} - - - - - - - - - - - - - - - -\end{lstlisting} - -The interesting part is the ``AllLevel'' sublist (you can freely choose the name of this list), which - in some sense - corresponds to the groups introduced before to setup the block transfers and block smoothers. In fact, this sublist defines the master \texttt{FactoryManager} for the overall multigrid method. Note, that all variables (``A'',``P'',``R'',\ldots) are generated by the block versions instead of the single block factories. - - -\section{Exemplary setup for a $2\times 2$ problem with rebalancing} - -\subsection{Transfer operator setup} - -\begin{figure} -\begin{tikzpicture}[>=latex',font={\sf \small}, node distance=2cm] - \tikzstyle{style_factory}=[anchor=center,rectangle, draw=black, fill=white, text centered, anchor=north, text=black, text width=3cm, line width=0.5mm]% - \tikzstyle{style_var_output}=[anchor=center, rounded corners=3pt, draw=black, fill=white, text centered, anchor=north, text=black, text width=1.4cm, line width=0.5mm]% - \tikzstyle{myarrow}=[->, >=stealth, line width=0.5mm] - \begin{scope}[shift={(-2.5,0)}] - \node[node distance=6.5] (SubBlockAFact1) [style_factory] { \tiny mySubBlockAFactory1 }; - \node[node distance=25] (AggFact1) [style_factory,below of=SubBlockAFact1] { \tiny myAggFact1 }; - \node[node distance=25] (CoarseMapFact1) [style_factory,below of=AggFact1] { \tiny myCoarseMap1 }; - \node[node distance=25] (TentativePFact1) [style_factory,below of=CoarseMapFact1] { \tiny myTentativePFact1 }; - \node[node distance=25] (NullspaceFact1) [style_factory,below of=TentativePFact1] { \tiny myNspFact1 }; - \node[node distance=80] (varA1) [style_var_output,left of=SubBlockAFact1] { \tiny A }; - \node[node distance=80] (varAgg1) [style_var_output,left of=AggFact1] { \tiny Aggregates }; - \node[node distance=80] (varCoarseMap1) [style_var_output,left of=CoarseMapFact1] { \tiny CoarseMap }; - \node[node distance=80] (varTentativeP1) [style_var_output,left of=TentativePFact1] { \tiny P }; - \node[node distance=80] (varNullspace1) [style_var_output,left of=NullspaceFact1] { \tiny Nullspace }; - \draw[myarrow,->] (SubBlockAFact1) -- (varA1); - \draw[myarrow,->] (AggFact1) -- (varAgg1); - \draw[myarrow,->] (TentativePFact1) -- (varTentativeP1); - \draw[myarrow,->] (CoarseMapFact1) -- (varCoarseMap1); - \draw[myarrow,->] (NullspaceFact1) -- (varNullspace1); - \draw[myarrow,->] (CoarseMapFact1) -- (TentativePFact1); - \draw[myarrow,->] (TentativePFact1) -- (NullspaceFact1); - \draw[red,thick,line width=0.5mm, dotted] ($(varA1.north west)+(-0.3,0.3)$) rectangle ($(NullspaceFact1.south east)+(0.3,-0.3)$); - \end{scope} -% - \begin{scope}[shift={(2.5,0)}] - \node[node distance=6.5] (SubBlockAFact2) [style_factory] { \tiny mySubBlockAFactory2 }; - \node[node distance=50] (CoarseMapFact2) [style_factory,below of=SubBlockAFact2] { \tiny myCoarseMap2 }; - \node[node distance=25] (TentativePFact2) [style_factory,below of=CoarseMapFact2] { \tiny myTentativePFact }; - \node[node distance=25] (NullspaceFact2) [style_factory,below of=TentativePFact2] { \tiny myNspFact2 }; - \node[node distance=80] (varA2) [style_var_output,right of=SubBlockAFact2] { \tiny A }; - \node[node distance=25] (varAgg2) [style_var_output,below of=varA2] { \tiny Aggregates }; - \node[node distance=80] (varCoarseMap2) [style_var_output,right of=CoarseMapFact2] { \tiny CoarseMap }; - \node[node distance=80] (varTentativeP2) [style_var_output,right of=TentativePFact2] { \tiny P }; - \node[node distance=80] (varNullspace2) [style_var_output,right of=NullspaceFact2] { \tiny Nullspace }; - \draw[myarrow,->] (SubBlockAFact2) -- (varA2); - \draw[myarrow,->] (AggFact1) -- (varAgg2); - \draw[myarrow,->] (TentativePFact2) -- (varTentativeP2); - \draw[myarrow,->] (CoarseMapFact2) -- (varCoarseMap2); - \draw[myarrow,->] (NullspaceFact2) -- (varNullspace2); - \draw[myarrow,->] (CoarseMapFact2) -- (TentativePFact2); - \draw[myarrow,->] (TentativePFact2) -- (NullspaceFact2); - \draw[red,thick,line width=0.5mm, dotted] ($(SubBlockAFact2.north west)+(-0.3,0.3)$) rectangle ($(varNullspace2.south east)+(0.3,-0.3)$); - \end{scope} - - \draw[myarrow,->] (CoarseMapFact1) -- (CoarseMapFact2); - - - \node[node distance=50] (BlockedPFact) [style_factory,below of=NullspaceFact1] { \tiny myBlockedPFact }; - \node[node distance=50] (BlockedRFact) [style_factory,below of=NullspaceFact2] { \tiny myBlockedRFact }; - - \draw[myarrow,->] (BlockedPFact) -- (BlockedRFact); - - \node[node distance=40] (BlockedRAPFact) at ($(BlockedRFact.west)+(-1.0,-1.0)$) [style_factory] { \tiny myBlockedRAPFact }; - \draw[myarrow,->] (BlockedPFact) -- (BlockedRAPFact); - \draw[myarrow,->] (BlockedRFact) -- (BlockedRAPFact); - - \draw[myarrow,red] ($(NullspaceFact1.south)+(0.0,-0.3)$) -- node[left]{\tiny myFirstGroup} (BlockedPFact); - \draw[myarrow,red] ($(NullspaceFact2.south)+(0.0,-0.3)$) to [out=230,in=10] node[above,near end]{\tiny mySecondGroup} ($(BlockedPFact.north)+(+1.6,0.0)$); - - - \node[node distance=40] (RepHeuristicFact) [style_factory,below of=BlockedRAPFact] { \tiny myRepartitionHeuristicFact }; - - \node[node distance=100] (rebSubBlockAFact1) [style_factory, left of=RepHeuristicFact] { \tiny myRebSubBlockAFactory1 }; - \node[node distance=100] (rebSubBlockAFact2) [style_factory, right of=RepHeuristicFact] { \tiny myRebSubBlockAFactory2 }; - - \node[node distance=25] (rebZoltanFact1) [style_factory, below of=rebSubBlockAFact1] { \tiny myZoltanInterface1 }; - \node[node distance=25] (rebZoltanFact2) [style_factory, below of=rebSubBlockAFact2] { \tiny myRepartitionInterface2 }; - - \node[node distance=25] (rebRepartitionFact1) [style_factory, below of=rebZoltanFact1] { \tiny myRepartitionFactory1 }; - \node[node distance=25] (rebRepartitionFact2) [style_factory, below of=rebZoltanFact2] { \tiny myRepartitionFactory2 }; - - \draw[blue,thick,line width=0.5mm, dotted] ($(RepHeuristicFact.north east)+(0.15,0.15)$) rectangle ($(rebRepartitionFact1.south west)+(-0.3,-0.3)$); - \draw[blue,thick,line width=0.5mm, dotted] ($(NullspaceFact1.north east)+(0.15,0.15)$) rectangle ($(varNullspace1.south west)+(-0.15,-0.15)$); - \draw[orange,thick,line width=0.5mm, dotted] ($(NullspaceFact2.north west)+(-0.15,0.15)$) rectangle ($(varNullspace2.south east)+(0.15,-0.15)$); - \draw[orange,thick,line width=0.5mm, dotted] ($(RepHeuristicFact.north west)+(-0.1,0.1)$) rectangle ($(rebRepartitionFact2.south east)+(+0.15,-0.15)$); - - \draw[myarrow,->] (BlockedRAPFact) -- (RepHeuristicFact); - \draw[myarrow,->] (BlockedRAPFact) -- (rebSubBlockAFact1); - \draw[myarrow,->] (BlockedRAPFact) -- (rebSubBlockAFact2); - \draw[myarrow,->] (rebSubBlockAFact1) -- (rebZoltanFact1); - \draw[myarrow,->] (rebSubBlockAFact2) -- (rebZoltanFact2); - \draw[myarrow,->] (rebZoltanFact1) -- (rebRepartitionFact1); - \draw[myarrow,->] (rebZoltanFact2) -- (rebRepartitionFact2); - \draw[myarrow,->] (rebZoltanFact1) -- (rebZoltanFact2); - \draw[myarrow,->] (RepHeuristicFact) -- (rebZoltanFact1); - \draw[myarrow,->] (RepHeuristicFact) -- (rebZoltanFact2); - \draw[myarrow,->] (RepHeuristicFact) to [out=270,in=10] (rebRepartitionFact1); - \draw[myarrow,->] (RepHeuristicFact) to [out=270,in=170] (rebRepartitionFact2); - - \node[node distance=50] (rebBlockedPFact) [style_factory,below of=rebRepartitionFact1] { \tiny myRebBlockedPFact }; - \node[node distance=50] (rebBlockedRFact) [style_factory,below of=rebRepartitionFact2] { \tiny myRebBlockedRFact }; - - \node[node distance=140] (rebBlockedRAPFact)[style_factory,below of=RepHeuristicFact] { \tiny myRebBlockedAcFact }; - %\draw[myarrow,->] (rebBlockedPFact) -- (rebBlockedRAPFact); - %\draw[myarrow,->] (rebBlockedRFact) -- (rebBlockedRAPFact); - - \draw[myarrow,blue] ($(rebRepartitionFact1.south)+(0.0,-0.3)$) -- node[left]{\tiny myRebFirstGroup} (rebBlockedPFact); - \draw[myarrow,orange] ($(rebRepartitionFact2.south)+(-5.0,-0.15)$) -- node[left]{} ($(rebBlockedPFact.north)+(+1.6,0.0)$); - - \draw[myarrow,blue] ($(rebRepartitionFact1.south)+(5.0,-0.3)$) -- node[left]{} (rebBlockedRFact); - \draw[myarrow,orange] ($(rebRepartitionFact2.south)+(0.0,-0.15)$) -- node[right]{\tiny myRebSecondGroup} ($(rebBlockedRFact.north)+(0,0.0)$); - - \draw[myarrow,blue] ($(rebRepartitionFact1.south)+(3.0,-0.3)$) -- node[left]{} ($(rebBlockedRAPFact.north)+(-0.5,0.0)$); - \draw[myarrow,orange] ($(rebRepartitionFact2.south)+(-3.0,-0.15)$) -- node[right]{} ($(rebBlockedRAPFact.north)+(0.5,0.0)$); - - \draw[myarrow] (BlockedPFact) -| node[left]{} ($(rebBlockedPFact.west)+(-1.8,0.0)$) -- (rebBlockedPFact); - \draw[myarrow] (BlockedRAPFact) -| node[left]{} ($(rebBlockedRAPFact.west)+(-4.0,0.0)$) -- (rebBlockedRAPFact); - \draw[myarrow] (BlockedRFact) -| node[left]{} ($(rebBlockedRFact.east)+(1.8,0.0)$) -- (rebBlockedRFact); -\end{tikzpicture} -\caption{Setup of $2\times 2$ block transfer operators with rebalancing} -\label{fig:transferoperatorsetuprebalancing} -\end{figure} - -Figure \ref{fig:transferoperatorsetuprebalancing} shows the basic setup for block transfer operators with rebalancing enabled. Please compare it with the complete XML input deck in Section \ref{sec:xmlinputdeckrebalancing}. - -As one can see from the upper part of Figure \ref{fig:transferoperatorsetuprebalancing} first we build blocked transfer operators and a blocked coarse level operator using sub-factory manager objects \texttt{myFirstGroup} and \texttt{mySecondGroup} in the factories \texttt{myBlockedPFact}, \texttt{myBlockedRFact} and \texttt{myBlockedRAPFact}. Then, we rebalance the coarse level blocked operator $A$ from \texttt{myBlockedRAPFact}. - -The \texttt{myRepartitionHeuristicFact} object will decide whether rebalancing is necessary. If yes, then it will return the number of required partitions for the coarse level operator. This input is processed by the repartition interface and repartition factory objects that finally create \texttt{Xpetra::Importer} to do the rebalancing. The \texttt{myRebBlocked\{P,R,Ac\}Fact} objects use those \texttt{Importer} objects to perform the rebalancing. - -Please note, that we build additional helper factory manager objects \texttt{myRebFirstGroup} and \texttt{myRebSecondGroup} which contain all factories relevant for rebalancing the two blocks. - -\begin{mycomment} -No changes are necessary when setting up the block smoothers as they use the matrices on the current level as input (which may or may not be rebalanced in the previous transfer operator setup process). -\end{mycomment} - -\subsection{Complete XML input deck} - -The following listing shows the full input deck for a $2\times 2$ blocked operator multigrid setup including rebalancing and level smoothers. - -\label{sec:xmlinputdeckrebalancing} - -\begin{lstlisting} - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -\end{lstlisting} - -Note, that we are using a coordinate-based rebalancing method from the \texttt{Zoltan} package. The \texttt{myInputCoordsFact} provides the \texttt{Coordinates} variable to the \texttt{ZoltanInterface}. That is, \texttt{myInputCoordsFact} uses user-provided data on the finest level and switches to Coordinates provided by the \texttt{myTransferCoordinatesFact} on the coarser level. - -\begin{mycomment} -To deal with potential logical circular dependencies between factories you can use the \textit{dependency for} keyword as demonstrated for the \texttt{myTransferCoordinatesFact} and \texttt{myInputCoordsFact} in this example. Note: you can always use the \textit{dependency for} keyword to extend/change factory dependencies in the xml file. -\end{mycomment} - - - -\section{Background} - -\subsection{Xpetra-style versus Thyra-style numbering} -\label{sec:xpetraversusthyra} - - -\chapter{Using \muelu in user applications} - -This tutorial demonstrates how to use \muelu from within user applications in C++. In \cite[Section 2.6]{Mue} it is explained how to use \muelu through the \texttt{MueLu::CreateE/TpetraPreconditioner} interface. This interface is designed for beginners which want to try \muelu through standard \trilinos interfaces. Note that there is also support for \stratimikos. Please refer to the \texttt{examples} in the \muelu folder for more details. - -This tutorial aims at more advanced methods to use \muelu, creating an explicit instance of some \muelu classes like \texttt{MueLu::Hierarchy} and \texttt{MueLu::HierarchyManager}. In the next sections we give some code snippets. Most of them are borrowed form the \texttt{laplace2d.cpp} file in the tutorial. - -\section{Preparations} -First of all, we have to define a communicator object. -\printCppListing{laplace2d.cpp_2.fragment} - -For the multigrid method we need a linear operator $A$. For demonstration purposes, here we just generate a 2D Laplacian operator using the \textsc{Galeri} package (see \ref{lab:examplesym}). In this example we use \epetra for the underlying linear algebra framework, but it shall be mentioned that it works for \tpetra in a similar way (refer to the code examples in the \muelu examples folder). -\printCppListing{laplace2d.cpp_4.fragment} - -\muelu is based on \xpetra which provides a common interface both for \epetra and \tpetra. Therefore we have to encapsulate our \epetra objects into \xpetra wrapper objects. This is done using the following code. -\printCppListing{laplace2d.cpp_6.fragment} -Note that the \muelu setup routines require a \texttt{Xpetra::Matrix} object. The wrapper class \texttt{Xpetra::CrsMatrixWrap} is just a wrapper derived from \texttt{Xpetra::Matrix} which manages a \texttt{Xpetra::CrsMatrix} object which is the common base class for both \epetra and \tpetra CRS matrix classes. The details are not really important as long as one understands that one needs a \texttt{Xpetra::Matrix} object for \muelu in the end. -With the \texttt{SetFixedBlockSize} routine we state that there is only one degree of freedom per node (pure Laplace problem). -For aggregation-based algebraic multigrid methods one has to provide a valid set of near null space vectors to produce transfer operators. In case of a Laplace problem we just use a constant vector. -\printCppListing{laplace2d.cpp_8.fragment} - -\section{Setup phase} - -With a fine level operator $A$ available as \texttt{Xpetra::Matrix} object and a set of near null space vectors (available as \texttt{Xpetra::MultiVector}) all minimum requirements are fulfilled for generating an algebraic multigrid hierarchy. There are two different ways to setup a multigrid hierarchy in \muelu. One can either use a parameter list driven setup process which accepts either \texttt{Teuchos::ParameterList} objects or XML files in two different XML file formats. Alternatively, one can use the \muelu C++ API to define the multigrid setup at compile time. In the next sections we show both variants. - -\subsection{XML Interface} - -The most comfortable way to declare the multigrid parameters for \muelu is using the XML interface. In fact, \muelu provides two different XML interfaces. There is a simplified XML interface for multigrid users and a more advanced XML interface for expert which allows to make use of all features of \muelu as a multigrid framework. Both XML file formats are introduced in the previous sections of this hands on tutorial. -However, for the C++ code it makes no difference which type of XML interface is used. - -Assuming that we have a \texttt{Teuchos::ParameterList} object with valid \muelu parameters we can create a \texttt{MueLu::HierarchyManager} object -%First of all, one has to create a \texttt{MueLu::ParameterListInterpreter} object which either accepts a \texttt{Teuchos::ParameterList} or a file with XML parameters. -\printCppListing{ScalingTestParamList.cpp_2.fragment} -For an example how to fill the parameter list the reader may refer to \cite[Section 2.3]{Mue}. Note that there are routines to fill the parameter lists with the information from XML files. You can also directly provide a file name of a XML file to the \texttt{Muelu::ParameterListInterpreter}. For details you may refer to the doxygen documentation or the example in \texttt{laplace2d.cpp}. - -Next a new \texttt{MueLu::Hierarchy} object is generated -\printCppListing{ScalingTestParamList.cpp_4.fragment} -The \texttt{CreateHierarchy} creates a new empty multigrid hierarchy with a finest level only. The user has to feed in the linear operator $A$ and the near null space vector. If further information is available, such as the node coordinates, they can be also stored in the finest level. The coordinates are needed, e.g., for rebalancing the coarse levels. -Finally, the \texttt{SetupHierarchy} call initiates the coarsening process and the multigrid hierarchy is built according to the parameters from the \texttt{mueluList} parameters. -\printCppListing{ScalingTestParamList.cpp_6.fragment} - -As XML parameter file any of the files shown in the previous tutorials can be used. - -\begin{mycomment} -As one can see from the last code snippet, the \texttt{Hierarchy} allows access to all important parts of the multigrid method before setup. So, if you have to feed in some non-standard information, this is the way how it works. Using the \texttt{CreateE/TpetraPreconditioner} interface may be easier but does not allow to access the finest level before setup. -\end{mycomment} - -Once the \texttt{SetupHierarchy} call is completed, the multigrid hierarchy is ready to use. The reader can skip the next section about the C++ interface and proceed with \S\ref{sec:muelu_belospreconditioner} for an example how to use the multigrid method as preconditioner within a Krylov subspace method from the \belos package. - -\subsection{C++ Interface} - -As an alternative to the XML interfaces, the user can also define the multigrid hierarchy using the C++ API directly. In contrary to the XML interface which allows to build the layout of the multigrid preconditioner at runtime, the preconditioner is fully defined at compile time when using the C++ interface. - -First, a \texttt{MueLu::Hierarchy} object has to be defined, which manages the multigrid hierarchy including all multigrid levels. It provides routines for the multigrid setup and the multigrid cycle algorithms (such as V-cycle and W-cycle). -\printCppListing{ScalingTest.cpp_6.fragment} - -There are some member functions which can be used to describe the basic multigrid hierarchy. The \texttt{SetMaxCoarseSize} member function is used to set the maximum size of the coarse level problem before the coarsening process can be stopped. -\printCppListing{ScalingTest.cpp_8.fragment} - -Next, one defines an empty \texttt{MueLu::Level} object for the finest level. The \texttt{MueLu::Level} objects represent a data container storing the internal variables on each multigrid level. The user has to provide and fill the level container for the finest level only. The \texttt{MueLu::Hierarchy} object then automatically generates the coarse levels using the multigrid parameters. The absolute minimum requirements for the finest level that the user has to provide is the fine level operator $A$ which represents the fine level matrix. \muelu is based on \xpetra. So, the matrix $A$ has to be of type \texttt{Xpetra::Matrix}. In addition, the user should also provide a valid set of near null space vectors. For a Laplace problem we can just use the constant \texttt{nullspace} vector that has previously been defined. Some routines need additional information. For example, the user has to provide the node coordinates for repartitioning. -\printCppListing{ScalingTest.cpp_10.fragment} -\begin{mycomment} -When including the \texttt{MueLu\_UseShortNames.hpp} header file the template parameters usually can be dropped for compiling. The most important template parameters are \texttt{SC} for the scalar type, \texttt{LO} for the local ordinal type (usually \texttt{int}) and \texttt{GO} for the global ordinal type. For a detailed description of the template parameters the reader may refer to the \tpetra documentation. -\end{mycomment} - -A \texttt{MueLu::FactoryManager} object is used for the internal management of data dependencies and generating algorithms of the multigrid setup. Even though not absolutely necessary, we show the usage of the \texttt{MueLu::FactoryManager} object as it allows for user-specific enhancements of the multigrid code. -\printCppListing{ScalingTest.cpp_12.fragment} - -The user can define its own factories for performing different tasks in the setup process. The following code shows how to define a smoothed aggregation transfer operator and a restriction operator. The \texttt{MueLu::RAPFactory} is used for the (standard) Galerkin product to generate the coarse level matrix $A$. -\printCppListing{ScalingTest.cpp_14.fragment} - -The user-defined factories have to be registered in the \texttt{FactoryManager} using the lines -\printCppListing{ScalingTest.cpp_16.fragment} -\begin{mycomment} -If you forget to register the new factories, the \texttt{FactoryManager} will use some internal default factories for being responsible to create the corresponding variables. Then your user-specified factories are just ignored during the multigrid setup! -\end{mycomment} -Note, that the \texttt{FactoryManager} is also responsible for resolving all dependencies between different factories. That is, after the user-defined factories have been registered, all factories that request variable $P$ are provided with the prolongation operator $P$ that has been generated by the registered factory \texttt{PFact}. If there is some data requested for which no factory has been registered by the user, the \texttt{FactoryManager} manages an internal list for reasonable default choices and default factories. - -Next, the user has to declare a level smoother. The following code can be used to define a symmetric Gauss-Seidel smoother. Other methods can be set up in a similar way. -\printCppListing{ScalingTest.cpp_18.fragment} -Before the level smoother can be used, a \texttt{MueLu::SmootherFactory} has to be defined for the smoother factory. The \texttt{SmootherFactory} is used in the multigrid setup to generate level smoothers for the corresponding levels using the prototyping design pattern. Note, that the \texttt{SmootherFactory} has also to be registered in the \texttt{FactoryManager} object. If the user forgets this, the multigrid setup will use some kind of default smoother, i.e., the user-chosen smoother options are just ignored. -\printCppListing{ScalingTest.cpp_20.fragment} -Once the \texttt{FactoryManager} is set up, it can be used with the \texttt{Hierarchy::Setup} routine to initiate the coarsening process and set up the multigrid hierarchy. -\printCppListing{ScalingTest.cpp_22.fragment} - -\section{Iteration phase} -\label{sec:iterationphase} -Once the setup phase is completed, the \muelu multigrid hierarchy is ready for being used. - -There are several ways how to use the multigrid method. One can apply the multigrid method as standalone solver for linear systems. Multigrid methods are also known to be efficient preconditioners within iterative (Krylov) solvers such as CG or GMRES methods. - -In the next subsections it is demonstrated how to use \muelu as standalone solver and as preconditioner for iterative solvers from the \belos and \aztecoo package in \trilinos. - -For solving a linear system $Ax=b$ we need a right hand side vector $b$. When using iterative solvers we also need an initial guess for the solution vector. -\printCppListing{laplace2d.cpp_7.fragment} -In this example we just create \epetra vectors and wrap them into \xpetra objects. The right hand side vector is initialized with one and the solution vector is filled with random values. - -\subsection{\muelu as multigrid solver} -To use \muelu as standalone solver one can use the following code -\printCppListing{laplace2d.cpp_18.fragment} -In this code snippet a solution vector is created using the \texttt{Xpetra::VectorFactory} and initialized with the content from the solution vector \verb|xX| containing the initial guess. Then, the \texttt{MueLu::Hierarchy} object is set to the non-preconditioner mode and the \texttt{Iterate} routine is called -to perform \texttt{mgridSweeps} sweeps with the chosen multigrid cycle. If successful, the \texttt{mgridLsgVec} vector contains the solution. - -\subsection{\muelu as preconditioner for \aztecoo} -Commonly, multigrid methods are used as preconditioners for iterative linear solvers. Here, we show how to use the \texttt{MueLu::Hierarchy} as preconditioner within an \aztecoo solver (using \epetra). -After an \epetra solution vector has been created by -\lstinputlisting[firstline=2]{laplace2d.cpp_14.fragment} -the following code can be used to apply the \muelu hierarchy as preconditioner within the \aztecoo CG solver -\lstinputlisting[firstline=2]{laplace2d.cpp_16.fragment} -Basically, the \muelu hierarchy is put into an \texttt{MueLu::EpetraOperator} object, which implements the \epetra interface for preconditioners. -With the \texttt{SetPrecOperator} routine from the \aztecoo solver the \texttt{MueLu::EpetraOperator} object then is defined as preconditioner. - -\subsection{\muelu as preconditioner for \belos} -\label{sec:muelu_belospreconditioner} -%% common part - -\belos is the successor package of \aztecoo for linear solvers in \trilinos and works both for \epetra and \tpetra. Here we demonstrate how to use \muelu as preconditioner for \belos solvers using \xpetra. -First, we have to declare objects for the solution vector and the right hand side vector in \xpetra. The following code just uses a random vector for the initial guess and solution variable. -\printCppListing{ScalingTest.cpp_24.fragment} - -In the following we demonstrate how to use the \muelu hierarchy as preconditioner within a \belos solver. There are special wrapper objects for wrapping the \xpetra matrix and the \muelu hierarchy to \belos compatible objects. These can be used to define a linear problem for use with \belos. -\printCppListing{ScalingTest.cpp_26.fragment} - -Then, one can set up the \belos solver. For a \belos GMRES solver one uses -\printCppListing{ScalingTest.cpp_28.fragment} -Finally, we can solve the linear system using \belos with the \muelu multigrid preconditioner (left-preconditioning) by calling -\printCppListing{ScalingTest.cpp_30.fragment} -and perform some convergence checks -\printCppListing{ScalingTest.cpp_32.fragment} - -\section{Full example} - -The reader may refer to \texttt{laplace2d.cpp} for a working example to study the source code. This demonstration program has some more features that are not discussed in this tutorial. - -\begin{exercise} -Compile the example in \texttt{laplace2d.cpp} and then run the program in parallel using two processors - \begin{verbatim} - mpirun -np 2 ./MueLu_tutorial_laplace2d.exe --help - \end{verbatim} - Study the screen output and try to run the example with an XML file as input for the multigrid setup. -\end{exercise} -\begin{exercise} -Create large scale examples using the \verb|nx| and \verb|ny| parameters for a finer mesh. Choose reasonable numbers for \verb|nx| and \verb|ny| for your machine and make use of your knowledge about \muelu for generating efficient preconditioners. -\end{exercise} - -\chapter{ML ParameterList interpreter} - -\section{Backwards compatibility} -\ml \cite{mlguide} is the predecessor multigrid package of \muelu in \trilinos and widely used in the community for smoothed aggregation multigrid methods. \ml is implemented in C and known for its good performance properties. However, the disadvantage is that \ml is harder to adapt to new applications and non-standard problems. Furthermore, \ml uses its own internal data structure and is somewhat limited to the use with \epetra objects only. In contrast, \muelu provides a fully flexible multigrid framework which is designed to be adapted to any kind of new application with non-standard requirements. Furthermore, it is based on \xpetra and therefore can be used both with \epetra or \tpetra. Nevertheless, it is an important point to provide some kind of backwards compatibility to allow \ml users to easily migrate to \muelu (or make experiments with \muelu without having to write to much new code). - -In this tutorial we present the \texttt{MueLu::MLParameterListInterpreter} which provides support for the most important \ml parameters to be used with \muelu. - -\section{C++ part} - -\subsection{Preparations} -In order to use \muelu (instead or aside of \ml) you first have to add it to your application. Please refer to the \muelu user guide for information about compilation and linking (see \cite{Mue}). Basically, if your application is already working with \ml you should only need to compile and install \muelu and make sure that the \muelu libraries are found by the linker. - -\subsection{C++ interface} - - -In the following we assume that the linear operator $A$ is available as \verb|RCP A|. - -Then we create a parameter list and fill it with \ml parameters. Please refer to the \ml guide \cite{mlguide} for a complete list of available parameters. -\printCppListingSkipLine{MLParameterList.cpp_6.fragment} - -\begin{mycomment} -Be aware that the \verb|MLParameterListInterpreter| does not support all \ml parameters but only the most important ones (e.g., smoothers, transfer operators, rebalancing, ...). There is, e.g., no support for the Maxwell specific enhancements in \ml. -\end{mycomment} - -Instead of defining the \ml parameters by hand in the ParameterList you can also read in XML files with \ml parameters using -\printCppListingSkipLine{MLParameterList.cpp_4.fragment} - -Next, you create a \verb|MLParameterListInterpreter| object using the parameters and create a new \verb|MueLu::Hierarchy| from it. -\printCppListingSkipLine{MLParameterList.cpp_8.fragment} - -Of course, we have to provide all necessary information for the multigrid setup routine. This does not only include the fine level operator but also the set of near null space vectors. Assuming that \verb|numPDEs| stores the number of equations (and near null space vectors) the following code allows to produce piecewise constant standard near null space vectors (which should be valid for many PDE discretizations). -\printCppListingSkipLine{MLParameterList.cpp_10.fragment} - -Then we just feed in the information to the finest level -\printCppListingSkipLine{MLParameterList.cpp_11.fragment} - -Finally we call the \verb|Setup| routine which actually builds the multigrid hierarchy. -\printCppListingSkipLine{MLParameterList.cpp_13.fragment} - -Once we have the multigrid hierarchy set up we can use it the same way as described in \S\ref{sec:iterationphase}. - -\begin{exercise} -Study the source code of \texttt{../src/MLParameterList.cpp} and compile it. Run the executable \verb|MueLu_tutorial_MLParameterList.exe| with the \verb|--help| command line parameter to get an overview of all available command line parameters. Run the example using -\begin{verbatim} -./MueLu_tutorial_MLParameterList.exe --ml=1 --muelu=0 - --xml=xml/ml_ParameterList.xml --linAlgebra=Epetra -\end{verbatim} -and study the \ml output. Compare the output and results when switching to \muelu using the same input file -\begin{verbatim} -./MueLu_tutorial_MLParameterList.exe --ml=0 --muelu=1 - --xml=xml/ml_ParameterList.xml --linAlgebra=Epetra -\end{verbatim} -\end{exercise} - -\begin{exercise} -Play around with the parameters from \verb|MueLu_tutorial_MLParameterList.exe|. Change, e.g., the problem type to a 2D Laplace problem (\verb|--matrixType=Laplace2D|) and adapt the \verb|--nx| and \verb|--ny| parameters accordingly. -Try to run both \ml and \muelu and compare the results. Do you find significant differences? -\end{exercise} - - - - -% \begin{tikzpicture}[>=latex',scale=0.24] -% \tikzstyle{nodestyle} = [draw, shape=rectangle, inner sep=1pt, fill=red!20, font=\tiny] -% \tikzstyle{edgestyle} = [draw, font=\tiny] -% -%\begin{dot2tex}[dot,tikz,styleonly,codeonly] -%digraph G { -%size="7.5,7.5"; -%d2ttikzedgelabels = true; -%{ -%node [shape=plaintext, fontsize=16]; -%edge [style=invisible]; -%l0 -> l1 -> l2 -> l3 -> l4 -> l5 -> l6 -> l7 -> l8 -> l9 -> l10 -> l11 -> l12 -> l13 -> l14 -> l15; -%} -%node[style="nodestyle"]; -%edge[style="edgestyle"]; -%0 [label="MueLu::CoarseMapFactory"]; -%1 [label="MueLu::TentativePFactory"]; -%2 [label="MueLu::CoordinatesTransferFactory"]; -%3 [label="MueLu::ZoltanInterface"]; -%4 [label="MueLu::RAPFactory"]; -%5 [label="MueLu::TogglePFactory"]; -%6 [label="MueLu::ToggleCoordinatesTransferFactory"]; -%7 [label="MueLu::SaPFactory"]; -%8 [label="MueLu::RebalanceTransferFactory"]; -%9 [label="MueLu::SemiCoarsenPFactory"]; -%10 [label="MueLu::NoFactory"]; -%11 [label="MueLu::RebalanceAcFactory"]; -%12 [label="MueLu::CoalesceDropFactory"]; -%13 [label="MueLu::AmalgamationFactory"]; -%14 [label="MueLu::UncoupledAggregationFactory"]; -%16 [label="MueLu::TransPFactory"]; -%17 [label="MueLu::RepartitionFactory"]; -%18 [label="MueLu::LineDetectionFactory"]; -%19 [label="MueLu::TransPFactory"]; -% -%{rank = same; l1; 13} -%{rank = same; l2; 12} -%{rank = same; l3; 14} -%{rank = same; l4; 18; 1} -%{rank = same; l5; 9; 7} -%{rank = same; l6; 5; 19} -%{rank = same; l7; 13} -%{rank = same; l8; 2} -%{rank = same; l9; 6;4} -%{rank = same; l10; 3} -%{rank = same; l11; 17} -%{rank = same; l12; 8; 11} -% -%0->8 [color=red, label=Nullspace]; -%0->14 [color=red, label=Aggregates]; -%1->0 [color=red, label=CoarseMap]; -%1->8 [color=red, label=Nullspace]; -%1->11 [color=red, label=A]; -%1->13 [color=red, label=UnAmalgamationInfo]; -%1->14 [color=red, label=Aggregates]; -%2->0 [color=red, label=CoarseMap]; -%2->8 [color=red, label=Coordinates]; -%2->14 [color=red, label=Aggregates]; -%4->11 [color=red, label=A]; -%5->10 [color=red, label=NumZLayers]; -%7->11 [color=red, label=A]; -%8->17 [color=red, label=Importer]; -%9->8 [color=red, label=Nullspace]; -%9->11 [color=red, label=A]; -%9->18 [color=red, label=LineDetection_VertLineIds]; -%10->8 [color=red, label=P]; -%10->11 [color=red, label=A]; -%10->19 [color=red, label=R]; -%11->17 [color=red, label=Importer]; -%12->11 [color=red, label=A]; -%12->13 [color=red, label=UnAmalgamationInfo]; -%13->11 [color=red, label=A]; -%14->12 [color=red, label="Graph"]; -%} -%\end{dot2tex} -% \end{tikzpicture} - - -\appendix -\part{Appendix} - -\chapter{Virtual box image} - -This chapter discusses the basics of the virtual box image that comes with this tutorial to allow the user to follow above explanations and do its own experiments with \muelu and \trilinos. A virtual machine has the advantage that it is rather easy to set up for a user. Even though compiling and installing got easier the last years by using a cmake based build system it is still a nightmare for not so experienced users. The virtual machine runs both on Linux and Windows as host and brings all the necessary tools for a quick start to \muelu. - -\section{Preparations} - -To use the virtual machine you basically have to perform the following steps. - -\begin{enumerate} -\item Install \verb|VirtualBox| on your host machine. You can download it from \verb|www.virtualbox.org|. -\item Download the \verb|MueLu_Tutorial.ova| virtual machine. The image file has 4 GB. -\item Run \verb|VirtualBox| and import the \verb|MueLu_Tutorial.ova| machine. -\begin{center}\includegraphics[width=0.8\textwidth]{pics/installation_1.png} \end{center} -Then, check and adapt the settings of the virtual machine. -\begin{center}\includegraphics[width=0.8\textwidth]{pics/installation_2.png} \end{center} -In general, one processor should be enough. But if you want to make some more reasonable tests with parallel multigrid you should increase the number of processors accordingly. -Click import, to import the virtual machine. -\item With a click on the start button the virtual machine is booting. -\end{enumerate} - -\section{First steps} - -\subsection{Login and setup} - -Once the virtual machine is started you first have to login. - -\begin{center}\includegraphics[width=0.8\textwidth]{pics/lubuntu_1.png} \end{center} - -The login data is: -\begin{center} -\begin{tabular}{ll} -Username: & muelu \\ -Password: & sandia -\end{tabular} -\end{center} - -\begin{mycomment} -You only need to enter the password in above screen. -\end{mycomment} - -After the login you should see the following desktop. -\begin{center}\includegraphics[width=0.8\textwidth]{pics/lubuntu_2.png} \end{center} - -First, you should adapt the language settings and the keyboard layout. You can switch the keyboard layout by clicking on the logo in the lower right corner. A right click on the logo allows you to change more details -\begin{center}\includegraphics[width=0.8\textwidth]{pics/lubuntu_3.png} \end{center} - -Then you are ready to go with the tutorial. - -\subsection{\muelu tutorial} - -Open the tutorial with \verb|evince| as pdf viewer. To open \verb|evince| you can either use the shortcut in the lower left corner of your desktop or press \Alt+\keystroke{F2} to open the \verb|Run| dialog and enter \verb|evince|. Load the \verb|muelu_tutorial.pdf| file in the \verb|tutorial| folder of your home directory. - -To open a terminal you have several option. Either use the shortcut button in the lower left corner. Alternatively you can open the \verb|Run| dialog (\Alt+\keystroke{F2}) and enter \verb|lxterminal|. As a third alternative you can just press \Ctrl+\Alt+\keystroke{T}. In the terminal, change to the \verb|tutorial| folder by entering \verb|cd tutorial|. Therein you can find the \verb|hands-on.py| script which is used throughout the whole \muelu tutorial. - -\begin{center}\includegraphics[width=0.8\textwidth]{pics/lubuntu_4.png} \end{center} - -\begin{mycomment} -Use the \keystroke{Win}+\LArrow and \keystroke{Win}+\RArrow keys to arrange the windows in a split view as shown above. -There are other useful keyboard shortcuts such as \keystroke{Win}+\keystroke{R} to open the \verb|Run| dialog or \keystroke{Win}+\keystroke{E} to open the file manager. -\end{mycomment} - -When plotting the results with gnuplot from within the \verb|hands-on.py| script it might be useful to make the plot windows to stay on top. - -\begin{center}\includegraphics[width=0.8\textwidth]{pics/lubuntu_5.png} \end{center} - -The virtual machine has all software installed that you need to follow the tutorial (including \verb|paraview|) - -\begin{center}\includegraphics[width=0.8\textwidth]{pics/lubuntu_6.png} \end{center} - -\section{Software} - -The virtual machine is based on a minimal installation of \textbf{Lubuntu 14.04}. The image file has 4 GB with about 250 MB free for the user. - -The following software is pre-installed: - -\begin{tabular}{ll} -Web-browser: & midori \\ -PDF-viewer: & evince \\ -Terminal: & LXTerminal\\ -Visualization: & paraview, gnuplot \\ -File manager: & PCManFM \\ -Analysis: & FreeMat v4.0 \\ -& GNU octave 3.8.1\\ -\end{tabular} - -The following system libraries are installed: - -\begin{tabular}{ll} -Trilinos: & Trilinos (developer branch: Oct 1, 2014) \\ -Direct solver: & SuperLU 4.3 \\ -VTK: & VTK 5.8 \\ -MPI: & OpenMPI 1.6.5 \\ -Python: & Python 2.7.6 \\ -Compiler: & gcc 4.8.2 -\end{tabular} - -\lstset{% - float=hbp,% - basicstyle=\ttfamily\small, % - identifierstyle=\color{colIdentifier}, % - keywordstyle=\color{colKeys}, % - stringstyle=\color{colString}, % - commentstyle=\color{colComments}, % - columns=flexible, % - tabsize=2, % - frame=none, % - extendedchars=true, % - showspaces=false, % - showstringspaces=false, % - numbers=none, % - breaklines=true, % - backgroundcolor=, % - breakautoindent=true, % - captionpos=b% -} - -\chapter{Error messages} - -\section{Syntax errors} - -\subsection{Parser errors} -\begin{cBox} -\begin{lstlisting} -XML parse error at line 27: file ended before closing element 'ParameterList' from line 1 -\end{lstlisting} -\end{cBox} -Forgot to close the \verb|| section that is opened in line 1 of the xml file. - -\begin{cBox} -\begin{lstlisting} -XML parse error at line 15: start element not well-formed: invalid character -\end{lstlisting} -\end{cBox} -Check line 15 for an invalid xml format. The reason can be, e.g., a missing closing character \verb|/>| for a parameter. - -\subsection{Parameter list errors} -\begin{cBox} -\begin{lstlisting} -All child nodes of a ParameterList must have a name attribute! -\end{lstlisting} -\end{cBox} -You probably forgot to add a name attribute in one or more elements of your xml file, that is you used, e.g., -\begin{lstlisting} - -\end{lstlisting} -instead of -\begin{lstlisting} - -\end{lstlisting} - - - -\begin{cBox} -\begin{lstlisting} -Error, the parameter {name="smoother: type",type="int",value="0"} -in the parameter (sub)list "ANONYMOUS" -exists in the list of valid parameters but has the wrong type. - -The correct type is "string". -\end{lstlisting} -\end{cBox} -Use the correct (proposed) value type for the given parameter name, i.e., -\begin{lstlisting} - -\end{lstlisting} -instead of -\begin{lstlisting} - -\end{lstlisting} - -\section{\muelu errors} - -\subsection{General errors} - -\begin{cBox} -\begin{lstlisting} -Throw test that evaluated to true: s_.is_null() - -Smoother for Epetra was not constructed - during request for data " PreSmoother" on level 0 by factory NoFactory -\end{lstlisting} -\end{cBox} -Failed to create a level smoother. Check the smoother blocks in your xml file. -The error occurs, e.g., if there is a typing error in the \verb|smoother: type| parameter. -For example -\begin{lstlisting} - -\end{lstlisting} -would trigger above error since the smoother type should be \verb|RELAXATION|. - -\begin{cBox} -\begin{lstlisting} -IFPACK ERROR -2, ifpack/src/Ifpack_PointRelaxation.cpp, line 117 -\end{lstlisting} -\end{cBox} -Errors like this indicate that it is a problem within the \verb|smoother: params| section. Most likely a (relaxation) smoother is requested which is not existing (e.g., \verb|Jadobi| instead of \verb|Jacobi|). - -\begin{cBox} -\begin{lstlisting} -The parameter name "smother: type" is not valid. Did you mean "smoother: type"? -\end{lstlisting} -\end{cBox} -There is a typo in your parameter list. Locate the parameter and fix it (using the suggestions, that come with the error message). - -\begin{cBox} -\begin{lstlisting} -Throw test that evaluated to true: maxNodesPerAggregate < minNodesPerAggregate -\end{lstlisting} -\end{cBox} -Choose the \verb|aggregation: min agg size| parameter to be smallter than the \verb|aggregation: max agg size| parameter for the aggregation routine. - -\subsection{Advanced XML file format} - -\begin{cBox} -\begin{lstlisting} -Throw test that evaluated to true: bIsZeroNSColumn == true - -MueLu::TentativePFactory::MakeTentative: fine level NS part has a zero column -\end{lstlisting} -\end{cBox} -This error indicates that there is a problem with the provided near null space vectors. There are different reasons which can trigger this problem: -\begin{itemize} -\item The near null space vectors are not valid (containing zeros, wrong ordering of internal degrees of freedom). Please check your near null space vectors. Maybe there is an empty vector or the ordering of degrees of freedom for the linear operator does not match with the ordering of the near null space vectors. -\item The near null space vectors are correct but used in a wrong way (e.g., a wrong number of degrees of freedom). Check the screen output for wrong block dimensions (CoalesceDropFactory). -\item There is a problem with the aggregates. Validate the screen output and look for unusual (e.g. very small or empty) aggregates. -\end{itemize} - - -\begin{cBox} -\begin{lstlisting} -Throw test that evaluated to true: factoryManager_ == null - -MueLu::Level(0)::GetFactory(Aggregates, 0): No FactoryManager -\end{lstlisting} -\end{cBox} -This is a typical error when the dependency tree is screwed up. If aggregates and/or transfer operators are involved usually one has forgotten some entries in the \verb|Hierarchy| sublist of the extended XML file format for the internal factory managers. These errors can be quite tricky to fix. In general it is a good idea to start with a working XML file and extend it step by step if possible. -The following general strategies may help to track down the problem: -\begin{itemize} -\item Run the problem with \verb|verbosity=high| to get as much screen output as possible. Check for unusual screen output (such as \verb|Nullspace factory|. -\item Try to generate a graphical dependency tree as described in \S\ref{sec:dependencytrees}. -\end{itemize} - -For example, above error is caused by the following XML file - -\lstset{% - float=hbp,% - basicstyle=\ttfamily\small, % - identifierstyle=\color{colIdentifier}, % - keywordstyle=\color{colKeys}, % - stringstyle=\color{colString}, % - commentstyle=\color{colComments}, % - columns=flexible, % - tabsize=2, % - frame=single, % - extendedchars=true, % - showspaces=false, % - showstringspaces=false, % - numbers=left, % - numberstyle=\tiny, % - breaklines=true, % - backgroundcolor=\color{ocre!20!white}, % - breakautoindent=true, % - captionpos=b% -} -\begin{lstlisting} - - - - - - - - - - - - - - -\end{lstlisting} - -\lstset{% - float=hbp,% - basicstyle=\ttfamily\small, % - identifierstyle=\color{colIdentifier}, % - keywordstyle=\color{colKeys}, % - stringstyle=\color{colString}, % - commentstyle=\color{colComments}, % - columns=flexible, % - tabsize=2, % - frame=none, % - extendedchars=true, % - showspaces=false, % - showstringspaces=false, % - numbers=none, % - breaklines=true, % - backgroundcolor=, % - breakautoindent=true, % - captionpos=b% -} - -Looking at the error output it seems to be a problem with aggregates. However, in the XML file no special aggregation factory has been declared. The only factory which has been introduced was a tentative prolongation factory for generating unsmoothed transfer operators. Therefore, one should start digging into the details of the \verb|TentativePFactory| to find out that the unsmoothed transfer operator factory is responsible both for creating the unsmoothed prolongator and the coarse level null space information. When looking at the screen output one should find that the last called/generated factory is a \verb|NullspaceFactory| which can also be a hint that the problem is the null space. - -When looking at the XML file one can see that the \verb|myTentativePFact| factory has been registered to be responsible for generating the prolongator $P$, but the generating factory for the variable \verb|Nullspace| is not declared. \muelu tries to generate the default null space, but since it does not know about \verb|myTentativePFact| to be a \verb|TentativePFactory| which would already produce the needed information the calling ordering of the dependent factories (e.g., aggregation) gets mixed up. - -Note that the \verb|TentativePFactory| is special. If you declare an explicit instance of the \verb|TentativePFactory| you always have to register it for generating the \verb|Nullspace| variable, too. Only in very special cases this would not be necessary. - -\begin{mycomment} -This is a general rule: if a factory generates more than one output variables, always make sure that all these output variables are properly defined in the \verb|FactoryManager| list (or \verb|Hierarchy| sublist in the xml files, respectively). -\end{mycomment} - -To solve above problem there are two possibilities: -\begin{itemize} -\item Following above comment, just register \verb|myTentativePFact| for generating \verb|Nullspace|. That is, just comment in the corresponding line in above xml file. -\item Alternatively you can register \verb|myTentativePFact| for generating \verb|Ptent| (and \verb|P|). This way you mark the \verb|myTentativePFact| object to be used for generating the unsmoothed transfer operators (and state that they shall be used for the final prolongation operators). \muelu is smart enough to understand that the factory responsible for generating \verb|Ptent| is also supposed to generate the null space vectors. -\end{itemize} - - -\begin{thebibliography}{99} -\bibitem{briggs} W.L. Briggs, S.F. McCormick and others, A multigrid tutorial, SIAM, 2000. -\bibitem{Mue} A. Prokopenko, J.J. Hu, T.A. Wiesner, C.M. Siefert and R.S. Tuminaro \emph{MueLu User's Guide 1.0 (Trilinos Version 11.12)}, SAND2014-18874, 2014 -\bibitem{vanek1996} Vanek, P. and Mandel, J. and Brezina, M. Algebraic Multigrid by Smoothed Aggregation for Second and Fourth Order Elliptic Problems, Computing, 1996, 56, p. 179--196 -\bibitem{sala2008} Sala, M. and Tuminaro, R. S., A new Petrov-Galerkin Smoothed Aggregation Preconditioner for nonsymmetric Linear Systems, SIAM J. Sci. Comput., 2008, 31, p. 143--166 -\bibitem{wiesner2013} Wiesner, T. A., Tuminaro, R. S., Wall, W. A. and Gee, M. W., Multigrid transfers for nonsymmetric systems based on Schur complements and Galerkin projections., Numer. Linear Algebra Appl., 2013, doi: 10.1002/nla.1889 -\bibitem{wiesner2014} Wiesner, T. A., Flexible Aggregation-based Algebraic Multigrid Methods for Contact and Flow Problems., PhD thesis, Technische Universit\"at M\"unchen, 2014 -\bibitem{mlguide} M.W. Gee, C.M. Siefert, J.J. Hu, R.S. Tuminaro and M.G. Sala, ML 5.0 Smoothed Aggregation User's Guide, Sandia National Laboratories, 2006, SAND2006-2649 -\end{thebibliography} - -\end{document} diff --git a/packages/muelu/doc/Tutorial/tex/pics/1level_1000jac09.png b/packages/muelu/doc/Tutorial/tex/pics/1level_1000jac09.png deleted file mode 100644 index c09c927384d171525f8bf5378754dc19f3cd49d4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 79456 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

Rg6x!SyN#3yYJJ%7y|R-soigvVqDvElm?ok=E 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

&A_E)ucldQ5FX!iM#NseD3Qp3=K}Drzp_0in zAnxMR$!ZCy;qzHoq|{%Ym!vDdeY^h`t*x!HOj})ClW1_T_vzsX?d4mDg0%zlE9<%pvkZh& zX2IWj9!w$dHVDX3s;cd&T=k6$&}0)tMUCE{9$r`&;Q=v~t(k*SB~Cl2;@z}OyF&ma zCC`*ol>aW_5=xjq(JKE@h@*k{Ganckx&QHwjU7U^#VoQq+xH~;pV1Q*0(X!IjmO7J zwB4Rj_O_T|d|;7T8<32;Zu^@va!VKPX+B8?WBB-Vy{P9s_|w&t+?w=vc^o7wEUta` z_u=sqzRog}o1L3#PPw|6stSAV@(ld>rgMBrOqBd!u7MBgU1G`V7CE4fO(=BO#45w=rXP=kr&i@i57cQ{V zDbqE+xt`|bGmEILIzO7!9*6zr@W$`lr^RjhS6rs$FGb3<5oZenX+LLN4xZH6?|s8z z((m7$hn=#SM1wQb*;Ud~OU1WS*}`!wI!e1Uv9ruXs(pLJjfDp-8}uca@@!24BOB z6i23a7bjCS7*bM%&C+*ke<=6&S6h9DSKSr;{QS`B@(RG00}5s~u^%8dg`R!9BnPDs zjErzXetm)Kq=5TU`0{lP7YY(Ct}2QKQ#F0F;RKU_K!T^&IsurU3NRyy`}$8Wy$Ibg zA-eGTmKk!u4H+Y2Z-UWZ=`-nj3prNqK!cy?|B^-ceE}Pg=!ETI6L)wxyxcoKdlT~qGA--TIMwoHp*DK~ zoRGh?LGi_`WQH;qR9RIPt{;*o}JB$ zO=)-zQ0x+7YDoZG!-4rlphRjxOC0+dyxYXC+^C5@IdhCZ{^zScFJ1Q5*%mSGVvp%>viUj@GDAr4B zZ~>#bQN}xs$htb&+{F$IB9`y%cSuN*SheP=BZ-ICs=1axboDki@7!NP*rM?I>#`Z} z`6QVSfW*oJKm8GxDwm458NKgLU!uvc<`Z9B*dJ<}2QVY{_aQ^(;&R<90*{!0AnfxM zGt|A`e_+8S5a0RLOLK8Blz-mZmPOe0s|r<0O0&%PU$IB{x7(miC-u)hadf{^T6#CC>$d=Lsv742H%IQtQuc#E_PtsPqa5A47Z~ytYM4Bry!sDopP%lRS31`xZN~02Ma?Ljt$G>6)r}|NC8N_jtsW zW3JHL0s!HDObm=SZ;G^HsySgkr@2c<2at8)>-V&44K9$}Fdq`FR1w1?<56V1@I8Dw zIH)ZXwQ6aHBtRE7U9&Xvkx$~Ekx}|i(XfY67xwZ{p|=||)LXxr5eV3apS2ZQV}S!G zW+Lc~vzd7RF{!U( zz-hq}4Hfj9Z{OZ4CaZO!i;hM}KOuKxYv7@60|-S>P=w3TW{T;<6hsi*RjR5Oif+ys z6&3Rez(ds)4RM0KMUXqjB)RS^SLowDgpwR6@oDo82>}jnL>t&^w+FQh=;f&6j{L7o zr%yH?LR#TfoI@+9^t>>)017{aozsen6%f<9dK${Fkui1;)e$#M9!nMQ*|)<;{Lf5U z(Rf*+g^wGUNl~IH!?Iaz1^V9AIq7q%+zLY~Eb>y!pNg4DovfX#Kf#GzUnKh(5(Z7gT1dhlx_bDqkGG-anGB z%}*V;-slpxF?qH|$88JHBlK%Dol^#lyydEvmh?pQ+-mnNu>ZC+7-FWOSUsi`kvr6F z0=-^C<7659^xBeZ&0aK5?&!7-hGIeI3%Fw?LBh}^0+{PQEh={RCu?s^66hA4eypAw zn&gjX4&PVG$FV?7n z*v5bI{R?NobNnsnhw?Rp+pmHsc3Idy7Cp_$g%duStOg0$$@e6~);9Xl5xLc;~sT8q63jW ze|ij|ikF!}QDI@Ctx(nU_MY`*XJ2GnkOt5Eq(T0ll2h`Kkl||j48CIRny=SaV0WJy z3PK$#i%dyDWcV-K<;y^qqrA&=ylr-5Jv$41a9{i&rcBiG>HWXXI8Ec-8k^J8_lX@p zKmVL!GrZ+@v9MB@MInxP{Re5O?RuME#!|m2>Gdu8@?T$C5Vh_eTEi1sWsr7&^NhwV zQ)owK@qfn954!&IW~Nra-o?d*Fa>1DOiIi4j+2B@U>rzb3@c+!WS~!<-d}=Wn&Hce4%b&(&lgvkmiV7uyKiOFH7LM%( z(}z>pnti0M&b8SJg#4;4=VOE?*kdQkX*tyi!~D~qkCoDM1pO=UP6%!D;U59NMq%`EEO2A>TM}X+ zL);f#@*ia6y_w&+TL^{1E6l`onUu27Kk>yc^GH?sh&tKpBkBrkV$U7UCKRrAUu z2ypQnnmp7>k|JW6d>;u2@VZJbBu>}F56v8JO%FTh18o{W+YS|v8{VCnsS|9?z%g`u z?A#BrdKnqm{aa6G@&^8^VggvcWh|zxWCikQ#Kcs}TvG}^F&$lHC9e;WmX?Ov{OogZ z!{BMo61lh}x&eb4TqIFX19=n`lknebRXpG$;NTDyOPuUa4$RDSW*f=`kdI_&^8qdG zy9bnOr#Uss>NFw0qk>B|CN;J;+C@i3^4e27XLC4jeE>mme(84;v9NF|x5l(t48>?8 zmy=U(%7QUF$KJ7K_%FXJEO@8`V7aZ|e;6KvGdTG2<~CF8mb%zp{zz~gv+TTv(2k}u9nt6 z%=$pGT33g)>I9L82cJi$;SX%Hg99hGaqPzxdSZp6BSszX9NR!=$g$S2o-{wUr9U`d>`9b!TV6F=;oG7Z56$ zr%fP_jSa-*NDOdgdTbuqfFnY=23lxmUry6oW8Uuo`2(iRm(7LL%#Gpz8Su2!xyqT` z`bYgP(-1Y3UDdN9B_u$abq=lfP+HduI3oP` zvDzxv@^!+0ClYJxC6u6b!QUE*;pD_=B^ri3Ruq^>2)(YELyc~LH@BGpw~2}h;*H^g zIN(VbLNAW33e}*qdbvO~obl;n%0MAMb-ju0xwSDFH}h-XoE%7AOjdwF8x z&!3Z1q&zQp`v_c16Y^&(89>r5)qGYWCW*t){C4GyQw(ID6pXh-z_^lZ1NZ@lbfonwl5n14?P_)pj6V# zksxY?FLtoJf8_9cq=`pF1RUJr!PbdUhk0@zczqw>;DB>(UaYL_eUSljZ*hGxc#EB( zF#!gJx4|2edwVKeo&eJ9MQ3CT#ZDxq?mjQLqz#PZMj2B`qq*Of{2ErLsi+4$eDQl) z&Mr&pGf%VJ|GbWX0y@ffc%!tmOa{NEW@mqoRO(cjX9irKh2zuxy3!EI|KG=Fm(6S6 zlv3sSxcbr7jn!EQ4Uk#@bGtva%G2p(c)1Nyq2rsJHEOQGjl}Wv^9{ zGg`cy6%sO5S{y=kvI+(OuogmbvGCB4Fo!b@H@ENQKWK0bqe9xkPE1P5*xlWIDn4y` zNv$&D-$DSQJA*LMkI?rWkuuWCW@uU!vM8}@EU%hsi8!l$8{El3VS;#|se%zDgfQ-Z z{T^QJpk$aehJPPrAGWE*fWMxoKk39GC9S6Pn&xDdkowvb{OBMv09szGtW+Brxe^D` z60@({f=ADR3&&WO6^X0;0R=ROfutWg?9oOK}(=(jPaR-OI*+LO!rzU2{JSNr*$jFssWe;aS-pOC`q2a(lht%H> zU~jp9UCz$nKLZW~$roc}pdqZu=%zF6-CRPeUE;)A z6v^qiZ0c;bSa66;QL2^2>PjX+8O9elEEeWP6tRbggF~QdvP?TRF30p1F{^ch3>At} zis;cgJk|E)r9n|{t?#2am-$3@1lghX6%9Q{F~cK`n~dMvb-q1hZEelp-#?K-LsnY4 zyT5<7(yUKr;BmqK9<#4|I}Zdd_4-(sGc*v-jPHhFJ8eCJ4r>8=)TDy=VJs3ySJ3R2 znw(a!;S%(j`f+K;65Nhool6iXI@f(u_iAT3^> z2F=uYU8NpvK*N$kN7ee1_=pq$(Yj| zhBBd*sP%F`;3xmV>!S6R8>Bld-F!$K-@f!wvAnir$y#_5$G@G-Sgum8J}ps}R+OJ? zrmBU-s36b5`9Z$y2a$&yhuW|@!Q`w+lGoKW@9#dxFM}=tCte>fX4iXHgr$<7y9~}Z z3-?_d_+#KKYUvw|(0CtFu_)#}3Jk2a0Slab1~iIbk?gmjGEB(t{9-7hSb9LCMP+tW zdN3ux;x`g-_+-}?$DY&nU>Jq+Y8dUkl!a5t&IhvX&AdKNSc2KwHJb*WmTor-6pz zI@bLB!)=A3k590Nmj^_>8;^ev18Ye=xb1~z(z@t_C@41$L59jgdvXb?GL)O`x!iyN z5b2#&?Wh2em?c8{ZK)5udq!=|UJHFf-rv=fhFe?LFf;i=3JcM?3Ag0sOi!D|i1>3?h8`{dDWkGaG3^unW-iVGibMbN7O z0rL84>T?jaRJ~_x7)}ar>=!=`oKl6f-4iV%km4NFDKM97TxcC*6~cxKSNw-kKMy zwF4()w=@s3)^e24rR>dLpYSw|AWkM zb3^Q)aefa!rl28DO)KciQodYP=jix#TKmYt`C8!mngR1y9Zp#iR46cF@bF}h5fPa7rcnsy_;?Va++1>y zlfT*9Ug>IdgO#1Nfw1R`i(^buOTHOYoSacMAMWB}utQAfEE6_lS66ci3hGr%t}HES zXlf<_On`vE)ZDz*ey&j^SJKGH2tKP`US3@>6czsI!Um{c;h}4VbV|V04*gAy%_Jtu zH({SM=(m@^NW54JLVforB$EPw#SRouQ@ByVVf5yctHy4@D-KmP8JTP&u|^N5kC&DG zPQBw0@NH77!?eLagp}6 zNbmgGH{LGSbMDi!B9`O)tRzG!FnjnF_*!sWxOWc60%P@_;jSToT(8`8^~~nqcCG0p zt8LW>P_VLMQxsGuBr>ke5L;LPW)4WaMGQ%3aq0X2N*9ueDp_@*5wg8K__&6XErVC( zSQ`Zz+on<)T*4#4gxf5j;xzctZuvCuHj?G=o8$*Mxo4XkqZYoHDfa$iMPF1l_W^dH0ZpCio%8Q-&NwL^Rm| z6ZX-LL*;N;_*9kE#Jh0(VawH#5Vwt|ti%zFaky$4gk{<())g&2Yvb_oP*rtwiq(6X zP+D$IQC##kk0zBnKkN0$??M@TuisiJ%}?FM)C#)UhyRbMvkdBL|K2tjNC^tkAR^t} zWf0QRUD6>)NQcrX-6bF(jdUa3ARy8q-JMd;;{4`6^YFqKXU>cQ`@8pNuXW$omBbY& z|3?0?zW%rD#Nqp*sA4s7Ur2L|q=tt@dfQA5&py;Tt`3nyd6Lri8^x$i<24^5qQFgk zPfPJiV^4SUB%!P8=-1N&ql`>&7haMnsjxY-{f~oDE%^relNT9(7bC*uxl8X)rQ3F+`1hzw%cg!NwlRRm>r^*hRf=rJ<#zWnkzV z7?72fwHhx;Z));%adCmmP+op0bFTGk3C5?iGgLJR+0$)og<8OrSF_H}!fW5rdVvO| z$Oa`&Fry|5{u0A=DEHpMyKA>U1%F3X3HVh?5*QeV%mcr`YfH9lmK5IBcDq5<3hz_{ zKLJ6Wqhf$+Ma1qcP0BDO$obH8PG^UVpLc(&j6oM@z%7nlw{Ke0(;~&zw~%EYbVHfv zS_)pWISagZwd;DcH&17yw$H7mfA-5f4fujj)=Nw$xU}13a%happ!b^w3(Lpd7LYqc zw<;M|?!#5InEc7*h_p0`2h~WH-(J4{$l0IRP14)ox_^pyp{K46Aih>V*lg_#bcE8C z<%T~}?|eaKC&6=izIyM0qWtHfuIsD%J+Eg06O#uMCV5D$C);QLdZzQ!Jh}FN_w=Zh zK^jp@`^OK~*HJp9K3wmY66U(2-X-%|CFhM?p9w_{b#;WEo$H&KQSpK&kQOesfkI9nEqZ}z@g5P;Q=OSk`hOIa4p|sYu%@6Z807DQo=Gk zBB}y;&Qc7c(C_U)7<}|X3~6=XF;Qyzp~m^+iTCuzJh`R z0gp>39UUFGhSb#5AcP0O;go~~^|x=|(seKXM*Kj6aI<)(+y99aa_TUvHtGdjG7%AC zH^_+-x=W3K`ID4n$quYP5uXj~m1}o!v;?2TF&}PMLFe>$uA1iJvZyIdC?Oye-#y2` zFy(+EpZsI+Qz*ClqB%Krjf@OsE}Kga4dp8LFIPsh)>fR@L-Vb0{t^SNg zaB1?n=L-)ZIG3E4mgM3KCf;UW;6ON#k|2}<(zrGGm4O(N&rb#5o~kpd-H>?Zbgoco zM&3(seT41c07xf)jPZ%bkDJ*Ck=?CnhewPeqVnhxx#RA0($jr#%yDLy6N{<$9j7dt7NfVl`d2Pi6?2PPEPhpTM zi02cQaMDcGa-yI>cetU>{G6XYIQj|p?BylqQL}HN9XKpez#bXW_LQ>(Hc_H8oPtTT=rwGX< zJyiwK;e?cwl*Gghcwn;ND<~@3+1dsL1@&AHx}pE~T)eJgSi7+Xj~N)B3{f)0(cUT!s`+QY zV<cXErPs?LA!%d64w zw`tt=XFLSZ@JemSwQE_NO0)L38&6z2gYWUT^1j1c_EGxB1G3%QJ7Ba%N zzz9{d^26>^NYICcX*CsT(MmIVuvyQt#Q(p3AkM|jMU(IPprTGgOX zBjL~cR~1xUUaDJXf#>1jWu@+l3MzoNJjJ|GV@2sB@=cA^jGu$?0C={|gopEY!yGF> z(B%mrzZqpZfR{B=S%^A`Lvogg*t60P2OjI<=b4ut^2*8|FVFTbFE9I`vGM);zvE4D zQBfmf!Pzx{@X82mkPCd@NsZy-!gTW@$9T?m_!t~_^4#HYvBTNyJ_I* zE^cB{?N(L>jX=^9+MtIDVmAxHA%vpp1a*$=7JxD5F#QyRvpoq8ux#cGLv*ZKts1ZV zeCgUo4-#>4NUQLHM3IesqDn42IV-Aw<9xMWu>p)6eF$G?M- zz*sNIafJos5yV2{g|wx8^YdWOwPvcUXuc}TLHPW+H1^uC!t>`!Wsw)BGSc6N6^2Ll zkJ{QryR^nGx25XWikon8pO~59qr)53Qg^wf8Q*!8H8ytU@D%vTIS6%J0)hPYCuC4) z5mQXQC}v|0PFy|R-4Ze~qvjQoHpwX|4R)&o53r(|;3%YqaGk>3H1x)XHHkYa>h*1R zYPf_YHXBd)Qj!N&SFmuhUIjqv4|BB@6Y%A&{y^nb)k)XpXVs{z zqGnUrlH}!OeV>^3;CsBpZzh%K5SKj-G(Mq-wRWN(n*OvoV=ot1(23d{MR_iXghWc|NhlFm z?NwCjFWGYBl03E=PM64j4874xHuKj+Da#{)WXM80iiqI=6b89Dd8cE#+*}cn4@=03*^h9HTGC(pBcoFYY8U9y zy6Q^BK~o&A&Qzu<;#ek}QhQF(CR@qZucWCSijg0#pscIpl0`?6e=Ch1ufhyPl9C!# zdbQ3j7q92l!S5*YpldWHf!+D+?a$S6v%IN}!NKSU(Q)jiP)a@8wcbE#ID2kmlTCMd z@?N8YZM_-?FZf}Va{hJ6FAJ{g=ENxZ=M7{3ooB4#n(~51awe)HRCUP6AhTvR9{%es z5<0xx%5%JFot&v-#Sag_Y4z{*;|dB3A1>94En@?E;b$lp)p9kIpqzytwDNlEDu)^k4VvEsviZrBBD5&wsy z$rOVp>0BdB9ts)L+%ldQe0j=vxoVL^9yao6WJHly_way!3)-ha`bUAwT>U?5iYmPZJet7nSjG%_A zcz(A0Ts3Q}ALOW`sQOa-a}}p+ee3EHiWUPN)7A7V=D_U|v{>cQDJ-7~7-Bemhq_`J z%dJ9hmtw}LTZVSLdSE1IRB~h)K@f^S0>GKN-;Sc7e=0{hkW6-4 zS_PvNyNO}GwvqY#IyfuBBcOybRk=SR2P2;W{_M2#ZSHpl@RE{TL@q8O31W%$d)FsK zg&Mh)-GgbJV{zPb6vCu(a>FBFsXKCsQ9d~wj0)GQeGM=5-)Y1`9^v9~N*Q@hR(sxf z$je8Rt}HDsF0QS`Cnpz}ewvQ%Q22R+vb|T=N;OG4mEGFzGJ!J^g)QW#>mr;qhhwE#e6^MyIIpF*}ndjw) z66q`^odPe_-UqkYhV&<{uJc432 zgjWk0AzbSUgXpB8weLj`@vr9b^7g&<8=hCLcYli4;BqK4Jq=g-ueU;%zwBub58;ts zD6%{8I$s51@!uoPvyW;&!XbbD=R*5I$oc%s+cGZ%T$(OLD{)hKu^V*ok>1P=nHshs zGcXvcTR&sQY)E}S<<%SzdBcH)1ZAcMCmAf+w`iPQe zbUnYnFfma*d+~AGYL1HR^Ys-0Cu+(UuRA@xP_H#Y{;v07yG?%o;|E)|^-orFP`uf& z0}TG=pM|IS-{(hFf0TdI=2yl#Ps8d-R8&z>ff>#A)>iZa4>$Mee6zPP=Zg)5YK%{w zV>HaLt`a(fXME>KlvwC5a|vm~OQ%_vU|+O;wKbsq<;do(!W-zld+|z}=84}U|3Vb+ zS^q#{`zJ&ZG2juNm}JW=&Nxog#X(Gdn;RWT85grJm2p!`r!hn&-~9Ye6jgWFZ*1yc zrXt2~wfhs;Ehl|+!o*&y#jmC1TsQgl8W}>$VT_>{^j|X`(3h!s5kNiH#Ee+_ls{>wA%4%;ePVmto zj8Ropk5c&LLs8MYXpbWrGqbaQkxBGA#Xk`8LJh5~fKF3YoEL@ecEPB@DE{TcI+mH) zy$4C*E30WT7otJT`fBlJbXp_MFqJ)WQ8uo*1>S+M-Beskd43>;!}M8Olle`Sz!e9h zM!eJSV7$c@F-!1I<*9cxxY}<^?#>Fhz4-`s;;$oc-+}aF&6chw#5g&H)S7hq6wN0^ zgCa6~numq}N*+oi9slfrr9p>t44$|#(z!#>`6;*R-z;8Sm(U>eq^nuEv3X-5dvbE} z`0?XH&8k#E*OP>%Ib-9rpH$9%d+cs|Z>j88R&?d!3VMAfD>%R}bSb zc%Q_(M=cAFuH&8<`nBWI*@FW0gD~w{pECA|39u=S|0p-}E-TwJh6K{ka{y*f^U9`) znq}bO8a6X2zzfeBUI*#i>a}y^?tMt-0-QE5QHF zy1z-#O-{D@!?_q&Syc3uVy-GPyUhAfri2uG0+o?r0MXW%ZhNJ@%oE&&T{#!N&M@pp z&*Vm`tZ?#_v8f(CP9MgdsX$|9W@D#irWOVd>+gV|ZgInJsAq8uFZ1D}pZ?mYHo4Tf z!j5{TE-L(47vgRMbum?3%up5cZOUsnH|i@ToJrx68XFfoT+cg_V|Oh8Wow@j8}bxB zST~{AkP1HMjA?Y2DTdQhgW&N-L;|fI{u>R#!<8TIuA@OX z%d@k#X_deW^glSWnVwmeo&WjSmjATtv6hz8#rs$$SibPt|C}K~L)+RW;DzoTfR0vV z$V6$CGiGYLug10O0KF^tI#f)fB9ecWi0csntymd&?DsqSl4%_{?%pNf3HL>VY+r?i zOqVuxgKO_Qou+GZv2EJ{;sjx31t9IDr~CN)2kS36aMy})IW&I$eCglEzprX!z$i1A z3O=GFA`}z`4GQxL0(N{hk;ZJ;QmLE#Tf#0VfXIWL$)94px$?ZAYMvP7_xis4WO2J8TC8=#5Z~JaYpAOpA28dnipO8uO#aWYlt~hO+UWvM5RT z;?JXp75=JGR{V>(k(6kjAb=7^V0K9+8tV4~!{3lm1X$vMtyq`}!6g0uq(w%W)VL1mD@?mJf7 zAo$v^#EDf@bh^pfBggdY!}S5)`B3pt{O@b?r@uIf*CVl1ijB`c{AJ^HV#!wt+yFBV zm5iZiG`;FC^JS~;TY|9dI+n6Bs9P61(ntR8hE-Jb@iy6`6so8YD=JZ|7R(Qk|0&MV zU7=fA#wQPuMDLPk~_UCE^3j#Pup5 zBn_329d9H!Xjffq)= z$QeaR%Il2qU2n1f4T7!I$g}7>+|>RcAQ}z!xi^qP&JBsW(MPM(ym#*U;`W>$LeK5( zqtw(8A``xDU}M*D)6!;ZZZ_WqZQ^faOiU<0WXkt>TU75{&RC^qpMKcHML~I0wd7fq zf0*_pj!8QxI2aZplCrXm|1h%}|9jBhRR4e#F)&y5_V#YEeTMWI89tWnztS1hARedH zD6R8!dn$jtDX2MuL#S^su0|CH2L>R-U7s<9p0T{`dXGT}>bEFJPBBUis#jKT4fS{A$ypbsFD$`k{f)zg84We6W*VYK&1&~c`^ ztE5T`y9MOrFns$s|7lNKtv33WzC+D`?&--M{r!i*@<-aQo}TJuWqCn+9|Qzg@B_XW z&kC@zk@CECSV4dZ0MI>iHis#*W!qc40+9a{Dt?|g+eas5YHAH78lOlX!+tv8x|^Vp z4e-qk$@evSnGteA=@QrsjLP|(6+}ojHcucn_0qOfBEH+y@Yl0{N9nbMnGy8@)6-o8 zxSf^84?R5YKvH3S$lJJI+AbWX$>>X$&R~F1XCEF>j$7||mVgbnPPhK=@g{_qH4+P=cebFmJSbq$GBBDCrL)oL)j{khB5L@A56esx<(s`90L^DZ zKvn5iF)7R?_R_qY9z#2@y)o(Ok zm6?TQPm`9i@a{Yx!gX2OM48FR@UT6fHcXR!+xQF3uu=uO6FH^RWNq1)nAFrB;fdd( zl-hC?l~j{hd1~FK&`&oi#@@&%H)I6J|90TL2U8oG08C-gqxrdN>lsIT!C6 zFJuwM50)vY^Wpd&9W8XUU1jvf;|N(;n4kuSZS3+Ko#55mM-C1UsY)R+Go$lZPhdB# zIAFi37+ags6tWHs%v&)uqU3kbGXMwQzyQ!}7utbrHk4T^&k9}A=4RVwRW+C`7Q_A{(F)ijxEy2Y!Q1Zo zI{bGNMTJ))_j+R!YUKW%P|_fKdb%9FB^m4_U0kLVyN-!jT1H`fEZPQOLSJV}%A+k< zZvrcAoz~O$((NT%yiiKEj0}fYDH|KR*|5m>#LLSvwQj{r{QCMOqOCTRf z`eP*Xq;H6h>3xt62||xZ3eKX8h`5x($-Lg$pD;g1Z%)|`1LkDire&&R9vY=9KJK$?yZU9qT|iV2U7b# zA+p(yIi#yT=ZC_XtsM}=SNZ|Ef2(IB5Y~CJEV;B49!vH5U@`xPR9sINNL3-+_kN}0 z;mTlVhnT6w#W|}XvUMZ8Do#hJ@C+-=eVpQoDNDy1$wBiE@yDE~jp>u#huh?MdAHI} zWfiQaOl7}%dr^?XHLG!OU{CNqsQDRH9V*qw-GOA@17FPw$*dupb*wUz#lN4kC}A@w zv(9M|5b!oIjhIiQ$wN&&eJI{caxhJ9s!~ZsK^wRy*Vo^&4_Yyag`owa+dr%z77Flv zLhjfar=Eu=({|uWs$vccM!GqQT2p>w7JFyV$_kyx&)+|2vC_3Fuhs2=vEz^IdBhU<0JYfpB4f^}6xC^f<1L=>b1pt-isS`U_L}rf&s&Ba47vQ;X@FEr~?aP^G^Z~bE{wXbNnFF zXo`>LEocH)UVu*V`uQs9-CzSaB%-fiEQHPqW%CC?lqdd(zS_L zP4eWISL@^QMcXGk?V~ZFMBQCK$5gG9Xo5lvI=+r3%0E{BaR&{prDe(MdO>ty0iVqW zQbBtxSMPLES$;?Eyl6M6LVA*)7ta&%2|-!(dOb%?Bk!^iUOY#GAzLG(tK7c#mx2Q3 zh)hg|CV(}?rV0<&8zyrm_LfU+8~6g;=w5d6&Z}=?W@cvKJphlq=R|(~f49p;Qp1-o zUxJ_(_?lNKOPYJkA&Z^eJqycm>$l$V^f=8Xq1~q9mLWJyC!`;)_OI~>7189D#F~$M zh4^{&6D{ra32ZqzViL2t)W_tezg}=TCktv;deSg+XKHD`)yq&A6REO-x0L1H0?khL zL8!A0-`3y7at$uoT-BvrL^wtY!THVe z{+Q~e_f%E=Fg;&Yy51zv(9`!04E!lvcc;OGDj%P|vDzIN~0mHx}D$@2k=F<+W+rw2Rx3y)+om@^VKTHCk=$uD17bt{LVUu!$vX-nyy!@k=vtO$ZJnl z;pwVJ3?}mo9T_MqhY-BB=g5(TL9%S;1Jb=db{O;b;Dm_5gKuKEyz6xS^WJA!S+4C1 zp?!T0!o$PEhWh$z&W74r)Z1ZA9FOO!$KtJvKqQXEIn0&iVGk-}F#NlB8|kMLPvRfy%IJR$!%|f^UoyVd!1qvh|=@~T@il0K7qKL$9rNogL27n!>T#2IE36uDEHqNmxgR4rhm2sPW%MzDl9S)!fO(|4#LCi#s!Qa7+N^ zB^(*JDP}^1-)J@Tn52RCVP^+OXAOeyry>)&^OPC1C0~3ZC`6Z#xalNi#Wy4g>wND! zkSdx9wE+MM0JX*=abB;W0Bo)W3|v-E#3^9?dxZg91n zkyOF`@nd`velx+ixejl#Wn;u=UPuOA`i+i)g4y_CmG$9}IFNgS(O6kw^yDCCk%Rnx zvP)Yr>;1*ih>}XFGyB!Qze{cN&C>CDe&<@sqOZJy4(u*@u&I7kv#O|+KEA)#O?`Hb z679bC;=5#4HYDDytc-hjGUW}a0|VK5W@|yvR)2(*<`EQ!x4usI6?g{$$dZy^$L$ZT z7Z@@9TAK*f+{tL!lz@Qn_j&a62|SO{&?YODE10aNzbaDyx3-7v?Lfy!)J$FX02NJ_ zk{Eqf+3*sNjh9Y?=}h9nJCDo9P^cCDTCatVG}j;{fpYcl@uL@7#DD+Np}IS8k&$Ji z1P^tM{{WrgR^Qfyrvs_4r+zZ89Tg|%vE$n4=znj}`5Ae6bj-|yGc$sWjN7Z76_2k= zAWhEi5FQ1B!{5bW6`VhQNGEsYDTD7^*WCyyGR;M@gRxBcVDGPOjN37ttZZLWXELwA z@e?HPJ#$X{@j6u_9U`pfz1OrPX6x{?H(C%GrC(llat8Q$LV}MUyg7iM+Cbh`bhPA{=oE~|BniS|GoQ z8M8W1;hi1eqfe8V$JOKD2ppmd3Bjl;FGeEXt{v5$4`-^rRwI1Z4}){4MM@I3k0zdk@eS(ia{s|JCpKeJ&AdF;-+`XlPn7DJ)W4 zbi2Yn^TbVaKT(IgO)xH_gG7duXVKdyUJkp)&39N)E6U+cZj!cqb;|1;xnX|zB0iQ1 zjfnR7phEvCk4`F|ZwffMC@A3i1p0EqtFa;x@!kix*yLp&K(>%8{;z|`e#i3PD)bK3 z$jUu6D-Ao)9d^DINUO0*N>T-d`IfgTDtL*t0 zTV?R1_eEP;0-~hSlbRa0D^8b&WNZY34&?UT9!a6g@K{C^Op~GK5QAx8j&Wfn`y7bf z-48i#-UROl?Vb%+TrXedMdT=e{ZHB-173&k-ZZ+uid^2$%=F}`tlw6sud zr>M4`0h<56qsM`hVZx}}R-~jjWNzoS(=*EJU0V}Q&W}k!_;%B;op>`(0~dUEw~d|M z1*paTccW@b-|9X;JA=Tm(oL>g%}wrjQyQb@*{1IL3=uOkF)@JL++DdWSqj;Kwy&de zfNGW|RQhNia^f5ZPdB8P6Ws8g3N7_ACkPVJ({GHyu0Y5gj04O~OIN4;JcyW2`+Ax4 zb!zMY$aaD@S%>EhJ_#QCfMjB@m`xDi;c00t`6kmU;&Vz0-EH+t_{*M?y|Ca_%q)|1 zaM1gT-e&(DJ4G=}Y^UPMsZH za#)PhxWiig+ZP*4BeP|eJ#vRlViN~ZKS~wjAyozA2A+Vm!Pu$t;uNCZT!wjh{XC_I~Mg5~nY828}5$MePM8asHOYiw-1Noc6$L-4>tsIIN$gFDU0NEw7D zsW*HkEyRr|#lP(B)WKY;!G(t}GP*5zJT;_?;yiMmFqp* z`;m^eE=_&Zdt8>Fyv)s|Bbqs|oh)aqL7T3ZaNyElBp@izfP6rK)W3PeG7|#>?}`cn zk|Nhrd~OUhG+1-g7{|oCa_a34v{_Ud(B>Ry4tx5;B#eb8uLyVB#!TCFln&su`mZ4_ zboJM9PBcf6Hgvk~wveViRGdcpS*=3yDc0_Uw@UAD*0&t&M|#=&d*6U^?^s$|YR@-= z{rmP_aU+0my^&v>k(o*U{JFy)dEV-bh24{>g|+sv`~jBiZ|FkI&D2{9vnfehy)AHy%OP9zAu1 zS7|~}Q7{cB5T6Pqvax+mg(N4ZQmo?sr#%>AAg4QRZQ z?&}+g%6`e~Vxnv56i+2))&jZp0nwMIkOhLA$T(T0le-(t(2*sTs{ z1)rfhL$wK@L`qKpE3jYqhD~C6-EMVl0vipj)*iqtI6PO!#ZX!clJ#Ynspox2w6JE{ zQTg}MSwOJ6pOPJ0Rn^v3TGz7|*Piclf%up3_&28CX%xapJ7=_Cd>sNG1s@3k!MhiA z2L9n;MR{0+2^Be8F)@b5s6uf|#Bh=&;UB)m1V19|`T2RevA;hF)*N*Xd5D*R*!S-J zDkAalfL*Gox>W4^dTvIp=LI7lNpD=4!2>d~Z#lhzE!f1qzP@B+WFK!o{nyz4-DBtH zSw3$3hGvm$noxsG5|@L61N^CdSk2|GeaXJRM+W_deYXj|#TD#A zwa=jsWs-nAGS>(}tt&q8`8|3@ZwOu?XlZ>NNNpd$5EmB^OyKJOeUQS^EG+|3{N|rK zGXVB8&!Zt8Of%`k5D@Ht8`OB_<@eBR_@1urtjARJbGQSTe*Y;y53NM0)>f$1J8ZY~ z%Y3B5`FecxL?JPf_SbSRI{vfdJc~b}(IA@sP6O?U1EV4>2vO-YRJ)GV+wEnF0~uVu zd8s?wtIn80Yq7?D_i3v?TGGa3^p>1ZbH7ZMLa7}!7Z(qIlH^}%S_~4t^7m6*W?^e< zLz&&(-T&VYHD}bEosEqtkHm+Lj;`@yr*0&Y$y57saG?i>>pdtPhDzQK`v6UOm88;A zzFX#YB?^>^yKetvhO>RP;lVcxdGP`n>$WFDurb zuid**(6GNl)U7vmC<_e;WoAIhqx%;*^k%BE^eqaDQ4mWO^s2x*(CS^nGFd5_FFM(x zVAT>4B^J-JK|60YyX1{DuhzQQRPo5lYl?~zwGcoGm!QsFav1G_p>11iL!oqRh zhUjg?Bj3?VYhGk6=myyOGb{p~2wO#>>b! zo#$jP?OWbkjyGzHl514-gtRHkenG$dnau0t!e$!&l@jgEP@@C)Su%|}zFA54+@C{dZ z_j;LMwX(5t5rkaTI@bF7J*31Q$@amo64(RDj}xB;*{ZzPvYrNYA(Ta* za?uYoXNr%M)82g$^atALZJoVQ>w>P|RWUU+akK$zX>C1flgjg11x$>; zd3j~_2OXpUNAvyM_pfre)(L5tI!2Y1SMHb$d>uoR{go*WDj+c=4Mtqt5R&}Jbd}1_ zW5sbz+QmAMewnE&(2}TgfCmByF%!J%>Jq39VZL9*EJi*$nxPMGZ?YJHfgz;UE5EOn znW3K4B+wj^=nGQ{$|2%!3(5F(>^U7|@n9<6C&L!_e27`7h0%s@J_Ea)EE zjnf6B+MhySvG~#vwFPPX4O((3T zw)O_k>y?%Q?;_RxPaoGF_yo&yg9hOQse+4(J3htk%2m-nKkJzW#Ujk5GaLPCewz$S z?aP%UA0OnBdKYCUWMkt}Yf^YW>~`M!kqX3All>&T67A-GNtsbA7 z`^W`IDmjjGLU-oSk2O*wYpj@$hGk!Xv4;Y2b9O z%n0r8-_nDQMGxo)eR#i3aetVDu<<(4ah8nnVPWi=>AQE(wrjTTCwxx6ET`U-y7!^^ zzM@EJw#@6y<`%CA^79RP#nzJ^oFf-?@)lDHN?)@P9;de~v6&gbbo+@oJ>3`XiiQfR z-Rk&hEjM?wnZ%Y?A!0&TPcShjylcLRFdX~&bQyfiV)(O;j3Jh9w4*hOF*s9azXoh} z;1PZ(saJA8q>6}8)5IpA?KPjRm$&~sXQg8HOK8T4*F zTq2`rmq*wrDC3if6B%%9Kigk~=L;etqC)XNM@M$H2NVpTlj(lxNGjwuUhixNwNNy) z;FbO);R1HQyu0&r_dmr5@)oKj#m1gU&9JP?5w^F3+tr1Gj0{|BPedHJblu24iLhS9 zh@}@dh@}Y`Z;Vam;VCOW!GUzfEo=n}UOG>ku6qhKtLw-k?pn>Z&1h$v(D$$QNgMZP zm?_%x0X2A47N%Szrh4623yU(y_BTTLs!`ECzP&TQ1mTCs2?V4@<{2ECgW1q8E6mo@nzNbdc%o90!_nj6cG<$f7v9= z%ZndsIU7>U40Nx7n;@Lu#mvdX7IMMGx?nZS$b`vq2)dUyE#1NZ32d$TG-CLOdA-s| zqo`PIp1TO1pZ`u+Zian7JdM$jyeD*KgcT9tjmi3GZHSY7zP!A=woK!}&l@WQCK?)K z6cmX!Z=la?y=j$w6Mpv30u>cFjw*#P&W*?CAoN3*4;0mEf~9KJ`zos}3G9SZeiICU z;L2bLUB?e)LJ?q+(EIbCuxeo^D0qys-B?C)6fcH=@Y$CZCQEI;FeuF3ybVdV+8+OV z=)`Y2zrgr4HMOl1x~-?XXbs(=M6iisZ0|;KbgXaa?q=oXrn&Zp;nh*CYg{rh2jTGW z+0@*xO*jl33xPm77dtf-KJa$gsE2g)>h(Y~hl|}#F{0^-X6w%vAjy~&M0%LvY$uxr zi(6Q!E7QmP{5C|B?5$bBwk#%=IZjv9uo#^NJ0>4Lg&cB3BO@bTUS7VG9nzzX>jZ+5 z%*@4N&%vJqX~MfpOG=JbF#Vf*@Dm0hX=%DCh{v9`({-JzX=s8E`1xPGCSZqL1r$wn z2IQwvEQ0lEeJfP*6Wi&IGcw5&5?YjVHMwJ%mXF6kAyD-h2aigEVDZw~p0Co1k~{8C zq0L95KKxlv(%a0+9j8N?jEuJA>b#)-B#>R<;ekKtCjz@}rI8eCTZ0>D6^>j$>iXf+ zZ>8bkCBO6IO=$A@-e+Ys{&bU*_Q4)3I+NvpldP9++_yO)X=bm)S{XfF`LN-sg~h*P zMdjA}_gm~rY7@o7oc2ZGVBXg@m$tvCoEx$*2V|{4Y(U6Jqr0B`#%UDGWEB>ko0__~ znabB}aQSFx_)Q(xzW*+}kdVjL_z#o8+gRpSJgWh$LbXrJVf*I!0719WjaN``rn{S# znmWhoVE>+|=>0j5UW;NB`WN1y2z1(H^foHMeK`;FFBnG>kqYGk7XTdyvj;DQ|o z)+2n-)#Y~#8ZuTVAR{{{FU^DQqtn&L5qfAcB}sWB!4lkoq0TW$&vsYm$c6ojSkJ4H zFid%Q23;lqi#q&oh7G!P#9azp`WLA2=!up4u!X$ znuNQ%-$j6zMJ$YpE+`UfDB{bPm5W^&>-_lVPEPZSgIf`_gq@#wo+>gQgQqF^azY_XQ1L z6AH4#+S?x$FTz}dD>tk#o14=IKK+vj%cFyW(z&f4Mtdg^MhglcRC0A8b5`|{{^iTk zjin4x<79j)Ipbf?JpKjxqDe>sm9Nnq1qCW~?7jvHk@fR+4iE_^7VOz9#wH5Z8T=*z zh87_qTNC`QUI-Gpo_;SfzHorZ=|n;Vx!KqkIPGfaNkZiMaHal)5C}XL9X&A%L?i-` zTZCg{UaEzjQ}dk(w7<=FR|eX<1BKiJf*`eseYZv|i%l>k5{r!u8Trv$mnCFI&B#Ra zNdk64XSm`D&BlKn4M{GoE-t*XViF_2fDG@;)18lo^z-nf%gxOV@|D-V9jD(!BNS|P zJ3Bdj%gRb|o6f3dO5HnKr$&1Ct`FbK`$rW->{j}kXS8=vbnC&2%y3a+P3qDhslQk? z2V0sRR6IOzJ<$il(eOL4xXLvWk_*&cjjq_G@Kg7wSXgAsDzj!aT@LplM#lyv3Q_oQ z&$9Hp$Jj%TOA*uU)T;L5>teWzYH7=CEhNHR5F*+ok1`?^w&nm3siM-CKpt$STLXR# zcxF8MnpmN#1l#d^`kI<#A(`nLi`{|647yX{PiZgjQ5c#SQoT@rBKp$^AyiarFJ`zp zCOVhAXqqPLiT<0H3O~gVMT^H;I4DOR)hB3GcKGb<3;-8i&)8FMYzcbRETV!QH^Kc~lrHoAFv6qNfpEL*O-@+&C5jAzTR{SE!NkG|Wv zSTyXkBcCZoM)`uxEF)^Qp;o;$l z6TOXUD$KY8>PcLsGIv()_pijnriP8qW5u@v+k-Bs?;s;1#067I=~;&SFnCNHqU+h7 zE%U)qH96uo^7_x*KNe42{cP{`2cBQUuk7vp-D;g4cXW^-{fdbhZzSpH(8DiKAJKn- zK7U{|adxny?c>+dh5RbLz?hZ|pvvz9dyAr1Z2vBL_b1^v>hd^ZSXtq--jR?feX3?M zfbc>p*ivkAP)>zcTQhjM7mB44QF?lxm>bthk~i8=>i^N&-iJ4R2dO*@5HZBsJ@}OXu8G)M?lBl9Wy`gS;VJK?^xWUW70C*+InJHSv`Cw z*VpN5Sy}gg{8$^q+}L=lMsPHDv(V42umAaU&U(}T{xf0S%8HWuBu4}CSFa$LxH6!u z^{vp&*4CCvE>+s@J(33mkrrBl%Z?>RWARmtvmZcmVF zI<>nTA^T$*OmeWGpSckWPNw_id_@q@(WJZCe*oi<@A4%jpZxq5c3vNl)y3jU%jlax ze_&F@mXlMz9ToXrSC5w(`rW%{=iM&4cj52QAsS=oFkO?>0QJ-mPrLfR)RAg2PYu#bHw9UulX-yKb$a>m;Y+IF>nc_N!Zvh|Do2mY-?8Z z@tRdK{=|GPYZ59wUY{r;Un zt2!KaGio;DJF>0^%2P}}zWIF^RiA9XmVYcM)x1h?<=Azd*^(W!WmxKmg#Pfy2Qn;d zquxZJ3v_aEhxpz5zkVTLV#0Iu&K>v%X=;jyd@XroWCW~K=m_pjgjqNFW>fJHyPc60 z>8f7V#Ky*RW9F;8)Fq`?DHr@&PmE2a_s>3=?|#IaKWrM;+4)UwI=tnb>|0VuA6>_?ldlot-dRu}EtKw^a@X@oH(adekov&bwc**e)4xA^iF6Q&C}=)+Uo=D43&C@X6o*9Z^9dA=sGL z-q!CUm6rpH2>#Li{ojlHl8A7btu6wOkKtg*#PsXei<|2p!8`;3w*b-LpDZOmgrI)5~NOq{_4+upfa9j=wt2fNl7dP(*x`6K@p_XqRvs{TBpYkWMuk|+nk zV}gT=D^$BvcB$a%q46{+j-Iw{i2)UrtVdc+ji% zVC@f(Y>gv|i=z|XY{Z4}qI|ZR1_DSLMmT!-sqOP!dE%4UhJ*S=2M} zujWw?UOBR#aQG}9_U^!NeEb<%I-}p_#$K4`3(@<%arC2Bs7c(`Tx?+Twj6KqMZ1MT zL`Gr}6Bod5;=}w4p)}IRkM~V<&n|YG1`|1hdzUpdG(4`3$Bvlbxg7OWz$rX2kq{f3 z94pWdouFlLzrMa6PQ?I`*qkixp!miOmw^jkOACw5a}Lh*46lhYkONGySuoRrSEXt@@@QgM)-Yp{CKu{KJQk%o`Xe z^-Db6HP}=EQmW13BVu$sNVhqRv+mXHvRD!OJ!}nlJZ}rmHxjYdFJC^`0t4d<@#jDk zH@9DA4BshGQBhBJ=XO_C{xo@d!W2PMbE5zIwOuf~kR> z=94Z`R@VP(>^gv=TDml#A`BS=c@W7-z(A0s;Z4p9hC)r?j+&3HGB^A#bI{ z>=2Ty51)X2NN=6mTlGgd3g?}2a#VgS;Oh%x$iM*RF;<<=M3z^ua?Zk8lPW8lkXpBrk8V!gZGLQFXQZy(ZL& zlvjxmlPRF~+US(M9WM;s z=sX@2LJqSvrVgifE*o4L8n$K>pMDVi7MO94W$wMXH@=VM$6&)fIlECIV|c*c|S8 z<<%=u2gcsM_4Ot;Y)V^OyflMz?U;vuSq{1U;b~`QQA$$kFF^YLy;q8!r(md?<>VnH zS{bXiPyO6*<~b<@H_*J;U88=Ig_Qm0=+MO_AXlKc`20>#b4RdR&|jz0GoI^bqEx% zO1JNJ_4K$tojno`A}MEavm?wXKXh_x@92P<2rwznk)0+G2yoJ@4PKI;Kjaq;Pqnfp z1sF-DI_RdKI{Qz<85Z%$CUy{i00wG9NoPgH;Z(G+)ruy1#H)_Ja zsS0h)2!!yeYB&bYj5j>hkK|48pvjQ-ce|FfLYj2ivoto-8kEevM(n;jSHSPt1csc0 zA%(q}y*YaQ8@2uY{ZIga+KLYvZDC+idE`lY0Vvz=h_Z-Q&=v^=^L}8)_RXdxxwWkgEt8_h z7o)~yA>yi`u1-e=hb-x2O1J&o6BG(6lUQ1^en{r(y1RQxjLvh#dfkTXG#gLs(9aZ6 zVpeL1F4?@lmY@H|YWm8&dR64e5*iBJ5wZK$j}drA2`7j-c7`g5mTcS{BZD^@osg8o z3+n}s^l#{%EbXO#x?z_WHT(BvkC>3q(5o=OJw4|_l#0p1NXqTEdSxf=nOJ!NJ7KZj zUS5=}lAVo>jZIC#!mbOy+o9pxYimUxKSmWsaQ#$%^ys$HMaURO^W0WG!^{jp)V}@J zcu39%N>FOAV%**a0YfXy3n|yM{P3^QsK*EcgUt6O7zvNZ_qYOc1>i$ITGoMe!&qUl zSXd2e@PZ!}AFDv@R~YcQ+MI1lPfrJLVO(f=Aw&t(u)yMa!(O|U!91F(H>qYWE$!?M z)FX=|lR^Gdf5FVdyz1rW=jmCb78d1%%L2Li!;*5y#zvDOs5feOktHQ2Ld+^RFL?7t z*VL5B!a(Eo^J7P~wJ355ijhzDH1(pZ)jQ)LaC5LikyB7m<1(cHQP9KV7mfVywD<3) zr>3SBPAir_YF$l)OqoUUL^X`D2H;|F9W~bddHPDHRL5C>9>x zI^WY;d)x+RR5CJ(0$Df(x!J(*Dld;7`RU6E%>d3T%4=?JrsGuUR93PaCi3H#g&5VJ zZ#MMjg2keQ(zL0$ht><)iMdb-2e`R@&3kglrs*>Qp$xxv9_EpC7>>d4E_hq>y&n4OvV zcW&-Sln^Z$D;rziG`oM0+narFo=X9b9-*#YOIRFWl8|_?aQDHWD4gAc-g-Gy_6A>O zT$2zuVuRn^n(v_xu?6wu>vqa8hC1NTq18*aC3gi%N=qNq54N?njgBV2rkOXoZ~?jl zHkQuT5x;EE@{-KR&2^|{S5;D48iTV+zTseXRR|u!;ykpj@4E8rxb`sPf;Uf7|)$^-I~+KqGsCPF0QW1 z1E2jxlUBSaYI(Q>>bKL=({L*IhrB%Lr{BN0va`0VvZhLVw)ghll{0m`f4_dpWloC@ zF*ysTWY$_$dgKGa>+anc;1*aA!Iv~?B}?iHU4)-~i?N5`arAq$L)Xjq=~H}uzN5SQ zc9@R_bkP8us;6rdhr>z1K@OX6EpKwO4ps0F_2ls;c&83;DOemQa9m$j46|?|7EAc#Kg2jO21@#11ALyEC93$ z2dc2>BummUGZSpTMgb7&LGzxklhxJMhBSWg63fS&9Cc02y!7;`4rFq4^htd+CME`H ze$CLtq#66v+Z(K805ls0MLj${XP;HLDTH*By12T2dYtWUyL3^d(qs8vjcwvu6+>|1M05^BT$cVI<7~bAk$P9?LCMH7nieIAQ&(a{x ztGvXdrQzOFm=K5i+tDIFp1HVm?k4pmPhfT|0C(pa=FR0^!gN)x*7)pg*r}?j^8UGe zd=5BOUjuTxapT7P+}y(_Pvki;f`WojhBGra*E)q%;GA6PY4E92ea#9-xM<(G6Lss- zTuI?{$G7CuB%fh_N$T1Qs1_U@9Rc=>jEr=hX-&@yRH?)CI@cb?0+AlB-s1Ee^XJutwfpk6e z9KZ@U?oP6DUFdWK6_u>-u8WIHQDI?WV&Xl9IFp+7Miz>TLh&GjL?5ekE-{d2EL7N4 zLtA?ce_vHoQ&U;_MHQ;#)2Gc(JB%FX>&8B$r*rV|JQyi;+?;6}DMCH}&AjrBzU3!S zlP4#wK&`lbN{{Fq!n!*jG9*x7=@^%4Z*A@E>WZ9@@_6$bH-&gG9jVj zL0jVf{yr27`3;9M#Rk>e zzb9zVtho+!cYg$zt1Ex#*8jm2f|;*eYCBsx5zkn5n4@BWW%W%c6@#=I_$arI?VgHO zb!202Q6kCi&|Ar;mqkTgnj<*$_4UQY#ohYJ&WO%CVcr$s0pFyh-I6o4xO2zG-o8o4 z=ncF4cysg1cFr>{1K_0g4i4ht;+!XH#(*!>&H%qAn<3JFqrbQJ=kzolm7I`}la<9& z>$)@t;xYwCy$po zk3*l7o9^G*+nqp*+)ceI29}hxAP@~10Tc>OqN@e|x86QIGjTNXS5)5(Ip1AT35mG3 zALM*~eSoq1-Hs0nYq{T&eD&&8=*i8sDaFJHUw+k-Y@E-|3Ka!K()CAol$3&Ua`@j~ zQXtmyei2t$u>RFfr_5;#K}iV;=^5l-<8A~1H2<->T9}i=#KyKfH>Z}3)gy`?S5{wO zPD)C8e=2VJaU%X(U8)k!d)j|CIgI~*G3?kH&l$oYf@D*z8JvFWK16Kaa6ScLzOmVOV#9~R= z-i=?ZBRUCK^z>K3VZ40#5(K@vO)piSYs-(U5s;A?h4%FJx`B!M|B45Zci09_!+ag| z@)tVO6?NAQz%s_5LM1HR*3y#q;e!w#Uvp=tp5=@ic+#7kW6oXglp(MjLWly5NSN}B zScnGKu3a<3+bCl&hd>KsPpW|v2U?0B^+29**Y^nM$*W_Ps;W_)WbqLN3mPK}kX|r0 z9sp5cK*2DA0F;q1s#0=i!9D>~L6e5;%$Ifthlch<4t9IUc84q=YCw$*{3`@306dJM z*0-KK$tx&WneWM#Vr@^gU_8g8WdflU2E^cJH?;(80R1Sx zJNbMCt?{-c`Db(=r^+k6VVwDx=ot$Oi)vIoRxy|wq<&_h%|IFSAL=kKC@&xE?>8Fv z2TZ5b@H$hM;IW)o71IOtyR@{l&HL>sveFKq>#G<%Uh8kgcYb9MuV`$%(;&+&m)bGA zIV2D_GcyB*jz?7i-{Timo|Vt?jnWZuvMj1bSaoL!xeLD-n@}N{tTiV zgf?bk`4@knV+1q`-~{lbsumfr=D_2JT}F5A+ySUQFAGqNd_JncVf4%FrazG8e0+Sc zs4JFLl0b~C^j!V5d(D{7Rp82%(y}u9`oXa=%-ZB<-F4YFY|`S6!^KVF1HSyHK$Hnm z4JCjqy1Kd$Y>JiT84UHJQ0^Qb9}fu$0V>ND_OfiC(d}rtufxOpkX%|y1%Zj5r_z2Q z58lWY0IL-OvU%}CeFul7>6SPMD%|wssU5mnT5c{b*1Y&KKy$INM$n&e6DQ*jJ_UtB zL8lpEH%|yjWfOj8eCNG=d}e26JXQwAa1_r`@$gC^lOkB^)V|;1mL(6`x^0Eo?t_u1 z_;W$D_nGVD*z^BdxUjqHm9EEkvL4IH&Yq3p*7QDJ6c85HR#SuenkyvodV7oUc)&~{ z;9@#DoE;qixTu+>@ z)y#E}7Uty4h`SUZVnHZ|Knl~d>C2bS@m7e0wB0O*#>Q6VE`L$|*xGV~65XCr6O^}M z(Ss2TSRJkS1l9v9)gUbPis{FoQqjxj>w+TWZduNJ!9Ml#tI5w7W@&VCavHN*+b<(2 zFDP(oi531ISn!+%Oi7LoE*Tjaaq(Cbqm|W!`(nSlUmY+fJ(mWbF7)zaQ8Kc!^1s*W zXX#^0N=okJ#6TGETuFuw1t=00rYR9a?I{)j89KncEJ&mrz;VbVgL@)8IQiJ0rtWr& zWcK#<($bZ6b+@o6F8Z%9?;!T499-iU6pWsbYHw>}yK4JV=9Qy^!%Y#Il@y|rI0J(5 zSgeYh+w}`G^w7i2u06PXPD)BjFqnsrAAb{V1tQ{UlG}E6(-at^H%M8~w~Ul%uJS*w z0ZzQM>GJpQ8&w`f{?CXe%Aei`#AjS!9;wC!U>ieMOH2#y{N=`ihQAU!JG-G_AJF`W zU}pkMHoGv>N-DFNFXK`=y1KLLUJi_v1j1{iECDR1Lm~j;B?~L7FR(HIav$vP*Njr( z$swp`+Pm2W2LQYqu=LRuz+I)h_PFnFPmz$oN6jGs&ILsvS%@K#GQY4udghE6C1<1>q_57=(|dp2Ts5EJ0+28{nU*ePz`{G&UfhXOHVxuCGyEnn z!l~#{56`)iD;jbgO->iLz)t}8TN{9js;d3|*2!{u&b1I)3b!H+lf;T8Djhy4B)Z(|O z>n9&`@=p!@iyYr>y`U!M$dqPcWV~x^{K>x{H}~C5YZ!kr4*yfL{zoee_sq;rjO@_W z$fzGY!Mrv7bf!jd0PV(k*ukkwR|i%@K~4R@RYFp7aAG2rng_-^D1t$Uiyrb0+VP@) zq2hPOeF`@l^@8}w?*%E7p|QHO)EF%7M$8;ilq2Y5vXOBFK~PkHzrd~)$k6Cc5`;pt z0mj2k=+--3`acZ@+YLDRhM*H5^I!k-WM04nU`g=T$!Go7-G9CAUw2O$^#8m2znk*! u&;DO`|MTbne8#^w?qART``w7ysbgY(jA7+6hw^hGxYU((lnNBA1OEf(|GoYI diff --git a/packages/muelu/doc/Tutorial/tex/pics/1level_100jac09.png b/packages/muelu/doc/Tutorial/tex/pics/1level_100jac09.png deleted file mode 100644 index ba6a670334a8af3b98f53b7ae31f1d8da66b89a7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 79098 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%0DVLlsKk5HAwy~Mqo*u~J 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

jm4;ENCDpgon~>5$BguairG2nFWMc#6 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%0A_4*QAx+y@V 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 diff --git a/packages/muelu/doc/Tutorial/tex/pics/1level_1jac09.png b/packages/muelu/doc/Tutorial/tex/pics/1level_1jac09.png deleted file mode 100644 index 370bfffa7d68aec124c73e4737368abd3167b620..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 105697 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 M$-XRnq3`#908CT-t^fc4 diff --git a/packages/muelu/doc/Tutorial/tex/pics/2level_1000jac09.png b/packages/muelu/doc/Tutorial/tex/pics/2level_1000jac09.png deleted file mode 100644 index fc46f8fc5aadedb2421e0cc9f854cd3bb46c4a85..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 81991 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�@eANeQBMKPGf{pZ;lg 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 XC|UOhik&EE0zz3{T@HK8?D78tU?SLP diff --git a/packages/muelu/doc/Tutorial/tex/pics/2level_100jac09.png b/packages/muelu/doc/Tutorial/tex/pics/2level_100jac09.png deleted file mode 100644 index 606dc3ef769ba8d737e1462c00888ce0a99e1acd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 82470 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 U`ztBuGL7F!Dzhl$8bIM};yK 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

  • w7_b zu~4_r)IV3P^1Hy)QNLM6{MF;#?nim6xgFW0?~nJVr)?d6O&+_8+BRo1ISBo~xcSSN z4MFEVTI`rsXXJf_O4w;a#u$|^YvkOs_PhrZH%PTU)<;Jpqs4dS`av35TEZwk=Qo0aainY*#qrT^ z*Vf9lm{WEqKMR&unpS9?UTi=z9DnrcHn`qIUoVl7i<&mJ2oe&yx&v0xG_pCX%eQx< zO3%3ugU5-5VJLkN8X=P+{)KqG+u;bG)8_1iSk9uzi~>7b`6hHrGA6B zLAK&`UzP;g-Xs}+S|eY&_gq2irt6|~4LU=$UCvVd=psP0m&w@@QB>+f!Sx>3U>tNl z{5J6q^G0n~4r6mG9lITDL1!y<>U=XY(+VwIl zfI`;RW&6qNXvuh%rLpPs%A^m&`!-;`8wqu5g8Gpg5R4-V&Iez1m4t<7>f>YHzj{MV z^IA}lnwcI*LN`GKd_9Iyip7}sS3eUAOh0!)?blv3d91Hy1*r($eD9GQO0}!EQhc}A zV92q)DYjT&pW88%Hgj0Nx}Qje@$N@4?fhT6eayl_<7?dleIicIWKPpFBdzN8;i%S6 zo}Qra4hwWxbDFT%*vMC!u$kw&uovj1RT$#1_{U-Jqs%b3^_hRV}1X#B%%o`GxLiVD|rNZ@>|o_${s=l~+A# zj*!1ESIS*dfFZI+5+ol#z&pF+ZjVmc*^VYPW+FA#cU~YsmYV*w6sXdIIY%&E$Pe)~ zDW`gwf>xDeMzg5s%KqndDBt;;wzm2|*i06fI5-#>Cp+)Her-ID6gZ|nkc5FaGW?sc|8Cb>WvKVuN-$iO%}ONj2LB`%7=!QYat=$$m0E}1fRSwo;j&NCn*ji z?UQc99`^u59vwF{C`b=y;ctnx`TczkMq%N>{Pu+?gU**ejD-b9F7D)(NT}nN%x0)T zmK=e2l*yr1AR0uS@o3R-oFWi4Plp>MoE~y|`imDkn01CiDw2pvNf!sbwRRdMZ04e$ zVCc2VzrEvkKe^lIb8T(*qSNU?mw$^L3?^iiR4yTvxbd*5szT*Dlg!NTTGfdx0p&~! z3p*n}Y+5$&k3s43@p=CqRB&xhVc|sHgaWD}6%zim3~x9t@6=3U=Od%u_eCmgmQ!N2 zPY!sxMEKqG>$fDTNe6+b#iI5VJ#tSPgeep$* z$&OT>Uu=6wr9|s0q{>oi{;z+~^H3b~KN*zi;S8Ar?*lDdDt}mUaeDXt-ToWwPc7am zzkAvPFg~nqirKTo(;C){H*oeRINY&W&5iuV0Ywt@<)-fMuxHN|XT@X@9E13Xj+2Y%T1?D;7_#Wv}i)6gEpq9eiHrouKQ>>6^Qln0DGS zg%$w-cI#I6`;*ya5;M2y6aKcUm5iY*5bz=*jjBd2E>>vRx=2t9+;;9n3fTEZzs;HX z)e%SS>UO#o=6Q~S#Q?%=vUnd!r^Xtf%;OgM6b=nK&zmel5qdgMBR(gD^VYecrwnQ! zuv;Zp3?#H*e1Eu9hb-SeoCCf}3TgiDu9#>fDJ3BxU?%_;aThf&Vo=mnXl)OeIdnW4 z$P(#<0ydBX&+pY}ZG|FABcc#b-lyt}7}galNPY6~NyFV*&URZsL0xXeD@vqpbrQ+Z~dFDT6??P>HtL#?Q& z7uz|x-JU2|brdx0<|)|#sYb6I9;WYYhLP^5Q4=|%Vd&DXR&s%VVB8PDX}jZ&#O=C04`EMo`QKiE-`W!9MTBrLuh8<{&X?WB^}T1!klUFJFVe&Fh(ZdL zE9OC0wcc)jx%lnx{AELnJNxPB!yRptJG0>{JdWsJTNm%ShxU||Ln6AY6JkdHp}pnv zyM2{HVVO7GQRk1>i8Ai3$EzZqUb{0t-;o7}tuOHli&V^p;YdxbO@QSBS^;3W8F@(C7In9;7wS5p zXT6jl$SGn=Q#V(CM4_dpyA$1S7=fYwgqTai#y2iLAPB*9sNCQsy9G}dG>w;>oXhH) z&m#|q_N9+tjda51-gwZ{Be(7MMC{kdW+SZ{N~-2(MscJ($uk-d(#e0~ zZQIcznAMz$OFdN}s7FUUv43r*bq6a=Mq32y>Qu_)u8&|Gw%1mFWDuzqF*)QjSU8>M z+tnyT_6XidvraX6| z)^GJvx}Ej@i5MD7YRwyFAZ;)FIbD{a>}S8L#N+H(AN!lm`Cz3J2^vL7A)ZibISw_8 zKXDiyEhTt*(kKxXKbtXZydf2Q>d6xEeBvJF6EPx>r?I;!w~IARr*2qQbm#f`)76zr z*KO^^=_#};mNMdWm(`Rh2>|JfZ{X641Zgy2rpOML;IRe{$Sf=-as8~e2nqRmq+>q4 z6)S&pXJKHNCdVQzEh%q0O8W3{VOiT!8vaj`z7YiCb#TaPP82BbKj3E@lWts#RL7rr z%`tj=2U4YiP(diQwN+U_wn-={lnP@iE|)CIZ~}^@;h~CFqpK@I5F1YkZF-*Mcv>Vx zVyd2RJT3>{=!j_IW3tuLoR2KuP+8B3ek)jdTW+DAFPr0F>gnb5xir@w8WF*9eS7YX zV9=1(#zYEZ%fzqGO;$YgZ{5HHCBE zY54wXS97zp6ab8hGYv3ApZdfZ?o2bY7KkAO<~ z%B30HJM-~JNO5*`#nGB#Tx>J)m*#auw|0ie@se@RnMd;5k&#_GyP^i6p<`}UZI5B; zNB~+ zdI1ax;G%#|RJ&etcnaS6*6E@PIVCzqXQ{5JsDhGkJdLY6E>4{t8K{zr=YNbHcUBw$ zeI*AUi-7v2X5V__z_Q-iiKo^|yU8D#WoHO!>&hloD`{UOKttpI&E-f%!1ETpqd+kn zJ8K-M%5*YiNZyC+q-2F^veUIEr)?&N`)X<>q~!iT;E_;G&WsF8V>@WeMoI~y2rDeG zKw+yOTU|{YBqzsqBKkb6g74RffTolMM}ZEIP91BL2kW=DQc^&V_7MOu;iceWJ@+Br z4wpVPL8$jda0vS83Gv5(M!q6-h}-#}(-SD3{k@|p<=*01&;{4K$G3h0N=z*mkQ1CNa(?CJP(P1KcwQ3#mAO79x$piM zejv3lAw-J4$OQ_kT4ed->e*d(tdvX*K*XNjewH>KMH(&Eaj!lm%N)5`0pj!y#wSdF&#l>Gtnj5u=Ot8 z8V0~@2a^_GDHumRNe4wVwc`Wl7 z(9uXoQ2@lDgC7tehXByz(^D#c@p;EEP&I+T%AW@G(#-EW--JaXZl#I5fvSV?0Z`@M z-t|kdhNh6#PjLo23Xm%vQ1HR2$^LY8UF?a8zdD=;AyQnn_im6(A~+08&VYlCq@WGc ztPIzt*AzA{Qg*rUL%6x+ruUqy3V}xSH-n&AUGr@bthNCB=cn%#*@d}as%m~1 z&LuZgJ)JD>>{Q5k_3>llb-F+cP~@J0hB_=@vEaNa43uMcr&7JVOc+5yF9S9k!qrtM zZ%VwFC7rjozrXD&+{>5bl>2UrfRB7lqh1E?rjXFa=IC$DS(@3_T08%M-E7ifK_Hox zwaDF`IUWF!FDXf-Fnc--jp*tAo+mDDq`B$n$Bos;(dX2TAh!eNnAp?PuLFt8v+5#} zFwa>s>3rNQ|NhwT0dd@;6-(c9w8~6bUw^s0y!`3$ewk{KP30kKzA`BMjc!!7i%keoVf&{Wa8q?WShLq2z9t{#={?50C+ z-wP|gBNKm%+eev!-If%SjjSi&`f0J=KVbDxR_4t*6!zhUtjYb|hpw@_I|`u26&i%k z{mQr5pK_nMe{g$+0@80m2O0?!QC~kC)<7}|L?q^XTmn8xNkmF{9{wBPk2*rXTnlSF z5uOFy*jC;4&QyePKOo(%IrHtTmi4aUj8}yTJ!GCACe=m7m<{}`*HQ6%8r@)Aj`zIR z`{FNich(F99x<@63=A$jPA{kHbD@3+iGy+-SH)_(v+GMsMyC5+ebm(M-1fz4uC6P` z!_Wx6TXJshPAIPO3-5ato~s0%s^FOScNbaOoDj9MjAt2JCXefwl+WL&n%s9^8eSh& zSQCH~?4!ma+1SL9Qf>?0)~s-S{WI@&t&7X{WsF?+_&mjC!$TPE25qnDdZ}2edaur5 zdnk=pz1n;d4gZkR)MB-0B$k38oi z$2of#AbGJ{XjJ%`PfE(=>+uu%q@ofaB96?1-X))OUdQhNj7cLTq@;b37(9Wg1jB0^ zQgoO=!>4bAh1Y0GPQ-?k1gn?kx;w3J)z~Q4v8+P@8KS2re&%)gA)YoiZ4gb6$v9Nm zaA%b4?lK2dypj!(pbMV$op1cPJg();*q-+soBfrZZnK<#PKM;EMP3^K{}`o41*ydp zAp3#S>xo+;a%IgogJ{_sd8C;i856sEx#_bjm&djJ0XDyfLA5~*-g8Qvk&J-PsThw7 z1w~*ORuW&*j0Of6=R7hRLZX49zh z@}y*TF4LEz_%A063<1cZd7W3FJ-usrOk{V*Mu84A`}5(4U3ry~q6Up$bR={KXlyKi zHu5RyNaz=zOeTx!o9#LRT|GchkdRo;8dy$x zZy-uD8wD%RhB6zbnp4=!d@lx?4p12LW#i%$Dzfz+99H4hyMekN6H#fx9nsEVCTv1c zS7)5jABe)EP^Q~q($OX6GiqvF;aXuG|Le#_TSq3~wK1)LUbBoP9bnlD6cY#E;C7y_ zzaf;dXBmgAulvo)bOcTmisVUmLigtS!!YBm#vUJ7Rf`lV^Pl>f-Q&N*@Y8v%!dY8G zJwO=5eW|Fk3WAvpfsN}p3?CbiC$=jvPWyk1LhRHd>-KqF_CmotBWL-W zxp1#~dS^Bk7QTG;j~6*ME+`J$Ptr`4 zb{UWeq-T>JEs*f*y3EO^N}g{mH1-1JBIlL#XgP^t_gGb7dYSb~cP;Xg3 z4xO2~K29}5;NnQO{}(=gUq=wIu9RrWWB{K0VjqG<$KAX@MpiM4&Fp((Tco;PJ$pO~%4c3e8)6-@$fZvXZVM^*5$~O>ez70Iz)@)21kcqoX zlWvzyE_WXVb35@Q8|&vM4zWD>KVfLA!=uZisJR&B>>$IT5Oc|-zN_CmXa&$lK@ zWe1aQ?v+~v@HqcCPzIqnoDd5M4J3(l1cFj*7+8Afc|~VuC%27&P5}hTg}RQJikrK& zRiRIxW_c!C=n=MTAGnZ^y#G;DM3C$%23Mpzp(9E5jRG846*M zB<|P;PX@hC6V|1>uCPL#q`gU}+x-EV_vpQSW17`oyufuPHGDXKb7Ol>5fV~mQ&z*` zxrSu;G@Zr^##R@`rziKg$5jz%_}7(B4En%DW7AB+GPXlGQypf#cyhfRLYc@KG@_7` zwOmfZz)-K0xbFFF0Q=#gKpU$#ekcvtH>OH}4l$w-*KXcrGRGv67a+grG2U`}3PFX$=+%dw!;Diqkj@l=KoKjL*0Cv0B?B3xsGTvQ*7W`;4gwMjV zGZ(+|Wsx!?Nh%DpK8Tg>4H{Z|d+MEBcVwQvAlcvht1goqF=SuAG~Bz}Tc8OQV|jZ6 zR?(6Un3#-_IZ~8A6s>kRmB(u}YD6{j(&-kt=s#Kcn0+A@e3INA%FWG;)BB`Tif=Wi z0EtZBH~?faJi^%uY+<2FQEo>sbF4)x3=7M}!6_amC>!ohhDmSBo#`X+Sj{o`-9afl z+Gz1e07`M>4jB13BZd5cNBv7hAIOC0`E6bKQg;T`wEbQt?U2LZT?SK_~L6SF8I|K|Pf(OC@GR zzPd^k(7^lS$Ho@Vq&+p=#(%stBMQ3JgO>T_(Y>+EDG@@;*`(Py+>XI=X{n*fNJuNs zPV|7ja~745IDS0T>S)1gJtMiH#OE(^*|Li}Kb#1e(V$V=SdY4_-Cb-rm=U_%bM;t1 zE^B~g)FEb%-%ckJ&>PNLtU*&(hl2}WGLuMV(3RFm)Qj2BXhp}C48wG98v|yVkIbg1 zA86th+n!2lQeWv1pww1dM1(Omw%(k|A$Xo4&CWU=$sEoB`-LkPHMKZ;U3qi>G7_5U zjqTCGYAR{Vw$n3gALa{BDtc{uPmZT>hwj&A5_vNc%;Oh7!05I>fw(aTT-zG*vU z7I2U2k<6Ee)FwI~0`!K%%9L~gXS_1@@!_#w%_o%=0Sn916A`i1B*)w96&eNm2YGow zP9cuirKiiy|0Snf-!+?f6%x$E1CRd-jbln@bMtHUA9K~&8jtoDJWgvf%)k}?&$mLr z^zx^_VAcRH=C}e<3?&&xC;&n$Zr?jgqd#Cl!&-y3I zqJj`6i@|kI;E2HKxVr?7bs(q}eZWKp0Ikj;F0S1CgEQ}DKdV);UOFLW;H30A6kO5i z(l@yNlc5P%6%_}w9e=Ij7^7MQ+uFkMx_3t1|N5BG&UT5})K@#vHa7#=`;>UPY?}Xh zd*~g$W!$?D?^}J|KCfV(gnpoH@91cuRo;+?yJ-=XLINSln5I~! z@Ko!EGAOA5=TYYph0C7E9;RAs>tG0d^Bs~t_SlqHCKXGeQfx9Hbbo6KoMc?soSeAq zq;xXZM|$<0PmjN~@)9IpA~>wT06{KJ<;tm4N3;9f4?(5KKMWZbw#uwyu3Fq?@A1B~ zyV4B(aGtjb2)$hF2`-22gAq5b4-Y*(nT8S|MRGIma)j zeU17!kdsdqBgA0)<9XpPJu=o<4I^W7Po_{fPDdb0J!6)$m0B6V(uN-^*3q@Ie3dn; zJg%|%wIDVIq(VZ#DSWv<@mp#zSsW+2kq-nk>ehi~y^Cq@`?GVqfBqhU`|x;L%?jTn z*2`bA=UZQESWQv8x_;|O*_IFKa&ius=+XcKJW%WhBM#@0&?w0}3pvcsx1f#J+Zl}7 zv$9||jJn6G%>0b*xHXV8Iyx%&5c_!!bQuztqv-fNmnXL;H&0L3lkZ8ab}ps|8h~%B zdA>adddi-(Fr1Xs-S1_iY<0%7vy*E|GCvwsjh6IxWZ3^KB!CH5f>O%A$C5alt53ti zmbCw)H_q)y_46n2L8P!ZxyO6?1LJ_b>dKxfe@T56_x}32N*Adhk&ln=euXNnuOBtd z+R4`gXa0#hZGQKa%{=r?AgjaIIY&rD1xHcx=@7-nfxGCqCz`@Ba|kV!XvMSH!8`|w zsio(0Q}a`Te$N1K3Nq*rQv|YGd>eb=G3TmM zCFRpoYF=Z@LoF5-V9s4?s+h-N`ZUb^bU1!}nw9ze!EbJv3%Ck_$x938<42iP$=fq`WwP#5 zFv{XvrtSb&o1R{Mtpsq<5ZUY^Fj9y|$@tuUl#&AGM_?E~BNr0Vscl{D07k8xSC@OB zwZ+roS?#CsO368!n+tkMTGHwJ$O^&YamFMUHAGU%k(2oy&R>2748>~J{Powb0Avd8 zwde}-TVj)m1GF^=eYgd>0${11ctF16sQ&nI_x1UXmYP~r0v$cauvv|M-5b9@LpsQt zK-8?JQ%J~o0zE775)=&EKeep0)^5Amn4h%C> zc8xmh&v>^o=T+(p@;Hvjjs>Cs_9u;(+s>EORHOX+f#qxD(~Hi*2$$u&@@PEHlk4fj zt^YU{9k#JqUl9>KJlt%cFD#U60c)y*DcG?AOB*J*oKyPwR`X}8L2^+i3)~0Jkg_>? z?Qau3wXQ2LKnr*OOr=}!*NGMu_U?1Je#;+CRfSI~aid1F&AKkwS9^KLN^lUlcjzJz zxhjk9d|A1))$5~ogw_k5U9Z>HBg)PiT+EhIDP(7=kWwP5E&j6yuwk?q`CBPq=UXy| z@jQoGnaQR!G;(qmk5FzfS%VIY{rtC|(s=0fhmu%p8)BosE8Q*ROkx7^N1S24Du=u&!9O_wIs+;y&6do{-`4M)fJ@4Avfru;koOELQ2zxa5p;A+R zTfi%M=iAXgJL-tSdLZCm@CPpUH#RacG&LtmitlG6A`Ip^u8sl8TJJnbRCK)r4CAz6 z47%T@hs^G-cShy9q`r%VNyGb8Q%{x1Hr0*ghH$HQgIcYT3S}OJyDyM}$wLI0Q z3+Wblc|d5iW`W?4&+7pXpQgsy^eiwtD<_+wuD3eKS*Y-%NAj_R-wGEAsmf+JN8;k> zu&S`5%FMVy6(Wlpn9y4`|*z3O6O)PrCz^H@q~r= zyZ;MJdi(lk-G=bdk*7xx;m`;vISStSnT3;hbudD?UxESh{`&NkSxfHYN6Y2N45ELV zY5>LmF|Ms2gP@(BVqnI^cKp`Fz#PkdSy~F*e;EQmO_Y+CLUQKa9*#`_dvE;ifD`t* z+hN|#Bz|}}x$d^^?(i#8Jv|xO7WZk2BDY_k_a0{4mq$s9tEV>{ek85(d{m~oqx?wV@RJ1xwbLr{* z+6HGn@85D9UI>@EI3|4W^L^b_hZmxLdol-)eK=L zo77|&*k1VfFNqfQGa?@(fUTA@LEk6O`18YqLZ8MI9rYSX5$v4Q(8<-vgXTY9+wAU_NI2}pIAO7O*;r!2iFK@F~U-+W)UZ+iQwd4NQ z#6hhW9^i>=ww?CFKbA8#8FjizApyH-m;-)g67a~M*rt0band3q+d1V4zXXcHk?zA| z1j;v?B{q(?jZR@@&DoxAzZd`z1)8XZnXs@%bLuOU;L!FCk!hcq#-w6(F!!Eqo?d<= ze_>;jgRLwXte0`OS1h;hhR@^7rsW+ev@k3P$@Pz?1>2Gbmd(%UY9+vTmWmI0(3N(R z@a_yVG@OJlH4p`dFLC8dAWDb9*HeRfN6=3Sr~qQ23Z4f`B_w2iJWf;$Qz>NJ_&mAY zDGv6Ch)l0a2#7d{h}PB$6#ZCDd-}bdt~^EqSl{(^<4V%Vx2b}aMWrPk8IUH0ri z6MXyL7Xqo6s*@)Ii+hRKcbBa1uUCZH+rtextUHIJUZGqxM5lZPT`jD{7w*-YOi#B* z3CBH*Sc=_Tmj^)4-uX>bQ6nM!TajDeE8@)Bn+O?@foR!0|7_#~{y10ZfY+T}tA{1` z(S0f+=oS4GIGrZ?9Gk@|(Cgj-x6Gf{r6tJf>rbJ3M+mNvGH0}FPOl$y0(aNu; z#-6^IS367mxa4C7TsZz;xv>i!&WJcWph3eeSpT#>-z-G4lKYdc&;4Un-(w zeA_-HFaS?Wj`+oH2QuTyT3DjY-ipf*K5*ie)C7l_fS9u;2d8nW%|gsL@LjHwGtzVOaT9IyHVf1E)!9* zTH?#jwjCkHV{7dS2!B&i%;OwxHBUts7p0fR^IL!TCz(!N`!9MnYnkUK>^Eyzvz6OE z(&uNhrU4Zk9vrXWU%?9qWD^;%DXCl_nw9Sr$hA%)-8|DBE#(zR!X!kh`$nQVT`Fy${Hu0<8l6y11KVn@he<)mOjYeY zx`;3wHMQe01AR}EhpTHaY-=1foi@dtuXMIOTrT-XZuIEpXFV}tZd@IGeReDT#+?VH z`M)1MUJcJiU?xbo+3_0^kug zwwGJvI|5}=0u!*-yOD#ORz59xYrnq=euwL}jZO*HdFHC#*;c<#;RN84;%2I3cOEM& zpu&)y6+Q^#Z@YGhdX#3Rzu*4xaNg&{L3}|uTPDn~*IYJpaRA`ag!aZx3biM(&K%P8 zA>G`X0wXbP*p2Iws|a)jEE54FR5M=mK}hK4u1Hung>yU?sWkvOQHD-CP!3%14tIS)SAd*^B;v3@Ke{}VEpZxe*i*8v_R(BCn!pMqLo~~MPenW`UyVN9J9)NJ z^}G)m3lRyBSJ%r}GXx`LM6diD)bB2*HRv=-_U11Z9DrwI(M6{v5<+Qh4JgqX>+Ek< zHS62mF(jE5OlDe9Dpn~RxC$= z%UQbgTAgxb@5RILJFu-em<+N+E7=HH46m&pY#l;txfbQ$E+eZD*jM!SJTxA|mOiQa~yB%5os3e&Uk&{Z`FbdwN zeDD+&9@(d+dW(HXh9n8b;wZvo39x<(&*t^$?2@nzr{KH&GxN# zN@D+f=e?Pz{L3K%Pgzsy`iSqD4+jVA2pZ)csFmq`WQz8>|27jnp#uI#haX=6cW3ZY zN-Db}bNt=g?`@xKnUwQ^(Ki-WNV|7QxroI_z z5zG;{(^*Dk)kRxaT0)UV6p-%jRyw3x=?3Wrr4*1xx{oj=`QJ(yZr9Ge;q>xyzf3|ubA_hjv$a`Q8bg*(@SPYsMa+PciSm?A)b%`LT%SC z77Ty4D+a?)H%EuJ(eE1V>EYsC%*=c4i)@W89(2Ju{qeNe0X$z%{128l=hFV(n6rJh z#J0C*ezEeVg^3Z2{8*@s-#5oG`S@B}lX)Y_{Z>BJf)&=_yM}9Rtc6ng9jp0F5ZsZ!HrN$^ySDOwYVRvrIs(Q}(+WJI!-o<78G#`D4)1CvH# z!!?4O4Zo*X9uX0FNys^ms~2_@VC(x5N~_pC&@qJV;Nbf=<=7Q!oSr!I@UqWBymq+y zB?(NGQ)6G3|1||>44(gX%z1_38}=5o>IFq=1X1V9h@Ok$ngN(#e-v<`XE8squ^Ff2 zC(gymjd}LYF;-!FR7Tnho4m>dWp8g~l>N zm;pA6;+$LzEar299Om`j(5uiZhy6-!7Gu)-?7;^5&Na|cz%fKca&OR}=-p@yKuYC8 z^YCc8it;|uSS?F3{ACpN*e!x{TqF1*R|e*_ylK=5U3Cqp4cc>a# zhetzS9KbembmzZ=G=7e4hgRIm@4fQw_Cxwg788PUCVWu=NT8u0#EhfG!K0EWnW{#= z5BtIKgbk}5_oZbHVq)HiM&aSq|Jv}CWF^IMdeYzD6~22fRe4-grS};d=jA;h32Sbi z#NyAfR_C>Y0gWwhPOkaI>RKH#f&8!Xxhf5df=1jrioLj*bIxgCB-c=cyO6r*$}W z^B}myVJ7g z61pk}lKU>;H-%w?BLEonwU62X%1qw?gvE-Viu-wxJ|1h3GB#t;c)*dUwuy= znDfJfh>XxU**?Q&oNyp}TOEmKe;mw|%O*x{g%Rq%j zr``Ln_L0A~v_-o$*t@RC9}!bU6m`7g;Gk-Sfen`*>OIiwxbMSF3&(f~vl4q`yI2#` z&oAon;+i5NVxF;D5!H{#M{u8i84SY^bp0rU?Z$d`Is>o7Wz^kiIZKt?;8gzRi{J$# zsOmmE(5j%N6wge~P?Qd?b`}>$91>%rOaf8y%vWTz(vs(XdUu#Q0&@H3zbZztOPO3A zn)h3rB+S=?WdHoam>rZo$i9|&8zt3 z_b&3JRg;0#t$>7h`VzQfFSYH>8YxK+7vDHQLJ0tb=g-45 zzWSbw3n8Jj4dd!6iJU^59Q)R*Uq4HUns1fNs1FWo>?*yu78j3q6|PRrEJ_$|M`+a4 z0s}}aq{TuK#2=&m+Xu(pXI+;+n%VL;`i0#(%^Rq zHuR(6*7$+k6$Qrj1|bVBUth!^^^z16%(0f9@zT0)l|DlM#5x0qtG2VUMjz#$vawnI zG2-MJXLa8&9Abu_IVi5GAuJPrr&&SaL@Piv*pztX+FeQT;z86d$%I$-_f~#_w^l= z&g3EgtUu^?7f$UiWSJhMRdL$6|XK=(Y; zH!|DNSivy99zL2AbeDkT1=z%G zXQcHWqaqCnQ;Cd5kyc$O$%9TpI&$TJ=hen!OcJ;iO{X~Ba9^LX(&A+ZjTYhPHyj?1 zZtcIQlFS%D-2R0gFm3{~h{ZM#A;NWQ@ZD-UzF6IQ>@FKyjFPLQY)A%k|~9 z)jrp)yx;j4@)y%QvvX1{in?89mUu*T49z)jRdZp|qM9qKK*gK*)ehvGUaMqe5#-AM z4DTP`tT5Dj&gDT?Qsu8G~DTt(42QkKD{)p1&vP_ z!EAlUsB&qTe(&S_Ek#7QkFv9=X@t{vO^y$^HWt z)wQ)A&d!H9QsIn$UAnKtq!9nk%!fqgyI39sau6erls!)M@`{g#{<2wY=Iih`E_?eD zcgdm5vKJi_h6-ID(>FUhV(-ttR=!J7S;^?#q1sxQ-?Q`T!r7LW;&ir|?asuC*}=xm z0usk>078Vb!RkPj>Yi+gsZ7ftxKMutY@DPEv_(9e+=WKXMI44v@%a9*Q9*|l_CRo* zuTLaD`=7=4?d^XS5FDC92WWE$^YfQRO77CW{FGN1m)<{;Ke?;dKs#hNn~Z=Yi2`r* z0wv9gk^yO7QJE;CTA`~BMlFx4Q&k;Vo01SSO)cj`YPQCwGhgezg`WHjLf|NVT(AC)nfIPm4zjcP&A&Vrp6{fIWmnHnNaddtA`rqJH ze!3eM>052VsI;5rz)oDGpVlrpep1?)UaCD+3w3FPv{EKAu&c1KkG;2kL5b<+m!1|r zH~0>XI1(nmi_hf4T-QNEAJ35dysqwN4$7+u_~~6yPHR~2?^jymg%d)tFwWS7)6xPP z)CM6^q24~vE4z9(JOj`1hz8e9D#k*-c>uoz-$TdJ*rr=ZvFsi!?=;h-Gg7>k`1&ro zKLaFk)Aeqz+}%&{>9*6FZzcYU)lxCDu7 z%y(MgA-#~PK6KD5rdEAl5=wQt1H$+}j>q0M6N%%t&jOf9Er%?AKAEniqYt@$gQKY7 zuMc}hcERjpU(aJa9I{6=V_o|^SZ2!uhz{FQr+@k+BI;!4V<+2V!LY{=k zM+~fq&+2o%LqZmQAjm7oDg6qG5$NpR+mn>3_O5yEArtWy`(MGx2en=2=`4vV;aY01F&yL)@7 za!5aO(V$)RU~?A&!CK{KQ?&g2>yrwAa}CQrL-4u$IN`Ds*lmS|*0)8+6&HN3@&yBf z@uAt}af|%~wUkV+hL(5~6R#b~KR4c=mAER@Cg-3J52n8is|?nA__d!fvn134ljq*I z#;RCWePXTxK@=^zh1-<-bvAl+jxB$?#uu_aBbArsef|KDhTRv=F8O<3r{ENIp^=jx zdykBQ3E9eQQG9PMSBZ4I)a}-nlWTK490AE{E_K4t^3--P3&heSJjCq&@%RY_YC1&% z_v68-^~bT^gUA83i&4SpONK}qg#@fAjoZ2hfBlhczDcwg;GSXY*wZdtJ~VgV`C$Q$ z0Iwr39~CGTtG;vFE-G56>;lij5Hy6~2Je=Ymp41Q>E|lBA7k2-5uYd51By%?S#Lqp z&IkCCI>dW>z;d%@h@&0;E_Akc(1O;V5uQb!naSCu&b&(cT+hP;_=5lFbXGHj4bWND zy8__n$J4);+EI^VmShLxGe}6zlavbDnJ%SV_J4f_SGJnE zlN0FXU^&x*w7L2EjBqW1(&Xd_cAp2^6#zOgroh25*}{7B2SH9wL&Ncq8VRj;E~kCQ z0n^)RQ|&qJLuXiXX9!k(gM+sn8-@Y!%d-ZIjwv}ir`;EBqh(k}@80HdD9XWc7J1Fx z(ZV+md?=<0kXe@LE6jY|IDwZ}b-_8OfTLP|KDf^MZ<}00Be1-W0n+2)0m1^-C=|>< z#E-VdkDdNJQB{5WK3SC1!()K7RB!jw%b;H<$J=yAM|4^39YKM}zshhT|y>%164qqyshX>5$eu0rTBs50)dR|F+-TB$K4Ct8Hfg?dr zuks4Ve2pCE+3qwaM@bY6ljf%oUWsWXy)6wZytT&r^JkG#2>jd~Z{MT2ZI@8hto9YZ z1O|YK$%-D7<0)7|BvJ0WP%@TkLkDmslF!gTRQS=qTz}jF{<4oxA{XMTg49yS!1G`E z7G`>jC~i&q6=eGLKO4VoTx!kXGu}il{dl37~gCvzINZ9xTp1dlz~7ASRPO8`9Yn!DrvS0z%g`Rb=- zOB|eNUX5i4NwHmyDm%HDp4h*f{dliYGFfFT%7yYF%fIgyPshg z&dwU4*fLm;H*D9@U|B67(7LJSUlXM=Ce3D;nC+qRKq45~^}W zpLytDU<84UjnsS-09({>w|}Xs{P=2jXy>xV?kh|{0Lz9=2C5HV?GBEXTT%9ATe@WO zg=_2;wG!9#eNT1WvdhOfFj&jB>I^tyr|StkJgTYyWMM@umL=e#^Cd)C%zR!H6y^f4 zO+M)8AcU!`K0cvgi#Bdc7R%b5=^4n^O%7)Ta&pr5F*=OSm!y7`!59HmTs~?v8C=qvQP%+6T1C zgrUoVf5_F0E$5N&o8)d;M8srnIn$A(g!~xZFH`Jk7Y8y1uN7Y)|6@*cm{GDu{ZzSk zPh!*RWzC2%r;)$3VR2*nhSg#xn0b7CVUW3u3RFQ|7si96W08Mg{RKWlg);IS9o5*Gn2*R&RlJAFyjCa%VMzGE-s#5y|Oq2$Fwz`$9`;b zQRZ^k#CHk8TnEDx%E$aq!tN=d-20HiK=j#$CMK0}u$TOe|D2LjC3W;aFCI7YXhoAr z``yiam}=-?*iKWoxx)mhDt5vE&#rjK_N#quV)8k2*TA9_CyG&+2`(Hy;K4Df-7PqZ!T!m3vE>P*uEd%4SUlS#dznlI-PVBHHYdc70}s| zWzY7YdWCWeTa7pMQ9A zwx_B_DP5we`wben+~5zv0nwt)N+UD1rCJzvGfRsU#DnGfy0wE|9_BU92b4*yIFI{f z$U}bxI3GtpX80WvCK*iGeBFkv!+g9EFc&pdR(|Pw75UY!*f2}mu*1yc)D}>nN*Tyw zB^&aLuV=%Fid7{JpXolFngYY7xp`jUtI3{(1ZuihKlCt|>Lt(`8@q>y1|FczUjFqV zWJ|2QbAIh&%WHh>d&A@Xy=)z*em_;T%Bg9Bc5G3x2}>_Z@D9T;-uPtjbzx|C{Tn{D z1>@s`tB1!XN4fB`Far`j@iw8vW1E|og8?LGMSeSONbYG%}z-jlPZSWV*_8e*Z6@D(T!VZa0y zOlxIYUmb{Ecu5AXg@)0oSruKEgSi(|z2Rcs7m7q01wf7-9$AkB!l-K;hn#$EAa3Sx zga%}lR^aWI3YRQ*Zb57j`BoPqs{P&D)0@*Fli$^Ds%96EX*a z7qH^&?QNW>VQGH%hi%|s-!zA5_rPk3rPahgWQrmUPeKG%g0}k=_)W$0w`Y=ubLC_o zjN8j>u9=0M3<|Y(x!g7_T)p`6AmDSQsn-^Ro}SgL&Z?xjMQql7#9~pDm@$mN|6bh| z~j!qI}!n!N69i zM7sWEx+uoT3*b%}O8#}&WDkgoS{@=)e5b9JS*>bs|M{81+Ine&j9huHeq|MilPjy) zqa3dYPquK#lzc^NY>M>?fQuoJ^7kfRMMZ~$RB&M*33zQ4aSu+UHhV2iD+$N?|WjFKgCOrzgI zcVFZLpXH_VaY?HYRQ6Bg;;T*AJm+H$nIp0IKoVC*d3JrY29% zpCtsecv-%^^==@#NdJ=gCN}-CTk!48S$lht!G|O^JlwZa&&{Z5@nT{mrEy6WHSpWs zzX}PZB#m5+!L}4{HYPg{MHbz<>%$_jiu5zZSXp-+s>`$XB^ONbiUO>>VUs#uU>TeM> z_l*l|gXffrsa8?b(PFf`iH5$}rZP6a;zRRet4Xn@OR8l$ZlpuWL;&h`Y76s~=>+#( z&|22TqWlV`_XBS zEV!7ot9(U(c5wQLN~UCV`1(yG;4vy->)O<`aRT5Z0)iaUjco-T;y60Y`@&*|?fDM# zYkz&z)Iy@WCXztWV)xR-RFmA3W=5A87V4{g$Y@6gT{bKu+3)nch=@QRJTHoimqA13 z@H@}Tg_#fpEzA)cR;c&QmZi1Io;-P~IjnZ*z_T&to387-J;)%zgd% z&Z&nY7Z)bCJ0YNZuvuM>?&)tgGTJu)UpCLDM#RB-$AC{Sc@##0>%*%hr8txd3|%}r z=Pi82R9N7637qYL{mCU4GzU018z<-IM!Yaw9}k;)u0=RJJb2-}uB4{^?KODFD`!B3 ze{2oIZ!eb}cP!LnZ((6*trJO`7Iw4Q^4_Q?u644avYs$ z<;PLghOaxraM`vX5;6l$CKxMQolaQT^XBCC*Tv~}1wKA-_H1IcWngn?Dfa`qxCY+L z%q{ob6*+MUDdgTz0d=0*${r0rSf8jfZh0^hrwvm5#Z&6PiF z#3uG14l$^BYvO&{K9@nO$nC|!9S{6l2Sc!aR>f+4Vka?21=(d&6Um>k%~3|AlSsah z$b^{9<4stl7t+z4E1uPfN-}&ncrDGRKl`QJ0F`2 zE)no3{o~^uU99VT+L@1@8+2$^)r;tnd=?3wGb2v9hBtqn@IGSFh6$>i98BcI!4EgW zUtb4bd%0}Fnp(?irm2G-x=Njm*%aTKBK=2kp+BA;6k@>WK0liH;4WRTWfn9h16_>< zA_OM-YU0hlJHH3w8My74rR4yr{7S}G^zUCa4se5|@_?fth3j~Og2vjDALOf}#+>Ns zzSo|bLj5s+AMv)Ev=|v(I1gq3DzGyWFw-EjSnc!L6DVFIjcD>ac6@zlU8V)()ZYM? z(>%ka3`Q5J$sh?oRMBzpt}(? z*HfPZCUs7#MV#{(>tCMW;o|45`97h)%g3iVzJF?0rlpj%b~e9i`KuIa;zQH$@X)Bl z(Thb1XupXSlq;F*}Gch@wm?x6TDw5SRYQm!g?g_%AG3{mkz@bnP?Npn9K_F_6Fj=KB5&B zP0gVbdP!q8l#-jWLGKW-rd_I zjyd#tbL-$l*ZeiIk4CU=IC$V#5W9Uqtf^u3jGo&W*W4B6o=ZQUM46`R(F)ej5!6U zYWW<1qL{|FimI|TUBclF>`oA!wRZ@Joy|wTtfglKo>pCQ4yCG!*DdV$HCFW95X+T* z+$O22K8q#;XMk4XN~~(GqnqaIUqP6gQ|dRq9o9+@JsEMESXto_ZxR_TfJGc2h)vP< z_Qoo}`v;7aJu8A*cRDv}qXCixlDuQqFoc-p?$>J%Pk4lH8=p@;Uas1n;2@EceZr

    r3I9{jRV+i1m>23}ihuHaIxXB1zgim)2zr$Y7xRn)lu# z5G8+qJz7PBfZ$9>E+YR9)y&LsRvUWD@!Jw&a&X||e@F(?g1!Co5&~6KPtON90q@Zy-j_^@(1>Z0ewb}6zLXU-`7I2ag0aQ#XXyvu_3PQ+ z@B?q{p8?g>rO~o+N}80RBM+y z*wgg%+S65WoEaEmve@m@lO46^2xTN?6)s!Q)P%GWa2x!{!==3E#d4Z%Gjy6Bf6o;4 z;rBB@HYcUo>r;{323S3Xot0&uAu_wE=Fa;7d z5ag{+$)SYp(th*$0H4>T^>j^KZnZ8KBO|{LNvY=E;mcaEnO1g@9gyH_qsmO~Zk%jI zX(9OVKOsBYgXKxJ1vL$NJP~kUuHWeCOJVjfC}p(H8y2{0SK#7P_gr=3;2_B<6}Y{+ zJTcwUNacyU&&CnMpgvgx6Hj50@vOuTAD`8jS(ZLnMMAra{_kY(Qc^t2{c^TdYG!72 zzv|*h%IrKpY0PWq9U6EA0umAuV-slR(#FG@#q4HA^3dJ3WU0pMYd*h%LFY{3TgdRp z7{DTA{#j(nZT)tt|N6qrOm_cjPzdBg6$U!Y_yoq4A@@HYcAA?ltaX}3Tl?-@o&ebM zMeierg*_#e2d14x=I!I9Fu#u=rWhYtXn{x!UlF@$t5YH_O91T`7D|`B^hz4A&~1aG zYL=Hb8HT}Y`%#Mp7tj39)dGUgRcu1OoPx`GY+UYI_p6CN$8gmiF+qvCDnCFK6tra` zuIqlE_^A$Yd3h?C$BL|FPg2V}9#ixuRPXqHKj_LXv8aE<3kU5DrNuz&L=u?@u~=pv zwW6QjCT?XVIGKK5e0mZ3c7|Mab$dd+x`2y&?%5A@f6u5;pCne`rz<3>skMGK2AfDs zc8`R7>(!yc^cM=Y=vMIoO*N%=XxQ{D1hYT>Ihsqv7JCWa`0$v}Cb5myaln{w37IgQ zYuf43)lKM*@BuO_YigL^kwv8X=yEgw{i~^_$d`9?-}s~xct1n#&&F6N0TaJ7avTuoLql<9c5kj8 z3hR8Nl#+s);OU*4t5Q0p+rRPgf3EiXQ-gY_yTDA@Mt4>H$B0tZTm}-U_N>28N8PKfZ zA^q)}mSg}BToBJGX`OX}(pagGQXf2&_7g@8|FUunM7Ax5Xt_XpJ}_&b>gkv>#JK&u z6ryM%q=T{kVdcd#?~|q**Y|Rii~^mdoVIGW9ULSg88=9~hG+Y$h6)&r}`p0-{jDlU|@FqhD z*1ECEh05WlRk-i(tCl73P^Ku z=+&0Xi_Z#`CT-!W&D|VG>*=Lrl;`)QjeD`ic)Rt4hk^CIsAyh634x{s?eE`%M}Sq{ z7)9gbi;bOZ(7u@<_iMNPW$Vtw6dKhzr!OM$qV^ZQB>{o!HvIfsGIofkF)@K!oH;(` zSvVmK3I;Q5r&=#hfZc9%r^d#Z{d)89)U6cWAHONO^DI7u^%Z#Z`Q}x$q#fCX+(QsN zwGxXK0ovijVZlWu{UKB7=^X?Fm}=`JqkcFXRd(GeV&x%~t|nrA@BpA%0ROeXg2*8c z)~i$F>K@Nt)gwksZ7I)Z9A&%Hn*OT2h|Hp7Vq$OJ$jVc4;$}pB;npfQ+k*^*zzt4o zxF8PNum=UsKh?_0e&8^&W{{?WGCq-(NfXU_l0(g%UX=+1uv29M8>Or=30A-LXrBFU zj*i9#y<&Tjp}qb2Mdhm`msAEO(`!#Xy+5afqbA=Cu6Hv4It09=)g<#DAD=&|s_qcb z5vYFiX0r0##6(ADon=b8N$sahxZpxO)pRAK1w0h z?3ojXp-+bl`N3WTy#LDYxNQNAO55QyN)^^0fciHiq@qY6`rrQE%r&bbM;_X(5(rh%Y49} zrk+S5mKlo2qb%n6)9d7X&STP6jil*{)m><&77y=T={D6bddT1*;Y2|Jl%WN}d^Xa< zhwbej5`%l%7g`#x%5~&^H}>SoLC3QdR>~wN2XmPQh9`G2AhN`|0-KyL-~a^^xn?XE z?b)+I_b1roYNfxZuo3|Cf10K9O|4E7bTI$Gha+VvI>HRsR}$~jD|-A97$=7+W~sKz z!4g#?!~Pr<-TPmk$W;p&$$v;k0tvfrQz5DMCN4>4=Bw*2WBDXxI&~1mCuq_w_ywHr zpCjMK(JsK~csyZN&tJbmRxai!zY14OY~aFq;{gIfU7ZoP^Ers3iz0qti$NpEOxPK{ zJ`Iib#UBaCr;xr^ruFtM#4o(k9!y^hXZt*5hUT(`9}{!P;d}ldEpoq^Xrn3`8wbbJ zyCkam9U2H9i`BOjwnku}Tp4n^%LjRCoUtzJdFX!^(R{CCl8GyKzWZg>@w@MV3eaOd z0nhHlhD_A#+A}PSdjkIH*fo-OC0nAd&Z?c{WsP_HaKTT_{kdfazg#&y51`whXsN2%Rjpfi#>(uT)X5}DkmeP?RYw!ISsoh0%D zsbdw&_T}^$53x)fU$Glif;c>l7l)W$On&p0k?EV$yB|-P2_eYN_wUvItGegmgrM3< zVvCEDkPWf;1m?H7di2N=#tr3ApDW}zbKbZN#b#elByygxZrPI=-&@kS9^DwzR%C+u zvUW^1cB>DUS)jaEd61dO?VuD%G8i(;H;*5;hDR3?;wgD=te!`ZG@J@Eo(DTV6Bdb z=;$(vwMeRYb-1dwa&ZxAoxDsc;Cils|}X2&+O~_4#SAr z+Nk#+Mryd=b^$3YY-PiP9$Vv{Iork)PuJ~&Mf{sTNKhtQV9nHyeqrcKGzPoaP?BNJ z#OU`1{=viqV{RKl@i41SY_V?Dq75HbgNOjDv_+hOlx4kSHoYPn{_ATlg~XplG5(79 zQN^6b_t9f!n_UX2HOzm!UPd)GCc&}pqR5|!OO?Mmg^S6FgUd2!^g!lOc}0_&fRrW` zB_bP}bcCY;`5WmhmC_RSuCXBIjVqvDcTEr)M%YRR!AGk@&nxv13Ec*xn6eJ^JAM}EDBDw zv7exu*nI(N8ukwnShI8H$1ixo!ob`o?7WPMfRMWDU{0f}o66$(Ji@}(@$$>1z1FTw z!luSR>dLD1$Wg<-S}Ea>h>XP=)z_~+mv`k4F5P(TavTh^k&>TtK0Q5bok`1~ym+dq zRpniiF2Kr~b7WqF!8_oT`>SFofe9J)aDWdP4UdeqZ7U1|7+Z>u3K=wDa!3?%%aD}k z7lwS@#|D1$ip&p~1g=G;qoWLe0KRkq2E;C5P!B1ue%nT54bw3!e z^I1m4!C@>fvAKHb_A@>vpn}c7;QR_4J(z?K9)^ZvLLf*FwS-iuCQ{d2v*Be#ik{(zA4o;(dopCm-FtOnYwb;0$89U|LM|?qzMAbCBEipF?Nq8x1X+h~)UFt~vdq z?kG}DE&#}^venh`AB86DjfT>dToY(9IXMBLG0IOl^FL}ka70B7t{nmQYN@P=^Vx>q ztB-!WGakR+;$A*7Btg+63;e52a{|pDk(7`uygAFLHdqeAWW*YGB4s8#-2qD;tG?$B zN6i{N+d4SgA``+`MD!DySs6__FuvN;2t14n1$uIQ{En>vxpoCmj;bvIlz@wS_ulGH z3ODJkbBU4?h?AtydKmR+#%6qBS@Z%qBZ^98xhg#h zdr{@=QvOoLs;EUG|02kz&2J|96>Q zA>Y1#wR|fgwqQSJwp^5M4lsx1+`rpgL;U-l&|mT;y{t8B($Hux%3)9{FzTwH; zsOT;e<6Gaa4(kd3fY|?hon)$g6$Xl){737i)z%BM@`FWTcQq}V4-OhH3iN7G?`fRx zb&*32-QZ3fX*)|VU1D!ff**kkc3blOMpdoH!*tIbGp7|ZcZBs&4v);`E6Q+}mgt#R zI`2VGLDwdK9fO#M^*Uh<5(~h!w5CWV{4qzIcRP{<83eE03TkT`;nlkS@gg6DIy` zu=}Hzi~VniO1o$jVh4?RT|Ls@X0I!;%MgE{HbF~OTv+FVW@tDt3^$t~y*gCl&&oSH zOO7TLlDH$@_R6pIQ&7Gg5(S*k$S941rUtN`0s`O$ZDMU(X-cdEDp`mGS@9uXzG^?rt8sXBi`Md@D&mtTOiV}n@&d^V~ zM>wLvNN81W1ZwS#YcR+royG(+(qy7>2@8s;?SBLQe0HmClm4H#=OG&S&3lTVO2Vdy}A9s?pK4 z-_&L{65-fQ>an#*Zf!6$Oj#~vP7 zsOuhofF^YJ=W)Bs8vi~iev`wvYISq-8Ut|stcton%{N6V0oeZIR=FV^zm5wYBOb$Q z+w0xbh^HmLM~aKznh3c+_usqs2+VEou}!NhZ4zD#Xn&$@zKRM&{+C{;Kx_}BjDHlH zu_Z#xldYJHn=|TyQas0#`{#a4_hFGxQdi4|ij*NZT=uZCk{HV*2i6NgK~>AD{uvN@G-V0fkSq|Ny9(OR z8vVGV^=YZHiJFZ+hgTgG1*`InlH9ytw@)(^FfU30i98w0miaE>@WW5@va} z2q2Bm&*jGr?pbO4Hrtp2Fam5kihxIaIyLe-g-qJ8wvQ$QTQA59UWNy*FLjVuHB= zxU;>_b4mu3qRF<#4eH}NBa5}8t2i&uwDFQhd>G$tT%BXT<*C>;ZKh}{z5`2yDwXY z+FG>27DjET0~i9__zn)DHyRjKb~B%2F=rC~UkmVpC-Q0wqQs$f!$O6Lq3CQu5K5P6G|dgbt0~UdxD-AJ%7j%*{or)XSP6|>?U#6i@7?_{L&9qB zCL9^*?*2fc8hY;$_fwYqp7PX2Hp5PnVHKa#9UPXVDo!XY48@>K4K*I2cHaeM7An?* z@Xs++5V<9GS!oYBb&qT9Rn?YkulW5$?WRG(?B%8Ni5Lswb(|mu`vE~vi%PMJK(h(u zd+b-eEr-s%eSTuEBS?69r@ulTH4qpS9|5^Fs?*4*`+;;cE!WX-T_ki5w+I-QV#nxz z>EwSvQc*@^1)JOU(*987BS|S7qC#Ak{rRpwh0(|SQ})VPO7l&i;L|F7tc*?WymEJQ z({=Ohu&f4tWo4OOPo_w^NMFl4AZx#X^ezK~z+jtxz4!OjyHw`=*yNx0<~gk^J*Qn8 zz*9*ueY*a6(&gBW_fese(~aP#7a+wPFNNEsRgNP<$kD&%6}Y0l3h^YIY>!U>?HMNJ z;e=%dz_x}ZmlZt>SUPQjdoZroH&h24ZddS*FJ+!6`CW#_xuAWZ~V=4oYK5MByGt0w5jUvV4YM_wtJW}k8Y->YeW5dAI zt&dkPgyizzp?TlF<4v7U5f5`&C3AB4-Q>0A*czX3=Dfcj6E8XQ6?Vmg86bYYc0h=ztaIbc2Q=OXzdFsmzkb*1CeO>pxL z^#rQso2wMA!kky@^2*qHdV3f3zcEiM97pFqZ&U<7Vsv9A#)5N63a1oikF$IKy5A)K z3kR6VR8ub)`nH&W@^;Y;_5j96ifK!`pDbqM=rnH_WI8`h2VGy5;*XIEvYQ~Mq=-Kr z*|eG-(_KdG?pa(-O5w-h);iI!+%q4+y;n{q2GAl4NHDd`OXRBn>h< zv%6I_>5)3CIDst9uJUE4P^rTLkJ#nAcU^sNNdJ6RGBM;q_fXKHR;Lg!QHyD6zy$K( z0Cs~%OYWluGIinusZz}#fwi{9dTjZ{#D4S}7o)5mt?uC z^zx&}KBqYb1w~##7~9D}ni|2$u7Vu8kO${$-e?ipsu9hrzAs;HyMDiXFXOiBGtcET zk@9?2gu+TZkeVL>5gGk{M}`WwC!=gpwiF@@3Wk(?C1nsHy-K4_0AkRRN*J{Waft(X*r9&VxPm-Wl8R_o-g*e)l~k7`By_GahH;wTrE(i)@x{y|_KbGdAu| z4{iD3j{xCSw||#-9`S}S6t8GhnD8oSc!oxrnzprvA{w0^(hLuWm1{QpT5$&k4MVPm zWtAJ#L^+VQeSO1nPFqn-OoRMFR~UI6z~Lz=Y4oZuM+&l)x?{i#X=Sy_ISnA%EVfHI zg~VsnP-QqTkyt23!K7i0XmjX*eW-a5OjwYyztfxT_JCvZL}B#N{mrNUw2!CjzH zP+0SdNy8wZ|2ai`r4^1$)SoSago=! zn?o8H16hY^DX8N76Vyf+4DC0=-q=GlORQ^HRWUi{{@G8Jkr7Cq9)|Z}wi?3#l@BbN zD`b$g=Ph3@s~XWNHSQFRTbmUN|yVm`f7)$LuTk8Q3mfW&dA`gZ|g5R#=s zdk?R@{)so4aNg?FYfvQ7%bEKe-E&#*y)%|WS??i}8zF-s{)S&h4_0_J|Od7>xLW zMUb?qsjfb3OEDMnZQXa1`C~Lop@ZD8D$xWAtP@()!?vsaY7aJ5)%XNZB3Y7#2jnTpBrB9&FOv#VNeIBTp2TpwA^7MBjZxT{@weqrDbN`nARj#e)ztn z!T{Z43yR?lRp9xI(Wmkf*s#PttFk$sX%Ycc0c-D|#k?pu3MJxSA47rMF{wjR2Hqc^ zOM2u9>fLyFZMGnM(u(P^n|$iZeYPK$-0hF>=8}QjufHcwuc33l`Dm|Utdy<|9lQq| zsvJBD&#%pU97*c~g_@=@6h$v`0v1=@R;SBZT_5)TwBUa9!(UB4K!}ZXj%2I~cT8OK zPB|P@(;2^OepDoneG|KZqJM2fozqx37(Owa)@JpB{QLvIsL3_y*ZGHsBO2h~xA(;5 zJR&4vd|_a2-rgCTspMSsAc;4DQqUP$OpMn7P+y?hJt5dz`f+&z49qm%M&HQq->=Q= zXN&eQ8cWn>Jn;)z%JhnNwUC7-QtF z3wMl-w{pOeX!iOY0@B!zfhLoOpNxYg>KvORh4DT5K8Cm7GSGApjcLR z7n>+(C!EOBlfJVJ1!b(P_`cC-0lK;Ma#)m>RWGZ~6X?2E`Gri`?|$wk_gmOxINk2R z{7;`Q;1(BAs;DW&#fem*(KU8Z{_YL0^ONo5lRw&N zIGkiZCaZ9;wv<$FRp)@YbpWENOAth3kb8SUM2OO_ki-PP9nbW6xOAxvu zc}>rf?_jvJ>~*g4@r`13bFBkrxvWXfgE^k4p}4s5s`KV+FoG2-gPT#MKe6m`Fdf)& zCED8bID6Ci8@6buIiu(gKLjFoOd8bpG?GuTel163x@N*uOUMVYvmNmPOUnYxyIs!?!?5{ z`1UGuy+-lRmlJ1mlq>+#o=|)NE?rs5zZ{E*)d_TZTxY&EG8DpFy=Xj?pTr_OD&h(esVScXM zO}XJ$-VaRsWo@EQ$kxWL&ptFY3wS02d2>u^Gq<4*o?EMF22+jBPC#h%Cx|u+(}?+~ z#pZH{2`tRk*VVB!@wOs_z7@4`czjrTSZFs@W?vXvbWfY`(;c7n-B-njh>B_w_FUt| zp({cxVU=8@ym)L=BgZGopQyRG-!&)W(}R2Khv(7B>zvl^z+KDKv;eoCV}%ypdeV8V zeIfo2&-Xjqe2-R+j+R!XAPzVP&85}w&9#ZUyZX){O$AY=bFx3&E_ zu6j*fXaw?y?y7%(gCh$R$OT&V7xc)~v7S&cNZ}&L$|P~TntZW&mW^LF8l5T!Zuty( zYc_d#i=Gko7Epw`WI+5N8s1GWx0&%$G#IwKkoVfCd60LtqVNg`unMw zLcVa1FS8;d!uKhM0TO~sh@j8jXJKla*FADaM@L1EZGDAjS<{p{Ag5U?QJ}2s26(Sv zP3hpwYH5r40(r(J8}CbTl$7Fp`us|!k?n~$m~s96%1LCvZrUwLD%Ji0;1wJ%P90E% zX(nec6pJ>QneGE4qP=& zR!t6%I+7!j!QXNRD?x2vmPy)8F}AXHj&g z(Ue|wb~-H)t(e?w*prSVVQ6jMEqgE35A zxV)8GeN6oYF6_U+O|BYR zIm6JfNk%aI7`eTvtIrxA`OeC1TH!$Necf8D4(LPM%v0+YPtMC|`JKz@OA6#W!q1=J z0b1a>_bZ7qb(Nc&lRGC{bgaCy6E6E!ik9QWSFS-dRuFhsSI-zy^i*V3bEy~q`Nhjr zw|rhOP(k2&0XD0qzLB3=Xgr}N>yIC+t5Nad<_zFhI8BN6(S@)e%PFd%%4YXr^Nua$ z#_umV&NqR|Uzy!d4P!WV1=eT=GT+yMczC{{p@Q5|EckMP$u{#*Q54hf@D}vOJ!Tpc zf4)qAZgS&B$_HLj0f#zo^0YEM>(>U9US2FZ0E>qlf>G4c*6_!!|E#JtvnFQhxrLmS z)Vj7tFRqxbin}8eb0pSYKNJ!QK+7Rm54W6-XC@4p>Pq;e%Z@$i^$!ypyT)Y#9Moik z#pFeJy2P(75l}1 zuuAXZq7jpRf4k#6SyAEv7e9C|Tf9L2`SRX}2^97XLC4L7jIB{d2K@_LO7it(QK#=z z@qmI+Oqbaip+$Hw?!CD}eKFCc@u7qDvHHywbPJ~WL^~Rl{`qe@OY`vTW*SsIeBzny z9OEf>Him)|BC8P|1V@yKnJV>RTwf;%e~BPNY}eh^m7>#Ba;6b@r_+`$BCGubz|wrshxO}rvuk_*XP>#lYjb=|+$ozo$7-0x;b5!J{MGZt+AmC7a!&(_wd{Ki!0&b;#y!?L(IDZx2rv^DWlRmBWrn0(hN_!j5e#8B5|Sx zuM}{PAV8E%aF~kJounjlMAgl|_Y1l>K0uofB_0n-k9JvA zLn78&Tmh?#{V|VcgUeHLk!&5IfkBvT^YJMue-Tht=`tJoU7YxPYoO0?kQ8Xg6d>~k zn%t)Oz(B>fEOmA~yo(iVSZ=fj1~e2EGouqRSdZmMZjDMZBs%W(`8)ua84;b~_E*K+ z{5~zZM+nL1qD)M-&cw|)s3vrI7fS4!0i^Hh@tB$E6xNT7K4W(egiY5lFEQ)ZeUhiA z1_Bpi^@*MliUyQJw^u?xTH=4KzbM$a)@!^0!%K@7$YCss-k!r~lZP~V@mFf$Pf01? zS7d@w=|ee^FpuP~08V84>m!n1X|g*Luzt*;PEV(y%N~Y3lddi#gDkiG&O-A5O(&eB zfXIBr>&7#f930Chl6LT8WmX^y>0YX!xEzMocN`LkKE1dsluppqRZ&5i5+A=lJ~GnQ zfpi8Sw$Bg|6E`?-#47yW3E*6A^|M@%U+LOB3;9v}5toargAanjRk-tub74`AMFxHE zSM2YW(#>uVS!N4pGJb(xM`JhO)&uTt;fF=y&sh2ZDh*>A8n8J2sLRx{UOcQ}m+@_<})45&@u(X5CNi;c6ZE#YU0=AOGl8DMiIEhV^fv?(Kq~ zjFK{>!+KsAAY7kHfE+0dUSoT<{J7E%F`&ups0oW~&1tE0(b7VzlEf({fwofecVXk# zi+YE^Pxp?}%C&KqBjA^EM-Na({Y8TN%8;tJH|Yzi5kT4CnA@9y^wg}^0XPlcWbay$ ztIa77-q%`x++|1~bUh(3eKWElW97$Z13sY-9|Sb%>2Blk_4uvtX%5Eb2mu!1=Y2a| zxklx3UEIgT91_>J?uhrQnC{)BJX~y9`S*{!dHqFg^j*M=_Zd@J8AvZZ__@tS8u^^} z7dIJ{<%OKpQlG~dTxi(@cNf0nMl3%nE+;s4@9ey|LR0??gP3n=rK~j;!O2iM9G`HK zY!3T<_~UYu4A9CU(-n!&*u=RCy+$udJ)XNu6v%gU1Xa0AaY0hUXzXYKylAYIdT%M{ zr(IpQv6fN=LcDf!B*9B*sfvIAv#>YW;3@(bR;Px`hOzTl{taUFNNH`}H*I45AiRx^PLP=d}Syp0U_=W&qqQD|Cy4z=5;M= zw*);jTB$e4+uu_QmwLLx{;u%=UtYSl)<>hrq)kRRqg}RWZZto=KG{zra8@e@?69w(kdj7mm)= z?zVGjaJ6Y4e7ZbA#fo(WTBMSt&(Y;falllN{1!M6P~KYxXBuq{)(L{mfr7Y-kj zOuFLD6*DR3&Ae8kUKs=1e4?-JvFB0UV!r=DtkW<9VuY;1ZwB*gRKv)_Yf z&p?a$LDo(1;D_v=GW$LI>$*=iE^dY#LD+l$NtP9*Xz7Z4TBoMC-W_f!2UO~aBSuGC z97Qb~&dw3OkW|7KcKCeZqNGGXFxef6ic0xh_Z3C7+Iz;<)=JTvgO=E+m;DLC9zC)2 ztE)JqOzK}TA1^Pr0V-pM$gMe9LfEkg!9q*1HG<5XCqBsHzL0ZY=IF`B(O-}O?y6`e zALjGw1Y+Tm^nBsoo$akOSzR-*0{b&$zt(ZSe?L|fpjP}WD1IWtdwIL)=l;_dV0dsp z2XPFRI@1Lkhf~S*cX9E$I+TNtIjZg+!s+Q9os4e<&UT6e3l-8)BJ1VT4*wDxLCg!n zgW;We*I1bHE$C_c$KVyID#s1SRLzg%CBPiZI%7o~?q^7As+-!HY~m z;b`qw262O_m)GP>&L4EKl+|V^5{r~lp1HW_8&Ovl#}Qo8ZB5}LBXe=V4JISgp}?(E zstK`P0s?3vbl^t2@GU0U)smI@*q%5${q5K|T3)C3F1TETNan5;7dj5y!b}|MC%l1}2@N9#P|34?~@d>a6vVCr5E;59aeE zFk@npxDd(7eSLvA4_P+jAtfwJnfeB=jA_CjpG;_lkp{#Q0?^o%+x`4-C2}A=ytbC1 zM@1Gv@JpF)^Fw9VE(|>UwUxSR71nJnC3st}>4lv1IZ&>@M`B-IZl1{{1ItZJobmj0 z@s;RnLT?0L!u8Fda7 zT4*b~T1eB6Ob|VOy#0q*g0ZWkr#HAqN=dnQ2&U!2B7orW_GV!nKc~NLU+nJ>g|c-* z?)T46JyNdAY&TC{w4fpiYFXk-1(gMr1y>edGuBze{C_RLDI^sj&{+uD~SJ@7)b=KtRCbXO_UsO6GY#vM_slcX#uN&kBkrHO2kkJ`rTVIT};B{32{8 zT9>^)AFlgrwHNJvKDoCF!vg}MKK*inv4!|pvY>evhuXK4( z$kA|JPFMtjgC5Q`yLZ+&$0NpxE&qP&giClSlnIGPfeNE z*n3Xog*FW9sQCN&B~w907^{|2b3?<*e_k$*&#}{=*VldVEUtbncc${UmbWlv4~IRn zuvD)yEztmc77T98tB8q~_sfC`V~Fy37!xT@yE1FcB1L&|Ae>$&>#E_3Yx}tJ%4=A8wW`5QweV+7mrFgKma6 zDho^~PEMA0R6EJ6TAu?0g*`22)ZVDNouUvEi#G*FsJ(`05G5%k2vlQaEYa|(7Z4Bt zc7t2>G8q$-ltN;S8l3`oU7_0ce+Ymv$M|~VxyIr%-RbWp^TJ1W3Tg01QzZYD4E1V2 zz-$B9!UM5}^Uz1WIs9ewL&kq1Cx@}Le+jwbN&{q6GpP@P?q8!b&=xz5V6`1yg^ zzP7dwC!g6Y|M7{mLU(sygX3E0`8FXI7SH>(Txr8|%DKnT66sUyOhl*10xjb#=}UBs zeV7p`PXxc$ufL{Ad#1I^BabkE55Mq(1Ov1?jRycBz{TBeY-YNruKM#%vb^5)B>%6T zq~x8*%-!Y2#Z_Oy_FN-ERMQ8@Ikd;o`5p$k^osk~*zf}Womb|ed2yq{sS!^hJK}aE zdT6-u%WOwYJ`Ha&3Z0mPq+^udiWKuPnvt#FtAyvz=pN=XReE_rllfP7uVj$ zG&&Nht!9E5?nk0xykPdPnXZU_04TAJE;Q~8%GVl=Y6ny&3guCokpk{6m_VL37ypwu_{4NjQkjhO9sZ=;@Y@!3ce7QjDssADbW`5Hu=lhSc)4-1e#K8JKqMPC?|MZDtd?Yyu8B`@C4C3#ow8 z<`2))=z(3gGc-OvMBxkY<9QG`uT;P1u`ZchXmI4@2IC1X_2Hp@KasZfDus@&yeNX2 z+QkJ9k%TdgkB@H(v*KP}L3?j7DX+`P=k`EO5@16zDig$2m1?14=GhqyWe|V<#K;(z zz(g`~ey*Vbx_?(!%lUz<*PCY}iM8!Rc>Rbh<`UcsG2R%#C&w^TwpJfe7x73sTCsB` zw(KpscWp!R>CVRVXa3Il-VBm*$e#DF^A^|FPS5uDcjsB1Pe9!^6!AI`R4Q3O{^FmS za&bkqx;o#3^XRtR51Dyr0u^5j{dDlLlJd6-{i~1m_Q2I&HEwG9Z4Tf~BrF>GKx#=2 zlGP~CuBjB$Wl&?2Ga(7rS}(1`xgAQ(W7#wC<>Df9IOxYjl^Ki%m^;T*0^AZgIb7V( z#%e8C_1H#fa%-GzXe*oX>A7rSq7Cz+<*-I4z~B6rVh&)zXI6l3&yzJNc70Em7)KK& z<1H>!jFJCoYm~W{lBNc<>=t8DGj2-M>a==n^ z4X{xMF$im2APjbfJHtDo<;9<}qve2mAt_G(9w3Z8tmsc1-nv*qt|@3RMrpCjsZ)b5 zTx+x-@^G5FbWcXcf8Mva*w;Qeo;H)O%Ct9AdqqYjM)}*{1t2PeIh)!qp4nurN5Fw# zL>?I%kEF*J5p8xhn%c!JCQ(u@?27vMgs{?D>-$&S;ree3+#<)RK|H4+&# zy^L8M3rz--9F|tn@jLU$aCb&) z4`r}Ft(|M+hLA`&Da}tDPlzvtUhurLP)Ya$4UiJSC-J!1FR@*K&D

    J%t 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 Ml6_hDLf`NI0Bx@OX#fBK diff --git a/packages/muelu/doc/Tutorial/tex/pics/3level_100jac09.png b/packages/muelu/doc/Tutorial/tex/pics/3level_100jac09.png deleted file mode 100644 index ead93f7ab77c56a0362189767f71cb36566fa858..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 81825 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 z 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 BbiDuo diff --git a/packages/muelu/doc/Tutorial/tex/pics/3level_1jac09.png b/packages/muelu/doc/Tutorial/tex/pics/3level_1jac09.png deleted file mode 100644 index 9c4e844c715917bed318698705a09b7aef73a78c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 80113 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

    k6ajo>bQnS}9r-`(wv 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 diff --git a/packages/muelu/doc/Tutorial/tex/pics/5sweeps_1level_10jac09.png b/packages/muelu/doc/Tutorial/tex/pics/5sweeps_1level_10jac09.png deleted file mode 100644 index 1ca2993a1291ce0843b866bc87fd7d189cb5eedf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 83882 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 LRxG;^D#`f=69qR_ diff --git a/packages/muelu/doc/Tutorial/tex/pics/5sweeps_2level_100jac09.png b/packages/muelu/doc/Tutorial/tex/pics/5sweeps_2level_100jac09.png deleted file mode 100644 index 0c60da141894160389c7f9fda99d71637dda975e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 80933 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

      &)?3s# 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

      WyzpL26X$UMWVmoUO4VLBWej5HY9WbvgOtZ(?)b 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

      #zUh4Z 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

      S7hYaNN+jvlyr!F& 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 diff --git a/packages/muelu/doc/Tutorial/tex/pics/5sweeps_2level_1jac09.png b/packages/muelu/doc/Tutorial/tex/pics/5sweeps_2level_1jac09.png deleted file mode 100644 index 1a348596452a8732662db6f7db9868824d768d42..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 83097 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 diff --git a/packages/muelu/doc/Tutorial/tex/pics/5sweeps_3level_100jac09.png b/packages/muelu/doc/Tutorial/tex/pics/5sweeps_3level_100jac09.png deleted file mode 100644 index c2c9ca71aef6d981578074c2587f3b52137d8c17..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 91458 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 S=LesPke61GDwKHk_WuAg^2mDt diff --git a/packages/muelu/doc/Tutorial/tex/pics/5sweeps_3level_10jac09.png b/packages/muelu/doc/Tutorial/tex/pics/5sweeps_3level_10jac09.png deleted file mode 100644 index e731b575d46a97f03e2c30cebbf453b998ecadff..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 83796 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�v5f{;d*oKr?RNqv~<@? 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 diff --git a/packages/muelu/doc/Tutorial/tex/pics/5sweeps_3level_1jac09.png b/packages/muelu/doc/Tutorial/tex/pics/5sweeps_3level_1jac09.png deleted file mode 100644 index 6354d930ecb1d1a9ab0e8db2a0a99f791a20735d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 80300 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 diff --git a/packages/muelu/doc/Tutorial/tex/pics/aggsNonSymm.png b/packages/muelu/doc/Tutorial/tex/pics/aggsNonSymm.png deleted file mode 100644 index d92d70abc30d7872a5bc949e8c69cf2dd61fe739..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 35357 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

      2|+c*@2H8U-%uP~B;{+s5{)Ab0ktwS! z*1jeDR7obq**0n6H3)@Yb%J2RdT20v!sdOkqSCgFkhNdg5zAQq95n%(W?CrUi*!S) zOpIS(b!LIE6S~WyBapjl=FzVdNmKjzqK5uGpYvt;e%sMjw*+XkbgKP~+BeUrKawL)jlSxQup>h6 z8*MbnSRG?3%_l+6SaKp9KBKwmEPe`_@a#j$0PMtY1+f*dTtro%6O@S)?wcVFP;?>F z&(N2#APJ)s3N7G9yFkhOxVaqnZAKqERl;f(?AxM->rcCZp{kl>%Fd0!p7<}LNZR;g zTL}j*0#nPwZ+qX&zT)UU-X3tQngksPY^B8)gGe{=t(u-J0yS<8y%O6HgsWf8{bBUc zp!VNEqTHsjbssa`a#4D)>Yg}j=EQrB~?6#T54X3l-AGE)^zWXG9b1yrfdD-`3$EhCm`u>Ya*OX;KSABuE z$gL9L?P36s{FEsZtK1TR*&@P0z^z@}-8N_kCx-U@Y_uy^v4y&5C^Gq-Wd8Uoz53h^ zatz5>4>Hv#g-L0}vUTAEftl$%@X!oVs9!@#S`|d$?A*oGw@LF4F~^{7K=&`udGfe5 z?yiczB?PQQAYr&1O!q}O!jJMhjwDs@C{a-CsD@Ha)+iS?T5g0FPaxN(Vrx$1LF@dK ze+7sCc8?QNzzrb1+9{0kc+CHo`}@ycFNOYf0084c8-JYICs67CL2yMa+D`@lzX;B5 zI79(n*WTd3Tqvj;IxdCg$DE}MTps}m+hDP$lZGCt833zPY6I50HV}L^q`KEBC}QM$ z->c&<&7RqO5!Q!_ckghj9J&N0? zTjgRR2-iFfzj|Do!U{-OcRSO3gKMN>iB>3=zBE;ifQy@I$~$Mrt@Ucr%bGgcF9PS` zf3xS*o%TrwR}7>DOhMbtFiQG1fXSSAaFYn7_eq|)H=}EbFQ1FdG4f)T4ts$Q1Ps%( z{@(c8i5&hEVbrDN7z&SZ!X=XM2%Ube|85oo6@aqs)NcR*pPOdFA&j^i-M~9@!(2RYj4Jx1t0?3E19Abw9W_QSft6 zSMU=JTWTV#SrN&7Rzx+DG$0j@k;*|-*Sh=BPcT`=X^XS`wj z4;poH%w_=GBbIgw3A4{oKO|xVz+N^6a7|umi#?ap&d;$1OZSvE@B@jI&IGW905>DC z)ShTR`m1wjK3NAeh-NdJ8!5F40H6oFs~PCW;pPUHs!PSl)8L6oDGbvg5sNQEKCQ=& zCOG^h0((FW@@Q3sFLG z)y+;~cWlO;5caV-;ZG7sx*p8L@H|A8g2PmgFjuqA750d2Rw2sWrpW}4|0V5%97GHMic z>J#IX1ZJ)3`Hub}K$cVj8U)k$pkWTPjTG_7;fBbr!MFSZM|23?w5CoViD)Y5<1u(s zXIi4d)5Jam1!}@K_@4g?hA+PR`Q;7%D ze)^o<9@~)|NB|FZzNFn=sUejRvr5pZt@Wn(B>2?HJ*7xjJ-!juxUNp@lz^rGy-_mk8%$2*MbpU{U#*ik?Gt%#?s zjUSyu?IT6MwfsZnE=gZhBzdI>)UL>z56hg#A;{`F#^q5DKcW`AzZ5`>DLX$Is)du6 z^T`L(sGN7CRDl%D$eREyY+2PJmD#Hu`v)TIYjkVVC;D)ZxGD|~zH@RfKEOjOz8lk_ zvdj?U+gXxp{aKd2uF#*Zs1~W6mOK8J=~HYd)2sOmIH5FZlR_j-=cIyBvf3%Oy=t%1 z0IXgI{q>6X2a(p|7u;Xgz?2MoGz{l!-6ee~^-#k}lm=|*yI~Mr@J(QH;PMqyONX*r zC6jm@&{99l2&Z*%clous_GQM%Z?M&yOq87K-ng0z)!=sZ4>4}+>-;lKnh#e!Fn~`* zauiTU0dN}T>JARfT)Ht7HH_0@T+<<-zb2&}372Q%!&9e(%;pn`S~D=I%SB z6e~kt&eAn%lujPP9Q6BL8JCXKt3VD3BWOOo%IMAKOWClyFLlTe7v{p5$H~H5lkRDA z;SsA7pTJ7SO?iRL7gbJ(1`_p_wm@pS8O~JlrMAY8i-*0!GzEZghnCwpn;#$e9{@Se zNV)<^Zkm)2)nLWaG+EQrLS$9|-aYcVk?qLlxW%Y#JG!9|Y4AE1=mopwJOTNKkJQ0h zfwb>wUs%#YuY#5k=q%FTG6m?K1wmu#e7@=l{;DLGevAA80eKaMGIC3o+*vl-=&Ef_a3Ped{5|7*x^~UA0h=XO#r)Ic=Xx$zM!V6!X+s866)9 z6_Di*;s_#(xc5AacMNC+T!AD-)2XBB9gS!t(;HL`C;H(DuFS-Kix$Jinu$rsVri-z`Txquvzdm4!y4MvihqjF_>H79 z6xH4ev!{R#~AK${Ma( z&?%ZUlu0&`=BP45J@)(atOY8L_HBQU_8}KGb8BeKsg3ZFBn}bF73%>oo&dNDKUm%~ z-Bng0q6+1>?%f_yv3}`y4BhBT8vG+A25`>Qs@FjC0lZ~kL zC`xb+3E+I+{NTBNL_T9~XljWNnneIMC?aB-_z}>bA7A)Nce4DC7eFZ>_mMF?{fXjF z1N2nT`g13mYm65a3A=Z+KM>nv;n;yZ#czG)B|(Sj9_H;Sx?eo3HEdkaPKbz@K%f^x zo2FhXhJRq> zjjFpp%)dub2WSBtughM3;XfBDTcK%+k-yJnlGVb$u?e|@!oSA2`#Z7DTk88A{r}DM zns{yfIE*&}&Ufi-kyY7`cgmjR>1vS{@%ak#3BO+67(3cxD{1tVF?zmT7>v#v)e6<93-MEN{IX>&N{zgBi!01{((lj*PM)C z*fWv9GZ`PcHIKnY@HqWd^*d%PDSqTQ^70W&0W|U=Xe_gt36zB{sBa!cdM9bc!7-oqU60?iy$W%bP{#=wqTl@>+rX9Jic9O5~eEfMAL(=_Kxhl)hI-md| z_R_=g_jTOqj9?)IGor6sj+XDR#~@K){_4s%*Vd8E7P9B>-Q&ulBtuvTyG_9$b2R%W zI&})<>jb?tQ2!Eztjc2>z_hJGy$B%@$`k4ip?$g*qN7cfioCc3wZC*i?6a-aVniI! zg9BY`;{7`?@eS-S;jYqv5ymp?@WD4)F){n9-*}4eVyS*Azmj$XV zfovY+imAY1oZTWm@f@CwC18G%-b7^ld81C^qL}l;pGA+Gf&mgzRVVG!x0&~CS2xdP zp(y=7aWSHzyG;M5udj}Zx@*@Sh8((;?nW9(i6NvLBm@Bo0Rcfkq(QoomhP64?gphp zP`X1>LO{T8kI(y@bJn-cI{xQcIt=ieeP8!go40emU9ct4}l4yqY|EJLmRgFV58Xot+`$HK3r<7R=ciD2*aJ2iqeh%mB=zHxDq z(N$w(G{Z{j%0F$@t`9K6atdN<=9L8IrRZtt5EltERKI@hCgU5C$gVSB z;5X>ldZ%^pc(-qo29HwQXJzGN%Y)e)-G)oLpyD$M!V%MYa;-cW)TPlqV#kq)TgL$& z-s19Nk;hEZrGCJjZ#K4MAVf6E#jQZXgSR;s_#G`kmsOCVcSC6gTImcwHBTfeO~M-` z#HAGHn$i2G!XUM+7K~`7;!g)qc>9NQ;N+PM!Lg8&A(5S1M)F2#2XHxPXnq8kxu25HF$hE!R3Z#0M(?JU0q z@i+H!l^by0u=P%46->lT^nYIM4ir>!_-yx~C$2TxH#7FjuaLgeK$TRwlamQNNdb|w zz@?2Uh9t9WW%u)&5GMdXSKC(47gUQG7cO58gy428-!MI5YZYGjs9H1W|K{|2_*Tov zY?69?ea-aERoL^_%=V0In6DItonC$vBg!4xQ}&g@4k>uTpLcI@0&lc@$ZSyKYqzL` z_a1k9CiLF>v|Sc!$OaD^XXetL^A(xuX%DCziIwraH2X9DiVL@@Xw?X*t6ENKVen@K zh;{E^VytI8y3Q<83O!S;)onMQNt@7sw%O#TK`lFE8;rfl+6bIhW2m)F=CSx$EVGEK zX6+r|$-nTr@OTSky~1^S@T`@*^R}OJPQJ;?l~eRHRg=s|A+2Td9tstQ)hw{WCEx^5iz?GV$)VO4p=jIu@76~u87l;o3|+Y&TS z30W(Y8dV_7=qhI)9ZJ`lyIeF#EO2e05kzYjzw**d6^O}VGOsg9q3O`R;ljuA8FgkF9>P9Dq=^nD$%jVSNZc!$p zoT8y6qHJrl3$?0Y7bL>;az0VH2g6eBJ4iX~cW(`Cf2VGZ7+&mWFx7jqwRFf0{CiKguQ8;xFbVdO!xdnW3BWWlmDToA~TqPRyO z;8EHFr<@D4?a?AYqSwb=k@#cd#QM&od!bH|ml&7I7TU!!SP;aImM(~iNg~ms<|)s+-)0tRxfKpN%CaH5BPEinw?Nl&(HeiJJs3p76`h-GC~%uR-%Ld#%sD%>K8B`W%KFNTl*~=RiX`G0i7EVWWBlM;$#y8VGpz=DXqArl zHoj!{-Wx}MO44CGWe?QYmtF%%r4piz7ZX}zBHW%L&^Dt)r3OEn0o*6C zipC??dWvVSIkf6F;c<}QA%lMuI zmQ<_MADOj#rRSYb1J0BP;HCZwVH1M+vvrc7D5{m4;E}h8h#gXIp)r~tusZox1I(a19ZJ015KqaLXT#*cdzJ<(V}meRNe7G$Bm19 zG&PN~>+gv&{oR<-2plFn?nSb@6RdC)qiW)9cfz!ntYtKIG{5zNgwmctXoTIZ)}@_8t=vl}6~AXJqiyzHu9CH%KH>0Z3_Q+Jb7oE^GGQklCn(M;q27gBXVZNlIb& zRuO*mceZM^lUc%J3bV}3Fkx@Z4dGSm&v*paJ6(HrM1?<=?{WE>uNCT3x4rVk)YD1z zP>@U@_#BG&;QA57lGCwEcnmX}9Q1JPX zI<)IW*eu9vChQK=DrqKu+}#^*?zHn(Lnm5j)|=a+tQXDGRYbygWyR+)iElL@_2qeK zD1KkC0G-!e@}LZPn|fG`QveP=I3|CUz+SBw2KtId7q`6xTW;$0P*5L`PVZ)z-lA1zOX zydOPc7Z8w)*&&wO|M&mL(52CcU;Ju)Yn!GiRra2qpumCdNEO+!1<8Lv{m=rfLJ1Np zlfAC+V0O!nmD?nFzE!SXgr8q=tQ0dSS9$S9-W>v1GY#if?^h zO+=q5sUn`L?3O-`C((<8UyqLjAp3o-FLfS^bR-4}5SfQJuXhF4i#UdxKNf|KRtAK^ zPBxzPz1KhkBVDcBsKwpG&V5(yDOF1OW%t!sNOF5IIa;rve=#yIKrA{jwka&r-~21~ zCZ46Xw5gzgw@E9=nCNsaNHs^j)L~>t;0Zv7m8aUeT}Cf~!sja{WCK3=>kEowXJqfz>D&J4VFvHOGbyQ6qSg1;b(AA( z#!k{RA480jiP1Z-8eSrXvg#0@4`F&|;4O^DDyI%FyqGe~nN0v@LzC5AJ zh2hZ*H?|?$k4myckK9gekuAqaowxr4W1XylOGG1^V>9| zfB0`8pGHN3`O{__?gJ!yGrmk8L4J$q8uMSW%JwtCk}!NCCa|}n+w-i0R0c+lmm);Y z<}OyfOVj_{v081M$<>+r>x$xM6fR3GVM+BYpV}9?-Iv73#_|Kt1XfOl>^c`(>nHi~ zO#HCU9;+JSOvrzB}Lnm_`(@5hXxd?mkU3S+V4O?;sh%My0MEi9sRn?9@szm@NO}V*w=26Q1Z=spnU5;mG+D_UXUaMkg{y-wOt;XRdsNC_yxc{MI2q*Y6?nnF-dq(AQGzEzxXU z7-0ZwYxkQT$cBohp7+wX%DpG6o!D&E$~o$axGj!BuKu_nWBM zXMCv{1(JFk(yx^g-QxI?vnT&HxX5rUx!*GFdRVcpZq+Y0>+N##2M8dxyNyTbesgRa`#%G=#<`v7U`byu?UD)i zBMh2hAC~;iCU)3*NA;$RiXMuMH!C&@r-!|FM4}CWtfZ%+P(J~It>Wf_w|D|;O7aO( zPeA@JQcWAD@6}>B7zQj=UMu&q3s&{B&(y^C~ ze?G*MyqzTb$2fbAtIaP2S_abneMd&omlUGQ5k6u@QbG84QjaN4~ENnIthf>x{;$h zWFc&FSis8#VKv9`zPtxnqYq-Hc|koM=A)IA|Lu!R&uz2JSe!e#6q z%8cQBgo1!sQm*MV7L;+2Too!FBw8(5^{MuJi6|IHl*w~uEEsA^c4bSfG8X#kG(Uqy z2zGcnF{2-4&G1jB5!kbMtULJ-J9I3WOagKK`pDNuBZU4eG{dft ze(YEV@dr|mw$F8YqE%dG7Wy<09ug~ZQUbP4SXkPM3hp8+y{ChrR201hT2nsxs-jwz zgxXup1xn3+PJb5~2!vC{+2@51o-Usmm$XMgV%!815M9SUX}t;%P-YPAVn03IK%p0z z-gx8^#Gf0=Gy_)=kBQ98L@N}{yl*aDh78iEp(F`#ra~lXU77tzc%%rts zzO_zmZXyitsAYD#PZpiA2A??CWzU@i`}#&Cv;X(^H;jm5Q0etjzPQ{!#a4+WA!jmi zIV!E_$fEKPDOsz{%Dslp>dE?&n6<1%Fao=w_TPx3Cn385628&Apw0^W%5SE5r*cc; zHloHe)k~NTNoxcU$HFoHoy(eq!H+e>I{G!*q01Xu;&6JJH;mQ4TuagH++W zP`Y2epJ3I!XrK)*?0CkOUE@nO0t?ke*SFH*l6gb73Pt#O}JJdedoxTmpX(g#IV$k2zWjDnAh; zRdW=t`T#9>feOYs6C=p~^Mlt$mZE-Z#mZY99% z{4Ow7g`8Hpo?iMa{p?L5$;hx3*hfIO35#eV3Et7NAfQ6C_k3Ary4Vx89CU&vzoC?A ze29^!`@!lCh_dh7N>f(Hv)m)oy$G~89k_Ln&s^Lr2xj=xnc}L#p5ITX0iTP5R|3;h z+fg&B+Dy(Og^PRftluo{t=_f(2>9K=A55FWoQW?08*U}6t%Up#YQH+gc`P#Eb8)05 z@k>Asi4@S4jvc?*Kn5@{8ReQ%eSY0z^ii3J@B;RVPoA zA_669XZ!A_`rCiOEEBJb)MJuT&|=3SJIU6;yb^F?T{{qjIN!h2?E8rX5gB!TL?o>@ z8Ahn{gpesvK>E^#-!ySS_Dz7&%nn1>Gb>X$f)N=5`7%O__*dk!omfo-^o&@8;yun!4k$b~NR8jXw{6oBHBRBr0-MsFAm9&&!%U(s@~# z{wz8A4-YC!V-Vk~hG4z$lzSq*d}NvQ9^c*8F<)RBm7r24Jb*YD%dj$3vExvgSZ8Z@ z#*wLawrsVIYin*GqsMdrK9$+a@cOwRmQeC4AYZ`NlMc90gzyOz2O$$*#pa~@N`U^5 zYbM9xUeq+ud>yS6po3I02OJ+t?Ky~ZTL-Ju?C;!l=IpZIQSdEi)Q}Hg=jNrMu3v9T zl~Y{Q7rX+VU{EC}V-02s6RWu!h7^JKQ7h^kM&A~lDc=+1%_y(&`%-`T`hHuC1cklH zBFUS2$8|2;%8uJZl5iB8J<7SiWU4B(%6j?bES&67v=lm9ZU+kMaJ7m@8DSJrH%}Q9 z1p0iP-J;V%Ivm@ZH};nfKRKd8{5CBgTaTsv)j_ER>y20Dn8r!)H}srcV5O2mM|ebw zD86b6-%vbWD}d-u7USG!LiE#Ct3UoWVMX&npK>8Y?(2zI+#??oEt98uiK&Yhw%uqe z<9NP(s?SGXwzWS{y(2rB7Bub#^D44T$^~|WQ@QN`XIkyI7L)5gK>)&mbT9%1(v=*% z>iMs-l^h>;+=~b#8rZ5TH4yoV%Sj>YjFmt45@$TCNZT0`(S+Xq-h!rU$X}_>m=+5B8Gm8P$5Aj|io)8@e`cNU z!9*5k;B-Jg+3+gPJlN$)iUUU|TQEJu1^-bMLluLDcSG0ySEK@6nn!XfIl3^OupQK2 zyNM)Wgcqzz>sA(Ul2EIR?M}?`MTG<&8C*-#lwswRmTubRnk=9x47syfrQcTzdo&ZC z`!66gEv!aMQ_gN6tEyRRx+jsXAPjay+kYw366j<>+xr#D&%c6a!~R`hCWZ9~=hpR& zU(P(tGvLq_bkW^?ey~vUHX@omtVrOBwWR|!d=^GZJRkSsA{*V#c;IBxS>O%=em(mwH3fUnKnX49cf* ztW9I5kibjwN$=Z!6Io?P_Bjz-?u{(hc$z_Q)HQ6;qIq^X;O<-j0&{q&n#lcgY4q1x z$mSG{22NiHNFKibp8RBg?W&09ll2^>I8z8e1>Nxc+KJA#XC^9F}G%0mOK1$N6 z*aJ=G;TR-#4S6wj`1C=aMNsDJq&!3aP^O}at+O3)w0__oV-uEE^50P#R0v=;*~&>6 z>upltx*Tv|yz}hcZtxhf&Oc507lxeS%#s#{bcK5B;w-=c4 zn-%?v1Cu6=lW5`|51MUj!3wfD8E04FIv%Sg(WA-|8 z;Y0A)e#WilAHUkb)dI1xwqqpcf&4-&x4M%hqHIn@OGdePk=I1p9m3}E02Z>+Ppkm zb37Sk!mI$DFepJEOeh_uD5Cr*p;DJNKuK2nN|_}1w|z>4L%+`}7fSE{w_ku(X`H4f zlp1tRlu9O>s5n-cZMuOD$1^=9%MOXkx19r|<|Z3FBb8O1`mM@z zj;cbL%J5|v<0jbyPl9Cik4AYFxoAyegtQ@+zcEi#k-#`;1xkc1(>Rv?y8gJz6Awki zSLJx8=Sr7QLCo8Ub*@LXa0xSplYtrn1HdTu|KKKI!gm#Zbu3){^I&ba0z7;m)Y$66 zf=aZLLuqnNp9?#iP?)7#^ThW+k*01|oNSFw=K=dk#NMWq`;a{+I=J^?sZ@iAO4s_lBQ7dBZKI(hee=D3&*;E7VB z=Ox9|{lL+(-4+LMEJ8uhcG35_vZ3ppKk`xf6i|%Z7yexG_lYxRy z6uRCXbbbf!qx>JC?d*J1LK5>=U#xw-9o@aHj>?OSOpO{}zL_W*-?_XvnZ-M@mUQ+S zBVlW;1#=;;Fg3XNy!jHeV27ohRl<<}u|%IeL^e|y$D-TAmj^zEatqNnqo4rKq@m4E zPtxH|(X4;$V-ZwEVG4zd1FC|m`sm%vb-1PTH7#yts6;Q9)6+H04foMd*!=Yd$cI;) zV7>CcQ!x4A-$txLYXTaZ@K>PHALmN&EFq{+g=}>#&Ny<0>#%3EE$4~93VG-V#$(!l zU-SSyVK=bnu7-vPt574mw(}d(Bah&*nAJSF1gV!3Ndd5K>olYu*TpheF#N2P(B>5v z$|Q%}#`k7f`pq;$WTt`_tE#3Q3@3~AM>R%fRur)^!Z@9uVgjX!Dl-*nD{_?+q>hO2 z7g1J=M!<@AI0V~*3zQOy*q&80cDq%8%OgBS7#Zb7KGv)_v$-=165V`r7{oTnlpVHN zOjiITXI2QEvt_H|Ze8#cU9+H@Y$d3pT6vWoyn{l6AUY}66sEh-AJ^e9Ek=!q1s@qo z!z|BAy9Zx7KefAEEQSz?rZv1R9in_WhA;Iw!Ukyx4I6oO3Vr55bNoK59^gAWoW;~+ zT;Q1YX#KvMtsm9z=rYVEnS=x1@AQL|n~voxTub^9wOBf{z93ldt`I86Tm%V z1eXZbZ9r~4g&$%;`mC{J&vZu2z{9~OsRGDVk-M{3j|i8F zzPIUrU27lwIq>^g{$38_K^b$R)KO=!Vu!-_*p&w$J;C_ZMZ)1=d}rr!KjdDJl$p4A zXYA;8$=g4l^CT9n=KC}LY8xcPk-D}|`2~oY*R<$e@O(;T%r56?VLip$4`+OptD?_Lv!<*lRW=Rlqr-$0G zXEp&kiY92Dh>A5O)bVv#5@u?K-KEFI!Rl2}zs<8pqk8OR>&K6e+=alneD2<-#TFV| zErinqFT6b^j)?UiPm8reR?OAI{owL&bCYT{tZ`y$1KHvvKhR4o_Na9t?d)E4@xA{Q z;~Gcj+43v{g8%!*RQdVwCB7|Aja~kS1rV#Js{od-PPL9-=9FlgS zYP_PLO5J%%wV9jFTtz{HlP!y0be=h8{y{p&mBv_C^wR`?7LK}?U1XB`G~^#u_QeSI zeI05V30)D+*t|0rvBpDt~XxzJ-dsw1V7y&lDj6$Q&Wkbv?|~I4nf_IdQ6$M$QZIqbi^t>=5(=hbxh^`gW2N}^j9^( zk<`HO@qL#%`B3J0!m8O5j|LLjxU&FWf$FcW@fO_fZq0aomrzX_6QbM%akChB;pX%@F8rmROL~|Y1mcb}(T#^gLx}U5_P;Rh91^n= z%lJ11(ld1$?s$z!5{(h6de7eyhIpwIdWbirIC7cx5*AJ6s= z%Hzl9Q_QPX(RTP-3FNa}L%hBv^7B2jjVW~m+uuDM^WJJY2IwD_mjc}1GD(>cw_XOBG+`z&Vh%&VD1 zYuB11?npuOvEvIc`-K^8PN*JJZSug6cUyD@lqtu@uYCe zzJwl5PLJSeFN8Y43mb(O+^89WzYF>Zqe^_WMKD%I9F@(}84(Vy$PVrw=h&J`*7X&= zuN3-GY7KEI60`LA_SWzFACgG!L@iRjoJ>4qXbIFh^6wn}Jg}veVlO0*$rz>JXWsyk z{sFWU2HDk1F zpGF38R~r^XV={GCV>e>&Rut-R#Bm>ahYp(Dkh0zT>6xv4MgpNfmborhdfE&iuH`s; z;N)XgDpva6aLY28fhS5HYzffsKjnG-y;nrUM_qdC)>&>^&@SdS;ccuQ0o0KD$XceS zRSe`8TFL`o0O<77qf5Ah+sKW3*pAsf47Z#~6*J~$b3g4Q1aYm>^?)pT;hKP>6KV%rGx=*XP#lDtZlI$@cWMpQCv zDm0|K%ClpeVs}zxWEgq^q$@m<0x4(Jd_infv`b;La!fckI%Z8dbp6eb87H+FZnf){&*9{yNf3l7+UjDowA|hO&qu@^ zLb~t7N^s?ZCl^q14p|jkx&if?VVq>GS%J`-6vQxr@jch3>=GgEV`3Qm=_zb0?c%gg zda-0zZ7L2#d(MNG2f!H6;e8{h37rTB2)FRJzj@zZc2%++G*`yZ(0pD*xz_i%H0?iF zq-iTKBR&;W)f0tB-Pqe%Os{p9(bPz}2`Y0SSRSkV1HdQU03*-t&Z)64Rubm#Gq<*i ze<@hVqXaWX*(bD4EOVb-4%5wM81h$yN=6=YmrVIpi{lYt@=I?Rl(6O=JojvAikaRd zy~h-Fa~R0>BbI4%FSALlVs@N+{7LtVig*GkndN)q^Vs7uWKsbV2?i;vHY_aCU zE$>IKrs6S1_mDJiMzOh2e-m(Z<*4o;kescVs8E|1!;~b1ni>6*B1x{!8QOk)xK)G1 zl^kIGUNA@7fZ>t{B7uz}L*Mtwqav@%%nN@WY09+PuCZ8hUyObgQ>Z+f^J55JiJ}t3IW$L?(c_wT^`Qjwx41NL zzgWEQX8jYH{gysEI43M#JLeq={fNU|m<(%}TJa)pIFWu~pA%~Z@y-^ba#);WjG0lT z7;}DyD~-@QmqYRZegZ%Kas2zoQD9&Sn3rtRT;{mYoNm=6{)c|8TQ0b#?5k6U8~<0O z|L&@Lp7giulA^MM(bxx@Nyp)(67XE*{bLC%fofIvYGfLl&;~od40z32!T6%T_CHWn zBAvGV$k6OPonqhNH!-^(frf-n>yWz^sHoa&=OG(K5K^iY()NbKlkmmx2=fbME%ygd z3bBBl)7M!aKOJDTM)V-g(;)hsUBQs#P+5*0!X3S7Mjf2PX420;*LJK>W4oI}GkD7= z-YQ849N?0Sp9DF;d%wOKt(;q?Fd5*|xIRHOr~AeKsV{P_QF$0)gqrNEN2X}`PwMUk zE)w}iBXF{B2S%!lpOu|$pj_04CrZt9mMwn7y2Z<|$8KW2!je_s5I=wVaF;&Khw~@7 z+77=S&p5RDC85^Rl&01T`u<#@3+CGl4&%Z9g>MB|w4>|h_sBEbyFD-h%ewQ|ZFB^W z9ZZZw5GK{s*wd$!ml4cKWG%r!utzb``}6bLv)3#kna**?b+%zWijv#~snTm4vVM*F z#0F&`qLWgRxe}rqpzwx6bMTqOZw^iLW)e=qP~vI`%T3RfFBfez40mfgn(FJT6yNXS z&n0%JCtoDCZSjdk6!IhcS@vIyeD#uK&}s;zfwca3lW-HfBXrxEz^su<_D!5%GefKW ztv%}FN}}|VT#eq$80*A#S0eBJ9P10j>89Za8^X0RpT~~U+iKvz6ZtTdV%(>cOr{!| zXvf#gW!}8dH8y-~Nj2W3n`dftEbF-u!g+@(1{H(O;HeORj4*31a;Pp&hTWMuyVSHl ztC`i&%R^=ze?SU=a;#pdzm8KX9n=P7BP5GJ@IVS-J>_8uk&hfYKR;vTt4d1AyZa(~yUk;%{;FGu%``$`-{ z`Jj!QHtIQ(Kd|kE{;Cw`OSOF@(p73NKXWH*$T4%g%hB==1SS6CgC4~J?hvG0ZIJ){ zN)*V2{QoenZHW)sa1QHYlJpscjZOfs3b+d^d(bZcvXOy}z3TQ@Hk$t3~<`GCk>$O;(Wlf+1VZMm%~nZ5`6JHuJjC zyUe*_)5(a*!U?GJ!~$njO7RJyh>NHug``C_MH}2?M-#qW8%pKRsfMl*Ert7H*xkqB zouKPbe@oq&XRG$*1O;_1`s)z4;50Q(Bh_P1P!vf^G4qI?63gDCSXj#EgHHdht|z zz62KpWs3ltfL#^UG}M&MSEYJ3i;M?Rj}+iJI9vVH>Ay4jF2-JlvEBVc?r{8l{%;10 zX_Op#J=gm`;r8y|l!~eI73qKjyr3sfIB6wY>YxxHMTEEXHJHH2j}in?DM1%?KM*nQ ztI{gH!eHuy-3ys7Wdm`x;4=uC_X^TAUBY@ZHK)x#RSymvYFY+`jzn66(!k7SkQ&Cu z717(^w;m7{>2)g;w{D}~la5Xthx#Al)a27Y#A))gw}ls=5%~WCmxSg6l3&^HbZ^;h zB}ex&7Hb{9hSW=~7>G%IFp?4p2kkh7F4=np-{_SE>-Be0D-(b1sR^}^6z_?f41vqmdpkW?V=D)>nu zWqrN$q5sT$-`FbOa@e(mmki)X=HS0otVldMazv83C?W9Z>hf%kl^HzLK)z<8VLY2x zskCiN7R{d?shiJVpkY+`1)WKPwFkUYeBQmg=Y{MH39OaK_kg{oLiVzt) zeKaQ*4*bv4DjMF3bL@1#VsQMRwn+(^ZcORBT2*TA)|6OXj2dT^3eB z;0Tv5zQOkt1l@>M zU9p18GW6Ea8I|L&s3{uq9#8fH{lY$)`cb&tOt3!36KS!|Pu3BQo{EIdJD3hyVJiHo ztLOJi4?|eWb(Qg~0sQl_I^xs>hy6_9hqg1L z9Rl#z4&F!>C|K4Nn*g21=JLH(JW0HoOMZW&9^Iue<5W=&Z;qJh%cA-6qoBlOQX3ECTZ$t(- zcAmAIaD8-O@CP#d1CIw6T=tE&gn3Y?0ygRahd|5MO4pyJiHhoRt$IKBl8kamaIGD8s>`CX zj&H)f2e?tgcXrcP`&QkiL|d7W-wuX$`%^-PZ!}&_52)(}%pl7o)2f#2s_~3X=b^)E z-HB}6E9q;k;kK^h{ntz&z`TK z(68CuDAvqO=V_>mN4~R)jajZs3q8|!&gpu zSF=0)p4Y&v#S?Rt9s&J8cAUN z+gnD^fQ2JosaCuhw50~HCT zm@iPqhqrp%^&sj2kC%=;0G=WQvi{VjFtb>SqluBt0pIsci^1{jvmIc1c3zvKtlTar zxN7^LL80ugick6YeJE=2PE&Nudiz;rf<2XT`k~J0B(R4*otgm8wqSE?7@q{EB0=N= z9&7!_QMvar^CC1D7caaTd|$K+)T2!{fQa?)_KFwYFY;P={XnGVMPl|hNtFc@bx&N> z;r!m|g)6ser7)hQd&~gq9Ji)zkD*+!bkiUYV5jnZ*$a)=j72-XetI^ShYAZ=r*#En z=X1t!p_54$_+UMmewks>eyA&RlgEjrJ-k5N+mo>wMnGe+G!PPDA3$kN&dryIE`s9a z*^+FkgyV+dhEhtCLSN|hiuFV!S$|5`aBU9rFUz_A7h~$u0=98v5y5lT)m2cV17p;L zqmeoyS~4gRhncJdZfW+1NE`tw$#%4FhLiiiWW2ReB&|cJ^&{JY$7VwW`RJ0;|J;0ktW1enrSNJR)DBuFJ$uV+ z2WAdng6U){o@qww(VnBQ~w8v)Y`8ojCGVs%|)U&*V~FE}Q=aTuW^vV6Iu+o{jKPBF-(;!&Tv z35WxlM~!I&9qcw{P!W`!Vw1C$)1I@kH<;1Uin6e)uOC&|6IgpcgrX2>u7oJQ4fd|U zag-y2J%VcP5h3~LuZMscq$artXBb@-(nc2rec3#ibK3& zd&~o2Rq$@&y9#M%(LCLnztZd66CZh))&j3jLO%0Xsx+C8WOA0d&6$-K1_5p=o@>$zobM|@>pC3unR6WEWJOVr9g+5Mu>hO9a_C>5Dhl&q> zc67_n9?$dzzt^3=mJJd#XB$0XeE3ZR&be;-F{3D%x`um2CYndFViwuPOluXONn3EQ z6D@wl&S)gK`CQ{2Xz%Y^JvXegn}_}yX-Z@5%ITJ9!FBmh>Jw)-gdQ|sfIH(L_X}$i zT2BE!E(#RhNbOlrW!=)11MO z(|v$H(|1NqvAMbF@;=q`AvTd#6>uhb>93YFYR)o)oe9F`Awi0F&4P0_gGGq11SILm zK=$NGeBldqz4l@94oa^DZmxRv<>zSHb@TXV87U4XT*;UahP+ea?CkgB(E; z`3b+460`wg0mvC;>cJZZwDgT$RfrsRylhQ=tqZCtbP?D$STYoy>6yn}X$d=6#M;1j zTBRr}t;6odQNC5itK4uP4Xza*H}(l_Bj<8P$nhJT_xV`OId%#T!T?<+m0Sg+iQf7_ zRAIohP9~W4J=x_1;(a#5<;Op(mCrtu+#+0-xBHSeJCe5pG&4TL;Z}D4w11TrzGeO& zw|DmW{>fUti}`c@KrTQhM5%llGjUAyMk8Z=@1HA?{uZs4=9$_eDiwCnKv^{Sqrr3M YyFucfStON3hxogqoSN)MxM{%u136bu4*&oF diff --git a/packages/muelu/doc/Tutorial/tex/pics/aggsSymmReb.png b/packages/muelu/doc/Tutorial/tex/pics/aggsSymmReb.png deleted file mode 100644 index 3f9660ac90f6e4d19982d63a9510bb0cf74c8db3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 61880 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 ROETc6t7)K7tM)AV{{X~yXo~;< diff --git a/packages/muelu/doc/Tutorial/tex/pics/background.pdf b/packages/muelu/doc/Tutorial/tex/pics/background.pdf deleted file mode 100644 index f4186b4ec22e27ad7b661576579022876ea688a1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15253 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 C;q+|) diff --git a/packages/muelu/doc/Tutorial/tex/pics/installation_1.png b/packages/muelu/doc/Tutorial/tex/pics/installation_1.png deleted file mode 100644 index 1fcfb5162ce11d92f4d2bcf877faa6f640844d7d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 117107 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 CZEef| diff --git a/packages/muelu/doc/Tutorial/tex/pics/installation_2.png b/packages/muelu/doc/Tutorial/tex/pics/installation_2.png deleted file mode 100644 index 5c68fb8d9e77266eec06d4e0ec77a3c2f7c48656..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 136371 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 diff --git a/packages/muelu/doc/Tutorial/tex/pics/lubuntu_1.png b/packages/muelu/doc/Tutorial/tex/pics/lubuntu_1.png deleted file mode 100644 index a8cef3f268d025d30aadcb7b522058d053424f6b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 177689 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ɪ#P%F+vnErZ{=TZ_v< zr6hQZ167%LgWKlTwV$yJFccG$vACoQ^;+Hi4NjzBM*D~DZycyx@GSZYQr*xOo`LQLJfTF!}17^741?R16 zE^SP1aU1dtu;v58+2N$hE{4Ef*r=)lhKW)7!{%M?C%c@DB?hq`v4|*d2{o|6Y|&>R zEhb}09)MJMu8rlcZy4N$=t_+_WGu>znh#fTK-+XtyWW20IWV&&OaL&2)>%=80E&?e$NV7 zUQ(tu_ct!Bjg=ndAr(c+Pb|Nbv}ObzL?Q@|7CWUbs}GI3R2~GWi_p(03;GfzDhTJY zGX6+n1dSPJ^l5Bs#rrUzqk_dFQx#UzdgG~bk5~xO zR%FRVkLXvA{gI0PK1@JWdpbU8W2)&r{MZ(w+(iT|O`_Koxf6K_&MIL}a^gML=q2Z@ z%+bl`Rx_Hq^w7pU6?GXE_jtG1;%eJ178;EhaU*}lMzV1e*)$@88kjN~908ecy5=X{ zyb2cFFqB^t-`q|{ynDYoM-D2nhrA7WPbmhKUd6;dc|eyQP#&z5w!DTY3zr(g{+*V? z4z$R8jV}!wkijknaPk;S!lb29v}-Yz#4;|dboeF%)y5QuvGmZ5j71Z|5MvpmE{iRs z!m6r>e-o(}5Ek)`lNa^nN?}PQGi+)2ZpiZ0kzol{B`Th#LlX6uBtLB#YQg=nIcAUj z&IumU@NMJ0A`2MJG>Gyy$Y$Ceu-{S!w=oW zZzh*GX)#M{=SNx$(h}Vm79=eegq=HlKVmFAM6rk?7)!?Bwq?+$PLvnh8JDrhAj()q z*PVHiQ$oAK`i!xNT}U{0sQqGy6#S`_wN@qbfT#k0rfD0p#gS)DiS7g=8*5y(*(?=j zZLpUMLjzMa#V-C;rh~dBdfx0rryNtWm%Of-aZM|EBZob5DsUxBD(#JF6GwDeJR6KRPB!(rH`A2w;3 zV=Nl`+NmkxS6x|N02B6_kQNj7GehpAhD%x;#)AG#qo+$yf#Jo{$%>aU0iD;ii8;p2 z{L*ivXJW;oz||ITnClgEMP^L`NlE6azx~Y_z)XdJw?oa8z}B0LqE+8`K#_k|nN=hY{ENO5??jv}gl0#iooJ=CgiEC6^1^sKqUx)-f<&tJg&yaX6M6rjf(Kojz z)K52=mPfw|>N;ZNet0;D1Z4a!Ky0tkPg(d6E_>@Fkp60I?ZEc%kWK61*iz*!Zc$yu z<=iwEir#iybIetzln`U7WHFU;b2tBtt#3jYWpIdBm({Rq#*}@FEo8p5>I>$`i{+7)ZY9cC(txx`4a$!w zE<^e|u1CnV@Q9`(ErNIWzT1NdEyJYB%(4>(m`%*J1`KRS2)j>0Q{hj|ViWbD`5&c5 zMg^4~-B?;#pD7}QesvTM!Z}atxhwnuNdWr}vwd6NTZgSoJ0ha-mju=ja6xUST8f>O ziDWM&ub;Rtin^q%t_HT)2g&W4LA2yTV+;Xc?sZl`e1jdYf97I&+MR$y$sq&A9DtHn zit*45gMKUt%V{I3*ORdNa1|WEmu7TqY#Z0dvRAte`6)wrc&7634vs}-;fAz-Lhj*} zSG$9KVuNYCZIYX20W_{lTJ$GOsJNsBB@kd9J7M`LT*8dSGOfPFP2+?Z3q=+g;^`1$ zA&%nYQVQi_lFU$)Z5H9MY+3S5V>Y^S0*N_efkvpeb=#QP76)`iL}eHL>MVk+X55to zul!;?0wT|D90~5TEX^|gd`kAT1bGk)63AXWtoLp zLm}H33rP%3E5<_O;9L~*qir+Sh3#f6H36bwJ-;mV6l3uy>3XSg2GL7O%(`O%SwSVs z8OuOAqQpx>I(m;MoeA_vDr!aZ28$V~GtqdAx~Ql9VWEiE?sa>C0QSNQ7g86Qbg)~D z8z#HOTJ&mmddX#CL+D+El!s7FTz9X5l8{t+#m2Z=Oi2-=|oAINSiG9S302Vj7uV zW|7v=<3X*X!}Xl*43}Ay2Ai0Gu$fP?tP}8=grD;#OEPqLh5)ci+XL^=B{cpbs6dHbwci= zMw>=5ZAC1w*G5joqAtMi@ELs-!Ci9kidbpYL`XyFjN-dOV>LQAc7{KdB|TZum{4t2 zU|<{wAyGc@J=wM3B1f8 zi9ONYu$fz$0P6MtcsK!c$ikbUEf3w z>}`%y^;mU}dCT#ng=uXl`HG}v(`go-&@+WX+)|U8nGut*BtlxOGt8`54IgUC1(DIR z*B=ZKTDxhTap$d&^-Iifeg%MICV68-hp4frD9(-~e%-7h((QzY*En-Z%M^ZRM+gA7 z$42Gi*y_+DLP(`A(9DTD0b;+`nv=);EX3DLxZ(1g2z}v@HhVhaSZ;HBrivZNp z5;~xN+>#3j@wQz#H7-?Ok!*x!qES=3wqvuxY2uDC`_S=TDI1j7V}XqamS;g>*;g*V zMX7GiB%8Ook{sBbJ`|gZe!pdvjn+zssSLsHF-kxh`tte0IW5yk->#|X%t7008C)!bYWzUlp=w}|A{nfCkK>(;rv|7v?4pM7<;u()l zmWBqvu;2%j4%uIIEJ6i})G?~|nPk%F?N;&yLZFaMSoMe3>cUzFQVA=|g!*)4Llx3dztFj$B=-rD!!2pdd@4K1VUgGbioF zaX6N2WSj`=B2Wn*EMfKGVf!Aq@1Wa|Cu4aDuXd%_ZHw1=VPTWl>fHn=9GTdMFL~!a z2lza<)O)?jyQAfS=3I!Vq2M~@b*)-3^#b1FITEJL z4*v;k^*luD^-$Lq)f)@n;m)@ZlUrZc=<+4#s~R~>9tPbH<+h$)rIp?y3y(4db35TK zN!~KX;d3Hxcs+=;kP(E_35z6{q{VZIJOkL-EvXt4GpNM3YOw%BS_-nahElpAbB~Kp z1_8W`Ny{W-=>$Jg;}Esy#6b_4zR_w+V$E&HSaLUP7gUkaO+6rv)#Orr3thUh#6zJ) zmMShgNZt%riDt9U8qUp|GXq7mPV7w4jIL_jj`&^blE}i#LVbtK$2y=-BRc0}tl8|m z=5?ZrZL25E^ngJ$`!wEogfjUcA!Wx5|1+ayEbcDH4ja4=MFC3LAde3SL7uWvMs@kD z>+MDGEW6Jn;eBG$q@~V*GMKfSv2bX?=>!IlTNn#@T=cULw=)?FG0g)IF(I>%N^hH_ zmL57lT#&iKL(_uZW*7^^XLF22*HFuwPHq*egP29~BI_}OP@9G+Jy{fZDGYfl&(|ac z&E8V{&MYBsghF5|qlSZpU{L5;NW88eEftc=?D(6JvCPs+no1g2yOIDnz@8EdD7NMm zL+A^aTpWekyXFn3M?!{DN_n(y6B5;Wm0V>WQoC^5v^PK|VG~y`;5~Am+mJmuaI2U% zP4xt>KzO;#meK>3>Tj5ZJ6nY#?XD~^-eT&R?qUULnM^-TS}%m zr~qs?yF0$v1#||6Bz%`sUo_YYZc}6~K&}8+8(~ZIg>(;>5-lRQB%=bLCRt87=MsfH zg|+Qgl6)>=#9pX(ONIx>!h2OTqEL`^k|p`nT{9uSvoV7MKSAjQd(BffKjIWIps!22U$lG^2Syy%w+iZJW>`dX1eGz^9OW zAOnZZ68D-!|B^D z>2ttSCJ;&H&0huF2i(L4{awDvx8XrShLOiD4sR^3ZtC}Q(IGOE!5O#q zW#J)+*)?n7OOn{pKCwAB%{lHVErwz-UuYnlHG(zsoisAm$&()K?N*i7o$)?nK>;Q{ zOnkI#p(n!upoCypS}wvQ<{+@Pa)_XfzUD4%WjpmzQ3I0-Li?1>?o8?lTw5ZeONOD*Fy|s z71#RLP86<9x_l*qp@YnTTV~7khW}Rq{!Otz*t9mx~U!k<-+kIVFDhaKnczHx|g)IZ77E7lf5D?!I(7ZC1OcM*-@A%q_p3bKm zkkkCdAERB`9h5twuye~4U46?W<4Hf(E{+*Icv4O43SG_~&VXpT|>Ec4uK`J~1Z7yxqMd{0?GoFKPT9M0^m54(b+6jEEtP zdz!^10QIp1OmW5{br%`h0x)>f#@ySPZN?&>OM48&TduI@1qMDCW5EK@)F^rJqN#av ztNKlECdU;Hmhqml-UakoexS%c*osTL^gpA*PVeYrTe4dabt=!L+w7&`bQq=68`Ihk#cY|lt`*HLiRc(&TbmFyj&^&TaB z(9wLaIgT4US9PtgxCHG#<;%;n`iVSXVGx(xePSW{;ggn`K@_7J9gyL#(P~tVOwDXImLV4k4-LB~4xcfV(i=7NMc@hBF8K5qyO`exhGMFy0CNj(=7hiZJ z>q9O)qM~6))ox)~iW!nV9$>x|gzZjHQ%a~En zUDZ?WA^RBYapJ7E3>z5b77)#DYN95-N7^!GEX<`T(lRJpwRekf9SdID%Pd7aaTtq( z-5th4nIy)FVm7;2hB#v}+=Cg-Ye;6r&CEHrusIbSL}T7E|GN1a#=BG027vaR)TLSq zv9iRQkwDNm0eig3+1=RINCoBy*c(tK;@3hk>{Bko-Yix| zc$b&N{GI~h%4QIt63%IQAV4_lO12tBRJLNTyOh}jRn%9M`J?#{C|lm3Yxxp4!(Kxc z_jA2yxA68s>Ee#88@y$_LkyD^?o>=@L`+&tU}h|{(DE3Qmj0(*h=2ugSQ!75WDBGZ z9mbM29c7{ZFvcR(0Db`7P!Eg#1?Y#Byu#EhBX%esXg@}MnaMjA7V9s0nJyNvcks4v zrY=RS@VIuYtH7jn)ch<47Iu3XmIY8o{DHM*lVI`qm{+y8!I-j#g|!wUpad>T&6Ut+ z&sApJy|x;#r=a4AVMVGl-3LVs8%fyGRYur7N+;6p8o6(PiUwL$@D0$;4UV|X%5k~A z+Zw_>iR70eu?GV2hgeYhQk8Rc8Qp^nM2uw^e$46XK&30L^@y868Jy9}v9EX0C4tt`B%dynJK~=b85X#_U#FfF7B4o$7O5K%*~oyGV=J`Y)teZWAA( zOeq0?sQU)hdP;YX@dhuSFigCqqXyt_6&s|reY?d7Rsi)qNG<*S9E@)$4*|dSiq~Rp z;ngQ-u_G5hK^8_5$in@as3(ufrVbR(tI3A9CxeK$c#ACp2{WL`=UHb&A+%io3(H}2 zn#J`&KOS@f99&Aqf~GLNiSRyK?a-Cf8HV3LQd^X z(p)W^QcaQ@4PdAVR?naukB|+TW|PcT#|AM=T|T`4s6bc0J~|=u4cCUVTPos?=C9?) z!SWE^ebKU&ve(=GI^QDSzi*`|-s0V`$ux=nb~|ao9#o(!oxoGR3eCqz%V^p{G6#ay zA?uhqeD9G%dGw$8V;Rdy(G{UUIssy%tQp8#xz{L}{=|xa%Quh-^Zm(VUjo#{NDqjp@ucn+3z<{?Wme%0mJdK%5z(1(Gi`XQ z)-Wr;#G-r?d>7j6sFJnlnCc#aq49w;SCp|C)9)Cwz5M{3i{H^+$LME=8uyWhaYV`0 zJ-gjIK9mQng$H!$(d2=PD7a6I4x(thG=6Ll$Oozu1sRW7oM9|Pt;D@~1#k$4j!8?S z;wIF#vOhR{pE1pAQKSbRV_1s2>Bx)+7{hS;BCVq3DC`k!K69?&)62p02^K(R-M ze%eBJFOK+zFfsRi6%}rhI@_j0X9g)}MZXI<1yw1NHg(CVExDlGVgs&WEV;~{x^*%Y zFS?oW;=r-Rcnu~!dDM|^pWI*wpEYp{myS8&@}=dsIGTST1$rPhH6;%S;vdkZYfH^C z=Pmf6o3R{HdKFAnXwCGO_7?%Iu>Bh^1wB$5T4qVq5={oK2cB4Fu{_*%_+B%X7E|^Q z6;^C!EYiIS%uz=)xF~Fl>DytD=1?~aQ+E!(7; zcq}k+o$>gw@^~G2Onf=1%B}u~#Anx{pqZ(!20!$RA9=FcD5_lE8HFpI}na!T;Sc@>Ec7z;785*Ps78xNDDWdV{L z^x^^n?j^LJtu7ik>?j)%XhiudGY&%(R3@5bfYdgoN^2xQ(r`lSoPF;dOoC;)G2gRP zzSNg%=vU-4xhlAaTd=9SmQpN(BNxr^&))*BBM&jD@i{7IvzI90 zR%LX(Mbw?f<9^M?>K!!@i?qn~R|d(UIS8*Ubv|ChHJnfb zUC_Srgf-hDXp(BvnKuFc14>sBdy{2#7Rt3O#&tx;QFe6km{FAGCSWg=1omYL_dVXc zYH5@N;%k42msJlJvM1X|W1zfQh$|mW)YD?87XnqA?%+>*riyGu9L2##rwrr&J^dTm-rfn55)^;#RR8L#TAkaur9q!Qfp@95EUl=k5c--}@t5 z<-z@3a^zv0dl*Na^04vEUu!OPw*b!qv=n^v)SVY%gEJhkr`9{V< zAGDn$n68Xfs$=>Cfz(A-p|P|QQY)Ue=kw!wc7M*QEbS%+OGJp`|!zD**WNJa^$x_@Ehfc1E%G9H2;bcev!7mafdee&9D9E>MxGV=I6@yAu^fe z&F!d^bfsz7 zIuenOi2!3!*K%8m^8ElE%GgjKgGTrrASup^o5S0UWREmvE)_Fy$8`8wHA^QZt|Vdg zh_7#y1B>f1Rk?DPX8%a<+SO!l4gMB|bbE;wtE#@wT_2Z}@C){M_L0m;V4q?C^n>AY34VBGFFS7dIUOS0_r|@#pQPCl;8A>=QrN3DLxxx4%O&nnIwlwl{jlp;I_Hz`K=VkG(jGvRc z5wi!Zg&Vr`S(iN@u-2|EkCJ8S2mXG`fG6aX__Vtz9B9j{t9ZouygP**M+$sq&Kvy2DF8-B#?(JRZIM9 zI;p;GpL*eyBw7Adp;tH70g|NP%ECbAiF-JCkKsSW6wE~49(K1U?ENets z41Oi(1k<%HvlN*`N~LN5JYdF>X*xM|MHmY&(E{NM$i+2)>1#vE_t2ymc=Mt zF`PBWP7=mq!1|o5T_u<@c><5=lN?LC(59RrH^SRr83qSzK^aDE=Cq&YciKq)N7N-U zw(rj+Gl*&}q>D$o`bcw72kyVkW-cCmAidiZ`!S-5_tDEcAdixT9e&7@cQ=rcx1aV6 z<+9n^&y~%m%n4p^8OmU>#hA8+QHzmcYL>KOclKN1R!`w*nI(}tz?1Ayy}8T+7)y^D zy)LYq=0?++Su(IP#$xJ&7aa2`MrI|+l0jl%NAT|&vk-cw(D~Y(JX+Fy;F&jy&ao{KG6I@9< z50iMTNqX*rkdVB)pnsw+wH@MvAWJz;$7dk-|V@Q-rkC|8_0b=#B_6E>&Bs<(
      +KMrXQI>Hk3%`g*v*X@|=20*b$d#_VjuS-YT|1R3DZ0<&&mWi&EI(P3DSt z&*+ljRnYD1kap`)|3Oj4pgQj4^<*RQymXJ|&t>o4#Oy(vkRgWx)(4XVTf)5?)z_Cx znj$S3{I!ZjT99r!SxV=wBdB-@W{C}_Y^+=oy{foI;fzJ3?Q`tKCM}ltCO0AlR7Q*? zQM)`l%I<)%a6HJffY$+Hs}qPz+er#v3bJVx5J2wYhUR;d2i2K4}M4r#~JAoKdl)(JA%^6xpd1JBNPtK4P<+x-4Om*>(uB9nBCWUc7bBND$w6k8+m;)2ACnezU06;Pg|Baju8is} zN88}4fH5$dU@XaQ11Tl@REb#CQN|^=Oe4n9U^*geCehN5iz;4BT{8U*^?7|6sJ?aL ze^(Faq(pirZIz`C5R>e-hRg`3C+ru^%lH+6x66gD!9Jw^{2@0ZYHME zM;e$phB{rXreGt#t`2R!8Wi|6aPSeuYtxgZdN&GmD|tYdzPx>{BA877-;#wVp`903swF6#H0e2DgA&bVVqZ zl*fukv`zE~JXc%$kw8)vW!?Qae5oZ(-Qr_lc%LPXEzmfZf3045=S7ZY2Xu(4xg^^w z^A3{J)xSRZl%YII4Q%$~Q8I8GyOu0svd~sLeYPJl7Kg5^{w?LxUyG6mH5y6QwFbN; zJ`ZK04{8c)6`M;gxbck*#Mn!;=iD{SO((upe{MNe+@G^1LeD~i-x3t?6e6?D>4@fc zFfRN8SBhO*?r;_INb)+CoA2!r`tL3`r9d~&@{`~}*|y#SP$Phe4ODyZHd-kjY3Wg5 zEsM*DC22t#1!*CSjUj7r%`wnc&z%=WS~{|~Nef_#Yh;QD87Y#CrP^JLGahNM59jV? z65!JcEyd3(>|2FP>K9=j)hUm$kZ7E8^v282H%A;G2)E{%C4Af6xC(6J@a}pK}W!-4{8703&S~|27VpR+=qnQ7rsNABZ+pSR2Dk#*zv-EkhG#!B`T@rTB9QGyOFd zAncQlEH$VVthdn#+-6E;hC{{z68C!W=!&7YQoND^T_jx7@YychasCZ^n5P^s+sb@?y#-;%(Sa5cvHv$DoM$*x2kOKtE%Zc!e+1uH-a$;D zW7rm}i04F^x0}eigP4&P^yy1Q;1Dxn3kym=2vUzm;lxVG*j$e_Vl0Vd1t8@05X*wG z;P>WTU)RO7RE8ZkW-Rm<-z87D8q`b*`!MY3-ja6RSrff-Ma?+WC8yjw37XpT?GeXU z+);Q1d~_~~u*meo`5Ir<=5RN3oNFHA5$pO|5`G^y7s}@miM1_;4k&GG9V z-*FFV+|jB&-w>)M9cB|B?9Zq5;*-j~XW2h_+k48f@*7dL?GocH1?ScyEod^tiH~Ad z)9P7&gu&1P8AVX0`;{EhvXBSpJzQ3jnbONFEF6;-#8}!RViqj3NLTeymW8pX!Y@QO zM*LeCOA)6}K#B+*buS9z+0%b|+=H}Z@~@^Ylazz%MtnCagHA=|J(4_ofn(F4S$bNm z6TBvMiS(m;`&#tUnLXM@8Tn{0NL^1BTL&AJ-R0*W1)uViL*(8R=mzp+St0rAE#c0! z8Qv!*ruYFdXc4W|lo8?*29j4Yltl1Y`1Vp`nI-XzWoR^${{c6;rlOzgS$9dN5@sxp z@+GLGBbwFy0Inf3)kKH6se482kO$*1i@F#IJl}5GZO&PWon9&G=dfMpwBCP!CtQ4| zTt6I-KOs!{y#UfzkuOnebA9QT$nu>0hFN|J6Jxq?vQ>n5OMC*kpmDH5KFOQoLp(i z@K68YEMrk&-7n&dqNC6^gCxT@!DK9LL6K6IO^ih)oTn~1)^@atSgb8eF1|%DsXy5f zu`J(yT(c%xaEFi=I;wh)8q=r=V?lF6RYzpl?Koj2r5Qr&YBT2`lthPxqf6?JVmI~& zgm=HoRmi)%{aWqwcb2`4_P}N^XjGr;^*TsKyoHrnP6U^uxS;$hz7K)7Zq$n-apCeW zbZptRL~;P|?wSx`l$8u*UIfCBVk`+$s4Rat8^g$x7N2kx?N3#?{8dr{PB*7&jhKu@ ziv`AFmnIKF6(3=ajY$zQw@|YR!9q!R>l$|l7`b-4Q^G3Pw_TTUaIEQWtjG#b&0?UB z)mf>ean6tJo$nxJA%A4{V3$>`AL&CaRxQUg+6NR)`X@#>V-ahc95)c7Quo^2L@iB3 z-32kZohMoa@_=yax-PLRMxOG!%7y`Stnn#AY~F&V<3oGHBzOc`rLb*PDA?0ha8O@n zVgFIc0?+aHJy#O{1I9vw>w^3gk*j`xS56`@(?phMp6A4|(tht_ zEY_MvPDR~CCg7c7o^zs-5Z2d}gC0j$uYpbF71&eGgrit};(dls0NYjh!L4F|t)}|O zYhhQ(=74k-=a)gaM@lwINQpw&yLGD|X5tClkc8Xn?I_U9>vN!2PmULqV+ty-!!;W3 zj(AmfsQKD0;kSNeCR@dH2D8OmkX1{yeQ%hCyp|iLQKXIjx&6|xH3)$vl4?v^Fk_)- z>4g&O#;~qm(xGB97E*Hdt}y2On6zZ~r&t!~_U!~LQv=45Qa{A9{7>RUmXd3!h6;Bn z%U{SnY9i@l`ccMWScPwZjh_vxvx`HUtDgA>_2m>PzCi_GlO^w z9?PfhPL*#4oq4Uh*#L!{LDF_TUq_p40Qj)qy;atfQMB_smXJq z|KMd7p~+(`Bf4UA0{E^lT^gVp=?g$!U26&lm_ySJ%oUcPThF~HnX_XN8=kgzkKAob zC>0z6=OLpX&orQlLZMhQsLf2ovO)= z=z0q82BQV~DM!vnlh2Akd~tI%c$vRoaok<*H243k&12*qbvKp`UMb!}n@2s~F`*nB znKu(gG+Lx3C2dIExwZaRp;&~Ti?MWLpTEbPi*74pz` zIYQesK32&=+G~%LqXHG3ikhaw59j~@AOJ~3K~xyvsw~FuMlsWED9T}R;TQNC!sioi zI%Ga^&QoUOPH=o)uHCS|+Kcnm^0QMOvz>47it`qQ)8dyM*Lm;BX;FJI+nk=x7#w?h z!{{T7p7rg?ih)_z980&^pO7OZ!I9)zKqi_q`-jAnq=k6Il@B~LbFlm_u(UOiz?J2p zy!tphqy;h2_GjTGr7Rcu)BP}I)vr>eG)!2%g$jL%y)TD+{Be&=_Wxc_Qk+0po zY|I*Jp7$*%!dn0nfq!Gtl15+z;9rxpnA6i4fmI4dIB8Kj5wh&ehCa{y;c%Hn=_m<) za$8~aPFfapOgFT(B4s7DM53G6nn&!B$yk!ATu>8}j73U}v6%Hmj}Iy5dhV>3r>dpl zS>-5 zkpl}Vtg2U4`~00+eAS zNKy>f8t!(P=0P(kvV5xI6i{4Sqx*(Gx=;WsLn&mnhxk+0qw4$R$sRbAF}T#OGpVo0@RZ zPmnju#H$Wd3QWk#A*W>T4NFNJ*k7$kYSHv##=?GNw(`OJC(pU-u;Q|=P;hCO^w6FA zR~EFCl5?BJ@6M|_>i*50{RnhFhg1hLy^D9Lq=LG&62T5 zn>Agh0TYY`K5QT9^cjn93!7RQi_XPrhcydAiEPE>Riz~x8D7!+_OKb(=I^X8;e=9{ zi@Oi5Tn$g`?FvgWZbNog4dy`eoR38(>5ulp`{IPHf-`PT=4b;smSHD`>QjzwJFtU9 z?mXZ)`!Ftj9ft5QMLH>u;`i5S3BRRmufA(Hz(;A|+eP1l43QSb3}bAp6j_1@hFVFe zPmN_3W+0~o4%?>$S&(v|=NOU}6M&Rllt0WIKiqG_XAZ@+O?Ia;!TF9J&wZs$Yiyya zH4JOMzrb0!>Ylv!g~Q^KQXcNY%77=t`j$DmBEnTaarblfh8!_cUZqpqps{k2DzS{& z6EW~`3rW}l`4(G)-{?{bW-$+1&ml;sdgr%?F9)hNH{H((1n%VZ*M;Msvl-l2o}m0G zyQT9M2CvDCGz5AvOptqIwFk{iXnTSs+c72|83AZ+ZJr^EI-C6wLMFex0lLmXC zp|hY0a8tU0Roi&v&b&pt?@wWGT6dz1>S$V`L&A=s10*#{E3f~RJ1*BGKt?_lZpqsu z#+~qV@`z{=C8TLHo;K4Pb5Yhj!dU#`vfKOLcAR@*JQ#uuM%oixVa*a#9KM$Oit&)y>gY{Kn~VJsa)y4h-=-EyAJ< zDgggXGZu?{R2yhExAzYY>`JI!3GE_^dqv76i*aK%>57@y(aD#SX8S?(EHO? zOXc9PWG3TIMCsMY%d*;TZtNU^@Fp?j1)Rbe(X3(Tlu{llF^rQ$v@*6WN!?P+rt{cv z=P3i3tUj*?dA5Y0MCW6k@{sbi+W7$u?*ak+hdHGjDm{OItq{^;EJ=WP^&JsND^mT! zV`i~d#-f3H>R6`j1*)uINHuZ-OFE@95T;g|YrhG=?iikCVfBO-3n*2Cu~Xro+#c`t=cwq z2wu7D7FDdX-LFwjioBC`w-F-GdigV@xlLldODc)KvCyb>19G&6(OUs?Y4p50u2I($ zO#l(LYsy61o{0Lj0KxAkUR57~%fA4&&r>tdVU5PGr+^Zgnwva| zw5)Lq_)^J?A}w6E(B4^u)CS&G#WvbBHg?=2EksL&HjuProeA#SN=Srn91;Q2QXk1e zGko93SfFY!=Zs=BpUXz!AYX4Q?#O_=u`!MEJ=)bdv_&%sZl}kb}|wCEgE> zLHR7mmWwTW#Xpf>z>hTxttopf*i;fQ2P0S2le~BkeNdZakmw!0>)~t9X#ZCdQk)8bN|uTB&Fwk zI#&-piaUW~sieg!M)9X!RS@wDjX;Z0s`8duAPI!tl|)K7%b?y&AayZ`b86|hy25|^ z`a7tMGnOc99SK7s4&y}8_Xw-~8QI{0gy7xemK%^MjhC-?i$dN?qz2t0r>&EB&7Zp< zH-jv#4fzO7U>SYQuOzWaY_?Lo6(Jc+QO@9pBt9nnO8h%%~PUsyScX$cZyDX(Az9`9CNdx}i&qCvJ+`ct;XTzd0i^vk2v>l7mytnDfxJG zD9?ft(s|3|h8ZK;aMn~Mz(??VTsoP_7gm5RaGIq~X-7#5%r#%tNvYrKwKy^+Et*Y{ zWfr-Z07=WJIspI4DhQDlmbIlobVA!0ug*;$NKvn4@z0QCFh|Wj>b#~0SQjE8|9qb} z&3cn0t=4Bcqk+B2uI(N@A>J-U{!s}c&jt&^gU_xsKdh@eO5tRfcNcUiqv&rp*+R%n zOF!SHbYwc)L)H4JoX4=Cs3+Sf$k!q+L-}%4?Rfcpi|Ao;{xFVkc_gLE!;H4qW0h1$U^* zIEyahk>F@WKitrt)8=D3>CkC_uQ=veQ|75KH}F$?M|zA{}tU*B@&*Zow`#r(tR zb|%FqEoK@;PON?2>M2@j(bhyR=y8i>S*A~++O%LuTKv7~ITdg{fJa)uEWBF{dg@cF zDn*i(tVs(n%+=@2lT({Z87?K8=~r-sN+)-aqwrrvT*_t_4CB+1=vd@(T4G6@34nW# ze-#x(s$SvNSk)6D|Pm1xW@MV1h>ctWC?kTl;n8 zYv=CE%YoH*+m>)^xc=GN`B$Jb*DUi-Sw8AMvD{{b#}a{!*7TgQJuIsr0XpIKA+X1T z=0Y#CqyWMaR}vGpVa-o!AHZy>DqdO? z<$2-dl3S(NbpidG0KF(rfbJe8COew$gf_Uhx1+oB^p#gitVxgbNLt`7wkXZ&`eXTe zGBRNHTFToD|I|_vyLxfR9|9Z&Q9IckLPvP?fg``6TzP`=DNlLIQ=XDiLiZp?;Yy#2 z^HKoP0=IUc?O}2hMn~9bl8heGWfnYrs8KM;uB9V^(=33oB*}$*rTuXS`b1Op zkb@Sr%p$Sd@r(s(E8Xh~92C@Dnz25GVUL=q+~5GuiqVeC`)(z+y6 z|37jNZV)#2{CxcypGfTZlw)EUu^e4=Mf+W!Ju1?sp?L0GQ$n8d@6nYa{ zLqdeKs5VgqMTs zoM5nJQwOAky*)T?RQYW$kqp*ar+%aCUdk4)9_&|N)E$2j-!&mzkEgWH8<+}Ws+FGd zv|mK=mwHJ{V*v%eRd^lQz+#YMtq^HpMf0uhO+)?QA2I^qWQWdLYRcwKti|69qZhZW zN(tV-PscF=EP{neOUs$8^%~e1CPny(Gy0~vFFfW3cE1CI(zmCuy#2RpwzHZ1ozO!e zoX<`=7i=j>pH87iK;^V3*kXOG(nUPjqJv8)M~e__X>e1uq%w+Hg|=Ql)!eAAX4@qTCr2xmy2`Hg~`Z0X!x#tD6{`ncr^=4&J1$Y0={)|}Y-jh1mA6Ar z_r8c;WwQ9AC^~29k#VDG zjZ6vtHI+HE^ybJuqi%2a6i%7#!xS_OZnh_-w?kTzCM|H=Q7b+SWY4vnda<4j1?p-! zLX#O~q@z!2#CcEQlURqxNNOgfaDPYV18yb%1)KK8HF*0<5N|`hc%i|03->h+krtVI zlkr(LWpe1z*J*I@WS2~1HNB)IB~)XeC9y2X`KL66v=cT~P>Q+j+afI@L{jY^5N6pf zdNCGo%^_)MW0>v;$SA6R1{jNfjfn}m>yo1%#q2oV9DB1p!julSCL3}V^|UC56!mrJWfL}n%%l4XZho|9b;ixGQ5gK zngDShg{1+OQ{pF%{PkQ*h_yMbqXWGqhdIrKgd;K&A8O>jn?UsFLc9>dq8JOdSd>gC zVE>LXI+P0Uh~q=wR&IEc*ozl0Uc5j!+cNkO;C*6I(!ygZ^1|mTj;V;N(!}4bn0BOP z&)y&{pJd8N!C#fBu0v@tRnqdgiwFuAO7STj3sRkyrA1# z66#Ktr~E2Y$Wgm!(qRDK85{JSjO9yx7UrC|bfyH)_vjKvL4dS0_j^Lp5@9LfhlftM ztDzcKnIvx3*`TRmvfpemgzut3c{EX^-gt^$h(aa5YxIk0{B}g*hpYDD7W~F|k^96V zYbJcBg+3klY_lU4R;kjP0I!a(>|A6Y6 zVHPV|!o1K1pl&o^Wdz#*uT-6cq$w$FpI$-bS=UU3VV-Lk%U9Bsn2K?m`$!*i;g2?v z5qqVs0~+Rtvace3$rnd}TS9@1t!Cw#!IoD1gfA-XCj+J^P%2ugT6Hm=h;hGh0`f~x zUNC&YO#0%*G=765JPF%U@*lfc)E^*UD1uNDeG&h-+9oY<<3`4$g-dc!GI#Xh&=6ID zYfxthXa@K`!B)KH@40+L(j_k`^Z%L9U>6 z+zX6If+0C`-a-njUZ&A+x^Q)r32gaD@>09XMlR-lrJiPs{)rUo0ppT++$N%9QXRt* z+{)Plo3YR&VRy+lIh1>YEgBYSfs=znT2dt_^b)#e7Qf$Y9e!L&QsEY$j8!h3L<*0* z95Ii~eo6^RZ&L-q7W4H#0QiPU+{5P2_ym)ahDsKr`z=&z6 z>xCIIanfSFF<-5iZqgzJnv5kQFE0L|q}&nFVnJ9*8D^>1l^7?i6ecaaG_haJla%G{ z))~hsmCROQUq@(y2CfaQ^I82-g<-SzJ7O#@dI-Rj^ue}@$1$Abks3KIZ%#ssNae%b&d+o2XcqX#K z1Y_x+@=R6GtJiU{k2h1|+oDEf#wC={Cvj3r=#X(fjlgNbRB^x1^Q8C(Y-J%`!4?Ah zn=QxBo?uHMX_|ZkRDCAc@|qkkUc7km;x7CJNDEx?0aXxRtlxhL?>-6|D4Vzvj8X-Y zZ!hxfK%mw(0ox&MwJy?1;@(&g2s)}CWI;&TQgTYx+rACPauh*LDzmHtY_XOhSKC2{ zXJpF4el;-2Sad)vf-qxwHUW7GAZclYBEU?sk1zQQ7##<~Vb>9{5vYm|wooBfNJ0w~ zq-9;OCHY69*jJc7sGUJcxO^|q8t9V-e+<7}yJzBU^A|7T_>J-Mml9d26m@YwV9zgc z(n2J1c{rPPZ5}3!M|9aJ(&+zPhv z!9CbN#Y`$H!c%sTcImKrH;KJ?5*{D)e(~Z#_>J-MXPKS0t#3wJ_AHXLWd5I8guORx z7khjm1x0DV6&)3^YOyOQsSjsRiUko%q-|asr8~zDq>Q>1i|lxNL1YMMkF(HELKsw( zmz7%PJ@<4+20|6rqAL*xx(QDeFUB%rEIxSrujOV%2y6vg7->-$BrO5ftNW}x`C*-!N1>9 zl4Wb}w>gC;Y9XQ-L!&o<8RV3#g#^){D-kVz2aUFyv>!vH#WmIgq(vr&q(un}vQ4yYEonI0Zm^!>@kYYjI0!8-(TVB>;<87N4{}SH*{$dV) z`jYYH26_u$X3?UwoWpj9g?{d{KuzZT9FP{wG3@vRv%CtA5giuFBx!-QHZez9nv6x& z(JGz1XtXzbIT}gXiay`Ch_NJAO(6A~k^OkHe5aZ~uyl2|4C6Wwp?!tS+ zs8~i?oRnJ;%7v=eb7;J1qdzCG+ahB_ffpc^%qjtGz;^hE$w8J&M*7!nVL*Jqi~)7u zSW8J_1Dns^s-O^EDaPLcn3mZ4+C9Rk{ixYUU!|$HPNUPot>zwI3a$AJ)T>@hcxb=Lx|Zd;c_J@fvZ+a)jZt?nsMe z*}JB%5rIK$o9k8*_{t>9qPCvO54Nx$=#x$Shc!@}!4|2*P-k6533?)ROJ2u+xy*|f zFJ8Rp1dF$*uPoq~G5A~f+chCaUP^df4t#e7BTEZeF_^^kLtD96YWsUHAbBdAeI%7q z>EPF9#IjFC<>NjGvmB2@wPgD{Bu2QzH63_+>L8L*&@SG*R*)U&!sI;`V`*93H^A?W z^FmRKZbo3V3GvNRW0^E9VZ%^gNLtJgL@i#Emg2UzM_SZaqp#y9HSKuRL)Vd}-W@@H zY^u(@ZjtKRCtT#t5}>%wfobC!DBJ%I{BYG?+=Aa2FB@+;NC>f^4dZlMIyFZ~ zL=;2bjF8NektK7B6@+#yKuVNS4n|t`kHBQ2TOVT)O2L#cNM%SA7qd|KC>V!ymI=#m_=nUBm6 zDKZ#Qk+(}yqy_65K~C=L_}UZWkR=J}y$GNrnx~Neiey2#9dr0hu;pbfF9a4&o)4Rc zU%Z&XJ6VSCU)qdbXuIP`i%$7L#-fg!_(yS#P89CRdd01ac_Fq^vMgg~t~;a|6~Ufc z(0VSc1X(Lw>LpF0fVFDVzvxHbY*TD&6#Bn3Mp_DdG-kV5y(*Pb_bggvor6m!m_}jV z?RBK3k+}bxf*xsso04NO7BAsR zc#NNKnzUroAjc#fm0+BBxBbJIEg75!X~A}}K{iJT5T z#$r`5s@Mv?>hfDtNk`v*4X>ZUV`jWLygl+xysiIY0l+!PN!jjvH%61R?CU)``PV-0 z*Z{Tr)lp$^qk}h8j{@Dd|5XlSn!u0R|a5(r4ukEkVYD(g;J8+|&M9L&Pj& zL6`f324;-qQ5aEYRTWl{mQbc%(t^cBNDD07B`x{5Vh$A`TI?|s;lCnY$Je5qN;iWo zl(c|&hL+fj-_&G~K~DCQhmE)wcj0Ms@8j^c&x>Eg!}_)0Ei~Y;n;3nh<+u-4Q0F5p zJefpJNuO^_GcwWwI7a3_VVDJ$%%yXIoE~tRVHjmZ;$gxeJEK}n+7i<@B2=W1%`i@~ zhQOF>)(!DA{tf^DAOJ~3K~%F~F)@#?8Dp_WReQWWY(zFtjK95fCe9@-GLAztI;17g z6*Ma^NrnO39#&PO;fv~T0B4A8p-Rd(Fq))=&pvyfE{@z|3TD9;M~8|lgDpU#rGx97 zk@_QHgb%)JGJEmj#fyGW-cs~VssL$$MyeE5vlq7FhR!=K`+rF3`m>ToKto>^X2X%F zOZ-ACWN*{L>){%zRuSGc-4r%yX?tTY*P+)4dko$=)5qIBUxo*G z5?@@04{t%>|=4rA%dyNsD1>u)7V~RLttQw8QO5JOG(z5?l3;HMHPJwtvW-XLzCPBrjDXt5V zRS;u#`QLIIvjgm6@D__soa$INZ{ zN}$SCseLz>VY-wa3e+Gioh23XhvT`=c5npIkKss5M0k?)yg^zRp)W~~dA>tTz5}C# zXOgl>LQK^tRImjDC4)mpQ@;`H^XURF7|CP5;lpLam-z!Bsf3c3TUc>K1Ljz_P(&*rL)Y=bM}S2Xd0jrWNf?cIN3dm}+*XjoVe%CVNlQx& zCCGY39+8&aMlLK9_*6@h6HlSHkWBvoF`*>hP8NFfAkil-4m zdvsV``z2|q7x_<4S|}-S{F#V5c&8GB_5}P#LcS!!vJ~B7juB}d8m1k@$7Q7vx$r+m z*my?ahBYiZTDs(lP$Q+U57Xx3u{iaoCqEi&dDdh-IG96`7Cg1(#E7tx)?&z|#hgH~ z_9JAYFlKR=ec-7v!6zO+qTvTX?8J2{lime8xt8Yd5EF$lnXT9O;aqLw=m`zd5+bv| zhq<-3-AKP+LA^K$=XQ>tAHkOrv&#qa&p*Ci{3S+OsF|}F40UG|!A>S>IcY;E`G!U3C1Rvg53(+ zt&&*Jb4d&9cD2e-vLY=<28&`9=KwMLCnhasUOZk~1PWb(Jxi;BU&qI~_Vrx)gmP9B zMk8;#%9D6k@t?(g)b49K)!9wdlE1K_dPKdX|3$@r`dbFn$(r=dEeY&K2eT;5Aac8$ zGJMotu|1hcslx)9=G`k{k`_@*tYq;P{9@cF<_9Hx5DPD}%Hn5aYbNVudBj;07*QLV zvZzcjO-*5iSvYCQUd?_AiZ=A5@60=1y5Q(`#|5NC4BilF!7BBV7W6Y~IqGL--A@cP zmsI#)iP;j{JH&8Pz#U>}s&WeVsZfZvkY6rw8^**i|K%B?18*~|#BaCe!rDDk)Ys6? zA^djd9Kg0uOokNf=tD|^h2Rb2&TF~w*5k$g1$%#ACL`OG)!9H_h?N`X!kXW zPyq_r<&Qt<+i@mo5t><~1ipb-TmLfKb z0PsK$zsW)^(n69;GGo_*$=23|MOqN|0_ysK8F94`xsK89o`{TJ^PQfirWs2hMToRa z!R%F0Xa{{LCB4#Sb|8RYlNKz_CM~v#5z-PA6(=nwhr*<#&_>je7L&AiI(z&b!p|c9~`zfJgV+SrjVE5jN3v3u-$ty$L6}9xA2LtC!Ym2ZM}-;cMQW+nfJ`&Y!gPoCKUd9s z;D+%Hna$NJBSIuu^pTh2KZZ3T{m=2vWc%&;9yvp)7FLm#@$o%t-*i1AlqDpfvFm9r z(qhOJ!;ee^^c^k1XJDk|^9zs`sIM8UASnT9*%FI^1isedzC|PF1-(+8wnMBquj3Q< zPLh8P1Y6V*BCX69t)IV5HpXlB1LjL7-kvZa>fh@wUyI-B=L4(Y{8s(b)=> z8DK0VF&r}@k(4D#OR{bmqQn(STBMglu?RH?$merWdZC`8K=KomVuzSXnGE^z{x+gf zlStCi)g@qaN-t6^Dv#wrV^K*?A}yB$Tb%Gp*8@TMyVAS7#thUa$q+FbfruWw0gnSWZof^=upEK{(mV zo^ChD?li~GuKH{1zIbsy{A;u8oW9q>&WBX>(q7(=) zy}*q_8V?WZOlBkL^sTBIe3UQ~W}8jt?@n9(88_{3wPUDhlm0?w^R8jO?#$s}L49=x;XEOC6i|fhwE~ zbPn{s_JbK!!))1XRd>W$T*`DS6DXnUI-k>fxH|1QCj{jE}uo&RfRzK%tE+rt^LO*Uj&e z7H-R09eVHdpcC>R*fAmQWZJVqtig%2Y+8_MpkY_`l9r+z3T1EMT(etE03t2YS}k(g zkrjo{vY=oK3^yP16PCbWGPi`fLMvL*?8H_A~gFSO{zgOo)*e>Hk=m`j=E+inTc0xOtp zY3?#)kQUA&vaXt{BfUae+F&dsqtsMpf=*#m9jK87RGl_Q3!|H{WcN{Z$TVQIYZ%Jj zw?ZBupASr|5q;6c>cn^oFqHwMrS(R~k3B(JgKB2Ux0@+0K5{TJU#ohzHY0E%j};vzV)ju3k{3kbd3|tRq#9e#}N7& z>K|&D7fqbr8=g5$4QTZTEtccFW9|oKq@`v&S{rU1SAN?=)grP8I|3lXWNOvT&QFqw za0PuvPtlcuVTK}Ygso;qz()1V?EE6?(O=4bq2+E;kTpLQW-+Q0@#seoR;1B@qhb+e zNlOE!E4nn(?C`=Pe5^SlP#G5gq2fH!BD)`F*)%cIvhlG?LbW0}v)bftuii zuwcKn+M__ZM1uK(3Jk*(+ZvePWro<=epfwS+=DOfCC{{>AE?s(@NL)YQ1$o|cNl5e z3?yP*3#VO_v>dr)K5gIVBTpq8DJk#Fqd{6gbE^+QN=GV9YwnoH(BdMwc57-^p<#0$ z$+Zs0RiGg8zJA=zDVqtUj^tmj2cE-N`e)mFNz0(Tu(5jFa|pZ20jgVOg)+1 zfT^(~0wniO1y~+z3F7KS?u*U27dPN;Yqi5q@Z!ZV?(XNyz=?dJNcr}i;<*tRugg$jYYFbn;`OS8%;lC)?= zjK{3*@?D=vMWCLlF4pkuIr#Vxx?KXS z4F@#*&SYdny$9!vq%w7TaSQ&zN8!4FF4N+t@X%%(R_melxeLB2`9&bSrO3TXoNR1W zZoh~x7hiDRG5D>xhuj-RNQDOAQj+Q{6Xp(iwBuO@M7)2Drl>tZ#Yez25;0%Tb27{+@ zk5C-KcNq=8W*Zrg^P$=ri2M95F8m+GGp*iBwfd=E@vW8Fd5b|>cGv7-&bCO4yarAx z0{a-$hBS|~c*Uh8NeeN=O9mp8{*uug!iw5srt%_a?{ia#L34;GVYMh(M2uu=ZGap& z%yL?%A7Ly;woa@eEn$y!v=GbwR?h!OIr^=4+AWQ)<&&1KTw4iFErkc zeG~p^g4fyWy0t1F-eQp!u7wdHv2q+|p%@?)BzuKftKtI%rRrvEs%S@yt zk#(JHGn1xwi?q~>Fw&B%4G|+PFh;|&sQ3BH@f}K^v=Be=q5M`{*~OYA2S^JQosC48 zK-ItOn%~S=j2ZBnFbgPXL9iuc`!-+(4WgDZU>z}i_MywiE7AvcTuoX?ng(f+B&4OP z{E1FI*1njb*IJJ3jZaMCOI4=qZmORP-`YeI^ZvJ1`5yeJS?{cSFP7oY`PxZ2oRa%`xTi@xi@ID&%1N9acHGXw`figJ zS~$s7c-cjW;{OsZ;rbRC7fQ)JIt<(T^5fQCrBD%O)XeEnHcptO@Sk>ZH8CSC(mf*cN?Twb zE!itgc4wfB$2s^B(U`O(Uc_Dzt2u;ZnMg(yp^j1@BDuB8&LAybn_J@Gq{dU6WFXzQoL*b;5|zlcvr3S%&;EPMr+GDn0#1yu^mp&~7X zXSc~0y`&BIqD2z`zcBe#^HyV#8%1`Q<a?4(o!?` zkQRL(+mT*;!B20Q-9?g?YTDO)wR^56Ep3AulNLGM&|l#7^W#|%(!%?_U#PC8&_R8q z%F1<+5!sR%q*Sd_)rU85$?)q@JVo~am%*0rG(>cO>kci};mg(k8TwqK)rp zr<=9hc#BV34v1mN4C%shNqd|)ixk7F~=&HiS}7AB<~ zW{HVo_pDUN(q`8gGiklhVi(0yvLlb#s458@dF+yweKMhQ2z;l7i_o8H5k-0ozDl4T zkv99nlBqP6(juG$vt zRB^{ugZd|$^e+WTi?XTOq~*v0oS4VnF7;UzbXYNABZO`62O!CdBrV9r2CPI@Y?g(T z+L3OzW=u2cu+R{1dU+Jg6fLbfy8KiH&2?uM*YTh4w_W~$$j0UP{$A0I)5h|P zQ}NdoY1!>!zJl`)o0NopVDbRI1?iHOv>8+KYi}|PbJ#7Iu?WG(Z}d_}7Bx!6`VLGe zgz_=xvQ%28aw0{aYi@2wfvoQ3B-z@+>8n1oK>=q?rTylVg@R6>>J$uG#~>}fCXGVz z3oSYVfwDu!VijeP79F6#q(x}fA}x+ibv6*BMff8`H6Z=S8@c>s2gfFR?b9YG#=H32 z_|!Qh|C58-(qu~!8IhtB#s|rL7SKOvd!3AtsoNvqH{tw_@$**iO%)t|a=$Pa+~28M z4zo#&iTZ1j79m#~9wuoqHQcOOL0YOFGG@VqWwc#lf2BW{BuI;ey^h4DvUCS_k+PMf z${3~oYugQN(n5tb*o&`^HrQkaD#f1$^4^@<$R6sN&u1*jCoK)Z-s7`Liz(Eh9NQh6 zw3H(&qdv8ZTBHSO=#UnbPw|*iTg4(R$A?&`pMxobybm62kmC)F2^D7b$dbCqnTmEW1&`37tltEo5{EsI>`fpx*6~dj0 zJ=(whnhYwCA2s8?-W@hYl(cYPAWK*y5L~+~{%uI!xzJt{m>pnW)}!fbw%#GkVj7mH zC}|N=JzWkKr}H+PxJf>^268N!i*qNQ)uhF_*T@>YAsNh2X$Sd_k`~rk+N4GNLi0e~ zNXo7x(woBX&k`TBa zo_SilfOqxw9O7~vL40tkrpZqX{3t$>~4C(T2V};SK}Je z60JMsd#pk3;c6PMswbN zF^-awJO|k(E!BbgS$j);JEcWhXt1U5^*XbJR1V)y4!2A2NDgCP*ng>&t41T(MFnUZ zsO(WAt3=0Fs_x@Nos5*Lh#rctm9O*;+%S$8GnVAr^8p!IbXt$u+s~$L(^{XEB>8wv zGBuVXq@{KwuCqg0^w zn?%u!A}@5}V`a5n+d_{6^F!w5*(wnIi(>_8N%FlB-wwjGp8xJ8EoP);?8}llCH791 zPg)55D906`940Nt6HrXlA}vH`K_O(Jy0TzYL(-z@juMr`fnd$2XYx(jBMP|c6grA8 zusFUCt~23DSZFpqQ`FrEKktWijNgOlK6o-IYX*{* z!c%F2WYM7`nO?l*A;}o{lW{^+;4b~{g>4$ONlQuzd?9CQvdTb_E^_kSGv)d)OPVGv zQfAC~YoxN$f8Gsq-=tO5$XVP8kd~s&YxCoh+eH~@f}};{66Xzfkrsn!NDmDnE%E>{ z9g&4iM84J{AGgY0y*~^&@s=^lQD`rgPOwEa;(mF2*sL3Xr(tS1$BPKzHS15r1N+{K zCjP;v_8nEeKkW9G`I4%qJmw<)91B!v90h}l&8cXkMbHlDY0U+EL7a1&O)euXzGm!X zBjMP!11C~XZJJS2M^y`Jq9ij*rq-+XX$MGBOSf;vx-d&oza)nUG@?!tA}vUAo3!`} zNh=)~vi+oG8_xE~NGXYpUi!6sGN0f$Nl6`~g%2C<9FU}i%RBC9veYJ-angb{5V0s* zK%}?K?GOW9^n8qU>K7;DUpY+dDWYCn1Z{xbhO0)((??_!EZ*WrQ8v;dZF69}aniE? zs|<$S>dE{v7gDGQkxZ=TxgeW_n;YueFkFYcSv{@CTT%w!XB3;&L!>3^7G%v_(**G+ zHVXUz03ZNKL_t(9PoQTpmL% z{f))|X%R;r$6mzuUZR&RkJ9K!ixn2pnK5ZWqdPgAH}Hu`*?6l+OC+Gwy7%;j@tLM- zSQMO>z8sxZSlH}*5Kc6u^P1XOXqza584cWIS2VP>-8nxnFar4US`K%rzf{uk)kY;z zMOuhUkbi%guoPgq09&4#L3v+%tBKIw>~)Zq&ESz%OsRF)#M)n$Ow?G}f;_TEa8uF_ zhD0W?2GJ+gQtFL%RFUte*o|44k;X!K5NQbj`tuu;t1%H5c|qi2VF^nga#Ow64((;2 z$leXhK4M#>B}vjEPcYo%d!$8wpfd1Ii>d+sK8#2vNsIPQ7+nN5Y!MC{dRbr_^omBw z-n$`Pb|D-;%T#5L?c62E%QHT>q5CD5I!m%#=q-6Wn{%{Gcu#X;DPslNg0&lB^>Q zh7^_twpN3&Bw6v#Kb6xZ|Bxu-3H|JV3wXifXfPJ918HP!uQJlo*0G3xFioZk*`!6> z5z~c7T9lbw!lY&Mh|nuVja4!$kYrrFCTZEez37Hocr8$U)yw?kW3=9bGq#5%aDZ4z zI-WyRf<4f#Rn002;VGNJ7R}z4&lutE4sUc=ap?)ad{+mJ;&jH6nBN+i z*9MH2Mk1so%M^mN02Oogcq}N5jgp4#W|5ZtLMLgF(pak!pFuWru`4ENQ6rBqMvJs4 zXNeIz(m#CCB62uJID8J>F3#zLk4w9pYiE?7_hdgBv$4B>0mDsndfP7T@N?DtntrtI zXY_*I0sn>IwBv~;?Lv{+exTM3$X6F*rLsyJ=x*o-7e-NCsiFXV%OVt z!KNUyfcVEYnl^`UW1BIm4$>lial%5wFX2w`#ml#;`eMdXZ^1{4A#7)sTmA;QQR%$j z)<5^6IBAj6RcXo$c8H56Ep&(17NGqI0Ha7!c1T(>yPz|Ul9mFqxTHnIj+nB}v%}lN zVA>C9u^cB*IRC z8|gV&;i5dYGX%*|J_U3+alaB5F_whw`I|@!%_4pM(h)F5S_~l4Ld6i$;^$2yFWG*H z+7`Wtj~NK}CFq6+S^N&vKK~1~uH}n11i+|S-tPgJq{XPp_+TduIx}M!bLF{{&@EG3 z=&=3eg-0--)VtCp`^Bl3F>0kjqB%iYAFw~Bbk3B*aB~oXGNR+XXaq9^DU<<2{V?48rr3e zNQAUn3csgjwv_i790qksHdpH;Ejkq^EXRqs-#8F*b0I&2u_Ww4?_(^x z5a%}#Q`0)6Wq-1J4?^yLS*X$5JkkQa`g`AHq{WCS$O~Gadbs)!jH1+w9(hcs9>Ob} z>hh%iK}l`vGmT3iT9X z2xKd%bdeUT9NuG^1y^c7_F-A1#S9u)q-Dz^&HE5(*)H&C$xc1`NsC{mj8_75yM0(@J@_r=pvEL8Et%h}t;0x*^G=I0;z63kW&%|-7EDrZ8UfNG^r8odX~%|9 zKqf7Q$d1y-(6bB6*1%{ht||H!8}OV$8&boZ`Vn}Ha;GaYT)^p?eMji#Tkx13eH|WH zR&aC0A7|X>n9? zNlRt=RutAHEi4V6G8)W*2#JvvU9w49q;mwmsN>Po25I3kl<(!pqCg^Wv7RZrz=(;_ zF@Q7;7(X&TXf#ZQHy}$sEN}hwfz19M_ z1cNwfG^focyRQh~g?>z0FgyB~PJ*;BV=x`-Pi|~3r@mh+T+v>_j1*-j zHD~%V6l>(AqdO?;FuLn@4PDv#5=cKCW{GaCsP?RJ&{UhW@RXHi@T0r2nO4NVR4qYT zc)}KGfo|am(n33`BrOV>w7^|w^ff+E^qvOD-zw84Ew*XgCM|{h7lS-tz|%%CGxpY5 z0l#5Sglln~Q~ZL4{nlsqt$M#$jR(zRftg{BOnx)|D4l=~RfDw9%@5GFDU{t90URD& zA$Rot3Tj*s`k{2wTEk~Vj#O4AS^{G!%d|R(d6MEq9c<}i| z_+Wg}QWB|YbNnW|ScDhwB|5q(h= z8pZq?L->->_K;?;=OD{PycBK;9oNN=EbfrK4%=NFY%!L5d1Yq?n-C(OaUQcR$=fg{ zwGztNy=Qk!^76veo&KiUxatrytMkixQ+8zcZ#@2;}51_@H zYbR)u7AFFL@5V?A$RIDqNK2u=(m`4>%!OqoI9ZsSQAUVZA`of8qy^-)G}QuhQc7By z9cAPIu{1bo6tBU$#4N%U=J++m;DW!R(1(~N0*};c?lY}tqQfw`unK2AL}`>>kKsbE z&~{z3FRkW8)&D+xVE-NHdm--$^*b%J5D;0})8uU2 zGAhFKj(zR~d7z2k)9xDZj=^524cz|br^q?cJEZc#mXt+^M8rE1*=fgY za4|bYNelb;NSSy6yTQ_kw9wyta^s+6HuA=b#f*AJO-X$_!~(LVvpc5T00AYk?a!j2>j>w%o)WSlYGbn&`nJHHrsT;eje$h`*GuowJ!Vlq-Ohnvo0o zBU`(uaHM6=xZmOb77=o>^KuJ^i88@m$1StfO4ed8xM(E0O8hiE#!po?YeXis4xqY86Yk7XPX`C7h3eT zI_5_qass490UAEoZDNuZVEkp>9t02;nYgW1wd@p3zqkcg` zx`#!Q&)=G~v>a042s8_|7%5rRFCuawds#$X4q*^uC7d`8lxeY=v5-HJOFp7nw)HAU z`5mMML>S$g1AnutafnUJ>5vamB^TWEfo0b%)U}qTx{PhjM+T!oG@QiYq)^S4|-(*J{WrMUNX$Bmd zzGNZQLdo=pkc4tNwcCpNtY;>5@t?HRpB5M=606wDQtD!r@CYDJ=o1-B^6aG!(gG9k ze(!c4l7Si~qVK{TP?5c1>F9e!B%{N0jI_9{Nj9M1Q`3R2ZAkw zW4+8|wq;6g7t#V?{hECx!m5oo{+YF3*egz6hHi&)v<7nAhX)Utemt|6KC{C=Q>#g^ z@3$a7tE3h=v42?y5)L!sdWBmgGfP`oM#+>w-qPy6Le&-khx#BeNL0%W46K}w?K3U& zvq50sbNmfpGCN=cjW8CkAVUZ%q zcp_U5l9qZCH1=T}2nNOf+>ND3yO3ZDFDE5lU!*tySNfyK(DM;Y5)>35Fvy|)eXwnQ z?`DFvZaj>le}PL4s8%=FM2ftEzbgTg^^ulb(~@hfqbZ9P$~AY82nr_2h7)P2f3>%V zwUj)FEGI3;i$(Sm-St2AnCc10kF>z&X+Jt3LEUqZ-KS*WV8Dy!1n?|+)S1gNf|+8T zaRRbJUxr2)k6p(P(RIvh!BV3jqge+JbqSQdn`mF)CYxfbDxFRXcdJ{`zY@-* ze;|IK3Tv>Gp3SxDpMP7uj-P~yqBfp1cQDcWMzF<7&aWPn!?4=g(|MyLPF=$7%o@hN zX6U!=OR1%`VlVqmYIgRx;O;VCI{IzU&ewJ6qAUA_X~vSlwLN9@ZI;hJm1KxmC8ZFC z2_V_3Pg@(h?pQpJcQLgt}oP$*t>otnfB@oi1Vwuqh7NqTdRAXqich zmF3vws=y1C)i!ylozrT7V5Q>I{hBe=W0Q5#6)YAx8JndWlpC?b9Ia9z|NrEbArRmE z76j#UjgynC64LuFY00(QD$?>1C`k)YPpR8YS^&yE;JE?`^j%1th*8fR8Ww5cL__I| zkx2@3fOA1&LL9Wau3PB_N+MaFYF5s)pZ%a$JQZu{S|B=z2U=05tMuG2P9l7duD5Br zuHf%!Y!eTx0#^ydTMh%AyY9nt#)7hD!U7_X%qK1OPn}m@ zNG#FuxhPEsbAtEOg~EI-?$17?h*h`G6~Ps7NjELl<<2PkUDuj<6 zqfFb{f_Aw!dr2f)%&7z?<$im_+`E@{c~LSj9TUT1RR=N*#^ z@MZ4+X*pPdY{C)JqQxvAEyj0F)bXcB_N`!*r9}ln7NqP@umx_D!}0?vbmZ+9x>kT7 zpnc_@xxO!)bk~cz=gTc#p{KpvQsAFwp=~L3r0)|oikn0=YOcohI35w*{Vpm2(OHH0 zW^cUTvV$2R)~V&1rD&tvbNd&a^0>u*1In@6O<1$2gNxf^_~vFI^>((Blp$A3bIVP{ zURgk3ctXoTws1ff^G5{onND++WVT{NH=AoKqwqLEw>>C#MVk(PqY zgBWSq4E0{pQa~+bvfyi8tw@WL)rK8uL8PS)&^GTCb%dqRWH|wDNB{AQ3#3_xfzn8p zN0<=+x019OVVz9vsqOzn{2OgG*L#1!B5z~3l2^3OGfC_`Hr^t2Dk(c|j?KvF|9Ze? zsg#m(_>)b@q&_L~EN7t&-y>?LvY#oa>Is~f1MtwcNf3LNHI zc)&Dta9yr`UU9c!5r?%OBz){3Ioz7>GY>8C0j?AB6MlqTy6n-_Y7La<^|>yO`Z(2c1&Qz;tzz zXo$f&KF~J3K&9R{KR zc@}N`Fe7KPsj7*vC9s1q+L3x(Fw63udUUdJ(-BLlm%Z#wiR$%14ihXV@?h+55k-w+ zX%EhUr{b zN^UQ-$e|;WY16m>6aUlCX($$N{j*8SCzm8G#$<#DUM6>2JH(VCPC+F9x_9xFzhnwS zYMK6#sI-{kiY)fjR}AX@EDj!NlV&3xF%=iyt?a)3U|5rViuTu6T zb^r8QOwT@!SW*x&7E}1&`S?^qfyuM@SE#oWpk3f$D>C=IXQ{SF60@j)gPm-J8DcNg zWYOkC;g>rnN!QSkrd`gV!wKR=Q)x((^C*f;7jPKI?luA}i5zg;l#Uro!znK>${!t! z#ZgeD%r&(jEk&63h%lflC6$A;Sjq7IG)P*ca1G;Xop&HU)ho>=N8Kt?syS@`BnSeW~5N#*|+mRb_cJ1+oDB3OB&;;hbNZ#=^+PifHN*{0fEW zRp$!zJIe^zLo?#9fKusiyXx$HQ1?jWg}$S2g>BHqvKdx|{tgsP?pX1eT5fh8fmh`o zkOIeIFG)qTkZ>w>T5r{K+2uI}Rqc3oh5X$9=-b?7l{uGs0b_B(Su{yC-s8sLo>Gq+ z!evawFlphcSEV#7Fa}2C+%S@|pR|0gWfpFg$r#IMMOtLWc06pmwurP8(el_6krH|e zDFa5Oz7#r0TJY@$n7J|f92OAHa`IBVUVK|(V0!AnvWVVlJfPElJAQ>iXv`_Nuxq`& z^aOZM_pg!=qwO;{8}vdNI_*o_XoZc-tp?ZP*3aT5hrp_y?kQ6%jJ+3 z6vlv6F-S|McXbN-%OWl6%T-DNI|@268Y1@tdB79 z*J8fVuWbAuM|>$>k7xFWXKJ+sf70@nh^;9g70d|ig^#Jfo9u(E)xOstiqqtVmqLCG zvzJ{GlPo;L30#dyeLSKnjvH_A)@6)EmsOdA6=p#~B;RmZLHdle+JTFa(u{H-(h>`d zc9Rxfj!Rk+BrV3HFPIW0DpikR~$94fQ$TGwPcs&YC1FXV#zq z3+e%!Jn4nSSH&iY=UI85ThxiTpcZZs3ta#m!@O0*oXJZauwg6fw(j&*{rDbbmz9ck zG>m|Kzh(b6iCLtv41fCO)<4I3e6F4S`0m95x(IbvX+9yKP>DvOv)BuCkrv~;W36X5X~BW0&!5MZ z)Z?kx{#$v6#6~1LB&3D1GT1lvdDj?u!e+Kuq2#2z1^nZ~yoL{KVOd}kUmk3^OWIc% zGy*-kPd6HzNEYCDi!ueT#9eA2m8Qy3pcEQJ5{aj z+=IJsfG{(Lt{3u0tnn3V0Gqd>fBw#M zka9TIG{6l&i4R&wi}fq&JQ%2pH4s}x9hjIlmo~i;wthZebfje0aywmA=-LO1v?^r0 zUxo(|o(Ih&J07Fbwf!Ml?XoVou@EC|g{r{gEiJ)1dcfD}B8>~6gV~T=c(Z~k0mxBE z#05($o45OT>n7T;b~=;2B-DUIPCen%)INDE_h zX0Sz&mOZH*C!)FKO?>L{z$zGfSvZi!Ok(Gqn_RxzFF44i)=FHG_k7rXhVR1TdaOBN zy*L%??6{wWTHi)93J~5>O0^wa@mWe84R092`}6GI3_+#u+M1fpP?w{K#?4dMi;!XK ztZ2;R(9sq!sgu8-t_%fOP(;T9)qcl}a#=iNEGeZS(sI1}PKk&# z(50OnA}vIeLt3Px@E|Rjr-G!#wgEJ0Nmf$l05Nu_gS0?KY)hio9x&X$(H37^?xjzm zNB2R+j3OS;*?Mq6=W>f!*j&?=*R7a+5HlW`S@bu%smj79xNuy1qHda=|M<^?x)k4f zQ`CjZ;9o@;uNbnXBAM9d=nFAeOo0b=Nt;2_Hwn0kQtvDyF6-EfD#%yfD)NG9Z=|-p zL?sQ>WDiS(q(e0(7z?9Y%tHx%YhMhor*)q!?A2t``Taor*xa^^ zdiE&RDD>*-qPGq1H=mvk;zFH8s^sg zqT~Foy)y&mPz~{n^x>oh9kOAv9Z3ej2jLA(v=;JJ6ypRl%cE#_uQAf1{15G@5}OA=E>>J)s5*Hc1Axh?-eH? z|3(ohrDu2|zX&Uu3s`GI0)80SA3G;w!_Hgm(>NXWaWETqWy|RA7|I@b*?y$MiHr>} zMO{)oO{wfDXj6FX<+#DaFCcxeCVPHtJLN)DBV3Uat+R2oZRZJyZ0Qh9No~%;ENmynwH3=FOUCR1NsD-)g~){!I&`&q zAPxD_%UpW9XBG5p8C>Tpn4G;LWt9RQ|16W*OcWUNWY%wCX|N?W9|d}4hqN#ZX%qAI zq7#taBJLCir{9r6$7^xRs%kD5rx)rPI##CHLPwH3i#nVc%8S*sw>{2kzqVW_-ooX$ zjhdaJ+zn&9VCe76scat7TrIP1@>3bZPI;8Jrc7$&@$gF`cjAgTSu!&=Knc$pV-b{; zTE}89F3|9%cgyjzpT<}cHz5MAvLr!T_6~|Sh9%qu#RnEkiUc=mUiAvT;w%n*(g`D^ zMYE#)Urbuk0BJeMpDs|gSJPB2TVWvG;OJ3~BA(nao{opw(r4p_ zYA^1k>uP}GEjR{(ORdQ;b;-Lqlygdjd?qD;jf7Nn_97;zORDjgF7`rG=K6{|GWM-AQxHu*cMp@aV_sj0KnK-r0_A7B{(d+$JruIOhxWFmDHG@fb_`3>`*V zvZsu`Y>MqAEl0%4DzjMQoeSVPggTYZhcCMwy$BrwqrywFlfkx>fZVq_?KgHa=YX~tSDmP^tIM*rMyKbnT_k7 zKAv(rbqQ()N|n?lkvNW`E=f+x)l}gm2C<-Y8E^_phkjB^N zZ`ySRj1ydn_1iKlNx`;1-Yq84zPESclnZ+q-Kk$m8M-4))@%?D5oW;#F)S!TTH?Nm zl1eTi5^Cs2*^!JLB}iHt1AH}U0lYRmXDVvyrM(PuT0DEwik&1D260d{%57eF1PrZi zex|2u^>rs852`!YVxzu>`9gb=obN}tS=2&IXa(%6g%Qix`z^Fk`KM+(w%ZBm-lz`^ zx$LP)88o+&)DFDVznIMkjXfKM{>5Sf`S>r+$j+^0s&^Lr)Q&HZiOt;C#Zn02Vx&5L%ou9c$Y%SbTAI9ohfO&eNh@M{2DCR3nn{(0gAdrc@xQK!D zLymbdoBI1nK^Y4%sLOVsAuyem zHO;0n!KVBefd-pP$um`2o%4#ZZuc;!^c+YNE5t6K;iU#5P0~WY73dYIX!j)K6rajk2%Mo-w9K zO^21o_xBi;$z?BU!-2@T-x!L2wlew8^!xiP!g#GR zdA@}RDne*CSNUWr$6pO4R6(m5OQLVH*o-Afk^rJ2fV3E6L5VDqvFtKQYV|oqAdu$e zq{aMP48}oPkX9yXaUCrY(h@yA47M%ma^MnduP|xpTi^o&5JbS2$Xz63)}V>a7Iv0c z-WBb!*1t5^ZXr)jhZK#GO=6d={eMdaw>Z0`U#OVE`9tcM@by zUW0~i!T#N)`N}bqdD|8B-z55$Ey=IL2wfqG2N{c9+=sD<#Hh5vFpDk^tD#BD@!@wf zch;9`-pnhOQYmO8wMh#Q?vfUmEhno%%tvjf*!0uMgQNwOHRSA_9Dz%1CUW87!Irht zb6A?!V#6{5S=LO`UNsjRPdAwIXO#BX@RZd1*KObDU}2YdM(;Y^b@gW-OPu$Awj?&C zu!_w|MO}#WgSw=|4mEaUA?mW|TYGiS%@#8#mG`D<$rM%?ppehJr0C5G!bDuw^ET zE9iN~-}K`1yec7hhDjItwph%R)Ghn5c0^RM{%3JI9@x95RElLrsqSD?ZEZiI{!+Ci z+o6w?q~%%I`yn`I{xE^MS3_9_dH=s%ZkxKuzzaPhnO0d;2N4)zLL-w-$dooyd!n=X z)c2rC*0klF$iuZVVt&$g4}LmEoU5duRhSZ{EBw#Qu291>Z}&4!Aau*>O?8?akrtyX zIboItX-TAEmXel~l6X^x>R7;ELaX|1PEfU+(to&W#w509^k6(LtCN+_+*8w;y)iQM zyCN-`Y5Afrf*vBl)K}x2j8=?b=AXMTYN0& z|AS4{TG+>=&J}tNh6}wxTVsF1Q?R|?!id8FWY)aVhZ?l0CfGqv>NhCE)FmCZR6Foe z2$!J(QiH%8S&>Po9%f0^Dz#Ig@_cokjZFTS_nByOGc1!nHRnt)@q1`U+KdI6x8g&J zK4Zyy4p4-m8>&N#9twRBWqVLUM~IRnV@YTiUFTc)+`qA$wCH)3`AH0|^hH&ZXkUqL zG_;0$5&y)>UA(wdaYMnD723pPV8_+!Qf9LZ;IWD!cnjBQJ@eYUmn_b0SJK1rR2smO ztay~r0DKr0O~Wfk_v%)v@8y5I9Ra@+tP$S`lTu-?f~0grN*wBv%Euu~Y>j^QLdXhb zFNukxinTZlC|qClD2UD@ji~}|Ux+`1Fvst(%3bLvX@U$h_7^!1{GP^WE?^O-OBu) zE>cO0>9P#Zm=C)7$p=9BwkJW-6Ypv0I+HUFeDG$d$A=-&CRfsqSD?ZEX)xJ8yx}kUsTF^?UC7 zUbHv)Q;sM^QkPUdr=JcCDjIQoy^ zrh{w*!fdVqJEX5f(q&Zt$fcAa#v*Bk&sdV^zT|R|mkS9%6ev|lP{$l6);o*3!gY(1 z7G|3?Neek@S*drB78Pl+)oPe*w4sMcOHGISe8kA>Jw2?Cw0Nl5mrpk523w}Fw!YzD zOQ*CIc(ODX!-Jwb?=0NX9=nXsDaHoxReh}6N3%k)^?fNiH(rgWdJ%Tic*{;Za&CN7 zI%!IxDGT{mTKaA3lG10-OLNZ{yT{(JXSNIb0*jKSA5p^^D0`Bwp+Kye&tGMUP2Vd+ zye9zSU!z(b8E5O&7&GAZ;!#HDVAH(LDSgIC_+u<7#8{{ZZh;3FOG^D=mKo9lE4v+b z{7H3WS59(UtNnU`eW?y_)sAxDb8Ris!Y8N#-<%7O7K38h*{PnN>W2IAScebf0(yqZ zGCFVw6IN++z|EHCXPKFIR?Jx=b?MK8a`aE}Ub!O+#>(fou88TJk1!b@pu&@}&^H0s znlVU!{CT);9GUooO-HDU)>GfPh&B!<~b!~sgg z>LgerU}?cyS>3(@!me5w4+$b#-G2HqjZ977!v3MDpqD?eG9$*q^C6QQ^|F$Z=07QA z$~T(apdiYkxek8+-Vj^EEU86W?B?1dEp5_LSeALxV$2IJX(1&}>~$RYPRsIO%jjHS zmfj)o4pV9QnK@Gijmk3RY*u)tzd1?o&n3Yx19y4iDmm~jY5~G&f_8I^&NxWyx2@Dak2Yzx*;}IcCEWF3c^3wVQ zW@rMZ87>+G%ch(&-Lhe@Rxh-lfrQM|iPIGg#8~$9tuTw`KZ$dL(B3d48Q9{5j+k~J zGOKYgL|PIiErtsG&}TqeoZmV~;8bJt>2-ra&CHV|i_y(`lWRCzO9kt0Ml5ikf<) zvCJsdM9a_2ik1u@>W^Ng>wi8hh-y|hLoSpTbWoR6?LijX+2w9~#u76^8V$k;3^i-E z-TVXW#VZR_5&*jj)ANpDYhQ*lt%5-T4WDHzw30R1rsCH-;s; z#zw*{AK~!ZEIbuklx#+qw3lPci9co3CN025Wu%2X4|n5>7im#ND`luzXo2G|ksR~w( zzW&zq$%I9$M6bvP(M|%j{`RC_8EjlQ3k5{o$3>q9+FblRv5lmH^ZO@!=atXeDms4@aii%qV!e0b1; z-k_ z4;2KrY|?@rR;CG>C^}t~w3N|c%ctC--rtCOb)aTnGb`}Lp(AwwDsFe<`U;8;H(*HZ zC&yc!wt$?3Csy->E`LKcA8Htfpf(gd2^XmJ3>qxYK`!}Y3pJ=qIjjf%)<|Mj$8Ljx z)N-(px5R0DmT{QfBPvgi<+8kC2-}cbii_xUHxDv1WRz$MO)1M~vPFH@5o5F(ASwox z)3J?qE?uJS8!YkxbH>8RjLHr^%px~wHa~l~jX%K%WMW2E7%8yC7SVc>q(wdo5%d+L zMe>^?5zX5|(P69rY1vC0-yzmdTE@mvAQ#XxRMu*j!>QoxJT%D-=yq;(8iU-;+Mj1l z^{=z)t(of#2%%lnrD-E=W z5@xMG=Br!#>K=EBdOU$Ez(b8JogH9N&wPxrD9!>}M!y%+A}!Kvha1`IfW|_|Ef5Ie zbON-hR52R~+|v6=OZ&AJyUa8~T6XjWTdo|-_JeGs4&axAE$Z6y!Xw5cHjUP2TSCqC z2>gp$F)!CzoMY49@{mS-4L#{Cx9dO=6D@z88|zQ7l$7@0JnE9t;op>jmn{bhyrjd5 zsB(|rncS_VZ!CfeE60U;Pn;@DjR0uTpoam>NaUhXE9L;OFjpZU;vRl}%~+S;B-Nip z*)At&wn$Tc@1IDRz~0M(^=z2(RK25gv(#{aB_;6Ac;Wv6g?u_qV`CV&}?kyEk$)Ow@*2uik23Gq=fV1((a$Z_A{`+OEWAmP*C(3 zv2X*EwJEMpK-xkq`qt$4V79)aPr-7NjpvQuA3)3R_Y4&CM7~3xL!@Z8cOF0&UCVK&|?*amom4`=im`!dbv_y|Vhs@M#D(C}}diSWqwh+}b zD)mTUOR_;rYU9*iufP8CAs(83d{hAk?y6Lu*Oz>?i~2k7HZHLx5Av(nsO}PxW@>Yl z#MzYSyg=t@fF-9?Mi|Q{cA1+S!;&!bnRRRm2Va8hB`r>v1!UT7O%%|%nzYynLn(^) z+{{cu=Dg+Y^X`7peHEIRoZ6E_TfogeMOU7!o}OLKgui$;vV`)so-Y&!~CCT zhR?@#0X4MPpXxX{SL%xed)taEjo6`cb~2d;lVRC4<;@Jt@su_j*Wlw0ANa79#))Cz zYCFt=I2Y92w=T_d!_v+|QKZEtEm??dV2-p**uDOvTZ>pB%f06PYryphF2k9r}Y zXIWa$lQuFAo@t!9E}A)>Jb`oDYGx*DWV^b#p4qAHf!h|H4HbTlZMk9){T-H}MO{)V zSy)e-txyx!SLZiUqG*W7nvT65ytuT>Gr|=T)x%07E+imhW@09tGKNY@slX43H&rsR za&XukA}@9pDU3;{xe(0|hCQc4GNnZdTI#`jI1uEFIJ`!|%_oPhmN-z>-gl9*+fv~( z7DX(uG-;0$3fdStS|xPR5>n)|mKnv>yh%f=e~7fm9yLc=?6l1k+rfza14#Cg`2mjE zby&9P1&A$F6Bdt8hXa^1iB>M^FpCqW>z96H9qe+`S?;n2XUn~V>_uE;i-CMi&qH{5 z?-DeCpmP{6eqRe`ey_9_Tt{{QgGbjQ>Ous_HB9Ozd zpIQ6~lJ9n(GbqX8=lGXdEJ2(sP_z0EI%X+bX@@$|XwM7gb9(1MQ;6%>sxz&mChR8d z6=6{Y%aAuZ$KK;%LEgT5a8Pf(^(jj-7SqJzH-=ti`HcRiY(v$LzVH@eTyVTo0_)gi zVoIqKP=+aB;!d1FTAbgpT(Ns|q~#2#C1J7w=UZ<$%c5rL5wpTPs^wj4&6|FkK55;p z{+=W@f@t4(aNBlBoGt=6;T9M12=vw>oc=fmxrR3i3cRFrY#U3JrIdr^NZW$G`cln1 z6oEkRS)WD4Rn%_;@u6!P=+072K~u`Q+SNdd8H_rP&*;&d{G2}wjkO;e&NM{)E- zaspmYc_vXgdSF)fDVH^t7Goz^POjPg$!sm9m9bC_!;Ga;b5{ZUY7(rbBgYT3pi$Hs zUmc`{@}CH48GnoUN@)ykk6A<F~}f>p8usB#wq(zko_&ueiJ>THe$P1uEK2L z{gx9!LnnjLZrak!eJw>X7CVDhx}g9Jvp|C3m8))nxDB{kt$d3HHVeh1B|EABZTn!5 zmQjHNwqQ8b=oF$v_tkA;CTS0sMWwH?+J6IgRV+mF4*Y(wPPl-)Dm z3;oLp-)y&sdLx%f^~6Ojhp7K|%s??@@d%Ua7apj2gQa9#Dlq$f=P0HtX}i;=D+$`q zyHA0`RYqT1coJRhsn_|UIa*(iKQm9WPPcn zf@C|nq2A>*=8`f&iG}~MLD&uf*I1>4Gu7yJ)F391#LC~|D#>ItT}M3IpH~@SEaI=s zFQ9^8m?hzg#lkH5*yILju}5^S*%ibz#ZwyZ6=|&oU`g)!im6a#1Od{rtSpYeSnVr@ zM^U@850*YqNIT0S8{uk$X`M~HR`wloTLt2BV++^`I-lDNg%;7dNH;W_wOmfC_@yS* z)2UG#_7c7Ze`z;06?I8uxe$SuN?lT_+r|#+awJM9{E|3{kaslno4vdK6##fPjgV;D}=?=C8Fggb*1=>v-5);dE z74bV?mL<>iy>;WMD@_Eb%BS#2l_B8Tn8g(pX=7nEPqa{%ReZ)}v%dA0yLeXVxHhJG zDz^9Xj|H033>J9d?4@?sa%{3MB^zfZClr23+_OuMI%VMu0p5a#HqN?Qjm}I**$Km~ zFeB|@&-xjNHVRHR)};QEF7!{HG|NPX4P|kaJx%xI1imUX#aL>7Fa0MSWGpVh;Oq|N zN-4=*ptUS0&nXQFm!Mu1kP-w~eX(KEVzkfYq{T}$vvM!VW%n0^)l>80Z?>em_$?K> zR?O5UF_w3&LF4W7?#DMXvqGmL2aUv3QD-7$*z_Y5qp<4Q%tinR-cqW(mR z-F7H^p@-~6+8O2ehiy9d_? zrwpwQp{vRdYy^UNZwEL9-PJ(-D6Pe)g9w1D8uxzm|rXw6?$?*{Z(?1QrgXV&QFg2TI@ym zsKv5x5*Tt%a~PIdyUQSxkzB;%G4i{>0yyYn4hgnkVg%;x`)e0lCRGp*+h+Roqo-k-^(y~D0 z$vecxAPZU_YzbqL&=He**@E^x!IoLkqXQ&d?iB>=i!nPv;kI(Tc7qaU(5_=|ng3D` zIqGzKuqnZZ)zL@JK;~ zlLHVgAxMi#>Bh(&M_TqAOM@-*xg-xfshAIR=&!dtk$rArb-f>p%+TirTkbN2{z(%o zfYrvq%!p>Gql#Tl*zPu`+|@Fe_gXA;PmDBvXAysUt}MRTwO<^}^;A@owDClQq*3s_TE+SZTRFpCslAb1$SDa+IY9aqG*j(2@dt%0tj=GBB z%rd&8xn@Vuly;7^$goWVEz;7DqQ%aWmhIleyyi&{h@Dx#FEn>>u35@7mwmCAu~Pc2 znaK{*0duenQ0sv=@?G~tOj=7(FekL~UeH^Bd!;9v0ax0cgm%hLaV7>`Jg3ZcV`vv@ z^@{p_OHrFfXy7HuBgJIw#bGa%0+BcPeZ@=~^Z8}e6{U$7000!gNklbG3nJ&)CzN#-b<;Vn)ww7u9M}0)>GQO|#b`lj=q@*jG zPDX&m>4iQgY2Ni?ED1%LCP<6-k;)W!$YBytKuV9axD7Sf=?icu1#=k@ePLkXhzNNOFT-#2lkckq()jdR6!w10Zrd?X z2X~Th)w7$sb(YbmC%1AwH%jKWQs*N3F)U?HFo?MFtzq`5#2JB?As~~{R_sibA32(U zQsfdM;jkLy#_Cn|a5itF<3m)MmWtua_X=vMk#&Pe#-hrYU@Yl#BDx!9X&@eHSwLDc z^TIR%T9W1N??-TgTLjP!W8%AW^<`Kvf$;*P0>ci-9t}fv9|;&w3hXJRUz(?GOWLB| zGSExMgDn_MUu;{%Imo))J}p@4x$(6+3jtB=sRaI6g+9aH?ZKZm>B(&K=U4gcT!VCD)9N^P$*mym2UZ9HxQh9mdmbw-{AhMR?N?!?*E>V^ zk2WRyqbNgK6}n}}rYp6p^>dZfq$_0$ury*UiHBKCAN%&h=7y!JbV8T~K4C>#_Nm9B zOiHS7%e0gOlM&50)VX$@+3#4c=Isg6GGpJ646%%88$uZZRTvzP+*a%{BOm+H*4l@Sj53^U9D75fxJ!!md}hM%?M3DD2zgF5QiU`J=- zFl&IfgePLSlgS_@wLXr9BZDw=i`R1accDj*!_+FNqzvDC-%}o9F{@}56iEQj3iBC@ zDq56d$5_&*(jG1G?}8!#Xzl`dhIe$>1*ByNW27Y_wDV3pUB{>zX9bh(aPRB*KKEAw z7h;OEFnH?WLT38RBDDwDHT`Vdic;1FTUK|H>8a`hYP76~O9=cz^pv?avN{SRZe0cX(q8r)LB zW(@)ksO8p5AV=-hAG(q(#?pGJ>p_e~T;S!R9cS*^A7LyhyfG{#v^OkE0wB_Bsmn>r zSoax1%ojU48qB`X=SvIMZozajPLQ4k(^>0dybag5Y~!UY$g+0nTQ*DdR{*DHE$u;uP`*TV&C))%7jeEpp_D-{`*+HE6#5nP2Y@Sen@2LylW z3Kb*s)|b|cJbsK4n8Rhn*@zg_yNkS}Qr|j&e)FlRfZ0vDLi#U-ESjVUG6eIOWXVk5 zP=d4{OeTuUGm|JaRa@n%WWnmW>sY$dGDYesVTv~G z0T!FIAldYqyD_Y-o&By0dHn97VS2b0$g`{`q7FOGeB$~&(gNqt4)G3+jg3dIZ$T(l zFy5G-AGaEgtsylb#=+WPOGDa#ZYQ?D%+&tqH}cnZW3V#!wOn+noW=Qra~v{RkHOQhRBRdD>S$*!zJms zk5IHx$^z7MO z#qD5>u54a`c1^4g-Y2ysjOMW!Xb)rAIm>vMCHu4ohFOwU+}R$68PO`zLND~9j|p_k zy^pl?6?X=~h{`lIR2?jos{_kxy-%b!S|xMjp$A^;^=mQlEY56gPquOI+J`?q%FaT! z8z?I6eB3mA7Y~7}YVpTxQ|9e1{PZsvs>nNY!3+oPBIB|sd&$LJB^-AFYJK8j=y^EJ z&;rJBh}!oCidCI4UxNgVIIf0yQv@fB3*I$%949gC-P_C?RLM+6=t@B15yWVG@ZKuE zweGcEWoa>%XlQj86AU3@~PA%{Ttn1B} zj|+35w!d314D2!63Za%qWVRTK5nxHjC^T+*Vwr@ho*BbvG8RXXZG!N8!`eSmxSo5u zt4T{yy=SN+)Y(;Cie>cgO$1x!Ge#TsgVm&EJ{RgZLnSykWj%Q6n=ONRuVP1|&*FqC z&*VM5x!AZq(V&^G$T@@S458B)a5}hB<}uRvV@pg*e_NlVHoamm<}RuX%WbL*zfOG43ti4I)H(Zp3=v>LM55mt(T#1! z;&i5%vD}udD;G zm(PnXoDiV>V1W)GzOSGd5`IcIh9Y*u7}LO z+%~lug2o9%lwMx!t@ab&k*0Irlz=}dfIxY;9 zxiOYjnC18=Ee9Lb1tyW{M0%bfCv(IE!YpPgUz_hHEyEK)w~f+Q(wYg5JFspwSy1&a z@t@`tofTX$!wF9)Ix2Fm=zD@K(NflS=Eqv|=`3S+rf=;2&?Un9$_(MjPcsI%q;}{1 zD}rPwSFs=yIoFf3bis_nlu%#+&R%+ZOpblQZcEIKG1tnCMric?bGo$lA&m9an|t^` z@f%$ki=d<=Z5e&H^MQ%vsz;icOe-GPzID7ATf$1pF~z$Wi`U4XfRE!YEyovATBOAZ zvzXx>u5jgmM(gO(qtwR7zd>5e89a=>SOIc+&AAZbQ;pr9^`+&8OFP)IOkfL_c(krF zz9+1oe%$2^Tvu+NB<6DJc&7bMqVD{owD4Sb9=vd#nexJ^78{7yj*P##qG$RIh< z+>F_z=DRCWq<>o}>Ac6{#aIqG2hnl}n*Rv2`AUf#PiOcbqhS_L4Xl%tT!3OxoJ?Bg z9K9ZC2?n-1OVqh%Nz3#&pCm2N?Pd#flJ>O3v1WJV0j0Rq*UV*J>bW0kw|3s4j(1bA zCDdYlx=lN@dQ0n3uczEc7))P6Xx9|wO6eTD7x~CZv2~x=hrp11VAf|RnWVZe9&dgj zKc#P0FTGj>E`I+`B`B(^4O^_MDa^c`vCw{qr9I~JKMjKwI)6;J9qL^=fG$nMw7H5* zRQ3-0iBVWjt%I%k>lEuaY77OGl12?^N z=aUvDc8s(r9p+}hB`tYVt~+;#H4ynk?@btem+_PL9*mc}V03g(3-j%C4u2S!rY?Bk z1Kx@+M%&{Mj7$HCn+JQ@mW0yWWyLHgZ19!+zep0S3U^j#n3J-XF?4v-<{XPn-gZK*)sVB+ZTw3 zd&4|Uuv*_mT5jDQ)}3(;X({H9aIOZHdz7EQL#$t*r}?0IA#V^*H`IPt1Y3HgbW4ki zgcI5bI@_(Mq!H52em%wdu@=UzJO&!Jb7u*QTkLX1{|C)4x_N9ftM>mR)T73z{u%rg zg&J*ANyUk6FZL2N2uui0L~0z+wDKO-^MQ@3*%qTAFqehei@WHAdOfWYFx6)AN&zF! z#KBnnRIyXSQiQSWX#_LID~9@zyg)R}Vz)0Zg~>jFv=s1H2hJibTI>pp7y(PhWG6<< z0W$@hKQ%F0v9oalKC-#Tl~3*L zmOImroUJQ+@b>Z+(RH%AkGy)YoVFpYsgToq3ccOqjd2-ENn%YlPYK&~Xte}oEJ~N7 z6eiGqe4#K4y)Y4GQQ~cIKf+g#mYMaYoo=o3*pzI|PJLybxkGH7g!V#mnHj&@RkpIA z>8^VhI!OMYv~^YPlQim>nAP_j{t%Wr>$&JcPZ100!CHFUQ!MzCA|9Il<9EyhjOi&) z{A4c?1}WAa7N}|{CPS%0%SUZ(9_#FcPIBdUUfl&w<}-nNtw_Pra%0G24IU}j5og-{ zIo?_+d>|OhL*&O9OXDcE{h%;i22Z2LC9iEAg3S*y`eBxujZQ8XgjqzSjOBPdY3Z0= zBk6#`F$n{vz%qnM%a~;lb)pTIH8>$IYROvq@?cAQGF&CCTeq2SO-5%oJ8h(t@>>KZrMe}nq(TyJ|L%boGdnBJ zpds1%!P-ffA0(B*URFS9yqdstgrH8sjMH}#9VEiAHeaGf^; z*DqdcL(_N#q;KuW8T;__8m`hRQGMa0^(7XmRG6`VNXsUmo3SWUOL=^e1}3RE=`H-E zyFd>BX;}r=K|V}chBcXDJM%X8DLcewgDukvgmYh2`ug>zTcYEM=`Q*jllno1yEWs6 z^A0Mu(kyN!3DMdIJ(R&Bo)S}17*T9s@GAU~8-CdHu*ytTDUHedRKZ!1T}@8~N2^%Q zvg*ATn5{VXCd!z>olcC)%JzGs3zMQGZb|zR#)yg|K0sIYtnQXD>_Grlx;b{();7pk zkif1mi?9?!q{Vun1uKIDIP%w%mL)dgX`}@_;eH`5T7-E3x9<>(mbEm;S%KB3!U0nhP!yTmlXlX%+s2Zw!W22X zJqZO^aKYBDu=5xT%jSexOqcT9Tll0PCBJ~bI`DMT(kQf#v~;(&QECwDh{S|AS3;k0 z(A|tY_oV)lee!%ui{R#9%K*?cyH;Efo$DG(eNBv_m_IH=Xhb*iUZDFTzt8O&EWuxr zUgxNltvHOCEAQzot5obf$xKq0o!D0X%vWDrPz!`vsaf3Sw@Ozs(!x4rE-INdqn~`L z^b(lHrdEB($56KapRp@tN5(0%dD3Pq39^1XCu8>j+ZZ;-Sa20YYD8K^_tOk zm?gEIm8k-i-!1A2(&8=5XE=HdZ5MEcGiIf)*dewe*uqNh7uZn#*Mcp;ZS@BeWW%y)N!AOk;2+jbdhK#$xy$~oapM&lAIL-- z60`!JX2{}#tw(l$I@h6L8ff`TVKRnHx_~Bm0wZ;(eSPbaU0+iP%C>;$iecF`x(5re zxZ85*(9_+3WcYt~SJ#6u2m?dn|NqPEVVSI5>BqG=;=LG^wiE~46`hTlC_V#k!ZGgaB(H#4T~n#CQyMYOH^a9`FFJc%fj<3G2I6dcg6YKpC1WXV TTpt8Z00000NkvXXu0mjfe#4uI diff --git a/packages/muelu/doc/Tutorial/tex/pics/lubuntu_2.png b/packages/muelu/doc/Tutorial/tex/pics/lubuntu_2.png deleted file mode 100644 index e6d528f5d38c7557a3f8308ea9bdd07c08678789..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 673049 zcmeFXg;!h4`#l^WKyV1|!QG2Pad$25R@~d-UZA+UQ{3GO6dEkJOQARg3dM{6_}qK@ z{U6@7-pR_!O3s{FC-dxQ&wlnyl)9=M1}X_E006*HkeAj30Dz(Z00JBc{^b|TD7|+t z9|#_j3fdqLXmwNV$IDj~S9yI80049Fe{Z-{7EDqA00K~ume78mbNv0N&T9Ds#r6J& z#dV#su6^j()Xs0}Bx3lFjVbIp5I(3y+p zr8TWixPAIxr_Ar(afbhn(dw~g@lUU|+--vYb>ivz_5Tm`|AD!ZO#&c-TyJLsxc&*B zjT!{^01%Am`Zt`a%v5YejJ*5*#rYZs#NAhO!y>rxU$`gXLERBTccDjr@7QnvLKs2i z0ol}WfGA)_6tbvk*Tfr&^EY4a`u>BBe_a$Fvke>|B#F-oMA~R8(z#;NvG9D>81R$- z%Q;rynTzm$NIPvw0UigjJBO9mBDjA585y^2eCT=pUe|qx)_W)Xe3|}C-+LaF@vYjXUVa#O|;(y1LpuddLsFPwlB9x( zA6R<8!8XTJAM#DUZ{gob+;BRi^@Z<*>4gojQ@8P+t=??+KDCHFtcu-ua6At@mr`PO z#RoipOMf0G4E!qY!>KnSQu5eVnO# z+M9faT~R*Ji(UTg61&^adp_@d3ZL|Q#_DZ>pl35`oAo{HfGp`bAz*z zd*dg1Hrsplqweu?W}5{L2uhoq3T5@q7*6#C&C*e{wwDZQPzd9S&?fUVTTS-0=TtdjC8ASvdcBPU(5{ z<8^)j-|P2n-wi!&-*!QTYickEH~s!4n4Y8eYfORx^HDWC!yA8At^&`;daph`?*?}J z|1v!`xtlrp7 ztr;@qp<-QuFOza*`f!zh%hLHgdbdp3bCdkMu4MYq(EB@T|H~iA`?)5!ce^s%xrp}! zv4E)%b@jhwXUxDV=^%YdIuaT8D?iZVK0e@S@oB{Lc}$?YA>fJOu1DlGke#KLqi#_BAygU>Cv;ONp zD|g}fekU9c_xTS`lg~>Gd5>FYV{#`g!c`}%?Rwiq4H6nMHnhQ@M9=^7^pqPecNqt} z^l3=+X;kd4*!1yd@0#gT?&E%d-_3U5PY=_(^Yqv5`}g_rSVpXq)hqnJLWM0b)Kh@L z)z36*|7G*35S*eWN;AT?ZQ#-F^Jd*6;bP!#!-oUg)2AKNyFtRhEr!>f&oE?f%8pOA zTRu+rrEYH>ftn?QWn?bl_9d^XlT$8OI>uAO2ia4o1pu&KDTmRBp2d2fvwLT}C#yLEHjrQ6c1-rv`<^+k8EzH5-LN2B2{+&b zBuQv5AO@A>ff-T$f~6}s=J|ei%=GR)Fwl4RCO!Ri?{i`ApYT)PGqlN8!UerIYsT)e zt$fv7HW7%#;_BFye9Gk^Tz|Q;#{)&)o_06|AgcVdE#|k~fBK+x%)SsGuo;?v+s`4= z8?Zx>ukUKRTl+1~j@CAWjxGsao;i_(m?$aaMm6hytMqc0xs@ysp2_d3Wq{)W`sV6) z_Ai?JFMp2n?~jK}9=`0SVSP6?S^Cx}U1P5=(4`+#Zi+_o$Y!UF4G;OtkK|}E-3sF5 z?W#{>{C6z9_oTljntly%`2XNBeF!GxcV*R6 zyh{I51ioePU>ZaS;_J0@epAuzfalk*9~vHQ1J1Q5pMNvt8|Q!bXp?qu9Q?Wf5)TWp zlR&K)U6>QMlBd=LOZ<(es?PgFKw+NWcEN`K?&iSm@^uBF*q=w!hX=GVw61pCC4Q57 zY{PA@JXd@(xac3CJaM-csea+p@TQ(qsD)Nwt7KxACG) zU+M=|R%E1T5FBIdBdH+P^gso0sJM8|{5gTd$r%6ta<-}MR3NWCt!gfvmcG%}$jN6H zT<6;Rd|)ef+YleH*KzgDU!=*5inLjRB~ww}BZml)EZYz?QNxx5DHTCp{zoi*v4o2z z;zEL$;j#;#np&Sv$cf#ZsRjO6SDJLZ(XEM9vV#+<#G=eN($^FZ!6srWkJg4R0wI5i zY_*i@@)Jr7Z=(K1v!0NYBLq06>~TNP0on2 zLL@zRBp~!JB+2EOST-dcHPsxWRPLs7-#1DcIQHjDrd(#VD+k6*S-VRknK>@*WyKH)QUro4k-t*(n-M zD)@flj+nQ@3P?L&{QhCP`_{x_>n}>!K3BWAEl#DuAk?LnYgp}uvBje2yMA_yhetDY zTCIeP5SwhY5w1(3A)CzE*}syr%{7KH4q=elVtUP+qp|JY&y>bBicm zS=X6xsq_pqYJrbTN)qF>X=ikd3Sg1fU4K!F#!A<1#UF{bPZ&C<#Es}6CGxq-=Ynz41dPv85vYAXOu`nZA4VC-ddXFj-XT0kxG;7`&V5XR=hP| zG+rcU5+^wel~s5nBRKO%OHv7f?GUr0K!{155GL@IMiIVZ^fPt^3|LH|xShx&*C>-< z#PF}E+kcy8z{unkoD_y54x$#0E45%MuuZU&pw$F3N*8eS6C~pM$xCA6s9Va4N3!#U zVDDRUfDjK?ZO@k9Tb$;;`Um+#C`%>UO~sR`oZC?VJhnQ)4D?N@l%+U4)4 zLX-+*fK!nKkfqXNyQ2d)b89o3k7MscmM^gY|3Rj-_2L zP^P7A#LYZF0iiWSyx{LRD?~4(s}GFM-6ai&SF{C@B(LmjF6U(@QMm&g{EMcho1Q~$ zjnA4*?r1GZ*1A#iA*nd+W|&|taaw+9!mc@bq*CZ3C=%3!l%j@LYJgOQX;pcr$DZ6(sF zFsVc4`%wrrm97zW%M^QkOpvV7w&W|x6v-NH0p7PU%E7z@9eYfaWh_;atcm}HWIYg^ zP> zH4%3(K)r%OK88dU2@E7kj52T`#`!zukwEKQ{4;^i9z9*gOgRy$1Oh<9j(0|h8VrC3 zW`#tvlc!*G!_WuWWo<1JPizF)E%p6gS-3@Vo=~WHU!~ zW;i#;=;{V5J(73BvV}4WeGRnO??`nSCBUf_6$Dv$U=+z8R9*-0&8*8Lbc<2{jNh~W zmesg|Jkfa6-pYJFVt#NNARP>cN-n8h{hbxN9i^wr)?49gs*i(F2408+u)sizn3s~c zQ_nKAwr#C720~O0Zsz)cuDO-rPURpkK8_qThe%BWzy7bny3QNAH3c^o5zQZ%Yoie8 z=;L#1x0q1L#!^SfX3@2HS;wtE0}dz^gKSK5kS2ROjhaxw zIP=ZfDDO5oa zc#TI!9Oa(^Q|({#WMx_9e<2t$;**ESOIT%(ncD|jW7m8o#}>C|ZJ+b|mHD4W^{uN~ z{)$2eefkhVU9Ol1n})&{`CQ0wep}Lf8Q93hxS$}ioSReQV_xI}yss|C%91-Ja9Aqc z2g|*!Idn>EJ9vboPFYqmHMHV`l_*ui5z&A=6XJiwbZtUk_=f+BUbZHLS66OCudN7G zFf3EOq6C$HllepLK?NI?83wQ^BnP^pssJ#g*B>*{c47t+R3>8+*sFQfhmOMXi2FgV zm&-v7C@j+DQt+*09Qoq7GyfKv%f1=Vz`eWM$dyyZpkjP$$TU2Yb@X71YeKCL1-JsZ zJkgu$h!Ye^OVm$7@9py{DEM>2;M`2T)%75fP4fy0k4d;X#^bh(+1$tZ1g-=_#lye& zc96XRCD=+RT}#K1utk2jZ~-FX=%byu%FR=P603O=0o)#A=9wL-an&N12n7&kvb^UY%>gk3I8Q2AMjIybj zysi`cG!;HVOyvJMN21oUhL17IdtW|SD-OBW7{pVPt!gp{a#6rh19d3B0Ox`AV=9Z} zC}f%vt%6Mg{Qz0YUfK$o zlGhzBa`YH-NcVsFbooJ~OOy1J*PHkC*>?yWy()_)9y$Pwpu7ojsyI^lC|#HN&8*bg z#@+@-CWXQ63?UO0ZJF#T9RjkVe$108&!}N|NwRtl487KJn@~v5|?PTEKK( zW5EAc&|KqHao3M3*&SzbsL68XP+>WwE3uWUy;U;uHe$ex(so>?fxM+vrIpn#qSM09 z({>nTQUx~(9dbe8t>h{X2gO~LaL@}7>s=8M?5)s{aKw4nBh9|CK?Kg_zxy)$6Pi4e z`9QJg3fVJ4IxdQP=yY+B25yAlI9kQZY>}Mt$67X&^2)EAS;|l;*lsGmK*k+VWs!WeCXy zv)fwhHqFX-%$9(p6`4$~{N5j=8yi9k-vzT-5dTa`VHD4l2+=SteFf&;S?lLcQ(drE zA~%&2#a$-3#({Hc5uk5TAf>{VP(VRkA_@`W4o6~cLdyM5taW`87{XjU9mY`rtmgcn zlP50eYrwJwJHs%mjIXJe`pM5BB8QLeN9o9(vf@m%?MOs+;#JclGi0b~WC|I>WQiCk z+$9a~tmkSJaALJn{dl?U=jl2^Qi$vz73|`NnjzA)KpK*zU}c#E$j-lIT9ct_yo%80 z0x}dl>}eib%Mo;ARjt7|*}G7Pyn=Dc`{gUy_}CQfF8cHcbxEqvLCQd4xVRx0s;amy zy);u1nsRJN3qd~!UWpSvwe~G-Fu+1q6SzR|3DQs{OWlNk0qID{%y3IM8iXB_x4Q)) z{4k8=|6mySxO&!__u`@+|KuHVNEG<~z?|Bk(9_x&B#9a=POlZK{Yj*?d+j}AOu6iE z0;U1?)sN0z?LSCH6 zWK12U2XbevsxBPGu-sIl?({rRlu>I|&pG|}KSh2zXo!UELYyf8d?{A%lXc$s+Q7${ zp?<7o_e@f!0U?2Q$PAU^R=5EINTM@#9(6>;IHJFQCtzVdCKy%7k*AZUr-~z|MJo!B z7(iSvpX1}6m`O?9WO$pTKk-t7m=ilpS0#}$f>V_+g!W>ydqIeJR&q!RzlBmO*5~1( zY7iAlUP{bm;d<*lQ{R;ggZJkQWwJm=%euKXhuaDFS1;mIEpGdv6{*1BkWDx`ICghr>fXR(NGj96_efK;e&=WC<#gv zmpKL|&ZN8U;K@{r^~Z~;%K)a^rSPDzO~=J-Rl#kEJw5zCNV$4Vly*E zuO?1|nlh9w)Ig4!Z{XRIM-3b)X-N)?Mdi(EEi%WBS*+!c=)JRUUdH_ds8SlN+ z0$pOI&DTN8pWB^y@jn<3lNe-pAKo~#IK*D@u;;mXA3LDBa#{cRpUs1eieZn6tW+c zx!krXKv5DgxY&TfBRn~flxX=ep_HHO4&=leFY z+lF3vAU7kiFE+clk6i)JUFiyMSe(_VLh)BLJz&A_hg~t-lTApeJNfpz)W8v~GkwRY zfjkb=Jt_~lLci^VMbZ2X+{kjIG!1kU{oF+F$fz$L>LklVh5)PS;J)rzGEAB}Zo9{&SOud{Mj$VJ z;}D~zv6`IxkX*N0(qJdpvb7^dd7|P6n)+vXU}AZA2mTjONs6*GBoeCCeJT3h_9Y?3l?dl_{-R-#7v2Lq-l|#Y4y!j=8|E0)rwzf9V;1SjE}e6 zuO$jdj4L74=aN?bhvJW(DI|sBovJWcw2h1tY~yoAl6sjS@0*@Dp*RHm5i`4zIF?TF zB9be3^a4uCo4qDClSNGZMc#VdN8O*t4V`bIBasq7g}6@iRzMwieq|S zYwalCreA?s9*7jA?7yA6i(lxeFMBP*(`X~IvapitMQw#kDSib5i)D}okE7&+c&;Rh zuElkaJwz_5G#kqaw5`8m?GtfcN=G6eJhcQoKW$E@=Jm`Pu*SCrbo{h<>(C6U4TkXe zA{)e9%9r`rD_IrEB|tHZ?hc? zRRTkf%={DRRRJ_>?(6pqWSQ+T$sEObqHT^?`u^=tbzP5mizL9Xo%|gLt4{<_*ERe!F{D?{4AtGC2VhygZdc9E$^2 ziIeSlATM!cAY_PE$;G0hDfa!WwbCu60*OK#T=Nh!0th7#SpB7AW zObxF(5}DLh9@}T>3K{D*_5Ne%Rw!Zn>|H1VrKjxRw-DL#Q92?gWw1(Ty_y8wldrIT{fNFTj}Lv z*8*9U(w?cEI=+RR6TZXZzw)D&$%dCFJuVtv)aCl;?O#&L729(kOx_KL(K=gZ)AH-= z(}P~cnGY#($}RDr*2nWNE{BTQx9syNz*hC}1+BiXaHkef^IajQ-?qrzJ+Dt$Z)K8S zD~TNc*|Xj#A-wLMC9+fwlDDECCIAj;6qm@d?vNDw<_$qLSjXF!yLtmBWDt;2ACRCs%yy)ud0NO$+rkyoa#N6veBxh~4@2tgl1mr>cy`xPE zF%`39RP+Urk3^QEnP8Y#NN%e{ zRV%jYg~Vpe0+#Ofsy|@o)W@ybp;8-JS8*M&ksNjAkZ$V^&q$_ zgCJ}omDU#v*_T7`S0owbgc@bnkvq89>hPZI?^%FUYroHnjQNPeS#U|%g+JWH@CDQ& zCKk=#1`OKf%oj=~X_hS}5;YMAYwWCe9AD6}`1GIA<@YQl8i=Va2fch3?u`On% zmD;tEo%}hRhAnY9NJaNM;Q?wLxa)p@h_KeX)9BjU$~zT~y!cqZd9rfytHZRNl14~B zRES4wMixB3EGfy;uK77F(z06THZAO~TNrsd!z*NYzb%2E#0c8OU$wn*F!Ki4#|Fd5 zSsJ+c$Yyh@K!&dYzXZ}TuWD|UpTA@NkS4qNCM!VO;iN8sNRIIvbosbL-r+i8cdzlSbwm^wunn79Ak{>6m2J zqZ8am;+AV)c-#&qbkpi3pd|l2x_kX1X%1UT-h0Ojf07qj`tu_JJAd`tchOVc?@o@u zVdYCc!bPp@1Y!tvJ<^-XMEI(iZkr?57+6IoKN$^60y#X6g(TIh#y5xtzf{G)r^p3o zLq%o)*f6dLWf0uI$V20@N3`k!%3j6!)&A76^F; zpx-4c8$mkq*pLz<901?t=ffPT5rP_mUiJ2s&Z*j9sna_0yG4r4R5_o=PPCZ5@1-10 zkid~_PD^*$8Ea)`{Iz0kEIZ^VH}b`8JDAZak~uMG z7L@Bf{8aUZTcSjk-@>{RToa2tImhiG`f_@QBH4?9DE*I{Sk=8IIf?Foe-H>!xm?PIA$(|oqG>!F2{l-aU}tO)$H8;RB_XJc{l+@Kz#YvQXUz9O z7mkl#da@kh;$sGbkC#hrYAX1?TWtYBbAKMaN%nqv^Z3Nc<`jj=YkWPCxu=q&Nk?95 zSEc%U!o@prHg_^+Z9zm)B2j80Ep}AffHI4DFj9sLu_{R1`WL z@On4ctTUuUv0vfAAra~pIt3L=uMQgn=(0T(k1#~p3QeTI z)|vi{r?}>?^*vQNU}-Z4r=9=CmQhq9b;zA~z-A%$i`qcz>T+m# zG^;jI8r*KpK%~>;3uB07$afjX?Y-mkALDx-`nWa85w|Zufu4uq-j0|TbGSZE2yJRR zOnd0Fxz-k}WzAD5sbIHOnN8;|)o0Lc%TqBRPW7*|cY;}4WU2fr2AM14VvbYHxCIJN zNYp0x>=ag3e9K$XL~$CtlDMg>H5GOYyu_|E)ynK5f2RaShqk=`;18Iy_+ZnYYrXbx zf^-%7Y+8Bat~}Dc*$m8daB+ekC%G(NZAq z%ZpZz{fJdA)67TznbmTTm=0?9f$XCiilh;v_Qh6Y3WSr6Dzt%aWZ4R~m z>uQ@QHWK==aM7R*@0bS~6TmOBzDIuEGEQ2LEifZsyfpD0xqt~kMp%zz4C@GzS& z?{hlMyyBiEF6~I(hbOx-gB>mVBXazn`R6;EUL0WaP=w@~-vj9>=9gp!wcM`+aRR@b z#3D0$#6-Qr=6HM;bQOgCWgyd~oV$Cy|I`#6+N`k-XwX8IO9RP{8~U7Y>3zWUM}dBiLhm zr-JiA8%=%dxF*l`?Y3Tx^W_UW2&q(O%_88YmQm=uQLFW?Jgra&FMHi_Yu;JQohf8> z^-xjPcsL3Kz@1PhUA?8ygysxlS{bKs)ppv^gt`mKpe$47osZ$`W&cBQ+j1sE2XE7#GUAG?-J z^j#Gye^|cyJ#}jObAIes>e!QPJb!J*%(v)pH;zGi zz5*AVNT}VKT!Me8?q2P@9cN4VqJW8>*@;8dc4t8l-#JxBl+sRI0~R}3nL!x5qZPst zpNLB$EwQ*HIe1PyB)c*yaG{qRq2!icqYalDTI(uWg{oCs5)pli1(_?YNW-h8YGFF=Hau-OP6DZ&0 zHFg$!i%tMBTn;vuX&&pbobiN5g%p!)+P|sef(84J6Gx>Msodr-m~ZcN0=Et7L{`4I z`M=-pH15TaclOGvvq>ewVWs;5J($f#5;KUIx;kuiFs z^eM8&eELD+MOcHR&1Y6YGmf_sJ4w>?rz08#Te=Fl+Bb8mYU+M`_wQ=s;`W4b*$6dXv=fO!8KtpPiS^f)PeMD>bVN8SjcIU9 zT#Bmk`lokmf={Tx095P7v=~ zj9N1qmO;r_&SF&uOU(j~{(~9X)o)E#O>XtQG^|^;+ z@z{>FH1Fjr*D*G)z_GmHImr`}cNq5sgeppAD4ZGOLkVx`MdBn-tGM=FjXc4Q;YG=f z$#FSFJ{j&`PiXL@0}ur1`>6y8g5Y^=HqX|OM{0`31$h`MLH9L&V`qSEr@(BDq18Ce zJnYmBl5lsI$F0fLVA%0v1^XYS+!HGtcq~KbCgRdq5_&lKhE_GcJWRPf*2ozFX|41n zNp*T@Bd1Jb(e2ncu`kCP@8^0y#MX(foS1HRDh>85jOZ2d(g#^N1HfIzU2U$hYb{GM zXuFcfgv=7ncIwyiEqq%kk{qw*m24n|SNoc6ta0*gl|-l$P|29X+M zd~q}4<)7!Z-L2t-rtsljm2b1f#T-7Ir~L4#mR<5l7|+x6LOjkCw7;p^v}|s7OA(KK z7{d3ZFciok*_XvmdixCbH0_&K$!IrkLKMx{r6pI=; z%dc21#NyNnZMcg~c;Y>PdvZ6Gzs#jCQ-aEwCM#;#FChi~+hDdx-UPEyd&D=$RD6kmJj!_Vtz;C}yW%kVgD>06|^cYiqcP}e#XbwXqDm8M;#WMgzOr&97hQnp6D(G8mYULE7knJQ<% z`-yasXw=Z5=-}<%Ga_+)UoYklsoRg`)Z(l-c$lLX!WsxG`Wp}LDKuwvV>QqCRu4B2 zFH}VC4}MQjCO1hP`<;|!iuzAPBP#|Wmvdt&gO-AhOoXQ*wPUmd7BtM}_J8SX^y#x= zG}@X{CrMNHNjoz|OVD;)1;~pYzi-}5{rKXC-CoH(9;H9_6DWd~WKMK}#atz8IQJ2s z=&0+l-=(+P>5&?2lNW%0;?Rc92dV)(nq`ZaLN$hTuHZX8v9)R96Ord7xsORtUa@i| zUBntt8^ma^XBrr?_J`XC>17j$GfTi>1SOcsfejF-oV|vK@n6odAXk3N$toSrcvr}v zR-NO*^|Ie{PD*1Otn5|DH;S7vyH#Z=AqZZ>YoC+E37(D=($e_c3Nv`)-q4!pn!)fi zH1V+oDUMw06(HzHs45r&)JM7O^E1J25p6U%P+m!}^B7%7qOqo}pxI`%4*Eb}!X@e+ z2hP~nqtOUjYIG4*pon~&u@7j%zK{}>ZSN=T6+XSoc5zNEPvp1t({bd%C4T=PX>jE( zlxo99gfOyT78Ik5ZN_}^nY$3<%}nZ@#H0BJ1;qk{WEx&6;Q#~G!U;#a>RN8%y}JFh zD$R7t5G9*@!RIO1a8-0~UwI+dMVVTxjbhx{_*L9o*H^(xl8kWZo0j?yuPhdN8RX{m zMaT4;A<9MPu8R{o-LDzf2@8o5z=UXSBT*_6fe;r$Z^rUfjIM9ql! z{Czc@V;?;u&nsDpxB#5F@8*~bV)z9Mfi30KYeKsUSJKFs!?l)vAM}H~RW!K&1IQCW8VU=SIhxR&_knK7cW7ezNQUO-SPJw7+v(Gnr641_^CgT&GlEJu_V?(`o1TDg^fjJmr2ZM;0~_)n#;` zrm8Q+%*HH>KZ7un$4p;vV_xY~+EnFLrtR71F**r-ro=1G1a^r7wGMc}yF^Gjh|l7s8w`@{?8H}_U4g0F2&Z-kD1vMhyk5wKOhRs>t1KSzfj zUaV^q4hf7&ywNPT?ICT7{<uIxo{WW^Bd)Kuj`Tu(s&m(cNLuRIr@J-3 zzj9l;G#fZF?Dpw+TtE7_;cIz+H{f?w2wtjjv)u%XFFe_av^h*x`+4umsCE&_qRJnGA&v! z=D>ITx(qpyP&WewZ9}ws0Zh`|>z;tZ+iCd9rs3&rAqP+;AC`JdEQ)0lgQyzpxPm7R z#uCmw;afRIRXk2}e)g6}6WxYR9QuUankQmKVNZ@!thzQNeJ!Y&iH^b>-yUJD~jsfMQopm<_7j@(7)?U_%e_3D8Ll0Pc05v3OdfJ zIi>+xN@+U1!kZrq`Vn5DE~{ribsGlSI$09u4g|hrqS)2ZxFhj zjQc6+c->qoPPmdwzOq6v0X$m~J;|x)MVJ{jqc0^`$@9s~f)%u+6xaBZrR*c5CRRjy z=FYiKMbBRi22h|t@>mC!tIb&0ySreO>FPtJyD+>Kp3rP%_#AZ+!Wf%;q}PsGBh_OxjF-o@7V1XI=U-jj73p%f zu*hwmRl0~7KOb-JvZ!rMzFv5j_pK@J`=I|eKBvCLpKg2a)n*?4HsoYyTafoWtb&Q0 z_owPBOAl_^kpt;TjkKf?CL;2SP5?mF%BxTvqG$Am$V!%hzG-Afcfw3}6%S^|aO8(> zu0}vt#y+08Dbfhn89Xxr7pxC=E=cSHx;YxexpG2{7(r!t3->jg!8=OHZ(~sKj!fR; zW#3urlR}R4Zb+uNqAGiWR{r2Y;Q+}H`&5iz0}zRC#^XcOaNg_wZ9oW3O-aOiwiF4YuTNL8fGtkD(FlB5`zTBNpr5#b;VD4ZfYebt5wpw{@&9q?h3 z@A;DXOozp=@|k}ETF%4&?U&MN+W*4(9K5ZSMW5Xt6~-P`f9=_ygd3Y;CXOuGq0lj> zl$?*2Zl91IMAVeqHRoGhKQ#0-ZTvhCzkTy%_4#t(=~vhL?rZXz4hrRNZ=xlmHXhr7 zV{hSml~1`2`&o8PtB%-3`rHXr<*A{nQQU=gy5A%PclFW;qIce6REG8e5LPq*La^ZF z7LN~!eq-2zydt-V#dysH)4_YP1#+|Q<0#&4);}3Kw2yUQ;Bs8tmnHUzmXub$>ynrD?jZv>*%te z?ECE)sZh?7r;VZ${F5Yt_V4jrEAd;Ya*aJW!L6|x0Y|}2?l37iko!2M6eAI* zZS`BnuhP&VkTk&%Q@D^0WEYlsni-Urp{AIK_Puh@^=l;W3|B{|n~6c<8d4B z+F}bsRJ)u7q0l(xLfXA;I;*w~5@{p6r08g3Awtic@mm8Go}_5cP{V;F;+KtY{cHk! z)&zCkmF*J9Mh3wYwuX0F+(Cg93gAOP$!0M9ZhZy}nRV1+^|*vm(?ot1b!5D=^SVa^ zoRj*BbbmAa)7ir$zvq7S`ST6#ZSaT|!5km6iT?_TWSh+SsC_&~z;5qkyl2!4LYkzO zL>$1)Cc*OLf+&XvBGpfi~hbjj@P*0US!~5dn&T7gY z$0%!ipQrD9H;lhry@DL0-;a3L+AQ(rvr(w{IPLQ{osuWJ@lDk5&RXTH3XsJKen!dc!)wrr-AscaE zE!J0SS4 zK4>b6Bw8isiQ%&VsD%S&EVZOV5P><^%}8l|-&YV`&9E_9xlgr~U>_ff)+5CiMG1e^ zxd0h1k@$e`T#fVDgkJWT-4m!`g`8%K>Vrg;@7P98!o8Nxh?2j;@fdYDdw0I&>oP7A z$CmKs(Of?$pdM<0=u(SUIBw%GFi-q=&&1R*&Psa)X=0%dQL_7)Mc!n7ZB?japZ%Im zc4LpwrAQL9=ocj2ziuaK`|H7Fh3YLMa&1U(q;(u7=SkPnejAsobDFaul?2EvR{o1i zKuXP&;;q;aj7%aDFbzvC)HQYVD_gUmDrGmti5g^-4$<{6koO3sj!87s9&X}BJsMD3 z35Or21&-}1vvPie>W^94D5U;>b;sYy!SEHZ~eiK?;hGHDFYu3KZ@Pa zJ{=?ruukLc*{o+BNo+d}9Ql4}y@?9oy&q6`Gj2O1J?=a%ju^b>T7ctZ@9YRHkk-xN zv`o$<22M-5VIhvXpqB>BNk}*hGVjv9qG1@=5%i=hjhRnerWISwTurMsD%DA8#$cQN zL5X(`PoN|ziLOkK<)E8`KnfX$N-Xw0YaEUq+G_mEEKgBZVG-D7cyx3odg{Z8Wb}G0 z5crR^mUR;JBP8}#m3N8*Z1UX8@Lto_pY@oA@%%au&PXUZd^#;K!pu@SjH%YfQ9!CH zCn(>5^7R@Ud0t*|nJRA;8_P=k*Pbs##J z#)h_ECeQ)zlSZ=;5_Tk!r&_{JbZaL7Hp!_=u7FvTu(?Fl<5GJ8h1IZ}Ugr|F7==iX z*vM8}o5(L9S%h(PElER+Y^y920|FkK69&K@TAM>|!|<9@p(*7yKKjzrS6ehWAy&VV z$=CT?C{?;y5NR;y@b?(1{z1tSND=?XVcvua>A70LC$N<5t6I1* zjZU-(75l9H#F0Q4Pio6rk3bzf=#rD>d*-X~8Vd3Nv7-Cqa`X0;^u8;!+3(nb zFB6`(SEwK{_3v2#{;#i5L}H&dwVoC}9z9=Nb#Vl`{#hAGrd0LuUl{1= zd3}H6+m(ra*mP9scA7|ED^nZG`Cv$Vw{4w>Xn!$^cHdM~JM!be_l4)+Z*_^~`3P z0exhgjS;$~xbm-f#D|>o$*!z^QIg-!>X2syle&yUkkEzoF6d>3;RJrdT5;E;v-CrY z-i=!jX>GKJQGP_cSj-=Oe821C@9c8AGB538GxYYg+Ks`_^FVTTnq(<&%?HO>B}F-^ zukNL=44&c)4<*Kv3ezh6H%FJ}tlv1|*j z6Xu7qEJX}5qIhx?*-WCSFWd*kY;MfA?{!dr+|hm#$qYBsxn$0cng!^^v?PBO6_-8fbiKUZ3Xgt;+XR z1&4bEh9@x``+DWL<99O@L`E$nkSJWWoJih&ea*TxGLz4K#DBWAx%Qg>qJ`Xrfd``P zZBcs0X^4MNKln+Ww8{{l)Al@~`Y7pKy7HssaWKPByK@dHjXSTlTW*`>&YfP9zy!-c z@5(nJuY=)8&@?RKEj(zc@Bab7KtI345=q~3bR?S#qK$83HHi{HQu1Iq%(KSW3zoP7 zz_pk6O`5r70c6E*(AFxGWM%{5ujZY+3>Zx6VmdQN#K!@N2AE`oySd{w*=9A8MQ%yH z<4ibCdLfD-rQx-W@r?CZ^RyQYd(&f)klWx2)LvU^|JvAIlpJNjeim$0Z0?!$mCyhF zCCsq<$6M|f9@F>MIsIi~kk!WLCy<8Ol`^zT?Q)4r{LRFP$Rwqv!pRPFQNY@Dh;XyA z0j&A;^_%Ck2FE})2%{-t1rNcGkMYqRzVw~tOMia%>tFlM2OoYSy6txJ{(674zcGDo z?>Do(ca6{OaNXL?%xhc2{M!0{f}0y+Z*q%tw9i7Lc>&>ODOue3v!&`ZA|RuznAGXL z50jj>NNalSj2a;I@kX0Wjos+A<&XU$B_?Km0_sO0#Bnxij{=08_fmj+3@6M}CobK0 zwwflte(zgyB(Ikb2PIpJG=|7J-XCEV-i@@g^%v^?Wggihg18h?aUhb+>Bt&;-w}6 zfYF4(N2+-$mQIVkLx{;KaS4XBDoVEiWbgeDy?5TNxLe~GI4Vqfw6o7YXb&gOrrFtH z5ukcAE+fe$gbXCx8PK>;-nQLSy}aA3Eg$v1$ro7X2NW| zo_%iprdbaoWfW7fqRmsaD2L@FpmvwryZC3q4$u+ceEgc`O z`ps`2e(5ic|LRY^@y+)?>TpN1tE;$q_;BxU?d{Qwx31cw*LKF%=VbucyYSg`vGf5(ag|0B7BbJ`3`JCUCgzdtJ3~;mA07Y{)qa(~r zL%xG7GtwuftRUq@J+Fn?#;D>DooIwo-!l}6UN)f^6EBsORXHrO6#gpwsusW)Ld0x< z=1Lo5@>ov4>548~>Xu7f;uQ_PkoRR< zutcp_eI&&ByIokNrR&hOhK{nsx<2bc+MBce@U7oYzW10NA{Uty4nW9iBP~jtDhe<( z>In$e3-us@HFWF|$VtI6s5$o5n#&1@fdFZ!F_#H<-@714^dAv1{(EX@<%ftOxQPTu9?^sBGxGxTXM#Y zwopiB;aPnJoHQ}4@@4x9R&dW&h7}|Iub;a!H^}?ku$NajD2^Oiz|m+uCQq+e6#$N9 z6Ut^Usasx*HMi-D$x4;-{Ui1;u4p5F(O8km*Rls z6JM<;ML5|@;1{doc!*W;@xtGE|M)9kd-l(N|Ifeq%|GWVT;I0+Z2Mcj_VyR%_U5&} zb8WB9e0|63N&9BAb8ng(CwGN*&e;p2&YFpoTcPb)qBOHyO?yOC;|9~{VAL{VAhBe> zDI0c?zRczZN=CY|k)b}>HcD+^DOpw2bQf%G>F1`LaUJm)5UT^PbJns^Us4DQqi(I82-s4eEwSlLN=Y+1^;~u;}SAzH{i`IP@NI z>-P4Q-%Nhfuyf4KnmHnjn21JAHH)U)uM>G&*T@fd@=e~ZkXz;)D;8uh=y_CDg;g~QgH~hO4Y?rvi4_a_2 zRo3B5E(qch=-_|_kkB^l1g`L)t zgdktRwE8SE!u=(z+GOMR@xnTrtGb)1I)e4OllT*o5F5wrQny^<60dBWs(WPa|n)B+_&8)LMUi&wnEPwVyv*F5dGjm6nX>yt( zz@ZW;NeN*Qa7HeLG*0kbd1#q)iwY}iX0#!q_H1OOwMarVpaIQFMbp7Uw`T0B#V$5-$^~vwyCpKUk z6>wuE40(C;Jt72J6$z)XA;z36i^qVJ{Aq_J!D|3k`H8g#0k~*TV1?qnzM{n-mc<*x$uRs5&y|u&Jd%vBzb2M;nZFV%m&GwD6!4;me zl0g);k*{xS!nW9lgb0}%vpUG3T9Q&65;l^1113*}j1{4GqoJNQ!xzrh8I2-NKU42I zRU@_0=?o~>sxVl3Z#Fs4`e-;Wjq3loU6T!g@s#AAFTrQa8*{lGRN_nBa*0d4`jHds zYgpm-;J+-zk!VZcu&Rg5I8n`+F1NW*b>P^eheBr5Dx>)EvVQ$>|L7p6ZsvB)KC>q~ zwE-ZF)*Oi5t0iNZbFUF*Yy#FeHB+PjyU++HlYMI_Xg=Wrun1e0WTe25I8L)+;%eXu zpQOp~;gL^2j3?K4^SbSw>XGnB11%?eNIe*o36n*l`bL;wsk{WE2aU6Hm3k=E0)!nS zxQdM)u&f5lwj_P?i=Kqjs=8GjnM>vu%*!%F7AjRr3gVkVVs?y%1v3lxO86$_MWfa# z8OqpY^KFMUq%_EIEL=ha4Hlo?htCglUg&Q4!`K>=kdS|)Quyb=%6>AkxN^e4Ko`(y zIgt{uov-^H7jLgmczP8d-1Uza9i_W&0;u()W8cwc=dR(l`RtsWv*)bFx^;jgkDaCQ zr#l;?<++tE&+WW=>9^+#lUq)Ibt*H);F!muv@PeAecLGq!<3nCmx^`6VXL01Y?>tN+4#2YhZZ939IP7mX_FlNMhEfaxP0xSZ!q8zy_LW*2&omwL6lK|63;26THY=9*t>g*a2W3^XlXOefOVsdSn zG=RbDMOr&1vkt6rSxAnbhTCI}1sMFNaS>Haw)_R>;0_hOQp7)u?t4ub(8#?>06l6n zGMK}5h=S>AyKo>zr$2uw2id0+zoM#?`c@F=kZd4GjWVFo)}cpNOwB`6Z@}De)$H|E z?;rGRjR-cMoISuN9Zyz$%;RjF9lK`Nlkd!$akAJ>D5ORu!+I2o01$*#`HN7&4w2&j zvx~J+x$03Ve%Uy2C^#)AaGt8O?b+K)YKSC?Z+ZT@sN#3{1b}hYvb_jcFYyB$Irgd^x_oW|ICiD&l}UgW zsYlG_J2#_6?`xD+(+v}F6qkUgr+0V;{KotGpMU!szx=Dex_sr!U3Z*sm)#ZiH~V*g z?BTmV^ts#J7jE><6&~#DW;SQvHBJq)G-pS*>h0aXLMQ%Ly?rFWReh>a|ENBQE^{X@afw$vlnGG&R}Gu0TqIW< zo^mos3~A}nOR^s!UxQ{E86LYBvJN`fBaXd)<7s^JV9j*XG@ChOMkj`VqeL1#Qq^Y# zH(0GuQh+%z_(W#nm~^W_PSYv7qC%EwG)JfBWP?Q^a#>`Ws}PHHOJ6z;U0-|L51nuB z@L;xV&Rf0}S)*DyB27-pysIP=POVb!m7AycaHlAQc-KYd{27e&7uZr=-CyWO7ixnE z&R$*Y0iVW-`O&=O=Wbt93v9; z30N8l)TY90>5sR5{zep_oE{T^;A2nA50GUf8-49z!0c#^*At#B{o{k~6pc3dAZ5uq z@T~VGbhmcLYKGlpd-AH;WULV|00hr!u&kmfRZFlgAwigx;AgZF^K8Z$FGN+W2nm;L zdx*s-`-96xHrdLiw_-FPYCqZSxSyuC#Xd z4RWfA2sOj!`6~nUw6i-MwZ7k{LO++d#1BF!>w{cg6KSwj(Up1+2ExEStrsQ(%O$1y zH!!6cx-EUVTl`zc^ob_sE5b)zuof4Y`qtPt1T#(wTTiw){{SeZFdArAz3L0S=5o#E}MJ81^kfX)mjj zn%ktRkrM+qI&G=ra@qJ{jCpD=r37E~ed59LpS0DGUexjf~nt9!V<{aK!62xi-Nuq&_%s6)zjd&Jx)`zpvQ9cin zcIKp&T5tiK>IkDvG*vb@bR4XC>Or}SLYF4v&OA&9#v%Cir}5E(AA5+0^awVVwAzgm z@ocpa7NF(gJ{r$P_#g=g39sjLN&!^hZdoDI)TUF;IFk77dkxH^E=y+A&*hTCI0ax2 zfqEg=Jf|e-ERW5TCY+_GwSSG)*=U$4uS=9uB%W*48zr$9%F~l6kw`%K%zzSUB1JKV zd4EnQOH-XZ1L*>s`gN~EM9+R7;Go&406>DxturYQqUol!s}_%!{^STm+Wa%jKr}QX zJ9HNj9Zy#p`(*vP@v7PNWRuDBjf>!1$YYQZXM<>fC`qSjREMF6ROi&4nAWG;&8WO# zP80}Ok6w3jmJL#wHH@clKtb6-6z`vNU=S>jiv4>}?Ld7_+i)`Xvg$bDbjn`im~D5u zpjo=SBy8ir)O}6|33Svfg-cxG2Q_kSv>+Ag5ul}7!^-d;gDH^7dO#^&cLF`S2}ko~ zS&x1C^3(p0|KP))``5qw=U@6i@yT}^=k>;?Y45MSJ-_!8H}8Dm?FYMeuJE~?9!|QM zednAF`(`QNbg*|32#ZYL1L#s9$U!#F_R!eS%cNfHAr`Y)E;!)^H%tbzlEmb!Od?Pl zT~-$i43RzuRSct)021uY?pQ8_V~FCw7TTysAarUh2N`$~X6$2T{8iFNF z`HU<0mx`06?`gWt5NK{yRK9Xs@ki-WM1uQiuA)OpBD30uWHgORD}OSsW7%b9Z|}St zhcW}rcAIK^%BG63YU`zlsQ3*bNuKg26BW0!-Aw*?j>pHiTjgdu>jo7O5$I-1*D7?_ zGwJTAc8ICPmGjCuPn@0e#$2Exq|g$nSXIyB${3*@wIBD;u30D|qG)=SUtx$!fO%>W zQB$Oqz*bSn^38Iu-%P^@QhB2jqa?n69eH-yc`9)?s(M)k74;$_Oh&RJtLQAl%7Bi; z2=#m4Is<=8l`A0S@@shfflm+OW;gjmd-DtJy)RzB`S~}l{LMLTTALcD z=0rHKGn3GBSCp-Qk;lk31VTJYYb3ptWUgaY)5O$sSO&|or0bBDC;N*h}&m(WYya*0d4vXP9MQ}&ua+%n4Q;etfkiRcix zTLr_;0rg_E3?*@w1eh5kLilLmpM4UCCH4)?Fk#Jpx|gX4Vij|icWbY zwWuWjgl(O00xdZWP2)4TRaFIYHuQ)^koc&HVu-mxn$gXmpfHo}Izmp5;4yTF z_~fVwoDHq5w-avNVBC>HfM_rwhvQ%kRkKv;nY^dfb#wv2q#T~1RYXFOJvLGpLAV*D zQ1nO?3`Arl+x?chj0?>g8R=V&iV^APRKwxM4?s56; z_v63+jSqh7=lZPSYE2P(qw5(Mu?dfwuZ|%#9XolGYpclxxbx2C-mvs&j&rw)H z;e#yJSbIW_+QjHv70Xpc;of-0L;F{IsGSx*qEz*RLn|aol*xh_+Ucmpc+aKGs?^Fh zO%laZPspey(Muv(441m)5|?;YgQd95MIy(qpK-AUzFHI-F5m*tyty^je5iV9s9MqJ z5~Y3&|H>!*TTkL02HA+4Gkb3#@oc`0?z?P^%Ll(e8rhZSaVMKz&@vkd0XC{*&x4s9Yg8ty5X9e57N zNb$tb!<>=C&JxQr2q?({+!QZBa<6mQk3_+&e7;n?r0tMdV1Q%{h0;KlYUg04zx@R1 zCD5RVp(+>L4C%93mNf|knQ_<&klE5pGG6Zck%wcxt=4XWHHzLrf6X~rJURA7)}tml zf&oL5L%pk~`hS-tMD(XC?~d^;Xz#k7`138Gn*DaoOy1^35$1cTR^%kQtsSDjl;iu7o zK=S=kgqv5prY+08I2`Imq2$N&6)yZid@>*MPn6dUQrTpW`J2VC;IJ{Q z1A>+U)X45o?xhK~BZ`%+5)_Ws-L~RI`svh0oXVM6pdum{;3SRfY{kPx-*SmdygIRg zq4`Hi{Ujhplz?FLKv=nR_9_rudK_1|fr?%dw;(BU?XiF>B4;y7e0VN+|R|wpNa|_V=~8C4}Z#Bep_NIIg^ti zETKlgko2^cw)85$tSd(&y6pXDakt`4;K77L2aG0}B4BGe{H~qkWH#pshy-?q)k&!l z3w!9HXKQyeGb0Do4MAp9O{5u3`f;tQEE`5+h*5)BV*W)o<4O4Nz2d&eT^Y>)03ZNK zL_t&lrpQ0zo$8b(Ckt69#z5906tt<#rB7CpA@s_wmFYE(#Q;m{@nxis&a0MK?p6KRJmw2}JMck84hp;M^zy{9s0ANDT{^irI z$BXV3JzL^-=7R}0lNn7eQ5=zX4NZ5!9!iJj=fUfjgkb!Numu7+@l#V6A z!z^b<8LZ62;%smpk`|&WTAqJ6FL8;#r7?EW0$@Yw8woc$wF*6wwq%)6JLq(yI--dJ zd*C2_au>h+jpN_{rQiR9fA$aJtH0NmJ5Ft5a1QPpK&FFcwcf_MOu`cn5s+>K zJ_s7QxLI10De;h(Y(+fvvbMfk`eJGz&jixYtQt2lpyD*)Nfxb>QyvIV`F)FPmEF&BW{>rd8?4skWn4JEmzXQ{BYUS439bK$aOUtDSjSWacf*Vy7Xk_la)^j zSW&|UW^JI+2~cC!riBY;DQbWRS73?oD&g|YcqXd{AS>_(PPwtAH6OurN!ZA0Dn&{j zE9vH{w8MaLxO{MW1V+V+LUIPREI&n7rjl}!-g8eZ0ClPZCVp?96<81wqW7U~0q}g$az-*6r#(MzP+6tqJhJLNc?l24%Pu^zOI+gB zjB2Hy@s2FL!8Y_ZYY5OOh>LJkDY*e;dqy>rz7ShLMk(y+s&C(Q(sni+#{ekS$WHUw zI+Tk%s>MR2ljEpl-o6bg(D*R$(0E5&t zz>IAJLxd1=V0Q2FC&zfwR~qO1DgYEly2;HD3U$I9l1ajqF}m*7c(&?pZMTzdr@r&# zMOYz|Lqlb5b&*oKyN~Jv***+7fQVRy zrH4^&aGIC(HViVWT*=Fmr;JdMV9Y7h2koOsUzszcso%H*V|${urQzP)RIIXdU*=2g za*4l{acTgO61ud8B4~6NqF|O}yTX_zi8b9Np>+sH;Avlqa=zEyv+>YLTi zN(qzGgU4%BD`GX+G?4Za@tZYRE8BUK!C3n{!1Xy-{xt4E8E@X#|BV_Z&we#1DWI9f zsA~rBT`#`WEtj~&s}kqWbEG3J2*@haqNSFtx~lbn2e5?hR`lL|aJ90Zoe5hcqChH? ziTekK^*aaMG+Z}KW=u^0xd^^ZVh2D*WlFi`R9C8(y;n6~QUjdCTq8TU2AqO)3|>1D zXvt)G*cZEwzgH8H3T zO`yBwM-3?_h_xz%2t!1I*+p!&RB@22_^gZ0DSPA?jrjW)%Zo`?nPKLXQR_XtM2d=( zOB%Z(#4=wwrO}^Sy__RpMvz>3)my2j9CMDL6ntRYma0!b()0Y}bx5arS{EScOF1F5 zcEkqL@S`+v%XrWC9HWJlI!;9&TUxQB8YJJ0iIrnTm#)a7RGP@yaah&6g5FKZP8{XN zn%jFyRl%47-LP1=Ou_Ho^+U(n?Pliem@EwG3Yujwp_s_oJiokWwLLz4Fb9%i6fHcj zv55L!M|2wJgp7cIg=&skS$JVPtTC5?#z2o|Kt5XN*0QZqW?HA@aEU!A(M3s%8+ ztZZ!DRc523fL8zkI7Yopgw8q$+Z~fF13}o_Mav1}v&-d6T;lsGa)nP>*(xj{0*$6L zMh9F3((XcIKRWTsB=p`7huyDz>+bLU;%|TDAOAi5{+HHg-z0q6U$6UX-oC-N-sO+} zr&pi)JuVS zO>Pv$j^Nh!DW{O3A+2A@j+@2ysgmEDntVp85Vr&X62e4E9ZIZhD_V5niCy9nuTErQ z$P}VUSsQTlAb_H-r?__H(2%f-T_-kuzP8X_)B={>;WcpV{O%p^!X8;P6at%FLX!pVxiIXEdx5D{mn z`l+Nzq$SB(M0wq&go#d+ke|6lOg1uV8|uuFspi2Q1>YycRwL&za2d#9>)6RWi^ zr?D_cw-^b!9-1Eme{tyh1@G+bjh$uh(!rF+!g7)clh1AA>;cJ_gIggT1dUp&ir8vC zI*{XSa!hJh62u2W2}VvmRTVLAP`U{z`I+pXdOiW9Nx??Vj@j9iQ*jdIEbiG^?m-pR z64ixGN?62p&MiqJClsaZ2RR5FsIs^?eo1yT5M~4Sywoq3_*)XW;N`-nF^a012obBa zDfrUG0&iHzKrVelu208;ROFMzv%$%tnb2oul@G_~UD z3qm8haa|)vu&=-&1i(!@W}#C4Vza>wJvf-E;m!L)+} z8?8|xu7NR!K1^d6B~#Q$S~O4{0Xz$_i%wc9B`lNFvvX}(xVTAC>#s>1%5_Ad23xCX zyFi&)0%u37T$DAOs|+fKphYF58Jw=7^I>y#b^{RW*t*6JrtOxfeJv0mfd&Bx8K|m+ z#Lej?ceCUv#dwRHljtXaBAaFyMQqK7S)u&#suUNcvo?Hez1fzV9DBf&Ld-O97O4;$}n*~LW&6{#?E2l-Kq}`0ph0d#!K5G$g5b>fTN1emgGqxT9K%$gv%>YCTv2M zI=gzPa$|;Jn{3UsE(jfAhJa0o4je;HS>6d0gf3fDjz)`g4DG@uvqmxi@B!Fl&BMLy0BcgDZ zYJBC&GkOpjU@$nUhS6rAGCP0-Bj7`PKMd}3krz-?nK|q!ttM1*>v1$=wy3IH$jM*; zhONu6Ceya1^av7W)_bICUxSOzt_6ULYdvhR|vtRxNo0L_Pg0Gs(EuQrS@AYL>(h*b^}D+1ekkYnRd7-N`5k zL<$zb=xPo#i*3pvtUwg746IT=kP5+Jo=c8F6+rJg0+H%HRY$+adJH>CJ+#thn8UGhzn_G}*)$uD!5-KT_m#=aiB2dqO)m2Bvb^7UX#KUY*JhjP zomfWRj}*`cjA_G_9x0q?Fa?-J4ycfhy%W4n!u#@(On#zkZxzAVGT9|OXZT@z?BB1+dv3+>W$XQe@ug7eJXVt*r5(}g@87ua0*zv zfM~QX)j$YDe!*R;R=hxuMIm7?7;F_fv?!kRP>%_m%;v_4N4PgUrE!useaFDu@ zTh?_ZEYp}0hs3z5%V}gf@txl}&)t3B^S-#mCBB~`7n(J&Dv(V9s3Up~NHKFtC}qBS zG|&vrDSBVJzWD_I@DD!z`TzBQIR4TFr>>hJzHumAXu|D88) zf9&D(Be(6*9JjMwxm`6jU^X<$nMcFaVDRYO1aGaZGZG{x(sRFBa9L@M2eX)38@wO| ziUE-3A~wK^q=p%-aQ1YQ)Yb|cORkD3dOAf}&J?ACBvxcQsUY7tTNAQUDSfO2$jN%I z6zq`z_U5BM`SPvC$JH5Yeom=QA_vax!k*hDYn!-#%uC&JiA%gHF@zKBs`dkioHv=V zTRKwQcfeQ;GQ!{ z@&JZ`s$qpA>mAFclM!)TMML!1h8(W2MRkOZSOWw*={eaKa$y}SpP*yc<5l~{G)6-$ zm}sU(9pa=mnT#ninW%t4u`_A%Rd^a$?mD_2?3y=7-O7zC(RD3>09G-inSCORZYhV9 z%-G1Ia0u->XbgrSc;*PUHG;-ub|uJt_BVr`^eLswb{vfBzDXynX7)VaAFow@Y}L=H zW17_+6r*wV+`Pi)rl^P1%Z!fxvPtk;M@Z!e0J?E!oIDo!p|eXL9koa|6DLy-IHAI7 zRLa}pM8b?an1PA5<#RNe157Pybh+`^hi<^c%aMd}Qz4_}hE#9Q(%ExpNsYJ7;qzj4};V z7Atx)p|sV(N%c|Vl`K8Gq|<{wn9?N8#ul5u19X5)ezV4&h*1^QS;!g9C_ugzi0u$( z-L%|ii!GL2kFE2#y(Rc`lK45yXv z`5p68w_M^9uSy7nxaOeVAD0mQ#kUSgkfmnh$ zQlq)$9K8qxL1Fgf;amE`ru1V0KD_I%?>%uHi8RedqXTMG7mo4&vG-<8vt`G1*jkzU zRDHv}eS1K60|Y2g00+n+Q<5c14%*@HgZ=6k{~d?@U;OF_KRX#?9And-1}7BizX~uB3g2MJAm%nb-%Cb)ERPT=32QHNwkR;HG>&@s0n+= zG4mMKlb;^fFEifXwRgQ5R3gSCPo$2CLoy{>U~a~Zb0bpCU7eA-qjto?`aR9Q*uYz= zRM8M!Qyua~uv5)nV{DnfBw2i;+eAu6iY~bo&4NG|CEP117M9;LW5`!kCCowZDjH*r6O9Q>ZF`|ebG*0f zH{q{V>=K%}pUH9?l|fi8?C`n5Cc4Usw|U$5%XuNGb|hN}5F2z8S}F-~HU z&SQ*VZA8AxA~Xy6Dq}W7PE41WL84O*q2~mgW|k?GtEK}%l?`?;Y4Y)nCCRCGU;>Y! zL*yaS5_{_C+&TAUEILp|noatkjYL9IHDSA`W`tM|CFaI&TQ_&3qm@RRCVB2*J*@v< ztO|&0W)0LaC9{x9+}}7n+C`=)$;e}PLXsU2KYn`rumADyfA-)0SNhXGV9)mMxBdHn zyZ!d>UHs@Dy!RVF`r&(*-+PB2@0WKLT{Z5!?V8sxUb#b(>9(~tvapESDWx2phFM>1 ziT?mdXXZX^B&Enfci`Z3ji_753P(isP(_l;1PG$d8MoAEVHhXxs{+D?<_|{Q39_A3 zjq|NyfH~zRt*JL-qvKJn5Zp({+0M1p#N`{;Wjb>K0J0FL;;eEU*w(7US3A4tWB;#A!B5&sRo#_i^otV zc4RAu-WujE?GA#b6k^pj2~d5a;>pxNf|)rG0;G!5Ip+MPG3H3x(KC!Dn4qpahCbv}clM(&akJ)X$S#PsP@M?af=#KOQaZXfPgx`cnx$mN zzPmf-^N85nJByL@sa;I$n=DZKgOry3)&JR#=_eRd0%d9ESJ8f?PD#Z%Rp(G=q z><%!Sco>cR(;^no;;EjdsMdaF%rj~vAR)gwv?lRGOPVKpB#a!QXHaPV?=4v70Ro~ zF(m1R@C``NX$es|wVqFe?#fI8=)#WN+vxs=o zt+_FC&Fm?owb4|`VlZSX5+oL4O&wsL-{8Od$>E>eE8`#0^^eye@| zZ#@3q5B~Z)%XhEz!Nu}upBK&d3-`{&)ubzLH5urTm8{3)gz=0eFpszV&E|1u78`+s zE+&aJj#kaS(g%&vhJ?XD4mavzvJMS(`8X}RQ zbf%dpNRhTCoeEilQaA*GYz|3lz>Lko5XwZw=mI2jI?|1MXM(RnWR!{4&S}aJ4r#|! z4|V9#UW;QS_R0f5`3?jk1+(k{3K99~9l!esI|Cg?E(Bl=DIg6FP;djyvg~zB^tLtw zlM^8e!51~>ec<^)_Yv>yc!W6fmm-%8=rYS_P?2 zTMhtgC?II;HD@a)Guki=-xC@ln4AqW0L3Vj*31qz7=c4(PpqlgLEMsT2xD{W_|eeAGHL;$pF$*`p>-hrk!XP9|gR3`;_feSzf0lH_vt@lZJ%ThDxcz*Q=t zoykEb0>kpip-7`u`JEf|aNhG94O*3CSUsU5Kd3Usp%Td`OKVSp=<tNbM@E$=J%dle)q9`cp|*W(FlM z-m6jte~*?2fucQ+=&<3jDpEj&k(rTzvN;x8ozTpohEgE2pvb5RLzbvCQ}=a58Kg;ar}^^6V!@-BdqR39-5U9hCG z-cU~1=o-^CoEDLCEBP|Gnc%C|B-g}!k7Hy9cH~}cX*EQV#jcXp%qfcukj?eQT|T`Z zGlVGd-vLzQ==}`7l)Y8{ZP_QuM!1wH=SmCUX6n&Wn+04ee-|dfl@bNNd9+ ztJ?G|*7AUyq==+wW}vw#6A>{ajcH}!s9_1Iow;Tz|8)eduU(w~s~|u6R}fNJivC7w z&dUo}hbv)8is|h)+qzey3iu_0QUb~?X9(mIOy$tY=9E8 zyDy#3)@Tfg4s`)SE?pb<7wtauGGfi#sX2MHt`x-Ak@p9^cfrR?nxWAkxD}THHguL{ zWEdjj?no`R_gVj>1SM_S5S*ND-r&+<9PIfe%b|fWAdIg=D(1x)&d-~c*&qpyCs@jP z0k)?#Rk9SgYJO?nmB-X=XBR@bPc6>o=8$inQAiR@Pys-dMhwB@I(j?N%p^rUPrq>3 zF=luM`R$>4d079ZtS#Rbl&MSe4s@gmWfv=0)I14PuajIripR{mZlB+*|L~7K{pA1p zhxz3vB>laQ`0)?$Yd>1P_d6fId;QU)<-H4gw6m+G#njyQhP{H&B31D*#s1+*kSb}P2 zLhbm|lEueh3Uh2yH3estW4sjwidRv6Fp*-;I7v=FvB)$tw-M_~Fzq~~*ajRE!Z5SS zk=j%gv<`q+$}j6Aqy|3JEf4EqedDVtit=XKSUTJq>t{b$B%GnvI)gxAu`J2mH-;m& zG`Ge`v?Z0wEZc6U0gB9`Y?WI2Dm3aYSO!u(1Dz?Yk(*GW8yjU11#jLG&fK~8Ed5^+ zk(r5Hh}({vj$_X*n$w#y5JiG3X)-}IaVQ$mGuL2`_~cg4kD0Rze3GUgSU7-^=iQ2( zH{#>${;NoIp6L*UN47g6pRVz$^Sx%f#%A0@hrX`B`}^gPYCTIXAZ9&jhK2C)p{yuh z^CdK>q@QLb#qu<)b4n{+EEC_FhW~$ATbu?a_L3xPGGSB?00_%$hLs+PoxxNiEno9? z1=XHFS)a@GWvXQjAu2rcTQB6>BkUqJ=V!>-SAG9mLkKDZg03ZNKL_t)8xmi&K0aX

      M@Io$ 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

      YwW9fi{24ELe|d% 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 |5S#`Dl|&+X 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

      kP^bc&kQ8!Y5+V;6z1%`iziJ##+c!CCN^+ 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�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%0Di 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%0AH-_gCCsz{r~ar{pR;SI`xwU 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⪼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%0DN#9$@Fkm}!BbV3#v)8}o#OSi`2 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

        iJ{`~$ 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 X&!2eq+|d*Ne*qdQTFTXmR#E>Cssps$ diff --git a/packages/muelu/doc/Tutorial/tex/pics/lubuntu_3.png b/packages/muelu/doc/Tutorial/tex/pics/lubuntu_3.png deleted file mode 100644 index 72db46f1eaf98e9486078dfddf174252e632a114..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 408127 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�-|!oeqgz4;Qy5nxx-9DP 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
          y;>`wf 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%0AZ_nT1RC9j0=g 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 z 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%0DXC|aa{ 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ΦNI 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 ~f2h#s;jfZ^o#_M&Ck_806_$%g~3?Wjp_>RrU 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 KnJOv6fd2=Y%@(u8J8m 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%0D3p08V&x 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 M>$WD(d3VhJ0>J)k8~^|S diff --git a/packages/muelu/doc/Tutorial/tex/pics/s4al2.png b/packages/muelu/doc/Tutorial/tex/pics/s4al2.png deleted file mode 100644 index 5d90273df3bf9cdb1a802c969f053b8bd3cdeea4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 29236 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 Z!Emsgpa?-s4sPNFO*K8$V&$j){|6nyl8gWV diff --git a/packages/muelu/doc/Tutorial/tex/pics/s4al3.png b/packages/muelu/doc/Tutorial/tex/pics/s4al3.png deleted file mode 100644 index 47619a09e8187359c7933e865b38207d77639717..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11001 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�et)z#3?@8yY2t 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 diff --git a/packages/muelu/doc/Tutorial/tex/pics/s4bl3.png b/packages/muelu/doc/Tutorial/tex/pics/s4bl3.png deleted file mode 100644 index 96cb2146c9f0ee2f740c48cc7c868ada4def6842..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 59234 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 KR=4*ZOZXpa=XwJG diff --git a/packages/muelu/doc/Tutorial/tex/pics/tut1_1.png b/packages/muelu/doc/Tutorial/tex/pics/tut1_1.png deleted file mode 100644 index 2e9aecac8070403114eb300c6ca23e65ae5f668c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 50089 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 M`W%yFk diff --git a/packages/muelu/doc/Tutorial/tex/pics/tut1_10.png b/packages/muelu/doc/Tutorial/tex/pics/tut1_10.png deleted file mode 100644 index bc0d392757c1e09deeedf000c662179283bcab4c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 86365 zcmbTdWmFwa*Dbn%1PB2VoZ!LT-3jjQ?(Xgof?IHh5L`B{!QFM^8X&m4!|goJdEa}_ z8Q(ZRZVwo+dskO?SFKuW&bd~FE69l>A>bf@Kp-SZ2@xd_2!SagEKSV8O`L|iW`^HwmG42R;$p_R8vbnN= z|2ncg&APhqi|AuC>;b&%`x=U$nn8vdJu1pC{;L?_^SX**h43MUURf1^FM=pxg$Vy? zB-|nOtlHy)Xl=yL2Fqnz$;BCCea($0juh>YCxoACCv+pyD#!Z$1KiFE=X>kzxjd&Z zauCoFofnZ<>;8`zg+?N8Vm)K(2ixnrB0Giok?%sTVi@zomL!%=1GV^%%p_ds;yv>k z`+dTEYiYBaBn16svenn2QUy|SlDQH!MyM$Rm*+PP_4T$M-~$Z20oQ-K-kAA8@|`$#uNr^@ZnH;I#z15@IF2eZgWr z&dI~mXg^=Efl(&FhzQxgN_r0V{pB!qdF7HBH1X>4E;gv+Nw|w?X95)lQIGQ(JH+z3 z_ZD|vnG^#P^Jcq-0e6oeopCT=?Cm9f*T?ii(^x`^mmBTzG!_M=?kxugWbsM}3U9Wq zhez2y#5V-Fui5?qFZh%9&hGB+&USd85uv?3L9DuxQhZtx89MwM=)mac=!66`(B8FI zy_W9xoSd|{js5-m2R=Fu(A&3f!^6XU`1L8#mzI{iJUkqlb+Y6r5{9NB5VVANXc%Z6 z9UT|$)jaXoKM27&m6frv^2XNB=>|>+^`BRa(%BylJWIsI#JmRNbRF<|81V*}b_B%e z5PRUY)(>4Olh^1Tn{Jy^TyKlAmq7-GqXWL$H;O@C23O0C>&-)5oY#IZv)`CXO3S0z z=q2O1v*a|@lH=k~u(9u0$+p+pT8@_+?Pcf=(eVacxaney$<0S0EG(GxI(L8eA!l}c zwtZj7;f!&j9N8H=hjH;45ozd@1th~LBrjyH(w687ePjh;ZRk@^;c35V`R=~X6+FMR zWQk0>?J3L?@R9221#JC_kN?`#WIhnH`f}=z*3;8syJoXoBN{}t{)WkTqP2Ae(~k}T z0U?{$mlz$P9tT_&87V=!dG5g(!_whK95*;T96SgBLkeIG$889uIk-t4oMDu6Xugp;P>buaMTuNXF`x}YizZO~|hZ@`39`Edk zDXKU*Aqag$@+TQXZqxI>+@XsW+uGl!!i=Pfn6|2?PLe8{WrnKPl8w(-puD=dfyF8B zRf~y@Q<-TSw;SlW^V}aZDlT?aL?QGrACv_d_Sd zy8PWmrX_zmwxBLOc96Loz6jPz6u@K23k7ZG5pl*iH|x}Ejcqu2UmqmtYcLxQRRr@8 z&_*=fTJ}Dl#_)p6N7-$cu-^_J{_^$i41ki!H*DJIV$vy^-AvsNDYVq8oL5EBF>Pmyj%5LFCG@!?-zThk-@XkubEm(cKd!`8f>hm-IfXY&L$eVu-7ilCR|#ovotoDE)4gCA=h~*FA%=j zbAF(w_WjWIvYy7`z1|v%xWJiu49_Y{ar#oUH~NV|Tf5SaZ?SW{6t3x7R#HmV8sr3_Xe8gpMzW=W~-s0p}Dyk@FHt# z?Q2Q)A8(GAISjkM{i0*x;Am_rUg+r&1{Q(9B@jVaam)gu3oQv^DbNvYZEQI4kS`^M z;GL|l)U^m31B#=DpV;%b=F~IUg;COBR~$q$0uN!a$s5pUBG8j&qn(AU3)qy1Nb_ZH zPgec!x7CG_zI<8Y^_meBpfi>FwC5tz3w5kXO}J5dAd-&^=C-=m&?8q z449BFg2TR=+zGMe6HMu}TP#voc1=iFB*R?&r28ksprVjHNrX?6q}MO11`Q+@=)=8Z z8ONZ^8?dg6O~AIsDhJ-nCsd{SMn zt#u@svbTfYZ+wY3*FY2>PKb8;qDCigpP^R$eP(uVggSvYE&nA~f?=S;Y}B!+}E zq)3#f-JNeyV8f2?YvX6Al>HgT7V!JB%KlBSQeH;JDN$+`2Wbld!m6vKC8e0CLF<+% z#RLEf7cFo@Rj~wd9Ak%t40~ozE>hHwSu6P*emH-8e0M8RM>3+oze;>R;TT>i8`|YZUoYrIHME_rf$+fimrs}F4TjmoRqzS|PSMTm5*a=Mm3cSRMIu7Y=AAMl&B@`V!zeb3jvMhARvKQWv2uobzY7+sDP#RoxPml_tl_6n(#vw23L5;?V#usv>9@WV$uj>RVMgc2isdXs~L|)A%U~ z47-p;`Z%X|^7vSiLF!<*HtEE<4GKK=&O$@NN!$JTa`KtwG_{S#SyU_&9+tOPv4s*T zO+$4x6&=0YYTI(2y?&lB4Ng0Ll2ovW(enVIe|;6~sQx zsGvThKUAOF)Rd|jF@~1`4U#H||5TeeWFkWvVyIN2k~dX6Yh}jU{pTn{km$P#8 z1jE%E2e@WLO1{=Z_FqPUG-~CUtd>gi6}rz)Pf_ud5lijQjl!YGROk^e&yRp7V2+b` zgOS}~eaR`eSDz>c0}_NRMC!_KzhC0S3r|ulOQy@4$fTm8o85OI6`Eu{-a6#5|8|`D z+M+sT2`rT&$prG3-99K{NTIAU<)7sSTkQ@%UkM3ZF;(GusNYk0ci+FW)2LTOg@sX4 zQv*0ltL=ft-{1eT(Vp2~w+k5^g%musf13X%eF$&!u=fs+RaUt$*<`gH-~IlAZ0GaB z+M40n@2()Y4`y^#7E?dh{a>?4hXB9h_i~Tg9|x{km5hJ7-?bHw!BeD8BJ^doez@9~ z35<(-EH&+)5YWFEAnX8Ovw+WCF*4X{I^ZGxt_vC0pSN7VFX?C9+vQ{@j8y%ZylfJ< zM@97K5bUa&Y-^>tsu9LT+L?Sau-O|?Mb8xaaHuzU>C}FEd)wG8W>$9>y4i-StK2tp z;~I~&H$DrQrr6_(Dao047C)bBNtyNEGN)k+VxkG}x%lKxcDt3UIjhv^nVK1fg)IO`Xl*Y)1xPFF4?t>nRR<*b71ep`b>&h=3_ZwYCOWjtccButoZgQ!{l^=}$<1 z=k8_D*RS#MsJYz%2;Pzq7ayOeT60Ul6S*F;2L=X)kPVvDl&M#~dHWXd#tP`JwvmFazLCi@)kN!t<2QThS6ITTwX3EE%g-|CMzq;m3tMe-3UN}*a72YLq-yG z@)Vi-hX(+dG0SNi8h)0Ah>8ZEoDhJ{jx@DKlEG2s>EFM9PfjkKKjh=({UY3xI;9Zt z^JKLpBRe~0t0}jHW`yulbEWU&4FIXF>LaM`_aQ|XvR1hsdU|U?aJSn|&4NTWtG`?$ zG3io;G$mpvoAThV4XC4|(S2hp{9iXaaR)Jzo&nR_FtC-qzLG zaY0PQ`k=vJusT?)-eo^NqUGDm!(pX%quudJ^X1h(ix=PdR;>2n9<2V)`Td#F3v-km zR@lt@sRGMRCW2V|-QU~42wC?QNF zVo|Mre3*Jq2fSYB6Fv)!33TM-X7d&6m3qacilmZp`9py}<+8egNA|rv(FLn1GqJI=-*g7Tgnl6O z18@ca6v|p1L-2WsH#axkPF7rZWL)&tM%WT(*|q>i1+*A>8J$m3rNNn;&|^{fwKZ+K zI1#$9q`6ip{f7NU&Kx4pgl{0>@3%#1w5@aERBaH)?QQhH*(llB$*s5h0?uK3X9p9@JtMrl z950!gMI-D>33_B7PCd?mBY*6`?m4NNT3=ruu#hS$DmY^VMk)z-`)w!7 zbaMDFWwS~c?G7s|D-n^Vqd69ahPh>B)_}Ex0ICNpOb!l?o>3~QAz%UeK3w5*U*Sjm zB;cby^?mm)76YO0hfok4GG1yzg0iU}h?0^Lo6!Jt*pSXz61>S_w*rrB_k7Zl_jrA% zuA=gW0k0ka4OQD2RKxHrT(Z=Q8mX>JdWf~vMZQ(a5jvT;5Hj*X5($dH-J8z!@ON&8 zANsya2epKHt3>wju3UXH@bK^`lFRac*cZ>cgMqtY&~IPq>4Eh3o1Jg=nNMVc%XmzF zKuLU6u-5m%H^83!pIv zwoe*Pc~6)^|J=Q}*tfW7Iuu_3xGeBR|EHfnf3`n4rKO~#L`RRslSz+e^vPICr}!Bz z=((DzlE6?W^%0bgQORffoYNH5i8T0Op6m|2Zi)Gaw`KSrx(x;-k7!j$9)FfZm6G-Z z;n5r5b#m5e&>+4Ok)0%bY zCt1fg7&{mMZ*G(Z1SevWTTxMbIa%4mrTUDtCCK#jU$=;%d%PT4b1t8q-`lr(vRIoE z8VZMY`Q+*KcylaD94A4_JbHh#9F&=r#f66)JK%i?Zgg_e8y9fdo16kA_8H#?ww&~17Ihfo}Rd4cLKiYIGA%?K>riFjn?!0mwo)}yAwH~AtB*_ z0w;logQEtRG&~X#8y*3>rPBL8M?B@SS)6DwT1>zyGFa2oe$q}@Dh>7jj9{}BBeBKy zHlPfM?A*3nSS4ikTTrh#4Tqr7RBa}mn|X|;Zk&CF8?{wQ#q*C^}Il{oasfn(w zbq2tBzuw$^q%37TbrKd92IlL9d7>fj{z7-IDI6%s`B49e{w)ZE!x+ZvxOw*+Wq7QE z`1bh7=JN6~t=cr?=?Pl;hEK9!`!wPsLhw;gQ`#~|T1UkXs&r3i?aRf1S&VXQsyGS$ zdy^B2oY4Zy2OtEsxE((|U6KKq##o7uk1s7CB}LuO?_O++dYO-bAy$*zLd12<;_A1C zx*8iR5$sH9S~qQ9(x*eR8r0dSu9|H7b8}z&ENvV}jp#{qq`7G35w;RO zR$1qJA7qe%Aex}Epwf3;_^u%G<_79@t#2E5%g+35E$6UgYR=b!mVwHM9`DXTXILX` znxl2b_33%UI~m@+VR1mjS!wruJebu7Yu5JrygWP_o!{Jy509%+CtXE`qM5}bgE%?u z7JNqQ@M8yh95VeJk>Sk_c$Lh4i6{9_cPcF}{$+sOFB9(M$x9y!gIzdf z)%6=gmG0>&o8PyT0-mvoD@cU+-Me>8)RPkvr#oY~K=hs7cL4+(?yQ)f#pV+-O?}j= zizUhwNNk4CR`uy^B*L}o$%LTZO?6s>>3qxx_tUkl^R2tPJ8_?OB39O!KO8~-HKl0| zV$h`6NqQV4#1K2DNB^kBgNfGcO^gWs$<8GB3s?X4rN@eWyJn-qMmL}LO;wzoT}8*s z1I;61Z~yx@(9vRJsZpND#fw}Q9r{BHH;0%Jq-hYEzY0aq1}0Vt--JR{krxYCqzyZ; z7bF3q4@L9mGt+2sM|yuWT`*E@EH3bJS5WDEwHHUP`wP4HHiC)fox0;=(sm^Z`5UTq z=6muv>RignJF35XwF56;T(?MltX5QC_- zb78S@&bHh~e6(E&FBN|(flpr5PRiZyFB_z?&9;P~vati=vh=-S(vO?TO_+|7YOl-k zBwd-3`y6Hd9DFIt|A;eL2Bj=)M*f?RAE)_>0&k#RDvg$9k*(NyFu?GO-k%=(fkyNa zN2c#@K%ks~tu~9u2o;+FD>m`I05W}aGzz&rNYMwDtwl9cvw(c zc`BEiBqh26x-67zJgLy0s8Jl1sRih}L^<$kPA4l|SXfwp70@@%@qo}_co`-_T%e@r zh)}QJ(T>HS_viBdXqqNhK|`&uuAu=opoW=DyZidE8i0{*?x(|B=T~07Dk_Pdd8%qL zrk_d!d$qoN^dd;1K!;CN-k7z*0A*!lY@M7SgR-*;va`2sb%#d8^h@S}Q3Pf4Njp0@ zfPMgW3kc#|crjU7;3>MWzD>P0ueJlnWbKx68B1eh7!X59!q_&4>nS-s9Xh~EjmM{l zhlZM64|l>)NT_$J%Zs%RR(_;r5%{`Rfq5@fJHSS;(iV#~+uz=y&4INC`eiaX9j^~& zOG-+-+W5)HwreN&jW>aS)n+|UU$2#wlyp6-&Zh5ya!bj_2ELNi8iJUUSx!jj2r&3w zl(Ui*aCS(H97X3_;N)3G6uwLEw@BBdk(*|fg6Z{mR4KHsk6A{W{%RDBlsd-(T+ zARR&clQ{UTW{O=8=SKW$Wcqx%&mTUO{0RHlnISqYU z3?{tmT*}fWjpU@Hv90rRvN=3J4crD26F3%MiF%2v)0}#Zs#U0cU!I!V+I*FiP-{I- zZjMt%qMn|f00C~Kytu{vlmM3jHT>b`I3qnh{ksA`7Qn)N0X2FD|0aa%-Phme9;32A|pI*a06ivUPDkilXYHt*yTk!^I*q~zrO{{Hli`r!-hu;9)4N`3Q-fUeF|fUl2i zvrXnFb8}#;%Ex}~0%gPvz%sZ^%>J(19!j9V{l%F;A>Yqv^YU~L@H>8fe&^kB(@pgX zoo27=gRn4oaq)o<0#9d~eUY=^u)xB=9~SZ54xo5GJuDE+B&0JJ3WkW0$nrPT9+U$J zKOg`WKLELC5FtUcy}g~s?da~L<+QLjJl!ms_)3X-^qp#1UMs*An7s zz?^oR_v)9gF!=84+07L+D8XJN4e*KruTQmRV>nPN6p*h#`YF z8vOnlNOhSIm$jY)aO(J*y;y(18Zy_VS!_gY9{S_fPyq{cwX;!G;PuPLZ^VQu(0)Zs zEKJDaMTx6g94e(9pB;k|!%#BQ#PPp+dAl8@?BFXsoZ5mBK%I7j-y<@n{u2PlP*G98 zZg~KNP_0tWR`Nwmh@6Isp1zP$i4t8)Gu+muJS`ME{Ur65ziJCCWuW zzKMdA6#mWE-@grR_&x%d|BaANlS3fs5U|W~5t#j!3#3yl((M4gc{m3?U2F5+8U2LV z^Yr|@NCvmDu>lCEkjoCJ(Qm13?3hc)MXDUn26+ zr9_2<3@uAm`uft+UfI%d*@9wYKOEL^ad9c4n_d)L0I>l&AT>1=U`f{2)^3HfXLDb_ zeqCr|OWJPy_`VOwpBNh%sZb|HN6YSxXQd7P{{8!McjEB+;e2aAT{;2qSOx~p0%^5Q z+ru?AHQxr#a}DtqzFE&#AmQ+STMX{B5eiU$W(T}ecJ?^$qyoAsal#_cLZi=lc5z{U zIh{Ipa7Y}fWQRs&h_N6<5ZVF62*QDhf`twUg%X8%*ZH;+1P_7=^*-%SBjopPER{+p zW@m3mVbI-MEy~f+(_*T(&+#KTIgz=8Oknxn9+Lx!MbvP$axc#rwA$Cb-JFK)-QAQy zlhHtEu4b-XhRjBt=l2g zIK=0y3oZb0ft7I`<&V>S0#}a0?)W~_kD~zGy%|?&li?ic>TX>2m`)7nw?8Hq?}6ZkY! zVa@WR7ugZ;K=IHx0sR4H{cDszn0|xysD3~>Ai_Tc8;4G5kinI3_@-89FG_Gp#`i|v zW=^t#>1mADl?Iw{yxOvXBpQ)KTQ-+%%H&~MUuv}9g{yKv(A0#1iq7 zXg~sKY6_+247PR`h*f~?Qbzo8KWz^U6^}jy*JN^+g!ODRSfVK@C6l>$ zPhf@hEkrgmu(wQ+ZL)Q(Tv0x{$pwX7NJsoklp+I7vie@`AgO9DYTMU?Imiw{cmY9M zoMMMmoghw70My$~Z>D}R!);+ZPFPkDVZbIx2r33DdTYh(vFXbct3DBJ~z9VfPL=ytPPTT(}; zG_UnyG-$DJJku0N0TPm}1r~#~;Rc3Ihkl-o^KS8AcC$d*5v)c9lZ11HFu4Gu4~>WN zoAaZUf_V`8``$MapsMq&EDAZB8U~&c`_W|xA`siS3JC#LIWP%qS;la$plm?+j1(fbgqm<9^Jc9CLl)(;$|H>is*4U;e-f&h=M zr{TTTe?1*P4G2K#Tv zO?(!fwp{W$*2?;s$QS4BhgN-(tK1rvHPIn|!BK zEzk0S02fqu<^Yd?{9A!k7Updy)DI9R_MYBopcB*;h!=zq@JO7UANWDgsYyP!IVN%v zy>IJWHoM~k=yGRb{ptA@m4=2srA&d6U-zk5t}>5ucyMF#@S55*O$B5;~nvSCATUm^V!h0V*(^~AU{@6T=gBIBg%6KU$sm;s#ZTo&7s0jql$lNEP_-zaqU>*Y##6pM_*pClejE1-90B*ZJ;^ ztmb|Cd+day@bdD?oFLhylk$#nI^2*8-W%GGN*c1hW&Ow+JSAxCa=*NlW@-y0TRDrK zdeQKD3`RT0yXe|VD+>3!b}yZ4YFAeHQXy?9t`bKb6m7mRysg@74a8xkC2HaZ>kEUl zGH*ciDKtQO^~>j!5#I#31&v9p_s~<6Di30B7#QRk7$!=4Gsfl;e{zmM zSi_6P@$$$195gHSS1z=!{0s^}T&68n6YpgFecr@NpiazmKmB=Tb1(93patF}$(A*; zD8z@LB4|+sb6;84c}`G`nS3YxH(bLFqN2%Z z$Az?ob*Pk4!drvbeAd9=RFI zRiiRdo?vE4g4?T^KRYpH*Lt{l5eEw9|2*j^L?z~l2>xer@!4<^O|ALZgXeNXzgm%1 zW`0chz@m;t4EH>C=EOvYL*TpJES>?BNL+Qof3CEW#OPteidPwW%UzPMv|b@71lxk} za5sN|RsEwXj3^9YxX?pEpwn7RF=$)pxrIx#7IpCn>bLC-bOOTnbBt|F%ATUyh~->lQ_yc^@^`-syA z)P?|gc+bln7(qEVc3eVy-ujSiTMEw z(xE8Y1n0hp?H8~X06B~0PuIGH0;i_TH5Tv0W65Q(PY<__xA&PmCYOukbJ$B~7;RX6 zOvM_cvc`JU)D=a_W?!x#u`qB~9}p28+?{RLD~^veYmJO6HH&LMRo!>p)}o4^rXIGI zx12%TUaaB3-1Vx`tv11zL-XQxImR7z2?mPG0hMqJ0_QLp5n~^+&mM_G8MrI?ueW~Z zm~;D0nXa!YhXfa4n999evh1hm2In-qUuUJ~X6pX}F75RmPAnG=m52_Zq#22bxX9*B zlU<56#JI#2OD-r_P3650Q}I%uE60?I~IoeT_k>Di!bHdYb742mPbKiB(1^?Ieps?B8B!5bLXM)Yrfpw zI#kz`t*)Mbc{!{E%F(P?aR_2lvJ&3ImNmhD1+s@r_13$E_8r$Z=i!kpJrb%{beOan zRW|nsJt|mODXp!%>@YkZO~sNWyB#xsQvOqr1^N~ooE6Uh9t6NUU`QEgXjl@T4^LMC zm6=_$+^}HBbnH-PJDt6!G`i;5d}#(CYHEe4o>^l-V;^p+Ts8SE=Bn6z@xVu@m(x4= zPaWBGJmt6z--jmeTi!W)%kC3Ss#=-mXvViZ%*65{a~Ms}N7>9o5qjdS@pSmP?Dc?+ z+8u_bWN-NeM&S!boPPOm7`nwuLU=l?X%clLnwiXB(-R1vm&Qp3QTs+aX|W>hmK&}k zF!I$hE}m~;HaABZ$c;%<_xE>OTr9b~8&0qGd9|0H-eaANr$M&p8;z_|#eC-ii^qrU`pQEIT3Jz}y&m^R zo0^&eeaFQ;+djI1?p|7Cx7|$?-lMUX&$QYkac2z3>;TLLrt{_)Wdg!d?+_L$B3ek|&_Rj_{_py}1qfi3xqB&OH{WT>}u~;>lQLSr|kC z0fWQ8Xf_@!vx@_1&~4G?upiIn8=07xn4f3(1O5&;b=g$LTsZ_n)RmDl=E=oVPse+7 zc3H@B#mW8UT--pjeB#nYxRWr2KJiBuF#~8*Zng{;?v3I4x88`-1lSA5BU|e!DNn** z=zvjUrShAl{;?m!koSfZ%E?N2Y!56u$l?Y8GU}KKpeq;#5DkAoOCB--b&jUhSkz-?X_@DiOJ-U3 zRCYZ5^0}`8&~{P&-{Ws#hwDgkj{l44Ov~w9yMuRi^afeX2D&WMM!^7kmR!>>yM=Ct z(~l*+1OpDydNdE^ZH9hxp*@UI7;gf;6qNU+2a36FXk;B*V0wG=xSd2fHWRzMj}+7e z2UBR*F-DlgAX{R4`0zvYe~aD<{S%OBU6w#U#HAer<7Eb?n1dWYpM15W6G?_&^FMQ# z0OlE(;O$`yAccRh*7lgnWE_e_XlHG$U2s%q2?4|ov(Zd0=N*3_4UvdoYG5GPXG2b5 zPnXCR4hHKgDsJ?MpR+lDX%oRF-OW3IF}T_q&^YGAcaox|9DEq%&&vUGom!TDn zA)-{nRWK~=p8o0SC&l8eRhX09{9gBzSl>BpVr9ybJBt%|=zL!j9`Bf0NGU8JLy=Hz z7?=S0o=;lgDmxy|u3zIRB`qCG$m90A^97I^6wv{a-)M6m0aSv_3L^at+^xwP+-LdJV=7*D6t(gp11ys2}$0 z?b+GcfII@oHFXNhTEjPci!dO5-8xD#GSMQ4S$+{AkC)5LAWDemw=bVTRcMufg#-D* zeY9#{Z!@#PmKO0!y*8kx0RfbjRw)CgUg&Jw$+RLy$rN?JaiNbnjEsEZd9@Kdth7&v zD&uEWKo0_iwY4P;4TUf@7wMf?y5jS4KJHCDP%iR{74C$Yzgg*a$|%!zmzq5%A5~F93@-aMl0S zHhc!Cm3w_SoS9P zPc*AtVocW?+7OqzPH#n^t-btL#O&^iOg7Pbyq+fzlBC27cPG%Xc1)Y{*K?@jrRbr^guynV(K z2r?+7F+*LKSoyh`%%0EW4;Ah2F{iuBqlqVaJ}t-S%Kn5kUkg(omx7{SZ;sMACg z8{4svH((h4$EQfnb85;StUqD40AL@1I@*%@l;Cd!_ zw)#0GMDjnj`40JiDMLRl%D+ocuZEy#dt;oc_@m3p#!Z#A6?~8()|xk87!9D`qas5q*8G~s)mX!$qR)qHn>*3C za!Ld4YoD|Txrsg^O&l^#i+vOUTw)T9y4ghf^<{%?G+1tyu^lMg1lSzT$huXc{*~8u z{ke|yyJunOOG_J3JwrTMmYjZ7?OsGz7qVXlQ6yB%GPQyK!8FopCG^Mz(p}Pxj^; zD;0TDMqHhp0dL0-`eR~Vdk(Z-!)KcwSRUzF1uJ_DxE{X97eT5^Mje1n9n<;YXwN>r zQDPmVgUnp&^3R-iyJ<1{E{pEBiG~}NqG<`QPcjdt>KjGJ-5k-8a#7VH z1=L(fWmC4xYNkb{h7{v6 zaz9<4+{zUbbY-KhTMS8Qyzjc2k#PsY_^s_5>mXKOrtvTVEeW49lD{NlJe^@ z>7hR*v z?%wMdCvS!w9E8N8K|G?v%_9k1ML#Y#y1fho$5;YbEMPlgH9(b6X}Ly^)YynxN$n>C zz3&4NYXbVK37_8sb_|kOq{vIlHH6^dIdftZDFjShhb{(UJA@vl8i5RG*(7h)tX6PEDosew@MQVfFM(Z*849Ud}r@ zj;zo(S27-m?clM`=A{Z(D3OR3i_3hvYFr<8Keo#EAr&;eRn=5FxH+Ehk74_@{_Xm3 zOnb-)7>J>}nJuPLdp6lDm z+}MpxeqGFQFc7?R812~_nh+>sW(IZ*x$TYz6YvrEoWD&d^|<(x8aj|*y9@-^rS9%J z-Ikw6$75xNpRMKWA5C7hdQ!O_=gaxpqT5&@!kRMd)%SxB)HaV3lUBv z`EeZp(d-v5gm>jOfbS_vwg5B&R1GSssPyKiy96{mU!l?P`#m+i$D*f9lB(CjcfG5c znaVW|MYf?%@V{!w1L{DAhlis|*-1v=*IFHW7$-|j-;-Z=u$W8X;{!c)4H9s>OimWC z(B^JFt5I3&nX`1Z{#b2{{nXDp?z?$A8!&u zr+rbu?e^Fha95_LvVOEvnsJ#vGqXv=k~{IlVR`iQ5sBzK7duz`A5z*b@~(YuPg1Ay zkc^3;P}}bdjfUbtk{Rru`blk<(0L4@(b}19G%j|=#7fk~qYS#?M2U|hI|Nx~IxQhI zN#glRvU&v0k|@1^!PV?el$DQsp=N1ODvS4suE!$9p?TNamKh7L&bQF~{ABL>y-&&PRxDD}TRok#IBkdS zCv;M7iApXy+`f|PB)iH}71v!Oc~eRwWj6eGLbGj_-OR`F$S-t?asW83;~jq0Bh)usZSxNwLDoScxPHD#*a3{YvPSg}HBa;3*g_|`>J=pQY=l9?=Mo~q9mzEYt z;dy+Y;n6KKyFhA^=|vTk+V?`s`E5R>_biCgeBaTlns~Sm<8FY%b8Ou+k2mSAKRzbsr`DL-T z&QiIEoV2wjZ}|TpwD3DhsPwyamr#@Hj=m{U|)#$&%)wg|1F z0=I#2g-3+CdVonMZ$1KucBwhK=wA)7Y2ZP@Qks!$FwqCy)xR`p_W2x*`q$dVpC6zE zAJ*FR&?sso0cVszr-i*e;IQQ-nne2*rQJ$6HzT8>DfQiFdlli^b2l`%ZpEHq2RnGuHHFM43G}~?M zdlq;T;Oj0Yx6io3I6JFl<)T?k+bH&2@0YdETr7*kBN!%YCBWR zl5S$Oz~g9O@)zsHJPqh`8YMTz0?0b?)=59i;{QYBKt#jA*NX+UlQ$n7bxrgh&Gx25RDT^#7 zC1>Se2g{50W%B_g2d8j{8o?Kz7m)$Kd>E|g57wt}t0=#=juNDvH8I!z#7k%4vmCyy@Z`F(UX_us>h@>W#sIz{x!WzhoOft^vpq1N9X2z zOZVkoTwe?4@}#95QWWXyb0$Tw8a=u1(((L2lQZ#ZF-M!14=k50pr)6z>J`v+(M9j? z@9DJLji&P@>s#^P{Oq!rmdl8Y9QhjjewRVxBN|%m<7r1MK9AS-a1tPw@QxTnTA2RX z-G&ha>bn6|#M!Av9js&N*;XHSJXJdoS6nQQMW^*VtIp5A=Gp8C6m2Y5lMo*aDze8a zP|jGe0>y<$NJ!uc8{Yuqrf3Bt?8~0*4%$R~yp_wnp7+Y!$Q)@}BMj~|`udV(YM$m3 z)2z1m9}Vs>PPsiCZl?0q*zhBVxm_p?rigEt9|uv)ct3#fT3m(z#XLt~B@wm%KeYg_ zraL{M_$_X1)PdHfrt7&uzM;qj#{DXImn<;iq{M7EF$xyU_1oo|0Ln?AP7*GX^MQjK zi3Fpf$QMsp2lECF&1kMt*u<_@PM7d_HoAW7xKQ|uwM2c3YE#4s_4bxa(awS5mR+0!2 zd(>5fyY#p}=AVmcmm<^`(;lR$uXA(Xl!lU8e|FsKksmLz?EaC=oY>{zzQD(4!kdVS zDqn!3G4?kx0XAp+p;88Rk4MD=n&qL3R;~gkAnM!}${hniDoX%{j$Ss$EmvM{`~h|B1bO^!QO`=9F_0T zrf*N)rr)G9b}{msjHQpjz#W({-^P&y)6*Xu9X(y{LWqeU`ueq$jHy0P0VzHq( zvz?DLrW@C9`1SopgrrmYqp-W`8{7!_@jx}P1ir0qwi5{yX*16F+#d4TM=O;%q(q=y zCx8s0&R5>z@yuQD#NRy@ovs}}=DZr{ptVgnA1%O1r=U7DPt;i^r&zvwk>hXKig_)9 zP|}Z=q;fYr|0oz}Pq0pebc^GVf%&iVq7|5l^BH2cC^i{hPoH9Ho!uBEuje0<7ZzK| z4ujas)b)>MBWdD1VhEz&zgYwdxBM<;@skBUyX>v;P+0z;_=e<3wpK&1G{y6$(K_zZ zTYejx^}K1ai{-Xrh1pEAN;=X=b$@8!wSwyzEkkSl84HBR?I!bl%<+1E$uuqv9=&C@ zj3rQq{eZk$6Wn}-$3pJd6N23FVkPOyD*Fl~s<1nBmhJ$PV#R>Q3PCnydZF?jIX{5vZ_5>g;O)br;GhMCa+vYylhJH*nVwJj{PSPW6 z_Lo@gWY0ejQ}HiRFO?QmSfE0Vrk^w))x0YYMzpavuS^@yTQK#cnl)j_WPbux>@|%7 zHs(bYRnK3tvhX>q=N#=%VR+Y2D2f)&w=NlUnMV~C5zZw7MuXt;goQtx-G|!RR3H=T zU7Y0_hOE?@Gq{}kDUfngqU!EV1+5|qL0k-Nj=-N-YM|JAc$bQ@_vMa3Cx1>($bVc1k)4pEEJV9 ztz2AuN#V7OzBfFWZ{m)6fj^qseQYi>-AzXzFEGCP5x|k{l>GO=XvwDI!`NR!;xyV1IX`;jAFvN=6t4 zl2Phu&pudG{lR4x^t+v})6?{K)_V8&T`ao1z~ONt-&ylFb3e2i{d~qHrBk94_rq?! zXls<$sMPh%`}>v18F!HMMn* zpCCs1xsQE#bWNm7Ctf)nWhnWf!&Eq^6t=EzuUc-hmwz0&y`@OB5Cal%=cBJV300y|2{k$-+OmYsaKxMWs2l&Ny6s;dGD+K7e##5tqDujT>l>g2=YbLe+v+TYb(U# zyK9Zwo$fW5KsDT0uKU67uRk|8*$ZuMvZS!6!!OQ`&W}&=1vdA9ikwK@3jgmM?1L0i zA7KW^)5zL^-Z~Uv+l^+oA&@k!Y?HH2RcaD)x_)_`o%T3v2GK{*<0^!7O3lXaFklgn z*Js%CET8o0y};;E81wahIvb-v5v}tv3?|dOOMg?Lf0^Sr9Ksr(rv@}5yYPT#QZHXF zYnC*zc^tlw>J0b2e$KuM6DIvb+8S>~KKxdD^AjvJ=!)WHLaz^?_6jh&#H)$xgHGR5 zv6Lz4PIyR(x0fx)-zn{zA))ByX<+5 zwXeN`LHp)!!RKD#u}s{#P0{hjjye-J6I+jc)l^-XvBU4~A@Or4ZtY;r9GsbD+T*yX zo{n--dCopLx`>G1N1Y;1UkkmT*&LQiOG8Hv%)Pl?(JV5$=hDjOgFQySGV_q%CT>kE z$af@Ld~VLtf68`}_|lI(yik~*NKCnqifN;hw0eX?(0qVq3dQ>3VA6fEIL)cHq4-Sf z6~ukrk1h9=@PW3@c0N|83QS1G7j805V716JeRjF~g~oDlM5W*?V<*^p(ntv8Z%148 z!6JQqyG0yumv511911`T3~CZVsSAy(3rL`tW+y%mf|X1bv&!0z@=d+=rz-2qE{|0M zf3>{Zrq?9sfDoIUn!3BPXG-b4J(k}S%K6U>{Dbu;o`svYC*y(yWiR6teQ8!4qxw~w zc+QDaGQgT2I?orQpIkz53UcYAcRI&Q!o6D4c~3VK+YEv{MS}NXf@u!f^FhjmzX3j} zUK5;5U5IDyrBi1>6Xw}y%A9QMdn{MMrbPKhLrv{G1S=XLDHv@n^$vQz&tDvJ4SjjZ zU-%wV67x+}mmAqD+R!JO5;pV8R<{6oC@ z;6Eh)$QJtsQ?jM!AZqjksoOCep|oU!0y@{&Ie&fIbfLdc8<%H6Lu2$2-~FQHWCN^c zlZgnekdb2&7-jUEUWQrWh8=i#Gzd5&rZ5RW?;?Yx%C+W(A6B3i`krkkmpZQR&sR!F zp!(eH{P=-{75iN(>c>>yeEsNTF;$L|K{@qKE-Y`A%D_GoX3zmY`?xWfvb~)wL2hWb z4`v*&XO}!l$|0|(NlUqy#eJxAZ=P#An_e`{<{s*WALuDj>oH?F&4yUiy0A}8mnGjbdUk9&MvJv+D4%S&jwu5vzHzk+{zbB00qh1i7N^sVZc zvQNATOKbNW#_9*bp#jVg@xHZqNl8h5UO_l~2hEg`iHVbyEhaMTzU%hT=H^q1w}=1I-D{PMq^ngHpi9@FAUu4wNM-z zT=v(m5qgOT2}NIyyhs?TYT8?;Vqt$)u|T$I_?VTlfN{}klG1a_v(jh2-_8S)kyj+Abe zHGNyni9i)*SN$C8JURh>4Cs-~MjqmNZMrp*D_jB3^u@u(7WU@iV(RN}-6$Ahk~&Y!d1 z{_@_yO}oZT(a>A`*-cc@h>T1gbXZ#No<3Aa=0Yc_J%ou2p|9V4*&T3exvfl zEUDW2qs}EjT+x^a-a|7c(8*6riNsTb(5-E3DypmRmx67b*ZWwje|%1oS65fpRI>k( zwUXH$w$Xpm+RCDL$%G12!&f~h4f(@m7$AaxT(NJLbvZ&vTAucse^#mUJzWurGI zjFeHNTV*rdKwxbY@Yc+XIu5SV$57I@n#1QOo?6LW;nnW#O{YyB{nGdF0+z2?-g9i- z=Bo87!eLrEWdWVxIhXS6+bAgs(@rXzo0OW>?sMZi@7s%Nx&4{OJ*$}+Em#|MvbFVM zrwrwlR8$lEL`g(LW3;|QDuB(Jkf)9DALL$wDdUGDbhoX7M3xZ6lsYy!FuVu^sAd0}KOMqE@w>D|@^B%KuXW8M9s6G)0c`QSj392k~tJ8h% zeVdw__q@IjVu3mmAS>D4++@_R3&$TYVM}1THkvMD2@MMs6&3yHU$Q$>>pXaWr>UYd z(LVC<(9rre_^44GnO8?g2SXIp-zw%7SX*?-QydWVwX`J23Ed0u*N;C4^H3r(19nqs zy#?RD%cfdbS+$sfEez5A{{FT$BP;h0Z~GX^`}Rf-a>Y{BGx95>b$)Cyy?B~gM!I{o zYRw&%VPorylN_3-TzIyJWaM=-3(E4A2wsS$CVv;H*Y&kEMmZ3FX4=|3ZowhbdwnJ} zU6##AZ#9)JD9_D}%9WCnIl_n;Xl41LysRT!+59zzC?k5*K7C|jYb~$EXBPtXg~>^y zUmusl@JdB=hug!}QE=Z5%C)QQq%YjPdH;amKZ~*XZ_kF@9WNyBG*~Ucws~vX(c=vjnS|ap3;22&sl-$jF_EamrZB`&-vh}?W1~2E_r*oEc6m;i zb=wf?^Bf^)G4%!!5}C>RhI?m!|JtTTJFh7h`?Cnh z>c;NM`D{a$A3r6g%v5Y*g}vBeUh%H!loI1IPvQ6dTc#Vq=>c$V>oUnhL%=w#n9c(V zS4y46>GMIg0925ioaa&&T*-2BVR3Qe=(B#HRLYPh^zqMTSr|zL7+`E~;5(>9+#Q{r zPjAmO#oH=@Kn6Hq-JveMQ1+znVZabw>5SrLXJ=qynlAO_KRa`yD%s!}ELd7vw3(@J zo@54lJ}x^3dYLDWQ_-5eP?fUs^XV`{*x1-Wbsm4R<_k3odcNeDw$EZ0gQ|TyD?Ix% zqf_k^!f^xzH7xIvLqm0TV&y%9(O#GrkP7x(T)@60hf>Dib8}ba=BCH025V$=yyF-j z%d@PuN_rq9L^WBg%?M#+(Y*igsM6M^2Nd^7Q$FXf_lu7oJBca0@U^+WgBKTrXO8oF zg`oYUrOtM8retXjpT61d_tFz3DoDO{o_jU^!0zNWjq2vgY)S`9yLpLV1hM@}q{4;9 z;#X01xdLrUmGQCNg?2QP_OvA(tCxqErkSGenY4K1y%&W-7voWvum@E9gn#af9jE)J2A z8JnDnYgmLfC;fUSF11Lw!a6h7*4EyB6~+?ZUhRk42J(V0L`jv>DbEJb=sj@^n|jA^ z@SuG~wAh@X>|CZ^=);5s{9;k%O%mtmCo^s%5nVXU?Ucf*@k=pQ|f{9YS+hD z8mgia4fOd&{+$ijNz}`H24*`;i##Sq9|8=FS@?0m)y(PwJ#c*FLH_zt|41=+B}Z>~8oyD`?ai3+5uUJn3Nub6 z`*9bzhmpw=RCQgMscsVZAMoci3Fc4h`uZc=>dt04}qkh#x0VVzv{3r31n5` zJ0u+?B#yG>=;RX6rYpl_AtB<+2hae?tRnsTV%x&T#@i+^R`mAqx!qh&l^PqiAtFeq z_;blD)|c)Hg5e1Ouuc_k?r|mI`v!1Js;a8;r3qP`ZUQ@<^Ai^-2tR-Q<}51+1voi4 z)KpcC%d|jEC|QPK8;AGBp1Y&t@X%+W0uibb@|TIV)6;#!7j3d2&VmFBZ%k-(+Bdvm zElFBgz(w(Za9NJ`A(^p{W!Wj`*JbLGObQnvvprUM!dvFwmQZ~i=%j=?3lSE=( z&$VT^i!e+@Z}C-=QIT_rt}}eEI`#HiZ1dFa{{ES;ISdSxF9!GFyw!vi;5PJwRj$c9 z<-v0d+fYlbw`ZaXr3O&vzSd9oTi*9|?Lv!71R^`>i_@fT?!4D-uiXU&Tj3YYd)qqL z*sG3Pm`7X+n99mvrt?(IkuRm1YkeQq=nZVE*3|4=9w1;0PZa5w15+bVNwHff&(H52 z@b=w@eh2EsG6TUdW)01~Df|JauW?2_&k!~hKwQ%J8#_(s5R3J2@q9z`J)glM7zgQq zIgAS_=lAN~hd+a}l!OJ55jIiEdLS=>SxH9^R--<~R}Q;{a2w$l2w(l-r~XI??;%pN zzw>h2r?}P_G*8GH^>GmpE;ao{h(M7`_mj6ZT)^*GQ07@W2{6k54;Ay7-^E;iw%#{M zZ#PSM=VSl*0pYz`L2s5XoXOVqoqZ1HyYld-_`FlIgXx^?U_P+NLw3Qx%Ph2m8slzC zBG2%VE=<^0OOndVjd1ZS!_u`WUdZ?sfCP_5@pI$XCR`G>A|f~81crQk;CaMuK7os? zV!);>>s0n2h0`{fMTQWeZa&ySNmo@BE1@?eEbQ89{JXJK)VZ7E49%Go_)?0SaiyXx z+tw>O-5EB!qq9$<#QJ@c7L+EQ<&Cr;MMSa-5zKSJ@aw5otOcn@DL!r=$=O`vQkeyPhv} z^U5X&c`7*~z`hL#;uBx{HK^5q%JkCGBlsB+hG=%ceN0qj6Q}k1b2$`eRV-uo>S*ut zo05!-2T|>c?t;)epQVpaG#)W!5BNo|wyWG-u5jrRfko$AdlnX{r`MaCx*iLC=7Z~l z7ep48hIVG#>}xA|d9?X)n7P@Cwb84#)qRu}L@!C3yOW523>*fRCNJ_#-*K2qt&%S1 zTogIda9eidbHa7!wo-y-Z+FZ0I>-d#tA07&O)K;jWw}X`9Pw6ttaLri4%aB@_v!X+ z+#Ix@zCRnf>FD13*|3>vcU?YKr&*$sz#Q?K^;yQKeH6a3&lVt+?<9Kf!>&Np88+;^2F0jfm*^6y0cv z2^G~d7`@ZWLyw&ed3fm4YgU|LxhD-d1zRC$%&C!b^8fSnz7Rd_=&=sQt|RIKI&Dh6jvD z)_Djyw{y?|Z*^LMesl#5U-U`3PrnfU?JK zp+c`A5#Q+QYJ+OB#NCBgD)NRbT6&^TJM7+iyY1Nu7$kvd^StU?gjMZoHw9A(&!ygv zT|_TDYk9#_c+RQ`q~^Y8$0XdB9h!;+3t_fPOMf!B9j9kk#o`LH6!?jRVp5)HgR4p& z&B4V5JQVik>x27^>S}maYJWU#8ypngiw`Acn~F|+FAK4m7<%7t#v1V)^~ZD+jZ%w| zv$Hc3Q(yKmKmo>p0iAU7UaK9rAmy^@0g3}i>&jMSO$&-YCNpl?pv{HNDuj8 zUX=j`!$V_QKj|P&ekaE$!r2kB2?CkN03E84#N|tz5D&8a>Lt{at zuv@2gWUervk9fZZ(&}VrTc6}CbQj%DViJ-b>l|R5zW#_GqaJTxX&uvW+Mv_4Z^kW9 z@>WfkqPUd?f3eZNBU?llTI2UQk$cmyZTG#a2PBD<-c<2w5X$Dh7lTK1(M?nPRJZ8j z>cb=S9HoQ=NZ(4});6XXGsTxicl+5dWI8&_?!NMp`SHxYaIpfGB25vIqjGaOs-3y7 zMar}`h55f|Lnht z+3Bj(bGvt>|5qpo+VP)JkY!r96qr!|(IcS4>|d}@^n=L|5nc3(a&e8YCj|x799*)L zG5p3IZC+krV?8M79cly`liUA-5=F)nAUOHLNniZ`i4Z-L{GSO?i$afSwOs`C@C}5K zn{{}t>xI#$twL?y>+=kE^&Vlb({UISxvVUC!Ip4rJu{{jMrtKCIL!-I5VNR6S|lWd zaQH}e=)dqHhPXoK3#NQaYl@J^FpJ_MU(!iP1V==~{9u~g-7Y&0C+CIp1_#{*#xYza z!F}`X*-9r#0?X*w0*N|pm3s9~Ne1Vl>2~dxLtqjlg*4x*RLT0|#}IV!Re2gU*61KU zm!m-+osEv;ZLR*J97U=Dw%xrQNTbT!_UkId_zphAi(?h)sR+qGf5|z{S!UQQI8x

          g2I1PA=yl735Uk4d+M%{A>M`dMcX=#VUIDLR9t`_fQ zWqa$g8W0-BbMId_WoJJj6VC;0iH6u~eENM1-Q7M?GKvdN-y5ilaE;*XGsqhpi8nwd}o1THw zbKodvX@Qxr?esD_`CnMk6Qe(@DEkxdOTgYdOC!d|lZ$3WMyF~rz9Xmjm6^(EtBw5- z^iH(1BedaCkjU1iL>?cB(fJf#>p4s1t=Dv8Gg}pG;6p~wa$s&ayx7z8b9UBll-iY; zxKNGzDQZlQsOnaex7d-rIHAJGaZ_6U*e6c2a6bPJ7)G8RZw<&ieStAsy4`#zh7-zj zN<@Z+qE%f^w_mA0&!)caslfZ&i(#0?PhU@|l&2!Ojl%p@)l@*v<3^B1wr@v--b)q!LlFN7nvK}~{W(^*-6>F!<#)W5TUS@Nx2|7iBID+EeqW?jYSf+p zYLPfw2)(`QtGZ3@tiB~`QtRsrGAEpzYMapnX<(nY^|I(^j)we_NnxHQ)LJI1jSIv+ zA+%tJ*@u}7UH68^U8o?^H-Fo*al1|7o|%|nGX~+OxT)za<6?rgn$Gu(++c`1gY>sUteKGg-Pf6-q_@9 zTtoVbKuJ(AwA^xZK))VjMS6OBNCmyHF&y}AwmAhNKxRXlvZt%d!Od;o0wVD?BY)Gv z3QG)aURa5>BxPF4XMiZ?}k`$_kjm@E@xKb_|<%dP0_>#8a8A|Km>tQvu zF&!9f55G%Z)|0n8iw2A1>Wky!E(0%b!iNz^VKLT|j5@;aCmzidDW7FYUESTqs;EYb zW3H@soS%+4J8ciqn@l9=soL5eXG-9P;U*2j7P&NrZL_nB>8!A=zmJ-B6ch5_t1ZXX z1$nuLE%o^o`K<>EH8on^sQ8=%E_TGVKUJ{|cb?3*vg8aC|DK#YUqAIhUX|!k*evf6 zX29-qL>)GTL)uU&M8rmDM2%v~LKMD5hJC88^5(nKCJG6&dw-=14Sw{)GmtV7e_7GU z2VL-(;Ru~B(QDF!K$Cvi;%E9i}7|j>!_44|TN1bz_qRLr31-tD% za{R?Yjbf|^c8jjUQl!F|cxrn36GL-aUEWxqv6qjoKNcrgbrtIaaw>GcmQc66Or7yL zAvw9h;swdh4^z2`VttlJkJ{tnfVw^5!2@mK+tnYg47k>SFM*q&Wp2(aTKaQbT$R&W zN`WR_F?Yu}=f%$t+u`9kGc&lQT8XhIE+=N?wa%qe8TIbww>Qpr(G;%j?O;h$85qd& z=%LZ9UgYk=1zUw~R!(yAw?GvAC{oSQ2@T`ddQqfGkeVMM9&)KZAfCh%_O084pRq~V zd~(utO)mOi`gZ0l2X~sArk|K~4M5(~%P?5ILPF>af#<4=kwf6;-uxoI1kAhMwD-iS zi|L7KdeD8ozu6T(>;KKJq=KSx#X!Q*&aRPco%g!1rbckZwJJ|pucd@14ZmS+=7B&} z^~|)_`1eqtn7u!iGj??a&w(c2)EXXZE0#`RKYDj3Wx)Y_A$DduW@cv(X778;`wBsM z1<+;UO4_^;(LtY~^mU#(k1sCXKVIuKerErf{AhGgxJ0iK2)w^2=0*_;@=;QLyA_y^ z2IhUtaJN5Itsr0=9~(<#j4vs%m$txX?O*V{*4NYH;P^I(@wU4F>8Y8W8<+E`V5y3G zdCKI{U~T325fRJVKI zd;I(RYs15>hfiN&2Q^4;6=w{L;c8b=6@~TuB zH1$P}@ES5V1^w&jv##0?L@wO*yn8T$q}#!>xXvT3_DXii@A*d#uKM~VQ(6Q5Pbd5P zOLVmyVq+SNjOif1qC&xHqc?@kG?ZzH`H3DVDd(B*I>bLJ!d6v8K-f(5WzB^+geo#!hTuyBOf^>h^~1vQ z4nHR+)mleH%6^vQnVa^{W=)u%7l@kqXuvHFQm%G|0>iUU9*}-Y;ii~Xdi?(5+1Aq+ z2nb)X0Pi@fz@N?WS+inZL8pCy@J2=kb>_Do5yG3TXg!2L>nsEWkkNzUqyIr#hb7~1 zd7@Mc;GqNlmDu0%pm`SnU6`MbPH9u^{_$Ju|MT1Txl#}Qy#56t)$*^`-ab4$rTxcW zyl1!lvwGe*b1@)TbRX)U@Ep53$pxzT4^%tt${ngE&=x$p0ZHSikMa=CI;y7>2ya)vm{a)8qfSJ)k9LG_6R5V`lXEHo$cA};ZNKf zgjLWfNNTaHyc}G7vi1p2Tp&9lx{E@?)EGz)A3dTDCuPAY&dD*ev1#zTMGSarDf5hk zgxJ>_B){Wv*K?>l_U$MxcCQS?#2%4^rR{qG3&xfwD20eRvT3*E-C^0lbknwqYXX>g zFF+uXXy?Pj)rSp9gX#US1MZ=bmbtz$^PWz?cvTpv6y?&KD7t6ul4ORsc!d07+4bhbzFs#2_znh4mzNL_23c51&diwYPkosD)L`%O z#BWJ{U7{koxj$}u;SU!(fPL6N^~PL*@4PIsm)f*-ygyyl9F#rz6oONcTfxDxN-Xqp zXUVa@i&k8WqNR<}^6ncJgID$o*CP;u*nyBtV)hB+{ zLQ-*^K*Q)=iH*ouWh0UMY8NRGQuHTRR=DdLE(aW$4?ISG{LwD|$tKy(L~(v0EsKvf zh9?F2$yRJ%uF@URxDQ<=JzY5^%e^UpZfL%gq0yf)n&AcNW;xUVnRvW^f!k%qI?b3P zPHt&q1Ej69_3r2??Jkav9nOZ&KEYtn873TllOGhU58@i83Ns$00KE(W;k$B>GYe>6 zUtibJNt9cQ2oL{Kt+g!MeNv@shH260zZC`PB)QSoQ`eb%3xlMtc{&_Te7X;&aS;CP zE_7z~tT{6yzx2Io!|KiY8lKhDt{Aem9%LJ2v#$;&3;^+ z{nV2_!uxONnHf(~N}|9Iyy{nRjVXGTmiZw^?=!>@!`h7mhQL`*Y3E?))Gmh?w6z5k zYd$`GFC=JDke3I>tsz=>Za`gsnq9#aQJ+8m?NqB(*!N&a844Ashb=ZtO-+H(5e|nR z{&>w5#yc{O6V*QQCr!e{R8&=^VKq+aSsG5)-QD(#Xh%eAH-SOphj!o3p9qZh78Xd3 z(o%Y&v+$~vgoZw#5)1ws{G#o1VVO^Xe(Y-Y#`v)-cm0xQVCD>=BeBr0%Y9#VX4DyY z>zRLBg9ti>+0(+-lb)NmbSI_(gn=y`$%H=SUw*yn=;<4=LyDt~dE5>2jX&8bY5P3q z|8y2@rtD&WZ!-pPQYZ8(tL{_-zpc}R)WlAd(edmu$T4BN?{SD)emW`7;XAlXe!E*{ z)2ed93ooz;c)nzAI{%}r#aIR|IoZ9F`M-f;bLp6w*;Ib+YF~2aMRaMZUR`lzmgTxA z+DRYuVvb&efIH$I^^=$2CwNM7P&wb+?wlBRS%pssfAMB@tcygVc`dX>-% z4*KC)n$=IUQtiIsthxKk6$juY6deEDOAB^)pq#tZ3Y1NIdwbAJ!&wkb_AxP&3PtELEcAIz)xxd|usdsBFNv`6Gkvg&Hx`$uUyhQZjd!&5gu2Y>@NM$775itaROZr`9j}f-c8tXDC@`;~ z0Tw6$Wng$@Zx2iy$6Q@z25%HMs$O+-W!B`n{5zDDrM+=FfxFwY5W(wx9{!eAui8$~ z|JUcFH~N5HrAr(%xrxBCC;Va-PAO!2y=h)Qsv~6Y!0n4#~i2ZKV0yFNbM0xFf6swxj@1v}>UhE-0L$x&-v zdQ?Hd{6Lq?CRwZhS@vWYT8lRs(o5YTkku#%XsEEeGTl;%e1}thItgP4!f!IHu z(CyQut^8YM)XV-Ku(CEsE%o{9lv8hO6gSfYNhBby_}>63(QTBcf+ZkFZ}ksArK+OZ z+EN0jA`KOl=}HHxKQUdSXntnHLoyD(8xMB&a*!ZbNNLJxS}0yUd$|#U0XG}XX=rE& zLUaT;xUJHf-CUj~XLxK(9BBy;!vE#pDxtJIOD}b!zX|EnGm9c+_<_W_RB>5XS5@~I ze)t6*wvOufh!t)KUmc`XCN{LB!YlYB<;RamW^wAQ5UfSLM%m|{#4kbErywCwbY>aX zAQn7B9Xn09$_aAlx6}f9^zmy;BBk&4w&yh7axl3nC}+);uM~6)2*-I)t$Ti~Z+9?j z))0OrM!HBn0P!Z|U+5rC+5aFYQ3QqhYHIF`7j(|owJXR|N}l=fGuSDKAfcN4QxDaA zEAVUJ-B+s7$5ELc9L7V}D|kwdxbTizoWQovKznhxwJ`G$`@+t%_%HAzrdXY-UqO@#^i}b^mij3O@J*e$;RdH8nHyfPqgbqfpa$>=Ljgl0fnm@QfMb z=g(VJ4*;rCO}!h|>dd!ev;*|srN<+Y1xg2R`|4-i=Ld&7quQR}XeMxSaN`~?Jf;lv zxM_Nm@kA0SsXyhyp*(7&2hQ0BH`t=Y*#83tXK)3*nD)WPP8-lQS>`R`r zuE_A;0;#S|E~JcFik!JYB|%*1ku&!esTw~;6i_r3V>t0vs&A;YKx?sn7;h6Yf}2bB zKWVNoM^FDc$G`gA&l?l{PK@9YSIkBG1z8>(M3$_lAP>4ek>ZhFJ{TG{%MLLQBW$O- z2?YpTx0v{+F}T%K=ITvj{zt}CHCwWTAo2F22$75pHVKU(tz zTHoBR&HARdQ8vg*mbAj0tqWGTAzu?G&Xgx*U!_0AvxIIe`~76$qw!nJU95nW zTLv#GJ#*gpgNxjp=p({U8~hq=*>V@5ECSBdTKbK9D4D5#*G%U3cNlz)d%6?S z5Zi29;}zFyx2q!E==1YQ1qFl4>nNZhhh$TUG?@f7-qv(=ac5*iPfP&*f})t}aDSo{ zTD0Wy`+a)($s>bB2mN_(2n1Dc|FO2QZ&Hy6grX{UW3x8_<k^uyTAO@(Fg$c&f@LNgSF)zXEaVQ z5c&V5sS-%O6|(M4T77$_(E2IGV{)vLR68n_s73^!yV1L(=;?bs1J9RHdqqsrjtB8{ zpzMH!#U7|6SHG}$rnEQv zpI8Y_YpAH03gDrLh&|r7SsxG1ZMVPWR72Za(ldyi(7k&KBfrKRl!p#opa z3%88A)z*UOWk3$LEm^A+u6o9Or0o;3OZ@$wys7>p<GEG5oj`@T^fkbpLc|T-s5Z z`F%^JGTl%K!lql%Q(FhizgW;$C6%0if~mX8Z-722R{lk)P9+?2Q2z;wzW%)d)L?%e zvIqkef4zzJ0sh|``3XBMXMa(tKeDel(!bvLmE~ja-w^7b`mnbT|IL2?52^aEH+lX| zs{YSw|MzG97tZ?oO~1uz1awqYPdb;x1RF+xPA)NVmPYC2{obU(9gh!id@ZZ1`ySl; zD!aHi(ujX|v08ID@Xt4SbD?4_ECbVoK97S}|&=>Kqtj*r(EF3=pV z&H_Yoqc3Upk@a9tpHKR=&qU$0$`Wv6Z#TPm^VjhhIuQ!c^!t*KaCZ20PqELI#opfA z+uLShro$|x)N%i0L$LgOd70eV`J`&;r6N^|gym3`XYa&5^Iu;UTP}%290>D!x(5`M zlyr|_*=>i%$4;P`M>?YnkdTBYm470;y}odFa}+@eXDK$1WHYQb1TRS5=+Z23(wY{Q@jA1()N5`YUug!-h?nXu! zqI`9A2ELVqC`%4Je0+TF2OaAs=93^vnA8`7MWc=O@>Bcz8qf~}y$aZLfp?T}zd&KZ z4ZDrHDfKuq4+(iDAt3=8#>?YcF9(F+#>Zv5ud`yPr;0QDrL4A(&^QkRpmPfF)6-y1Zv9#3I z)Wjq5-neV@js*^?^IG7T_v==1adF)_UJik8ke?^L7}d4pP*z?hAkg8{v?@$UNVsKb z3EG5RTAdLxPD~8gox~TJnr26H+gC9;%gM=EXyqj&TwufU!65UOkW#PnWTAVO2(Ni5)Ro$NK++0!|0s`-i$k^CXBy&7{eSL`%0GSasd*Se}MPI+Z z5)>@@-HzhxyKaFVW!M^IZE5)e>r=Z?sa9dh;BL3d)untyjoaB)Z09)|8g&PCj+q$; zA!-;V(qnM8z|s>GZhZg#otc>#OhuO=9LxzRF{wAO>|Xrmh@#R`QsyJyx}oX(VW_=b z#;o9Ci|w}IHxff~q-W?1C*E0KkL<6De3|qagC#D=px>S!{sQ?46BARp`QWb-w))!I z>~ECDqo4t2yM#nT z3AP9@DU*bJgTR#}Dou-#n3PNwz!Mk8h$|;1mQ|K1n)2%>TTZs1i#ut%2X`0-h;qLd z6l7tB<>%#byymdc{RZ;oAlv$aBK7F=_O=x$_$kC1_;rV{$xydmOm7A}qWZ$y0*MzLTfYBR#Rp5$={0wbkc=*a`?K_DUC-^Eu zlc#4-U#Nk{xSG0}`Wn@5rlfD=JaxSJ<2EXD>v-K+$hT5kSuyC-3XasJYae;Jk75BB6DonN%mb(}F=5{UEb>i9@nR-BR;SJ|$dGTj*-vj>)7yYhfVJ)~4`GK@ zr`ql9?Y7Ymt94~K+dDfjL0|Z4w=r`9f7guHdf_za=(F}`#<*AUz1MXdNliJ|>^?X#Vb{@@)Ts5XClr}EYUB6s_rchWUZ(Hfy;nd9co>BCh)k`$pscD? z5=s5Y!yi%GxD?btkw@o2@9(Ax-_pv<$Utf=SmU&w=ayj_Xcjnt6JUoku;$3b#F!m( zbTwYKZ;7?NSwR>8Jo>}jC$qq^43M8AXAc>f5J3kqBGFAN4=o5JJt(NdfhM>1P6-iilR%g^-2CBuT<7EiLI77-FTr1y5d%YrTx> zH7@%$SWzjM6g-nE*V+@lQCU$De!bD8#fXdan6=v8+|-Pa;H>Ry1h6u_l-F-GE2_Tm zz%TtX4f(>4^RPKNE5Vq8PQ=yV9%g83yRya046Mq9?mhsxn31vcg-*!r08#<^9F)oh z18t9dj*#O+veiAoJ3E`*+H!NyF6+aGB`FA`jk^zAoE=Ju_`VFXwAi5QDlETAQBhHg zC$}ty%GdKtuSpq(C@9+*uFgC>^nVJKLSju~+@%&UN_yt$sRaob3J8g{(~IIc?p*S_ zg`<)P0A=CG)VFa|2W0XyE+O#${x*oLvfE1r-EqK_V`gqjNJu~yAj(tx-(xeBocK_v zFW#mEx$^CnYOY2xJoK{duSA#E8w02p_G$6AZvZdH0b5HzSv52?<{~1_@YxY1ZNLY- z8C1>b&HB2*%fr*L5E62|LF(%2%9SE$HD&=ituOpF`ySelO~Oc?G|DL{*`KG@HtGXa zJIJ|p|1+|3XPyPtJuL|z_^+1XUU2(ctA4D{Cg z@F8QP#u4=M5Y$7Ipk?&&+*)oQOt|U%CbiIc{wsD;_~Kx;-m_ODNgH&Tg9&-IY@84g z5uKf$f~ALqAg&8iw+6yI+WC_;6)=-Iz|{t!)ekXATl|sM*46-W1mR6ZFgg%aHZ*i9 zrESlSjk(+}G&il(y=|R4jXfFTYe@8~X^6X z7AEB06mGfHiAjtB6>X=PMbqgf+ zd^S^4rRiX<*Mi(rKp7!7+D1mAAaiGIOcC3j%wtHd(FH_8C?Zf992F_ei-HmjEHN%AfhD1)qprL1H!d_ZIp}Tva`1|*fp`pXmm%(x0t7l}%qXoRa99|MXgP^5O}7C*N@s8B5hXo0Qbzh~ef~*fwab0s>^9Km-;mj8D

          Z4npV=)^=!VrG#Cx^ZeY0vIxD$$68`PM6-S(k?J6fHC(v>NjBd zwZ5?dx@I3=-2iRnrf&6*JW%KC>wRHjZtl#J3N|RIsWsG(&~DBd;MH9GNun+;0>3^*Up{PTzAL-mRKD-)>jRT-v^4g`ps>_!6b1^oa2$SD8>FP9ti|0d zwT=PHYH-tFJ_-v9yXU*7Vf|KCc6^#2i#?fgwL2ZM(h2@KadKsFs{H&QT3VY=hcu2U zsi+WdU7G-k1JxU6JCh)E05^Z`<~V~<^2kWc&-bHj<(gj-U;>VM3oSB6GTRK%()0`r zAi#E9m;W6>Gzom+z|6$Z(`!FhvtS1atWrNM(w!`kI`nAB$)N_F2UEYe>}_8+rZh;d z-iFHNui8F27Lr*2*v$%0CP_wiyqzlcG~)R9nEk_pwl>j>!@~@JFzTymAYVUpr4-Da zHzxL6w5ZP=3QZz!wYYB zge!r5{IP|1Olu9FpykaT*1QN^z>9sT^&evTwGj^VB)K# zK0?Cqi6UO-4Kxyg0L9!La9bT6dBRWWaKQ`)ZaTBUbaoJTfdG~-ZGU}T!@xj^kq8VS zCTt-a^q)XvkGTwrMq#hc7y^3N*piBpHD6)8#^+O;&{b~_3#n~05G2~&iLWdAu~ zM)@Xo;Dk-vS$`h;gzRZb&7!UuA1-|z1Z4Cu77IJO4y^x&w6B1Qv)Q)n5G*(Z3vNL} zkl-5J-2wy&+PJ$z2*HDg;O_1oAUFhf5AFn)08{+`y>IS3nRzo)tJeyPraRsB)mL@) zKKtym9NzM#V^&i^p=^=8qjiLwia+SjJBcOE{4=6xR)@cXdJx9e*4Ba#yVo1#>eV#% zbNyT`dFPEuv1XI?88mWXq4{}FWFRa;o2O>_cARsQ`n=RwPpT-F+b>tBB(qLHtLwU^CZl|BtUs-F-iMU)Up};>yAN?x=@5~K^@k=atA^cfIv(KOc zs4nY?A}*SKtXBYZ#8F%O6dr#~#)R4NBg_*HMhwJ~;^NPj7tcNlr%WN#goH>x6%lcJ zsURg~QZ;+=5jg=LR7D$AekK?8^Udf?uUwjljRgU{(>jq`TwTe!l!6SYz(TO=2Vw1` z(K5X@5K3Ui{JsWPVOGyWI72ar{1OyHzH;-z6o&Cr1dw^$;l0G)6AzXL3rii`M|M zU(Se59&eBIF^BcI2Cza33e0{Wn(_hE@y*rp$dNZ@S|g*nx_Ut(T zGyyQJ=m{C2*}B)GdEJ(XT_ndL_E!8Sk*z z*@b@zkmVe241j3!Gr8yeZNzH~q_f1E&&SwmFY}@c$`oE+bcNyp0}r4n!NiM*Gzb*- ztFSBD;&*%hI%d+mTuoEy1C;F67eo!0%LLq~Uc(&J5 zaw7wCEp;uRsR5y%{jKvEI3Z}4&|&}m} zPkw&jo5zR+j3J@P@BX8sczAvF{4wPLZzQ+5g*HMQVB zqa~n|D$jgcLK5fk;^_-vzmdT~6!ITMzdj^5y78snH-$zX{6KpHh@rRUYD z=DeS(#U|8wy^k2)LZ@07oG-K#&M5fvrsu?FVCDUxL=`!$C|Ze(I|0YEy~ z&1IIFrG_QjJg>355!l=cdT(*Ml=~Kt4$k|WwF0umReKrUxD_;38i~$vVhDr1XE;sJ zMVyxLAfuL}bLwZrFMd`u65aOFgTmr>6xy zZqE8*dfvZw`BHN}s9A-8N+4?2;w7p_YJx^!#P71y44myXwdVoqx+1+^Gk0}8!VMlW zX!Bm&ZO@@mAXyv#3sxbfffl8JVtHL!I#ax|Sk_6ei*vD75Yl7V+C(177vHXr7%1$P zgM}2xQ{v-tQqNZ~@GZGtdjH7>I1xo1h;-1^>EzWolO{BBdQ!GNa3FOG)!zmz1j z>mOfxx*4l?*HYw_mM)Eq_zq7^Ol0Tf5tiowfUGe<=zs`kboskC^ko?npa`)0dCf+( ztpZgvH0p@BMtV%mkyn@KPL!iA8A5WR8*qAWsp6*I+W&`DXrKj{qVqwZ4gI z#9LvS-hJ-%$6!V%XA8`DQ0IrbCEfQV3IDva?MgodU6Wo@vaqxR7H^}lZ1ZPIo+Bm4 z#3h0iz79YC(eE{lGELsD9w6HPhF{~eyhQSP@N0!(W>%J7tLN;<$oEy-j!t1@q^0FS zsD&w>2aPx_HU~R9&cDIGhZYJ?7i6Ef{VEBg3eak~&FxfN%*_py)qx|%+k2^|NTUJx z=E!(*K|0rde=SyTgVEN~0wK;^D)pbO`#W&lS{>p2INO_MVm$Z&;to*eU1h4!DJ%jw zi(}*;>wCnkj!?%lMv}<+g@sour{iNJo13j|20a+G zd|WDJ*`U?($HBGMGH}Z`?0HCUfu%s2R!}rue11W)d{}TJP^6$o5|^2q%V9Zl3^47b zH48jy<;BTKs|zP+qYU<~nVGo=!b>2){*UlABH~Doj0U^4g%pIuA;EVh?wq66`%rXr zfR90|nUiZzc6KL_ImP@*d3*~wZssCUxY1a-diFfaM(kOjFsQD7GdbPY_l#T>tQ;k! z-+g)G8UkAf`C! zx=_~+KPS3e?^{F0^Edw}OiaAkE&~7j$d-l)9A^}CYE9aH25GU6DOPZt$wWVHy78KH zblu(5;GCr97VQQ5tjhuNzbx`R_iF!u0s^_o z1T0)rMFl8SVK#W09;pZ*H$c$t-S=J|V6s1<5VLy!`MC5N8M4CoSJvPQ^^wBD6G)3B z_di(wtAxkA1sJ|qP$xI+RFTJ@0hO42XcnOK*As8`U=#i+qWw3)>wo-#4-~b7@vl1B z|IW+);~V`y{l-`8R_dl1gnuB`27qjP_56nPIx9C9J_(Qkx>e38!Wv+>+)VVH6LKg^ zHG?e!Fw^wae1CmgDbkMglIG@x-roGJ>CnhAAXEhdyM+fdG&iZjX~BK`t1~&$j*Zci zlS zz9u9A6BvJt%<&z=N7m!vDt>Fg<=+X$kID=(VS}xcE&>PbB#J{r&wMgMop5 zaFcjsy+o?xPr2BsK}_A_dX2eGl22{NDdGp zw>R=CN=kI}?&oI@RW3_*a#Tm8%O9~Ygr$U^356hj4zl+rqrLbUOiTMY)tfOdGudBP zNkLVfe;{SygJ4en7P>-C05+y#B$|N;k8&Iq7CHG_EST%NipJOEmho5>`?qm|CYy=F zgH^mSeK93)aEc@GNlB;czt`MO@wWH&TpS&1CcY~ij1K~3+F0P(JB>+Kp`Z|XC zkHb^Rb6-f?*mz^D=Q@r_udpZvP>IyCU-R?x5zD@>{dVO`ZR9Cv!_7twXjfFH25EwP zqt(nVMfZt(rCMj_h6Zl^+MEqJ`;!*1>NW|;&2KtdNJS7()~$}jMv?Vno0qq_3DYf0sUSdQ39d^oP)KN=T~0@ z{+dXA&kN6q$Bo97Pgh(Wo{4f?4~{xOY8;2OTBq4Ib;#r?Bt0{;(yD38w|Ltu|Huii zV;}*ifUclwYcQ45$Iss%1}zAf4*@cp1qwioqm%Zep30<}8iRUchs?WTb>@zzHpG)4 zh>^8fYF1Kt{ye$j-78vg(c$uahGvw<|1N|)IrZ1gLOc=6N}jY6uCv5A1^@%NdTA7-J6HR#q=#mIc3NRh}4|neBwVc+>tWO46v}-7&A!D!3%} z4ez%A)3(50!)}u+^U}1#3 z?)GM8@UJ=nxjX{$c!QE#r`MLa3^csFJoM5+LYPR#t*o31(v7#9s8vl(KybaWB?#!2 zfa-2)>H@kxD=RB-cvqfmgnz-XNTOS*n#D&E*VHs~(|k-S#`J|DqE}T{Q^fRn@$Y-o z%NLfvD;5jIwYmJ`4HCldegM!8206dL1*MfOpz~;CzjA%(_3i62`^Z z7s++Aiwn?t+g)^lQzm{vuG!;o|IuIXTj^ncTb-bbSjo@teim~ z6;k=68j}!>@9rL8Aikm$HcORa?oBYF>xpiEUvzwBn7TEOVbH>~wyq8j562&`yr=x& zRj=ipQi>6bg1k6a`sNubO3oS${NJM+Zz#{s9UC}0K8`hH1mrp9e++>q<>{z@|NiOP zbI5<|34zsgxd35!K~<{~yWHHL0||kFff3az_)n?N7WZDJ|L7T{SzSli948QB3tPdJ zD(FFP6XRlfvwix({p0xZ#iw7kHiE96Y>9uCI|9R>Ju@h75j04`l2Opmh%Gb+4+Rap z=09!MrwmMbpAuAc8_$;iTw~STHNd*$w%LEF9UD8dX$_{rq743V_EKg}KhgocYxNf@ zs@VI3rk)W?Z)^Do_`p9yoM?zn%%1`kc2*njK+CnSvf=<1f$^rrZT{kb@*oP9jn)VP z`SxNk${99GPuQ+LuEUQ%+xEvbwpX`X;xh%j$ZEXKzC13ZF$lpF=Ce5rh=jz<;*b>- zDl6STU*7(!tnF-Jadk@Ql$tjQYEF-hw7kBqxWC-?%CsZ+dE(EX@DI17sc%7GlUG!< z{^MCwIdia9z2Kc3W4U5+9NhW-=|8mq!$tzhoWsC(jPBtc8S?fZobX{NP4Hny#m&j7 z+&?`l>t=V7C5aQ=xabLl%V84*0s$U&L%ui&B#$Wo5RlpOfEs>*%;&=$2X=i`7%i=x${ z#sWvg?Cd6LYHGlw5LFJ~V_n7ib8sX9T9D23!ZOMpzPEp}V+jr{#CtGD;F<{Q&*;cw)m z8=vpFn z^_HAE{zw%~ z@-z?Z6_qX9ZoRgXpbagzCZoJKCTv!erkug6Od;Od z7+5tAPfadnw@KY>b~}s3#*Dch&C1D>cXDw=g!3O$$s3F$5i28RlXE#5OHNsR$%cn_ z_2NU;!MulSb76XV#+g0vM#xay-nr&KTr5uFHNA*qXt(6>pdB*!Y}#{~I&_x1TiE}x zerA903_SF(nrt>|jPRxsG*s0z)X=smW6=^5U(DCJZI3z98eyqvBfrZ2B8AN=MT_n1 z*EI&+A5%WlX2S-P z^dla@=u;`;g@1zUClUcWCWtboPi14WTT|3fdL2tZWe1qWcn&qcsi>%~fOQd^C&NI$PD-Eb){F$+4&V6$J1_ilRo1=l@|?B&F1S5h;$KR z$?ng*IZM%J>mDKm-xHqDPH{sKvT<&O)*OJ<*3sg-%MA{QV@-{d9hV}7zvRbaGnx3< z>&uhEiD4$M9c4E4{JZ;`l4sBS63RnD(!~T_?r!|=TD+^xg@u6ur#^?r5J2XwrOL$UPG_18C>>x z=U>a}UQ-+C<)Xm(6~_^|`a*%hrgW!Fz;n?TUvz}J1=F)l+ufaqkZ`Y~;};4_`XuDf z?)lwk^Vff{{bD!JUQQ*v3SY%0NyHaLd?C$!RzvLmCBA{oOAD@I{+Sxqq zTwh-qR{N!>E=O!QHG)``Q5V5NoFVk16MOzIR*l6OQtM79M4ngx$BfK zbQN5TLS%^QRT$D8aI(NnT?>Km<@aV4n1|;yr*LCUhYL}*V8TMkWX0hX$X1MuU=I!; z5Lqtg!I=T%O0YW58D@h#{kr8{ zLV}>lOQxtu9_ZfA&J&35Uu`qE-P|giZkiCP8XL_Q=W4pTT3VNmE#}@<*VG{7#YIK= z(ZIqy`D$fm_5_mN)I_M8h|qKc`y^JYLO@2;D;9|_v}e`hBfq}8O|hPV-A%>IrsDHK zy8c~PqSW~=l|R2NT)m)-pilf43+z0`H8sii+#l0j0XZ_9xTSEHb4o8sal+5Og||0D7R zr7~#{-XdX0mPFRRMLqu7YShLr7&8KxChp1LoBmqxym8_%Kj=$FSzjUR+ zuU>Q~YU}RDw4S6^7Oh12Igd%S%1syC9xiZFyvOSwur2(m=v7<8H5UoWoV7rNw(+$< z^xGGZe+F+ngjwTMjv-AiNpm3iLP>dm2n?MD|*oAv=9eqkX?VwgW(U;tu? zqInSLAC~;RxO{)HE{y#wBf4_aJXQ-`V;Zqv1DI4dskaIzyTZKE(k0 zrnGlAPZ#E9x|zvFS2Ux?<}v?pZBhLwj}-6|UY(j|Xg9F1UMnXawoR$-y_x7oE)Du9 z{9*lc{SRp;`MBZ~>ahYPADYFEtIufTnK(v7n19FDp`>eBllG++6-o;D>;vSohD0^R zF9wFEt%yNu?3~Zp*uF399orI-leC4fatJkc&Gz!zUm( zyyRZFKWw1K7g^0}^-z_O8St1cU1)CZ&4-$rCM+zxx3MYvZIYjQBVv>J6vFIrVF_|9 zAkPjOVP+h;&}!Z8TtFay$~|1%+_=+*i;7CZ!-F+9tFd(@goFUUx&33$w|Wc`*;zzO z+bJV2*c_qU)NAQ3D`f7YzPe*jk@lp4rYJkx+SnLaik~&PBx-6xsf@Jery zjCgt3)G=O&by>f5dFu@WNpFEFdC3mGRqKSS92O@b0m0STx>0mEDt3%t^Wj~n8tL<_ z>q8PNGn=T)WSF|5<+Tx#@dcPl;TV}WR%g`F;^#L-xWD&F_y|?L@ObRcFE>Y}!~`U9 ziwHR^H8+mv4&(R`zusNMXb3$1y`t3!>wyu3epAn-}4#++&dj-Wr6?k4MVzGT(YF(U|s5aP;2C@#! zaZuj|t^#oN=H_h@73*1F-*ofvxGed^f+(@is@dwXgSp2<`w(0ykgh0=_#fi2Na=^b8MC?o?cXRt*OH#*zvaPA; zW@s;c-?phu9d)q?04G+#Hb9(#vxA>cS6fP|J(a(aK|OsmV!o+vds?r^KfrBhsCjb} zK$J{MiSC2>pl+m0OUw6!SRfNPMfh?v2px}@U(4?By@ZYqdfKwCjt&lX>>MvqtfbGd z*B8XfVeocrf}U3=zr^lpEW~63TU*uq{P=iMdh}KGn$&M@kJiwM3A!1DzrPa^qY7F-RbST`tZ$goIx7pc>1g;~%z?&&yyfr}|AS&Iwb zi&t~ybY9_}ZKE0;C^FBrKGwnX%Oo_;?7!w{Iyu?U`0zn|zV^H%I3a;^zO8M2T`HCl zIS_PT8D6yo-tc%1;=u3c>_^|S9yYEHSOaF`xv00Z8BB=^WY7RbHMK?14t2LFkAmD` zeS5TogoKSC{4JSmMGflFosEdQ*7N5v*&cnbUo!xCAwX$TMwI~pBCeukf~`FY$w1i= zn}FA{{ybcr;EHknjnwqu>X`Z@|J0k|V&mF66W1)A4#&xAm9{pm8O0ArZCckfGK7ND z+0kLoBLpSYr47cePxqsvWlguBPUpOhjc$Y-`3k8hIv0K@T}w+B7YDm5D_mZ8;IUhz zk@qP`q-X3)2^nsld|Wc$3wbgWT5siv$&|Qn{jXm&+t`p66ek-Pj>pEbJvnDY6M>yI z1yj3qxb$b)XX2%ds4O@NRFegLBovt1d$-k~+hy*U&zVDp6UDDI(r9+{`WBp6z4*k-XsFBngAnVQ>Fl3`AEVa~LEu)VLcJ zhNeqR(~g(c{slY41P2?}rz*n2pME!rOiP7=Goh!o{)neQW8{AYuL0=nn;M3L8g((`acz_ND2 zHRb0oEH4YZw$3Jg0TBylx+8rbI`3|lO?*A$#_W(Al}BT|tLny@sPq2M#DGP5-4g?S zl+RaJuzhjN*$~|75Bi?>AAi}}o13qBd5Y?~T(Jb4vZ|<1-Mm^bVZSMgy4Wx@{gWZm z)f2H%qQ~^c9DDS~4-m69dLjXW)&b^`hZXR_koWbj-V(=@_choO7aIYM?bb7CQBcB$ zqZM|00S{uU!4n znYVrH9|JfL{oZ~zVg&-AS~u7C&9)!17o!IA@b$ey z1bjmDSzsTDWpN+LdJndm>a5~K1*JpIS_|tvj&bTiRucAwh>V=Xc3^T0ieB2=h3^Il)65EN)@czL+!v}n%w2IVoV&(FW7WdYS`KlmAnKrwWa<6=5{9W09 z$OHiaVaV;0-U9JodBpO|d+L{qI<13JdNyowLFR`1*E1E%SDpe!aOlKw@$rpiTE@_H zCVQ%9Lda8mw%>bPiac71%+AcQsuSH4|w8Cf_o?*mnwc7(pAl8^`u8 zXBMbDR_xGBUAd#pjy2|mb1gioA>U7h+B-%mESU9%oU%GJH6~Ttgn(^a4387EV_k9| z+p~*M8`LOzxQ;prP3b_#o$_Xgk^Z#xvV`B$`#SMWfwMD`!!p5z6n3mP?W5#wU(B~iVFH=%g4h%zsN7G!!It9 zwXp2d+k}MJwW=#2POYseMoTYVP>{pRQ>oj$UDHBG_s9?K?ykZL`v>cV!A2$i8*g{a3kOmQBIc5=;W%|gyv#*40n3yZn(|x_Me3Edq}*Jp2ac&tkxv#RDfCKc-li%6d+u9O@SMxGNwy`<76F^u| z2a;=`rpXXGKKNgVF2kpfWPWadJk) z?#_l5d6Zw0Bj~E=wb7qEC<}pryo8yO5*K#^NO~j^V3NNvR|WCOX_^3B4Uj&A1PFC1 zPfnH5GYI6Ig=HATO76liX8qW~>R;}4>2X3j>BgWY0s=fT@x3v9Rxe*FI3H%qrU|Uh zuzXxEHDKywaw|MhuA{s^Ig{ z%|_PujkE%b&?s0GSx^vo*xI>zdRbbowglq-HGq z-qP8`-Pz=ZDR{B&M5_{cZ-Ak&u!z1YEzYVXw(i>C(8Wt&{`JNtA5&3j;YWdv4}tP| zY1|I(A>r(R#7+M~OoR(|4wgjO5oz+68}HZ2g6MrZIvPNiXU~=V^XJd}UP+`xw%LB9 zO8@he1g3%EVH+D8yd44|WF!X%`<37dal^NJ@k2>;M#{Ff82RC!5%a!C0bV$O6AkIs zx=fVOfB3G3&VR<7jhH@AHYDsbfO8;i$v!y=q^R#thByPDda(Li^O>)=YP=zleSyQ)oEY4bqrQ_r!kR1CHgNrsDn?k!s}v85*Nsf2mR z2=LnOT74UgNP$_I%c!Zmxjay$EZBCIBQyFg+@@6M=@Pz2-4L%F-<9P3d17vd@ZaaP^#J3prjBqvo@+XP$r8 zk7q#k2B!7)@)k7y347EG$bm8hH94#1#MxbT3-waRz#UQuld;g8qZ4}GUoPG+wYcIb3PErKJeT+O66a94G&2#FUJ_V$eg&?I!#Z6 zeuzp)YO+cS0u72lxz080DGo?DqmEnH;wBCGn#!@GS}Zm52Qp$KF=ap8D(E^Y8Nvl! zUQqF(Icq5HWf|2^QjKfU1wyCKi0dMxF zysl1*4V-pT5|X+6y6G_wx3i1gW6GBjx$w(?tc-W=@BE;RmQtN0t4yOpu`dxCHaq{Gc;Z#i z(9x-}KA8LUOIPr}BAy_8rbz93Uc?GM=@TL6ZnW=jZlfcI@7LF3LCFCa9+%NSQ@I^} z|5_f1XCif9+s#s4(d0v0rrdur?qPTb<}Z?Q*0{t}UP--Y?RepJ>aR$>&OH$pPe@ph0S2|qPu99S=Vudba!*Tk(=#%cNaUy6u?YgWlRAH}QqSs`Nc{|hfg zLJUVAw>;(#<~Qo zkA^*xQ&T6{NMP&Sw5PG}M+wex4y7Tm*9Jth{G{qf2Zy=4&)eLC1_R{R)MQd3jQbY5%(o~~WX zR!e{e!qw3s$O|_FMObwN@(aFtUc3k$oASdnzG(I~2g3vl*M74b{*Tn^IqJO$cX z@0~#4A}rkTpws64=c?iZ$Ri^TA`L8g4ZIT}rKhtf6)%`n1a0@IFrG;plz=pO#RfFu zJJ_}VQx(6yV#Ak$&g?2SQCnUth{g#+GJ3ej*h1M@` z`8GB2_Ls7N=qwv)j`BGd;-jcPkrKWy!%_KCNrtUaus` zO%gDC4$Cy)OyDIGd;%HKt+jM8Y(GyP^(YG;I=b2(AGJ zB^Pjzo}b?v&5{6LQ)!fiyTNT~X$fcuo*oc91~vpJDdX zcmLD^G#v-|e%80PzTY0rf;-*v)7(a3B4A|oIy%GlK%k9b-k-125Cv3MX!lme zib;d(>Cn@>WbY|ZXUVFU;(evyD1;<^@F9r!l*!V3$B0+%Ympe$bk#PU@vNU_1}H8; z8wIQfL(60l`_>>JRUYC#J`SviRDB@`~;F88BE7xZ*kw5!*5BP-Lr(rEY>;<`EX#pFlk{iWu#MTMoxSqN*luxIUS75;9Q;oqyaHd8Ux%Pv z7|F|PLsiu={x#h3)u;OUv1Ok$yCV`P!NF!cP)`3)$rIn%snJl6PZPM~;UO@t5*bA^ zhLw|(oA$gt2*F_(A^Q0UNv^)5>=Te>!Yr*a7;irzCB+Bj`*KMfIhh_yV^LWWb?&Ys zP&ODp=B_CYK0YEZ36arnU%yf<$~fC;f`;OtQdfo|1}G9bC@EH*BGR}Xt9O~0+{MTU zO4uYNo12^ucz_U_n;Ve#Zcm?f9<|=SCSyhn9~No1nN5{yG(k(KEj+A9bu(eCYGLoZ zg_kZV{pP%Tsew#LzkjE}@L*)Nw)IUl+OFewP=*Kl&L1~tDJc+mS2x}e>nt{-5>C)4 zd=kuoc@omna&Ry|+1_q~;*S(zVmmpR=Hyl) zBOlGrOVBgq&CIZY_Rep;LOT`9TkUgx{ki6KcYh`>4ovFvdU}eQd2y{*xAMRV))*iX zTeusL_~u%6Ga03Nc#JT_nU?aa`@=mTw#z>QrO(=$Xothxx)Jm}{qq9OQhQ}jn1`wtumqc21V58qAJ{xjSF{K`}Ezoi>mK}MYeGMi(O z$teO;^Ieeq1SNKoyn!tG=|PF8+XW_A^B)B|CpVc-?A+NYBn{65O~h?IawgV-mMM}G zUYuPs^LIqmw~)I27MevCW{;%=3DYbga-Y-iPTz%2i~&4?Y9Y`SojL}%e$)b)0Jc-XfO_e zlpFT^jB;LgSP4a&1A?GW-ML$EOwBF_Fc7c|Cf|&+FpGZ~wh`*Nx@tFBOc=zFXajm% zx}DPC;J%JP%J? zx}+p2I(mc?q}Tdv?L(9`&}lHRWMy@)uFj5K)9HK$;+xO+R^v`NEPIz5al&zVXvUVW zG1pJ2&u%Y|hQDHFWMgM!pXqN70v2_(W6E@xH6_K6jlB~G8!Idv8J*bwh8U?=0ECUN zDh+{Kh}3f$;W@yugKRnwrzn}5??glt<1wwo1+j_;!1LHqUr^1ht1yV>Lfwt;f5gat z;W%-toFsi6BIsRGJKg>Jq!tf#+rfVUvdeB`xXK_uY>+CE+;l5KL*FDPXR4}! zutLSslHfVkrw!kthgIW3lGw^ZMi0pS)38R#ubKtNeKWhkJqN)s{IB?Sj%se*U(e z77NqEe=fSZ!gKn0UO4EZQ0P7qP>gvo?!8P=2omKMPX>RK7n>*WIfphWj>ZaQ3r$#AH z-=wzEi?87jSU>$9(BQ!E6sCS?C&B&-YLVjR8 z&uhaVNv^h{pw+vjsz)8IVa9LYZie6-NB5+rcG1YcEkvaF4Kz6^;o_C4J1~%-vcJFL^hKh!4Xi;TH{BXF)xRV>uN|kRK{#B< zppiK-iNM(|%9ZT8dOJdSj5R#cDS^fGR`VmyGvR#6Q7KZjHHW9ay*#xq1U1)*VND&MZcEo zak#B5E*=!(yf;3Xg|~9#xf@IzSFtRnGm3@}++Qi@;^O+;XXLM5@nj_Mbc?*9Xb*V& ztD*&s&(6NUc_Bp}19&4L_43x!6XWaaYhchyp+gB3`d}@O#>X-RMS(6>y1faMMM6V^ zslmitJ^q5WB)ohOmoIkl;>mvlI4{-<7%kuP-rHLBX1&`=C;pUZnL zUr6|<=JWJlNcb`?YbWq>Q!cxZKK7uv4Ak_*tG(-eO&83`aadd?Q6@HCFoX2BEM_hy z$J={HCP6s*+ZT-bI5kylQ|L_H#wzMuBUdsMDR6!Q*2DwWAD_OaB^O>f?&i9EFX8&u zv`iN@S1BSYcH8Egohxyym$RHD{G)g!Utru~X+ng)ZGz$W<{rJYr1gUGYy6TWx`yg{ zi}vh|h`|W;MUww3iBt`4z^tG2klI=#wmp=?S{a|2Tan%#rdl&IY~w-?($tsUkL!6| zg}}0WPM4e8!y#HHhSTG;f4FSx(DOMc%l#22w9fl(cPn9IlY`9k%Wr9?dLgv9~8E>ps4zluNA1xEWi#ZgHFa-;&jX?Droxhm3DLs#ch8UV?2sh+52``g`S>6{FmUImb_IM=6y6 zn4cy{iK62f7w643d02p8qlD}eUFN0$wawv9w?{a_I6puC);)5?ZwIyeJ}j*~TV0bc zxW!Ljl7Y(giHnLdqltFy+&Y$XuPu~`&ii^)NOA(xZF~>Z!hzmnNbPlsw}f6>*?ZY6 ze*TTEpD*WUL}?iUlzv)4>cczRi&d1r!$7gT9=i6O0cD808TMv z&yI$YbR!&Hf`0w(CC)%--vT%D%eDu!+@$Cjl{|%@A}%$x7SGbckWuejIU#OwWti2v zsW)fGM}2?yVZG6-kWuZv?&r1ntTdy9M zcm5n1id;LF8+19Ek8d$>a(Ow*ck*vnFjPibFY=TliLqALN^VHc=bqcDkoXTDK0IqBrI)+97O1)hUMXZ4paXewbMp+( z5K8XM$?k5Ulf^VH-eqGaqPHC3=i1tfm1@vR`S{~oGDsE3%t9cJE-sx6rz1KZAC(!V zOoQ_ymHkYAb9qLVBgh_wpUb?G7pyf(s7d7((vhX!y|AM>mi zsBC-|g+PD^>FFd|MCp`z;1Xrg+nf_^t@PsNMxKR`&b2^(e&4efe+f?vZpIZramiw1 zPMe7w6OEYX)YK*mzP>xHA(a|mZi)S~rR(tpIS6Fo-|0`3zARbRHF@0zMh<6%6E?`n zWu2YHqM)*y46)9(Xv>RiSRa zs;EYaB?H!;7HimGB0ZTgHtOAjk8D@W9=)-U`qfX?eX}`qYzYT>54y*Lo)E3L1; zY8pxcq+w=}%v!abteo79dS`GG-}4;xSA~V-mytQ zSH9GSTu8*w&aA*va1W6cB$^$ns^Y@KGqB_}6D3nZ9JYYsLKqNIf37Q1Q=g8Zp>eab zTN|#?-d$#Ww}O7rP$7)(4)QN-;1*J;x?UAInJ74~sCX`)?5o`n9xe?Je_YHL44Vt$ zE#4`_-FcD5k`6-HzMaQ0Kp=>qVT`o& z()zlpZtI|=LRw;Sn0=P7cPpKU-`fn^y}da7C{Dm?)DyV;ry3M>s^cTtzcnZoe-Pf4 zy@e%;AhO(~EF*+P$~ir^Fs7uekdu1ybKkMA1tqC2>?ZM8zFbz!2r#g8N-2|%Xd@nM^0C$g7)Q1%e1N5pGK|KQ( z0=`P#H*9?KH)m#D*QdBX_t)oXKI+N*^Edl1+`&!E8WOVj{`I#KUy<4xFJc@xCO6_2 zboR*#?qs)?>#IsHFy1Q2Q_s%4WqHxN_ZiW(R)AXkbn$MHwntK$wx74v}KfMtl0 zjDf9zZCu=j!c4VH&<}J*Zm(j2E2!$3^934_dE>a)iIU>5TAMWQ%hzuhkgW+8nhB7; zoo-GBUbq`v1J(Je`GT(~VNr%l8P%GuS#IzrKLIHO){OU2pJ893m5F34Dx_$Mmwig0 z!hS%=$>H=D3qtR#D((=b*v~_9TO83UPv@Y@Zi|0eijuk9z6~AXb{M&O6*V$n2TTLi zi{BRjhb9988AhyV&KT* ziuW%28-b&kjt?HyIpd3kE{0wKu&V;gae#iDGBPL@#V~>&CEK~w)(#GnlSLJ51ddw- z{VdT~&lR}fOah&pkbh`3=Gh7>RUJXpwbjGQ%ksca-tQODtEy^DDA65vOiQL5ezj|Hxco%5Ewgg?}Z42(-P4ks9 z?5;cL)p5WXeTop^LLQU0fwg)1w)1VT|ht?}+e2=bB5Cox@4a57i0Y4!ER z01%*K$?=AhbAFL{O#1x`3N_UwAB2DaLo+r&xaeKNH;RD}!?{+4jdmTBrL<0gcBOFe z@Id~DR;>xT7CVn}HC$8V)6M>K2iIG!z_i-pQ81nx$Uy&zfj)O`o--$#>?r61%G}NAi(j(} zf?|b*NIbk^jYY`FGB-DS%rNB2VlNMpY_!t&12o>g5m%-tpz6Hp6>grsx<8b>qPsx{ zs+kne*UcC}fWE)8Sf=oraz8cyRkDKV!DlQ1&on)!p18j)lUze&=qx%u&X$S+^GK{&&k(JLr)yKOY*31n}|`$mb99nqOvbvUvJnQeT8vRQed0XAqWFia*6H3>rz~a_^nk1TQUq0$PCs^Ijr>wWo<;XLZ5q0J0 z&6O2JP42M>eM#bfr!+|;Ogs2XX+rvRKQq(b#|LE3qMVIpXw5x$9#*s#rer7&dV78X zCNG?ipH3yOKc;X0*RMQXT|<|Be6u`e0odQapG7l#KtcLT{P6`hgDW}t+ng&YsS^WG zml(T(TBrg#EH7N^DuTO7$=j2PH}@kMK%xV9iG&yIAy5N@{SEfHA*<|^j_+61?fx7< zO=9L}3v>3IpEJZ32Ah|Y-hVThyVHq*0`P&ornkN5{}h}IKl@(=Cyy_E9AOH+Ol;8c z|H0i`MpgOt>!MR7q)`d!RHQ^{q`L&9OG3IsxiCcl_?_cSUkYGn%}raePh=IQfBKr7+!>L^vr23q6=0oQpOP z+n16DEh^Xoo#WMAzKUqC2hu#R5)o6qUb-M3=taJE{zUuX(5Gs(`M#8h8 zSk1a^~+7wB$4ATV&SKgxw) z0zI36c}?3(%i9-w7ot3 zm6>3gmt@zu-B+xublTgyTPTB`z#B@zHYJh0?{+Tvc zZq%Hg3FpNJB1w$grym+Y6M!TG@MF>$5Q};j>t*Mk|A75A4Oo^xVW7*rSDhRgYCdrO ztf+I)sHd@;^a&QQ8h0Fq&uBhq49RzAtJ=8?X5v9fOvg@Ef3^64>p->l3M)%F{xci` zz$j#0GKnPXKFy9aZJPu*C+1sec8n^v8`SZ&nnLW~*_r9`K&q;%%Th?(pti+z^_j1| z#b`O4f7Mq;4Qkc<2L_H08#-K<7kxG<>t<#Kz?0^m`4t4(o zwed)5&C2WRGYs}xGeWc=tZLa+MBuJcRpe!6w9L#T4+jGvI)<_`643`C*pZg7S_06& zt{tt&IYBp|=Vzu4$>4^5wQ(u6qIf8&hKKvtDkCH70qL)OK=KWSUTv+SMkA`ii}EU~ z+}tK>H3Nh7o=85?GAG!S^W=| zMzIgeL$xfW5Y1rDQi^lRtoKRb7;LIZIm-`~bNLCi_BiaLWpBHq_M2;}( z%Q%jgBFoUKbh3OZ^sXX7EY-_L=Vca8o$~)vO-5)koNQzap0---kBxIvfW)<~l67SD z003rq>y$xXQmUjRGei^@qtvr?8Bj4^ha;%8!|`AbB>Ais7E%M}P_R(x>+8$ukb8ZM zHPMAtZoUT6>$Q!Is;a60>!4&4EF(%Mxv6FE7BK z1^Y874Np}V6Z{K8Ds@C-+=@7r0Xo%SO-Y^u#Abj}CTQvH?V?J!87%Qfr)DSi-5&{? z(8=-JmJVJV_(9F5C-qL^_cyX{3^76q0J1kWh-OB6axti0uac_R%I6jy(h6wYWyV?z zP5H^HJZCZLCz*sYR~hOalNW9lre_sI&E@5dNG*4s%zjqb>euQ+NBBb;UAS58s0yG6q_Fa``2^# z)+Z1i&^wOZ6U^Bg)Ytj143|in|Hg2ce1x^EnI#>8kjA6mB*5PIf*wq3UB`PQbBBhl zF^&D3v&yxlUqklgdB%$^9c^uFF)@eF3$9L(T(4l|1NgqQdm%C1-?YA^dR~Xe3aP9| zl*{d}Fa~gBKy+k9wXMXXhN@SF@F)z_y+DCwk6?Or9QJ}DIUmTxEU5p;#DvmAc|V_| z|91infm!O*tRgHdXtx7gJuCHF>x%MVQl4b|R9Mpe_)@ETx^xJu5Tm~SFZs@Hgc)_1 zqICbTy41L}W#ejT?*4fgNRy|3T?wwEGmegqpcxNf zwa2`Y>gpy5dT_EPK!`tHQ(+ts;N;@5G+FLpU~G&gNlixfL<+p@-R#K7V+ar69oEsK z%~uG&snBwX^1Xh8X^$1$dhyh$>2yJgAUu8m<^|r17ZmvHLZy{aS)VNI zomrysQh=`vf8q!EA0jXicN2XUAava{GL_%tEd49?>hW)T3*;PAqfd}={uf#?IiN0L z-`=iaXWvOnwN_KBRZ-Ot6v&p0?|MrkS5*!}9`vp4{quSC2PGKEa9)ZzJw4&5LN&|* zjAx~4@XDkTTT8)=fWJsovje*j(eK(JBAHmc=gPWQ{r#OsnnSiHmUC3S7gE1?%5sr^ zJewPQUhQ}$rm8yogMi&nAax4y>+$h#I^4s3c+?f7ho_OqNq2eC5fl;<0{kv6uL)zB zO=AOk{a^j~0U)&J6+06J)NkM3nE?-+xT?+V5mr-tS=sQ0@wU4Y{v6DJ++5u7?l<<* ztiD5t8MaDy1uY2wbMnnCr_vXmd+(#KUtN$8aB%~~#dV>|IH5U+$nkLr1tuoQ4{{}e zZMk@MVMZo^BmlKV@YyMTh^<9ePL3rWp72&95v&=%XI<<}G2;(+(jYyTHQ;RZ?fkql zER2PXEi#%8n6c@m`f@+-?XHAWn==4Y(jzPcgWb6r2Vil$Qwi;iC0ULw%~`2}`b z+N~`QhVo91j>sq|7f^f)JGNOM6UMUHk4WpGj#W>==n)N)a`NY3Y1>d3|4Zvs94_J)YWnDy!lvJnK?C^r>vAb z2AcP2*;D;%J#XG18w7M!Ru-kD2G-XlKS;DlJFn9H^TWbwA|rv>MSnZ&2R@+~u6hzK zLOMD+sn@;X-K-pU<9o9qid|{MmVxTR0zY>bP;_^+wHTobcy9;tQqtaJHSH}^c0FrT z;moXt)$y`DWdD~~E8ykP?!x}`PKwD#-tFBIW=+TR1|)-*bMX8hQbe4_(F1cBMb zBvsA_WQhCKQmdeFutGfhq_pB>>qZqYQG*2+Ay|rpQz)u8(Ch-2mGU^%yY+rkU0r}> z)@HwP+nJag9uARjTGFYlRlU8f0>p5dP=m9JMYjF@Z|Am*D(Je}D>EVJOSKH^Z*Z#Y z%!i8_6=2~{V&i~9OP-fkQ20mSY?V1r5b|;iDxe7Hy1EufB?9Of7)*dU_>I%aS}`9| zfZ+u7FVnYKRCCVUS(f>FOpZ}b5)76#s?)OqMC8@sEzlUao~Zy_B_g*?blf8EA0^(d zB6kG5QdLSj{zcea`CYX?Ev*X9WS)iplP+tK(3c?R;4v;73&rqn=I$lXS^z4nIT|N5 zMW3(oG5;aK@=*F`3D()l+#v9LzPYku#ovb>*qv4Yce+H@D`-GVYJl54r|AqMjTW@! zst+84|C0x$F#2yisL!Q(tmVL%Mf4&}?X$u|QcX`!SeFhwyw9Pph<(Beg(RS|_4EeZ z^$G*+oNMp-#}Ov0U*+;P!DoF8#xZ*ZI14PFjBNhrVkuMchBv#L4e&}!FgC)4jWlnds_HSQw{@`_q{LXdta?dgTBF^*#bN-G#IrU zt`lGR`Eg3eI(UL z|24wAa;&Q$D(dYcT%Ng3%ilUT$UPa)WE^$B6Dj!BFcUGZZs|dEoQi zV1Q4OGoywGM)}q18hmp{C)P*S2J%x;t($>7g%2;#LwDC7-*u6EOMlO1KhbaDM_Y#n z-QBOjarwslEw6_z4;4mN_|1Nt|DLZK9rStyp=<)iG0#ok*hNp5?})pq;Tk2f$FcvJ zkg{ zGeB&es^`L-KgKU7#^eTc6GJAyhl!9~-QHz|->NfCUYfFc^piWN25k!u5tp`(+bEk! zg2eE;`Q7Q(JtUp=9`6 z_hL}A(IdL^;(=?xce>vEeu4r_=0=T%vmI+bM1{Y0$XCI^!ul{L$$O1*{W_h**%RaX zZ61jm^?1lT`udjRx19Ke6WPJR!9?6#a*}4NcJSY5^m-0QiWqRi$~x$D4tF|g56Hr* zFt43hn6#SN7JvBrTiacTFjat$(@1Le++1I5C_N*i!+M{E?%ErP{y_P>nciN%$$(cB z?5Y7mY7KLk!um=;CC7|G7~HAJ$PH}JCkGN5)vM{}_CEf7UDZl?WMQe%Ph{_Xt!7|%@jdZ<-r!OAvsAm&6=qW^f? zD7XIBMPHvVPNJ>yXdt0eT|H{i?La}JF~3~St=%7-V9cyeAalPgmL5Yi2MLQFP4z^e zeK0UK(i>x82^ux}gj z|DtBIEiGDGBN?~cPo|GkXg<(jQNMeq>9I+Xfr$aS+I4kxk0571&ATaH&8t_8%(qQ- z@n{SV*iLkZ-|y}33uSbz6#`*e5FRs#9(t;F+fpLPh(>hIl*CFxPp{Pw9v-=to}NCN zZMsyZzcX3H!1SJ(p3y?Nh8&2zvSmzEHpB3K6v!o65<94_HBuctol0{tC_HAFSf_|0 zl=#)PR&N>TZDYy3brDJ24biRJ`YG=^U;EE3LC3Lyc-LEuNS_7+%+v&KXfJug{ z@zeWtq}%=ZS|T_6_qHZ&Qzc-X182`p+{(2LeS7;h17ja*YKot6*o2(^6YL^CVPUtZ z6$A_ozEe{#mXtVPJ{#_&o;&GRY2=FKqvWvN^#~AWj8t(tc|EbA2q<+7`a;>+;N|Jn z)$fxy$)<2+2BYOa$M654{-vabY3Wafgz(%v$Ck-SuEMTnq0;fSYJj*8Y;Vt*&T5^V zwRW$vk7gky(77J0oYJX$OCRRa9KzGrGEeQlHVhj2E|F)?xEIK7gm(qzM{u5eLqeft z)4<+Lq5heRnOwKozBo?!F9yMKMw4|A3Ihc74^znItXzug3zv)7TwZfN8|z25wJ7ya zpMFvBv(_T;9DU2UR>;l~shMSkIH%Bw%mJr}xl^Y%3h3f|r%Dl#Dxi0fld27MOXsGd z*I~b`w^DhC4^MA!Z%1}oUov9b<xbp;z;zl90|$J2c^cF;>Sl=Dw4L=6*7lQEF<=ONzQ+5*0QtTx-^L1HB( zF&-);h*OJhlK9wRu8h-&c|2`cY-1Ct!`T=FrnIXT-OGZ$<$zk%HYL)_(K0qjzQtP<4WzG z8zG-*TH@?K3hf5~tgLILGF@U9M2j1^C$u zen*Gw(|%T3+UPVi+RiOYFrj`}`i-zJ82{Uq( zpP@GynyfN1D_mX)8XD1;mVOFXdg8g!csHZ0+PkxB(%&m?W9{sCm~7B3V~qVxSq>ww zNCRAyGFpp^tA2B?+V;zGiqB$z1;$-bTG|F=wL$6veY2%Lek`r*`0yen_j-AzqR<-- zH9`FuI=ZoD6BX^N5!}m-Ue`O0iKgFIk<@B7Ho(NHCpj6+z`MjtNQaQH{5UOHS{Q@= zhupl{n7;MCzQ77&1gwC?#_WQrVJ>_3=!_}n#=s#akA*4x!J(C`gUb|!T&TW!?^8of zrqSs@_r7ekeZqFA^1{t$2OY? zCO`Byk6!pG4)MpI;Ru>wujuy_!lzYKumuH8#TR;eza$_atz4p_`V99Zt~F&et)l#T zjmO2Mz9DfxBKWn{d+{nT%7Vn+GlFc&dTIuSG!0l(+5^)ep{!B5&#c_D15rX52E*Bf zg}slTJb7teBMa=O){b?@oabvQa&mG2=?5N()6-LJZ3rvRwxZc>hq5Dp`nQdlloTIteOyL(9q^H!<$k zDU|#+3N`cEt}>f8ZghBHPvAu^bdhneTsb5axyrxUYjJK|XS2iBL=x>%U)F)@BobBj~2tmZ$YIEuSoKFUJhz4C?(wd!4z zSEc!Zf;gWcLw``qw09t(ccxr)On+GAaF7K$DkbiEBb~jPf;jWNDbajDKMC^=y7+_| ztIiS@h#TbWf?&G&Hhox{8-fmIa*PoTCOx?VuNrs zG;d0(V<$&|EA_;)<^1>oTuZBJ**}W<`I>?+(2U2z$um{^Y$}q zaKFyGmmpUJJmPW#IowDs?%Dn2b|j#XxTSIsu{ZZ*CV!jA-nkT=l+2Hwq}(ijA!%799$m~9UebMro$1Y)78a?Lt2 zi$_J_qw(xnYDKxgj>`_o{#Ap*%E>UyL_eKX{@}mlH7#`W-{L6{fdt~Wk!q$VDycy`&5+>-(3gNyC+N7a{9uVc9-dA^~I2F zN)0Ix5fK?1T+-8*)>cIF|1rpmiFsBos7W8Am-%|7|D!TZl#*BM_O^!Wox?sp{BC`% zUAGeyhng!14MH3aqHvU@MMd)^Wf}NQT;=80CTLat1E9M(&0M42$$3CbtqQa%Cf_<& zNPG$k3Lx%4f|XAnJyj+QW7>XAgW3PyXo{aL3}2&3cm!T+@HJLe!i`Q*!4bv`s|5IR zmQUXCo^?LgwGzZnfDh#nq<^nqC72E?SNsQK#GrESOB_GFuW@mpKZV^xe);KY^a(uh z8_WXEv?Uetsly^)zt-bRe)mUI@cE$s10Ik4|LHRq02boz|$T4)ec~ zkjRf9r=a+K(ww|yX85cCTjIqBjZ+Vj=b~M&mcndo{0<(svT2xEl^Jxy1hm87J6HGj zQ^CPKp;k7!C-o)Rqu1S-L&Dn5Ss&+38$8yf`7h59)rQFq<#R@anh_zAWA06_n`TkHRXgJa5UT zA-`W&ZhgI}rsjE8((@t^D@M#5SFax&4X{T0i-?Gj zUyth$7#7}x6*%g?{C5%eJu)gP*Vom<5^dp)fdpWv9xF9B2Mn<@X3W3}47hy(z<6r+ z5+uwdC(LshhIwVw-8+04yAW4tI~Mf-v=D?i6S zxnP1-EXVvCl|#N#PC7Qqsj+8Gd}^w}Yh`g`Wy73r-`V`6G8*q&^7Ad%*9|0{lw(2$ zPQ;_-C?tTFI5>GGZf;G}&3dF{r!*THywnE52iCJQF;fsRw+=xrArtD$KCFP_d{(;^#Z}Fog4>so}S>nVT`j z!D$O1uC&uc$Yg1Ll)9l=3~#DG6XVG)iSDj(k}k`|Q75^pIB7E{bJTPHjqja0E}StF z6z?M2G$-(L^5d4YprbR?J3kO%zIA1F2REPy3wkOig}M!tSSlHB%yu5?PI?+eMfH7q z49*zC`0Jxtxe5Y{>}fm8sXNQx2$|;_i{5L)@y_n=?;9%?QBhL5R9Iz&06O}D{~wND zSJ&^8E8rL9XJcdI;#vszv*D-@MTJ<{ z+A=dT<`)$$R+-ZsIl^o2uns@*J>}PX-VZ_6st3310cg$%VHOqJVGw zX~$~5vjHt z7&QYFNY+?yoiPc5`W(w)0Y?1LI#H;+&g$;~*pUH6 z{qC^X-es-MlA(J{6a*LBTBP9aO@lpHr0@9XwPxs_t>C;V+ci_8juOI7*)wpk zR5D*^=J%4Mjk!1KHwV6V{12P3)fE~5Ge5`K_Mn52%hZr3B1oB04X^-|& z`F?Xx|Hg5g1BZ=~j-Em@$uGAjboX3*oCd*Sme0Xul@$xejfL3vAo-ypv3I9Xr|xtR zx$Iu~vU%YV*%m^|z|0Jcc<*rlHoK9LWA)s5PY*&Omp3bV0HWYw5h)5cBS?i;SR6 zDtD{dbJA&f(^^MEH60ir3lQ9ef0&BD( z=C}k$Ojp5!5T%>J^m1cX zT^Yw%^V8S$kD$&+3uy1^?w8n#YN5U`F1{_5k^QY)(w_ym&Aj{O7Agz)RVT;xYHA5Z>hhOY z^YrvBKL!CTQl(A*?%hO_ySxnPs{53U=kHhsP1kBDbOLYDwEC#X>cX{ieWhsd%>Xtx zdmL`t&TKn0%?;SCvK3Wk=f$1m77Wvojco$cRRvqlsrd=p-l<=!eKGqJ6W{|>m&+d| zoCFfzg_o;m6n*Y?K1ZHzxHY)ghX!CFTso7Ufy5Yi=(Gx>5oow)kAacn=5`PGfREyb zhmKQVO!6?zemCC{&fVw+&R4 zewxo8ZvnTJk~MDE8+&k$yLNO;<@!C_^TuH1)FQY|ZfoI z=JY>A7adN19!cxB*UOeSB$d52IH*64f5b|O70;~=jw!*m`*pe|_?g)+3o;_B%?NM} zQ_8s`k$kbIkWXH#Ux|@Zcec#CCZMUC3kbqa1`n)hTY&+9fqFp=yqAj>d?A^;?#lt!UJtLocn`z-vZ&L#2dv|O0d&s#L%k~ za2tFrS4idLN9X3f&Mk;VREmsRTb{p`Km@-AkGr91GJ0}aw0H!t25}>gxAc~1x5-dO z5{o#4@!3X(howKuW#{A|0L~zrlC1J;?V4Ao~Lw zsx2`x$jfqG;t;feZsB08B#szhoN@E>eJ&Q(`oed-0y2WBi^r~z|-)`s_Qa-S@V3c4;!Ju38{A1GvKWeU$iaMz=gg8ta1wjg^W=$H95O*xlXpRYqpS zbgc4lx(wup#>BqF!@>PUqZan_=NmanW?E~h7o7^ZgO|zUez6wSbG^}YwCd#+BjiXf zoby`~qqci_K50DDjbyv!|6x^XTY^ zZPn=|_4x3xp^1qA=1|@z)=FOyNl6fl*W25Baen?7Vq#)qMlt^g5)mCur(Ry1miENh zX(d<_8ymZ%U5mQCs{KNFdr#bCoX;r9bpAOJ5ncCt=cKbUYtT!Mh>Qf8A>8w&z&MXL z?8%?I&vS?~tOzQp*thC+n%uKyUU8}h2Ahn=J4CKGN6KG9LuSSoU3d2P?~e0|hI~It3{RH+}i`H6eJMQ3N*T5Y3b>wxrKzrcjdoh5)%^*GQb1*!cV3K4(bvh zwG|-rk0C%;2@>hLdwY=cjp{VAu4pM+qBfu85>ETqT_d^`L4#>Px~ z#wd*^@+*pqHx;icn3$H9mH;U?BO@bqQVir`fEgj8D{w%#c5(%(e~={=jwx7}O7gjp zuuZS*V)v*;$mC5}i*IgjPl0MB2KL3(5aM|ZGmM(ryvKA8C^cSi5Tdb}n3}>uh%Y`$ z|N300MBznjKs~Y1Y;jfv8vj0^+y$=#{|@FvYwVX=iW=`Kzm8Kad%dBeB)NUMU`_pZ z6>)u^Y974KP0MQC72U2y#P)T{aYim!p4#*N(z9D96%h=j$wGDD^KosoG2j|mXR|Z0 zyu3_jy9+EZUE~!NRa9OpNLZ^ru~aR|&I5@xh>4h~cF+A5+sOaC8%-UP8|b~6oPzus zm-EY;jie;A>6Vov$%GH0ZBc;fb$`^E8@WF*nn}p^^=H2x(J^QIeYvIqC+Kv61)N_~ z0NxZ-s9;T5UtJdx5_Gc9AL#A|6DZL{*Nf`A_jll2Sg2g9AS|4v@oE%r3jzULJ%0Yy z>+5S5=y?O4YNx{wh`agu9yJ}^!T$Qh#8_KLTfVi1$GEhD0`NIvQHSbMBgJnFUR<0w zT^(mMG&FY-u~*mBJcg(@I19FI{9|Q2x;XId&vN`&=#s&d512RsqSjRedcQ+1>LYcs%C4~M?RsnjxUvIhMwn^e8X8Prwd)M8klJ(2V>=c8?kWUH<>!sER zas60SFI0!=qccDmj)5s!(SD>nQp;^&>%J_W5Fg*tLY97A*EH>Ll9g1bTqXqYMH9@w zQ~N1>YEd~tN?~Dx3)Gfe>j{MX_3J3GY^c@9F=~bP_}$-Zn5&-1LdPeGJ6-m6!~5EETqzU4hy)k@%0LkR+} zC@BHw&gG~b+x6~|fU{)1lO6PY@12(C!>!Oc49ui90EN@cDfo z$$-ng?Kyj)iY*2v7GMe?S7HCXS#5`|Fs3L6Tm~Q%8^(QgleMV6UX2*NZe>PSz|=Gd z7+o|B*ukSV;OYOp`*C_#1n+bCi*>N*0zDK&SNBH0-9I`W=^K)QZ90kaa6&0b~I#2jp zuTByuF%TiiKukOMoBPwfY*_dsh|%^o@Qo4r+SA)ZO4{-WqC-Eef50^iM+q`ly9dmS zQb7;vXPhc)e^OC;`uD_v_5LIPNQ?pF+tbre*<)TvSh#UNk>xdf*W4O4s$$qiM@GbW zzc2<_{25{vFA3a6fcfD{r-RhVNo{Q{EzN5LQ9L}{^}(e3x3`qEv?QS-Afql^1ca5p zVvY+!nc1HcUADHYbgh(l2(4@OJS=`EE6earhB*$Tp5f!)_<(cIETWx+ME^uo)SOQ> z1Au!lFfkV-By7}+HNgx_NJyx9@q(U#VST`cT;{9e%o9_Bc|be@cgm_7Tu>eQY-zS} z3dD`k(_im5HG};r0DAzsJMSap@n#(hYmtC;YUooEIuYFrF367!J~_ssRR@*H$n-Rr zuV3#M>f6Pmh_hNZPRK~f;^WupY?NP9P(;UtzreOLo-`Y5K7aHU7dQ5Aq8_jX9Mzx7 z1|bXOAO74Ca1Q4*0Qa=3*GcYZ*(>vP`$F@V?J+~J9w@=SjqY9h%EUx@Fp>u{ajJj( zAb*YkNfu2hFPr9(LVGq2Vs$6RobTLbLx=Q-m)pI(1_5!`PvjBAggKyJPbz^KczXqh z;?tU%Do(CJARuDT8hY*>ga=aXA>he6S{l}6ko7S_AzG~oVIGd`&wGYJ$qiA3t&+m2?-Dg)D9-mbzE{#`^E_;heFy#k*TSv z*LEZ<_1rvgLPSjD>K_~&92iJ^_a(LeBOXK9QE4IepDKF#eX3`rv7(!HiBkA$WwW_o z-Ca{k`I6#D{2GhD)g0y3!PZe+?(D)Jm73Gtu`Af+c08rGPQ!Q#28WKWZURg5iv|ox zlU51vTgE5Y@SBK>3uhRf!}ps)my;i#qQPno147GEdWP-oZDpF*NrUhZKoipH%^Hm> zFR!qajPKUT%`<+g%jI}FG+@U3yo3bA7lK5S)GTd1J#UxgkaoSioSdaGdO7g*ss2P$ z7AISvRS&0-YH4i&L%rd~XoEc)_s`#={4Uj#8R8xvA7A&aF21gg99D>-wds@d(D_be zFAWwFBpH}_I&!0G`11=1)vUzzYC<3q5{PlP%m(0hl*Do3g+`>7wbL_da1nM|aM zMs+c9kf_($4^K>}T<+p9zo_5$)c_F9pscJ+0yZn1N}T{W^$U;!Ls%|{c%O0e)X|EH zba3dmB!ndAmVWJ@v2hun87dC!*8@I!+8MOSa9(2VIk3GUr^)f)Eq>z|z!dm1_Jm-` zJ{Ulc^Aa#I>5d84VDBwG#WEzzDii5-bBFeZ!RjGK--*@^cdj%ZfK3PT>q*I4pqKB~ z3eae<#O2TSBFW)AQ?j#t)qVfGd73C-UpSRJZ8E{KxF3D0!|B?6vA{!;wcDCc(pVL?zMP*YM$lvRSXRf0KR$io(M;XZ6RD5A!% z-B5O7Hdqv0^9uxMd=Wf2hP?%q^!)s1lQuZWOBTrr0xPGnwzkz~?hBB*9MCS-V3n0! z3=-v|lQDchziXwp*)G4lWOdZm2L7J<`Wq)3Yww4Lk>NZ=x(@qCOiA@~)~_MB*Xyo`bL`b-6vMxw+D|%#blQeH3_zrF_zD zF#g`HQ}c^vcJJ!!=4#+?5z+;17HJ&u76i>aut3RXN#ebQrym)`U+;U?BkVM2? zaNt62TwP0Y{>pxIo)Lh(3XZABD3gV1b{A&3DvJgkAWkrS*3X1ll^FdOja5ZuB^-nU zJnk)9(p;P{@prpDQ;UU0q#`i`}%7l_gm3Yv$7TCW}<7 z|63?5JkcCtj!;rj$;c$)fp>OAm(vx-RbZ`0{M7O=k_Q?cxhhJMCD9O3?N@735(-ox)vMqo9H+993d~U zr`FWur!FT1e8rGwBEVM?U<^n|0U6@as8w`np2HaBB}(~CP42J*1AJGYm>v*MuCulF$^7-Vs3A^y7=v8s&?gvoLvJu5`}=^v+MX ziExkKDzdSJnY-lFphfWQfvGVt#IA-q7!eke9mMG!5n(U>I?0Y$HLbY2=IUvl?tK2X z`liOyap-P+1;%9Q-?>zx6wA+_ZT=HUN=&)E{ee2Qz5NWF32bdq5D=!spIyp8c;5K6 zWsH_Fn+1-H1rCo;aoeF{+Q=#Bna^NIqsMb;j>J2TaOzP=wxVF}3J`&F zq#gGitJdz6Z;AE+8ynMnV=$8ma0Wg+1ST!0iVBkNSm-z$F=iE>z%6d9Dwlo7&0?da zHJo7_I|s&8$9*y2ZAjzdf}E&6{lVg%%RP?&N`FHCU(lb{lyq@|Y+dc_uDp1rFkT)N_48$|GWwBH`jG~y-TIi> zSa~JIySmcc(o_v@50kDgk;QuBtP~HfAhF@mab9{uIm95bXHQ{(EFUbYS&|9q(tsn( z@QGUB5fnP;x576P{95%3rtcJ~&x{HqZe(g&ffxQ;<+`V#QIU}`FYyqjfeV=k6_zSx z!vkXv5E9^g5?m#qd6g9nWwq2rm0d@3>z*atX^6J^lk;6ch1w&v4xE_%6{_aWRkwru z*`{NoK<)@_>ZK>Wm()6Xvco_v-MSt1fpgKJ^F`5E`2<7lRH#(=8JgS8s_y$|Md@KC z`ieFyLcm2AOb;hP!SjiN>e(tX(({uI&|w)Y`n(0&D$FdvMGUZ-ydgXS{^*aJ>b;Pt zZ*Ev6B-GB%f^83kj@fhbKobTrnCKuoXG@P>LrAD&d#8%afv;ExKWW(UXiz1e&k7)9 znR(J8>l!p_L)?&{%_&_Y2@yuUWqH>E8qD`TRg8y`Lb{h`!X;spu6#KEbj zWspw0AJ;?@w408$MziI==WYiWPuAe#vRXR|^6=z)JjyG_2wko^`Ta;eO6%m7o^KMy zQQL}xKRBsj#YZJ)KgofXEZt-Lqdvo9`c`CA_DE(0Qkm(X^FEs$LMMk3F>!~4gnE3` z+Wg)23S&xCR3(C&hH%Ejqy8gd)KCY;cRwi9uRff@Fn2PXUi!6BZ;}l7e|T^p~KdNsw%`Sh_J`R|SJcFs-KMEfO*^2r2fJ`~MUJ3jbe3CsBZ4 z8g>VBYh~ze45Wy|HDHkZ9pNa4V=dov`vW zZ1+D;WJ-wOHYUIar+=9k*h?p{Hqc=r^Qlu$OgyLq<9}@1#0XvCey)Cz<@Sy?ENb2W zO;LKOL3x^-gvsCq`=4hm=_br>*|RBM)9|DIMtwD8vUik?v8padC5+2fkPnAv=rypl zz~xvfxB3^GDoiZu!^P1~dyMDhz{=nd7*5~osIHcL?tTPm3kQ#6M<8JjXfxm-3u$V) z=k3tb;zkN(Obu4n+8^&_5EIw151c5SkK59aK{)eNkh1P(VYVut;0b zindbcL)@3ICcJK(7*BuzeM<&-2_K`)?GX8Wf2wV54QNLt+k26bn_(Vwf=?eM-?k$S z8~uy%r1OXI^!-!!FRrw+<)kVl0C-k_R57V~Ow3^wm28Bn3|Q*5i*xUu?j=P5eEg&n z4$cQYn<&d`imZV+pNi+Ec`xTDPo9E@h&HgO0_cd`GoYoFF1lu7{`oO8Ca2q;K^80El|o8p%{3sJ0p7qsi)#8c@Ovn(h+K^v= z?o{KOT%eSck;*27;`By1Yz663otzHQ3Kuz38?up<{jWKL7lmb2|Go2trGAF zOH99oK7v%Rn8%td%yo)}RxUHMkQv_CMp3eFm?;r#R=6$MLYn&PF8dkgi)Ga0V~4(2 zL3eDyT(WzL;IO^}J-ojQ9-U(Cn6l50iJ7>$!h)Vt=H`g9xOz?<(O|}h@>>w11fnqa z-VX$5XnsM1T(Z-ddG^n;aG@)Q!g=pHexkbE%h%E*?*6nr*9ouxXXCC_RS~Es-F)71 zw!;geaR&+MzhI^4V!my8dS4UTc7roO`oAX7w8q=m&^D9n3Ryd%Jkw0y{o8;vv zBpo$SD^d@Nd&irP;kGYcfUS=zc7$l>O(mU^s{V}fydwO+^eH4so`rYUVg4~$4-Eye zcEAb(^@?!emnGRz%c8l^>Ao~z;wIHQS$(x4OG^dd(8lU2XfsPylAd0_awH>w{NCL) zF)&cl&}cMYR9`+r?U=AkB!m2pbAf`UN^Na5Xy}x@e@{KHsA&V*ZI2*8xkBh(KodgN zokJPix*p%?=9yd&Fkbibo1Cc3X^AOILa z>}c4=GAF<RRfp_8lAhhE_+A*;foB-n-l(1a>ugat2b0*d!YG zr0cTGNMm&T7>{SOYT2JZFZSVSZwo#y*M*ej;y=CJfjD-EN1 zRx5PDe{rw;xcP1VZ~oM4QRRrCkPzU*!DKwSy}9|+4|LY9F6}{5+fb{vjhyvITggHo z2FjlC=@oI!lmKRm%x-RO8&@Yl;#D8+1h^M?7&J6}?fYm1?zFL362OUZWJHER_C-8x z>SK>4-L2;(q&bysRRM?|_whdZo0e6^wPJYGwKZ&BXM>G5(5Gj~oK)?i;If$s$KLxI z^_z|0*a^qCMYUl^BisyqcN=FkiWItkK)!$atmzK6HaHV{Q{6ira=Oib#cqRT;z>t_3`joN_I1&$aZctEsW@gXM zq&5ojPeDOn46s8DmXGe=#eCtc=O~epM4LS9at41Z9}$JtN$7l&C=x&pUV9<0Rk9K=|z0Sz^wD&2~2YRB4NHw(e zgT*Akd5Mkg1T}*5S#HbVK~(6o^J#kN7mQ`~rSua`$$&`&?hqkXKxlY)g(X?8H}^%x zL;wT4^gi1|-POBsW+-}t)AMg6EHUScH%Wtb#YqK%Y2c*dCzkNgxw|koHYSr9gYPnU zAejeif?f(5!Sw>@V?J@IU+YyvLQH&)=6+~;7kCTB|<+QTK!-D!3Ai1w{-bDqh8h!oF^y2k*N=m^|1Drg?GBL5@ zfX64(W#G{Q&ipC?ABw2xl<>h(#^X8eum3@7RRzatS^^V=qYF2;j^-t-$O+BT$cxj{+(L& z^er9e6*E$;jrO<1DUk^LKME}mUd_DD)GMtfe(E9Op(bbL>WDs3YIE0F@HVt#tyo|9L`tL%_-c4-*ZlJ^b zZ86xL1FRQ!)_NBT3n%L8eAsP2&XxHj%h{f}x`QC_p237T;$xm8k<9F+_G+ibgZSDn zzX)))nubwvzAmr4h>gX0r-k?Op`!}(t#vg`I6x|~Z@yB(weRKsRozzyRT=heB8q@Y zC?QCEK=}u#XM_p&Z;Ye1x2Q8f4zZS-TWH8-9tBGG zfYUHCKui|;heLP$8NtqweVBrnAy24S8lq3=;KgmybA_R;W^;+Ce`+@)9a@Ufh&Ei^ zD5aBeWGNS!nI*5+qPuvUk!GGnMyG&b&7gY_ocY)lu?ekF+?AKmXZYqX8;Ov0ILT>$ zfp3mbLMTKGAxgjz&9xOb0V4Y~)QP`}<9AqU0D#!l zl$EJ9IONma_@bM#B3S=RV%cr;?Y?OlM zG=N#~e4V~eLO!zHhYsvvUXLlTfAsC?353bYs>DS{McHK5_zk5N>$VP#0g2`xu--)h z96MdI+}tYrvPQwP%X`f__P(HlOfTX*y}oZz4e$WnSeHrTFKXBn`YPsbdD+mWA}?er zFC#)AbFNB~Cp8*go3&r#DvZkil$jS8>4_Bog!KIVG zikBUlsbi8HX2PGk^^Jl}pA*|L^6J056;#ICvC+pAR)_`>&En*%h+$6FhcBr+vB?X#!tjmq)Tg zzV47I=*7go@!d3t$pl^XP)&n~xQ^Cs0 zC1dkX zQ`?hOtrnWQJdKSf79sdU*8DivECqVbPV-@NTile*Nt24hT8&_dpS|bxoe|@c38!sB zYoa4NIV8sxDC4hu#a3jKKMGB8<~^2_vE-`^A%L-}-ye0$>0o0VOVR)>kuryk1E_*I zIoGNx8A0X~8$EeQ4Z!}^Qt#-dFSewC8~CCcfBYDevoVXNy(;-q7_P4NlfGXXQEq;I zVawg{!Tg8M;*O4?sXEKYs|0Lp^U@prJw0lkw;&f7DK2!CMT7B9Jw(||R?h2ocneUj z4GsO$bYpTT$!MRm1+l$zx!WyGsjhAs90YTzl6ZG6B3dwzsX-$A;f`o%3K$p|o_vXa z`SL6%NMd5*i6`Y&EVuXI{5N5|gh3nMM-j;+H#U5I#~rk~0jX^pz~fdR(glI9L!C1cn}ae@{nN= z!T8i#l807b)?y(&=?*8%mZyHrklby;j1vl^o2rw>8mu%xf}CdU{J@dO$@v`n0v8Sx zuSE=C_4fFH_PCj7v7F%Z)B+4!Km`T|M_=E$4jPbk+IoNIew^W#m(!A3^34^{_@@eN zts+GTBLZZ$cFf2WX!|7sr2t58#5$UX`Ph?Ben^xy)*|GP1+}feBHJfuV0->B&@kP-Olb3>*aDaiwA!qx@J+9K=b1Z$*yL` zpcpRu14ea)*RQG8>d_UXXnC9&Hlaf>K0Y(lhX&*H>ij=S191lrI9|A{^^iVn3Rym@ z#VRBQJ%|XcKfB;5ua-u?1zlu8i0Ap`O-Vxo&>ox77gs%!j@=Pw=!X_oU#iQ0$0IsX_=-u?P0^3;2(GN{v>N?_X3lGl%2 zRuR0syF>14MP^3DmBAThGu z-ZMK+P}K^InVl<|t0gE4xKzNzA|o4?2JEGXFgcuF%?1n|6(M;E zWEdXG!cDJ#Ps~e#s&xVS%iSRXkeC73{T_Q$!}a!?B|6O;7#tjqj*j^?nzc6cz;Mi< z8yJ?gu(Gn6nbyiB8j%!;y}CfB1#JMhr|)nE5Qd&1qHDaY0%3r9M?)|AXPig1`kxF? zTNaR-6|#jZ>?Hk=B&1cLF~8u6bjDD+x@P>{_r}yFe4{EpHr@PRB0Sn2b2H+%qLGS9 zm;>aN=Jd4m%HPU_m*YbZp?V+3{w%SwhBCR%iYH&WQJ{p8PTPG-Nq>mTgXlm8-8Wi}2@tv~17xdmPEw@C-~ z0$=kAUQw0zyp<$V8=*p13!!R7(mYw5Ba4=mmxjCXyu7y{I*b)IT)UiS_HLK_M2?vq z)pFnC8tJ~#%Cx{o#8d`FX#Kw@%d>@J5W4CNT;MAJ-0Vtch^&o`ky2Ga_fB#$J`vGj zuZr)&R}o0oW4PoLkOzdaySsa_KP%O=@N$X$L&zhNF z=Kqwm<7-y(6K{_OEX6Lm(d-b`dL8kX=o(#bijx7>c^#jp?aA4 zHk6={%YMUmzHxKDWuWIbxxug9tsbpPG3ROK;XsrRcwp%kl}{KYI}W}Ztlzz576CKG zUTCg-*C{NQgS2&MR>km{LJHLk2@sYa{A4L}CC5?>{`sDMm4{;6S(1gWN?PXaRbJo{ zcfKUy?BG6TAM3;zZKkTe{j1=6q0z&N6iqw3uEfMwN~kEvfWog;=~NsZ9{$a&A~rT6 z;-WnO4M2+GqTNQDYgd<-fdxYT$uB*#QM})iase_kH+L$(JtZ9--DQM8pc>#BFVr2k z4kWRY1Ypvns~WyoIM= zINW#&mlpz33~dc`Ja~^^wIy++Mg(&hqNpBH4JDg5nMa?0MOdYyTf@ZUrlFORO=H)p z^bfSY3dT}d^eS!sl&$k|^dJ!l|C6ibM8&M5HN)YHHEY(Bf@aFl&ITwS;q&YN<{pP?G=nA(*ZJNZsvZS2vkn|DJ>W zb2@f$;9Zqn^HnTxe~^7$^NxFF#Pg2a%rY-M>FVt4*VQI4D*=nXp|g{=g2a`1EhI}* zvK?fQhvBk}XlZATjRRJNBMZ*+k;Rrqv$>8SS?2@Rg_e|e<|FiveO|{i4xyrorJ?_d zU&%Bu;}l?vRaSGE9A>hcs{?Mq!0kRiR}O<3cX4x)Ti{j+h!{B&=&lwxlV5)v#wXYp z5iWp#yecidA}w7|qML?6$iJsLa|9|p?c>)h47w(39;ajQF*J z4D&*!)2X91-t+d@SKSi6dAzl^mU=FJ~JA{sT43!omU`?mv;Uy!vFM2aHy! zo{%CqN%THeRhgD?n^%m&*wG5W zXPpNr9D)$wAHj8WQ?atK=ykA<;2;cvw=hWXI5j)&jRw4w-U!@G3w^K#Syz4L`^)WW z!t*b@5GVUj*bpEB3O#~E{FA^R3cvI}>H2>)XaC@hi9LE}_Lr;n1i(e1D?emH#6&;; zd%rK5`4`N;1a&J}*A6w`WVbotze)=hsdLMztvYEV@T&d_pWK#3uD)5d;GioD0;y!FJ@I84%Ee$X4_!Ost zB#oFX!{|awbybWToxH45O$NOEwt{99yB=oXrxE{EyLv09)nd)s76<$5?Y-&p)WM}P zE&C$VM_pY48)rC8ie2QYI3kBLuB?5nE28q+l6`z=5!8#GwM98561L?#C+oHG^t)D8 z_+qLpEiFhS&dvp`tZ2UP*P?6u#hhfU=Y0Yqnra~8NC?2`{wx#@2ZSysVi9?=S zNu;}ZEPY8&O9Rm*+Opy4Sy|QQqcH?Lsi?OjViFP(b|;Qtk^s>w`oA$gQb|hS1+*ih zq9#I&J5?D-NYXPhR+g88&b(gC%8-LzAp{EnK@zrJf+?#o=}X zqP540+-fzeoabi9!U>P*fz)XwtT(oPbg$MusAI5yTG`SIrm@UppI`byTDC}$gtYr1|{Zq6$`#Y|V3Ws)K?$yjprKUkWd? zYM6T7rm$HWtgRVfVM)oQ{3@L3>#v+FX)gGIPE8SOVW1G7Ed7G~Fu`ch=gtNVb_g3= ztg|&dn9D=P$e@(IoFAzG1K(gt_u|l$o3n$4T2xYkVrL6;Z(eFnr5#%~bKcgeg@#eL z46;a%msBXd0R@6NmO^hL$lYt*wa@3c<+cYoGO#2LMSP7scQ4{*ZEc_?+TPeGr&A$M zAz=MpJsNc-zs|cyQ#-CE7bx*ZX{De#I-d(&mG#J7+poCU7T-Ub+Ct3l>c;N| zlU4^oPCtVOEH7thpJh2^eoZrK%>{deF_*+Qhd?Jz-YH(qu941bX4&|XrWZ=ie7tgzn)=z zKY1qYN*FOYKd-H+>3(@cf{@b`8A(Fu$3}cdz+0A9dfuLY)$vrxpj??k6agWJS4!fg zrgoDViHfFzLPkDQ5F*kHahB$PtCe|mlU95ilj9q?B>M@iYyN${ErTJ7`b;)~3N2T!c z_jH;=O+|iAeKWLc;hD1sNGy25pPdl7sCX3wqlAg*v9mPJ}`W*AsGC znf>1B%Kh zIr%~GiaPS%=9Z1*Ak^~q3LW!1T*}!+ce`q_29RMc0BzdB0wD%Laa&B9zE$X?!9KyB z>Kd@#udY5uk$Dw@uwi71@tV@>h+pN}udonak)M+jDI_d7m^{a!gYZgVLCCOoQySh? z8hIduERMItGvjvA?{T%)^aR~?F*4!o$neAr?3wO2*v5d#4V}YgiDhnJdAh4Ds?dQ; zQJcUH3)PMXj9EhkTXRsSwPkCH$-ufdU-1&k=}J%eBK=o;z;#3vblMcn`OKB{GxnRr z@O2__s|M54|^z@FIjqZrm>gwwY-q5V##_a6I zYAoHrs7Mm?p$nJU!a@v6IU9zzOPE*`TU%ACs%Yk?-fo1j1)>l4uerSQPE}mjCH!{WENhRm;N4;W(UnHO_W7NUrP0f2$Pai z;bOxOX`* zT4%XqL6jR)lMHTX;HKS+3-G%YvuaznE7hv6Fk6Oi$}R|I)^$09D-xshds<5+EPa~_(Y`II!q0CN|*bI%3 zx~oHA57cL#rJ=bB)l~7n@5cB4xY-}yF|&}G`iY6@#5?cOow>RBQaH_qns=cqG}K6> zT?r$)>v#GM55rosz_%*(N*e|pEdrvUT0Yo|8BNfUxRTfbbiPXQFghcff*~l2_aYX= zHOU&uY@4Ut21;Cw!Bcg~+Sz-C-t^Cp_dZ+y$g=*ks*WRp7tzgf^OL`r^SP!h{UGzz zvW$w%9d8hx*a&6QzE<=%^xP61ETAD98U>oz?(XjXQW&T-e(HS~*@mBGWvxJnQ&ozA%$22=l?|D? z1|FKXzon%`V^q=7O0EM9T0RccL%tv7*jc_g)ZDWFQaDK6slH8m)TZ3Gj(-gOVL#6{_z)I zDq_uy*>-FrGSqPZU0C&?tCZahit<`1l`25oWmes_HwyRBBfmwjv}PLu;Xrc}lUMl3 z053ZuWYBp51TVJE7vF#^U`jAbwp%B2csJgPSP6_br~9An_qSJ;K*^uV*9brw9`|!A zpoEr-qmPb_C17=0?F#er^GgHUzJ||0A3QNLQjnWF+lnjmCrORE>lryMPvn4&$7P-# zPCizrnzub+P+L(T&qC|=TZG+qVu%s&d3l&z#046pA{7BqYxnjo#8QP&35gEa3(>J+z7MT1OB;b@eLS z;$CKW;+w0EAV@Y;Kl8*T?Go0zwSDZ;M0Ix;U2Ee>%hwv)%=m|sjSci-U-a7I;_SRF zV<)F+zvp4K5Y3z%1?0p1gF$D<6f?8D)$LwY(a&1QSzR(4_75!OfPsWW7ETWk7G?$_t%eIhS3zDt>GPoVkf*ox6#tS+Y@z~ zU7xpptgWmF3#$l2X_@&1-2ieI$!IYkhTQ!HgF0|~Rwm);D%;ybfx}o};1Q7dFD!sS zhJ9`R#)s2?x#>Hr!_!=G;4n9NzRy)(Kg^^`fRAr)X9q0ub9WT4xHGOA+q0`vO@ zHyN3*+6$+h)o}6&gKz}lEn3JSFxM?98QhGGwJk3PlP1RO2MGxhUtm1T5vrz-o*C3k zMIl4SVImF7u6x0&WAt{&E6(0+zR)h?p-;7yJW3)wPr<|Isqe8*|A4RF|(#Chu31c-~97+zjJ(NqHb zt|z?-EMD`i_bP7K3k%&6(%*?qt!{qC(c72knwlERBQMuf8*_0{GpdgW7>f81sFHEW zDimb8x6xkNRHi(x_@x-aBEy!`A8`nkgN)r`u2}4~I~4ZjOjR5W9z^0TxU#;bcdhOX zenTyaOWm2!5Ui1SQs9Esxha9$f!gsjs`4M9Z?;>1di5+=LY45QpbNJYxo8D z0iilqu~x4^`DH=Q&aS(w>&E&z7bjo;} zYWDv9`>pkUr3_%1z^Hv?JU>%CRlsYHq-(+xH3bCnv!_*6Yiqk5jE|OCtY@l#TSR9F zwn5<~feuaiuO+LhjsfZ}+^m`JF;bLSKBaMBJsP z)ZK|iz%N}MH&=Cg4Pnq28z0NEFs14=s0O$}Zgwo<)4`#>H&tL98D=>;(1?gs^WVl$ zGWk|Q`oalt`{Sj0dh!@F{m~1;!#q8f+LC>r?C|}VTok{;Zp96`IkwZ(JSsZbY$jN6MN*l?`k8YT-=$)4~`t zkRKl-aCm)qE;;?iR~h+mkFb6@MO=v!Z$_s+sZE5}G?T)!FP~3t@XvQA5|-bic0Qc? z;zg`gw#^mYleY2vySMSBi5P_UU6!$Vu^ap%Smrs>RKzIAb z=jV5G6Kq^uE|=f4fuK9d$VxamH~{Ts6o@-9Wdtwm`3^?xXstF~o~wbaMe!+z7}%0fyf(&HKObL;^kL$( zHONR`w$_}*QJ-F54XV};#`ubQu ze;y|$f-kJsjDx|U_)uEwwTO#@IQl+z_Tad}&{w)`$4`Gy=SkJnM4cGY%M^00trW)rk3No5QBAu1>Iv{mKlS zXAh<;a{-`wWa|y;8NzSl3~k!h%)%k2%-j^60q1h{IdL_gHjvwhHG+d}re|j2Vo@?x zTvophGpV@i`r=EVxXh^GmR-S>f7{4s9DxWu{$&V`C%_ttpZ}-B#_#gf=Pn{KB~_0E zPaCt>p=D*~1qG?+=Q)keP%Uk$#zw^=tc5x~htTnb*YXjTX{lGYrnS?B-EO3UM&#t= z?5q_ehVGMrZSFI0=w>?$&3*x>>z~gPE-#On!A?0fH99$kdg2*G>m7HO#bF3(V(wjs zEi?aw?i;zQPeq&X04%EG1KBo!kqEzZ{`TSG3(}V?l!pt!CxRnSA1;XDiOnBBT%bSt z_8?@2gA0WFF!S&o?mZm2_1_CpxG46&7cb!?@E$JyAHU6=IXFWEKLd{w;o-k8R5;U` z_xBE}DCvRoc}TGVEFc43Q8a-~RBq_!XVLfXFQ*1Sy%1u5_5}{{Lu8z*mM3L$n z-H&4J>$TV$k0$_RXESe+2f4KCk1PK^kFGbZEJEg9M8*6hgVPlJ-O}PJLBog&80EjoO?G}5*F>8p>=hNk*i z=?Rplef7A;W?n3F__6@Br;?HqFE8&)VYcyc7gvDIU1K>VzKI@FQkIr6!RJ2pR8@Vg z6EZJH$H1Ud=~i76N4dB!8l_gWelX9^9W4+T9-e4wo-ZKE$OYpj)I8dXtc23g%Y;en zSg=oo0H)XFQwj#?{3v-4fy3b1(ehOQ@Bp~FzNXix6O@xvRThOA`fTeq)EgTcD0&_kb-gYQLZ`JQ!x0|+d`tac> zXtkS-l?@6#e1(S&DuMea(=tV%x(@2JE{|_$FeT_zC@3i>W@kY{)WYbf4?6HQZ%9r4 ziVpHNwW~e}X=>szosX=41THh)^REyoA}G?JKWZ6+M4)Wf4y*nkXVIHdjNeol3)C}h zfUO4)PvhA`=0E}(>)+mt6!E9Dij9>unQPUOebfO~VGO*LMp0gT=5*SV|7qA_vN@Cj zn8#NJP!nFmc73Av-_MuFFuEhieEFSW_@#-hdO~V0?>j5|HkBFSAN!ySGcl>cex043 zmQdyL7J3XiFMj$nWjVR>QW(f5k&%Ot(m{2z=mtdNft5i3pU1yb2MI|K>DJ|>V=*HB z-Lo2L{1{%RKU~pd=E-q!{^-w;kUUgiO$|Bh0{10p_v*a2q-oI1uifBJ+2`Ac>FBJc zsnWhD4V*%GMyIAe*s44&j{K`D%gJKRdONHIV4X%qN=o|n-4ckfQ$tRX^^(^XdEo_mb#Soc zy^w@KdD~2bn{nK$7Ge?-c}2|t^uz*zY!HzM4sjQ6gad!-DK)#;FFO4wH1O$)`kkj8wsz$4%UbvG&b&?>}A!uO|U z5D4SL+r7hi(fe6-_}yzpe;{qIYjj6vVV@H;2bN(l;NAA@`ST#Zj*BXNz?ckp4LXUe z){j2Y4Gme9ww&*Kc*qVpey-c8qeWsB`q6UF?gq{Dpm>#SZL{?oIr}E zK18k=LxP)NHe&0{=3%t9<-NSxAHGH-JeXN;U#{AluAJ4o5=T9!6=u}6v9amG1A-`R zPOntiT!@oBp283whYcvg-pq}&@laieIs&Wvpf;0RfeArA6=L;i(Ch&b&yIM4#vld? z52xD5?^)@`P{#N^S{gg(iLlqL*@LDpa`L>Imcnp>iy^uP$m@=SlDlB0Q`*9x1d1hV**sk)02^L2pmKZ5xc(^mQQol>*(l+%&R}# z8&3N0_32ySRmBB*(do(hDIN#9FfSqGoDNDQmuh5Wvc0u+#75~AAA51WAJ1_6wX}~V zfpOYu>=2p`-`;C@+;;aIDLpFc6{r&c_Ns^HD?|+g!<6{=$ySR$YEfKhr}ISQX>b&! z)m2rYfuV042BF186UDlRYis1-Q+`5vxQWoO!*{9dKwJ+j?&u6fkbu1o5Xft2YF-RY zJ#}1K`Z-`@14?Z#o*L#Ps2drrZFKwWznyLEzF diff --git a/packages/muelu/doc/Tutorial/tex/pics/tut1_11.png b/packages/muelu/doc/Tutorial/tex/pics/tut1_11.png deleted file mode 100644 index 5a94b894a7d854297ceeccf87a28440812e5b1d0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 36706 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

          n5+|C#hudS_l9L&8r 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

          =CeRx$e5Vpt{qP{YdkW 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 diff --git a/packages/muelu/doc/Tutorial/tex/pics/tut1_13.png b/packages/muelu/doc/Tutorial/tex/pics/tut1_13.png deleted file mode 100644 index aa93b003dd437509e7b7aa423ab4c787042ecee8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 80056 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 DsPC50 diff --git a/packages/muelu/doc/Tutorial/tex/pics/tut1_14.png b/packages/muelu/doc/Tutorial/tex/pics/tut1_14.png deleted file mode 100644 index 932e84c8bbbc85637565b8935590c0d15a7d6ee6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 88662 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 z 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
            }<&?)8RxvLEsw;z|YE)jbd$E1icIXeT zxRtBD|29#TnF<77Wq$snCmR^AH3;tanU87)x(}ILyZn8*v@ub7Ch$I#yTsg(%@DsH z4?Eor<6VglOilfY!5Or{9tk2%-}PQtn)LUBd8{m(rDn9vta zmC5{ZhW}~kjaAs8c)~YE2}sJ~qT|or6ls~L?kHxhAe|4gT7ki7x$3#Q7tEW7VgXoZ zY`-4M#H0AwF%+cQFDSbQ4jAC5jQ(R1exLTSw3r{epF4W+?^T;%L@*% z@Xm(mgW;^H>$zoq4exy5@ZtB=WAER~_V4e3*dN)IiAf1(U*Vq@h}{+^3WjP(3G|REi@}ezl-YKAnD!L+~4h4oHumx(7^Hm z_9K_C;k=Z11t8s^RZpJzo>h1@zca(U=-D&%sZ()9ZXA$HiFUoEE@ekxAoo9Gt8vb^ zw|(-H+dYp{|8dFM|DOiL28}h5VvJEBf)_#G0-MLOA3l9zKDigF~*O-iUFi}Xji zxh}{_=pbj>pI1A0a%0w$<$FMiF`f zmSrh1WbI7pyZ_qWy#L#R+DbM~4*@ZW|0*w%u&NCYGLbl&Ib<0b87EKL91NK&X<+Kw za+Di|d*lAQdM*$ILfu43{=zn#Bmb@^fwmZVnz%oCZMi;uItgeE&Lky~*vy^-gpd%Z zp_e*WWPg|@uAdo$dkY*T4E_qxDkKdHJc1$-6QER#r4Jfio@>zs((x{ZyV z$jfmGL`L=�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

            gNT-% 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 diff --git a/packages/muelu/doc/Tutorial/tex/pics/tut1_17.png b/packages/muelu/doc/Tutorial/tex/pics/tut1_17.png deleted file mode 100644 index ab6ec881753668a8f16995b3f5b7ab8f60228eb2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 109721 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

            G} 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 NqVmNvsY-v`|2O>(4J!Zu diff --git a/packages/muelu/doc/Tutorial/tex/pics/tut1_18.png b/packages/muelu/doc/Tutorial/tex/pics/tut1_18.png deleted file mode 100644 index 05aeef0e37e00b0a4db7dd190b3c9e94a00d48aa..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 133310 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

            P8$VJ$g>_~4>>aZ8eLy_>>u3;mo zyFAb%+wl;XN%T>pPl)k+&rsWREKu!uiX(EY_e0Wld_eGV0XN;NN;4>*pVcS%}iSlv8KUU9mjKDs@dvNJ|#* zN^0DEjIAo3dZ2X~ZkF#a=2p49oMSRJ8zTCHOrzTW`Ffb!Wu*nWH`V$jzA|$vhL2C| zaw0=yr^z_0v4}r11}-M_#6B{{h#O;V4KJOY5g(Flb>8jvDw=?0asz)M^-=E&P{xf# zMLU2D&hcCI%Mx3N0nP5_hpE8>F5FPNyZf==2)n^pk-w~~HY{QW1>~PuILR!t4yBI#IVv1-=f1g1z%4tevsRBLmHKabjw zuQoROaU~RZ#sKnjO(8?7oRNv6h+caW+cPvIPmfb6BJS*5r9ktw*H}bE1gK`FXUmfv z<;lE*xLilOtW|^;oO>L{ICq{NzjcepXLHs3<&%n0lcqOzj<)TqG&PGz6frt%5g{;~ zId5fVX4sUJ<|4ZYp8~|Nkv9Np`BTEFOer+60bzUgeIeDHJ~D>%T$4P+U{UkRFP?fK zU*S59|Hfyw4sRgIQ$F}NQ_tT0PI4^PkLoSL1i|w3^yJc(#Rlsg($>K_9HOFhev3(k z^bz4am)QOb?rsq`j0U8R2DhWl-NHoHBSJzvtaq$IQLJM!R~~$DTiON+)<~V)NV8JV zfin`upzWC?ku1FM9P4m}&g)QWU0zpTXvh>Gp%?;~u#mVNfu1aLM5OQ6<$*u$bi4G&im#x zBVPv|VxBztkIjfX`tJ6&!R@l(?7U-vuQ7vmf4;@zu>-Nrwys1Zf?T1ZVOy<&WkGA#Sz=y*A_GH>ljCOdxfrp6WN);et2o3}Nq*DNCg567;Dtwa6yF|u=ySly!a?^FJTuTwhkCyA^KdA= ziPdg!wzYaJx$8q2O(~T~NzUz>gbC>e7A*=%PY(|m{|U=#b$Z}>0F5IG$=wUjC<&u# zP2kj;=>YPzbpTqD%;f0kYRA}4=6Q8;p}NZl@A2;jV{A=dTYzu18%w)U)vsjLnZu*y zBsmXSnDz@=hVmw|z4N0XWZ8ffcXpKqTPj%ex&4DVAYsrDu3x4xV}+=!XM( zhnBXslRM4?QKrC7Dk&)m#NE3Y&8IXgTU%FdBG58|7a5vuw?+X=r(Qk29s|zu{?0E=yjLytOjtgoS8l=muL@l{$0^-mHFB%u?{AbD~;e zi2VQq#qf2r_m}0y3j3|y7HCi>vsrK4dwPEU9FjSqiyhJVG7K?f1urB&UtYb!SbPYk zSxb?|o0oT1OpLsQD_{kX1S?9RCzQ&1CE5%9J4{?I>#oQf#;T5y9oj%Kv36U;P~v?G z?)~Mmt+fuP$M!x_&CUnm^yFkfV6A82M}*kvo;y_)Xq1)`ei$}kO`3Mm#unG0|5j8) zrwF%%OSsa&8;EtfhBwCQtEPC%D2FfbU4?=z9?-!kUpkm#Zg78bV@S#!aA+m$X z^pn2K14M8`GuR@#8}V5P$E4++n8a=n6#gwbf`1ldsDmbi8l(A}@ecCyD0gnRR}c!S zDC`IwAryS~3hvde<+z8g<(DauRk_V9R*&!*%%q%?Z!7|GtSM}=4TeQ<)mC)Qy6-}6 zc=7lo<6XNBGY`;1oJ+oB+P(7^BiwOhMh~c&wTR1k&S$gs_O+>lIBbRGhP2w>xgU%i9FvgaPu(k&)tgk_JVPTYq-sD89^7C?)WjTyclQ-`D7Cd5MeIo&ZbMVs9P%laT`DJu; zBs?l&B%(iD*W6_%Zb3m3oLw;aOUda1pM7R!b@d$W66cmgl-_B)-e=(SP!UHgBnP6c zv*5w%=kTHh${_~8SyWyQ)h3yQK(a^3+L@nALLdt0WY5X0g=cA*V?|fUWAE4R6?2g# zWe4bs7*m`sisG2(tl@5R=WS~%dzXOONnIU}(7|DP=`B#jLC22>*rbndyu*JmqpqFZ z;6#{|>HQSd4u5Xm=I*M$tC?b%V##FKv|OPmSw+z8;jK-RjlDim^2K?G;z^uhQrUV2 zs({B?^^Rch&!6x?E`sp2r%~}fYixH-=d1B%4#Bskx92w{X{Bta%|=_HWBCJUXh_z( z$UIBw?QYX}s74Tfm}Qg)*@>^q^lH9Ok3(XjZ#D;frh{t`66m9I7$A6Xk!e(r%*8w@nOn(epT~Wc=+4m6`N|@8`~;# zatlI+O2qzC%U0vrCL0~?^<~Akqo^j?^zb(2A5G~@Y7});8zP>QQB+Dk#3arPkC;|| zwn)wlt%{B{&!OoTiJy`eh>{3AL+uie_}1NxF}3rn##)Q%xYHt}hKnUoRtBTQl!@Q_ z`WUpd&L_3(ia~1)2ziyJ1GG#`z$kglHpKtednB0A>UuECW;RG9;5iP38g+)h0*xM@ zgX$@IoIbCk=ERhgIltlDv7LTXCre9OFE$Pi7tr1bJb1lI(6}Hs#*S+d@$LsONpejN zG0UiJ`ImUme5>PWd<&WZg^96@mu~O3>PZE{I$s9%!t(b9vGf9z(A#T)hSm@gLQs5Z zC?+-#cb7-i-3{9Xhl+^mUjY-swVg6IJBJ8F2dU|qonY(Vxf8nMmP`bw31X$i8W=mlql(Qm??1|7$lulQ>&3 zc$quepvl(a`P)D3(fQ>wPa&gUMy7EhjR4GmLc~9%K~kPse@mF$w5chHB4k)FRq5=` zC%Lj`>8hMN0BB;+YkK?`JyZ;sk(l&MdyQEOCwQkbrGKCOeuk$<_C-p-Ar&+&ii4{A zhWD90xHu*>Y;fMn(|)Lt|Lptb!#C^NwI=L+M>CR;dWP-My*>8u=blm$EW&X87Sqfi ze9LwWQdhW-R_4v%-~ud5wKMsO6znq1VVNUg+91r@!Ww*d69dOaBOTO0+3y=bTQ44{ zSorMpVHRxBxVYsF&+>+PTYL)4na(2Q3@>|Gm5^B+s5vH%soLBkNA}YF)@wxckK7z_ zWZFZ<4@o|;S&PwnQQMq|oUkm4VYgxQfC|SGj48i3vu7AxleR$jsPo7P95ovj*GP+= zh}tx#TeIor$7^l@8%S)H+0M;FYDP>6O=>>kaIRMH@-irg2D9?qzfG6v(anm;c^=^U zz)`B&E&2@NKMwcXFicLZ+Nc}x>B^5QKG{*}RZxrflE%xp8Vo9ciy6@gqEfruP~6DKNL_sz_&TokXV#96Fd#!hPxqj2uj_Td0Xp`V zmzP?qixU&iAoFij>a`bn%Ep|5vD*W4eu|EZtwZPXXlAEt7PQv1mklpP6KH?y@4{-c zz9ug|PKyFg9B1e6e$L-%1s172HN!`>9LOkHLo2|7GohZRGA+Wz1iV<0-v(e!vdJ#dYVc7YvHe26-o zoxx~m94;;mCu{itM%gbRgUAOi+jDL6MGV)8M_fH`0zy7|a-%q9+E++H+H~L#5X1@x zOjEc|ND9US4sjU{Yq5?ccfKS6!%a*=SDf{X#9C z_d9QsgWqtx0Y(qwio=LJ5U|+dz=5Mxta_-}vri!g`SO8+k%Af9P!JD+Uyv&HgFTT^ zrOfDL^siqikB=f@&kKYsG2m$w0|nwd_?ORixNn+KyFS~;h*XbaG`B29KD%=RROE#T zdS|lP&|_fA<+BZ3@FRWAG)AAd}KT^ZrM53I--n}g8=XjJ>rG_EGLKMM16MKV+Tu{JqJ52OVCffk(pbZd*-zK6ZjZfFF)$PB3>;Hg=+Dh_dFDB2`@tSVs=diM1xpyp`&$=XP-e5>b z^0|QlkJ|#CaCY&&vFKJVSMe)t%xj^z711sb4bX{x&JUZ04)dPNDe2vN~DRkIOZ zSGFuEjW~?j=n&AV989B2XSXm_P?%n9)(Ve^0qs$}^3`Awj<0DxF>-1e8Xk|Q8{r?b zyW~oo{NhD9P;Y=u?_hhx2)NT84r=v)Hv@3=$9$n?mT5N8>~e;HGJhxn z1fi`8uT*rqAmN5Z5u=*dHGr2>P;i2WcVchvD`#Z__3)pEt@o(gqP4(iNg=6--MMxm zLxqL=u6N@U$XLy~z@;%eJlw_{33SrF4Pa7u6N?0y-U$u_yV}|i-*&;JL$D%p`AJBj z_C#C3AvA2=reo~6^~xbIG@Z}qAzAq{U+I&hjUFBAGHqAEh=tj?5?F9wuflJ1N4c~iF$kfx$t;AuOl<|mp@C3 zYqB$QP8!ugzdWlGH%8-0D5mpAREul|u8JmZ2S_AAH3rxYyh z0}yg$)pQSFcKU*)bB&&st^?#_P@8Lf>rQBU|8FCa)5;3i_Dh@aEiti@hySmm5LhU_ zMZd14z(leqqDBfxyOqO)zcX23R85JZKwzhccxeIb`6+eZ!4{tJ-RTfhCFdN)!a^NZ z4s@EmsOzoGI;>h9hXP*VSBD)QAyTh?6xSm_K*plm%7eApH&)3}Eml^y;z1G0U7#bW5bgQt=RbWHz>G^QT2zI67^D0^OlsB`w(aFHj(`o15GC zA)nqY*BCHD@NO?YdxpmlmYkp1nU5pj_s8Yoq`r5+70a_opN7(`g=x-d0dIDxQTL*N zL5Fje0xAR*ih7x>6Zl8hJi8x)2N4_ndfX)!`yno#O^AcTX{lu(0oO%$MwF_}GMfS3 zBoEKSZ{ni8zT-@V;K>2mmuyoXiBFbWo@rf_Ag%_3(!Ykym2g6Qn6tz5fR?(*jEwJY zF>8IOZbt0aRc4<=(hLh@VXq;-0kkv>x8K)!IVq?i>u+dj6fj0)kBu7E5Uus?WX?R5 zdj0;Oz!^fI*!3cy3{a!NuJ2|=slm@-AfS7=R2(^Air*n4?=R9qhR6tvHW#}SfBBJu z!WZ4rzk4OYhCIaYAH>Ko>2;f~tEY75fcXj7u7Mv4Gn72^GVp#_Z7SQ%FUQ1yF!Af8yC%}%;=YW?^+$mb z?#K`Dxtb!u95N(3F-#$hS0f&%>K&!J2@yg)15pFa7t&?>zgp_C@m-YZdj zMe<)SK&jb~yZOy2*pC+>^-2+RNNI|HPOwDaGA-3P=%}ZehE3otY&2Vp@s_J6+wAqP z7crCO~=^Bf<8nxF9t@&lFUrt z+TBpj1z2X>mw1MFjO)^PsV~DQ=7R_EQWmE8$T(ag=lkyZju|f(;5YnIcuZL5O3ZW@)^ZyJ%FI1zWIl_I6KtsbPWd!O z2!~YY@gNu_*TP~3nC4s<)x!*KYLE$jM81*v4H zqd{Y(onIG~l0=g48h&6N^{t(&sd=j~pZTbi(l<}7_n$!W;WWFse{CARHT{z@UyDo4 zLh~(~q*m0%W{Kk6_ta^a|?Nsfe zrxlQiz)}Pl8$;lH_}^fHgG`p{J#A;lgaifkY@Ghx_)p`qGSs`Y1ort9G&B%&I{=3- zR~}BjvY?DalU~=2qiI&zy$pjD0dn4T+-dH~3%ar~+xpmZVzJafsOot2EE)*TOWPRi&+`wkwb}{`h^K<||H((=La1{ zFO&Mq1BPR2{1on=U7Wj8Ks3n85W@f4f=8UT0gJG-T($#C76}dU)37DGwUvbmjduul zoU62_PqT!R9I(8-x8r>;>q*m{u=F_dN*iotsGhL~e(!?fV&DT(DNtTu?ZHTcwqJdF zXI>t$^vbr`YP@-IvBkSZ_?^q~4Q%+26faoR|*&*49d>_l%Mu*=%b zR{8FZ-z5n80zcWI~Slr2sy3C z&v#IaS=A)IA*9m}O1Z&8;2<&?VwA|iaebi%>^1en88E8mjW0%r&%b=z(xCkbyl*?w z+WkjM7<4Xd-NZ|82U#{g8nGSXTX#gZe2K!g#T@*jG5Um|PGMs}^TW&x0r-eE5HSt~ zk5?AUQ7Qx;1Yj~xuT7G(XhMGAhZ_>@KVg^6p(mC`pfQ?&?PXKWDZ1Q#D{zf&zJoS= zOTmBlpV?yJR^o#HU}ELW=8-WM5oiA@er!JE8>5X_Xib)q*3#=ZS^!$Aick}$G=NEF zbxgdyMKO0uUe3|0hSl0xLNp*Ef-*HBAoqT#yz~nrW!yD)neu z@qT@WL0M#1O+Y|K2~HaXQaOsP|NZ~)_195VMcw{5d;k@syHh|yx*MdsLpqi2ZctJX zL{d^(y1P3L-QAtiNdA`3bMJeC zf~$tZ8zp6wea*9EW`3E%OUc4=3EChXo#pOm;)?4mHX2%4X07V%BJznj+WUmrHG3;B5{j=;J*Jd#oF-vKx9{@j74PvPn#`_Q@5`rJZs;#55w_rI!dCcyZnjZ_-^#ZiY-cX3Ss)e`tnNsGS*j+Wt&!Zl4wc2RvanBM zKe?{$RC)Hl9ua8$wqf%ydUPPfFmO)6FND3yd;A^Ra0>S$AP^lkmr9RXnN~{If>+ja zU25G|Hwssp);3U?JTNGU`1^M#h2lo)+z9oeBg5)B<3M9g)5X0h*7{r}BVFy6w7-52 zGC9lhp6O{Zk{3r8L+p1MmDd0%qRY=Rx4DzbRW{$l+nl<%I3i7jXt-`PS%2XoKWM`? z?elP!Qa7*j)^Tu@Ibp`D**%nwEPKwKKxr#TTdN9Qz0B-mupRP!uu}SXD2^K}MHqsb zT#$Qj@HgIqyR5=b_Qw@$I9Mm~teO%9d}0C=CwQ;FK7CbOSK*D6Md}wMM|p$gT1Ot_ z!%woiL+m61k?2;1i9?HmIH|@>3cDo2AYXyw$GJt8XFVHD7JT}5B4DXp} zb=tY5zuabM7}RhUy1UL^i8$?2!wj; zUt;+twR{)ZLv0J^aI$NvI(+{_`iltpC03?6^Vab<)7=zz(vo8uECk4H{_-PZk5nIB z#QajD-EvV$-X}+!+%FYubCXL3_JSv%&^RcR+HN~nZfCO`EHhF&YH6%7vyg+Y{u?O=y$oy4k!yFbpa zBXhFnV@j0hvdWXK6jn={j2zLh{k~ft3EK9K-^7aD>zTcSd^5+O%&!I+jh}{*h`27l zjW5P$biuO$-W?#rWo{?Z1PuY&O7f2%u#nx6v`s@~2)?PVk*+?Ou$x7D^&51ASsd_3 z)r-2EoisbBLzVn{T=rcY;mCWKtz2(6dfqv4`)?5IQxF;K+8W#Tq*u_X-OV5Z(E4y6 zS=;=Ao-QSdZd#RWegyQT$IVuULmJh)qUet()ar->2m=aUe|@4y-dD*sMB*ae`y$Og zNfVHfH}?dyCP3rcZhK5KHAFwxBfQVl3|)0!oxH!f(OS5)ehS>W*}MZ#`m%V~SsFSz zIv*%p`%H;0yyPCYA$&4fZnoD8*ub&SU!}Zhx6;uRyzKmdy#x3IpBp)=8ftzSl?|v< z#zM z0C5~)77d(@W<}+quKUF{aQXpszlbFI@=%qj(};#60;yjs{sIY|LlMQ$*F01RtNt7 z_JLoCK#bZ~GxMJV{CDFJ1~Ub`|9gK)xoj6D|35pyCnOg3djL8zkLrH`=>~Aud5lyM zf;yzlvx}OWi6K8?W6OfsUcj!KBN7mlzLR#xLimzgYG}NIo6O;tTkx2jpN;X-TX`nMg@|81xEZ#zsmsz)ljmCq^HCr`MLS0aP1CN3~w zQ{uF5rGUv&qvNaa?|cgD_V+vJzi&(t!JqnG_6I${Wn-)>IzNKDAY3;Ix_o3DlG33q?RztGw*!{K-xe zf~J%Rji22*hx|S3>jLBrkaBsXrxtm&lYmCL1V~>bxVTw(8&d^hbaa$mog6KA$4Iwj zf7<)+2sYgK74iscbc$4i(G2Le%-t=ObuUK!{ip)itiLE9$P%LhEfhyr--b|E zxt>bw$Gz$)*2gpAo=rzBEkk)l(s8k$m6hyXzKzPXN14d>j>|Xg$*r2-(GgR)d>efJ zeuW_UU!J-`#s*FrN#*z2ONOH;yROFA#D0u5HepGc7L0!=oXrpZ1+g!AY2xAv_(MFz zQ6Q~!+V=cZQn&K&b_4tv(eFYZEUc|Z9(Oj4U*ApNJa7eNG#51sh!7GT*4jQFJp^|) zoqAMfh`&(O)xAit7m7OE)h#V%xTiQx`FgI_rgzncp2NYN;^uenX%lHT{m6_QAoY7v z>(+d4--)N#tx2OK3LCM<_qUjeN??bw8An2+p5k#if?RCynTKm*JpkZqYtOfuzW_O5 z%y0%XIZLCQ?>t=;VoLK!aNGr_?&*i?NB%jKViPE!nlZoGr?{P~peU#R>&7U*%bH)` zi~Mx5gnPK*olq;YV2NhY-`HXMDA|@w(3Ep39qc<2yzP8NGZ79;hk}vtG@nddy_-tV zrYVCWq5Fu<%n2(#_tzyU{3BBEWv_j&WKrSqf_A z>9N0NXKjS`P}3Yp{gvh7oEDeteW~I3@uRlgi5J=~F{|g+5M33O?CW0Q-nnBp?pY2z zE#g7wVtSgO`%E!4JnB(Dbg{zgN{u2(432!;d?h>xeJ|xGc)(E**Y34uksPs5WmB51 zw!`T+rkV8}VuKN=YVli6dA8J*R`W;E)3gDZ%oJx5fYq9>zR8&KNGa;DtVzZYeQ-{O zKC3=FV+Vf-!I5`)a$nS~W4_fe6PI_#F^S}jI>cH=(0Yw0Z)g8g?!mo^4gcQn@p#A+*`+TF{hjuixE2fNSw=&=X{h32V zkiU~ED7O=o5wNg0@nr!dtqicCvc%uK45+RBRJZsNvc4YkMkOqIh@f|I zY3Y}G;q5I)MDFyy3nW0N%f!SKyo5(RvFLf*fzPaH zbN{qBJRn2a)kO(c);tUKP9P;;Jzcg*tV570=c%+ktb10Fm)D@zNE;*;YWCmim#^U? zhJXfAce?0#kr1?Fzu!;@tvgy5wPGd1m0KLo7IqQ%ktWE`a5UlT+w>S46Vt2Wm|$^L zz%pV7y%&cNd9&vFi3tb+T7d(k)&3vRGv8_7M?&;@qGtH18$0 z#NViL25UQOYxWcZTaVX#kBcjYOIcAF%0L=Kx+ z7uYiKrMq9tcjO%PIC;)hd`^R~c-#Goj)knX2a<$F`3Rew_vbhc;F~t}%&0HV=`Av- z$YNuB4O_=pzx#9j2^#JTM7j94bbfxo7_9R!%7KK_6FXfhT#L#sZ{~1OWdpgR)&U*% zzrB`BGaV+(P*3fla^fx{X81_AT9?!GVaKizLtkP~&z^?UsAnw>C}r>YUC24(OR_N$ zHS%BR!7ML9W%^ZA7Xy?H*&{xg<;JE@>wbnQ-9_t1t8U$g*?s=?g#gDj-}O4G-lWY} zhW1YQuv$&CZ_oMJkS7udejtmu-%FG!S(`HN^%V_W4ewf8N2lJRvSv*eW$Y-Feg5nl z94sZDM`)X+PC_{{G>&a|V`gSXh%5n9c#z%DV7v@p#%NG2!0%lu{}#X+3Okf5EiV$^ zoi_Sj{yu}0Z!V(XF{Q!JPa)~G~d~ervF)+qi zSsgVr@ak;u&(Zunz6opSS_`O_>n3fARKMV8H*0LYyURdZe(od9Yan^ObxxWCFD)S< zV|-@3ZmTFRLykCyQ99i4tm8U5nf7)G-&P=qp`wI0|CU+1;l{VGRE8ePCE%>TLi~_;m zOi0*a&sXB+sN<}iRQOb;D%(S^Utmecy~JWbzDLI_qSb70^W;nPzI{lWRf+(k*SNN# zvEx(CJfoXNv1|^yWUhpj8V6^-wI5G?IBcM_*np$>+7%g3`R3UAX+CoX0WQYOhh>MI z&`HviME9N)E9;RAh6-K=N7GHrKAK2vuDp^`MgbMyPu@y_I}uV`~BIgyD(qz<5X3|B^zR1eVe?FJC698Fq`#!;!x)%?a&Bk9_^Hf8aSw9)e%2xS;kE3RtT$KI<9FX>xq<7VwW8m zC)>2L4h8PbN94=zRKHvQ2os?6+T0U3PS1Rzd5A>*QVm8HxUuD@vBSyhU4KRuD_4M> zduLVZ!q8+HJUX8{o4>tntCWFLDyIesC`x-DDV-mI)Uk(%7Tvs?-sfWw?0w?7)^a1{ zG`HN^-`n79x5Jpbw`bg;xsn!Fptc)L$_@kZad){=1^87E)ioP+u>F*GyjeyA>Y?6B z!jI?q8Kt@{ce7wbgfttBY8gHwMX;tOM!aRUA#zaIxJyp%3Uyb?Sn=l22}pFO5fn*P z?Au{{hI#$#!f70ZVe&<)wi!d4!@1d0&}(+Sm7S>qXEc%p_q)r1y}das8dSmOhv!$T zpAz><=~o%EFA&G6?8_N@C#R+yc7_Ugo$Zj3)J9Vq(7~}!f!;uVD5=+1r6l8;BdPCv+Lr0i88SaI+pxsTrFkba^40LYl_xQ-(LvifR+5p?L?PlArCqIGufl!n zGjpkZQd{|We>3uvee@L5y-oE$t4`Y)9~#5Rh;g-~v>#D}hSLo^_cZ0HyH@`SBRG+u3Ib)AX5G3SMq9 zsnoV_?tGVUoIKZsflc;$<=0@i53}J=&1~QyTi~%`iv}Q-`l)ZG90#>FK=lU?${yJr57m zafrC>&Xp$o{{{`HJMVPA`bC9W7Khm*Cz7e3A=2;Y`t0Bwm0>Z~Wf4gq@ zl1o3{%ph2x*3H(zy-?=`dSRtX8L6dV%IQy;bJo4qGXkf&VpnH<_QUBd-P=yM*hdir zC2~Vi=B!^>`;1Y=9AbZy=1{%OBjqX2R?2Y+?j}G*xg+_tTkV@( zM>9RtKx{m`Has0(HK7&y+UHoD$f>1sw1z<$8eoN`Y662m_e*<-EwvBoB~T3QYRnzr z$m2DqFq6(7ZF$6Po8AyYX70v!*j>1-OS&b1g>-3nLtdHl!(W{tG;iThcE!H|mwJlG z-}CBdo*fn@?ML!;)9SPF`4%0F=KYz}b25je(+T(Lt6b!cJ`opp?!7C^-dMckcO=E| zc(|k>2+nZ5T)q4m8`O^E6|FT01n{&ef3ZsJn4YWC|l^mHFY zV@+ywYHb(iR_tnY7&CmYl}fm*&Nhf!gtq^z`<|V78M1sNYN@C9tJms75+8&7@|3#&1NzIj7vH7dV&vyU9-VMC z(W4Uvg3J_8Y4z6cFCEowPnVq*jM&O=`0|Hq!f_?5^<| z8W=I-euqb1IRzDsogbPn1Bt;@w$9S9p3Tnb8t3GF=(5+JP{!lygejuX2oBhg3%1n6 z9tJ%F(^Yl}iI;XWnWMxjdXpavO}x$rw38lh(Tds4Pdp*VYda>)O%1nr44=Bk;5%F|@>U7` z_zwCr)0SxSE7@3`)oYo*yn-lW!#>GHqeJM0+;ar87Tjj|dH?nnkE=D6a0Gm>o!XL9 zl7|i!c`=2v_L=v1-j}r5-fpmmi=Xe6k=>B^?;dk=+uaUrJ4uL(KV8||M-LMZ^2Uj+ z7j_}BinP6oxW>XSMu zJu{NZ>CIAmF&YH3cX9$oYGnQhCnrr95xWzbhK39X#NHhg0GSyCV1fECGb8OBI4@Uq zA$$8)R)x=IkNkD3e$NiRgb-q0rxy=Bi#(~dNO&V>4NRp5vhG1|CCGnKQf6D~w6`f2 zbn5CPyPdAw-LJNtXFNY_Hteo^m;Knw%t7m*> z=X?1N43lu5&LA0}l(t%LoUJEM9hJOj$Jy6S6Q99&TWGYJb3~_>uYlyBtrfm*wtzwa z%j#=0>zK<^8Qb#`!sa=*$2uu1t7x#KTR@VjnG3D>ZrmV}Sc;DWc3yT%N^Owc_^6ZEz;UXS@)a{s~#JH7zrfWQz<)#tbRx)xmz{D1+^<-bYk z$KTNk4ngRh9A8=tjy^Iyd-6B`F)8aio|d_PtNo{*b#lshq2zvsCQmXiFX|-I%yzRU z0)Awdpf!EX@1$$&nkcmUv1|GfcYwfxGTNFxE zgdevyA?=R0E{aSN%^<->N-6H=pA{%5_Sx?C^bCx85iq z<$YQ$x4MD@3J4b-OQwCFwzrSp(ej+HG@bffo|%VWb~X9?7v<$iVwHOS=?L|A9Hlqt zPAKE{y&bIqqDbR>%Z3KehbY{UH(o9N{=4?NZ3C`N%NKYIUQfY^ITIN@s3mZt|I@Sb z@)r55FlGn}_Q?G&7GU`!N5VNSoQA&rpg-}zpr$r2 zDg+8)9zacJ64b-<`^cUtA%EP!NpEKRj0&1A74pgsEF|b`8``wj-i9g?7=Xa#o%w-5 zK_NvMplJe;zwoem-Tv8Pg`ks=sOhQGI^)(<>*63-ROPnHUPpLqQd85oC+6qGVwcV8 ztEq9V?<_7d&fFngaqkwN;r#Jh#=#r)5MY8x%M!BNKMnTw9!&Ox4vuPs=E~6#;J!$3 z9JgQqvR+xkR?fA2e{nQHK8RoV>6Wps#cq9Qe4Fzc^Z>>nM#{?G{4}fsrt@{bj0`&h zeVG!gW(U0!Ht^!<1~fEzAhy{WnS#9yPcDCa5|a%Yya?-_x#)53=X?hdw` z{I`U%-=3@+iFvAh7rAd9oHXQZ7$5?7bM`>}CxSK4Vqx1QUD)4lqkEt$qzC5p@WEhw z$IlQ|Q_1AkO;53caV;YR@5TwWD}88O904;9Dx^>5#OS13)IkiO4qp&_tD z_(mxBX|+}G`KGO`<^D;ysajCfid7q^}@MJ!cMaTCUIjujkrX@ihNESlNAdokkfBy6>7|Gu6X1Og1WM-Cg zABZ0W)Wl^3u<_zvW2|ip%AtKg-1x=>bDs4s_tq{}ib?C-udpb;sSq7@rD69yPY~|p zzKMPF85iVtVIytq!1Lp2+r46mo~OUnK|fR#-F;vWGiYo7vm6(Zgcx_N_$cBFX$xoG zAX-SWdpCvn*-VrkQwE!>j^+$c(J&J>BDPb5H1<+wb8T&Je?6_N_;h+fc!b=Q?dPMb z#+#F;H+l;{QrWVGnf{(EM(;4zzoV!3TX~2_ZMt%Cd;-|utSmUpbthg4L=|1z2*sPp zHx-?ou!Ei_!8i;ST_S8;?)N9n%_QzCe_0@5J*q3TZ1`V&8s3P-PQYc#oW0LN3?&8g zlJc?T*d8*NZ3+u6$A@B+l-0y;#EPJgJj`EOd?J~jcWpPamSiIPtT__gw7w|ftzP6W zt(Wtsxviq*YZ6T#Mq9|9|BkZP)gjDPZIFL^s?GoezM8el>T?#)lQI-Jxww!cA~qv> zdd{wK64TS4E>F_|SjHaz8;{^&o>UIaUxS+!wJ**JS~N8% zxi|!tS`5N0ahjJlwr*LwN5I*@qN{h9%&-0g$PN~l6ac}=UT9e}E*2KtZ9a7r$?O}G z007yK9`$kEzum^0%+r@u1fryKf01y(9qhC9d)&~s!Fc)rzOu3xCgAjMX9%;<{f$%x zzz9NauQrv6J#Pb7g)jQXbZwN`A*mr$x8MLtXUiXtC&H~; zhTT0qKzONj(_z=B*flDG1GD?!N03X{JYiOLD3}@Z!!|C46%-|AsTaPLPeO!j_9|R& zOaG!h;BEtD#LoyUVRYd{tcrhLG3NubhgeeDBry|NdJuNVB6Yi`2yFJjH#S#kHI^a5 z1bqL2K#LoIQmYd$+r=&2mvBb8nSa|p2K$Wu3L-m^)-zoM8;B)(-6_XK@dH9F;?QG4 zA5_nhEC2S;jZvoWeQs=AZwS3c&etv*HHArsWt7$`>JY4T*sg4DCv-o!uuaaaLeS@Z z8fip7|L(SLiu+id4g zXy$l9W-b#-wM_hik583g$w-}Nh-$`jX%SleKSD6r#OOaijYEJly)@O0XKiQI%J5>E2ID z6ssfOyY1h6a}GI=AsEn4S#Ha>b_l_9TdvH#1YdJUp~-<;~3INg4iBqvL;biRBZ9)H}EBgwmUSfOXf@ zremgkCly7M4U}$oES^1%dFQvV-B6L~B{L{tR%O~wJ~l*XaQ_&SvGGhqR74~n4{>PZ z5vKDjesD^kDE&RHqtz7K6Um`xRcfVDR0G0o7|55*-_w4$oz)(j3Wb?M9a~Pz{HHxL$F-m)S?fH0R;?7eP{AvkIo7 z@a`F8BE;6a_wCDeJcT*V(Ev4_fD$M?L#vAL$UOh}lx^SN9iAc1$ z-Kffyv&WF50@BPt*_KC7N5{(Ao{XJK?QN{wN4Dg=vPBtlcbB@E9{Vb^+&`lA#67by zRlCfQgfULn55bE0qH^Z5`cQF6NdR~1u?BHG%MQTZ_igS(03dHC*uq7-_|)kL>AUwi zceK#sqPd+;Wn|WGy!2-{vZ&vH@K+c~(lfBlmaFwWsGfM_AFSi|yGudB(2k^a_Z!iI*!Z@m*V89p_;3w#~sbVonSm|EirWB%qx zj?#)J)}}A0)?SM|zHOSVv*Y&Nh)y*~f?6|;nkZ!YcE!XjfR+Hoa+v0X|Fec6Pio0m?5K0kMe zwJR3Q-Tc6;6=z*tN+`-CJasN5Y4qV#LDxfM0~S}x)z*MdB6Qu=>mZtokCCZq9*CIK zS-Ee`xaEgxa!B$0|&R7Dph-uW0%BknW z>ind{U&f6Ha#MmYJQNft6gV#IZUyS=k)f_lOQH?G2GzUD@?jw@LbhGzICL>3T~nI* zSiXKf@|rW)PuP&7g&G+`sdtj&CtUWY){+l0`=w?kCJ)!g{8wI&K#Dm1M;4OoS3~L4 z_3xSXm3Wnm*R2{wl-Cz$@ti*n5G0&A3dfP*T=B!GI*vb+A~Pjk0R1QZZ>66`|y=GnJ#{LGcZ!Lp}brt24R0t}gnyy-GO4HvwYADc1kENd^!JD#uophiuKTN-}OvD}*7v$C&C6{_^E zJ-cLq&^EY?={Z$;bZ?17mKrhJTUy?3T(pfEmiugU&j;=fRxK_n;q45|GJaEnb%2wG z33(s8ztqrp=J$;$y6A#|_}H0+jQCK6Rla zR_&iB$Dco62g;qjuf#(Y1W6}~>Z{rOj*eOc4$-d>IT)MW#&3>r9FHf7+)~FFu*M7! zD~P`c7<7zuUZ!GDTg`mYUVx5sDY~fsO6$GEgdb%w2<=*#n3y~J)nnq;keY@H8vxz5 zu(dsjn;u**cTUZiI}=*UKRjGIh6J!mB0TPd=lfrDPd=R8lilL{b33|*Dl}+?kwz9p z-^CZLv{}%4Ha0R6sq!^NF;d1t4-Twm9}Zgc^4`YFa(*1FUVVDfj%)z;4-itmzg|oT zrt898t$)Gi(O9Zy7wQ{ThWC7Vewywl3UY%r7_l@;>k&XV{r-$5-D|zUTt3e$jcLc< zz!%`ojNANva%9a9rNu4=Uk=!b?*4za<%2MtrhDyx<2Y=lXQd8bxY zd7}7z_L{o>t|}^&3K_)q+MCS0j>uK$_1K*uucJ?tGoLHoy|W%XJ8v0$p*Z#`sfZ~ReHNzQ}8X~v1(Q{2TxWJlRum52U?B|HcgyjFh%JqiSFZiwxL~`)Xy2 z6{K`-h3b3r>3u8VY`@^ zhNz{X0i20i)F#potW2Gp8V#r6v+d2KC(_{Cng37RgCjd4 zi?-r}ECr&ep5K`OL^(`WcCg$_XK(>AA4Rve&IvBG0b}7cPD0fKwWbnuR903_&h%vV zRBrC8IWC?F)tN~_)q!w;g$M^Z4CMK<8$ZTct6^|Y1*&EY8F#6X5EBM1Q>`$M#?iF3alC(M_rK zc`7X~-IyZW-wk?z{(9CUP&V{dCd;Didnrmp zyi)wP@HqOK%WWYmHjQImUGx$%RyRQDEWXIw5~NHlqI%P?Z{q8bmB-OG3`DL)MKoDbP#8>3q&W!tCS6-EG@C&c!$EoVmL1KsM%)v2JNme;v>^ z)A-v|M>g<>ct<9nI}9Llu~5xZOv_U(V8D$y4a*&PI_uLFAl(NucD!E<shCH=(C1L$KoB6MbfvmtCMV9JtY=###ky*n#pU*+}zk;TpO4F?%| zk9}0C#~0ZwbVvZ7q^e8xqED3|P{_RR6MjH}G)Dq&K3_aYx5+-)^Pf5kOA|k_lj7S& zgQUuplNxc^P#kWO4d(EKyZN|N9hoyP!NZxBLUip6gFCpa?trn9&2J(y0hn;qFfM;z zQkPm`+Ol057?;!LPL)hjw>QABw|fRU!|cM2pv=8YB?2XXGuNd4>z;%wrw011TyZNM zhay=RQalg6wd>D)C=AaFFG=wrk#5OXc!&lYJWY!|_P>`&?CLJQpczcg4WT8F!o-N5 zxH8u!i%`K-yb#9}!Td!{E<%nuqxzX%E3Bx##b9)yri}JzCV!Mn+~l?Llu6P44}_Q( zv<6@C#XIR`l?Q`pbK$W$TqATm3w#BTjZi;~=1N}FLyUqZ&xe9PC-RK!xLq%qq#+1+ zXD-{h(G9sYMyz*F^_1uQA;Jv#=)x8*AzC4e1!|dpsC`ZYOI6vbK4FurmdW*xxt<>Y~mo59zPWxdkq+^RN!Gwd<31pEH{#rrbC1QYjQ#NU6SX8fl! zFPmDK(nU!=pO?$?NSdKcUzIeJZ$u?#;k>*60 z`>q{ML_lBbT#c!?V;+DppH5Cr{19#x_>nyscf1l8dx86b+YmuYnxIz64B@xj(3!+S zlkNlj*SH>$y_M~`?h+zMGXf99kU!e*q^$Eut!{VHVwF(UsEWEVG&H-Ci`$lx@Ajh3 zqbD@5{Df44M8~tEpXl5ty-&&7+miIcXjS~Q8OSLlVIza^ksz;m(2af-qaN*tx_miS zw3BN^GRCEdWI-X%WceoYf_z$PPO`WDIz3|aoeWS6P1K5Q&iwYV_Jd8>M~pslTnfc7 z^Z=0nk>X!eRRVccs?)FZ7pe!GKMl9l>=uId+=V8bc>njFjJ&?6aE>~TG*Y^|8r_1B zme2xG1j2w~X9E}V+Las=Q6gI4e1n^4#UHOjPy=A0Pb0?MV?+aq7BCJo@BQklDwgtU z-HZr~wAaub-u$9Pk9hw}{WUStQjG-LaNb^ALF~>@dInZVjTbN4EIqdF z%T5GGt;A$ml1x>p7o123(yHfk7rRkJO6t8)5i_Gi>z&cni---sVa4(v!wI%L<6`MzZK8_|9ZYk5OIxF3YhP#OhbtC{Zs-YC-cuuq&2 zPX0sE-SwjX{MGHUyD+u~HNNQv%2E4w`6B7AyEJzvlwxN$iV;`EAq1OGx|Y2si16fxzU_pla)|GP5kV_ zAk10|Sq4F7T0O&hCW}f~L+72$S4pgjgFw6sw3FL5{jd848dC3K-zp|YqX$FK$%8}! zXoJ4@SxH)W_b0o5)WXqu#@2N=`w}ak@m#HR zIr3{OiuUfGKm8ik1_D3Y4xi7r)E2D1c7-aW)l^%v+Sp3$UI#Jc^3#T^|2*E!v*9{i z?^;cvjZqY#2HNcsE_$`vSvQ%9DjC4brsB2HBeLJIl#>17O& zC8*E{J>8ZZEThCs#wW|DmMwc%>}>rtmEvXY4Y0(?WBcIA05u-*RU~IA1Qjj%AXm*m zX&L-?U%sK|#V=PI^@gA{U7sx9^b*+%+#gkS3~o?3hKPmy8?jOz#a0WqDOm+INtQ=c zm_jNmT?FM+L{tLMtukNqzY{T_NH&M_LH_`=!)+|_;l(eQVsW+j76Fo&0kf8qkR^5< z+c^0d&+G3%fqyuGxld`Ys)hWu)|bU&w>dapT8H!Q7+?YwCH2bQzHyl;bQ#xZy_9<; zyp*zQ&GsjSjK6!GVPx+FKvuWT3fgFlW@}mlW<=63<6AX_(G=QO5^hsJXe~Pf@5y8{b*(VEkD|)jq{_46m*Ur z6JF?$ld|w|TeZOFYuiyUjp9T3MH9R8?h4z-gU(-XXSitY4*D1}V4@)lN0`B)+wQ{# z0J8%^*^y#xYr9q{hJ+VP!Fl_4xuq6~yJWZ`6cV>xZ=+MvK<<`!498IlUZ@k-Sjg0v5ilN8U{85i7{x8n#lFi`g zs*I9B`A#nm#Zd&#l%AbO=U&(!o^bWIn6g2ltO`h?*A`a+l2|Q!y@n@uCu*V7nIuJ1 zyL${8$I~dm+cZ(8?H}4zVvvWf$qPcSO!~EgH|r(1?>u2w;7lr9K!Z6ycOzb|Rf>5V zm#6weok11`l_$ZJ*GPNF(~7R_Ju#!gkhZTq0 zu7v*x8(Yk7%H~=f&B?UP5Fc#=Wa^~Fo6o*a7Ik%ac=z#H1cF{Z0Homze5XxSRV9^G z`8q4*jg32Q&-{eyKyK~!3{F3~XnMhMGw&63@a9}B4VpsgUSAVi`=d!s^0Aw>yu2tx z=RWgL%LB-Q#lBUVloSurG%oWHSZQf$dl`_PTV2DoMYd$sS8_1Urov!S5!yk@-1mHV z<@KRf@5T0yn0>X%-eGh^{>9zqI4M%k9P^L#@1Tf?*96ECpQV3k5F@a@isGcK{izA1 z1VY-FN3ZNCq#c`jMg=Zl4bOoB**uWFU#K}P)AQ6?yNZ4NcPzVV{3WCrEB2B#P-G9` z|D~aXvX(iJ)-xDnJrAN9?MNlpGinqdQ3wkRmOTwm_n!5S-Ld0cl2 zJ9>dBmcP3JwoJzf$-&XdMDC9PLs&5q8BUw ziv<7-p)VvW%InVhm+&OEnSn8)|1D+V^kARpJZ9zp zU7O{@pUwTRQBj&j({N>ofa3JxB|-6je;hL6gH6}Ys-8=BrJpm4qtQ&H~BGaJQ;$bGLrfgvVSF`#bCk>D!uTQl^~<&1#fr{Dc(?HfWC^sVpg}DS0<1gx6t8OUFehhZ6E8jfn}MCd4Iora9Enk_fE;Knj4z zfuLtRXYTXKZ{Ww%+PY#=0bFyElJL_MXO%uf+LcvPQ|`l|+i}u4K<0g%Cht0Lf?6s^bhrxPE+^gA&UZA<_r;`ac~ zFGU?t&k9An#56(fckKLgcTJtTZ$Wg_(DHi9F2`-%4I_yfQx=$m{{)dO9*O&v>c4+# z!-5U4^B{Pkq-3Y0oHQ$>1JzTuX#lCe&QzI7Bd=e^aZ z5f6`g*<8Tj-qV7se23fx5iulS0aKf%G(+H_1da*rWj_5>KmdUxLig{bfs8WB`rk01 zL+*KQ2GCpT^d+UG*B%1E)cpi2%{#ZL<6x9oIJx1Rq%D!$#WHoHJflj2C>>#DuM?j# z=-{BRb@A^<*KZgw$YklYW&^Ue9@zeaTEMc*wCVcT-p(>X)@-v%k~yhPo$3ed8kExf z)FFv|F{KMf<-H|7o2zSl?niST)cm~2$Y`Z=lCrY0MvrlpkAn{__q8Lb6}Lw~Ofy~* zCy&>jHkAvgJp1ZaRqfJa8+Ux&wEagJqDaPt(p3<%lg?Q7MCvjnzKcf;)?3NHk@|P9 zc8ZK0%QJz-zT1QO$ysh^Ll`EYqyiZxi|!YC7N0y34>Ch2FLIpno9S+u>8{A$FD&m6 zwvnlO_}%?_gu~$>V_p<152i;vJ>oVmfC&Z-vG zXltwaXr@+F0=%9y6&r*_Jsq@rD$M<9dY zDF&@7my_Av+t?W9nafdBH2ITWZu6i+F$mu$4k!N&E0xfQo4G%=391FeLOwi@4-5&w zeH7SKC+A^dVs311mYw6m1}Wjir2boc;`8uMF^Bs5fzPT|(?afpRObingv7e+@^Yi? z!O$;vEU7}iUce;b_3PJfVrYTJrLgd-85>Gu;KHHNHXH@|gtRopS5Pr+6_95ozOH;4 zDhqgza6BKI;%{+tOO(f$REKQp@?iEP{B*Y4;G8g=>X}_O=WYEwyX0iNpHvw{bflR` zUY4^J{2-2U{+LDRFFcFlZkG3 zUk0{265CtzrYXw5ep$&LRb{L>L@UBZkY1BCEs{M+$!x$E7uK;oy=w zI&vvDDF>IW@Kj4{EYF^1!Q&9dP8eBqQHHdqY`u>Wa@r0XP7fx3o7Tz>6+ z=pY+3(BB^?n}gHK2FPO;44gl$zJC?dVV?0SpMgV_)laPiOgO*<0{yuj6a48t;@J1K zmoUSDGvRMi*YX@2Bui$5Dt8*9NFy_f+00%Nznr`&dhwzl-SqXD=8%< zm#ZrDA}os**vMXaY0%^JIRZE#kSzzjR%vNzLjy2o1JsITy2q&@oJj-Ux9>Khg5wSHv+hUumhxcw=>i0}xC!a$D;1GFChIgCz7ygtsG4a4`l5uO69|)pB^*bf z4Pt?WvO)tBw*`cG0iCXKRm_jYl(r~PCD#DvPKYqy z(8)z0edl$i0pXJgPQ;%)k$#?4G7-7ySQ>3Rc_yijpUKJor)wR>5^f9g5iJ*)$)kJ` z)r$nhT@|uaRYEOJ~BR%l?zV8tF#jEW7J*meP@d#b@1No#3 z_5hniq&y~5FMd_hnUh`Uv@xGfNko)xvxTRoCfBL%JK8zCHSBL_Kc@CKhISHAh-QAu zbE?017b)IJr4y^5_68>OB?HZ$@;Iq208F1M{4-yb07gXMlNjz^`I0&ep1Z$;K~mJL zqHZe1>N31QxJQYP@cpr90jlhf$*VwBlhTl1C%-c@VIXm`xuY8!Jf*;29oQhbHIYC# z2o-E>Z1k3LTa^pcWph>YCxObhJz1_)OPK=uQl8510jO|X|fkyPB zp|vTeC^;^arG1yIwff;H(dwOC)Y0;q6R(q91NWang}1T5+)Pex)0QZI((`OXqHGok z0xY5y&^knZmOHqZ0^{`qDtb*=HhoY`mZJFn}$ zBILem=?mIx?fkwJ6l89z1Wvu4v@{#WM^t>1CB3Gb)RB=v za2#+T&(-Aiwk}hRIGmL^n{qvgThnc`CckwMTYxEuwEkQD)E(+1t|LDlKJ+S6q(lMZ z*y@{3Zj1DfW$d0ymjv4Ji?C~i!JSK=vjXL6l1#!(7D)&eARWL1V`*iOq?QW+@%QH` zb}hlJ*9OVi`8A$LokUVIl>bg1xTm`6Y4G=*FhrlD?qN68mkJmW$=)n(e}B5~-?#s2 zO=4Au1wlUyRR+Ay$Mas8iX`mp=Si)(vMq>pYn5!v?~b2;vQHx>yU&@)M3VU+(y3ep zg*Y-X;n$CTyNNxiM1LbIeC9rYuUZI8~LI!j7B84m{_WNUquCwHNcqtI!ctS@fj#Q($S^g zNr%U_CTwZtlr-Z%2;rf?EiEm*GRRO9w42}#ZF$8@`OlLEP<8}F2LKa?6HiXLmhi;F z8F|Y8wkB-UZ=V+VeXHA5(0*Ojv;61#{6CMp$RJ|^cf{!?zL3J%qyP~8ADaa}BHIH`sP0}~No7ZDG|23&Lvw|$>z zF%3rz;%=Xq$D3OFR#1>-EzHXLkN*drco-`{P4SC(?-cI}-23^SPBr4AH3=g1@JaWn zp)LtkBnQ4CotsvURr)96@|}UtDKAAer1jAt7~w+P3b(WZCz)m}x8c_*=jH~%Lv!^A zvz{7Wz2h8my4yG{YGy(hNIL|tE?+!QGU$e^M@)EzUnr-v(N2Vf2kW!9Ok53*s4x0(?WEYxH?AcJvCdTqrxP%WFb>q zzn{P#EU%qx04RS6{><|Srdar9@huNDcf+2i{ZTVoz(vSTF}=oTT^QDoIdC*sM7Qm& zi|kw{Or7atrkgxyyD}I>bUA?o)3<1D2M{d|-6>g`>Er`P(xq{$t*M}$?UFTSaGoHD7w)&$BkWG@s7Byp6e)w zO>0OXy9QbUSv0Y}LLO^Y=uy{i^X`VX)92StPGJo1K1&9T9(o=ueXcqEEo8a#=g*(r z`rS*hq@8;z?r{|9ROG}|S@dymHDU!Zni-m01CC=c=w-QHcsLnuQD3(ej5CR+slp|f zQI8nk=8sgCxV$BA=s;E=TmeBWvRP+{_p$sv8ZAmdbw&H){_Yu(SERyrOk|>*^79gL z4MaMVEIINKfg;gkN;okLva@mh!VDLm;AWB>I#ijp5$Sjk;YXpq=2H9d<4155y1Rkm zs!E)q1%Gl&ON(_k9))N6{Ihc@S>_R@*r`bMG|ox) zThy+KLKhZJl$IKra$3owSi&sJ6`HBj(VB}-PVd(jb04!!o?Gkd$M3#Ul_CTw%HYtD zw0i8M-AQ~p4=!NCY5``LvGMH4NNjvObAjUdsiPwhF$$zV@@hy)XZ@;O0B+|&h_#iK zm5mLUemG@uIa%iVMqgiB-{$rHWr2D{ggf zot-&FTHDS%N;Ncs!kJ%SYZTFs@@B-|PQWA~M(O%678Ddn8p#rq$*U{yPjeYA0?8Jq z??+kqRp}dzHIdCxk&hWgLd*IS8?ggTv^4`LU?5)zVSY`iF2#-#K(BzxfC?mBZNmR( zg<#8}A{6k9!khey{1^E7*vjWlKGnNR_;_xO7|wF2D5gshi;qejAGr)yG`|!yVPg)< zOCUml7-ZB*q==1-wpA=0tk?T2dbCk~_9YSYs-|g5(W9dl!i#aX{t|XP!k9C6&pFn6_&a{d}V^+;_p|KZ_ zYe#G%I-U`+5%JdZ^u!JDV&kMP!(gE`8yJ zAzlQZ+}FA48Rk!)`CKWUe3X7TSvog{QZ-RXAzxiySNuVnHE;oM{^>IgJh7aY7nhL=Ac}Os_(zIFHck;l7Nb*BNhv9RCMPGy#zF{(HjjCglb`1V1)(93Xj0K1 zE-zm^GfKLbEh3BMoXfFkU9xE>;hR$r=X+~ttNFr4pIMohL<$NBQhW14PuF~D{+jA{ z>DO}R-`0gf+8Sk^`Q?9%$$dqD{rmiRY$^vJuFz3a zrz9o{J~t-n?d=7L&qI0q6ag^NLN^`{oARf41|2Pdrm=CY^D-UEmy8Uri-QElqwtp; zZ!CjiQ}Q{Mlk0o?w6s087aQ95!IVG!Ccnxke|cWzorl>q%YMSXS6DtfJV(q6aaU*`PTNq&mI@_~i5Esq&{Vi{RgZ^&2gtX3UnN zT83^p5k9N4DM5QZBT+yNU7bXfHj0|A&Ru%Kmu|cRgIzv}7YZO8vT?nT{JKSC>h9`2 zV$VUEH@NPeb_wSb)yY>=P4+T)`FFWr^}%G&d#B?K-lU&DC8MS%hi5W|H*n?t(a&D? zD9$a2$ceM5lq(Pjm)v6{mVpzA%WnU7Kxipy0gISLL0XE)65k;c(M<9nncv1v)pB^U z+YI7ncBs|Q5OP|wO_-J)O8W7Um3Mv4zvJv|DdZnZEg^Wmwx>XN3ed-BjWik3^v^py zt9xa(%m2}&^thmjsVxE@_o;`1fGnFrAR`u=or~jTX>s?r#m3gJ&vO#xcBu1Y2Cy^n z*5%OTmfFl$BHuiA5G^|%2&>4tTGwPmKF8g4-glF)J`BuYgw7tSgM-#PYsQO~{Cp+H zxIlcCFp)-7SfF5CL1}xw9Pyy*^M{VSz&Osv@h-hd+Ncx*L0+wh!NMtQDB{sZkr

            ~3FBf3uJRc% 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 diff --git a/packages/muelu/doc/Tutorial/tex/pics/tut1_2.png b/packages/muelu/doc/Tutorial/tex/pics/tut1_2.png deleted file mode 100644 index 54a2ce92e28911eb7fbafe4f93bf047ba7b15730..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 64042 zcmdqIbzGBg|2I545S5S+0VSnNKpJ%d(%m854CzKiN(4l@yJNuUROuGjXc!%%Bt{SJ zgYR`+cmD4C_5A&uFO)IHcAiIkKJPk%73C%I?>@c@fk5!zNkNq%kZULij+c&rdb>>8Lu0<8<|=8XT{p%E}rB+qBoIJa2XWP%%=V`*sjn zr7x*h99f`w{jFli$J@**E)G7vPeSJw>ApOS@tWb#XLH{bL7OMte!w{3PSe@nO#@B@ z(s%vpr(ZmT5uYMQgw36KRH;bx9;i~tCf`SHKkp0Fp!Ewtzzq=iGxw73qfR>~o)vB1 z1b-#|ri1eyxeG}@C$zOe+9Ixjcc9DcX)@#dy}c99PvXaEU#~?=Hd+-(lk|0{mxMT~ z@-m}nudQg}2ktQ{iK)}K^gNWqI+R;VXY;y8t0D1vo3DU3W$Z1y^ZggYJe-jGX2TP^ z?@7^&^MXrC@oMWYQW;X1c-Oc{8B@mXvF8r6J&KJtE#!WuN}rk}z+P1NYp}Rqd#{Sd zw-BGGhH0SXEW{IbEneg|u?U^!9B7Zj6Zv8HDGo*wC*(c~wsYPy9%H)S@;ve}EBuuM zcW;j{v~JnmImm$!K3rBH$#n7M&w^&Z~(tDitANx!rW#%0Q|$wc(I^N!lUoRh61e%gMne;{C7By}hzHWz_d_JS?}! zM6IKFN0_LP>lRYT&nGu6Alde*N>_lu9hIi4XagJf#-#j!@M=Hpo10tH^`AcBtQ)l; zau4>t8b*%HK&K#<*dF8WwKY^4HP$|cIx5VR%YRPj786-U?VEHOrL8Yy@*0zagM*=} zy1Hk7=UU?8;=X^M^*%ii5E9ZDM=+o26WJ6J-)$StRcJolst2QS_P6E1&F*5?9_#9! zCwKj6n5{16+d`Tz&QE>M7DQ+>wLPfcsN`CWjSEt;c%u|($49H?64DpuzD@9l-hla` z@W^SHSy^B3@>+iJzHad%Dw6)qR`hSqjd}fLHTjle0^dqaEk(ZyD|gL0wr2I(D`mS^ z)TZBQ9jA+{#LKI(JebAJlpRPJ`m+^(eN2b}sCjT=&G zrl+UJdF^#&-IGU;c-{WKH!wioA!3-ScU9PKGN`ft)!l8?9mT}Q$JdNING#V?c@)cG za33EZi^Wn3yV*NARal({OR>korfNR?NqcpEevbAzE#^-2V8-@8{*ptmU|SV4r>16V z?|fP!l9=Al%3*5lEY@7t%v!0MYrJV{YHHwfY$`4;j&AaH-I~&hy?9tLyXo&B?nI3b z$qS1erLJu1g2S`}+>d?z^a#vVd3a9D&0ex01t?lPZI&1d1Qng3FHB~8G7lO8dOEc^ zIM?m5wFNy$?NoE-a2d7Qf})aV-sG0eivvs%(ibi}^KTDMkM~v-l3uR$#v^hSE-c4u(5B zJLQuFE&mzYfGNSug_E9LcC)MwY;7I6u?qsdg){`fIr8iN$iSmPU#0G-4$X)Cva)2e2x9 z&vrUo(cZ4Ri}_%KvE?I$3J=#*a6>PQ8u~_vd#jkAJ=^KwXnxH3{$m)2*z~FXEpzo@ zvAd?VTPqsjzQGvus^;lP@#N4jPZ(7+rJ&OhnECD_4{~<7>A8DBIaPCb21nd~NLx6+ zz5ex_OqooOEz?b)86MqxH^(eqO|?GxUM~5G>WLN8!R3z!3?^Qz)nc}#RP>Ven>c7GqK92=99BIrEP)%7m^xPv;} z-OcTxl7oYTrsmki`JtFzU7Ba?Kx*@Q7)$|5Pfy?Id06Lz3!tL?yE>Q&rY%VnR~R3! zWofxK`^zsQ<9vO7J|p|~elNGaPz8>X47mQ0=*!4bnO+@oKvi47J@EPrL~q zZ`tD_E&9zqCJ8RWC9e9t$mCOlU2Jb`*y!l!9Go5<9XYR$&@(VBuB;G6l$CL9KO-k6 zrTMwk!mF7=E@UrWFY4IyLLbPCMO%*&w20=2@TBE}QvS2Dsv zD^F=6q*RraGu{}uL*Kp?@jag!7|^IRnfvXpT`*Q*xd-Y9A8f|P))oi%#T6Pfi=)0M zqzHd-c22Csqg5>VCB#HT+4=ad)k@}25 zuxVFF$;mD0UK?rsOZ}?Iz11zTnCa+v&wOvWPp`?#e-|I0?UytP<5`?Co-j-KywM=W z%*+fdNt%eDpcGMWZPNxnzcD z&c@2lP8ia*yu1w7MyhWUl-$PJ+VjHa>+al_J47+8#~bIksNLP&tgNgXc%n#ndV_Xyt2r!%;jsL=D%n4||3>I?P8)^xE3mEG;cleb3#&_Q4$lp$aw3K|?S# zE!J<8{`VM(tEAW2jn0y?s%cywZAU5gXDmn`LLR>~=N;ND2`I6nV(Tg7os!Kn;4jo{ zE#52shD{qfaS~DcfUAEKcyRU8 >fHI~sP@6#uuUSs_wuL=c78tQ>QxWWuB$RK&Nizhd*irNJhih0SIdXaai`1u$vsR-oQA(IyR@Gl zFD0+VpIP_4Wiu0#n)-UUeq+Gi1~Py6>({Sn_myN&oyHL>7BEOI!eh4Rp_G&q@?X{c z3F+l=2>12QkS(OwY;GFG#GB?n2xFJrxgRyd(K8@+Vbt|wpb8dlGg36ZzcxIObgbsN zi7@Nau61YwweZX9NHDnuOvn%Kh0lCz*NNS2$P1s! z7aAo=%`Sy`eqXKJ404uj0^a34;~ChySyagNQ%@42r~;Oi*U7%6ghV^&sW%@`>7x6t zeB^)aUGyyfQ39z38K=PZ@94+u_YIFGip+bQ(W0f#;KE!<%%T^BkTmK3{(j%n#EOOn zufMauKzkMSDS&+Zgc^KI_^XgPZ}$RU=BFOqXzVdd@zldSjdb(39K%h*^0ug3{8LX| zbF37!OeyZktKfT_^%I$hbQLM-TyhP}+s%?^bMjxUZ9jL!)>K{G{G;oRZ-rc2z~F1> z$szYX$6_|cZi5&8QABQ?qh*&a_HeJGs3iwD(+Sa6pAZa%1N-Hvgu}1qbMp|Dm_?GbhE<6 zFqELINGVv;a%=7S<*EH&4mVmZWj%h0S9CN4!JP@v5qgR4JfG-*n4C~4p@~zA zJjc9)&iU{2w_2#r_-C780!?j+xKBwP$R- zw6ZE$n@W=t|-$eTzTN(VUxS-s11v~VzVkh9{i zY2THW0249pM1#MMJ@Z`gOD0UG^RYP7zi1Ry7lkewFCpM7O-JcFgy|-uetJPr@M6pF zodKC?8Bf_c>}LAhsoTA!pxc!`3MwXc?pvW#6y2R`wmB@RyD@GGPRVfwDPpTrX{l5f zs)|aAib{Wn7gBGgQYV3@%TQ2k>ISs+VWe7u^NWSm-gTZ}i-sOIzr!#MSqa&Xdg6FW zcn9erwK5Otskqj-oK@<>9`~@2M+8AlhJ%arN=Qnq1&iGUPnc*;Q^I`ea)uvk;Auc< z2qS`CxS2HmspuY`XibRV=6J2IN^WUv)Do;aWyeKp%6DR?`XKCY==-c*Nn5d@A1X9a zrRzP;mbqIZL&W3tS}=+3UZ>P9l74Jbk5s&Vp9k+xEIM>4`Wu+A@-^t=yRNwE&q~jw zc21r#5r6x9^b~v`)I^Skf{DkNhlV*K_PNZ-i}g29#?&O$2cq%LKY~ss4pBe;yta4+ zrT!4^Nquh@~;b+trhdPv+DyYbHlXT74KNOPT@q0h+roW)E#UjGQTG_4#{ z5nVx_A#}qP={NqnYQ9RF@Vtu5)JKw_4xuTKM?E~(TSJCHNc5=bKpjYngIsd2g@xgW2yLD?9p z65<57BO|!CYZ^1Nlj{zpVms5r-hj92avnmCsDKBpAEYXGk)Qs@B3%#K5)1lg>y$G@ zI0p|lC>+e`2l`(%jE-=fspDz4{AMNZvQ^?y^h5EfNtUdZMSM(BJ}kFjyIy%(t1^dU zCW%3ULBQDI{>>-CBP(Njg9CEkWDC@cr>$AxCYMV`jBPtTd25;~-;d886gn#xg=p>}+O!6|}5SigMgx z>!OM-_NZ_4*+hzPBL$+o^BM>c&kQbZLfl$r_c*RV3VuF}R7xu2a$oQqouSPbnDm{Q zDyrQbFB)Q{QQpccF35J5q3LGtTb9#d<&f`GIO3k`apzwdPaO9hoD0#m5NckC?+96H zYulZ_Fg=I&Gv9zfNS4tMNS$Du%iq>WqL|k`_Tl!X&+4tEh29Ba-CR~8>;2U>Y#lf^ zpAz8Pi2nI*iz<-PHz6=KBrsN@<0wE#Ux9q|Kjw#s^Lj=6y+P2o6K8B^(;uVj;S(J6 z`HA1<`a`Fj=UmSDKE_A@0%_Rc1Q(PSATz+O=jAdu)2n}Mhy~mG9@lnVezK6R(1BrQSDi=P*}B-{g1Al~K4q7dwslmyS2Is^7KD++lzY~?-3;OTljaC^Rxu?lxnlEM<2*z z-oMWMz&kq9El4>SmdB1+e;Xz{m^c8nX!6~JbNSZ3BRW-$7PdGO=V*L?#eT+CLS9&) zY`0%pk4EdW#V4N#2t;w)9!CL5^C128>lOl-uzx2%iPfx$lyn5h!k5-M1 zjYY-8JobD?vVUvZmr^uI|JLSvil+~u>x4N4-ESZXx8r3cpqY~4B^?uLC=Ho=oqc_5 zPoJh4cZ3ydSC*HTD?cY5A0OY@*%3QGGPbfR;FcYCt<_CQO-+r6_yCv!Ai66{ODL6= zE0DBTM7uEw36BMY5`}~k!>Kl%{=T1R4c1t6$O+RqX#caLfCsU#prN68Ne|!;I9|Pa z1ymbhmkqKNEn{P2Ko7w|O`Te1++jCSv37R6=Zw;XKrCJ`_ccd5LW7~JTXq7r+KB>= z!siG4v1lL9x(~(<-Y>#soJk6O*q%TzAsCb$)_N{f)x*QX#>VFL>(^FR7{Dco@A_wE zE|eO!NQ6BRFmC_W+uJ)frfGV~sY63U=?UKf@_h3i8Rz?-A8+8104|{0=ut^k4~825 zI|0n{)vLFyVaOY&cyO6XiaUz}v{mDWcdUa7LDf-IF%IfL|;4Oi& zNd40OW6pdC8)Gz z$&YLY#pWuYaC9^Z3JPpo=KV>v9~J_Vll2BtMAi%R0CIb|>T4)bTQuI$fk6yR9B!kh zMn?8WiW_*XwhfR?4Ott(LZfI=t z_kRQgLYua)LK<+<(fSCe2@F#SVP;y1EEz<7TA`0?e-7r$E%X6jwxRo3Rg z&5&lB#hdjyjXvFEi-(g9328}H*S9!`eb}} z+qb#S_af5@E8R6Zx_q?L1pZ1xAm2dj)Caer0dJ~z+euBDjfd zYpl$8d|OUV?%LI>XE+?-v!_7hL%D2%-6|8qYB^q>UEVq~)8u;rM(=RNrfhy|>%5KB zU~Fvcxs2C82M}W`JP++~6J3S2lT}dFr2_`AN*OcwY$wP{tsoFLN6v4m*sH~wtQ%mJ zv;?p(Eg6$b2>Ld~=Daa7zGcuT=+^mAG8p=tko<6Mn3W-?n!9~cM_K!EH|LP;WSxh{ zS2?**VUf0oh-oqjZDm5t+_Pm9mFHQL)vm_0BEtF-BqTTM>$FwJ&728?!SbmlmpH*4 zigKUTZ-ut$0>FOpB;)eHEgzvg-#uC7FZ=M)iGV zJ3@QYW?WfSiL0uJwL*(W#WcOP_JfZPXN%NiMcHDOkz`kojE$Am;+9>lv$aM*1PSr= z`kJ`)L04?feEW!mG()7?dV2?(PL*stcQzPl!r(8{HJLDUQ@zXPk1mtT(wQaVv2Wq# zRudT+srcMxFr#f_9AU~m{^{DSjm=H0b#Pc^VthOpM>&Q_+o_sCG}?fbBrzdDP(T2? zHf%m#Zd!1sudmN_W9(UEm*~;#HCIM1hG_c*zZ2lFG#Es{h)9Ha-(ykU_id^C`C9aO0FS@>- zo}ji?D^JwPx$-@kr4?pUn|Vk+mV9$(0Y@hBnCjd^V6El@`#su5C(G|ZR96yo=f51-yN_=7Y^S9~7X1=goY zUcnW}Y~N4c3sd)68rsaGv9gYZ4&VSZsw$;_*xP=@vPDeV!zRktIuktEfI@+i`Jp@fN!Qbij}RgG zw0c18LxN`9JLI&uKhRvv6U|d(_a&+XS%4*O`p)_E{!eLHSvs0qx3-#JVjD|*&yUS% zcCpxE)PyG%^A@V4qy+S~iE#Yex1VOvN`~2Ya~L$q!qvYabrlsKdb*3!(9Ew5=T7*c zNXr4k{GNkrc6L3msfsZlm+1s0+@Tvb)k#nD;DOAH1C~%hflDnlJp2(sTgL->8kZ|| z;!hQQ2H3IcYRWW>89xZ$E(JQ!5C#{FJN&7 zh^)kHQR$7_o}SG!IXQLS=7!_0kw#`_d^Tg8zP`R18X9GqHa2G`p{&@Dz71tFETOsi zigxid3KbnRzpzj!+bIEhd$4}vgx1DkLC9|`ALzNYjw^(Nz%6sG%^sSXN(utvk(E9# zz=!Xw>bN!|87J7KwY2XB=cT26R?$~fl!qE|RlCSV*rZ^Lw(s)tEo%wCfif^mG4Xm9 zOQ*kAr7piPg|!xm0BpOuTH$+^i51$e@jkIU8!KZsGn2@bH{H3-_Ba z>ZkXh3JS6_8FDO&`RZp3^0NAb%%@~Z5)y}%2uuXw z9p5bWyLXwty#56J?JZVkIDuG!U!GwUQ_01->sf1Xu~Z9KCe-xL2pZjXJfeX4nZ6~L zEQsprVq#-s6BHB_6%`c|OVyh-w6S?YM3hMdv$H#&Z^M(nLl7MkGh(#~mOEiEl$AuI zc3kSihqAJ=oth5|`xXk(0r$uWsi@c=-agnEcl zm>>eqahPmSwRnyrP1-HdvqjMq2d{4FrQkmtS6icrXz$T>-69TZ1L|LGp)MvaOykc$ zN}s$On}c&@9A`S}=chgynMX;Rx1*0Fx&nfJL>d^-+C23Ryjf^HS_0iiX&B&6*5O)O zTHPoVJ3D*B4iyzu5}}Jjd_+V#6>Drya3>O}ip$50q$DIrLxE#hR4xhhR3P+wFM0Ig zQ;Q}w7CVBrU8m3#oM+JN19ifkIQ#M6xop)F$-b!qpduI=PNApf=BT>OQ9Ww@{_cc> z!9)tkNQ5r$7v6$Y=|}cSJ|ejD;LF=sYhlB0HH2RHd0H&n}FJ zm~9Paba!8Bh`?mNu#OQTNEXC;2xHfU4#X@4Wo2c9f)HK&1o>OIT&va~f}|e+eh?_> z>Lz*E+u5;$8d#ezrZznR@F5gR#2}mJkS=3m!%FZj`=$@}=B--*)FlRizNlI(rw7m{ z03NZCku5V2kaS2>t>4?Wo!p9zWyw;GE!L^`a0`-?)!)KU63*)accUuww93Z5)X~I* zpYO*sKwFwCpFe-SI160CpEB_6qsa)Rz)e&}-acYyhfTVO3Dr9-%O2|0*STU$Y^|(J zESdKA5Lz{VPEW9D+Nv6ymGA#_UC+j3{a=pkL}@4K${y@u`x12 z=7cWg$oVXER5LUGfK8uxq{iPIaW zK~o37s~6CUYW^(_{j-&pK#t$Pg&P}M0fSf>Fo$b?VC3TqI_=oK9O{SH8Q&)_W!ywJ}T#HUkjb`UkZ=!IwKf8X{pKg9lgTf4px(R1`-76cqHc=BB+GMaOzf;hN1N5TEE+Sl4*vBWuivZ+ zz0iF3?j5zy(cIC_0-%qq5mLK*dqkiTW@bi4*4FnR0F12%9O@exSB7a%3}~Qt?%cWc zfXal!xDX^g1{qVmcKe04E38MuT&JZftuDiP-BUZii(YOJw33+%4`GT z>$uX7kB`3z><(Z)5Z`?Z6n|jvXqiX8uhrGp)Qn3>p#nw*@Tp7J?Ez&-dv%H(JqOeq z_moOaGYQ{$;3;(>s80~-v0HUlcJ_%Mko{?>Q2pg2O%I-gG`MqK*gbzj`8JXN^v-o+ zqR0}{oy%84URYH&ol`ia>#8ZM=V(^3mibVC77u|`-WqMDxLcbP96mrTa^mXJ{QC0Q z|JU)6LHy^rLhVIz?C8$o;_Ibhef{~YEJKbrHwG(5?^j)^)V?9ElD33k2A)?RQ(1X= z!pjdCVCR87CokU*3@m`(4HOmsNLk+kWSqF>^uf(rLiwWi@SRIq+9Bf8WtEk<z95!!gWjia2IN-}mxL#rw>m7V&d3pBzed1B~ z7KpenhBOfc;2S?|Mp!_=y(fk(KR>^uqy$tB&>!aJ<^WT%ZKwp-|H3}H#J8i>XX(29$U zbUfJ5T0+3A{<)6Ap|jK7rIq-2`e)BLM!f>RycF}%bvWMTnW5d>>{EwtMa3PdfA}Ef zD9Y*{{WevZj*B0){&7no__!^ zpuuihFkZF_t9aJVyDX)upBA)00Rk@IGahGE)oZ`Y4=(nYjQp0ZgJsI?2m> z4o<{WQ&#qyEQ4`u6svy2OF==8!Hl<1697gcyNryCURt8P5B0zjvYq4;5~>HVtJ9?1 zb;don-wJGbw@7=qF90H8l%B#~ZXsz;JB&N1z|Y8V!^7JK)$GA4K8sQ}32s~;W0Dyf z4hdcb!c={|4rV9;5Gi|U`IKH7!2X>CpFl)$`@?%H17hAMs_e1NZaXx5d@>dvzTs@z3b#+W_vRq51vm7kF$6WG!cPuzPQeD>dBDC@QKBC8idu$S^9>6;)@aE>x6yba!o`gEqMH*DqP}TDxfxn!9*=Qt!x9 z;sthnFV?FK-^2nP@r7Im5#g=?eK<8KQG_PzA|B(XrwO=%@>Gaij4r$RO80bKqt8G= zMMYGQtejl1Mcda$KpNF+^x!3kkB=u%0s!0N2Ux7p(b4bdehdu_T@L!vu3+KiK9u{- z1B_i^M2)7tF6#yQg4;d3tepE9jj{2kva+9@QtwUZ9^RJvyBoO?tXKYfqK?;ezLiCz zL|EfFnWW_4pY*Wp=Iu&%gn@MT-$qXy8(S>`Gd1NPe`k9-6{5%nx*!xJ;?h{V`ugZ; zgoK3T=}vbd3ns5JXXjoX2(*cbsGw@1Rw%#xa3_hu6s^@AJ_(<$z8a z89N?q%IGy5DTpVBGWDfP|)Kox8;`}0#lB5r(a3~0UL$3+Ey|Jp}LIc-hVg6JDqm?6-NzkmP! zd-5^{&O8Ak8XwQ*F~4+e8&w#sRa9tYWYSYp`vBY>h2P4Tm}xv6Il=0^ev{nTNKZo2 z{yP2Vpc3(83@G;AL94y-HZ4w9AwfYF0GEQ(2i3e7N&`|D<)x*o6P4?Lbk;kq{YXuP z*TK;SzPLve6f7hmVgSK`0Z~y=QBWA5mx(R0OpLBws+~l!rz{ zL>wO3mRDBlRof+Fs-}R9k=$rM_xixmKFUz1$_6CG zz)5U^ayR}PXn!1(5oUE*}maY^}a*}m$5h9+VX?Tn)d(OBTwfl>K5)~d?0aUJU6_t zvC&c~LYS*;wl}^A#0vp8O`*ysm*_5*eOT-(gH|M?hgdY2aFgen0A!5n{sV$d09b(F z*h*%&=uqYrJ3BkT;6OvLK^1@+7yUZDv%fzqJp2NPabSUBr8JwZL{lJtp5Kl}<4)0= z%_rTGf305I+1e661fKQ#!!E{6PTDW+LAc4AaQ%+~taNl=fRw*xldrZS zg3)mQss*O#NPyG5@{0<_>_d8|Pk>guOiVDsE-S&cOWT1wIn0Gw^nO^tbZ7H3C0z+(utKF5d1eIYn) zrV_CUUj6y0!owC=mMP%}5y;gRfm9yta=goFWAFc^qk)$*8^tM%N%cX;V7$jQak z{3ej7VCmq%EQG`zxNpe1%D3(Uj(cWyQ0VS2KVe_7=cHFok2Jjxv`)`)iIWovGj-9` zW_{DEt5z3{WiW$*U?Ls8y8R-9W`x6W&ko_;8>AffF@r5G=q6-WB)ni`GIt=JQmC%B zPWy>S0+;OsH4#IFc2#djdpn(=pm+N>vF>hSlzo-)5#H z8B{{h-0PiLVB0gu>G})h=QZ#AtAAo_3AB;rsWqKzz6qe-#_fVod=uHtT!L!2t)0 z3xLfqHWN}YFF-HBkG3-n$I&brz>EakncuXVSVpENgp>nFla~QshEQ@*uNo=3uVG>A zOiW6?K-6$S<|+C3_y8e;IQTM`3%WnxhUNn)fFqS~yZiWv5(GnOP``nkvk%-RmE6ll z31B0b>j%`L!XR72RSv8yngA`GA@_ZLf3p-x>z=rT#!`_d2mWMItl$lNFYi zq6^_;`p{p05sXI^F58RqI)DFdNEZN#YlL zQ7i;7P0Ba&Jx|O0*CI9DJ4i0`N{M%|d-_X{J^KGXKC49jcREpr?C&a~hx~lX%ErcT zH#OGaz6T5uAXS$6tK`U%^V{jVxEz4818Bh5YnP_D*jRI0+rAjx2DdU$$vb z-(OWiEp9v$+!}pGd>1^y6d?sH!0@Dn795_a^mkJ*DyImE}toR3MhlIQV1HAKh_97y8aT9ELd{eTuDqB4fk+z&1 ziIkN2&Q7~~v}{awmPC>avnCiNnwt3T(e`zcm0;VDGg(>TMdYq$7TiUs*x{-O%~0`Gl@lKMgu@gY^T&&bF_ zLxkPyg(Wgu#(ON#deo(=ichON z>spHxnB$_Y=WAhd*@~BpVR?z3kC)fMwR)iAC18=NWVj4Aw%(F^&;^3#&}bt`(YJ4K0lDI}zluK3>A zcqlV)^Ix#XQp}*{3Mob$=&%6&JtiVr*xZzZf&l(YhsDmpOi6DqFVz+k?s!=S&+W!T zR#sL9g_K^=Btho_fB!a+-!V5n|ZD;;}?Gi6jn>j9hZb|8A^}mMuNOHxa&) zro_!n2#iKOfji)Xj$F~$@6vj*a-m4SQTX<6&Y^3!uD)Cfd~j&QsDKGv<*t^Jr)uXM zYVtN1FgnE|%*oaoJzG>;#>5^~0YWC=HNxr|5FsIXIA1I%>XTPnTXt}B)eco4e~(s9 z`tkCj$@%Or`+$fN-SLQOeOFf*8V5&&qW3Ds>KEq_5?Ss3fJ+K*Ts824qvQgxj{_pu zb(UK^qY9qAc>=sMQvNUe2%m-g6qQ4zf-QGO%60^wzD!%&GoU3krSOdn^Z7BU5hg|5Cl{Lx)AP?~=JM4TREgB-y~UFA~!b{(ZK z+4mpZUPpgPl8ndJKkHOw*?05XNN8k8ddeXYAAFyYAOHJ8eoFV3Taw5zLTz15p{kWnhJN<-TX)*2M> z?EQTsnv)I0!G-|=1pm(iv9s?#e#|c}5)%;2&CY_y<*wWMGo9crFCry<{gjh8ATi*2 z?dbH1dvz0Q`1%UP7Y(GnT4C39!>N2r)|_gH@9A=0kYFcp zcUu+MeChNY2QmQx0fN4NUp;C0E-s#)-Vb$JRm^Vd{x^w@3L5iw+&B?9@Lb|H3PYG9 z+QNCH9v%&dQE=CKz@?F<5WS#PoK*MihtG;${e&A^v5qSYbd^%h zaPY;bAU!|7OGvaA`QvUl^+1E~g?~`Snhc3H8wcRwxu+R~{12>>dR9Y`NoQpAy z(+`4td%=V8i-d$-^kN#`0go$)*<>(1WneG^_=pxLgIq>XJG(6q)c_QEXm}WI(3}z< zpHIK{@yaz2D3^f(sB;dI7y<(c@$q1*_oC5g6iSVigo2{khc?79*Q^qGdRenuc+D&(d1WCEE*|?8W2ZCULT@y@Q(bW{ND-c^ZEj-t@#8MI?0Tm%d1>Yv zSGb}InWs#nL&t-IXQu|J=&i~x+fRUP=(xCH(ou1KbJi-3++By z0`{y$me(|7RZ`h#_ewI?ts7^0pfRjT&4i< zjvcT;8gz307h4j@PV>T(MOp|zdxZo9c1A2rR5S5turC2tCsX6n(68N<*NnTh5_&|+ z!CX`%OGjvEXO~^yHa;$En0`JS(h@klGI01qTCYUcy`NoF!0Tl)k&2=sXuEWTp``L| zOow-0L>;0JO}6i1v6b=s1CA{L0Y^-4F)LCu1cVV7V*AaBexNf8x!zSTX>i=qJs8e4 z-9UiuV``e7z->*ffOD|QMZ3d8lhm4GGBT*Z{X0LTzSvGmH#E{G3xPOfOeP%Om-Vg$ z@bA5q4pdqfB!J6fe-+@XhY|Jlr+G@57>DE!_V%2XjYoZT_P~I`Bkk?$8y|>-P1jX| zd|G|IC-7(Y_Vz#qs6UvR+e8ZFEX1FVfjHPNzgs9GaI4$@ZmK4?QczHIw6-EkRsKCv zJEUUf2kjnz(}I8?QR~`XO5Xr0*HGnz(h;hC=%A_(-W@CJzj`H}Le^*ViHL71gkQ|bd9pL^4qCpUr3$g%rGxBQTidxz0 z{xpUC9vR`|?cY(r%?9xjaNkR{=iwG0@Ryq}$m4K%OP?34E+B!>Oq3bl z+Fncys&m~ zf9)SEA)ajL93%^BS;DvG+swnMV=F9;j|Y6~s_ks!Bb18HKZ*WZrm^dZO$&ocxF9Ns zwXld(5gp0#6vxE-5c!ui+){TAm0dR(YGJ~ZrxJb&KVVBf48)}r5Oa=m4=oU+(gDf7(CWxjlZLlgisN!(wTvwFX2VAVgSJzfDo@ji&r)QZ>CzU%E(q+X1vFb$z5*c{st$Hx61ZtXW=;Z~4R zdi^>HSmKja(;D#QQ3FJf#ezh$%O;&RNiEmCw$?17!BGQOnvA%(d)RQg$*N5s7Z-37 z=T^OoGtfvTkjTy<<<%AQOmAP)YYBpt&WhjPfES!@cMt%xg+Eo4jgq@{hx)=ouccQo z?8nw;zhp3!?jR&3`)#74Y^tIQc6Oxx_U&%5j={E`<5IUH%|takx4Ajl-yg&`&HQc( zBndvsYuXOovZBqUTEQJ`deLY%Hz5K8<6I+LZ5v{?X1uL&C+wh0&CC$u;TfkZ&aOVc zi|>5C(;*6NJ$BRhSVu}sj09n_h6Z7mJCY_QCO$q*a5zj+QO?(Arp`Ge$gDSRZhroE zeS#JpAt>%eSy_v~yPHt4ovw2RYI>sw*1^Sv59F5k_^Qgv)=-6`K(Ud4f;7wtq6}0& zerJqot?oJ4C5Ti3_&a4~LIO73nm?11lOV@AF;NHj9ME<)M?&kbSyuitXA9Wf)QT89 zn2@XJ(Tdo`Y_FgBKfZ3^$%;XLl6x|bmU$%%MmeAP?LS$7M-)PFxTw=n=e^BiPW$(J z2ELmYm{Z3FPr3bVv@XMX-!bI1oB;k&`VS~F!~Z$g4jTnUBuLn8pf7^hl3sKh}4k63nA*5_w$*t2p-ECudTq>C2=jc&T! zGz6%3paDm-h@Tv8Hv{VjGzTEaElDalh-nZiVi*OaZMPxShZ%&6uH-_n9$Y zcLkVd$HN_0@3<0a0OH*s!~wQ>R4fbN{NYrO-b&^+;tpWLxsHrzXoc-04gg2VFcT0x zR#)ZJ(#i&puis2rO7l0ncVxNTkwVTPhR2CAdz@nR%E9NgD{8>|N3QQ1hG)`INW0UC-kO^#=io|^Q}B5-~y z#N%fxA2j0_m(e#5f8ElDRv5N4Mzd^#HO4LL&3_w`khQ3>{ zkjVizXFIfiBL|udh>~EZB_JOe{BSk9>!W^T5)+N}#V0Dx!yhL~vYQ&*2!3-aTU$q7 z-USE=2Mrb^4j-|oBVFHs&;KHw>iZ830ihzKit&u*rCb*ktD%26>a!nq7vItB?(Y|E z2LP$>PV_PwFsJ3ks8DKjcYnWX50`d{nq!I)HAqOXJ~Om1H2gc$cuo_s1Ck>0G89Uh zWWb9Q0o3#*xmmA$cnF2E?vo$MBACvIne%g(hDYO*i6BqR#I;jAKmYygY<6$u*4ZYE zeIjvj!T8Z5)Es=8ofu5#jVXQ28eZ5cIkLL!&QSqsnA3SB<7(}R>+ z5R^vAoBui_?Ok5QMX>n8MmxQg2V(pB6{{l?mG6>rqdF|c3%~3UpK`JkB7gn*#wOtO zT!gN*t8>+~k=lpsu#f*RDgx-yIAF#W+*xv1{#SmQ7WLY|AaSANR8Y{tSFK3j+ZAk6 z_r%3*-xFlMI7^{4i}?QJCzF$XKG1)!f0p+DkDzw?T?J0!f$U$_Z9LiPpmvnB1X|Xu z`&m2f8sn~%o>1t_%#Tzb%)%N|Nx6_rylENN<8GXbtxH^yvU7OThYSZ_ko^FzJui2se13 z+?VfZ;ye%mXp!e8CLTRYK{4C+^xT-mHq?*7KnW>K>HJx`ZC+{$2HA9Xb(Tl;kFO2a0|cJpj21tj|xh7bMnyK;|Kuc|kYU*8k$yghh!tbdOd zw>Oa9&DP61hqpd&?%=t9t*9y0?z1^85aM`51^Of|MZTrW@%7-GDSG-6$mulF}k2ARsL*-5?-c z7A-9xEwN$K-E}6P@A;i`W88Dcxc9H~42J_Z!hZI8)|zY1x#oPmKf-2+_sqp5|M-Vl z_b)XX8tN!PXkv*$N0U5Yn>ahx4H#;QoBpsq~E;!+5yLEkrqIr4Ck z8l273ZTYl(Rb38k2i?KQEC0L_YwK^#$w}j&iNtbr>|%-ki1+Np%u0viv4_QH8$wAIWDdy_wur#S9Iv^VNVekFR6n`k;!a`sH-OUG(+}(iF{Y;q4Q4h z*2U0luCn~a$+R?_7{Lat;!~9;qa?|uW4|G_()X<(uy|=Kwm!DJw3PSmWTWmU)>_Bh zN36tEw))~-_EaJ;#|#b0lmvA%Oqt&PvlSMFbC-_c-g2bk0p(;{cY>H}=_*{PCZfQbC!QlBBT9>eqQ_pIhJR zZC)B;^Kx9+oCrAj`|Z|j{rJY9^7zPS-kF(+Whg)lMnhe0Czxt?1$tLXXrDT@FHt;G?QN0#o7KLH!tt< zK+ACu)v2Rn+vd7>UY7)_XBajb2>0meOI@padU0J`yc;Vj8ymGXh8Y7R*Z(IAGd7O3tmUsGFGHGpOol)ChZkMt9lon1mG52}PDf<-jd4;jM-tXGZ| zf5Z6IB3Ri14%WdiFLftLJPEV3FgB(p#D@AoD2+-H=)c^h7SZdI)x)J5`1hAr*VxKF zKQtqNbYoi^E*xw`i0}8)l-DiFK+d$$W$)KVABi8Fwi5yg3d95igODjXw!MY%Xt3q% zRDNg?8r}A)r(JwVbGKvs{IvBZ@OqA;%eh)=Ud2a{FDY84`5axWPP*wuO9M@<;~#&# z2NN5ZN)`iBj1yX9PY+h6eW+&UGL4LakxV*Ok%3JX-rhR|%E^pO7K6MhxuVo#6m%(an%?(_ zk-kBa5m%=i7k=fJ@U?8b#=tmB7&~I{|G=gzXJw_%>her~@-Bg+$zYCdZ0u|ayM<}? z>y_bwnI93WQ~Lc~W31W^&QlFVtE)NTcPwmda%I%m2`QhUJqeKERHZj@L~9&OXTr$X zC@2Q1_&QKsVbh+fcobeW@kD*CW0g{wPblP-OY`!V(Caw`g~9`aEKkCOa!Ph=>_hKe z=4e7kN+w0+>RmN|wos_Ads-=)(l-E(G6LZQtt{h%nxd-%)g z+W`mH;0g;V&iyBNc&>%^f%+Z{jE{GY|MNwuGrB`Pg zUwAIW^4sRt;Fhou@KpZJZj(jV`hEM8?z*_w8Wxw8bwg;PqvOiajD1QU?~;?L1J=(nf*RSKIf<9v=p5JkJ+uv>o zhK1=j{*t3D(E9w~>rkw!Ivu@#O}*|N3d@U@dn5PQuz4Oyg?+N~2t!v`UX{)_d|VC2 zu~+ord86eJ4pK%Z(U3}gp{xZ}j)iF4fLSG(;XohFX_H8H#>FK2^*LT-UdDmo<+FNo zQ>5?W92FmReBAR}4cEiN5oaSkj}YbYUClPbu(efaeqO=cBB9A`=i!~8z3;cCOiiP8 zb#m+`1b$EGy}I(Ni{r$g=~U9gLq)MWdTFWbN8o57YkPmc(b0C_#6c6Ema<^NZ0*IXCbb8B@5d;cKWXF0Cq*6eN~g#Xn_qda7M= z`cI_tGgk}`Xi(5skJaM4PRAtsRGUf6F-OC6iP^EQ)Jfk}IyWUOq?{nwXk#K_Y&gyd z)k(n7yjob2s#BGtl#NSa$$;OYp(#E(l?wTOf43d?lQYM!7(KaZcbe=GP3bRmTo2y2 zwpwUwZyEYf5L4LXk{5N?W;G@!-z1FXaw&>N9@o6;A&iZR=6)>ptSggt{61+1BxPq% zsAyr~=&mk?QbQ^>JT2xntLa3Y<*nCoaY{LPF@K+vISXF9G5%CdPPT*gNOG+dF(%pR zvKg!CS*lm-aUJeA=#F|nS||kp1$c*U&(CE&>gRLQLhiAW2zXRgpHg@?(&D!W3G3n^ z&3bmfe11+xSIe1j8`)l@Z4l4F?|J6z%L=8%eJ!CIJ(+*)wFYx)6%)ArZup2FtdwSN zlLiLuaC1GWsj**|ii)J6kPdg!YdVFbj;8wX<%E+6dIH&!4g=e1%FOBBb;pInBHeo} zHT4d+U%i^4rMsD<=$OR4_+43?XeBaTDNBV}v~jlOUL%~l|FLe(dltSjO!O?KER;7R zi}qWU4X5?~{&nO*CHdUc!%XJdClki6eB?H{;A$rZH4EON>U8rL8i3T{Gh7JHUAG3!kv5V z(Qz@ff67g3R&P}#C81VFrwHh4{DY{9iq~Rr2P=7b2NzzS?`f{7D%ZBbj9uW%|3%B* z<9jDM+uR4If5~zu?ZUt5Z2yb}Dk*H0#RQ)({HhqQie365-Dxsy@K75I#SqV~LFiQx8Jqpxh+JGfORT`v>l` z^K%hL$DA}OI9p&0k+ZN!SYPUhMOoN%v$Lm4K4ZE#+vwZ07mM$L!*|a$-iw8WC1&Y! zbTT)08!UkHUBgP+ z!BC6?X%kzj5k&DrK`Y*V`8S`>{oY-t|N3#LdWl#XT;yrJkQQ$&^*8Q!hNtr z9~p4lbq!xdt<&e+@q+vO;@s|mRQBnnL=19%qPB@Jw%j<#=#Ep*=qLdzo3<#`yHw9T zbrPv;>v7`D@>D}lPDxb#?ePmfZsXw*pH>}TQ^H`PZI>s{NHCr!W-62?-Ku@60paFk8bAtI)SpLlmSygUZh zCk*JP2ahLpzbyG|OcwrmQeox>&oGunxn0G{M$yLHQ6w{Sjggs--!-G|O+!O4VJtq8 zv#U$c{s`V0&5-^#wAaN!vxL(ajp^kMETTl1Ye<09C}yU`Y`j%buA+dIpTG3fd+G0U z1XZn(RQh)h&60-4SiuplaoGxK>rb$bw&h!vIG2`){6Bmo8QN(PKcX#d)X#8;Rzlw` z9V)cTD_VrZEaoX=bAA1RMh_MO0{yu;{r&ag)#a$fPfuxNW$fwvJ$Dp+kwRW9pM?S~ z6_0bTqJ~e`gdZ18i{vUkKSZdm2S)T~SyR5S^9MC8Cp*yym>ZZhwXq6GDzuzp8 z?;?87CV!XyyP6H^e)kR2-@N_B#r`3KKdd`v=We{v=%ttXf&w3JV8RK%i(%8mqc$s8 z-+Pvsp4T%EQp5(oOw&M3dP7-k^!{2QGrO&#g45o96@0PgMY?;Hx5a45kAu!1@6Mtx z2gW@PKE{T4rLBYJ3tdl{cQ^=IVUH^a|5Vx^&mWrj3=(w5QV45ga_MXCN-t!~7pyET zzRbW?i_AN%T@<aTRW>+PA@o-%%-D0t)oN~JG zu~PW#@8!-;7bI4M>&5*HLo3Ui?yc4JoSu|IGVWGcMyEgZ)efhxU-Bh=GvjUzcOI*+ z=HeUn#dBEK^Kw0yJfZ#49Ef(Wd?x0I_M#H#)5#T83A6xrEP{Y&Zd!$@(#7U(bjL^j z-jN5UeXcj;vSUu=k9|-t^YM|1N%cfi;}a87SdpR?DR{_f=QblwEmq9vj^|vYw=pBT zHF6n@8SA}tC&niqNNNx`@5O9{lBhp!c9aurA`7Xy?%^

            u*x5 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%0AwBnSZsTsm@a)BtTM4vlz+_iuL8qqJft!6 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

            |)Kb?cvaJHabMW|A`Ip!jC|TQ}A= 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 Pr_b)H>)!sTY90PxrGr6a diff --git a/packages/muelu/doc/Tutorial/tex/pics/tut1_7.png b/packages/muelu/doc/Tutorial/tex/pics/tut1_7.png deleted file mode 100644 index 3a5d21439b4586910c4c0883c742826fcc9a006d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 66644 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�nF}u0Cno@wE9?*dw0)r6UoAc<=BjG{%f5d(R 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

            ^fnGjBc<%WxM5hf^+^5PcG;O`@IV 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%0A$w+In4m|`?Qva# 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 PsnBgLJ&1', 'r') - text = pipe.read() - sts = pipe.close() - if sts is None: sts = 0 - if text[-1:] == '\n': text = text[:-1] - return sts, text - - -def deleteDir(path): - """deletes the path entirely""" - cmd = "rm -rf "+path - result = getstatusoutput(cmd) - if(result[0]!=0): - raise RuntimeError(result[1]) - -def createDir(path): - """deletes the path entirely""" - cmd = "mkdir "+path - result = getstatusoutput(cmd) - if(result[0]!=0): - raise RuntimeError(result[1]) - -def runCommand(cmd): - """deletes the path entirely""" - result = getstatusoutput(cmd) - #if(result[0]!=0): - # raise RuntimeError(result[1]) - return result[1] - -def clearWindow(): - os.system('cls' if os.name == 'nt' else 'clear') - -def waitForKey(): - os.system('read -s -n 1 -p "Press any key to continue..."') - print - -def is_number(s): - try: - float(s) - return True - except ValueError: - return False - -# some colors -class bcolors: - HEADER = '\033[95m' - OKBLUE = '\033[94m' - OKGREEN = '\033[92m' - OKDARKGREEN = '\033[32m' - WARNING = '\033[93m' - FAIL = '\033[91m' - ENDC = '\033[0m' - -def disable(self): - self.HEADER = '' - self.OKBLUE = '' - self.OKGREEN = '' - self.OKDARKGREEN = '' - self.WARNING = '' - self.FAIL = '' - self.ENDC = '' - -def print_part_output(filenum,filenameformat,line): - filename = filenameformat.replace('#',str(filenum) ) - fout=open(filename,'w') - fout.write(line) - fout.close - -def splitfileintofragments(inputfile,splittingtxt): - - filenameformat = inputfile + '_#.fragment' - file = open( inputfile ) - lines=file.read().split(splittingtxt) - - bLeadingLines = True - - for i in range(0,len( lines ) ): - line = lines[i] - if not line.strip(): - continue - else: - print_part_output( i+1 , filenameformat, line ) - - # move fragment files to this folder - runCommand("mv ../src/*.fragment .") - - -def runXMLfile(xmlfile, executable): - # run simple easy input xml deck test (10 multigrid levels) - cmd = "mpirun -np 2 ../src/"+executable+" --xml=../src/xml/"+xmlfile+ ".xml > "+xmlfile+".txt" - runCommand(cmd) - if os.path.isfile(xmlfile+".txt") and os.access(xmlfile+".txt", os.R_OK): - splitfileintofragments(xmlfile+'.txt','========================================================') - splitfileintofragments(xmlfile+'.txt_3.fragment','--------------------------------------------------------------------------------') - print xmlfile + bcolors.OKGREEN+" OK"+bcolors.ENDC - #runCommand("rm s1_easy.txt") - else: - print xmlfile + bcolors.FAIL+" Failure"+bcolors.ENDC - bAllDataPrepared = False # some data are missing - runCommand("rm " + xmlfile + ".txt") - -################################# MAIN routine -if __name__ == '__main__': - - bAllDataPrepared = True # set to false if something is missing to generate pdf file - - print bcolors.OKDARKGREEN + "Prepare files... " + bcolors.ENDC - - if not os.path.isfile("../src/MueLu_Challenge_XML.exe") or not os.access("../src/MueLu_Challenge_XML.exe", os.R_OK): - print bcolors.FAIL+"Failure 1: Could not copy executables from trilinos repository"+bcolors.ENDC - print "You have to run the script in the binary folder. Make sure that the executables in the doc/Tutorial/src folder are built." - bAllDataPrepared = False # some data are missing - - if not os.path.isfile("../src/MueLu_tutorial_laplace2d.exe") or not os.access("../src/MueLu_tutorial_laplace2d.exe", os.R_OK): - print bcolors.FAIL+"Failure 2: Could not copy executables from trilinos repository"+bcolors.ENDC - bAllDataPrepared = False # some data are missing - - if not os.path.isfile("../src/MueLu_tutorial_recirc2d.exe") or not os.access("../src/MueLu_tutorial_recirc2d.exe", os.R_OK): - print bcolors.FAIL+"Failure 3: Could not copy executables from trilinos repository"+bcolors.ENDC - bAllDataPrepared = False # some data are missing - - # here starts the preparation script - - #print bcolors.OKDARKGREEN + "Extract version number from git repository... " + bcolors.ENDC - ## create version file - cmd = "rm version.txt" - runCommand(cmd) - #cmd = "git log --pretty=format:'%h' -n 1 > version.txt" - #runCommand(cmd) - cmd = "echo 'unknown version' > version.txt" - runCommand(cmd) - - print bcolors.OKDARKGREEN + "Split source files in src folder for inclusion in pdf... " + bcolors.ENDC - # split cpp file for first example - splitfileintofragments('../src/laplace2d.cpp','// TUTORIALSPLIT ===========================================================') - - # split cpp file for ML interface example - splitfileintofragments('../src/MLParameterList.cpp','// TUTORIALSPLIT ===========================================================') - - splitfileintofragments('../src/ScalingTestParamList.cpp','//============================================ SPLIT') - splitfileintofragments('../src/ScalingTest.cpp','// USER GUIDE ') - - print bcolors.OKDARKGREEN + "Run test examples to include results in pdf... " + bcolors.ENDC - # run simple easy input xml deck test - cmd = "mpirun -np 2 ../src/MueLu_tutorial_laplace2d.exe --nx=50 --ny=50 --xml=../src/xml/s1_easy.xml > s1_easy.txt" - runCommand(cmd) - - if os.path.isfile("s1_easy.txt") and os.access("s1_easy.txt", os.R_OK): - splitfileintofragments('s1_easy.txt','========================================================') - splitfileintofragments('s1_easy.txt_3.fragment','--------------------------------------------------------------------------------') - print "s1_easy.txt" + bcolors.OKGREEN+" OK"+bcolors.ENDC - #runCommand("rm s1_easy.txt") - else: - print "s1_easy.txt" + bcolors.FAIL+" Failure"+bcolors.ENDC - bAllDataPrepared = False # some data are missing - runCommand("rm s1_easy.txt") - - runXMLfile("s1_easy_10levels", "MueLu_tutorial_laplace2d.exe") - runXMLfile("s1_easy_3levels_unsmoothed", "MueLu_tutorial_laplace2d.exe") - runXMLfile("s1_easy_3levels_smoothed", "MueLu_tutorial_laplace2d.exe") - - runXMLfile("s1_easy_jacobi", "MueLu_tutorial_laplace2d.exe") - runXMLfile("s1_easy_jacobi2", "MueLu_tutorial_laplace2d.exe") - runXMLfile("s1_easy_exercise", "MueLu_tutorial_laplace2d.exe") - - runXMLfile("s2_adv_b", "MueLu_tutorial_laplace2d.exe") - runXMLfile("s2_adv_c", "MueLu_tutorial_laplace2d.exe") - - runXMLfile("s3a", "MueLu_tutorial_recirc2d.exe") - runXMLfile("s3b", "MueLu_tutorial_recirc2d.exe") - runXMLfile("s3b1", "MueLu_tutorial_recirc2d.exe") - runXMLfile("s3b2", "MueLu_tutorial_recirc2d.exe") - runXMLfile("s3b3", "MueLu_tutorial_recirc2d.exe") - - runXMLfile("s5a", "MueLu_tutorial_laplace2d.exe") - - # run rebalancing example - cmd = "mpirun -np 4 ../src/MueLu_tutorial_laplace2d.exe --nx=300 --ny=300 --xml=../src/xml/s5a.xml > s5a.txt" - runCommand(cmd) - if os.path.isfile("s5a.txt") and os.access("s5a.txt", os.R_OK): - splitfileintofragments('s5a.txt','========================================================') - splitfileintofragments('s5a.txt_3.fragment','--------------------------------------------------------------------------------') - print "s5a.txt " + bcolors.OKGREEN+"OK"+bcolors.ENDC - else: - print "s5a.txt " + bcolors.FAIL+"Failure"+bcolors.ENDC - bAllDataPrepared = False # some data are missing - runCommand("rm s5a.txt") - - print bcolors.OKDARKGREEN + "Run LaTeX to generate PDF... " + bcolors.ENDC - print bcolors.WARNING + "If the script stops here you can skip the step by pressing CTRL+C and run \"pdflatex main.tex\" by hand to fix the errors " + bcolors.ENDC - # generate pdf for tutorial - if bAllDataPrepared == True: - runCommand("pdflatex main.tex") - if os.path.isfile("main.pdf") and os.access("main.pdf", os.R_OK): - print bcolors.WARNING+"Success"+bcolors.ENDC - else: - print bcolors.FAIL+"Failure"+bcolors.ENDC - - else: - print bcolors.FAIL+"Cannot generate pdf file due to missing data."+bcolors.ENDC - - # clean up - print bcolors.OKDARKGREEN + "Clean up files... " + bcolors.ENDC - #runCommand("rm *.fragment *.out *.txt") - #runCommand("mv main.pdf muelu_tutorial.pdf") - - print bcolors.OKDARKGREEN + "Finished. " + bcolors.ENDC diff --git a/packages/muelu/doc/Tutorial/tex/s1_easy.txt b/packages/muelu/doc/Tutorial/tex/s1_easy.txt deleted file mode 100644 index 3adb4d23d397..000000000000 --- a/packages/muelu/doc/Tutorial/tex/s1_easy.txt +++ /dev/null @@ -1 +0,0 @@ -sh: ../src/MueLu_tutorial_laplace2d.exe: No such file or directory diff --git a/packages/muelu/doc/Tutorial/tex/version.txt b/packages/muelu/doc/Tutorial/tex/version.txt deleted file mode 100644 index 8801345759bb..000000000000 --- a/packages/muelu/doc/Tutorial/tex/version.txt +++ /dev/null @@ -1 +0,0 @@ -bc8757e \ No newline at end of file diff --git a/packages/muelu/example/ParameterList/CMakeLists.txt b/packages/muelu/example/ParameterList/CMakeLists.txt index 120eb07c3d6b..93576165d912 100644 --- a/packages/muelu/example/ParameterList/CMakeLists.txt +++ b/packages/muelu/example/ParameterList/CMakeLists.txt @@ -7,8 +7,7 @@ TRIBITS_INCLUDE_DIRECTORIES(${CMAKE_CURRENT_SOURCE_DIR}) # # -IF((${PACKAGE_NAME}_ENABLE_Ifpack2 AND ${PACKAGE_NAME}_ENABLE_Amesos2) OR - (${PACKAGE_NAME}_ENABLE_Epetra AND ${PACKAGE_NAME}_ENABLE_EpetraExt AND ${PACKAGE_NAME}_ENABLE_Ifpack AND ${PACKAGE_NAME}_ENABLE_Amesos)) +IF((${PACKAGE_NAME}_ENABLE_Ifpack2 AND ${PACKAGE_NAME}_ENABLE_Amesos2)) # # MLParameterList @@ -34,17 +33,5 @@ IF(${PACKAGE_NAME}_ENABLE_Ifpack2 AND ${PACKAGE_NAME}_ENABLE_Amesos2) # XPETRA_ADD_TEST_TPETRA(MLParameterList 1-4) ENDIF() -IF(${PACKAGE_NAME}_ENABLE_Epetra AND ${PACKAGE_NAME}_ENABLE_EpetraExt AND ${PACKAGE_NAME}_ENABLE_Ifpack AND ${PACKAGE_NAME}_ENABLE_Amesos) - XPETRA_ADD_TEST_EPETRA(MLParameterList 1-4) - - TRIBITS_ADD_TEST( - MLParameterList - NAME MLParameterList_Repartition-Epetra - ARGS "--xml=ml_RebalancedParameterList.xml --linAlgebra=Epetra --muelu2=0" - NUM_MPI_PROCS 4 - COMM serial mpi - ) -ENDIF() - # TODO: add a test with the --xml option diff --git a/packages/muelu/example/advanced/levelwrap/CMakeLists.txt b/packages/muelu/example/advanced/levelwrap/CMakeLists.txt index 54b68f47f176..925fdc2b5ee0 100644 --- a/packages/muelu/example/advanced/levelwrap/CMakeLists.txt +++ b/packages/muelu/example/advanced/levelwrap/CMakeLists.txt @@ -5,8 +5,7 @@ TRIBITS_INCLUDE_DIRECTORIES(${CMAKE_CURRENT_SOURCE_DIR}/../../../test/unit_tests # Executables # -IF((${PACKAGE_NAME}_ENABLE_Ifpack2 AND ${PACKAGE_NAME}_ENABLE_Amesos2) OR - (${PACKAGE_NAME}_ENABLE_Epetra AND ${PACKAGE_NAME}_ENABLE_EpetraExt AND ${PACKAGE_NAME}_ENABLE_Ifpack AND ${PACKAGE_NAME}_ENABLE_Amesos)) +IF((${PACKAGE_NAME}_ENABLE_Ifpack2 AND ${PACKAGE_NAME}_ENABLE_Amesos2)) @@ -27,6 +26,3 @@ INCLUDE(XpetraAddTest) IF(${PACKAGE_NAME}_ENABLE_Ifpack2 AND ${PACKAGE_NAME}_ENABLE_Amesos2) XPETRA_ADD_TEST_TPETRA(LevelWrap 4) ENDIF() -IF(${PACKAGE_NAME}_ENABLE_Epetra AND ${PACKAGE_NAME}_ENABLE_Ifpack AND ${PACKAGE_NAME}_ENABLE_Amesos) - XPETRA_ADD_TEST_EPETRA(LevelWrap 4) -ENDIF() diff --git a/packages/muelu/example/advanced/memory/CMakeLists.txt b/packages/muelu/example/advanced/memory/CMakeLists.txt index ba19d3a18596..077ac41aacbd 100644 --- a/packages/muelu/example/advanced/memory/CMakeLists.txt +++ b/packages/muelu/example/advanced/memory/CMakeLists.txt @@ -7,13 +7,6 @@ TRIBITS_ADD_EXECUTABLE_AND_TEST( SOURCES MueLu_MatrixDriver.cpp ) -IF (${PACKAGE_NAME}_ENABLE_Epetra) - TRIBITS_ADD_EXECUTABLE_AND_TEST( - Epetra1DLaplace - SOURCES Epetra1DLaplace.cpp MueLu_MemoryProfiler.cpp - ) -ENDIF() - TRIBITS_ADD_EXECUTABLE_AND_TEST( Tpetra1DLaplace SOURCES Tpetra1DLaplace.cpp MueLu_MemoryProfiler.cpp diff --git a/packages/muelu/example/advanced/multiplesolve/CMakeLists.txt b/packages/muelu/example/advanced/multiplesolve/CMakeLists.txt index 387d6d579c16..b8171c3eb1cf 100644 --- a/packages/muelu/example/advanced/multiplesolve/CMakeLists.txt +++ b/packages/muelu/example/advanced/multiplesolve/CMakeLists.txt @@ -5,8 +5,7 @@ TRIBITS_INCLUDE_DIRECTORIES(${CMAKE_CURRENT_SOURCE_DIR}/../../../test/unit_tests # Executables # -IF((${PACKAGE_NAME}_ENABLE_Ifpack2 AND ${PACKAGE_NAME}_ENABLE_Amesos2) OR - (${PACKAGE_NAME}_ENABLE_Epetra AND ${PACKAGE_NAME}_ENABLE_EpetraExt AND ${PACKAGE_NAME}_ENABLE_Ifpack AND ${PACKAGE_NAME}_ENABLE_Amesos)) +IF((${PACKAGE_NAME}_ENABLE_Ifpack2 AND ${PACKAGE_NAME}_ENABLE_Amesos2)) TRIBITS_ADD_EXECUTABLE( @@ -51,14 +50,3 @@ IF(${PACKAGE_NAME}_ENABLE_Ifpack2 AND ${PACKAGE_NAME}_ENABLE_Amesos2) COMM serial mpi ) ENDIF() -IF (${PACKAGE_NAME}_ENABLE_Epetra AND ${PACKAGE_NAME}_ENABLE_Ifpack AND ${PACKAGE_NAME}_ENABLE_Amesos) - XPETRA_ADD_TEST_EPETRA(FixedMatrixPattern 4) - XPETRA_ADD_TEST_EPETRA(StandardReuse 4) - MUELU_ADD_SERIAL_AND_MPI_TEST( - ReuseSequence - NAME "ReuseSequenceEpetra" - ARGS "--linAlgebra=Epetra --xml=reuse_seq.xml --nx=40 --ny=40 --dim=2" - NUM_MPI_PROCS 1 - COMM serial mpi - ) -ENDIF() diff --git a/packages/muelu/example/basic/CMakeLists.txt b/packages/muelu/example/basic/CMakeLists.txt index 01f4b61d164e..5df8a82c66a8 100644 --- a/packages/muelu/example/basic/CMakeLists.txt +++ b/packages/muelu/example/basic/CMakeLists.txt @@ -11,12 +11,6 @@ IF (${PACKAGE_NAME}_ENABLE_Ifpack2 AND ${PACKAGE_NAME}_ENABLE_Amesos2) SET(${PACKAGE_NAME}_HAVE_TPETRA_SOLVER_STACK YES) ENDIF() -IF (${PACKAGE_NAME}_ENABLE_Epetra AND ${PACKAGE_NAME}_ENABLE_EpetraExt AND ${PACKAGE_NAME}_ENABLE_Ifpack AND ${PACKAGE_NAME}_ENABLE_Amesos) - SET(${PACKAGE_NAME}_HAVE_EPETRA_SOLVER_STACK YES) -ENDIF() - - - IF (${PACKAGE_NAME}_HAVE_TPETRA_SOLVER_STACK) TRIBITS_ADD_EXECUTABLE( Simple @@ -50,7 +44,7 @@ ENDIF() # Stratimikos example # IF(${PACKAGE_NAME}_ENABLE_Stratimikos AND ${PACKAGE_NAME}_ENABLE_Thyra) - + # build executable TRIBITS_ADD_EXECUTABLE( Stratimikos @@ -77,18 +71,6 @@ IF(${PACKAGE_NAME}_ENABLE_Stratimikos AND ${PACKAGE_NAME}_ENABLE_Thyra) mg-gpu.xml ) - IF (${PACKAGE_NAME}_HAVE_EPETRA_SOLVER_STACK) - - MUELU_ADD_SERIAL_AND_MPI_TEST( - Stratimikos - NAME Stratimikos_Epetra - ARGS "--xml=stratimikos_ParameterList2.xml --linAlgebra=Epetra" - NUM_MPI_PROCS 4 - COMM serial mpi - ) - - ENDIF() - IF (${PACKAGE_NAME}_HAVE_TPETRA_SOLVER_STACK) MUELU_ADD_SERIAL_AND_MPI_TEST( @@ -98,7 +80,7 @@ IF(${PACKAGE_NAME}_ENABLE_Stratimikos AND ${PACKAGE_NAME}_ENABLE_Thyra) NUM_MPI_PROCS 4 COMM serial mpi ) - + ENDIF() ENDIF() diff --git a/packages/muelu/research/q2q1/CMakeLists.txt b/packages/muelu/research/q2q1/CMakeLists.txt index 8e15e0f92382..cea536852fad 100644 --- a/packages/muelu/research/q2q1/CMakeLists.txt +++ b/packages/muelu/research/q2q1/CMakeLists.txt @@ -5,8 +5,7 @@ TRIBITS_INCLUDE_DIRECTORIES(${CMAKE_CURRENT_SOURCE_DIR}) IF ( NOT MueLu_ENABLE_EXPLICIT_INSTANTIATION OR (MueLu_ENABLE_EXPLICIT_INSTANTIATION AND MueLu_TPETRA_INST_INT_INT) ) IF (${PACKAGE_NAME}_ENABLE_ThyraTpetraAdapters AND ${PACKAGE_NAME}_ENABLE_Teko) - IF ((${PACKAGE_NAME}_ENABLE_Ifpack2 AND ${PACKAGE_NAME}_ENABLE_Amesos2) OR - (${PACKAGE_NAME}_ENABLE_Epetra AND ${PACKAGE_NAME}_ENABLE_EpetraExt AND ${PACKAGE_NAME}_ENABLE_Ifpack AND ${PACKAGE_NAME}_ENABLE_Amesos)) + IF ((${PACKAGE_NAME}_ENABLE_Ifpack2 AND ${PACKAGE_NAME}_ENABLE_Amesos2)) TRIBITS_ADD_EXECUTABLE( Q2Q1 @@ -33,11 +32,6 @@ IF ( NOT MueLu_ENABLE_EXPLICIT_INSTANTIATION OR (MueLu_ENABLE_EXPLICIT_INSTANTIA # XPETRA_ADD_TEST_TPETRA(Q2Q1 1) # ENDIF() - # IF (${PACKAGE_NAME}_ENABLE_Epetra AND ${PACKAGE_NAME}_ENABLE_Ifpack AND ${PACKAGE_NAME}_ENABLE_Amesos AND ${PACKAGE_NAME}_ENABLE_ThyraTpetraAdapters AND ${PACKAGE_NAME}_ENABLE_Teko) - # # Disabling Epetra as Vanka is unavailable - # # XPETRA_ADD_TEST_EPETRA(Q2Q1 1) - # ENDIF() - ENDIF() ENDIF() diff --git a/packages/muelu/research/semicoarsening/CMakeLists.txt b/packages/muelu/research/semicoarsening/CMakeLists.txt index ba8304f6107e..0fe1b80837ac 100644 --- a/packages/muelu/research/semicoarsening/CMakeLists.txt +++ b/packages/muelu/research/semicoarsening/CMakeLists.txt @@ -1,8 +1,7 @@ TRIBITS_INCLUDE_DIRECTORIES(${CMAKE_CURRENT_SOURCE_DIR}) TRIBITS_INCLUDE_DIRECTORIES(${CMAKE_CURRENT_SOURCE_DIR}/../../test/unit_tests) -IF((${PACKAGE_NAME}_ENABLE_Ifpack2 AND ${PACKAGE_NAME}_ENABLE_Amesos2) OR - (${PACKAGE_NAME}_ENABLE_Epetra AND ${PACKAGE_NAME}_ENABLE_EpetraExt AND ${PACKAGE_NAME}_ENABLE_Ifpack AND ${PACKAGE_NAME}_ENABLE_Amesos)) +IF((${PACKAGE_NAME}_ENABLE_Ifpack2 AND ${PACKAGE_NAME}_ENABLE_Amesos2)) TRIBITS_ADD_EXECUTABLE( SemiCoarsening @@ -14,4 +13,3 @@ IF((${PACKAGE_NAME}_ENABLE_Ifpack2 AND ${PACKAGE_NAME}_ENABLE_Amesos2) OR SOURCE_FILES driver1.xml ) ENDIF() - diff --git a/packages/muelu/research/tawiesn/aria/CMakeLists.txt b/packages/muelu/research/tawiesn/aria/CMakeLists.txt index 7a4541b6f53e..deae39c11ab8 100644 --- a/packages/muelu/research/tawiesn/aria/CMakeLists.txt +++ b/packages/muelu/research/tawiesn/aria/CMakeLists.txt @@ -3,8 +3,7 @@ TRIBITS_INCLUDE_DIRECTORIES(${CMAKE_CURRENT_SOURCE_DIR}) - IF ((${PACKAGE_NAME}_ENABLE_Ifpack2 AND ${PACKAGE_NAME}_ENABLE_Amesos2) OR - (${PACKAGE_NAME}_ENABLE_Epetra AND ${PACKAGE_NAME}_ENABLE_Ifpack AND ${PACKAGE_NAME}_ENABLE_Amesos)) + IF ((${PACKAGE_NAME}_ENABLE_Ifpack2 AND ${PACKAGE_NAME}_ENABLE_Amesos2)) TRIBITS_ADD_EXECUTABLE( AriaDriver diff --git a/packages/muelu/research/tawiesn/crada/CMakeLists.txt b/packages/muelu/research/tawiesn/crada/CMakeLists.txt index 4c6782db0b87..b14f33b588b9 100644 --- a/packages/muelu/research/tawiesn/crada/CMakeLists.txt +++ b/packages/muelu/research/tawiesn/crada/CMakeLists.txt @@ -4,8 +4,7 @@ TRIBITS_INCLUDE_DIRECTORIES(${CMAKE_CURRENT_SOURCE_DIR}/../../../test/unit_tests - IF ((${PACKAGE_NAME}_ENABLE_Ifpack2 AND ${PACKAGE_NAME}_ENABLE_Amesos2) OR - (${PACKAGE_NAME}_ENABLE_Epetra AND ${PACKAGE_NAME}_ENABLE_Ifpack AND ${PACKAGE_NAME}_ENABLE_Amesos)) + IF ((${PACKAGE_NAME}_ENABLE_Ifpack2 AND ${PACKAGE_NAME}_ENABLE_Amesos2)) TRIBITS_ADD_EXECUTABLE( CradaDriver diff --git a/packages/muelu/src/CMakeLists.txt b/packages/muelu/src/CMakeLists.txt index 99b81b1109c6..c924bcd253f4 100644 --- a/packages/muelu/src/CMakeLists.txt +++ b/packages/muelu/src/CMakeLists.txt @@ -59,9 +59,6 @@ TRIBITS_INCLUDE_DIRECTORIES(${DIR}/Utils) TRIBITS_INCLUDE_DIRECTORIES(${DIR}/Utils/ForwardDeclaration) TRIBITS_INCLUDE_DIRECTORIES(${DIR}/../adapters/xpetra) TRIBITS_INCLUDE_DIRECTORIES(${DIR}/../adapters/tpetra) -IF (${PACKAGE_NAME}_ENABLE_Epetra) - TRIBITS_INCLUDE_DIRECTORIES(${DIR}/../adapters/epetra) -ENDIF() IF (${PACKAGE_NAME}_ENABLE_AmgX) TRIBITS_INCLUDE_DIRECTORIES(${DIR}/../adapters/amgx) ENDIF() @@ -92,7 +89,6 @@ FUNCTION(MUELU_PROCESS_ETI_TEMPLATE TEMPLATE_FILE_DIR ETI_CLASSES PROCESSED_FILE # Make sure that Tpetra actually defined these variables, even if they # are empty. - # TODO: workaround for Tpetra is disabled but Epetra is enabled? ASSERT_DEFINED(TpetraCore_ETI_SCALARS) ASSERT_DEFINED(TpetraCore_ETI_LORDS) ASSERT_DEFINED(TpetraCore_ETI_GORDS) @@ -122,15 +118,6 @@ FUNCTION(MUELU_PROCESS_ETI_TEMPLATE TEMPLATE_FILE_DIR ETI_CLASSES PROCESSED_FILE #MESSAGE("MueLu_ETI_GORDS = ${MueLu_ETI_GORDS}") #MESSAGE("MueLu_ETI_NODES = ${MueLu_ETI_NODES}") - # check whether both Epetra and Tpetra are enabled - SET(MueLu_ETI_EpetraGuards "") - SET(MueLu_ETI_EpetraGuards_END "") - IF (${PACKAGE_NAME}_ENABLE_Epetra) - # both Epetra and Tpetra are enabled. The Epetra instantiation needs to be guarded - SET(MueLu_ETI_EpetraGuards "#if ((defined(EPETRA_HAVE_OMP) && (!defined(HAVE_TPETRA_INST_OPENMP) || !defined(HAVE_TPETRA_INST_INT_INT))) || (!defined(EPETRA_HAVE_OMP) && (!defined(HAVE_TPETRA_INST_SERIAL) || !defined(HAVE_TPETRA_INST_INT_INT))))") - SET(MueLu_ETI_EpetraGuards_END "#endif") - ENDIF() - # loop over all ETI_CLASSES SET(SRCS "") FOREACH(CLASS ${ETI_CLASSES}) @@ -159,20 +146,6 @@ FUNCTION(MUELU_PROCESS_ETI_TEMPLATE TEMPLATE_FILE_DIR ETI_CLASSES PROCESSED_FILE string(TOUPPER "${CLASS_FILE_NAME}" UPPER_CASE_CLASS) string(REPLACE "CLASS_FILE_NAME" "${CLASS_FILE_NAME}" FINAL_FILE_NAME "${PROCESSED_FILE}") - # If Epetra is enabled, instantiate it on - # Note: no Epetra64 support in MueLu - # EpetraNode is defined in the template file depending on the enabled - # Kokkos nodes (either Serial or OpenMP) - IF (${PACKAGE_NAME}_ENABLE_Epetra) - IF(${SKIP_SCALAR_INSTANTIATION}) - CONFIGURE_FILE("${TEMPLATE_FILE_DIR}/MueLu_ETI_LO_GO_NO_Epetra.tmpl" ${FINAL_FILE_NAME}_Epetra.cpp) - SET(SRCS ${SRCS} ${FINAL_FILE_NAME}_Epetra.cpp) - ELSE() - CONFIGURE_FILE("${TEMPLATE_FILE_DIR}/MueLu_ETI_SC_LO_GO_NO_Epetra.tmpl" ${FINAL_FILE_NAME}_Epetra.cpp) - SET(SRCS ${SRCS} ${FINAL_FILE_NAME}_Epetra.cpp) - ENDIF() - ENDIF() - # Create the cpp file for all combinations of template parameters FOREACH(NT ${MueLu_ETI_NODES}) TPETRA_MANGLE_TEMPLATE_PARAMETER(NT_MANGLED "${NT}") diff --git a/packages/muelu/test/CMakeLists.txt b/packages/muelu/test/CMakeLists.txt index 637815343d2a..3e5b3914bf8d 100644 --- a/packages/muelu/test/CMakeLists.txt +++ b/packages/muelu/test/CMakeLists.txt @@ -26,7 +26,6 @@ IF(Xpetra_INT_LONG_LONG AND HAVE_MUELU_INST_DOUBLE_INT_LONGLONGINT) ENDIF() TRIBITS_ADD_TEST_DIRECTORIES(factories) TRIBITS_ADD_TEST_DIRECTORIES(maxwell) -TRIBITS_ADD_TEST_DIRECTORIES(navierstokes) TRIBITS_ADD_TEST_DIRECTORIES(contact) TRIBITS_ADD_TEST_DIRECTORIES(meshtying) if (NOT MUELU_VALGRIND_TESTING) @@ -35,9 +34,7 @@ if (NOT MUELU_VALGRIND_TESTING) # memory testing. TRIBITS_ADD_TEST_DIRECTORIES(paramlist) ENDIF() -TRIBITS_ADD_TEST_DIRECTORIES(permutation) TRIBITS_ADD_TEST_DIRECTORIES(profiling) -TRIBITS_ADD_TEST_DIRECTORIES(simple1D) TRIBITS_ADD_TEST_DIRECTORIES(viz) TRIBITS_ADD_TEST_DIRECTORIES(toggletransfer) TRIBITS_ADD_TEST_DIRECTORIES(perf_tests) diff --git a/packages/muelu/test/blockedtransfer/CMakeLists.txt b/packages/muelu/test/blockedtransfer/CMakeLists.txt index b1ee6371b26d..493d3f4b7c15 100644 --- a/packages/muelu/test/blockedtransfer/CMakeLists.txt +++ b/packages/muelu/test/blockedtransfer/CMakeLists.txt @@ -13,17 +13,6 @@ TRIBITS_ADD_EXECUTABLE( COMM serial mpi ) -IF (${PACKAGE_NAME}_ENABLE_Epetra AND ${PACKAGE_NAME}_ENABLE_EpetraExt AND ${PACKAGE_NAME}_ENABLE_Ifpack) - - TRIBITS_ADD_TEST( - BlockedTransfer - NAME "BlockedTransfer_Epetra" - ARGS "--linAlgebra=Epetra" - COMM serial mpi - ) - -ENDIF() - IF (${PACKAGE_NAME}_ENABLE_Ifpack2) TRIBITS_ADD_TEST( @@ -34,27 +23,3 @@ IF (${PACKAGE_NAME}_ENABLE_Ifpack2) ) ENDIF() - -# first ensure that these cmake boolean variables are defined -#ASSERT_DEFINED( -# ${PACKAGE_NAME}_ENABLE_Epetra -# ${PACKAGE_NAME}_ENABLE_EpetraExt -# ${PACKAGE_NAME}_ENABLE_Amesos -# ) - -#IF (${PACKAGE_NAME}_ENABLE_Epetra AND -# ${PACKAGE_NAME}_ENABLE_EpetraExt AND -# ${PACKAGE_NAME}_ENABLE_Amesos) - -#TRIBITS_ADD_EXECUTABLE_AND_TEST( -# TSIExample -# SOURCES tsiexample.cpp -# ARGS "" -# COMM serial mpi -# ) - -#TRIBITS_COPY_FILES_TO_BINARY_DIR(TSIExample_test_cp -#SOURCE_FILES TSImatrix.out TSIbvector.out nspvector.out -#) - -#ENDIF() diff --git a/packages/muelu/test/convergence/CMakeLists.txt b/packages/muelu/test/convergence/CMakeLists.txt index 0e3a81e40caf..fafbb1bf9fee 100644 --- a/packages/muelu/test/convergence/CMakeLists.txt +++ b/packages/muelu/test/convergence/CMakeLists.txt @@ -1,9 +1,7 @@ # Ensure that these cmake boolean variables are defined ASSERT_DEFINED( - ${PACKAGE_NAME}_ENABLE_Amesos ${PACKAGE_NAME}_ENABLE_Amesos2 ${PACKAGE_NAME}_ENABLE_Belos - ${PACKAGE_NAME}_ENABLE_Epetra ) # @@ -34,28 +32,6 @@ TRIBITS_ADD_EXECUTABLE( IF (${PACKAGE_NAME}_ENABLE_Belos) - IF (${PACKAGE_NAME}_ENABLE_Epetra AND ${PACKAGE_NAME}_ENABLE_EpetraExt AND - ${PACKAGE_NAME}_ENABLE_Ifpack AND ${PACKAGE_NAME}_ENABLE_Amesos) - - TRIBITS_ADD_TEST( - Convergence - NAME "ConvergenceEpetra" - ARGS "--linAlgebra=Epetra" - STANDARD_PASS_OUTPUT - NUM_MPI_PROCS 1 - COMM mpi serial - ) - TRIBITS_ADD_TEST( - Convergence - NAME "ConvergenceEpetra" - ARGS "--linAlgebra=Epetra" - STANDARD_PASS_OUTPUT - NUM_MPI_PROCS 4 - COMM mpi - ) - - ENDIF() - IF (${PACKAGE_NAME}_ENABLE_Ifpack2 AND ${PACKAGE_NAME}_ENABLE_Amesos2) TRIBITS_ADD_TEST( diff --git a/packages/muelu/test/helmholtz/CMakeLists.txt b/packages/muelu/test/helmholtz/CMakeLists.txt index f011c806f0a6..1edc728c86e3 100644 --- a/packages/muelu/test/helmholtz/CMakeLists.txt +++ b/packages/muelu/test/helmholtz/CMakeLists.txt @@ -1,9 +1,7 @@ # Ensure that these cmake boolean variables are defined ASSERT_DEFINED( - ${PACKAGE_NAME}_ENABLE_Amesos ${PACKAGE_NAME}_ENABLE_Amesos2 ${PACKAGE_NAME}_ENABLE_Belos - ${PACKAGE_NAME}_ENABLE_Epetra ${PACKAGE_NAME}_ENABLE_Zoltan2Core ) @@ -49,15 +47,6 @@ IF (${PACKAGE_NAME}_ENABLE_Zoltan2Core AND HAVE_MUELU_COMPLEX) COMM serial mpi ) - # TRIBITS_ADD_TEST( - # CreateOperator - # NAME "CreateOperatorEpetra" - # ARGS "--linAlgebra=Epetra" - # STANDARD_PASS_OUTPUT - # NUM_MPI_PROCS 1 - # COMM mpi serial - # ) - TRIBITS_ADD_TEST( Helmholtz1D NAME "Helmholtz1DSerial" diff --git a/packages/muelu/test/interface/CMakeLists.txt b/packages/muelu/test/interface/CMakeLists.txt index 79f27f1d2009..ab3861c9c789 100644 --- a/packages/muelu/test/interface/CMakeLists.txt +++ b/packages/muelu/test/interface/CMakeLists.txt @@ -1,9 +1,7 @@ # Ensure that these cmake boolean variables are defined ASSERT_DEFINED( - ${PACKAGE_NAME}_ENABLE_Amesos ${PACKAGE_NAME}_ENABLE_Amesos2 ${PACKAGE_NAME}_ENABLE_Belos - ${PACKAGE_NAME}_ENABLE_Epetra ${PACKAGE_NAME}_ENABLE_Zoltan2Core ) @@ -50,75 +48,6 @@ SET(${PACKAGE_NAME}_PARAMETERLISTINTERPRETERTEST_SINGLETHREAD " --kokkos-num-thr # results in not setting the value correctly. IF ( ( HAVE_GCC_ABI_DEMANGLE STREQUAL "1") OR ( HAVE_GCC_ABI_DEMANGLE STREQUAL "ON") ) - IF (${PACKAGE_NAME}_ENABLE_Epetra AND ${PACKAGE_NAME}_ENABLE_EpetraExt AND - ${PACKAGE_NAME}_ENABLE_Ifpack AND ${PACKAGE_NAME}_ENABLE_Amesos AND - HAVE_MUELU_INST_DOUBLE_INT_INT) - - string(CONCAT TEST_ARGS "--linAlgebra=Epetra" "${${PACKAGE_NAME}_PARAMETERLISTINTERPRETERTEST_SINGLETHREAD}") - - TRIBITS_ADD_TEST( - CreateOperator - NAME "CreateOperatorEpetra" - ARGS ${TEST_ARGS} - STANDARD_PASS_OUTPUT - NUM_MPI_PROCS 1 - COMM mpi serial - ) - TRIBITS_ADD_TEST( - CreateOperator - NAME "CreateOperatorEpetra" - ARGS ${TEST_ARGS} - STANDARD_PASS_OUTPUT - NUM_MPI_PROCS 4 - COMM mpi - ) - - IF(${PACKAGE_NAME}_ENABLE_Zoltan2Core) - - TRIBITS_ADD_TEST( - ParameterListInterpreter - NAME "ParameterListInterpreterEpetra" - ARGS ${TEST_ARGS} - STANDARD_PASS_OUTPUT - NUM_MPI_PROCS 1 - COMM mpi serial - ) - TRIBITS_ADD_TEST( - ParameterListInterpreter - NAME "ParameterListInterpreterEpetra" - ARGS ${TEST_ARGS} - STANDARD_PASS_OUTPUT - NUM_MPI_PROCS 4 - COMM mpi - ) - - string(CONCAT TEST_ARGS "--linAlgebra=Epetra --heavytests" "${${PACKAGE_NAME}_PARAMETERLISTINTERPRETERTEST_SINGLETHREAD}") - - # This test only runs on the dashboard, not at checkin. - TRIBITS_ADD_TEST( - ParameterListInterpreter - NAME "ParameterListInterpreterEpetraHeavy" - ARGS ${TEST_ARGS} - STANDARD_PASS_OUTPUT - NUM_MPI_PROCS 1 - COMM mpi serial - CATEGORIES CONTINUOUS - ) - - # This test only runs on the dashboard, not at checkin. - TRIBITS_ADD_TEST( - ParameterListInterpreter - NAME "ParameterListInterpreterEpetraHeavy" - ARGS ${TEST_ARGS} - STANDARD_PASS_OUTPUT - NUM_MPI_PROCS 4 - COMM mpi - CATEGORIES CONTINUOUS - ) - - ENDIF() - - ENDIF() IF(${PACKAGE_NAME}_ENABLE_Ifpack2 AND ${PACKAGE_NAME}_ENABLE_Amesos2) diff --git a/packages/muelu/test/longlong/CMakeLists.txt b/packages/muelu/test/longlong/CMakeLists.txt index fc1cb9b0d1b3..e751ae5a8f53 100644 --- a/packages/muelu/test/longlong/CMakeLists.txt +++ b/packages/muelu/test/longlong/CMakeLists.txt @@ -1,8 +1,6 @@ # Ensure that these cmake boolean variables are defined ASSERT_DEFINED( - ${PACKAGE_NAME}_ENABLE_Amesos ${PACKAGE_NAME}_ENABLE_Amesos2 - ${PACKAGE_NAME}_ENABLE_Epetra ${PACKAGE_NAME}_ENABLE_Zoltan2Core ) diff --git a/packages/muelu/test/maxwell/CMakeLists.txt b/packages/muelu/test/maxwell/CMakeLists.txt index 9e70bcd24624..6478f52f9d71 100644 --- a/packages/muelu/test/maxwell/CMakeLists.txt +++ b/packages/muelu/test/maxwell/CMakeLists.txt @@ -70,25 +70,6 @@ IF (${PACKAGE_NAME}_ENABLE_Belos) NUM_MPI_PROCS 2 ) - IF (${PACKAGE_NAME}_ENABLE_ML AND ${PACKAGE_NAME}_ENABLE_Epetra) - TRIBITS_ADD_TEST( - Maxwell3D - NAME "Maxwell3D-Tpetra-ML-RefMaxwell-list" - ARGS "--linAlgebra=Tpetra --xml=Maxwell_ML_MueLu.xml" - COMM serial mpi - NUM_MPI_PROCS 4 - ) - - TRIBITS_ADD_TEST( - Maxwell3D - NAME "Maxwell3D-Tpetra-ML-Maxwell1-list" - ARGS "--linAlgebra=Tpetra --precType=MueLu-Maxwell1 --xml=Maxwell_ML1_MueLu.xml" - COMM serial mpi - NUM_MPI_PROCS 4 - ) - - ENDIF() - IF (${PACKAGE_NAME}_INST_DOUBLE_INT_INT AND ${PACKAGE_NAME}_ENABLE_Stratimikos) TRIBITS_ADD_TEST( Maxwell3D @@ -102,56 +83,6 @@ IF (${PACKAGE_NAME}_ENABLE_Belos) ENDIF() ENDIF() - IF (${PACKAGE_NAME}_ENABLE_Epetra) - - TRIBITS_ADD_TEST( - Maxwell3D - NAME "Maxwell3D-Epetra" - ARGS "--linAlgebra=Epetra --reuse --xml=Maxwell.xml" - COMM serial mpi - NUM_MPI_PROCS 4 - ) - - IF (${PACKAGE_NAME}_ENABLE_Stratimikos) - TRIBITS_ADD_TEST( - Maxwell3D - NAME "Maxwell3D-Epetra-Stratimikos" - ARGS "--linAlgebra=Epetra --solverName=Stratimikos --reuse --xml=Maxwell.xml" - ARGS "--linAlgebra=Epetra --solverName=Stratimikos --reuse --xml=Maxwell3.xml" - COMM serial mpi - NUM_MPI_PROCS 4 - ) - ENDIF() - - IF (${PACKAGE_NAME}_ENABLE_ML) - - TRIBITS_ADD_TEST( - Maxwell3D - NAME "Maxwell3D-ML-RefMaxwell" - ARGS "--linAlgebra=Epetra --precType=ML-RefMaxwell --xml=Maxwell_ML.xml" - COMM serial mpi - NUM_MPI_PROCS 4 - ) - - TRIBITS_ADD_TEST( - Maxwell3D - NAME "Maxwell3D-ML-Maxwell1" - ARGS "--linAlgebra=Epetra --precType=ML-Maxwell --xml=Maxwell_ML1.xml" - COMM serial mpi - NUM_MPI_PROCS 4 - ) - - # Hiptmair not implemented for MueLu+Epetra - # TRIBITS_ADD_TEST( - # Maxwell3D - # NAME "Maxwell3D-ML-list" - # ARGS "--linAlgebra=Epetra --precType=MueLu-Maxwell1 --xml=Maxwell_ML1_muelu.xml" - # COMM serial mpi - # NUM_MPI_PROCS 4 - # ) - ENDIF() - ENDIF() - TRIBITS_COPY_FILES_TO_BINARY_DIR(Maxwell_cp SOURCE_FILES M0.mat M1.mat S.mat D0.mat coords.mat Belos.xml Stratimikos.xml Stratimikos_Maxwell1.xml Maxwell.xml Maxwell2.xml Maxwell3.xml Maxwell_ML.xml Maxwell_ML_MueLu.xml Maxwell_ML1.xml Maxwell_ML1_MueLu.xml Maxwell_Reitzinger.xml Maxwell_Reitzinger_repart.xml GMHD.dat GMHD_nodalCoords.dat GMHD_D0.dat GMHD_curlcurlBlk.dat gmhd.xml diff --git a/packages/muelu/test/navierstokes/A_re1000_5932.txt b/packages/muelu/test/navierstokes/A_re1000_5932.txt deleted file mode 100644 index dc58f9cf89b7..000000000000 --- a/packages/muelu/test/navierstokes/A_re1000_5932.txt +++ /dev/null @@ -1,27952 +0,0 @@ -%%MatrixMarket matrix coordinate real general -% Generated 15-Jul-2015 -1500 1500 27949 -1 1 1 -2 2 1 -3 1 -0.01203703703703703 -3 2 -0.01435185185185185 -3 3 0.3103566529492456 -3 4 0.01203703703703704 -3 5 -0.01342592592592591 -3 6 -0.05315500685871069 -3 7 0.01296296296296296 -3 8 0.01342592592592593 -3 9 -0.1551783264746228 -3 10 -0.01296296296296297 -3 11 0.01435185185185184 -3 12 -0.1020233196159122 -4 4 1 -5 5 1 -6 1 -0.01203703703703706 -6 2 -0.01342592592592593 -6 3 -0.0531550068587107 -6 4 3.122502256758253e-17 -6 5 -0.02870370370370368 -6 6 0.6207133058984913 -6 7 -1.561251128379126e-17 -6 8 0.02870370370370368 -6 9 -0.2040466392318239 -6 10 -0.01296296296296297 -6 11 0.01342592592592592 -6 12 -0.1551783264746227 -6 13 0.01203703703703703 -6 14 -0.01342592592592594 -6 15 -0.05315500685871073 -6 16 0.01296296296296299 -6 17 0.01342592592592596 -6 18 -0.1551783264746232 -7 1 -0.0009703703703703702 -7 2 -0.0005 -7 3 -0.008333333333333333 -7 4 -0.0002814814814814779 -7 5 4.336808689942018e-19 -7 6 -3.469446951953614e-18 -7 7 0.007762962962962963 -7 8 9.75781955236954e-19 -7 9 -6.938893903907228e-18 -7 10 -0.001659259259259262 -7 11 -6.505213034913027e-19 -7 12 -0.03333333333333333 -7 13 -0.0009703703703703688 -7 14 0.0004999999999999996 -7 15 0.008333333333333333 -7 16 -0.001659259259259257 -7 17 -2.168404344971009e-19 -7 18 0.03333333333333334 -7 817 -0.0002814814814814843 -7 819 -1.734723475976807e-18 -7 820 -0.0009703703703703719 -7 821 0.0005000000000000003 -7 822 -0.008333333333333333 -7 823 -0.0009703703703703715 -7 824 -0.0005000000000000003 -7 825 0.008333333333333335 -8 1 -0.0005 -8 2 -0.001040740740740741 -8 3 -0.00925925925925926 -8 4 3.252606517456513e-19 -8 5 -0.002362962962962959 -8 6 -0.03703703703703703 -8 7 8.673617379884035e-19 -8 8 0.008325925925925926 -8 10 -6.505213034913027e-19 -8 11 0.0002814814814814795 -8 12 -6.938893903907228e-18 -8 13 0.0004999999999999997 -8 14 -0.001040740740740739 -8 15 -0.009259259259259259 -8 16 -1.084202172485504e-19 -8 17 0.0002814814814814836 -8 18 1.387778780781446e-17 -8 817 1.084202172485504e-19 -8 818 -0.002362962962962967 -8 819 0.03703703703703703 -8 820 0.0005000000000000002 -8 821 -0.001040740740740742 -8 822 0.009259259259259252 -8 823 -0.0005000000000000003 -8 824 -0.001040740740740742 -8 825 0.009259259259259266 -9 1 -0.01296296296296295 -9 2 -0.01342592592592594 -9 3 -0.1551783264746228 -9 4 1.734723475976807e-18 -9 5 -0.02870370370370372 -9 6 -0.2040466392318239 -9 7 3.469446951953614e-18 -9 8 2.42861286636753e-17 -9 9 1.241426611796981 -9 10 -0.02407407407407408 -9 11 6.938893903907228e-18 -9 12 -0.1063100137174214 -9 13 0.01296296296296295 -9 14 -0.01342592592592591 -9 15 -0.1551783264746227 -9 16 0.02407407407407407 -9 17 -1.734723475976807e-18 -9 18 -0.1063100137174208 -9 817 -6.938893903907228e-18 -9 818 0.02870370370370368 -9 819 -0.2040466392318246 -9 820 -0.01296296296296297 -9 821 0.01342592592592592 -9 822 -0.1551783264746225 -9 823 0.01296296296296298 -9 824 0.01342592592592593 -9 825 -0.1551783264746228 -10 10 1 -11 11 1 -12 1 -0.01296296296296296 -12 2 -0.01435185185185184 -12 3 -0.1020233196159121 -12 4 0.01296296296296297 -12 5 -0.01342592592592592 -12 6 -0.1551783264746227 -12 7 0.02407407407407408 -12 8 1.734723475976807e-17 -12 9 -0.1063100137174213 -12 10 -0.02407407407407408 -12 11 -1.734723475976807e-17 -12 12 0.6207133058984903 -12 817 0.01296296296296293 -12 818 0.01342592592592591 -12 819 -0.1551783264746223 -12 820 -0.01296296296296295 -12 821 0.01435185185185185 -12 822 -0.1020233196159117 -13 13 1 -14 14 1 -15 4 -0.01203703703703705 -15 5 -0.01342592592592592 -15 6 -0.05315500685871072 -15 7 -0.01296296296296295 -15 8 0.01342592592592591 -15 9 -0.1551783264746227 -15 13 1.561251128379126e-17 -15 14 -0.02870370370370371 -15 15 0.6207133058984915 -15 16 -1.734723475976807e-17 -15 17 0.02870370370370371 -15 18 -0.2040466392318247 -15 19 0.01203703703703704 -15 20 -0.01342592592592592 -15 21 -0.05315500685871066 -15 22 0.01296296296296297 -15 23 0.01342592592592593 -15 24 -0.1551783264746228 -16 4 -0.0009703703703703721 -16 5 -0.0005000000000000004 -16 6 -0.008333333333333342 -16 7 -0.001659259259259257 -16 8 -1.084202172485504e-19 -16 9 -0.03333333333333333 -16 13 -0.0002814814814814825 -16 14 5.421010862427522e-19 -16 15 -1.734723475976807e-18 -16 16 0.007762962962962962 -16 17 8.673617379884035e-19 -16 18 3.469446951953614e-18 -16 19 -0.0009703703703703708 -16 20 0.0004999999999999999 -16 21 0.008333333333333344 -16 22 -0.00165925925925926 -16 23 -8.673617379884035e-19 -16 24 0.03333333333333334 -16 817 -0.0009703703703703691 -16 818 0.0004999999999999999 -16 819 -0.008333333333333325 -16 823 -0.0002814814814814806 -16 825 3.469446951953614e-18 -16 826 -0.0009703703703703693 -16 827 -0.0004999999999999998 -16 828 0.008333333333333326 -17 4 -0.0005000000000000003 -17 5 -0.001040740740740743 -17 6 -0.009259259259259269 -17 7 -2.168404344971009e-19 -17 8 0.0002814814814814836 -17 9 -1.561251128379126e-17 -17 13 3.252606517456513e-19 -17 14 -0.002362962962962964 -17 15 -0.03703703703703703 -17 16 8.673617379884035e-19 -17 17 0.008325925925925924 -17 18 -6.938893903907228e-18 -17 19 0.0004999999999999999 -17 20 -0.00104074074074074 -17 21 -0.009259259259259252 -17 22 -6.505213034913027e-19 -17 23 0.0002814814814814805 -17 24 1.387778780781446e-17 -17 817 0.0004999999999999999 -17 818 -0.001040740740740741 -17 819 0.009259259259259264 -17 823 2.168404344971009e-19 -17 824 -0.002362962962962963 -17 825 0.03703703703703705 -17 826 -0.0004999999999999998 -17 827 -0.00104074074074074 -17 828 0.00925925925925926 -18 4 -0.012962962962963 -18 5 -0.01342592592592595 -18 6 -0.1551783264746232 -18 7 -0.02407407407407407 -18 8 1.387778780781446e-17 -18 9 -0.1063100137174208 -18 13 2.081668171172169e-17 -18 14 -0.0287037037037037 -18 15 -0.2040466392318246 -18 16 -1.734723475976807e-17 -18 17 -5.204170427930421e-17 -18 18 1.241426611796982 -18 19 0.01296296296296297 -18 20 -0.01342592592592591 -18 21 -0.1551783264746227 -18 22 0.0240740740740741 -18 23 1.387778780781446e-17 -18 24 -0.1063100137174212 -18 817 -0.01296296296296294 -18 818 0.01342592592592591 -18 819 -0.1551783264746225 -18 823 -6.938893903907228e-18 -18 824 0.02870370370370375 -18 825 -0.2040466392318241 -18 826 0.01296296296296294 -18 827 0.01342592592592592 -18 828 -0.1551783264746225 -19 19 1 -20 20 1 -21 13 -0.01203703703703706 -21 14 -0.01342592592592593 -21 15 -0.05315500685871068 -21 16 -0.01296296296296296 -21 17 0.01342592592592591 -21 18 -0.1551783264746227 -21 19 2.42861286636753e-17 -21 20 -0.02870370370370369 -21 21 0.6207133058984914 -21 22 -1.908195823574488e-17 -21 23 0.0287037037037037 -21 24 -0.204046639231824 -21 25 0.01203703703703703 -21 26 -0.01342592592592595 -21 27 -0.05315500685871073 -21 28 0.01296296296296298 -21 29 0.01342592592592595 -21 30 -0.1551783264746232 -22 13 -0.0009703703703703701 -22 14 -0.0005 -22 15 -0.008333333333333333 -22 16 -0.00165925925925926 -22 17 -6.505213034913027e-19 -22 18 -0.03333333333333335 -22 19 -0.0002814814814814783 -22 20 2.168404344971009e-19 -22 22 0.007762962962962965 -22 23 6.505213034913027e-19 -22 24 -6.938893903907228e-18 -22 25 -0.0009703703703703693 -22 26 0.0004999999999999998 -22 27 0.008333333333333335 -22 28 -0.001659259259259258 -22 29 2.168404344971009e-19 -22 30 0.03333333333333334 -22 823 -0.0009703703703703717 -22 824 0.0005000000000000002 -22 825 -0.00833333333333334 -22 826 -0.0002814814814814854 -22 827 1.084202172485504e-19 -22 828 -1.734723475976807e-18 -22 829 -0.0009703703703703715 -22 830 -0.0005000000000000002 -22 831 0.008333333333333338 -23 13 -0.0005 -23 14 -0.001040740740740741 -23 15 -0.009259259259259264 -23 16 -9.75781955236954e-19 -23 17 0.0002814814814814804 -23 18 -1.214306433183765e-17 -23 19 4.336808689942018e-19 -23 20 -0.002362962962962959 -23 21 -0.03703703703703703 -23 22 3.252606517456513e-19 -23 23 0.008325925925925928 -23 25 0.0004999999999999998 -23 26 -0.00104074074074074 -23 27 -0.00925925925925926 -23 28 3.252606517456513e-19 -23 29 0.0002814814814814828 -23 30 1.734723475976807e-18 -23 823 0.0005000000000000002 -23 824 -0.001040740740740741 -23 825 0.00925925925925926 -23 827 -0.002362962962962968 -23 828 0.03703703703703706 -23 829 -0.0005000000000000003 -23 830 -0.001040740740740742 -23 831 0.009259259259259266 -24 13 -0.01296296296296296 -24 14 -0.01342592592592594 -24 15 -0.1551783264746228 -24 16 -0.02407407407407407 -24 17 -6.938893903907228e-18 -24 18 -0.1063100137174212 -24 19 1.734723475976807e-18 -24 20 -0.02870370370370371 -24 21 -0.204046639231824 -24 22 8.673617379884035e-18 -24 23 2.081668171172169e-17 -24 24 1.241426611796983 -24 25 0.01296296296296295 -24 26 -0.01342592592592592 -24 27 -0.1551783264746228 -24 28 0.02407407407407406 -24 29 -6.938893903907228e-18 -24 30 -0.106310013717421 -24 823 -0.01296296296296298 -24 824 0.01342592592592593 -24 825 -0.1551783264746227 -24 826 -6.938893903907228e-18 -24 827 0.0287037037037037 -24 828 -0.204046639231825 -24 829 0.01296296296296299 -24 830 0.01342592592592594 -24 831 -0.1551783264746229 -25 25 1 -26 26 1 -27 19 -0.01203703703703704 -27 20 -0.01342592592592593 -27 21 -0.05315500685871073 -27 22 -0.01296296296296296 -27 23 0.01342592592592592 -27 24 -0.1551783264746228 -27 25 3.469446951953614e-18 -27 26 -0.02870370370370372 -27 27 0.6207133058984919 -27 28 1.734723475976807e-18 -27 29 0.02870370370370372 -27 30 -0.2040466392318249 -27 31 0.01203703703703703 -27 32 -0.01342592592592593 -27 33 -0.05315500685871048 -27 34 0.01296296296296297 -27 35 0.01342592592592593 -27 36 -0.155178326474623 -28 19 -0.0009703703703703718 -28 20 -0.0005000000000000003 -28 21 -0.008333333333333342 -28 22 -0.001659259259259258 -28 23 3.252606517456513e-19 -28 24 -0.03333333333333333 -28 25 -0.0002814814814814829 -28 26 -2.168404344971009e-19 -28 27 -6.938893903907228e-18 -28 28 0.007762962962962963 -28 29 9.75781955236954e-19 -28 30 -1.387778780781446e-17 -28 31 -0.0009703703703703706 -28 32 0.0005 -28 33 0.008333333333333335 -28 34 -0.001659259259259258 -28 35 1.084202172485504e-19 -28 36 0.03333333333333334 -28 826 -0.0009703703703703689 -28 827 0.0004999999999999998 -28 828 -0.008333333333333325 -28 829 -0.0002814814814814819 -28 830 -3.252606517456513e-19 -28 831 3.469446951953614e-18 -28 832 -0.0009703703703703706 -28 833 -0.0005000000000000001 -28 834 0.008333333333333335 -29 19 -0.0005000000000000002 -29 20 -0.001040740740740742 -29 21 -0.009259259259259266 -29 22 2.168404344971009e-19 -29 23 0.0002814814814814827 -29 24 -5.204170427930421e-18 -29 25 -2.168404344971009e-19 -29 26 -0.002362962962962965 -29 27 -0.03703703703703705 -29 28 9.75781955236954e-19 -29 29 0.008325925925925928 -29 30 -6.938893903907228e-18 -29 31 0.0005000000000000001 -29 32 -0.001040740740740741 -29 33 -0.009259259259259266 -29 35 0.0002814814814814831 -29 826 0.0004999999999999999 -29 827 -0.001040740740740741 -29 828 0.009259259259259266 -29 829 -4.336808689942018e-19 -29 830 -0.002362962962962964 -29 831 0.03703703703703706 -29 832 -0.0005000000000000001 -29 833 -0.001040740740740741 -29 834 0.009259259259259266 -30 19 -0.01296296296296299 -30 20 -0.01342592592592594 -30 21 -0.1551783264746232 -30 22 -0.02407407407407408 -30 23 2.081668171172169e-17 -30 24 -0.106310013717421 -30 25 1.214306433183765e-17 -30 26 -0.0287037037037037 -30 27 -0.2040466392318249 -30 28 8.673617379884035e-18 -30 29 -2.42861286636753e-17 -30 30 1.241426611796983 -30 31 0.01296296296296297 -30 32 -0.01342592592592593 -30 33 -0.155178326474623 -30 34 0.02407407407407406 -30 35 3.469446951953614e-18 -30 36 -0.1063100137174209 -30 826 -0.01296296296296294 -30 827 0.01342592592592592 -30 828 -0.1551783264746226 -30 829 1.734723475976807e-18 -30 830 0.02870370370370373 -30 831 -0.2040466392318246 -30 832 0.01296296296296296 -30 833 0.01342592592592593 -30 834 -0.1551783264746228 -31 31 1 -32 32 1 -33 25 -0.01203703703703703 -33 26 -0.01342592592592593 -33 27 -0.05315500685871049 -33 28 -0.01296296296296297 -33 29 0.01342592592592593 -33 30 -0.155178326474623 -33 31 -6.938893903907228e-18 -33 32 -0.02870370370370372 -33 33 0.6207133058984915 -33 34 1.908195823574488e-17 -33 35 0.02870370370370373 -33 36 -0.2040466392318248 -33 37 0.01203703703703704 -33 38 -0.01342592592592593 -33 39 -0.05315500685871059 -33 40 0.01296296296296295 -33 41 0.01342592592592592 -33 42 -0.1551783264746227 -34 25 -0.0009703703703703706 -34 26 -0.0005000000000000001 -34 27 -0.008333333333333333 -34 28 -0.001659259259259258 -34 30 -0.03333333333333333 -34 31 -0.0002814814814814829 -34 32 -1.084202172485504e-19 -34 33 -3.469446951953614e-18 -34 34 0.007762962962962962 -34 35 -3.252606517456513e-19 -34 36 -1.387778780781446e-17 -34 37 -0.0009703703703703711 -34 38 0.0005000000000000002 -34 39 0.008333333333333333 -34 40 -0.001659259259259256 -34 41 3.252606517456513e-19 -34 42 0.03333333333333333 -34 829 -0.0009703703703703706 -34 830 0.0005000000000000001 -34 831 -0.008333333333333333 -34 832 -0.0002814814814814836 -34 834 -1.734723475976807e-18 -34 835 -0.0009703703703703706 -34 836 -0.0005000000000000001 -34 837 0.008333333333333333 -35 25 -0.0005000000000000001 -35 26 -0.001040740740740741 -35 27 -0.009259259259259266 -35 29 0.000281481481481483 -35 31 -2.168404344971009e-19 -35 32 -0.002362962962962965 -35 33 -0.03703703703703705 -35 34 -3.252606517456513e-19 -35 35 0.008325925925925929 -35 36 -3.469446951953614e-18 -35 37 0.0005000000000000003 -35 38 -0.001040740740740743 -35 39 -0.009259259259259273 -35 40 3.252606517456513e-19 -35 41 0.0002814814814814854 -35 42 -1.214306433183765e-17 -35 829 0.0005000000000000001 -35 830 -0.001040740740740741 -35 831 0.009259259259259266 -35 832 1.084202172485504e-19 -35 833 -0.002362962962962966 -35 834 0.03703703703703707 -35 835 -0.0005000000000000001 -35 836 -0.001040740740740742 -35 837 0.009259259259259273 -36 25 -0.01296296296296297 -36 26 -0.01342592592592593 -36 27 -0.155178326474623 -36 28 -0.02407407407407407 -36 29 3.469446951953614e-18 -36 30 -0.1063100137174209 -36 31 -5.204170427930421e-18 -36 32 -0.02870370370370372 -36 33 -0.2040466392318248 -36 34 1.908195823574488e-17 -36 35 1.734723475976807e-18 -36 36 1.241426611796983 -36 37 0.01296296296296298 -36 38 -0.01342592592592594 -36 39 -0.155178326474623 -36 40 0.02407407407407405 -36 41 -5.204170427930421e-18 -36 42 -0.1063100137174205 -36 829 -0.01296296296296297 -36 830 0.01342592592592593 -36 831 -0.1551783264746228 -36 832 -1.734723475976807e-18 -36 833 0.02870370370370374 -36 834 -0.2040466392318249 -36 835 0.01296296296296297 -36 836 0.01342592592592594 -36 837 -0.1551783264746229 -37 37 1 -38 38 1 -39 31 -0.01203703703703702 -39 32 -0.01342592592592593 -39 33 -0.05315500685871059 -39 34 -0.01296296296296297 -39 35 0.01342592592592596 -39 36 -0.155178326474623 -39 37 -2.775557561562891e-17 -39 38 -0.02870370370370369 -39 39 0.6207133058984909 -39 40 1.908195823574488e-17 -39 41 0.02870370370370368 -39 42 -0.2040466392318242 -39 43 0.01203703703703705 -39 44 -0.01342592592592591 -39 45 -0.05315500685871072 -39 46 0.01296296296296295 -39 47 0.01342592592592589 -39 48 -0.1551783264746224 -40 31 -0.0009703703703703695 -40 32 -0.0004999999999999998 -40 33 -0.008333333333333331 -40 34 -0.001659259259259256 -40 35 3.252606517456513e-19 -40 36 -0.03333333333333333 -40 37 -0.0002814814814814807 -40 38 -4.336808689942018e-19 -40 40 0.007762962962962963 -40 41 -5.421010862427522e-19 -40 42 -6.938893903907228e-18 -40 43 -0.0009703703703703717 -40 44 0.0005000000000000002 -40 45 0.008333333333333333 -40 46 -0.001659259259259264 -40 47 2.168404344971009e-19 -40 48 0.03333333333333334 -40 832 -0.0009703703703703701 -40 833 0.0004999999999999999 -40 834 -0.008333333333333333 -40 835 -0.0002814814814814801 -40 836 3.252606517456513e-19 -40 838 -0.0009703703703703714 -40 839 -0.0005000000000000002 -40 840 0.008333333333333335 -41 31 -0.0004999999999999999 -41 32 -0.001040740740740739 -41 33 -0.009259259259259259 -41 34 3.252606517456513e-19 -41 35 0.0002814814814814854 -41 36 6.938893903907228e-18 -41 37 -5.421010862427522e-19 -41 38 -0.002362962962962963 -41 39 -0.03703703703703701 -41 40 -5.421010862427522e-19 -41 41 0.008325925925925924 -41 42 -3.469446951953614e-18 -41 43 0.0005000000000000002 -41 44 -0.001040740740740742 -41 45 -0.009259259259259254 -41 46 4.336808689942018e-19 -41 47 0.0002814814814814773 -41 48 -1.040834085586084e-17 -41 832 0.0005 -41 833 -0.001040740740740741 -41 834 0.009259259259259269 -41 835 1.084202172485504e-19 -41 836 -0.002362962962962961 -41 837 0.03703703703703702 -41 838 -0.0005000000000000002 -41 839 -0.001040740740740741 -41 840 0.009259259259259241 -42 31 -0.01296296296296296 -42 32 -0.0134259259259259 -42 33 -0.1551783264746227 -42 34 -0.02407407407407409 -42 35 -6.938893903907228e-18 -42 36 -0.1063100137174205 -42 37 -1.214306433183765e-17 -42 38 -0.0287037037037037 -42 39 -0.2040466392318242 -42 40 2.949029909160572e-17 -42 41 1.734723475976807e-18 -42 42 1.241426611796981 -42 43 0.01296296296296297 -42 44 -0.01342592592592595 -42 45 -0.1551783264746228 -42 46 0.02407407407407406 -42 47 1.214306433183765e-17 -42 48 -0.1063100137174217 -42 832 -0.01296296296296296 -42 833 0.01342592592592592 -42 834 -0.1551783264746228 -42 835 1.734723475976807e-18 -42 836 0.0287037037037037 -42 837 -0.2040466392318241 -42 838 0.01296296296296296 -42 839 0.01342592592592591 -42 840 -0.1551783264746225 -43 43 1 -44 44 1 -45 37 -0.01203703703703703 -45 38 -0.01342592592592592 -45 39 -0.05315500685871072 -45 40 -0.01296296296296297 -45 41 0.01342592592592593 -45 42 -0.1551783264746228 -45 43 5.204170427930421e-18 -45 44 -0.02870370370370368 -45 45 0.6207133058984908 -45 46 -1.387778780781446e-17 -45 47 0.02870370370370365 -45 48 -0.2040466392318239 -45 49 0.01203703703703704 -45 50 -0.01342592592592591 -45 51 -0.0531550068587106 -45 52 0.01296296296296297 -45 53 0.01342592592592593 -45 54 -0.1551783264746228 -46 37 -0.00097037037037037 -46 38 -0.0004999999999999999 -46 39 -0.008333333333333333 -46 40 -0.001659259259259264 -46 41 4.336808689942018e-19 -46 42 -0.03333333333333333 -46 43 -0.0002814814814814792 -46 44 5.421010862427522e-19 -46 45 5.204170427930421e-18 -46 46 0.007762962962962965 -46 47 -1.192622389734055e-18 -46 48 -1.387778780781446e-17 -46 49 -0.0009703703703703707 -46 50 0.0004999999999999998 -46 51 0.008333333333333342 -46 52 -0.001659259259259264 -46 53 -3.252606517456513e-19 -46 54 0.03333333333333333 -46 835 -0.000970370370370371 -46 836 0.0005 -46 837 -0.008333333333333333 -46 838 -0.0002814814814814765 -46 839 1.084202172485504e-19 -46 840 -6.938893903907228e-18 -46 841 -0.0009703703703703687 -46 842 -0.0004999999999999996 -46 843 0.008333333333333325 -47 37 -0.0004999999999999998 -47 38 -0.001040740740740739 -47 39 -0.009259259259259241 -47 40 2.168404344971009e-19 -47 41 0.0002814814814814773 -47 42 8.673617379884035e-18 -47 43 5.421010862427522e-19 -47 44 -0.00236296296296296 -47 45 -0.03703703703703701 -47 46 -1.192622389734055e-18 -47 47 0.008325925925925917 -47 48 -2.081668171172169e-17 -47 49 0.0004999999999999998 -47 50 -0.001040740740740739 -47 51 -0.009259259259259241 -47 52 -3.252606517456513e-19 -47 53 0.0002814814814814773 -47 54 8.673617379884035e-18 -47 835 0.0005 -47 836 -0.00104074074074074 -47 837 0.009259259259259238 -47 838 2.168404344971009e-19 -47 839 -0.002362962962962957 -47 840 0.03703703703703696 -47 841 -0.0004999999999999996 -47 842 -0.001040740740740738 -47 843 0.009259259259259236 -48 37 -0.01296296296296295 -48 38 -0.0134259259259259 -48 39 -0.1551783264746224 -48 40 -0.0240740740740741 -48 41 8.673617379884035e-18 -48 42 -0.1063100137174217 -48 43 -1.734723475976807e-18 -48 44 -0.02870370370370368 -48 45 -0.2040466392318239 -48 46 1.734723475976807e-18 -48 47 -2.255140518769849e-17 -48 48 1.24142661179698 -48 49 0.01296296296296296 -48 50 -0.01342592592592591 -48 51 -0.1551783264746226 -48 52 0.02407407407407409 -48 53 2.255140518769849e-17 -48 54 -0.1063100137174216 -48 835 -0.01296296296296296 -48 836 0.0134259259259259 -48 837 -0.1551783264746224 -48 838 2.42861286636753e-17 -48 839 0.0287037037037037 -48 840 -0.2040466392318231 -48 841 0.01296296296296292 -48 842 0.01342592592592587 -48 843 -0.155178326474622 -49 49 1 -50 50 1 -51 43 -0.01203703703703707 -51 44 -0.01342592592592592 -51 45 -0.0531550068587106 -51 46 -0.01296296296296296 -51 47 0.01342592592592589 -51 48 -0.1551783264746226 -51 49 4.336808689942018e-17 -51 50 -0.02870370370370372 -51 51 0.6207133058984917 -51 52 -1.387778780781446e-17 -51 53 0.02870370370370376 -51 54 -0.2040466392318247 -51 55 0.01203703703703702 -51 56 -0.01342592592592597 -51 57 -0.05315500685871052 -51 58 0.01296296296296297 -51 59 0.01342592592592597 -51 60 -0.1551783264746234 -52 43 -0.0009703703703703709 -52 44 -0.0005000000000000001 -52 45 -0.008333333333333333 -52 46 -0.001659259259259264 -52 47 -3.252606517456513e-19 -52 48 -0.03333333333333333 -52 49 -0.0002814814814814813 -52 50 3.252606517456513e-19 -52 51 -1.734723475976807e-18 -52 52 0.007762962962962963 -52 53 -2.168404344971009e-19 -52 54 -6.938893903907228e-18 -52 55 -0.0009703703703703691 -52 56 0.0004999999999999999 -52 57 0.008333333333333333 -52 58 -0.001659259259259244 -52 59 5.421010862427522e-19 -52 60 0.03333333333333333 -52 838 -0.0009703703703703728 -52 839 0.0005000000000000006 -52 840 -0.008333333333333331 -52 841 -0.0002814814814814895 -52 842 -5.421010862427522e-19 -52 844 -0.0009703703703703696 -52 845 -0.0005 -52 846 0.008333333333333333 -53 43 -0.0005000000000000002 -53 44 -0.001040740740740742 -53 45 -0.00925925925925926 -53 46 -3.252606517456513e-19 -53 47 0.0002814814814814773 -53 48 8.673617379884035e-18 -53 49 2.168404344971009e-19 -53 50 -0.002362962962962963 -53 51 -0.03703703703703708 -53 52 -3.252606517456513e-19 -53 53 0.008325925925925936 -53 54 1.734723475976807e-17 -53 55 0.0004999999999999999 -53 56 -0.001040740740740742 -53 57 -0.009259259259259288 -53 58 7.589415207398531e-19 -53 59 0.0002814814814814944 -53 60 -1.561251128379126e-17 -53 838 0.0005000000000000007 -53 839 -0.001040740740740743 -53 840 0.009259259259259257 -53 841 -4.336808689942018e-19 -53 842 -0.002362962962962973 -53 843 0.0370370370370371 -53 844 -0.0005000000000000001 -53 845 -0.001040740740740743 -53 846 0.009259259259259297 -54 43 -0.01296296296296296 -54 44 -0.01342592592592596 -54 45 -0.1551783264746229 -54 46 -0.02407407407407405 -54 47 1.734723475976807e-18 -54 48 -0.1063100137174217 -54 49 -2.081668171172169e-17 -54 50 -0.02870370370370373 -54 51 -0.2040466392318247 -54 52 -1.734723475976807e-18 -54 53 1.734723475976807e-17 -54 54 1.241426611796984 -54 55 0.01296296296296297 -54 56 -0.01342592592592595 -54 57 -0.1551783264746233 -54 58 0.02407407407407405 -54 59 -2.255140518769849e-17 -54 60 -0.1063100137174193 -54 838 -0.01296296296296298 -54 839 0.01342592592592594 -54 840 -0.1551783264746228 -54 841 -5.204170427930421e-18 -54 842 0.02870370370370374 -54 843 -0.2040466392318258 -54 844 0.01296296296296299 -54 845 0.01342592592592597 -54 846 -0.1551783264746233 -55 55 1 -56 56 1 -57 49 -0.01203703703703702 -57 50 -0.01342592592592595 -57 51 -0.05315500685871052 -57 52 -0.01296296296296297 -57 53 0.01342592592592597 -57 54 -0.1551783264746233 -57 55 -4.683753385137379e-17 -57 56 -0.02870370370370373 -57 57 0.6207133058984922 -57 58 2.255140518769849e-17 -57 59 0.02870370370370375 -57 60 -0.2040466392318253 -57 61 0.01203703703703707 -57 62 -0.01342592592592591 -57 63 -0.05315500685871076 -57 64 0.01296296296296294 -57 65 0.01342592592592588 -57 66 -0.1551783264746223 -58 49 -0.0009703703703703706 -58 50 -0.0005000000000000001 -58 51 -0.00833333333333334 -58 52 -0.001659259259259244 -58 53 8.673617379884035e-19 -58 54 -0.03333333333333333 -58 55 -0.000281481481481485 -58 56 -5.421010862427522e-19 -58 58 0.007762962962962958 -58 59 -2.49366499671666e-18 -58 60 -1.040834085586084e-17 -58 61 -0.0009703703703703731 -58 62 0.0005000000000000006 -58 63 0.008333333333333342 -58 64 -0.001659259259259262 -58 65 1.626303258728257e-18 -58 66 0.03333333333333333 -58 841 -0.0009703703703703686 -58 842 0.0004999999999999999 -58 843 -0.008333333333333323 -58 844 -0.000281481481481487 -58 845 -5.421010862427522e-19 -58 847 -0.0009703703703703679 -58 848 -0.0004999999999999994 -58 849 0.008333333333333325 -59 49 -0.0005 -59 50 -0.001040740740740742 -59 51 -0.009259259259259283 -59 52 6.505213034913027e-19 -59 53 0.0002814814814814945 -59 54 6.938893903907228e-18 -59 55 -4.336808689942018e-19 -59 56 -0.002362962962962967 -59 57 -0.03703703703703707 -59 58 -2.38524477946811e-18 -59 59 0.008325925925925931 -59 61 0.0005000000000000007 -59 62 -0.001040740740740744 -59 63 -0.009259259259259269 -59 64 1.734723475976807e-18 -59 65 0.0002814814814814798 -59 66 -5.551115123125783e-17 -59 841 0.0005 -59 842 -0.001040740740740744 -59 843 0.009259259259259304 -59 844 -7.589415207398531e-19 -59 845 -0.002362962962962971 -59 846 0.03703703703703711 -59 847 -0.0004999999999999993 -59 848 -0.001040740740740737 -59 849 0.009259259259259245 -60 49 -0.01296296296296301 -60 50 -0.01342592592592594 -60 51 -0.1551783264746234 -60 52 -0.02407407407407406 -60 53 -6.938893903907228e-18 -60 54 -0.1063100137174193 -60 55 8.673617379884035e-18 -60 56 -0.02870370370370373 -60 57 -0.2040466392318253 -60 58 -1.561251128379126e-17 -60 59 -7.806255641895632e-17 -60 60 1.241426611796983 -60 61 0.012962962962963 -60 62 -0.01342592592592596 -60 63 -0.1551783264746232 -60 64 0.02407407407407407 -60 65 2.255140518769849e-17 -60 66 -0.1063100137174214 -60 841 -0.01296296296296296 -60 842 0.01342592592592598 -60 843 -0.1551783264746233 -60 844 5.551115123125783e-17 -60 845 0.02870370370370385 -60 846 -0.2040466392318255 -60 847 0.01296296296296291 -60 848 0.01342592592592585 -60 849 -0.155178326474622 -61 61 1 -62 62 1 -63 55 -0.01203703703703704 -63 56 -0.01342592592592593 -63 57 -0.05315500685871079 -63 58 -0.01296296296296299 -63 59 0.01342592592592597 -63 60 -0.1551783264746232 -63 61 -1.040834085586084e-17 -63 62 -0.02870370370370365 -63 63 0.6207133058984907 -63 64 2.255140518769849e-17 -63 65 0.02870370370370361 -63 66 -0.204046639231823 -63 67 0.01203703703703705 -63 68 -0.01342592592592592 -63 69 -0.05315500685871094 -63 70 0.01296296296296297 -63 71 0.0134259259259259 -63 72 -0.1551783264746227 -64 55 -0.0009703703703703684 -64 56 -0.0004999999999999994 -64 57 -0.008333333333333333 -64 58 -0.001659259259259262 -64 59 1.626303258728257e-18 -64 60 -0.03333333333333333 -64 61 -0.0002814814814814741 -64 62 -5.421010862427522e-19 -64 64 0.007762962962962966 -64 65 -3.469446951953614e-18 -64 67 -0.0009703703703703701 -64 68 0.0004999999999999999 -64 69 0.008333333333333335 -64 70 -0.001659259259259267 -64 71 1.843143693225358e-18 -64 72 0.03333333333333334 -64 844 -0.0009703703703703734 -64 845 0.0005000000000000009 -64 846 -0.008333333333333331 -64 847 -0.0002814814814814811 -64 848 -1.409462824231156e-18 -64 850 -0.0009703703703703696 -64 851 -0.0004999999999999994 -64 852 0.008333333333333335 -65 55 -0.0004999999999999995 -65 56 -0.001040740740740737 -65 57 -0.009259259259259247 -65 58 1.626303258728257e-18 -65 59 0.0002814814814814799 -65 60 5.724587470723463e-17 -65 61 -4.336808689942018e-19 -65 62 -0.002362962962962954 -65 63 -0.03703703703703698 -65 64 -3.577867169202165e-18 -65 65 0.008325925925925917 -65 66 6.938893903907228e-18 -65 67 0.0004999999999999999 -65 68 -0.001040740740740739 -65 69 -0.009259259259259234 -65 70 1.843143693225358e-18 -65 71 0.0002814814814814754 -65 72 -1.908195823574488e-17 -65 844 0.0005000000000000009 -65 845 -0.001040740740740745 -65 846 0.00925925925925928 -65 847 -1.409462824231156e-18 -65 848 -0.002362962962962963 -65 849 0.03703703703703698 -65 850 -0.0004999999999999996 -65 851 -0.001040740740740736 -65 852 0.009259259259259221 -66 55 -0.01296296296296292 -66 56 -0.01342592592592587 -66 57 -0.1551783264746223 -66 58 -0.02407407407407407 -66 59 -8.673617379884035e-18 -66 60 -0.1063100137174214 -66 61 -2.255140518769849e-17 -66 62 -0.02870370370370367 -66 63 -0.204046639231823 -66 64 -5.204170427930421e-17 -66 65 1.040834085586084e-17 -66 66 1.24142661179698 -66 67 0.01296296296296295 -66 68 -0.01342592592592593 -66 69 -0.1551783264746225 -66 70 0.02407407407407412 -66 71 8.673617379884035e-18 -66 72 -0.106310013717422 -66 844 -0.01296296296296299 -66 845 0.01342592592592596 -66 846 -0.1551783264746231 -66 847 5.898059818321144e-17 -66 848 0.02870370370370367 -66 849 -0.2040466392318238 -66 850 0.01296296296296293 -66 851 0.01342592592592583 -66 852 -0.1551783264746218 -67 67 1 -68 68 1 -69 61 -0.01203703703703705 -69 62 -0.0134259259259259 -69 63 -0.05315500685871093 -69 64 -0.01296296296296296 -69 65 0.01342592592592588 -69 66 -0.1551783264746225 -69 67 2.42861286636753e-17 -69 68 -0.02870370370370369 -69 69 0.6207133058984906 -69 70 -1.908195823574488e-17 -69 71 0.02870370370370368 -69 72 -0.2040466392318238 -69 73 0.01203703703703702 -69 74 -0.01342592592592592 -69 75 -0.05315500685871023 -69 76 0.01296296296296299 -69 77 0.01342592592592595 -69 78 -0.1551783264746231 -70 61 -0.0009703703703703722 -70 62 -0.0005000000000000003 -70 63 -0.008333333333333342 -70 64 -0.001659259259259267 -70 65 1.843143693225358e-18 -70 66 -0.03333333333333333 -70 67 -0.0002814814814814787 -70 68 2.168404344971009e-19 -70 69 -6.938893903907228e-18 -70 70 0.007762962962962968 -70 71 -6.505213034913027e-19 -70 73 -0.0009703703703703693 -70 74 0.0004999999999999996 -70 75 0.008333333333333335 -70 76 -0.001659259259259265 -70 77 -2.168404344971009e-19 -70 78 0.03333333333333334 -70 847 -0.0009703703703703723 -70 848 0.0005000000000000007 -70 849 -0.008333333333333325 -70 850 -0.0002814814814814738 -70 851 -1.301042606982605e-18 -70 852 1.040834085586084e-17 -70 853 -0.0009703703703703699 -70 854 -0.0004999999999999997 -70 855 0.008333333333333337 -71 61 -0.0005000000000000002 -71 62 -0.00104074074074074 -71 63 -0.009259259259259236 -71 64 1.843143693225358e-18 -71 65 0.0002814814814814753 -71 66 6.071532165918825e-17 -71 68 -0.002362962962962959 -71 69 -0.03703703703703701 -71 70 -6.505213034913027e-19 -71 71 0.008325925925925921 -71 72 -1.040834085586084e-17 -71 73 0.0004999999999999996 -71 74 -0.001040740740740738 -71 75 -0.009259259259259247 -71 76 -1.084202172485504e-19 -71 77 0.0002814814814814771 -71 78 1.908195823574488e-17 -71 847 0.0005000000000000007 -71 848 -0.001040740740740745 -71 849 0.009259259259259264 -71 850 -1.517883041479706e-18 -71 851 -0.002362962962962953 -71 852 0.03703703703703694 -71 853 -0.0004999999999999997 -71 854 -0.001040740740740737 -71 855 0.009259259259259228 -72 61 -0.01296296296296298 -72 62 -0.01342592592592593 -72 63 -0.1551783264746227 -72 64 -0.02407407407407406 -72 65 1.561251128379126e-17 -72 66 -0.1063100137174219 -72 67 2.42861286636753e-17 -72 68 -0.02870370370370362 -72 69 -0.2040466392318238 -72 70 -6.071532165918825e-17 -72 71 -3.469446951953614e-17 -72 72 1.24142661179698 -72 73 0.01296296296296294 -72 74 -0.0134259259259259 -72 75 -0.1551783264746224 -72 76 0.02407407407407414 -72 77 2.949029909160572e-17 -72 78 -0.1063100137174217 -72 847 -0.01296296296296296 -72 848 0.01342592592592595 -72 849 -0.1551783264746228 -72 850 2.949029909160572e-17 -72 851 0.02870370370370364 -72 852 -0.2040466392318225 -72 853 0.01296296296296294 -72 854 0.01342592592592586 -72 855 -0.155178326474622 -73 73 1 -74 74 1 -75 67 -0.01203703703703706 -75 68 -0.01342592592592592 -75 69 -0.05315500685871023 -75 70 -0.01296296296296295 -75 71 0.01342592592592587 -75 72 -0.1551783264746224 -75 73 5.204170427930421e-17 -75 74 -0.02870370370370372 -75 75 0.6207133058984915 -75 76 -2.602085213965211e-17 -75 77 0.02870370370370374 -75 78 -0.2040466392318248 -75 79 0.01203703703703701 -75 80 -0.01342592592592595 -75 81 -0.05315500685871064 -75 82 0.01296296296296298 -75 83 0.01342592592592598 -75 84 -0.1551783264746233 -76 67 -0.0009703703703703719 -76 68 -0.0005000000000000004 -76 69 -0.008333333333333333 -76 70 -0.001659259259259265 -76 71 -2.168404344971009e-19 -76 72 -0.03333333333333334 -76 73 -0.0002814814814814828 -76 74 8.673617379884035e-19 -76 75 -1.734723475976807e-18 -76 76 0.007762962962962965 -76 77 1.951563910473908e-18 -76 78 -3.469446951953614e-18 -76 79 -0.0009703703703703691 -76 80 0.0004999999999999996 -76 81 0.008333333333333333 -76 82 -0.001659259259259254 -76 83 -1.951563910473908e-18 -76 84 0.03333333333333334 -76 850 -0.0009703703703703727 -76 851 0.0005000000000000006 -76 852 -0.00833333333333334 -76 853 -0.000281481481481478 -76 854 3.252606517456513e-19 -76 855 3.469446951953614e-18 -76 856 -0.0009703703703703727 -76 857 -0.0005000000000000008 -76 858 0.008333333333333338 -77 67 -0.0005000000000000004 -77 68 -0.001040740740740744 -77 69 -0.009259259259259269 -77 70 -3.252606517456513e-19 -77 71 0.0002814814814814771 -77 72 1.214306433183765e-17 -77 73 7.589415207398531e-19 -77 74 -0.002362962962962964 -77 75 -0.03703703703703706 -77 76 1.843143693225358e-18 -77 77 0.008325925925925931 -77 78 1.040834085586084e-17 -77 79 0.0004999999999999997 -77 80 -0.001040740740740739 -77 81 -0.00925925925925926 -77 82 -1.951563910473908e-18 -77 83 0.000281481481481486 -77 84 3.989863994746656e-17 -77 850 0.0005000000000000006 -77 851 -0.001040740740740742 -77 852 0.009259259259259248 -77 853 6.505213034913027e-19 -77 854 -0.002362962962962958 -77 855 0.03703703703703702 -77 856 -0.0005000000000000007 -77 857 -0.001040740740740746 -77 858 0.009259259259259285 -78 67 -0.01296296296296297 -78 68 -0.01342592592592598 -78 69 -0.1551783264746231 -78 70 -0.02407407407407406 -78 71 2.602085213965211e-17 -78 72 -0.1063100137174217 -78 73 1.040834085586084e-17 -78 74 -0.02870370370370371 -78 75 -0.2040466392318248 -78 76 -1.734723475976807e-18 -78 77 1.387778780781446e-17 -78 78 1.241426611796983 -78 79 0.01296296296296296 -78 80 -0.0134259259259259 -78 81 -0.1551783264746228 -78 82 0.02407407407407407 -78 83 -1.734723475976807e-18 -78 84 -0.1063100137174205 -78 850 -0.01296296296296298 -78 851 0.01342592592592593 -78 852 -0.1551783264746226 -78 853 -3.816391647148976e-17 -78 854 0.02870370370370362 -78 855 -0.2040466392318237 -78 856 0.01296296296296301 -78 857 0.013425925925926 -78 858 -0.1551783264746235 -79 79 1 -80 80 1 -81 73 -0.01203703703703704 -81 74 -0.01342592592592594 -81 75 -0.05315500685871062 -81 76 -0.01296296296296295 -81 77 0.01342592592592592 -81 78 -0.1551783264746228 -81 79 -1.734723475976807e-18 -81 80 -0.0287037037037037 -81 81 0.6207133058984917 -81 82 5.204170427930421e-18 -81 83 0.02870370370370373 -81 84 -0.2040466392318249 -81 85 0.01203703703703704 -81 86 -0.01342592592592593 -81 87 -0.0531550068587107 -81 88 0.01296296296296295 -81 89 0.01342592592592591 -81 90 -0.1551783264746226 -82 73 -0.0009703703703703711 -82 74 -0.0005000000000000003 -82 75 -0.008333333333333333 -82 76 -0.001659259259259254 -82 77 -1.951563910473908e-18 -82 78 -0.03333333333333334 -82 79 -0.0002814814814814834 -82 80 1.084202172485504e-19 -82 82 0.007762962962962961 -82 83 3.035766082959412e-18 -82 84 -3.469446951953614e-18 -82 85 -0.0009703703703703713 -82 86 0.0005000000000000002 -82 87 0.008333333333333335 -82 88 -0.001659259259259256 -82 89 -1.084202172485504e-18 -82 90 0.03333333333333335 -82 853 -0.0009703703703703683 -82 854 0.0004999999999999994 -82 855 -0.008333333333333342 -82 856 -0.0002814814814814836 -82 857 1.517883041479706e-18 -82 858 3.469446951953614e-18 -82 859 -0.0009703703703703731 -82 860 -0.0005000000000000009 -82 861 0.008333333333333338 -83 73 -0.0005000000000000003 -83 74 -0.001040740740740744 -83 75 -0.00925925925925928 -83 76 -1.951563910473908e-18 -83 77 0.0002814814814814861 -83 78 -7.112366251504909e-17 -83 79 2.168404344971009e-19 -83 80 -0.002362962962962966 -83 81 -0.03703703703703705 -83 82 2.927345865710862e-18 -83 83 0.008325925925925931 -83 85 0.0005000000000000003 -83 86 -0.001040740740740743 -83 87 -0.009259259259259269 -83 88 -1.301042606982605e-18 -83 89 0.0002814814814814851 -83 90 4.336808689942018e-17 -83 853 0.0004999999999999993 -83 854 -0.001040740740740737 -83 855 0.009259259259259247 -83 856 1.517883041479706e-18 -83 857 -0.002362962962962966 -83 858 0.03703703703703709 -83 859 -0.0005000000000000009 -83 860 -0.001040740740740747 -83 861 0.009259259259259307 -84 73 -0.01296296296296299 -84 74 -0.01342592592592596 -84 75 -0.1551783264746233 -84 76 -0.02407407407407409 -84 77 1.387778780781446e-17 -84 78 -0.1063100137174205 -84 79 8.673617379884035e-18 -84 80 -0.02870370370370372 -84 81 -0.2040466392318249 -84 82 5.030698080332741e-17 -84 83 -1.214306433183765e-17 -84 84 1.241426611796984 -84 85 0.01296296296296298 -84 86 -0.01342592592592594 -84 87 -0.155178326474623 -84 88 0.02407407407407405 -84 89 -2.081668171172169e-17 -84 90 -0.1063100137174206 -84 853 -0.01296296296296295 -84 854 0.01342592592592588 -84 855 -0.1551783264746225 -84 856 -5.551115123125783e-17 -84 857 0.02870370370370375 -84 858 -0.204046639231825 -84 859 0.01296296296296301 -84 860 0.01342592592592601 -84 861 -0.1551783264746236 -85 85 1 -86 86 1 -87 79 -0.01203703703703702 -87 80 -0.01342592592592593 -87 81 -0.0531550068587107 -87 82 -0.01296296296296297 -87 83 0.01342592592592596 -87 84 -0.155178326474623 -87 85 -3.816391647148976e-17 -87 86 -0.02870370370370368 -87 87 0.6207133058984911 -87 88 3.295974604355933e-17 -87 89 0.02870370370370371 -87 90 -0.2040466392318243 -87 91 0.01203703703703706 -87 92 -0.01342592592592592 -87 93 -0.05315500685871079 -87 94 0.01296296296296294 -87 95 0.01342592592592587 -87 96 -0.1551783264746223 -88 79 -0.0009703703703703698 -88 80 -0.0004999999999999998 -88 81 -0.008333333333333333 -88 82 -0.001659259259259256 -88 83 -1.301042606982605e-18 -88 84 -0.03333333333333334 -88 85 -0.0002814814814814803 -88 86 -1.084202172485504e-18 -88 87 -1.734723475976807e-18 -88 88 0.007762962962962966 -88 89 1.626303258728257e-18 -88 90 -6.938893903907228e-18 -88 91 -0.0009703703703703732 -88 92 0.0005000000000000009 -88 93 0.008333333333333335 -88 94 -0.001659259259259263 -88 95 -3.252606517456513e-19 -88 96 0.03333333333333334 -88 856 -0.0009703703703703675 -88 857 0.0004999999999999991 -88 858 -0.008333333333333342 -88 859 -0.0002814814814814823 -88 860 1.951563910473908e-18 -88 861 3.469446951953614e-18 -88 862 -0.0009703703703703739 -88 863 -0.0005000000000000011 -88 864 0.008333333333333338 -89 79 -0.0004999999999999999 -89 80 -0.00104074074074074 -89 81 -0.009259259259259255 -89 82 -9.75781955236954e-19 -89 83 0.0002814814814814853 -89 84 -2.255140518769849e-17 -89 85 -1.084202172485504e-18 -89 86 -0.002362962962962962 -89 87 -0.03703703703703703 -89 88 1.734723475976807e-18 -89 89 0.008325925925925931 -89 90 3.469446951953614e-17 -89 91 0.0005000000000000009 -89 92 -0.001040740740740746 -89 93 -0.009259259259259276 -89 94 -4.336808689942018e-19 -89 95 0.0002814814814814783 -89 96 8.673617379884035e-18 -89 856 0.0004999999999999991 -89 857 -0.001040740740740736 -89 858 0.00925925925925926 -89 859 1.843143693225358e-18 -89 860 -0.002362962962962964 -89 861 0.03703703703703709 -89 862 -0.0005000000000000011 -89 863 -0.001040740740740747 -89 864 0.009259259259259285 -90 79 -0.01296296296296296 -90 80 -0.0134259259259259 -90 81 -0.1551783264746226 -90 82 -0.02407407407407414 -90 83 -1.214306433183765e-17 -90 84 -0.1063100137174206 -90 85 -4.163336342344337e-17 -90 86 -0.02870370370370365 -90 87 -0.2040466392318243 -90 88 1.266348137463069e-16 -90 89 -4.510281037539698e-17 -90 90 1.241426611796983 -90 91 0.012962962962963 -90 92 -0.01342592592592599 -90 93 -0.1551783264746235 -90 94 0.02407407407407401 -90 95 -1.040834085586084e-17 -90 96 -0.1063100137174218 -90 856 -0.01296296296296293 -90 857 0.01342592592592586 -90 858 -0.1551783264746223 -90 859 -7.632783294297951e-17 -90 860 0.02870370370370371 -90 861 -0.2040466392318247 -90 862 0.01296296296296301 -90 863 0.01342592592592604 -90 864 -0.1551783264746237 -91 91 1 -92 92 1 -93 85 -0.012037037037037 -93 86 -0.01342592592592593 -93 87 -0.05315500685871079 -93 88 -0.012962962962963 -93 89 0.013425925925926 -93 90 -0.1551783264746235 -93 91 -6.071532165918825e-17 -93 92 -0.0287037037037037 -93 93 0.6207133058984913 -93 94 5.551115123125783e-17 -93 95 0.02870370370370368 -93 96 -0.2040466392318243 -93 97 0.01203703703703706 -93 98 -0.01342592592592592 -93 99 -0.05315500685871037 -93 100 0.01296296296296294 -93 101 0.01342592592592588 -93 102 -0.1551783264746223 -94 85 -0.0009703703703703681 -94 86 -0.0004999999999999994 -94 87 -0.008333333333333333 -94 88 -0.001659259259259263 -94 89 -4.336808689942018e-19 -94 90 -0.03333333333333334 -94 91 -0.0002814814814814802 -94 92 -1.301042606982605e-18 -94 93 -1.734723475976807e-18 -94 94 0.007762962962962966 -94 95 3.252606517456513e-19 -94 96 -1.387778780781446e-17 -94 97 -0.0009703703703703726 -94 98 0.0005000000000000007 -94 99 0.008333333333333335 -94 100 -0.001659259259259262 -94 101 2.168404344971009e-19 -94 102 0.03333333333333334 -94 859 -0.0009703703703703672 -94 860 0.000499999999999999 -94 861 -0.008333333333333342 -94 862 -0.0002814814814814809 -94 863 1.409462824231156e-18 -94 864 -5.204170427930421e-18 -94 865 -0.0009703703703703725 -94 866 -0.0005000000000000007 -94 867 0.008333333333333335 -95 85 -0.0004999999999999993 -95 86 -0.001040740740740736 -95 87 -0.009259259259259234 -95 88 -4.336808689942018e-19 -95 89 0.0002814814814814783 -95 90 -1.734723475976807e-17 -95 91 -1.517883041479706e-18 -95 92 -0.002362962962962962 -95 93 -0.03703703703703703 -95 94 3.252606517456513e-19 -95 95 0.008325925925925926 -95 96 2.081668171172169e-17 -95 97 0.0005000000000000007 -95 98 -0.001040740740740745 -95 99 -0.00925925925925928 -95 100 2.168404344971009e-19 -95 101 0.0002814814814814797 -95 102 -1.734723475976807e-18 -95 859 0.000499999999999999 -95 860 -0.001040740740740734 -95 861 0.009259259259259229 -95 862 1.517883041479706e-18 -95 863 -0.002362962962962963 -95 864 0.03703703703703704 -95 865 -0.0005000000000000007 -95 866 -0.001040740740740744 -95 867 0.009259259259259273 -96 85 -0.01296296296296294 -96 86 -0.01342592592592585 -96 87 -0.1551783264746223 -96 88 -0.02407407407407415 -96 89 -3.469446951953614e-18 -96 90 -0.1063100137174218 -96 91 -4.510281037539698e-17 -96 92 -0.02870370370370368 -96 93 -0.2040466392318243 -96 94 1.301042606982605e-16 -96 95 -3.295974604355933e-17 -96 96 1.241426611796983 -96 97 0.01296296296296298 -96 98 -0.01342592592592598 -96 99 -0.1551783264746232 -96 100 0.024074074074074 -96 101 -6.938893903907228e-18 -96 102 -0.1063100137174214 -96 859 -0.01296296296296293 -96 860 0.01342592592592586 -96 861 -0.1551783264746222 -96 862 -4.510281037539698e-17 -96 863 0.02870370370370371 -96 864 -0.2040466392318244 -96 865 0.01296296296296299 -96 866 0.01342592592592598 -96 867 -0.1551783264746232 -97 97 1 -98 98 1 -99 91 -0.01203703703703702 -99 92 -0.01342592592592593 -99 93 -0.05315500685871037 -99 94 -0.01296296296296299 -99 95 0.01342592592592598 -99 96 -0.1551783264746232 -99 97 -8.673617379884035e-18 -99 98 -0.0287037037037037 -99 99 0.6207133058984916 -99 100 8.673617379884035e-18 -99 101 0.02870370370370359 -99 102 -0.2040466392318241 -99 103 0.01203703703703703 -99 104 -0.01342592592592592 -99 105 -0.05315500685871093 -99 106 0.01296296296296298 -99 107 0.01342592592592597 -99 108 -0.155178326474623 -100 91 -0.0009703703703703687 -100 92 -0.0004999999999999995 -100 93 -0.008333333333333333 -100 94 -0.001659259259259262 -100 95 2.168404344971009e-19 -100 96 -0.03333333333333333 -100 97 -0.0002814814814814796 -100 98 -2.168404344971009e-19 -100 99 -1.734723475976807e-18 -100 100 0.007762962962962959 -100 101 6.505213034913027e-19 -100 102 3.469446951953614e-18 -100 103 -0.0009703703703703697 -100 104 0.0004999999999999997 -100 105 0.008333333333333333 -100 106 -0.001659259259259263 -100 107 -7.589415207398531e-19 -100 108 0.03333333333333334 -100 862 -0.0009703703703703687 -100 863 0.0004999999999999996 -100 864 -0.008333333333333331 -100 865 -0.0002814814814814781 -100 866 5.421010862427522e-19 -100 867 5.204170427930421e-18 -100 868 -0.0009703703703703707 -100 869 -0.0005 -100 870 0.008333333333333337 -101 91 -0.0004999999999999994 -101 92 -0.001040740740740737 -101 93 -0.009259259259259247 -101 94 2.168404344971009e-19 -101 95 0.0002814814814814797 -101 96 6.938893903907228e-18 -101 97 -2.168404344971009e-19 -101 98 -0.002362962962962961 -101 99 -0.03703703703703699 -101 100 6.505213034913027e-19 -101 101 0.008325925925925914 -101 102 5.551115123125783e-17 -101 103 0.0004999999999999997 -101 104 -0.001040740740740738 -101 105 -0.009259259259259245 -101 106 -6.505213034913027e-19 -101 107 0.0002814814814814791 -101 108 1.040834085586084e-17 -101 862 0.0004999999999999994 -101 863 -0.001040740740740737 -101 864 0.009259259259259247 -101 865 4.336808689942018e-19 -101 866 -0.002362962962962959 -101 867 0.03703703703703701 -101 868 -0.0005000000000000001 -101 869 -0.00104074074074074 -101 870 0.009259259259259248 -102 91 -0.01296296296296293 -102 92 -0.01342592592592587 -102 93 -0.1551783264746223 -102 94 -0.02407407407407412 -102 95 -1.734723475976807e-18 -102 96 -0.1063100137174214 -102 97 -1.040834085586084e-17 -102 98 -0.02870370370370375 -102 99 -0.2040466392318241 -102 100 1.040834085586084e-17 -102 101 -3.469446951953614e-17 -102 102 1.24142661179698 -102 103 0.01296296296296295 -102 104 -0.01342592592592587 -102 105 -0.1551783264746225 -102 106 0.02407407407407411 -102 107 1.561251128379126e-17 -102 108 -0.1063100137174215 -102 862 -0.01296296296296293 -102 863 0.01342592592592588 -102 864 -0.1551783264746223 -102 865 -1.734723475976807e-17 -102 866 0.02870370370370372 -102 867 -0.2040466392318236 -102 868 0.01296296296296295 -102 869 0.01342592592592591 -102 870 -0.1551783264746224 -103 103 1 -104 104 1 -105 97 -0.01203703703703706 -105 98 -0.01342592592592591 -105 99 -0.05315500685871093 -105 100 -0.01296296296296295 -105 101 0.01342592592592591 -105 102 -0.1551783264746225 -105 103 2.775557561562891e-17 -105 104 -0.02870370370370372 -105 105 0.6207133058984913 -105 106 -1.734723475976807e-18 -105 107 0.02870370370370373 -105 108 -0.2040466392318247 -105 109 0.01203703703703701 -105 110 -0.01342592592592596 -105 111 -0.05315500685871005 -105 112 0.01296296296296297 -105 113 0.01342592592592595 -105 114 -0.1551783264746231 -106 97 -0.0009703703703703719 -106 98 -0.0005000000000000004 -106 99 -0.008333333333333333 -106 100 -0.001659259259259263 -106 101 -7.589415207398531e-19 -106 102 -0.03333333333333334 -106 103 -0.0002814814814814828 -106 105 -8.673617379884035e-18 -106 106 0.007762962962962965 -106 107 1.301042606982605e-18 -106 108 -6.938893903907228e-18 -106 109 -0.0009703703703703689 -106 110 0.0004999999999999998 -106 111 0.008333333333333323 -106 112 -0.001659259259259252 -106 113 7.589415207398531e-19 -106 114 0.03333333333333334 -106 865 -0.0009703703703703712 -106 866 0.0005000000000000001 -106 867 -0.008333333333333342 -106 868 -0.0002814814814814827 -106 869 -5.421010862427522e-19 -106 870 3.469446951953614e-18 -106 871 -0.0009703703703703711 -106 872 -0.0005000000000000001 -106 873 0.008333333333333347 -107 97 -0.0005000000000000004 -107 98 -0.001040740740740743 -107 99 -0.009259259259259264 -107 100 -7.589415207398531e-19 -107 101 0.0002814814814814792 -107 102 -2.602085213965211e-17 -107 103 -3.252606517456513e-19 -107 104 -0.002362962962962965 -107 105 -0.03703703703703706 -107 106 1.084202172485504e-18 -107 107 0.008325925925925929 -107 108 -1.387778780781446e-17 -107 109 0.0004999999999999999 -107 110 -0.001040740740740742 -107 111 -0.009259259259259281 -107 112 7.589415207398531e-19 -107 113 0.0002814814814814875 -107 114 -1.734723475976807e-17 -107 865 0.0005000000000000001 -107 866 -0.00104074074074074 -107 867 0.009259259259259248 -107 868 -2.168404344971009e-19 -107 869 -0.002362962962962964 -107 870 0.03703703703703706 -107 871 -0.0005000000000000002 -107 872 -0.001040740740740742 -107 873 0.00925925925925928 -108 97 -0.01296296296296297 -108 98 -0.01342592592592593 -108 99 -0.155178326474623 -108 100 -0.02407407407407407 -108 101 1.040834085586084e-17 -108 102 -0.1063100137174215 -108 103 -1.734723475976807e-18 -108 104 -0.02870370370370372 -108 105 -0.2040466392318247 -108 106 2.255140518769849e-17 -108 107 2.775557561562891e-17 -108 108 1.241426611796983 -108 109 0.01296296296296296 -108 110 -0.01342592592592594 -108 111 -0.1551783264746229 -108 112 0.02407407407407405 -108 113 -3.816391647148976e-17 -108 114 -0.1063100137174205 -108 865 -0.01296296296296296 -108 866 0.01342592592592592 -108 867 -0.1551783264746225 -108 868 -2.949029909160572e-17 -108 869 0.02870370370370371 -108 870 -0.2040466392318249 -108 871 0.01296296296296301 -108 872 0.01342592592592596 -108 873 -0.1551783264746237 -109 109 1 -110 110 1 -111 103 -0.01203703703703702 -111 104 -0.01342592592592594 -111 105 -0.05315500685871008 -111 106 -0.01296296296296295 -111 107 0.01342592592592594 -111 108 -0.1551783264746229 -111 109 -1.908195823574488e-17 -111 110 -0.0287037037037038 -111 111 0.6207133058984919 -111 112 4.163336342344337e-17 -111 113 0.02870370370370384 -111 114 -0.2040466392318265 -111 115 0.01203703703703702 -111 116 -0.01342592592592596 -111 117 -0.05315500685870996 -111 118 0.01296296296296293 -111 119 0.01342592592592592 -111 120 -0.1551783264746225 -112 103 -0.0009703703703703708 -112 104 -0.0005000000000000002 -112 105 -0.008333333333333335 -112 106 -0.001659259259259252 -112 107 7.589415207398531e-19 -112 108 -0.03333333333333333 -112 109 -0.0002814814814814924 -112 110 -1.192622389734055e-18 -112 111 -1.214306433183765e-17 -112 112 0.007762962962962958 -112 113 1.084202172485504e-19 -112 114 -6.938893903907228e-18 -112 115 -0.0009703703703703717 -112 116 0.0005000000000000008 -112 117 0.008333333333333323 -112 118 -0.001659259259259245 -112 119 5.421010862427522e-19 -112 120 0.03333333333333333 -112 868 -0.0009703703703703691 -112 869 0.0004999999999999998 -112 870 -0.008333333333333333 -112 871 -0.0002814814814814848 -112 872 -1.084202172485504e-19 -112 873 3.469446951953614e-18 -112 874 -0.0009703703703703714 -112 875 -0.0005000000000000004 -112 876 0.008333333333333344 -113 103 -0.0005000000000000001 -113 104 -0.001040740740740742 -113 105 -0.009259259259259278 -113 106 7.589415207398531e-19 -113 107 0.0002814814814814874 -113 109 -1.192622389734055e-18 -113 110 -0.002362962962962977 -113 111 -0.03703703703703713 -113 113 0.008325925925925938 -113 114 -1.734723475976807e-17 -113 115 0.0005000000000000007 -113 116 -0.001040740740740747 -113 117 -0.009259259259259316 -113 118 7.589415207398531e-19 -113 119 0.0002814814814814953 -113 120 -3.642919299551295e-17 -113 868 0.0004999999999999998 -113 869 -0.001040740740740741 -113 870 0.009259259259259285 -113 871 -2.168404344971009e-19 -113 872 -0.002362962962962968 -113 873 0.03703703703703714 -113 874 -0.0005000000000000004 -113 875 -0.001040740740740744 -113 876 0.0092592592592593 -114 103 -0.01296296296296299 -114 104 -0.01342592592592594 -114 105 -0.1551783264746231 -114 106 -0.02407407407407406 -114 107 -5.204170427930421e-18 -114 108 -0.1063100137174205 -114 109 -3.642919299551295e-17 -114 110 -0.02870370370370381 -114 111 -0.2040466392318265 -114 112 2.949029909160572e-17 -114 113 4.163336342344337e-17 -114 114 1.241426611796986 -114 115 0.012962962962963 -114 116 -0.01342592592592598 -114 117 -0.1551783264746235 -114 118 0.02407407407407403 -114 119 -3.469446951953614e-18 -114 120 -0.1063100137174192 -114 868 -0.01296296296296297 -114 869 0.01342592592592596 -114 870 -0.1551783264746235 -114 871 -1.214306433183765e-17 -114 872 0.02870370370370377 -114 873 -0.2040466392318259 -114 874 0.01296296296296301 -114 875 0.01342592592592598 -114 876 -0.1551783264746236 -115 115 1 -116 116 1 -117 109 -0.01203703703703697 -117 110 -0.01342592592592597 -117 111 -0.05315500685870997 -117 112 -0.01296296296296298 -117 113 0.01342592592592604 -117 114 -0.1551783264746235 -117 115 -9.020562075079397e-17 -117 116 -0.02870370370370373 -117 117 0.6207133058984908 -117 118 5.551115123125783e-17 -117 119 0.0287037037037037 -117 120 -0.2040466392318251 -117 121 0.01203703703703706 -117 122 -0.01342592592592589 -117 123 -0.05315500685871052 -117 124 0.01296296296296293 -117 125 0.01342592592592585 -117 126 -0.1551783264746218 -118 109 -0.0009703703703703673 -118 110 -0.0004999999999999994 -118 111 -0.008333333333333323 -118 112 -0.001659259259259245 -118 113 7.589415207398531e-19 -118 114 -0.03333333333333333 -118 115 -0.0002814814814814864 -118 116 -1.301042606982605e-18 -118 117 1.734723475976807e-18 -118 118 0.00776296296296296 -118 119 -6.505213034913027e-19 -118 121 -0.0009703703703703728 -118 122 0.0005000000000000007 -118 123 0.008333333333333323 -118 124 -0.001659259259259265 -118 125 5.421010862427522e-19 -118 126 0.03333333333333332 -118 871 -0.0009703703703703692 -118 872 0.0004999999999999997 -118 873 -0.008333333333333342 -118 874 -0.0002814814814814797 -118 875 5.421010862427522e-19 -118 876 1.214306433183765e-17 -118 877 -0.000970370370370374 -118 878 -0.0005000000000000009 -118 879 0.008333333333333345 -119 109 -0.0004999999999999994 -119 110 -0.001040740740740739 -119 111 -0.00925925925925928 -119 112 5.421010862427522e-19 -119 113 0.0002814814814814953 -119 115 -1.409462824231156e-18 -119 116 -0.00236296296296297 -119 117 -0.03703703703703705 -119 118 -5.421010862427522e-19 -119 119 0.008325925925925924 -119 120 3.469446951953614e-18 -119 121 0.0005000000000000007 -119 122 -0.001040740740740745 -119 123 -0.009259259259259262 -119 124 6.505213034913027e-19 -119 125 0.000281481481481478 -119 126 1.387778780781446e-17 -119 871 0.0004999999999999998 -119 872 -0.00104074074074074 -119 873 0.00925925925925928 -119 874 4.336808689942018e-19 -119 875 -0.002362962962962961 -119 876 0.03703703703703705 -119 877 -0.0005000000000000009 -119 878 -0.001040740740740744 -119 879 0.009259259259259266 -120 109 -0.01296296296296295 -120 110 -0.01342592592592587 -120 111 -0.1551783264746225 -120 112 -0.02407407407407411 -120 113 -6.938893903907228e-18 -120 114 -0.1063100137174192 -120 115 -1.734723475976807e-17 -120 116 -0.02870370370370377 -120 117 -0.2040466392318251 -120 118 9.194034422677078e-17 -120 119 2.602085213965211e-17 -120 120 1.241426611796981 -120 121 0.01296296296296296 -120 122 -0.01342592592592595 -120 123 -0.1551783264746228 -120 124 0.024074074074074 -120 125 -2.081668171172169e-17 -120 126 -0.1063100137174216 -120 871 -0.01296296296296298 -120 872 0.01342592592592592 -120 873 -0.1551783264746231 -120 874 1.387778780781446e-17 -120 875 0.02870370370370374 -120 876 -0.2040466392318243 -120 877 0.01296296296296298 -120 878 0.01342592592592593 -120 879 -0.155178326474623 -121 121 1 -122 122 1 -123 115 -0.01203703703703701 -123 116 -0.0134259259259259 -123 117 -0.05315500685871052 -123 118 -0.01296296296296298 -123 119 0.01342592592592597 -123 120 -0.1551783264746228 -123 121 -2.081668171172169e-17 -123 122 -0.02870370370370362 -123 123 0.6207133058984889 -123 124 3.642919299551295e-17 -123 125 0.02870370370370359 -123 126 -0.2040466392318229 -123 127 0.01203703703703704 -123 128 -0.01342592592592588 -123 129 -0.05315500685871069 -123 130 0.01296296296296293 -123 131 0.01342592592592584 -123 132 -0.155178326474622 -124 115 -0.0009703703703703684 -124 116 -0.0004999999999999994 -124 117 -0.008333333333333325 -124 118 -0.001659259259259265 -124 119 6.505213034913027e-19 -124 120 -0.03333333333333332 -124 121 -0.0002814814814814772 -124 122 -2.168404344971009e-19 -124 123 8.673617379884035e-18 -124 124 0.007762962962962961 -124 125 -1.517883041479706e-18 -124 126 -3.469446951953614e-18 -124 127 -0.0009703703703703721 -124 128 0.0005000000000000002 -124 129 0.008333333333333333 -124 130 -0.001659259259259268 -124 131 -4.336808689942018e-19 -124 132 0.03333333333333331 -124 874 -0.0009703703703703683 -124 875 0.0004999999999999994 -124 876 -0.008333333333333331 -124 877 -0.0002814814814814742 -124 878 5.421010862427522e-19 -124 879 -1.040834085586084e-17 -124 880 -0.0009703703703703684 -124 881 -0.0004999999999999995 -124 882 0.008333333333333321 -125 115 -0.0004999999999999993 -125 116 -0.001040740740740736 -125 117 -0.009259259259259224 -125 118 5.421010862427522e-19 -125 119 0.0002814814814814782 -125 120 3.122502256758253e-17 -125 121 -2.168404344971009e-19 -125 122 -0.002362962962962957 -125 123 -0.03703703703703692 -125 124 -1.301042606982605e-18 -125 125 0.008325925925925907 -125 126 -3.469446951953614e-17 -125 127 0.0005 -125 128 -0.00104074074074074 -125 129 -0.009259259259259215 -125 130 -7.589415207398531e-19 -125 131 0.0002814814814814733 -125 132 3.989863994746656e-17 -125 874 0.0004999999999999993 -125 875 -0.001040740740740736 -125 876 0.00925925925925924 -125 877 1.084202172485504e-18 -125 878 -0.002362962962962953 -125 879 0.03703703703703691 -125 880 -0.0004999999999999995 -125 881 -0.001040740740740738 -125 882 0.009259259259259236 -126 115 -0.01296296296296291 -126 116 -0.01342592592592583 -126 117 -0.1551783264746218 -126 118 -0.02407407407407411 -126 120 -0.1063100137174216 -126 121 -3.642919299551295e-17 -126 122 -0.0287037037037036 -126 123 -0.2040466392318229 -126 124 2.081668171172169e-17 -126 125 -4.683753385137379e-17 -126 126 1.241426611796977 -126 127 0.01296296296296296 -126 128 -0.01342592592592593 -126 129 -0.1551783264746223 -126 130 0.02407407407407409 -126 131 2.602085213965211e-17 -126 132 -0.1063100137174221 -126 874 -0.01296296296296291 -126 875 0.01342592592592582 -126 876 -0.1551783264746219 -126 877 -1.561251128379126e-17 -126 878 0.02870370370370372 -126 879 -0.2040466392318225 -126 880 0.01296296296296292 -126 881 0.01342592592592584 -126 882 -0.1551783264746219 -127 127 1 -128 128 1 -129 121 -0.01203703703703703 -129 122 -0.0134259259259259 -129 123 -0.05315500685871068 -129 124 -0.01296296296296296 -129 125 0.01342592592592587 -129 126 -0.1551783264746223 -129 127 2.775557561562891e-17 -129 128 -0.02870370370370361 -129 129 0.6207133058984895 -129 130 -5.898059818321144e-17 -129 131 0.02870370370370357 -129 132 -0.2040466392318225 -129 133 0.01203703703703703 -129 134 -0.0134259259259259 -129 135 -0.05315500685871103 -129 136 0.01296296296296299 -129 137 0.01342592592592597 -129 138 -0.155178326474623 -130 121 -0.0009703703703703696 -130 122 -0.0004999999999999997 -130 123 -0.008333333333333321 -130 124 -0.001659259259259268 -130 125 -7.589415207398531e-19 -130 126 -0.03333333333333331 -130 127 -0.0002814814814814737 -130 128 1.409462824231156e-18 -130 129 1.734723475976807e-17 -130 130 0.007762962962962963 -130 131 -1.192622389734055e-18 -130 132 3.469446951953614e-18 -130 133 -0.00097037037037037 -130 134 0.0004999999999999996 -130 135 0.008333333333333344 -130 136 -0.001659259259259265 -130 137 -2.168404344971009e-19 -130 138 0.03333333333333333 -130 877 -0.0009703703703703731 -130 878 0.0005000000000000002 -130 879 -0.00833333333333334 -130 880 -0.0002814814814814745 -130 881 2.168404344971009e-19 -130 882 -1.040834085586084e-17 -130 883 -0.0009703703703703685 -130 884 -0.0004999999999999994 -130 885 0.008333333333333325 -131 121 -0.0004999999999999997 -131 122 -0.001040740740740739 -131 123 -0.009259259259259215 -131 124 -5.421010862427522e-19 -131 125 0.0002814814814814733 -131 126 3.989863994746656e-17 -131 127 1.626303258728257e-18 -131 128 -0.002362962962962953 -131 129 -0.03703703703703692 -131 130 -1.409462824231156e-18 -131 131 0.008325925925925905 -131 132 -4.85722573273506e-17 -131 133 0.0004999999999999996 -131 134 -0.001040740740740736 -131 135 -0.009259259259259224 -131 136 -3.252606517456513e-19 -131 137 0.0002814814814814783 -131 138 3.122502256758253e-17 -131 877 0.0005000000000000002 -131 878 -0.00104074074074074 -131 879 0.009259259259259238 -131 880 -2.168404344971009e-19 -131 881 -0.002362962962962953 -131 882 0.0370370370370369 -131 883 -0.0004999999999999993 -131 884 -0.001040740740740736 -131 885 0.009259259259259236 -132 121 -0.01296296296296292 -132 122 -0.01342592592592592 -132 123 -0.155178326474622 -132 124 -0.02407407407407408 -132 125 -1.734723475976807e-17 -132 126 -0.1063100137174221 -132 127 1.908195823574488e-17 -132 128 -0.0287037037037036 -132 129 -0.2040466392318225 -132 130 -2.602085213965211e-17 -132 131 -2.949029909160572e-17 -132 132 1.241426611796977 -132 133 0.01296296296296294 -132 134 -0.01342592592592585 -132 135 -0.1551783264746222 -132 136 0.02407407407407411 -132 137 5.204170427930421e-18 -132 138 -0.1063100137174216 -132 877 -0.01296296296296298 -132 878 0.01342592592592587 -132 879 -0.1551783264746225 -132 880 3.989863994746656e-17 -132 881 0.02870370370370372 -132 882 -0.2040466392318225 -132 883 0.0129629629629629 -132 884 0.01342592592592581 -132 885 -0.1551783264746217 -133 133 1 -134 134 1 -135 127 -0.01203703703703709 -135 128 -0.01342592592592591 -135 129 -0.05315500685871102 -135 130 -0.01296296296296295 -135 131 0.01342592592592587 -135 132 -0.1551783264746222 -135 133 1.07552855510562e-16 -135 134 -0.02870370370370366 -135 135 0.6207133058984919 -135 136 -6.418476861114186e-17 -135 137 0.02870370370370361 -135 138 -0.2040466392318238 -135 139 0.01203703703703698 -135 140 -0.01342592592592597 -135 141 -0.05315500685871077 -135 142 0.01296296296296302 -135 143 0.01342592592592606 -135 144 -0.1551783264746242 -136 127 -0.0009703703703703723 -136 128 -0.0005000000000000006 -136 129 -0.008333333333333333 -136 130 -0.001659259259259265 -136 131 -3.252606517456513e-19 -136 132 -0.03333333333333333 -136 133 -0.000281481481481477 -136 134 1.734723475976807e-18 -136 135 -1.734723475976807e-18 -136 136 0.007762962962962958 -136 137 4.336808689942018e-19 -136 138 -1.387778780781446e-17 -136 139 -0.000970370370370366 -136 140 0.0004999999999999988 -136 141 0.008333333333333335 -136 142 -0.001659259259259252 -136 143 -2.168404344971009e-19 -136 144 0.03333333333333332 -136 880 -0.0009703703703703724 -136 881 0.0005000000000000006 -136 882 -0.008333333333333323 -136 883 -0.0002814814814814865 -136 884 -1.192622389734055e-18 -136 885 -1.734723475976807e-18 -136 886 -0.0009703703703703666 -136 887 -0.0004999999999999991 -136 888 0.008333333333333323 -137 127 -0.0005000000000000004 -137 128 -0.001040740740740744 -137 129 -0.009259259259259262 -137 130 -3.252606517456513e-19 -137 131 0.0002814814814814783 -137 132 2.775557561562891e-17 -137 133 1.626303258728257e-18 -137 134 -0.002362962962962958 -137 135 -0.03703703703703701 -137 136 3.252606517456513e-19 -137 137 0.008325925925925921 -137 138 -3.469446951953614e-18 -137 139 0.0004999999999999988 -137 140 -0.001040740740740734 -137 141 -0.009259259259259247 -137 142 -3.252606517456513e-19 -137 143 0.0002814814814814875 -137 144 -1.387778780781446e-17 -137 880 0.0005000000000000007 -137 881 -0.001040740740740745 -137 882 0.009259259259259273 -137 883 -1.517883041479706e-18 -137 884 -0.002362962962962969 -137 885 0.03703703703703701 -137 886 -0.0004999999999999991 -137 887 -0.001040740740740736 -137 888 0.009259259259259241 -138 127 -0.01296296296296296 -138 128 -0.01342592592592596 -138 129 -0.155178326474623 -138 130 -0.02407407407407402 -138 131 8.673617379884035e-18 -138 132 -0.1063100137174216 -138 133 3.122502256758253e-17 -138 134 -0.02870370370370373 -138 135 -0.2040466392318238 -138 136 -1.110223024625157e-16 -138 137 1.387778780781446e-17 -138 138 1.241426611796981 -138 139 0.01296296296296293 -138 140 -0.01342592592592584 -138 141 -0.1551783264746224 -138 142 0.02407407407407414 -138 143 1.734723475976807e-17 -138 144 -0.1063100137174203 -138 880 -0.01296296296296296 -138 881 0.01342592592592591 -138 882 -0.1551783264746227 -138 883 1.734723475976807e-17 -138 884 0.02870370370370372 -138 885 -0.204046639231825 -138 886 0.01296296296296294 -138 887 0.01342592592592587 -138 888 -0.1551783264746223 -139 139 1 -140 140 1 -141 133 -0.01203703703703707 -141 134 -0.01342592592592594 -141 135 -0.05315500685871077 -141 136 -0.01296296296296292 -141 137 0.01342592592592586 -141 138 -0.1551783264746224 -141 139 1.214306433183765e-17 -141 140 -0.02870370370370379 -141 141 0.6207133058984922 -141 142 -2.081668171172169e-17 -141 143 0.02870370370370388 -141 144 -0.2040466392318262 -141 145 0.01203703703703704 -141 146 -0.01342592592592595 -141 147 -0.05315500685870993 -141 148 0.01296296296296295 -141 149 0.01342592592592594 -141 150 -0.1551783264746227 -142 133 -0.0009703703703703747 -142 134 -0.0005000000000000013 -142 135 -0.008333333333333342 -142 136 -0.001659259259259252 -142 137 -3.252606517456513e-19 -142 138 -0.03333333333333332 -142 139 -0.0002814814814814892 -142 140 3.252606517456513e-19 -142 141 -8.673617379884035e-18 -142 142 0.007762962962962963 -142 143 -6.505213034913027e-19 -142 144 6.938893903907228e-18 -142 145 -0.0009703703703703708 -142 146 0.0005000000000000004 -142 147 0.008333333333333335 -142 148 -0.001659259259259247 -142 149 1.301042606982605e-18 -142 150 0.03333333333333334 -142 883 -0.0009703703703703734 -142 884 0.000500000000000001 -142 885 -0.008333333333333325 -142 886 -0.0002814814814814873 -142 887 -1.084202172485504e-18 -142 889 -0.0009703703703703686 -142 890 -0.0004999999999999997 -142 891 0.008333333333333337 -143 133 -0.0005000000000000012 -143 134 -0.001040740740740749 -143 135 -0.009259259259259302 -143 136 -2.168404344971009e-19 -143 137 0.0002814814814814877 -143 138 -3.295974604355933e-17 -143 139 2.168404344971009e-19 -143 140 -0.002362962962962973 -143 141 -0.03703703703703715 -143 142 -7.589415207398531e-19 -143 143 0.008325925925925947 -143 144 -3.469446951953614e-17 -143 145 0.0005000000000000003 -143 146 -0.001040740740740745 -143 147 -0.009259259259259311 -143 148 1.409462824231156e-18 -143 149 0.0002814814814814918 -143 150 -6.418476861114186e-17 -143 883 0.000500000000000001 -143 884 -0.001040740740740748 -143 885 0.009259259259259287 -143 886 -9.75781955236954e-19 -143 887 -0.002362962962962971 -143 888 0.03703703703703715 -143 889 -0.0004999999999999996 -143 890 -0.00104074074074074 -143 891 0.009259259259259283 -144 133 -0.01296296296296305 -144 134 -0.01342592592592604 -144 135 -0.1551783264746242 -144 136 -0.02407407407407397 -144 137 8.673617379884035e-18 -144 138 -0.1063100137174203 -144 139 5.030698080332741e-17 -144 140 -0.02870370370370373 -144 141 -0.2040466392318262 -144 142 -8.153200337090993e-17 -144 143 6.938893903907228e-18 -144 144 1.241426611796986 -144 145 0.01296296296296298 -144 146 -0.01342592592592597 -144 147 -0.1551783264746232 -144 148 0.02407407407407408 -144 149 8.673617379884035e-18 -144 150 -0.1063100137174195 -144 883 -0.01296296296296301 -144 884 0.01342592592592604 -144 885 -0.1551783264746237 -144 886 4.163336342344337e-17 -144 887 0.02870370370370374 -144 888 -0.2040466392318257 -144 889 0.01296296296296296 -144 890 0.01342592592592593 -144 891 -0.1551783264746227 -145 145 1 -146 146 1 -147 139 -0.01203703703703702 -147 140 -0.01342592592592596 -147 141 -0.05315500685870993 -147 142 -0.01296296296296298 -147 143 0.013425925925926 -147 144 -0.1551783264746233 -147 145 -1.561251128379126e-17 -147 146 -0.02870370370370377 -147 147 0.6207133058984923 -147 148 2.081668171172169e-17 -147 149 0.02870370370370374 -147 150 -0.2040466392318256 -147 151 0.01203703703703704 -147 152 -0.01342592592592593 -147 153 -0.05315500685871073 -147 154 0.01296296296296296 -147 155 0.01342592592592592 -147 156 -0.1551783264746228 -148 139 -0.0009703703703703685 -148 140 -0.0004999999999999998 -148 141 -0.008333333333333331 -148 142 -0.001659259259259247 -148 143 1.409462824231156e-18 -148 144 -0.03333333333333334 -148 145 -0.0002814814814814868 -148 146 -4.336808689942018e-19 -148 147 -1.734723475976807e-18 -148 148 0.007762962962962961 -148 149 -1.951563910473908e-18 -148 150 -3.469446951953614e-18 -148 151 -0.0009703703703703711 -148 152 0.0005000000000000002 -148 153 0.008333333333333335 -148 154 -0.001659259259259259 -148 155 7.589415207398531e-19 -148 156 0.03333333333333334 -148 886 -0.0009703703703703708 -148 887 0.0005000000000000002 -148 888 -0.00833333333333334 -148 889 -0.0002814814814814862 -148 890 -4.336808689942018e-19 -148 891 -3.469446951953614e-18 -148 892 -0.0009703703703703704 -148 893 -0.0004999999999999999 -148 894 0.008333333333333335 -149 139 -0.0004999999999999996 -149 140 -0.001040740740740741 -149 141 -0.00925925925925929 -149 142 1.301042606982605e-18 -149 143 0.0002814814814814918 -149 144 8.673617379884035e-18 -149 145 -4.336808689942018e-19 -149 146 -0.00236296296296297 -149 147 -0.03703703703703709 -149 148 -2.059984127722458e-18 -149 149 0.008325925925925935 -149 150 3.469446951953614e-17 -149 151 0.0005000000000000002 -149 152 -0.001040740740740742 -149 153 -0.009259259259259266 -149 154 6.505213034913027e-19 -149 155 0.0002814814814814816 -149 156 -3.469446951953614e-17 -149 886 0.0005000000000000003 -149 887 -0.001040740740740744 -149 888 0.009259259259259302 -149 889 -6.505213034913027e-19 -149 890 -0.002362962962962969 -149 891 0.03703703703703713 -149 892 -0.0004999999999999999 -149 893 -0.00104074074074074 -149 894 0.009259259259259255 -150 139 -0.01296296296296295 -150 140 -0.0134259259259259 -150 141 -0.1551783264746227 -150 142 -0.02407407407407407 -150 143 -3.469446951953614e-18 -150 144 -0.1063100137174195 -150 145 -2.081668171172169e-17 -150 146 -0.02870370370370384 -150 147 -0.2040466392318256 -150 148 1.040834085586084e-17 -150 149 3.122502256758253e-17 -150 150 1.241426611796983 -150 151 0.01296296296296297 -150 152 -0.01342592592592594 -150 153 -0.1551783264746231 -150 154 0.02407407407407405 -150 155 -1.734723475976807e-18 -150 156 -0.1063100137174212 -150 886 -0.01296296296296298 -150 887 0.01342592592592599 -150 888 -0.1551783264746232 -150 889 2.42861286636753e-17 -150 890 0.02870370370370373 -150 891 -0.2040466392318254 -150 892 0.01296296296296297 -150 893 0.01342592592592593 -150 894 -0.1551783264746228 -151 151 1 -152 152 1 -153 145 -0.01203703703703703 -153 146 -0.01342592592592593 -153 147 -0.05315500685871073 -153 148 -0.01296296296296298 -153 149 0.01342592592592595 -153 150 -0.1551783264746231 -153 151 -6.938893903907228e-18 -153 152 -0.02870370370370368 -153 153 0.6207133058984917 -153 154 1.908195823574488e-17 -153 155 0.02870370370370366 -153 156 -0.2040466392318245 -153 157 0.01203703703703702 -153 158 -0.01342592592592594 -153 159 -0.05315500685871044 -153 160 0.01296296296296297 -153 161 0.01342592592592594 -153 162 -0.1551783264746229 -154 145 -0.00097037037037037 -154 146 -0.0004999999999999999 -154 147 -0.008333333333333333 -154 148 -0.001659259259259259 -154 149 6.505213034913027e-19 -154 150 -0.03333333333333333 -154 151 -0.0002814814814814816 -154 152 -6.505213034913027e-19 -154 153 -1.040834085586084e-17 -154 154 0.007762962962962963 -154 155 3.252606517456513e-19 -154 156 -6.938893903907228e-18 -154 157 -0.0009703703703703694 -154 158 0.0004999999999999998 -154 159 0.008333333333333325 -154 160 -0.001659259259259259 -154 161 4.336808689942018e-19 -154 162 0.03333333333333334 -154 889 -0.0009703703703703709 -154 890 0.0005000000000000002 -154 891 -0.008333333333333331 -154 892 -0.0002814814814814812 -154 893 -6.505213034913027e-19 -154 894 3.469446951953614e-18 -154 895 -0.0009703703703703717 -154 896 -0.0005000000000000003 -154 897 0.008333333333333344 -155 145 -0.0004999999999999999 -155 146 -0.00104074074074074 -155 147 -0.009259259259259257 -155 148 8.673617379884035e-19 -155 149 0.0002814814814814817 -155 150 3.469446951953614e-18 -155 151 -6.505213034913027e-19 -155 152 -0.002362962962962963 -155 153 -0.03703703703703702 -155 154 2.168404344971009e-19 -155 155 0.008325925925925926 -155 156 6.938893903907228e-18 -155 157 0.0004999999999999999 -155 158 -0.001040740740740741 -155 159 -0.009259259259259259 -155 160 3.252606517456513e-19 -155 161 0.0002814814814814817 -155 162 -5.204170427930421e-18 -155 889 0.0005000000000000001 -155 890 -0.001040740740740742 -155 891 0.009259259259259266 -155 892 -5.421010862427522e-19 -155 893 -0.002362962962962963 -155 894 0.03703703703703706 -155 895 -0.0005000000000000002 -155 896 -0.001040740740740741 -155 897 0.009259259259259264 -156 145 -0.01296296296296296 -156 146 -0.01342592592592591 -156 147 -0.1551783264746228 -156 148 -0.02407407407407408 -156 149 3.469446951953614e-18 -156 150 -0.1063100137174212 -156 151 1.734723475976807e-18 -156 152 -0.02870370370370375 -156 153 -0.2040466392318245 -156 154 5.204170427930421e-18 -156 155 5.898059818321144e-17 -156 156 1.241426611796983 -156 157 0.01296296296296294 -156 158 -0.01342592592592592 -156 159 -0.1551783264746227 -156 160 0.02407407407407407 -156 161 -1.387778780781446e-17 -156 162 -0.1063100137174211 -156 889 -0.01296296296296297 -156 890 0.01342592592592595 -156 891 -0.155178326474623 -156 892 8.673617379884035e-18 -156 893 0.02870370370370365 -156 894 -0.2040466392318246 -156 895 0.01296296296296299 -156 896 0.01342592592592594 -156 897 -0.1551783264746231 -157 157 1 -158 158 1 -159 151 -0.01203703703703703 -159 152 -0.01342592592592591 -159 153 -0.05315500685871044 -159 154 -0.01296296296296295 -159 155 0.01342592592592591 -159 156 -0.1551783264746227 -159 157 8.673617379884035e-18 -159 158 -0.0287037037037037 -159 159 0.6207133058984911 -159 160 3.469446951953614e-18 -159 161 0.0287037037037037 -159 162 -0.2040466392318249 -159 163 0.01203703703703701 -159 164 -0.01342592592592592 -159 165 -0.05315500685871019 -159 166 0.01296296296296296 -159 167 0.01342592592592593 -159 168 -0.1551783264746228 -160 151 -0.0009703703703703718 -160 152 -0.0005000000000000003 -160 153 -0.008333333333333335 -160 154 -0.001659259259259259 -160 155 3.252606517456513e-19 -160 156 -0.03333333333333333 -160 157 -0.0002814814814814848 -160 158 -2.168404344971009e-19 -160 159 -1.387778780781446e-17 -160 160 0.007762962962962964 -160 161 2.059984127722458e-18 -160 162 -3.469446951953614e-18 -160 163 -0.0009703703703703698 -160 164 0.0004999999999999999 -160 165 0.008333333333333323 -160 166 -0.001659259259259258 -160 167 -3.252606517456513e-19 -160 168 0.03333333333333333 -160 892 -0.0009703703703703698 -160 893 0.0004999999999999999 -160 894 -0.008333333333333333 -160 895 -0.0002814814814814782 -160 896 -7.589415207398531e-19 -160 897 1.908195823574488e-17 -160 898 -0.0009703703703703725 -160 899 -0.0005000000000000004 -160 900 0.008333333333333345 -161 151 -0.0005000000000000003 -161 152 -0.001040740740740742 -161 153 -0.009259259259259259 -161 154 5.421010862427522e-19 -161 155 0.0002814814814814818 -161 156 -5.204170427930421e-18 -161 157 -1.084202172485504e-19 -161 158 -0.002362962962962968 -161 159 -0.03703703703703703 -161 160 1.843143693225358e-18 -161 161 0.008325925925925926 -161 162 -2.081668171172169e-17 -161 163 0.0004999999999999999 -161 164 -0.001040740740740741 -161 165 -0.009259259259259252 -161 166 -4.336808689942018e-19 -161 167 0.0002814814814814829 -161 168 2.42861286636753e-17 -161 892 0.0004999999999999998 -161 893 -0.00104074074074074 -161 894 0.009259259259259262 -161 895 -6.505213034913027e-19 -161 896 -0.002362962962962959 -161 897 0.03703703703703705 -161 898 -0.0005000000000000004 -161 899 -0.001040740740740742 -161 900 0.009259259259259269 -162 151 -0.01296296296296298 -162 152 -0.01342592592592593 -162 153 -0.1551783264746229 -162 154 -0.02407407407407407 -162 155 8.673617379884035e-18 -162 156 -0.1063100137174212 -162 157 1.214306433183765e-17 -162 158 -0.02870370370370372 -162 159 -0.2040466392318249 -162 160 -3.469446951953614e-18 -162 161 2.775557561562891e-17 -162 162 1.241426611796982 -162 163 0.01296296296296295 -162 164 -0.01342592592592592 -162 165 -0.1551783264746225 -162 166 0.02407407407407406 -162 167 -1.387778780781446e-17 -162 168 -0.1063100137174209 -162 892 -0.01296296296296295 -162 893 0.01342592592592593 -162 894 -0.1551783264746229 -162 896 0.02870370370370368 -162 897 -0.204046639231824 -162 898 0.01296296296296299 -162 899 0.01342592592592594 -162 900 -0.1551783264746231 -163 163 1 -164 164 1 -165 157 -0.01203703703703702 -165 158 -0.01342592592592592 -165 159 -0.05315500685871019 -165 160 -0.01296296296296295 -165 161 0.0134259259259259 -165 162 -0.1551783264746225 -165 163 5.204170427930421e-18 -165 164 -0.02870370370370369 -165 165 0.6207133058984896 -165 166 -1.908195823574488e-17 -165 167 0.0287037037037037 -165 168 -0.204046639231824 -165 169 0.01203703703703704 -165 170 -0.01342592592592588 -165 171 -0.05315500685871059 -165 172 0.01296296296296294 -165 173 0.01342592592592589 -165 174 -0.1551783264746222 -166 157 -0.000970370370370371 -166 158 -0.0005000000000000002 -166 159 -0.008333333333333323 -166 160 -0.001659259259259258 -166 161 -4.336808689942018e-19 -166 162 -0.03333333333333333 -166 163 -0.0002814814814814818 -166 164 1.301042606982605e-18 -166 165 1.561251128379126e-17 -166 166 0.007762962962962964 -166 167 4.336808689942018e-19 -166 168 -6.938893903907228e-18 -166 169 -0.0009703703703703722 -166 170 0.0005000000000000001 -166 171 0.008333333333333344 -166 172 -0.001659259259259265 -166 173 -2.38524477946811e-18 -166 174 0.03333333333333333 -166 895 -0.0009703703703703687 -166 896 0.0004999999999999998 -166 897 -0.008333333333333333 -166 898 -0.0002814814814814782 -166 899 1.084202172485504e-18 -166 900 -1.387778780781446e-17 -166 901 -0.0009703703703703688 -166 902 -0.0004999999999999997 -166 903 0.008333333333333312 -167 157 -0.0005000000000000003 -167 158 -0.001040740740740743 -167 159 -0.00925925925925926 -167 160 -3.252606517456513e-19 -167 161 0.0002814814814814829 -167 162 -1.387778780781446e-17 -167 163 1.301042606982605e-18 -167 164 -0.002362962962962963 -167 165 -0.03703703703703701 -167 166 4.336808689942018e-19 -167 167 0.008325925925925924 -167 168 -3.469446951953614e-18 -167 169 0.0005000000000000001 -167 170 -0.001040740740740739 -167 171 -0.009259259259259228 -167 172 -2.38524477946811e-18 -167 173 0.0002814814814814764 -167 174 6.938893903907228e-17 -167 895 0.0004999999999999996 -167 896 -0.001040740740740739 -167 897 0.009259259259259262 -167 898 1.301042606982605e-18 -167 899 -0.002362962962962959 -167 900 0.03703703703703698 -167 901 -0.0004999999999999998 -167 902 -0.001040740740740741 -167 903 0.009259259259259245 -168 157 -0.01296296296296296 -168 158 -0.01342592592592595 -168 159 -0.1551783264746228 -168 160 -0.02407407407407407 -168 161 1.214306433183765e-17 -168 162 -0.1063100137174209 -168 163 3.122502256758253e-17 -168 164 -0.02870370370370363 -168 165 -0.204046639231824 -168 166 -2.602085213965211e-17 -168 167 -6.938893903907228e-17 -168 168 1.241426611796979 -168 169 0.01296296296296297 -168 170 -0.01342592592592589 -168 171 -0.1551783264746222 -168 172 0.02407407407407409 -168 173 2.775557561562891e-17 -168 174 -0.1063100137174215 -168 895 -0.01296296296296295 -168 896 0.01342592592592589 -168 897 -0.1551783264746225 -168 898 6.938893903907228e-18 -168 899 0.02870370370370371 -168 900 -0.2040466392318234 -168 901 0.01296296296296291 -168 902 0.01342592592592589 -168 903 -0.155178326474622 -169 169 1 -170 170 1 -171 163 -0.01203703703703706 -171 164 -0.01342592592592592 -171 165 -0.05315500685871062 -171 166 -0.01296296296296295 -171 167 0.01342592592592588 -171 168 -0.1551783264746222 -171 169 4.336808689942018e-17 -171 170 -0.02870370370370364 -171 171 0.6207133058984891 -171 172 -7.28583859910259e-17 -171 173 0.02870370370370364 -171 174 -0.2040466392318223 -171 175 0.01203703703703704 -171 176 -0.01342592592592591 -171 177 -0.05315500685871088 -171 178 0.012962962962963 -171 179 0.01342592592592595 -171 180 -0.1551783264746231 -172 163 -0.0009703703703703698 -172 164 -0.0005000000000000001 -172 165 -0.008333333333333321 -172 166 -0.001659259259259265 -172 167 -2.49366499671666e-18 -172 168 -0.03333333333333331 -172 169 -0.000281481481481472 -172 170 1.843143693225358e-18 -172 171 1.561251128379126e-17 -172 172 0.00776296296296297 -172 173 6.505213034913027e-19 -172 174 6.938893903907228e-18 -172 175 -0.0009703703703703692 -172 176 0.0004999999999999995 -172 177 0.008333333333333345 -172 178 -0.001659259259259273 -172 179 -1.301042606982605e-18 -172 180 0.03333333333333334 -172 898 -0.000970370370370373 -172 899 0.0005000000000000001 -172 900 -0.00833333333333334 -172 901 -0.0002814814814814759 -172 902 1.626303258728257e-18 -172 903 -2.42861286636753e-17 -172 904 -0.0009703703703703711 -172 905 -0.0005 -172 906 0.008333333333333325 -173 163 -0.0005 -173 164 -0.001040740740740741 -173 165 -0.009259259259259247 -173 166 -2.276824562219559e-18 -173 167 0.0002814814814814763 -173 168 -5.204170427930421e-18 -173 169 1.843143693225358e-18 -173 170 -0.002362962962962951 -173 171 -0.03703703703703698 -173 172 6.505213034913027e-19 -173 173 0.008325925925925915 -173 174 -5.898059818321144e-17 -173 175 0.0004999999999999996 -173 176 -0.001040740740740735 -173 177 -0.009259259259259214 -173 178 -1.517883041479706e-18 -173 179 0.0002814814814814686 -173 180 3.989863994746656e-17 -173 898 0.0005000000000000003 -173 899 -0.001040740740740739 -173 900 0.009259259259259228 -173 901 1.517883041479706e-18 -173 902 -0.002362962962962955 -173 903 0.03703703703703689 -173 904 -0.0005 -173 905 -0.001040740740740739 -173 906 0.009259259259259222 -174 163 -0.01296296296296292 -174 164 -0.01342592592592593 -174 165 -0.1551783264746222 -174 166 -0.02407407407407409 -174 167 -2.602085213965211e-17 -174 168 -0.1063100137174216 -174 169 3.469446951953614e-17 -174 170 -0.02870370370370359 -174 171 -0.2040466392318223 -174 172 -1.387778780781446e-17 -174 173 2.602085213965211e-17 -174 174 1.241426611796978 -174 175 0.01296296296296293 -174 176 -0.01342592592592588 -174 177 -0.1551783264746221 -174 178 0.02407407407407412 -174 179 4.163336342344337e-17 -174 180 -0.1063100137174229 -174 898 -0.01296296296296298 -174 899 0.01342592592592587 -174 900 -0.1551783264746222 -174 901 -8.673617379884035e-18 -174 902 0.02870370370370361 -174 903 -0.2040466392318224 -174 904 0.01296296296296293 -174 905 0.01342592592592588 -174 906 -0.1551783264746219 -175 175 1 -176 176 1 -177 169 -0.0120370370370371 -177 170 -0.0134259259259259 -177 171 -0.05315500685871088 -177 172 -0.01296296296296295 -177 173 0.01342592592592583 -177 174 -0.1551783264746221 -177 175 1.058181320345852e-16 -177 176 -0.02870370370370367 -177 177 0.6207133058984917 -177 178 -5.377642775528102e-17 -177 179 0.02870370370370366 -177 180 -0.204046639231824 -177 181 0.01203703703703697 -177 182 -0.01342592592592599 -177 183 -0.05315500685871054 -177 184 0.01296296296296303 -177 185 0.01342592592592607 -177 186 -0.1551783264746242 -178 169 -0.0009703703703703736 -178 170 -0.0005000000000000008 -178 171 -0.008333333333333342 -178 172 -0.001659259259259273 -178 173 -1.517883041479706e-18 -178 174 -0.03333333333333333 -178 175 -0.0002814814814814783 -178 176 9.75781955236954e-19 -178 177 -1.908195823574488e-17 -178 178 0.007762962962962958 -178 179 3.035766082959412e-18 -178 180 -1.387778780781446e-17 -178 181 -0.0009703703703703644 -178 182 0.0004999999999999985 -178 183 0.008333333333333325 -178 184 -0.001659259259259244 -178 185 7.589415207398531e-19 -178 186 0.03333333333333333 -178 901 -0.0009703703703703711 -178 902 0.0005 -178 903 -0.008333333333333323 -178 904 -0.000281481481481485 -178 905 -1.734723475976807e-18 -178 906 1.040834085586084e-17 -178 907 -0.0009703703703703678 -178 908 -0.0004999999999999994 -178 909 0.008333333333333342 -179 169 -0.0005000000000000008 -179 170 -0.001040740740740744 -179 171 -0.00925925925925925 -179 172 -1.301042606982605e-18 -179 173 0.0002814814814814687 -179 174 -3.642919299551295e-17 -179 175 6.505213034913027e-19 -179 176 -0.00236296296296296 -179 177 -0.03703703703703702 -179 178 3.035766082959412e-18 -179 179 0.008325925925925919 -179 180 -7.979727989493313e-17 -179 181 0.0004999999999999986 -179 182 -0.001040740740740734 -179 183 -0.00925925925925925 -179 184 6.505213034913027e-19 -179 185 0.0002814814814814948 -179 186 8.673617379884035e-18 -179 901 0.0005 -179 902 -0.001040740740740739 -179 903 0.009259259259259222 -179 904 -1.734723475976807e-18 -179 905 -0.002362962962962967 -179 906 0.03703703703703701 -179 907 -0.0004999999999999994 -179 908 -0.001040740740740737 -179 909 0.00925925925925928 -180 169 -0.01296296296296298 -180 170 -0.013425925925926 -180 171 -0.1551783264746231 -180 172 -0.02407407407407407 -180 173 4.85722573273506e-17 -180 174 -0.1063100137174229 -180 175 4.336808689942018e-17 -180 176 -0.02870370370370374 -180 177 -0.204046639231824 -180 178 -6.071532165918825e-17 -180 179 3.989863994746656e-17 -180 180 1.241426611796981 -180 181 0.01296296296296291 -180 182 -0.01342592592592584 -180 183 -0.1551783264746222 -180 184 0.02407407407407413 -180 185 -4.510281037539698e-17 -180 186 -0.1063100137174193 -180 901 -0.01296296296296293 -180 902 0.01342592592592588 -180 903 -0.1551783264746219 -180 904 -6.938893903907228e-18 -180 905 0.02870370370370379 -180 906 -0.2040466392318249 -180 907 0.01296296296296297 -180 908 0.01342592592592587 -180 909 -0.1551783264746229 -181 181 1 -182 182 1 -183 175 -0.01203703703703707 -183 176 -0.01342592592592593 -183 177 -0.05315500685871052 -183 178 -0.0129629629629629 -183 179 0.01342592592592585 -183 180 -0.1551783264746222 -183 181 1.387778780781446e-17 -183 182 -0.02870370370370382 -183 183 0.6207133058984917 -183 184 -1.908195823574488e-17 -183 185 0.02870370370370392 -183 186 -0.2040466392318268 -183 187 0.01203703703703704 -183 188 -0.01342592592592593 -183 189 -0.05315500685870971 -183 190 0.01296296296296293 -183 191 0.01342592592592592 -183 192 -0.1551783264746225 -184 175 -0.0009703703703703754 -184 176 -0.0005000000000000015 -184 177 -0.008333333333333344 -184 178 -0.001659259259259245 -184 179 6.505213034913027e-19 -184 180 -0.03333333333333333 -184 181 -0.0002814814814814937 -184 182 2.168404344971009e-19 -184 183 -8.673617379884035e-18 -184 184 0.007762962962962959 -184 185 8.673617379884035e-19 -184 186 -1.040834085586084e-17 -184 187 -0.0009703703703703717 -184 188 0.0005000000000000007 -184 189 0.008333333333333333 -184 190 -0.001659259259259247 -184 191 -5.421010862427522e-19 -184 192 0.03333333333333333 -184 904 -0.0009703703703703706 -184 905 0.0005000000000000006 -184 906 -0.008333333333333323 -184 907 -0.0002814814814814857 -184 908 -8.673617379884035e-19 -184 909 5.204170427930421e-18 -184 910 -0.00097037037037037 -184 911 -0.0005000000000000001 -184 912 0.008333333333333333 -185 175 -0.0005000000000000014 -185 176 -0.00104074074074075 -185 177 -0.009259259259259306 -185 178 7.589415207398531e-19 -185 179 0.000281481481481495 -185 180 8.673617379884035e-18 -185 181 4.336808689942018e-19 -185 182 -0.002362962962962979 -185 183 -0.03703703703703716 -185 184 7.589415207398531e-19 -185 185 0.008325925925925948 -185 186 -1.734723475976807e-17 -185 187 0.0005000000000000006 -185 188 -0.001040740740740746 -185 189 -0.009259259259259309 -185 190 -4.336808689942018e-19 -185 191 0.0002814814814814928 -185 192 -2.081668171172169e-17 -185 904 0.0005000000000000006 -185 905 -0.001040740740740748 -185 906 0.009259259259259333 -185 907 -1.192622389734055e-18 -185 908 -0.002362962962962969 -185 909 0.03703703703703716 -185 910 -0.0005000000000000001 -185 911 -0.001040740740740743 -185 912 0.009259259259259283 -186 175 -0.01296296296296306 -186 176 -0.01342592592592604 -186 177 -0.1551783264746242 -186 178 -0.02407407407407397 -186 180 -0.1063100137174193 -186 181 5.377642775528102e-17 -186 182 -0.02870370370370375 -186 183 -0.2040466392318268 -186 184 -7.28583859910259e-17 -186 185 -2.081668171172169e-17 -186 186 1.241426611796986 -186 187 0.012962962962963 -186 188 -0.01342592592592597 -186 189 -0.1551783264746233 -186 190 0.02407407407407405 -186 191 3.469446951953614e-17 -186 192 -0.1063100137174193 -186 904 -0.01296296296296299 -186 905 0.01342592592592603 -186 906 -0.155178326474624 -186 907 2.949029909160572e-17 -186 908 0.02870370370370377 -186 909 -0.2040466392318257 -186 910 0.01296296296296297 -186 911 0.01342592592592595 -186 912 -0.155178326474623 -187 187 1 -188 188 1 -189 181 -0.012037037037037 -189 182 -0.01342592592592596 -189 183 -0.05315500685870971 -189 184 -0.01296296296296299 -189 185 0.013425925925926 -189 186 -0.1551783264746233 -189 187 -1.040834085586084e-17 -189 188 -0.02870370370370375 -189 189 0.6207133058984915 -189 190 -1.908195823574488e-17 -189 191 0.02870370370370368 -189 192 -0.2040466392318248 -189 193 0.01203703703703704 -189 194 -0.01342592592592589 -189 195 -0.05315500685871081 -189 196 0.01296296296296298 -189 197 0.01342592592592593 -189 198 -0.1551783264746229 -190 181 -0.0009703703703703671 -190 182 -0.0004999999999999996 -190 183 -0.008333333333333321 -190 184 -0.001659259259259247 -190 185 -3.252606517456513e-19 -190 186 -0.03333333333333333 -190 187 -0.000281481481481484 -190 188 1.084202172485504e-18 -190 189 1.561251128379126e-17 -190 190 0.007762962962962964 -190 191 -7.589415207398531e-19 -190 193 -0.0009703703703703706 -190 194 0.0004999999999999998 -190 195 0.008333333333333344 -190 196 -0.001659259259259271 -190 197 -1.192622389734055e-18 -190 198 0.03333333333333334 -190 907 -0.0009703703703703705 -190 908 0.0005 -190 909 -0.008333333333333342 -190 910 -0.0002814814814814844 -190 911 9.75781955236954e-19 -190 912 -1.214306433183765e-17 -190 913 -0.0009703703703703694 -190 914 -0.0004999999999999998 -190 915 0.008333333333333328 -191 181 -0.0004999999999999996 -191 182 -0.00104074074074074 -191 183 -0.00925925925925929 -191 184 -4.336808689942018e-19 -191 185 0.0002814814814814929 -191 186 -1.908195823574488e-17 -191 187 9.75781955236954e-19 -191 188 -0.002362962962962967 -191 189 -0.03703703703703705 -191 190 -7.589415207398531e-19 -191 191 0.008325925925925928 -191 192 3.122502256758253e-17 -191 193 0.0004999999999999998 -191 194 -0.001040740740740737 -191 195 -0.009259259259259221 -191 196 -1.517883041479706e-18 -191 197 0.0002814814814814693 -191 198 1.040834085586084e-17 -191 907 0.0004999999999999999 -191 908 -0.00104074074074074 -191 909 0.009259259259259266 -191 910 1.192622389734055e-18 -191 911 -0.002362962962962966 -191 912 0.03703703703703712 -191 913 -0.0004999999999999998 -191 914 -0.001040740740740741 -191 915 0.009259259259259266 -192 181 -0.01296296296296293 -192 182 -0.01342592592592589 -192 183 -0.1551783264746225 -192 184 -0.02407407407407409 -192 185 5.204170427930421e-18 -192 186 -0.1063100137174193 -192 187 1.734723475976807e-17 -192 188 -0.02870370370370381 -192 189 -0.2040466392318248 -192 190 3.642919299551295e-17 -192 191 3.122502256758253e-17 -192 192 1.241426611796982 -192 193 0.01296296296296295 -192 194 -0.01342592592592589 -192 195 -0.1551783264746223 -192 196 0.02407407407407406 -192 197 -1.908195823574488e-17 -192 198 -0.1063100137174229 -192 907 -0.01296296296296299 -192 908 0.01342592592592591 -192 909 -0.1551783264746228 -192 910 2.255140518769849e-17 -192 911 0.02870370370370369 -192 912 -0.2040466392318249 -192 913 0.01296296296296293 -192 914 0.01342592592592597 -192 915 -0.1551783264746227 -193 193 1 -194 194 1 -195 187 -0.01203703703703708 -195 188 -0.01342592592592591 -195 189 -0.05315500685871081 -195 190 -0.01296296296296296 -195 191 0.01342592592592586 -195 192 -0.1551783264746223 -195 193 9.020562075079397e-17 -195 194 -0.02870370370370366 -195 195 0.6207133058984918 -195 196 -4.510281037539698e-17 -195 197 0.02870370370370364 -195 198 -0.204046639231824 -195 199 0.01203703703703697 -195 200 -0.01342592592592598 -195 201 -0.05315500685871061 -195 202 0.01296296296296302 -195 203 0.01342592592592606 -195 204 -0.1551783264746241 -196 187 -0.0009703703703703717 -196 188 -0.0005000000000000003 -196 189 -0.008333333333333333 -196 190 -0.001659259259259271 -196 191 -1.517883041479706e-18 -196 192 -0.03333333333333333 -196 193 -0.0002814814814814782 -196 194 8.673617379884035e-19 -196 195 -1.214306433183765e-17 -196 196 0.007762962962962961 -196 197 2.602085213965211e-18 -196 198 -1.040834085586084e-17 -196 199 -0.0009703703703703649 -196 200 0.0004999999999999987 -196 201 0.008333333333333325 -196 202 -0.001659259259259246 -196 203 4.336808689942018e-19 -196 204 0.03333333333333333 -196 910 -0.0009703703703703709 -196 911 0.0005000000000000002 -196 912 -0.008333333333333333 -196 913 -0.0002814814814814879 -196 914 -1.084202172485504e-18 -196 915 3.469446951953614e-18 -196 916 -0.0009703703703703699 -196 917 -0.0004999999999999998 -196 918 0.008333333333333344 -197 187 -0.0005000000000000003 -197 188 -0.001040740740740742 -197 189 -0.009259259259259248 -197 190 -1.192622389734055e-18 -197 191 0.0002814814814814693 -197 192 -4.336808689942018e-17 -197 193 8.673617379884035e-19 -197 194 -0.002362962962962959 -197 195 -0.03703703703703702 -197 196 2.49366499671666e-18 -197 197 0.008325925925925924 -197 198 3.469446951953614e-18 -197 199 0.0004999999999999988 -197 200 -0.001040740740740735 -197 201 -0.009259259259259257 -197 202 4.336808689942018e-19 -197 203 0.0002814814814814941 -197 204 8.673617379884035e-18 -197 910 0.0005 -197 911 -0.001040740740740741 -197 912 0.009259259259259266 -197 913 -1.301042606982605e-18 -197 914 -0.002362962962962971 -197 915 0.0370370370370371 -197 916 -0.0004999999999999998 -197 917 -0.001040740740740738 -197 918 0.009259259259259262 -198 187 -0.01296296296296295 -198 188 -0.01342592592592597 -198 189 -0.1551783264746228 -198 190 -0.02407407407407404 -198 191 -2.255140518769849e-17 -198 192 -0.1063100137174229 -198 193 2.42861286636753e-17 -198 194 -0.02870370370370377 -198 195 -0.204046639231824 -198 196 -9.540979117872439e-17 -198 197 6.418476861114186e-17 -198 198 1.241426611796983 -198 199 0.01296296296296291 -198 200 -0.01342592592592585 -198 201 -0.1551783264746223 -198 202 0.02407407407407413 -198 203 -1.908195823574488e-17 -198 204 -0.1063100137174194 -198 910 -0.01296296296296295 -198 911 0.01342592592592597 -198 912 -0.1551783264746228 -198 913 -1.387778780781446e-17 -198 914 0.02870370370370372 -198 915 -0.2040466392318258 -198 916 0.01296296296296299 -198 917 0.01342592592592587 -198 918 -0.155178326474623 -199 199 1 -200 200 1 -201 193 -0.01203703703703706 -201 194 -0.01342592592592593 -201 195 -0.05315500685871059 -201 196 -0.01296296296296291 -201 197 0.01342592592592587 -201 198 -0.1551783264746223 -201 199 5.204170427930421e-17 -201 200 -0.02870370370370372 -201 201 0.6207133058984926 -201 202 -5.030698080332741e-17 -201 203 0.02870370370370368 -201 204 -0.2040466392318258 -201 205 0.01203703703703698 -201 206 -0.01342592592592593 -201 207 -0.0531550068587105 -201 208 0.01296296296296299 -201 209 0.01342592592592602 -201 210 -0.1551783264746233 -202 193 -0.000970370370370375 -202 194 -0.0005000000000000013 -202 195 -0.008333333333333344 -202 196 -0.001659259259259246 -202 197 4.336808689942018e-19 -202 198 -0.03333333333333333 -202 199 -0.0002814814814814882 -202 200 8.673617379884035e-19 -202 201 -1.734723475976807e-17 -202 202 0.00776296296296296 -202 203 4.98732999343332e-18 -202 204 -6.938893903907228e-18 -202 205 -0.0009703703703703675 -202 206 0.0004999999999999993 -202 207 0.008333333333333323 -202 208 -0.001659259259259259 -202 209 -3.144186300207963e-18 -202 210 0.03333333333333333 -202 913 -0.0009703703703703704 -202 914 0.0005000000000000003 -202 915 -0.008333333333333325 -202 916 -0.000281481481481481 -202 917 -6.505213034913027e-19 -202 918 8.673617379884035e-18 -202 919 -0.0009703703703703736 -202 920 -0.0005000000000000009 -202 921 0.008333333333333344 -203 193 -0.0005000000000000012 -203 194 -0.001040740740740749 -203 195 -0.009259259259259302 -203 196 3.252606517456513e-19 -203 197 0.0002814814814814941 -203 198 -1.040834085586084e-17 -203 199 9.75781955236954e-19 -203 200 -0.002362962962962972 -203 201 -0.03703703703703704 -203 202 5.095750210681871e-18 -203 203 0.008325925925925935 -203 204 8.326672684688674e-17 -203 205 0.0004999999999999993 -203 206 -0.001040740740740736 -203 207 -0.009259259259259243 -203 208 -3.469446951953614e-18 -203 209 0.0002814814814814819 -203 210 5.204170427930421e-17 -203 913 0.0005000000000000004 -203 914 -0.001040740740740745 -203 915 0.0092592592592593 -203 916 -5.421010862427522e-19 -203 917 -0.002362962962962963 -203 918 0.0370370370370371 -203 919 -0.0005000000000000008 -203 920 -0.001040740740740746 -203 921 0.009259259259259278 -204 193 -0.01296296296296306 -204 194 -0.01342592592592602 -204 195 -0.1551783264746241 -204 196 -0.024074074074074 -204 197 2.255140518769849e-17 -204 198 -0.1063100137174194 -204 199 1.006139616066548e-16 -204 200 -0.02870370370370381 -204 201 -0.2040466392318258 -204 202 -5.724587470723463e-17 -204 203 1.387778780781446e-17 -204 204 1.241426611796984 -204 205 0.01296296296296292 -204 206 -0.01342592592592582 -204 207 -0.155178326474622 -204 208 0.02407407407407407 -204 209 -2.255140518769849e-17 -204 210 -0.1063100137174211 -204 913 -0.01296296296296298 -204 914 0.01342592592592597 -204 915 -0.1551783264746235 -204 916 5.204170427930421e-18 -204 917 0.02870370370370363 -204 918 -0.2040466392318247 -204 919 0.01296296296296301 -204 920 0.01342592592592603 -204 921 -0.1551783264746236 -205 205 1 -206 206 1 -207 199 -0.01203703703703705 -207 200 -0.01342592592592592 -207 201 -0.0531550068587105 -207 202 -0.01296296296296292 -207 203 0.01342592592592587 -207 204 -0.155178326474622 -207 205 3.122502256758253e-17 -207 206 -0.02870370370370378 -207 207 0.6207133058984901 -207 208 -6.418476861114186e-17 -207 209 0.0287037037037038 -207 210 -0.2040466392318251 -207 211 0.01203703703703704 -207 212 -0.0134259259259259 -207 213 -0.05315500685870983 -207 214 0.01296296296296296 -207 215 0.01342592592592593 -207 216 -0.1551783264746225 -208 199 -0.0009703703703703732 -208 200 -0.0005000000000000009 -208 201 -0.008333333333333323 -208 202 -0.001659259259259259 -208 203 -3.577867169202165e-18 -208 204 -0.03333333333333333 -208 205 -0.0002814814814814872 -208 206 1.951563910473908e-18 -208 207 1.561251128379126e-17 -208 208 0.007762962962962965 -208 209 3.361026734705064e-18 -208 210 -3.469446951953614e-18 -208 211 -0.0009703703703703715 -208 212 0.0005000000000000002 -208 213 0.008333333333333345 -208 214 -0.00165925925925926 -208 215 -2.168404344971009e-18 -208 216 0.03333333333333333 -208 916 -0.000970370370370368 -208 917 0.0004999999999999993 -208 918 -0.008333333333333342 -208 919 -0.0002814814814814771 -208 920 1.951563910473908e-18 -208 921 -1.387778780781446e-17 -208 922 -0.0009703703703703697 -208 923 -0.0005 -208 924 0.008333333333333325 -209 199 -0.000500000000000001 -209 200 -0.001040740740740747 -209 201 -0.00925925925925929 -209 202 -3.252606517456513e-18 -209 203 0.0002814814814814819 -209 204 -1.301042606982605e-16 -209 205 2.059984127722458e-18 -209 206 -0.00236296296296297 -209 207 -0.03703703703703708 -209 208 3.252606517456513e-18 -209 209 0.008325925925925929 -209 210 -1.006139616066548e-16 -209 211 0.0005000000000000001 -209 212 -0.001040740740740741 -209 213 -0.009259259259259264 -209 214 -2.276824562219559e-18 -209 215 0.0002814814814814822 -209 216 3.989863994746656e-17 -209 916 0.0004999999999999991 -209 917 -0.001040740740740735 -209 918 0.009259259259259231 -209 919 1.843143693225358e-18 -209 920 -0.002362962962962958 -209 921 0.03703703703703703 -209 922 -0.0005 -209 923 -0.001040740740740742 -209 924 0.009259259259259276 -210 199 -0.01296296296296299 -210 200 -0.01342592592592597 -210 201 -0.1551783264746233 -210 202 -0.02407407407407407 -210 203 1.734723475976807e-18 -210 204 -0.1063100137174211 -210 205 5.898059818321144e-17 -210 206 -0.02870370370370369 -210 207 -0.2040466392318251 -210 208 -1.908195823574488e-17 -210 209 8.673617379884035e-18 -210 210 1.241426611796981 -210 211 0.01296296296296297 -210 212 -0.01342592592592592 -210 213 -0.1551783264746225 -210 214 0.02407407407407409 -210 215 5.551115123125783e-17 -210 216 -0.1063100137174208 -210 916 -0.01296296296296294 -210 917 0.01342592592592588 -210 918 -0.1551783264746223 -210 919 -2.081668171172169e-17 -210 920 0.02870370370370374 -210 921 -0.2040466392318235 -210 922 0.01296296296296292 -210 923 0.01342592592592591 -210 924 -0.1551783264746222 -211 211 1 -212 212 1 -213 205 -0.01203703703703706 -213 206 -0.01342592592592593 -213 207 -0.05315500685870983 -213 208 -0.01296296296296297 -213 209 0.01342592592592591 -213 210 -0.1551783264746225 -213 211 9.020562075079397e-17 -213 212 -0.02870370370370373 -213 213 0.6207133058984915 -213 214 -8.500145032286355e-17 -213 215 0.02870370370370365 -213 216 -0.2040466392318242 -213 217 0.012037037037037 -213 218 -0.01342592592592594 -213 219 -0.05315500685871093 -213 220 0.01296296296296303 -213 221 0.01342592592592605 -213 222 -0.155178326474624 -214 205 -0.0009703703703703692 -214 206 -0.0005 -214 207 -0.008333333333333321 -214 208 -0.00165925925925926 -214 209 -2.276824562219559e-18 -214 210 -0.03333333333333333 -214 211 -0.0002814814814814805 -214 212 2.602085213965211e-18 -214 213 1.561251128379126e-17 -214 214 0.007762962962962962 -214 215 1.084202172485504e-18 -214 217 -0.0009703703703703663 -214 218 0.0004999999999999987 -214 219 0.008333333333333344 -214 220 -0.001659259259259259 -214 221 -1.301042606982605e-18 -214 222 0.03333333333333335 -214 919 -0.0009703703703703719 -214 920 0.0005000000000000001 -214 921 -0.008333333333333342 -214 922 -0.0002814814814814876 -214 923 4.336808689942018e-19 -214 924 -1.040834085586084e-17 -214 925 -0.0009703703703703676 -214 926 -0.0004999999999999994 -214 927 0.008333333333333328 -215 205 -0.0005 -215 206 -0.001040740740740743 -215 207 -0.009259259259259283 -215 208 -2.168404344971009e-18 -215 209 0.0002814814814814822 -215 210 -3.469446951953614e-17 -215 211 2.602085213965211e-18 -215 212 -0.002362962962962963 -215 213 -0.03703703703703705 -215 214 1.084202172485504e-18 -215 215 0.008325925925925921 -215 216 -1.734723475976807e-17 -215 217 0.0004999999999999987 -215 218 -0.001040740740740731 -215 219 -0.009259259259259221 -215 220 -1.301042606982605e-18 -215 221 0.0002814814814814813 -215 222 2.42861286636753e-17 -215 919 0.0005000000000000002 -215 920 -0.001040740740740739 -215 921 0.009259259259259257 -215 922 5.421010862427522e-19 -215 923 -0.002362962962962971 -215 924 0.03703703703703709 -215 925 -0.0004999999999999995 -215 926 -0.001040740740740738 -215 927 0.009259259259259266 -216 205 -0.01296296296296293 -216 206 -0.01342592592592596 -216 207 -0.1551783264746225 -216 208 -0.02407407407407408 -216 209 1.214306433183765e-17 -216 210 -0.1063100137174208 -216 211 3.989863994746656e-17 -216 212 -0.02870370370370383 -216 213 -0.2040466392318242 -216 214 -5.204170427930421e-17 -216 215 4.336808689942018e-17 -216 216 1.24142661179698 -216 217 0.01296296296296292 -216 218 -0.01342592592592582 -216 219 -0.155178326474622 -216 220 0.02407407407407413 -216 221 -2.255140518769849e-17 -216 222 -0.1063100137174212 -216 919 -0.01296296296296298 -216 920 0.01342592592592587 -216 921 -0.1551783264746222 -216 922 1.561251128379126e-17 -216 923 0.02870370370370379 -216 924 -0.2040466392318251 -216 925 0.01296296296296293 -216 926 0.01342592592592591 -216 927 -0.1551783264746223 -217 217 1 -218 218 1 -219 211 -0.01203703703703711 -219 212 -0.01342592592592592 -219 213 -0.05315500685871093 -219 214 -0.01296296296296292 -219 215 0.01342592592592581 -219 216 -0.1551783264746219 -219 217 6.418476861114186e-17 -219 218 -0.02870370370370361 -219 219 0.6207133058984911 -219 220 -3.989863994746656e-17 -219 221 0.02870370370370367 -219 222 -0.2040466392318234 -219 223 0.01203703703703705 -219 224 -0.01342592592592592 -219 225 -0.05315500685871204 -219 226 0.01296296296296296 -219 227 0.01342592592592597 -219 228 -0.1551783264746227 -220 211 -0.0009703703703703751 -220 212 -0.0005000000000000013 -220 213 -0.008333333333333342 -220 214 -0.001659259259259259 -220 215 -1.301042606982605e-18 -220 216 -0.03333333333333333 -220 217 -0.0002814814814814757 -220 218 1.517883041479706e-18 -220 219 -1.734723475976807e-18 -220 220 0.007762962962962961 -220 221 -3.469446951953614e-18 -220 222 -6.938893903907228e-18 -220 223 -0.0009703703703703707 -220 224 0.0004999999999999998 -220 225 0.008333333333333345 -220 226 -0.001659259259259259 -220 227 4.87890977618477e-18 -220 228 0.03333333333333334 -220 922 -0.0009703703703703715 -220 923 0.0005000000000000007 -220 924 -0.008333333333333325 -220 925 -0.0002814814814814908 -220 926 -3.577867169202165e-18 -220 927 -3.469446951953614e-18 -220 928 -0.0009703703703703606 -220 929 -0.0004999999999999973 -220 930 0.008333333333333325 -221 211 -0.0005000000000000014 -221 212 -0.001040740740740749 -221 213 -0.009259259259259293 -221 214 -1.301042606982605e-18 -221 215 0.0002814814814814814 -221 216 -4.683753385137379e-17 -221 217 1.517883041479706e-18 -221 218 -0.002362962962962956 -221 219 -0.03703703703703698 -221 220 -3.469446951953614e-18 -221 221 0.008325925925925928 -221 222 -2.081668171172169e-17 -221 223 0.0004999999999999999 -221 224 -0.001040740740740739 -221 225 -0.009259259259259241 -221 226 4.98732999343332e-18 -221 227 0.0002814814814814819 -221 228 -2.012279232133096e-16 -221 922 0.0005000000000000007 -221 923 -0.001040740740740747 -221 924 0.009259259259259302 -221 925 -3.469446951953614e-18 -221 926 -0.002362962962962975 -221 927 0.03703703703703715 -221 928 -0.0004999999999999974 -221 929 -0.001040740740740725 -221 930 0.009259259259259196 -222 211 -0.01296296296296303 -222 212 -0.01342592592592605 -222 213 -0.155178326474624 -222 214 -0.024074074074074 -222 215 -1.734723475976807e-18 -222 216 -0.1063100137174211 -222 217 6.245004513516506e-17 -222 218 -0.02870370370370364 -222 219 -0.2040466392318234 -222 220 -1.942890293094024e-16 -222 221 -4.683753385137379e-17 -222 222 1.241426611796983 -222 223 0.01296296296296297 -222 224 -0.01342592592592585 -222 225 -0.1551783264746225 -222 226 0.02407407407407419 -222 227 -3.295974604355933e-17 -222 228 -0.1063100137174211 -222 922 -0.01296296296296297 -222 923 0.01342592592592602 -222 924 -0.1551783264746233 -222 925 1.179611963664229e-16 -222 926 0.02870370370370384 -222 927 -0.2040466392318264 -222 928 0.01296296296296286 -222 929 0.01342592592592578 -222 930 -0.1551783264746213 -223 223 1 -224 224 1 -225 217 -0.01203703703703707 -225 218 -0.01342592592592592 -225 219 -0.05315500685871204 -225 220 -0.01296296296296295 -225 221 0.01342592592592594 -225 222 -0.1551783264746225 -225 223 2.081668171172169e-17 -225 224 -0.02870370370370379 -225 225 0.6207133058984925 -225 226 -2.949029909160572e-17 -225 227 0.02870370370370385 -225 228 -0.2040466392318259 -225 229 0.01203703703703705 -225 230 -0.01342592592592599 -225 231 -0.0531550068587087 -225 232 0.01296296296296298 -225 233 0.01342592592592591 -225 234 -0.1551783264746234 -226 217 -0.0009703703703703718 -226 218 -0.0005000000000000003 -226 219 -0.008333333333333342 -226 220 -0.001659259259259259 -226 221 4.98732999343332e-18 -226 222 -0.03333333333333333 -226 223 -0.0002814814814814873 -226 224 1.084202172485504e-19 -226 225 -3.469446951953614e-18 -226 226 0.007762962962962956 -226 227 -9.540979117872439e-18 -226 228 -6.938893903907228e-18 -226 229 -0.0009703703703703697 -226 230 0.0005000000000000002 -226 231 0.008333333333333342 -226 232 -0.001659259259259235 -226 233 4.553649124439119e-18 -226 234 0.03333333333333333 -226 925 -0.0009703703703703785 -226 926 0.0005000000000000027 -226 927 -0.008333333333333323 -226 928 -0.0002814814814814926 -226 929 -4.553649124439119e-18 -226 931 -0.0009703703703703628 -226 932 -0.0004999999999999982 -226 933 0.008333333333333325 -227 217 -0.0005000000000000002 -227 218 -0.001040740740740741 -227 219 -0.009259259259259252 -227 220 4.87890977618477e-18 -227 221 0.0002814814814814819 -227 222 7.806255641895632e-17 -227 223 -3.252606517456513e-19 -227 224 -0.00236296296296297 -227 225 -0.03703703703703715 -227 226 -9.432558900623889e-18 -227 227 0.00832592592592594 -227 228 -3.469446951953614e-17 -227 229 0.0005000000000000002 -227 230 -0.001040740740740746 -227 231 -0.009259259259259332 -227 232 4.77048955893622e-18 -227 233 0.0002814814814815032 -227 234 -6.245004513516506e-17 -227 925 0.0005000000000000028 -227 926 -0.00104074074074076 -227 927 0.009259259259259345 -227 928 -4.662069341687669e-18 -227 929 -0.002362962962962978 -227 930 0.03703703703703715 -227 931 -0.0004999999999999981 -227 932 -0.00104074074074073 -227 933 0.009259259259259252 -228 217 -0.01296296296296298 -228 218 -0.01342592592592588 -228 219 -0.1551783264746228 -228 220 -0.02407407407407396 -228 221 -6.245004513516506e-17 -228 222 -0.1063100137174211 -228 223 -2.602085213965211e-17 -228 224 -0.02870370370370382 -228 225 -0.2040466392318259 -228 226 -1.717376241217039e-16 -228 227 1.214306433183765e-17 -228 228 1.241426611796985 -228 229 0.01296296296296301 -228 230 -0.01342592592592607 -228 231 -0.1551783264746239 -228 232 0.02407407407407414 -228 233 8.500145032286355e-17 -228 234 -0.1063100137174178 -228 925 -0.01296296296296309 -228 926 0.01342592592592626 -228 927 -0.1551783264746254 -228 928 1.942890293094024e-16 -228 929 0.02870370370370381 -228 930 -0.2040466392318266 -228 931 0.01296296296296289 -228 932 0.01342592592592568 -228 933 -0.1551783264746212 -229 229 1 -230 230 1 -231 223 -0.01203703703703702 -231 224 -0.01342592592592599 -231 225 -0.0531550068587087 -231 226 -0.01296296296296301 -231 227 0.01342592592592597 -231 228 -0.1551783264746239 -231 229 -6.245004513516506e-17 -231 230 -0.02870370370370376 -231 231 0.6207133058984908 -231 232 6.418476861114186e-17 -231 233 0.02870370370370385 -231 234 -0.2040466392318246 -231 235 0.01203703703703708 -231 236 -0.01342592592592588 -231 237 -0.05315500685871156 -231 238 0.01296296296296294 -231 239 0.0134259259259258 -231 240 -0.155178326474622 -232 223 -0.0009703703703703675 -232 224 -0.0004999999999999997 -232 225 -0.008333333333333342 -232 226 -0.001659259259259235 -232 227 4.77048955893622e-18 -232 228 -0.03333333333333333 -232 229 -0.0002814814814814812 -232 230 -6.505213034913027e-19 -232 232 0.007762962962962961 -232 233 -8.239936510889834e-18 -232 234 3.469446951953614e-18 -232 235 -0.0009703703703703734 -232 236 0.0005000000000000003 -232 237 0.008333333333333344 -232 238 -0.001659259259259276 -232 239 4.119968255444917e-18 -232 240 0.03333333333333333 -232 928 -0.0009703703703703762 -232 929 0.0005000000000000021 -232 930 -0.008333333333333325 -232 931 -0.0002814814814814871 -232 932 -4.119968255444917e-18 -232 933 1.387778780781446e-17 -232 934 -0.0009703703703703661 -232 935 -0.0004999999999999986 -232 936 0.008333333333333326 -233 223 -0.0004999999999999996 -233 224 -0.001040740740740742 -233 225 -0.009259259259259313 -233 226 4.445228907190568e-18 -233 227 0.0002814814814815032 -233 228 1.97758476261356e-16 -233 229 -5.421010862427522e-19 -233 230 -0.002362962962962963 -233 231 -0.03703703703703711 -233 232 -8.239936510889834e-18 -233 233 0.008325925925925935 -233 234 -7.28583859910259e-17 -233 235 0.0005000000000000002 -233 236 -0.00104074074074074 -233 237 -0.009259259259259198 -233 238 4.228388472693467e-18 -233 239 0.0002814814814814651 -233 240 -4.85722573273506e-17 -233 928 0.0005000000000000021 -233 929 -0.001040740740740756 -233 930 0.009259259259259365 -233 931 -4.119968255444917e-18 -233 932 -0.002362962962962971 -233 933 0.03703703703703705 -233 934 -0.0004999999999999986 -233 935 -0.001040740740740731 -233 936 0.009259259259259205 -234 223 -0.01296296296296297 -234 224 -0.01342592592592601 -234 225 -0.1551783264746234 -234 226 -0.024074074074074 -234 227 5.898059818321144e-17 -234 228 -0.1063100137174178 -234 229 6.938893903907228e-18 -234 230 -0.02870370370370362 -234 231 -0.2040466392318246 -234 232 -1.214306433183765e-16 -234 233 -5.030698080332741e-17 -234 234 1.241426611796983 -234 235 0.01296296296296297 -234 236 -0.01342592592592596 -234 237 -0.1551783264746225 -234 238 0.02407407407407411 -234 239 -4.336808689942018e-17 -234 240 -0.1063100137174235 -234 928 -0.01296296296296306 -234 929 0.01342592592592604 -234 930 -0.1551783264746243 -234 931 1.960237527853792e-16 -234 932 0.02870370370370382 -234 933 -0.2040466392318252 -234 934 0.01296296296296288 -234 935 0.01342592592592578 -234 936 -0.1551783264746214 -235 235 1 -236 236 1 -237 229 -0.01203703703703706 -237 230 -0.01342592592592588 -237 231 -0.05315500685871156 -237 232 -0.01296296296296297 -237 233 0.01342592592592587 -237 234 -0.1551783264746225 -237 235 -2.775557561562891e-17 -237 236 -0.02870370370370366 -237 237 0.6207133058984901 -237 238 4.510281037539698e-17 -237 239 0.02870370370370379 -237 240 -0.2040466392318235 -237 241 0.01203703703703706 -237 242 -0.01342592592592598 -237 243 -0.05315500685870976 -237 244 0.01296296296296295 -237 245 0.01342592592592587 -237 246 -0.1551783264746227 -238 229 -0.0009703703703703711 -238 230 -0.0004999999999999997 -238 231 -0.008333333333333342 -238 232 -0.001659259259259276 -238 233 4.119968255444917e-18 -238 234 -0.03333333333333332 -238 235 -0.0002814814814814754 -238 236 -2.49366499671666e-18 -238 237 -1.734723475976807e-17 -238 238 0.007762962962962961 -238 239 -1.040834085586084e-17 -238 240 -3.469446951953614e-18 -238 241 -0.0009703703703703717 -238 242 0.0005000000000000009 -238 243 0.008333333333333323 -238 244 -0.001659259259259246 -238 245 9.324138683375338e-18 -238 246 0.03333333333333331 -238 931 -0.0009703703703703748 -238 932 0.0005000000000000015 -238 933 -0.008333333333333314 -238 934 -0.0002814814814814853 -238 935 -5.854691731421724e-18 -238 936 2.255140518769849e-17 -238 937 -0.0009703703703703623 -238 938 -0.0004999999999999974 -238 939 0.008333333333333331 -239 229 -0.0004999999999999997 -239 230 -0.001040740740740735 -239 231 -0.009259259259259181 -239 232 4.228388472693467e-18 -239 233 0.0002814814814814651 -239 234 1.752070710736575e-16 -239 235 -2.49366499671666e-18 -239 236 -0.002362962962962956 -239 237 -0.03703703703703706 -239 238 -1.051676107310939e-17 -239 239 0.008325925925925922 -239 240 -1.665334536937735e-16 -239 241 0.000500000000000001 -239 242 -0.001040740740740751 -239 243 -0.009259259259259339 -239 244 9.324138683375338e-18 -239 245 0.0002814814814814941 -239 246 -2.359223927328458e-16 -239 931 0.0005000000000000015 -239 932 -0.001040740740740751 -239 933 0.009259259259259299 -239 934 -6.071532165918825e-18 -239 935 -0.002362962962962967 -239 936 0.03703703703703694 -239 937 -0.0004999999999999974 -239 938 -0.001040740740740722 -239 939 0.00925925925925917 -240 229 -0.01296296296296294 -240 230 -0.0134259259259259 -240 231 -0.155178326474622 -240 232 -0.02407407407407401 -240 233 -4.85722573273506e-17 -240 234 -0.1063100137174235 -240 235 -9.71445146547012e-17 -240 236 -0.02870370370370352 -240 237 -0.2040466392318235 -240 238 -1.179611963664229e-16 -240 239 -2.775557561562891e-17 -240 240 1.241426611796982 -240 241 0.012962962962963 -240 242 -0.01342592592592608 -240 243 -0.1551783264746243 -240 244 0.02407407407407412 -240 245 6.938893903907228e-17 -240 246 -0.1063100137174193 -240 931 -0.01296296296296299 -240 932 0.01342592592592605 -240 933 -0.1551783264746237 -240 934 1.543903893619358e-16 -240 935 0.02870370370370382 -240 936 -0.2040466392318248 -240 937 0.01296296296296288 -240 938 0.01342592592592563 -240 939 -0.1551783264746206 -241 241 1 -242 242 1 -243 235 -0.01203703703703697 -243 236 -0.01342592592592596 -243 237 -0.05315500685870976 -243 238 -0.01296296296296301 -243 239 0.01342592592592607 -243 240 -0.1551783264746243 -243 241 -1.474514954580286e-16 -243 242 -0.02870370370370368 -243 243 0.6207133058984906 -243 244 1.613292832658431e-16 -243 245 0.02870370370370369 -243 246 -0.2040466392318244 -243 247 0.01203703703703709 -243 248 -0.01342592592592586 -243 249 -0.05315500685871137 -243 250 0.01296296296296288 -243 251 0.01342592592592575 -243 252 -0.1551783264746209 -244 235 -0.0009703703703703672 -244 236 -0.0004999999999999991 -244 237 -0.008333333333333342 -244 238 -0.001659259259259246 -244 239 9.324138683375338e-18 -244 240 -0.03333333333333331 -244 241 -0.0002814814814814821 -244 242 -3.469446951953614e-18 -244 243 -1.734723475976807e-17 -244 244 0.007762962962962967 -244 245 -1.22514845490862e-17 -244 246 -6.938893903907228e-18 -244 247 -0.000970370370370376 -244 248 0.0005000000000000013 -244 249 0.008333333333333323 -244 250 -0.001659259259259278 -244 251 5.312590645178972e-18 -244 252 0.03333333333333331 -244 934 -0.0009703703703703782 -244 935 0.0005000000000000025 -244 936 -0.008333333333333314 -244 937 -0.0002814814814814718 -244 938 -5.095750210681871e-18 -244 939 1.040834085586084e-17 -244 940 -0.0009703703703703674 -244 941 -0.0004999999999999986 -244 942 0.008333333333333331 -245 235 -0.000499999999999999 -245 236 -0.001040740740740735 -245 237 -0.009259259259259264 -245 238 9.324138683375338e-18 -245 239 0.0002814814814814941 -245 240 2.42861286636753e-16 -245 241 -3.469446951953614e-18 -245 242 -0.002362962962962963 -245 243 -0.03703703703703701 -245 244 -1.214306433183765e-17 -245 245 0.008325925925925924 -245 246 3.122502256758253e-17 -245 247 0.0005000000000000013 -245 248 -0.001040740740740747 -245 249 -0.009259259259259241 -245 250 5.204170427930421e-18 -245 251 0.000281481481481466 -245 252 -1.387778780781446e-16 -245 934 0.0005000000000000027 -245 935 -0.00104074074074076 -245 936 0.009259259259259339 -245 937 -5.095750210681871e-18 -245 938 -0.002362962962962951 -245 939 0.03703703703703689 -245 940 -0.0004999999999999987 -245 941 -0.001040740740740729 -245 942 0.009259259259259156 -246 235 -0.01296296296296296 -246 236 -0.01342592592592586 -246 237 -0.1551783264746227 -246 238 -0.02407407407407398 -246 239 5.377642775528102e-17 -246 240 -0.1063100137174193 -246 241 -6.071532165918825e-17 -246 242 -0.02870370370370362 -246 243 -0.2040466392318244 -246 244 -1.006139616066548e-16 -246 245 -2.775557561562891e-17 -246 246 1.24142661179698 -246 247 0.01296296296296299 -246 248 -0.01342592592592599 -246 249 -0.1551783264746229 -246 250 0.02407407407407409 -246 251 8.673617379884035e-18 -246 252 -0.1063100137174232 -246 934 -0.01296296296296306 -246 935 0.01342592592592615 -246 936 -0.1551783264746247 -246 937 2.099015405931937e-16 -246 938 0.02870370370370353 -246 939 -0.2040466392318222 -246 940 0.01296296296296289 -246 941 0.01342592592592576 -246 942 -0.155178326474621 -247 247 1 -248 248 1 -249 241 -0.01203703703703698 -249 242 -0.01342592592592588 -249 243 -0.05315500685871137 -249 244 -0.01296296296296299 -249 245 0.01342592592592599 -249 246 -0.1551783264746229 -249 247 -3.295974604355933e-17 -249 248 -0.02870370370370356 -249 249 0.6207133058984891 -249 250 2.775557561562891e-17 -249 251 0.02870370370370344 -249 252 -0.204046639231822 -249 253 0.01203703703703703 -249 254 -0.01342592592592589 -249 255 -0.05315500685871047 -249 256 0.01296296296296295 -249 257 0.0134259259259259 -249 258 -0.1551783264746223 -250 241 -0.0009703703703703672 -250 242 -0.0004999999999999987 -250 243 -0.008333333333333323 -250 244 -0.001659259259259278 -250 245 5.204170427930421e-18 -250 246 -0.03333333333333331 -250 247 -0.0002814814814814729 -250 248 -4.336808689942018e-19 -250 249 8.673617379884035e-18 -250 250 0.00776296296296297 -250 251 -5.095750210681871e-18 -250 252 -6.938893903907228e-18 -250 253 -0.0009703703703703709 -250 254 0.0004999999999999999 -250 255 0.008333333333333335 -250 256 -0.001659259259259265 -250 257 -1.951563910473908e-18 -250 258 0.03333333333333331 -250 937 -0.0009703703703703762 -250 938 0.0005000000000000013 -250 939 -0.008333333333333331 -250 940 -0.0002814814814814697 -250 941 -2.168404344971009e-19 -250 942 -2.081668171172169e-17 -250 943 -0.0009703703703703695 -250 944 -0.0004999999999999999 -250 945 0.008333333333333321 -251 241 -0.0004999999999999987 -251 242 -0.00104074074074073 -251 243 -0.009259259259259167 -251 244 5.204170427930421e-18 -251 245 0.000281481481481466 -251 246 1.595945597898663e-16 -251 247 -5.421010862427522e-19 -251 248 -0.002362962962962951 -251 249 -0.03703703703703685 -251 250 -5.204170427930421e-18 -251 251 0.008325925925925912 -251 252 2.012279232133096e-16 -251 253 0.0004999999999999998 -251 254 -0.001040740740740739 -251 255 -0.009259259259259228 -251 256 -1.843143693225358e-18 -251 257 0.0002814814814814764 -251 258 6.938893903907228e-17 -251 937 0.0005000000000000013 -251 938 -0.001040740740740747 -251 939 0.009259259259259231 -251 940 -1.084202172485504e-19 -251 941 -0.002362962962962947 -251 942 0.03703703703703688 -251 943 -0.0004999999999999999 -251 944 -0.001040740740740741 -251 945 0.009259259259259245 -252 241 -0.01296296296296288 -252 242 -0.01342592592592575 -252 243 -0.1551783264746209 -252 244 -0.02407407407407408 -252 245 -2.775557561562891e-17 -252 246 -0.1063100137174232 -252 247 -5.030698080332741e-17 -252 248 -0.02870370370370363 -252 249 -0.204046639231822 -252 250 1.214306433183765e-17 -252 251 -5.551115123125783e-17 -252 252 1.241426611796976 -252 253 0.01296296296296295 -252 254 -0.01342592592592589 -252 255 -0.155178326474622 -252 256 0.02407407407407409 -252 257 1.387778780781446e-17 -252 258 -0.1063100137174216 -252 937 -0.012962962962963 -252 938 0.013425925925926 -252 939 -0.155178326474623 -252 940 3.642919299551295e-17 -252 941 0.02870370370370344 -252 942 -0.2040466392318215 -252 943 0.01296296296296293 -252 944 0.0134259259259259 -252 945 -0.1551783264746222 -253 253 1 -254 254 1 -255 247 -0.01203703703703704 -255 248 -0.01342592592592591 -255 249 -0.05315500685871048 -255 250 -0.01296296296296294 -255 251 0.01342592592592586 -255 252 -0.155178326474622 -255 253 1.040834085586084e-16 -255 254 -0.02870370370370375 -255 255 0.6207133058984919 -255 256 -1.127570259384925e-16 -255 257 0.02870370370370368 -255 258 -0.2040466392318251 -255 259 0.01203703703703696 -255 260 -0.01342592592592598 -255 261 -0.05315500685870976 -255 262 0.01296296296296304 -255 263 0.01342592592592609 -255 264 -0.1551783264746246 -256 247 -0.0009703703703703706 -256 248 -0.0005000000000000001 -256 249 -0.008333333333333321 -256 250 -0.001659259259259265 -256 251 -1.951563910473908e-18 -256 252 -0.03333333333333331 -256 253 -0.0002814814814814845 -256 254 2.276824562219559e-18 -256 255 8.673617379884035e-18 -256 256 0.007762962962962959 -256 257 5.312590645178972e-18 -256 259 -0.0009703703703703649 -256 260 0.0004999999999999986 -256 261 0.008333333333333333 -256 262 -0.001659259259259244 -256 263 -5.312590645178972e-18 -256 264 0.03333333333333333 -256 940 -0.0009703703703703719 -256 941 0.0005 -256 942 -0.00833333333333334 -256 943 -0.0002814814814814847 -256 944 2.49366499671666e-18 -256 945 -1.734723475976807e-17 -256 946 -0.0009703703703703738 -256 947 -0.0005000000000000013 -256 948 0.008333333333333333 -257 247 -0.0005000000000000001 -257 248 -0.001040740740740742 -257 249 -0.009259259259259247 -257 250 -1.951563910473908e-18 -257 251 0.0002814814814814763 -257 252 -5.204170427930421e-18 -257 253 2.168404344971009e-18 -257 254 -0.002362962962962967 -257 255 -0.03703703703703706 -257 256 5.312590645178972e-18 -257 257 0.008325925925925929 -257 258 1.110223024625157e-16 -257 259 0.0004999999999999986 -257 260 -0.001040740740740734 -257 261 -0.009259259259259264 -257 262 -5.312590645178972e-18 -257 263 0.000281481481481494 -257 264 1.474514954580286e-16 -257 940 0.0005000000000000001 -257 941 -0.001040740740740739 -257 942 0.009259259259259228 -257 943 2.602085213965211e-18 -257 944 -0.002362962962962967 -257 945 0.03703703703703708 -257 946 -0.0005000000000000013 -257 947 -0.001040740740740752 -257 948 0.009259259259259337 -258 247 -0.01296296296296294 -258 248 -0.01342592592592593 -258 249 -0.1551783264746223 -258 250 -0.02407407407407408 -258 251 -2.602085213965211e-17 -258 252 -0.1063100137174216 -258 253 2.949029909160572e-17 -258 254 -0.02870370370370382 -258 255 -0.204046639231825 -258 256 6.938893903907228e-17 -258 257 1.561251128379126e-17 -258 258 1.241426611796983 -258 259 0.01296296296296293 -258 260 -0.01342592592592585 -258 261 -0.1551783264746225 -258 262 0.02407407407407403 -258 263 -1.908195823574488e-17 -258 264 -0.1063100137174195 -258 940 -0.01296296296296297 -258 941 0.01342592592592587 -258 942 -0.1551783264746222 -258 943 -1.07552855510562e-16 -258 944 0.02870370370370367 -258 945 -0.2040466392318251 -258 946 0.01296296296296304 -258 947 0.01342592592592609 -258 948 -0.1551783264746245 -259 259 1 -260 260 1 -261 253 -0.01203703703703707 -261 254 -0.01342592592592596 -261 255 -0.05315500685870976 -261 256 -0.01296296296296293 -261 257 0.01342592592592585 -261 258 -0.1551783264746225 -261 259 1.734723475976807e-17 -261 260 -0.02870370370370368 -261 261 0.6207133058984897 -261 262 -2.255140518769849e-17 -261 263 0.02870370370370386 -261 264 -0.2040466392318241 -261 265 0.01203703703703706 -261 266 -0.01342592592592587 -261 267 -0.05315500685871127 -261 268 0.01296296296296294 -261 269 0.0134259259259258 -261 270 -0.155178326474622 -262 253 -0.0009703703703703738 -262 254 -0.0005000000000000013 -262 255 -0.008333333333333331 -262 256 -0.001659259259259244 -262 257 -5.312590645178972e-18 -262 258 -0.03333333333333333 -262 259 -0.0002814814814814791 -262 260 1.734723475976807e-18 -262 261 5.204170427930421e-18 -262 262 0.007762962962962963 -262 263 4.553649124439119e-18 -262 264 1.040834085586084e-17 -262 265 -0.0009703703703703731 -262 266 0.0005000000000000002 -262 267 0.008333333333333342 -262 268 -0.00165925925925928 -262 269 -4.336808689942018e-19 -262 270 0.03333333333333334 -262 943 -0.0009703703703703649 -262 944 0.0004999999999999986 -262 945 -0.008333333333333331 -262 946 -0.0002814814814814774 -262 947 1.843143693225358e-18 -262 949 -0.0009703703703703706 -262 950 -0.0004999999999999998 -262 951 0.008333333333333326 -263 253 -0.0005000000000000013 -263 254 -0.001040740740740752 -263 255 -0.009259259259259339 -263 256 -5.312590645178972e-18 -263 257 0.0002814814814814939 -263 258 -1.474514954580286e-16 -263 259 1.734723475976807e-18 -263 260 -0.00236296296296296 -263 261 -0.03703703703703707 -263 262 4.553649124439119e-18 -263 263 0.008325925925925921 -263 264 -2.046973701652632e-16 -263 265 0.0005 -263 266 -0.001040740740740738 -263 267 -0.009259259259259184 -263 268 -3.252606517456513e-19 -263 269 0.0002814814814814635 -263 270 9.71445146547012e-17 -263 943 0.0004999999999999986 -263 944 -0.001040740740740734 -263 945 0.009259259259259266 -263 946 1.734723475976807e-18 -263 947 -0.002362962962962958 -263 948 0.03703703703703692 -263 949 -0.0004999999999999998 -263 950 -0.001040740740740737 -263 951 0.009259259259259215 -264 253 -0.01296296296296304 -264 254 -0.01342592592592609 -264 255 -0.1551783264746246 -264 256 -0.02407407407407403 -264 257 1.734723475976807e-17 -264 258 -0.1063100137174195 -264 259 9.194034422677078e-17 -264 260 -0.02870370370370344 -264 261 -0.2040466392318241 -264 262 -8.500145032286355e-17 -264 263 -7.979727989493313e-17 -264 264 1.241426611796982 -264 265 0.01296296296296297 -264 266 -0.01342592592592595 -264 267 -0.1551783264746223 -264 268 0.02407407407407413 -264 269 2.255140518769849e-17 -264 270 -0.1063100137174237 -264 943 -0.01296296296296293 -264 944 0.01342592592592585 -264 945 -0.1551783264746225 -264 946 -1.908195823574488e-17 -264 947 0.02870370370370387 -264 948 -0.2040466392318237 -264 949 0.01296296296296292 -264 950 0.0134259259259258 -264 951 -0.1551783264746219 -265 265 1 -266 266 1 -267 259 -0.01203703703703706 -267 260 -0.01342592592592588 -267 261 -0.05315500685871127 -267 262 -0.01296296296296296 -267 263 0.01342592592592582 -267 264 -0.1551783264746223 -267 265 5.377642775528102e-17 -267 266 -0.02870370370370375 -267 267 0.6207133058984909 -267 268 -5.551115123125783e-17 -267 269 0.0287037037037038 -267 270 -0.2040466392318245 -267 271 0.01203703703703702 -267 272 -0.01342592592592599 -267 273 -0.05315500685870901 -267 274 0.012962962962963 -267 275 0.013425925925926 -267 276 -0.1551783264746239 -268 259 -0.000970370370370371 -268 260 -0.0004999999999999998 -268 261 -0.008333333333333333 -268 262 -0.00165925925925928 -268 263 -3.252606517456513e-19 -268 264 -0.03333333333333334 -268 265 -0.000281481481481481 -268 266 7.589415207398531e-19 -268 267 3.469446951953614e-18 -268 268 0.007762962962962961 -268 269 4.336808689942018e-19 -268 270 -6.938893903907228e-18 -268 271 -0.0009703703703703675 -268 272 0.0004999999999999996 -268 273 0.008333333333333342 -268 274 -0.001659259259259232 -268 275 -1.192622389734055e-18 -268 276 0.03333333333333334 -268 946 -0.000970370370370373 -268 947 0.0005000000000000001 -268 948 -0.00833333333333334 -268 949 -0.000281481481481487 -268 950 7.589415207398531e-19 -268 951 -8.673617379884035e-18 -268 952 -0.0009703703703703697 -268 953 -0.0005000000000000003 -268 954 0.008333333333333326 -269 259 -0.0004999999999999998 -269 260 -0.001040740740740737 -269 261 -0.009259259259259184 -269 262 -4.336808689942018e-19 -269 263 0.0002814814814814634 -269 264 9.71445146547012e-17 -269 265 7.589415207398531e-19 -269 266 -0.002362962962962963 -269 267 -0.0370370370370371 -269 268 5.421010862427522e-19 -269 269 0.008325925925925928 -269 270 -4.163336342344337e-17 -269 271 0.0004999999999999996 -269 272 -0.001040740740740742 -269 273 -0.009259259259259323 -269 274 -1.192622389734055e-18 -269 275 0.0002814814814815043 -269 276 5.724587470723463e-17 -269 946 0.0005000000000000002 -269 947 -0.001040740740740739 -269 948 0.009259259259259215 -269 949 7.589415207398531e-19 -269 950 -0.00236296296296297 -269 951 0.03703703703703703 -269 952 -0.0005000000000000003 -269 953 -0.001040740740740747 -269 954 0.009259259259259352 -270 259 -0.01296296296296293 -270 260 -0.01342592592592594 -270 261 -0.155178326474622 -270 262 -0.02407407407407411 -270 263 -6.938893903907228e-18 -270 264 -0.1063100137174237 -270 265 -2.775557561562891e-17 -270 266 -0.02870370370370368 -270 267 -0.2040466392318245 -270 268 8.847089727481716e-17 -270 269 -2.42861286636753e-17 -270 270 1.241426611796983 -270 271 0.01296296296296298 -270 272 -0.01342592592592597 -270 273 -0.1551783264746234 -270 274 0.02407407407407402 -270 275 -1.734723475976807e-18 -270 276 -0.1063100137174178 -270 946 -0.01296296296296297 -270 947 0.01342592592592582 -270 948 -0.1551783264746222 -270 949 -4.683753385137379e-17 -270 950 0.02870370370370381 -270 951 -0.2040466392318253 -270 952 0.01296296296296299 -270 953 0.013425925925926 -270 954 -0.1551783264746238 -271 271 1 -272 272 1 -273 265 -0.01203703703703705 -273 266 -0.01342592592592599 -273 267 -0.05315500685870901 -273 268 -0.01296296296296298 -273 269 0.01342592592592594 -273 270 -0.1551783264746234 -273 271 -1.040834085586084e-17 -273 272 -0.02870370370370365 -273 273 0.6207133058984917 -273 274 6.938893903907228e-18 -273 275 0.02870370370370362 -273 276 -0.2040466392318236 -273 277 0.01203703703703706 -273 278 -0.01342592592592587 -273 279 -0.05315500685871333 -273 280 0.01296296296296297 -273 281 0.01342592592592595 -273 282 -0.1551783264746224 -274 265 -0.0009703703703703698 -274 266 -0.0005000000000000003 -274 267 -0.008333333333333342 -274 268 -0.001659259259259232 -274 269 -1.192622389734055e-18 -274 270 -0.03333333333333333 -274 271 -0.0002814814814814758 -274 272 5.421010862427522e-19 -274 274 0.007762962962962964 -274 275 2.710505431213761e-18 -274 276 -3.469446951953614e-18 -274 277 -0.0009703703703703721 -274 278 0.0004999999999999998 -274 279 0.008333333333333344 -274 280 -0.001659259259259292 -274 281 -1.301042606982605e-18 -274 282 0.03333333333333334 -274 949 -0.0009703703703703668 -274 950 0.0004999999999999996 -274 951 -0.008333333333333323 -274 952 -0.0002814814814814814 -274 953 7.589415207398531e-19 -274 954 -1.734723475976807e-18 -274 955 -0.0009703703703703737 -274 956 -0.0005000000000000004 -274 957 0.008333333333333325 -275 265 -0.0005000000000000002 -275 266 -0.001040740740740746 -275 267 -0.009259259259259342 -275 268 -1.301042606982605e-18 -275 269 0.0002814814814815042 -275 270 -1.387778780781446e-17 -275 271 8.673617379884035e-19 -275 272 -0.002362962962962955 -275 273 -0.03703703703703699 -275 274 2.710505431213761e-18 -275 275 0.008325925925925922 -275 276 6.591949208711867e-17 -275 277 0.0004999999999999997 -275 278 -0.001040740740740733 -275 279 -0.009259259259259175 -275 280 -1.301042606982605e-18 -275 281 0.0002814814814814537 -275 282 -1.561251128379126e-17 -275 949 0.0004999999999999996 -275 950 -0.001040740740740742 -275 951 0.009259259259259333 -275 952 6.505213034913027e-19 -275 953 -0.002362962962962963 -275 954 0.037037037037037 -275 955 -0.0005000000000000003 -275 956 -0.001040740740740739 -275 957 0.009259259259259149 -276 265 -0.012962962962963 -276 266 -0.01342592592592604 -276 267 -0.1551783264746239 -276 268 -0.02407407407407405 -276 269 1.561251128379126e-17 -276 270 -0.1063100137174177 -276 271 6.245004513516506e-17 -276 272 -0.02870370370370367 -276 273 -0.2040466392318236 -276 274 -6.591949208711867e-17 -276 275 -4.163336342344337e-17 -276 276 1.241426611796982 -276 277 0.01296296296296294 -276 278 -0.01342592592592578 -276 279 -0.1551783264746219 -276 280 0.0240740740740741 -276 281 -6.938893903907228e-18 -276 282 -0.1063100137174254 -276 949 -0.01296296296296295 -276 950 0.01342592592592593 -276 951 -0.1551783264746232 -276 952 1.734723475976807e-17 -276 953 0.02870370370370364 -276 954 -0.2040466392318243 -276 955 0.01296296296296295 -276 956 0.01342592592592594 -276 957 -0.1551783264746221 -277 277 1 -278 278 1 -279 271 -0.01203703703703709 -279 272 -0.01342592592592587 -279 273 -0.05315500685871333 -279 274 -0.01296296296296294 -279 275 0.01342592592592589 -279 276 -0.1551783264746219 -279 277 7.979727989493313e-17 -279 278 -0.02870370370370363 -279 279 0.6207133058984913 -279 280 -6.418476861114186e-17 -279 281 0.02870370370370359 -279 282 -0.2040466392318231 -279 283 0.01203703703703698 -279 284 -0.01342592592592601 -279 285 -0.05315500685870875 -279 286 0.01296296296296303 -279 287 0.01342592592592603 -279 288 -0.1551783264746243 -280 271 -0.0009703703703703743 -280 272 -0.0005000000000000003 -280 273 -0.008333333333333342 -280 274 -0.001659259259259292 -280 275 -1.301042606982605e-18 -280 276 -0.03333333333333333 -280 277 -0.0002814814814814729 -280 278 2.168404344971009e-19 -280 279 -1.734723475976807e-17 -280 280 0.007762962962962966 -280 281 5.529431079676073e-18 -280 282 -1.040834085586084e-17 -280 283 -0.0009703703703703645 -280 284 0.0004999999999999989 -280 285 0.008333333333333323 -280 286 -0.001659259259259238 -280 287 -1.734723475976807e-18 -280 288 0.03333333333333333 -280 952 -0.0009703703703703718 -280 953 0.0004999999999999997 -280 954 -0.008333333333333325 -280 955 -0.0002814814814814797 -280 956 2.168404344971009e-19 -280 957 1.040834085586084e-17 -280 958 -0.000970370370370373 -280 959 -0.000500000000000001 -280 960 0.008333333333333342 -281 271 -0.0005000000000000004 -281 272 -0.001040740740740738 -281 273 -0.009259259259259193 -281 274 -1.301042606982605e-18 -281 275 0.0002814814814814538 -281 276 -9.020562075079397e-17 -281 277 1.084202172485504e-19 -281 278 -0.002362962962962952 -281 279 -0.03703703703703698 -281 280 5.529431079676073e-18 -281 281 0.008325925925925919 -281 282 1.318389841742373e-16 -281 283 0.0004999999999999989 -281 284 -0.001040740740740738 -281 285 -0.009259259259259302 -281 286 -1.951563910473908e-18 -281 287 0.0002814814814814992 -281 288 1.370431546021678e-16 -281 952 0.0004999999999999996 -281 953 -0.001040740740740735 -281 954 0.009259259259259134 -281 955 3.252606517456513e-19 -281 956 -0.002362962962962961 -281 957 0.03703703703703694 -281 958 -0.000500000000000001 -281 959 -0.001040740740740749 -281 960 0.009259259259259337 -282 271 -0.01296296296296297 -282 272 -0.01342592592592584 -282 273 -0.1551783264746224 -282 274 -0.02407407407407412 -282 275 1.734723475976807e-18 -282 276 -0.1063100137174254 -282 277 1.561251128379126e-17 -282 278 -0.02870370370370363 -282 279 -0.2040466392318231 -282 280 8.847089727481716e-17 -282 281 -5.030698080332741e-17 -282 282 1.241426611796982 -282 283 0.01296296296296292 -282 284 -0.01342592592592594 -282 285 -0.1551783264746228 -282 286 0.02407407407407403 -282 287 -3.469446951953614e-17 -282 288 -0.1063100137174186 -282 952 -0.01296296296296292 -282 953 0.01342592592592588 -282 954 -0.1551783264746216 -282 955 -8.847089727481716e-17 -282 956 0.02870370370370359 -282 957 -0.2040466392318239 -282 958 0.01296296296296305 -282 959 0.01342592592592602 -282 960 -0.1551783264746243 -283 283 1 -284 284 1 -285 277 -0.01203703703703705 -285 278 -0.01342592592592596 -285 279 -0.05315500685870875 -285 280 -0.01296296296296293 -285 281 0.01342592592592587 -285 282 -0.1551783264746227 -285 283 -1.040834085586084e-17 -285 284 -0.02870370370370386 -285 285 0.6207133058984897 -285 286 2.602085213965211e-17 -285 287 0.02870370370370395 -285 288 -0.2040466392318259 -285 289 0.01203703703703703 -285 290 -0.0134259259259259 -285 291 -0.0531550068587104 -285 292 0.01296296296296293 -285 293 0.0134259259259259 -285 294 -0.155178326474622 -286 277 -0.0009703703703703734 -286 278 -0.0005000000000000011 -286 279 -0.008333333333333344 -286 280 -0.001659259259259239 -286 281 -1.951563910473908e-18 -286 282 -0.03333333333333333 -286 283 -0.0002814814814814904 -286 284 -2.168404344971009e-19 -286 285 -1.561251128379126e-17 -286 286 0.007762962962962958 -286 287 4.87890977618477e-18 -286 289 -0.0009703703703703705 -286 290 0.0005 -286 291 0.008333333333333323 -286 292 -0.001659259259259266 -286 293 2.168404344971009e-19 -286 294 0.03333333333333332 -286 955 -0.0009703703703703644 -286 956 0.0004999999999999989 -286 957 -0.008333333333333323 -286 958 -0.0002814814814814834 -286 959 -3.252606517456513e-19 -286 960 2.42861286636753e-17 -286 961 -0.0009703703703703726 -286 962 -0.0005000000000000003 -286 963 0.008333333333333345 -287 277 -0.000500000000000001 -287 278 -0.001040740740740749 -287 279 -0.009259259259259339 -287 280 -1.843143693225358e-18 -287 281 0.0002814814814814992 -287 282 -1.040834085586084e-17 -287 283 -1.084202172485504e-19 -287 284 -0.002362962962962975 -287 285 -0.03703703703703717 -287 286 4.87890977618477e-18 -287 287 0.008325925925925935 -287 288 -4.85722573273506e-17 -287 289 0.0004999999999999999 -287 290 -0.00104074074074074 -287 291 -0.009259259259259243 -287 292 4.336808689942018e-19 -287 293 0.0002814814814814762 -287 294 1.214306433183765e-17 -287 955 0.0004999999999999989 -287 956 -0.001040740740740738 -287 957 0.0092592592592593 -287 958 -7.589415207398531e-19 -287 959 -0.002362962962962966 -287 960 0.03703703703703705 -287 961 -0.0005000000000000003 -287 962 -0.00104074074074074 -287 963 0.009259259259259231 -288 277 -0.01296296296296305 -288 278 -0.01342592592592608 -288 279 -0.1551783264746243 -288 280 -0.02407407407407403 -288 281 2.255140518769849e-17 -288 282 -0.1063100137174186 -288 283 7.979727989493313e-17 -288 284 -0.02870370370370364 -288 285 -0.2040466392318259 -288 286 -7.112366251504909e-17 -288 287 -1.162264728904461e-16 -288 288 1.241426611796982 -288 289 0.01296296296296293 -288 290 -0.01342592592592589 -288 291 -0.155178326474622 -288 292 0.02407407407407409 -288 293 -2.602085213965211e-17 -288 294 -0.1063100137174216 -288 955 -0.01296296296296292 -288 956 0.01342592592592588 -288 957 -0.1551783264746228 -288 958 8.673617379884035e-18 -288 959 0.02870370370370393 -288 960 -0.2040466392318249 -288 961 0.01296296296296296 -288 962 0.01342592592592592 -288 963 -0.1551783264746223 -289 289 1 -290 290 1 -291 283 -0.01203703703703703 -291 284 -0.0134259259259259 -291 285 -0.0531550068587104 -291 286 -0.01296296296296293 -291 287 0.0134259259259259 -291 288 -0.155178326474622 -291 289 -5.204170427930421e-18 -291 290 -0.02870370370370348 -291 291 0.6207133058984875 -291 292 1.734723475976807e-18 -291 293 0.02870370370370349 -291 294 -0.204046639231821 -291 295 0.01203703703703706 -291 296 -0.01342592592592585 -291 297 -0.05315500685871254 -291 298 0.01296296296296292 -291 299 0.01342592592592584 -291 300 -0.1551783264746217 -292 283 -0.0009703703703703705 -292 284 -0.0005 -292 285 -0.008333333333333325 -292 286 -0.001659259259259266 -292 287 3.252606517456513e-19 -292 288 -0.03333333333333332 -292 289 -0.0002814814814814676 -292 290 2.168404344971009e-19 -292 291 8.673617379884035e-18 -292 292 0.007762962962962973 -292 293 -2.168404344971009e-18 -292 295 -0.0009703703703703749 -292 296 0.0005000000000000006 -292 297 0.008333333333333333 -292 298 -0.00165925925925929 -292 299 6.505213034913027e-19 -292 300 0.03333333333333332 -292 958 -0.0009703703703703701 -292 959 0.0004999999999999999 -292 960 -0.008333333333333333 -292 961 -0.0002814814814814642 -292 962 -1.084202172485504e-19 -292 963 -8.673617379884035e-18 -292 964 -0.0009703703703703696 -292 965 -0.0004999999999999994 -292 966 0.008333333333333323 -293 283 -0.0005 -293 284 -0.00104074074074074 -293 285 -0.009259259259259243 -293 286 2.168404344971009e-19 -293 287 0.0002814814814814762 -293 288 1.214306433183765e-17 -293 289 2.168404344971009e-19 -293 290 -0.002362962962962944 -293 291 -0.03703703703703683 -293 292 -2.38524477946811e-18 -293 293 0.008325925925925907 -293 294 2.775557561562891e-17 -293 295 0.0005000000000000007 -293 296 -0.001040740740740739 -293 297 -0.009259259259259182 -293 298 6.505213034913027e-19 -293 299 0.0002814814814814547 -293 300 -4.683753385137379e-17 -293 958 0.0004999999999999998 -293 959 -0.001040740740740739 -293 960 0.009259259259259231 -293 961 2.168404344971009e-19 -293 962 -0.00236296296296294 -293 963 0.03703703703703677 -293 964 -0.0004999999999999991 -293 965 -0.001040740740740733 -293 966 0.009259259259259144 -294 283 -0.01296296296296293 -294 284 -0.01342592592592589 -294 285 -0.155178326474622 -294 286 -0.0240740740740741 -294 287 -3.469446951953614e-18 -294 288 -0.1063100137174215 -294 289 -2.255140518769849e-17 -294 290 -0.0287037037037034 -294 291 -0.204046639231821 -294 292 1.214306433183765e-17 -294 293 -7.632783294297951e-17 -294 294 1.241426611796976 -294 295 0.01296296296296298 -294 296 -0.01342592592592588 -294 297 -0.1551783264746225 -294 298 0.02407407407407409 -294 299 1.908195823574488e-17 -294 300 -0.1063100137174253 -294 958 -0.01296296296296294 -294 959 0.01342592592592589 -294 960 -0.155178326474622 -294 961 1.387778780781446e-17 -294 962 0.0287037037037035 -294 963 -0.2040466392318206 -294 964 0.0129629629629629 -294 965 0.01342592592592584 -294 966 -0.1551783264746216 -295 295 1 -296 296 1 -297 289 -0.01203703703703701 -297 290 -0.01342592592592587 -297 291 -0.05315500685871254 -297 292 -0.01296296296296297 -297 293 0.01342592592592592 -297 294 -0.1551783264746225 -297 295 1.040834085586084e-17 -297 296 -0.02870370370370361 -297 297 0.6207133058984897 -297 298 -6.418476861114186e-17 -297 299 0.0287037037037035 -297 300 -0.204046639231822 -297 301 0.01203703703703703 -297 302 -0.01342592592592592 -297 303 -0.0531550068587095 -297 304 0.01296296296296301 -297 305 0.01342592592592598 -297 306 -0.1551783264746233 -298 289 -0.0009703703703703701 -298 290 -0.0004999999999999994 -298 291 -0.008333333333333321 -298 292 -0.00165925925925929 -298 293 6.505213034913027e-19 -298 294 -0.03333333333333331 -298 295 -0.0002814814814814697 -298 296 1.192622389734055e-18 -298 297 1.561251128379126e-17 -298 298 0.007762962962962977 -298 299 -3.035766082959412e-18 -298 300 -3.469446951953614e-18 -298 301 -0.0009703703703703692 -298 302 0.0004999999999999995 -298 303 0.008333333333333344 -298 304 -0.001659259259259263 -298 305 -5.421010862427522e-19 -298 306 0.03333333333333334 -298 961 -0.000970370370370376 -298 962 0.0005000000000000008 -298 963 -0.008333333333333342 -298 964 -0.0002814814814814711 -298 965 1.084202172485504e-19 -298 966 -2.42861286636753e-17 -298 967 -0.0009703703703703665 -298 968 -0.0004999999999999991 -298 969 0.008333333333333325 -299 289 -0.0004999999999999995 -299 290 -0.001040740740740734 -299 291 -0.009259259259259165 -299 292 7.589415207398531e-19 -299 293 0.0002814814814814548 -299 294 2.42861286636753e-17 -299 295 1.084202172485504e-18 -299 296 -0.002362962962962947 -299 297 -0.03703703703703691 -299 298 -3.035766082959412e-18 -299 299 0.008325925925925912 -299 300 1.35308431126191e-16 -299 301 0.0004999999999999996 -299 302 -0.001040740740740737 -299 303 -0.009259259259259273 -299 304 -3.252606517456513e-19 -299 305 0.000281481481481478 -299 306 2.602085213965211e-17 -299 961 0.0005000000000000007 -299 962 -0.00104074074074074 -299 963 0.009259259259259163 -299 965 -0.00236296296296295 -299 966 0.03703703703703691 -299 967 -0.0004999999999999991 -299 968 -0.001040740740740737 -299 969 0.009259259259259264 -300 289 -0.01296296296296291 -300 290 -0.0134259259259258 -300 291 -0.1551783264746217 -300 292 -0.02407407407407408 -300 293 -3.816391647148976e-17 -300 294 -0.1063100137174253 -300 295 6.938893903907228e-18 -300 296 -0.02870370370370352 -300 297 -0.204046639231822 -300 298 1.214306433183765e-17 -300 299 -7.632783294297951e-17 -300 300 1.24142661179698 -300 301 0.01296296296296294 -300 302 -0.01342592592592589 -300 303 -0.1551783264746225 -300 304 0.02407407407407409 -300 305 3.469446951953614e-18 -300 306 -0.1063100137174217 -300 961 -0.01296296296296299 -300 962 0.01342592592592593 -300 963 -0.1551783264746226 -300 964 5.204170427930421e-17 -300 965 0.02870370370370351 -300 966 -0.2040466392318221 -300 967 0.01296296296296289 -300 968 0.01342592592592589 -300 969 -0.155178326474622 -301 301 1 -302 302 1 -303 295 -0.01203703703703709 -303 296 -0.01342592592592593 -303 297 -0.05315500685870949 -303 298 -0.01296296296296297 -303 299 0.01342592592592588 -303 300 -0.1551783264746225 -303 301 1.405126015541214e-16 -303 302 -0.02870370370370381 -303 303 0.6207133058984924 -303 304 -5.724587470723463e-17 -303 305 0.02870370370370371 -303 306 -0.2040466392318251 -303 307 0.01203703703703695 -303 308 -0.01342592592592599 -303 309 -0.05315500685871088 -303 310 0.01296296296296303 -303 311 0.01342592592592614 -303 312 -0.1551783264746244 -304 295 -0.0009703703703703717 -304 296 -0.0005000000000000006 -304 297 -0.008333333333333333 -304 298 -0.001659259259259263 -304 299 -3.252606517456513e-19 -304 300 -0.03333333333333333 -304 301 -0.0002814814814814836 -304 302 2.49366499671666e-18 -304 303 -3.469446951953614e-18 -304 304 0.007762962962962945 -304 305 -4.011548038196366e-18 -304 306 -1.040834085586084e-17 -304 307 -0.0009703703703703634 -304 308 0.0004999999999999982 -304 309 0.008333333333333335 -304 310 -0.001659259259259233 -304 311 5.204170427930421e-18 -304 312 0.03333333333333333 -304 964 -0.0009703703703703731 -304 965 0.0005000000000000009 -304 966 -0.008333333333333333 -304 967 -0.0002814814814815022 -304 968 -5.095750210681871e-18 -304 969 1.040834085586084e-17 -304 970 -0.0009703703703703565 -304 971 -0.0004999999999999964 -304 972 0.008333333333333335 -305 295 -0.0005000000000000004 -305 296 -0.001040740740740745 -305 297 -0.009259259259259309 -305 298 -5.421010862427522e-19 -305 299 0.0002814814814814782 -305 300 2.602085213965211e-17 -305 301 2.276824562219559e-18 -305 302 -0.002362962962962966 -305 303 -0.03703703703703712 -305 304 -4.228388472693467e-18 -305 305 0.008325925925925912 -305 306 2.081668171172169e-17 -305 307 0.0004999999999999981 -305 308 -0.00104074074074073 -305 309 -0.009259259259259241 -305 310 5.312590645178972e-18 -305 311 0.0002814814814815089 -305 312 -6.765421556309548e-17 -305 964 0.000500000000000001 -305 965 -0.001040740740740747 -305 966 0.009259259259259302 -305 967 -4.98732999343332e-18 -305 968 -0.00236296296296299 -305 969 0.03703703703703722 -305 970 -0.0004999999999999964 -305 971 -0.00104074074074072 -305 972 0.009259259259259278 -306 295 -0.01296296296296296 -306 296 -0.013425925925926 -306 297 -0.1551783264746233 -306 298 -0.02407407407407398 -306 299 -1.908195823574488e-17 -306 300 -0.1063100137174217 -306 301 5.898059818321144e-17 -306 302 -0.02870370370370387 -306 303 -0.2040466392318251 -306 304 -3.191891195797325e-16 -306 305 -1.422473250300982e-16 -306 306 1.241426611796981 -306 307 0.0129629629629629 -306 308 -0.01342592592592576 -306 309 -0.1551783264746216 -306 310 0.02407407407407428 -306 311 -6.418476861114186e-17 -306 312 -0.1063100137174172 -306 964 -0.01296296296296299 -306 965 0.01342592592592602 -306 966 -0.1551783264746233 -306 967 1.665334536937735e-16 -306 968 0.02870370370370425 -306 969 -0.2040466392318283 -306 970 0.01296296296296283 -306 971 0.01342592592592558 -306 972 -0.1551783264746205 -307 307 1 -308 308 1 -309 301 -0.0120370370370371 -309 302 -0.01342592592592595 -309 303 -0.05315500685871087 -309 304 -0.01296296296296287 -309 305 0.01342592592592582 -309 306 -0.1551783264746216 -309 307 5.724587470723463e-17 -309 308 -0.02870370370370373 -309 309 0.6207133058984928 -309 310 -8.326672684688674e-17 -309 311 0.02870370370370387 -309 312 -0.2040466392318263 -309 313 0.01203703703703703 -309 314 -0.01342592592592595 -309 315 -0.05315500685871064 -309 316 0.01296296296296297 -309 317 0.01342592592592594 -309 318 -0.1551783264746233 -310 301 -0.0009703703703703766 -310 302 -0.000500000000000002 -310 303 -0.008333333333333342 -310 304 -0.001659259259259233 -310 305 5.312590645178972e-18 -310 306 -0.03333333333333332 -310 307 -0.0002814814814814883 -310 308 9.75781955236954e-19 -310 309 -8.673617379884035e-18 -310 310 0.007762962962962959 -310 311 -8.456776945386935e-18 -310 312 -3.469446951953614e-18 -310 313 -0.000970370370370371 -310 314 0.0005000000000000004 -310 315 0.008333333333333335 -310 316 -0.001659259259259253 -310 317 4.336808689942018e-18 -310 318 0.03333333333333331 -310 967 -0.0009703703703703788 -310 968 0.0005000000000000037 -310 969 -0.008333333333333314 -310 970 -0.0002814814814814955 -310 971 -6.396792817664476e-18 -310 972 3.469446951953614e-18 -310 973 -0.0009703703703703629 -310 974 -0.0004999999999999978 -310 975 0.008333333333333321 -311 301 -0.0005000000000000019 -311 302 -0.001040740740740753 -311 303 -0.009259259259259335 -311 304 5.312590645178972e-18 -311 305 0.0002814814814815091 -311 306 1.925543058334256e-16 -311 307 9.75781955236954e-19 -311 308 -0.002362962962962972 -311 309 -0.03703703703703713 -311 310 -8.565197162635485e-18 -311 311 0.00832592592592595 -311 312 -2.081668171172169e-17 -311 313 0.0005000000000000003 -311 314 -0.001040740740740744 -311 315 -0.009259259259259288 -311 316 4.553649124439119e-18 -311 317 0.0002814814814814884 -311 318 -1.700029006457271e-16 -311 967 0.0005000000000000035 -311 968 -0.001040740740740772 -311 969 0.009259259259259502 -311 970 -6.396792817664476e-18 -311 971 -0.002362962962962982 -311 972 0.03703703703703722 -311 973 -0.0004999999999999978 -311 974 -0.001040740740740726 -311 975 0.009259259259259186 -312 301 -0.01296296296296308 -312 302 -0.01342592592592606 -312 303 -0.1551783264746244 -312 304 -0.02407407407407383 -312 305 -5.030698080332741e-17 -312 306 -0.1063100137174172 -312 307 6.418476861114186e-17 -312 308 -0.02870370370370371 -312 309 -0.2040466392318263 -312 310 -2.983724378680108e-16 -312 311 -5.030698080332741e-17 -312 312 1.241426611796986 -312 313 0.012962962962963 -312 314 -0.01342592592592598 -312 315 -0.1551783264746238 -312 316 0.02407407407407413 -312 317 9.540979117872439e-17 -312 318 -0.1063100137174203 -312 967 -0.01296296296296311 -312 968 0.01342592592592626 -312 969 -0.1551783264746262 -312 970 2.42861286636753e-16 -312 971 0.0287037037037038 -312 972 -0.2040466392318271 -312 973 0.01296296296296288 -312 974 0.0134259259259257 -312 975 -0.155178326474621 -313 313 1 -314 314 1 -315 307 -0.012037037037037 -315 308 -0.01342592592592596 -315 309 -0.05315500685871064 -315 310 -0.012962962962963 -315 311 0.013425925925926 -315 312 -0.1551783264746238 -315 313 -2.949029909160572e-17 -315 314 -0.02870370370370368 -315 315 0.6207133058984922 -315 316 3.816391647148976e-17 -315 317 0.02870370370370363 -315 318 -0.2040466392318246 -315 319 0.01203703703703703 -315 320 -0.01342592592592591 -315 321 -0.05315500685871064 -315 322 0.01296296296296296 -315 323 0.01342592592592592 -315 324 -0.1551783264746225 -316 307 -0.0009703703703703688 -316 308 -0.0004999999999999998 -316 309 -0.008333333333333331 -316 310 -0.001659259259259253 -316 311 4.553649124439119e-18 -316 312 -0.03333333333333331 -316 313 -0.0002814814814814814 -316 314 1.084202172485504e-19 -316 315 -1.734723475976807e-18 -316 316 0.007762962962962965 -316 317 -3.903127820947816e-18 -316 319 -0.0009703703703703699 -316 320 0.0004999999999999997 -316 321 0.008333333333333335 -316 322 -0.001659259259259267 -316 323 -1.301042606982605e-18 -316 324 0.03333333333333334 -316 970 -0.0009703703703703788 -316 971 0.0005000000000000022 -316 972 -0.008333333333333331 -316 973 -0.000281481481481475 -316 974 -1.192622389734055e-18 -316 975 -1.214306433183765e-17 -316 976 -0.0009703703703703721 -316 977 -0.0005000000000000003 -316 978 0.008333333333333333 -317 307 -0.0004999999999999996 -317 308 -0.00104074074074074 -317 309 -0.009259259259259269 -317 310 4.336808689942018e-18 -317 311 0.0002814814814814885 -317 312 8.847089727481716e-17 -317 314 -0.002362962962962963 -317 315 -0.03703703703703701 -317 316 -3.903127820947816e-18 -317 317 0.008325925925925928 -317 318 5.204170427930421e-17 -317 319 0.0004999999999999997 -317 320 -0.001040740740740737 -317 321 -0.009259259259259228 -317 322 -1.409462824231156e-18 -317 323 0.0002814814814814751 -317 324 6.938893903907228e-17 -317 970 0.0005000000000000023 -317 971 -0.001040740740740754 -317 972 0.009259259259259297 -317 973 -1.192622389734055e-18 -317 974 -0.002362962962962955 -317 975 0.03703703703703697 -317 976 -0.0005000000000000004 -317 977 -0.001040740740740742 -317 978 0.009259259259259245 -318 307 -0.01296296296296297 -318 308 -0.01342592592592592 -318 309 -0.1551783264746233 -318 310 -0.02407407407407398 -318 311 4.683753385137379e-17 -318 312 -0.1063100137174204 -318 313 3.816391647148976e-17 -318 314 -0.02870370370370377 -318 315 -0.2040466392318246 -318 316 -1.006139616066548e-16 -318 317 7.632783294297951e-17 -318 318 1.241426611796982 -318 319 0.01296296296296293 -318 320 -0.01342592592592588 -318 321 -0.155178326474622 -318 322 0.02407407407407409 -318 323 -6.938893903907228e-18 -318 324 -0.1063100137174219 -318 970 -0.01296296296296307 -318 971 0.01342592592592608 -318 972 -0.1551783264746244 -318 973 9.540979117872439e-17 -318 974 0.02870370370370346 -318 975 -0.2040466392318229 -318 976 0.01296296296296296 -318 977 0.01342592592592592 -318 978 -0.1551783264746224 -319 319 1 -320 320 1 -321 313 -0.01203703703703707 -321 314 -0.0134259259259259 -321 315 -0.05315500685871065 -321 316 -0.01296296296296294 -321 317 0.01342592592592586 -321 318 -0.155178326474622 -321 319 2.081668171172169e-17 -321 320 -0.02870370370370369 -321 321 0.6207133058984902 -321 322 -4.85722573273506e-17 -321 323 0.0287037037037037 -321 324 -0.204046639231824 -321 325 0.01203703703703705 -321 326 -0.01342592592592591 -321 327 -0.0531550068587106 -321 328 0.01296296296296299 -321 329 0.01342592592592594 -321 330 -0.1551783264746229 -322 313 -0.0009703703703703721 -322 314 -0.0005000000000000004 -322 315 -0.008333333333333333 -322 316 -0.001659259259259267 -322 317 -1.409462824231156e-18 -322 318 -0.03333333333333333 -322 319 -0.0002814814814814804 -322 320 4.336808689942018e-19 -322 321 -3.469446951953614e-18 -322 322 0.007762962962962961 -322 323 1.409462824231156e-18 -322 324 3.469446951953614e-18 -322 325 -0.0009703703703703699 -322 326 0.0005 -322 327 0.008333333333333335 -322 328 -0.001659259259259257 -322 329 -2.168404344971009e-19 -322 330 0.03333333333333333 -322 973 -0.0009703703703703699 -322 974 0.0004999999999999997 -322 975 -0.008333333333333331 -322 976 -0.0002814814814814737 -322 977 5.421010862427522e-19 -322 978 6.938893903907228e-18 -322 979 -0.0009703703703703711 -322 980 -0.0005 -322 981 0.008333333333333337 -323 313 -0.0005000000000000003 -323 314 -0.001040740740740742 -323 315 -0.009259259259259247 -323 316 -1.301042606982605e-18 -323 317 0.0002814814814814751 -323 318 -5.204170427930421e-18 -323 319 2.168404344971009e-19 -323 320 -0.002362962962962962 -323 321 -0.03703703703703701 -323 322 1.517883041479706e-18 -323 323 0.008325925925925919 -323 324 -1.387778780781446e-16 -323 325 0.0004999999999999999 -323 326 -0.001040740740740742 -323 327 -0.009259259259259259 -323 328 1.084202172485504e-19 -323 329 0.000281481481481482 -323 330 -4.683753385137379e-17 -323 973 0.0004999999999999997 -323 974 -0.001040740740740737 -323 975 0.009259259259259228 -323 976 4.336808689942018e-19 -323 977 -0.002362962962962953 -323 978 0.03703703703703691 -323 979 -0.0005 -323 980 -0.001040740740740739 -323 981 0.009259259259259231 -324 313 -0.01296296296296296 -324 314 -0.01342592592592595 -324 315 -0.1551783264746225 -324 316 -0.02407407407407411 -324 318 -0.1063100137174219 -324 319 1.214306433183765e-17 -324 320 -0.02870370370370368 -324 321 -0.204046639231824 -324 322 3.642919299551295e-17 -324 323 4.510281037539698e-17 -324 324 1.241426611796978 -324 325 0.01296296296296295 -324 326 -0.01342592592592593 -324 327 -0.1551783264746229 -324 328 0.02407407407407409 -324 329 6.765421556309548e-17 -324 330 -0.1063100137174208 -324 973 -0.01296296296296293 -324 974 0.01342592592592586 -324 975 -0.1551783264746219 -324 976 -2.081668171172169e-17 -324 977 0.02870370370370369 -324 978 -0.2040466392318223 -324 979 0.01296296296296294 -324 980 0.0134259259259259 -324 981 -0.1551783264746222 -325 325 1 -326 326 1 -327 319 -0.01203703703703705 -327 320 -0.01342592592592591 -327 321 -0.05315500685871061 -327 322 -0.01296296296296299 -327 323 0.01342592592592594 -327 324 -0.1551783264746229 -327 325 2.602085213965211e-17 -327 326 -0.02870370370370369 -327 327 0.6207133058984916 -327 328 5.030698080332741e-17 -327 329 0.0287037037037037 -327 330 -0.2040466392318246 -327 331 0.01203703703703703 -327 332 -0.01342592592592595 -327 333 -0.05315500685871086 -327 334 0.01296296296296293 -327 335 0.01342592592592591 -327 336 -0.1551783264746226 -328 319 -0.0009703703703703699 -328 320 -0.0005 -328 321 -0.008333333333333331 -328 322 -0.001659259259259257 -328 323 1.084202172485504e-19 -328 324 -0.03333333333333335 -328 325 -0.0002814814814814814 -328 326 -4.336808689942018e-19 -328 327 -1.734723475976807e-18 -328 328 0.007762962962962963 -328 329 -1.084202172485504e-18 -328 330 -3.469446951953614e-18 -328 331 -0.000970370370370372 -328 332 0.0005000000000000004 -328 333 0.008333333333333335 -328 334 -0.001659259259259264 -328 335 1.517883041479706e-18 -328 336 0.03333333333333333 -328 976 -0.0009703703703703717 -328 977 0.0005000000000000002 -328 978 -0.00833333333333334 -328 979 -0.0002814814814814758 -328 980 -1.084202172485504e-18 -328 981 8.673617379884035e-18 -328 982 -0.000970370370370371 -328 983 -0.0004999999999999999 -328 984 0.008333333333333337 -329 319 -0.0004999999999999999 -329 320 -0.001040740740740741 -329 321 -0.009259259259259259 -329 322 -3.252606517456513e-19 -329 323 0.000281481481481482 -329 324 -4.683753385137379e-17 -329 325 -2.168404344971009e-19 -329 326 -0.002362962962962963 -329 327 -0.03703703703703703 -329 328 -9.75781955236954e-19 -329 329 0.008325925925925922 -329 330 -6.591949208711867e-17 -329 331 0.0005000000000000004 -329 332 -0.001040740740740742 -329 333 -0.009259259259259273 -329 334 1.517883041479706e-18 -329 335 0.0002814814814814779 -329 336 -3.642919299551295e-17 -329 976 0.0005000000000000002 -329 977 -0.00104074074074074 -329 978 0.009259259259259231 -329 979 -6.505213034913027e-19 -329 980 -0.002362962962962956 -329 981 0.03703703703703692 -329 982 -0.0004999999999999999 -329 983 -0.001040740740740739 -329 984 0.009259259259259219 -330 319 -0.01296296296296295 -330 320 -0.01342592592592593 -330 321 -0.1551783264746229 -330 322 -0.02407407407407407 -330 323 6.071532165918825e-17 -330 324 -0.1063100137174208 -330 325 -5.030698080332741e-17 -330 326 -0.02870370370370369 -330 327 -0.2040466392318246 -330 328 8.673617379884035e-18 -330 329 5.724587470723463e-17 -330 330 1.241426611796982 -330 331 0.012962962962963 -330 332 -0.01342592592592594 -330 333 -0.1551783264746232 -330 334 0.02407407407407404 -330 335 -6.071532165918825e-17 -330 336 -0.106310013717422 -330 976 -0.01296296296296296 -330 977 0.01342592592592591 -330 978 -0.1551783264746222 -330 979 -1.387778780781446e-17 -330 980 0.02870370370370366 -330 981 -0.2040466392318235 -330 982 0.01296296296296299 -330 983 0.01342592592592594 -330 984 -0.1551783264746233 -331 331 1 -332 332 1 -333 325 -0.012037037037037 -333 326 -0.01342592592592595 -333 327 -0.05315500685871086 -333 328 -0.01296296296296296 -333 329 0.01342592592592596 -333 330 -0.1551783264746231 -333 331 -2.949029909160572e-17 -333 332 -0.02870370370370364 -333 333 0.6207133058984904 -333 335 0.02870370370370361 -333 336 -0.2040466392318232 -333 337 0.01203703703703703 -333 338 -0.01342592592592591 -333 339 -0.05315500685871064 -333 340 0.01296296296296296 -333 341 0.01342592592592592 -333 342 -0.1551783264746225 -334 325 -0.0009703703703703698 -334 326 -0.0004999999999999998 -334 327 -0.008333333333333333 -334 328 -0.001659259259259264 -334 329 1.626303258728257e-18 -334 330 -0.03333333333333332 -334 331 -0.0002814814814814761 -334 332 1.084202172485504e-19 -334 333 -1.734723475976807e-18 -334 334 0.007762962962962965 -334 336 -1.387778780781446e-17 -334 337 -0.0009703703703703699 -334 338 0.0004999999999999997 -334 339 0.008333333333333335 -334 340 -0.001659259259259266 -334 341 -1.517883041479706e-18 -334 342 0.03333333333333333 -334 979 -0.0009703703703703702 -334 980 0.0005000000000000001 -334 981 -0.008333333333333323 -334 982 -0.000281481481481479 -334 983 -1.084202172485504e-19 -334 984 -3.469446951953614e-18 -334 985 -0.0009703703703703706 -334 986 -0.0005000000000000001 -334 987 0.008333333333333321 -335 325 -0.0004999999999999997 -335 326 -0.001040740740740738 -335 327 -0.009259259259259254 -335 328 1.517883041479706e-18 -335 329 0.0002814814814814779 -335 330 3.642919299551295e-17 -335 331 -1.084202172485504e-19 -335 332 -0.002362962962962956 -335 333 -0.03703703703703698 -335 334 2.168404344971009e-19 -335 335 0.008325925925925921 -335 336 1.387778780781446e-16 -335 337 0.0004999999999999997 -335 338 -0.001040740740740737 -335 339 -0.009259259259259228 -335 340 -1.626303258728257e-18 -335 341 0.000281481481481476 -335 342 6.938893903907228e-17 -335 979 0.0005000000000000001 -335 980 -0.001040740740740742 -335 981 0.00925925925925924 -335 982 -1.084202172485504e-19 -335 983 -0.002362962962962959 -335 984 0.03703703703703694 -335 985 -0.0005000000000000001 -335 986 -0.001040740740740742 -335 987 0.009259259259259245 -336 325 -0.01296296296296297 -336 326 -0.01342592592592588 -336 327 -0.1551783264746227 -336 328 -0.02407407407407408 -336 329 -3.816391647148976e-17 -336 330 -0.106310013717422 -336 331 3.816391647148976e-17 -336 332 -0.02870370370370363 -336 333 -0.2040466392318233 -336 334 -2.081668171172169e-17 -336 335 -5.724587470723463e-17 -336 336 1.241426611796981 -336 337 0.01296296296296293 -336 338 -0.01342592592592588 -336 339 -0.155178326474622 -336 340 0.02407407407407409 -336 341 6.938893903907228e-18 -336 342 -0.1063100137174217 -336 979 -0.01296296296296297 -336 980 0.01342592592592597 -336 981 -0.1551783264746235 -336 982 4.336808689942018e-17 -336 983 0.02870370370370361 -336 984 -0.204046639231824 -336 985 0.01296296296296295 -336 986 0.0134259259259259 -336 987 -0.1551783264746222 -337 337 1 -338 338 1 -339 331 -0.01203703703703707 -339 332 -0.0134259259259259 -339 333 -0.05315500685871065 -339 334 -0.01296296296296294 -339 335 0.01342592592592586 -339 336 -0.155178326474622 -339 337 7.459310946700271e-17 -339 338 -0.02870370370370365 -339 339 0.6207133058984912 -339 340 -1.110223024625157e-16 -339 341 0.02870370370370348 -339 342 -0.204046639231823 -339 343 0.012037037037037 -339 344 -0.0134259259259259 -339 345 -0.05315500685871172 -339 346 0.01296296296296303 -339 347 0.01342592592592611 -339 348 -0.1551783264746238 -340 331 -0.0009703703703703721 -340 332 -0.0005000000000000004 -340 333 -0.008333333333333333 -340 334 -0.001659259259259266 -340 335 -1.626303258728257e-18 -340 336 -0.03333333333333331 -340 337 -0.0002814814814814752 -340 338 2.168404344971009e-18 -340 339 3.469446951953614e-18 -340 340 0.007762962962962959 -340 341 3.035766082959412e-18 -340 342 -6.938893903907228e-18 -340 343 -0.0009703703703703676 -340 344 0.0004999999999999989 -340 345 0.008333333333333344 -340 346 -0.001659259259259262 -340 347 -3.144186300207963e-18 -340 348 0.03333333333333334 -340 982 -0.0009703703703703708 -340 983 0.0004999999999999998 -340 984 -0.008333333333333331 -340 985 -0.000281481481481476 -340 986 1.084202172485504e-18 -340 987 -1.734723475976807e-17 -340 988 -0.0009703703703703696 -340 989 -0.0004999999999999998 -340 990 0.008333333333333325 -341 331 -0.0005000000000000003 -341 332 -0.001040740740740742 -341 333 -0.009259259259259247 -341 334 -1.626303258728257e-18 -341 335 0.000281481481481476 -341 336 -5.204170427930421e-18 -341 337 1.951563910473908e-18 -341 338 -0.002362962962962954 -341 339 -0.03703703703703692 -341 340 3.035766082959412e-18 -341 341 0.008325925925925903 -341 342 1.249000902703301e-16 -341 343 0.0004999999999999989 -341 344 -0.001040740740740731 -341 345 -0.009259259259259228 -341 346 -3.035766082959412e-18 -341 347 0.0002814814814814818 -341 348 5.724587470723463e-17 -341 982 0.0005 -341 983 -0.001040740740740738 -341 984 0.009259259259259228 -341 985 1.192622389734055e-18 -341 986 -0.002362962962962956 -341 987 0.03703703703703691 -341 988 -0.0004999999999999999 -341 989 -0.00104074074074074 -341 990 0.009259259259259236 -342 331 -0.01296296296296296 -342 332 -0.01342592592592595 -342 333 -0.1551783264746225 -342 334 -0.02407407407407409 -342 335 -6.938893903907228e-18 -342 336 -0.1063100137174217 -342 337 6.591949208711867e-17 -342 338 -0.02870370370370372 -342 339 -0.204046639231823 -342 340 2.255140518769849e-17 -342 341 -1.092875789865388e-16 -342 342 1.241426611796978 -342 343 0.01296296296296291 -342 344 -0.01342592592592572 -342 345 -0.155178326474622 -342 346 0.02407407407407409 -342 347 -8.673617379884035e-18 -342 348 -0.1063100137174213 -342 982 -0.01296296296296294 -342 983 0.01342592592592586 -342 984 -0.155178326474622 -342 985 -1.214306433183765e-17 -342 986 0.02870370370370374 -342 987 -0.204046639231823 -342 988 0.01296296296296292 -342 989 0.01342592592592591 -342 990 -0.1551783264746225 -343 343 1 -344 344 1 -345 337 -0.01203703703703712 -345 338 -0.01342592592592591 -345 339 -0.05315500685871172 -345 340 -0.01296296296296294 -345 341 0.01342592592592589 -345 342 -0.1551783264746219 -345 343 1.387778780781446e-16 -345 344 -0.02870370370370363 -345 345 0.6207133058984911 -345 346 -6.071532165918825e-17 -345 347 0.02870370370370365 -345 348 -0.2040466392318231 -345 349 0.01203703703703698 -345 350 -0.01342592592592597 -345 351 -0.05315500685871041 -345 352 0.012962962962963 -345 353 0.01342592592592597 -345 354 -0.1551783264746238 -346 337 -0.0009703703703703746 -346 338 -0.0005000000000000012 -346 339 -0.008333333333333333 -346 340 -0.001659259259259262 -346 341 -3.035766082959412e-18 -346 342 -0.03333333333333333 -346 343 -0.0002814814814814728 -346 344 2.38524477946811e-18 -346 345 -1.734723475976807e-18 -346 346 0.007762962962962966 -346 347 1.084202172485504e-18 -346 348 -3.469446951953614e-18 -346 349 -0.000970370370370367 -346 350 0.0004999999999999988 -346 351 0.008333333333333335 -346 352 -0.001659259259259267 -346 353 2.602085213965211e-18 -346 354 0.03333333333333333 -346 985 -0.0009703703703703717 -346 986 0.0005000000000000001 -346 987 -0.008333333333333331 -346 988 -0.0002814814814814862 -346 989 -2.38524477946811e-18 -346 990 1.040834085586084e-17 -346 991 -0.0009703703703703653 -346 992 -0.0004999999999999984 -346 993 0.008333333333333337 -347 337 -0.0005000000000000011 -347 338 -0.001040740740740748 -347 339 -0.0092592592592593 -347 340 -3.144186300207963e-18 -347 341 0.0002814814814814818 -347 342 -9.194034422677078e-17 -347 343 2.276824562219559e-18 -347 344 -0.002362962962962953 -347 345 -0.037037037037037 -347 346 1.192622389734055e-18 -347 347 0.008325925925925921 -347 348 6.938893903907228e-17 -347 349 0.0004999999999999989 -347 350 -0.001040740740740733 -347 351 -0.009259259259259214 -347 352 2.602085213965211e-18 -347 353 0.0002814814814814701 -347 354 -5.204170427930421e-17 -347 985 0.0005000000000000002 -347 986 -0.001040740740740741 -347 987 0.009259259259259236 -347 988 -2.38524477946811e-18 -347 989 -0.002362962962962969 -347 990 0.03703703703703703 -347 991 -0.0004999999999999985 -347 992 -0.00104074074074073 -347 993 0.009259259259259207 -348 337 -0.01296296296296299 -348 338 -0.01342592592592595 -348 339 -0.1551783264746238 -348 340 -0.02407407407407398 -348 341 -1.387778780781446e-17 -348 342 -0.1063100137174213 -348 343 5.898059818321144e-17 -348 344 -0.02870370370370357 -348 345 -0.2040466392318231 -348 346 -2.099015405931937e-16 -348 347 -9.194034422677078e-17 -348 348 1.241426611796983 -348 349 0.01296296296296293 -348 350 -0.01342592592592589 -348 351 -0.1551783264746221 -348 352 0.02407407407407418 -348 353 -6.245004513516506e-17 -348 354 -0.1063100137174229 -348 985 -0.01296296296296296 -348 986 0.01342592592592592 -348 987 -0.1551783264746227 -348 988 5.551115123125783e-17 -348 989 0.02870370370370378 -348 990 -0.2040466392318254 -348 991 0.01296296296296292 -348 992 0.01342592592592588 -348 993 -0.155178326474622 -349 349 1 -350 350 1 -351 343 -0.01203703703703707 -351 344 -0.01342592592592593 -351 345 -0.05315500685871041 -351 346 -0.01296296296296291 -351 347 0.01342592592592577 -351 348 -0.1551783264746221 -351 349 7.806255641895632e-17 -351 350 -0.02870370370370379 -351 351 0.6207133058984902 -351 352 -1.405126015541214e-16 -351 353 0.02870370370370387 -351 354 -0.2040466392318246 -351 355 0.01203703703703698 -351 356 -0.01342592592592594 -351 357 -0.05315500685870891 -351 358 0.01296296296296305 -351 359 0.01342592592592603 -351 360 -0.1551783264746242 -352 343 -0.0009703703703703756 -352 344 -0.0005000000000000012 -352 345 -0.008333333333333342 -352 346 -0.001659259259259267 -352 347 2.49366499671666e-18 -352 348 -0.03333333333333333 -352 349 -0.0002814814814814815 -352 350 2.38524477946811e-18 -352 351 -8.673617379884035e-18 -352 352 0.007762962962962975 -352 353 -3.144186300207963e-18 -352 354 -1.040834085586084e-17 -352 355 -0.0009703703703703647 -352 356 0.0004999999999999983 -352 357 0.008333333333333333 -352 358 -0.001659259259259267 -352 359 1.626303258728257e-18 -352 360 0.03333333333333333 -352 988 -0.0009703703703703743 -352 989 0.0005000000000000016 -352 990 -0.008333333333333314 -352 991 -0.0002814814814814845 -352 992 -5.095750210681871e-18 -352 993 1.734723475976807e-18 -352 994 -0.0009703703703703606 -352 995 -0.0004999999999999972 -352 996 0.008333333333333321 -353 343 -0.0005000000000000012 -353 344 -0.001040740740740747 -353 345 -0.009259259259259269 -353 346 2.49366499671666e-18 -353 347 0.00028148148148147 -353 348 5.898059818321144e-17 -353 349 2.168404344971009e-18 -353 350 -0.002362962962962963 -353 351 -0.03703703703703713 -353 352 -3.144186300207963e-18 -353 353 0.008325925925925941 -353 354 4.510281037539698e-17 -353 355 0.0004999999999999984 -353 356 -0.001040740740740731 -353 357 -0.009259259259259228 -353 358 1.734723475976807e-18 -353 359 0.0002814814814814729 -353 360 -6.938893903907228e-18 -353 988 0.0005000000000000017 -353 989 -0.001040740740740755 -353 990 0.009259259259259318 -353 991 -4.98732999343332e-18 -353 992 -0.002362962962962967 -353 993 0.03703703703703706 -353 994 -0.0004999999999999972 -353 995 -0.001040740740740722 -353 996 0.009259259259259156 -354 343 -0.01296296296296305 -354 344 -0.01342592592592608 -354 345 -0.1551783264746238 -354 346 -0.02407407407407395 -354 347 -3.469446951953614e-17 -354 348 -0.1063100137174228 -354 349 1.561251128379126e-16 -354 350 -0.02870370370370352 -354 351 -0.2040466392318246 -354 352 -2.862293735361732e-16 -354 353 -1.301042606982605e-16 -354 354 1.241426611796984 -354 355 0.01296296296296288 -354 356 -0.01342592592592585 -354 357 -0.1551783264746216 -354 358 0.02407407407407423 -354 359 6.591949208711867e-17 -354 360 -0.1063100137174222 -354 988 -0.01296296296296302 -354 989 0.01342592592592621 -354 990 -0.1551783264746245 -354 991 2.255140518769849e-16 -354 992 0.02870370370370368 -354 993 -0.2040466392318248 -354 994 0.01296296296296282 -354 995 0.01342592592592565 -354 996 -0.1551783264746199 -355 355 1 -356 356 1 -357 349 -0.01203703703703712 -357 350 -0.01342592592592591 -357 351 -0.05315500685870891 -357 352 -0.01296296296296292 -357 353 0.01342592592592573 -357 354 -0.1551783264746216 -357 355 1.613292832658431e-16 -357 356 -0.02870370370370365 -357 357 0.6207133058984907 -357 358 -8.847089727481716e-17 -357 359 0.0287037037037037 -357 360 -0.2040466392318236 -357 361 0.01203703703703696 -357 362 -0.01342592592592593 -357 363 -0.05315500685871269 -357 364 0.012962962962963 -357 365 0.01342592592592607 -357 366 -0.1551783264746238 -358 349 -0.0009703703703703758 -358 350 -0.0005000000000000017 -358 351 -0.008333333333333333 -358 352 -0.001659259259259267 -358 353 1.734723475976807e-18 -358 354 -0.03333333333333331 -358 355 -0.0002814814814814761 -358 356 3.035766082959412e-18 -358 358 0.007762962962962965 -358 359 -5.637851296924623e-18 -358 360 6.938893903907228e-18 -358 361 -0.0009703703703703671 -358 362 0.0004999999999999987 -358 363 0.008333333333333333 -358 364 -0.001659259259259263 -358 365 3.144186300207963e-18 -358 366 0.03333333333333334 -358 991 -0.0009703703703703809 -358 992 0.0005000000000000027 -358 993 -0.008333333333333331 -358 994 -0.0002814814814814738 -358 995 -4.98732999343332e-18 -358 996 -3.469446951953614e-18 -358 997 -0.0009703703703703611 -358 998 -0.0004999999999999971 -358 999 0.008333333333333337 -359 349 -0.0005000000000000016 -359 350 -0.001040740740740753 -359 351 -0.009259259259259321 -359 352 1.626303258728257e-18 -359 353 0.0002814814814814727 -359 354 1.040834085586084e-16 -359 355 2.927345865710862e-18 -359 356 -0.002362962962962956 -359 357 -0.03703703703703701 -359 358 -5.637851296924623e-18 -359 359 0.00832592592592591 -359 360 -7.632783294297951e-17 -359 361 0.0004999999999999988 -359 362 -0.001040740740740729 -359 363 -0.009259259259259182 -359 364 3.144186300207963e-18 -359 365 0.0002814814814814858 -359 366 -3.642919299551295e-17 -359 991 0.0005000000000000029 -359 992 -0.001040740740740758 -359 993 0.009259259259259304 -359 994 -5.204170427930421e-18 -359 995 -0.002362962962962953 -359 996 0.03703703703703688 -359 997 -0.000499999999999997 -359 998 -0.00104074074074072 -359 999 0.009259259259259186 -360 349 -0.01296296296296302 -360 350 -0.01342592592592615 -360 351 -0.1551783264746242 -360 352 -0.02407407407407387 -360 353 3.295974604355933e-17 -360 354 -0.1063100137174222 -360 355 9.194034422677078e-17 -360 356 -0.02870370370370352 -360 357 -0.2040466392318236 -360 358 -4.093947403305265e-16 -360 359 -9.8879238130678e-17 -360 360 1.24142661179698 -360 361 0.01296296296296293 -360 362 -0.01342592592592573 -360 363 -0.1551783264746218 -360 364 0.02407407407407431 -360 365 6.938893903907228e-18 -360 366 -0.1063100137174211 -360 991 -0.01296296296296307 -360 992 0.01342592592592615 -360 993 -0.1551783264746243 -360 994 1.838806884535416e-16 -360 995 0.02870370370370377 -360 996 -0.2040466392318226 -360 997 0.01296296296296286 -360 998 0.01342592592592554 -360 999 -0.1551783264746204 -361 361 1 -362 362 1 -363 355 -0.01203703703703707 -363 356 -0.01342592592592591 -363 357 -0.05315500685871268 -363 358 -0.01296296296296289 -363 359 0.01342592592592583 -363 360 -0.1551783264746218 -363 361 1.058181320345852e-16 -363 362 -0.02870370370370364 -363 363 0.6207133058984913 -363 364 -1.734723475976807e-16 -363 365 0.02870370370370362 -363 366 -0.2040466392318236 -363 367 0.01203703703703697 -363 368 -0.01342592592592594 -363 369 -0.05315500685870876 -363 370 0.01296296296296307 -363 371 0.01342592592592604 -363 372 -0.1551783264746245 -364 355 -0.0009703703703703761 -364 356 -0.0005000000000000013 -364 357 -0.008333333333333333 -364 358 -0.001659259259259263 -364 359 3.144186300207963e-18 -364 360 -0.03333333333333335 -364 361 -0.0002814814814814759 -364 362 3.361026734705064e-18 -364 364 0.007762962962962973 -364 365 -5.421010862427522e-19 -364 367 -0.0009703703703703635 -364 368 0.000499999999999998 -364 369 0.008333333333333333 -364 370 -0.001659259259259272 -364 371 -2.818925648462312e-18 -364 372 0.03333333333333335 -364 994 -0.0009703703703703816 -364 995 0.0005000000000000032 -364 996 -0.00833333333333334 -364 997 -0.0002814814814814734 -364 998 -3.686287386450715e-18 -364 999 3.469446951953614e-18 -364 1000 -0.0009703703703703691 -364 1001 -0.0004999999999999994 -364 1002 0.008333333333333338 -365 355 -0.0005000000000000013 -365 356 -0.001040740740740747 -365 357 -0.009259259259259255 -365 358 3.144186300207963e-18 -365 359 0.0002814814814814857 -365 360 1.474514954580286e-16 -365 361 3.144186300207963e-18 -365 362 -0.002362962962962956 -365 363 -0.03703703703703699 -365 364 -6.505213034913027e-19 -365 365 0.008325925925925926 -365 366 1.387778780781446e-16 -365 367 0.0004999999999999981 -365 368 -0.001040740740740728 -365 369 -0.009259259259259214 -365 370 -2.710505431213761e-18 -365 371 0.000281481481481467 -365 372 1.127570259384925e-16 -365 994 0.0005000000000000033 -365 995 -0.00104074074074076 -365 996 0.009259259259259352 -365 997 -3.577867169202165e-18 -365 998 -0.002362962962962953 -365 999 0.03703703703703697 -365 1000 -0.0004999999999999994 -365 1001 -0.001040740740740735 -365 1002 0.009259259259259203 -366 355 -0.01296296296296304 -366 356 -0.01342592592592597 -366 357 -0.1551783264746238 -366 358 -0.02407407407407393 -366 359 -2.255140518769849e-17 -366 360 -0.1063100137174211 -366 361 1.769417945496343e-16 -366 362 -0.02870370370370359 -366 363 -0.2040466392318236 -366 364 -2.51534904016637e-16 -366 365 -7.459310946700271e-17 -366 366 1.241426611796983 -366 367 0.01296296296296286 -366 368 -0.01342592592592583 -366 369 -0.1551783264746214 -366 370 0.02407407407407419 -366 371 3.642919299551295e-17 -366 372 -0.106310013717423 -366 994 -0.01296296296296312 -366 995 0.01342592592592608 -366 996 -0.1551783264746251 -366 997 1.804112415015879e-16 -366 998 0.0287037037037035 -366 999 -0.2040466392318227 -366 1000 0.01296296296296292 -366 1001 0.01342592592592588 -366 1002 -0.1551783264746217 -367 367 1 -368 368 1 -369 361 -0.01203703703703713 -369 362 -0.01342592592592591 -369 363 -0.05315500685870875 -369 364 -0.0129629629629629 -369 365 0.01342592592592568 -369 366 -0.1551783264746214 -369 367 1.908195823574488e-16 -369 368 -0.02870370370370384 -369 369 0.6207133058984908 -369 370 -1.162264728904461e-16 -369 371 0.02870370370370391 -369 372 -0.2040466392318256 -369 373 0.01203703703703694 -369 374 -0.01342592592592597 -369 375 -0.05315500685871075 -369 376 0.01296296296296302 -369 377 0.01342592592592613 -369 378 -0.1551783264746242 -370 361 -0.0009703703703703769 -370 362 -0.0005000000000000021 -370 363 -0.008333333333333333 -370 364 -0.001659259259259272 -370 365 -2.710505431213761e-18 -370 366 -0.03333333333333335 -370 367 -0.000281481481481487 -370 368 3.577867169202165e-18 -370 369 -1.734723475976807e-18 -370 370 0.007762962962962967 -370 371 6.722053469410127e-18 -370 372 -1.734723475976807e-17 -370 373 -0.0009703703703703644 -370 374 0.0004999999999999985 -370 375 0.008333333333333335 -370 376 -0.001659259259259238 -370 377 -3.794707603699266e-18 -370 378 0.03333333333333334 -370 997 -0.0009703703703703736 -370 998 0.0005000000000000009 -370 999 -0.008333333333333342 -370 1000 -0.0002814814814814863 -370 1001 -6.505213034913027e-19 -370 1002 -5.204170427930421e-18 -370 1003 -0.0009703703703703701 -370 1004 -0.0005000000000000003 -370 1005 0.008333333333333337 -371 361 -0.000500000000000002 -371 362 -0.001040740740740755 -371 363 -0.009259259259259325 -371 364 -2.710505431213761e-18 -371 365 0.000281481481481467 -371 366 -3.642919299551295e-17 -371 367 3.577867169202165e-18 -371 368 -0.002362962962962971 -371 369 -0.03703703703703717 -371 370 6.722053469410127e-18 -371 371 0.008325925925925948 -371 372 7.632783294297951e-17 -371 373 0.0004999999999999983 -371 374 -0.001040740740740731 -371 375 -0.009259259259259243 -371 376 -3.903127820947816e-18 -371 377 0.0002814814814815009 -371 378 1.249000902703301e-16 -371 997 0.0005000000000000008 -371 998 -0.001040740740740744 -371 999 0.009259259259259241 -371 1000 -2.168404344971009e-19 -371 1001 -0.002362962962962969 -371 1002 0.03703703703703712 -371 1003 -0.0005000000000000003 -371 1004 -0.001040740740740746 -371 1005 0.009259259259259323 -372 361 -0.01296296296296303 -372 362 -0.01342592592592619 -372 363 -0.1551783264746245 -372 364 -0.02407407407407397 -372 365 5.030698080332741e-17 -372 366 -0.106310013717423 -372 367 1.179611963664229e-16 -372 368 -0.02870370370370367 -372 369 -0.2040466392318256 -372 370 -1.491862189340054e-16 -372 371 -6.938893903907228e-17 -372 372 1.241426611796985 -372 373 0.01296296296296292 -372 374 -0.01342592592592576 -372 375 -0.1551783264746217 -372 376 0.02407407407407411 -372 377 -7.806255641895632e-17 -372 378 -0.1063100137174183 -372 997 -0.01296296296296298 -372 998 0.013425925925926 -372 999 -0.1551783264746228 -372 1000 -1.387778780781446e-17 -372 1001 0.02870370370370371 -372 1002 -0.2040466392318254 -372 1003 0.012962962962963 -372 1004 0.013425925925926 -372 1005 -0.1551783264746239 -373 373 1 -374 374 1 -375 367 -0.01203703703703709 -375 368 -0.01342592592592595 -375 369 -0.05315500685871073 -375 370 -0.01296296296296288 -375 371 0.01342592592592583 -375 372 -0.1551783264746217 -375 373 1.370431546021678e-16 -375 374 -0.02870370370370364 -375 375 0.6207133058984924 -375 376 -2.046973701652632e-16 -375 377 0.02870370370370352 -375 378 -0.2040466392318236 -375 379 0.01203703703703695 -375 380 -0.01342592592592591 -375 381 -0.05315500685871156 -375 382 0.01296296296296309 -375 383 0.01342592592592615 -375 384 -0.1551783264746247 -376 367 -0.0009703703703703756 -376 368 -0.0005000000000000017 -376 369 -0.008333333333333331 -376 370 -0.001659259259259238 -376 371 -4.119968255444917e-18 -376 372 -0.03333333333333333 -376 373 -0.0002814814814814763 -376 374 4.011548038196366e-18 -376 375 -1.734723475976807e-18 -376 376 0.007762962962962952 -376 377 3.144186300207963e-18 -376 378 6.938893903907228e-18 -376 379 -0.0009703703703703642 -376 380 0.0004999999999999977 -376 381 0.008333333333333335 -376 382 -0.001659259259259284 -376 383 1.734723475976807e-18 -376 384 0.03333333333333333 -376 1000 -0.0009703703703703673 -376 1001 0.0004999999999999996 -376 1002 -0.008333333333333331 -376 1003 -0.0002814814814814823 -376 1004 -3.252606517456513e-18 -376 1005 1.040834085586084e-17 -376 1006 -0.0009703703703703628 -376 1007 -0.0004999999999999972 -376 1008 0.008333333333333335 -377 367 -0.0005000000000000016 -377 368 -0.001040740740740753 -377 369 -0.009259259259259335 -377 370 -3.794707603699266e-18 -377 371 0.0002814814814815009 -377 372 -9.540979117872439e-17 -377 373 4.119968255444917e-18 -377 374 -0.002362962962962956 -377 375 -0.03703703703703696 -377 376 3.035766082959412e-18 -377 377 0.008325925925925891 -377 378 1.387778780781446e-17 -377 379 0.0004999999999999977 -377 380 -0.001040740740740723 -377 381 -0.009259259259259169 -377 382 1.409462824231156e-18 -377 383 0.0002814814814814626 -377 384 -3.469446951953614e-17 -377 1000 0.0004999999999999996 -377 1001 -0.001040740740740741 -377 1002 0.009259259259259306 -377 1003 -3.252606517456513e-18 -377 1004 -0.002362962962962964 -377 1005 0.03703703703703696 -377 1006 -0.0004999999999999972 -377 1007 -0.001040740740740719 -377 1008 0.00925925925925913 -378 367 -0.01296296296296305 -378 368 -0.01342592592592606 -378 369 -0.1551783264746242 -378 370 -0.02407407407407403 -378 371 -4.336808689942018e-17 -378 372 -0.1063100137174183 -378 373 2.046973701652632e-16 -378 374 -0.0287037037037037 -378 375 -0.2040466392318237 -378 376 -2.411265631607762e-16 -378 377 -1.231653667943533e-16 -378 378 1.241426611796981 -378 379 0.01296296296296285 -378 380 -0.01342592592592565 -378 381 -0.155178326474621 -378 382 0.02407407407407424 -378 383 -1.561251128379126e-17 -378 384 -0.1063100137174246 -378 1000 -0.01296296296296297 -378 1001 0.01342592592592593 -378 1002 -0.1551783264746233 -378 1003 1.613292832658431e-16 -378 1004 0.02870370370370401 -378 1005 -0.204046639231825 -378 1006 0.01296296296296283 -378 1007 0.01342592592592564 -378 1008 -0.1551783264746205 -379 379 1 -380 380 1 -381 373 -0.01203703703703715 -381 374 -0.01342592592592588 -381 375 -0.05315500685871156 -381 376 -0.01296296296296289 -381 377 0.01342592592592573 -381 378 -0.155178326474621 -381 379 2.411265631607762e-16 -381 380 -0.02870370370370361 -381 381 0.6207133058984899 -381 382 -2.012279232133096e-16 -381 383 0.02870370370370351 -381 384 -0.2040466392318221 -381 385 0.01203703703703692 -381 386 -0.01342592592592591 -381 387 -0.05315500685871063 -381 388 0.01296296296296308 -381 389 0.01342592592592616 -381 390 -0.1551783264746247 -382 373 -0.0009703703703703797 -382 374 -0.0005000000000000024 -382 375 -0.008333333333333333 -382 376 -0.001659259259259284 -382 377 1.409462824231156e-18 -382 378 -0.03333333333333333 -382 379 -0.0002814814814814697 -382 380 6.071532165918825e-18 -382 381 3.469446951953614e-18 -382 382 0.007762962962962977 -382 383 2.168404344971009e-19 -382 384 -1.040834085586084e-17 -382 385 -0.0009703703703703611 -382 386 0.000499999999999997 -382 387 0.008333333333333344 -382 388 -0.001659259259259266 -382 389 -2.710505431213761e-18 -382 390 0.03333333333333333 -382 1003 -0.0009703703703703801 -382 1004 0.0005000000000000027 -382 1005 -0.008333333333333321 -382 1006 -0.000281481481481474 -382 1007 -4.87890977618477e-18 -382 1008 -8.673617379884035e-18 -382 1009 -0.0009703703703703608 -382 1010 -0.0004999999999999974 -382 1011 0.008333333333333312 -383 373 -0.0005000000000000024 -383 374 -0.001040740740740754 -383 375 -0.009259259259259297 -383 376 1.734723475976807e-18 -383 377 0.0002814814814814628 -383 378 3.989863994746656e-17 -383 379 5.963111948670274e-18 -383 380 -0.002362962962962947 -383 381 -0.03703703703703692 -383 382 3.252606517456513e-19 -383 383 0.008325925925925917 -383 384 1.595945597898663e-16 -383 385 0.0004999999999999969 -383 386 -0.001040740740740718 -383 387 -0.009259259259259139 -383 388 -2.602085213965211e-18 -383 389 0.0002814814814814747 -383 390 9.8879238130678e-17 -383 1003 0.0005000000000000027 -383 1004 -0.001040740740740758 -383 1005 0.009259259259259297 -383 1006 -4.98732999343332e-18 -383 1007 -0.002362962962962953 -383 1008 0.03703703703703692 -383 1009 -0.0004999999999999973 -383 1010 -0.001040740740740724 -383 1011 0.009259259259259172 -384 373 -0.01296296296296305 -384 374 -0.01342592592592606 -384 375 -0.1551783264746247 -384 376 -0.02407407407407381 -384 377 -3.469446951953614e-18 -384 378 -0.1063100137174246 -384 379 2.34187669256869e-16 -384 380 -0.02870370370370351 -384 381 -0.2040466392318221 -384 382 -5.256212132209725e-16 -384 383 -1.283695372222837e-16 -384 384 1.24142661179698 -384 385 0.01296296296296283 -384 386 -0.01342592592592564 -384 387 -0.1551783264746198 -384 388 0.02407407407407433 -384 389 2.081668171172169e-17 -384 390 -0.1063100137174217 -384 1003 -0.01296296296296305 -384 1004 0.01342592592592615 -384 1005 -0.1551783264746248 -384 1006 2.289834988289385e-16 -384 1007 0.02870370370370351 -384 1008 -0.2040466392318225 -384 1009 0.01296296296296281 -384 1010 0.01342592592592565 -384 1011 -0.1551783264746199 -385 385 1 -386 386 1 -387 379 -0.0120370370370372 -387 380 -0.01342592592592589 -387 381 -0.05315500685871061 -387 382 -0.01296296296296282 -387 383 0.01342592592592558 -387 384 -0.1551783264746198 -387 385 2.51534904016637e-16 -387 386 -0.02870370370370368 -387 387 0.6207133058984893 -387 388 -2.081668171172169e-16 -387 389 0.02870370370370384 -387 390 -0.2040466392318237 -387 391 0.01203703703703695 -387 392 -0.01342592592592599 -387 393 -0.05315500685871088 -387 394 0.01296296296296303 -387 395 0.01342592592592614 -387 396 -0.1551783264746244 -388 379 -0.0009703703703703812 -388 380 -0.0005000000000000032 -388 381 -0.008333333333333333 -388 382 -0.001659259259259266 -388 383 -2.602085213965211e-18 -388 384 -0.03333333333333332 -388 385 -0.0002814814814814782 -388 386 4.98732999343332e-18 -388 387 -3.469446951953614e-18 -388 388 0.00776296296296296 -388 389 1.084202172485504e-19 -388 390 -6.938893903907228e-18 -388 391 -0.0009703703703703634 -388 392 0.0004999999999999982 -388 393 0.008333333333333335 -388 394 -0.001659259259259238 -388 395 2.49366499671666e-18 -388 396 0.03333333333333333 -388 1006 -0.0009703703703703807 -388 1007 0.0005000000000000027 -388 1008 -0.008333333333333331 -388 1009 -0.0002814814814814905 -388 1010 -4.98732999343332e-18 -388 1012 -0.0009703703703703619 -388 1013 -0.0004999999999999977 -388 1014 0.008333333333333335 -389 379 -0.000500000000000003 -389 380 -0.001040740740740761 -389 381 -0.009259259259259325 -389 382 -2.710505431213761e-18 -389 383 0.0002814814814814749 -389 384 -1.040834085586084e-17 -389 385 4.98732999343332e-18 -389 386 -0.002362962962962959 -389 387 -0.03703703703703706 -389 389 0.008325925925925935 -389 390 -2.081668171172169e-17 -389 391 0.0004999999999999981 -389 392 -0.00104074074074073 -389 393 -0.009259259259259241 -389 394 2.602085213965211e-18 -389 395 0.0002814814814815005 -389 396 -5.204170427930421e-17 -389 1006 0.0005000000000000028 -389 1007 -0.001040740740740757 -389 1008 0.0092592592592593 -389 1009 -4.98732999343332e-18 -389 1010 -0.002362962962962975 -389 1011 0.03703703703703706 -389 1012 -0.0004999999999999978 -389 1013 -0.001040740740740728 -389 1014 0.009259259259259234 -390 379 -0.01296296296296307 -390 380 -0.01342592592592622 -390 381 -0.1551783264746247 -390 382 -0.02407407407407386 -390 383 -1.040834085586084e-17 -390 384 -0.1063100137174217 -390 385 1.717376241217039e-16 -390 386 -0.0287037037037036 -390 387 -0.2040466392318236 -390 388 -3.747002708109903e-16 -390 389 -6.071532165918825e-17 -390 390 1.241426611796981 -390 391 0.0129629629629629 -390 392 -0.01342592592592576 -390 393 -0.1551783264746216 -390 394 0.02407407407407423 -390 395 -6.591949208711867e-17 -390 396 -0.1063100137174182 -390 1006 -0.01296296296296306 -390 1007 0.0134259259259261 -390 1008 -0.155178326474624 -390 1009 1.717376241217039e-16 -390 1010 0.02870370370370386 -390 1011 -0.2040466392318258 -390 1012 0.01296296296296289 -390 1013 0.01342592592592575 -390 1014 -0.1551783264746215 -391 391 1 -392 392 1 -393 385 -0.0120370370370371 -393 386 -0.01342592592592595 -393 387 -0.05315500685871087 -393 388 -0.01296296296296287 -393 389 0.01342592592592582 -393 390 -0.1551783264746216 -393 391 7.806255641895632e-17 -393 392 -0.02870370370370369 -393 393 0.6207133058984914 -393 394 -1.43982048506075e-16 -393 395 0.02870370370370375 -393 396 -0.2040466392318246 -393 397 0.01203703703703702 -393 398 -0.01342592592592589 -393 399 -0.05315500685871068 -393 400 0.01296296296296302 -393 401 0.01342592592592596 -393 402 -0.1551783264746235 -394 385 -0.0009703703703703766 -394 386 -0.000500000000000002 -394 387 -0.008333333333333342 -394 388 -0.001659259259259238 -394 389 2.602085213965211e-18 -394 390 -0.03333333333333332 -394 391 -0.0002814814814814818 -394 392 2.710505431213761e-18 -394 393 -1.734723475976807e-18 -394 394 0.007762962962962959 -394 395 -6.505213034913027e-18 -394 396 -1.040834085586084e-17 -394 397 -0.0009703703703703688 -394 398 0.0004999999999999993 -394 399 0.008333333333333344 -394 400 -0.001659259259259281 -394 401 4.011548038196366e-18 -394 402 0.03333333333333333 -394 1009 -0.0009703703703703754 -394 1010 0.0005000000000000023 -394 1011 -0.008333333333333314 -394 1012 -0.000281481481481479 -394 1013 -5.963111948670274e-18 -394 1014 -1.734723475976807e-18 -394 1015 -0.0009703703703703593 -394 1016 -0.0004999999999999962 -394 1017 0.008333333333333312 -395 385 -0.0005000000000000019 -395 386 -0.001040740740740753 -395 387 -0.009259259259259335 -395 388 2.710505431213761e-18 -395 389 0.0002814814814815006 -395 390 5.898059818321144e-17 -395 391 2.710505431213761e-18 -395 392 -0.002362962962962963 -395 393 -0.03703703703703705 -395 394 -6.505213034913027e-18 -395 395 0.008325925925925924 -395 396 -9.71445146547012e-17 -395 397 0.0004999999999999991 -395 398 -0.001040740740740734 -395 399 -0.009259259259259198 -395 400 4.011548038196366e-18 -395 401 0.0002814814814814592 -395 402 -1.821459649775647e-16 -395 1009 0.0005000000000000022 -395 1010 -0.001040740740740761 -395 1011 0.009259259259259384 -395 1012 -6.071532165918825e-18 -395 1013 -0.00236296296296296 -395 1014 0.03703703703703692 -395 1015 -0.0004999999999999963 -395 1016 -0.001040740740740713 -395 1017 0.009259259259259054 -396 385 -0.01296296296296308 -396 386 -0.01342592592592606 -396 387 -0.1551783264746244 -396 388 -0.02407407407407389 -396 389 -3.816391647148976e-17 -396 390 -0.1063100137174182 -396 391 1.52655665885959e-16 -396 392 -0.02870370370370363 -396 393 -0.2040466392318247 -396 394 -3.521488656232918e-16 -396 395 -1.040834085586084e-17 -396 396 1.241426611796982 -396 397 0.01296296296296293 -396 398 -0.01342592592592587 -396 399 -0.1551783264746222 -396 400 0.02407407407407424 -396 401 1.144917494144693e-16 -396 402 -0.1063100137174243 -396 1009 -0.01296296296296305 -396 1010 0.0134259259259262 -396 1011 -0.1551783264746251 -396 1012 2.896988204881268e-16 -396 1013 0.02870370370370372 -396 1014 -0.2040466392318238 -396 1015 0.01296296296296276 -396 1016 0.01342592592592558 -396 1017 -0.155178326474619 -397 397 1 -398 398 1 -399 391 -0.0120370370370371 -399 392 -0.0134259259259259 -399 393 -0.05315500685871069 -399 394 -0.01296296296296296 -399 395 0.0134259259259258 -399 396 -0.1551783264746222 -399 397 1.647987302177967e-16 -399 398 -0.02870370370370367 -399 399 0.6207133058984924 -399 400 -9.020562075079397e-17 -399 401 0.0287037037037036 -399 402 -0.2040466392318241 -399 403 0.01203703703703694 -399 404 -0.01342592592592599 -399 405 -0.05315500685871074 -399 406 0.01296296296296304 -399 407 0.01342592592592615 -399 408 -0.1551783264746247 -400 391 -0.0009703703703703733 -400 392 -0.0005000000000000008 -400 393 -0.008333333333333333 -400 394 -0.001659259259259281 -400 395 4.011548038196366e-18 -400 396 -0.03333333333333332 -400 397 -0.0002814814814814783 -400 398 3.035766082959412e-18 -400 399 -3.469446951953614e-18 -400 400 0.007762962962962965 -400 401 -3.144186300207963e-18 -400 402 -1.040834085586084e-17 -400 403 -0.0009703703703703623 -400 404 0.0004999999999999978 -400 405 0.008333333333333335 -400 406 -0.001659259259259239 -400 407 -1.734723475976807e-18 -400 408 0.03333333333333333 -400 1012 -0.0009703703703703862 -400 1013 0.0005000000000000038 -400 1014 -0.008333333333333333 -400 1015 -0.0002814814814814784 -400 1016 -3.794707603699266e-18 -400 1017 -1.387778780781446e-17 -400 1018 -0.0009703703703703665 -400 1019 -0.0004999999999999991 -400 1020 0.008333333333333333 -401 391 -0.0005000000000000008 -401 392 -0.001040740740740746 -401 393 -0.009259259259259254 -401 394 4.011548038196366e-18 -401 395 0.000281481481481459 -401 396 7.632783294297951e-17 -401 397 3.035766082959412e-18 -401 398 -0.002362962962962959 -401 399 -0.03703703703703701 -401 400 -3.144186300207963e-18 -401 401 0.008325925925925928 -401 402 5.898059818321144e-17 -401 403 0.0004999999999999978 -401 404 -0.001040740740740728 -401 405 -0.009259259259259228 -401 406 -1.626303258728257e-18 -401 407 0.0002814814814815031 -401 408 1.110223024625157e-16 -401 1012 0.0005000000000000037 -401 1013 -0.00104074074074076 -401 1014 0.00925925925925924 -401 1015 -3.794707603699266e-18 -401 1016 -0.002362962962962959 -401 1017 0.03703703703703697 -401 1018 -0.0004999999999999991 -401 1019 -0.001040740740740737 -401 1020 0.009259259259259304 -402 391 -0.01296296296296297 -402 392 -0.01342592592592604 -402 393 -0.1551783264746235 -402 394 -0.02407407407407387 -402 395 4.510281037539698e-17 -402 396 -0.1063100137174244 -402 397 8.673617379884035e-17 -402 398 -0.0287037037037038 -402 399 -0.2040466392318241 -402 400 -3.365363543395006e-16 -402 401 1.058181320345852e-16 -402 402 1.241426611796981 -402 403 0.01296296296296289 -402 404 -0.01342592592592574 -402 405 -0.1551783264746214 -402 406 0.02407407407407423 -402 407 -1.214306433183765e-17 -402 408 -0.106310013717418 -402 1012 -0.0129629629629631 -402 1013 0.0134259259259262 -402 1014 -0.1551783264746247 -402 1015 1.318389841742373e-16 -402 1016 0.02870370370370344 -402 1017 -0.2040466392318233 -402 1018 0.01296296296296295 -402 1019 0.01342592592592579 -402 1020 -0.1551783264746222 -403 403 1 -404 404 1 -405 397 -0.01203703703703711 -405 398 -0.01342592592592594 -405 399 -0.05315500685871073 -405 400 -0.01296296296296286 -405 401 0.01342592592592578 -405 402 -0.1551783264746213 -405 403 5.204170427930421e-17 -405 404 -0.0287037037037037 -405 405 0.6207133058984906 -405 406 -1.162264728904461e-16 -405 407 0.02870370370370384 -405 408 -0.2040466392318247 -405 409 0.01203703703703706 -405 410 -0.01342592592592589 -405 411 -0.05315500685871113 -405 412 0.01296296296296298 -405 413 0.01342592592592592 -405 414 -0.1551783264746227 -406 397 -0.0009703703703703777 -406 398 -0.0005000000000000023 -406 399 -0.008333333333333342 -406 400 -0.001659259259259239 -406 401 -1.626303258728257e-18 -406 402 -0.03333333333333333 -406 403 -0.0002814814814814819 -406 404 2.059984127722458e-18 -406 405 -1.734723475976807e-18 -406 406 0.007762962962962963 -406 407 2.059984127722458e-18 -406 408 -3.469446951953614e-18 -406 409 -0.0009703703703703721 -406 410 0.0005000000000000002 -406 411 0.008333333333333344 -406 412 -0.001659259259259265 -406 413 -4.336808689942018e-19 -406 414 0.03333333333333334 -406 1015 -0.0009703703703703714 -406 1016 0.0005000000000000008 -406 1017 -0.008333333333333323 -406 1018 -0.0002814814814814866 -406 1019 -9.75781955236954e-19 -406 1021 -0.0009703703703703699 -406 1022 -0.0004999999999999998 -406 1023 0.008333333333333328 -407 397 -0.0005000000000000022 -407 398 -0.001040740740740755 -407 399 -0.009259259259259339 -407 400 -1.626303258728257e-18 -407 401 0.000281481481481503 -407 403 1.951563910473908e-18 -407 404 -0.002362962962962963 -407 405 -0.03703703703703708 -407 406 2.059984127722458e-18 -407 407 0.00832592592592594 -407 408 1.387778780781446e-17 -407 409 0.0005000000000000002 -407 410 -0.00104074074074074 -407 411 -0.009259259259259243 -407 412 -3.252606517456513e-19 -407 413 0.0002814814814814764 -407 414 2.602085213965211e-17 -407 1015 0.0005000000000000009 -407 1016 -0.00104074074074075 -407 1017 0.009259259259259359 -407 1018 -1.084202172485504e-18 -407 1019 -0.00236296296296297 -407 1020 0.03703703703703708 -407 1021 -0.0004999999999999999 -407 1022 -0.00104074074074074 -407 1023 0.009259259259259234 -408 397 -0.01296296296296309 -408 398 -0.01342592592592611 -408 399 -0.1551783264746247 -408 400 -0.02407407407407397 -408 401 8.673617379884035e-18 -408 402 -0.1063100137174179 -408 403 1.231653667943533e-16 -408 404 -0.02870370370370354 -408 405 -0.2040466392318246 -408 406 -5.551115123125783e-17 -408 407 -1.804112415015879e-16 -408 408 1.241426611796984 -408 409 0.01296296296296297 -408 410 -0.01342592592592591 -408 411 -0.155178326474623 -408 412 0.02407407407407403 -408 413 -3.469446951953614e-18 -408 414 -0.106310013717422 -408 1015 -0.01296296296296301 -408 1016 0.01342592592592597 -408 1017 -0.1551783264746235 -408 1018 7.979727989493313e-17 -408 1019 0.02870370370370385 -408 1020 -0.2040466392318253 -408 1021 0.01296296296296293 -408 1022 0.01342592592592591 -408 1023 -0.1551783264746226 -409 409 1 -410 410 1 -411 403 -0.01203703703703706 -411 404 -0.01342592592592591 -411 405 -0.05315500685871113 -411 406 -0.012962962962963 -411 407 0.01342592592592594 -411 408 -0.155178326474623 -411 409 2.602085213965211e-17 -411 410 -0.02870370370370364 -411 411 0.6207133058984911 -411 412 4.85722573273506e-17 -411 413 0.02870370370370364 -411 414 -0.2040466392318231 -411 415 0.01203703703703704 -411 416 -0.01342592592592596 -411 417 -0.053155006858711 -411 418 0.01296296296296295 -411 419 0.01342592592592591 -411 420 -0.1551783264746228 -412 403 -0.00097037037037037 -412 404 -0.0004999999999999999 -412 405 -0.008333333333333333 -412 406 -0.001659259259259265 -412 407 -3.252606517456513e-19 -412 408 -0.03333333333333333 -412 409 -0.0002814814814814728 -412 410 -2.168404344971009e-19 -412 411 -1.734723475976807e-18 -412 412 0.007762962962962966 -412 413 -4.228388472693467e-18 -412 414 -3.469446951953614e-18 -412 415 -0.0009703703703703713 -412 416 0.0005000000000000002 -412 417 0.008333333333333335 -412 418 -0.001659259259259264 -412 419 5.312590645178972e-18 -412 420 0.03333333333333333 -412 1018 -0.0009703703703703714 -412 1019 0.0005000000000000001 -412 1020 -0.008333333333333331 -412 1021 -0.0002814814814814857 -412 1022 -2.49366499671666e-18 -412 1023 8.673617379884035e-18 -412 1024 -0.0009703703703703653 -412 1025 -0.0004999999999999984 -412 1026 0.008333333333333337 -413 403 -0.0004999999999999998 -413 404 -0.001040740740740739 -413 405 -0.009259259259259241 -413 406 -4.336808689942018e-19 -413 407 0.0002814814814814765 -413 408 2.602085213965211e-17 -413 409 -3.252606517456513e-19 -413 410 -0.002362962962962952 -413 411 -0.037037037037037 -413 412 -4.119968255444917e-18 -413 413 0.008325925925925921 -413 414 6.938893903907228e-17 -413 415 0.0005000000000000003 -413 416 -0.001040740740740742 -413 417 -0.009259259259259273 -413 418 5.312590645178972e-18 -413 419 0.0002814814814814752 -413 420 -1.682681771697503e-16 -413 1018 0.0005000000000000002 -413 1019 -0.001040740740740741 -413 1020 0.009259259259259236 -413 1021 -2.49366499671666e-18 -413 1022 -0.002362962962962968 -413 1023 0.03703703703703703 -413 1024 -0.0004999999999999985 -413 1025 -0.00104074074074073 -413 1026 0.009259259259259207 -414 403 -0.01296296296296293 -414 404 -0.0134259259259259 -414 405 -0.1551783264746227 -414 406 -0.02407407407407405 -414 407 -1.561251128379126e-17 -414 408 -0.106310013717422 -414 409 -5.204170427930421e-17 -414 410 -0.02870370370370356 -414 411 -0.2040466392318231 -414 412 -9.71445146547012e-17 -414 413 -9.540979117872439e-17 -414 414 1.241426611796983 -414 415 0.01296296296296299 -414 416 -0.01342592592592594 -414 417 -0.1551783264746231 -414 418 0.02407407407407412 -414 419 -5.898059818321144e-17 -414 420 -0.1063100137174222 -414 1018 -0.01296296296296295 -414 1019 0.01342592592592591 -414 1020 -0.1551783264746228 -414 1021 6.071532165918825e-17 -414 1022 0.02870370370370378 -414 1023 -0.2040466392318254 -414 1024 0.01296296296296292 -414 1025 0.01342592592592588 -414 1026 -0.155178326474622 -415 415 1 -416 416 1 -417 409 -0.01203703703703701 -417 410 -0.01342592592592595 -417 411 -0.053155006858711 -417 412 -0.01296296296296296 -417 413 0.01342592592592596 -417 414 -0.1551783264746231 -417 415 1.734723475976807e-18 -417 416 -0.02870370370370386 -417 417 0.6207133058984935 -417 418 -1.908195823574488e-17 -417 419 0.02870370370370384 -417 420 -0.2040466392318271 -417 421 0.01203703703703699 -417 422 -0.013425925925926 -417 423 -0.05315500685870832 -417 424 0.012962962962963 -417 425 0.01342592592592601 -417 426 -0.1551783264746239 -418 409 -0.0009703703703703711 -418 410 -0.0005 -418 411 -0.008333333333333342 -418 412 -0.001659259259259264 -418 413 5.204170427930421e-18 -418 414 -0.03333333333333333 -418 415 -0.0002814814814814938 -418 416 -5.421010862427522e-19 -418 417 -1.908195823574488e-17 -418 418 0.007762962962962957 -418 419 -4.662069341687669e-18 -418 420 -6.938893903907228e-18 -418 421 -0.0009703703703703656 -418 422 0.0004999999999999994 -418 423 0.008333333333333323 -418 424 -0.001659259259259227 -418 425 2.38524477946811e-18 -418 426 0.03333333333333331 -418 1021 -0.0009703703703703743 -418 1022 0.0005000000000000016 -418 1023 -0.008333333333333314 -418 1024 -0.0002814814814814954 -418 1025 -4.662069341687669e-18 -418 1026 2.081668171172169e-17 -418 1027 -0.0009703703703703655 -418 1028 -0.0004999999999999988 -418 1029 0.008333333333333331 -419 409 -0.0004999999999999999 -419 410 -0.001040740740740738 -419 411 -0.009259259259259254 -419 412 5.204170427930421e-18 -419 413 0.0002814814814814751 -419 414 9.194034422677078e-17 -419 415 -8.673617379884035e-19 -419 416 -0.002362962962962979 -419 417 -0.03703703703703719 -419 418 -4.662069341687669e-18 -419 419 0.008325925925925947 -419 420 6.245004513516506e-17 -419 421 0.0004999999999999995 -419 422 -0.001040740740740743 -419 423 -0.009259259259259332 -419 424 2.276824562219559e-18 -419 425 0.0002814814814815102 -419 426 -5.377642775528102e-17 -419 1021 0.0005000000000000017 -419 1022 -0.001040740740740755 -419 1023 0.009259259259259318 -419 1024 -4.445228907190568e-18 -419 1025 -0.002362962962962982 -419 1026 0.03703703703703722 -419 1027 -0.0004999999999999988 -419 1028 -0.001040740740740735 -419 1029 0.00925925925925929 -420 409 -0.012962962962963 -420 410 -0.01342592592592589 -420 411 -0.1551783264746228 -420 412 -0.024074074074074 -420 413 -4.510281037539698e-17 -420 414 -0.1063100137174222 -420 415 1.561251128379126e-17 -420 416 -0.02870370370370394 -420 417 -0.2040466392318271 -420 418 -1.266348137463069e-16 -420 419 3.469446951953614e-17 -420 420 1.241426611796985 -420 421 0.01296296296296294 -420 422 -0.01342592592592598 -420 423 -0.1551783264746231 -420 424 0.02407407407407412 -420 425 6.418476861114186e-17 -420 426 -0.1063100137174166 -420 1021 -0.01296296296296302 -420 1022 0.01342592592592621 -420 1023 -0.1551783264746245 -420 1024 1.318389841742373e-16 -420 1025 0.02870370370370376 -420 1026 -0.2040466392318271 -420 1027 0.01296296296296294 -420 1028 0.01342592592592579 -420 1029 -0.1551783264746219 -421 421 1 -422 422 1 -423 415 -0.01203703703703703 -423 416 -0.01342592592592597 -423 417 -0.05315500685870834 -423 418 -0.01296296296296295 -423 419 0.01342592592592593 -423 420 -0.1551783264746231 -423 421 -2.949029909160572e-17 -423 422 -0.02870370370370371 -423 423 0.6207133058984906 -423 424 3.642919299551295e-17 -423 425 0.02870370370370377 -423 426 -0.204046639231825 -423 427 0.01203703703703706 -423 428 -0.01342592592592585 -423 429 -0.05315500685871254 -423 430 0.01296296296296292 -423 431 0.01342592592592584 -423 432 -0.1551783264746217 -424 415 -0.0009703703703703701 -424 416 -0.0005000000000000006 -424 417 -0.008333333333333335 -424 418 -0.001659259259259227 -424 419 2.276824562219559e-18 -424 420 -0.03333333333333331 -424 421 -0.0002814814814814849 -424 423 -3.469446951953614e-18 -424 424 0.007762962962962958 -424 425 -8.456776945386935e-18 -424 427 -0.0009703703703703749 -424 428 0.0005000000000000006 -424 429 0.008333333333333333 -424 430 -0.001659259259259285 -424 431 6.288372600415926e-18 -424 432 0.03333333333333331 -424 1024 -0.0009703703703703724 -424 1025 0.0005000000000000012 -424 1026 -0.008333333333333323 -424 1027 -0.0002814814814814814 -424 1028 -4.445228907190568e-18 -424 1029 -1.734723475976807e-18 -424 1030 -0.0009703703703703605 -424 1031 -0.0004999999999999968 -424 1032 0.008333333333333323 -425 415 -0.0005000000000000007 -425 416 -0.001040740740740749 -425 417 -0.009259259259259351 -425 418 2.38524477946811e-18 -425 419 0.0002814814814815102 -425 420 5.724587470723463e-17 -425 422 -0.002362962962962967 -425 423 -0.03703703703703705 -425 424 -8.565197162635485e-18 -425 425 0.008325925925925919 -425 426 -1.873501354054952e-16 -425 427 0.0005000000000000007 -425 428 -0.001040740740740739 -425 429 -0.009259259259259182 -425 430 6.288372600415926e-18 -425 431 0.0002814814814814605 -425 432 -1.647987302177967e-16 -425 1024 0.0005000000000000012 -425 1025 -0.001040740740740752 -425 1026 0.009259259259259365 -425 1027 -4.336808689942018e-18 -425 1028 -0.002362962962962963 -425 1029 0.03703703703703699 -425 1030 -0.0004999999999999969 -425 1031 -0.001040740740740718 -425 1032 0.00925925925925913 -426 415 -0.01296296296296301 -426 416 -0.01342592592592606 -426 417 -0.1551783264746239 -426 418 -0.02407407407407398 -426 419 7.979727989493313e-17 -426 420 -0.1063100137174166 -426 421 3.469446951953614e-17 -426 422 -0.02870370370370363 -426 423 -0.204046639231825 -426 424 -1.734723475976807e-16 -426 425 -3.469446951953614e-17 -426 426 1.241426611796981 -426 427 0.01296296296296298 -426 428 -0.01342592592592588 -426 429 -0.1551783264746225 -426 430 0.02407407407407415 -426 431 -2.602085213965211e-17 -426 432 -0.1063100137174245 -426 1024 -0.01296296296296301 -426 1025 0.01342592592592601 -426 1026 -0.1551783264746238 -426 1027 2.203098814490545e-16 -426 1028 0.02870370370370391 -426 1029 -0.2040466392318244 -426 1030 0.0129629629629628 -426 1031 0.01342592592592562 -426 1032 -0.1551783264746202 -427 427 1 -428 428 1 -429 421 -0.01203703703703701 -429 422 -0.01342592592592587 -429 423 -0.05315500685871254 -429 424 -0.01296296296296297 -429 425 0.01342592592592592 -429 426 -0.1551783264746225 -429 427 1.214306433183765e-17 -429 428 -0.0287037037037036 -429 429 0.6207133058984897 -429 430 -5.898059818321144e-17 -429 431 0.0287037037037035 -429 432 -0.204046639231822 -429 433 0.01203703703703702 -429 434 -0.01342592592592593 -429 435 -0.05315500685870936 -429 436 0.01296296296296301 -429 437 0.01342592592592599 -429 438 -0.1551783264746234 -430 421 -0.0009703703703703701 -430 422 -0.0004999999999999994 -430 423 -0.008333333333333321 -430 424 -0.001659259259259285 -430 425 6.288372600415926e-18 -430 426 -0.03333333333333331 -430 427 -0.0002814814814814696 -430 428 7.589415207398531e-19 -430 429 1.040834085586084e-17 -430 430 0.007762962962962976 -430 431 -1.11672823766007e-17 -430 432 -3.469446951953614e-18 -430 433 -0.000970370370370368 -430 434 0.0004999999999999994 -430 435 0.008333333333333333 -430 436 -0.001659259259259265 -430 437 2.927345865710862e-18 -430 438 0.03333333333333333 -430 1027 -0.0009703703703703823 -430 1028 0.0005000000000000032 -430 1029 -0.008333333333333331 -430 1030 -0.0002814814814814746 -430 1031 -4.445228907190568e-18 -430 1032 -1.908195823574488e-17 -430 1033 -0.0009703703703703618 -430 1034 -0.0004999999999999975 -430 1035 0.008333333333333321 -431 421 -0.0004999999999999995 -431 422 -0.001040740740740734 -431 423 -0.009259259259259165 -431 424 6.288372600415926e-18 -431 425 0.0002814814814814605 -431 426 2.029626466892864e-16 -431 427 7.589415207398531e-19 -431 428 -0.002362962962962947 -431 429 -0.03703703703703691 -431 430 -1.11672823766007e-17 -431 431 0.008325925925925915 -431 432 1.595945597898663e-16 -431 433 0.0004999999999999994 -431 434 -0.001040740740740737 -431 435 -0.009259259259259273 -431 436 3.035766082959412e-18 -431 437 0.0002814814814814779 -431 438 -6.418476861114186e-17 -431 1027 0.0005000000000000032 -431 1028 -0.001040740740740759 -431 1029 0.009259259259259297 -431 1030 -4.553649124439119e-18 -431 1031 -0.002362962962962954 -431 1032 0.03703703703703692 -431 1033 -0.0004999999999999974 -431 1034 -0.001040740740740724 -431 1035 0.00925925925925917 -432 421 -0.01296296296296291 -432 422 -0.0134259259259258 -432 423 -0.1551783264746217 -432 424 -0.02407407407407393 -432 425 -9.367506770274758e-17 -432 426 -0.1063100137174245 -432 427 1.214306433183765e-17 -432 428 -0.02870370370370353 -432 429 -0.204046639231822 -432 430 -2.324529457808922e-16 -432 431 -7.28583859910259e-17 -432 432 1.24142661179698 -432 433 0.01296296296296292 -432 434 -0.01342592592592588 -432 435 -0.1551783264746224 -432 436 0.02407407407407418 -432 437 6.938893903907228e-17 -432 438 -0.1063100137174216 -432 1027 -0.01296296296296309 -432 1028 0.01342592592592617 -432 1029 -0.1551783264746251 -432 1030 2.203098814490545e-16 -432 1031 0.02870370370370347 -432 1032 -0.2040466392318226 -432 1033 0.01296296296296283 -432 1034 0.01342592592592566 -432 1035 -0.1551783264746202 -433 433 1 -434 434 1 -435 427 -0.01203703703703708 -435 428 -0.01342592592592592 -435 429 -0.05315500685870935 -435 430 -0.01296296296296296 -435 431 0.01342592592592587 -435 432 -0.1551783264746224 -435 433 1.335737076502141e-16 -435 434 -0.02870370370370381 -435 435 0.6207133058984935 -435 436 -6.071532165918825e-17 -435 437 0.02870370370370359 -435 438 -0.2040466392318256 -435 439 0.01203703703703694 -435 440 -0.01342592592592598 -435 441 -0.05315500685871193 -435 442 0.01296296296296302 -435 443 0.01342592592592627 -435 444 -0.1551783264746243 -436 427 -0.0009703703703703724 -436 428 -0.0005000000000000008 -436 429 -0.008333333333333333 -436 430 -0.001659259259259265 -436 431 3.035766082959412e-18 -436 432 -0.03333333333333331 -436 433 -0.000281481481481487 -436 434 2.276824562219559e-18 -436 435 -1.734723475976807e-18 -436 436 0.007762962962962947 -436 437 -5.637851296924623e-18 -436 438 -6.938893903907228e-18 -436 439 -0.0009703703703703645 -436 440 0.0004999999999999985 -436 441 0.008333333333333335 -436 442 -0.001659259259259238 -436 443 1.951563910473908e-18 -436 444 0.03333333333333333 -436 1030 -0.0009703703703703799 -436 1031 0.0005000000000000024 -436 1032 -0.008333333333333331 -436 1033 -0.0002814814814814803 -436 1034 -4.553649124439119e-18 -436 1035 -1.214306433183765e-17 -436 1036 -0.0009703703703703614 -436 1037 -0.0004999999999999972 -436 1038 0.008333333333333335 -437 427 -0.0005000000000000007 -437 428 -0.001040740740740746 -437 429 -0.009259259259259309 -437 430 2.927345865710862e-18 -437 431 0.000281481481481478 -437 432 1.214306433183765e-16 -437 433 2.276824562219559e-18 -437 434 -0.00236296296296297 -437 435 -0.03703703703703708 -437 436 -5.746271514173174e-18 -437 437 0.008325925925925905 -437 438 1.283695372222837e-16 -437 439 0.0004999999999999983 -437 440 -0.001040740740740731 -437 441 -0.009259259259259285 -437 442 2.168404344971009e-18 -437 443 0.000281481481481505 -437 444 -1.647987302177967e-16 -437 1030 0.0005000000000000026 -437 1031 -0.001040740740740756 -437 1032 0.0092592592592593 -437 1033 -4.445228907190568e-18 -437 1034 -0.002362962962962962 -437 1035 0.03703703703703694 -437 1036 -0.0004999999999999974 -437 1037 -0.001040740740740724 -437 1038 0.009259259259259172 -438 427 -0.01296296296296298 -438 428 -0.01342592592592601 -438 429 -0.1551783264746234 -438 430 -0.02407407407407393 -438 431 2.602085213965211e-17 -438 432 -0.1063100137174216 -438 433 6.245004513516506e-17 -438 434 -0.02870370370370399 -438 435 -0.2040466392318256 -438 436 -3.538835890992686e-16 -438 437 -4.336808689942018e-17 -438 438 1.241426611796978 -438 439 0.01296296296296292 -438 440 -0.01342592592592562 -438 441 -0.1551783264746217 -438 442 0.0240740740740743 -438 443 8.673617379884035e-18 -438 444 -0.1063100137174175 -438 1030 -0.01296296296296305 -438 1031 0.0134259259259261 -438 1032 -0.155178326474624 -438 1033 1.821459649775647e-16 -438 1034 0.02870370370370382 -438 1035 -0.2040466392318234 -438 1036 0.01296296296296285 -438 1037 0.01342592592592571 -438 1038 -0.1551783264746202 -439 439 1 -440 440 1 -441 433 -0.01203703703703709 -441 434 -0.01342592592592596 -441 435 -0.05315500685871193 -441 436 -0.01296296296296288 -441 437 0.01342592592592597 -441 438 -0.1551783264746217 -441 439 8.500145032286355e-17 -441 440 -0.02870370370370348 -441 441 0.6207133058984922 -441 442 -1.092875789865388e-16 -441 443 0.02870370370370331 -441 444 -0.2040466392318223 -441 445 0.012037037037037 -441 446 -0.01342592592592587 -441 447 -0.05315500685871331 -441 448 0.01296296296296299 -441 449 0.01342592592592604 -441 450 -0.1551783264746229 -442 433 -0.0009703703703703754 -442 434 -0.0005000000000000017 -442 435 -0.008333333333333331 -442 436 -0.001659259259259238 -442 437 2.059984127722458e-18 -442 438 -0.03333333333333333 -442 439 -0.0002814814814814709 -442 440 2.818925648462312e-18 -442 441 -1.734723475976807e-18 -442 442 0.007762962962962971 -442 443 1.843143693225358e-18 -442 445 -0.0009703703703703695 -442 446 0.0004999999999999989 -442 447 0.008333333333333333 -442 448 -0.001659259259259292 -442 449 -3.903127820947816e-18 -442 450 0.03333333333333334 -442 1033 -0.000970370370370379 -442 1034 0.0005000000000000027 -442 1035 -0.008333333333333331 -442 1036 -0.0002814814814814696 -442 1037 -1.626303258728257e-18 -442 1038 -3.469446951953614e-18 -442 1039 -0.0009703703703703761 -442 1040 -0.0005000000000000011 -442 1041 0.008333333333333333 -443 433 -0.0005000000000000016 -443 434 -0.001040740740740753 -443 435 -0.009259259259259378 -443 436 2.059984127722458e-18 -443 437 0.0002814814814815049 -443 438 -5.551115123125783e-17 -443 439 2.818925648462312e-18 -443 440 -0.002362962962962949 -443 441 -0.03703703703703681 -443 442 1.734723475976807e-18 -443 443 0.008325925925925922 -443 444 4.163336342344337e-16 -443 445 0.000499999999999999 -443 446 -0.00104074074074073 -443 447 -0.009259259259259167 -443 448 -4.011548038196366e-18 -443 449 0.0002814814814814538 -443 450 1.387778780781446e-17 -443 1033 0.0005000000000000026 -443 1034 -0.001040740740740759 -443 1035 0.009259259259259319 -443 1036 -1.517883041479706e-18 -443 1037 -0.002362962962962947 -443 1038 0.03703703703703694 -443 1039 -0.000500000000000001 -443 1040 -0.001040740740740743 -443 1041 0.009259259259259158 -444 433 -0.01296296296296306 -444 434 -0.01342592592592592 -444 435 -0.1551783264746243 -444 436 -0.02407407407407394 -444 437 -5.204170427930421e-18 -444 438 -0.1063100137174175 -444 439 1.509209424099822e-16 -444 440 -0.02870370370370375 -444 441 -0.2040466392318223 -444 442 -1.630640067418199e-16 -444 443 -2.775557561562891e-17 -444 444 1.241426611796979 -444 445 0.01296296296296291 -444 446 -0.01342592592592569 -444 447 -0.1551783264746213 -444 448 0.0240740740740741 -444 449 -2.081668171172169e-17 -444 450 -0.1063100137174254 -444 1033 -0.01296296296296308 -444 1034 0.01342592592592618 -444 1035 -0.1551783264746243 -444 1036 8.500145032286355e-17 -444 1037 0.02870370370370318 -444 1038 -0.2040466392318215 -444 1039 0.01296296296296299 -444 1040 0.01342592592592603 -444 1041 -0.1551783264746228 -445 445 1 -446 446 1 -447 439 -0.01203703703703709 -447 440 -0.01342592592592586 -447 441 -0.05315500685871332 -447 442 -0.01296296296296291 -447 443 0.01342592592592586 -447 444 -0.1551783264746213 -447 445 -3.989863994746656e-17 -447 446 -0.02870370370370348 -447 447 0.6207133058984866 -447 448 4.336808689942018e-17 -447 449 0.02870370370370368 -447 450 -0.2040466392318206 -447 451 0.01203703703703713 -447 452 -0.01342592592592589 -447 453 -0.0531550068587105 -447 454 0.01296296296296286 -447 455 0.01342592592592569 -447 456 -0.1551783264746207 -448 439 -0.0009703703703703761 -448 440 -0.000500000000000001 -448 441 -0.008333333333333333 -448 442 -0.001659259259259292 -448 443 -4.011548038196366e-18 -448 444 -0.03333333333333333 -448 445 -0.0002814814814814641 -448 446 -9.75781955236954e-19 -448 448 0.007762962962962975 -448 449 -3.903127820947816e-18 -448 450 -1.040834085586084e-17 -448 451 -0.0009703703703703777 -448 452 0.000500000000000002 -448 453 0.008333333333333335 -448 454 -0.001659259259259267 -448 455 7.914675859144182e-18 -448 456 0.03333333333333334 -448 1036 -0.0009703703703703695 -448 1037 0.0004999999999999991 -448 1038 -0.008333333333333331 -448 1039 -0.0002814814814814643 -448 1040 -1.192622389734055e-18 -448 1041 -1.734723475976807e-18 -448 1042 -0.0009703703703703643 -448 1043 -0.000499999999999998 -448 1044 0.008333333333333333 -449 439 -0.0005000000000000011 -449 440 -0.001040740740740743 -449 441 -0.009259259259259222 -449 442 -3.903127820947816e-18 -449 443 0.0002814814814814537 -449 444 -2.0643209364124e-16 -449 445 -1.084202172485504e-18 -449 446 -0.002362962962962941 -449 447 -0.03703703703703688 -449 448 -3.903127820947816e-18 -449 449 0.008325925925925903 -449 450 -2.255140518769849e-16 -449 451 0.0005000000000000022 -449 452 -0.001040740740740753 -449 453 -0.009259259259259287 -449 454 7.914675859144182e-18 -449 455 0.0002814814814814751 -449 456 -1.682681771697503e-16 -449 1036 0.0004999999999999989 -449 1037 -0.00104074074074073 -449 1038 0.009259259259259103 -449 1039 -9.75781955236954e-19 -449 1040 -0.002362962962962941 -449 1041 0.0370370370370367 -449 1042 -0.0004999999999999981 -449 1043 -0.001040740740740726 -449 1044 0.009259259259259186 -450 439 -0.01296296296296299 -450 440 -0.01342592592592586 -450 441 -0.1551783264746229 -450 442 -0.02407407407407411 -450 443 1.734723475976807e-18 -450 444 -0.1063100137174254 -450 445 -3.989863994746656e-17 -450 446 -0.02870370370370319 -450 447 -0.2040466392318207 -450 448 8.673617379884035e-18 -450 449 -9.020562075079397e-17 -450 450 1.241426611796977 -450 451 0.01296296296296303 -450 452 -0.01342592592592611 -450 453 -0.1551783264746238 -450 454 0.02407407407407409 -450 455 2.255140518769849e-17 -450 456 -0.1063100137174219 -450 1036 -0.01296296296296291 -450 1037 0.01342592592592586 -450 1038 -0.1551783264746213 -450 1039 4.336808689942018e-17 -450 1040 0.02870370370370369 -450 1041 -0.2040466392318206 -450 1042 0.01296296296296286 -450 1043 0.01342592592592569 -450 1044 -0.1551783264746206 -451 451 1 -452 452 1 -453 445 -0.01203703703703697 -453 446 -0.01342592592592591 -453 447 -0.0531550068587105 -453 448 -0.01296296296296303 -453 449 0.01342592592592605 -453 450 -0.1551783264746238 -453 451 -4.510281037539698e-17 -453 452 -0.02870370370370404 -453 453 0.6207133058984955 -453 454 5.204170427930421e-17 -453 455 0.02870370370370394 -453 456 -0.2040466392318295 -453 457 0.01203703703703701 -453 458 -0.01342592592592607 -453 459 -0.05315500685870744 -453 460 0.01296296296296298 -453 461 0.01342592592592604 -453 462 -0.1551783264746243 -454 445 -0.0009703703703703643 -454 446 -0.0004999999999999981 -454 447 -0.008333333333333333 -454 448 -0.001659259259259267 -454 449 8.023096076392733e-18 -454 450 -0.03333333333333333 -454 451 -0.0002814814814815044 -454 452 -3.035766082959412e-18 -454 453 -1.734723475976807e-18 -454 454 0.007762962962962947 -454 455 -1.1817803680092e-17 -454 456 -1.040834085586084e-17 -454 457 -0.0009703703703703693 -454 458 0.0005000000000000011 -454 459 0.008333333333333335 -454 460 -0.001659259259259198 -454 461 3.794707603699266e-18 -454 462 0.03333333333333333 -454 1039 -0.0009703703703703777 -454 1040 0.0005000000000000022 -454 1041 -0.008333333333333331 -454 1042 -0.0002814814814815045 -454 1043 -3.252606517456513e-18 -454 1045 -0.000970370370370363 -454 1046 -0.0004999999999999989 -454 1047 0.008333333333333333 -455 445 -0.000499999999999998 -455 446 -0.001040740740740726 -455 447 -0.009259259259259177 -455 448 7.914675859144182e-18 -455 449 0.0002814814814814751 -455 450 2.775557561562891e-16 -455 451 -3.252606517456513e-18 -455 452 -0.002362962962962994 -455 453 -0.03703703703703732 -455 454 -1.170938346284345e-17 -455 455 0.008325925925925955 -455 456 1.318389841742373e-16 -455 457 0.0005000000000000009 -455 458 -0.001040740740740756 -455 459 -0.009259259259259479 -455 460 4.119968255444917e-18 -455 461 0.000281481481481534 -455 462 -1.821459649775647e-16 -455 1039 0.000500000000000002 -455 1040 -0.001040740740740753 -455 1041 0.009259259259259297 -455 1042 -3.035766082959412e-18 -455 1043 -0.002362962962962994 -455 1044 0.03703703703703739 -455 1045 -0.0004999999999999991 -455 1046 -0.001040740740740743 -455 1047 0.009259259259259401 -456 445 -0.01296296296296287 -456 446 -0.01342592592592575 -456 447 -0.1551783264746207 -456 448 -0.02407407407407411 -456 449 -2.42861286636753e-17 -456 450 -0.1063100137174219 -456 451 -1.994931997373328e-16 -456 452 -0.02870370370370415 -456 453 -0.2040466392318295 -456 454 1.613292832658431e-16 -456 455 1.040834085586084e-17 -456 456 1.241426611796989 -456 457 0.01296296296296306 -456 458 -0.01342592592592612 -456 459 -0.1551783264746259 -456 460 0.02407407407407395 -456 461 1.734723475976807e-17 -456 462 -0.1063100137174137 -456 1039 -0.01296296296296303 -456 1040 0.01342592592592605 -456 1041 -0.1551783264746237 -456 1042 5.204170427930421e-17 -456 1043 0.02870370370370394 -456 1044 -0.2040466392318294 -456 1045 0.01296296296296298 -456 1046 0.01342592592592604 -456 1047 -0.1551783264746242 -457 457 1 -458 458 1 -459 451 -0.01203703703703693 -459 452 -0.01342592592592609 -459 453 -0.05315500685870744 -459 454 -0.01296296296296307 -459 455 0.01342592592592622 -459 456 -0.1551783264746259 -459 457 -1.405126015541214e-16 -459 458 -0.02870370370370386 -459 459 0.6207133058984953 -459 460 1.43982048506075e-16 -459 461 0.02870370370370375 -459 462 -0.2040466392318276 -459 463 0.01203703703703708 -459 464 -0.01342592592592586 -459 465 -0.05315500685871287 -459 466 0.01296296296296292 -459 467 0.01342592592592584 -459 468 -0.1551783264746216 -460 451 -0.0009703703703703627 -460 452 -0.000499999999999999 -460 453 -0.008333333333333333 -460 454 -0.001659259259259198 -460 455 4.011548038196366e-18 -460 456 -0.03333333333333333 -460 457 -0.0002814814814814935 -460 458 -1.626303258728257e-18 -460 459 -1.734723475976807e-18 -460 460 0.007762962962962955 -460 461 -6.722053469410127e-18 -460 462 -3.469446951953614e-18 -460 463 -0.000970370370370375 -460 464 0.0005000000000000007 -460 465 0.008333333333333333 -460 466 -0.001659259259259292 -460 467 2.710505431213761e-18 -460 468 0.03333333333333334 -460 1042 -0.0009703703703703694 -460 1043 0.0005000000000000009 -460 1044 -0.008333333333333333 -460 1045 -0.0002814814814814936 -460 1046 -1.517883041479706e-18 -460 1047 -1.734723475976807e-18 -460 1048 -0.0009703703703703707 -460 1049 -0.0004999999999999994 -460 1050 0.008333333333333333 -461 451 -0.0004999999999999989 -461 452 -0.001040740740740743 -461 453 -0.009259259259259424 -461 454 3.794707603699266e-18 -461 455 0.000281481481481534 -461 456 3.642919299551295e-17 -461 457 -1.409462824231156e-18 -461 458 -0.002362962962962979 -461 459 -0.03703703703703717 -461 460 -6.938893903907228e-18 -461 461 0.008325925925925941 -461 462 1.422473250300982e-16 -461 463 0.0005000000000000008 -461 464 -0.001040740740740741 -461 465 -0.009259259259259198 -461 466 2.602085213965211e-18 -461 467 0.0002814814814814539 -461 468 -1.058181320345852e-16 -461 1042 0.0005000000000000011 -461 1043 -0.001040740740740756 -461 1044 0.009259259259259457 -461 1045 -1.517883041479706e-18 -461 1046 -0.002362962962962979 -461 1047 0.03703703703703724 -461 1048 -0.0004999999999999994 -461 1049 -0.001040740740740732 -461 1050 0.009259259259259129 -462 451 -0.01296296296296298 -462 452 -0.01342592592592594 -462 453 -0.1551783264746243 -462 454 -0.02407407407407396 -462 455 -1.214306433183765e-17 -462 456 -0.1063100137174137 -462 457 3.469446951953614e-18 -462 458 -0.02870370370370398 -462 459 -0.2040466392318276 -462 460 -1.405126015541214e-16 -462 461 1.214306433183765e-17 -462 462 1.241426611796988 -462 463 0.01296296296296298 -462 464 -0.01342592592592588 -462 465 -0.1551783264746227 -462 466 0.0240740740740741 -462 467 1.734723475976807e-18 -462 468 -0.1063100137174254 -462 1042 -0.01296296296296306 -462 1043 0.01342592592592622 -462 1044 -0.1551783264746258 -462 1045 1.43982048506075e-16 -462 1046 0.02870370370370376 -462 1047 -0.2040466392318275 -462 1048 0.01296296296296292 -462 1049 0.01342592592592583 -462 1050 -0.1551783264746215 -463 463 1 -464 464 1 -465 457 -0.01203703703703702 -465 458 -0.01342592592592587 -465 459 -0.05315500685871287 -465 460 -0.01296296296296297 -465 461 0.01342592592592596 -465 462 -0.1551783264746226 -465 463 -1.214306433183765e-16 -465 464 -0.02870370370370347 -465 465 0.6207133058984873 -465 466 1.249000902703301e-16 -465 467 0.02870370370370359 -465 468 -0.2040466392318206 -465 469 0.01203703703703714 -465 470 -0.01342592592592589 -465 471 -0.05315500685871064 -465 472 0.01296296296296285 -465 473 0.01342592592592568 -465 474 -0.1551783264746204 -466 457 -0.0009703703703703707 -466 458 -0.0004999999999999994 -466 459 -0.008333333333333333 -466 460 -0.001659259259259292 -466 461 2.602085213965211e-18 -466 462 -0.03333333333333333 -466 463 -0.0002814814814814642 -466 464 -3.035766082959412e-18 -466 466 0.007762962962962976 -466 467 -1.1817803680092e-17 -466 468 -1.040834085586084e-17 -466 469 -0.0009703703703703787 -466 470 0.0005000000000000024 -466 471 0.008333333333333335 -466 472 -0.001659259259259267 -466 473 9.215718466126788e-18 -466 474 0.03333333333333334 -466 1045 -0.000970370370370375 -466 1046 0.0005000000000000008 -466 1047 -0.008333333333333331 -466 1048 -0.0002814814814814643 -466 1049 -3.144186300207963e-18 -466 1050 -1.734723475976807e-18 -466 1051 -0.0009703703703703633 -466 1052 -0.0004999999999999976 -466 1053 0.008333333333333333 -467 457 -0.0004999999999999995 -467 458 -0.001040740740740732 -467 459 -0.009259259259259162 -467 460 2.818925648462312e-18 -467 461 0.0002814814814814539 -467 462 4.163336342344337e-17 -467 463 -3.144186300207963e-18 -467 464 -0.00236296296296294 -467 465 -0.03703703703703686 -467 466 -1.1817803680092e-17 -467 467 0.008325925925925903 -467 468 -1.179611963664229e-16 -467 469 0.0005000000000000025 -467 470 -0.001040740740740755 -467 471 -0.009259259259259304 -467 472 9.324138683375338e-18 -467 473 0.0002814814814814751 -467 474 -2.272487753529617e-16 -467 1045 0.0005000000000000007 -467 1046 -0.001040740740740741 -467 1047 0.009259259259259167 -467 1048 -3.035766082959412e-18 -467 1049 -0.00236296296296294 -467 1050 0.03703703703703673 -467 1051 -0.0004999999999999977 -467 1052 -0.001040740740740724 -467 1053 0.00925925925925917 -468 457 -0.01296296296296292 -468 458 -0.01342592592592576 -468 459 -0.1551783264746216 -468 460 -0.02407407407407411 -468 461 -1.561251128379126e-17 -468 462 -0.1063100137174254 -468 463 -1.231653667943533e-16 -468 464 -0.02870370370370328 -468 465 -0.2040466392318207 -468 466 1.387778780781446e-17 -468 467 -7.632783294297951e-17 -468 468 1.241426611796977 -468 469 0.01296296296296305 -468 470 -0.01342592592592612 -468 471 -0.155178326474624 -468 472 0.02407407407407409 -468 473 2.602085213965211e-17 -468 474 -0.1063100137174218 -468 1045 -0.01296296296296297 -468 1046 0.01342592592592595 -468 1047 -0.1551783264746225 -468 1048 1.249000902703301e-16 -468 1049 0.0287037037037036 -468 1050 -0.2040466392318206 -468 1051 0.01296296296296285 -468 1052 0.01342592592592568 -468 1053 -0.1551783264746204 -469 469 1 -470 470 1 -471 463 -0.01203703703703695 -471 464 -0.01342592592592592 -471 465 -0.05315500685871065 -471 466 -0.01296296296296305 -471 467 0.01342592592592609 -471 468 -0.155178326474624 -471 469 1.734723475976807e-17 -471 470 -0.02870370370370361 -471 471 0.6207133058984924 -471 472 -1.214306433183765e-17 -471 473 0.02870370370370322 -471 474 -0.2040466392318226 -471 475 0.01203703703703694 -471 476 -0.01342592592592592 -471 477 -0.05315500685871079 -471 478 0.01296296296296306 -471 479 0.01342592592592614 -471 480 -0.1551783264746243 -472 463 -0.0009703703703703633 -472 464 -0.0004999999999999977 -472 465 -0.008333333333333333 -472 466 -0.001659259259259267 -472 467 9.324138683375338e-18 -472 468 -0.03333333333333333 -472 469 -0.0002814814814814748 -472 470 3.252606517456513e-19 -472 471 -1.734723475976807e-18 -472 472 0.007762962962962968 -472 473 1.409462824231156e-18 -472 474 -1.040834085586084e-17 -472 475 -0.0009703703703703621 -472 476 0.0004999999999999974 -472 477 0.008333333333333335 -472 478 -0.001659259259259267 -472 479 -1.073360150760649e-17 -472 480 0.03333333333333334 -472 1048 -0.0009703703703703787 -472 1049 0.0005000000000000025 -472 1050 -0.008333333333333331 -472 1051 -0.0002814814814814748 -472 1052 1.084202172485504e-19 -472 1053 -1.734723475976807e-18 -472 1054 -0.0009703703703703798 -472 1055 -0.0005000000000000026 -472 1056 0.008333333333333333 -473 463 -0.0004999999999999976 -473 464 -0.001040740740740724 -473 465 -0.009259259259259172 -473 466 9.215718466126788e-18 -473 467 0.0002814814814814751 -473 468 2.931682674400804e-16 -473 469 1.084202172485504e-19 -473 470 -0.002362962962962955 -473 471 -0.03703703703703684 -473 472 1.301042606982605e-18 -473 473 0.008325925925925917 -473 474 5.759281940243e-16 -473 475 0.0004999999999999974 -473 476 -0.001040740740740722 -473 477 -0.009259259259259169 -473 478 -1.073360150760649e-17 -473 479 0.0002814814814814751 -473 480 3.070460552478949e-16 -473 1048 0.0005000000000000024 -473 1049 -0.001040740740740755 -473 1050 0.0092592592592593 -473 1051 3.252606517456513e-19 -473 1052 -0.002362962962962955 -473 1053 0.03703703703703706 -473 1054 -0.0005000000000000027 -473 1055 -0.001040740740740757 -473 1056 0.009259259259259304 -474 463 -0.01296296296296285 -474 464 -0.01342592592592571 -474 465 -0.1551783264746205 -474 466 -0.02407407407407411 -474 467 -3.122502256758253e-17 -474 468 -0.1063100137174219 -474 469 1.561251128379126e-17 -474 470 -0.02870370370370402 -474 471 -0.2040466392318226 -474 472 1.387778780781446e-17 -474 473 1.734723475976807e-18 -474 474 1.241426611796978 -474 475 0.01296296296296284 -474 476 -0.01342592592592566 -474 477 -0.1551783264746202 -474 478 0.0240740740740741 -474 479 -3.642919299551295e-17 -474 480 -0.1063100137174218 -474 1048 -0.01296296296296305 -474 1049 0.01342592592592609 -474 1050 -0.155178326474624 -474 1051 -1.040834085586084e-17 -474 1052 0.02870370370370322 -474 1053 -0.2040466392318225 -474 1054 0.01296296296296306 -474 1055 0.01342592592592614 -474 1056 -0.1551783264746242 -475 475 1 -476 476 1 -477 469 -0.01203703703703716 -477 470 -0.01342592592592589 -477 471 -0.05315500685871079 -477 472 -0.01296296296296284 -477 473 0.01342592592592567 -477 474 -0.1551783264746202 -477 475 1.769417945496343e-16 -477 476 -0.02870370370370389 -477 477 0.6207133058984922 -477 478 -1.734723475976807e-16 -477 479 0.02870370370370412 -477 480 -0.2040466392318276 -477 481 0.01203703703703699 -477 482 -0.01342592592592603 -477 483 -0.05315500685870887 -477 484 0.01296296296296301 -477 485 0.01342592592592602 -477 486 -0.1551783264746247 -478 469 -0.0009703703703703799 -478 470 -0.0005000000000000027 -478 471 -0.008333333333333333 -478 472 -0.001659259259259267 -478 473 -1.073360150760649e-17 -478 474 -0.03333333333333333 -478 475 -0.0002814814814814937 -478 476 2.38524477946811e-18 -478 477 -1.734723475976807e-18 -478 478 0.007762962962962956 -478 479 9.324138683375338e-18 -478 480 -1.040834085586084e-17 -478 481 -0.0009703703703703689 -478 482 0.0005000000000000003 -478 483 0.008333333333333333 -478 484 -0.001659259259259223 -478 485 1.409462824231156e-18 -478 486 0.03333333333333333 -478 1051 -0.0009703703703703621 -478 1052 0.0004999999999999974 -478 1053 -0.008333333333333331 -478 1054 -0.0002814814814814938 -478 1055 2.276824562219559e-18 -478 1057 -0.0009703703703703668 -478 1058 -0.0004999999999999997 -478 1059 0.008333333333333333 -479 469 -0.0005000000000000026 -479 470 -0.001040740740740757 -479 471 -0.009259259259259316 -479 472 -1.062518129035794e-17 -479 473 0.0002814814814814751 -479 474 -2.844946500601964e-16 -479 475 2.38524477946811e-18 -479 476 -0.00236296296296298 -479 477 -0.03703703703703728 -479 478 9.324138683375338e-18 -479 479 0.008325925925925941 -479 480 -3.191891195797325e-16 -479 481 0.0005000000000000003 -479 482 -0.001040740740740748 -479 483 -0.009259259259259377 -479 484 1.301042606982605e-18 -479 485 0.0002814814814815128 -479 486 -6.765421556309548e-17 -479 1051 0.0004999999999999974 -479 1052 -0.001040740740740722 -479 1053 0.009259259259259156 -479 1054 2.38524477946811e-18 -479 1055 -0.00236296296296298 -479 1056 0.03703703703703713 -479 1057 -0.0004999999999999997 -479 1058 -0.001040740740740744 -479 1059 0.009259259259259358 -480 469 -0.01296296296296306 -480 470 -0.01342592592592613 -480 471 -0.1551783264746243 -480 472 -0.02407407407407411 -480 473 2.775557561562891e-17 -480 474 -0.1063100137174218 -480 475 2.42861286636753e-17 -480 476 -0.02870370370370362 -480 477 -0.2040466392318276 -480 478 1.578598363138894e-16 -480 479 -3.122502256758253e-17 -480 480 1.241426611796988 -480 481 0.01296296296296304 -480 482 -0.01342592592592605 -480 483 -0.1551783264746252 -480 484 0.02407407407407395 -480 485 1.040834085586084e-17 -480 486 -0.1063100137174172 -480 1051 -0.01296296296296284 -480 1052 0.01342592592592566 -480 1053 -0.1551783264746201 -480 1054 -1.700029006457271e-16 -480 1055 0.02870370370370412 -480 1056 -0.2040466392318275 -480 1057 0.01296296296296301 -480 1058 0.01342592592592602 -480 1059 -0.1551783264746246 -481 481 1 -482 482 1 -483 475 -0.01203703703703696 -483 476 -0.01342592592592604 -483 477 -0.05315500685870887 -483 478 -0.01296296296296304 -483 479 0.01342592592592608 -483 480 -0.1551783264746252 -483 481 -8.500145032286355e-17 -483 482 -0.02870370370370386 -483 483 0.6207133058984959 -483 484 9.194034422677078e-17 -483 485 0.02870370370370369 -483 486 -0.2040466392318276 -483 487 0.01203703703703705 -483 488 -0.01342592592592591 -483 489 -0.05315500685871197 -483 490 0.01296296296296295 -483 491 0.01342592592592604 -483 492 -0.1551783264746222 -484 475 -0.0009703703703703668 -484 476 -0.0004999999999999998 -484 477 -0.008333333333333333 -484 478 -0.001659259259259223 -484 479 1.409462824231156e-18 -484 480 -0.03333333333333333 -484 481 -0.0002814814814814937 -484 482 -2.168404344971009e-19 -484 484 0.007762962962962956 -484 485 -1.409462824231156e-18 -484 486 -6.938893903907228e-18 -484 487 -0.000970370370370371 -484 488 0.0005 -484 489 0.008333333333333335 -484 490 -0.001659259259259267 -484 492 0.03333333333333334 -484 1054 -0.0009703703703703689 -484 1055 0.0005000000000000003 -484 1056 -0.008333333333333333 -484 1057 -0.0002814814814814937 -484 1058 -3.252606517456513e-19 -484 1059 -1.734723475976807e-18 -484 1060 -0.000970370370370371 -484 1061 -0.0005 -484 1062 0.008333333333333333 -485 475 -0.0004999999999999998 -485 476 -0.001040740740740744 -485 477 -0.009259259259259358 -485 478 1.409462824231156e-18 -485 479 0.0002814814814815129 -485 480 5.204170427930421e-18 -485 481 -3.252606517456513e-19 -485 482 -0.002362962962962979 -485 483 -0.03703703703703715 -485 484 -1.301042606982605e-18 -485 485 0.008325925925925941 -485 486 2.289834988289385e-16 -485 487 0.0005000000000000001 -485 488 -0.00104074074074074 -485 489 -0.009259259259259287 -485 491 0.0002814814814814751 -485 492 -1.595945597898663e-16 -485 1054 0.0005000000000000003 -485 1055 -0.001040740740740748 -485 1056 0.009259259259259377 -485 1057 -3.252606517456513e-19 -485 1058 -0.002362962962962979 -485 1059 0.03703703703703727 -485 1060 -0.0005 -485 1061 -0.00104074074074074 -485 1062 0.009259259259259189 -486 475 -0.01296296296296301 -486 476 -0.013425925925926 -486 477 -0.1551783264746247 -486 478 -0.02407407407407396 -486 479 3.469446951953614e-18 -486 480 -0.1063100137174172 -486 481 6.071532165918825e-17 -486 482 -0.02870370370370405 -486 483 -0.2040466392318276 -486 484 -1.370431546021678e-16 -486 485 1.561251128379126e-17 -486 486 1.241426611796988 -486 487 0.01296296296296295 -486 488 -0.01342592592592576 -486 489 -0.1551783264746222 -486 490 0.02407407407407409 -486 491 -2.255140518769849e-17 -486 492 -0.1063100137174218 -486 1054 -0.01296296296296304 -486 1055 0.01342592592592608 -486 1056 -0.1551783264746252 -486 1057 8.847089727481716e-17 -486 1058 0.02870370370370369 -486 1059 -0.2040466392318275 -486 1060 0.01296296296296295 -486 1061 0.01342592592592604 -486 1062 -0.1551783264746222 -487 487 1 -488 488 1 -489 481 -0.01203703703703705 -489 482 -0.01342592592592591 -489 483 -0.05315500685871197 -489 484 -0.01296296296296295 -489 485 0.01342592592592604 -489 486 -0.1551783264746222 -489 487 -6.938893903907228e-18 -489 488 -0.02870370370370346 -489 489 0.6207133058984895 -489 490 1.561251128379126e-17 -489 491 0.02870370370370334 -489 492 -0.2040466392318207 -489 493 0.01203703703703706 -489 494 -0.01342592592592586 -489 495 -0.05315500685871273 -489 496 0.01296296296296294 -489 497 0.01342592592592585 -489 498 -0.1551783264746219 -490 481 -0.000970370370370371 -490 482 -0.0005000000000000001 -490 483 -0.008333333333333333 -490 484 -0.001659259259259267 -490 486 -0.03333333333333333 -490 487 -0.0002814814814814643 -490 488 -2.168404344971009e-19 -490 489 -1.734723475976807e-18 -490 490 0.007762962962962976 -490 491 -1.409462824231156e-18 -490 492 -6.938893903907228e-18 -490 493 -0.0009703703703703739 -490 494 0.0005000000000000003 -490 495 0.008333333333333333 -490 496 -0.001659259259259292 -490 497 1.409462824231156e-18 -490 498 0.03333333333333334 -490 1057 -0.000970370370370371 -490 1058 0.0005 -490 1059 -0.008333333333333331 -490 1060 -0.0002814814814814642 -490 1061 -2.168404344971009e-19 -490 1062 -1.734723475976807e-18 -490 1063 -0.0009703703703703715 -490 1064 -0.0004999999999999998 -490 1065 0.008333333333333333 -491 481 -0.0005 -491 482 -0.00104074074074074 -491 483 -0.009259259259259285 -491 485 0.0002814814814814751 -491 486 -1.595945597898663e-16 -491 487 -3.252606517456513e-19 -491 488 -0.002362962962962941 -491 489 -0.03703703703703678 -491 490 -1.409462824231156e-18 -491 491 0.008325925925925903 -491 492 1.942890293094024e-16 -491 493 0.0005000000000000004 -491 494 -0.001040740740740739 -491 495 -0.009259259259259182 -491 496 1.409462824231156e-18 -491 497 0.0002814814814814538 -491 498 -4.683753385137379e-17 -491 1057 0.0005 -491 1058 -0.00104074074074074 -491 1059 0.009259259259259188 -491 1060 -3.252606517456513e-19 -491 1061 -0.00236296296296294 -491 1062 0.03703703703703681 -491 1063 -0.0004999999999999997 -491 1064 -0.001040740740740734 -491 1065 0.009259259259259143 -492 481 -0.01296296296296295 -492 482 -0.01342592592592576 -492 483 -0.1551783264746223 -492 484 -0.02407407407407411 -492 485 -2.255140518769849e-17 -492 486 -0.1063100137174218 -492 487 -1.214306433183765e-17 -492 488 -0.02870370370370354 -492 489 -0.2040466392318207 -492 490 1.387778780781446e-17 -492 491 -4.336808689942018e-17 -492 492 1.241426611796977 -492 493 0.01296296296296296 -492 494 -0.01342592592592587 -492 495 -0.1551783264746224 -492 496 0.0240740740740741 -492 497 1.734723475976807e-18 -492 498 -0.1063100137174254 -492 1057 -0.01296296296296295 -492 1058 0.01342592592592604 -492 1059 -0.1551783264746222 -492 1060 1.214306433183765e-17 -492 1061 0.02870370370370334 -492 1062 -0.2040466392318206 -492 1063 0.01296296296296293 -492 1064 0.01342592592592585 -492 1065 -0.1551783264746218 -493 493 1 -494 494 1 -495 487 -0.01203703703703704 -495 488 -0.01342592592592587 -495 489 -0.05315500685871273 -495 490 -0.01296296296296296 -495 491 0.01342592592592591 -495 492 -0.1551783264746224 -495 493 -9.71445146547012e-17 -495 494 -0.02870370370370351 -495 495 0.6207133058984868 -495 496 9.8879238130678e-17 -495 497 0.02870370370370367 -495 498 -0.2040466392318209 -495 499 0.01203703703703713 -495 500 -0.0134259259259259 -495 501 -0.05315500685871019 -495 502 0.01296296296296286 -495 503 0.0134259259259257 -495 504 -0.1551783264746207 -496 487 -0.0009703703703703718 -496 488 -0.0004999999999999997 -496 489 -0.008333333333333333 -496 490 -0.001659259259259292 -496 491 1.409462824231156e-18 -496 492 -0.03333333333333333 -496 493 -0.0002814814814814654 -496 494 -2.38524477946811e-18 -496 496 0.007762962962962975 -496 497 -9.215718466126788e-18 -496 498 -1.040834085586084e-17 -496 499 -0.0009703703703703775 -496 500 0.0005000000000000021 -496 501 0.008333333333333335 -496 502 -0.001659259259259264 -496 503 7.806255641895632e-18 -496 504 0.03333333333333334 -496 1060 -0.0009703703703703739 -496 1061 0.0005000000000000004 -496 1062 -0.008333333333333331 -496 1063 -0.0002814814814814656 -496 1064 -2.49366499671666e-18 -496 1065 -1.734723475976807e-18 -496 1066 -0.0009703703703703643 -496 1067 -0.000499999999999998 -496 1068 0.008333333333333335 -497 487 -0.0004999999999999998 -497 488 -0.001040740740740734 -497 489 -0.009259259259259165 -497 490 1.409462824231156e-18 -497 491 0.0002814814814814537 -497 492 2.602085213965211e-17 -497 493 -2.49366499671666e-18 -497 494 -0.002362962962962942 -497 495 -0.0370370370370369 -497 496 -9.215718466126788e-18 -497 497 0.008325925925925907 -497 498 -1.387778780781446e-16 -497 499 0.0005000000000000022 -497 500 -0.001040740740740754 -497 501 -0.009259259259259302 -497 502 8.023096076392733e-18 -497 503 0.0002814814814814777 -497 504 -1.578598363138894e-16 -497 1060 0.0005000000000000003 -497 1061 -0.001040740740740739 -497 1062 0.009259259259259162 -497 1063 -2.38524477946811e-18 -497 1064 -0.002362962962962942 -497 1065 0.03703703703703673 -497 1066 -0.0004999999999999982 -497 1067 -0.001040740740740727 -497 1068 0.009259259259259189 -498 487 -0.01296296296296293 -498 488 -0.01342592592592581 -498 489 -0.1551783264746219 -498 490 -0.02407407407407411 -498 491 -6.938893903907228e-18 -498 492 -0.1063100137174254 -498 493 -9.71445146547012e-17 -498 494 -0.02870370370370325 -498 495 -0.2040466392318209 -498 496 8.673617379884035e-18 -498 497 -1.110223024625157e-16 -498 498 1.241426611796977 -498 499 0.01296296296296303 -498 500 -0.01342592592592611 -498 501 -0.1551783264746238 -498 502 0.0240740740740741 -498 503 1.387778780781446e-17 -498 504 -0.1063100137174215 -498 1060 -0.01296296296296296 -498 1061 0.01342592592592591 -498 1062 -0.1551783264746223 -498 1063 9.71445146547012e-17 -498 1064 0.02870370370370367 -498 1065 -0.2040466392318208 -498 1066 0.01296296296296286 -498 1067 0.0134259259259257 -498 1068 -0.1551783264746207 -499 499 1 -500 500 1 -501 493 -0.01203703703703697 -501 494 -0.01342592592592592 -501 495 -0.05315500685871019 -501 496 -0.01296296296296303 -501 497 0.01342592592592606 -501 498 -0.1551783264746238 -501 499 -6.245004513516506e-17 -501 500 -0.02870370370370366 -501 501 0.6207133058984913 -501 502 7.112366251504909e-17 -501 503 0.02870370370370338 -501 504 -0.2040466392318228 -501 505 0.01203703703703703 -501 506 -0.01342592592592591 -501 507 -0.05315500685871182 -501 508 0.01296296296296296 -501 509 0.01342592592592605 -501 510 -0.1551783264746225 -502 493 -0.0009703703703703642 -502 494 -0.0004999999999999981 -502 495 -0.008333333333333333 -502 496 -0.001659259259259264 -502 497 8.023096076392733e-18 -502 498 -0.03333333333333333 -502 499 -0.0002814814814814761 -502 500 -1.734723475976807e-18 -502 501 -1.734723475976807e-18 -502 502 0.007762962962962968 -502 503 -6.613633252161577e-18 -502 504 -1.387778780781446e-17 -502 505 -0.0009703703703703698 -502 506 0.0004999999999999998 -502 507 0.008333333333333335 -502 508 -0.001659259259259267 -502 509 -1.409462824231156e-18 -502 510 0.03333333333333334 -502 1063 -0.0009703703703703776 -502 1064 0.0005000000000000022 -502 1065 -0.008333333333333331 -502 1066 -0.0002814814814814761 -502 1067 -1.951563910473908e-18 -502 1068 -3.469446951953614e-18 -502 1069 -0.0009703703703703721 -502 1070 -0.0005000000000000002 -502 1071 0.008333333333333333 -503 493 -0.000499999999999998 -503 494 -0.001040740740740727 -503 495 -0.009259259259259191 -503 496 7.806255641895632e-18 -503 497 0.0002814814814814777 -503 498 2.8796409701215e-16 -503 499 -1.843143693225358e-18 -503 500 -0.002362962962962956 -503 501 -0.03703703703703691 -503 502 -6.613633252161577e-18 -503 503 0.008325925925925919 -503 504 4.371503159461554e-16 -503 505 0.0004999999999999998 -503 506 -0.001040740740740737 -503 507 -0.009259259259259273 -503 508 -1.409462824231156e-18 -503 509 0.0002814814814814751 -503 510 -1.006139616066548e-16 -503 1063 0.0005000000000000021 -503 1064 -0.001040740740740754 -503 1065 0.009259259259259302 -503 1066 -1.517883041479706e-18 -503 1067 -0.002362962962962956 -503 1068 0.03703703703703702 -503 1069 -0.0005000000000000004 -503 1070 -0.001040740740740742 -503 1071 0.009259259259259203 -504 493 -0.01296296296296287 -504 494 -0.01342592592592575 -504 495 -0.1551783264746207 -504 496 -0.02407407407407411 -504 497 -3.122502256758253e-17 -504 498 -0.1063100137174214 -504 499 -6.938893903907228e-17 -504 500 -0.0287037037037039 -504 501 -0.2040466392318228 -504 502 1.387778780781446e-17 -504 503 -3.989863994746656e-17 -504 504 1.241426611796978 -504 505 0.01296296296296293 -504 506 -0.01342592592592575 -504 507 -0.155178326474622 -504 508 0.0240740740740741 -504 509 -2.081668171172169e-17 -504 510 -0.1063100137174218 -504 1063 -0.01296296296296303 -504 1064 0.01342592592592606 -504 1065 -0.1551783264746237 -504 1066 6.938893903907228e-17 -504 1067 0.02870370370370339 -504 1068 -0.2040466392318227 -504 1069 0.01296296296296296 -504 1070 0.01342592592592605 -504 1071 -0.1551783264746224 -505 505 1 -506 506 1 -507 499 -0.01203703703703706 -507 500 -0.01342592592592591 -507 501 -0.05315500685871184 -507 502 -0.01296296296296294 -507 503 0.01342592592592599 -507 504 -0.155178326474622 -507 505 9.194034422677078e-17 -507 506 -0.0287037037037039 -507 507 0.620713305898495 -507 508 -8.500145032286355e-17 -507 509 0.02870370370370382 -507 510 -0.2040466392318279 -507 511 0.01203703703703697 -507 512 -0.01342592592592604 -507 513 -0.05315500685870837 -507 514 0.01296296296296302 -507 515 0.01342592592592604 -507 516 -0.155178326474625 -508 499 -0.0009703703703703722 -508 500 -0.0005000000000000004 -508 501 -0.008333333333333333 -508 502 -0.001659259259259267 -508 503 -1.409462824231156e-18 -508 504 -0.03333333333333333 -508 505 -0.0002814814814814952 -508 506 4.336808689942018e-19 -508 507 -1.734723475976807e-18 -508 508 0.007762962962962955 -508 509 1.409462824231156e-18 -508 510 -1.040834085586084e-17 -508 511 -0.0009703703703703678 -508 512 0.0005 -508 513 0.008333333333333335 -508 514 -0.001659259259259219 -508 516 0.03333333333333333 -508 1066 -0.0009703703703703698 -508 1067 0.0004999999999999998 -508 1068 -0.008333333333333331 -508 1069 -0.0002814814814814952 -508 1070 2.168404344971009e-19 -508 1072 -0.0009703703703703678 -508 1073 -0.0005 -508 1074 0.008333333333333335 -509 499 -0.0005000000000000003 -509 500 -0.001040740740740742 -509 501 -0.00925925925925929 -509 502 -1.409462824231156e-18 -509 503 0.0002814814814814751 -509 504 -1.752070710736575e-16 -509 505 3.252606517456513e-19 -509 506 -0.002362962962962982 -509 507 -0.03703703703703721 -509 508 1.409462824231156e-18 -509 509 0.008325925925925947 -509 510 1.318389841742373e-16 -509 511 0.0005 -509 512 -0.001040740740740747 -509 513 -0.009259259259259377 -509 514 1.084202172485504e-19 -509 515 0.0002814814814815158 -509 1066 0.0004999999999999997 -509 1067 -0.001040740740740737 -509 1068 0.009259259259259184 -509 1069 3.252606517456513e-19 -509 1070 -0.002362962962962982 -509 1071 0.03703703703703724 -509 1072 -0.0005000000000000001 -509 1073 -0.001040740740740747 -509 1074 0.009259259259259377 -510 499 -0.01296296296296297 -510 500 -0.01342592592592581 -510 501 -0.1551783264746225 -510 502 -0.02407407407407411 -510 503 -1.734723475976807e-17 -510 504 -0.1063100137174218 -510 505 -5.724587470723463e-17 -510 506 -0.02870370370370397 -510 507 -0.2040466392318279 -510 508 1.595945597898663e-16 -510 509 -1.734723475976807e-17 -510 510 1.241426611796989 -510 511 0.01296296296296302 -510 512 -0.01342592592592605 -510 513 -0.155178326474625 -510 514 0.02407407407407395 -510 515 3.469446951953614e-18 -510 516 -0.1063100137174167 -510 1066 -0.01296296296296293 -510 1067 0.01342592592592599 -510 1068 -0.1551783264746219 -510 1069 -8.673617379884035e-17 -510 1070 0.02870370370370382 -510 1071 -0.2040466392318278 -510 1072 0.01296296296296302 -510 1073 0.01342592592592604 -510 1074 -0.1551783264746249 -511 511 1 -512 512 1 -513 505 -0.01203703703703698 -513 506 -0.01342592592592604 -513 507 -0.05315500685870837 -513 508 -0.01296296296296303 -513 509 0.01342592592592604 -513 510 -0.155178326474625 -513 511 -1.682681771697503e-16 -513 512 -0.02870370370370393 -513 513 0.6207133058984924 -513 514 1.752070710736575e-16 -513 515 0.02870370370370413 -513 516 -0.2040466392318279 -513 517 0.01203703703703714 -513 518 -0.01342592592592589 -513 519 -0.05315500685871064 -513 520 0.01296296296296285 -513 521 0.01342592592592568 -513 522 -0.1551783264746204 -514 505 -0.0009703703703703678 -514 506 -0.0005000000000000001 -514 507 -0.008333333333333333 -514 508 -0.001659259259259219 -514 509 1.084202172485504e-19 -514 510 -0.03333333333333333 -514 511 -0.000281481481481495 -514 512 -2.276824562219559e-18 -514 513 -1.734723475976807e-18 -514 514 0.007762962962962954 -514 515 -9.324138683375338e-18 -514 516 -6.938893903907228e-18 -514 517 -0.0009703703703703787 -514 518 0.0005000000000000024 -514 519 0.008333333333333335 -514 520 -0.001659259259259267 -514 521 9.215718466126788e-18 -514 522 0.03333333333333334 -514 1069 -0.0009703703703703678 -514 1070 0.0005 -514 1071 -0.008333333333333333 -514 1072 -0.0002814814814814951 -514 1073 -2.38524477946811e-18 -514 1074 -3.469446951953614e-18 -514 1075 -0.0009703703703703633 -514 1076 -0.0004999999999999976 -514 1077 0.008333333333333333 -515 505 -0.0005000000000000001 -515 506 -0.001040740740740747 -515 507 -0.009259259259259377 -515 509 0.0002814814814815158 -515 511 -2.38524477946811e-18 -515 512 -0.002362962962962981 -515 513 -0.03703703703703731 -515 514 -9.324138683375338e-18 -515 515 0.008325925925925945 -515 516 -2.567390744445674e-16 -515 517 0.0005000000000000025 -515 518 -0.001040740740740755 -515 519 -0.009259259259259304 -515 520 9.324138683375338e-18 -515 521 0.0002814814814814751 -515 522 -2.272487753529617e-16 -515 1069 0.0005000000000000001 -515 1070 -0.001040740740740747 -515 1071 0.009259259259259377 -515 1072 -2.276824562219559e-18 -515 1073 -0.002362962962962982 -515 1074 0.03703703703703715 -515 1075 -0.0004999999999999977 -515 1076 -0.001040740740740724 -515 1077 0.00925925925925917 -516 505 -0.01296296296296303 -516 506 -0.01342592592592605 -516 507 -0.155178326474625 -516 508 -0.02407407407407396 -516 509 3.469446951953614e-18 -516 510 -0.1063100137174167 -516 511 -2.081668171172169e-17 -516 512 -0.02870370370370365 -516 513 -0.2040466392318279 -516 514 -1.35308431126191e-16 -516 515 -6.418476861114186e-17 -516 516 1.241426611796989 -516 517 0.01296296296296305 -516 518 -0.01342592592592612 -516 519 -0.155178326474624 -516 520 0.02407407407407409 -516 521 2.602085213965211e-17 -516 522 -0.1063100137174218 -516 1069 -0.01296296296296302 -516 1070 0.01342592592592604 -516 1071 -0.1551783264746249 -516 1072 1.734723475976807e-16 -516 1073 0.02870370370370413 -516 1074 -0.2040466392318278 -516 1075 0.01296296296296285 -516 1076 0.01342592592592568 -516 1077 -0.1551783264746204 -517 517 1 -518 518 1 -519 511 -0.01203703703703695 -519 512 -0.01342592592592592 -519 513 -0.05315500685871065 -519 514 -0.01296296296296305 -519 515 0.01342592592592609 -519 516 -0.155178326474624 -519 517 1.561251128379126e-17 -519 518 -0.02870370370370369 -519 519 0.6207133058984931 -519 520 -1.214306433183765e-17 -519 521 0.02870370370370329 -519 522 -0.2040466392318238 -519 523 0.01203703703703694 -519 524 -0.01342592592592594 -519 525 -0.05315500685871005 -519 526 0.01296296296296306 -519 527 0.01342592592592616 -519 528 -0.1551783264746244 -520 511 -0.0009703703703703633 -520 512 -0.0004999999999999977 -520 513 -0.008333333333333333 -520 514 -0.001659259259259267 -520 515 9.324138683375338e-18 -520 516 -0.03333333333333333 -520 517 -0.0002814814814814817 -520 518 3.252606517456513e-19 -520 519 -3.469446951953614e-18 -520 520 0.007762962962962964 -520 521 1.409462824231156e-18 -520 522 -1.040834085586084e-17 -520 523 -0.000970370370370361 -520 524 0.0004999999999999974 -520 525 0.008333333333333335 -520 526 -0.001659259259259251 -520 527 -1.073360150760649e-17 -520 528 0.03333333333333333 -520 1072 -0.0009703703703703787 -520 1073 0.0005000000000000025 -520 1074 -0.008333333333333331 -520 1075 -0.0002814814814814817 -520 1076 1.084202172485504e-19 -520 1078 -0.0009703703703703788 -520 1079 -0.0005000000000000026 -520 1080 0.008333333333333335 -521 511 -0.0004999999999999976 -521 512 -0.001040740740740724 -521 513 -0.009259259259259172 -521 514 9.215718466126788e-18 -521 515 0.0002814814814814751 -521 516 2.931682674400804e-16 -521 517 1.084202172485504e-19 -521 518 -0.002362962962962964 -521 519 -0.0370370370370369 -521 520 1.517883041479706e-18 -521 521 0.008325925925925928 -521 522 5.100087019371813e-16 -521 523 0.0004999999999999973 -521 524 -0.001040740740740724 -521 525 -0.0092592592592592 -521 526 -1.051676107310939e-17 -521 527 0.0002814814814814885 -521 528 2.775557561562891e-16 -521 1072 0.0005000000000000024 -521 1073 -0.001040740740740755 -521 1074 0.0092592592592593 -521 1075 3.252606517456513e-19 -521 1076 -0.002362962962962964 -521 1077 0.03703703703703718 -521 1078 -0.0005000000000000027 -521 1079 -0.00104074074074076 -521 1080 0.009259259259259368 -522 511 -0.01296296296296285 -522 512 -0.01342592592592571 -522 513 -0.1551783264746205 -522 514 -0.02407407407407411 -522 515 -3.122502256758253e-17 -522 516 -0.1063100137174219 -522 517 1.387778780781446e-17 -522 518 -0.02870370370370418 -522 519 -0.2040466392318238 -522 520 1.214306433183765e-17 -522 521 7.806255641895632e-17 -522 522 1.241426611796978 -522 523 0.01296296296296284 -522 524 -0.01342592592592569 -522 525 -0.1551783264746203 -522 526 0.0240740740740741 -522 527 -2.081668171172169e-17 -522 528 -0.1063100137174196 -522 1072 -0.01296296296296305 -522 1073 0.01342592592592609 -522 1074 -0.155178326474624 -522 1075 -1.040834085586084e-17 -522 1076 0.02870370370370329 -522 1077 -0.2040466392318237 -522 1078 0.01296296296296306 -522 1079 0.01342592592592616 -522 1080 -0.1551783264746243 -523 523 1 -524 524 1 -525 517 -0.01203703703703717 -525 518 -0.01342592592592591 -525 519 -0.05315500685871007 -525 520 -0.01296296296296284 -525 521 0.01342592592592569 -525 522 -0.1551783264746203 -525 523 8.847089727481716e-17 -525 524 -0.02870370370370352 -525 525 0.6207133058984868 -525 526 -8.500145032286355e-17 -525 527 0.02870370370370377 -525 528 -0.2040466392318216 -525 529 0.01203703703703708 -525 530 -0.01342592592592585 -525 531 -0.05315500685871326 -525 532 0.01296296296296292 -525 533 0.01342592592592583 -525 534 -0.1551783264746216 -526 517 -0.0009703703703703788 -526 518 -0.0005000000000000027 -526 519 -0.008333333333333331 -526 520 -0.001659259259259251 -526 521 -1.062518129035794e-17 -526 522 -0.03333333333333333 -526 523 -0.0002814814814814694 -526 524 2.059984127722458e-18 -526 525 -1.734723475976807e-18 -526 526 0.007762962962962972 -526 527 7.914675859144182e-18 -526 529 -0.0009703703703703753 -526 530 0.0005000000000000007 -526 531 0.008333333333333335 -526 532 -0.001659259259259295 -526 533 2.710505431213761e-18 -526 534 0.03333333333333334 -526 1075 -0.000970370370370361 -526 1076 0.0004999999999999973 -526 1077 -0.008333333333333333 -526 1078 -0.0002814814814814694 -526 1079 2.059984127722458e-18 -526 1080 -1.734723475976807e-18 -526 1081 -0.0009703703703703709 -526 1082 -0.0004999999999999994 -526 1083 0.008333333333333335 -527 517 -0.0005000000000000026 -527 518 -0.00104074074074076 -527 519 -0.009259259259259347 -527 520 -1.084202172485504e-17 -527 521 0.0002814814814814885 -527 522 -3.157196726277789e-16 -527 523 2.168404344971009e-18 -527 524 -0.002362962962962947 -527 525 -0.03703703703703694 -527 526 7.914675859144182e-18 -527 527 0.008325925925925912 -527 528 -3.677613769070831e-16 -527 529 0.0005000000000000008 -527 530 -0.00104074074074074 -527 531 -0.009259259259259184 -527 532 2.602085213965211e-18 -527 533 0.0002814814814814509 -527 534 -1.162264728904461e-16 -527 1075 0.0004999999999999974 -527 1076 -0.001040740740740724 -527 1077 0.009259259259259221 -527 1078 1.951563910473908e-18 -527 1079 -0.002362962962962947 -527 1080 0.03703703703703681 -527 1081 -0.0004999999999999995 -527 1082 -0.001040740740740731 -527 1083 0.009259259259259125 -528 517 -0.01296296296296306 -528 518 -0.01342592592592617 -528 519 -0.1551783264746244 -528 520 -0.0240740740740741 -528 521 4.510281037539698e-17 -528 522 -0.1063100137174196 -528 523 8.673617379884035e-17 -528 524 -0.02870370370370329 -528 525 -0.2040466392318216 -528 526 1.734723475976807e-18 -528 527 1.387778780781446e-17 -528 528 1.241426611796977 -528 529 0.01296296296296298 -528 530 -0.01342592592592588 -528 531 -0.1551783264746226 -528 532 0.0240740740740741 -528 533 5.204170427930421e-18 -528 534 -0.1063100137174259 -528 1075 -0.01296296296296283 -528 1076 0.01342592592592568 -528 1077 -0.1551783264746202 -528 1078 -8.500145032286355e-17 -528 1079 0.02870370370370377 -528 1080 -0.2040466392318215 -528 1081 0.01296296296296292 -528 1082 0.01342592592592583 -528 1083 -0.1551783264746215 -529 529 1 -530 530 1 -531 523 -0.01203703703703703 -531 524 -0.01342592592592586 -531 525 -0.05315500685871324 -531 526 -0.01296296296296298 -531 527 0.01342592592592595 -531 528 -0.1551783264746226 -531 529 -1.07552855510562e-16 -531 530 -0.02870370370370346 -531 531 0.6207133058984874 -531 532 1.144917494144693e-16 -531 533 0.02870370370370358 -531 534 -0.2040466392318206 -531 535 0.01203703703703713 -531 536 -0.0134259259259259 -531 537 -0.05315500685871019 -531 538 0.01296296296296286 -531 539 0.0134259259259257 -531 540 -0.1551783264746207 -532 523 -0.000970370370370371 -532 524 -0.0004999999999999995 -532 525 -0.008333333333333333 -532 526 -0.001659259259259295 -532 527 2.602085213965211e-18 -532 528 -0.03333333333333333 -532 529 -0.0002814814814814639 -532 530 -2.602085213965211e-18 -532 531 -1.734723475976807e-18 -532 532 0.007762962962962976 -532 533 -1.040834085586084e-17 -532 534 -1.387778780781446e-17 -532 535 -0.0009703703703703775 -532 536 0.0005000000000000021 -532 537 0.008333333333333335 -532 538 -0.001659259259259264 -532 539 7.806255641895632e-18 -532 540 0.03333333333333334 -532 1078 -0.0009703703703703753 -532 1079 0.0005000000000000008 -532 1080 -0.008333333333333333 -532 1081 -0.0002814814814814641 -532 1082 -2.818925648462312e-18 -532 1083 -3.469446951953614e-18 -532 1084 -0.0009703703703703643 -532 1085 -0.000499999999999998 -532 1086 0.008333333333333335 -533 523 -0.0004999999999999995 -533 524 -0.001040740740740731 -533 525 -0.009259259259259146 -533 526 2.602085213965211e-18 -533 527 0.0002814814814814509 -533 528 3.122502256758253e-17 -533 529 -2.818925648462312e-18 -533 530 -0.00236296296296294 -533 531 -0.03703703703703685 -533 532 -1.040834085586084e-17 -533 533 0.008325925925925903 -533 534 -1.110223024625157e-16 -533 535 0.0005000000000000022 -533 536 -0.001040740740740754 -533 537 -0.009259259259259302 -533 538 8.023096076392733e-18 -533 539 0.0002814814814814777 -533 540 -1.578598363138894e-16 -533 1078 0.0005000000000000008 -533 1079 -0.00104074074074074 -533 1080 0.009259259259259163 -533 1081 -2.602085213965211e-18 -533 1082 -0.00236296296296294 -533 1083 0.03703703703703674 -533 1084 -0.0004999999999999982 -533 1085 -0.001040740740740727 -533 1086 0.009259259259259189 -534 523 -0.01296296296296292 -534 524 -0.01342592592592576 -534 525 -0.1551783264746216 -534 526 -0.02407407407407411 -534 527 -1.214306433183765e-17 -534 528 -0.1063100137174259 -534 529 -1.092875789865388e-16 -534 530 -0.02870370370370329 -534 531 -0.2040466392318206 -534 532 1.387778780781446e-17 -534 533 -6.418476861114186e-17 -534 534 1.241426611796977 -534 535 0.01296296296296303 -534 536 -0.01342592592592611 -534 537 -0.1551783264746238 -534 538 0.0240740740740741 -534 539 1.387778780781446e-17 -534 540 -0.1063100137174215 -534 1078 -0.01296296296296297 -534 1079 0.01342592592592595 -534 1080 -0.1551783264746226 -534 1081 1.127570259384925e-16 -534 1082 0.02870370370370359 -534 1083 -0.2040466392318205 -534 1084 0.01296296296296286 -534 1085 0.0134259259259257 -534 1086 -0.1551783264746207 -535 535 1 -536 536 1 -537 529 -0.01203703703703697 -537 530 -0.01342592592592592 -537 531 -0.05315500685871019 -537 532 -0.01296296296296303 -537 533 0.01342592592592606 -537 534 -0.1551783264746238 -537 535 -3.469446951953614e-18 -537 536 -0.02870370370370403 -537 537 0.620713305898497 -537 538 1.214306433183765e-17 -537 539 0.02870370370370377 -537 540 -0.2040466392318295 -537 541 0.01203703703703697 -537 542 -0.01342592592592608 -537 543 -0.05315500685870849 -537 544 0.01296296296296302 -537 545 0.01342592592592621 -537 546 -0.155178326474625 -538 529 -0.0009703703703703642 -538 530 -0.0004999999999999981 -538 531 -0.008333333333333333 -538 532 -0.001659259259259264 -538 533 8.023096076392733e-18 -538 534 -0.03333333333333333 -538 535 -0.0002814814814815043 -538 536 -1.951563910473908e-18 -538 537 -1.734723475976807e-18 -538 538 0.007762962962962947 -538 539 -7.914675859144182e-18 -538 540 -1.387778780781446e-17 -538 541 -0.0009703703703703661 -538 542 0.0005 -538 543 0.008333333333333333 -538 544 -0.001659259259259201 -538 545 -1.084202172485504e-19 -538 546 0.03333333333333333 -538 1081 -0.0009703703703703776 -538 1082 0.0005000000000000022 -538 1083 -0.008333333333333331 -538 1084 -0.0002814814814815043 -538 1085 -2.168404344971009e-18 -538 1086 -1.734723475976807e-18 -538 1087 -0.0009703703703703661 -538 1088 -0.0005 -538 1089 0.008333333333333333 -539 529 -0.000499999999999998 -539 530 -0.001040740740740727 -539 531 -0.009259259259259191 -539 532 7.806255641895632e-18 -539 533 0.0002814814814814777 -539 534 2.8796409701215e-16 -539 535 -2.168404344971009e-18 -539 536 -0.002362962962962994 -539 537 -0.03703703703703726 -539 538 -7.914675859144182e-18 -539 539 0.008325925925925955 -539 540 3.538835890992686e-16 -539 541 0.0005 -539 542 -0.001040740740740749 -539 543 -0.009259259259259463 -539 544 2.168404344971009e-19 -539 545 0.0002814814814815314 -539 546 -1.908195823574488e-16 -539 1081 0.0005000000000000021 -539 1082 -0.001040740740740754 -539 1083 0.009259259259259302 -539 1084 -1.843143693225358e-18 -539 1085 -0.002362962962962994 -539 1086 0.03703703703703744 -539 1087 -0.0005 -539 1088 -0.001040740740740749 -539 1089 0.009259259259259398 -540 529 -0.01296296296296287 -540 530 -0.01342592592592575 -540 531 -0.1551783264746207 -540 532 -0.02407407407407411 -540 533 -3.122502256758253e-17 -540 534 -0.1063100137174214 -540 535 -1.543903893619358e-16 -540 536 -0.02870370370370433 -540 537 -0.2040466392318295 -540 538 1.630640067418199e-16 -540 539 3.642919299551295e-17 -540 540 1.241426611796989 -540 541 0.01296296296296302 -540 542 -0.01342592592592594 -540 543 -0.155178326474625 -540 544 0.02407407407407395 -540 545 -3.469446951953614e-18 -540 546 -0.1063100137174141 -540 1081 -0.01296296296296303 -540 1082 0.01342592592592606 -540 1083 -0.1551783264746237 -540 1084 1.040834085586084e-17 -540 1085 0.02870370370370377 -540 1086 -0.2040466392318294 -540 1087 0.01296296296296302 -540 1088 0.0134259259259262 -540 1089 -0.155178326474625 -541 541 1 -542 542 1 -543 535 -0.01203703703703698 -543 536 -0.01342592592592608 -543 537 -0.05315500685870849 -543 538 -0.01296296296296302 -543 539 0.0134259259259262 -543 540 -0.155178326474625 -543 541 -9.8879238130678e-17 -543 542 -0.02870370370370389 -543 543 0.6207133058984958 -543 544 1.023486850826316e-16 -543 545 0.02870370370370379 -543 546 -0.2040466392318285 -543 547 0.01203703703703708 -543 548 -0.01342592592592588 -543 549 -0.05315500685871216 -543 550 0.01296296296296292 -543 551 0.01342592592592585 -543 552 -0.1551783264746217 -544 535 -0.0009703703703703661 -544 536 -0.0005 -544 537 -0.008333333333333333 -544 538 -0.001659259259259201 -544 539 1.084202172485504e-19 -544 540 -0.03333333333333333 -544 541 -0.0002814814814814988 -544 542 -6.505213034913027e-19 -544 544 0.00776296296296295 -544 545 -2.818925648462312e-18 -544 546 -6.938893903907228e-18 -544 547 -0.0009703703703703737 -544 548 0.0005000000000000007 -544 549 0.008333333333333333 -544 550 -0.001659259259259277 -544 551 2.710505431213761e-18 -544 552 0.03333333333333334 -544 1084 -0.000970370370370366 -544 1085 0.0005 -544 1086 -0.008333333333333333 -544 1087 -0.0002814814814814988 -544 1088 -6.505213034913027e-19 -544 1089 -1.734723475976807e-18 -544 1090 -0.0009703703703703695 -544 1091 -0.0004999999999999994 -544 1092 0.008333333333333335 -545 535 -0.0005 -545 536 -0.001040740740740749 -545 537 -0.009259259259259463 -545 538 -1.084202172485504e-19 -545 539 0.0002814814814815313 -545 540 -1.908195823574488e-16 -545 541 -6.505213034913027e-19 -545 542 -0.002362962962962986 -545 543 -0.03703703703703719 -545 544 -2.818925648462312e-18 -545 545 0.008325925925925948 -545 546 5.204170427930421e-17 -545 547 0.0005000000000000008 -545 548 -0.001040740740740743 -545 549 -0.009259259259259228 -545 550 2.710505431213761e-18 -545 551 0.0002814814814814667 -545 552 -1.370431546021678e-16 -545 1084 0.0005 -545 1085 -0.001040740740740749 -545 1086 0.009259259259259399 -545 1087 -6.505213034913027e-19 -545 1088 -0.002362962962962986 -545 1089 0.03703703703703735 -545 1090 -0.0004999999999999994 -545 1091 -0.001040740740740734 -545 1092 0.009259259259259189 -546 535 -0.01296296296296302 -546 536 -0.01342592592592594 -546 537 -0.155178326474625 -546 538 -0.02407407407407396 -546 539 -5.204170427930421e-18 -546 540 -0.1063100137174141 -546 541 4.510281037539698e-17 -546 542 -0.02870370370370412 -546 543 -0.2040466392318285 -546 544 -1.387778780781446e-16 -546 545 1.144917494144693e-16 -546 546 1.241426611796988 -546 547 0.01296296296296298 -546 548 -0.01342592592592591 -546 549 -0.1551783264746227 -546 550 0.0240740740740741 -546 551 1.561251128379126e-17 -546 552 -0.1063100137174232 -546 1084 -0.01296296296296302 -546 1085 0.0134259259259262 -546 1086 -0.155178326474625 -546 1087 1.023486850826316e-16 -546 1088 0.02870370370370379 -546 1089 -0.2040466392318284 -546 1090 0.01296296296296292 -546 1091 0.01342592592592585 -546 1092 -0.1551783264746216 -547 547 1 -548 548 1 -549 541 -0.01203703703703703 -549 542 -0.01342592592592588 -549 543 -0.05315500685871215 -549 544 -0.01296296296296297 -549 545 0.01342592592592597 -549 546 -0.1551783264746227 -549 547 3.122502256758253e-17 -549 548 -0.02870370370370326 -549 549 0.6207133058984906 -549 550 -3.122502256758253e-17 -549 551 0.028703703703703 -549 552 -0.2040466392318187 -549 553 0.012037037037037 -549 554 -0.01342592592592586 -549 555 -0.05315500685871398 -549 556 0.012962962962963 -549 557 0.01342592592592604 -549 558 -0.1551783264746231 -550 541 -0.0009703703703703694 -550 542 -0.0004999999999999994 -550 543 -0.008333333333333333 -550 544 -0.001659259259259277 -550 545 2.710505431213761e-18 -550 546 -0.03333333333333333 -550 547 -0.0002814814814814534 -550 548 6.505213034913027e-19 -550 550 0.007762962962962983 -550 551 2.710505431213761e-18 -550 552 -6.938893903907228e-18 -550 553 -0.0009703703703703695 -550 554 0.0004999999999999987 -550 555 0.008333333333333335 -550 556 -0.001659259259259308 -550 557 -5.421010862427522e-18 -550 558 0.03333333333333334 -550 1087 -0.0009703703703703738 -550 1088 0.0005000000000000008 -550 1089 -0.008333333333333331 -550 1090 -0.0002814814814814533 -550 1091 5.421010862427522e-19 -550 1092 -1.734723475976807e-18 -550 1093 -0.0009703703703703783 -550 1094 -0.0005000000000000013 -550 1095 0.008333333333333335 -551 541 -0.0004999999999999994 -551 542 -0.001040740740740734 -551 543 -0.009259259259259189 -551 544 2.602085213965211e-18 -551 545 0.0002814814814814666 -551 546 1.040834085586084e-17 -551 547 5.421010862427522e-19 -551 548 -0.002362962962962926 -551 549 -0.03703703703703658 -551 550 2.710505431213761e-18 -551 551 0.008325925925925889 -551 552 3.920475055707584e-16 -551 553 0.0004999999999999986 -551 554 -0.001040740740740725 -551 555 -0.009259259259259123 -551 556 -5.204170427930421e-18 -551 557 0.00028148148148144 -551 558 1.040834085586084e-16 -551 1087 0.0005000000000000007 -551 1088 -0.001040740740740743 -551 1089 0.009259259259259226 -551 1090 6.505213034913027e-19 -551 1091 -0.002362962962962926 -551 1092 0.03703703703703672 -551 1093 -0.0005000000000000014 -551 1094 -0.001040740740740743 -551 1095 0.00925925925925911 -552 541 -0.01296296296296292 -552 542 -0.0134259259259258 -552 543 -0.1551783264746217 -552 544 -0.02407407407407412 -552 545 -3.469446951953614e-18 -552 546 -0.1063100137174232 -552 547 2.602085213965211e-17 -552 548 -0.02870370370370351 -552 549 -0.2040466392318187 -552 550 1.040834085586084e-17 -552 551 -1.561251128379126e-17 -552 552 1.241426611796977 -552 553 0.01296296296296289 -552 554 -0.01342592592592563 -552 555 -0.155178326474621 -552 556 0.0240740740740741 -552 557 -4.510281037539698e-17 -552 558 -0.1063100137174277 -552 1087 -0.01296296296296297 -552 1088 0.01342592592592597 -552 1089 -0.1551783264746226 -552 1090 -2.949029909160572e-17 -552 1091 0.028703703703703 -552 1092 -0.2040466392318186 -552 1093 0.012962962962963 -552 1094 0.01342592592592603 -552 1095 -0.155178326474623 -553 553 1 -554 554 1 -555 547 -0.01203703703703711 -555 548 -0.01342592592592584 -555 549 -0.05315500685871398 -555 550 -0.01296296296296289 -555 551 0.0134259259259258 -555 552 -0.155178326474621 -555 553 5.204170427930421e-18 -555 554 -0.02870370370370365 -555 555 0.6207133058984877 -555 556 3.469446951953614e-18 -555 557 0.02870370370370375 -555 558 -0.2040466392318225 -555 559 0.0120370370370371 -555 560 -0.01342592592592596 -555 561 -0.05315500685870884 -555 562 0.01296296296296289 -555 563 0.01342592592592591 -555 564 -0.1551783264746214 -556 547 -0.0009703703703703783 -556 548 -0.0005000000000000014 -556 549 -0.008333333333333333 -556 550 -0.001659259259259308 -556 551 -5.204170427930421e-18 -556 552 -0.03333333333333333 -556 553 -0.0002814814814814748 -556 554 1.084202172485504e-19 -556 555 -3.469446951953614e-18 -556 556 0.007762962962962967 -556 557 -2.168404344971009e-19 -556 558 -1.387778780781446e-17 -556 559 -0.0009703703703703723 -556 560 0.0005000000000000013 -556 561 0.008333333333333333 -556 562 -0.001659259259259226 -556 563 5.421010862427522e-18 -556 564 0.03333333333333333 -556 1090 -0.0009703703703703695 -556 1091 0.0004999999999999986 -556 1092 -0.008333333333333333 -556 1093 -0.0002814814814814747 -556 1094 1.084202172485504e-19 -556 1095 -3.469446951953614e-18 -556 1096 -0.0009703703703703634 -556 1097 -0.0004999999999999987 -556 1098 0.008333333333333333 -557 547 -0.0005000000000000013 -557 548 -0.001040740740740743 -557 549 -0.009259259259259196 -557 550 -5.421010862427522e-18 -557 551 0.0002814814814814402 -557 552 -1.89084858881472e-16 -557 553 1.084202172485504e-19 -557 554 -0.002362962962962954 -557 555 -0.03703703703703699 -557 556 -2.168404344971009e-19 -557 557 0.008325925925925917 -557 558 -7.979727989493313e-17 -557 559 0.0005000000000000013 -557 560 -0.001040740740740754 -557 561 -0.009259259259259404 -557 562 5.204170427930421e-18 -557 563 0.00028148148148151 -557 564 -2.584737979205443e-16 -557 1090 0.0004999999999999987 -557 1091 -0.001040740740740725 -557 1092 0.009259259259259035 -557 1093 1.084202172485504e-19 -557 1094 -0.002362962962962954 -557 1095 0.0370370370370369 -557 1096 -0.0004999999999999986 -557 1097 -0.001040740740740737 -557 1098 0.009259259259259309 -558 547 -0.01296296296296301 -558 548 -0.01342592592592587 -558 549 -0.1551783264746231 -558 550 -0.02407407407407411 -558 551 -1.561251128379126e-17 -558 552 -0.1063100137174277 -558 553 3.469446951953614e-18 -558 554 -0.0287037037037035 -558 555 -0.2040466392318225 -558 556 1.040834085586084e-17 -558 557 -6.938893903907228e-17 -558 558 1.241426611796977 -558 559 0.012962962962963 -558 560 -0.01342592592592602 -558 561 -0.1551783264746235 -558 562 0.0240740740740741 -558 563 2.081668171172169e-17 -558 564 -0.106310013717416 -558 1090 -0.01296296296296289 -558 1091 0.0134259259259258 -558 1092 -0.1551783264746209 -558 1093 3.469446951953614e-18 -558 1094 0.02870370370370375 -558 1095 -0.2040466392318225 -558 1096 0.01296296296296289 -558 1097 0.01342592592592591 -558 1098 -0.1551783264746213 -559 559 1 -560 560 1 -561 553 -0.012037037037037 -561 554 -0.01342592592592597 -561 555 -0.05315500685870884 -561 556 -0.012962962962963 -561 557 0.01342592592592615 -561 558 -0.1551783264746235 -561 559 -5.204170427930421e-18 -561 560 -0.02870370370370408 -561 561 0.6207133058984966 -561 562 5.204170427930421e-18 -561 563 0.02870370370370393 -561 564 -0.2040466392318305 -561 565 0.012037037037037 -561 566 -0.01342592592592603 -561 567 -0.05315500685870939 -561 568 0.012962962962963 -561 569 0.013425925925926 -561 570 -0.1551783264746244 -562 553 -0.0009703703703703634 -562 554 -0.0004999999999999986 -562 555 -0.008333333333333331 -562 556 -0.001659259259259226 -562 557 5.204170427930421e-18 -562 558 -0.03333333333333333 -562 559 -0.0002814814814815097 -562 560 -2.059984127722458e-18 -562 561 -1.734723475976807e-18 -562 562 0.007762962962962942 -562 563 -7.914675859144182e-18 -562 564 -6.938893903907228e-18 -562 565 -0.0009703703703703701 -562 566 0.0005000000000000007 -562 567 0.008333333333333333 -562 568 -0.001659259259259226 -562 569 2.710505431213761e-18 -562 570 0.03333333333333333 -562 1093 -0.0009703703703703723 -562 1094 0.0005000000000000013 -562 1095 -0.008333333333333331 -562 1096 -0.0002814814814815097 -562 1097 -1.951563910473908e-18 -562 1098 -1.734723475976807e-18 -562 1099 -0.0009703703703703656 -562 1100 -0.0004999999999999994 -562 1101 0.008333333333333333 -563 553 -0.0004999999999999987 -563 554 -0.001040740740740736 -563 555 -0.00925925925925933 -563 556 5.421010862427522e-18 -563 557 0.00028148148148151 -563 558 3.989863994746656e-17 -563 559 -1.843143693225358e-18 -563 560 -0.002362962962963001 -563 561 -0.03703703703703733 -563 562 -8.023096076392733e-18 -563 563 0.008325925925925962 -563 564 1.179611963664229e-16 -563 565 0.0005000000000000007 -563 566 -0.00104074074074075 -563 567 -0.009259259259259373 -563 568 2.602085213965211e-18 -563 569 0.00028148148148151 -563 570 -1.405126015541214e-16 -563 1093 0.0005000000000000013 -563 1094 -0.001040740740740754 -563 1095 0.009259259259259384 -563 1096 -2.059984127722458e-18 -563 1097 -0.002362962962963001 -563 1098 0.03703703703703752 -563 1099 -0.0004999999999999994 -563 1100 -0.001040740740740741 -563 1101 0.009259259259259339 -564 553 -0.01296296296296289 -564 554 -0.01342592592592578 -564 555 -0.1551783264746214 -564 556 -0.02407407407407411 -564 557 -8.673617379884035e-18 -564 558 -0.106310013717416 -564 559 -1.613292832658431e-16 -564 560 -0.02870370370370436 -564 561 -0.2040466392318304 -564 562 1.613292832658431e-16 -564 563 1.318389841742373e-16 -564 564 1.241426611796989 -564 565 0.01296296296296305 -564 566 -0.01342592592592606 -564 567 -0.1551783264746255 -564 568 0.02407407407407395 -564 569 1.561251128379126e-17 -564 570 -0.1063100137174176 -564 1093 -0.012962962962963 -564 1094 0.01342592592592614 -564 1095 -0.1551783264746234 -564 1096 8.673617379884035e-18 -564 1097 0.02870370370370393 -564 1098 -0.2040466392318304 -564 1099 0.01296296296296299 -564 1100 0.013425925925926 -564 1101 -0.1551783264746243 -565 565 1 -566 566 1 -567 559 -0.01203703703703695 -567 560 -0.01342592592592603 -567 561 -0.05315500685870939 -567 562 -0.01296296296296305 -567 563 0.01342592592592612 -567 564 -0.1551783264746255 -567 565 -1.006139616066548e-16 -567 566 -0.02870370370370371 -567 567 0.6207133058984955 -567 568 1.006139616066548e-16 -567 569 0.02870370370370363 -567 570 -0.2040466392318266 -567 571 0.01203703703703705 -567 572 -0.01342592592592588 -567 573 -0.05315500685871186 -567 574 0.01296296296296295 -567 575 0.01342592592592588 -567 576 -0.1551783264746222 -568 559 -0.0009703703703703656 -568 560 -0.0004999999999999994 -568 561 -0.008333333333333331 -568 562 -0.001659259259259226 -568 563 2.49366499671666e-18 -568 564 -0.03333333333333333 -568 565 -0.0002814814814814881 -568 566 -6.505213034913027e-19 -568 568 0.007762962962962958 -568 569 -2.49366499671666e-18 -568 570 -6.938893903907228e-18 -568 571 -0.0009703703703703715 -568 572 0.0005 -568 573 0.008333333333333333 -568 574 -0.001659259259259277 -568 576 0.03333333333333334 -568 1096 -0.0009703703703703701 -568 1097 0.0005000000000000007 -568 1098 -0.008333333333333331 -568 1099 -0.000281481481481488 -568 1100 -6.505213034913027e-19 -568 1101 -1.734723475976807e-18 -568 1102 -0.0009703703703703715 -568 1103 -0.0005 -568 1104 0.008333333333333335 -569 559 -0.0004999999999999995 -569 560 -0.001040740740740741 -569 561 -0.009259259259259339 -569 562 2.818925648462312e-18 -569 563 0.00028148148148151 -569 564 6.938893903907228e-18 -569 565 -6.505213034913027e-19 -569 566 -0.002362962962962972 -569 567 -0.03703703703703705 -569 568 -2.602085213965211e-18 -569 569 0.008325925925925935 -569 570 3.122502256758253e-17 -569 571 0.0005000000000000001 -569 572 -0.001040740740740738 -569 573 -0.009259259259259196 -569 574 -1.084202172485504e-19 -569 575 0.0002814814814814667 -569 576 -2.255140518769849e-17 -569 1096 0.0005000000000000007 -569 1097 -0.00104074074074075 -569 1098 0.009259259259259377 -569 1099 -6.505213034913027e-19 -569 1100 -0.002362962962962972 -569 1101 0.0370370370370372 -569 1102 -0.0005 -569 1103 -0.001040740740740738 -569 1104 0.009259259259259219 -570 559 -0.012962962962963 -570 560 -0.01342592592592594 -570 561 -0.1551783264746244 -570 562 -0.02407407407407396 -570 563 -1.734723475976807e-18 -570 564 -0.1063100137174177 -570 565 4.683753385137379e-17 -570 566 -0.02870370370370393 -570 567 -0.2040466392318266 -570 568 -1.457167719820518e-16 -570 569 1.283695372222837e-16 -570 570 1.241426611796988 -570 571 0.01296296296296295 -570 572 -0.01342592592592589 -570 573 -0.1551783264746222 -570 574 0.0240740740740741 -570 575 1.040834085586084e-17 -570 576 -0.1063100137174232 -570 1096 -0.01296296296296305 -570 1097 0.01342592592592612 -570 1098 -0.1551783264746254 -570 1099 1.040834085586084e-16 -570 1100 0.02870370370370363 -570 1101 -0.2040466392318265 -570 1102 0.01296296296296295 -570 1103 0.01342592592592588 -570 1104 -0.1551783264746221 -571 571 1 -572 572 1 -573 565 -0.01203703703703705 -573 566 -0.01342592592592588 -573 567 -0.05315500685871185 -573 568 -0.01296296296296295 -573 569 0.01342592592592588 -573 570 -0.1551783264746222 -573 571 3.469446951953614e-17 -573 572 -0.02870370370370372 -573 573 0.6207133058984902 -573 574 -2.949029909160572e-17 -573 575 0.0287037037037037 -573 576 -0.2040466392318245 -573 577 0.01203703703703702 -573 578 -0.01342592592592595 -573 579 -0.05315500685870862 -573 580 0.01296296296296298 -573 581 0.01342592592592597 -573 582 -0.1551783264746229 -574 565 -0.0009703703703703715 -574 566 -0.0005 -574 567 -0.008333333333333333 -574 568 -0.001659259259259277 -574 569 -1.084202172485504e-19 -574 570 -0.03333333333333333 -574 571 -0.0002814814814814856 -574 572 6.505213034913027e-19 -574 574 0.007762962962962959 -574 575 2.710505431213761e-18 -574 576 -1.040834085586084e-17 -574 577 -0.0009703703703703662 -574 578 0.0004999999999999994 -574 579 0.008333333333333333 -574 580 -0.001659259259259232 -574 581 -2.602085213965211e-18 -574 582 0.03333333333333333 -574 1099 -0.0009703703703703715 -574 1100 0.0005000000000000001 -574 1101 -0.008333333333333331 -574 1102 -0.0002814814814814856 -574 1103 6.505213034913027e-19 -574 1104 -3.469446951953614e-18 -574 1105 -0.0009703703703703707 -574 1106 -0.0005000000000000008 -574 1107 0.008333333333333333 -575 565 -0.0005 -575 566 -0.001040740740740738 -575 567 -0.009259259259259198 -575 569 0.0002814814814814667 -575 570 -2.081668171172169e-17 -575 571 6.505213034913027e-19 -575 572 -0.002362962962962969 -575 573 -0.03703703703703702 -575 574 2.710505431213761e-18 -575 575 0.008325925925925933 -575 576 -1.040834085586084e-16 -575 577 0.0004999999999999994 -575 578 -0.00104074074074074 -575 579 -0.009259259259259287 -575 580 -2.602085213965211e-18 -575 581 0.0002814814814815048 -575 582 7.28583859910259e-17 -575 1099 0.0005 -575 1100 -0.001040740740740738 -575 1101 0.009259259259259219 -575 1102 7.589415207398531e-19 -575 1103 -0.002362962962962969 -575 1104 0.03703703703703717 -575 1105 -0.0005000000000000007 -575 1106 -0.001040740740740749 -575 1107 0.009259259259259391 -576 565 -0.01296296296296295 -576 566 -0.01342592592592589 -576 567 -0.1551783264746222 -576 568 -0.02407407407407412 -576 569 1.040834085586084e-17 -576 570 -0.1063100137174232 -576 571 2.949029909160572e-17 -576 572 -0.0287037037037039 -576 573 -0.2040466392318245 -576 574 1.561251128379126e-17 -576 575 1.630640067418199e-16 -576 576 1.241426611796978 -576 577 0.01296296296296292 -576 578 -0.01342592592592594 -576 579 -0.1551783264746219 -576 580 0.0240740740740741 -576 581 2.081668171172169e-17 -576 582 -0.1063100137174169 -576 1099 -0.01296296296296295 -576 1100 0.01342592592592588 -576 1101 -0.1551783264746221 -576 1102 -2.949029909160572e-17 -576 1103 0.0287037037037037 -576 1104 -0.2040466392318244 -576 1105 0.01296296296296297 -576 1106 0.01342592592592597 -576 1107 -0.1551783264746228 -577 577 1 -578 578 1 -579 571 -0.01203703703703708 -579 572 -0.01342592592592594 -579 573 -0.05315500685870862 -579 574 -0.01296296296296292 -579 575 0.01342592592592585 -579 576 -0.1551783264746219 -579 577 1.734723475976807e-18 -579 578 -0.02870370370370372 -579 579 0.6207133058984888 -579 580 1.734723475976807e-18 -579 581 0.02870370370370384 -579 582 -0.2040466392318245 -579 583 0.01203703703703708 -579 584 -0.01342592592592588 -579 585 -0.05315500685871216 -579 586 0.01296296296296292 -579 587 0.01342592592592585 -579 588 -0.1551783264746217 -580 571 -0.0009703703703703707 -580 572 -0.0005000000000000007 -580 573 -0.008333333333333333 -580 574 -0.001659259259259232 -580 575 -2.710505431213761e-18 -580 576 -0.03333333333333333 -580 577 -0.0002814814814814855 -580 580 0.007762962962962959 -580 582 -6.938893903907228e-18 -580 583 -0.0009703703703703737 -580 584 0.0005000000000000007 -580 585 0.008333333333333333 -580 586 -0.001659259259259277 -580 587 2.710505431213761e-18 -580 588 0.03333333333333334 -580 1102 -0.0009703703703703662 -580 1103 0.0004999999999999994 -580 1104 -0.008333333333333331 -580 1105 -0.0002814814814814855 -580 1107 -1.734723475976807e-18 -580 1108 -0.0009703703703703695 -580 1109 -0.0004999999999999994 -580 1110 0.008333333333333335 -581 571 -0.0005000000000000008 -581 572 -0.001040740740740749 -581 573 -0.009259259259259325 -581 574 -2.602085213965211e-18 -581 575 0.0002814814814815048 -581 576 -7.459310946700271e-17 -581 578 -0.002362962962962969 -581 579 -0.03703703703703706 -581 581 0.008325925925925929 -581 582 -2.775557561562891e-16 -581 583 0.0005000000000000008 -581 584 -0.001040740740740743 -581 585 -0.009259259259259228 -581 586 2.710505431213761e-18 -581 587 0.0002814814814814667 -581 588 -1.370431546021678e-16 -581 1102 0.0004999999999999993 -581 1103 -0.00104074074074074 -581 1104 0.009259259259259354 -581 1106 -0.002362962962962969 -581 1107 0.03703703703703712 -581 1108 -0.0004999999999999994 -581 1109 -0.001040740740740734 -581 1110 0.009259259259259189 -582 571 -0.01296296296296297 -582 572 -0.01342592592592606 -582 573 -0.1551783264746229 -582 574 -0.02407407407407411 -582 575 4.163336342344337e-17 -582 576 -0.1063100137174169 -582 577 -1.734723475976807e-18 -582 578 -0.02870370370370376 -582 579 -0.2040466392318245 -582 580 5.204170427930421e-18 -582 581 1.387778780781446e-16 -582 582 1.241426611796978 -582 583 0.01296296296296298 -582 584 -0.01342592592592591 -582 585 -0.1551783264746227 -582 586 0.0240740740740741 -582 587 1.561251128379126e-17 -582 588 -0.1063100137174232 -582 1102 -0.01296296296296292 -582 1103 0.01342592592592585 -582 1104 -0.1551783264746218 -582 1105 1.734723475976807e-18 -582 1106 0.02870370370370384 -582 1107 -0.2040466392318244 -582 1108 0.01296296296296292 -582 1109 0.01342592592592585 -582 1110 -0.1551783264746216 -583 583 1 -584 584 1 -585 577 -0.01203703703703703 -585 578 -0.01342592592592588 -585 579 -0.05315500685871215 -585 580 -0.01296296296296297 -585 581 0.01342592592592597 -585 582 -0.1551783264746227 -585 583 -2.42861286636753e-17 -585 584 -0.02870370370370335 -585 585 0.6207133058984902 -585 586 2.42861286636753e-17 -585 587 0.02870370370370326 -585 588 -0.2040466392318206 -585 589 0.01203703703703705 -585 590 -0.01342592592592586 -585 591 -0.05315500685871255 -585 592 0.01296296296296295 -585 593 0.01342592592592586 -585 594 -0.1551783264746222 -586 577 -0.0009703703703703694 -586 578 -0.0004999999999999994 -586 579 -0.008333333333333333 -586 580 -0.001659259259259277 -586 581 2.710505431213761e-18 -586 582 -0.03333333333333333 -586 583 -0.0002814814814814639 -586 584 -6.505213034913027e-19 -586 586 0.007762962962962975 -586 587 -2.710505431213761e-18 -586 588 -6.938893903907228e-18 -586 589 -0.0009703703703703721 -586 590 0.0005 -586 591 0.008333333333333335 -586 592 -0.001659259259259283 -586 594 0.03333333333333334 -586 1105 -0.0009703703703703738 -586 1106 0.0005000000000000008 -586 1107 -0.008333333333333331 -586 1108 -0.0002814814814814639 -586 1109 -7.589415207398531e-19 -586 1110 -3.469446951953614e-18 -586 1111 -0.0009703703703703721 -586 1112 -0.0005 -586 1113 0.008333333333333335 -587 577 -0.0004999999999999994 -587 578 -0.001040740740740734 -587 579 -0.009259259259259189 -587 580 2.602085213965211e-18 -587 581 0.0002814814814814666 -587 582 1.040834085586084e-17 -587 583 -7.589415207398531e-19 -587 584 -0.00236296296296294 -587 585 -0.0370370370370367 -587 586 -2.602085213965211e-18 -587 587 0.008325925925925903 -587 588 -1.040834085586084e-17 -587 589 0.0005000000000000001 -587 590 -0.001040740740740737 -587 591 -0.009259259259259169 -587 593 0.0002814814814814615 -587 594 -4.336808689942018e-17 -587 1105 0.0005000000000000007 -587 1106 -0.001040740740740743 -587 1107 0.009259259259259226 -587 1108 -7.589415207398531e-19 -587 1109 -0.00236296296296294 -587 1110 0.03703703703703689 -587 1111 -0.0005000000000000001 -587 1112 -0.001040740740740737 -587 1113 0.009259259259259212 -588 577 -0.01296296296296292 -588 578 -0.0134259259259258 -588 579 -0.1551783264746217 -588 580 -0.02407407407407412 -588 581 -3.469446951953614e-18 -588 582 -0.1063100137174232 -588 583 -2.949029909160572e-17 -588 584 -0.02870370370370361 -588 585 -0.2040466392318206 -588 586 1.040834085586084e-17 -588 587 1.734723475976807e-16 -588 588 1.241426611796977 -588 589 0.01296296296296295 -588 590 -0.01342592592592588 -588 591 -0.1551783264746222 -588 592 0.0240740740740741 -588 593 2.255140518769849e-17 -588 594 -0.1063100137174241 -588 1105 -0.01296296296296297 -588 1106 0.01342592592592597 -588 1107 -0.1551783264746226 -588 1108 2.602085213965211e-17 -588 1109 0.02870370370370326 -588 1110 -0.2040466392318205 -588 1111 0.01296296296296295 -588 1112 0.01342592592592586 -588 1113 -0.1551783264746221 -589 589 1 -590 590 1 -591 583 -0.01203703703703705 -591 584 -0.01342592592592586 -591 585 -0.05315500685871255 -591 586 -0.01296296296296295 -591 587 0.01342592592592586 -591 588 -0.1551783264746222 -591 589 2.602085213965211e-17 -591 590 -0.02870370370370409 -591 591 0.6207133058984948 -591 592 -1.561251128379126e-17 -591 593 0.02870370370370414 -591 594 -0.2040466392318305 -591 595 0.01203703703703703 -591 596 -0.01342592592592612 -591 597 -0.0531550068587054 -591 598 0.01296296296296297 -591 599 0.01342592592592608 -591 600 -0.1551783264746242 -592 583 -0.0009703703703703722 -592 584 -0.0005000000000000001 -592 585 -0.008333333333333333 -592 586 -0.001659259259259283 -592 588 -0.03333333333333333 -592 589 -0.0002814814814815099 -592 590 -1.301042606982605e-18 -592 591 -1.734723475976807e-18 -592 592 0.007762962962962945 -592 593 -5.312590645178972e-18 -592 594 -1.387778780781446e-17 -592 595 -0.0009703703703703684 -592 596 0.0005000000000000014 -592 597 0.008333333333333335 -592 598 -0.001659259259259169 -592 599 5.312590645178972e-18 -592 600 0.03333333333333334 -592 1108 -0.0009703703703703722 -592 1109 0.0005000000000000001 -592 1110 -0.008333333333333331 -592 1111 -0.0002814814814815099 -592 1112 -1.409462824231156e-18 -592 1113 -1.734723475976807e-18 -592 1114 -0.0009703703703703595 -592 1115 -0.0004999999999999987 -592 1116 0.008333333333333335 -593 583 -0.0005 -593 584 -0.001040740740740737 -593 585 -0.00925925925925917 -593 586 -1.084202172485504e-19 -593 587 0.0002814814814814615 -593 588 -4.163336342344337e-17 -593 589 -1.409462824231156e-18 -593 590 -0.002362962962963002 -593 591 -0.0370370370370374 -593 592 -5.312590645178972e-18 -593 593 0.008325925925925964 -593 594 -1.52655665885959e-16 -593 595 0.0005000000000000013 -593 596 -0.001040740740740762 -593 597 -0.009259259259259583 -593 598 5.421010862427522e-18 -593 599 0.0002814814814815584 -593 600 -2.324529457808922e-16 -593 1108 0.0005000000000000001 -593 1109 -0.001040740740740737 -593 1110 0.009259259259259212 -593 1111 -1.192622389734055e-18 -593 1112 -0.002362962962963002 -593 1113 0.03703703703703745 -593 1114 -0.0004999999999999987 -593 1115 -0.001040740740740745 -593 1116 0.009259259259259467 -594 583 -0.01296296296296295 -594 584 -0.01342592592592588 -594 585 -0.1551783264746222 -594 586 -0.02407407407407411 -594 587 2.255140518769849e-17 -594 588 -0.1063100137174241 -594 589 -1.301042606982605e-16 -594 590 -0.02870370370370415 -594 591 -0.2040466392318305 -594 592 1.630640067418199e-16 -594 593 1.023486850826316e-16 -594 594 1.241426611796989 -594 595 0.01296296296296308 -594 596 -0.01342592592592617 -594 597 -0.1551783264746263 -594 598 0.02407407407407395 -594 599 8.673617379884035e-18 -594 600 -0.1063100137174096 -594 1108 -0.01296296296296295 -594 1109 0.01342592592592586 -594 1110 -0.1551783264746221 -594 1111 -1.734723475976807e-17 -594 1112 0.02870370370370414 -594 1113 -0.2040466392318304 -594 1114 0.01296296296296296 -594 1115 0.01342592592592607 -594 1116 -0.1551783264746242 -595 595 1 -596 596 1 -597 589 -0.01203703703703692 -597 590 -0.01342592592592614 -597 591 -0.05315500685870542 -597 592 -0.01296296296296308 -597 593 0.01342592592592631 -597 594 -0.1551783264746263 -597 595 -1.838806884535416e-16 -597 596 -0.02870370370370408 -597 597 0.6207133058984964 -597 598 1.873501354054952e-16 -597 599 0.02870370370370395 -597 600 -0.2040466392318305 -597 601 0.01203703703703711 -597 602 -0.01342592592592586 -597 603 -0.05315500685871315 -597 604 0.01296296296296289 -597 605 0.01342592592592581 -597 606 -0.1551783264746211 -598 589 -0.0009703703703703595 -598 590 -0.0004999999999999987 -598 591 -0.008333333333333333 -598 592 -0.001659259259259169 -598 593 5.312590645178972e-18 -598 594 -0.03333333333333333 -598 595 -0.0002814814814815097 -598 596 -2.602085213965211e-18 -598 597 -1.734723475976807e-18 -598 598 0.007762962962962944 -598 599 -1.051676107310939e-17 -598 600 -1.040834085586084e-17 -598 601 -0.0009703703703703766 -598 602 0.0005000000000000013 -598 603 0.008333333333333335 -598 604 -0.001659259259259283 -598 605 5.204170427930421e-18 -598 606 0.03333333333333334 -598 1111 -0.0009703703703703684 -598 1112 0.0005000000000000014 -598 1113 -0.008333333333333333 -598 1114 -0.0002814814814815095 -598 1115 -2.818925648462312e-18 -598 1116 -3.469446951953614e-18 -598 1117 -0.0009703703703703678 -598 1118 -0.0004999999999999986 -598 1119 0.008333333333333335 -599 589 -0.0004999999999999987 -599 590 -0.001040740740740745 -599 591 -0.009259259259259509 -599 592 5.312590645178972e-18 -599 593 0.0002814814814815584 -599 594 6.071532165918825e-17 -599 595 -2.602085213965211e-18 -599 596 -0.002362962962963001 -599 597 -0.03703703703703734 -599 598 -1.062518129035794e-17 -599 599 0.008325925925925964 -599 600 9.020562075079397e-17 -599 601 0.0005000000000000014 -599 602 -0.001040740740740746 -599 603 -0.009259259259259228 -599 604 5.421010862427522e-18 -599 605 0.0002814814814814616 -599 606 -2.758210326803123e-16 -599 1111 0.0005000000000000013 -599 1112 -0.001040740740740762 -599 1113 0.00925925925925954 -599 1114 -2.710505431213761e-18 -599 1115 -0.002362962962963001 -599 1116 0.03703703703703751 -599 1117 -0.0004999999999999988 -599 1118 -0.001040740740740729 -599 1119 0.009259259259259153 -600 589 -0.01296296296296297 -600 590 -0.01342592592592594 -600 591 -0.1551783264746242 -600 592 -0.02407407407407396 -600 593 -2.42861286636753e-17 -600 594 -0.1063100137174096 -600 595 -3.642919299551295e-17 -600 596 -0.02870370370370433 -600 597 -0.2040466392318305 -600 598 -1.387778780781446e-16 -600 599 1.196959198423997e-16 -600 600 1.241426611796989 -600 601 0.012962962962963 -600 602 -0.01342592592592593 -600 603 -0.1551783264746232 -600 604 0.0240740740740741 -600 605 2.949029909160572e-17 -600 606 -0.1063100137174241 -600 1111 -0.01296296296296308 -600 1112 0.01342592592592631 -600 1113 -0.1551783264746262 -600 1114 1.856154119295184e-16 -600 1115 0.02870370370370395 -600 1116 -0.2040466392318304 -600 1117 0.01296296296296289 -600 1118 0.01342592592592581 -600 1119 -0.1551783264746211 -601 601 1 -602 602 1 -603 595 -0.012037037037037 -603 596 -0.01342592592592588 -603 597 -0.05315500685871315 -603 598 -0.01296296296296301 -603 599 0.01342592592592605 -603 600 -0.1551783264746232 -603 601 -5.030698080332741e-17 -603 602 -0.02870370370370334 -603 603 0.6207133058984911 -603 604 5.724587470723463e-17 -603 605 0.02870370370370317 -603 606 -0.2040466392318206 -603 607 0.01203703703703705 -603 608 -0.01342592592592588 -603 609 -0.05315500685871186 -603 610 0.01296296296296295 -603 611 0.01342592592592588 -603 612 -0.1551783264746222 -604 595 -0.0009703703703703678 -604 596 -0.0004999999999999988 -604 597 -0.008333333333333333 -604 598 -0.001659259259259283 -604 599 5.312590645178972e-18 -604 600 -0.03333333333333333 -604 601 -0.0002814814814814639 -604 602 -1.192622389734055e-18 -604 603 -1.734723475976807e-18 -604 604 0.007762962962962976 -604 605 -5.312590645178972e-18 -604 606 -1.387778780781446e-17 -604 607 -0.0009703703703703715 -604 608 0.0005 -604 609 0.008333333333333333 -604 610 -0.001659259259259277 -604 612 0.03333333333333334 -604 1114 -0.0009703703703703766 -604 1115 0.0005000000000000014 -604 1116 -0.008333333333333331 -604 1117 -0.0002814814814814639 -604 1118 -1.409462824231156e-18 -604 1119 -3.469446951953614e-18 -604 1120 -0.0009703703703703715 -604 1121 -0.0005 -604 1122 0.008333333333333335 -605 595 -0.0004999999999999987 -605 596 -0.001040740740740729 -605 597 -0.009259259259259155 -605 598 5.204170427930421e-18 -605 599 0.0002814814814814615 -605 600 2.081668171172169e-17 -605 601 -1.409462824231156e-18 -605 602 -0.00236296296296294 -605 603 -0.03703703703703667 -605 604 -5.421010862427522e-18 -605 605 0.008325925925925903 -605 606 1.040834085586084e-16 -605 607 0.0005000000000000001 -605 608 -0.001040740740740738 -605 609 -0.009259259259259196 -605 610 -1.084202172485504e-19 -605 611 0.0002814814814814667 -605 612 -2.255140518769849e-17 -605 1114 0.0005000000000000014 -605 1115 -0.001040740740740746 -605 1116 0.009259259259259226 -605 1117 -1.192622389734055e-18 -605 1118 -0.00236296296296294 -605 1119 0.03703703703703692 -605 1120 -0.0005 -605 1121 -0.001040740740740738 -605 1122 0.009259259259259219 -606 595 -0.01296296296296289 -606 596 -0.0134259259259257 -606 597 -0.1551783264746211 -606 598 -0.02407407407407412 -606 600 -0.1063100137174241 -606 601 -5.724587470723463e-17 -606 602 -0.0287037037037037 -606 603 -0.2040466392318206 -606 604 1.734723475976807e-17 -606 605 1.804112415015879e-16 -606 606 1.241426611796977 -606 607 0.01296296296296295 -606 608 -0.01342592592592589 -606 609 -0.1551783264746222 -606 610 0.0240740740740741 -606 611 1.040834085586084e-17 -606 612 -0.1063100137174232 -606 1114 -0.012962962962963 -606 1115 0.01342592592592605 -606 1116 -0.1551783264746231 -606 1117 5.898059818321144e-17 -606 1118 0.02870370370370317 -606 1119 -0.2040466392318205 -606 1120 0.01296296296296295 -606 1121 0.01342592592592588 -606 1122 -0.1551783264746221 -607 607 1 -608 608 1 -609 601 -0.01203703703703705 -609 602 -0.01342592592592588 -609 603 -0.05315500685871185 -609 604 -0.01296296296296295 -609 605 0.01342592592592588 -609 606 -0.1551783264746222 -609 607 3.469446951953614e-17 -609 608 -0.02870370370370364 -609 609 0.6207133058984888 -609 610 -2.949029909160572e-17 -609 611 0.02870370370370361 -609 612 -0.2040466392318226 -609 613 0.01203703703703702 -609 614 -0.01342592592592593 -609 615 -0.05315500685870947 -609 616 0.01296296296296298 -609 617 0.01342592592592595 -609 618 -0.1551783264746228 -610 601 -0.0009703703703703715 -610 602 -0.0005 -610 603 -0.008333333333333333 -610 604 -0.001659259259259277 -610 605 -1.084202172485504e-19 -610 606 -0.03333333333333333 -610 607 -0.0002814814814814747 -610 608 6.505213034913027e-19 -610 610 0.007762962962962967 -610 611 2.818925648462312e-18 -610 612 -1.040834085586084e-17 -610 613 -0.000970370370370368 -610 614 0.0004999999999999994 -610 615 0.008333333333333333 -610 616 -0.001659259259259257 -610 617 -2.710505431213761e-18 -610 618 0.03333333333333334 -610 1117 -0.0009703703703703715 -610 1118 0.0005000000000000001 -610 1119 -0.008333333333333331 -610 1120 -0.0002814814814814747 -610 1121 5.421010862427522e-19 -610 1122 -3.469446951953614e-18 -610 1123 -0.0009703703703703724 -610 1124 -0.0005000000000000007 -610 1125 0.008333333333333333 -611 601 -0.0005 -611 602 -0.001040740740740738 -611 603 -0.009259259259259198 -611 605 0.0002814814814814667 -611 606 -2.081668171172169e-17 -611 607 5.421010862427522e-19 -611 608 -0.002362962962962954 -611 609 -0.03703703703703695 -611 610 2.710505431213761e-18 -611 611 0.008325925925925917 -611 612 6.938893903907228e-17 -611 613 0.0004999999999999994 -611 614 -0.001040740740740737 -611 615 -0.009259259259259255 -611 616 -2.710505431213761e-18 -611 617 0.0002814814814814829 -611 618 1.595945597898663e-16 -611 1117 0.0005 -611 1118 -0.001040740740740738 -611 1119 0.009259259259259219 -611 1120 7.589415207398531e-19 -611 1121 -0.002362962962962954 -611 1122 0.03703703703703692 -611 1123 -0.0005000000000000007 -611 1124 -0.001040740740740746 -611 1125 0.009259259259259271 -612 601 -0.01296296296296295 -612 602 -0.01342592592592589 -612 603 -0.1551783264746222 -612 604 -0.02407407407407412 -612 605 1.040834085586084e-17 -612 606 -0.1063100137174232 -612 607 2.949029909160572e-17 -612 608 -0.02870370370370361 -612 609 -0.2040466392318225 -612 610 1.387778780781446e-17 -612 611 -4.85722573273506e-17 -612 612 1.241426611796977 -612 613 0.01296296296296292 -612 614 -0.01342592592592588 -612 615 -0.1551783264746218 -612 616 0.0240740740740741 -612 617 -2.775557561562891e-17 -612 618 -0.1063100137174205 -612 1117 -0.01296296296296295 -612 1118 0.01342592592592588 -612 1119 -0.1551783264746221 -612 1120 -2.775557561562891e-17 -612 1121 0.02870370370370362 -612 1122 -0.2040466392318224 -612 1123 0.01296296296296297 -612 1124 0.01342592592592595 -612 1125 -0.1551783264746227 -613 613 1 -614 614 1 -615 607 -0.01203703703703708 -615 608 -0.01342592592592592 -615 609 -0.05315500685870948 -615 610 -0.01296296296296292 -615 611 0.01342592592592583 -615 612 -0.1551783264746218 -615 613 7.806255641895632e-17 -615 614 -0.02870370370370395 -615 615 0.6207133058984931 -615 616 -7.632783294297951e-17 -615 617 0.02870370370370406 -615 618 -0.2040466392318281 -615 619 0.012037037037037 -615 620 -0.01342592592592603 -615 621 -0.05315500685870939 -615 622 0.012962962962963 -615 623 0.013425925925926 -615 624 -0.1551783264746244 -616 607 -0.0009703703703703725 -616 608 -0.0005000000000000007 -616 609 -0.008333333333333333 -616 610 -0.001659259259259257 -616 611 -2.710505431213761e-18 -616 612 -0.03333333333333333 -616 613 -0.0002814814814814964 -616 615 -1.734723475976807e-18 -616 616 0.007762962962962952 -616 618 -1.040834085586084e-17 -616 619 -0.0009703703703703701 -616 620 0.0005000000000000007 -616 621 0.008333333333333333 -616 622 -0.001659259259259226 -616 623 2.710505431213761e-18 -616 624 0.03333333333333333 -616 1120 -0.0009703703703703681 -616 1121 0.0004999999999999994 -616 1122 -0.008333333333333331 -616 1123 -0.0002814814814814964 -616 1125 -1.734723475976807e-18 -616 1126 -0.0009703703703703656 -616 1127 -0.0004999999999999994 -616 1128 0.008333333333333333 -617 607 -0.0005000000000000007 -617 608 -0.001040740740740746 -617 609 -0.009259259259259293 -617 610 -2.602085213965211e-18 -617 611 0.000281481481481483 -617 612 1.214306433183765e-17 -617 613 1.084202172485504e-19 -617 614 -0.002362962962962983 -617 615 -0.0370370370370373 -617 616 -1.084202172485504e-19 -617 617 0.008325925925925943 -617 618 -1.040834085586084e-16 -617 619 0.0005000000000000007 -617 620 -0.00104074074074075 -617 621 -0.009259259259259373 -617 622 2.602085213965211e-18 -617 623 0.00028148148148151 -617 624 -1.405126015541214e-16 -617 1120 0.0004999999999999993 -617 1121 -0.001040740740740736 -617 1122 0.009259259259259234 -617 1124 -0.002362962962962983 -617 1125 0.03703703703703719 -617 1126 -0.0004999999999999994 -617 1127 -0.001040740740740741 -617 1128 0.009259259259259339 -618 607 -0.01296296296296297 -618 608 -0.013425925925926 -618 609 -0.1551783264746228 -618 610 -0.02407407407407411 -618 611 -5.204170427930421e-18 -618 612 -0.1063100137174205 -618 613 -7.806255641895632e-17 -618 614 -0.02870370370370377 -618 615 -0.2040466392318281 -618 616 1.595945597898663e-16 -618 617 -6.591949208711867e-17 -618 618 1.241426611796988 -618 619 0.01296296296296305 -618 620 -0.01342592592592606 -618 621 -0.1551783264746255 -618 622 0.02407407407407395 -618 623 1.561251128379126e-17 -618 624 -0.1063100137174176 -618 1120 -0.01296296296296292 -618 1121 0.01342592592592583 -618 1122 -0.1551783264746217 -618 1123 -7.28583859910259e-17 -618 1124 0.02870370370370406 -618 1125 -0.204046639231828 -618 1126 0.01296296296296299 -618 1127 0.013425925925926 -618 1128 -0.1551783264746243 -619 619 1 -620 620 1 -621 613 -0.01203703703703695 -621 614 -0.01342592592592603 -621 615 -0.05315500685870939 -621 616 -0.01296296296296305 -621 617 0.01342592592592612 -621 618 -0.1551783264746255 -621 619 -1.006139616066548e-16 -621 620 -0.02870370370370371 -621 621 0.6207133058984955 -621 622 1.006139616066548e-16 -621 623 0.02870370370370363 -621 624 -0.2040466392318266 -621 625 0.01203703703703705 -621 626 -0.01342592592592588 -621 627 -0.05315500685871186 -621 628 0.01296296296296295 -621 629 0.01342592592592588 -621 630 -0.1551783264746222 -622 613 -0.0009703703703703656 -622 614 -0.0004999999999999994 -622 615 -0.008333333333333331 -622 616 -0.001659259259259226 -622 617 2.49366499671666e-18 -622 618 -0.03333333333333333 -622 619 -0.0002814814814814881 -622 620 -6.505213034913027e-19 -622 622 0.007762962962962958 -622 623 -2.49366499671666e-18 -622 624 -6.938893903907228e-18 -622 625 -0.0009703703703703715 -622 626 0.0005 -622 627 0.008333333333333333 -622 628 -0.001659259259259277 -622 630 0.03333333333333334 -622 1123 -0.0009703703703703701 -622 1124 0.0005000000000000007 -622 1125 -0.008333333333333331 -622 1126 -0.000281481481481488 -622 1127 -6.505213034913027e-19 -622 1128 -1.734723475976807e-18 -622 1129 -0.0009703703703703715 -622 1130 -0.0005 -622 1131 0.008333333333333335 -623 613 -0.0004999999999999995 -623 614 -0.001040740740740741 -623 615 -0.009259259259259339 -623 616 2.818925648462312e-18 -623 617 0.00028148148148151 -623 618 6.938893903907228e-18 -623 619 -6.505213034913027e-19 -623 620 -0.002362962962962972 -623 621 -0.03703703703703705 -623 622 -2.602085213965211e-18 -623 623 0.008325925925925935 -623 624 3.122502256758253e-17 -623 625 0.0005000000000000001 -623 626 -0.001040740740740738 -623 627 -0.009259259259259196 -623 628 -1.084202172485504e-19 -623 629 0.0002814814814814667 -623 630 -2.255140518769849e-17 -623 1123 0.0005000000000000007 -623 1124 -0.00104074074074075 -623 1125 0.009259259259259377 -623 1126 -6.505213034913027e-19 -623 1127 -0.002362962962962972 -623 1128 0.0370370370370372 -623 1129 -0.0005 -623 1130 -0.001040740740740738 -623 1131 0.009259259259259219 -624 613 -0.012962962962963 -624 614 -0.01342592592592594 -624 615 -0.1551783264746244 -624 616 -0.02407407407407396 -624 617 -1.734723475976807e-18 -624 618 -0.1063100137174177 -624 619 4.683753385137379e-17 -624 620 -0.02870370370370393 -624 621 -0.2040466392318266 -624 622 -1.457167719820518e-16 -624 623 1.283695372222837e-16 -624 624 1.241426611796988 -624 625 0.01296296296296295 -624 626 -0.01342592592592589 -624 627 -0.1551783264746222 -624 628 0.0240740740740741 -624 629 1.040834085586084e-17 -624 630 -0.1063100137174232 -624 1123 -0.01296296296296305 -624 1124 0.01342592592592612 -624 1125 -0.1551783264746254 -624 1126 1.040834085586084e-16 -624 1127 0.02870370370370363 -624 1128 -0.2040466392318265 -624 1129 0.01296296296296295 -624 1130 0.01342592592592588 -624 1131 -0.1551783264746221 -625 625 1 -626 626 1 -627 619 -0.01203703703703705 -627 620 -0.01342592592592588 -627 621 -0.05315500685871185 -627 622 -0.01296296296296295 -627 623 0.01342592592592588 -627 624 -0.1551783264746222 -627 625 3.469446951953614e-17 -627 626 -0.02870370370370379 -627 627 0.6207133058984899 -627 628 -2.775557561562891e-17 -627 629 0.02870370370370377 -627 630 -0.204046639231825 -627 631 0.01203703703703702 -627 632 -0.01342592592592596 -627 633 -0.05315500685870794 -627 634 0.01296296296296297 -627 635 0.01342592592592599 -627 636 -0.1551783264746229 -628 619 -0.0009703703703703715 -628 620 -0.0005 -628 621 -0.008333333333333333 -628 622 -0.001659259259259277 -628 623 -1.084202172485504e-19 -628 624 -0.03333333333333333 -628 625 -0.0002814814814814882 -628 626 7.589415207398531e-19 -628 627 -1.734723475976807e-18 -628 628 0.007762962962962959 -628 629 2.710505431213761e-18 -628 630 -1.040834085586084e-17 -628 631 -0.0009703703703703656 -628 632 0.0004999999999999993 -628 633 0.008333333333333333 -628 634 -0.001659259259259226 -628 635 -2.602085213965211e-18 -628 636 0.03333333333333333 -628 1126 -0.0009703703703703715 -628 1127 0.0005000000000000001 -628 1128 -0.008333333333333331 -628 1129 -0.0002814814814814882 -628 1130 5.421010862427522e-19 -628 1131 -3.469446951953614e-18 -628 1132 -0.0009703703703703701 -628 1133 -0.0005000000000000007 -628 1134 0.008333333333333333 -629 619 -0.0005 -629 620 -0.001040740740740738 -629 621 -0.009259259259259198 -629 623 0.0002814814814814667 -629 624 -2.081668171172169e-17 -629 625 6.505213034913027e-19 -629 626 -0.002362962962962972 -629 627 -0.03703703703703708 -629 628 2.710505431213761e-18 -629 629 0.008325925925925935 -629 630 -6.245004513516506e-17 -629 631 0.0004999999999999994 -629 632 -0.001040740740740741 -629 633 -0.009259259259259316 -629 634 -2.602085213965211e-18 -629 635 0.00028148148148151 -629 636 9.540979117872439e-17 -629 1126 0.0005 -629 1127 -0.001040740740740738 -629 1128 0.009259259259259219 -629 1129 7.589415207398531e-19 -629 1130 -0.002362962962962972 -629 1131 0.03703703703703718 -629 1132 -0.0005000000000000007 -629 1133 -0.00104074074074075 -629 1134 0.009259259259259398 -630 619 -0.01296296296296295 -630 620 -0.01342592592592589 -630 621 -0.1551783264746222 -630 622 -0.02407407407407412 -630 623 1.040834085586084e-17 -630 624 -0.1063100137174232 -630 625 2.949029909160572e-17 -630 626 -0.02870370370370393 -630 627 -0.204046639231825 -630 628 1.561251128379126e-17 -630 629 1.144917494144693e-16 -630 630 1.241426611796978 -630 631 0.01296296296296292 -630 632 -0.01342592592592595 -630 633 -0.1551783264746219 -630 634 0.0240740740740741 -630 635 1.214306433183765e-17 -630 636 -0.106310013717416 -630 1126 -0.01296296296296295 -630 1127 0.01342592592592588 -630 1128 -0.1551783264746221 -630 1129 -2.775557561562891e-17 -630 1130 0.02870370370370377 -630 1131 -0.2040466392318249 -630 1132 0.01296296296296297 -630 1133 0.01342592592592598 -630 1134 -0.1551783264746229 -631 631 1 -632 632 1 -633 625 -0.01203703703703708 -633 626 -0.01342592592592595 -633 627 -0.05315500685870794 -633 628 -0.01296296296296292 -633 629 0.01342592592592586 -633 630 -0.1551783264746219 -633 631 8.326672684688674e-17 -633 632 -0.02870370370370365 -633 633 0.6207133058984883 -633 634 -8.326672684688674e-17 -633 635 0.02870370370370369 -633 636 -0.2040466392318226 -633 637 0.012037037037037 -633 638 -0.01342592592592585 -633 639 -0.05315500685871279 -633 640 0.012962962962963 -633 641 0.0134259259259259 -633 642 -0.155178326474623 -634 625 -0.0009703703703703701 -634 626 -0.0005000000000000007 -634 627 -0.008333333333333331 -634 628 -0.001659259259259226 -634 629 -2.818925648462312e-18 -634 630 -0.03333333333333333 -634 631 -0.0002814814814814749 -634 632 1.951563910473908e-18 -634 634 0.007762962962962967 -634 635 8.239936510889834e-18 -634 636 -3.469446951953614e-18 -634 637 -0.0009703703703703695 -634 638 0.0004999999999999987 -634 639 0.008333333333333335 -634 640 -0.001659259259259308 -634 641 -5.421010862427522e-18 -634 642 0.03333333333333334 -634 1129 -0.0009703703703703656 -634 1130 0.0004999999999999994 -634 1131 -0.008333333333333331 -634 1132 -0.0002814814814814748 -634 1133 1.951563910473908e-18 -634 1135 -0.0009703703703703784 -634 1136 -0.0005000000000000013 -634 1137 0.008333333333333335 -635 625 -0.0005000000000000008 -635 626 -0.00104074074074075 -635 627 -0.009259259259259354 -635 628 -2.602085213965211e-18 -635 629 0.00028148148148151 -635 630 -5.204170427930421e-17 -635 631 1.951563910473908e-18 -635 632 -0.002362962962962954 -635 633 -0.03703703703703698 -635 634 8.131516293641283e-18 -635 635 0.008325925925925917 -635 636 -1.040834085586084e-17 -635 637 0.0004999999999999986 -635 638 -0.001040740740740725 -635 639 -0.00925925925925908 -635 640 -5.204170427930421e-18 -635 641 0.0002814814814814399 -635 642 2.775557561562891e-16 -635 1129 0.0004999999999999993 -635 1130 -0.001040740740740741 -635 1131 0.009259259259259361 -635 1132 1.951563910473908e-18 -635 1133 -0.002362962962962954 -635 1134 0.03703703703703691 -635 1135 -0.0005000000000000014 -635 1136 -0.001040740740740743 -635 1137 0.009259259259259153 -636 625 -0.01296296296296297 -636 626 -0.01342592592592607 -636 627 -0.1551783264746229 -636 628 -0.02407407407407411 -636 629 2.949029909160572e-17 -636 630 -0.106310013717416 -636 631 8.153200337090993e-17 -636 632 -0.02870370370370355 -636 633 -0.2040466392318226 -636 634 1.040834085586084e-17 -636 635 -5.898059818321144e-17 -636 636 1.241426611796977 -636 637 0.01296296296296289 -636 638 -0.01342592592592577 -636 639 -0.155178326474621 -636 640 0.0240740740740741 -636 641 -2.949029909160572e-17 -636 642 -0.1063100137174277 -636 1129 -0.01296296296296292 -636 1130 0.01342592592592586 -636 1131 -0.1551783264746218 -636 1132 -8.326672684688674e-17 -636 1133 0.02870370370370369 -636 1134 -0.2040466392318225 -636 1135 0.012962962962963 -636 1136 0.0134259259259259 -636 1137 -0.155178326474623 -637 637 1 -638 638 1 -639 631 -0.01203703703703711 -639 632 -0.01342592592592583 -639 633 -0.05315500685871279 -639 634 -0.01296296296296289 -639 635 0.01342592592592566 -639 636 -0.155178326474621 -639 637 6.245004513516506e-17 -639 638 -0.02870370370370329 -639 639 0.6207133058984865 -639 640 -5.551115123125783e-17 -639 641 0.02870370370370347 -639 642 -0.2040466392318186 -639 643 0.01203703703703705 -639 644 -0.01342592592592588 -639 645 -0.05315500685871186 -639 646 0.01296296296296295 -639 647 0.01342592592592588 -639 648 -0.1551783264746222 -640 631 -0.0009703703703703784 -640 632 -0.0005000000000000013 -640 633 -0.008333333333333333 -640 634 -0.001659259259259308 -640 635 -5.204170427930421e-18 -640 636 -0.03333333333333333 -640 637 -0.0002814814814814531 -640 638 1.301042606982605e-18 -640 639 -1.734723475976807e-18 -640 640 0.007762962962962983 -640 641 5.204170427930421e-18 -640 642 -1.387778780781446e-17 -640 643 -0.0009703703703703715 -640 644 0.0005 -640 645 0.008333333333333333 -640 646 -0.001659259259259277 -640 648 0.03333333333333334 -640 1132 -0.0009703703703703695 -640 1133 0.0004999999999999987 -640 1134 -0.008333333333333333 -640 1135 -0.0002814814814814532 -640 1136 1.301042606982605e-18 -640 1137 -3.469446951953614e-18 -640 1138 -0.0009703703703703715 -640 1139 -0.0005 -640 1140 0.008333333333333335 -641 631 -0.0005000000000000013 -641 632 -0.001040740740740743 -641 633 -0.009259259259259155 -641 634 -5.529431079676073e-18 -641 635 0.0002814814814814401 -641 636 -1.734723475976807e-17 -641 637 1.409462824231156e-18 -641 638 -0.002362962962962925 -641 639 -0.03703703703703673 -641 640 5.204170427930421e-18 -641 641 0.008325925925925888 -641 642 -1.942890293094024e-16 -641 643 0.0005000000000000001 -641 644 -0.001040740740740738 -641 645 -0.009259259259259196 -641 646 -1.084202172485504e-19 -641 647 0.0002814814814814667 -641 648 -2.255140518769849e-17 -641 1132 0.0004999999999999987 -641 1133 -0.001040740740740725 -641 1134 0.009259259259259078 -641 1135 1.409462824231156e-18 -641 1136 -0.002362962962962925 -641 1137 0.03703703703703656 -641 1138 -0.0005 -641 1139 -0.001040740740740738 -641 1140 0.009259259259259219 -642 631 -0.01296296296296301 -642 632 -0.01342592592592601 -642 633 -0.155178326474623 -642 634 -0.02407407407407411 -642 635 3.469446951953614e-18 -642 636 -0.1063100137174277 -642 637 5.724587470723463e-17 -642 638 -0.02870370370370304 -642 639 -0.2040466392318186 -642 640 1.040834085586084e-17 -642 641 -8.326672684688674e-17 -642 642 1.241426611796976 -642 643 0.01296296296296295 -642 644 -0.01342592592592589 -642 645 -0.1551783264746222 -642 646 0.0240740740740741 -642 647 1.040834085586084e-17 -642 648 -0.1063100137174232 -642 1132 -0.01296296296296289 -642 1133 0.01342592592592566 -642 1134 -0.1551783264746209 -642 1135 -5.377642775528102e-17 -642 1136 0.02870370370370347 -642 1137 -0.2040466392318186 -642 1138 0.01296296296296295 -642 1139 0.01342592592592588 -642 1140 -0.1551783264746221 -643 643 1 -644 644 1 -645 637 -0.01203703703703705 -645 638 -0.01342592592592588 -645 639 -0.05315500685871185 -645 640 -0.01296296296296295 -645 641 0.01342592592592588 -645 642 -0.1551783264746222 -645 643 -3.469446951953614e-18 -645 644 -0.02870370370370375 -645 645 0.6207133058984917 -645 646 6.938893903907228e-18 -645 647 0.02870370370370407 -645 648 -0.2040466392318266 -645 649 0.01203703703703706 -645 650 -0.013425925925926 -645 651 -0.05315500685870761 -645 652 0.01296296296296294 -645 653 0.01342592592592567 -645 654 -0.1551783264746234 -646 637 -0.0009703703703703715 -646 638 -0.0005 -646 639 -0.008333333333333333 -646 640 -0.001659259259259277 -646 641 -1.084202172485504e-19 -646 642 -0.03333333333333333 -646 643 -0.0002814814814814882 -646 644 -1.951563910473908e-18 -646 645 -1.734723475976807e-18 -646 646 0.007762962962962959 -646 647 -7.914675859144182e-18 -646 648 -1.040834085586084e-17 -646 649 -0.0009703703703703745 -646 650 0.000500000000000002 -646 651 0.008333333333333333 -646 652 -0.001659259259259226 -646 653 8.023096076392733e-18 -646 654 0.03333333333333333 -646 1135 -0.0009703703703703715 -646 1136 0.0005000000000000001 -646 1137 -0.008333333333333331 -646 1138 -0.0002814814814814882 -646 1139 -2.059984127722458e-18 -646 1140 -3.469446951953614e-18 -646 1141 -0.0009703703703703612 -646 1142 -0.0004999999999999981 -646 1143 0.008333333333333333 -647 637 -0.0005 -647 638 -0.001040740740740738 -647 639 -0.009259259259259198 -647 641 0.0002814814814814667 -647 642 -2.081668171172169e-17 -647 643 -2.059984127722458e-18 -647 644 -0.002362962962962972 -647 645 -0.03703703703703719 -647 646 -7.914675859144182e-18 -647 647 0.008325925925925935 -647 648 -5.30825383648903e-16 -647 649 0.000500000000000002 -647 650 -0.001040740740740759 -647 651 -0.009259259259259347 -647 652 7.914675859144182e-18 -647 653 0.00028148148148151 -647 654 -3.122502256758253e-17 -647 1135 0.0005 -647 1136 -0.001040740740740738 -647 1137 0.009259259259259219 -647 1138 -1.951563910473908e-18 -647 1139 -0.002362962962962972 -647 1140 0.03703703703703706 -647 1141 -0.000499999999999998 -647 1142 -0.001040740740740732 -647 1143 0.009259259259259366 -648 637 -0.01296296296296295 -648 638 -0.01342592592592589 -648 639 -0.1551783264746222 -648 640 -0.02407407407407412 -648 641 1.040834085586084e-17 -648 642 -0.1063100137174232 -648 643 -1.543903893619358e-16 -648 644 -0.02870370370370348 -648 645 -0.2040466392318266 -648 646 1.665334536937735e-16 -648 647 6.418476861114186e-17 -648 648 1.241426611796988 -648 649 0.0129629629629631 -648 650 -0.01342592592592639 -648 651 -0.1551783264746265 -648 652 0.02407407407407395 -648 653 6.418476861114186e-17 -648 654 -0.1063100137174177 -648 1135 -0.01296296296296295 -648 1136 0.01342592592592588 -648 1137 -0.1551783264746221 -648 1138 1.040834085586084e-17 -648 1139 0.02870370370370408 -648 1140 -0.2040466392318265 -648 1141 0.01296296296296293 -648 1142 0.01342592592592567 -648 1143 -0.1551783264746233 -649 649 1 -650 650 1 -651 643 -0.01203703703703689 -651 644 -0.01342592592592603 -651 645 -0.05315500685870761 -651 646 -0.01296296296296311 -651 647 0.01342592592592603 -651 648 -0.1551783264746265 -651 649 -2.116362640691705e-16 -651 650 -0.02870370370370409 -651 651 0.6207133058984948 -651 652 2.151057110211241e-16 -651 653 0.02870370370370413 -651 654 -0.2040466392318305 -651 655 0.0120370370370371 -651 656 -0.01342592592592596 -651 657 -0.05315500685870884 -651 658 0.01296296296296289 -651 659 0.01342592592592591 -651 660 -0.1551783264746214 -652 643 -0.0009703703703703612 -652 644 -0.000499999999999998 -652 645 -0.008333333333333331 -652 646 -0.001659259259259226 -652 647 7.806255641895632e-18 -652 648 -0.03333333333333333 -652 649 -0.0002814814814815097 -652 650 -3.361026734705064e-18 -652 651 -1.734723475976807e-18 -652 652 0.007762962962962943 -652 653 -1.322726650432315e-17 -652 654 -6.938893903907228e-18 -652 655 -0.0009703703703703723 -652 656 0.0005000000000000013 -652 657 0.008333333333333333 -652 658 -0.001659259259259226 -652 659 5.421010862427522e-18 -652 660 0.03333333333333333 -652 1138 -0.0009703703703703745 -652 1139 0.0005000000000000021 -652 1140 -0.008333333333333331 -652 1141 -0.0002814814814815097 -652 1142 -3.361026734705064e-18 -652 1143 -1.734723475976807e-18 -652 1144 -0.0009703703703703634 -652 1145 -0.0004999999999999987 -652 1146 0.008333333333333333 -653 643 -0.0004999999999999981 -653 644 -0.001040740740740732 -653 645 -0.009259259259259236 -653 646 8.023096076392733e-18 -653 647 0.00028148148148151 -653 648 4.128641872824801e-16 -653 649 -3.252606517456513e-18 -653 650 -0.002362962962963001 -653 651 -0.0370370370370374 -653 652 -1.33356867215717e-17 -653 653 0.008325925925925962 -653 654 -1.422473250300982e-16 -653 655 0.0005000000000000013 -653 656 -0.001040740740740754 -653 657 -0.009259259259259404 -653 658 5.204170427930421e-18 -653 659 0.00028148148148151 -653 660 -2.584737979205443e-16 -653 1138 0.000500000000000002 -653 1139 -0.001040740740740759 -653 1140 0.009259259259259477 -653 1141 -3.361026734705064e-18 -653 1142 -0.002362962962963 -653 1143 0.03703703703703746 -653 1144 -0.0004999999999999986 -653 1145 -0.001040740740740737 -653 1146 0.009259259259259309 -654 643 -0.01296296296296294 -654 644 -0.01342592592592603 -654 645 -0.1551783264746234 -654 646 -0.02407407407407396 -654 647 1.214306433183765e-17 -654 648 -0.1063100137174176 -654 649 -6.418476861114186e-17 -654 650 -0.02870370370370415 -654 651 -0.2040466392318305 -654 652 -1.387778780781446e-16 -654 653 9.71445146547012e-17 -654 654 1.241426611796989 -654 655 0.012962962962963 -654 656 -0.01342592592592602 -654 657 -0.1551783264746235 -654 658 0.0240740740740741 -654 659 2.081668171172169e-17 -654 660 -0.106310013717416 -654 1138 -0.0129629629629631 -654 1139 0.01342592592592603 -654 1140 -0.1551783264746264 -654 1141 2.151057110211241e-16 -654 1142 0.02870370370370413 -654 1143 -0.2040466392318304 -654 1144 0.01296296296296289 -654 1145 0.01342592592592591 -654 1146 -0.1551783264746213 -655 655 1 -656 656 1 -657 649 -0.012037037037037 -657 650 -0.01342592592592597 -657 651 -0.05315500685870884 -657 652 -0.012962962962963 -657 653 0.01342592592592615 -657 654 -0.1551783264746235 -657 655 -8.326672684688674e-17 -657 656 -0.02870370370370363 -657 657 0.6207133058984901 -657 658 8.153200337090993e-17 -657 659 0.02870370370370348 -657 660 -0.2040466392318226 -657 661 0.01203703703703708 -657 662 -0.01342592592592584 -657 663 -0.05315500685871369 -657 664 0.01296296296296292 -657 665 0.01342592592592582 -657 666 -0.1551783264746215 -658 649 -0.0009703703703703634 -658 650 -0.0004999999999999986 -658 651 -0.008333333333333331 -658 652 -0.001659259259259226 -658 653 5.204170427930421e-18 -658 654 -0.03333333333333333 -658 655 -0.0002814814814814748 -658 656 -2.059984127722458e-18 -658 658 0.007762962962962967 -658 659 -7.806255641895632e-18 -658 660 -3.469446951953614e-18 -658 661 -0.0009703703703703761 -658 662 0.0005000000000000007 -658 663 0.008333333333333335 -658 664 -0.001659259259259308 -658 665 2.602085213965211e-18 -658 666 0.03333333333333334 -658 1141 -0.0009703703703703723 -658 1142 0.0005000000000000013 -658 1143 -0.008333333333333331 -658 1144 -0.0002814814814814748 -658 1145 -1.951563910473908e-18 -658 1147 -0.0009703703703703718 -658 1148 -0.0004999999999999994 -658 1149 0.008333333333333335 -659 649 -0.0004999999999999987 -659 650 -0.001040740740740736 -659 651 -0.00925925925925933 -659 652 5.421010862427522e-18 -659 653 0.00028148148148151 -659 654 3.989863994746656e-17 -659 655 -1.951563910473908e-18 -659 656 -0.002362962962962954 -659 657 -0.03703703703703692 -659 658 -7.806255641895632e-18 -659 659 0.008325925925925917 -659 660 2.42861286636753e-16 -659 661 0.0005000000000000007 -659 662 -0.001040740740740738 -659 663 -0.009259259259259167 -659 664 2.818925648462312e-18 -659 665 0.0002814814814814399 -659 666 -7.28583859910259e-17 -659 1141 0.0005000000000000013 -659 1142 -0.001040740740740754 -659 1143 0.009259259259259384 -659 1144 -2.168404344971009e-18 -659 1145 -0.002362962962962954 -659 1146 0.03703703703703698 -659 1147 -0.0004999999999999994 -659 1148 -0.00104074074074073 -659 1149 0.009259259259259064 -660 649 -0.01296296296296289 -660 650 -0.01342592592592578 -660 651 -0.1551783264746214 -660 652 -0.02407407407407411 -660 653 -8.673617379884035e-18 -660 654 -0.106310013717416 -660 655 -8.500145032286355e-17 -660 656 -0.02870370370370376 -660 657 -0.2040466392318225 -660 658 1.040834085586084e-17 -660 659 -3.469446951953614e-17 -660 660 1.241426611796977 -660 661 0.01296296296296298 -660 662 -0.01342592592592585 -660 663 -0.1551783264746225 -660 664 0.0240740740740741 -660 665 -1.734723475976807e-17 -660 666 -0.1063100137174277 -660 1141 -0.012962962962963 -660 1142 0.01342592592592614 -660 1143 -0.1551783264746234 -660 1144 8.153200337090993e-17 -660 1145 0.02870370370370348 -660 1146 -0.2040466392318225 -660 1147 0.01296296296296292 -660 1148 0.01342592592592582 -660 1149 -0.1551783264746214 -661 661 1 -662 662 1 -663 655 -0.01203703703703703 -663 656 -0.01342592592592585 -663 657 -0.05315500685871369 -663 658 -0.01296296296296298 -663 659 0.01342592592592594 -663 660 -0.1551783264746225 -663 661 1.179611963664229e-16 -663 662 -0.02870370370370361 -663 663 0.6207133058984929 -663 664 -1.092875789865388e-16 -663 665 0.02870370370370314 -663 666 -0.2040466392318226 -663 667 0.01203703703703691 -663 668 -0.01342592592592599 -663 669 -0.05315500685870914 -663 670 0.01296296296296309 -663 671 0.01342592592592636 -663 672 -0.155178326474625 -664 655 -0.0009703703703703718 -664 656 -0.0004999999999999994 -664 657 -0.008333333333333333 -664 658 -0.001659259259259308 -664 659 2.818925648462312e-18 -664 660 -0.03333333333333333 -664 661 -0.0002814814814814748 -664 662 2.710505431213761e-18 -664 663 -3.469446951953614e-18 -664 664 0.007762962962962968 -664 665 1.040834085586084e-17 -664 666 -1.387778780781446e-17 -664 667 -0.0009703703703703568 -664 668 0.0004999999999999966 -664 669 0.008333333333333333 -664 670 -0.001659259259259226 -664 671 -1.322726650432315e-17 -664 672 0.03333333333333333 -664 1144 -0.0009703703703703761 -664 1145 0.0005000000000000007 -664 1146 -0.008333333333333333 -664 1147 -0.0002814814814814749 -664 1148 2.710505431213761e-18 -664 1149 -3.469446951953614e-18 -664 1150 -0.000970370370370379 -664 1151 -0.0005000000000000034 -664 1152 0.008333333333333333 -665 655 -0.0004999999999999994 -665 656 -0.00104074074074073 -665 657 -0.00925925925925913 -665 658 2.602085213965211e-18 -665 659 0.0002814814814814401 -665 660 7.632783294297951e-17 -665 661 2.710505431213761e-18 -665 662 -0.002362962962962954 -665 663 -0.03703703703703681 -665 664 1.040834085586084e-17 -665 665 0.008325925925925917 -665 666 6.557254739192331e-16 -665 667 0.0004999999999999966 -665 668 -0.001040740740740723 -665 669 -0.009259259259259285 -665 670 -1.33356867215717e-17 -665 671 0.00028148148148151 -665 672 2.168404344971009e-16 -665 1144 0.0005000000000000008 -665 1145 -0.001040740740740738 -665 1146 0.009259259259259103 -665 1147 2.710505431213761e-18 -665 1148 -0.002362962962962954 -665 1149 0.03703703703703708 -665 1150 -0.0005000000000000033 -665 1151 -0.001040740740740768 -665 1152 0.009259259259259429 -666 655 -0.01296296296296292 -666 656 -0.01342592592592573 -666 657 -0.1551783264746215 -666 658 -0.02407407407407411 -666 659 -3.642919299551295e-17 -666 660 -0.1063100137174277 -666 661 1.110223024625157e-16 -666 662 -0.02870370370370409 -666 663 -0.2040466392318226 -666 664 1.387778780781446e-17 -666 665 1.561251128379126e-17 -666 666 1.241426611796977 -666 667 0.01296296296296281 -666 668 -0.01342592592592557 -666 669 -0.1551783264746199 -666 670 0.0240740740740741 -666 671 -4.163336342344337e-17 -666 672 -0.106310013717416 -666 1144 -0.01296296296296297 -666 1145 0.01342592592592594 -666 1146 -0.1551783264746225 -666 1147 -1.110223024625157e-16 -666 1148 0.02870370370370315 -666 1149 -0.2040466392318225 -666 1150 0.01296296296296309 -666 1151 0.01342592592592636 -666 1152 -0.155178326474625 -667 667 1 -668 668 1 -669 661 -0.01203703703703719 -669 662 -0.01342592592592595 -669 663 -0.05315500685870912 -669 664 -0.01296296296296281 -669 665 0.01342592592592576 -669 666 -0.1551783264746199 -669 667 7.979727989493313e-17 -669 668 -0.02870370370370374 -669 669 0.6207133058984877 -669 670 -8.500145032286355e-17 -669 671 0.02870370370370397 -669 672 -0.2040466392318245 -669 673 0.01203703703703711 -669 674 -0.01342592592592586 -669 675 -0.05315500685871315 -669 676 0.01296296296296289 -669 677 0.01342592592592581 -669 678 -0.1551783264746211 -670 661 -0.000970370370370379 -670 662 -0.0005000000000000033 -670 663 -0.008333333333333331 -670 664 -0.001659259259259226 -670 665 -1.344410693882025e-17 -670 666 -0.03333333333333333 -670 667 -0.0002814814814814854 -670 668 1.951563910473908e-18 -670 670 0.007762962962962959 -670 671 8.239936510889834e-18 -670 672 -3.469446951953614e-18 -670 673 -0.0009703703703703766 -670 674 0.0005000000000000013 -670 675 0.008333333333333335 -670 676 -0.001659259259259283 -670 677 5.204170427930421e-18 -670 678 0.03333333333333334 -670 1147 -0.0009703703703703568 -670 1148 0.0004999999999999968 -670 1149 -0.008333333333333331 -670 1150 -0.0002814814814814854 -670 1151 1.843143693225358e-18 -670 1152 -1.734723475976807e-18 -670 1153 -0.0009703703703703678 -670 1154 -0.0004999999999999986 -670 1155 0.008333333333333335 -671 661 -0.0005000000000000034 -671 662 -0.001040740740740768 -671 663 -0.00925925925925947 -671 664 -1.322726650432315e-17 -671 665 0.00028148148148151 -671 666 -5.204170427930421e-16 -671 667 2.059984127722458e-18 -671 668 -0.002362962962962969 -671 669 -0.0370370370370371 -671 670 8.131516293641283e-18 -671 671 0.008325925925925931 -671 672 -4.336808689942018e-16 -671 673 0.0005000000000000014 -671 674 -0.001040740740740746 -671 675 -0.009259259259259228 -671 676 5.421010862427522e-18 -671 677 0.0002814814814814616 -671 678 -2.758210326803123e-16 -671 1147 0.0004999999999999966 -671 1148 -0.001040740740740723 -671 1149 0.009259259259259245 -671 1150 1.843143693225358e-18 -671 1151 -0.002362962962962968 -671 1152 0.03703703703703708 -671 1153 -0.0004999999999999988 -671 1154 -0.001040740740740729 -671 1155 0.009259259259259153 -672 661 -0.01296296296296309 -672 662 -0.01342592592592617 -672 663 -0.155178326474625 -672 664 -0.02407407407407411 -672 665 4.510281037539698e-17 -672 666 -0.106310013717416 -672 667 8.153200337090993e-17 -672 668 -0.02870370370370363 -672 669 -0.2040466392318245 -672 670 5.204170427930421e-18 -672 671 1.214306433183765e-16 -672 672 1.241426611796978 -672 673 0.012962962962963 -672 674 -0.01342592592592593 -672 675 -0.1551783264746232 -672 676 0.0240740740740741 -672 677 2.949029909160572e-17 -672 678 -0.1063100137174241 -672 1147 -0.01296296296296281 -672 1148 0.01342592592592576 -672 1149 -0.1551783264746198 -672 1150 -8.500145032286355e-17 -672 1151 0.02870370370370397 -672 1152 -0.2040466392318244 -672 1153 0.01296296296296289 -672 1154 0.01342592592592581 -672 1155 -0.1551783264746211 -673 673 1 -674 674 1 -675 667 -0.012037037037037 -675 668 -0.01342592592592588 -675 669 -0.05315500685871315 -675 670 -0.01296296296296301 -675 671 0.01342592592592605 -675 672 -0.1551783264746232 -675 673 2.602085213965211e-17 -675 674 -0.02870370370370371 -675 675 0.6207133058984964 -675 676 -1.734723475976807e-17 -675 677 0.02870370370370354 -675 678 -0.2040466392318267 -675 679 0.01203703703703697 -675 680 -0.01342592592592604 -675 681 -0.05315500685870837 -675 682 0.01296296296296302 -675 683 0.01342592592592604 -675 684 -0.155178326474625 -676 667 -0.0009703703703703678 -676 668 -0.0004999999999999988 -676 669 -0.008333333333333333 -676 670 -0.001659259259259283 -676 671 5.312590645178972e-18 -676 672 -0.03333333333333333 -676 673 -0.0002814814814814885 -676 674 -1.192622389734055e-18 -676 675 -1.734723475976807e-18 -676 676 0.007762962962962959 -676 677 -5.312590645178972e-18 -676 678 -1.387778780781446e-17 -676 679 -0.0009703703703703678 -676 680 0.0005 -676 681 0.008333333333333335 -676 682 -0.001659259259259219 -676 684 0.03333333333333333 -676 1150 -0.0009703703703703766 -676 1151 0.0005000000000000014 -676 1152 -0.008333333333333331 -676 1153 -0.0002814814814814884 -676 1154 -1.409462824231156e-18 -676 1155 -1.734723475976807e-18 -676 1156 -0.0009703703703703678 -676 1157 -0.0005 -676 1158 0.008333333333333335 -677 667 -0.0004999999999999987 -677 668 -0.001040740740740729 -677 669 -0.009259259259259155 -677 670 5.204170427930421e-18 -677 671 0.0002814814814814615 -677 672 2.081668171172169e-17 -677 673 -1.301042606982605e-18 -677 674 -0.002362962962962973 -677 675 -0.03703703703703703 -677 676 -5.421010862427522e-18 -677 677 0.008325925925925936 -677 678 1.457167719820518e-16 -677 679 0.0005 -677 680 -0.001040740740740747 -677 681 -0.009259259259259377 -677 682 1.084202172485504e-19 -677 683 0.0002814814814815158 -677 1150 0.0005000000000000014 -677 1151 -0.001040740740740746 -677 1152 0.009259259259259226 -677 1153 -1.301042606982605e-18 -677 1154 -0.002362962962962973 -677 1155 0.03703703703703724 -677 1156 -0.0005000000000000001 -677 1157 -0.001040740740740747 -677 1158 0.009259259259259377 -678 667 -0.01296296296296289 -678 668 -0.0134259259259257 -678 669 -0.1551783264746211 -678 670 -0.02407407407407412 -678 672 -0.1063100137174241 -678 673 -1.318389841742373e-16 -678 674 -0.02870370370370402 -678 675 -0.2040466392318267 -678 676 1.682681771697503e-16 -678 677 1.249000902703301e-16 -678 678 1.241426611796988 -678 679 0.01296296296296302 -678 680 -0.01342592592592605 -678 681 -0.155178326474625 -678 682 0.02407407407407395 -678 683 3.469446951953614e-18 -678 684 -0.1063100137174167 -678 1150 -0.012962962962963 -678 1151 0.01342592592592605 -678 1152 -0.1551783264746231 -678 1153 -1.734723475976807e-17 -678 1154 0.02870370370370354 -678 1155 -0.2040466392318266 -678 1156 0.01296296296296302 -678 1157 0.01342592592592604 -678 1158 -0.1551783264746249 -679 679 1 -680 680 1 -681 673 -0.01203703703703698 -681 674 -0.01342592592592604 -681 675 -0.05315500685870837 -681 676 -0.01296296296296303 -681 677 0.01342592592592604 -681 678 -0.155178326474625 -681 679 -1.856154119295184e-16 -681 680 -0.02870370370370368 -681 681 0.6207133058984903 -681 682 1.873501354054952e-16 -681 683 0.02870370370370403 -681 684 -0.2040466392318247 -681 685 0.01203703703703716 -681 686 -0.01342592592592582 -681 687 -0.0531550068587122 -681 688 0.01296296296296284 -681 689 0.01342592592592547 -681 690 -0.15517832647462 -682 673 -0.0009703703703703678 -682 674 -0.0005000000000000001 -682 675 -0.008333333333333333 -682 676 -0.001659259259259219 -682 677 1.084202172485504e-19 -682 678 -0.03333333333333333 -682 679 -0.0002814814814814777 -682 680 -2.602085213965211e-18 -682 681 -1.734723475976807e-18 -682 682 0.007762962962962966 -682 683 -1.062518129035794e-17 -682 684 -3.469446951953614e-18 -682 685 -0.0009703703703703827 -682 686 0.0005000000000000027 -682 687 0.008333333333333335 -682 688 -0.001659259259259308 -682 689 1.051676107310939e-17 -682 690 0.03333333333333334 -682 1153 -0.0009703703703703678 -682 1154 0.0005 -682 1155 -0.008333333333333333 -682 1156 -0.0002814814814814777 -682 1157 -2.710505431213761e-18 -682 1158 -1.734723475976807e-18 -682 1159 -0.0009703703703703649 -682 1160 -0.0004999999999999973 -682 1161 0.008333333333333335 -683 673 -0.0005000000000000001 -683 674 -0.001040740740740747 -683 675 -0.009259259259259377 -683 677 0.0002814814814815158 -683 679 -2.602085213965211e-18 -683 680 -0.002362962962962958 -683 681 -0.03703703703703715 -683 682 -1.062518129035794e-17 -683 683 0.008325925925925922 -683 684 -3.781697177629439e-16 -683 685 0.0005000000000000026 -683 686 -0.001040740740740752 -683 687 -0.009259259259259169 -683 688 1.073360150760649e-17 -683 689 0.00028148148148144 -683 690 -8.153200337090993e-17 -683 1153 0.0005000000000000001 -683 1154 -0.001040740740740747 -683 1155 0.009259259259259377 -683 1156 -2.602085213965211e-18 -683 1157 -0.002362962962962958 -683 1158 0.03703703703703683 -683 1159 -0.0004999999999999974 -683 1160 -0.001040740740740716 -683 1161 0.009259259259259063 -684 673 -0.01296296296296303 -684 674 -0.01342592592592605 -684 675 -0.155178326474625 -684 676 -0.02407407407407396 -684 677 3.469446951953614e-18 -684 678 -0.1063100137174167 -684 679 -3.295974604355933e-17 -684 680 -0.02870370370370317 -684 681 -0.2040466392318247 -684 682 -1.43982048506075e-16 -684 683 -1.613292832658431e-16 -684 684 1.241426611796988 -684 685 0.01296296296296306 -684 686 -0.0134259259259262 -684 687 -0.1551783264746241 -684 688 0.0240740740740741 -684 689 2.775557561562891e-17 -684 690 -0.1063100137174277 -684 1153 -0.01296296296296302 -684 1154 0.01342592592592604 -684 1155 -0.1551783264746249 -684 1156 1.856154119295184e-16 -684 1157 0.02870370370370403 -684 1158 -0.2040466392318246 -684 1159 0.01296296296296284 -684 1160 0.01342592592592547 -684 1161 -0.1551783264746199 -685 685 1 -686 686 1 -687 679 -0.01203703703703694 -687 680 -0.01342592592592586 -687 681 -0.0531550068587122 -687 682 -0.01296296296296306 -687 683 0.01342592592592595 -687 684 -0.1551783264746241 -687 685 -5.030698080332741e-17 -687 686 -0.02870370370370363 -687 687 0.6207133058984899 -687 688 5.551115123125783e-17 -687 689 0.02870370370370349 -687 690 -0.2040466392318226 -687 691 0.01203703703703699 -687 692 -0.01342592592592596 -687 693 -0.05315500685870765 -687 694 0.01296296296296301 -687 695 0.01342592592592601 -687 696 -0.1551783264746235 -688 679 -0.0009703703703703649 -688 680 -0.0004999999999999974 -688 681 -0.008333333333333333 -688 682 -0.001659259259259308 -688 683 1.073360150760649e-17 -688 684 -0.03333333333333333 -688 685 -0.0002814814814814748 -688 686 -1.192622389734055e-18 -688 687 -3.469446951953614e-18 -688 688 0.007762962962962968 -688 689 -5.421010862427522e-18 -688 690 -1.387778780781446e-17 -688 691 -0.0009703703703703634 -688 692 0.0004999999999999986 -688 693 0.008333333333333333 -688 694 -0.001659259259259226 -688 695 -5.312590645178972e-18 -688 696 0.03333333333333333 -688 1156 -0.0009703703703703827 -688 1157 0.0005000000000000027 -688 1158 -0.008333333333333333 -688 1159 -0.0002814814814814747 -688 1160 -1.409462824231156e-18 -688 1161 -3.469446951953614e-18 -688 1162 -0.0009703703703703723 -688 1163 -0.0005000000000000013 -688 1164 0.008333333333333333 -689 679 -0.0004999999999999974 -689 680 -0.001040740740740716 -689 681 -0.009259259259259023 -689 682 1.051676107310939e-17 -689 683 0.0002814814814814402 -689 684 5.100087019371813e-16 -689 685 -1.192622389734055e-18 -689 686 -0.002362962962962954 -689 687 -0.03703703703703692 -689 688 -5.529431079676073e-18 -689 689 0.008325925925925917 -689 690 2.324529457808922e-16 -689 691 0.0004999999999999987 -689 692 -0.001040740740740736 -689 693 -0.009259259259259287 -689 694 -5.421010862427522e-18 -689 695 0.00028148148148151 -689 696 2.116362640691705e-16 -689 1156 0.0005000000000000027 -689 1157 -0.001040740740740752 -689 1158 0.009259259259259212 -689 1159 -1.192622389734055e-18 -689 1160 -0.002362962962962954 -689 1161 0.03703703703703697 -689 1162 -0.0005000000000000013 -689 1163 -0.001040740740740754 -689 1164 0.009259259259259427 -690 679 -0.01296296296296284 -690 680 -0.01342592592592572 -690 681 -0.15517832647462 -690 682 -0.02407407407407411 -690 683 -3.816391647148976e-17 -690 684 -0.1063100137174277 -690 685 -5.377642775528102e-17 -690 686 -0.02870370370370375 -690 687 -0.2040466392318226 -690 688 1.040834085586084e-17 -690 689 -3.122502256758253e-17 -690 690 1.241426611796977 -690 691 0.01296296296296289 -690 692 -0.01342592592592592 -690 693 -0.1551783264746214 -690 694 0.0240740740740741 -690 695 5.204170427930421e-18 -690 696 -0.106310013717416 -690 1156 -0.01296296296296306 -690 1157 0.01342592592592595 -690 1158 -0.155178326474624 -690 1159 5.898059818321144e-17 -690 1160 0.02870370370370349 -690 1161 -0.2040466392318225 -690 1162 0.012962962962963 -690 1163 0.01342592592592601 -690 1164 -0.1551783264746234 -691 691 1 -692 692 1 -693 685 -0.01203703703703711 -693 686 -0.01342592592592595 -693 687 -0.05315500685870765 -693 688 -0.01296296296296289 -693 689 0.01342592592592577 -693 690 -0.1551783264746214 -693 691 2.775557561562891e-17 -693 692 -0.02870370370370374 -693 693 0.6207133058984879 -693 694 -2.949029909160572e-17 -693 695 0.02870370370370394 -693 696 -0.2040466392318245 -693 697 0.01203703703703708 -693 698 -0.01342592592592586 -693 699 -0.05315500685871284 -693 700 0.01296296296296292 -693 701 0.01342592592592584 -693 702 -0.1551783264746216 -694 685 -0.0009703703703703723 -694 686 -0.0005000000000000013 -694 687 -0.008333333333333331 -694 688 -0.001659259259259226 -694 689 -5.421010862427522e-18 -694 690 -0.03333333333333333 -694 691 -0.0002814814814814855 -694 692 6.505213034913027e-19 -694 694 0.007762962962962959 -694 695 2.818925648462312e-18 -694 696 -3.469446951953614e-18 -694 697 -0.0009703703703703744 -694 698 0.0005000000000000007 -694 699 0.008333333333333335 -694 700 -0.001659259259259283 -694 701 2.602085213965211e-18 -694 702 0.03333333333333334 -694 1159 -0.0009703703703703634 -694 1160 0.0004999999999999987 -694 1161 -0.008333333333333331 -694 1162 -0.0002814814814814853 -694 1163 6.505213034913027e-19 -694 1164 -1.734723475976807e-18 -694 1165 -0.00097037037037037 -694 1166 -0.0004999999999999994 -694 1167 0.008333333333333335 -695 685 -0.0005000000000000014 -695 686 -0.001040740740740754 -695 687 -0.009259259259259361 -695 688 -5.204170427930421e-18 -695 689 0.00028148148148151 -695 690 -8.326672684688674e-17 -695 691 6.505213034913027e-19 -695 692 -0.002362962962962968 -695 693 -0.0370370370370371 -695 694 2.818925648462312e-18 -695 695 0.008325925925925933 -695 696 -3.885780586188048e-16 -695 697 0.0005000000000000008 -695 698 -0.001040740740740742 -695 699 -0.0092592592592592 -695 700 2.602085213965211e-18 -695 701 0.0002814814814814616 -695 702 -1.578598363138894e-16 -695 1159 0.0004999999999999986 -695 1160 -0.001040740740740736 -695 1161 0.009259259259259352 -695 1162 5.421010862427522e-19 -695 1163 -0.002362962962962968 -695 1164 0.03703703703703709 -695 1165 -0.0004999999999999995 -695 1166 -0.001040740740740733 -695 1167 0.009259259259259182 -696 685 -0.012962962962963 -696 686 -0.01342592592592616 -696 687 -0.1551783264746235 -696 688 -0.02407407407407411 -696 689 3.989863994746656e-17 -696 690 -0.106310013717416 -696 691 2.602085213965211e-17 -696 692 -0.02870370370370367 -696 693 -0.2040466392318245 -696 694 5.204170427930421e-18 -696 695 1.283695372222837e-16 -696 696 1.241426611796978 -696 697 0.01296296296296298 -696 698 -0.01342592592592591 -696 699 -0.1551783264746227 -696 700 0.0240740740740741 -696 701 2.775557561562891e-17 -696 702 -0.1063100137174241 -696 1159 -0.01296296296296289 -696 1160 0.01342592592592577 -696 1161 -0.1551783264746213 -696 1162 -2.949029909160572e-17 -696 1163 0.02870370370370394 -696 1164 -0.2040466392318244 -696 1165 0.01296296296296292 -696 1166 0.01342592592592584 -696 1167 -0.1551783264746216 -697 697 1 -698 698 1 -699 691 -0.01203703703703703 -699 692 -0.01342592592592587 -699 693 -0.05315500685871284 -699 694 -0.01296296296296298 -699 695 0.01342592592592596 -699 696 -0.1551783264746227 -699 697 8.153200337090993e-17 -699 698 -0.02870370370370364 -699 699 0.6207133058984959 -699 700 -7.28583859910259e-17 -699 701 0.02870370370370353 -699 702 -0.2040466392318261 -699 703 0.01203703703703695 -699 704 -0.01342592592592603 -699 705 -0.05315500685870879 -699 706 0.01296296296296305 -699 707 0.01342592592592605 -699 708 -0.1551783264746255 -700 691 -0.00097037037037037 -700 692 -0.0004999999999999995 -700 693 -0.008333333333333333 -700 694 -0.001659259259259283 -700 695 2.602085213965211e-18 -700 696 -0.03333333333333333 -700 697 -0.0002814814814814856 -700 698 2.168404344971009e-19 -700 699 -3.469446951953614e-18 -700 700 0.007762962962962961 -700 702 -1.387778780781446e-17 -700 703 -0.0009703703703703656 -700 704 0.0004999999999999993 -700 705 0.008333333333333333 -700 706 -0.001659259259259226 -700 707 -2.602085213965211e-18 -700 708 0.03333333333333333 -700 1162 -0.0009703703703703744 -700 1163 0.0005000000000000008 -700 1164 -0.008333333333333331 -700 1165 -0.0002814814814814856 -700 1166 -1.084202172485504e-19 -700 1167 -3.469446951953614e-18 -700 1168 -0.0009703703703703701 -700 1169 -0.0005000000000000007 -700 1170 0.008333333333333333 -701 691 -0.0004999999999999994 -701 692 -0.001040740740740733 -701 693 -0.009259259259259162 -701 694 2.602085213965211e-18 -701 695 0.0002814814814814613 -701 696 -1.040834085586084e-17 -701 698 -0.002362962962962969 -701 699 -0.03703703703703699 -701 701 0.008325925925925931 -701 702 1.734723475976807e-17 -701 703 0.0004999999999999994 -701 704 -0.001040740740740741 -701 705 -0.009259259259259316 -701 706 -2.602085213965211e-18 -701 707 0.00028148148148151 -701 708 9.540979117872439e-17 -701 1162 0.0005000000000000008 -701 1163 -0.001040740740740742 -701 1164 0.009259259259259219 -701 1165 2.168404344971009e-19 -701 1166 -0.002362962962962969 -701 1167 0.03703703703703719 -701 1168 -0.0005000000000000007 -701 1169 -0.00104074074074075 -701 1170 0.009259259259259398 -702 691 -0.01296296296296292 -702 692 -0.01342592592592579 -702 693 -0.1551783264746216 -702 694 -0.02407407407407412 -702 695 8.673617379884035e-18 -702 696 -0.1063100137174241 -702 697 -7.459310946700271e-17 -702 698 -0.02870370370370393 -702 699 -0.2040466392318261 -702 700 1.682681771697503e-16 -702 701 1.769417945496343e-16 -702 702 1.241426611796988 -702 703 0.01296296296296299 -702 704 -0.01342592592592601 -702 705 -0.1551783264746244 -702 706 0.02407407407407395 -702 707 1.040834085586084e-17 -702 708 -0.1063100137174176 -702 1162 -0.01296296296296297 -702 1163 0.01342592592592596 -702 1164 -0.1551783264746226 -702 1165 -7.28583859910259e-17 -702 1166 0.02870370370370353 -702 1167 -0.2040466392318261 -702 1168 0.01296296296296305 -702 1169 0.01342592592592605 -702 1170 -0.1551783264746254 -703 703 1 -704 704 1 -705 697 -0.012037037037037 -705 698 -0.01342592592592602 -705 699 -0.05315500685870879 -705 700 -0.012962962962963 -705 701 0.01342592592592593 -705 702 -0.1551783264746244 -705 703 -9.8879238130678e-17 -705 704 -0.02870370370370409 -705 705 0.6207133058984939 -705 706 1.040834085586084e-16 -705 707 0.02870370370370423 -705 708 -0.2040466392318305 -705 709 0.0120370370370371 -705 710 -0.01342592592592596 -705 711 -0.05315500685870884 -705 712 0.01296296296296289 -705 713 0.01342592592592591 -705 714 -0.1551783264746214 -706 697 -0.0009703703703703701 -706 698 -0.0005000000000000007 -706 699 -0.008333333333333331 -706 700 -0.001659259259259226 -706 701 -2.818925648462312e-18 -706 702 -0.03333333333333333 -706 703 -0.0002814814814815097 -706 704 -6.505213034913027e-19 -706 705 -1.734723475976807e-18 -706 706 0.007762962962962943 -706 707 -2.602085213965211e-18 -706 708 -6.938893903907228e-18 -706 709 -0.0009703703703703723 -706 710 0.0005000000000000013 -706 711 0.008333333333333333 -706 712 -0.001659259259259226 -706 713 5.421010862427522e-18 -706 714 0.03333333333333333 -706 1165 -0.0009703703703703656 -706 1166 0.0004999999999999994 -706 1167 -0.008333333333333331 -706 1168 -0.0002814814814815097 -706 1169 -6.505213034913027e-19 -706 1170 -1.734723475976807e-18 -706 1171 -0.0009703703703703634 -706 1172 -0.0004999999999999987 -706 1173 0.008333333333333333 -707 697 -0.0005000000000000008 -707 698 -0.00104074074074075 -707 699 -0.009259259259259354 -707 700 -2.602085213965211e-18 -707 701 0.00028148148148151 -707 702 -5.204170427930421e-17 -707 703 -6.505213034913027e-19 -707 704 -0.002362962962963001 -707 705 -0.03703703703703742 -707 706 -2.818925648462312e-18 -707 707 0.008325925925925962 -707 708 -2.706168622523819e-16 -707 709 0.0005000000000000013 -707 710 -0.001040740740740754 -707 711 -0.009259259259259404 -707 712 5.204170427930421e-18 -707 713 0.00028148148148151 -707 714 -2.584737979205443e-16 -707 1165 0.0004999999999999993 -707 1166 -0.001040740740740741 -707 1167 0.009259259259259361 -707 1168 -6.505213034913027e-19 -707 1169 -0.002362962962963 -707 1170 0.03703703703703742 -707 1171 -0.0004999999999999986 -707 1172 -0.001040740740740737 -707 1173 0.009259259259259309 -708 697 -0.01296296296296305 -708 698 -0.01342592592592613 -708 699 -0.1551783264746255 -708 700 -0.02407407407407396 -708 701 2.602085213965211e-17 -708 702 -0.1063100137174176 -708 703 4.683753385137379e-17 -708 704 -0.02870370370370405 -708 705 -0.2040466392318305 -708 706 -1.422473250300982e-16 -708 707 9.020562075079397e-17 -708 708 1.241426611796989 -708 709 0.012962962962963 -708 710 -0.01342592592592602 -708 711 -0.1551783264746235 -708 712 0.0240740740740741 -708 713 2.081668171172169e-17 -708 714 -0.106310013717416 -708 1165 -0.01296296296296299 -708 1166 0.01342592592592593 -708 1167 -0.1551783264746243 -708 1168 1.023486850826316e-16 -708 1169 0.02870370370370423 -708 1170 -0.2040466392318304 -708 1171 0.01296296296296289 -708 1172 0.01342592592592591 -708 1173 -0.1551783264746213 -709 709 1 -710 710 1 -711 703 -0.012037037037037 -711 704 -0.01342592592592597 -711 705 -0.05315500685870884 -711 706 -0.012962962962963 -711 707 0.01342592592592615 -711 708 -0.1551783264746235 -711 709 -8.153200337090993e-17 -711 710 -0.02870370370370378 -711 711 0.6207133058984911 -711 712 8.326672684688674e-17 -711 713 0.02870370370370363 -711 714 -0.204046639231825 -711 715 0.01203703703703708 -711 716 -0.01342592592592588 -711 717 -0.05315500685871216 -711 718 0.01296296296296292 -711 719 0.01342592592592585 -711 720 -0.1551783264746217 -712 703 -0.0009703703703703634 -712 704 -0.0004999999999999986 -712 705 -0.008333333333333331 -712 706 -0.001659259259259226 -712 707 5.204170427930421e-18 -712 708 -0.03333333333333333 -712 709 -0.000281481481481488 -712 710 -2.059984127722458e-18 -712 712 0.007762962962962958 -712 713 -7.914675859144182e-18 -712 714 -6.938893903907228e-18 -712 715 -0.0009703703703703737 -712 716 0.0005000000000000007 -712 717 0.008333333333333333 -712 718 -0.001659259259259277 -712 719 2.710505431213761e-18 -712 720 0.03333333333333334 -712 1168 -0.0009703703703703723 -712 1169 0.0005000000000000013 -712 1170 -0.008333333333333331 -712 1171 -0.0002814814814814881 -712 1172 -1.951563910473908e-18 -712 1173 -1.734723475976807e-18 -712 1174 -0.0009703703703703695 -712 1175 -0.0004999999999999994 -712 1176 0.008333333333333335 -713 703 -0.0004999999999999987 -713 704 -0.001040740740740736 -713 705 -0.00925925925925933 -713 706 5.421010862427522e-18 -713 707 0.00028148148148151 -713 708 3.989863994746656e-17 -713 709 -1.951563910473908e-18 -713 710 -0.002362962962962972 -713 711 -0.03703703703703703 -713 712 -7.806255641895632e-18 -713 713 0.008325925925925935 -713 714 1.179611963664229e-16 -713 715 0.0005000000000000008 -713 716 -0.001040740740740743 -713 717 -0.009259259259259228 -713 718 2.710505431213761e-18 -713 719 0.0002814814814814667 -713 720 -1.370431546021678e-16 -713 1168 0.0005000000000000013 -713 1169 -0.001040740740740754 -713 1170 0.009259259259259384 -713 1171 -2.059984127722458e-18 -713 1172 -0.002362962962962971 -713 1173 0.03703703703703722 -713 1174 -0.0004999999999999994 -713 1175 -0.001040740740740734 -713 1176 0.009259259259259189 -714 703 -0.01296296296296289 -714 704 -0.01342592592592578 -714 705 -0.1551783264746214 -714 706 -0.02407407407407411 -714 707 -8.673617379884035e-18 -714 708 -0.106310013717416 -714 709 -8.500145032286355e-17 -714 710 -0.02870370370370406 -714 711 -0.2040466392318249 -714 712 1.040834085586084e-17 -714 713 1.249000902703301e-16 -714 714 1.241426611796978 -714 715 0.01296296296296298 -714 716 -0.01342592592592591 -714 717 -0.1551783264746227 -714 718 0.0240740740740741 -714 719 1.561251128379126e-17 -714 720 -0.1063100137174232 -714 1168 -0.012962962962963 -714 1169 0.01342592592592614 -714 1170 -0.1551783264746234 -714 1171 8.326672684688674e-17 -714 1172 0.02870370370370363 -714 1173 -0.2040466392318248 -714 1174 0.01296296296296292 -714 1175 0.01342592592592585 -714 1176 -0.1551783264746216 -715 715 1 -716 716 1 -717 709 -0.01203703703703703 -717 710 -0.01342592592592588 -717 711 -0.05315500685871215 -717 712 -0.01296296296296297 -717 713 0.01342592592592597 -717 714 -0.1551783264746227 -717 715 -2.42861286636753e-17 -717 716 -0.02870370370370335 -717 717 0.6207133058984902 -717 718 2.42861286636753e-17 -717 719 0.02870370370370326 -717 720 -0.2040466392318206 -717 721 0.01203703703703705 -717 722 -0.01342592592592586 -717 723 -0.05315500685871255 -717 724 0.01296296296296295 -717 725 0.01342592592592586 -717 726 -0.1551783264746222 -718 709 -0.0009703703703703694 -718 710 -0.0004999999999999994 -718 711 -0.008333333333333333 -718 712 -0.001659259259259277 -718 713 2.710505431213761e-18 -718 714 -0.03333333333333333 -718 715 -0.0002814814814814639 -718 716 -6.505213034913027e-19 -718 718 0.007762962962962975 -718 719 -2.710505431213761e-18 -718 720 -6.938893903907228e-18 -718 721 -0.0009703703703703721 -718 722 0.0005 -718 723 0.008333333333333335 -718 724 -0.001659259259259283 -718 726 0.03333333333333334 -718 1171 -0.0009703703703703738 -718 1172 0.0005000000000000008 -718 1173 -0.008333333333333331 -718 1174 -0.0002814814814814639 -718 1175 -7.589415207398531e-19 -718 1176 -3.469446951953614e-18 -718 1177 -0.0009703703703703721 -718 1178 -0.0005 -718 1179 0.008333333333333335 -719 709 -0.0004999999999999994 -719 710 -0.001040740740740734 -719 711 -0.009259259259259189 -719 712 2.602085213965211e-18 -719 713 0.0002814814814814666 -719 714 1.040834085586084e-17 -719 715 -7.589415207398531e-19 -719 716 -0.00236296296296294 -719 717 -0.0370370370370367 -719 718 -2.602085213965211e-18 -719 719 0.008325925925925903 -719 720 -1.040834085586084e-17 -719 721 0.0005000000000000001 -719 722 -0.001040740740740737 -719 723 -0.009259259259259169 -719 725 0.0002814814814814615 -719 726 -4.336808689942018e-17 -719 1171 0.0005000000000000007 -719 1172 -0.001040740740740743 -719 1173 0.009259259259259226 -719 1174 -7.589415207398531e-19 -719 1175 -0.00236296296296294 -719 1176 0.03703703703703689 -719 1177 -0.0005000000000000001 -719 1178 -0.001040740740740737 -719 1179 0.009259259259259212 -720 709 -0.01296296296296292 -720 710 -0.0134259259259258 -720 711 -0.1551783264746217 -720 712 -0.02407407407407412 -720 713 -3.469446951953614e-18 -720 714 -0.1063100137174232 -720 715 -2.949029909160572e-17 -720 716 -0.02870370370370361 -720 717 -0.2040466392318206 -720 718 1.040834085586084e-17 -720 719 1.734723475976807e-16 -720 720 1.241426611796977 -720 721 0.01296296296296295 -720 722 -0.01342592592592588 -720 723 -0.1551783264746222 -720 724 0.0240740740740741 -720 725 2.255140518769849e-17 -720 726 -0.1063100137174241 -720 1171 -0.01296296296296297 -720 1172 0.01342592592592597 -720 1173 -0.1551783264746226 -720 1174 2.602085213965211e-17 -720 1175 0.02870370370370326 -720 1176 -0.2040466392318205 -720 1177 0.01296296296296295 -720 1178 0.01342592592592586 -720 1179 -0.1551783264746221 -721 721 1 -722 722 1 -723 715 -0.01203703703703705 -723 716 -0.01342592592592586 -723 717 -0.05315500685871255 -723 718 -0.01296296296296295 -723 719 0.01342592592592586 -723 720 -0.1551783264746222 -723 721 -4.85722573273506e-17 -723 722 -0.02870370370370372 -723 723 0.6207133058984895 -723 724 6.071532165918825e-17 -723 725 0.02870370370370377 -723 726 -0.2040466392318245 -723 727 0.0120370370370371 -723 728 -0.01342592592592596 -723 729 -0.05315500685870884 -723 730 0.01296296296296289 -723 731 0.01342592592592591 -723 732 -0.1551783264746214 -724 715 -0.0009703703703703722 -724 716 -0.0005000000000000001 -724 717 -0.008333333333333333 -724 718 -0.001659259259259283 -724 720 -0.03333333333333333 -724 721 -0.0002814814814814856 -724 722 -1.192622389734055e-18 -724 723 -3.469446951953614e-18 -724 724 0.007762962962962959 -724 725 -5.421010862427522e-18 -724 726 -1.387778780781446e-17 -724 727 -0.0009703703703703723 -724 728 0.0005000000000000013 -724 729 0.008333333333333333 -724 730 -0.001659259259259226 -724 731 5.421010862427522e-18 -724 732 0.03333333333333333 -724 1174 -0.0009703703703703722 -724 1175 0.0005000000000000001 -724 1176 -0.008333333333333331 -724 1177 -0.0002814814814814856 -724 1178 -1.409462824231156e-18 -724 1179 -3.469446951953614e-18 -724 1180 -0.0009703703703703634 -724 1181 -0.0004999999999999987 -724 1182 0.008333333333333333 -725 715 -0.0005 -725 716 -0.001040740740740737 -725 717 -0.00925925925925917 -725 718 -1.084202172485504e-19 -725 719 0.0002814814814814615 -725 720 -4.163336342344337e-17 -725 721 -1.409462824231156e-18 -725 722 -0.002362962962962969 -725 723 -0.03703703703703704 -725 724 -5.421010862427522e-18 -725 725 0.008325925925925931 -725 726 -1.908195823574488e-16 -725 727 0.0005000000000000013 -725 728 -0.001040740740740754 -725 729 -0.009259259259259404 -725 730 5.204170427930421e-18 -725 731 0.00028148148148151 -725 732 -2.584737979205443e-16 -725 1174 0.0005000000000000001 -725 1175 -0.001040740740740737 -725 1176 0.009259259259259212 -725 1177 -1.192622389734055e-18 -725 1178 -0.002362962962962969 -725 1179 0.03703703703703715 -725 1180 -0.0004999999999999986 -725 1181 -0.001040740740740737 -725 1182 0.009259259259259309 -726 715 -0.01296296296296295 -726 716 -0.01342592592592588 -726 717 -0.1551783264746222 -726 718 -0.02407407407407411 -726 719 2.255140518769849e-17 -726 720 -0.1063100137174241 -726 721 -5.204170427930421e-17 -726 722 -0.02870370370370384 -726 723 -0.2040466392318245 -726 724 1.387778780781446e-17 -726 725 1.491862189340054e-16 -726 726 1.241426611796978 -726 727 0.012962962962963 -726 728 -0.01342592592592602 -726 729 -0.1551783264746235 -726 730 0.0240740740740741 -726 731 2.081668171172169e-17 -726 732 -0.106310013717416 -726 1174 -0.01296296296296295 -726 1175 0.01342592592592586 -726 1176 -0.1551783264746221 -726 1177 5.724587470723463e-17 -726 1178 0.02870370370370377 -726 1179 -0.2040466392318244 -726 1180 0.01296296296296289 -726 1181 0.01342592592592591 -726 1182 -0.1551783264746213 -727 727 1 -728 728 1 -729 721 -0.012037037037037 -729 722 -0.01342592592592597 -729 723 -0.05315500685870884 -729 724 -0.012962962962963 -729 725 0.01342592592592615 -729 726 -0.1551783264746235 -729 727 -5.204170427930421e-18 -729 728 -0.02870370370370408 -729 729 0.6207133058984966 -729 730 5.204170427930421e-18 -729 731 0.02870370370370393 -729 732 -0.2040466392318305 -729 733 0.012037037037037 -729 734 -0.01342592592592603 -729 735 -0.05315500685870939 -729 736 0.012962962962963 -729 737 0.013425925925926 -729 738 -0.1551783264746244 -730 721 -0.0009703703703703634 -730 722 -0.0004999999999999986 -730 723 -0.008333333333333331 -730 724 -0.001659259259259226 -730 725 5.204170427930421e-18 -730 726 -0.03333333333333333 -730 727 -0.0002814814814815097 -730 728 -2.059984127722458e-18 -730 729 -1.734723475976807e-18 -730 730 0.007762962962962942 -730 731 -7.914675859144182e-18 -730 732 -6.938893903907228e-18 -730 733 -0.0009703703703703701 -730 734 0.0005000000000000007 -730 735 0.008333333333333333 -730 736 -0.001659259259259226 -730 737 2.710505431213761e-18 -730 738 0.03333333333333333 -730 1177 -0.0009703703703703723 -730 1178 0.0005000000000000013 -730 1179 -0.008333333333333331 -730 1180 -0.0002814814814815097 -730 1181 -1.951563910473908e-18 -730 1182 -1.734723475976807e-18 -730 1183 -0.0009703703703703656 -730 1184 -0.0004999999999999994 -730 1185 0.008333333333333333 -731 721 -0.0004999999999999987 -731 722 -0.001040740740740736 -731 723 -0.00925925925925933 -731 724 5.421010862427522e-18 -731 725 0.00028148148148151 -731 726 3.989863994746656e-17 -731 727 -1.843143693225358e-18 -731 728 -0.002362962962963001 -731 729 -0.03703703703703733 -731 730 -8.023096076392733e-18 -731 731 0.008325925925925962 -731 732 1.179611963664229e-16 -731 733 0.0005000000000000007 -731 734 -0.00104074074074075 -731 735 -0.009259259259259373 -731 736 2.602085213965211e-18 -731 737 0.00028148148148151 -731 738 -1.405126015541214e-16 -731 1177 0.0005000000000000013 -731 1178 -0.001040740740740754 -731 1179 0.009259259259259384 -731 1180 -2.059984127722458e-18 -731 1181 -0.002362962962963001 -731 1182 0.03703703703703752 -731 1183 -0.0004999999999999994 -731 1184 -0.001040740740740741 -731 1185 0.009259259259259339 -732 721 -0.01296296296296289 -732 722 -0.01342592592592578 -732 723 -0.1551783264746214 -732 724 -0.02407407407407411 -732 725 -8.673617379884035e-18 -732 726 -0.106310013717416 -732 727 -1.613292832658431e-16 -732 728 -0.02870370370370436 -732 729 -0.2040466392318304 -732 730 1.613292832658431e-16 -732 731 1.318389841742373e-16 -732 732 1.241426611796989 -732 733 0.01296296296296305 -732 734 -0.01342592592592606 -732 735 -0.1551783264746255 -732 736 0.02407407407407395 -732 737 1.561251128379126e-17 -732 738 -0.1063100137174176 -732 1177 -0.012962962962963 -732 1178 0.01342592592592614 -732 1179 -0.1551783264746234 -732 1180 8.673617379884035e-18 -732 1181 0.02870370370370393 -732 1182 -0.2040466392318304 -732 1183 0.01296296296296299 -732 1184 0.013425925925926 -732 1185 -0.1551783264746243 -733 733 1 -734 734 1 -735 727 -0.01203703703703695 -735 728 -0.01342592592592603 -735 729 -0.05315500685870939 -735 730 -0.01296296296296305 -735 731 0.01342592592592612 -735 732 -0.1551783264746255 -735 733 -1.006139616066548e-16 -735 734 -0.02870370370370371 -735 735 0.6207133058984955 -735 736 1.006139616066548e-16 -735 737 0.02870370370370363 -735 738 -0.2040466392318266 -735 739 0.01203703703703705 -735 740 -0.01342592592592588 -735 741 -0.05315500685871186 -735 742 0.01296296296296295 -735 743 0.01342592592592588 -735 744 -0.1551783264746222 -736 727 -0.0009703703703703656 -736 728 -0.0004999999999999994 -736 729 -0.008333333333333331 -736 730 -0.001659259259259226 -736 731 2.49366499671666e-18 -736 732 -0.03333333333333333 -736 733 -0.0002814814814814881 -736 734 -6.505213034913027e-19 -736 736 0.007762962962962958 -736 737 -2.49366499671666e-18 -736 738 -6.938893903907228e-18 -736 739 -0.0009703703703703715 -736 740 0.0005 -736 741 0.008333333333333333 -736 742 -0.001659259259259277 -736 744 0.03333333333333334 -736 1180 -0.0009703703703703701 -736 1181 0.0005000000000000007 -736 1182 -0.008333333333333331 -736 1183 -0.000281481481481488 -736 1184 -6.505213034913027e-19 -736 1185 -1.734723475976807e-18 -736 1186 -0.0009703703703703715 -736 1187 -0.0005 -736 1188 0.008333333333333335 -737 727 -0.0004999999999999995 -737 728 -0.001040740740740741 -737 729 -0.009259259259259339 -737 730 2.818925648462312e-18 -737 731 0.00028148148148151 -737 732 6.938893903907228e-18 -737 733 -6.505213034913027e-19 -737 734 -0.002362962962962972 -737 735 -0.03703703703703705 -737 736 -2.602085213965211e-18 -737 737 0.008325925925925935 -737 738 3.122502256758253e-17 -737 739 0.0005000000000000001 -737 740 -0.001040740740740738 -737 741 -0.009259259259259196 -737 742 -1.084202172485504e-19 -737 743 0.0002814814814814667 -737 744 -2.255140518769849e-17 -737 1180 0.0005000000000000007 -737 1181 -0.00104074074074075 -737 1182 0.009259259259259377 -737 1183 -6.505213034913027e-19 -737 1184 -0.002362962962962972 -737 1185 0.0370370370370372 -737 1186 -0.0005 -737 1187 -0.001040740740740738 -737 1188 0.009259259259259219 -738 727 -0.012962962962963 -738 728 -0.01342592592592594 -738 729 -0.1551783264746244 -738 730 -0.02407407407407396 -738 731 -1.734723475976807e-18 -738 732 -0.1063100137174177 -738 733 4.683753385137379e-17 -738 734 -0.02870370370370393 -738 735 -0.2040466392318266 -738 736 -1.457167719820518e-16 -738 737 1.283695372222837e-16 -738 738 1.241426611796988 -738 739 0.01296296296296295 -738 740 -0.01342592592592589 -738 741 -0.1551783264746222 -738 742 0.0240740740740741 -738 743 1.040834085586084e-17 -738 744 -0.1063100137174232 -738 1180 -0.01296296296296305 -738 1181 0.01342592592592612 -738 1182 -0.1551783264746254 -738 1183 1.040834085586084e-16 -738 1184 0.02870370370370363 -738 1185 -0.2040466392318265 -738 1186 0.01296296296296295 -738 1187 0.01342592592592588 -738 1188 -0.1551783264746221 -739 739 1 -740 740 1 -741 733 -0.01203703703703705 -741 734 -0.01342592592592588 -741 735 -0.05315500685871185 -741 736 -0.01296296296296295 -741 737 0.01342592592592588 -741 738 -0.1551783264746222 -741 739 3.469446951953614e-17 -741 740 -0.02870370370370364 -741 741 0.6207133058984888 -741 742 -2.949029909160572e-17 -741 743 0.02870370370370361 -741 744 -0.2040466392318226 -741 745 0.01203703703703702 -741 746 -0.01342592592592593 -741 747 -0.05315500685870947 -741 748 0.01296296296296298 -741 749 0.01342592592592595 -741 750 -0.1551783264746228 -742 733 -0.0009703703703703715 -742 734 -0.0005 -742 735 -0.008333333333333333 -742 736 -0.001659259259259277 -742 737 -1.084202172485504e-19 -742 738 -0.03333333333333333 -742 739 -0.0002814814814814747 -742 740 6.505213034913027e-19 -742 742 0.007762962962962967 -742 743 2.818925648462312e-18 -742 744 -1.040834085586084e-17 -742 745 -0.000970370370370368 -742 746 0.0004999999999999994 -742 747 0.008333333333333333 -742 748 -0.001659259259259257 -742 749 -2.710505431213761e-18 -742 750 0.03333333333333334 -742 1183 -0.0009703703703703715 -742 1184 0.0005000000000000001 -742 1185 -0.008333333333333331 -742 1186 -0.0002814814814814747 -742 1187 5.421010862427522e-19 -742 1188 -3.469446951953614e-18 -742 1189 -0.0009703703703703724 -742 1190 -0.0005000000000000007 -742 1191 0.008333333333333333 -743 733 -0.0005 -743 734 -0.001040740740740738 -743 735 -0.009259259259259198 -743 737 0.0002814814814814667 -743 738 -2.081668171172169e-17 -743 739 5.421010862427522e-19 -743 740 -0.002362962962962954 -743 741 -0.03703703703703695 -743 742 2.710505431213761e-18 -743 743 0.008325925925925917 -743 744 6.938893903907228e-17 -743 745 0.0004999999999999994 -743 746 -0.001040740740740737 -743 747 -0.009259259259259255 -743 748 -2.710505431213761e-18 -743 749 0.0002814814814814829 -743 750 1.595945597898663e-16 -743 1183 0.0005 -743 1184 -0.001040740740740738 -743 1185 0.009259259259259219 -743 1186 7.589415207398531e-19 -743 1187 -0.002362962962962954 -743 1188 0.03703703703703692 -743 1189 -0.0005000000000000007 -743 1190 -0.001040740740740746 -743 1191 0.009259259259259271 -744 733 -0.01296296296296295 -744 734 -0.01342592592592589 -744 735 -0.1551783264746222 -744 736 -0.02407407407407412 -744 737 1.040834085586084e-17 -744 738 -0.1063100137174232 -744 739 2.949029909160572e-17 -744 740 -0.02870370370370361 -744 741 -0.2040466392318225 -744 742 1.387778780781446e-17 -744 743 -4.85722573273506e-17 -744 744 1.241426611796977 -744 745 0.01296296296296292 -744 746 -0.01342592592592588 -744 747 -0.1551783264746218 -744 748 0.0240740740740741 -744 749 -2.775557561562891e-17 -744 750 -0.1063100137174205 -744 1183 -0.01296296296296295 -744 1184 0.01342592592592588 -744 1185 -0.1551783264746221 -744 1186 -2.775557561562891e-17 -744 1187 0.02870370370370362 -744 1188 -0.2040466392318224 -744 1189 0.01296296296296297 -744 1190 0.01342592592592595 -744 1191 -0.1551783264746227 -745 745 1 -746 746 1 -747 739 -0.01203703703703708 -747 740 -0.01342592592592592 -747 741 -0.05315500685870948 -747 742 -0.01296296296296292 -747 743 0.01342592592592583 -747 744 -0.1551783264746218 -747 745 1.734723475976807e-18 -747 746 -0.02870370370370365 -747 747 0.6207133058984875 -747 748 1.734723475976807e-18 -747 749 0.02870370370370376 -747 750 -0.2040466392318225 -747 751 0.01203703703703708 -747 752 -0.01342592592592588 -747 753 -0.05315500685871216 -747 754 0.01296296296296292 -747 755 0.01342592592592585 -747 756 -0.1551783264746217 -748 739 -0.0009703703703703725 -748 740 -0.0005000000000000007 -748 741 -0.008333333333333333 -748 742 -0.001659259259259257 -748 743 -2.710505431213761e-18 -748 744 -0.03333333333333333 -748 745 -0.0002814814814814747 -748 748 0.007762962962962967 -748 750 -1.040834085586084e-17 -748 751 -0.0009703703703703737 -748 752 0.0005000000000000007 -748 753 0.008333333333333333 -748 754 -0.001659259259259277 -748 755 2.710505431213761e-18 -748 756 0.03333333333333334 -748 1186 -0.0009703703703703681 -748 1187 0.0004999999999999994 -748 1188 -0.008333333333333331 -748 1189 -0.0002814814814814747 -748 1191 -1.734723475976807e-18 -748 1192 -0.0009703703703703695 -748 1193 -0.0004999999999999994 -748 1194 0.008333333333333335 -749 739 -0.0005000000000000007 -749 740 -0.001040740740740746 -749 741 -0.009259259259259293 -749 742 -2.602085213965211e-18 -749 743 0.000281481481481483 -749 744 1.214306433183765e-17 -749 746 -0.002362962962962954 -749 747 -0.037037037037037 -749 748 1.084202172485504e-19 -749 749 0.008325925925925915 -749 750 -1.040834085586084e-16 -749 751 0.0005000000000000008 -749 752 -0.001040740740740743 -749 753 -0.009259259259259228 -749 754 2.710505431213761e-18 -749 755 0.0002814814814814667 -749 756 -1.370431546021678e-16 -749 1186 0.0004999999999999993 -749 1187 -0.001040740740740736 -749 1188 0.009259259259259234 -749 1190 -0.002362962962962954 -749 1191 0.03703703703703688 -749 1192 -0.0004999999999999994 -749 1193 -0.001040740740740734 -749 1194 0.009259259259259189 -750 739 -0.01296296296296297 -750 740 -0.013425925925926 -750 741 -0.1551783264746228 -750 742 -0.02407407407407411 -750 743 -5.204170427930421e-18 -750 744 -0.1063100137174205 -750 745 -1.734723475976807e-18 -750 746 -0.02870370370370347 -750 747 -0.2040466392318225 -750 748 8.673617379884035e-18 -750 749 -7.632783294297951e-17 -750 750 1.241426611796977 -750 751 0.01296296296296298 -750 752 -0.01342592592592591 -750 753 -0.1551783264746227 -750 754 0.0240740740740741 -750 755 1.561251128379126e-17 -750 756 -0.1063100137174232 -750 1186 -0.01296296296296292 -750 1187 0.01342592592592583 -750 1188 -0.1551783264746217 -750 1189 1.734723475976807e-18 -750 1190 0.02870370370370376 -750 1191 -0.2040466392318224 -750 1192 0.01296296296296292 -750 1193 0.01342592592592585 -750 1194 -0.1551783264746216 -751 751 1 -752 752 1 -753 745 -0.01203703703703703 -753 746 -0.01342592592592588 -753 747 -0.05315500685871215 -753 748 -0.01296296296296297 -753 749 0.01342592592592597 -753 750 -0.1551783264746227 -753 751 5.377642775528102e-17 -753 752 -0.02870370370370372 -753 753 0.6207133058984955 -753 754 -4.85722573273506e-17 -753 755 0.02870370370370363 -753 756 -0.2040466392318266 -753 757 0.01203703703703697 -753 758 -0.01342592592592603 -753 759 -0.05315500685870909 -753 760 0.01296296296296302 -753 761 0.01342592592592603 -753 762 -0.1551783264746249 -754 745 -0.0009703703703703694 -754 746 -0.0004999999999999994 -754 747 -0.008333333333333333 -754 748 -0.001659259259259277 -754 749 2.710505431213761e-18 -754 750 -0.03333333333333333 -754 751 -0.0002814814814814882 -754 752 -5.421010862427522e-19 -754 753 -1.734723475976807e-18 -754 754 0.007762962962962958 -754 755 -2.818925648462312e-18 -754 756 -1.040834085586084e-17 -754 757 -0.000970370370370368 -754 758 0.0004999999999999999 -754 759 0.008333333333333333 -754 760 -0.001659259259259226 -754 761 1.084202172485504e-19 -754 762 0.03333333333333333 -754 1189 -0.0009703703703703738 -754 1190 0.0005000000000000008 -754 1191 -0.008333333333333331 -754 1192 -0.0002814814814814882 -754 1193 -7.589415207398531e-19 -754 1194 -3.469446951953614e-18 -754 1195 -0.000970370370370368 -754 1196 -0.0005 -754 1197 0.008333333333333333 -755 745 -0.0004999999999999994 -755 746 -0.001040740740740734 -755 747 -0.009259259259259189 -755 748 2.602085213965211e-18 -755 749 0.0002814814814814666 -755 750 1.040834085586084e-17 -755 751 -6.505213034913027e-19 -755 752 -0.002362962962962972 -755 753 -0.03703703703703705 -755 754 -2.927345865710862e-18 -755 755 0.008325925925925935 -755 756 2.42861286636753e-17 -755 757 0.0005 -755 758 -0.001040740740740745 -755 759 -0.009259259259259345 -755 761 0.00028148148148151 -755 762 -2.255140518769849e-17 -755 1189 0.0005000000000000007 -755 1190 -0.001040740740740743 -755 1191 0.009259259259259226 -755 1192 -5.421010862427522e-19 -755 1193 -0.002362962962962972 -755 1194 0.0370370370370372 -755 1195 -0.0005 -755 1196 -0.001040740740740745 -755 1197 0.009259259259259368 -756 745 -0.01296296296296292 -756 746 -0.0134259259259258 -756 747 -0.1551783264746217 -756 748 -0.02407407407407412 -756 749 -3.469446951953614e-18 -756 750 -0.1063100137174232 -756 751 -1.023486850826316e-16 -756 752 -0.02870370370370393 -756 753 -0.2040466392318266 -756 754 1.647987302177967e-16 -756 755 1.214306433183765e-16 -756 756 1.241426611796988 -756 757 0.01296296296296302 -756 758 -0.01342592592592604 -756 759 -0.155178326474625 -756 760 0.02407407407407395 -756 761 1.387778780781446e-17 -756 762 -0.1063100137174177 -756 1189 -0.01296296296296297 -756 1190 0.01342592592592597 -756 1191 -0.1551783264746226 -756 1192 -4.683753385137379e-17 -756 1193 0.02870370370370363 -756 1194 -0.2040466392318265 -756 1195 0.01296296296296302 -756 1196 0.01342592592592603 -756 1197 -0.1551783264746249 -757 757 1 -758 758 1 -759 751 -0.01203703703703698 -759 752 -0.01342592592592603 -759 753 -0.05315500685870909 -759 754 -0.01296296296296302 -759 755 0.01342592592592603 -759 756 -0.1551783264746249 -759 757 -4.336808689942018e-17 -759 758 -0.02870370370370409 -759 759 0.6207133058984954 -759 760 4.683753385137379e-17 -759 761 0.02870370370370406 -759 762 -0.2040466392318305 -759 763 0.01203703703703702 -759 764 -0.01342592592592596 -759 765 -0.05315500685870794 -759 766 0.01296296296296297 -759 767 0.01342592592592599 -759 768 -0.1551783264746229 -760 751 -0.000970370370370368 -760 752 -0.0005 -760 753 -0.008333333333333331 -760 754 -0.001659259259259226 -760 756 -0.03333333333333333 -760 757 -0.0002814814814815097 -760 758 7.589415207398531e-19 -760 759 -1.734723475976807e-18 -760 760 0.007762962962962944 -760 761 2.602085213965211e-18 -760 762 -6.938893903907228e-18 -760 763 -0.0009703703703703656 -760 764 0.0004999999999999993 -760 765 0.008333333333333333 -760 766 -0.001659259259259226 -760 767 -2.602085213965211e-18 -760 768 0.03333333333333333 -760 1192 -0.000970370370370368 -760 1193 0.0005 -760 1194 -0.008333333333333331 -760 1195 -0.0002814814814815097 -760 1196 6.505213034913027e-19 -760 1197 -1.734723475976807e-18 -760 1198 -0.0009703703703703701 -760 1199 -0.0005000000000000007 -760 1200 0.008333333333333333 -761 751 -0.0005000000000000001 -761 752 -0.001040740740740745 -761 753 -0.009259259259259345 -761 754 2.168404344971009e-19 -761 755 0.00028148148148151 -761 756 -2.255140518769849e-17 -761 757 7.589415207398531e-19 -761 758 -0.002362962962963001 -761 759 -0.03703703703703737 -761 760 2.602085213965211e-18 -761 761 0.008325925925925962 -761 762 -5.551115123125783e-17 -761 763 0.0004999999999999994 -761 764 -0.001040740740740741 -761 765 -0.009259259259259316 -761 766 -2.602085213965211e-18 -761 767 0.00028148148148151 -761 768 9.540979117872439e-17 -761 1192 0.0004999999999999999 -761 1193 -0.001040740740740745 -761 1194 0.009259259259259368 -761 1195 7.589415207398531e-19 -761 1196 -0.002362962962963001 -761 1197 0.03703703703703748 -761 1198 -0.0005000000000000007 -761 1199 -0.00104074074074075 -761 1200 0.009259259259259398 -762 751 -0.01296296296296302 -762 752 -0.01342592592592604 -762 753 -0.155178326474625 -762 754 -0.02407407407407396 -762 755 1.387778780781446e-17 -762 756 -0.1063100137174177 -762 757 1.040834085586084e-16 -762 758 -0.02870370370370423 -762 759 -0.2040466392318304 -762 760 -1.387778780781446e-16 -762 761 1.144917494144693e-16 -762 762 1.241426611796989 -762 763 0.01296296296296292 -762 764 -0.01342592592592595 -762 765 -0.1551783264746219 -762 766 0.0240740740740741 -762 767 1.214306433183765e-17 -762 768 -0.106310013717416 -762 1192 -0.01296296296296302 -762 1193 0.01342592592592603 -762 1194 -0.1551783264746249 -762 1195 4.85722573273506e-17 -762 1196 0.02870370370370406 -762 1197 -0.2040466392318304 -762 1198 0.01296296296296297 -762 1199 0.01342592592592598 -762 1200 -0.1551783264746229 -763 763 1 -764 764 1 -765 757 -0.01203703703703708 -765 758 -0.01342592592592595 -765 759 -0.05315500685870794 -765 760 -0.01296296296296292 -765 761 0.01342592592592586 -765 762 -0.1551783264746219 -765 763 -2.775557561562891e-17 -765 764 -0.02870370370370365 -765 765 0.6207133058984874 -765 766 2.775557561562891e-17 -765 767 0.02870370370370379 -765 768 -0.2040466392318226 -765 769 0.01203703703703711 -765 770 -0.01342592592592584 -765 771 -0.05315500685871398 -765 772 0.01296296296296289 -765 773 0.0134259259259258 -765 774 -0.155178326474621 -766 757 -0.0009703703703703701 -766 758 -0.0005000000000000007 -766 759 -0.008333333333333331 -766 760 -0.001659259259259226 -766 761 -2.818925648462312e-18 -766 762 -0.03333333333333333 -766 763 -0.0002814814814814749 -766 764 -6.505213034913027e-19 -766 766 0.007762962962962967 -766 767 -2.38524477946811e-18 -766 768 -3.469446951953614e-18 -766 769 -0.0009703703703703784 -766 770 0.0005000000000000013 -766 771 0.008333333333333335 -766 772 -0.001659259259259308 -766 773 5.204170427930421e-18 -766 774 0.03333333333333334 -766 1195 -0.0009703703703703656 -766 1196 0.0004999999999999994 -766 1197 -0.008333333333333331 -766 1198 -0.0002814814814814748 -766 1199 -6.505213034913027e-19 -766 1201 -0.0009703703703703695 -766 1202 -0.0004999999999999987 -766 1203 0.008333333333333335 -767 757 -0.0005000000000000008 -767 758 -0.00104074074074075 -767 759 -0.009259259259259354 -767 760 -2.602085213965211e-18 -767 761 0.00028148148148151 -767 762 -5.204170427930421e-17 -767 763 -6.505213034913027e-19 -767 764 -0.002362962962962954 -767 765 -0.03703703703703701 -767 766 -2.602085213965211e-18 -767 767 0.008325925925925917 -767 768 -1.283695372222837e-16 -767 769 0.0005000000000000013 -767 770 -0.001040740740740743 -767 771 -0.009259259259259196 -767 772 5.529431079676073e-18 -767 773 0.0002814814814814401 -767 774 -1.89084858881472e-16 -767 1195 0.0004999999999999993 -767 1196 -0.001040740740740741 -767 1197 0.009259259259259361 -767 1198 -7.589415207398531e-19 -767 1199 -0.002362962962962954 -767 1200 0.03703703703703688 -767 1201 -0.0004999999999999987 -767 1202 -0.001040740740740725 -767 1203 0.009259259259259037 -768 757 -0.01296296296296297 -768 758 -0.01342592592592607 -768 759 -0.1551783264746229 -768 760 -0.02407407407407411 -768 761 2.949029909160572e-17 -768 762 -0.106310013717416 -768 763 -3.122502256758253e-17 -768 764 -0.02870370370370345 -768 765 -0.2040466392318226 -768 766 1.214306433183765e-17 -768 767 -7.28583859910259e-17 -768 768 1.241426611796977 -768 769 0.01296296296296301 -768 770 -0.01342592592592587 -768 771 -0.1551783264746231 -768 772 0.0240740740740741 -768 773 -1.561251128379126e-17 -768 774 -0.1063100137174277 -768 1195 -0.01296296296296292 -768 1196 0.01342592592592586 -768 1197 -0.1551783264746218 -768 1198 2.775557561562891e-17 -768 1199 0.02870370370370379 -768 1200 -0.2040466392318225 -768 1201 0.01296296296296289 -768 1202 0.0134259259259258 -768 1203 -0.1551783264746209 -769 769 1 -770 770 1 -771 763 -0.012037037037037 -771 764 -0.01342592592592586 -771 765 -0.05315500685871398 -771 766 -0.01296296296296301 -771 767 0.01342592592592603 -771 768 -0.155178326474623 -771 769 -5.030698080332741e-17 -771 770 -0.02870370370370327 -771 771 0.6207133058984897 -771 772 5.724587470723463e-17 -771 773 0.02870370370370309 -771 774 -0.2040466392318186 -771 775 0.01203703703703705 -771 776 -0.01342592592592588 -771 777 -0.05315500685871186 -771 778 0.01296296296296295 -771 779 0.01342592592592588 -771 780 -0.1551783264746222 -772 763 -0.0009703703703703695 -772 764 -0.0004999999999999987 -772 765 -0.008333333333333333 -772 766 -0.001659259259259308 -772 767 5.421010862427522e-18 -772 768 -0.03333333333333333 -772 769 -0.0002814814814814531 -772 770 -1.301042606982605e-18 -772 771 -1.734723475976807e-18 -772 772 0.007762962962962983 -772 773 -5.421010862427522e-18 -772 774 -1.387778780781446e-17 -772 775 -0.0009703703703703715 -772 776 0.0005 -772 777 0.008333333333333333 -772 778 -0.001659259259259277 -772 780 0.03333333333333334 -772 1198 -0.0009703703703703784 -772 1199 0.0005000000000000013 -772 1200 -0.008333333333333333 -772 1201 -0.0002814814814814531 -772 1202 -1.301042606982605e-18 -772 1203 -3.469446951953614e-18 -772 1204 -0.0009703703703703715 -772 1205 -0.0005 -772 1206 0.008333333333333335 -773 763 -0.0004999999999999987 -773 764 -0.001040740740740725 -773 765 -0.009259259259259123 -773 766 5.204170427930421e-18 -773 767 0.00028148148148144 -773 768 1.07552855510562e-16 -773 769 -1.301042606982605e-18 -773 770 -0.002362962962962925 -773 771 -0.0370370370370366 -773 772 -5.529431079676073e-18 -773 773 0.008325925925925888 -773 774 2.775557561562891e-16 -773 775 0.0005000000000000001 -773 776 -0.001040740740740738 -773 777 -0.009259259259259196 -773 778 -1.084202172485504e-19 -773 779 0.0002814814814814667 -773 780 -2.255140518769849e-17 -773 1198 0.0005000000000000014 -773 1199 -0.001040740740740743 -773 1200 0.00925925925925911 -773 1201 -1.301042606982605e-18 -773 1202 -0.002362962962962925 -773 1203 0.03703703703703668 -773 1204 -0.0005 -773 1205 -0.001040740740740738 -773 1206 0.009259259259259219 -774 763 -0.01296296296296289 -774 764 -0.01342592592592563 -774 765 -0.155178326474621 -774 766 -0.02407407407407412 -774 767 -4.683753385137379e-17 -774 768 -0.1063100137174277 -774 769 -5.724587470723463e-17 -774 770 -0.02870370370370341 -774 771 -0.2040466392318187 -774 772 1.561251128379126e-17 -774 773 -3.122502256758253e-17 -774 774 1.241426611796976 -774 775 0.01296296296296295 -774 776 -0.01342592592592589 -774 777 -0.1551783264746222 -774 778 0.0240740740740741 -774 779 1.040834085586084e-17 -774 780 -0.1063100137174232 -774 1198 -0.012962962962963 -774 1199 0.01342592592592603 -774 1200 -0.155178326474623 -774 1201 5.898059818321144e-17 -774 1202 0.02870370370370309 -774 1203 -0.2040466392318186 -774 1204 0.01296296296296295 -774 1205 0.01342592592592588 -774 1206 -0.1551783264746221 -775 775 1 -776 776 1 -777 769 -0.01203703703703705 -777 770 -0.01342592592592588 -777 771 -0.05315500685871185 -777 772 -0.01296296296296295 -777 773 0.01342592592592588 -777 774 -0.1551783264746222 -777 775 3.469446951953614e-17 -777 776 -0.02870370370370372 -777 777 0.6207133058984902 -777 778 -2.949029909160572e-17 -777 779 0.0287037037037037 -777 780 -0.2040466392318245 -777 781 0.01203703703703702 -777 782 -0.01342592592592595 -777 783 -0.05315500685870862 -777 784 0.01296296296296298 -777 785 0.01342592592592597 -777 786 -0.1551783264746229 -778 769 -0.0009703703703703715 -778 770 -0.0005 -778 771 -0.008333333333333333 -778 772 -0.001659259259259277 -778 773 -1.084202172485504e-19 -778 774 -0.03333333333333333 -778 775 -0.0002814814814814856 -778 776 6.505213034913027e-19 -778 778 0.007762962962962959 -778 779 2.710505431213761e-18 -778 780 -1.040834085586084e-17 -778 781 -0.0009703703703703662 -778 782 0.0004999999999999994 -778 783 0.008333333333333333 -778 784 -0.001659259259259232 -778 785 -2.602085213965211e-18 -778 786 0.03333333333333333 -778 1201 -0.0009703703703703715 -778 1202 0.0005000000000000001 -778 1203 -0.008333333333333331 -778 1204 -0.0002814814814814856 -778 1205 6.505213034913027e-19 -778 1206 -3.469446951953614e-18 -778 1207 -0.0009703703703703707 -778 1208 -0.0005000000000000008 -778 1209 0.008333333333333333 -779 769 -0.0005 -779 770 -0.001040740740740738 -779 771 -0.009259259259259198 -779 773 0.0002814814814814667 -779 774 -2.081668171172169e-17 -779 775 6.505213034913027e-19 -779 776 -0.002362962962962969 -779 777 -0.03703703703703702 -779 778 2.710505431213761e-18 -779 779 0.008325925925925933 -779 780 -1.040834085586084e-16 -779 781 0.0004999999999999994 -779 782 -0.00104074074074074 -779 783 -0.009259259259259287 -779 784 -2.602085213965211e-18 -779 785 0.0002814814814815048 -779 786 7.28583859910259e-17 -779 1201 0.0005 -779 1202 -0.001040740740740738 -779 1203 0.009259259259259219 -779 1204 7.589415207398531e-19 -779 1205 -0.002362962962962969 -779 1206 0.03703703703703717 -779 1207 -0.0005000000000000007 -779 1208 -0.001040740740740749 -779 1209 0.009259259259259391 -780 769 -0.01296296296296295 -780 770 -0.01342592592592589 -780 771 -0.1551783264746222 -780 772 -0.02407407407407412 -780 773 1.040834085586084e-17 -780 774 -0.1063100137174232 -780 775 2.949029909160572e-17 -780 776 -0.0287037037037039 -780 777 -0.2040466392318245 -780 778 1.561251128379126e-17 -780 779 1.630640067418199e-16 -780 780 1.241426611796978 -780 781 0.01296296296296292 -780 782 -0.01342592592592594 -780 783 -0.1551783264746219 -780 784 0.0240740740740741 -780 785 2.081668171172169e-17 -780 786 -0.1063100137174169 -780 1201 -0.01296296296296295 -780 1202 0.01342592592592588 -780 1203 -0.1551783264746221 -780 1204 -2.949029909160572e-17 -780 1205 0.0287037037037037 -780 1206 -0.2040466392318244 -780 1207 0.01296296296296297 -780 1208 0.01342592592592597 -780 1209 -0.1551783264746228 -781 781 1 -782 782 1 -783 775 -0.01203703703703708 -783 776 -0.01342592592592594 -783 777 -0.05315500685870862 -783 778 -0.01296296296296292 -783 779 0.01342592592592585 -783 780 -0.1551783264746219 -783 781 7.806255641895632e-17 -783 782 -0.0287037037037041 -783 783 0.6207133058984942 -783 784 -7.632783294297951e-17 -783 785 0.02870370370370421 -783 786 -0.2040466392318305 -783 787 0.012037037037037 -783 788 -0.01342592592592604 -783 789 -0.05315500685870866 -783 790 0.012962962962963 -783 791 0.01342592592592602 -783 792 -0.1551783264746245 -784 775 -0.0009703703703703707 -784 776 -0.0005000000000000007 -784 777 -0.008333333333333333 -784 778 -0.001659259259259232 -784 779 -2.710505431213761e-18 -784 780 -0.03333333333333333 -784 781 -0.00028148148148151 -784 784 0.007762962962962944 -784 786 -6.938893903907228e-18 -784 787 -0.0009703703703703699 -784 788 0.0005000000000000007 -784 789 0.008333333333333335 -784 790 -0.001659259259259219 -784 791 2.710505431213761e-18 -784 792 0.03333333333333333 -784 1204 -0.0009703703703703662 -784 1205 0.0004999999999999994 -784 1206 -0.008333333333333331 -784 1207 -0.0002814814814815099 -784 1210 -0.0009703703703703656 -784 1211 -0.0004999999999999994 -784 1212 0.008333333333333335 -785 775 -0.0005000000000000008 -785 776 -0.001040740740740749 -785 777 -0.009259259259259325 -785 778 -2.602085213965211e-18 -785 779 0.0002814814814815048 -785 780 -7.459310946700271e-17 -785 781 1.084202172485504e-19 -785 782 -0.002362962962963002 -785 783 -0.03703703703703742 -785 785 0.008325925925925964 -785 786 -2.393918396847994e-16 -785 787 0.0005000000000000007 -785 788 -0.001040740740740751 -785 789 -0.009259259259259406 -785 790 2.602085213965211e-18 -785 791 0.0002814814814815158 -785 792 -1.179611963664229e-16 -785 1204 0.0004999999999999993 -785 1205 -0.00104074074074074 -785 1206 0.009259259259259354 -785 1207 -1.084202172485504e-19 -785 1208 -0.002362962962963002 -785 1209 0.03703703703703744 -785 1210 -0.0004999999999999994 -785 1211 -0.001040740740740742 -785 1212 0.009259259259259349 -786 775 -0.01296296296296297 -786 776 -0.01342592592592606 -786 777 -0.1551783264746229 -786 778 -0.02407407407407411 -786 779 4.163336342344337e-17 -786 780 -0.1063100137174169 -786 781 -7.806255641895632e-17 -786 782 -0.02870370370370408 -786 783 -0.2040466392318305 -786 784 1.561251128379126e-16 -786 785 8.673617379884035e-17 -786 786 1.241426611796989 -786 787 0.01296296296296305 -786 788 -0.01342592592592607 -786 789 -0.1551783264746255 -786 790 0.02407407407407395 -786 791 3.469446951953614e-18 -786 792 -0.1063100137174167 -786 1204 -0.01296296296296292 -786 1205 0.01342592592592585 -786 1206 -0.1551783264746218 -786 1207 -7.28583859910259e-17 -786 1208 0.02870370370370421 -786 1209 -0.2040466392318304 -786 1210 0.01296296296296299 -786 1211 0.01342592592592602 -786 1212 -0.1551783264746244 -787 787 1 -788 788 1 -789 781 -0.01203703703703695 -789 782 -0.01342592592592605 -789 783 -0.05315500685870866 -789 784 -0.01296296296296305 -789 785 0.01342592592592614 -789 786 -0.1551783264746255 -789 787 -1.283695372222837e-16 -789 788 -0.02870370370370365 -789 789 0.6207133058984942 -789 790 1.301042606982605e-16 -789 791 0.02870370370370359 -789 792 -0.2040466392318247 -789 793 0.01203703703703708 -789 794 -0.01342592592592584 -789 795 -0.05315500685871369 -789 796 0.01296296296296292 -789 797 0.01342592592592582 -789 798 -0.1551783264746215 -790 781 -0.0009703703703703656 -790 782 -0.0004999999999999995 -790 783 -0.008333333333333333 -790 784 -0.00165925925925922 -790 785 2.602085213965211e-18 -790 786 -0.03333333333333333 -790 787 -0.0002814814814814777 -790 788 -1.192622389734055e-18 -790 789 -1.734723475976807e-18 -790 790 0.007762962962962966 -790 791 -5.204170427930421e-18 -790 792 -3.469446951953614e-18 -790 793 -0.0009703703703703761 -790 794 0.0005000000000000007 -790 795 0.008333333333333335 -790 796 -0.001659259259259308 -790 797 2.602085213965211e-18 -790 798 0.03333333333333334 -790 1207 -0.0009703703703703699 -790 1208 0.0005000000000000008 -790 1209 -0.008333333333333333 -790 1210 -0.0002814814814814777 -790 1211 -1.409462824231156e-18 -790 1212 -1.734723475976807e-18 -790 1213 -0.0009703703703703718 -790 1214 -0.0004999999999999994 -790 1215 0.008333333333333335 -791 781 -0.0004999999999999995 -791 782 -0.001040740740740742 -791 783 -0.00925925925925937 -791 784 2.602085213965211e-18 -791 785 0.0002814814814815157 -791 786 3.122502256758253e-17 -791 787 -1.301042606982605e-18 -791 788 -0.002362962962962958 -791 789 -0.03703703703703701 -791 790 -5.204170427930421e-18 -791 791 0.008325925925925921 -791 792 1.700029006457271e-16 -791 793 0.0005000000000000007 -791 794 -0.001040740740740738 -791 795 -0.009259259259259167 -791 796 2.818925648462312e-18 -791 797 0.0002814814814814399 -791 798 -7.28583859910259e-17 -791 1207 0.0005000000000000008 -791 1208 -0.001040740740740751 -791 1209 0.009259259259259385 -791 1210 -1.409462824231156e-18 -791 1211 -0.002362962962962958 -791 1212 0.03703703703703697 -791 1213 -0.0004999999999999994 -791 1214 -0.00104074074074073 -791 1215 0.009259259259259064 -792 781 -0.012962962962963 -792 782 -0.01342592592592595 -792 783 -0.1551783264746245 -792 784 -0.02407407407407396 -792 785 -1.387778780781446e-17 -792 786 -0.1063100137174167 -792 787 1.908195823574488e-17 -792 788 -0.02870370370370362 -792 789 -0.2040466392318247 -792 790 -1.422473250300982e-16 -792 791 -9.71445146547012e-17 -792 792 1.241426611796988 -792 793 0.01296296296296298 -792 794 -0.01342592592592585 -792 795 -0.1551783264746225 -792 796 0.0240740740740741 -792 797 -1.734723475976807e-17 -792 798 -0.1063100137174277 -792 1207 -0.01296296296296305 -792 1208 0.01342592592592614 -792 1209 -0.1551783264746254 -792 1210 1.301042606982605e-16 -792 1211 0.02870370370370359 -792 1212 -0.2040466392318246 -792 1213 0.01296296296296292 -792 1214 0.01342592592592582 -792 1215 -0.1551783264746214 -793 793 1 -794 794 1 -795 787 -0.01203703703703703 -795 788 -0.01342592592592585 -795 789 -0.05315500685871369 -795 790 -0.01296296296296298 -795 791 0.01342592592592594 -795 792 -0.1551783264746225 -795 793 -1.058181320345852e-16 -795 794 -0.02870370370370366 -795 795 0.6207133058984864 -795 796 1.110223024625157e-16 -795 797 0.0287037037037039 -795 798 -0.2040466392318226 -795 799 0.01203703703703713 -795 800 -0.01342592592592593 -795 801 -0.05315500685870676 -795 802 0.01296296296296287 -795 803 0.01342592592592561 -795 804 -0.1551783264746209 -796 787 -0.0009703703703703718 -796 788 -0.0004999999999999994 -796 789 -0.008333333333333333 -796 790 -0.001659259259259308 -796 791 2.818925648462312e-18 -796 792 -0.03333333333333333 -796 793 -0.0002814814814814748 -796 794 -2.602085213965211e-18 -796 795 -3.469446951953614e-18 -796 796 0.007762962962962968 -796 797 -1.084202172485504e-17 -796 798 -1.387778780781446e-17 -796 799 -0.0009703703703703745 -796 800 0.000500000000000002 -796 801 0.008333333333333333 -796 802 -0.001659259259259226 -796 803 8.023096076392733e-18 -796 804 0.03333333333333333 -796 1210 -0.0009703703703703761 -796 1211 0.0005000000000000007 -796 1212 -0.008333333333333333 -796 1213 -0.0002814814814814749 -796 1214 -2.602085213965211e-18 -796 1215 -3.469446951953614e-18 -796 1216 -0.0009703703703703612 -796 1217 -0.0004999999999999981 -796 1218 0.008333333333333333 -797 787 -0.0004999999999999994 -797 788 -0.00104074074074073 -797 789 -0.00925925925925913 -797 790 2.602085213965211e-18 -797 791 0.0002814814814814401 -797 792 7.632783294297951e-17 -797 793 -2.602085213965211e-18 -797 794 -0.002362962962962954 -797 795 -0.03703703703703705 -797 796 -1.084202172485504e-17 -797 797 0.008325925925925917 -797 798 -2.775557561562891e-16 -797 799 0.000500000000000002 -797 800 -0.001040740740740759 -797 801 -0.009259259259259347 -797 802 7.914675859144182e-18 -797 803 0.00028148148148151 -797 804 -3.122502256758253e-17 -797 1210 0.0005000000000000008 -797 1211 -0.001040740740740738 -797 1212 0.009259259259259103 -797 1213 -2.602085213965211e-18 -797 1214 -0.002362962962962954 -797 1215 0.03703703703703684 -797 1216 -0.000499999999999998 -797 1217 -0.001040740740740732 -797 1218 0.009259259259259366 -798 787 -0.01296296296296292 -798 788 -0.01342592592592573 -798 789 -0.1551783264746215 -798 790 -0.02407407407407411 -798 791 -3.642919299551295e-17 -798 792 -0.1063100137174277 -798 793 -1.092875789865388e-16 -798 794 -0.02870370370370334 -798 795 -0.2040466392318226 -798 796 1.387778780781446e-17 -798 797 -8.500145032286355e-17 -798 798 1.241426611796977 -798 799 0.01296296296296303 -798 800 -0.01342592592592633 -798 801 -0.155178326474624 -798 802 0.0240740740740741 -798 803 6.418476861114186e-17 -798 804 -0.106310013717416 -798 1210 -0.01296296296296297 -798 1211 0.01342592592592594 -798 1212 -0.1551783264746225 -798 1213 1.144917494144693e-16 -798 1214 0.0287037037037039 -798 1215 -0.2040466392318225 -798 1216 0.01296296296296286 -798 1217 0.01342592592592561 -798 1218 -0.1551783264746208 -799 799 1 -800 800 1 -801 793 -0.01203703703703697 -801 794 -0.01342592592592596 -801 795 -0.05315500685870676 -801 796 -0.01296296296296303 -801 797 0.01342592592592596 -801 798 -0.155178326474624 -801 799 -2.949029909160572e-17 -801 800 -0.02870370370370372 -801 801 0.6207133058984904 -801 802 2.949029909160572e-17 -801 803 0.02870370370370366 -801 804 -0.2040466392318245 -801 805 0.012037037037037 -801 806 -0.01342592592592587 -801 807 -0.05315500685871195 -801 808 0.012962962962963 -801 809 0.01342592592592591 -801 810 -0.1551783264746232 -802 793 -0.0009703703703703612 -802 794 -0.000499999999999998 -802 795 -0.008333333333333331 -802 796 -0.001659259259259226 -802 797 7.806255641895632e-18 -802 798 -0.03333333333333333 -802 799 -0.0002814814814814854 -802 800 -7.589415207398531e-19 -802 802 0.007762962962962959 -802 803 -2.38524477946811e-18 -802 804 -3.469446951953614e-18 -802 805 -0.0009703703703703678 -802 806 0.0004999999999999987 -802 807 0.008333333333333335 -802 808 -0.001659259259259283 -802 809 -5.421010862427522e-18 -802 810 0.03333333333333334 -802 1213 -0.0009703703703703745 -802 1214 0.0005000000000000021 -802 1215 -0.008333333333333331 -802 1216 -0.0002814814814814853 -802 1217 -7.589415207398531e-19 -802 1218 -1.734723475976807e-18 -802 1219 -0.0009703703703703766 -802 1220 -0.0005000000000000013 -802 1221 0.008333333333333335 -803 793 -0.0004999999999999981 -803 794 -0.001040740740740732 -803 795 -0.009259259259259236 -803 796 8.023096076392733e-18 -803 797 0.00028148148148151 -803 798 4.128641872824801e-16 -803 799 -6.505213034913027e-19 -803 800 -0.002362962962962969 -803 801 -0.03703703703703701 -803 802 -2.38524477946811e-18 -803 803 0.008325925925925931 -803 804 -5.551115123125783e-17 -803 805 0.0004999999999999987 -803 806 -0.001040740740740729 -803 807 -0.009259259259259111 -803 808 -5.204170427930421e-18 -803 809 0.0002814814814814616 -803 810 1.925543058334256e-16 -803 1213 0.000500000000000002 -803 1214 -0.001040740740740759 -803 1215 0.009259259259259477 -803 1216 -7.589415207398531e-19 -803 1217 -0.002362962962962968 -803 1218 0.03703703703703717 -803 1219 -0.0005000000000000014 -803 1220 -0.001040740740740747 -803 1221 0.009259259259259271 -804 793 -0.01296296296296286 -804 794 -0.01342592592592596 -804 795 -0.1551783264746209 -804 796 -0.02407407407407411 -804 797 1.561251128379126e-17 -804 798 -0.106310013717416 -804 799 -2.775557561562891e-17 -804 800 -0.02870370370370393 -804 801 -0.2040466392318245 -804 802 3.469446951953614e-18 -804 803 1.595945597898663e-16 -804 804 1.241426611796978 -804 805 0.01296296296296289 -804 806 -0.01342592592592583 -804 807 -0.1551783264746211 -804 808 0.0240740740740741 -804 809 1.561251128379126e-17 -804 810 -0.1063100137174241 -804 1213 -0.01296296296296303 -804 1214 0.01342592592592596 -804 1215 -0.1551783264746239 -804 1216 2.602085213965211e-17 -804 1217 0.02870370370370367 -804 1218 -0.2040466392318244 -804 1219 0.012962962962963 -804 1220 0.01342592592592591 -804 1221 -0.1551783264746231 -805 805 1 -806 806 1 -807 799 -0.01203703703703711 -807 800 -0.01342592592592585 -807 801 -0.05315500685871195 -807 802 -0.01296296296296289 -807 803 0.01342592592592568 -807 804 -0.1551783264746211 -807 805 1.335737076502141e-16 -807 806 -0.02870370370370374 -807 807 0.6207133058984927 -807 808 -1.196959198423997e-16 -807 809 0.02870370370370391 -807 810 -0.2040466392318265 -807 811 0.01203703703703696 -807 812 -0.01342592592592605 -807 813 -0.05315500685870821 -807 814 0.01296296296296303 -807 815 0.01342592592592605 -807 816 -0.1551783264746249 -808 799 -0.0009703703703703766 -808 800 -0.0005000000000000014 -808 801 -0.008333333333333333 -808 802 -0.001659259259259283 -808 803 -5.204170427930421e-18 -808 804 -0.03333333333333333 -808 805 -0.0002814814814814883 -808 806 9.75781955236954e-19 -808 807 -1.214306433183765e-17 -808 808 0.007762962962962959 -808 809 6.071532165918825e-18 -808 810 -1.040834085586084e-17 -808 811 -0.0009703703703703663 -808 812 0.0004999999999999998 -808 813 0.008333333333333323 -808 814 -0.00165925925925922 -808 815 4.336808689942018e-19 -808 816 0.03333333333333333 -808 1216 -0.0009703703703703678 -808 1217 0.0004999999999999987 -808 1218 -0.008333333333333331 -808 1219 -0.0002814814814814887 -808 1220 9.75781955236954e-19 -808 1221 3.469446951953614e-18 -808 1222 -0.0009703703703703686 -808 1223 -0.0005000000000000002 -808 1224 0.008333333333333342 -809 799 -0.0005000000000000013 -809 800 -0.001040740740740747 -809 801 -0.009259259259259186 -809 802 -5.529431079676073e-18 -809 803 0.0002814814814814613 -809 804 -1.040834085586084e-16 -809 805 8.673617379884035e-19 -809 806 -0.002362962962962973 -809 807 -0.03703703703703715 -809 808 6.071532165918825e-18 -809 809 0.008325925925925935 -809 810 -3.261280134836397e-16 -809 811 0.0004999999999999999 -809 812 -0.001040740740740746 -809 813 -0.009259259259259377 -809 814 3.252606517456513e-19 -809 815 0.0002814814814815157 -809 1216 0.0004999999999999987 -809 1217 -0.001040740740740729 -809 1218 0.009259259259259195 -809 1219 9.75781955236954e-19 -809 1220 -0.002362962962962973 -809 1221 0.03703703703703712 -809 1222 -0.0005000000000000002 -809 1223 -0.001040740740740747 -809 1224 0.009259259259259377 -810 799 -0.01296296296296301 -810 800 -0.01342592592592607 -810 801 -0.1551783264746232 -810 802 -0.02407407407407411 -810 803 4.85722573273506e-17 -810 804 -0.1063100137174241 -810 805 -6.938893903907228e-18 -810 806 -0.02870370370370366 -810 807 -0.2040466392318265 -810 808 1.647987302177967e-16 -810 809 1.058181320345852e-16 -810 810 1.241426611796988 -810 811 0.012962962962963 -810 812 -0.01342592592592603 -810 813 -0.1551783264746246 -810 814 0.02407407407407395 -810 815 -2.081668171172169e-17 -810 816 -0.1063100137174167 -810 1216 -0.01296296296296289 -810 1217 0.01342592592592567 -810 1218 -0.155178326474621 -810 1219 -1.370431546021678e-16 -810 1220 0.0287037037037039 -810 1221 -0.2040466392318267 -810 1222 0.01296296296296305 -810 1223 0.01342592592592605 -810 1224 -0.1551783264746252 -811 811 1 -812 812 1 -813 805 -0.01203703703703698 -813 806 -0.01342592592592603 -813 807 -0.05315500685870818 -813 808 -0.012962962962963 -813 809 0.01342592592592603 -813 810 -0.1551783264746247 -813 811 0.01203703703703696 -813 812 -0.01435185185185209 -813 813 0.3103566529492495 -813 814 0.01296296296296302 -813 815 0.01435185185185209 -813 816 -0.1020233196159167 -814 805 -0.0009703703703703688 -814 806 -0.0005000000000000003 -814 807 -0.008333333333333335 -814 808 -0.00165925925925922 -814 809 4.336808689942018e-19 -814 810 -0.03333333333333333 -814 811 -0.0001407407407407591 -814 812 0.0004999999999999996 -814 813 -0.008333333333333335 -814 814 0.003881481481481471 -814 815 7.589415207398531e-19 -814 816 -0.03333333333333333 -814 1219 -0.0009703703703703667 -814 1220 0.0004999999999999999 -814 1221 -0.008333333333333333 -814 1222 -0.000140740740740756 -814 1223 -0.0005000000000000004 -814 1224 -0.008333333333333337 -815 815 1 -816 805 -0.01296296296296304 -816 806 -0.01342592592592605 -816 807 -0.1551783264746249 -816 808 -0.02407407407407396 -816 809 1.734723475976807e-18 -816 810 -0.1063100137174168 -816 811 0.01296296296296302 -816 812 -0.01435185185185207 -816 813 -0.1020233196159166 -816 814 0.02407407407407396 -816 815 -1.387778780781446e-17 -816 816 0.6207133058984996 -816 1219 -0.01296296296296301 -816 1220 0.01342592592592604 -816 1221 -0.155178326474625 -816 1222 0.01296296296296303 -816 1223 0.01435185185185209 -816 1224 -0.1020233196159163 -817 7 -0.0002814814814814842 -817 10 -0.0009703703703703697 -817 11 -0.0005 -817 12 -0.008333333333333325 -817 16 -0.0009703703703703691 -817 17 0.0004999999999999999 -817 18 0.008333333333333326 -817 817 0.007762962962962965 -817 818 1.084202172485504e-19 -817 819 -1.734723475976807e-17 -817 820 -0.001659259259259261 -817 821 -2.168404344971009e-19 -817 822 -0.03333333333333333 -817 823 -0.001659259259259257 -817 824 1.084202172485504e-19 -817 825 0.03333333333333334 -817 1225 -0.0002814814814814805 -817 1226 -1.084202172485504e-19 -817 1227 -3.469446951953614e-18 -817 1228 -0.0009703703703703708 -817 1229 0.0005000000000000001 -817 1230 -0.008333333333333333 -817 1231 -0.0009703703703703706 -817 1232 -0.0005 -817 1233 0.008333333333333335 -818 8 -0.002362962962962967 -818 9 -0.03703703703703703 -818 10 -0.0004999999999999998 -818 11 -0.001040740740740741 -818 12 -0.009259259259259252 -818 16 0.0004999999999999999 -818 17 -0.001040740740740741 -818 18 -0.009259259259259262 -818 817 1.084202172485504e-19 -818 818 0.008325925925925929 -818 819 -6.938893903907228e-18 -818 820 -2.168404344971009e-19 -818 821 0.0002814814814814797 -818 822 -1.734723475976807e-18 -818 823 -2.168404344971009e-19 -818 824 0.0002814814814814831 -818 825 5.204170427930421e-18 -818 1226 -0.002362962962962962 -818 1227 0.03703703703703703 -818 1228 0.0005 -818 1229 -0.00104074074074074 -818 1230 0.009259259259259252 -818 1231 -0.0005 -818 1232 -0.001040740740740741 -818 1233 0.009259259259259264 -819 7 -3.469446951953614e-18 -819 8 -0.02870370370370372 -819 9 -0.2040466392318246 -819 10 -0.01296296296296295 -819 11 -0.0134259259259259 -819 12 -0.1551783264746223 -819 16 0.01296296296296295 -819 17 -0.01342592592592591 -819 18 -0.1551783264746225 -819 817 2.42861286636753e-17 -819 818 2.081668171172169e-17 -819 819 1.241426611796981 -819 820 -0.02407407407407408 -819 821 -1.387778780781446e-17 -819 822 -0.1063100137174212 -819 823 0.02407407407407406 -819 824 -1.214306433183765e-17 -819 825 -0.1063100137174208 -819 1225 -3.469446951953614e-18 -819 1226 0.02870370370370369 -819 1227 -0.2040466392318242 -819 1228 -0.01296296296296296 -819 1229 0.01342592592592592 -819 1230 -0.1551783264746226 -819 1231 0.01296296296296296 -819 1232 0.01342592592592593 -819 1233 -0.1551783264746228 -820 820 1 -821 821 1 -822 7 0.01296296296296296 -822 8 -0.01342592592592592 -822 9 -0.1551783264746225 -822 10 -0.01296296296296295 -822 11 -0.01435185185185183 -822 12 -0.1020233196159117 -822 817 0.02407407407407407 -822 818 6.938893903907228e-18 -822 819 -0.1063100137174212 -822 820 -0.02407407407407408 -822 821 1.734723475976807e-18 -822 822 0.6207133058984899 -822 1225 0.01296296296296296 -822 1226 0.01342592592592592 -822 1227 -0.1551783264746226 -822 1228 -0.01296296296296296 -822 1229 0.01435185185185183 -822 1230 -0.1020233196159119 -823 7 -0.0009703703703703717 -823 8 -0.0005000000000000003 -823 9 -0.008333333333333333 -823 16 -0.0002814814814814806 -823 17 2.168404344971009e-19 -823 18 8.673617379884035e-18 -823 22 -0.0009703703703703718 -823 23 0.0005000000000000002 -823 24 0.008333333333333338 -823 817 -0.001659259259259257 -823 819 -0.03333333333333331 -823 823 0.007762962962962962 -823 825 1.734723475976807e-17 -823 826 -0.00165925925925926 -823 827 -2.168404344971009e-19 -823 828 0.03333333333333333 -823 1225 -0.0009703703703703704 -823 1226 0.0005 -823 1227 -0.008333333333333333 -823 1231 -0.0002814814814814804 -823 1233 5.204170427930421e-18 -823 1234 -0.0009703703703703704 -823 1235 -0.0004999999999999999 -823 1236 0.008333333333333338 -824 7 -0.0005000000000000003 -824 8 -0.001040740740740742 -824 9 -0.009259259259259266 -824 17 -0.002362962962962963 -824 18 -0.03703703703703705 -824 22 0.0005000000000000002 -824 23 -0.001040740740740741 -824 24 -0.009259259259259259 -824 817 1.084202172485504e-19 -824 818 0.0002814814814814831 -824 819 -3.469446951953614e-18 -824 823 2.168404344971009e-19 -824 824 0.008325925925925924 -824 825 -1.387778780781446e-17 -824 826 -3.252606517456513e-19 -824 827 0.0002814814814814813 -824 828 -1.734723475976807e-18 -824 1225 0.0005000000000000001 -824 1226 -0.001040740740740741 -824 1227 0.009259259259259264 -824 1232 -0.002362962962962962 -824 1233 0.03703703703703705 -824 1234 -0.0005 -824 1235 -0.00104074074074074 -824 1236 0.009259259259259259 -825 7 -0.01296296296296297 -825 8 -0.01342592592592594 -825 9 -0.1551783264746228 -825 16 -1.734723475976807e-18 -825 17 -0.02870370370370371 -825 18 -0.2040466392318241 -825 22 0.01296296296296297 -825 23 -0.01342592592592593 -825 24 -0.1551783264746227 -825 817 -0.02407407407407407 -825 818 8.673617379884035e-18 -825 819 -0.1063100137174208 -825 823 -2.949029909160572e-17 -825 824 5.204170427930421e-18 -825 825 1.241426611796981 -825 826 0.02407407407407411 -825 827 3.469446951953614e-18 -825 828 -0.1063100137174211 -825 1225 -0.01296296296296296 -825 1226 0.01342592592592593 -825 1227 -0.1551783264746228 -825 1231 -5.204170427930421e-18 -825 1232 0.02870370370370372 -825 1233 -0.2040466392318243 -825 1234 0.01296296296296296 -825 1235 0.01342592592592593 -825 1236 -0.1551783264746228 -826 16 -0.0009703703703703693 -826 17 -0.0004999999999999998 -826 18 -0.00833333333333333 -826 22 -0.0002814814814814854 -826 24 -1.734723475976807e-18 -826 28 -0.0009703703703703689 -826 29 0.0004999999999999998 -826 30 0.008333333333333326 -826 823 -0.00165925925925926 -826 824 -2.168404344971009e-19 -826 825 -0.03333333333333335 -826 826 0.007762962962962964 -826 827 -1.084202172485504e-19 -826 828 -3.469446951953614e-18 -826 829 -0.001659259259259258 -826 830 2.168404344971009e-19 -826 831 0.03333333333333335 -826 1231 -0.000970370370370371 -826 1232 0.0005 -826 1233 -0.008333333333333342 -826 1234 -0.0002814814814814804 -826 1235 2.168404344971009e-19 -826 1236 1.734723475976807e-18 -826 1237 -0.0009703703703703706 -826 1238 -0.0005 -826 1239 0.00833333333333334 -827 16 -0.0004999999999999998 -827 17 -0.001040740740740741 -827 18 -0.00925925925925926 -827 22 1.084202172485504e-19 -827 23 -0.002362962962962968 -827 24 -0.03703703703703705 -827 28 0.0004999999999999998 -827 29 -0.001040740740740741 -827 30 -0.009259259259259264 -827 823 -2.168404344971009e-19 -827 824 0.0002814814814814812 -827 825 -1.734723475976807e-18 -827 826 -2.168404344971009e-19 -827 827 0.008325925925925928 -827 829 1.084202172485504e-19 -827 830 0.0002814814814814824 -827 1231 0.0005000000000000001 -827 1232 -0.001040740740740741 -827 1233 0.009259259259259262 -827 1234 1.084202172485504e-19 -827 1235 -0.002362962962962962 -827 1236 0.03703703703703705 -827 1237 -0.0004999999999999999 -827 1238 -0.001040740740740741 -827 1239 0.009259259259259266 -828 16 -0.01296296296296295 -828 17 -0.01342592592592591 -828 18 -0.1551783264746225 -828 23 -0.02870370370370374 -828 24 -0.204046639231825 -828 28 0.01296296296296295 -828 29 -0.01342592592592592 -828 30 -0.1551783264746226 -828 823 -0.02407407407407407 -828 824 -1.214306433183765e-17 -828 825 -0.1063100137174211 -828 826 5.204170427930421e-18 -828 827 3.122502256758253e-17 -828 828 1.241426611796983 -828 829 0.02407407407407408 -828 830 -1.040834085586084e-17 -828 831 -0.1063100137174211 -828 1231 -0.01296296296296297 -828 1232 0.01342592592592593 -828 1233 -0.1551783264746228 -828 1234 -1.040834085586084e-17 -828 1235 0.02870370370370371 -828 1236 -0.2040466392318244 -828 1237 0.01296296296296297 -828 1238 0.01342592592592593 -828 1239 -0.155178326474623 -829 22 -0.0009703703703703715 -829 23 -0.0005000000000000003 -829 24 -0.008333333333333335 -829 28 -0.0002814814814814819 -829 29 -4.336808689942018e-19 -829 30 -2.081668171172169e-17 -829 34 -0.0009703703703703706 -829 35 0.0005 -829 36 0.008333333333333335 -829 826 -0.001659259259259258 -829 827 1.084202172485504e-19 -829 828 -0.03333333333333333 -829 829 0.007762962962962963 -829 830 6.505213034913027e-19 -829 831 -1.734723475976807e-17 -829 832 -0.001659259259259258 -829 833 1.084202172485504e-19 -829 834 0.03333333333333335 -829 1234 -0.0009703703703703706 -829 1235 0.0004999999999999999 -829 1236 -0.008333333333333342 -829 1237 -0.0002814814814814819 -829 1238 1.084202172485504e-19 -829 1239 -5.204170427930421e-18 -829 1240 -0.0009703703703703706 -829 1241 -0.0005 -829 1242 0.008333333333333338 -830 22 -0.0005000000000000003 -830 23 -0.001040740740740742 -830 24 -0.009259259259259266 -830 28 -4.336808689942018e-19 -830 29 -0.002362962962962964 -830 30 -0.03703703703703706 -830 34 0.0005000000000000001 -830 35 -0.001040740740740741 -830 36 -0.009259259259259266 -830 826 3.252606517456513e-19 -830 827 0.0002814814814814823 -830 828 -1.734723475976807e-18 -830 829 7.589415207398531e-19 -830 830 0.008325925925925928 -830 831 -6.938893903907228e-18 -830 832 -1.084202172485504e-19 -830 833 0.0002814814814814827 -830 1234 0.0005 -830 1235 -0.001040740740740741 -830 1236 0.009259259259259266 -830 1237 -3.252606517456513e-19 -830 1238 -0.002362962962962963 -830 1239 0.03703703703703706 -830 1240 -0.0005 -830 1241 -0.001040740740740741 -830 1242 0.009259259259259266 -831 22 -0.01296296296296297 -831 23 -0.01342592592592594 -831 24 -0.1551783264746229 -831 28 -1.734723475976807e-18 -831 29 -0.02870370370370372 -831 30 -0.2040466392318245 -831 34 0.01296296296296296 -831 35 -0.01342592592592593 -831 36 -0.1551783264746228 -831 826 -0.02407407407407408 -831 827 -1.734723475976807e-18 -831 828 -0.106310013717421 -831 829 1.908195823574488e-17 -831 831 1.241426611796983 -831 832 0.02407407407407406 -831 833 -5.204170427930421e-18 -831 834 -0.1063100137174209 -831 1234 -0.01296296296296297 -831 1235 0.01342592592592594 -831 1236 -0.155178326474623 -831 1237 3.469446951953614e-18 -831 1238 0.02870370370370372 -831 1239 -0.2040466392318247 -831 1240 0.01296296296296297 -831 1241 0.01342592592592594 -831 1242 -0.155178326474623 -832 28 -0.0009703703703703706 -832 29 -0.0005000000000000001 -832 30 -0.008333333333333333 -832 34 -0.0002814814814814836 -832 35 1.084202172485504e-19 -832 36 -3.469446951953614e-18 -832 40 -0.0009703703703703699 -832 41 0.0005 -832 42 0.008333333333333335 -832 829 -0.001659259259259258 -832 830 -1.084202172485504e-19 -832 831 -0.03333333333333333 -832 832 0.007762962962962963 -832 833 5.421010862427522e-19 -832 834 -1.040834085586084e-17 -832 835 -0.001659259259259256 -832 836 -3.252606517456513e-19 -832 837 0.03333333333333334 -832 1237 -0.0009703703703703701 -832 1238 0.0004999999999999999 -832 1239 -0.008333333333333333 -832 1240 -0.0002814814814814827 -832 1242 -1.734723475976807e-18 -832 1243 -0.0009703703703703706 -832 1244 -0.0005000000000000001 -832 1245 0.008333333333333337 -833 28 -0.0005000000000000001 -833 29 -0.001040740740740741 -833 30 -0.009259259259259266 -833 34 1.084202172485504e-19 -833 35 -0.002362962962962966 -833 36 -0.03703703703703706 -833 40 0.0005 -833 41 -0.001040740740740741 -833 42 -0.009259259259259266 -833 829 1.084202172485504e-19 -833 830 0.0002814814814814828 -833 831 -1.734723475976807e-18 -833 832 6.505213034913027e-19 -833 833 0.008325925925925929 -833 834 -6.938893903907228e-18 -833 835 -4.336808689942018e-19 -833 836 0.0002814814814814841 -833 837 1.387778780781446e-17 -833 1237 0.0005 -833 1238 -0.001040740740740741 -833 1239 0.009259259259259266 -833 1240 -2.168404344971009e-19 -833 1241 -0.002362962962962964 -833 1242 0.03703703703703706 -833 1243 -0.0005000000000000001 -833 1244 -0.001040740740740742 -833 1245 0.009259259259259273 -834 28 -0.01296296296296297 -834 29 -0.01342592592592593 -834 30 -0.1551783264746228 -834 34 5.204170427930421e-18 -834 35 -0.02870370370370375 -834 36 -0.2040466392318249 -834 40 0.01296296296296296 -834 41 -0.01342592592592593 -834 42 -0.1551783264746228 -834 829 -0.02407407407407409 -834 830 3.469446951953614e-18 -834 831 -0.106310013717421 -834 832 1.214306433183765e-17 -834 833 1.040834085586084e-17 -834 834 1.241426611796983 -834 835 0.02407407407407407 -834 836 -1.734723475976807e-18 -834 837 -0.1063100137174207 -834 1237 -0.01296296296296296 -834 1238 0.01342592592592593 -834 1239 -0.1551783264746229 -834 1240 5.204170427930421e-18 -834 1241 0.02870370370370373 -834 1242 -0.2040466392318248 -834 1243 0.01296296296296297 -834 1244 0.01342592592592593 -834 1245 -0.1551783264746229 -835 34 -0.0009703703703703706 -835 35 -0.0005000000000000001 -835 36 -0.008333333333333331 -835 40 -0.00028148148148148 -835 41 1.084202172485504e-19 -835 42 -1.734723475976807e-18 -835 46 -0.000970370370370371 -835 47 0.0005 -835 48 0.008333333333333337 -835 832 -0.001659259259259256 -835 833 -4.336808689942018e-19 -835 834 -0.03333333333333333 -835 835 0.007762962962962965 -835 836 6.505213034913027e-19 -835 837 -6.938893903907228e-18 -835 838 -0.001659259259259266 -835 839 -2.168404344971009e-19 -835 840 0.03333333333333334 -835 1240 -0.0009703703703703701 -835 1241 0.0004999999999999999 -835 1242 -0.008333333333333335 -835 1243 -0.0002814814814814795 -835 1244 3.252606517456513e-19 -835 1245 -1.734723475976807e-18 -835 1246 -0.0009703703703703714 -835 1247 -0.0005000000000000002 -835 1248 0.008333333333333335 -836 34 -0.0005000000000000002 -836 35 -0.001040740740740742 -836 36 -0.009259259259259271 -836 40 2.168404344971009e-19 -836 41 -0.002362962962962961 -836 42 -0.03703703703703703 -836 46 0.0005 -836 47 -0.00104074074074074 -836 48 -0.009259259259259238 -836 832 -3.252606517456513e-19 -836 833 0.0002814814814814843 -836 834 -3.469446951953614e-18 -836 835 6.505213034913027e-19 -836 836 0.008325925925925924 -836 837 -6.938893903907228e-18 -836 838 -4.336808689942018e-19 -836 839 0.0002814814814814758 -836 840 1.734723475976807e-17 -836 1240 0.0005 -836 1241 -0.001040740740740741 -836 1242 0.009259259259259269 -836 1243 1.084202172485504e-19 -836 1244 -0.00236296296296296 -836 1245 0.03703703703703701 -836 1246 -0.0005000000000000001 -836 1247 -0.001040740740740741 -836 1248 0.009259259259259241 -837 34 -0.01296296296296297 -837 35 -0.01342592592592594 -837 36 -0.1551783264746229 -837 40 1.214306433183765e-17 -837 41 -0.02870370370370368 -837 42 -0.204046639231824 -837 46 0.01296296296296295 -837 47 -0.0134259259259259 -837 48 -0.1551783264746224 -837 832 -0.02407407407407408 -837 833 1.734723475976807e-18 -837 834 -0.1063100137174207 -837 835 -5.204170427930421e-18 -837 836 -5.204170427930421e-18 -837 837 1.241426611796981 -837 838 0.02407407407407409 -837 839 -3.469446951953614e-18 -837 840 -0.1063100137174219 -837 1240 -0.01296296296296296 -837 1241 0.01342592592592592 -837 1242 -0.1551783264746228 -837 1243 1.734723475976807e-18 -837 1244 0.0287037037037037 -837 1245 -0.2040466392318239 -837 1246 0.01296296296296296 -837 1247 0.01342592592592591 -837 1248 -0.1551783264746225 -838 40 -0.0009703703703703714 -838 41 -0.0005000000000000002 -838 42 -0.008333333333333333 -838 46 -0.0002814814814814765 -838 47 2.168404344971009e-19 -838 48 8.673617379884035e-18 -838 52 -0.0009703703703703728 -838 53 0.0005000000000000006 -838 54 0.008333333333333335 -838 835 -0.001659259259259266 -838 836 -3.252606517456513e-19 -838 837 -0.03333333333333333 -838 838 0.007762962962962968 -838 839 -4.336808689942018e-19 -838 840 -1.387778780781446e-17 -838 841 -0.001659259259259262 -838 842 2.168404344971009e-19 -838 843 0.03333333333333333 -838 1243 -0.000970370370370371 -838 1244 0.0005 -838 1245 -0.008333333333333335 -838 1246 -0.0002814814814814765 -838 1247 2.168404344971009e-19 -838 1248 -1.734723475976807e-18 -838 1249 -0.0009703703703703714 -838 1250 -0.0005000000000000002 -838 1251 0.008333333333333337 -839 40 -0.0005000000000000002 -839 41 -0.001040740740740741 -839 42 -0.009259259259259243 -839 46 1.084202172485504e-19 -839 47 -0.002362962962962957 -839 48 -0.03703703703703699 -839 52 0.0005000000000000006 -839 53 -0.001040740740740743 -839 54 -0.009259259259259255 -839 835 -2.168404344971009e-19 -839 836 0.0002814814814814758 -839 838 -3.252606517456513e-19 -839 839 0.008325925925925924 -839 840 -1.387778780781446e-17 -839 841 2.168404344971009e-19 -839 842 0.0002814814814814796 -839 843 -1.734723475976807e-18 -839 1243 0.0005 -839 1244 -0.001040740740740739 -839 1245 0.009259259259259236 -839 1246 3.252606517456513e-19 -839 1247 -0.002362962962962956 -839 1248 0.03703703703703697 -839 1249 -0.0005000000000000002 -839 1250 -0.001040740740740742 -839 1251 0.009259259259259255 -840 40 -0.01296296296296296 -840 41 -0.01342592592592592 -840 42 -0.1551783264746225 -840 46 -6.938893903907228e-18 -840 47 -0.02870370370370359 -840 48 -0.2040466392318231 -840 52 0.01296296296296297 -840 53 -0.01342592592592595 -840 54 -0.1551783264746228 -840 835 -0.0240740740740741 -840 836 -3.469446951953614e-18 -840 837 -0.1063100137174219 -840 838 3.295974604355933e-17 -840 839 -1.908195823574488e-17 -840 840 1.24142661179698 -840 841 0.02407407407407405 -840 842 5.204170427930421e-18 -840 843 -0.1063100137174213 -840 1243 -0.01296296296296296 -840 1244 0.0134259259259259 -840 1245 -0.1551783264746224 -840 1246 -1.387778780781446e-17 -840 1247 0.02870370370370365 -840 1248 -0.2040466392318232 -840 1249 0.01296296296296297 -840 1250 0.01342592592592592 -840 1251 -0.1551783264746227 -841 46 -0.0009703703703703687 -841 47 -0.0004999999999999996 -841 48 -0.008333333333333325 -841 52 -0.0002814814814814895 -841 53 -5.421010862427522e-19 -841 54 -1.734723475976807e-18 -841 58 -0.0009703703703703686 -841 59 0.0005 -841 60 0.008333333333333325 -841 838 -0.001659259259259262 -841 839 2.168404344971009e-19 -841 840 -0.03333333333333333 -841 841 0.007762962962962959 -841 842 -2.168404344971009e-19 -841 843 -1.040834085586084e-17 -841 844 -0.001659259259259243 -841 846 0.03333333333333333 -841 1246 -0.0009703703703703702 -841 1247 0.0004999999999999999 -841 1248 -0.008333333333333333 -841 1249 -0.0002814814814814862 -841 1250 3.252606517456513e-19 -841 1251 -5.204170427930421e-18 -841 1252 -0.00097037037037037 -841 1253 -0.0005000000000000002 -841 1254 0.008333333333333335 -842 46 -0.0004999999999999996 -842 47 -0.001040740740740738 -842 48 -0.009259259259259238 -842 52 -5.421010862427522e-19 -842 53 -0.002362962962962973 -842 54 -0.0370370370370371 -842 58 0.0004999999999999999 -842 59 -0.001040740740740744 -842 60 -0.009259259259259313 -842 838 2.168404344971009e-19 -842 839 0.0002814814814814796 -842 840 1.908195823574488e-17 -842 841 -2.168404344971009e-19 -842 842 0.008325925925925933 -842 843 3.122502256758253e-17 -842 844 -1.084202172485504e-19 -842 845 0.0002814814814814953 -842 846 1.734723475976807e-18 -842 1246 0.0004999999999999998 -842 1247 -0.001040740740740739 -842 1248 0.009259259259259245 -842 1249 5.421010862427522e-19 -842 1250 -0.002362962962962969 -842 1251 0.0370370370370371 -842 1252 -0.0005000000000000002 -842 1253 -0.001040740740740744 -842 1254 0.009259259259259313 -843 46 -0.01296296296296293 -843 47 -0.01342592592592587 -843 48 -0.155178326474622 -843 52 -3.642919299551295e-17 -843 53 -0.02870370370370381 -843 54 -0.2040466392318258 -843 58 0.01296296296296297 -843 59 -0.01342592592592595 -843 60 -0.1551783264746233 -843 838 -0.02407407407407411 -843 839 -1.734723475976807e-17 -843 840 -0.1063100137174213 -843 841 9.71445146547012e-17 -843 842 1.040834085586084e-17 -843 843 1.241426611796983 -843 844 0.02407407407407401 -843 845 -1.734723475976807e-17 -843 846 -0.1063100137174192 -843 1246 -0.01296296296296296 -843 1247 0.01342592592592589 -843 1248 -0.1551783264746225 -843 1249 -2.775557561562891e-17 -843 1250 0.02870370370370377 -843 1251 -0.2040466392318255 -843 1252 0.01296296296296299 -843 1253 0.01342592592592599 -843 1254 -0.1551783264746235 -844 52 -0.0009703703703703697 -844 53 -0.0005000000000000001 -844 54 -0.008333333333333331 -844 58 -0.000281481481481487 -844 59 -6.505213034913027e-19 -844 64 -0.0009703703703703734 -844 65 0.0005000000000000009 -844 66 0.008333333333333335 -844 841 -0.001659259259259243 -844 843 -0.03333333333333331 -844 844 0.007762962962962959 -844 845 -8.673617379884035e-19 -844 846 -6.938893903907228e-18 -844 847 -0.001659259259259258 -844 848 8.673617379884035e-19 -844 849 0.03333333333333333 -844 1249 -0.0009703703703703684 -844 1250 0.0004999999999999998 -844 1251 -0.008333333333333331 -844 1252 -0.0002814814814814884 -844 1253 3.252606517456513e-19 -844 1254 -1.734723475976807e-18 -844 1255 -0.0009703703703703708 -844 1256 -0.0005000000000000001 -844 1257 0.008333333333333338 -845 52 -0.0005 -845 53 -0.001040740740740743 -845 54 -0.009259259259259306 -845 58 -5.421010862427522e-19 -845 59 -0.002362962962962971 -845 60 -0.03703703703703713 -845 64 0.0005000000000000009 -845 65 -0.001040740740740745 -845 66 -0.009259259259259266 -845 842 0.0002814814814814954 -845 843 -1.214306433183765e-17 -845 844 -8.673617379884035e-19 -845 845 0.008325925925925938 -845 846 -2.42861286636753e-17 -845 847 7.589415207398531e-19 -845 848 0.0002814814814814826 -845 849 -2.081668171172169e-17 -845 1249 0.0004999999999999997 -845 1250 -0.001040740740740741 -845 1251 0.009259259259259299 -845 1252 2.168404344971009e-19 -845 1253 -0.002362962962962972 -845 1254 0.03703703703703715 -845 1255 -0.0005000000000000001 -845 1256 -0.001040740740740742 -845 1257 0.009259259259259269 -846 52 -0.01296296296296297 -846 53 -0.01342592592592595 -846 54 -0.1551783264746233 -846 58 -1.734723475976807e-17 -846 59 -0.02870370370370376 -846 60 -0.2040466392318255 -846 64 0.01296296296296299 -846 65 -0.01342592592592599 -846 66 -0.1551783264746231 -846 841 -0.02407407407407405 -846 842 5.204170427930421e-18 -846 843 -0.1063100137174191 -846 844 1.214306433183765e-17 -846 845 -1.734723475976807e-18 -846 846 1.241426611796984 -846 847 0.02407407407407404 -846 848 -3.469446951953614e-18 -846 849 -0.1063100137174208 -846 1249 -0.01296296296296297 -846 1250 0.01342592592592595 -846 1251 -0.1551783264746231 -846 1252 -1.734723475976807e-18 -846 1253 0.02870370370370382 -846 1254 -0.204046639231826 -846 1255 0.01296296296296297 -846 1256 0.01342592592592593 -846 1257 -0.1551783264746229 -847 58 -0.0009703703703703679 -847 59 -0.0004999999999999993 -847 60 -0.008333333333333325 -847 64 -0.0002814814814814809 -847 65 -1.301042606982605e-18 -847 66 -3.469446951953614e-18 -847 70 -0.0009703703703703723 -847 71 0.0005000000000000007 -847 72 0.008333333333333325 -847 844 -0.001659259259259258 -847 845 8.673617379884035e-19 -847 846 -0.03333333333333333 -847 847 0.007762962962962965 -847 848 -2.059984127722458e-18 -847 849 -3.469446951953614e-18 -847 850 -0.001659259259259267 -847 851 1.084202172485504e-18 -847 852 0.03333333333333334 -847 1252 -0.0009703703703703701 -847 1253 0.0005 -847 1254 -0.008333333333333333 -847 1255 -0.0002814814814814757 -847 1256 2.168404344971009e-19 -847 1258 -0.0009703703703703719 -847 1259 -0.0005000000000000001 -847 1260 0.008333333333333337 -848 58 -0.0004999999999999994 -848 59 -0.001040740740740737 -848 60 -0.009259259259259231 -848 64 -1.409462824231156e-18 -848 65 -0.002362962962962962 -848 66 -0.03703703703703699 -848 70 0.0005000000000000007 -848 71 -0.001040740740740745 -848 72 -0.009259259259259259 -848 844 8.673617379884035e-19 -848 845 0.0002814814814814827 -848 846 3.642919299551295e-17 -848 847 -1.951563910473908e-18 -848 848 0.008325925925925922 -848 849 -3.469446951953614e-17 -848 850 1.084202172485504e-18 -848 851 0.0002814814814814755 -848 852 -6.938893903907228e-18 -848 1252 0.0005 -848 1253 -0.001040740740740741 -848 1254 0.009259259259259264 -848 1255 4.336808689942018e-19 -848 1256 -0.002362962962962955 -848 1257 0.03703703703703697 -848 1258 -0.0005000000000000002 -848 1259 -0.00104074074074074 -848 1260 0.009259259259259236 -849 58 -0.01296296296296292 -849 59 -0.01342592592592586 -849 60 -0.155178326474622 -849 64 -4.683753385137379e-17 -849 65 -0.02870370370370365 -849 66 -0.2040466392318238 -849 70 0.01296296296296297 -849 71 -0.01342592592592597 -849 72 -0.1551783264746228 -849 844 -0.02407407407407411 -849 845 -2.602085213965211e-17 -849 846 -0.1063100137174208 -849 847 5.551115123125783e-17 -849 848 3.295974604355933e-17 -849 849 1.241426611796979 -849 850 0.02407407407407407 -849 851 5.204170427930421e-18 -849 852 -0.1063100137174219 -849 1252 -0.01296296296296296 -849 1253 0.01342592592592592 -849 1254 -0.1551783264746228 -849 1255 -1.387778780781446e-17 -849 1256 0.02870370370370367 -849 1257 -0.2040466392318232 -849 1258 0.01296296296296296 -849 1259 0.01342592592592589 -849 1260 -0.1551783264746225 -850 64 -0.0009703703703703696 -850 65 -0.0004999999999999996 -850 66 -0.008333333333333333 -850 70 -0.0002814814814814739 -850 71 -1.517883041479706e-18 -850 72 -1.734723475976807e-18 -850 76 -0.0009703703703703727 -850 77 0.0005000000000000006 -850 78 0.008333333333333338 -850 847 -0.001659259259259267 -850 848 9.75781955236954e-19 -850 849 -0.03333333333333333 -850 850 0.00776296296296297 -850 851 -6.505213034913027e-19 -850 852 2.081668171172169e-17 -850 853 -0.001659259259259272 -850 854 -1.084202172485504e-19 -850 855 0.03333333333333335 -850 1255 -0.0009703703703703708 -850 1256 0.0004999999999999997 -850 1257 -0.008333333333333342 -850 1258 -0.000281481481481472 -850 1259 1.084202172485504e-18 -850 1260 3.469446951953614e-18 -850 1261 -0.0009703703703703727 -850 1262 -0.0005000000000000007 -850 1263 0.008333333333333342 -851 64 -0.0004999999999999994 -851 65 -0.001040740740740736 -851 66 -0.009259259259259217 -851 70 -1.301042606982605e-18 -851 71 -0.002362962962962953 -851 72 -0.03703703703703697 -851 76 0.0005000000000000006 -851 77 -0.001040740740740742 -851 78 -0.009259259259259247 -851 847 9.75781955236954e-19 -851 848 0.0002814814814814755 -851 849 4.85722573273506e-17 -851 850 -6.505213034913027e-19 -851 851 0.008325925925925915 -851 852 6.938893903907228e-18 -851 853 -2.168404344971009e-19 -851 854 0.0002814814814814703 -851 855 8.673617379884035e-18 -851 1255 0.0004999999999999998 -851 1256 -0.001040740740740737 -851 1257 0.009259259259259222 -851 1258 6.505213034913027e-19 -851 1259 -0.00236296296296295 -851 1260 0.03703703703703693 -851 1261 -0.0005000000000000004 -851 1262 -0.001040740740740742 -851 1263 0.009259259259259252 -852 64 -0.01296296296296292 -852 65 -0.01342592592592586 -852 66 -0.1551783264746218 -852 70 -5.377642775528102e-17 -852 71 -0.0287037037037036 -852 72 -0.2040466392318225 -852 76 0.01296296296296296 -852 77 -0.01342592592592594 -852 78 -0.1551783264746226 -852 847 -0.02407407407407414 -852 848 8.673617379884035e-18 -852 849 -0.1063100137174219 -852 850 6.591949208711867e-17 -852 851 -5.204170427930421e-18 -852 852 1.241426611796979 -852 853 0.02407407407407409 -852 854 -1.214306433183765e-17 -852 855 -0.1063100137174227 -852 1255 -0.01296296296296296 -852 1256 0.01342592592592586 -852 1257 -0.1551783264746222 -852 1258 -2.602085213965211e-17 -852 1259 0.0287037037037036 -852 1260 -0.2040466392318223 -852 1261 0.01296296296296297 -852 1262 0.01342592592592596 -852 1263 -0.1551783264746228 -853 70 -0.0009703703703703701 -853 71 -0.0004999999999999997 -853 72 -0.008333333333333338 -853 76 -0.0002814814814814781 -853 77 4.336808689942018e-19 -853 78 8.673617379884035e-18 -853 82 -0.0009703703703703683 -853 83 0.0004999999999999994 -853 84 0.008333333333333338 -853 850 -0.001659259259259272 -853 851 -2.168404344971009e-19 -853 852 -0.03333333333333336 -853 853 0.007762962962962967 -853 854 6.505213034913027e-19 -853 855 3.469446951953614e-18 -853 856 -0.00165925925925926 -853 857 -5.421010862427522e-19 -853 858 0.03333333333333335 -853 1258 -0.00097037037037037 -853 1259 0.0004999999999999997 -853 1260 -0.008333333333333342 -853 1261 -0.000281481481481479 -853 1262 -1.084202172485504e-19 -853 1263 -6.938893903907228e-18 -853 1264 -0.0009703703703703694 -853 1265 -0.0004999999999999997 -853 1266 0.00833333333333334 -854 70 -0.0004999999999999997 -854 71 -0.001040740740740737 -854 72 -0.009259259259259229 -854 76 3.252606517456513e-19 -854 77 -0.002362962962962959 -854 78 -0.03703703703703701 -854 82 0.0004999999999999994 -854 83 -0.001040740740740737 -854 84 -0.009259259259259252 -854 850 -1.084202172485504e-19 -854 851 0.0002814814814814703 -854 852 1.734723475976807e-18 -854 853 7.589415207398531e-19 -854 854 0.008325925925925917 -854 855 3.816391647148976e-17 -854 856 -6.505213034913027e-19 -854 857 0.000281481481481481 -854 858 6.938893903907228e-18 -854 1258 0.0004999999999999997 -854 1259 -0.001040740740740737 -854 1260 0.009259259259259229 -854 1262 -0.00236296296296296 -854 1263 0.03703703703703703 -854 1264 -0.0004999999999999998 -854 1265 -0.001040740740740739 -854 1266 0.009259259259259262 -855 70 -0.01296296296296294 -855 71 -0.01342592592592588 -855 72 -0.155178326474622 -855 76 -1.040834085586084e-17 -855 77 -0.02870370370370374 -855 78 -0.2040466392318237 -855 82 0.01296296296296294 -855 83 -0.01342592592592587 -855 84 -0.1551783264746225 -855 850 -0.02407407407407414 -855 851 -5.204170427930421e-18 -855 852 -0.1063100137174228 -855 853 1.734723475976807e-17 -855 854 5.204170427930421e-18 -855 855 1.241426611796981 -855 856 0.0240740740740741 -855 857 -3.469446951953614e-18 -855 858 -0.1063100137174213 -855 1258 -0.01296296296296294 -855 1259 0.01342592592592588 -855 1260 -0.1551783264746222 -855 1261 -5.204170427930421e-18 -855 1262 0.0287037037037037 -855 1263 -0.2040466392318239 -855 1264 0.01296296296296296 -855 1265 0.01342592592592592 -855 1266 -0.1551783264746227 -856 76 -0.0009703703703703726 -856 77 -0.0005000000000000007 -856 78 -0.008333333333333342 -856 82 -0.0002814814814814836 -856 83 1.517883041479706e-18 -856 84 1.734723475976807e-18 -856 88 -0.0009703703703703674 -856 89 0.0004999999999999991 -856 90 0.008333333333333338 -856 853 -0.00165925925925926 -856 854 -4.336808689942018e-19 -856 855 -0.03333333333333335 -856 856 0.007762962962962961 -856 857 3.252606517456513e-19 -856 858 -3.469446951953614e-18 -856 859 -0.001659259259259256 -856 860 2.168404344971009e-19 -856 861 0.03333333333333335 -856 1261 -0.0009703703703703711 -856 1262 0.0005000000000000003 -856 1263 -0.008333333333333335 -856 1264 -0.0002814814814814838 -856 1265 -1.301042606982605e-18 -856 1266 -3.469446951953614e-18 -856 1267 -0.0009703703703703672 -856 1268 -0.0004999999999999991 -856 1269 0.008333333333333337 -857 76 -0.0005000000000000008 -857 77 -0.001040740740740746 -857 78 -0.009259259259259292 -857 82 1.517883041479706e-18 -857 83 -0.002362962962962966 -857 84 -0.03703703703703709 -857 88 0.0004999999999999991 -857 89 -0.001040740740740736 -857 90 -0.00925925925925925 -857 853 -5.421010862427522e-19 -857 854 0.000281481481481481 -857 855 -3.122502256758253e-17 -857 856 4.336808689942018e-19 -857 857 0.008325925925925928 -857 858 -3.469446951953614e-17 -857 859 2.168404344971009e-19 -857 860 0.0002814814814814836 -857 861 -1.561251128379126e-17 -857 1261 0.0005000000000000002 -857 1262 -0.001040740740740743 -857 1263 0.009259259259259283 -857 1264 -1.192622389734055e-18 -857 1265 -0.002362962962962966 -857 1266 0.03703703703703708 -857 1267 -0.0004999999999999991 -857 1268 -0.001040740740740735 -857 1269 0.009259259259259236 -858 76 -0.012962962962963 -858 77 -0.013425925925926 -858 78 -0.1551783264746235 -858 82 5.898059818321144e-17 -858 83 -0.02870370370370377 -858 84 -0.204046639231825 -858 88 0.01296296296296294 -858 89 -0.01342592592592588 -858 90 -0.1551783264746223 -858 853 -0.02407407407407404 -858 854 8.673617379884035e-18 -858 855 -0.1063100137174213 -858 856 -1.283695372222837e-16 -858 857 1.214306433183765e-17 -858 858 1.241426611796983 -858 859 0.02407407407407416 -858 860 1.387778780781446e-17 -858 861 -0.1063100137174206 -858 1261 -0.01296296296296297 -858 1262 0.01342592592592597 -858 1263 -0.1551783264746232 -858 1264 6.071532165918825e-17 -858 1265 0.02870370370370377 -858 1266 -0.2040466392318249 -858 1267 0.01296296296296292 -858 1268 0.01342592592592586 -858 1269 -0.1551783264746219 -859 82 -0.0009703703703703731 -859 83 -0.0005000000000000008 -859 84 -0.00833333333333334 -859 88 -0.0002814814814814823 -859 89 1.734723475976807e-18 -859 90 3.469446951953614e-18 -859 94 -0.0009703703703703672 -859 95 0.000499999999999999 -859 96 0.00833333333333334 -859 856 -0.001659259259259256 -859 858 -0.03333333333333335 -859 859 0.007762962962962961 -859 860 4.336808689942018e-19 -859 862 -0.001659259259259261 -859 863 -4.336808689942018e-19 -859 864 0.03333333333333335 -859 1264 -0.0009703703703703734 -859 1265 0.000500000000000001 -859 1266 -0.008333333333333333 -859 1267 -0.0002814814814814811 -859 1268 -1.626303258728257e-18 -859 1269 -3.469446951953614e-18 -859 1270 -0.0009703703703703681 -859 1271 -0.0004999999999999994 -859 1272 0.008333333333333335 -860 82 -0.0005000000000000009 -860 83 -0.001040740740740747 -860 84 -0.009259259259259297 -860 88 1.951563910473908e-18 -860 89 -0.002362962962962964 -860 90 -0.03703703703703706 -860 94 0.000499999999999999 -860 95 -0.001040740740740734 -860 96 -0.009259259259259236 -860 856 3.252606517456513e-19 -860 857 0.0002814814814814835 -860 858 -6.938893903907228e-18 -860 859 2.168404344971009e-19 -860 860 0.008325925925925928 -860 861 -1.040834085586084e-17 -860 862 -5.421010862427522e-19 -860 863 0.0002814814814814808 -860 864 -6.938893903907228e-18 -860 1264 0.0005000000000000009 -860 1265 -0.001040740740740747 -860 1266 0.00925925925925929 -860 1267 -1.734723475976807e-18 -860 1268 -0.002362962962962963 -860 1269 0.03703703703703703 -860 1270 -0.0004999999999999993 -860 1271 -0.001040740740740735 -860 1272 0.009259259259259226 -861 82 -0.012962962962963 -861 83 -0.01342592592592603 -861 84 -0.1551783264746236 -861 88 7.28583859910259e-17 -861 89 -0.02870370370370378 -861 90 -0.2040466392318247 -861 94 0.01296296296296293 -861 95 -0.01342592592592582 -861 96 -0.1551783264746222 -861 856 -0.02407407407407402 -861 857 1.214306433183765e-17 -861 858 -0.1063100137174207 -861 859 -1.370431546021678e-16 -861 860 3.816391647148976e-17 -861 861 1.241426611796982 -861 862 0.02407407407407416 -861 863 8.673617379884035e-18 -861 864 -0.1063100137174213 -861 1264 -0.012962962962963 -861 1265 0.01342592592592602 -861 1266 -0.1551783264746233 -861 1267 6.765421556309548e-17 -861 1268 0.02870370370370369 -861 1269 -0.2040466392318241 -861 1270 0.01296296296296293 -861 1271 0.01342592592592586 -861 1272 -0.155178326474622 -862 88 -0.0009703703703703739 -862 89 -0.0005000000000000011 -862 90 -0.008333333333333342 -862 94 -0.0002814814814814808 -862 95 1.517883041479706e-18 -862 96 -1.040834085586084e-17 -862 100 -0.0009703703703703687 -862 101 0.0004999999999999994 -862 102 0.008333333333333335 -862 859 -0.001659259259259261 -862 860 -4.336808689942018e-19 -862 861 -0.03333333333333335 -862 862 0.007762962962962964 -862 863 4.336808689942018e-19 -862 864 -1.734723475976807e-17 -862 865 -0.001659259259259258 -862 866 2.168404344971009e-19 -862 867 0.03333333333333334 -862 1267 -0.0009703703703703732 -862 1268 0.0005000000000000008 -862 1269 -0.008333333333333333 -862 1270 -0.0002814814814814796 -862 1271 -1.301042606982605e-18 -862 1272 -1.734723475976807e-18 -862 1273 -0.0009703703703703687 -862 1274 -0.0004999999999999995 -862 1275 0.008333333333333337 -863 88 -0.0005000000000000011 -863 89 -0.001040740740740747 -863 90 -0.00925925925925929 -863 94 1.409462824231156e-18 -863 95 -0.002362962962962962 -863 96 -0.03703703703703703 -863 100 0.0004999999999999996 -863 101 -0.001040740740740737 -863 102 -0.009259259259259245 -863 859 -4.336808689942018e-19 -863 860 0.0002814814814814807 -863 861 -3.469446951953614e-17 -863 862 5.421010862427522e-19 -863 863 0.008325925925925928 -863 864 -2.081668171172169e-17 -863 866 0.0002814814814814828 -863 867 -6.938893903907228e-18 -863 1267 0.0005000000000000009 -863 1268 -0.001040740740740746 -863 1269 0.009259259259259267 -863 1270 -1.409462824231156e-18 -863 1271 -0.002362962962962961 -863 1272 0.037037037037037 -863 1273 -0.0004999999999999994 -863 1274 -0.001040740740740737 -863 1275 0.009259259259259236 -864 88 -0.01296296296296301 -864 89 -0.01342592592592601 -864 90 -0.1551783264746237 -864 94 6.765421556309548e-17 -864 95 -0.0287037037037037 -864 96 -0.2040466392318244 -864 100 0.01296296296296295 -864 101 -0.01342592592592588 -864 102 -0.1551783264746223 -864 859 -0.02407407407407403 -864 860 1.040834085586084e-17 -864 861 -0.1063100137174213 -864 862 -1.058181320345852e-16 -864 863 1.387778780781446e-17 -864 864 1.241426611796982 -864 865 0.02407407407407413 -864 866 1.734723475976807e-18 -864 867 -0.1063100137174209 -864 1267 -0.01296296296296299 -864 1268 0.01342592592592599 -864 1269 -0.1551783264746232 -864 1270 4.510281037539698e-17 -864 1271 0.02870370370370369 -864 1272 -0.2040466392318239 -864 1273 0.01296296296296294 -864 1274 0.01342592592592587 -864 1275 -0.1551783264746222 -865 94 -0.0009703703703703725 -865 95 -0.0005000000000000007 -865 96 -0.008333333333333335 -865 100 -0.0002814814814814782 -865 101 4.336808689942018e-19 -865 102 1.734723475976807e-18 -865 106 -0.0009703703703703711 -865 107 0.0005000000000000001 -865 108 0.008333333333333338 -865 862 -0.001659259259259258 -865 864 -0.03333333333333333 -865 865 0.007762962962962967 -865 866 -1.084202172485504e-19 -865 867 3.469446951953614e-18 -865 868 -0.001659259259259264 -865 870 0.03333333333333334 -865 1270 -0.0009703703703703726 -865 1271 0.0005000000000000007 -865 1272 -0.008333333333333333 -865 1273 -0.000281481481481479 -865 1274 -6.505213034913027e-19 -865 1275 -3.469446951953614e-18 -865 1276 -0.0009703703703703708 -865 1277 -0.0005 -865 1278 0.008333333333333337 -866 94 -0.0005000000000000007 -866 95 -0.001040740740740744 -866 96 -0.009259259259259274 -866 100 5.421010862427522e-19 -866 101 -0.002362962962962959 -866 102 -0.03703703703703703 -866 106 0.0005000000000000001 -866 107 -0.00104074074074074 -866 108 -0.00925925925925925 -866 862 2.168404344971009e-19 -866 863 0.0002814814814814827 -866 864 3.469446951953614e-18 -866 865 -1.084202172485504e-19 -866 866 0.008325925925925928 -866 867 1.734723475976807e-17 -866 869 0.0002814814814814776 -866 870 1.734723475976807e-18 -866 1270 0.0005000000000000007 -866 1271 -0.001040740740740745 -866 1272 0.009259259259259269 -866 1273 -6.505213034913027e-19 -866 1274 -0.00236296296296296 -866 1275 0.03703703703703701 -866 1276 -0.0005000000000000001 -866 1277 -0.00104074074074074 -866 1278 0.009259259259259247 -867 94 -0.01296296296296299 -867 95 -0.01342592592592597 -867 96 -0.1551783264746232 -867 100 2.775557561562891e-17 -867 101 -0.02870370370370363 -867 102 -0.2040466392318236 -867 106 0.01296296296296296 -867 107 -0.01342592592592591 -867 108 -0.1551783264746225 -867 862 -0.02407407407407406 -867 863 -3.469446951953614e-18 -867 864 -0.1063100137174209 -867 865 -5.030698080332741e-17 -867 866 -2.42861286636753e-17 -867 867 1.241426611796981 -867 868 0.02407407407407411 -867 869 -1.734723475976807e-18 -867 870 -0.1063100137174216 -867 1270 -0.01296296296296299 -867 1271 0.01342592592592598 -867 1272 -0.1551783264746231 -867 1273 3.122502256758253e-17 -867 1274 0.02870370370370365 -867 1275 -0.2040466392318237 -867 1276 0.01296296296296296 -867 1277 0.01342592592592592 -867 1278 -0.1551783264746225 -868 100 -0.0009703703703703707 -868 101 -0.0005 -868 102 -0.008333333333333338 -868 106 -0.0002814814814814827 -868 107 -4.336808689942018e-19 -868 108 -1.387778780781446e-17 -868 112 -0.0009703703703703692 -868 113 0.0004999999999999998 -868 114 0.008333333333333333 -868 865 -0.001659259259259264 -868 867 -0.03333333333333334 -868 868 0.007762962962962964 -868 869 4.336808689942018e-19 -868 870 -6.938893903907228e-18 -868 871 -0.001659259259259252 -868 872 7.589415207398531e-19 -868 873 0.03333333333333334 -868 1273 -0.0009703703703703709 -868 1274 0.0005 -868 1275 -0.008333333333333333 -868 1276 -0.0002814814814814824 -868 1277 -5.421010862427522e-19 -868 1278 1.040834085586084e-17 -868 1279 -0.0009703703703703708 -868 1280 -0.0005000000000000001 -868 1281 0.008333333333333338 -869 100 -0.0005 -869 101 -0.00104074074074074 -869 102 -0.00925925925925925 -869 106 -5.421010862427522e-19 -869 107 -0.002362962962962964 -869 108 -0.03703703703703706 -869 112 0.0004999999999999998 -869 113 -0.001040740740740741 -869 114 -0.009259259259259281 -869 866 0.0002814814814814776 -869 867 1.734723475976807e-18 -869 868 4.336808689942018e-19 -869 869 0.008325925925925928 -869 870 -6.938893903907228e-18 -869 871 7.589415207398531e-19 -869 872 0.0002814814814814874 -869 873 -1.734723475976807e-17 -869 1273 0.0005 -869 1274 -0.00104074074074074 -869 1275 0.009259259259259247 -869 1276 -3.252606517456513e-19 -869 1277 -0.002362962962962964 -869 1278 0.03703703703703706 -869 1279 -0.0005000000000000002 -869 1280 -0.001040740740740742 -869 1281 0.00925925925925928 -870 100 -0.01296296296296296 -870 101 -0.01342592592592591 -870 102 -0.1551783264746224 -870 106 -3.642919299551295e-17 -870 107 -0.02870370370370372 -870 108 -0.2040466392318249 -870 112 0.01296296296296298 -870 113 -0.01342592592592596 -870 114 -0.1551783264746235 -870 865 -0.0240740740740741 -870 866 3.469446951953614e-18 -870 867 -0.1063100137174216 -870 868 6.418476861114186e-17 -870 869 8.673617379884035e-18 -870 870 1.241426611796983 -870 871 0.02407407407407403 -870 872 -6.938893903907228e-18 -870 873 -0.1063100137174206 -870 1273 -0.01296296296296295 -870 1274 0.01342592592592591 -870 1275 -0.1551783264746225 -870 1276 -1.214306433183765e-17 -870 1277 0.02870370370370372 -870 1278 -0.2040466392318246 -870 1279 0.01296296296296298 -870 1280 0.01342592592592596 -870 1281 -0.1551783264746233 -871 106 -0.0009703703703703711 -871 107 -0.0005000000000000003 -871 108 -0.008333333333333345 -871 112 -0.0002814814814814848 -871 113 -2.168404344971009e-19 -871 114 -1.908195823574488e-17 -871 118 -0.0009703703703703693 -871 119 0.0004999999999999998 -871 120 0.008333333333333345 -871 868 -0.001659259259259252 -871 869 7.589415207398531e-19 -871 870 -0.03333333333333333 -871 871 0.007762962962962959 -871 872 2.168404344971009e-19 -871 873 -6.938893903907228e-18 -871 874 -0.001659259259259255 -871 875 -3.252606517456513e-19 -871 876 0.03333333333333335 -871 1276 -0.0009703703703703688 -871 1277 0.0004999999999999999 -871 1278 -0.008333333333333325 -871 1279 -0.0002814814814814887 -871 1280 -3.252606517456513e-19 -871 1281 -1.734723475976807e-18 -871 1282 -0.0009703703703703678 -871 1283 -0.0004999999999999995 -871 1284 0.008333333333333325 -872 106 -0.0005000000000000001 -872 107 -0.001040740740740742 -872 108 -0.009259259259259278 -872 112 -1.084202172485504e-19 -872 113 -0.002362962962962968 -872 114 -0.03703703703703713 -872 118 0.0004999999999999997 -872 119 -0.00104074074074074 -872 120 -0.009259259259259276 -872 868 7.589415207398531e-19 -872 869 0.0002814814814814875 -872 871 3.252606517456513e-19 -872 872 0.008325925925925931 -872 873 -2.081668171172169e-17 -872 874 -1.084202172485504e-19 -872 875 0.0002814814814814836 -872 876 -1.214306433183765e-17 -872 1276 0.0004999999999999998 -872 1277 -0.001040740740740742 -872 1278 0.009259259259259283 -872 1279 -5.421010862427522e-19 -872 1280 -0.002362962962962972 -872 1281 0.03703703703703709 -872 1282 -0.0004999999999999995 -872 1283 -0.001040740740740739 -872 1284 0.009259259259259252 -873 106 -0.012962962962963 -873 107 -0.01342592592592596 -873 108 -0.1551783264746237 -873 112 2.949029909160572e-17 -873 113 -0.02870370370370381 -873 114 -0.2040466392318259 -873 118 0.01296296296296296 -873 119 -0.01342592592592593 -873 120 -0.1551783264746231 -873 868 -0.02407407407407405 -873 869 2.602085213965211e-17 -873 870 -0.1063100137174206 -873 871 -2.602085213965211e-17 -873 872 -1.734723475976807e-17 -873 873 1.241426611796986 -873 874 0.02407407407407409 -873 875 4.163336342344337e-17 -873 876 -0.1063100137174208 -873 1276 -0.01296296296296297 -873 1277 0.01342592592592595 -873 1278 -0.1551783264746232 -873 1279 2.775557561562891e-17 -873 1280 0.02870370370370379 -873 1281 -0.2040466392318259 -873 1282 0.01296296296296293 -873 1283 0.01342592592592591 -873 1284 -0.1551783264746224 -874 112 -0.0009703703703703713 -874 113 -0.0005000000000000004 -874 114 -0.008333333333333342 -874 118 -0.0002814814814814798 -874 119 4.336808689942018e-19 -874 120 -1.214306433183765e-17 -874 124 -0.0009703703703703684 -874 125 0.0004999999999999994 -874 126 0.008333333333333331 -874 871 -0.001659259259259255 -874 872 -1.084202172485504e-19 -874 873 -0.03333333333333334 -874 874 0.007762962962962966 -874 875 1.192622389734055e-18 -874 876 -6.938893903907228e-18 -874 877 -0.001659259259259265 -874 878 1.084202172485504e-19 -874 879 0.03333333333333334 -874 1279 -0.0009703703703703726 -874 1280 0.0005000000000000007 -874 1281 -0.008333333333333335 -874 1282 -0.0002814814814814815 -874 1283 -8.673617379884035e-19 -874 1284 3.469446951953614e-18 -874 1285 -0.0009703703703703724 -874 1286 -0.0005000000000000002 -874 1287 0.008333333333333345 -875 112 -0.0005000000000000004 -875 113 -0.001040740740740744 -875 114 -0.009259259259259293 -875 118 4.336808689942018e-19 -875 119 -0.002362962962962961 -875 120 -0.03703703703703706 -875 124 0.0004999999999999995 -875 125 -0.001040740740740736 -875 126 -0.009259259259259217 -875 871 -3.252606517456513e-19 -875 872 0.0002814814814814837 -875 873 -1.214306433183765e-17 -875 874 1.192622389734055e-18 -875 875 0.008325925925925931 -875 877 -2.168404344971009e-19 -875 878 0.0002814814814814749 -875 879 3.989863994746656e-17 -875 1279 0.0005000000000000007 -875 1280 -0.001040740740740745 -875 1281 0.009259259259259271 -875 1282 -8.673617379884035e-19 -875 1283 -0.002362962962962963 -875 1284 0.03703703703703704 -875 1285 -0.0005000000000000003 -875 1286 -0.00104074074074074 -875 1287 0.00925925925925924 -876 112 -0.01296296296296299 -876 113 -0.01342592592592599 -876 114 -0.1551783264746236 -876 118 4.510281037539698e-17 -876 119 -0.0287037037037037 -876 120 -0.2040466392318243 -876 124 0.01296296296296293 -876 125 -0.01342592592592589 -876 126 -0.1551783264746219 -876 871 -0.02407407407407403 -876 872 1.908195823574488e-17 -876 873 -0.1063100137174208 -876 874 -9.020562075079397e-17 -876 875 3.642919299551295e-17 -876 876 1.241426611796983 -876 877 0.02407407407407413 -876 878 -4.510281037539698e-17 -876 879 -0.106310013717422 -876 1279 -0.01296296296296299 -876 1280 0.01342592592592599 -876 1281 -0.1551783264746232 -876 1282 2.081668171172169e-17 -876 1283 0.02870370370370365 -876 1284 -0.2040466392318244 -876 1285 0.01296296296296299 -876 1286 0.01342592592592593 -876 1287 -0.1551783264746229 -877 118 -0.000970370370370374 -877 119 -0.0005000000000000009 -877 120 -0.008333333333333344 -877 124 -0.0002814814814814742 -877 125 1.192622389734055e-18 -877 126 8.673617379884035e-18 -877 130 -0.0009703703703703731 -877 131 0.0005000000000000002 -877 132 0.008333333333333342 -877 874 -0.001659259259259265 -877 875 -1.084202172485504e-19 -877 876 -0.03333333333333335 -877 877 0.00776296296296297 -877 878 6.505213034913027e-19 -877 879 3.469446951953614e-18 -877 880 -0.001659259259259271 -877 881 -9.75781955236954e-19 -877 882 0.03333333333333333 -877 1282 -0.0009703703703703691 -877 1283 0.0004999999999999998 -877 1284 -0.008333333333333323 -877 1285 -0.0002814814814814738 -877 1286 -1.084202172485504e-19 -877 1287 5.204170427930421e-18 -877 1288 -0.0009703703703703695 -877 1289 -0.0004999999999999997 -877 1290 0.008333333333333328 -878 118 -0.0005000000000000009 -878 119 -0.001040740740740744 -878 120 -0.009259259259259247 -878 124 5.421010862427522e-19 -878 125 -0.002362962962962953 -878 126 -0.03703703703703696 -878 130 0.0005000000000000002 -878 131 -0.00104074074074074 -878 132 -0.009259259259259215 -878 874 1.084202172485504e-19 -878 875 0.0002814814814814749 -878 877 7.589415207398531e-19 -878 878 0.008325925925925922 -878 879 -5.204170427930421e-17 -878 880 -4.336808689942018e-19 -878 881 0.0002814814814814716 -878 882 4.336808689942018e-17 -878 1282 0.0004999999999999998 -878 1283 -0.001040740740740741 -878 1284 0.00925925925925925 -878 1285 -3.252606517456513e-19 -878 1286 -0.002362962962962953 -878 1287 0.03703703703703695 -878 1288 -0.0004999999999999998 -878 1289 -0.001040740740740738 -878 1290 0.009259259259259238 -879 118 -0.01296296296296301 -879 119 -0.01342592592592599 -879 120 -0.155178326474623 -879 124 4.683753385137379e-17 -879 125 -0.02870370370370347 -879 126 -0.2040466392318226 -879 130 0.01296296296296297 -879 131 -0.01342592592592594 -879 132 -0.1551783264746225 -879 874 -0.02407407407407409 -879 875 3.469446951953614e-18 -879 876 -0.106310013717422 -879 877 -5.030698080332741e-17 -879 878 -7.459310946700271e-17 -879 879 1.241426611796979 -879 880 0.02407407407407413 -879 881 3.816391647148976e-17 -879 882 -0.1063100137174224 -879 1282 -0.01296296296296294 -879 1283 0.01342592592592593 -879 1284 -0.1551783264746226 -879 1285 2.081668171172169e-17 -879 1286 0.02870370370370368 -879 1287 -0.2040466392318226 -879 1288 0.01296296296296292 -879 1289 0.01342592592592584 -879 1290 -0.1551783264746218 -880 124 -0.0009703703703703684 -880 125 -0.0004999999999999994 -880 126 -0.008333333333333321 -880 130 -0.0002814814814814745 -880 131 -2.168404344971009e-19 -880 132 2.602085213965211e-17 -880 136 -0.0009703703703703724 -880 137 0.0005000000000000007 -880 138 0.008333333333333323 -880 877 -0.00165925925925927 -880 878 -5.421010862427522e-19 -880 879 -0.03333333333333335 -880 880 0.007762962962962972 -880 881 -1.517883041479706e-18 -880 882 -1.040834085586084e-17 -880 883 -0.001659259259259265 -880 884 2.168404344971009e-19 -880 885 0.03333333333333332 -880 1285 -0.0009703703703703738 -880 1286 0.0005000000000000007 -880 1287 -0.008333333333333351 -880 1288 -0.0002814814814814732 -880 1289 8.673617379884035e-19 -880 1290 -1.734723475976807e-17 -880 1291 -0.0009703703703703744 -880 1292 -0.0005000000000000009 -880 1293 0.008333333333333345 -881 124 -0.0004999999999999994 -881 125 -0.001040740740740738 -881 126 -0.009259259259259215 -881 130 2.168404344971009e-19 -881 131 -0.002362962962962953 -881 132 -0.03703703703703697 -881 136 0.0005000000000000006 -881 137 -0.001040740740740745 -881 138 -0.009259259259259247 -881 877 -9.75781955236954e-19 -881 878 0.0002814814814814716 -881 879 4.336808689942018e-17 -881 880 -1.517883041479706e-18 -881 881 0.008325925925925928 -881 882 -6.591949208711867e-17 -881 883 3.252606517456513e-19 -881 884 0.0002814814814814745 -881 885 1.734723475976807e-17 -881 1285 0.0005000000000000006 -881 1286 -0.00104074074074074 -881 1287 0.00925925925925924 -881 1288 1.409462824231156e-18 -881 1289 -0.002362962962962952 -881 1290 0.03703703703703692 -881 1291 -0.0005000000000000009 -881 1292 -0.001040740740740744 -881 1293 0.00925925925925925 -882 124 -0.01296296296296292 -882 125 -0.01342592592592591 -882 126 -0.1551783264746219 -882 130 -2.775557561562891e-17 -882 131 -0.0287037037037035 -882 132 -0.2040466392318225 -882 136 0.01296296296296297 -882 137 -0.013425925925926 -882 138 -0.1551783264746227 -882 877 -0.02407407407407411 -882 878 -2.42861286636753e-17 -882 879 -0.1063100137174224 -882 880 6.071532165918825e-17 -882 881 4.336808689942018e-17 -882 882 1.241426611796979 -882 883 0.02407407407407404 -882 884 -3.469446951953614e-18 -882 885 -0.1063100137174218 -882 1285 -0.01296296296296298 -882 1286 0.01342592592592587 -882 1287 -0.1551783264746223 -882 1288 -4.85722573273506e-17 -882 1289 0.02870370370370355 -882 1290 -0.2040466392318223 -882 1291 0.01296296296296301 -882 1292 0.01342592592592598 -882 1293 -0.155178326474623 -883 130 -0.0009703703703703685 -883 131 -0.0004999999999999993 -883 132 -0.008333333333333325 -883 136 -0.0002814814814814866 -883 137 -1.517883041479706e-18 -883 138 1.734723475976807e-18 -883 142 -0.0009703703703703733 -883 143 0.0005000000000000011 -883 144 0.008333333333333326 -883 880 -0.001659259259259265 -883 881 2.168404344971009e-19 -883 882 -0.03333333333333333 -883 883 0.007762962962962967 -883 884 -4.336808689942018e-19 -883 885 -2.081668171172169e-17 -883 886 -0.001659259259259256 -883 887 -6.505213034913027e-19 -883 888 0.03333333333333333 -883 1288 -0.000970370370370368 -883 1289 0.0004999999999999993 -883 1290 -0.008333333333333333 -883 1291 -0.0002814814814814782 -883 1292 1.951563910473908e-18 -883 1293 -2.255140518769849e-17 -883 1294 -0.0009703703703703714 -883 1295 -0.0005000000000000007 -883 1296 0.008333333333333328 -884 130 -0.0004999999999999994 -884 131 -0.001040740740740736 -884 132 -0.00925925925925921 -884 136 -1.192622389734055e-18 -884 137 -0.002362962962962969 -884 138 -0.03703703703703703 -884 142 0.0005000000000000011 -884 143 -0.001040740740740748 -884 144 -0.009259259259259297 -884 880 2.168404344971009e-19 -884 881 0.0002814814814814745 -884 882 2.081668171172169e-17 -884 883 -5.421010862427522e-19 -884 884 0.008325925925925936 -884 885 3.469446951953614e-18 -884 886 -8.673617379884035e-19 -884 887 0.0002814814814814851 -884 888 -3.469446951953614e-18 -884 1288 0.0004999999999999991 -884 1289 -0.001040740740740734 -884 1290 0.00925925925925921 -884 1291 2.059984127722458e-18 -884 1292 -0.002362962962962959 -884 1293 0.03703703703703703 -884 1294 -0.0005000000000000007 -884 1295 -0.001040740740740747 -884 1296 0.009259259259259302 -885 130 -0.01296296296296293 -885 131 -0.01342592592592588 -885 132 -0.1551783264746217 -885 136 -6.765421556309548e-17 -885 137 -0.02870370370370363 -885 138 -0.204046639231825 -885 142 0.012962962962963 -885 143 -0.01342592592592599 -885 144 -0.1551783264746237 -885 880 -0.02407407407407416 -885 881 -1.734723475976807e-18 -885 882 -0.1063100137174218 -885 883 2.393918396847994e-16 -885 884 -2.775557561562891e-17 -885 885 1.241426611796982 -885 886 0.02407407407407393 -885 887 -5.204170427930421e-18 -885 888 -0.1063100137174208 -885 1288 -0.01296296296296292 -885 1289 0.01342592592592585 -885 1290 -0.1551783264746218 -885 1291 -6.245004513516506e-17 -885 1292 0.02870370370370365 -885 1293 -0.2040466392318239 -885 1294 0.01296296296296299 -885 1295 0.01342592592592604 -885 1296 -0.1551783264746237 -886 136 -0.0009703703703703666 -886 137 -0.0004999999999999991 -886 138 -0.008333333333333321 -886 142 -0.0002814814814814873 -886 143 -1.084202172485504e-18 -886 144 8.673617379884035e-18 -886 148 -0.0009703703703703708 -886 149 0.0005000000000000004 -886 150 0.008333333333333338 -886 883 -0.001659259259259256 -886 884 -8.673617379884035e-19 -886 885 -0.03333333333333331 -886 886 0.007762962962962953 -886 887 -1.843143693225358e-18 -886 888 2.081668171172169e-17 -886 889 -0.001659259259259248 -886 890 1.192622389734055e-18 -886 891 0.03333333333333334 -886 1291 -0.0009703703703703688 -886 1292 0.0004999999999999994 -886 1293 -0.008333333333333344 -886 1294 -0.0002814814814814872 -886 1295 1.517883041479706e-18 -886 1296 -1.734723475976807e-17 -886 1297 -0.0009703703703703682 -886 1298 -0.0004999999999999996 -886 1299 0.008333333333333337 -887 136 -0.0004999999999999991 -887 137 -0.001040740740740736 -887 138 -0.009259259259259252 -887 142 -1.192622389734055e-18 -887 143 -0.002362962962962971 -887 144 -0.0370370370370371 -887 148 0.0005000000000000002 -887 149 -0.001040740740740744 -887 150 -0.009259259259259309 -887 883 -6.505213034913027e-19 -887 884 0.0002814814814814849 -887 885 -2.255140518769849e-17 -887 886 -2.059984127722458e-18 -887 887 0.008325925925925922 -887 888 -2.081668171172169e-17 -887 889 1.409462824231156e-18 -887 890 0.0002814814814814906 -887 891 -6.418476861114186e-17 -887 1291 0.0004999999999999995 -887 1292 -0.001040740740740736 -887 1293 0.009259259259259245 -887 1294 1.517883041479706e-18 -887 1295 -0.00236296296296297 -887 1296 0.03703703703703713 -887 1297 -0.0004999999999999996 -887 1298 -0.00104074074074074 -887 1299 0.009259259259259283 -888 136 -0.01296296296296291 -888 137 -0.01342592592592585 -888 138 -0.1551783264746223 -888 142 -7.112366251504909e-17 -888 143 -0.02870370370370389 -888 144 -0.2040466392318257 -888 148 0.01296296296296298 -888 149 -0.01342592592592596 -888 150 -0.1551783264746232 -888 883 -0.02407407407407409 -888 884 -1.040834085586084e-17 -888 885 -0.1063100137174208 -888 886 1.387778780781446e-17 -888 887 3.816391647148976e-17 -888 888 1.241426611796982 -888 889 0.02407407407407411 -888 890 1.734723475976807e-17 -888 891 -0.1063100137174196 -888 1291 -0.01296296296296295 -888 1292 0.01342592592592587 -888 1293 -0.1551783264746227 -888 1294 -2.42861286636753e-17 -888 1295 0.02870370370370387 -888 1296 -0.2040466392318257 -888 1297 0.01296296296296294 -888 1298 0.01342592592592593 -888 1299 -0.1551783264746225 -889 142 -0.0009703703703703686 -889 143 -0.0004999999999999996 -889 144 -0.00833333333333334 -889 148 -0.0002814814814814861 -889 149 -6.505213034913027e-19 -889 150 -8.673617379884035e-18 -889 154 -0.0009703703703703709 -889 155 0.0005000000000000001 -889 156 0.008333333333333335 -889 886 -0.001659259259259248 -889 887 1.301042606982605e-18 -889 888 -0.03333333333333337 -889 889 0.007762962962962963 -889 890 -1.843143693225358e-18 -889 891 -1.734723475976807e-17 -889 892 -0.00165925925925926 -889 893 8.673617379884035e-19 -889 894 0.03333333333333335 -889 1294 -0.0009703703703703708 -889 1295 0.0005000000000000003 -889 1296 -0.00833333333333334 -889 1297 -0.0002814814814814862 -889 1298 -5.421010862427522e-19 -889 1299 -3.469446951953614e-18 -889 1300 -0.0009703703703703702 -889 1301 -0.0004999999999999999 -889 1302 0.008333333333333338 -890 142 -0.0004999999999999996 -890 143 -0.00104074074074074 -890 144 -0.00925925925925929 -890 148 -4.336808689942018e-19 -890 149 -0.002362962962962969 -890 150 -0.03703703703703709 -890 154 0.0005000000000000002 -890 155 -0.001040740740740742 -890 156 -0.009259259259259266 -890 886 1.301042606982605e-18 -890 887 0.0002814814814814906 -890 888 1.214306433183765e-17 -890 889 -2.168404344971009e-18 -890 890 0.008325925925925935 -890 891 3.469446951953614e-17 -890 892 6.505213034913027e-19 -890 893 0.0002814814814814811 -890 894 -3.469446951953614e-17 -890 1294 0.0005000000000000004 -890 1295 -0.001040740740740744 -890 1296 0.009259259259259302 -890 1297 -5.421010862427522e-19 -890 1298 -0.002362962962962969 -890 1299 0.03703703703703713 -890 1300 -0.0004999999999999999 -890 1301 -0.00104074074074074 -890 1302 0.009259259259259255 -891 142 -0.01296296296296295 -891 143 -0.01342592592592591 -891 144 -0.1551783264746227 -891 148 -1.734723475976807e-17 -891 149 -0.02870370370370384 -891 150 -0.2040466392318254 -891 154 0.01296296296296297 -891 155 -0.01342592592592594 -891 156 -0.155178326474623 -891 886 -0.02407407407407409 -891 887 -1.734723475976807e-18 -891 888 -0.1063100137174197 -891 889 2.949029909160572e-17 -891 890 3.122502256758253e-17 -891 891 1.241426611796983 -891 892 0.02407407407407406 -891 893 3.469446951953614e-18 -891 894 -0.1063100137174213 -891 1294 -0.01296296296296299 -891 1295 0.013425925925926 -891 1296 -0.1551783264746231 -891 1297 1.387778780781446e-17 -891 1298 0.02870370370370373 -891 1299 -0.2040466392318253 -891 1300 0.01296296296296297 -891 1301 0.01342592592592593 -891 1302 -0.1551783264746228 -892 148 -0.0009703703703703704 -892 149 -0.0004999999999999999 -892 150 -0.008333333333333335 -892 154 -0.0002814814814814812 -892 155 -6.505213034913027e-19 -892 156 -2.081668171172169e-17 -892 160 -0.0009703703703703698 -892 161 0.0004999999999999998 -892 162 0.008333333333333333 -892 889 -0.00165925925925926 -892 890 6.505213034913027e-19 -892 891 -0.03333333333333333 -892 892 0.007762962962962964 -892 893 1.192622389734055e-18 -892 894 -1.734723475976807e-17 -892 895 -0.001659259259259261 -892 896 -9.75781955236954e-19 -892 897 0.03333333333333335 -892 1297 -0.0009703703703703709 -892 1298 0.0005000000000000001 -892 1299 -0.008333333333333331 -892 1300 -0.0002814814814814774 -892 1301 4.336808689942018e-19 -892 1302 -5.204170427930421e-18 -892 1303 -0.0009703703703703732 -892 1304 -0.0005000000000000007 -892 1305 0.008333333333333335 -893 148 -0.0005 -893 149 -0.00104074074074074 -893 150 -0.009259259259259255 -893 154 -5.421010862427522e-19 -893 155 -0.002362962962962963 -893 156 -0.03703703703703702 -893 160 0.0004999999999999999 -893 161 -0.00104074074074074 -893 162 -0.009259259259259257 -893 889 9.75781955236954e-19 -893 890 0.0002814814814814812 -893 891 3.469446951953614e-18 -893 892 1.084202172485504e-18 -893 893 0.008325925925925924 -893 894 -1.040834085586084e-17 -893 895 -1.192622389734055e-18 -893 896 0.0002814814814814809 -893 897 3.642919299551295e-17 -893 1297 0.0005000000000000001 -893 1298 -0.001040740740740742 -893 1299 0.009259259259259264 -893 1300 4.336808689942018e-19 -893 1301 -0.002362962962962957 -893 1302 0.037037037037037 -893 1303 -0.0005000000000000007 -893 1304 -0.001040740740740744 -893 1305 0.009259259259259259 -894 148 -0.01296296296296296 -894 149 -0.01342592592592591 -894 150 -0.1551783264746228 -894 154 -8.673617379884035e-18 -894 155 -0.02870370370370373 -894 156 -0.2040466392318246 -894 160 0.01296296296296296 -894 161 -0.01342592592592592 -894 162 -0.1551783264746229 -894 889 -0.02407407407407409 -894 890 3.469446951953614e-18 -894 891 -0.1063100137174213 -894 892 2.775557561562891e-17 -894 893 4.163336342344337e-17 -894 894 1.241426611796983 -894 895 0.02407407407407406 -894 896 2.42861286636753e-17 -894 897 -0.1063100137174213 -894 1297 -0.01296296296296297 -894 1298 0.01342592592592595 -894 1299 -0.155178326474623 -894 1300 -1.734723475976807e-17 -894 1301 0.02870370370370361 -894 1302 -0.2040466392318236 -894 1303 0.01296296296296299 -894 1304 0.01342592592592594 -894 1305 -0.155178326474623 -895 154 -0.0009703703703703715 -895 155 -0.0005000000000000002 -895 156 -0.008333333333333342 -895 160 -0.0002814814814814781 -895 161 -7.589415207398531e-19 -895 162 -2.255140518769849e-17 -895 166 -0.0009703703703703687 -895 167 0.0004999999999999996 -895 168 0.008333333333333333 -895 892 -0.001659259259259261 -895 893 -1.192622389734055e-18 -895 894 -0.03333333333333333 -895 895 0.007762962962962965 -895 896 5.312590645178972e-18 -895 897 -6.938893903907228e-18 -895 898 -0.001659259259259259 -895 899 -1.734723475976807e-18 -895 900 0.03333333333333335 -895 1300 -0.0009703703703703688 -895 1301 0.0004999999999999994 -895 1302 -0.008333333333333331 -895 1303 -0.0002814814814814814 -895 1304 8.673617379884035e-19 -895 1305 1.734723475976807e-17 -895 1306 -0.0009703703703703757 -895 1307 -0.0005000000000000014 -895 1308 0.008333333333333347 -896 154 -0.0005000000000000003 -896 155 -0.001040740740740741 -896 156 -0.009259259259259257 -896 160 -7.589415207398531e-19 -896 161 -0.002362962962962959 -896 162 -0.03703703703703702 -896 166 0.0004999999999999997 -896 167 -0.001040740740740739 -896 168 -0.00925925925925925 -896 892 -9.75781955236954e-19 -896 893 0.0002814814814814809 -896 894 -3.469446951953614e-17 -896 895 5.421010862427522e-18 -896 896 0.008325925925925924 -896 897 -1.734723475976807e-17 -896 898 -1.734723475976807e-18 -896 899 0.0002814814814814813 -896 900 6.938893903907228e-17 -896 1300 0.0004999999999999994 -896 1301 -0.001040740740740735 -896 1302 0.009259259259259224 -896 1303 7.589415207398531e-19 -896 1304 -0.002362962962962963 -896 1305 0.03703703703703706 -896 1306 -0.0005000000000000015 -896 1307 -0.00104074074074075 -896 1308 0.009259259259259316 -897 154 -0.01296296296296298 -897 155 -0.01342592592592595 -897 156 -0.1551783264746231 -897 160 1.387778780781446e-17 -897 161 -0.02870370370370372 -897 162 -0.204046639231824 -897 166 0.01296296296296294 -897 167 -0.01342592592592592 -897 168 -0.1551783264746225 -897 892 -0.02407407407407413 -897 893 5.377642775528102e-17 -897 894 -0.1063100137174213 -897 895 1.006139616066548e-16 -897 896 4.163336342344337e-17 -897 897 1.241426611796983 -897 898 0.02407407407407403 -897 899 -5.377642775528102e-17 -897 900 -0.1063100137174212 -897 1300 -0.01296296296296294 -897 1301 0.01342592592592582 -897 1302 -0.1551783264746219 -897 1303 -6.245004513516506e-17 -897 1304 0.02870370370370366 -897 1305 -0.2040466392318244 -897 1306 0.01296296296296303 -897 1307 0.01342592592592606 -897 1308 -0.1551783264746241 -898 160 -0.0009703703703703725 -898 161 -0.0005000000000000006 -898 162 -0.008333333333333344 -898 166 -0.0002814814814814782 -898 167 1.301042606982605e-18 -898 168 2.081668171172169e-17 -898 172 -0.000970370370370373 -898 173 0.0005000000000000003 -898 174 0.008333333333333344 -898 895 -0.001659259259259259 -898 896 -1.734723475976807e-18 -898 897 -0.03333333333333335 -898 898 0.007762962962962963 -898 899 1.626303258728257e-18 -898 901 -0.001659259259259264 -898 902 -1.084202172485504e-18 -898 903 0.03333333333333332 -898 1303 -0.0009703703703703643 -898 1304 0.0004999999999999986 -898 1305 -0.008333333333333323 -898 1306 -0.0002814814814814857 -898 1307 6.505213034913027e-19 -898 1308 3.469446951953614e-18 -898 1309 -0.0009703703703703667 -898 1310 -0.0004999999999999993 -898 1311 0.008333333333333326 -899 160 -0.0005000000000000004 -899 161 -0.001040740740740742 -899 162 -0.00925925925925926 -899 166 1.192622389734055e-18 -899 167 -0.002362962962962959 -899 168 -0.037037037037037 -899 172 0.0005000000000000001 -899 173 -0.001040740740740739 -899 174 -0.009259259259259228 -899 895 -1.734723475976807e-18 -899 896 0.0002814814814814812 -899 897 -5.898059818321144e-17 -899 898 1.626303258728257e-18 -899 899 0.008325925925925922 -899 900 2.42861286636753e-17 -899 901 -8.673617379884035e-19 -899 902 0.0002814814814814771 -899 903 3.295974604355933e-17 -899 1303 0.0004999999999999986 -899 1304 -0.001040740740740734 -899 1305 0.009259259259259259 -899 1306 6.505213034913027e-19 -899 1307 -0.002362962962962969 -899 1308 0.03703703703703715 -899 1309 -0.0004999999999999993 -899 1310 -0.001040740740740738 -899 1311 0.009259259259259276 -900 160 -0.012962962962963 -900 161 -0.01342592592592596 -900 162 -0.1551783264746231 -900 166 5.551115123125783e-17 -900 167 -0.02870370370370361 -900 168 -0.2040466392318234 -900 172 0.01296296296296296 -900 173 -0.0134259259259259 -900 174 -0.1551783264746222 -900 895 -0.02407407407407412 -900 896 6.938893903907228e-18 -900 897 -0.1063100137174213 -900 898 -3.295974604355933e-17 -900 899 -1.370431546021678e-16 -900 900 1.24142661179698 -900 901 0.02407407407407413 -900 902 1.734723475976807e-18 -900 903 -0.1063100137174215 -900 1303 -0.01296296296296289 -900 1304 0.01342592592592585 -900 1305 -0.155178326474622 -900 1306 -1.214306433183765e-17 -900 1307 0.02870370370370388 -900 1308 -0.2040466392318251 -900 1309 0.0129629629629629 -900 1310 0.01342592592592588 -900 1311 -0.1551783264746219 -901 166 -0.0009703703703703688 -901 167 -0.0004999999999999998 -901 168 -0.008333333333333312 -901 172 -0.0002814814814814759 -901 173 1.517883041479706e-18 -901 174 3.469446951953614e-17 -901 178 -0.0009703703703703711 -901 179 0.0005 -901 180 0.008333333333333325 -901 898 -0.001659259259259264 -901 899 -8.673617379884035e-19 -901 900 -0.03333333333333334 -901 901 0.00776296296296297 -901 902 -3.794707603699266e-18 -901 903 -1.387778780781446e-17 -901 904 -0.001659259259259273 -901 905 1.734723475976807e-18 -901 906 0.03333333333333332 -901 1306 -0.0009703703703703734 -901 1307 0.0005000000000000007 -901 1308 -0.008333333333333351 -901 1309 -0.0002814814814814745 -901 1310 -4.336808689942018e-19 -901 1311 -2.42861286636753e-17 -901 1312 -0.0009703703703703692 -901 1313 -0.000499999999999999 -901 1314 0.008333333333333337 -902 166 -0.0004999999999999997 -902 167 -0.001040740740740741 -902 168 -0.009259259259259247 -902 172 1.626303258728257e-18 -902 173 -0.002362962962962955 -902 174 -0.03703703703703692 -902 178 0.0004999999999999999 -902 179 -0.001040740740740739 -902 180 -0.009259259259259212 -902 898 -1.084202172485504e-18 -902 899 0.0002814814814814771 -902 900 3.469446951953614e-17 -902 901 -3.903127820947816e-18 -902 902 0.008325925925925919 -902 903 -4.85722573273506e-17 -902 904 1.734723475976807e-18 -902 905 0.0002814814814814703 -902 906 -5.724587470723463e-17 -902 1306 0.0005000000000000008 -902 1307 -0.001040740740740745 -902 1308 0.009259259259259295 -902 1309 -2.168404344971009e-19 -902 1310 -0.002362962962962954 -902 1311 0.03703703703703695 -902 1312 -0.0004999999999999991 -902 1313 -0.001040740740740732 -902 1314 0.009259259259259175 -903 166 -0.01296296296296292 -903 167 -0.01342592592592591 -903 168 -0.155178326474622 -903 172 2.602085213965211e-17 -903 173 -0.02870370370370356 -903 174 -0.2040466392318224 -903 178 0.01296296296296293 -903 179 -0.01342592592592588 -903 180 -0.1551783264746219 -903 898 -0.02407407407407405 -903 899 -7.806255641895632e-17 -903 900 -0.1063100137174215 -903 901 -9.194034422677078e-17 -903 902 1.387778780781446e-17 -903 903 1.241426611796977 -903 904 0.02407407407407414 -903 905 3.295974604355933e-17 -903 906 -0.1063100137174225 -903 1306 -0.01296296296296299 -903 1307 0.01342592592592598 -903 1308 -0.1551783264746229 -903 1309 4.336808689942018e-17 -903 1310 0.02870370370370363 -903 1311 -0.2040466392318223 -903 1312 0.01296296296296291 -903 1313 0.01342592592592577 -903 1314 -0.1551783264746211 -904 172 -0.0009703703703703711 -904 173 -0.0005 -904 174 -0.008333333333333323 -904 178 -0.000281481481481485 -904 179 -1.734723475976807e-18 -904 180 -2.775557561562891e-17 -904 184 -0.0009703703703703706 -904 185 0.0005000000000000007 -904 186 0.008333333333333325 -904 901 -0.001659259259259273 -904 902 1.626303258728257e-18 -904 903 -0.03333333333333331 -904 904 0.007762962962962967 -904 905 -3.469446951953614e-18 -904 906 -1.040834085586084e-17 -904 907 -0.001659259259259247 -904 908 2.927345865710862e-18 -904 909 0.03333333333333334 -904 1309 -0.0009703703703703746 -904 1310 0.0005000000000000008 -904 1311 -0.008333333333333331 -904 1312 -0.0002814814814814771 -904 1313 -1.084202172485504e-18 -904 1314 -3.469446951953614e-18 -904 1315 -0.0009703703703703685 -904 1316 -0.0004999999999999997 -904 1317 0.008333333333333335 -905 172 -0.0005 -905 173 -0.001040740740740739 -905 174 -0.009259259259259212 -905 178 -1.734723475976807e-18 -905 179 -0.002362962962962967 -905 180 -0.03703703703703706 -905 184 0.0005000000000000006 -905 185 -0.001040740740740748 -905 186 -0.009259259259259325 -905 901 1.734723475976807e-18 -905 902 0.0002814814814814702 -905 903 3.642919299551295e-17 -905 904 -3.577867169202165e-18 -905 905 0.008325925925925935 -905 906 -1.07552855510562e-16 -905 907 3.144186300207963e-18 -905 908 0.0002814814814814902 -905 909 -7.979727989493313e-17 -905 1309 0.0005000000000000008 -905 1310 -0.001040740740740743 -905 1311 0.009259259259259222 -905 1312 -1.301042606982605e-18 -905 1313 -0.002362962962962957 -905 1314 0.03703703703703699 -905 1315 -0.0004999999999999996 -905 1316 -0.00104074074074074 -905 1317 0.009259259259259283 -906 172 -0.01296296296296294 -906 173 -0.01342592592592588 -906 174 -0.1551783264746219 -906 178 -9.194034422677078e-17 -906 179 -0.02870370370370363 -906 180 -0.2040466392318249 -906 184 0.01296296296296301 -906 185 -0.01342592592592605 -906 186 -0.155178326474624 -906 901 -0.02407407407407408 -906 902 2.255140518769849e-17 -906 903 -0.1063100137174225 -906 904 8.673617379884035e-17 -906 905 5.724587470723463e-17 -906 906 1.241426611796982 -906 907 0.02407407407407402 -906 908 1.214306433183765e-17 -906 909 -0.1063100137174199 -906 1309 -0.01296296296296298 -906 1310 0.01342592592592592 -906 1311 -0.1551783264746224 -906 1312 6.938893903907228e-18 -906 1313 0.0287037037037036 -906 1314 -0.2040466392318233 -906 1315 0.01296296296296297 -906 1316 0.01342592592592595 -906 1317 -0.155178326474623 -907 178 -0.0009703703703703678 -907 179 -0.0004999999999999993 -907 180 -0.008333333333333342 -907 184 -0.0002814814814814858 -907 185 -1.084202172485504e-18 -907 186 -8.673617379884035e-18 -907 190 -0.0009703703703703705 -907 191 0.0005 -907 192 0.008333333333333345 -907 904 -0.001659259259259247 -907 905 3.144186300207963e-18 -907 906 -0.03333333333333333 -907 907 0.007762962962962959 -907 908 -8.673617379884035e-19 -907 909 6.938893903907228e-18 -907 910 -0.001659259259259261 -907 911 -1.951563910473908e-18 -907 912 0.03333333333333335 -907 1312 -0.0009703703703703707 -907 1313 0.0005000000000000002 -907 1314 -0.008333333333333333 -907 1315 -0.0002814814814814825 -907 1316 4.336808689942018e-19 -907 1317 5.204170427930421e-18 -907 1318 -0.0009703703703703726 -907 1319 -0.0005000000000000004 -907 1320 0.008333333333333337 -908 178 -0.0004999999999999993 -908 179 -0.001040740740740737 -908 180 -0.009259259259259267 -908 184 -8.673617379884035e-19 -908 185 -0.002362962962962969 -908 186 -0.03703703703703713 -908 190 0.0005 -908 191 -0.00104074074074074 -908 192 -0.009259259259259264 -908 904 2.927345865710862e-18 -908 905 0.0002814814814814902 -908 906 6.591949208711867e-17 -908 907 -9.75781955236954e-19 -908 908 0.008325925925925928 -908 909 4.163336342344337e-17 -908 910 -1.951563910473908e-18 -908 911 0.0002814814814814803 -908 912 5.204170427930421e-17 -908 1312 0.0005000000000000004 -908 1313 -0.001040740740740745 -908 1314 0.009259259259259304 -908 1315 1.084202172485504e-19 -908 1316 -0.002362962962962964 -908 1317 0.03703703703703708 -908 1318 -0.0005000000000000006 -908 1319 -0.001040740740740743 -908 1320 0.009259259259259255 -909 178 -0.01296296296296296 -909 179 -0.01342592592592591 -909 180 -0.155178326474623 -909 184 -1.040834085586084e-17 -909 185 -0.02870370370370388 -909 186 -0.2040466392318257 -909 190 0.01296296296296295 -909 191 -0.01342592592592592 -909 192 -0.1551783264746228 -909 904 -0.02407407407407408 -909 905 2.949029909160572e-17 -909 906 -0.1063100137174199 -909 907 1.734723475976807e-17 -909 908 2.255140518769849e-17 -909 909 1.241426611796984 -909 910 0.02407407407407408 -909 911 2.775557561562891e-17 -909 912 -0.1063100137174213 -909 1312 -0.012962962962963 -909 1313 0.01342592592592601 -909 1314 -0.1551783264746235 -909 1315 2.42861286636753e-17 -909 1316 0.0287037037037037 -909 1317 -0.2040466392318248 -909 1318 0.01296296296296297 -909 1319 0.01342592592592593 -909 1320 -0.1551783264746229 -910 184 -0.0009703703703703701 -910 185 -0.0005000000000000001 -910 186 -0.008333333333333331 -910 190 -0.0002814814814814843 -910 191 1.192622389734055e-18 -910 192 2.42861286636753e-17 -910 196 -0.0009703703703703709 -910 197 0.0005 -910 198 0.008333333333333335 -910 907 -0.001659259259259261 -910 908 -1.951563910473908e-18 -910 909 -0.03333333333333336 -910 910 0.007762962962962954 -910 911 2.168404344971009e-18 -910 912 -3.469446951953614e-18 -910 913 -0.001659259259259246 -910 914 -1.517883041479706e-18 -910 915 0.03333333333333333 -910 1315 -0.0009703703703703697 -910 1316 0.0004999999999999997 -910 1317 -0.008333333333333342 -910 1318 -0.0002814814814814799 -910 1319 1.192622389734055e-18 -910 1320 3.469446951953614e-18 -910 1321 -0.0009703703703703723 -910 1322 -0.0005000000000000007 -910 1323 0.00833333333333334 -911 184 -0.0005000000000000001 -911 185 -0.001040740740740743 -911 186 -0.009259259259259283 -911 190 9.75781955236954e-19 -911 191 -0.002362962962962966 -911 192 -0.03703703703703703 -911 196 0.0005000000000000002 -911 197 -0.001040740740740741 -911 198 -0.009259259259259262 -911 907 -1.951563910473908e-18 -911 908 0.0002814814814814803 -911 909 -3.989863994746656e-17 -911 910 2.168404344971009e-18 -911 911 0.008325925925925921 -911 912 -4.85722573273506e-17 -911 913 -1.626303258728257e-18 -911 914 0.000281481481481495 -911 915 1.561251128379126e-17 -911 1315 0.0004999999999999996 -911 1316 -0.001040740740740737 -911 1317 0.009259259259259228 -911 1318 1.301042606982605e-18 -911 1319 -0.002362962962962961 -911 1320 0.03703703703703699 -911 1321 -0.0005000000000000007 -911 1322 -0.001040740740740746 -911 1323 0.009259259259259299 -912 184 -0.01296296296296297 -912 185 -0.01342592592592597 -912 186 -0.155178326474623 -912 190 1.734723475976807e-18 -912 191 -0.02870370370370381 -912 192 -0.2040466392318249 -912 196 0.01296296296296299 -912 197 -0.01342592592592589 -912 198 -0.1551783264746228 -912 907 -0.02407407407407408 -912 908 1.734723475976807e-17 -912 909 -0.1063100137174213 -912 910 5.204170427930421e-18 -912 911 7.806255641895632e-17 -912 912 1.241426611796982 -912 913 0.02407407407407407 -912 914 -2.255140518769849e-17 -912 915 -0.1063100137174192 -912 1315 -0.01296296296296294 -912 1316 0.01342592592592584 -912 1317 -0.1551783264746222 -912 1318 -9.194034422677078e-17 -912 1319 0.02870370370370377 -912 1320 -0.2040466392318244 -912 1321 0.01296296296296302 -912 1322 0.01342592592592598 -912 1323 -0.1551783264746238 -913 190 -0.0009703703703703694 -913 191 -0.0004999999999999998 -913 192 -0.008333333333333325 -913 196 -0.000281481481481488 -913 197 -1.301042606982605e-18 -913 198 -1.908195823574488e-17 -913 202 -0.0009703703703703704 -913 203 0.0005000000000000004 -913 204 0.008333333333333326 -913 910 -0.001659259259259246 -913 911 -1.517883041479706e-18 -913 912 -0.03333333333333334 -913 913 0.007762962962962963 -913 914 4.87890977618477e-18 -913 916 -0.001659259259259261 -913 917 -2.602085213965211e-18 -913 918 0.03333333333333335 -913 1318 -0.000970370370370368 -913 1319 0.0004999999999999993 -913 1320 -0.008333333333333342 -913 1321 -0.0002814814814814818 -913 1322 2.927345865710862e-18 -913 1323 1.734723475976807e-18 -913 1324 -0.0009703703703703777 -913 1325 -0.0005000000000000022 -913 1326 0.00833333333333334 -914 190 -0.0004999999999999998 -914 191 -0.001040740740740741 -914 192 -0.009259259259259262 -914 196 -1.084202172485504e-18 -914 197 -0.002362962962962971 -914 198 -0.03703703703703706 -914 202 0.0005000000000000003 -914 203 -0.001040740740740745 -914 204 -0.009259259259259295 -914 910 -1.517883041479706e-18 -914 911 0.000281481481481495 -914 912 -5.898059818321144e-17 -914 913 4.87890977618477e-18 -914 914 0.008325925925925938 -914 915 3.469446951953614e-17 -914 916 -2.710505431213761e-18 -914 917 0.0002814814814814779 -914 918 7.459310946700271e-17 -914 1318 0.0004999999999999994 -914 1319 -0.001040740740740737 -914 1320 0.009259259259259262 -914 1321 2.818925648462312e-18 -914 1322 -0.002362962962962963 -914 1323 0.0370370370370371 -914 1324 -0.0005000000000000022 -914 1325 -0.001040740740740755 -914 1326 0.009259259259259314 -915 190 -0.01296296296296297 -915 191 -0.01342592592592587 -915 192 -0.1551783264746227 -915 196 -1.214306433183765e-17 -915 197 -0.02870370370370376 -915 198 -0.2040466392318258 -915 202 0.01296296296296297 -915 203 -0.01342592592592601 -915 204 -0.1551783264746235 -915 910 -0.02407407407407413 -915 911 -3.295974604355933e-17 -915 912 -0.1063100137174192 -915 913 1.908195823574488e-16 -915 914 5.551115123125783e-17 -915 915 1.241426611796985 -915 916 0.02407407407407395 -915 917 -3.469446951953614e-18 -915 918 -0.1063100137174218 -915 1318 -0.01296296296296296 -915 1319 0.01342592592592587 -915 1320 -0.1551783264746228 -915 1321 -1.07552855510562e-16 -915 1322 0.02870370370370362 -915 1323 -0.204046639231825 -915 1324 0.01296296296296306 -915 1325 0.01342592592592615 -915 1326 -0.1551783264746247 -916 196 -0.0009703703703703699 -916 197 -0.0004999999999999998 -916 198 -0.008333333333333342 -916 202 -0.000281481481481481 -916 203 -4.336808689942018e-19 -916 204 -2.775557561562891e-17 -916 208 -0.000970370370370368 -916 209 0.0004999999999999991 -916 210 0.008333333333333344 -916 913 -0.001659259259259261 -916 914 -2.602085213965211e-18 -916 915 -0.03333333333333334 -916 916 0.007762962962962963 -916 917 8.782037597132586e-18 -916 918 -1.040834085586084e-17 -916 919 -0.00165925925925926 -916 920 -4.98732999343332e-18 -916 921 0.03333333333333337 -916 1321 -0.0009703703703703633 -916 1322 0.0004999999999999977 -916 1323 -0.008333333333333342 -916 1324 -0.000281481481481484 -916 1325 3.794707603699266e-18 -916 1326 -5.204170427930421e-18 -916 1327 -0.0009703703703703757 -916 1328 -0.0005000000000000016 -916 1329 0.008333333333333338 -917 196 -0.0004999999999999998 -917 197 -0.001040740740740738 -917 198 -0.009259259259259259 -917 202 -5.421010862427522e-19 -917 203 -0.002362962962962963 -917 204 -0.03703703703703705 -917 208 0.0004999999999999993 -917 209 -0.001040740740740735 -917 210 -0.009259259259259241 -917 913 -2.602085213965211e-18 -917 914 0.0002814814814814779 -917 915 -9.020562075079397e-17 -917 916 8.890457814381136e-18 -917 917 0.008325925925925924 -917 918 8.673617379884035e-17 -917 919 -5.095750210681871e-18 -917 920 0.0002814814814814804 -917 921 9.8879238130678e-17 -917 1321 0.0004999999999999978 -917 1322 -0.001040740740740726 -917 1323 0.009259259259259193 -917 1324 3.686287386450715e-18 -917 1325 -0.002362962962962967 -917 1326 0.03703703703703712 -917 1327 -0.0005000000000000016 -917 1328 -0.001040740740740753 -917 1329 0.009259259259259323 -918 196 -0.01296296296296296 -918 197 -0.01342592592592593 -918 198 -0.1551783264746229 -918 202 -3.469446951953614e-18 -918 203 -0.02870370370370384 -918 204 -0.2040466392318247 -918 208 0.01296296296296294 -918 209 -0.01342592592592583 -918 210 -0.1551783264746223 -918 913 -0.02407407407407418 -918 914 4.85722573273506e-17 -918 915 -0.1063100137174218 -918 916 1.682681771697503e-16 -918 917 1.214306433183765e-17 -918 918 1.241426611796984 -918 919 0.02407407407407402 -918 920 -5.030698080332741e-17 -918 921 -0.1063100137174215 -918 1321 -0.01296296296296288 -918 1322 0.01342592592592576 -918 1323 -0.1551783264746213 -918 1324 -1.52655665885959e-16 -918 1325 0.02870370370370368 -918 1326 -0.2040466392318253 -918 1327 0.01296296296296304 -918 1328 0.01342592592592614 -918 1329 -0.1551783264746246 -919 202 -0.0009703703703703736 -919 203 -0.0005000000000000008 -919 204 -0.008333333333333342 -919 208 -0.0002814814814814771 -919 209 1.843143693225358e-18 -919 210 2.775557561562891e-17 -919 214 -0.0009703703703703718 -919 215 0.0005000000000000002 -919 216 0.008333333333333345 -919 916 -0.00165925925925926 -919 917 -5.095750210681871e-18 -919 918 -0.03333333333333335 -919 919 0.007762962962962961 -919 920 4.336808689942018e-18 -919 921 -1.040834085586084e-17 -919 922 -0.001659259259259261 -919 923 -4.336808689942018e-19 -919 924 0.03333333333333333 -919 1324 -0.0009703703703703642 -919 1325 0.0004999999999999983 -919 1326 -0.008333333333333333 -919 1327 -0.0002814814814814841 -919 1328 1.409462824231156e-18 -919 1329 -1.734723475976807e-18 -919 1330 -0.0009703703703703694 -919 1331 -0.0004999999999999997 -919 1332 0.008333333333333335 -920 202 -0.0005000000000000009 -920 203 -0.001040740740740746 -920 204 -0.009259259259259288 -920 208 1.951563910473908e-18 -920 209 -0.002362962962962958 -920 210 -0.03703703703703702 -920 214 0.0005000000000000001 -920 215 -0.001040740740740739 -920 216 -0.009259259259259234 -920 916 -4.87890977618477e-18 -920 917 0.0002814814814814805 -920 918 -1.769417945496343e-16 -920 919 4.445228907190568e-18 -920 920 0.008325925925925921 -920 921 -7.28583859910259e-17 -920 922 -4.336808689942018e-19 -920 923 0.0002814814814814785 -920 924 -1.734723475976807e-18 -920 1324 0.0004999999999999983 -920 1325 -0.001040740740740731 -920 1326 0.009259259259259231 -920 1327 1.192622389734055e-18 -920 1328 -0.002362962962962967 -920 1329 0.03703703703703708 -920 1330 -0.0004999999999999997 -920 1331 -0.001040740740740739 -920 1332 0.009259259259259248 -921 202 -0.01296296296296301 -921 203 -0.01342592592592598 -921 204 -0.1551783264746236 -921 208 7.979727989493313e-17 -921 209 -0.02870370370370367 -921 210 -0.2040466392318235 -921 214 0.01296296296296295 -921 215 -0.01342592592592592 -921 216 -0.1551783264746222 -921 916 -0.02407407407407412 -921 917 -8.673617379884035e-18 -921 918 -0.1063100137174215 -921 919 -2.255140518769849e-17 -921 920 -6.938893903907228e-18 -921 921 1.241426611796981 -921 922 0.02407407407407412 -921 923 1.734723475976807e-18 -921 924 -0.1063100137174212 -921 1324 -0.01296296296296289 -921 1325 0.01342592592592584 -921 1326 -0.155178326474622 -921 1327 -2.602085213965211e-17 -921 1328 0.02870370370370385 -921 1329 -0.204046639231825 -921 1330 0.01296296296296294 -921 1331 0.0134259259259259 -921 1332 -0.1551783264746222 -922 208 -0.0009703703703703697 -922 209 -0.0005 -922 210 -0.008333333333333323 -922 214 -0.0002814814814814877 -922 215 4.336808689942018e-19 -922 216 2.42861286636753e-17 -922 220 -0.0009703703703703715 -922 221 0.0005000000000000007 -922 222 0.008333333333333326 -922 919 -0.001659259259259261 -922 920 -3.252606517456513e-19 -922 921 -0.03333333333333333 -922 922 0.007762962962962958 -922 923 -3.577867169202165e-18 -922 924 -1.040834085586084e-17 -922 925 -0.001659259259259245 -922 926 2.818925648462312e-18 -922 927 0.03333333333333333 -922 1327 -0.0009703703703703715 -922 1328 0.0005000000000000004 -922 1329 -0.008333333333333333 -922 1330 -0.0002814814814814839 -922 1331 -1.192622389734055e-18 -922 1332 -1.734723475976807e-18 -922 1333 -0.0009703703703703673 -922 1334 -0.0004999999999999993 -922 1335 0.008333333333333335 -923 208 -0.0005 -923 209 -0.001040740740740742 -923 210 -0.009259259259259254 -923 214 4.336808689942018e-19 -923 215 -0.002362962962962971 -923 216 -0.03703703703703706 -923 220 0.0005000000000000007 -923 221 -0.001040740740740747 -923 222 -0.0092592592592593 -923 919 -4.336808689942018e-19 -923 920 0.0002814814814814786 -923 921 -3.469446951953614e-18 -923 922 -3.469446951953614e-18 -923 923 0.008325925925925931 -923 924 -9.71445146547012e-17 -923 925 2.927345865710862e-18 -923 926 0.0002814814814814953 -923 927 -9.540979117872439e-17 -923 1327 0.0005000000000000003 -923 1328 -0.001040740740740743 -923 1329 0.009259259259259267 -923 1330 -1.192622389734055e-18 -923 1331 -0.002362962962962966 -923 1332 0.03703703703703705 -923 1333 -0.0004999999999999991 -923 1334 -0.001040740740740736 -923 1335 0.009259259259259254 -924 208 -0.01296296296296295 -924 209 -0.01342592592592594 -924 210 -0.1551783264746222 -924 214 -2.775557561562891e-17 -924 215 -0.02870370370370375 -924 216 -0.2040466392318251 -924 220 0.012962962962963 -924 221 -0.01342592592592597 -924 222 -0.1551783264746233 -924 919 -0.02407407407407407 -924 920 -3.295974604355933e-17 -924 921 -0.1063100137174212 -924 922 -1.214306433183765e-17 -924 923 6.245004513516506e-17 -924 924 1.241426611796981 -924 925 0.02407407407407406 -924 926 5.204170427930421e-18 -924 927 -0.1063100137174191 -924 1327 -0.01296296296296296 -924 1328 0.01342592592592596 -924 1329 -0.1551783264746227 -924 1330 8.673617379884035e-18 -924 1331 0.02870370370370381 -924 1332 -0.2040466392318249 -924 1333 0.01296296296296295 -924 1334 0.01342592592592586 -924 1335 -0.1551783264746225 -925 214 -0.0009703703703703676 -925 215 -0.0004999999999999994 -925 216 -0.008333333333333326 -925 220 -0.0002814814814814907 -925 221 -3.469446951953614e-18 -925 222 -6.938893903907228e-18 -925 226 -0.0009703703703703785 -925 227 0.0005000000000000027 -925 228 0.008333333333333325 -925 922 -0.001659259259259245 -925 923 3.035766082959412e-18 -925 924 -0.03333333333333331 -925 925 0.007762962962962965 -925 926 -1.626303258728257e-18 -925 927 -1.040834085586084e-17 -925 928 -0.001659259259259245 -925 929 -1.301042606982605e-18 -925 930 0.03333333333333332 -925 1330 -0.000970370370370373 -925 1331 0.0005000000000000009 -925 1332 -0.008333333333333333 -925 1333 -0.0002814814814814828 -925 1334 2.276824562219559e-18 -925 1335 -3.469446951953614e-18 -925 1336 -0.0009703703703703817 -925 1337 -0.0005000000000000032 -925 1338 0.008333333333333335 -926 214 -0.0004999999999999994 -926 215 -0.001040740740740738 -926 216 -0.009259259259259264 -926 220 -3.577867169202165e-18 -926 221 -0.002362962962962975 -926 222 -0.03703703703703711 -926 226 0.0005000000000000027 -926 227 -0.00104074074074076 -926 228 -0.009259259259259368 -926 922 2.818925648462312e-18 -926 923 0.0002814814814814953 -926 924 7.112366251504909e-17 -926 925 -1.409462824231156e-18 -926 926 0.008325925925925957 -926 927 9.020562075079397e-17 -926 928 -1.301042606982605e-18 -926 929 0.000281481481481496 -926 930 -5.204170427930421e-18 -926 1330 0.0005000000000000009 -926 1331 -0.001040740740740747 -926 1332 0.009259259259259302 -926 1333 2.49366499671666e-18 -926 1334 -0.002362962962962964 -926 1335 0.03703703703703711 -926 1336 -0.0005000000000000034 -926 1337 -0.001040740740740763 -926 1338 0.009259259259259342 -927 214 -0.01296296296296294 -927 215 -0.01342592592592586 -927 216 -0.1551783264746223 -927 220 -1.422473250300982e-16 -927 221 -0.02870370370370377 -927 222 -0.2040466392318264 -927 226 0.01296296296296309 -927 227 -0.01342592592592613 -927 228 -0.1551783264746254 -927 922 -0.02407407407407406 -927 923 -1.908195823574488e-17 -927 924 -0.1063100137174191 -927 925 2.654126918244515e-16 -927 926 6.591949208711867e-17 -927 927 1.241426611796986 -927 928 0.0240740740740738 -927 929 4.336808689942018e-17 -927 930 -0.1063100137174191 -927 1330 -0.01296296296296302 -927 1331 0.01342592592592601 -927 1332 -0.1551783264746239 -927 1333 -1.040834085586084e-16 -927 1334 0.02870370370370346 -927 1335 -0.2040466392318249 -927 1336 0.01296296296296312 -927 1337 0.01342592592592621 -927 1338 -0.1551783264746253 -928 220 -0.0009703703703703607 -928 221 -0.0004999999999999974 -928 222 -0.008333333333333325 -928 226 -0.0002814814814814925 -928 227 -4.662069341687669e-18 -928 232 -0.0009703703703703762 -928 233 0.0005000000000000021 -928 234 0.008333333333333325 -928 925 -0.001659259259259245 -928 926 -1.301042606982605e-18 -928 927 -0.03333333333333331 -928 928 0.007762962962962952 -928 929 -8.673617379884035e-19 -928 930 -3.469446951953614e-18 -928 931 -0.001659259259259257 -928 932 2.168404344971009e-18 -928 933 0.03333333333333333 -928 1333 -0.0009703703703703595 -928 1334 0.0004999999999999968 -928 1335 -0.008333333333333331 -928 1336 -0.0002814814814814866 -928 1337 4.228388472693467e-18 -928 1338 -1.734723475976807e-18 -928 1339 -0.0009703703703703727 -928 1340 -0.000500000000000001 -928 1341 0.008333333333333335 -929 220 -0.0004999999999999973 -929 221 -0.001040740740740725 -929 222 -0.009259259259259221 -929 226 -4.553649124439119e-18 -929 227 -0.002362962962962978 -929 228 -0.03703703703703715 -929 232 0.0005000000000000021 -929 233 -0.001040740740740756 -929 234 -0.009259259259259332 -929 925 -1.301042606982605e-18 -929 926 0.000281481481481496 -929 927 -8.153200337090993e-17 -929 928 -8.673617379884035e-19 -929 929 0.008325925925925921 -929 930 -1.561251128379126e-16 -929 931 1.843143693225358e-18 -929 932 0.0002814814814814809 -929 933 1.734723475976807e-18 -929 1333 0.0004999999999999966 -929 1334 -0.001040740740740718 -929 1335 0.009259259259259156 -929 1336 4.336808689942018e-18 -929 1337 -0.00236296296296297 -929 1338 0.03703703703703706 -929 1339 -0.0005000000000000011 -929 1340 -0.001040740740740749 -929 1341 0.009259259259259345 -930 220 -0.01296296296296286 -930 221 -0.01342592592592565 -930 222 -0.1551783264746213 -930 226 -1.561251128379126e-16 -930 227 -0.02870370370370385 -930 228 -0.2040466392318266 -930 232 0.01296296296296302 -930 233 -0.0134259259259262 -930 234 -0.1551783264746243 -930 925 -0.02407407407407431 -930 926 4.85722573273506e-17 -930 927 -0.1063100137174191 -930 928 4.215378046623641e-16 -930 929 -1.734723475976807e-18 -930 930 1.241426611796981 -930 931 0.02407407407407389 -930 932 5.204170427930421e-18 -930 933 -0.106310013717421 -930 1333 -0.01296296296296285 -930 1334 0.01342592592592561 -930 1335 -0.1551783264746202 -930 1336 -1.405126015541214e-16 -930 1337 0.02870370370370401 -930 1338 -0.2040466392318254 -930 1339 0.01296296296296299 -930 1340 0.01342592592592604 -930 1341 -0.1551783264746236 -931 226 -0.0009703703703703629 -931 227 -0.0004999999999999981 -931 228 -0.008333333333333325 -931 232 -0.000281481481481487 -931 233 -4.119968255444917e-18 -931 234 -1.040834085586084e-17 -931 238 -0.0009703703703703748 -931 239 0.0005000000000000015 -931 240 0.008333333333333314 -931 928 -0.001659259259259257 -931 929 1.843143693225358e-18 -931 930 -0.03333333333333331 -931 931 0.007762962962962965 -931 932 -2.38524477946811e-18 -931 933 -1.040834085586084e-17 -931 934 -0.001659259259259251 -931 935 1.951563910473908e-18 -931 936 0.03333333333333333 -931 1336 -0.000970370370370366 -931 1337 0.0004999999999999989 -931 1338 -0.008333333333333333 -931 1339 -0.0002814814814814932 -931 1340 1.626303258728257e-18 -931 1341 3.469446951953614e-18 -931 1342 -0.0009703703703703738 -931 1343 -0.0005000000000000012 -931 1344 0.008333333333333345 -932 226 -0.0004999999999999982 -932 227 -0.00104074074074073 -932 228 -0.009259259259259221 -932 232 -4.119968255444917e-18 -932 233 -0.00236296296296297 -932 234 -0.0370370370370371 -932 238 0.0005000000000000015 -932 239 -0.001040740740740751 -932 240 -0.009259259259259287 -932 928 2.168404344971009e-18 -932 929 0.0002814814814814809 -932 930 1.127570259384925e-16 -932 931 -2.276824562219559e-18 -932 932 0.008325925925925945 -932 933 7.979727989493313e-17 -932 934 1.734723475976807e-18 -932 935 0.000281481481481488 -932 936 -1.387778780781446e-17 -932 1336 0.000499999999999999 -932 1337 -0.001040740740740736 -932 1338 0.00925925925925929 -932 1339 1.734723475976807e-18 -932 1340 -0.002362962962962978 -932 1341 0.03703703703703726 -932 1342 -0.0005000000000000012 -932 1343 -0.00104074074074075 -932 1344 0.009259259259259323 -933 226 -0.01296296296296285 -933 227 -0.01342592592592584 -933 228 -0.1551783264746212 -933 232 -1.838806884535416e-16 -933 233 -0.0287037037037037 -933 234 -0.2040466392318252 -933 238 0.01296296296296302 -933 239 -0.01342592592592606 -933 240 -0.1551783264746237 -933 928 -0.02407407407407415 -933 929 -6.938893903907228e-18 -933 930 -0.106310013717421 -933 931 2.133709875451473e-16 -933 932 -4.510281037539698e-17 -933 933 1.241426611796985 -933 934 0.02407407407407394 -933 935 -7.806255641895632e-17 -933 936 -0.1063100137174201 -933 1336 -0.01296296296296291 -933 1337 0.01342592592592586 -933 1338 -0.1551783264746221 -933 1339 -1.214306433183765e-16 -933 1340 0.0287037037037038 -933 1341 -0.2040466392318269 -933 1342 0.01296296296296304 -933 1343 0.01342592592592608 -933 1344 -0.1551783264746244 -934 232 -0.0009703703703703661 -934 233 -0.0004999999999999986 -934 234 -0.008333333333333325 -934 238 -0.0002814814814814853 -934 239 -5.963111948670274e-18 -934 240 -3.469446951953614e-17 -934 244 -0.0009703703703703782 -934 245 0.0005000000000000026 -934 246 0.008333333333333314 -934 931 -0.001659259259259251 -934 932 1.734723475976807e-18 -934 933 -0.03333333333333331 -934 934 0.007762962962962972 -934 935 -3.252606517456513e-18 -934 936 -6.938893903907228e-18 -934 937 -0.001659259259259273 -934 938 4.553649124439119e-18 -934 939 0.03333333333333333 -934 1339 -0.0009703703703703654 -934 1340 0.0004999999999999988 -934 1341 -0.008333333333333333 -934 1342 -0.0002814814814814779 -934 1343 1.192622389734055e-18 -934 1344 1.734723475976807e-17 -934 1345 -0.0009703703703703762 -934 1346 -0.0005000000000000013 -934 1347 0.008333333333333345 -935 232 -0.0004999999999999986 -935 233 -0.001040740740740731 -935 234 -0.009259259259259195 -935 238 -5.963111948670274e-18 -935 239 -0.002362962962962967 -935 240 -0.03703703703703706 -935 244 0.0005000000000000025 -935 245 -0.00104074074074076 -935 246 -0.009259259259259339 -935 931 1.843143693225358e-18 -935 932 0.000281481481481488 -935 933 5.898059818321144e-17 -935 934 -3.252606517456513e-18 -935 935 0.008325925925925941 -935 936 -4.510281037539698e-17 -935 937 4.662069341687669e-18 -935 938 0.0002814814814814688 -935 939 -1.162264728904461e-16 -935 1339 0.0004999999999999988 -935 1340 -0.001040740740740735 -935 1341 0.009259259259259269 -935 1342 1.192622389734055e-18 -935 1343 -0.002362962962962959 -935 1344 0.03703703703703706 -935 1345 -0.0005000000000000012 -935 1346 -0.001040740740740746 -935 1347 0.009259259259259245 -936 232 -0.01296296296296292 -936 233 -0.01342592592592577 -936 234 -0.1551783264746214 -936 238 -1.647987302177967e-16 -936 239 -0.0287037037037035 -936 240 -0.2040466392318248 -936 244 0.01296296296296305 -936 245 -0.0134259259259262 -936 246 -0.1551783264746247 -936 931 -0.02407407407407418 -936 932 -6.418476861114186e-17 -936 933 -0.1063100137174201 -936 934 2.931682674400804e-16 -936 935 -3.989863994746656e-17 -936 936 1.241426611796984 -936 937 0.02407407407407389 -936 938 3.122502256758253e-17 -936 939 -0.1063100137174229 -936 1339 -0.01296296296296293 -936 1340 0.01342592592592589 -936 1341 -0.1551783264746226 -936 1342 -4.510281037539698e-17 -936 1343 0.02870370370370365 -936 1344 -0.2040466392318239 -936 1345 0.01296296296296301 -936 1346 0.013425925925926 -936 1347 -0.1551783264746231 -937 238 -0.0009703703703703623 -937 239 -0.0004999999999999974 -937 240 -0.008333333333333333 -937 244 -0.0002814814814814719 -937 245 -4.98732999343332e-18 -937 246 -2.775557561562891e-17 -937 250 -0.0009703703703703764 -937 251 0.0005000000000000013 -937 252 0.008333333333333331 -937 934 -0.001659259259259273 -937 935 4.662069341687669e-18 -937 936 -0.03333333333333331 -937 937 0.007762962962962962 -937 938 -8.131516293641283e-18 -937 940 -0.001659259259259279 -937 941 5.312590645178972e-18 -937 942 0.03333333333333333 -937 1342 -0.0009703703703703671 -937 1343 0.0004999999999999988 -937 1344 -0.008333333333333333 -937 1345 -0.0002814814814814667 -937 1346 -8.673617379884035e-19 -937 1347 1.040834085586084e-17 -937 1348 -0.0009703703703703674 -937 1349 -0.0004999999999999986 -937 1350 0.008333333333333333 -938 238 -0.0004999999999999973 -938 239 -0.001040740740740722 -938 240 -0.009259259259259172 -938 244 -4.98732999343332e-18 -938 245 -0.002362962962962951 -938 246 -0.03703703703703692 -938 250 0.0005000000000000013 -938 251 -0.001040740740740747 -938 252 -0.009259259259259243 -938 934 4.662069341687669e-18 -938 935 0.0002814814814814688 -938 936 1.07552855510562e-16 -938 937 -8.239936510889834e-18 -938 938 0.008325925925925889 -938 939 -9.020562075079397e-17 -938 940 5.095750210681871e-18 -938 941 0.0002814814814814645 -938 942 -1.387778780781446e-16 -938 1342 0.0004999999999999987 -938 1343 -0.001040740740740731 -938 1344 0.009259259259259191 -938 1345 -7.589415207398531e-19 -938 1346 -0.002362962962962943 -938 1347 0.03703703703703677 -938 1348 -0.0004999999999999986 -938 1349 -0.001040740740740729 -938 1350 0.009259259259259156 -939 238 -0.01296296296296283 -939 239 -0.0134259259259257 -939 240 -0.1551783264746206 -939 244 -1.925543058334256e-16 -939 245 -0.02870370370370361 -939 246 -0.2040466392318222 -939 250 0.012962962962963 -939 251 -0.01342592592592599 -939 252 -0.155178326474623 -939 934 -0.02407407407407423 -939 935 6.418476861114186e-17 -939 936 -0.1063100137174229 -939 937 1.335737076502141e-16 -939 938 -2.081668171172169e-17 -939 939 1.241426611796976 -939 940 0.02407407407407411 -939 941 1.214306433183765e-17 -939 942 -0.1063100137174235 -939 1342 -0.0129629629629629 -939 1343 0.0134259259259258 -939 1344 -0.1551783264746213 -939 1345 2.42861286636753e-17 -939 1346 0.02870370370370368 -939 1347 -0.204046639231821 -939 1348 0.01296296296296289 -939 1349 0.01342592592592576 -939 1350 -0.155178326474621 -940 244 -0.0009703703703703674 -940 245 -0.0004999999999999986 -940 246 -0.008333333333333331 -940 250 -0.0002814814814814697 -940 251 -3.252606517456513e-19 -940 252 2.081668171172169e-17 -940 256 -0.0009703703703703721 -940 257 0.0005000000000000001 -940 258 0.008333333333333344 -940 937 -0.001659259259259279 -940 938 5.095750210681871e-18 -940 939 -0.03333333333333333 -940 940 0.00776296296296297 -940 941 -5.204170427930421e-18 -940 942 1.040834085586084e-17 -940 943 -0.001659259259259267 -940 944 -2.38524477946811e-18 -940 945 0.03333333333333333 -940 1345 -0.0009703703703703762 -940 1346 0.0005000000000000013 -940 1347 -0.008333333333333333 -940 1348 -0.0002814814814814682 -940 1350 -1.214306433183765e-17 -940 1351 -0.0009703703703703702 -940 1352 -0.0005000000000000001 -940 1353 0.008333333333333326 -941 244 -0.0004999999999999987 -941 245 -0.001040740740740729 -941 246 -0.009259259259259169 -941 250 -2.168404344971009e-19 -941 251 -0.002362962962962947 -941 252 -0.03703703703703685 -941 256 0.0004999999999999999 -941 257 -0.001040740740740739 -941 258 -0.009259259259259228 -941 937 5.312590645178972e-18 -941 938 0.0002814814814814644 -941 939 1.578598363138894e-16 -941 940 -5.204170427930421e-18 -941 941 0.008325925925925907 -941 942 2.081668171172169e-16 -941 943 -1.951563910473908e-18 -941 944 0.0002814814814814746 -941 945 6.765421556309548e-17 -941 1345 0.0005000000000000013 -941 1346 -0.001040740740740747 -941 1347 0.009259259259259231 -941 1348 -3.252606517456513e-19 -941 1349 -0.002362962962962945 -941 1350 0.03703703703703688 -941 1351 -0.0005 -941 1352 -0.001040740740740741 -941 1353 0.009259259259259248 -942 244 -0.01296296296296289 -942 245 -0.01342592592592575 -942 246 -0.155178326474621 -942 250 -3.989863994746656e-17 -942 251 -0.02870370370370362 -942 252 -0.2040466392318215 -942 256 0.01296296296296296 -942 257 -0.0134259259259259 -942 258 -0.1551783264746222 -942 937 -0.02407407407407411 -942 938 -2.255140518769849e-17 -942 939 -0.1063100137174235 -942 940 -1.387778780781446e-17 -942 941 -6.591949208711867e-17 -942 942 1.241426611796977 -942 943 0.02407407407407413 -942 944 2.602085213965211e-17 -942 945 -0.1063100137174219 -942 1345 -0.012962962962963 -942 1346 0.013425925925926 -942 1347 -0.1551783264746231 -942 1348 3.642919299551295e-17 -942 1349 0.02870370370370344 -942 1350 -0.2040466392318212 -942 1351 0.01296296296296293 -942 1352 0.0134259259259259 -942 1353 -0.1551783264746221 -943 250 -0.0009703703703703695 -943 251 -0.0004999999999999999 -943 252 -0.008333333333333321 -943 256 -0.0002814814814814848 -943 257 2.602085213965211e-18 -943 258 2.081668171172169e-17 -943 262 -0.0009703703703703649 -943 263 0.0004999999999999986 -943 264 0.008333333333333333 -943 940 -0.001659259259259267 -943 941 -1.951563910473908e-18 -943 942 -0.03333333333333335 -943 943 0.007762962962962961 -943 944 4.87890977618477e-18 -943 945 -6.938893903907228e-18 -943 946 -0.001659259259259245 -943 947 -5.312590645178972e-18 -943 948 0.03333333333333334 -943 1348 -0.0009703703703703725 -943 1349 0.0005000000000000002 -943 1350 -0.008333333333333351 -943 1351 -0.0002814814814814838 -943 1352 2.276824562219559e-18 -943 1353 -2.42861286636753e-17 -943 1354 -0.0009703703703703738 -943 1355 -0.0005000000000000013 -943 1356 0.008333333333333337 -944 250 -0.0004999999999999998 -944 251 -0.001040740740740741 -944 252 -0.009259259259259247 -944 256 2.602085213965211e-18 -944 257 -0.002362962962962967 -944 258 -0.03703703703703706 -944 262 0.0004999999999999986 -944 263 -0.001040740740740734 -944 264 -0.009259259259259264 -944 940 -2.38524477946811e-18 -944 941 0.0002814814814814746 -944 942 -5.204170427930421e-18 -944 943 4.77048955893622e-18 -944 944 0.008325925925925929 -944 945 1.110223024625157e-16 -944 946 -5.312590645178972e-18 -944 947 0.0002814814814814938 -944 948 1.474514954580286e-16 -944 1348 0.0005000000000000002 -944 1349 -0.001040740740740739 -944 1350 0.009259259259259228 -944 1351 2.602085213965211e-18 -944 1352 -0.002362962962962966 -944 1353 0.03703703703703709 -944 1354 -0.0005000000000000013 -944 1355 -0.001040740740740752 -944 1356 0.009259259259259339 -945 250 -0.01296296296296293 -945 251 -0.01342592592592593 -945 252 -0.1551783264746222 -945 256 3.295974604355933e-17 -945 257 -0.02870370370370382 -945 258 -0.204046639231825 -945 262 0.01296296296296293 -945 263 -0.01342592592592585 -945 264 -0.1551783264746225 -945 940 -0.0240740740740741 -945 941 -2.775557561562891e-17 -945 942 -0.1063100137174219 -945 943 7.979727989493313e-17 -945 944 1.040834085586084e-17 -945 945 1.241426611796983 -945 946 0.02407407407407403 -945 947 -1.908195823574488e-17 -945 948 -0.1063100137174195 -945 1348 -0.01296296296296297 -945 1349 0.01342592592592587 -945 1350 -0.1551783264746221 -945 1351 -1.07552855510562e-16 -945 1352 0.02870370370370367 -945 1353 -0.2040466392318249 -945 1354 0.01296296296296304 -945 1355 0.01342592592592609 -945 1356 -0.1551783264746245 -946 256 -0.0009703703703703738 -946 257 -0.0005000000000000013 -946 258 -0.008333333333333331 -946 262 -0.0002814814814814775 -946 263 1.734723475976807e-18 -946 264 2.255140518769849e-17 -946 268 -0.000970370370370373 -946 269 0.0005000000000000002 -946 270 0.008333333333333338 -946 943 -0.001659259259259244 -946 944 -5.312590645178972e-18 -946 945 -0.03333333333333333 -946 946 0.007762962962962964 -946 947 4.87890977618477e-18 -946 948 6.938893903907228e-18 -946 949 -0.00165925925925928 -946 950 -2.168404344971009e-19 -946 951 0.03333333333333333 -946 1351 -0.0009703703703703651 -946 1352 0.0004999999999999986 -946 1353 -0.008333333333333331 -946 1354 -0.0002814814814814783 -946 1355 1.301042606982605e-18 -946 1356 -3.469446951953614e-18 -946 1357 -0.0009703703703703718 -946 1358 -0.0004999999999999999 -946 1359 0.008333333333333335 -947 256 -0.0005000000000000013 -947 257 -0.001040740740740752 -947 258 -0.009259259259259339 -947 262 1.843143693225358e-18 -947 263 -0.002362962962962958 -947 264 -0.03703703703703707 -947 268 0.0005000000000000001 -947 269 -0.001040740740740739 -947 270 -0.009259259259259184 -947 943 -5.312590645178972e-18 -947 944 0.0002814814814814938 -947 945 -1.474514954580286e-16 -947 946 4.87890977618477e-18 -947 947 0.008325925925925921 -947 948 -2.116362640691705e-16 -947 949 -2.168404344971009e-19 -947 950 0.000281481481481464 -947 951 9.540979117872439e-17 -947 1351 0.0004999999999999986 -947 1352 -0.001040740740740734 -947 1353 0.009259259259259262 -947 1354 1.301042606982605e-18 -947 1355 -0.002362962962962959 -947 1356 0.03703703703703692 -947 1357 -0.0005 -947 1358 -0.001040740740740738 -947 1359 0.009259259259259214 -948 256 -0.01296296296296304 -948 257 -0.01342592592592608 -948 258 -0.1551783264746245 -948 262 9.020562075079397e-17 -948 263 -0.02870370370370344 -948 264 -0.2040466392318237 -948 268 0.01296296296296296 -948 269 -0.01342592592592595 -948 270 -0.1551783264746222 -948 943 -0.02407407407407404 -948 944 1.561251128379126e-17 -948 945 -0.1063100137174195 -948 946 -7.979727989493313e-17 -948 947 -6.071532165918825e-17 -948 948 1.241426611796982 -948 949 0.02407407407407411 -948 950 1.040834085586084e-17 -948 951 -0.1063100137174236 -948 1351 -0.01296296296296293 -948 1352 0.01342592592592585 -948 1353 -0.1551783264746225 -948 1354 -1.387778780781446e-17 -948 1355 0.02870370370370386 -948 1356 -0.2040466392318239 -948 1357 0.01296296296296295 -948 1358 0.01342592592592581 -948 1359 -0.1551783264746221 -949 262 -0.0009703703703703708 -949 263 -0.0004999999999999998 -949 264 -0.00833333333333333 -949 268 -0.0002814814814814871 -949 269 7.589415207398531e-19 -949 270 8.673617379884035e-18 -949 274 -0.0009703703703703667 -949 275 0.0004999999999999996 -949 276 0.008333333333333325 -949 946 -0.00165925925925928 -949 947 -3.252606517456513e-19 -949 948 -0.03333333333333334 -949 949 0.007762962962962961 -949 950 9.75781955236954e-19 -949 951 -1.387778780781446e-17 -949 952 -0.001659259259259231 -949 953 -1.192622389734055e-18 -949 954 0.03333333333333333 -949 1354 -0.0009703703703703718 -949 1355 0.0004999999999999999 -949 1356 -0.008333333333333333 -949 1357 -0.0002814814814814836 -949 1358 3.252606517456513e-19 -949 1359 -3.469446951953614e-18 -949 1360 -0.0009703703703703695 -949 1361 -0.0005000000000000002 -949 1362 0.008333333333333335 -950 262 -0.0004999999999999998 -950 263 -0.001040740740740737 -950 264 -0.009259259259259184 -950 268 7.589415207398531e-19 -950 269 -0.00236296296296297 -950 270 -0.0370370370370371 -950 274 0.0004999999999999996 -950 275 -0.001040740740740742 -950 276 -0.009259259259259321 -950 946 -3.252606517456513e-19 -950 947 0.0002814814814814641 -950 948 9.71445146547012e-17 -950 949 8.673617379884035e-19 -950 950 0.008325925925925931 -950 951 -4.163336342344337e-17 -950 952 -1.301042606982605e-18 -950 953 0.0002814814814815056 -950 954 5.898059818321144e-17 -950 1354 0.0005 -950 1355 -0.001040740740740738 -950 1356 0.009259259259259215 -950 1357 4.336808689942018e-19 -950 1358 -0.002362962962962965 -950 1359 0.03703703703703703 -950 1360 -0.0005000000000000002 -950 1361 -0.001040740740740747 -950 1362 0.009259259259259352 -951 262 -0.01296296296296293 -951 263 -0.01342592592592593 -951 264 -0.1551783264746218 -951 268 -1.561251128379126e-17 -951 269 -0.0287037037037037 -951 270 -0.2040466392318253 -951 274 0.01296296296296296 -951 275 -0.01342592592592597 -951 276 -0.1551783264746232 -951 946 -0.02407407407407412 -951 947 -5.204170427930421e-18 -951 948 -0.1063100137174236 -951 949 9.194034422677078e-17 -951 950 -1.387778780781446e-17 -951 951 1.241426611796982 -951 952 0.02407407407407401 -951 953 -6.938893903907228e-18 -951 954 -0.1063100137174175 -951 1354 -0.01296296296296295 -951 1355 0.01342592592592581 -951 1356 -0.1551783264746221 -951 1357 -4.510281037539698e-17 -951 1358 0.02870370370370381 -951 1359 -0.2040466392318248 -951 1360 0.01296296296296299 -951 1361 0.013425925925926 -951 1362 -0.1551783264746238 -952 268 -0.0009703703703703696 -952 269 -0.0005000000000000003 -952 270 -0.008333333333333325 -952 274 -0.0002814814814814815 -952 275 6.505213034913027e-19 -952 276 -5.204170427930421e-18 -952 280 -0.0009703703703703718 -952 281 0.0004999999999999996 -952 282 0.008333333333333326 -952 949 -0.001659259259259231 -952 950 -1.301042606982605e-18 -952 951 -0.03333333333333331 -952 952 0.007762962962962963 -952 953 2.602085213965211e-18 -952 954 -1.040834085586084e-17 -952 955 -0.00165925925925929 -952 956 -1.192622389734055e-18 -952 957 0.03333333333333333 -952 1357 -0.0009703703703703671 -952 1358 0.0004999999999999996 -952 1359 -0.008333333333333331 -952 1360 -0.0002814814814814785 -952 1361 8.673617379884035e-19 -952 1362 -3.469446951953614e-18 -952 1363 -0.0009703703703703738 -952 1364 -0.0005000000000000004 -952 1365 0.008333333333333335 -953 268 -0.0005000000000000003 -953 269 -0.001040740740740747 -953 270 -0.009259259259259342 -953 274 7.589415207398531e-19 -953 275 -0.002362962962962963 -953 276 -0.037037037037037 -953 280 0.0004999999999999997 -953 281 -0.001040740740740735 -953 282 -0.009259259259259175 -953 949 -1.192622389734055e-18 -953 950 0.0002814814814815055 -953 951 -1.561251128379126e-17 -953 952 2.602085213965211e-18 -953 953 0.008325925925925924 -953 954 6.591949208711867e-17 -953 955 -1.301042606982605e-18 -953 956 0.000281481481481455 -953 957 -1.561251128379126e-17 -953 1357 0.0004999999999999996 -953 1358 -0.001040740740740742 -953 1359 0.009259259259259333 -953 1360 6.505213034913027e-19 -953 1361 -0.002362962962962959 -953 1362 0.037037037037037 -953 1363 -0.0005000000000000003 -953 1364 -0.001040740740740738 -953 1365 0.009259259259259151 -954 268 -0.01296296296296299 -954 269 -0.01342592592592603 -954 270 -0.1551783264746238 -954 274 7.112366251504909e-17 -954 275 -0.02870370370370369 -954 276 -0.2040466392318243 -954 280 0.01296296296296292 -954 281 -0.01342592592592577 -954 282 -0.1551783264746216 -954 949 -0.02407407407407403 -954 951 -0.1063100137174175 -954 952 -5.724587470723463e-17 -954 953 -1.387778780781446e-17 -954 954 1.241426611796982 -954 955 0.02407407407407408 -954 956 -2.255140518769849e-17 -954 957 -0.1063100137174251 -954 1357 -0.01296296296296297 -954 1358 0.01342592592592594 -954 1359 -0.1551783264746233 -954 1360 6.938893903907228e-18 -954 1361 0.02870370370370364 -954 1362 -0.2040466392318239 -954 1363 0.01296296296296296 -954 1364 0.01342592592592594 -954 1365 -0.1551783264746223 -955 274 -0.0009703703703703737 -955 275 -0.0005000000000000003 -955 276 -0.008333333333333325 -955 280 -0.0002814814814814796 -955 281 3.252606517456513e-19 -955 282 -2.949029909160572e-17 -955 286 -0.0009703703703703645 -955 287 0.0004999999999999989 -955 288 0.008333333333333325 -955 952 -0.00165925925925929 -955 953 -1.409462824231156e-18 -955 954 -0.03333333333333331 -955 955 0.007762962962962969 -955 956 7.480994990149981e-18 -955 957 -1.387778780781446e-17 -955 958 -0.001659259259259239 -955 959 -4.87890977618477e-18 -955 960 0.03333333333333334 -955 1360 -0.0009703703703703717 -955 1361 0.0004999999999999996 -955 1362 -0.008333333333333331 -955 1363 -0.0002814814814814742 -955 1364 2.38524477946811e-18 -955 1365 -1.734723475976807e-18 -955 1366 -0.0009703703703703759 -955 1367 -0.000500000000000002 -955 1368 0.008333333333333335 -956 274 -0.0005000000000000004 -956 275 -0.001040740740740739 -956 276 -0.009259259259259193 -956 280 2.168404344971009e-19 -956 281 -0.00236296296296296 -956 282 -0.03703703703703698 -956 286 0.0004999999999999988 -956 287 -0.001040740740740738 -956 288 -0.0092592592592593 -956 952 -1.192622389734055e-18 -956 953 0.0002814814814814549 -956 954 -9.194034422677078e-17 -956 955 7.37257477290143e-18 -956 956 0.008325925925925922 -956 957 1.283695372222837e-16 -956 958 -4.87890977618477e-18 -956 959 0.0002814814814815021 -956 960 2.411265631607762e-16 -956 1360 0.0004999999999999996 -956 1361 -0.001040740740740734 -956 1362 0.009259259259259134 -956 1363 2.276824562219559e-18 -956 1364 -0.002362962962962953 -956 1365 0.03703703703703695 -956 1366 -0.0005000000000000021 -956 1367 -0.001040740740740756 -956 1368 0.009259259259259392 -957 274 -0.01296296296296295 -957 275 -0.01342592592592583 -957 276 -0.1551783264746221 -957 280 -6.938893903907228e-18 -957 281 -0.02870370370370363 -957 282 -0.2040466392318239 -957 286 0.01296296296296294 -957 287 -0.01342592592592593 -957 288 -0.1551783264746228 -957 952 -0.0240740740740741 -957 953 -1.561251128379126e-17 -957 954 -0.1063100137174251 -957 955 1.07552855510562e-16 -957 956 -5.898059818321144e-17 -957 957 1.241426611796981 -957 958 0.02407407407407402 -957 959 1.040834085586084e-17 -957 960 -0.1063100137174182 -957 1360 -0.01296296296296293 -957 1361 0.01342592592592588 -957 1362 -0.1551783264746218 -957 1363 -1.318389841742373e-16 -957 1364 0.02870370370370352 -957 1365 -0.2040466392318228 -957 1366 0.01296296296296306 -957 1367 0.01342592592592605 -957 1368 -0.1551783264746244 -958 280 -0.0009703703703703728 -958 281 -0.000500000000000001 -958 282 -0.008333333333333342 -958 286 -0.0002814814814814834 -958 287 -6.505213034913027e-19 -958 288 -3.469446951953614e-17 -958 292 -0.00097037037037037 -958 293 0.0004999999999999998 -958 294 0.008333333333333333 -958 955 -0.001659259259259239 -958 956 -4.87890977618477e-18 -958 957 -0.03333333333333332 -958 958 0.007762962962962963 -958 959 1.008308020411519e-17 -958 960 -6.938893903907228e-18 -958 961 -0.001659259259259267 -958 962 -2.927345865710862e-18 -958 963 0.03333333333333335 -958 1363 -0.0009703703703703627 -958 1364 0.000499999999999998 -958 1365 -0.008333333333333333 -958 1366 -0.0002814814814814919 -958 1367 3.252606517456513e-18 -958 1368 3.469446951953614e-18 -958 1369 -0.0009703703703703766 -958 1370 -0.0005000000000000019 -958 1371 0.008333333333333345 -959 280 -0.000500000000000001 -959 281 -0.001040740740740749 -959 282 -0.009259259259259339 -959 286 -2.168404344971009e-19 -959 287 -0.002362962962962966 -959 288 -0.03703703703703717 -959 292 0.0004999999999999999 -959 293 -0.001040740740740739 -959 294 -0.009259259259259243 -959 955 -4.87890977618477e-18 -959 956 0.0002814814814815021 -959 957 -5.551115123125783e-17 -959 958 1.008308020411519e-17 -959 959 0.008325925925925938 -959 960 -6.938893903907228e-18 -959 961 -3.035766082959412e-18 -959 962 0.0002814814814814745 -959 963 1.006139616066548e-16 -959 1363 0.0004999999999999981 -959 1364 -0.00104074074074073 -959 1365 0.009259259259259281 -959 1366 3.361026734705064e-18 -959 1367 -0.002362962962962976 -959 1368 0.03703703703703717 -959 1369 -0.000500000000000002 -959 1370 -0.001040740740740753 -959 1371 0.009259259259259323 -960 280 -0.01296296296296303 -960 281 -0.01342592592592608 -960 282 -0.1551783264746243 -960 286 5.898059818321144e-17 -960 287 -0.02870370370370366 -960 288 -0.2040466392318248 -960 292 0.01296296296296293 -960 293 -0.01342592592592589 -960 294 -0.155178326474622 -960 955 -0.02407407407407413 -960 956 7.632783294297951e-17 -960 957 -0.1063100137174182 -960 958 1.266348137463069e-16 -960 959 -1.196959198423997e-16 -960 960 1.241426611796983 -960 961 0.02407407407407403 -960 962 -8.500145032286355e-17 -960 963 -0.106310013717422 -960 1363 -0.0129629629629629 -960 1364 0.01342592592592569 -960 1365 -0.1551783264746213 -960 1366 -1.179611963664229e-16 -960 1367 0.02870370370370394 -960 1368 -0.2040466392318263 -960 1369 0.01296296296296304 -960 1370 0.01342592592592613 -960 1371 -0.1551783264746243 -961 286 -0.0009703703703703725 -961 287 -0.0005000000000000003 -961 288 -0.008333333333333344 -961 292 -0.0002814814814814642 -961 294 1.040834085586084e-17 -961 298 -0.000970370370370376 -961 299 0.0005000000000000008 -961 300 0.008333333333333344 -961 958 -0.001659259259259266 -961 959 -3.035766082959412e-18 -961 960 -0.03333333333333335 -961 961 0.007762962962962972 -961 962 1.843143693225358e-18 -961 964 -0.001659259259259294 -961 965 7.589415207398531e-19 -961 966 0.03333333333333334 -961 1366 -0.0009703703703703635 -961 1367 0.0004999999999999982 -961 1368 -0.008333333333333335 -961 1369 -0.0002814814814814658 -961 1370 1.192622389734055e-18 -961 1371 3.469446951953614e-18 -961 1372 -0.000970370370370371 -961 1373 -0.0004999999999999995 -961 1374 0.008333333333333338 -962 286 -0.0005000000000000003 -962 287 -0.00104074074074074 -962 288 -0.009259259259259243 -962 292 -1.084202172485504e-19 -962 293 -0.00236296296296294 -962 294 -0.03703703703703683 -962 298 0.0005000000000000008 -962 299 -0.00104074074074074 -962 300 -0.009259259259259182 -962 958 -2.927345865710862e-18 -962 959 0.0002814814814814746 -962 960 -8.326672684688674e-17 -962 961 1.734723475976807e-18 -962 962 0.0083259259259259 -962 963 2.42861286636753e-17 -962 964 7.589415207398531e-19 -962 965 0.0002814814814814521 -962 966 -4.85722573273506e-17 -962 1366 0.0004999999999999983 -962 1367 -0.00104074074074073 -962 1368 0.009259259259259233 -962 1369 1.301042606982605e-18 -962 1370 -0.002362962962962943 -962 1371 0.03703703703703687 -962 1372 -0.0004999999999999995 -962 1373 -0.001040740740740733 -962 1374 0.009259259259259143 -963 286 -0.01296296296296297 -963 287 -0.0134259259259259 -963 288 -0.1551783264746223 -963 292 -1.040834085586084e-17 -963 293 -0.02870370370370338 -963 294 -0.2040466392318206 -963 298 0.01296296296296299 -963 299 -0.01342592592592589 -963 300 -0.1551783264746227 -963 958 -0.02407407407407417 -963 959 -4.163336342344337e-17 -963 960 -0.106310013717422 -963 961 2.949029909160572e-17 -963 962 -1.387778780781446e-16 -963 963 1.241426611796978 -963 964 0.02407407407407413 -963 965 1.908195823574488e-17 -963 966 -0.1063100137174257 -963 1366 -0.01296296296296286 -963 1367 0.01342592592592582 -963 1368 -0.1551783264746215 -963 1369 -5.898059818321144e-17 -963 1370 0.02870370370370366 -963 1371 -0.2040466392318213 -963 1372 0.01296296296296292 -963 1373 0.01342592592592584 -963 1374 -0.1551783264746216 -964 292 -0.0009703703703703696 -964 293 -0.0004999999999999991 -964 294 -0.008333333333333321 -964 298 -0.000281481481481471 -964 300 3.469446951953614e-17 -964 304 -0.0009703703703703731 -964 305 0.0005000000000000009 -964 306 0.008333333333333335 -964 961 -0.001659259259259294 -964 962 7.589415207398531e-19 -964 963 -0.03333333333333335 -964 964 0.007762962962962968 -964 965 -5.746271514173174e-18 -964 966 -1.387778780781446e-17 -964 967 -0.001659259259259238 -964 968 2.49366499671666e-18 -964 969 0.03333333333333333 -964 1369 -0.0009703703703703751 -964 1370 0.0005000000000000004 -964 1371 -0.008333333333333351 -964 1372 -0.0002814814814814809 -964 1373 -5.421010862427522e-19 -964 1374 -1.214306433183765e-17 -964 1375 -0.0009703703703703656 -964 1376 -0.0004999999999999994 -964 1377 0.008333333333333335 -965 292 -0.0004999999999999994 -965 293 -0.001040740740740733 -965 294 -0.009259259259259165 -965 298 1.084202172485504e-19 -965 299 -0.00236296296296295 -965 300 -0.03703703703703687 -965 304 0.0005000000000000009 -965 305 -0.001040740740740747 -965 306 -0.009259259259259302 -965 961 7.589415207398531e-19 -965 962 0.0002814814814814521 -965 963 2.42861286636753e-17 -965 964 -5.746271514173174e-18 -965 965 0.008325925925925919 -965 966 1.595945597898663e-16 -965 967 2.38524477946811e-18 -965 968 0.0002814814814814999 -965 969 -6.591949208711867e-17 -965 1369 0.0005000000000000006 -965 1370 -0.001040740740740738 -965 1371 0.00925925925925916 -965 1372 -6.505213034913027e-19 -965 1373 -0.002362962962962962 -965 1374 0.03703703703703706 -965 1375 -0.0004999999999999993 -965 1376 -0.001040740740740741 -965 1377 0.009259259259259339 -966 292 -0.01296296296296291 -966 293 -0.01342592592592579 -966 294 -0.1551783264746216 -966 298 -6.591949208711867e-17 -966 299 -0.02870370370370357 -966 300 -0.2040466392318221 -966 304 0.01296296296296301 -966 305 -0.01342592592592599 -966 306 -0.1551783264746233 -966 961 -0.02407407407407413 -966 962 -2.949029909160572e-17 -966 963 -0.1063100137174257 -966 964 3.989863994746656e-17 -966 965 -8.500145032286355e-17 -966 966 1.241426611796981 -966 967 0.02407407407407406 -966 968 -5.724587470723463e-17 -966 969 -0.1063100137174182 -966 1369 -0.01296296296296298 -966 1370 0.01342592592592591 -966 1371 -0.1551783264746224 -966 1372 8.673617379884035e-18 -966 1373 0.02870370370370365 -966 1374 -0.2040466392318244 -966 1375 0.01296296296296296 -966 1376 0.01342592592592597 -966 1377 -0.1551783264746231 -967 298 -0.0009703703703703665 -967 299 -0.0004999999999999993 -967 300 -0.008333333333333323 -967 304 -0.0002814814814815023 -967 305 -4.98732999343332e-18 -967 306 -1.040834085586084e-17 -967 310 -0.0009703703703703788 -967 311 0.0005000000000000035 -967 312 0.008333333333333314 -967 964 -0.001659259259259238 -967 965 2.38524477946811e-18 -967 966 -0.03333333333333333 -967 967 0.007762962962962968 -967 968 -4.445228907190568e-18 -967 969 -6.938893903907228e-18 -967 970 -0.001659259259259235 -967 971 3.252606517456513e-18 -967 972 0.03333333333333333 -967 1372 -0.0009703703703703701 -967 1373 0.0005000000000000007 -967 1374 -0.008333333333333331 -967 1375 -0.0002814814814814972 -967 1376 1.517883041479706e-18 -967 1377 3.469446951953614e-18 -967 1378 -0.0009703703703703801 -967 1379 -0.0005000000000000027 -967 1380 0.008333333333333345 -968 298 -0.0004999999999999991 -968 299 -0.001040740740740737 -968 300 -0.009259259259259264 -968 304 -5.095750210681871e-18 -968 305 -0.00236296296296299 -968 306 -0.03703703703703734 -968 310 0.0005000000000000036 -968 311 -0.001040740740740772 -968 312 -0.009259259259259436 -968 964 2.49366499671666e-18 -968 965 0.0002814814814814999 -968 966 8.500145032286355e-17 -968 967 -4.445228907190568e-18 -968 968 0.008325925925925997 -968 969 -3.122502256758253e-17 -968 970 3.144186300207963e-18 -968 971 0.0002814814814814968 -968 972 -9.8879238130678e-17 -968 1372 0.0005000000000000007 -968 1373 -0.00104074074074075 -968 1374 0.009259259259259375 -968 1375 1.626303258728257e-18 -968 1376 -0.002362962962962983 -968 1377 0.03703703703703733 -968 1378 -0.0005000000000000028 -968 1379 -0.001040740740740759 -968 1380 0.009259259259259321 -969 298 -0.01296296296296294 -969 299 -0.01342592592592585 -969 300 -0.155178326474622 -969 304 -1.856154119295184e-16 -969 305 -0.02870370370370372 -969 306 -0.2040466392318283 -969 310 0.01296296296296311 -969 311 -0.01342592592592641 -969 312 -0.1551783264746262 -969 964 -0.02407407407407407 -969 965 -9.540979117872439e-17 -969 966 -0.1063100137174182 -969 967 2.810252031082427e-16 -969 968 8.500145032286355e-17 -969 969 1.24142661179699 -969 970 0.02407407407407379 -969 971 6.071532165918825e-17 -969 972 -0.1063100137174182 -969 1372 -0.01296296296296301 -969 1373 0.01342592592592608 -969 1374 -0.1551783264746241 -969 1375 -8.500145032286355e-17 -969 1376 0.02870370370370364 -969 1377 -0.2040466392318277 -969 1378 0.01296296296296311 -969 1379 0.0134259259259262 -969 1380 -0.155178326474625 -970 304 -0.0009703703703703566 -970 305 -0.0004999999999999964 -970 306 -0.008333333333333335 -970 310 -0.0002814814814814954 -970 311 -6.288372600415926e-18 -970 312 -1.561251128379126e-17 -970 316 -0.0009703703703703788 -970 317 0.0005000000000000023 -970 318 0.008333333333333335 -970 967 -0.001659259259259235 -970 968 3.252606517456513e-18 -970 969 -0.03333333333333331 -970 970 0.007762962962962954 -970 971 1.084202172485504e-18 -970 972 3.469446951953614e-18 -970 973 -0.001659259259259279 -970 974 -3.903127820947816e-18 -970 975 0.03333333333333333 -970 1375 -0.0009703703703703604 -970 1376 0.0004999999999999972 -970 1377 -0.008333333333333333 -970 1378 -0.0002814814814814647 -970 1379 6.288372600415926e-18 -970 1380 5.204170427930421e-18 -970 1381 -0.0009703703703703843 -970 1382 -0.0005000000000000035 -970 1383 0.008333333333333338 -971 304 -0.0004999999999999964 -971 305 -0.00104074074074072 -971 306 -0.009259259259259214 -971 310 -6.396792817664476e-18 -971 311 -0.002362962962962982 -971 312 -0.03703703703703715 -971 316 0.0005000000000000022 -971 317 -0.001040740740740754 -971 318 -0.009259259259259287 -971 967 3.361026734705064e-18 -971 968 0.0002814814814814969 -971 969 5.030698080332741e-17 -971 970 1.084202172485504e-18 -971 971 0.008325925925925917 -971 972 -1.908195823574488e-16 -971 973 -3.686287386450715e-18 -971 974 0.000281481481481465 -971 975 8.153200337090993e-17 -971 1375 0.0004999999999999971 -971 1376 -0.001040740740740723 -971 1377 0.00925925925925917 -971 1378 6.288372600415926e-18 -971 1379 -0.002362962962962941 -971 1380 0.03703703703703682 -971 1381 -0.0005000000000000034 -971 1382 -0.001040740740740759 -971 1383 0.009259259259259276 -972 304 -0.01296296296296283 -972 305 -0.01342592592592572 -972 306 -0.1551783264746205 -972 310 -2.203098814490545e-16 -972 311 -0.02870370370370395 -972 312 -0.2040466392318271 -972 316 0.01296296296296304 -972 317 -0.01342592592592612 -972 318 -0.1551783264746244 -972 967 -0.02407407407407435 -972 968 8.847089727481716e-17 -972 969 -0.1063100137174182 -972 970 5.152128723651117e-16 -972 971 2.151057110211241e-16 -972 972 1.24142661179698 -972 973 0.02407407407407385 -972 974 7.632783294297951e-17 -972 975 -0.1063100137174238 -972 1375 -0.01296296296296286 -972 1376 0.01342592592592572 -972 1377 -0.1551783264746206 -972 1378 -2.307182223049153e-16 -972 1379 0.02870370370370356 -972 1380 -0.204046639231821 -972 1381 0.01296296296296309 -972 1382 0.01342592592592613 -972 1383 -0.1551783264746247 -973 310 -0.0009703703703703628 -973 311 -0.0004999999999999978 -973 312 -0.008333333333333321 -973 316 -0.000281481481481475 -973 317 -1.192622389734055e-18 -973 318 1.040834085586084e-17 -973 322 -0.0009703703703703699 -973 323 0.0004999999999999997 -973 324 0.008333333333333335 -973 970 -0.001659259259259279 -973 971 -3.686287386450715e-18 -973 972 -0.03333333333333334 -973 973 0.007762962962962961 -973 974 7.047314121155779e-18 -973 975 -6.938893903907228e-18 -973 976 -0.001659259259259265 -973 977 -4.662069341687669e-18 -973 978 0.03333333333333334 -973 1378 -0.0009703703703703618 -973 1379 0.0004999999999999964 -973 1380 -0.008333333333333351 -973 1381 -0.0002814814814814701 -973 1382 6.071532165918825e-18 -973 1383 -1.040834085586084e-17 -973 1384 -0.0009703703703703766 -973 1385 -0.000500000000000002 -973 1386 0.008333333333333338 -974 310 -0.0004999999999999977 -974 311 -0.001040740740740726 -974 312 -0.009259259259259175 -974 316 -1.084202172485504e-18 -974 317 -0.002362962962962955 -974 318 -0.03703703703703692 -974 322 0.0004999999999999997 -974 323 -0.001040740740740737 -974 324 -0.009259259259259228 -974 970 -3.903127820947816e-18 -974 971 0.0002814814814814649 -974 972 -1.023486850826316e-16 -974 973 7.155734338404329e-18 -974 974 0.008325925925925893 -974 975 -5.204170427930421e-17 -974 976 -4.662069341687669e-18 -974 977 0.0002814814814814759 -974 978 1.578598363138894e-16 -974 1378 0.0004999999999999965 -974 1379 -0.001040740740740712 -974 1380 0.009259259259259071 -974 1381 5.854691731421724e-18 -974 1382 -0.002362962962962947 -974 1383 0.03703703703703685 -974 1384 -0.0005000000000000021 -974 1385 -0.001040740740740755 -974 1386 0.009259259259259339 -975 310 -0.01296296296296284 -975 311 -0.01342592592592575 -975 312 -0.155178326474621 -975 316 -7.632783294297951e-17 -975 317 -0.02870370370370376 -975 318 -0.2040466392318229 -975 322 0.01296296296296293 -975 323 -0.01342592592592588 -975 324 -0.1551783264746219 -975 970 -0.02407407407407432 -975 971 7.632783294297951e-17 -975 972 -0.1063100137174237 -975 973 3.191891195797325e-16 -975 974 7.632783294297951e-17 -975 975 1.241426611796977 -975 976 0.024074074074074 -975 977 -7.632783294297951e-17 -975 978 -0.1063100137174217 -975 1378 -0.01296296296296282 -975 1379 0.01342592592592549 -975 1380 -0.1551783264746193 -975 1381 -2.324529457808922e-16 -975 1382 0.02870370370370369 -975 1383 -0.204046639231822 -975 1384 0.01296296296296303 -975 1385 0.01342592592592614 -975 1386 -0.1551783264746244 -976 316 -0.0009703703703703721 -976 317 -0.0005000000000000004 -976 318 -0.008333333333333333 -976 322 -0.0002814814814814737 -976 323 4.336808689942018e-19 -976 324 1.040834085586084e-17 -976 328 -0.0009703703703703715 -976 329 0.0005000000000000002 -976 330 0.008333333333333338 -976 973 -0.001659259259259265 -976 974 -4.662069341687669e-18 -976 975 -0.03333333333333333 -976 976 0.007762962962962958 -976 977 1.843143693225358e-18 -976 978 3.469446951953614e-18 -976 979 -0.001659259259259263 -976 980 2.602085213965211e-18 -976 981 0.03333333333333335 -976 1381 -0.0009703703703703633 -976 1382 0.000499999999999998 -976 1383 -0.008333333333333333 -976 1384 -0.0002814814814814824 -976 1385 6.505213034913027e-19 -976 1386 -5.204170427930421e-18 -976 1387 -0.0009703703703703665 -976 1388 -0.0004999999999999986 -976 1389 0.008333333333333335 -977 316 -0.0005000000000000003 -977 317 -0.001040740740740742 -977 318 -0.009259259259259247 -977 322 5.421010862427522e-19 -977 323 -0.002362962962962953 -977 324 -0.03703703703703698 -977 328 0.0005000000000000002 -977 329 -0.00104074074074074 -977 330 -0.009259259259259243 -977 973 -4.77048955893622e-18 -977 974 0.0002814814814814759 -977 975 -9.8879238130678e-17 -977 976 1.843143693225358e-18 -977 977 0.008325925925925902 -977 978 -1.040834085586084e-16 -977 979 2.49366499671666e-18 -977 980 0.0002814814814814809 -977 981 -6.938893903907228e-18 -977 1381 0.0004999999999999981 -977 1382 -0.001040740740740729 -977 1383 0.009259259259259228 -977 1384 6.505213034913027e-19 -977 1385 -0.002362962962962964 -977 1386 0.03703703703703695 -977 1387 -0.0004999999999999987 -977 1388 -0.001040740740740731 -977 1389 0.009259259259259219 -978 316 -0.01296296296296296 -978 317 -0.01342592592592594 -978 318 -0.1551783264746224 -978 322 6.938893903907228e-18 -978 323 -0.02870370370370354 -978 324 -0.2040466392318223 -978 328 0.01296296296296295 -978 329 -0.0134259259259259 -978 330 -0.1551783264746222 -978 973 -0.02407407407407415 -978 974 -5.030698080332741e-17 -978 975 -0.1063100137174217 -978 976 1.040834085586084e-17 -978 977 -1.110223024625157e-16 -978 978 1.241426611796978 -978 979 0.02407407407407414 -978 980 -3.989863994746656e-17 -978 981 -0.1063100137174213 -978 1381 -0.01296296296296287 -978 1382 0.01342592592592578 -978 1383 -0.1551783264746213 -978 1384 -2.081668171172169e-17 -978 1385 0.02870370370370409 -978 1386 -0.2040466392318246 -978 1387 0.01296296296296289 -978 1388 0.01342592592592573 -978 1389 -0.1551783264746218 -979 322 -0.0009703703703703712 -979 323 -0.0005 -979 324 -0.008333333333333338 -979 328 -0.0002814814814814758 -979 329 -6.505213034913027e-19 -979 330 -1.387778780781446e-17 -979 334 -0.0009703703703703702 -979 335 0.0005000000000000001 -979 336 0.008333333333333323 -979 976 -0.001659259259259263 -979 977 2.49366499671666e-18 -979 978 -0.03333333333333334 -979 979 0.00776296296296297 -979 980 -5.746271514173174e-18 -979 981 -2.081668171172169e-17 -979 982 -0.001659259259259261 -979 983 5.204170427930421e-18 -979 984 0.03333333333333332 -979 1384 -0.0009703703703703752 -979 1385 0.0005000000000000014 -979 1386 -0.008333333333333333 -979 1387 -0.0002814814814814885 -979 1388 -4.228388472693467e-18 -979 1389 1.734723475976807e-17 -979 1390 -0.0009703703703703646 -979 1391 -0.0004999999999999985 -979 1392 0.00833333333333334 -980 322 -0.0005 -980 323 -0.00104074074074074 -980 324 -0.009259259259259243 -980 328 -1.084202172485504e-18 -980 329 -0.002362962962962956 -980 330 -0.03703703703703701 -980 334 0.0005000000000000001 -980 335 -0.001040740740740742 -980 336 -0.009259259259259271 -980 976 2.602085213965211e-18 -980 977 0.000281481481481481 -980 978 1.422473250300982e-16 -980 979 -5.637851296924623e-18 -980 980 0.008325925925925931 -980 981 1.35308431126191e-16 -980 982 5.529431079676073e-18 -980 983 0.0002814814814814788 -980 984 -1.509209424099822e-16 -980 1384 0.0005000000000000014 -980 1385 -0.001040740740740749 -980 1386 0.009259259259259295 -980 1387 -4.119968255444917e-18 -980 1388 -0.002362962962962973 -980 1389 0.03703703703703717 -980 1390 -0.0004999999999999985 -980 1391 -0.001040740740740732 -980 1392 0.009259259259259266 -981 322 -0.01296296296296295 -981 323 -0.0134259259259259 -981 324 -0.1551783264746222 -981 328 -4.163336342344337e-17 -981 329 -0.02870370370370358 -981 330 -0.2040466392318235 -981 334 0.01296296296296297 -981 335 -0.01342592592592594 -981 336 -0.1551783264746235 -981 976 -0.02407407407407403 -981 977 -4.85722573273506e-17 -981 978 -0.1063100137174213 -981 979 -6.591949208711867e-17 -981 980 -1.144917494144693e-16 -981 981 1.241426611796984 -981 982 0.02407407407407408 -981 983 -4.163336342344337e-17 -981 984 -0.1063100137174219 -981 1384 -0.012962962962963 -981 1385 0.01342592592592596 -981 1386 -0.1551783264746238 -981 1387 1.07552855510562e-16 -981 1388 0.02870370370370377 -981 1389 -0.2040466392318261 -981 1390 0.01296296296296293 -981 1391 0.0134259259259259 -981 1392 -0.1551783264746222 -982 328 -0.000970370370370371 -982 329 -0.0004999999999999999 -982 330 -0.008333333333333338 -982 334 -0.0002814814814814789 -982 336 -8.673617379884035e-18 -982 340 -0.0009703703703703709 -982 341 0.0004999999999999999 -982 342 0.008333333333333335 -982 979 -0.001659259259259261 -982 980 5.529431079676073e-18 -982 981 -0.03333333333333332 -982 982 0.00776296296296297 -982 983 -6.613633252161577e-18 -982 984 3.469446951953614e-18 -982 985 -0.00165925925925927 -982 986 1.301042606982605e-18 -982 987 0.03333333333333333 -982 1387 -0.0009703703703703735 -982 1388 0.0005000000000000017 -982 1389 -0.008333333333333321 -982 1390 -0.0002814814814814795 -982 1391 -3.361026734705064e-18 -982 1392 1.214306433183765e-17 -982 1393 -0.0009703703703703658 -982 1394 -0.0004999999999999984 -982 1395 0.008333333333333326 -983 328 -0.0004999999999999999 -983 329 -0.001040740740740739 -983 330 -0.009259259259259252 -983 334 -1.084202172485504e-19 -983 335 -0.002362962962962959 -983 336 -0.03703703703703698 -983 340 0.0004999999999999998 -983 341 -0.001040740740740739 -983 342 -0.009259259259259228 -983 979 5.204170427930421e-18 -983 980 0.0002814814814814789 -983 981 1.07552855510562e-16 -983 982 -6.505213034913027e-18 -983 983 0.008325925925925928 -983 984 1.595945597898663e-16 -983 985 1.734723475976807e-18 -983 986 0.0002814814814814739 -983 987 -2.255140518769849e-17 -983 1387 0.0005000000000000017 -983 1388 -0.001040740740740756 -983 1389 0.009259259259259377 -983 1390 -3.361026734705064e-18 -983 1391 -0.002362962962962961 -983 1392 0.03703703703703707 -983 1393 -0.0004999999999999985 -983 1394 -0.001040740740740727 -983 1395 0.009259259259259153 -984 328 -0.01296296296296299 -984 329 -0.01342592592592589 -984 330 -0.1551783264746233 -984 334 4.336808689942018e-17 -984 335 -0.0287037037037036 -984 336 -0.2040466392318239 -984 340 0.01296296296296295 -984 341 -0.01342592592592589 -984 342 -0.155178326474622 -984 979 -0.02407407407407395 -984 980 -2.949029909160572e-17 -984 981 -0.1063100137174219 -984 982 -2.688821387764051e-16 -984 983 -1.769417945496343e-16 -984 984 1.241426611796981 -984 985 0.02407407407407423 -984 986 8.673617379884035e-17 -984 987 -0.1063100137174218 -984 1387 -0.01296296296296304 -984 1388 0.01342592592592623 -984 1389 -0.1551783264746248 -984 1390 1.682681771697503e-16 -984 1391 0.0287037037037036 -984 1392 -0.2040466392318236 -984 1393 0.01296296296296286 -984 1394 0.01342592592592567 -984 1395 -0.1551783264746201 -985 334 -0.0009703703703703706 -985 335 -0.0005000000000000001 -985 336 -0.008333333333333321 -985 340 -0.0002814814814814761 -985 341 1.192622389734055e-18 -985 342 2.255140518769849e-17 -985 346 -0.0009703703703703717 -985 347 0.0005000000000000002 -985 348 0.008333333333333335 -985 982 -0.00165925925925927 -985 983 1.517883041479706e-18 -985 984 -0.03333333333333333 -985 985 0.007762962962962978 -985 986 -1.192622389734055e-18 -985 987 -1.387778780781446e-17 -985 988 -0.001659259259259268 -985 989 -2.818925648462312e-18 -985 990 0.03333333333333333 -985 1390 -0.000970370370370379 -985 1391 0.0005000000000000019 -985 1392 -0.008333333333333351 -985 1393 -0.0002814814814814677 -985 1394 7.589415207398531e-19 -985 1395 -2.42861286636753e-17 -985 1396 -0.0009703703703703756 -985 1397 -0.0005000000000000013 -985 1398 0.008333333333333335 -986 334 -0.0005000000000000001 -986 335 -0.001040740740740742 -986 336 -0.009259259259259247 -986 340 1.192622389734055e-18 -986 341 -0.002362962962962956 -986 342 -0.03703703703703701 -986 346 0.0005000000000000001 -986 347 -0.001040740740740741 -986 348 -0.009259259259259257 -986 982 1.301042606982605e-18 -986 983 0.000281481481481474 -986 984 8.847089727481716e-17 -986 985 -1.301042606982605e-18 -986 986 0.008325925925925935 -986 987 9.71445146547012e-17 -986 988 -2.818925648462312e-18 -986 989 0.0002814814814814714 -986 990 3.642919299551295e-17 -986 1390 0.0005000000000000019 -986 1391 -0.001040740740740747 -986 1392 0.009259259259259226 -986 1393 9.75781955236954e-19 -986 1394 -0.002362962962962945 -986 1395 0.03703703703703687 -986 1396 -0.0005000000000000013 -986 1397 -0.001040740740740749 -986 1398 0.009259259259259247 -987 334 -0.01296296296296294 -987 335 -0.01342592592592593 -987 336 -0.1551783264746222 -987 340 -1.908195823574488e-17 -987 341 -0.02870370370370354 -987 342 -0.204046639231823 -987 346 0.01296296296296298 -987 347 -0.01342592592592593 -987 348 -0.1551783264746227 -987 982 -0.02407407407407407 -987 983 2.42861286636753e-17 -987 984 -0.1063100137174218 -987 985 2.949029909160572e-17 -987 986 2.775557561562891e-17 -987 987 1.24142661179698 -987 988 0.02407407407407404 -987 989 -1.214306433183765e-17 -987 990 -0.1063100137174225 -987 1390 -0.01296296296296303 -987 1391 0.01342592592592594 -987 1392 -0.1551783264746226 -987 1393 -3.989863994746656e-17 -987 1394 0.0287037037037033 -987 1395 -0.2040466392318211 -987 1396 0.01296296296296304 -987 1397 0.01342592592592612 -987 1398 -0.1551783264746238 -988 340 -0.0009703703703703696 -988 341 -0.0004999999999999999 -988 342 -0.008333333333333325 -988 346 -0.0002814814814814862 -988 347 -2.38524477946811e-18 -988 348 -1.040834085586084e-17 -988 352 -0.000970370370370374 -988 353 0.0005000000000000016 -988 354 0.008333333333333314 -988 985 -0.001659259259259268 -988 986 -2.818925648462312e-18 -988 987 -0.03333333333333332 -988 988 0.007762962962962959 -988 989 1.409462824231156e-18 -988 990 -6.938893903907228e-18 -988 991 -0.001659259259259234 -988 992 2.602085213965211e-18 -988 993 0.03333333333333333 -988 1393 -0.0009703703703703666 -988 1394 0.0004999999999999987 -988 1395 -0.008333333333333331 -988 1396 -0.0002814814814814867 -988 1397 1.843143693225358e-18 -988 1398 3.469446951953614e-18 -988 1399 -0.0009703703703703734 -988 1400 -0.0005000000000000012 -988 1401 0.008333333333333345 -989 340 -0.0004999999999999998 -989 341 -0.00104074074074074 -989 342 -0.009259259259259257 -989 346 -2.38524477946811e-18 -989 347 -0.002362962962962969 -989 348 -0.03703703703703708 -989 352 0.0005000000000000016 -989 353 -0.001040740740740755 -989 354 -0.009259259259259359 -989 985 -2.818925648462312e-18 -989 986 0.0002814814814814714 -989 987 -1.110223024625157e-16 -989 988 1.409462824231156e-18 -989 989 0.008325925925925936 -989 990 2.775557561562891e-17 -989 991 2.602085213965211e-18 -989 992 0.000281481481481508 -989 993 -5.377642775528102e-17 -989 1393 0.0004999999999999987 -989 1394 -0.001040740740740731 -989 1395 0.009259259259259172 -989 1396 2.059984127722458e-18 -989 1397 -0.002362962962962969 -989 1398 0.03703703703703708 -989 1399 -0.0005000000000000011 -989 1400 -0.00104074074074075 -989 1401 0.009259259259259352 -990 340 -0.01296296296296297 -990 341 -0.01342592592592591 -990 342 -0.1551783264746225 -990 346 -7.28583859910259e-17 -990 347 -0.02870370370370365 -990 348 -0.2040466392318254 -990 352 0.01296296296296303 -990 353 -0.01342592592592601 -990 354 -0.1551783264746245 -990 985 -0.02407407407407416 -990 986 -1.734723475976807e-17 -990 987 -0.1063100137174225 -990 988 2.654126918244515e-16 -990 989 -6.245004513516506e-17 -990 990 1.241426611796984 -990 991 0.0240740740740739 -990 992 -4.510281037539698e-17 -990 993 -0.1063100137174175 -990 1393 -0.01296296296296293 -990 1394 0.01342592592592588 -990 1395 -0.1551783264746217 -990 1396 -1.006139616066548e-16 -990 1397 0.02870370370370381 -990 1398 -0.2040466392318258 -990 1399 0.01296296296296304 -990 1400 0.01342592592592603 -990 1401 -0.1551783264746244 -991 346 -0.0009703703703703653 -991 347 -0.0004999999999999985 -991 348 -0.008333333333333335 -991 352 -0.0002814814814814845 -991 353 -5.095750210681871e-18 -991 354 -1.734723475976807e-17 -991 358 -0.000970370370370381 -991 359 0.0005000000000000029 -991 360 0.008333333333333335 -991 988 -0.001659259259259234 -991 989 2.602085213965211e-18 -991 990 -0.03333333333333331 -991 991 0.007762962962962958 -991 992 -7.589415207398531e-19 -991 993 3.469446951953614e-18 -991 994 -0.001659259259259267 -991 995 -1.084202172485504e-18 -991 996 0.03333333333333333 -991 1396 -0.0009703703703703647 -991 1397 0.0004999999999999988 -991 1398 -0.008333333333333331 -991 1399 -0.0002814814814814821 -991 1400 4.119968255444917e-18 -991 1401 6.938893903907228e-18 -991 1402 -0.0009703703703703804 -991 1403 -0.0005000000000000028 -991 1404 0.008333333333333338 -992 346 -0.0004999999999999984 -992 347 -0.00104074074074073 -992 348 -0.009259259259259248 -992 352 -5.095750210681871e-18 -992 353 -0.002362962962962967 -992 354 -0.03703703703703701 -992 358 0.0005000000000000028 -992 359 -0.001040740740740759 -992 360 -0.009259259259259318 -992 988 2.602085213965211e-18 -992 989 0.000281481481481508 -992 990 6.071532165918825e-17 -992 991 -8.673617379884035e-19 -992 992 0.008325925925925931 -992 993 1.908195823574488e-16 -992 994 -8.673617379884035e-19 -992 995 0.0002814814814814758 -992 996 3.989863994746656e-17 -992 1396 0.0004999999999999987 -992 1397 -0.001040740740740736 -992 1398 0.009259259259259297 -992 1399 3.903127820947816e-18 -992 1400 -0.002362962962962964 -992 1401 0.03703703703703711 -992 1402 -0.0005000000000000028 -992 1403 -0.001040740740740759 -992 1404 0.009259259259259321 -993 346 -0.01296296296296292 -993 347 -0.01342592592592569 -993 348 -0.155178326474622 -993 352 -1.647987302177967e-16 -993 353 -0.02870370370370374 -993 354 -0.2040466392318248 -993 358 0.01296296296296307 -993 359 -0.01342592592592614 -993 360 -0.1551783264746243 -993 988 -0.02407407407407416 -993 989 -1.387778780781446e-17 -993 990 -0.1063100137174175 -993 991 2.862293735361732e-16 -993 992 -1.387778780781446e-16 -993 993 1.241426611796982 -993 994 0.02407407407407389 -993 995 -1.734723475976807e-18 -993 996 -0.1063100137174217 -993 1396 -0.01296296296296293 -993 1397 0.01342592592592584 -993 1398 -0.1551783264746226 -993 1399 -1.318389841742373e-16 -993 1400 0.02870370370370374 -993 1401 -0.2040466392318246 -993 1402 0.01296296296296306 -993 1403 0.01342592592592615 -993 1404 -0.1551783264746243 -994 352 -0.0009703703703703606 -994 353 -0.0004999999999999972 -994 354 -0.008333333333333321 -994 358 -0.0002814814814814738 -994 359 -5.204170427930421e-18 -994 360 2.255140518769849e-17 -994 364 -0.0009703703703703817 -994 365 0.0005000000000000033 -994 366 0.008333333333333338 -994 991 -0.001659259259259267 -994 992 -9.75781955236954e-19 -994 993 -0.03333333333333334 -994 994 0.007762962962962975 -994 995 -3.794707603699266e-18 -994 996 1.040834085586084e-17 -994 997 -0.001659259259259283 -994 998 3.469446951953614e-18 -994 999 0.03333333333333335 -994 1399 -0.0009703703703703623 -994 1400 0.0004999999999999973 -994 1401 -0.008333333333333349 -994 1402 -0.0002814814814814701 -994 1403 4.445228907190568e-18 -994 1404 -1.040834085586084e-17 -994 1405 -0.000970370370370376 -994 1406 -0.0005000000000000012 -994 1407 0.008333333333333335 -995 352 -0.0004999999999999971 -995 353 -0.001040740740740722 -995 354 -0.009259259259259169 -995 358 -4.98732999343332e-18 -995 359 -0.002362962962962953 -995 360 -0.03703703703703701 -995 364 0.0005000000000000033 -995 365 -0.00104074074074076 -995 366 -0.009259259259259288 -995 991 -1.084202172485504e-18 -995 992 0.0002814814814814758 -995 993 5.204170427930421e-18 -995 994 -3.794707603699266e-18 -995 995 0.008325925925925919 -995 996 -2.081668171172169e-16 -995 997 3.144186300207963e-18 -995 998 0.0002814814814814543 -995 999 -9.367506770274758e-17 -995 1399 0.0004999999999999972 -995 1400 -0.00104074074074072 -995 1401 0.009259259259259155 -995 1402 4.77048955893622e-18 -995 1403 -0.002362962962962948 -995 1404 0.03703703703703687 -995 1405 -0.0005000000000000013 -995 1406 -0.001040740740740747 -995 1407 0.009259259259259234 -996 352 -0.01296296296296281 -996 353 -0.01342592592592565 -996 354 -0.1551783264746199 -996 358 -2.498001805406602e-16 -996 359 -0.02870370370370345 -996 360 -0.2040466392318226 -996 364 0.01296296296296307 -996 365 -0.01342592592592629 -996 366 -0.1551783264746251 -996 991 -0.02407407407407435 -996 992 -1.734723475976807e-17 -996 993 -0.1063100137174217 -996 994 4.805184028455756e-16 -996 995 5.551115123125783e-17 -996 996 1.24142661179698 -996 997 0.02407407407407387 -996 998 3.122502256758253e-17 -996 999 -0.1063100137174251 -996 1399 -0.01296296296296284 -996 1400 0.01342592592592562 -996 1401 -0.1551783264746199 -996 1402 -1.717376241217039e-16 -996 1403 0.02870370370370363 -996 1404 -0.204046639231822 -996 1405 0.012962962962963 -996 1406 0.01342592592592607 -996 1407 -0.1551783264746237 -997 358 -0.0009703703703703611 -997 359 -0.000499999999999997 -997 360 -0.008333333333333338 -997 364 -0.0002814814814814734 -997 365 -3.577867169202165e-18 -997 366 8.673617379884035e-18 -997 370 -0.0009703703703703735 -997 371 0.0005000000000000008 -997 372 0.008333333333333338 -997 994 -0.001659259259259283 -997 995 3.144186300207963e-18 -997 996 -0.03333333333333334 -997 997 0.007762962962962965 -997 998 -8.565197162635485e-18 -997 1000 -0.001659259259259266 -997 1001 5.312590645178972e-18 -997 1002 0.03333333333333335 -997 1402 -0.0009703703703703672 -997 1403 0.0004999999999999987 -997 1404 -0.008333333333333333 -997 1405 -0.0002814814814814772 -997 1406 -7.589415207398531e-19 -997 1407 -1.734723475976807e-18 -997 1408 -0.0009703703703703632 -997 1409 -0.000499999999999998 -997 1410 0.008333333333333338 -998 358 -0.0004999999999999971 -998 359 -0.00104074074074072 -998 360 -0.009259259259259123 -998 364 -3.686287386450715e-18 -998 365 -0.002362962962962953 -998 366 -0.03703703703703692 -998 370 0.0005000000000000009 -998 371 -0.001040740740740744 -998 372 -0.009259259259259271 -998 994 3.469446951953614e-18 -998 995 0.0002814814814814543 -998 996 9.020562075079397e-17 -998 997 -8.565197162635485e-18 -998 998 0.008325925925925903 -998 999 1.387778780781446e-17 -998 1000 5.204170427930421e-18 -998 1001 0.0002814814814814737 -998 1002 -1.925543058334256e-16 -998 1402 0.0004999999999999986 -998 1403 -0.001040740740740729 -998 1404 0.00925925925925916 -998 1405 -8.673617379884035e-19 -998 1406 -0.002362962962962957 -998 1407 0.03703703703703699 -998 1408 -0.0004999999999999981 -998 1409 -0.001040740740740728 -998 1410 0.009259259259259205 -999 358 -0.01296296296296283 -999 359 -0.01342592592592576 -999 360 -0.1551783264746204 -999 364 -1.595945597898663e-16 -999 365 -0.02870370370370371 -999 366 -0.2040466392318227 -999 370 0.01296296296296298 -999 371 -0.01342592592592593 -999 372 -0.1551783264746228 -999 994 -0.02407407407407423 -999 995 1.561251128379126e-17 -999 996 -0.1063100137174251 -999 997 8.326672684688674e-17 -999 998 1.561251128379126e-17 -999 999 1.241426611796979 -999 1000 0.02407407407407414 -999 1001 -4.336808689942018e-17 -999 1002 -0.106310013717422 -999 1402 -0.01296296296296289 -999 1403 0.01342592592592583 -999 1404 -0.1551783264746217 -999 1405 3.642919299551295e-17 -999 1406 0.02870370370370373 -999 1407 -0.2040466392318236 -999 1408 0.01296296296296286 -999 1409 0.01342592592592584 -999 1410 -0.1551783264746212 -1000 364 -0.0009703703703703691 -1000 365 -0.0004999999999999994 -1000 366 -0.008333333333333342 -1000 370 -0.0002814814814814862 -1000 371 -2.168404344971009e-19 -1000 372 -1.040834085586084e-17 -1000 376 -0.0009703703703703673 -1000 377 0.0004999999999999996 -1000 378 0.008333333333333335 -1000 997 -0.001659259259259266 -1000 998 5.204170427930421e-18 -1000 999 -0.03333333333333335 -1000 1000 0.007762962962962959 -1000 1001 -7.047314121155779e-18 -1000 1002 -2.081668171172169e-17 -1000 1003 -0.001659259259259242 -1000 1004 1.951563910473908e-18 -1000 1005 0.03333333333333334 -1000 1405 -0.0009703703703703766 -1000 1406 0.000500000000000002 -1000 1407 -0.008333333333333333 -1000 1408 -0.0002814814814814862 -1000 1409 -3.361026734705064e-18 -1000 1410 -6.938893903907228e-18 -1000 1411 -0.0009703703703703657 -1000 1412 -0.0004999999999999986 -1000 1413 0.008333333333333335 -1001 364 -0.0004999999999999994 -1001 365 -0.001040740740740735 -1001 366 -0.009259259259259234 -1001 370 -6.505213034913027e-19 -1001 371 -0.002362962962962969 -1001 372 -0.0370370370370371 -1001 376 0.0004999999999999996 -1001 377 -0.001040740740740741 -1001 378 -0.009259259259259314 -1001 997 5.312590645178972e-18 -1001 998 0.0002814814814814737 -1001 999 1.023486850826316e-16 -1001 1000 -7.047314121155779e-18 -1001 1001 0.008325925925925931 -1001 1002 1.838806884535416e-16 -1001 1003 2.059984127722458e-18 -1001 1004 0.0002814814814814974 -1001 1005 -1.040834085586084e-17 -1001 1405 0.0005000000000000022 -1001 1406 -0.001040740740740755 -1001 1407 0.009259259259259318 -1001 1408 -3.252606517456513e-18 -1001 1409 -0.002362962962962969 -1001 1410 0.0370370370370371 -1001 1411 -0.0004999999999999987 -1001 1412 -0.001040740740740732 -1001 1413 0.009259259259259231 -1002 364 -0.01296296296296292 -1002 365 -0.01342592592592581 -1002 366 -0.1551783264746217 -1002 370 -4.163336342344337e-17 -1002 371 -0.02870370370370386 -1002 372 -0.2040466392318254 -1002 376 0.01296296296296297 -1002 377 -0.01342592592592596 -1002 378 -0.1551783264746233 -1002 997 -0.02407407407407404 -1002 998 -7.806255641895632e-17 -1002 999 -0.106310013717422 -1002 1000 -1.006139616066548e-16 -1002 1001 -6.418476861114186e-17 -1002 1002 1.241426611796983 -1002 1003 0.02407407407407414 -1002 1004 5.724587470723463e-17 -1002 1005 -0.1063100137174188 -1002 1405 -0.01296296296296303 -1002 1406 0.0134259259259262 -1002 1407 -0.1551783264746242 -1002 1408 9.540979117872439e-17 -1002 1409 0.02870370370370374 -1002 1410 -0.2040466392318252 -1002 1411 0.01296296296296292 -1002 1412 0.01342592592592577 -1002 1413 -0.1551783264746218 -1003 370 -0.0009703703703703701 -1003 371 -0.0005000000000000003 -1003 372 -0.008333333333333333 -1003 376 -0.0002814814814814821 -1003 377 -3.144186300207963e-18 -1003 378 -1.561251128379126e-17 -1003 382 -0.0009703703703703801 -1003 383 0.0005000000000000026 -1003 384 0.008333333333333323 -1003 1000 -0.001659259259259242 -1003 1001 2.168404344971009e-18 -1003 1002 -0.03333333333333333 -1003 1003 0.00776296296296297 -1003 1004 -7.697835424647081e-18 -1003 1005 -1.734723475976807e-17 -1003 1006 -0.001659259259259264 -1003 1007 6.830473686658678e-18 -1003 1008 0.03333333333333334 -1003 1408 -0.0009703703703703746 -1003 1409 0.0005000000000000013 -1003 1410 -0.008333333333333331 -1003 1411 -0.0002814814814814868 -1003 1412 -2.059984127722458e-18 -1003 1413 3.469446951953614e-18 -1003 1414 -0.0009703703703703701 -1003 1415 -0.0004999999999999999 -1003 1416 0.008333333333333345 -1004 370 -0.0005000000000000003 -1004 371 -0.001040740740740746 -1004 372 -0.009259259259259335 -1004 376 -3.252606517456513e-18 -1004 377 -0.002362962962962964 -1004 378 -0.03703703703703715 -1004 382 0.0005000000000000027 -1004 383 -0.001040740740740758 -1004 384 -0.009259259259259287 -1004 1000 1.951563910473908e-18 -1004 1001 0.0002814814814814975 -1004 1002 1.023486850826316e-16 -1004 1003 -7.697835424647081e-18 -1004 1004 0.008325925925925954 -1004 1005 -6.591949208711867e-17 -1004 1006 7.155734338404329e-18 -1004 1007 0.0002814814814814773 -1004 1008 -1.52655665885959e-16 -1004 1408 0.0005000000000000013 -1004 1409 -0.00104074074074075 -1004 1410 0.009259259259259306 -1004 1411 -2.168404344971009e-18 -1004 1412 -0.00236296296296297 -1004 1413 0.03703703703703709 -1004 1414 -0.0004999999999999999 -1004 1415 -0.00104074074074074 -1004 1416 0.009259259259259278 -1005 370 -0.012962962962963 -1005 371 -0.01342592592592602 -1005 372 -0.1551783264746239 -1005 376 -9.71445146547012e-17 -1005 377 -0.02870370370370341 -1005 378 -0.204046639231825 -1005 382 0.01296296296296308 -1005 383 -0.01342592592592616 -1005 384 -0.1551783264746248 -1005 1000 -0.02407407407407402 -1005 1001 4.336808689942018e-17 -1005 1002 -0.1063100137174188 -1005 1003 5.204170427930421e-17 -1005 1004 -1.07552855510562e-16 -1005 1005 1.241426611796987 -1005 1006 0.02407407407407396 -1005 1007 -6.591949208711867e-17 -1005 1008 -0.106310013717422 -1005 1408 -0.01296296296296304 -1005 1409 0.01342592592592601 -1005 1410 -0.1551783264746239 -1005 1411 6.245004513516506e-17 -1005 1412 0.02870370370370375 -1005 1413 -0.2040466392318258 -1005 1414 0.01296296296296299 -1005 1415 0.01342592592592594 -1005 1416 -0.1551783264746233 -1006 376 -0.0009703703703703628 -1006 377 -0.0004999999999999972 -1006 378 -0.008333333333333335 -1006 382 -0.0002814814814814738 -1006 383 -4.98732999343332e-18 -1006 384 1.040834085586084e-17 -1006 388 -0.0009703703703703805 -1006 389 0.0005000000000000028 -1006 390 0.008333333333333335 -1006 1003 -0.001659259259259264 -1006 1004 7.155734338404329e-18 -1006 1005 -0.03333333333333333 -1006 1006 0.007762962962962966 -1006 1007 -1.105886215935215e-17 -1006 1009 -0.001659259259259267 -1006 1010 3.361026734705064e-18 -1006 1011 0.03333333333333332 -1006 1411 -0.0009703703703703701 -1006 1412 0.0005000000000000002 -1006 1413 -0.008333333333333335 -1006 1414 -0.0002814814814814766 -1006 1415 -1.084202172485504e-19 -1006 1416 5.204170427930421e-18 -1006 1417 -0.0009703703703703714 -1006 1418 -0.0005000000000000001 -1006 1419 0.008333333333333338 -1007 376 -0.0004999999999999971 -1007 377 -0.001040740740740719 -1007 378 -0.00925925925925912 -1007 382 -4.98732999343332e-18 -1007 383 -0.002362962962962953 -1007 384 -0.03703703703703685 -1007 388 0.0005000000000000027 -1007 389 -0.001040740740740757 -1007 390 -0.009259259259259304 -1007 1003 6.722053469410127e-18 -1007 1004 0.0002814814814814774 -1007 1005 2.168404344971009e-16 -1007 1006 -1.105886215935215e-17 -1007 1007 0.008325925925925917 -1007 1008 2.046973701652632e-16 -1007 1009 3.469446951953614e-18 -1007 1010 0.0002814814814814753 -1007 1011 -7.979727989493313e-17 -1007 1411 0.0005000000000000003 -1007 1412 -0.001040740740740744 -1007 1413 0.009259259259259299 -1007 1415 -0.002362962962962957 -1007 1416 0.03703703703703707 -1007 1417 -0.0005000000000000002 -1007 1418 -0.001040740740740741 -1007 1419 0.009259259259259248 -1008 376 -0.01296296296296287 -1008 377 -0.01342592592592564 -1008 378 -0.1551783264746205 -1008 382 -1.734723475976807e-16 -1008 383 -0.02870370370370358 -1008 384 -0.2040466392318224 -1008 388 0.01296296296296306 -1008 389 -0.01342592592592613 -1008 390 -0.155178326474624 -1008 1003 -0.02407407407407419 -1008 1004 -7.979727989493313e-17 -1008 1005 -0.106310013717422 -1008 1006 1.821459649775647e-16 -1008 1007 -1.491862189340054e-16 -1008 1008 1.24142661179698 -1008 1009 0.024074074074074 -1008 1010 2.081668171172169e-17 -1008 1011 -0.1063100137174217 -1008 1411 -0.01296296296296298 -1008 1412 0.01342592592592599 -1008 1413 -0.1551783264746236 -1008 1414 3.295974604355933e-17 -1008 1415 0.02870370370370365 -1008 1416 -0.2040466392318236 -1008 1417 0.01296296296296295 -1008 1418 0.01342592592592591 -1008 1419 -0.1551783264746223 -1009 382 -0.0009703703703703608 -1009 383 -0.0004999999999999973 -1009 384 -0.008333333333333312 -1009 388 -0.0002814814814814905 -1009 389 -4.87890977618477e-18 -1009 390 1.734723475976807e-18 -1009 394 -0.0009703703703703754 -1009 395 0.0005000000000000022 -1009 396 0.008333333333333314 -1009 1006 -0.001659259259259267 -1009 1007 3.361026734705064e-18 -1009 1008 -0.03333333333333334 -1009 1009 0.00776296296296297 -1009 1010 -4.011548038196366e-18 -1009 1011 -6.938893903907228e-18 -1009 1012 -0.001659259259259241 -1009 1013 5.421010862427522e-19 -1009 1014 0.03333333333333333 -1009 1414 -0.0009703703703703712 -1009 1415 0.0004999999999999999 -1009 1416 -0.008333333333333349 -1009 1417 -0.0002814814814814851 -1009 1418 2.927345865710862e-18 -1009 1419 -5.204170427930421e-18 -1009 1420 -0.0009703703703703792 -1009 1421 -0.0005000000000000028 -1009 1422 0.008333333333333345 -1010 382 -0.0004999999999999973 -1010 383 -0.001040740740740724 -1010 384 -0.009259259259259172 -1010 388 -4.98732999343332e-18 -1010 389 -0.002362962962962975 -1010 390 -0.03703703703703716 -1010 394 0.0005000000000000023 -1010 395 -0.001040740740740761 -1010 396 -0.009259259259259404 -1010 1006 3.361026734705064e-18 -1010 1007 0.0002814814814814753 -1010 1008 1.422473250300982e-16 -1010 1009 -4.011548038196366e-18 -1010 1010 0.008325925925925952 -1010 1011 1.214306433183765e-16 -1010 1012 4.336808689942018e-19 -1010 1013 0.0002814814814814977 -1010 1014 6.938893903907228e-18 -1010 1414 0.0004999999999999998 -1010 1415 -0.001040740740740737 -1010 1416 0.009259259259259229 -1010 1417 3.144186300207963e-18 -1010 1418 -0.002362962962962968 -1010 1419 0.03703703703703713 -1010 1420 -0.0005000000000000028 -1010 1421 -0.001040740740740761 -1010 1422 0.00925925925925938 -1011 382 -0.01296296296296281 -1011 383 -0.01342592592592568 -1011 384 -0.1551783264746199 -1011 388 -2.42861286636753e-16 -1011 389 -0.02870370370370375 -1011 390 -0.2040466392318257 -1011 394 0.01296296296296305 -1011 395 -0.01342592592592619 -1011 396 -0.1551783264746251 -1011 1006 -0.02407407407407422 -1011 1007 -4.510281037539698e-17 -1011 1008 -0.1063100137174217 -1011 1009 3.729655473350135e-16 -1011 1011 1.241426611796983 -1011 1012 0.02407407407407385 -1011 1013 5.204170427930421e-18 -1011 1014 -0.1063100137174186 -1011 1414 -0.01296296296296296 -1011 1415 0.01342592592592586 -1011 1416 -0.155178326474622 -1011 1417 -1.543903893619358e-16 -1011 1418 0.02870370370370359 -1011 1419 -0.2040466392318247 -1011 1420 0.01296296296296311 -1011 1421 0.01342592592592621 -1011 1422 -0.1551783264746251 -1012 388 -0.0009703703703703619 -1012 389 -0.0004999999999999978 -1012 390 -0.008333333333333333 -1012 394 -0.000281481481481479 -1012 395 -5.963111948670274e-18 -1012 396 -1.734723475976807e-18 -1012 400 -0.0009703703703703862 -1012 401 0.0005000000000000037 -1012 402 0.008333333333333335 -1012 1009 -0.001659259259259241 -1012 1010 4.336808689942018e-19 -1012 1011 -0.03333333333333331 -1012 1012 0.007762962962962977 -1012 1013 3.252606517456513e-18 -1012 1014 6.938893903907228e-18 -1012 1015 -0.001659259259259292 -1012 1016 -3.794707603699266e-18 -1012 1017 0.03333333333333333 -1012 1417 -0.0009703703703703595 -1012 1418 0.0004999999999999971 -1012 1419 -0.008333333333333333 -1012 1420 -0.00028148148148147 -1012 1421 7.697835424647081e-18 -1012 1422 5.204170427930421e-18 -1012 1423 -0.0009703703703703888 -1012 1424 -0.0005000000000000048 -1012 1425 0.008333333333333338 -1013 388 -0.0004999999999999977 -1013 389 -0.001040740740740728 -1013 390 -0.009259259259259257 -1013 394 -5.963111948670274e-18 -1013 395 -0.00236296296296296 -1013 396 -0.037037037037037 -1013 400 0.0005000000000000038 -1013 401 -0.00104074074074076 -1013 402 -0.009259259259259273 -1013 1009 5.421010862427522e-19 -1013 1010 0.0002814814814814978 -1013 1011 6.938893903907228e-18 -1013 1012 3.469446951953614e-18 -1013 1013 0.008325925925925935 -1013 1014 1.595945597898663e-16 -1013 1015 -4.011548038196366e-18 -1013 1016 0.0002814814814814548 -1013 1017 6.938893903907228e-17 -1013 1417 0.0004999999999999972 -1013 1418 -0.001040740740740725 -1013 1419 0.009259259259259231 -1013 1420 7.697835424647081e-18 -1013 1421 -0.002362962962962948 -1013 1422 0.03703703703703699 -1013 1423 -0.0005000000000000048 -1013 1424 -0.001040740740740768 -1013 1425 0.00925925925925929 -1014 388 -0.01296296296296289 -1014 389 -0.01342592592592574 -1014 390 -0.1551783264746215 -1014 394 -2.099015405931937e-16 -1014 395 -0.02870370370370353 -1014 396 -0.2040466392318237 -1014 400 0.0129629629629631 -1014 401 -0.01342592592592613 -1014 402 -0.1551783264746247 -1014 1009 -0.02407407407407429 -1014 1010 4.85722573273506e-17 -1014 1011 -0.1063100137174185 -1014 1012 5.273559366969494e-16 -1014 1013 -1.006139616066548e-16 -1014 1014 1.241426611796982 -1014 1015 0.02407407407407377 -1014 1016 -3.469446951953614e-18 -1014 1017 -0.1063100137174252 -1014 1417 -0.01296296296296286 -1014 1418 0.01342592592592572 -1014 1419 -0.1551783264746207 -1014 1420 -2.896988204881268e-16 -1014 1421 0.02870370370370341 -1014 1422 -0.204046639231822 -1014 1423 0.01296296296296314 -1014 1424 0.01342592592592632 -1014 1425 -0.1551783264746257 -1015 394 -0.0009703703703703593 -1015 395 -0.0004999999999999962 -1015 396 -0.008333333333333312 -1015 400 -0.0002814814814814785 -1015 401 -3.794707603699266e-18 -1015 402 1.387778780781446e-17 -1015 406 -0.0009703703703703717 -1015 407 0.0005000000000000009 -1015 408 0.008333333333333326 -1015 1012 -0.001659259259259292 -1015 1013 -4.011548038196366e-18 -1015 1014 -0.03333333333333334 -1015 1015 0.007762962962962958 -1015 1016 4.445228907190568e-18 -1015 1017 -1.040834085586084e-17 -1015 1018 -0.001659259259259254 -1015 1019 -1.843143693225358e-18 -1015 1020 0.03333333333333333 -1015 1420 -0.0009703703703703573 -1015 1421 0.0004999999999999951 -1015 1422 -0.008333333333333351 -1015 1423 -0.0002814814814814701 -1015 1424 7.37257477290143e-18 -1015 1425 -1.040834085586084e-17 -1015 1426 -0.0009703703703703766 -1015 1427 -0.000500000000000002 -1015 1428 0.008333333333333338 -1016 394 -0.0004999999999999962 -1016 395 -0.001040740740740713 -1016 396 -0.009259259259259087 -1016 400 -3.794707603699266e-18 -1016 401 -0.002362962962962959 -1016 402 -0.03703703703703692 -1016 406 0.0005000000000000008 -1016 407 -0.00104074074074075 -1016 408 -0.009259259259259316 -1016 1012 -3.903127820947816e-18 -1016 1013 0.0002814814814814548 -1016 1014 -1.162264728904461e-16 -1016 1015 4.553649124439119e-18 -1016 1016 0.008325925925925893 -1016 1017 -8.326672684688674e-17 -1016 1018 -1.734723475976807e-18 -1016 1019 0.0002814814814814824 -1016 1020 5.377642775528102e-17 -1016 1420 0.0004999999999999952 -1016 1421 -0.001040740740740703 -1016 1422 0.009259259259259012 -1016 1423 7.26415455565288e-18 -1016 1424 -0.002362962962962948 -1016 1425 0.03703703703703683 -1016 1426 -0.0005000000000000021 -1016 1427 -0.001040740740740755 -1016 1428 0.009259259259259339 -1017 394 -0.01296296296296277 -1017 395 -0.0134259259259255 -1017 396 -0.155178326474619 -1017 400 -1.925543058334256e-16 -1017 401 -0.02870370370370378 -1017 402 -0.2040466392318233 -1017 406 0.01296296296296297 -1017 407 -0.0134259259259261 -1017 408 -0.1551783264746235 -1017 1012 -0.02407407407407446 -1017 1013 -2.775557561562891e-17 -1017 1014 -0.1063100137174252 -1017 1015 5.655198531684391e-16 -1017 1016 8.500145032286355e-17 -1017 1017 1.241426611796976 -1017 1018 0.02407407407407389 -1017 1020 -0.1063100137174206 -1017 1420 -0.01296296296296276 -1017 1421 0.01342592592592544 -1017 1422 -0.1551783264746183 -1017 1423 -2.844946500601964e-16 -1017 1424 0.02870370370370375 -1017 1425 -0.204046639231822 -1017 1426 0.01296296296296303 -1017 1427 0.01342592592592614 -1017 1428 -0.1551783264746244 -1018 400 -0.0009703703703703665 -1018 401 -0.0004999999999999991 -1018 402 -0.008333333333333331 -1018 406 -0.0002814814814814866 -1018 407 -1.084202172485504e-18 -1018 412 -0.0009703703703703714 -1018 413 0.0005000000000000002 -1018 414 0.008333333333333335 -1018 1015 -0.001659259259259254 -1018 1016 -1.734723475976807e-18 -1018 1017 -0.03333333333333331 -1018 1018 0.007762962962962959 -1018 1019 1.843143693225358e-18 -1018 1020 -1.040834085586084e-17 -1018 1021 -0.001659259259259266 -1018 1022 -2.168404344971009e-19 -1018 1023 0.03333333333333333 -1018 1423 -0.0009703703703703633 -1018 1424 0.000499999999999998 -1018 1425 -0.008333333333333333 -1018 1426 -0.000281481481481481 -1018 1427 2.059984127722458e-18 -1018 1428 -6.938893903907228e-18 -1018 1429 -0.000970370370370371 -1018 1430 -0.0005 -1018 1431 0.008333333333333335 -1019 400 -0.0004999999999999991 -1019 401 -0.001040740740740737 -1019 402 -0.009259259259259262 -1019 406 -9.75781955236954e-19 -1019 407 -0.00236296296296297 -1019 408 -0.03703703703703715 -1019 412 0.0005000000000000001 -1019 413 -0.001040740740740741 -1019 414 -0.009259259259259257 -1019 1015 -1.951563910473908e-18 -1019 1016 0.0002814814814814824 -1019 1017 -5.551115123125783e-17 -1019 1018 1.951563910473908e-18 -1019 1019 0.008325925925925921 -1019 1020 -1.422473250300982e-16 -1019 1021 -1.084202172485504e-19 -1019 1022 0.0002814814814814762 -1019 1023 6.938893903907228e-18 -1019 1423 0.0004999999999999981 -1019 1424 -0.001040740740740729 -1019 1425 0.009259259259259228 -1019 1426 2.059984127722458e-18 -1019 1427 -0.002362962962962963 -1019 1428 0.037037037037037 -1019 1429 -0.0005 -1019 1430 -0.00104074074074074 -1019 1431 0.009259259259259231 -1020 400 -0.01296296296296291 -1020 401 -0.01342592592592595 -1020 402 -0.1551783264746222 -1020 406 -7.806255641895632e-17 -1020 407 -0.02870370370370376 -1020 408 -0.2040466392318253 -1020 412 0.01296296296296299 -1020 413 -0.01342592592592593 -1020 414 -0.1551783264746228 -1020 1015 -0.02407407407407416 -1020 1016 3.816391647148976e-17 -1020 1017 -0.1063100137174206 -1020 1018 6.245004513516506e-17 -1020 1019 6.418476861114186e-17 -1020 1020 1.241426611796981 -1020 1021 0.02407407407407409 -1020 1022 3.469446951953614e-18 -1020 1023 -0.106310013717422 -1020 1423 -0.01296296296296286 -1020 1424 0.01342592592592578 -1020 1425 -0.1551783264746213 -1020 1426 -1.196959198423997e-16 -1020 1427 0.02870370370370383 -1020 1428 -0.2040466392318244 -1020 1429 0.01296296296296298 -1020 1430 0.01342592592592593 -1020 1431 -0.1551783264746228 -1021 406 -0.0009703703703703699 -1021 407 -0.0004999999999999999 -1021 408 -0.008333333333333326 -1021 412 -0.0002814814814814856 -1021 413 -2.49366499671666e-18 -1021 414 -1.561251128379126e-17 -1021 418 -0.000970370370370374 -1021 419 0.0005000000000000016 -1021 420 0.008333333333333314 -1021 1018 -0.001659259259259266 -1021 1019 -1.084202172485504e-19 -1021 1020 -0.03333333333333333 -1021 1021 0.007762962962962963 -1021 1022 1.409462824231156e-18 -1021 1023 -1.040834085586084e-17 -1021 1024 -0.001659259259259232 -1021 1025 -1.084202172485504e-19 -1021 1026 0.03333333333333333 -1021 1426 -0.000970370370370371 -1021 1427 0.0005 -1021 1428 -0.008333333333333331 -1021 1429 -0.0002814814814814867 -1021 1430 1.951563910473908e-18 -1021 1431 3.469446951953614e-18 -1021 1432 -0.0009703703703703779 -1021 1433 -0.0005000000000000025 -1021 1434 0.008333333333333345 -1022 406 -0.0004999999999999998 -1022 407 -0.00104074074074074 -1022 408 -0.009259259259259257 -1022 412 -2.49366499671666e-18 -1022 413 -0.002362962962962968 -1022 414 -0.03703703703703708 -1022 418 0.0005000000000000016 -1022 419 -0.001040740740740755 -1022 420 -0.009259259259259359 -1022 1018 -2.168404344971009e-19 -1022 1019 0.0002814814814814763 -1022 1020 5.204170427930421e-18 -1022 1021 1.517883041479706e-18 -1022 1022 0.008325925925925943 -1022 1023 9.020562075079397e-17 -1022 1024 -1.084202172485504e-19 -1022 1025 0.0002814814814815131 -1022 1026 6.418476861114186e-17 -1022 1426 0.0005 -1022 1427 -0.00104074074074074 -1022 1428 0.009259259259259231 -1022 1429 2.059984127722458e-18 -1022 1430 -0.002362962962962969 -1022 1431 0.0370370370370371 -1022 1432 -0.0005000000000000024 -1022 1433 -0.001040740740740759 -1022 1434 0.00925925925925941 -1023 406 -0.01296296296296297 -1023 407 -0.01342592592592591 -1023 408 -0.1551783264746226 -1023 412 -6.938893903907228e-17 -1023 413 -0.02870370370370365 -1023 414 -0.2040466392318254 -1023 418 0.01296296296296303 -1023 419 -0.01342592592592601 -1023 420 -0.1551783264746245 -1023 1018 -0.02407407407407411 -1023 1019 -1.908195823574488e-17 -1023 1020 -0.106310013717422 -1023 1021 2.671474153004283e-16 -1023 1022 -6.938893903907228e-17 -1023 1023 1.241426611796985 -1023 1024 0.02407407407407385 -1023 1025 -4.85722573273506e-17 -1023 1026 -0.1063100137174169 -1023 1426 -0.01296296296296299 -1023 1427 0.01342592592592593 -1023 1428 -0.1551783264746228 -1023 1429 -1.006139616066548e-16 -1023 1430 0.0287037037037037 -1023 1431 -0.2040466392318258 -1023 1432 0.0129629629629631 -1023 1433 0.01342592592592608 -1023 1434 -0.1551783264746254 -1024 412 -0.0009703703703703653 -1024 413 -0.0004999999999999985 -1024 414 -0.008333333333333335 -1024 418 -0.0002814814814814954 -1024 419 -4.553649124439119e-18 -1024 420 -3.816391647148976e-17 -1024 424 -0.0009703703703703724 -1024 425 0.0005000000000000012 -1024 426 0.008333333333333321 -1024 1021 -0.001659259259259232 -1024 1022 -1.084202172485504e-19 -1024 1023 -0.03333333333333331 -1024 1024 0.007762962962962945 -1024 1025 3.144186300207963e-18 -1024 1026 6.938893903907228e-18 -1024 1027 -0.001659259259259256 -1024 1028 -5.421010862427522e-19 -1024 1029 0.03333333333333335 -1024 1429 -0.0009703703703703604 -1024 1430 0.0004999999999999975 -1024 1431 -0.008333333333333331 -1024 1432 -0.0002814814814814888 -1024 1433 3.577867169202165e-18 -1024 1434 1.040834085586084e-17 -1024 1435 -0.0009703703703703759 -1024 1436 -0.0005000000000000016 -1024 1437 0.008333333333333349 -1025 412 -0.0004999999999999984 -1025 413 -0.00104074074074073 -1025 414 -0.009259259259259248 -1025 418 -4.662069341687669e-18 -1025 419 -0.002362962962962982 -1025 420 -0.03703703703703715 -1025 424 0.0005000000000000011 -1025 425 -0.001040740740740752 -1025 426 -0.009259259259259332 -1025 1022 0.0002814814814815131 -1025 1023 2.949029909160572e-17 -1025 1024 2.927345865710862e-18 -1025 1025 0.008325925925925922 -1025 1026 -1.040834085586084e-17 -1025 1027 -4.336808689942018e-19 -1025 1028 0.0002814814814814804 -1025 1029 -5.204170427930421e-18 -1025 1429 0.0004999999999999974 -1025 1430 -0.001040740740740727 -1025 1431 0.009259259259259281 -1025 1432 3.577867169202165e-18 -1025 1433 -0.002362962962962973 -1025 1434 0.03703703703703716 -1025 1435 -0.0005000000000000017 -1025 1436 -0.001040740740740752 -1025 1437 0.009259259259259323 -1026 412 -0.01296296296296292 -1026 413 -0.01342592592592569 -1026 414 -0.155178326474622 -1026 418 -1.127570259384925e-16 -1026 419 -0.02870370370370398 -1026 420 -0.2040466392318271 -1026 424 0.01296296296296299 -1026 425 -0.01342592592592612 -1026 426 -0.1551783264746238 -1026 1021 -0.02407407407407421 -1026 1023 -0.1063100137174169 -1026 1024 3.070460552478949e-16 -1026 1025 -1.908195823574488e-17 -1026 1026 1.241426611796983 -1026 1027 0.02407407407407394 -1026 1028 -3.469446951953614e-18 -1026 1029 -0.106310013717421 -1026 1429 -0.01296296296296287 -1026 1430 0.01342592592592565 -1026 1431 -0.1551783264746216 -1026 1432 -1.405126015541214e-16 -1026 1433 0.02870370370370403 -1026 1434 -0.2040466392318263 -1026 1435 0.01296296296296303 -1026 1436 0.01342592592592613 -1026 1437 -0.1551783264746243 -1027 418 -0.0009703703703703657 -1027 419 -0.0004999999999999988 -1027 420 -0.008333333333333331 -1027 424 -0.0002814814814814813 -1027 425 -4.228388472693467e-18 -1027 426 1.734723475976807e-18 -1027 430 -0.0009703703703703823 -1027 431 0.000500000000000003 -1027 432 0.008333333333333331 -1027 1024 -0.001659259259259256 -1027 1025 -5.421010862427522e-19 -1027 1026 -0.03333333333333335 -1027 1027 0.007762962962962965 -1027 1028 -5.746271514173174e-18 -1027 1030 -0.001659259259259268 -1027 1031 6.288372600415926e-18 -1027 1032 0.03333333333333335 -1027 1432 -0.0009703703703703648 -1027 1433 0.0004999999999999984 -1027 1434 -0.008333333333333349 -1027 1435 -0.0002814814814814778 -1027 1436 1.301042606982605e-18 -1027 1437 1.734723475976807e-18 -1027 1438 -0.0009703703703703701 -1027 1439 -0.0004999999999999997 -1027 1440 0.008333333333333349 -1028 418 -0.0004999999999999989 -1028 419 -0.001040740740740735 -1028 420 -0.009259259259259259 -1028 424 -4.336808689942018e-18 -1028 425 -0.002362962962962963 -1028 426 -0.03703703703703709 -1028 430 0.000500000000000003 -1028 431 -0.001040740740740759 -1028 432 -0.009259259259259287 -1028 1024 -4.336808689942018e-19 -1028 1025 0.0002814814814814805 -1028 1026 -4.163336342344337e-17 -1028 1027 -5.963111948670274e-18 -1028 1028 0.008325925925925929 -1028 1029 -1.873501354054952e-16 -1028 1030 6.613633252161577e-18 -1028 1031 0.0002814814814814729 -1028 1032 -1.682681771697503e-16 -1028 1432 0.0004999999999999983 -1028 1433 -0.00104074074074073 -1028 1434 0.009259259259259233 -1028 1435 1.409462824231156e-18 -1028 1436 -0.002362962962962958 -1028 1437 0.03703703703703702 -1028 1438 -0.0004999999999999998 -1028 1439 -0.001040740740740737 -1028 1440 0.009259259259259222 -1029 418 -0.01296296296296289 -1029 419 -0.0134259259259259 -1029 420 -0.1551783264746219 -1029 424 -2.185751579730777e-16 -1029 425 -0.02870370370370351 -1029 426 -0.2040466392318244 -1029 430 0.01296296296296311 -1029 431 -0.01342592592592617 -1029 432 -0.1551783264746251 -1029 1024 -0.02407407407407418 -1029 1025 2.255140518769849e-17 -1029 1026 -0.106310013717421 -1029 1027 1.769417945496343e-16 -1029 1029 1.241426611796983 -1029 1030 0.024074074074074 -1029 1031 -2.42861286636753e-17 -1029 1032 -0.1063100137174225 -1029 1432 -0.01296296296296289 -1029 1433 0.01342592592592583 -1029 1434 -0.1551783264746217 -1029 1435 -7.459310946700271e-17 -1029 1436 0.02870370370370384 -1029 1437 -0.204046639231824 -1029 1438 0.01296296296296296 -1029 1439 0.01342592592592592 -1029 1440 -0.1551783264746227 -1030 424 -0.0009703703703703605 -1030 425 -0.0004999999999999969 -1030 426 -0.008333333333333323 -1030 430 -0.0002814814814814747 -1030 431 -4.553649124439119e-18 -1030 432 2.081668171172169e-17 -1030 436 -0.0009703703703703799 -1030 437 0.0005000000000000026 -1030 438 0.008333333333333335 -1030 1027 -0.001659259259259268 -1030 1028 6.613633252161577e-18 -1030 1029 -0.03333333333333335 -1030 1030 0.007762962962962965 -1030 1031 -1.192622389734055e-17 -1030 1033 -0.001659259259259268 -1030 1034 3.577867169202165e-18 -1030 1035 0.03333333333333333 -1030 1435 -0.0009703703703703724 -1030 1436 0.0005000000000000004 -1030 1437 -0.008333333333333351 -1030 1438 -0.0002814814814814711 -1030 1439 2.168404344971009e-19 -1030 1440 -3.469446951953614e-18 -1030 1441 -0.0009703703703703714 -1030 1442 -0.0005000000000000001 -1030 1443 0.008333333333333338 -1031 424 -0.0004999999999999968 -1031 425 -0.001040740740740718 -1031 426 -0.00925925925925912 -1031 430 -4.445228907190568e-18 -1031 431 -0.002362962962962954 -1031 432 -0.03703703703703685 -1031 436 0.0005000000000000025 -1031 437 -0.001040740740740756 -1031 438 -0.009259259259259302 -1031 1027 6.396792817664476e-18 -1031 1028 0.0002814814814814731 -1031 1029 2.012279232133096e-16 -1031 1030 -1.20346441145891e-17 -1031 1031 0.008325925925925914 -1031 1032 1.734723475976807e-16 -1031 1033 3.686287386450715e-18 -1031 1034 0.0002814814814814746 -1031 1035 -7.806255641895632e-17 -1031 1435 0.0005000000000000003 -1031 1436 -0.001040740740740742 -1031 1437 0.009259259259259241 -1031 1438 4.336808689942018e-19 -1031 1439 -0.00236296296296295 -1031 1440 0.03703703703703695 -1031 1441 -0.0005000000000000002 -1031 1442 -0.001040740740740741 -1031 1443 0.009259259259259248 -1032 424 -0.01296296296296284 -1032 425 -0.01342592592592562 -1032 426 -0.1551783264746202 -1032 430 -1.821459649775647e-16 -1032 431 -0.0287037037037036 -1032 432 -0.2040466392318227 -1032 436 0.01296296296296306 -1032 437 -0.01342592592592613 -1032 438 -0.155178326474624 -1032 1027 -0.02407407407407422 -1032 1028 -8.153200337090993e-17 -1032 1029 -0.1063100137174225 -1032 1030 1.994931997373328e-16 -1032 1031 -9.8879238130678e-17 -1032 1032 1.241426611796979 -1032 1033 0.02407407407407401 -1032 1034 1.561251128379126e-17 -1032 1035 -0.1063100137174219 -1032 1435 -0.01296296296296299 -1032 1436 0.01342592592592598 -1032 1437 -0.1551783264746232 -1032 1438 2.602085213965211e-17 -1032 1439 0.02870370370370361 -1032 1440 -0.2040466392318223 -1032 1441 0.01296296296296295 -1032 1442 0.01342592592592591 -1032 1443 -0.1551783264746223 -1033 430 -0.0009703703703703617 -1033 431 -0.0004999999999999974 -1033 432 -0.008333333333333321 -1033 436 -0.0002814814814814802 -1033 437 -4.445228907190568e-18 -1033 438 1.040834085586084e-17 -1033 442 -0.000970370370370379 -1033 443 0.0005000000000000026 -1033 444 0.008333333333333333 -1033 1030 -0.001659259259259268 -1033 1031 3.686287386450715e-18 -1033 1032 -0.03333333333333334 -1033 1033 0.007762962962962975 -1033 1034 -1.008308020411519e-17 -1033 1035 -1.040834085586084e-17 -1033 1036 -0.00165925925925927 -1033 1037 5.204170427930421e-18 -1033 1038 0.03333333333333334 -1033 1438 -0.0009703703703703712 -1033 1439 0.0004999999999999999 -1033 1440 -0.008333333333333349 -1033 1441 -0.0002814814814814742 -1033 1442 5.421010862427522e-19 -1033 1443 -1.214306433183765e-17 -1033 1444 -0.0009703703703703711 -1033 1445 -0.0004999999999999999 -1033 1446 0.008333333333333335 -1034 430 -0.0004999999999999974 -1034 431 -0.001040740740740724 -1034 432 -0.009259259259259172 -1034 436 -4.662069341687669e-18 -1034 437 -0.002362962962962961 -1034 438 -0.0370370370370371 -1034 442 0.0005000000000000028 -1034 443 -0.001040740740740759 -1034 444 -0.009259259259259373 -1034 1030 3.469446951953614e-18 -1034 1031 0.0002814814814814745 -1034 1032 1.43982048506075e-16 -1034 1033 -1.019150042136374e-17 -1034 1034 0.008325925925925931 -1034 1035 3.816391647148976e-17 -1034 1036 5.204170427930421e-18 -1034 1037 0.0002814814814814679 -1034 1038 -2.393918396847994e-16 -1034 1438 0.0004999999999999998 -1034 1439 -0.001040740740740737 -1034 1440 0.009259259259259229 -1034 1441 7.589415207398531e-19 -1034 1442 -0.002362962962962953 -1034 1443 0.03703703703703695 -1034 1444 -0.0005 -1034 1445 -0.00104074074074074 -1034 1446 0.009259259259259189 -1035 430 -0.01296296296296283 -1035 431 -0.01342592592592569 -1035 432 -0.1551783264746202 -1035 436 -1.97758476261356e-16 -1035 437 -0.02870370370370361 -1035 438 -0.2040466392318234 -1035 442 0.01296296296296304 -1035 443 -0.01342592592592613 -1035 444 -0.1551783264746243 -1035 1030 -0.02407407407407423 -1035 1031 -3.295974604355933e-17 -1035 1032 -0.1063100137174219 -1035 1033 2.584737979205443e-16 -1035 1034 -6.938893903907228e-18 -1035 1035 1.241426611796979 -1035 1036 0.02407407407407397 -1035 1037 2.949029909160572e-17 -1035 1038 -0.1063100137174226 -1035 1438 -0.01296296296296296 -1035 1439 0.01342592592592586 -1035 1440 -0.155178326474622 -1035 1441 -6.938893903907228e-18 -1035 1442 0.02870370370370355 -1035 1443 -0.2040466392318224 -1035 1444 0.01296296296296295 -1035 1445 0.01342592592592604 -1035 1446 -0.1551783264746222 -1036 436 -0.0009703703703703614 -1036 437 -0.0004999999999999974 -1036 438 -0.008333333333333333 -1036 442 -0.0002814814814814697 -1036 443 -1.517883041479706e-18 -1036 448 -0.0009703703703703695 -1036 449 0.0004999999999999989 -1036 450 0.008333333333333333 -1036 1033 -0.00165925925925927 -1036 1034 5.204170427930421e-18 -1036 1035 -0.03333333333333333 -1036 1036 0.007762962962962973 -1036 1037 -1.301042606982605e-18 -1036 1038 -1.040834085586084e-17 -1036 1039 -0.001659259259259292 -1036 1040 -3.903127820947816e-18 -1036 1041 0.03333333333333334 -1036 1441 -0.000970370370370371 -1036 1442 0.0005 -1036 1443 -0.008333333333333331 -1036 1444 -0.000281481481481464 -1036 1445 9.75781955236954e-19 -1036 1446 -3.469446951953614e-18 -1036 1447 -0.0009703703703703761 -1036 1448 -0.000500000000000001 -1036 1449 0.008333333333333335 -1037 436 -0.0004999999999999972 -1037 437 -0.001040740740740724 -1037 438 -0.009259259259259228 -1037 442 -1.734723475976807e-18 -1037 443 -0.002362962962962948 -1037 444 -0.03703703703703681 -1037 448 0.000499999999999999 -1037 449 -0.00104074074074073 -1037 450 -0.009259259259259167 -1037 1033 5.312590645178972e-18 -1037 1034 0.0002814814814814679 -1037 1035 5.724587470723463e-17 -1037 1036 -1.301042606982605e-18 -1037 1037 0.008325925925925903 -1037 1038 4.579669976578771e-16 -1037 1039 -4.011548038196366e-18 -1037 1040 0.0002814814814814534 -1037 1041 1.387778780781446e-17 -1037 1441 0.0005 -1037 1442 -0.00104074074074074 -1037 1443 0.009259259259259188 -1037 1444 1.084202172485504e-18 -1037 1445 -0.00236296296296294 -1037 1446 0.03703703703703687 -1037 1447 -0.000500000000000001 -1037 1448 -0.001040740740740743 -1037 1449 0.009259259259259158 -1038 436 -0.01296296296296282 -1038 437 -0.01342592592592565 -1038 438 -0.1551783264746202 -1038 442 -8.500145032286355e-17 -1038 443 -0.02870370370370388 -1038 444 -0.2040466392318215 -1038 448 0.0129629629629629 -1038 449 -0.01342592592592568 -1038 450 -0.1551783264746213 -1038 1033 -0.02407407407407421 -1038 1034 -1.734723475976807e-18 -1038 1035 -0.1063100137174226 -1038 1036 1.127570259384925e-16 -1038 1037 1.040834085586084e-17 -1038 1038 1.241426611796977 -1038 1039 0.0240740740740741 -1038 1040 -2.255140518769849e-17 -1038 1041 -0.1063100137174254 -1038 1441 -0.01296296296296295 -1038 1442 0.01342592592592604 -1038 1443 -0.1551783264746222 -1038 1444 -3.989863994746656e-17 -1038 1445 0.02870370370370315 -1038 1446 -0.2040466392318205 -1038 1447 0.01296296296296299 -1038 1448 0.01342592592592603 -1038 1449 -0.1551783264746228 -1039 442 -0.0009703703703703761 -1039 443 -0.000500000000000001 -1039 444 -0.008333333333333333 -1039 448 -0.0002814814814814641 -1039 449 -9.75781955236954e-19 -1039 454 -0.0009703703703703777 -1039 455 0.000500000000000002 -1039 456 0.008333333333333335 -1039 1036 -0.001659259259259292 -1039 1037 -4.119968255444917e-18 -1039 1038 -0.03333333333333333 -1039 1039 0.007762962962962975 -1039 1040 -3.794707603699266e-18 -1039 1041 -1.387778780781446e-17 -1039 1042 -0.001659259259259267 -1039 1043 7.914675859144182e-18 -1039 1044 0.03333333333333334 -1039 1444 -0.0009703703703703695 -1039 1445 0.0004999999999999989 -1039 1446 -0.008333333333333331 -1039 1447 -0.0002814814814814637 -1039 1448 -9.75781955236954e-19 -1039 1449 -3.469446951953614e-18 -1039 1450 -0.0009703703703703645 -1039 1451 -0.000499999999999998 -1039 1452 0.008333333333333335 -1040 442 -0.0005000000000000011 -1040 443 -0.001040740740740743 -1040 444 -0.009259259259259222 -1040 448 -1.084202172485504e-18 -1040 449 -0.002362962962962941 -1040 450 -0.03703703703703688 -1040 454 0.0005000000000000022 -1040 455 -0.001040740740740753 -1040 456 -0.009259259259259287 -1040 1036 -3.903127820947816e-18 -1040 1037 0.0002814814814814535 -1040 1038 -2.0643209364124e-16 -1040 1039 -3.903127820947816e-18 -1040 1040 0.008325925925925903 -1040 1041 -2.255140518769849e-16 -1040 1042 7.914675859144182e-18 -1040 1043 0.0002814814814814748 -1040 1044 -1.682681771697503e-16 -1040 1444 0.0004999999999999989 -1040 1445 -0.001040740740740729 -1040 1446 0.009259259259259103 -1040 1447 -9.75781955236954e-19 -1040 1448 -0.00236296296296294 -1040 1449 0.0370370370370367 -1040 1450 -0.0004999999999999981 -1040 1451 -0.001040740740740726 -1040 1452 0.009259259259259186 -1041 442 -0.01296296296296299 -1041 443 -0.01342592592592586 -1041 444 -0.1551783264746228 -1041 448 -4.163336342344337e-17 -1041 449 -0.02870370370370319 -1041 450 -0.2040466392318206 -1041 454 0.01296296296296303 -1041 455 -0.01342592592592611 -1041 456 -0.1551783264746237 -1041 1036 -0.02407407407407412 -1041 1038 -0.1063100137174254 -1041 1039 1.387778780781446e-17 -1041 1040 -8.326672684688674e-17 -1041 1041 1.241426611796977 -1041 1042 0.0240740740740741 -1041 1043 2.081668171172169e-17 -1041 1044 -0.1063100137174218 -1041 1444 -0.01296296296296291 -1041 1445 0.01342592592592586 -1041 1446 -0.1551783264746213 -1041 1447 4.336808689942018e-17 -1041 1448 0.02870370370370369 -1041 1449 -0.2040466392318205 -1041 1450 0.01296296296296286 -1041 1451 0.01342592592592569 -1041 1452 -0.1551783264746206 -1042 448 -0.0009703703703703643 -1042 449 -0.0004999999999999981 -1042 450 -0.008333333333333333 -1042 454 -0.0002814814814815044 -1042 455 -3.035766082959412e-18 -1042 456 -1.734723475976807e-18 -1042 460 -0.0009703703703703693 -1042 461 0.0005000000000000011 -1042 462 0.008333333333333335 -1042 1039 -0.001659259259259267 -1042 1040 7.914675859144182e-18 -1042 1041 -0.03333333333333333 -1042 1042 0.007762962962962947 -1042 1043 -1.170938346284345e-17 -1042 1044 -1.387778780781446e-17 -1042 1045 -0.001659259259259198 -1042 1046 3.794707603699266e-18 -1042 1047 0.03333333333333334 -1042 1447 -0.0009703703703703777 -1042 1448 0.0005000000000000021 -1042 1449 -0.008333333333333331 -1042 1450 -0.0002814814814815042 -1042 1451 -3.144186300207963e-18 -1042 1452 -1.734723475976807e-18 -1042 1453 -0.0009703703703703628 -1042 1454 -0.0004999999999999989 -1042 1455 0.008333333333333335 -1043 448 -0.000499999999999998 -1043 449 -0.001040740740740726 -1043 450 -0.009259259259259177 -1043 454 -3.252606517456513e-18 -1043 455 -0.002362962962962994 -1043 456 -0.03703703703703732 -1043 460 0.0005000000000000009 -1043 461 -0.001040740740740756 -1043 462 -0.009259259259259479 -1043 1039 7.914675859144182e-18 -1043 1040 0.0002814814814814748 -1043 1041 2.775557561562891e-16 -1043 1042 -1.170938346284345e-17 -1043 1043 0.008325925925925955 -1043 1044 1.283695372222837e-16 -1043 1045 4.011548038196366e-18 -1043 1046 0.0002814814814815338 -1043 1047 -1.838806884535416e-16 -1043 1447 0.000500000000000002 -1043 1448 -0.001040740740740753 -1043 1449 0.009259259259259297 -1043 1450 -3.035766082959412e-18 -1043 1451 -0.002362962962962993 -1043 1452 0.03703703703703738 -1043 1453 -0.0004999999999999989 -1043 1454 -0.001040740740740743 -1043 1455 0.009259259259259401 -1044 448 -0.01296296296296286 -1044 449 -0.01342592592592575 -1044 450 -0.1551783264746207 -1044 454 -1.994931997373328e-16 -1044 455 -0.02870370370370416 -1044 456 -0.2040466392318294 -1044 460 0.01296296296296306 -1044 461 -0.01342592592592612 -1044 462 -0.1551783264746258 -1044 1039 -0.02407407407407412 -1044 1040 -2.602085213965211e-17 -1044 1041 -0.1063100137174218 -1044 1042 1.595945597898663e-16 -1044 1043 1.387778780781446e-17 -1044 1044 1.241426611796989 -1044 1045 0.02407407407407396 -1044 1046 1.387778780781446e-17 -1044 1047 -0.1063100137174137 -1044 1447 -0.01296296296296303 -1044 1448 0.01342592592592605 -1044 1449 -0.1551783264746237 -1044 1450 5.551115123125783e-17 -1044 1451 0.02870370370370394 -1044 1452 -0.2040466392318294 -1044 1453 0.01296296296296298 -1044 1454 0.01342592592592604 -1044 1455 -0.1551783264746242 -1045 454 -0.0009703703703703627 -1045 455 -0.000499999999999999 -1045 456 -0.008333333333333333 -1045 460 -0.0002814814814814935 -1045 461 -1.626303258728257e-18 -1045 462 -1.734723475976807e-18 -1045 466 -0.000970370370370375 -1045 467 0.0005000000000000007 -1045 468 0.008333333333333333 -1045 1042 -0.001659259259259198 -1045 1043 4.011548038196366e-18 -1045 1044 -0.03333333333333333 -1045 1045 0.007762962962962954 -1045 1046 -6.722053469410127e-18 -1045 1047 -6.938893903907228e-18 -1045 1048 -0.001659259259259292 -1045 1049 2.710505431213761e-18 -1045 1050 0.03333333333333334 -1045 1450 -0.0009703703703703694 -1045 1451 0.0005000000000000009 -1045 1452 -0.008333333333333333 -1045 1453 -0.0002814814814814933 -1045 1454 -1.517883041479706e-18 -1045 1455 -3.469446951953614e-18 -1045 1456 -0.0009703703703703705 -1045 1457 -0.0004999999999999994 -1045 1458 0.008333333333333335 -1046 454 -0.0004999999999999989 -1046 455 -0.001040740740740743 -1046 456 -0.009259259259259424 -1046 460 -1.409462824231156e-18 -1046 461 -0.002362962962962979 -1046 462 -0.03703703703703717 -1046 466 0.0005000000000000008 -1046 467 -0.001040740740740741 -1046 468 -0.009259259259259198 -1046 1042 3.794707603699266e-18 -1046 1043 0.000281481481481534 -1046 1044 3.642919299551295e-17 -1046 1045 -6.830473686658678e-18 -1046 1046 0.008325925925925941 -1046 1047 1.422473250300982e-16 -1046 1048 2.49366499671666e-18 -1046 1049 0.0002814814814814535 -1046 1050 -1.058181320345852e-16 -1046 1450 0.0005000000000000011 -1046 1451 -0.001040740740740756 -1046 1452 0.009259259259259457 -1046 1453 -1.734723475976807e-18 -1046 1454 -0.002362962962962978 -1046 1455 0.03703703703703724 -1046 1456 -0.0004999999999999994 -1046 1457 -0.001040740740740732 -1046 1458 0.009259259259259129 -1047 454 -0.01296296296296298 -1047 455 -0.01342592592592594 -1047 456 -0.1551783264746243 -1047 460 5.204170427930421e-18 -1047 461 -0.02870370370370399 -1047 462 -0.2040466392318275 -1047 466 0.01296296296296297 -1047 467 -0.01342592592592588 -1047 468 -0.1551783264746226 -1047 1042 -0.02407407407407396 -1047 1043 -1.387778780781446e-17 -1047 1044 -0.1063100137174136 -1047 1045 -1.405126015541214e-16 -1047 1046 1.908195823574488e-17 -1047 1047 1.241426611796988 -1047 1048 0.0240740740740741 -1047 1049 1.734723475976807e-18 -1047 1050 -0.1063100137174254 -1047 1450 -0.01296296296296307 -1047 1451 0.01342592592592621 -1047 1452 -0.1551783264746258 -1047 1453 1.491862189340054e-16 -1047 1454 0.02870370370370376 -1047 1455 -0.2040466392318274 -1047 1456 0.01296296296296292 -1047 1457 0.01342592592592583 -1047 1458 -0.1551783264746215 -1048 460 -0.0009703703703703707 -1048 461 -0.0004999999999999994 -1048 462 -0.008333333333333333 -1048 466 -0.0002814814814814642 -1048 467 -3.035766082959412e-18 -1048 472 -0.0009703703703703787 -1048 473 0.0005000000000000024 -1048 474 0.008333333333333335 -1048 1045 -0.001659259259259292 -1048 1046 2.49366499671666e-18 -1048 1047 -0.03333333333333333 -1048 1048 0.007762962962962975 -1048 1049 -1.170938346284345e-17 -1048 1050 -1.387778780781446e-17 -1048 1051 -0.001659259259259267 -1048 1052 9.215718466126788e-18 -1048 1053 0.03333333333333334 -1048 1453 -0.000970370370370375 -1048 1454 0.0005000000000000007 -1048 1455 -0.008333333333333331 -1048 1456 -0.0002814814814814638 -1048 1457 -3.035766082959412e-18 -1048 1458 -3.469446951953614e-18 -1048 1459 -0.0009703703703703633 -1048 1460 -0.0004999999999999976 -1048 1461 0.008333333333333335 -1049 460 -0.0004999999999999995 -1049 461 -0.001040740740740732 -1049 462 -0.009259259259259162 -1049 466 -3.144186300207963e-18 -1049 467 -0.00236296296296294 -1049 468 -0.03703703703703686 -1049 472 0.0005000000000000025 -1049 473 -0.001040740740740755 -1049 474 -0.009259259259259304 -1049 1045 2.818925648462312e-18 -1049 1046 0.0002814814814814535 -1049 1047 3.989863994746656e-17 -1049 1048 -1.170938346284345e-17 -1049 1049 0.008325925925925903 -1049 1050 -1.179611963664229e-16 -1049 1051 9.215718466126788e-18 -1049 1052 0.0002814814814814749 -1049 1053 -2.272487753529617e-16 -1049 1453 0.0005000000000000007 -1049 1454 -0.001040740740740741 -1049 1455 0.009259259259259165 -1049 1456 -3.035766082959412e-18 -1049 1457 -0.00236296296296294 -1049 1458 0.03703703703703673 -1049 1459 -0.0004999999999999977 -1049 1460 -0.001040740740740724 -1049 1461 0.009259259259259172 -1050 460 -0.01296296296296292 -1050 461 -0.01342592592592576 -1050 462 -0.1551783264746215 -1050 466 -1.249000902703301e-16 -1050 467 -0.02870370370370328 -1050 468 -0.2040466392318206 -1050 472 0.01296296296296304 -1050 473 -0.01342592592592612 -1050 474 -0.155178326474624 -1050 1045 -0.02407407407407412 -1050 1046 -1.561251128379126e-17 -1050 1047 -0.1063100137174254 -1050 1048 1.387778780781446e-17 -1050 1049 -7.28583859910259e-17 -1050 1050 1.241426611796977 -1050 1051 0.0240740740740741 -1050 1052 2.42861286636753e-17 -1050 1053 -0.1063100137174218 -1050 1453 -0.01296296296296297 -1050 1454 0.01342592592592595 -1050 1455 -0.1551783264746225 -1050 1456 1.249000902703301e-16 -1050 1457 0.02870370370370359 -1050 1458 -0.2040466392318205 -1050 1459 0.01296296296296285 -1050 1460 0.01342592592592568 -1050 1461 -0.1551783264746203 -1051 466 -0.0009703703703703633 -1051 467 -0.0004999999999999977 -1051 468 -0.008333333333333333 -1051 472 -0.0002814814814814748 -1051 473 3.252606517456513e-19 -1051 474 -1.734723475976807e-18 -1051 478 -0.0009703703703703621 -1051 479 0.0004999999999999974 -1051 480 0.008333333333333335 -1051 1048 -0.001659259259259267 -1051 1049 9.215718466126788e-18 -1051 1050 -0.03333333333333333 -1051 1051 0.007762962962962968 -1051 1052 1.409462824231156e-18 -1051 1053 -1.387778780781446e-17 -1051 1054 -0.001659259259259267 -1051 1055 -1.062518129035794e-17 -1051 1056 0.03333333333333334 -1051 1456 -0.0009703703703703789 -1051 1457 0.0005000000000000024 -1051 1458 -0.008333333333333331 -1051 1459 -0.0002814814814814745 -1051 1460 2.168404344971009e-19 -1051 1461 -3.469446951953614e-18 -1051 1462 -0.00097037037037038 -1051 1463 -0.0005000000000000026 -1051 1464 0.008333333333333335 -1052 466 -0.0004999999999999976 -1052 467 -0.001040740740740724 -1052 468 -0.009259259259259172 -1052 472 1.084202172485504e-19 -1052 473 -0.002362962962962955 -1052 474 -0.03703703703703684 -1052 478 0.0004999999999999974 -1052 479 -0.001040740740740722 -1052 480 -0.009259259259259169 -1052 1048 9.215718466126788e-18 -1052 1049 0.0002814814814814748 -1052 1050 2.914335439641036e-16 -1052 1051 1.409462824231156e-18 -1052 1052 0.008325925925925917 -1052 1053 5.724587470723463e-16 -1052 1054 -1.073360150760649e-17 -1052 1055 0.0002814814814814749 -1052 1056 3.070460552478949e-16 -1052 1456 0.0005000000000000024 -1052 1457 -0.001040740740740755 -1052 1458 0.0092592592592593 -1052 1459 4.336808689942018e-19 -1052 1460 -0.002362962962962954 -1052 1461 0.03703703703703706 -1052 1462 -0.0005000000000000026 -1052 1463 -0.001040740740740757 -1052 1464 0.009259259259259304 -1053 466 -0.01296296296296285 -1053 467 -0.01342592592592571 -1053 468 -0.1551783264746204 -1053 472 1.561251128379126e-17 -1053 473 -0.02870370370370402 -1053 474 -0.2040466392318225 -1053 478 0.01296296296296283 -1053 479 -0.01342592592592566 -1053 480 -0.1551783264746201 -1053 1048 -0.02407407407407412 -1053 1049 -3.122502256758253e-17 -1053 1050 -0.1063100137174218 -1053 1051 1.734723475976807e-17 -1053 1052 1.734723475976807e-18 -1053 1053 1.241426611796977 -1053 1054 0.0240740740740741 -1053 1055 -3.642919299551295e-17 -1053 1056 -0.1063100137174218 -1053 1456 -0.01296296296296305 -1053 1457 0.01342592592592609 -1053 1458 -0.155178326474624 -1053 1459 -1.040834085586084e-17 -1053 1460 0.02870370370370322 -1053 1461 -0.2040466392318224 -1053 1462 0.01296296296296306 -1053 1463 0.01342592592592614 -1053 1464 -0.1551783264746242 -1054 472 -0.0009703703703703799 -1054 473 -0.0005000000000000027 -1054 474 -0.008333333333333333 -1054 478 -0.0002814814814814937 -1054 479 2.38524477946811e-18 -1054 480 -1.734723475976807e-18 -1054 484 -0.0009703703703703689 -1054 485 0.0005000000000000003 -1054 486 0.008333333333333333 -1054 1051 -0.001659259259259267 -1054 1052 -1.073360150760649e-17 -1054 1053 -0.03333333333333333 -1054 1054 0.007762962962962956 -1054 1055 9.324138683375338e-18 -1054 1056 -1.387778780781446e-17 -1054 1057 -0.001659259259259223 -1054 1058 1.409462824231156e-18 -1054 1059 0.03333333333333334 -1054 1459 -0.0009703703703703622 -1054 1460 0.0004999999999999974 -1054 1461 -0.008333333333333331 -1054 1462 -0.0002814814814814934 -1054 1463 2.276824562219559e-18 -1054 1464 -1.734723475976807e-18 -1054 1465 -0.0009703703703703667 -1054 1466 -0.0004999999999999997 -1054 1467 0.008333333333333335 -1055 472 -0.0005000000000000026 -1055 473 -0.001040740740740757 -1055 474 -0.009259259259259316 -1055 478 2.38524477946811e-18 -1055 479 -0.00236296296296298 -1055 480 -0.03703703703703728 -1055 484 0.0005000000000000003 -1055 485 -0.001040740740740748 -1055 486 -0.009259259259259377 -1055 1051 -1.062518129035794e-17 -1055 1052 0.0002814814814814749 -1055 1053 -2.844946500601964e-16 -1055 1054 9.324138683375338e-18 -1055 1055 0.008325925925925941 -1055 1056 -3.261280134836397e-16 -1055 1057 1.301042606982605e-18 -1055 1058 0.0002814814814815125 -1055 1059 -6.938893903907228e-17 -1055 1459 0.0004999999999999973 -1055 1460 -0.001040740740740722 -1055 1461 0.009259259259259156 -1055 1462 2.276824562219559e-18 -1055 1463 -0.002362962962962979 -1055 1464 0.03703703703703713 -1055 1465 -0.0004999999999999997 -1055 1466 -0.001040740740740744 -1055 1467 0.009259259259259356 -1056 472 -0.01296296296296306 -1056 473 -0.01342592592592613 -1056 474 -0.1551783264746242 -1056 478 2.42861286636753e-17 -1056 479 -0.02870370370370362 -1056 480 -0.2040466392318275 -1056 484 0.01296296296296303 -1056 485 -0.01342592592592605 -1056 486 -0.1551783264746252 -1056 1051 -0.02407407407407412 -1056 1052 2.42861286636753e-17 -1056 1053 -0.1063100137174218 -1056 1054 1.613292832658431e-16 -1056 1055 -2.775557561562891e-17 -1056 1056 1.241426611796988 -1056 1057 0.02407407407407396 -1056 1058 8.673617379884035e-18 -1056 1059 -0.1063100137174172 -1056 1459 -0.01296296296296284 -1056 1460 0.01342592592592566 -1056 1461 -0.1551783264746201 -1056 1462 -1.717376241217039e-16 -1056 1463 0.02870370370370412 -1056 1464 -0.2040466392318274 -1056 1465 0.01296296296296301 -1056 1466 0.01342592592592602 -1056 1467 -0.1551783264746246 -1057 478 -0.0009703703703703668 -1057 479 -0.0004999999999999998 -1057 480 -0.008333333333333333 -1057 484 -0.0002814814814814937 -1057 485 -2.168404344971009e-19 -1057 490 -0.000970370370370371 -1057 491 0.0005 -1057 492 0.008333333333333335 -1057 1054 -0.001659259259259223 -1057 1055 1.301042606982605e-18 -1057 1056 -0.03333333333333333 -1057 1057 0.007762962962962956 -1057 1058 -1.301042606982605e-18 -1057 1059 -1.040834085586084e-17 -1057 1060 -0.001659259259259267 -1057 1062 0.03333333333333334 -1057 1462 -0.0009703703703703688 -1057 1463 0.0005000000000000003 -1057 1464 -0.008333333333333333 -1057 1465 -0.0002814814814814931 -1057 1466 -4.336808689942018e-19 -1057 1467 -3.469446951953614e-18 -1057 1468 -0.0009703703703703711 -1057 1469 -0.0004999999999999999 -1057 1470 0.008333333333333335 -1058 478 -0.0004999999999999998 -1058 479 -0.001040740740740744 -1058 480 -0.009259259259259358 -1058 484 -3.252606517456513e-19 -1058 485 -0.002362962962962979 -1058 486 -0.03703703703703715 -1058 490 0.0005000000000000001 -1058 491 -0.00104074074074074 -1058 492 -0.009259259259259287 -1058 1054 1.409462824231156e-18 -1058 1055 0.0002814814814815126 -1058 1056 5.204170427930421e-18 -1058 1057 -1.301042606982605e-18 -1058 1058 0.008325925925925941 -1058 1059 2.255140518769849e-16 -1058 1060 -1.084202172485504e-19 -1058 1061 0.0002814814814814749 -1058 1062 -1.595945597898663e-16 -1058 1462 0.0005000000000000003 -1058 1463 -0.001040740740740748 -1058 1464 0.009259259259259375 -1058 1465 -3.252606517456513e-19 -1058 1466 -0.002362962962962978 -1058 1467 0.03703703703703726 -1058 1468 -0.0005 -1058 1469 -0.00104074074074074 -1058 1470 0.009259259259259189 -1059 478 -0.01296296296296301 -1059 479 -0.01342592592592599 -1059 480 -0.1551783264746247 -1059 484 6.418476861114186e-17 -1059 485 -0.02870370370370406 -1059 486 -0.2040466392318275 -1059 490 0.01296296296296294 -1059 491 -0.01342592592592576 -1059 492 -0.1551783264746222 -1059 1054 -0.02407407407407396 -1059 1056 -0.1063100137174172 -1059 1057 -1.35308431126191e-16 -1059 1058 1.908195823574488e-17 -1059 1059 1.241426611796988 -1059 1060 0.0240740740740741 -1059 1061 -2.42861286636753e-17 -1059 1062 -0.1063100137174218 -1059 1462 -0.01296296296296304 -1059 1463 0.01342592592592608 -1059 1464 -0.1551783264746251 -1059 1465 8.847089727481716e-17 -1059 1466 0.02870370370370369 -1059 1467 -0.2040466392318274 -1059 1468 0.01296296296296295 -1059 1469 0.01342592592592604 -1059 1470 -0.1551783264746222 -1060 484 -0.000970370370370371 -1060 485 -0.0005000000000000001 -1060 486 -0.008333333333333333 -1060 490 -0.0002814814814814643 -1060 491 -2.168404344971009e-19 -1060 492 -1.734723475976807e-18 -1060 496 -0.0009703703703703739 -1060 497 0.0005000000000000003 -1060 498 0.008333333333333333 -1060 1057 -0.001659259259259267 -1060 1058 -1.084202172485504e-19 -1060 1059 -0.03333333333333333 -1060 1060 0.007762962962962975 -1060 1061 -1.301042606982605e-18 -1060 1062 -1.040834085586084e-17 -1060 1063 -0.001659259259259292 -1060 1064 1.409462824231156e-18 -1060 1065 0.03333333333333334 -1060 1465 -0.000970370370370371 -1060 1466 0.0005 -1060 1467 -0.008333333333333331 -1060 1468 -0.000281481481481464 -1060 1469 -3.252606517456513e-19 -1060 1470 -3.469446951953614e-18 -1060 1471 -0.0009703703703703715 -1060 1472 -0.0004999999999999997 -1060 1473 0.008333333333333335 -1061 484 -0.0005 -1061 485 -0.00104074074074074 -1061 486 -0.009259259259259285 -1061 490 -3.252606517456513e-19 -1061 491 -0.002362962962962941 -1061 492 -0.03703703703703678 -1061 496 0.0005000000000000004 -1061 497 -0.001040740740740739 -1061 498 -0.009259259259259182 -1061 1058 0.0002814814814814749 -1061 1059 -1.595945597898663e-16 -1061 1060 -1.409462824231156e-18 -1061 1061 0.008325925925925905 -1061 1062 1.908195823574488e-16 -1061 1063 1.301042606982605e-18 -1061 1064 0.0002814814814814534 -1061 1065 -4.683753385137379e-17 -1061 1465 0.0005 -1061 1466 -0.00104074074074074 -1061 1467 0.009259259259259188 -1061 1468 -2.168404344971009e-19 -1061 1469 -0.00236296296296294 -1061 1470 0.03703703703703681 -1061 1471 -0.0004999999999999997 -1061 1472 -0.001040740740740734 -1061 1473 0.009259259259259143 -1062 484 -0.01296296296296295 -1062 485 -0.01342592592592576 -1062 486 -0.1551783264746222 -1062 490 -1.214306433183765e-17 -1062 491 -0.02870370370370354 -1062 492 -0.2040466392318206 -1062 496 0.01296296296296296 -1062 497 -0.01342592592592587 -1062 498 -0.1551783264746223 -1062 1057 -0.02407407407407412 -1062 1058 -2.255140518769849e-17 -1062 1059 -0.1063100137174218 -1062 1060 1.561251128379126e-17 -1062 1061 -3.989863994746656e-17 -1062 1062 1.241426611796977 -1062 1063 0.0240740740740741 -1062 1064 3.469446951953614e-18 -1062 1065 -0.1063100137174254 -1062 1465 -0.01296296296296295 -1062 1466 0.01342592592592604 -1062 1467 -0.1551783264746222 -1062 1468 1.561251128379126e-17 -1062 1469 0.02870370370370334 -1062 1470 -0.2040466392318205 -1062 1471 0.01296296296296293 -1062 1472 0.01342592592592584 -1062 1473 -0.1551783264746218 -1063 490 -0.0009703703703703718 -1063 491 -0.0004999999999999997 -1063 492 -0.008333333333333333 -1063 496 -0.0002814814814814654 -1063 497 -2.38524477946811e-18 -1063 502 -0.0009703703703703775 -1063 503 0.0005000000000000021 -1063 504 0.008333333333333335 -1063 1060 -0.001659259259259292 -1063 1061 1.301042606982605e-18 -1063 1062 -0.03333333333333333 -1063 1063 0.007762962962962975 -1063 1064 -9.107298248878237e-18 -1063 1065 -1.040834085586084e-17 -1063 1066 -0.001659259259259264 -1063 1067 7.806255641895632e-18 -1063 1068 0.03333333333333334 -1063 1468 -0.0009703703703703737 -1063 1469 0.0005000000000000002 -1063 1470 -0.008333333333333331 -1063 1471 -0.000281481481481465 -1063 1472 -2.276824562219559e-18 -1063 1473 -1.734723475976807e-18 -1063 1474 -0.0009703703703703641 -1063 1475 -0.000499999999999998 -1063 1476 0.008333333333333335 -1064 490 -0.0004999999999999998 -1064 491 -0.001040740740740734 -1064 492 -0.009259259259259165 -1064 496 -2.49366499671666e-18 -1064 497 -0.002362962962962942 -1064 498 -0.0370370370370369 -1064 502 0.0005000000000000022 -1064 503 -0.001040740740740754 -1064 504 -0.009259259259259302 -1064 1060 1.517883041479706e-18 -1064 1061 0.0002814814814814534 -1064 1062 2.42861286636753e-17 -1064 1063 -9.107298248878237e-18 -1064 1064 0.008325925925925905 -1064 1065 -1.387778780781446e-16 -1064 1066 7.914675859144182e-18 -1064 1067 0.0002814814814814774 -1064 1068 -1.578598363138894e-16 -1064 1468 0.0005000000000000002 -1064 1469 -0.001040740740740738 -1064 1470 0.009259259259259162 -1064 1471 -2.38524477946811e-18 -1064 1472 -0.002362962962962941 -1064 1473 0.03703703703703673 -1064 1474 -0.0004999999999999981 -1064 1475 -0.001040740740740727 -1064 1476 0.009259259259259189 -1065 490 -0.01296296296296293 -1065 491 -0.01342592592592581 -1065 492 -0.1551783264746218 -1065 496 -9.71445146547012e-17 -1065 497 -0.02870370370370325 -1065 498 -0.2040466392318208 -1065 502 0.01296296296296303 -1065 503 -0.01342592592592611 -1065 504 -0.1551783264746237 -1065 1060 -0.02407407407407412 -1065 1061 -6.938893903907228e-18 -1065 1062 -0.1063100137174254 -1065 1063 1.214306433183765e-17 -1065 1064 -1.040834085586084e-16 -1065 1065 1.241426611796977 -1065 1066 0.0240740740740741 -1065 1067 1.387778780781446e-17 -1065 1068 -0.1063100137174214 -1065 1468 -0.01296296296296296 -1065 1469 0.01342592592592591 -1065 1470 -0.1551783264746223 -1065 1471 9.8879238130678e-17 -1065 1472 0.02870370370370367 -1065 1473 -0.2040466392318207 -1065 1474 0.01296296296296286 -1065 1475 0.0134259259259257 -1065 1476 -0.1551783264746207 -1066 496 -0.0009703703703703642 -1066 497 -0.0004999999999999981 -1066 498 -0.008333333333333333 -1066 502 -0.0002814814814814761 -1066 503 -1.734723475976807e-18 -1066 504 -1.734723475976807e-18 -1066 508 -0.0009703703703703698 -1066 509 0.0004999999999999998 -1066 510 0.008333333333333335 -1066 1063 -0.001659259259259264 -1066 1064 7.914675859144182e-18 -1066 1065 -0.03333333333333333 -1066 1066 0.007762962962962968 -1066 1067 -6.505213034913027e-18 -1066 1068 -1.734723475976807e-17 -1066 1069 -0.001659259259259267 -1066 1070 -1.409462824231156e-18 -1066 1071 0.03333333333333334 -1066 1471 -0.0009703703703703774 -1066 1472 0.0005000000000000021 -1066 1473 -0.008333333333333333 -1066 1474 -0.0002814814814814758 -1066 1475 -1.843143693225358e-18 -1066 1476 -3.469446951953614e-18 -1066 1477 -0.0009703703703703722 -1066 1478 -0.0005000000000000002 -1066 1479 0.008333333333333335 -1067 496 -0.000499999999999998 -1067 497 -0.001040740740740727 -1067 498 -0.009259259259259191 -1067 502 -1.843143693225358e-18 -1067 503 -0.002362962962962956 -1067 504 -0.03703703703703691 -1067 508 0.0004999999999999998 -1067 509 -0.001040740740740737 -1067 510 -0.009259259259259273 -1067 1063 7.806255641895632e-18 -1067 1064 0.0002814814814814774 -1067 1065 2.862293735361732e-16 -1067 1066 -6.505213034913027e-18 -1067 1067 0.008325925925925919 -1067 1068 4.336808689942018e-16 -1067 1069 -1.409462824231156e-18 -1067 1070 0.0002814814814814749 -1067 1071 -1.006139616066548e-16 -1067 1471 0.0005000000000000021 -1067 1472 -0.001040740740740753 -1067 1473 0.009259259259259302 -1067 1474 -1.626303258728257e-18 -1067 1475 -0.002362962962962956 -1067 1476 0.03703703703703702 -1067 1477 -0.0005000000000000003 -1067 1478 -0.001040740740740742 -1067 1479 0.009259259259259203 -1068 496 -0.01296296296296286 -1068 497 -0.01342592592592575 -1068 498 -0.1551783264746207 -1068 502 -6.765421556309548e-17 -1068 503 -0.0287037037037039 -1068 504 -0.2040466392318227 -1068 508 0.01296296296296293 -1068 509 -0.01342592592592575 -1068 510 -0.1551783264746219 -1068 1063 -0.02407407407407412 -1068 1064 -3.295974604355933e-17 -1068 1065 -0.1063100137174214 -1068 1066 1.734723475976807e-17 -1068 1067 -3.989863994746656e-17 -1068 1068 1.241426611796978 -1068 1069 0.0240740740740741 -1068 1070 -2.255140518769849e-17 -1068 1071 -0.1063100137174218 -1068 1471 -0.01296296296296303 -1068 1472 0.01342592592592605 -1068 1473 -0.1551783264746237 -1068 1474 7.28583859910259e-17 -1068 1475 0.02870370370370338 -1068 1476 -0.2040466392318226 -1068 1477 0.01296296296296296 -1068 1478 0.01342592592592605 -1068 1479 -0.1551783264746224 -1069 502 -0.0009703703703703722 -1069 503 -0.0005000000000000004 -1069 504 -0.008333333333333333 -1069 508 -0.0002814814814814952 -1069 509 4.336808689942018e-19 -1069 510 -1.734723475976807e-18 -1069 514 -0.0009703703703703678 -1069 515 0.0005 -1069 516 0.008333333333333335 -1069 1066 -0.001659259259259267 -1069 1067 -1.409462824231156e-18 -1069 1068 -0.03333333333333333 -1069 1069 0.007762962962962966 -1069 1070 6.613633252161577e-18 -1069 1072 -0.001659259259259233 -1069 1073 -5.421010862427522e-18 -1069 1074 0.03333333333333334 -1069 1474 -0.0009703703703703699 -1069 1475 0.0004999999999999997 -1069 1476 -0.008333333333333331 -1069 1477 -0.0002814814814814829 -1069 1478 3.035766082959412e-18 -1069 1479 3.469446951953614e-18 -1069 1480 -0.0009703703703703782 -1069 1481 -0.0005000000000000026 -1069 1482 0.008333333333333338 -1070 502 -0.0005000000000000003 -1070 503 -0.001040740740740742 -1070 504 -0.00925925925925929 -1070 508 3.252606517456513e-19 -1070 509 -0.002362962962962982 -1070 510 -0.03703703703703721 -1070 514 0.0005 -1070 515 -0.001040740740740747 -1070 516 -0.009259259259259377 -1070 1066 -1.409462824231156e-18 -1070 1067 0.0002814814814814749 -1070 1068 -1.752070710736575e-16 -1070 1069 6.505213034913027e-18 -1070 1070 0.008325925925925955 -1070 1071 1.283695372222837e-16 -1070 1072 -5.421010862427522e-18 -1070 1073 0.0002814814814815038 -1070 1074 7.28583859910259e-17 -1070 1474 0.0004999999999999997 -1070 1475 -0.001040740740740737 -1070 1476 0.009259259259259184 -1070 1477 3.144186300207963e-18 -1070 1478 -0.002362962962962965 -1070 1479 0.03703703703703717 -1070 1480 -0.0005000000000000026 -1070 1481 -0.00104074074074076 -1070 1482 0.009259259259259375 -1071 502 -0.01296296296296296 -1071 503 -0.0134259259259258 -1071 504 -0.1551783264746224 -1071 508 -6.071532165918825e-17 -1071 509 -0.02870370370370397 -1071 510 -0.2040466392318278 -1071 514 0.01296296296296302 -1071 515 -0.01342592592592604 -1071 516 -0.1551783264746249 -1071 1066 -0.02407407407407412 -1071 1067 -2.081668171172169e-17 -1071 1068 -0.1063100137174218 -1071 1069 1.873501354054952e-16 -1071 1070 1.179611963664229e-16 -1071 1071 1.241426611796987 -1071 1072 0.02407407407407394 -1071 1073 1.058181320345852e-16 -1071 1074 -0.1063100137174183 -1071 1474 -0.01296296296296293 -1071 1475 0.01342592592592599 -1071 1476 -0.1551783264746219 -1071 1477 -2.0643209364124e-16 -1071 1478 0.02870370370370341 -1071 1479 -0.2040466392318247 -1071 1480 0.01296296296296313 -1071 1481 0.01342592592592623 -1071 1482 -0.1551783264746256 -1072 508 -0.0009703703703703678 -1072 509 -0.0005000000000000001 -1072 510 -0.008333333333333333 -1072 514 -0.000281481481481495 -1072 515 -2.276824562219559e-18 -1072 516 -1.734723475976807e-18 -1072 520 -0.0009703703703703787 -1072 521 0.0005000000000000024 -1072 522 0.008333333333333335 -1072 1069 -0.001659259259259233 -1072 1070 -5.421010862427522e-18 -1072 1071 -0.03333333333333334 -1072 1072 0.007762962962962958 -1072 1073 1.084202172485504e-19 -1072 1074 -1.387778780781446e-17 -1072 1075 -0.001659259259259261 -1072 1076 5.204170427930421e-18 -1072 1077 0.03333333333333335 -1072 1477 -0.0009703703703703608 -1072 1478 0.0004999999999999973 -1072 1479 -0.00833333333333334 -1072 1480 -0.0002814814814814915 -1072 1481 2.38524477946811e-18 -1072 1482 -3.469446951953614e-18 -1072 1483 -0.0009703703703703688 -1072 1484 -0.0004999999999999997 -1072 1485 0.008333333333333338 -1073 508 -0.0005000000000000001 -1073 509 -0.001040740740740747 -1073 510 -0.009259259259259377 -1073 514 -2.38524477946811e-18 -1073 515 -0.002362962962962981 -1073 516 -0.03703703703703731 -1073 520 0.0005000000000000025 -1073 521 -0.001040740740740755 -1073 522 -0.009259259259259304 -1073 1069 -5.204170427930421e-18 -1073 1070 0.0002814814814815038 -1073 1071 -2.255140518769849e-16 -1073 1073 0.008325925925925941 -1073 1074 -3.400058012914542e-16 -1073 1075 5.312590645178972e-18 -1073 1076 0.000281481481481479 -1073 1077 -9.367506770274758e-17 -1073 1477 0.0004999999999999974 -1073 1478 -0.001040740740740725 -1073 1479 0.009259259259259226 -1073 1480 2.276824562219559e-18 -1073 1481 -0.002362962962962976 -1073 1482 0.03703703703703712 -1073 1483 -0.0004999999999999998 -1073 1484 -0.00104074074074074 -1073 1485 0.009259259259259283 -1074 508 -0.01296296296296302 -1074 509 -0.01342592592592604 -1074 510 -0.1551783264746249 -1074 514 -2.255140518769849e-17 -1074 515 -0.02870370370370365 -1074 516 -0.2040466392318278 -1074 520 0.01296296296296304 -1074 521 -0.01342592592592612 -1074 522 -0.155178326474624 -1074 1069 -0.02407407407407414 -1074 1070 1.318389841742373e-16 -1074 1071 -0.1063100137174183 -1074 1072 2.081668171172169e-16 -1074 1073 1.214306433183765e-17 -1074 1074 1.241426611796989 -1074 1075 0.02407407407407394 -1074 1076 -9.8879238130678e-17 -1074 1077 -0.1063100137174215 -1074 1477 -0.01296296296296292 -1074 1478 0.01342592592592576 -1074 1479 -0.1551783264746215 -1074 1480 -2.081668171172169e-17 -1074 1481 0.02870370370370409 -1074 1482 -0.2040466392318271 -1074 1483 0.01296296296296294 -1074 1484 0.01342592592592593 -1074 1485 -0.1551783264746233 -1075 514 -0.0009703703703703633 -1075 515 -0.0004999999999999977 -1075 516 -0.008333333333333333 -1075 520 -0.0002814814814814817 -1075 521 3.252606517456513e-19 -1075 522 -3.469446951953614e-18 -1075 526 -0.000970370370370361 -1075 527 0.0004999999999999974 -1075 528 0.008333333333333335 -1075 1072 -0.001659259259259261 -1075 1073 5.312590645178972e-18 -1075 1074 -0.03333333333333333 -1075 1075 0.007762962962962958 -1075 1076 5.963111948670274e-18 -1075 1077 -1.040834085586084e-17 -1075 1078 -0.001659259259259251 -1075 1079 -1.051676107310939e-17 -1075 1080 0.03333333333333333 -1075 1480 -0.0009703703703703706 -1075 1481 0.0005000000000000003 -1075 1482 -0.008333333333333333 -1075 1483 -0.0002814814814814888 -1075 1484 1.734723475976807e-18 -1075 1485 1.040834085586084e-17 -1075 1486 -0.0009703703703703799 -1075 1487 -0.0005000000000000029 -1075 1488 0.008333333333333338 -1076 514 -0.0004999999999999976 -1076 515 -0.001040740740740724 -1076 516 -0.009259259259259172 -1076 520 1.084202172485504e-19 -1076 521 -0.002362962962962964 -1076 522 -0.0370370370370369 -1076 526 0.0004999999999999973 -1076 527 -0.001040740740740724 -1076 528 -0.0092592592592592 -1076 1072 5.312590645178972e-18 -1076 1073 0.000281481481481479 -1076 1074 2.046973701652632e-16 -1076 1075 6.071532165918825e-18 -1076 1076 0.008325925925925921 -1076 1077 5.100087019371813e-16 -1076 1078 -1.029992063861229e-17 -1076 1079 0.0002814814814814891 -1076 1080 2.758210326803123e-16 -1076 1480 0.0005000000000000002 -1076 1481 -0.001040740740740744 -1076 1482 0.009259259259259302 -1076 1483 1.843143693225358e-18 -1076 1484 -0.002362962962962974 -1076 1485 0.03703703703703727 -1076 1486 -0.000500000000000003 -1076 1487 -0.001040740740740761 -1076 1488 0.009259259259259368 -1077 514 -0.01296296296296285 -1077 515 -0.01342592592592571 -1077 516 -0.1551783264746204 -1077 520 1.387778780781446e-17 -1077 521 -0.02870370370370418 -1077 522 -0.2040466392318237 -1077 526 0.01296296296296283 -1077 527 -0.01342592592592569 -1077 528 -0.1551783264746202 -1077 1072 -0.02407407407407414 -1077 1073 -1.231653667943533e-16 -1077 1074 -0.1063100137174215 -1077 1075 2.255140518769849e-17 -1077 1076 4.683753385137379e-17 -1077 1077 1.241426611796979 -1077 1078 0.02407407407407409 -1077 1079 -3.122502256758253e-17 -1077 1080 -0.1063100137174194 -1077 1480 -0.01296296296296296 -1077 1481 0.01342592592592598 -1077 1482 -0.1551783264746238 -1077 1483 -8.326672684688674e-17 -1077 1484 0.02870370370370353 -1077 1485 -0.2040466392318258 -1077 1486 0.01296296296296306 -1077 1487 0.01342592592592617 -1077 1488 -0.1551783264746244 -1078 520 -0.0009703703703703788 -1078 521 -0.0005000000000000027 -1078 522 -0.008333333333333331 -1078 526 -0.0002814814814814694 -1078 527 2.059984127722458e-18 -1078 528 -1.734723475976807e-18 -1078 532 -0.0009703703703703753 -1078 533 0.0005000000000000007 -1078 534 0.008333333333333335 -1078 1075 -0.001659259259259251 -1078 1076 -1.029992063861229e-17 -1078 1077 -0.03333333333333332 -1078 1078 0.007762962962962972 -1078 1079 8.348356728138384e-18 -1078 1081 -0.001659259259259293 -1078 1082 2.710505431213761e-18 -1078 1083 0.03333333333333332 -1078 1483 -0.0009703703703703598 -1078 1484 0.0004999999999999972 -1078 1485 -0.008333333333333323 -1078 1486 -0.0002814814814814721 -1078 1487 1.517883041479706e-18 -1078 1488 1.040834085586084e-17 -1078 1489 -0.0009703703703703709 -1078 1490 -0.0004999999999999994 -1078 1491 0.008333333333333326 -1079 520 -0.0005000000000000026 -1079 521 -0.00104074074074076 -1079 522 -0.009259259259259347 -1079 526 2.168404344971009e-18 -1079 527 -0.002362962962962947 -1079 528 -0.03703703703703694 -1079 532 0.0005000000000000008 -1079 533 -0.00104074074074074 -1079 534 -0.009259259259259184 -1079 1075 -1.051676107310939e-17 -1079 1076 0.0002814814814814892 -1079 1077 -3.174543961037557e-16 -1079 1078 8.348356728138384e-18 -1079 1079 0.008325925925925912 -1079 1080 -3.677613769070831e-16 -1079 1081 2.49366499671666e-18 -1079 1082 0.0002814814814814523 -1079 1083 -1.162264728904461e-16 -1079 1483 0.0004999999999999972 -1079 1484 -0.001040740740740724 -1079 1485 0.009259259259259221 -1079 1486 1.517883041479706e-18 -1079 1487 -0.002362962962962951 -1079 1488 0.03703703703703681 -1079 1489 -0.0004999999999999994 -1079 1490 -0.001040740740740732 -1079 1491 0.009259259259259123 -1080 520 -0.01296296296296306 -1080 521 -0.01342592592592616 -1080 522 -0.1551783264746243 -1080 526 8.326672684688674e-17 -1080 527 -0.0287037037037033 -1080 528 -0.2040466392318215 -1080 532 0.01296296296296297 -1080 533 -0.01342592592592588 -1080 534 -0.1551783264746226 -1080 1075 -0.02407407407407411 -1080 1076 5.377642775528102e-17 -1080 1077 -0.1063100137174194 -1080 1078 6.938893903907228e-18 -1080 1079 3.469446951953614e-18 -1080 1080 1.241426611796976 -1080 1081 0.02407407407407409 -1080 1082 8.673617379884035e-18 -1080 1083 -0.1063100137174256 -1080 1483 -0.01296296296296282 -1080 1484 0.01342592592592567 -1080 1485 -0.15517832647462 -1080 1486 -7.112366251504909e-17 -1080 1487 0.02870370370370379 -1080 1488 -0.2040466392318218 -1080 1489 0.01296296296296291 -1080 1490 0.01342592592592582 -1080 1491 -0.1551783264746213 -1081 526 -0.000970370370370371 -1081 527 -0.0004999999999999995 -1081 528 -0.008333333333333333 -1081 532 -0.0002814814814814639 -1081 533 -2.602085213965211e-18 -1081 534 -1.734723475976807e-18 -1081 538 -0.0009703703703703775 -1081 539 0.0005000000000000021 -1081 540 0.008333333333333335 -1081 1078 -0.001659259259259293 -1081 1079 2.49366499671666e-18 -1081 1080 -0.03333333333333331 -1081 1081 0.007762962962962975 -1081 1082 -1.040834085586084e-17 -1081 1083 -6.938893903907228e-18 -1081 1084 -0.001659259259259263 -1081 1085 7.914675859144182e-18 -1081 1086 0.03333333333333332 -1081 1486 -0.0009703703703703752 -1081 1487 0.0005000000000000007 -1081 1488 -0.008333333333333325 -1081 1489 -0.000281481481481467 -1081 1490 -2.602085213965211e-18 -1081 1491 -3.469446951953614e-18 -1081 1492 -0.0009703703703703637 -1081 1493 -0.0004999999999999981 -1081 1494 0.008333333333333325 -1082 526 -0.0004999999999999995 -1082 527 -0.001040740740740731 -1082 528 -0.009259259259259146 -1082 532 -2.818925648462312e-18 -1082 533 -0.00236296296296294 -1082 534 -0.03703703703703685 -1082 538 0.0005000000000000022 -1082 539 -0.001040740740740754 -1082 540 -0.009259259259259302 -1082 1078 2.710505431213761e-18 -1082 1079 0.0002814814814814523 -1082 1080 2.949029909160572e-17 -1082 1081 -1.029992063861229e-17 -1082 1082 0.008325925925925903 -1082 1083 -1.07552855510562e-16 -1082 1084 7.914675859144182e-18 -1082 1085 0.0002814814814814789 -1082 1086 -1.578598363138894e-16 -1082 1486 0.0005000000000000008 -1082 1487 -0.001040740740740741 -1082 1488 0.009259259259259162 -1082 1489 -2.710505431213761e-18 -1082 1490 -0.002362962962962943 -1082 1491 0.03703703703703674 -1082 1492 -0.0004999999999999981 -1082 1493 -0.001040740740740727 -1082 1494 0.009259259259259189 -1083 526 -0.01296296296296292 -1083 527 -0.01342592592592576 -1083 528 -0.1551783264746215 -1083 532 -1.110223024625157e-16 -1083 533 -0.02870370370370329 -1083 534 -0.2040466392318206 -1083 538 0.01296296296296303 -1083 539 -0.01342592592592611 -1083 540 -0.1551783264746237 -1083 1078 -0.02407407407407409 -1083 1079 -6.938893903907228e-18 -1083 1080 -0.1063100137174256 -1083 1081 1.040834085586084e-17 -1083 1082 -7.28583859910259e-17 -1083 1083 1.241426611796976 -1083 1084 0.02407407407407409 -1083 1085 1.908195823574488e-17 -1083 1086 -0.1063100137174211 -1083 1486 -0.01296296296296296 -1083 1487 0.01342592592592594 -1083 1488 -0.1551783264746224 -1083 1489 1.144917494144693e-16 -1083 1490 0.02870370370370359 -1083 1491 -0.2040466392318208 -1083 1492 0.01296296296296285 -1083 1493 0.01342592592592569 -1083 1494 -0.1551783264746204 -1084 532 -0.0009703703703703642 -1084 533 -0.0004999999999999981 -1084 534 -0.008333333333333333 -1084 538 -0.0002814814814815043 -1084 539 -1.951563910473908e-18 -1084 540 -1.734723475976807e-18 -1084 544 -0.0009703703703703661 -1084 545 0.0005 -1084 546 0.008333333333333333 -1084 1081 -0.001659259259259263 -1084 1082 7.914675859144182e-18 -1084 1083 -0.03333333333333331 -1084 1084 0.007762962962962948 -1084 1085 -2.818925648462312e-18 -1084 1086 -1.387778780781446e-17 -1084 1087 -0.001659259259259204 -1084 1088 -5.746271514173174e-18 -1084 1089 0.03333333333333333 -1084 1489 -0.0009703703703703771 -1084 1490 0.0005000000000000021 -1084 1491 -0.008333333333333323 -1084 1492 -0.000281481481481494 -1084 1493 1.084202172485504e-18 -1084 1494 -1.387778780781446e-17 -1084 1495 -0.0009703703703703759 -1084 1496 -0.0005000000000000024 -1084 1497 0.008333333333333325 -1085 532 -0.000499999999999998 -1085 533 -0.001040740740740727 -1085 534 -0.009259259259259191 -1085 538 -2.168404344971009e-18 -1085 539 -0.002362962962962994 -1085 540 -0.03703703703703726 -1085 544 0.0005 -1085 545 -0.001040740740740749 -1085 546 -0.009259259259259463 -1085 1081 7.806255641895632e-18 -1085 1082 0.0002814814814814789 -1085 1083 2.8796409701215e-16 -1085 1084 -2.927345865710862e-18 -1085 1085 0.008325925925925954 -1085 1086 2.983724378680108e-16 -1085 1087 -5.421010862427522e-18 -1085 1088 0.000281481481481532 -1085 1089 -1.734723475976807e-17 -1085 1489 0.0005000000000000021 -1085 1490 -0.001040740740740754 -1085 1491 0.009259259259259302 -1085 1492 1.084202172485504e-18 -1085 1493 -0.002362962962962979 -1085 1494 0.03703703703703722 -1085 1495 -0.0005000000000000025 -1085 1496 -0.001040740740740762 -1085 1497 0.009259259259259391 -1086 532 -0.01296296296296286 -1086 533 -0.01342592592592575 -1086 534 -0.1551783264746207 -1086 538 -1.561251128379126e-16 -1086 539 -0.02870370370370434 -1086 540 -0.2040466392318294 -1086 544 0.01296296296296302 -1086 545 -0.01342592592592594 -1086 546 -0.155178326474625 -1086 1081 -0.02407407407407409 -1086 1082 -2.775557561562891e-17 -1086 1083 -0.1063100137174211 -1086 1084 2.012279232133096e-16 -1086 1085 1.006139616066548e-16 -1086 1086 1.241426611796985 -1086 1087 0.02407407407407391 -1086 1088 1.092875789865388e-16 -1086 1089 -0.1063100137174138 -1086 1489 -0.01296296296296302 -1086 1490 0.01342592592592605 -1086 1491 -0.1551783264746235 -1086 1492 -1.092875789865388e-16 -1086 1493 0.02870370370370355 -1086 1494 -0.2040466392318265 -1086 1495 0.01296296296296311 -1086 1496 0.01342592592592625 -1086 1497 -0.1551783264746254 -1087 538 -0.0009703703703703661 -1087 539 -0.0005 -1087 540 -0.008333333333333333 -1087 544 -0.0002814814814814988 -1087 545 -6.505213034913027e-19 -1087 550 -0.0009703703703703737 -1087 551 0.0005000000000000007 -1087 552 0.008333333333333333 -1087 1084 -0.001659259259259204 -1087 1085 -5.421010862427522e-18 -1087 1086 -0.03333333333333332 -1087 1087 0.007762962962962952 -1087 1088 8.673617379884035e-18 -1087 1089 -1.040834085586084e-17 -1087 1090 -0.001659259259259271 -1087 1091 -3.903127820947816e-18 -1087 1092 0.03333333333333334 -1087 1492 -0.0009703703703703608 -1087 1493 0.0004999999999999974 -1087 1494 -0.008333333333333333 -1087 1495 -0.0002814814814814989 -1087 1496 5.963111948670274e-18 -1087 1497 -1.387778780781446e-17 -1087 1498 -0.0009703703703703782 -1087 1499 -0.0005000000000000027 -1087 1500 0.008333333333333335 -1088 538 -0.0005 -1088 539 -0.001040740740740749 -1088 540 -0.009259259259259463 -1088 544 -6.505213034913027e-19 -1088 545 -0.002362962962962986 -1088 546 -0.03703703703703719 -1088 550 0.0005000000000000008 -1088 551 -0.001040740740740743 -1088 552 -0.009259259259259228 -1088 1084 -5.746271514173174e-18 -1088 1085 0.000281481481481532 -1088 1086 -3.122502256758253e-16 -1088 1087 8.565197162635485e-18 -1088 1088 0.008325925925925952 -1088 1089 6.938893903907228e-17 -1088 1090 -4.011548038196366e-18 -1088 1091 0.0002814814814814693 -1088 1092 4.510281037539698e-17 -1088 1492 0.0004999999999999976 -1088 1493 -0.001040740740740728 -1088 1494 0.009259259259259243 -1088 1495 5.854691731421724e-18 -1088 1496 -0.002362962962962986 -1088 1497 0.03703703703703737 -1088 1498 -0.0005000000000000027 -1088 1499 -0.00104074074074076 -1088 1500 0.009259259259259375 -1089 538 -0.01296296296296302 -1089 539 -0.01342592592592594 -1089 540 -0.155178326474625 -1089 544 4.683753385137379e-17 -1089 545 -0.02870370370370412 -1089 546 -0.2040466392318284 -1089 550 0.01296296296296297 -1089 551 -0.01342592592592591 -1089 552 -0.1551783264746226 -1089 1084 -0.02407407407407413 -1089 1085 1.179611963664229e-16 -1089 1086 -0.1063100137174138 -1089 1087 2.619432448724979e-16 -1089 1088 1.214306433183765e-16 -1089 1089 1.241426611796988 -1089 1090 0.02407407407407389 -1089 1091 -1.231653667943533e-16 -1089 1092 -0.106310013717423 -1089 1492 -0.01296296296296292 -1089 1493 0.01342592592592579 -1089 1494 -0.1551783264746216 -1089 1495 -1.52655665885959e-16 -1089 1496 0.02870370370370377 -1089 1497 -0.2040466392318284 -1089 1498 0.01296296296296305 -1089 1499 0.0134259259259263 -1089 1500 -0.1551783264746255 -1090 544 -0.0009703703703703694 -1090 545 -0.0004999999999999994 -1090 546 -0.008333333333333333 -1090 550 -0.0002814814814814534 -1090 551 6.505213034913027e-19 -1090 556 -0.0009703703703703695 -1090 557 0.0004999999999999987 -1090 558 0.008333333333333335 -1090 1087 -0.001659259259259271 -1090 1088 -4.011548038196366e-18 -1090 1089 -0.03333333333333333 -1090 1090 0.007762962962962977 -1090 1091 9.432558900623889e-18 -1090 1092 -1.040834085586084e-17 -1090 1093 -0.001659259259259308 -1090 1094 -5.421010862427522e-18 -1090 1095 0.03333333333333334 -1090 1495 -0.0009703703703703604 -1090 1496 0.0004999999999999974 -1090 1497 -0.008333333333333333 -1090 1498 -0.0002814814814814667 -1090 1499 3.903127820947816e-18 -1090 1500 -1.734723475976807e-18 -1091 544 -0.0004999999999999994 -1091 545 -0.001040740740740734 -1091 546 -0.009259259259259189 -1091 550 5.421010862427522e-19 -1091 551 -0.002362962962962926 -1091 552 -0.03703703703703658 -1091 556 0.0004999999999999986 -1091 557 -0.001040740740740725 -1091 558 -0.009259259259259123 -1091 1087 -3.903127820947816e-18 -1091 1088 0.0002814814814814693 -1091 1089 -1.769417945496343e-16 -1091 1090 9.324138683375338e-18 -1091 1091 0.008325925925925886 -1091 1092 3.920475055707584e-16 -1091 1093 -5.312590645178972e-18 -1091 1094 0.00028148148148144 -1091 1095 1.058181320345852e-16 -1091 1495 0.0004999999999999973 -1091 1496 -0.001040740740740725 -1091 1497 0.009259259259259229 -1091 1498 4.011548038196366e-18 -1091 1499 -0.002362962962962943 -1091 1500 0.0370370370370369 -1092 544 -0.01296296296296292 -1092 545 -0.01342592592592579 -1092 546 -0.1551783264746216 -1092 550 2.949029909160572e-17 -1092 551 -0.02870370370370352 -1092 552 -0.2040466392318186 -1092 556 0.01296296296296289 -1092 557 -0.01342592592592563 -1092 558 -0.1551783264746209 -1092 1087 -0.02407407407407418 -1092 1088 -9.8879238130678e-17 -1092 1089 -0.106310013717423 -1092 1090 7.632783294297951e-17 -1092 1091 -1.006139616066548e-16 -1092 1092 1.241426611796978 -1092 1093 0.02407407407407411 -1092 1094 -4.85722573273506e-17 -1092 1095 -0.1063100137174277 -1092 1495 -0.01296296296296284 -1092 1496 0.01342592592592582 -1092 1497 -0.1551783264746214 -1092 1498 -1.665334536937735e-16 -1092 1499 0.02870370370370334 -1092 1500 -0.2040466392318218 -1093 550 -0.0009703703703703783 -1093 551 -0.0005000000000000014 -1093 552 -0.008333333333333333 -1093 556 -0.0002814814814814748 -1093 557 1.084202172485504e-19 -1093 558 -3.469446951953614e-18 -1093 562 -0.0009703703703703723 -1093 563 0.0005000000000000013 -1093 564 0.008333333333333333 -1093 1090 -0.001659259259259308 -1093 1091 -5.312590645178972e-18 -1093 1092 -0.03333333333333333 -1093 1093 0.007762962962962967 -1093 1094 -1.084202172485504e-19 -1093 1095 -1.387778780781446e-17 -1093 1096 -0.001659259259259226 -1093 1097 5.421010862427522e-18 -1093 1098 0.03333333333333334 -1093 1498 -0.0009703703703703695 -1093 1499 0.0004999999999999986 -1093 1500 -0.008333333333333333 -1094 550 -0.0005000000000000013 -1094 551 -0.001040740740740743 -1094 552 -0.009259259259259196 -1094 556 1.084202172485504e-19 -1094 557 -0.002362962962962954 -1094 558 -0.03703703703703699 -1094 562 0.0005000000000000013 -1094 563 -0.001040740740740754 -1094 564 -0.009259259259259404 -1094 1090 -5.312590645178972e-18 -1094 1091 0.00028148148148144 -1094 1092 -1.89084858881472e-16 -1094 1093 -1.084202172485504e-19 -1094 1094 0.008325925925925915 -1094 1095 -8.326672684688674e-17 -1094 1096 5.204170427930421e-18 -1094 1097 0.0002814814814815098 -1094 1098 -2.567390744445674e-16 -1094 1498 0.0004999999999999987 -1094 1499 -0.001040740740740725 -1094 1500 0.009259259259259037 -1095 550 -0.01296296296296301 -1095 551 -0.01342592592592587 -1095 552 -0.155178326474623 -1095 556 5.204170427930421e-18 -1095 557 -0.0287037037037035 -1095 558 -0.2040466392318225 -1095 562 0.012962962962963 -1095 563 -0.01342592592592602 -1095 564 -0.1551783264746234 -1095 1090 -0.02407407407407411 -1095 1091 -1.734723475976807e-17 -1095 1092 -0.1063100137174277 -1095 1093 8.673617379884035e-18 -1095 1094 -6.245004513516506e-17 -1095 1095 1.241426611796977 -1095 1096 0.0240740740740741 -1095 1097 1.908195823574488e-17 -1095 1098 -0.106310013717416 -1095 1498 -0.01296296296296289 -1095 1499 0.0134259259259258 -1095 1500 -0.1551783264746209 -1096 556 -0.0009703703703703634 -1096 557 -0.0004999999999999986 -1096 558 -0.008333333333333331 -1096 562 -0.0002814814814815097 -1096 563 -2.059984127722458e-18 -1096 564 -1.734723475976807e-18 -1096 568 -0.0009703703703703701 -1096 569 0.0005000000000000007 -1096 570 0.008333333333333333 -1096 1093 -0.001659259259259226 -1096 1094 5.204170427930421e-18 -1096 1095 -0.03333333333333333 -1096 1096 0.007762962962962942 -1096 1097 -7.914675859144182e-18 -1096 1098 -1.040834085586084e-17 -1096 1099 -0.001659259259259226 -1096 1100 2.710505431213761e-18 -1096 1101 0.03333333333333334 -1097 556 -0.0004999999999999987 -1097 557 -0.001040740740740736 -1097 558 -0.00925925925925933 -1097 562 -1.843143693225358e-18 -1097 563 -0.002362962962963001 -1097 564 -0.03703703703703733 -1097 568 0.0005000000000000007 -1097 569 -0.00104074074074075 -1097 570 -0.009259259259259373 -1097 1093 5.421010862427522e-18 -1097 1094 0.0002814814814815098 -1097 1095 4.163336342344337e-17 -1097 1096 -8.023096076392733e-18 -1097 1097 0.008325925925925962 -1097 1098 1.179611963664229e-16 -1097 1099 2.602085213965211e-18 -1097 1100 0.0002814814814815098 -1097 1101 -1.405126015541214e-16 -1098 556 -0.01296296296296289 -1098 557 -0.01342592592592578 -1098 558 -0.1551783264746213 -1098 562 -1.595945597898663e-16 -1098 563 -0.02870370370370436 -1098 564 -0.2040466392318304 -1098 568 0.01296296296296305 -1098 569 -0.01342592592592606 -1098 570 -0.1551783264746254 -1098 1093 -0.02407407407407412 -1098 1094 -1.040834085586084e-17 -1098 1095 -0.106310013717416 -1098 1096 1.613292832658431e-16 -1098 1097 1.318389841742373e-16 -1098 1098 1.241426611796989 -1098 1099 0.02407407407407396 -1098 1100 1.561251128379126e-17 -1098 1101 -0.1063100137174177 -1099 562 -0.0009703703703703656 -1099 563 -0.0004999999999999994 -1099 564 -0.008333333333333331 -1099 568 -0.0002814814814814881 -1099 569 -6.505213034913027e-19 -1099 574 -0.0009703703703703715 -1099 575 0.0005 -1099 576 0.008333333333333333 -1099 1096 -0.001659259259259226 -1099 1097 2.602085213965211e-18 -1099 1098 -0.03333333333333333 -1099 1099 0.007762962962962958 -1099 1100 -2.602085213965211e-18 -1099 1101 -6.938893903907228e-18 -1099 1102 -0.001659259259259277 -1099 1104 0.03333333333333334 -1100 562 -0.0004999999999999995 -1100 563 -0.001040740740740741 -1100 564 -0.009259259259259339 -1100 568 -6.505213034913027e-19 -1100 569 -0.002362962962962972 -1100 570 -0.03703703703703705 -1100 574 0.0005000000000000001 -1100 575 -0.001040740740740738 -1100 576 -0.009259259259259196 -1100 1096 2.818925648462312e-18 -1100 1097 0.0002814814814815098 -1100 1098 8.673617379884035e-18 -1100 1099 -2.602085213965211e-18 -1100 1100 0.008325925925925935 -1100 1101 3.122502256758253e-17 -1100 1102 -2.168404344971009e-19 -1100 1103 0.0002814814814814666 -1100 1104 -2.081668171172169e-17 -1101 562 -0.01296296296296299 -1101 563 -0.01342592592592594 -1101 564 -0.1551783264746243 -1101 568 4.85722573273506e-17 -1101 569 -0.02870370370370393 -1101 570 -0.2040466392318265 -1101 574 0.01296296296296295 -1101 575 -0.01342592592592589 -1101 576 -0.1551783264746221 -1101 1096 -0.02407407407407397 -1101 1097 -1.734723475976807e-18 -1101 1098 -0.1063100137174177 -1101 1099 -1.370431546021678e-16 -1101 1100 1.283695372222837e-16 -1101 1101 1.241426611796988 -1101 1102 0.0240740740740741 -1101 1103 8.673617379884035e-18 -1101 1104 -0.1063100137174232 -1102 568 -0.0009703703703703715 -1102 569 -0.0005 -1102 570 -0.008333333333333333 -1102 574 -0.0002814814814814856 -1102 575 6.505213034913027e-19 -1102 580 -0.0009703703703703662 -1102 581 0.0004999999999999994 -1102 582 0.008333333333333333 -1102 1099 -0.001659259259259277 -1102 1100 -1.084202172485504e-19 -1102 1101 -0.03333333333333333 -1102 1102 0.00776296296296296 -1102 1103 2.710505431213761e-18 -1102 1104 -1.387778780781446e-17 -1102 1105 -0.001659259259259233 -1102 1106 -2.602085213965211e-18 -1102 1107 0.03333333333333334 -1103 568 -0.0005 -1103 569 -0.001040740740740738 -1103 570 -0.009259259259259198 -1103 574 6.505213034913027e-19 -1103 575 -0.002362962962962969 -1103 576 -0.03703703703703702 -1103 580 0.0004999999999999994 -1103 581 -0.00104074074074074 -1103 582 -0.009259259259259287 -1103 1100 0.0002814814814814665 -1103 1101 -2.081668171172169e-17 -1103 1102 2.818925648462312e-18 -1103 1103 0.008325925925925931 -1103 1104 -1.040834085586084e-16 -1103 1105 -2.602085213965211e-18 -1103 1106 0.0002814814814815045 -1103 1107 7.28583859910259e-17 -1104 568 -0.01296296296296295 -1104 569 -0.01342592592592589 -1104 570 -0.1551783264746221 -1104 574 2.949029909160572e-17 -1104 575 -0.0287037037037039 -1104 576 -0.2040466392318244 -1104 580 0.01296296296296292 -1104 581 -0.01342592592592594 -1104 582 -0.1551783264746218 -1104 1099 -0.02407407407407412 -1104 1100 8.673617379884035e-18 -1104 1101 -0.1063100137174232 -1104 1102 1.734723475976807e-17 -1104 1103 1.665334536937735e-16 -1104 1104 1.241426611796978 -1104 1105 0.0240740740740741 -1104 1106 2.081668171172169e-17 -1104 1107 -0.1063100137174169 -1105 574 -0.0009703703703703707 -1105 575 -0.0005000000000000007 -1105 576 -0.008333333333333333 -1105 580 -0.0002814814814814855 -1105 586 -0.0009703703703703737 -1105 587 0.0005000000000000007 -1105 588 0.008333333333333333 -1105 1102 -0.001659259259259233 -1105 1103 -2.710505431213761e-18 -1105 1104 -0.03333333333333333 -1105 1105 0.007762962962962959 -1105 1107 -1.040834085586084e-17 -1105 1108 -0.001659259259259277 -1105 1109 2.710505431213761e-18 -1105 1110 0.03333333333333334 -1106 574 -0.0005000000000000008 -1106 575 -0.001040740740740749 -1106 576 -0.009259259259259325 -1106 581 -0.002362962962962969 -1106 582 -0.03703703703703706 -1106 586 0.0005000000000000008 -1106 587 -0.001040740740740743 -1106 588 -0.009259259259259228 -1106 1102 -2.602085213965211e-18 -1106 1103 0.0002814814814815046 -1106 1104 -7.632783294297951e-17 -1106 1105 -1.084202172485504e-19 -1106 1106 0.008325925925925929 -1106 1107 -2.775557561562891e-16 -1106 1108 2.602085213965211e-18 -1106 1109 0.0002814814814814666 -1106 1110 -1.370431546021678e-16 -1107 574 -0.01296296296296297 -1107 575 -0.01342592592592606 -1107 576 -0.1551783264746228 -1107 581 -0.02870370370370376 -1107 582 -0.2040466392318244 -1107 586 0.01296296296296297 -1107 587 -0.01342592592592591 -1107 588 -0.1551783264746226 -1107 1102 -0.02407407407407412 -1107 1103 3.816391647148976e-17 -1107 1104 -0.1063100137174169 -1107 1105 1.734723475976807e-17 -1107 1106 1.422473250300982e-16 -1107 1107 1.241426611796978 -1107 1108 0.0240740740740741 -1107 1109 1.561251128379126e-17 -1107 1110 -0.1063100137174232 -1108 580 -0.0009703703703703694 -1108 581 -0.0004999999999999994 -1108 582 -0.008333333333333333 -1108 586 -0.0002814814814814639 -1108 587 -6.505213034913027e-19 -1108 592 -0.0009703703703703721 -1108 593 0.0005 -1108 594 0.008333333333333335 -1108 1105 -0.001659259259259277 -1108 1106 2.602085213965211e-18 -1108 1107 -0.03333333333333333 -1108 1108 0.007762962962962975 -1108 1109 -2.602085213965211e-18 -1108 1110 -1.387778780781446e-17 -1108 1111 -0.001659259259259283 -1108 1113 0.03333333333333334 -1109 580 -0.0004999999999999994 -1109 581 -0.001040740740740734 -1109 582 -0.009259259259259189 -1109 586 -7.589415207398531e-19 -1109 587 -0.00236296296296294 -1109 588 -0.0370370370370367 -1109 592 0.0005000000000000001 -1109 593 -0.001040740740740737 -1109 594 -0.009259259259259169 -1109 1105 2.710505431213761e-18 -1109 1106 0.0002814814814814665 -1109 1107 1.040834085586084e-17 -1109 1108 -2.602085213965211e-18 -1109 1109 0.008325925925925903 -1109 1110 -1.040834085586084e-17 -1109 1111 -2.168404344971009e-19 -1109 1112 0.0002814814814814615 -1109 1113 -4.163336342344337e-17 -1110 580 -0.01296296296296292 -1110 581 -0.01342592592592579 -1110 582 -0.1551783264746216 -1110 586 -2.775557561562891e-17 -1110 587 -0.02870370370370361 -1110 588 -0.2040466392318205 -1110 592 0.01296296296296295 -1110 593 -0.01342592592592588 -1110 594 -0.1551783264746221 -1110 1105 -0.02407407407407412 -1110 1106 -3.469446951953614e-18 -1110 1107 -0.1063100137174232 -1110 1108 1.387778780781446e-17 -1110 1109 1.700029006457271e-16 -1110 1110 1.241426611796977 -1110 1111 0.02407407407407411 -1110 1112 2.081668171172169e-17 -1110 1113 -0.1063100137174241 -1111 586 -0.0009703703703703722 -1111 587 -0.0005000000000000001 -1111 588 -0.008333333333333333 -1111 592 -0.0002814814814815099 -1111 593 -1.301042606982605e-18 -1111 594 -1.734723475976807e-18 -1111 598 -0.0009703703703703684 -1111 599 0.0005000000000000014 -1111 600 0.008333333333333335 -1111 1108 -0.001659259259259283 -1111 1109 -1.084202172485504e-19 -1111 1110 -0.03333333333333333 -1111 1111 0.007762962962962944 -1111 1112 -5.204170427930421e-18 -1111 1113 -1.040834085586084e-17 -1111 1114 -0.001659259259259169 -1111 1115 5.312590645178972e-18 -1111 1116 0.03333333333333334 -1112 586 -0.0005 -1112 587 -0.001040740740740737 -1112 588 -0.00925925925925917 -1112 592 -1.409462824231156e-18 -1112 593 -0.002362962962963002 -1112 594 -0.0370370370370374 -1112 598 0.0005000000000000013 -1112 599 -0.001040740740740762 -1112 600 -0.009259259259259583 -1112 1109 0.0002814814814814615 -1112 1110 -4.163336342344337e-17 -1112 1111 -5.095750210681871e-18 -1112 1112 0.008325925925925962 -1112 1113 -1.52655665885959e-16 -1112 1114 5.421010862427522e-18 -1112 1115 0.0002814814814815581 -1112 1116 -2.324529457808922e-16 -1113 586 -0.01296296296296295 -1113 587 -0.01342592592592588 -1113 588 -0.1551783264746221 -1113 592 -1.283695372222837e-16 -1113 593 -0.02870370370370415 -1113 594 -0.2040466392318304 -1113 598 0.01296296296296308 -1113 599 -0.01342592592592617 -1113 600 -0.1551783264746262 -1113 1108 -0.02407407407407412 -1113 1109 2.081668171172169e-17 -1113 1110 -0.1063100137174241 -1113 1111 1.665334536937735e-16 -1113 1112 1.023486850826316e-16 -1113 1113 1.241426611796989 -1113 1114 0.02407407407407395 -1113 1115 5.204170427930421e-18 -1113 1116 -0.1063100137174096 -1114 592 -0.0009703703703703595 -1114 593 -0.0004999999999999987 -1114 594 -0.008333333333333333 -1114 598 -0.0002814814814815097 -1114 599 -2.602085213965211e-18 -1114 600 -1.734723475976807e-18 -1114 604 -0.0009703703703703766 -1114 605 0.0005000000000000013 -1114 606 0.008333333333333335 -1114 1111 -0.001659259259259169 -1114 1112 5.204170427930421e-18 -1114 1113 -0.03333333333333333 -1114 1114 0.007762962962962944 -1114 1115 -1.040834085586084e-17 -1114 1116 -1.040834085586084e-17 -1114 1117 -0.001659259259259283 -1114 1118 5.204170427930421e-18 -1114 1119 0.03333333333333334 -1115 592 -0.0004999999999999987 -1115 593 -0.001040740740740745 -1115 594 -0.009259259259259509 -1115 598 -2.602085213965211e-18 -1115 599 -0.002362962962963001 -1115 600 -0.03703703703703734 -1115 604 0.0005000000000000014 -1115 605 -0.001040740740740746 -1115 606 -0.009259259259259228 -1115 1111 5.312590645178972e-18 -1115 1112 0.0002814814814815581 -1115 1113 6.071532165918825e-17 -1115 1114 -1.062518129035794e-17 -1115 1115 0.008325925925925962 -1115 1116 8.673617379884035e-17 -1115 1117 5.204170427930421e-18 -1115 1118 0.0002814814814814613 -1115 1119 -2.740863092043355e-16 -1116 592 -0.01296296296296297 -1116 593 -0.01342592592592593 -1116 594 -0.1551783264746242 -1116 598 -3.642919299551295e-17 -1116 599 -0.02870370370370433 -1116 600 -0.2040466392318304 -1116 604 0.012962962962963 -1116 605 -0.01342592592592593 -1116 606 -0.1551783264746232 -1116 1111 -0.02407407407407397 -1116 1112 -2.42861286636753e-17 -1116 1113 -0.1063100137174096 -1116 1114 -1.387778780781446e-16 -1116 1115 1.231653667943533e-16 -1116 1116 1.241426611796989 -1116 1117 0.02407407407407411 -1116 1118 2.949029909160572e-17 -1116 1119 -0.1063100137174241 -1117 598 -0.0009703703703703678 -1117 599 -0.0004999999999999988 -1117 600 -0.008333333333333333 -1117 604 -0.0002814814814814639 -1117 605 -1.192622389734055e-18 -1117 606 -1.734723475976807e-18 -1117 610 -0.0009703703703703715 -1117 611 0.0005 -1117 612 0.008333333333333333 -1117 1114 -0.001659259259259283 -1117 1115 5.204170427930421e-18 -1117 1116 -0.03333333333333333 -1117 1117 0.007762962962962975 -1117 1118 -5.204170427930421e-18 -1117 1119 -1.040834085586084e-17 -1117 1120 -0.001659259259259277 -1117 1122 0.03333333333333334 -1118 598 -0.0004999999999999987 -1118 599 -0.001040740740740729 -1118 600 -0.009259259259259155 -1118 604 -1.409462824231156e-18 -1118 605 -0.00236296296296294 -1118 606 -0.03703703703703667 -1118 610 0.0005000000000000001 -1118 611 -0.001040740740740738 -1118 612 -0.009259259259259196 -1118 1114 5.204170427930421e-18 -1118 1115 0.0002814814814814613 -1118 1116 2.081668171172169e-17 -1118 1117 -5.204170427930421e-18 -1118 1118 0.008325925925925902 -1118 1119 1.040834085586084e-16 -1118 1120 -2.168404344971009e-19 -1118 1121 0.0002814814814814666 -1118 1122 -2.081668171172169e-17 -1119 598 -0.01296296296296289 -1119 599 -0.0134259259259257 -1119 600 -0.1551783264746211 -1119 604 -5.377642775528102e-17 -1119 605 -0.0287037037037037 -1119 606 -0.2040466392318205 -1119 610 0.01296296296296295 -1119 611 -0.01342592592592589 -1119 612 -0.1551783264746221 -1119 1114 -0.02407407407407412 -1119 1115 -1.734723475976807e-18 -1119 1116 -0.1063100137174241 -1119 1117 1.561251128379126e-17 -1119 1118 1.804112415015879e-16 -1119 1119 1.241426611796977 -1119 1120 0.0240740740740741 -1119 1121 8.673617379884035e-18 -1119 1122 -0.1063100137174232 -1120 604 -0.0009703703703703715 -1120 605 -0.0005 -1120 606 -0.008333333333333333 -1120 610 -0.0002814814814814747 -1120 611 6.505213034913027e-19 -1120 616 -0.000970370370370368 -1120 617 0.0004999999999999994 -1120 618 0.008333333333333333 -1120 1117 -0.001659259259259277 -1120 1118 -1.084202172485504e-19 -1120 1119 -0.03333333333333333 -1120 1120 0.007762962962962968 -1120 1121 2.818925648462312e-18 -1120 1122 -1.387778780781446e-17 -1120 1123 -0.001659259259259258 -1120 1124 -2.710505431213761e-18 -1120 1125 0.03333333333333334 -1121 604 -0.0005 -1121 605 -0.001040740740740738 -1121 606 -0.009259259259259198 -1121 610 5.421010862427522e-19 -1121 611 -0.002362962962962954 -1121 612 -0.03703703703703695 -1121 616 0.0004999999999999994 -1121 617 -0.001040740740740737 -1121 618 -0.009259259259259255 -1121 1118 0.0002814814814814665 -1121 1119 -2.081668171172169e-17 -1121 1120 2.927345865710862e-18 -1121 1121 0.008325925925925917 -1121 1122 6.938893903907228e-17 -1121 1123 -2.710505431213761e-18 -1121 1124 0.0002814814814814828 -1121 1125 1.595945597898663e-16 -1122 604 -0.01296296296296295 -1122 605 -0.01342592592592589 -1122 606 -0.1551783264746221 -1122 610 2.949029909160572e-17 -1122 611 -0.02870370370370362 -1122 612 -0.2040466392318224 -1122 616 0.01296296296296292 -1122 617 -0.01342592592592588 -1122 618 -0.1551783264746217 -1122 1117 -0.02407407407407412 -1122 1118 8.673617379884035e-18 -1122 1119 -0.1063100137174232 -1122 1120 1.908195823574488e-17 -1122 1121 -4.510281037539698e-17 -1122 1122 1.241426611796977 -1122 1123 0.0240740740740741 -1122 1124 -2.775557561562891e-17 -1122 1125 -0.1063100137174205 -1123 610 -0.0009703703703703725 -1123 611 -0.0005000000000000007 -1123 612 -0.008333333333333333 -1123 616 -0.0002814814814814964 -1123 618 -1.734723475976807e-18 -1123 622 -0.0009703703703703701 -1123 623 0.0005000000000000007 -1123 624 0.008333333333333333 -1123 1120 -0.001659259259259258 -1123 1121 -2.710505431213761e-18 -1123 1122 -0.03333333333333333 -1123 1123 0.007762962962962952 -1123 1125 -1.734723475976807e-17 -1123 1126 -0.001659259259259226 -1123 1127 2.710505431213761e-18 -1123 1128 0.03333333333333334 -1124 610 -0.0005000000000000007 -1124 611 -0.001040740740740746 -1124 612 -0.009259259259259293 -1124 616 1.084202172485504e-19 -1124 617 -0.002362962962962983 -1124 618 -0.0370370370370373 -1124 622 0.0005000000000000007 -1124 623 -0.00104074074074075 -1124 624 -0.009259259259259373 -1124 1120 -2.710505431213761e-18 -1124 1121 0.0002814814814814828 -1124 1122 1.214306433183765e-17 -1124 1123 -1.084202172485504e-19 -1124 1124 0.008325925925925945 -1124 1125 -1.040834085586084e-16 -1124 1126 2.602085213965211e-18 -1124 1127 0.0002814814814815098 -1124 1128 -1.405126015541214e-16 -1125 610 -0.01296296296296297 -1125 611 -0.013425925925926 -1125 612 -0.1551783264746227 -1125 616 -7.459310946700271e-17 -1125 617 -0.02870370370370377 -1125 618 -0.204046639231828 -1125 622 0.01296296296296305 -1125 623 -0.01342592592592606 -1125 624 -0.1551783264746254 -1125 1120 -0.02407407407407412 -1125 1121 -8.673617379884035e-18 -1125 1122 -0.1063100137174205 -1125 1123 1.682681771697503e-16 -1125 1124 -6.591949208711867e-17 -1125 1125 1.241426611796988 -1125 1126 0.02407407407407396 -1125 1127 1.561251128379126e-17 -1125 1128 -0.1063100137174177 -1126 616 -0.0009703703703703656 -1126 617 -0.0004999999999999994 -1126 618 -0.008333333333333331 -1126 622 -0.0002814814814814881 -1126 623 -6.505213034913027e-19 -1126 628 -0.0009703703703703715 -1126 629 0.0005 -1126 630 0.008333333333333333 -1126 1123 -0.001659259259259226 -1126 1124 2.602085213965211e-18 -1126 1125 -0.03333333333333333 -1126 1126 0.007762962962962955 -1126 1127 -8.023096076392733e-18 -1126 1128 -1.040834085586084e-17 -1126 1129 -0.001659259259259272 -1126 1130 5.421010862427522e-18 -1126 1131 0.03333333333333334 -1127 616 -0.0004999999999999995 -1127 617 -0.001040740740740741 -1127 618 -0.009259259259259339 -1127 622 -6.505213034913027e-19 -1127 623 -0.002362962962962972 -1127 624 -0.03703703703703705 -1127 628 0.0005000000000000001 -1127 629 -0.001040740740740738 -1127 630 -0.009259259259259196 -1127 1123 2.818925648462312e-18 -1127 1124 0.0002814814814815098 -1127 1125 8.673617379884035e-18 -1127 1126 -8.023096076392733e-18 -1127 1127 0.008325925925925938 -1127 1128 9.020562075079397e-17 -1127 1129 5.312590645178972e-18 -1127 1130 0.0002814814814814668 -1127 1131 -1.942890293094024e-16 -1128 616 -0.01296296296296299 -1128 617 -0.01342592592592594 -1128 618 -0.1551783264746243 -1128 622 4.85722573273506e-17 -1128 623 -0.02870370370370393 -1128 624 -0.2040466392318265 -1128 628 0.01296296296296295 -1128 629 -0.01342592592592589 -1128 630 -0.1551783264746221 -1128 1123 -0.02407407407407397 -1128 1124 -1.734723475976807e-18 -1128 1125 -0.1063100137174177 -1128 1126 -1.717376241217039e-16 -1128 1127 5.030698080332741e-17 -1128 1128 1.24142661179699 -1128 1129 0.02407407407407414 -1128 1130 -9.367506770274758e-17 -1128 1131 -0.1063100137174233 -1129 622 -0.0009703703703703715 -1129 623 -0.0005 -1129 624 -0.008333333333333333 -1129 628 -0.0002814814814814882 -1129 629 7.589415207398531e-19 -1129 630 -1.734723475976807e-18 -1129 634 -0.0009703703703703656 -1129 635 0.0004999999999999993 -1129 636 0.008333333333333333 -1129 1126 -0.001659259259259272 -1129 1127 5.204170427930421e-18 -1129 1128 -0.03333333333333333 -1129 1129 0.007762962962962958 -1129 1130 -9.324138683375338e-18 -1129 1131 -1.040834085586084e-17 -1129 1132 -0.001659259259259232 -1129 1133 4.119968255444917e-18 -1129 1134 0.03333333333333334 -1130 622 -0.0005 -1130 623 -0.001040740740740738 -1130 624 -0.009259259259259198 -1130 628 6.505213034913027e-19 -1130 629 -0.002362962962962972 -1130 630 -0.03703703703703708 -1130 634 0.0004999999999999994 -1130 635 -0.001040740740740741 -1130 636 -0.009259259259259316 -1130 1126 5.421010862427522e-18 -1130 1127 0.0002814814814814668 -1130 1128 1.023486850826316e-16 -1130 1129 -9.432558900623889e-18 -1130 1130 0.008325925925925933 -1130 1131 -7.28583859910259e-17 -1130 1132 4.011548038196366e-18 -1130 1133 0.0002814814814815072 -1130 1134 -8.500145032286355e-17 -1131 622 -0.01296296296296295 -1131 623 -0.01342592592592589 -1131 624 -0.1551783264746221 -1131 628 2.949029909160572e-17 -1131 629 -0.02870370370370393 -1131 630 -0.2040466392318249 -1131 634 0.01296296296296292 -1131 635 -0.01342592592592595 -1131 636 -0.1551783264746218 -1131 1126 -0.02407407407407394 -1131 1127 -1.266348137463069e-16 -1131 1128 -0.1063100137174233 -1131 1129 -3.833738881908744e-16 -1131 1130 1.07552855510562e-16 -1131 1131 1.241426611796977 -1131 1132 0.02407407407407432 -1131 1133 1.474514954580286e-16 -1131 1134 -0.1063100137174162 -1132 628 -0.0009703703703703701 -1132 629 -0.0005000000000000007 -1132 630 -0.008333333333333331 -1132 634 -0.0002814814814814749 -1132 635 1.951563910473908e-18 -1132 640 -0.0009703703703703695 -1132 641 0.0004999999999999987 -1132 642 0.008333333333333335 -1132 1129 -0.001659259259259232 -1132 1130 4.011548038196366e-18 -1132 1131 -0.03333333333333333 -1132 1132 0.007762962962962972 -1132 1133 1.301042606982605e-18 -1132 1134 -1.040834085586084e-17 -1132 1135 -0.001659259259259308 -1132 1136 -5.312590645178972e-18 -1132 1137 0.03333333333333334 -1133 628 -0.0005000000000000008 -1133 629 -0.00104074074074075 -1133 630 -0.009259259259259354 -1133 634 1.951563910473908e-18 -1133 635 -0.002362962962962954 -1133 636 -0.03703703703703698 -1133 640 0.0004999999999999986 -1133 641 -0.001040740740740725 -1133 642 -0.00925925925925908 -1133 1129 4.119968255444917e-18 -1133 1130 0.0002814814814815072 -1133 1131 1.35308431126191e-16 -1133 1132 1.409462824231156e-18 -1133 1133 0.008325925925925921 -1133 1134 -1.040834085586084e-17 -1133 1135 -5.312590645178972e-18 -1133 1136 0.0002814814814814399 -1133 1137 2.775557561562891e-16 -1134 628 -0.01296296296296297 -1134 629 -0.01342592592592606 -1134 630 -0.1551783264746229 -1134 634 8.153200337090993e-17 -1134 635 -0.02870370370370355 -1134 636 -0.2040466392318224 -1134 640 0.01296296296296289 -1134 641 -0.01342592592592577 -1134 642 -0.1551783264746209 -1134 1129 -0.02407407407407405 -1134 1130 1.214306433183765e-16 -1134 1131 -0.1063100137174162 -1134 1132 -5.377642775528102e-17 -1134 1133 2.081668171172169e-17 -1134 1134 1.241426611796975 -1134 1135 0.02407407407407411 -1134 1136 -3.295974604355933e-17 -1134 1137 -0.1063100137174277 -1135 634 -0.0009703703703703784 -1135 635 -0.0005000000000000013 -1135 636 -0.008333333333333333 -1135 640 -0.0002814814814814531 -1135 641 1.301042606982605e-18 -1135 642 -1.734723475976807e-18 -1135 646 -0.0009703703703703715 -1135 647 0.0005 -1135 648 0.008333333333333333 -1135 1132 -0.001659259259259308 -1135 1133 -5.312590645178972e-18 -1135 1134 -0.03333333333333333 -1135 1135 0.007762962962962983 -1135 1136 5.312590645178972e-18 -1135 1137 -1.040834085586084e-17 -1135 1138 -0.001659259259259277 -1135 1140 0.03333333333333334 -1136 634 -0.0005000000000000013 -1136 635 -0.001040740740740743 -1136 636 -0.009259259259259155 -1136 640 1.409462824231156e-18 -1136 641 -0.002362962962962925 -1136 642 -0.03703703703703673 -1136 646 0.0005000000000000001 -1136 647 -0.001040740740740738 -1136 648 -0.009259259259259196 -1136 1132 -5.421010862427522e-18 -1136 1133 0.00028148148148144 -1136 1134 -1.908195823574488e-17 -1136 1135 5.312590645178972e-18 -1136 1136 0.008325925925925888 -1136 1137 -1.942890293094024e-16 -1136 1138 -2.168404344971009e-19 -1136 1139 0.0002814814814814666 -1136 1140 -2.081668171172169e-17 -1137 634 -0.012962962962963 -1137 635 -0.01342592592592601 -1137 636 -0.155178326474623 -1137 640 5.724587470723463e-17 -1137 641 -0.02870370370370304 -1137 642 -0.2040466392318185 -1137 646 0.01296296296296295 -1137 647 -0.01342592592592589 -1137 648 -0.1551783264746221 -1137 1132 -0.02407407407407412 -1137 1134 -0.1063100137174277 -1137 1135 1.387778780781446e-17 -1137 1136 -7.632783294297951e-17 -1137 1137 1.241426611796976 -1137 1138 0.0240740740740741 -1137 1139 8.673617379884035e-18 -1137 1140 -0.1063100137174232 -1138 640 -0.0009703703703703715 -1138 641 -0.0005 -1138 642 -0.008333333333333333 -1138 646 -0.0002814814814814882 -1138 647 -1.951563910473908e-18 -1138 648 -1.734723475976807e-18 -1138 652 -0.0009703703703703745 -1138 653 0.000500000000000002 -1138 654 0.008333333333333333 -1138 1135 -0.001659259259259277 -1138 1136 -1.084202172485504e-19 -1138 1137 -0.03333333333333333 -1138 1138 0.007762962962962959 -1138 1139 -7.914675859144182e-18 -1138 1140 -1.734723475976807e-17 -1138 1141 -0.001659259259259226 -1138 1142 8.023096076392733e-18 -1138 1143 0.03333333333333334 -1139 640 -0.0005 -1139 641 -0.001040740740740738 -1139 642 -0.009259259259259198 -1139 646 -2.059984127722458e-18 -1139 647 -0.002362962962962972 -1139 648 -0.03703703703703719 -1139 652 0.000500000000000002 -1139 653 -0.001040740740740759 -1139 654 -0.009259259259259347 -1139 1136 0.0002814814814814665 -1139 1137 -2.081668171172169e-17 -1139 1138 -7.806255641895632e-18 -1139 1139 0.008325925925925935 -1139 1140 -5.30825383648903e-16 -1139 1141 7.914675859144182e-18 -1139 1142 0.0002814814814815098 -1139 1143 -3.122502256758253e-17 -1140 640 -0.01296296296296295 -1140 641 -0.01342592592592589 -1140 642 -0.1551783264746221 -1140 646 -1.561251128379126e-16 -1140 647 -0.02870370370370348 -1140 648 -0.2040466392318265 -1140 652 0.0129629629629631 -1140 653 -0.01342592592592639 -1140 654 -0.1551783264746264 -1140 1135 -0.02407407407407412 -1140 1136 8.673617379884035e-18 -1140 1137 -0.1063100137174232 -1140 1138 1.682681771697503e-16 -1140 1139 6.071532165918825e-17 -1140 1140 1.241426611796988 -1140 1141 0.02407407407407395 -1140 1142 6.245004513516506e-17 -1140 1143 -0.1063100137174177 -1141 646 -0.0009703703703703612 -1141 647 -0.000499999999999998 -1141 648 -0.008333333333333331 -1141 652 -0.0002814814814815097 -1141 653 -3.361026734705064e-18 -1141 654 -1.734723475976807e-18 -1141 658 -0.0009703703703703723 -1141 659 0.0005000000000000013 -1141 660 0.008333333333333333 -1141 1138 -0.001659259259259226 -1141 1139 7.806255641895632e-18 -1141 1140 -0.03333333333333333 -1141 1141 0.007762962962962943 -1141 1142 -1.322726650432315e-17 -1141 1143 -1.040834085586084e-17 -1141 1144 -0.001659259259259226 -1141 1145 5.421010862427522e-18 -1141 1146 0.03333333333333334 -1142 646 -0.0004999999999999981 -1142 647 -0.001040740740740732 -1142 648 -0.009259259259259236 -1142 652 -3.252606517456513e-18 -1142 653 -0.002362962962963001 -1142 654 -0.0370370370370374 -1142 658 0.0005000000000000013 -1142 659 -0.001040740740740754 -1142 660 -0.009259259259259404 -1142 1138 8.023096076392733e-18 -1142 1139 0.0002814814814815099 -1142 1140 4.128641872824801e-16 -1142 1141 -1.33356867215717e-17 -1142 1142 0.008325925925925962 -1142 1143 -1.387778780781446e-16 -1142 1144 5.204170427930421e-18 -1142 1145 0.0002814814814815098 -1142 1146 -2.567390744445674e-16 -1143 646 -0.01296296296296294 -1143 647 -0.01342592592592603 -1143 648 -0.1551783264746233 -1143 652 -6.418476861114186e-17 -1143 653 -0.02870370370370415 -1143 654 -0.2040466392318304 -1143 658 0.012962962962963 -1143 659 -0.01342592592592602 -1143 660 -0.1551783264746234 -1143 1138 -0.02407407407407396 -1143 1139 1.214306433183765e-17 -1143 1140 -0.1063100137174177 -1143 1141 -1.387778780781446e-16 -1143 1142 1.006139616066548e-16 -1143 1143 1.241426611796989 -1143 1144 0.0240740740740741 -1143 1145 1.908195823574488e-17 -1143 1146 -0.106310013717416 -1144 652 -0.0009703703703703634 -1144 653 -0.0004999999999999986 -1144 654 -0.008333333333333331 -1144 658 -0.0002814814814814748 -1144 659 -2.059984127722458e-18 -1144 664 -0.0009703703703703761 -1144 665 0.0005000000000000007 -1144 666 0.008333333333333335 -1144 1141 -0.001659259259259226 -1144 1142 5.204170427930421e-18 -1144 1143 -0.03333333333333333 -1144 1144 0.007762962962962967 -1144 1145 -7.806255641895632e-18 -1144 1146 -6.938893903907228e-18 -1144 1147 -0.001659259259259308 -1144 1148 2.602085213965211e-18 -1144 1149 0.03333333333333334 -1145 652 -0.0004999999999999987 -1145 653 -0.001040740740740736 -1145 654 -0.00925925925925933 -1145 658 -1.951563910473908e-18 -1145 659 -0.002362962962962954 -1145 660 -0.03703703703703692 -1145 664 0.0005000000000000007 -1145 665 -0.001040740740740738 -1145 666 -0.009259259259259167 -1145 1141 5.421010862427522e-18 -1145 1142 0.0002814814814815098 -1145 1143 4.163336342344337e-17 -1145 1144 -7.806255641895632e-18 -1145 1145 0.008325925925925917 -1145 1146 2.42861286636753e-16 -1145 1147 2.710505431213761e-18 -1145 1148 0.0002814814814814399 -1145 1149 -7.28583859910259e-17 -1146 652 -0.01296296296296289 -1146 653 -0.01342592592592578 -1146 654 -0.1551783264746213 -1146 658 -8.673617379884035e-17 -1146 659 -0.02870370370370376 -1146 660 -0.2040466392318224 -1146 664 0.01296296296296297 -1146 665 -0.01342592592592584 -1146 666 -0.1551783264746225 -1146 1141 -0.02407407407407412 -1146 1142 -1.040834085586084e-17 -1146 1143 -0.106310013717416 -1146 1144 6.938893903907228e-18 -1146 1145 -3.122502256758253e-17 -1146 1146 1.241426611796977 -1146 1147 0.02407407407407411 -1146 1148 -2.081668171172169e-17 -1146 1149 -0.1063100137174277 -1147 658 -0.0009703703703703718 -1147 659 -0.0004999999999999994 -1147 660 -0.008333333333333333 -1147 664 -0.0002814814814814748 -1147 665 2.710505431213761e-18 -1147 666 -3.469446951953614e-18 -1147 670 -0.0009703703703703568 -1147 671 0.0004999999999999966 -1147 672 0.008333333333333333 -1147 1144 -0.001659259259259308 -1147 1145 2.710505431213761e-18 -1147 1146 -0.03333333333333333 -1147 1147 0.007762962962962967 -1147 1148 1.051676107310939e-17 -1147 1149 -1.387778780781446e-17 -1147 1150 -0.001659259259259226 -1147 1151 -1.322726650432315e-17 -1147 1152 0.03333333333333334 -1148 658 -0.0004999999999999994 -1148 659 -0.00104074074074073 -1148 660 -0.00925925925925913 -1148 664 2.710505431213761e-18 -1148 665 -0.002362962962962954 -1148 666 -0.03703703703703681 -1148 670 0.0004999999999999966 -1148 671 -0.001040740740740723 -1148 672 -0.009259259259259285 -1148 1144 2.602085213965211e-18 -1148 1145 0.00028148148148144 -1148 1146 7.632783294297951e-17 -1148 1147 1.051676107310939e-17 -1148 1148 0.008325925925925917 -1148 1149 6.522560269672795e-16 -1148 1150 -1.33356867215717e-17 -1148 1151 0.0002814814814815098 -1148 1152 2.185751579730777e-16 -1149 658 -0.01296296296296292 -1149 659 -0.01342592592592572 -1149 660 -0.1551783264746215 -1149 664 1.110223024625157e-16 -1149 665 -0.02870370370370409 -1149 666 -0.2040466392318225 -1149 670 0.01296296296296281 -1149 671 -0.01342592592592557 -1149 672 -0.1551783264746198 -1149 1144 -0.02407407407407412 -1149 1145 -3.989863994746656e-17 -1149 1146 -0.1063100137174277 -1149 1147 8.847089727481716e-17 -1149 1148 1.023486850826316e-16 -1149 1149 1.24142661179698 -1149 1150 0.02407407407407403 -1149 1151 -1.196959198423997e-16 -1149 1152 -0.1063100137174164 -1150 664 -0.000970370370370379 -1150 665 -0.0005000000000000033 -1150 666 -0.008333333333333331 -1150 670 -0.0002814814814814854 -1150 671 1.951563910473908e-18 -1150 676 -0.0009703703703703766 -1150 677 0.0005000000000000013 -1150 678 0.008333333333333335 -1150 1147 -0.001659259259259226 -1150 1148 -1.344410693882025e-17 -1150 1149 -0.03333333333333333 -1150 1150 0.007762962962962959 -1150 1151 8.239936510889834e-18 -1150 1152 -6.938893903907228e-18 -1150 1153 -0.001659259259259283 -1150 1154 5.204170427930421e-18 -1150 1155 0.03333333333333334 -1151 664 -0.0005000000000000034 -1151 665 -0.001040740740740768 -1151 666 -0.00925925925925947 -1151 670 2.059984127722458e-18 -1151 671 -0.002362962962962969 -1151 672 -0.0370370370370371 -1151 676 0.0005000000000000014 -1151 677 -0.001040740740740746 -1151 678 -0.009259259259259228 -1151 1147 -1.322726650432315e-17 -1151 1148 0.0002814814814815098 -1151 1149 -5.204170427930421e-16 -1151 1150 8.131516293641283e-18 -1151 1151 0.008325925925925931 -1151 1152 -4.336808689942018e-16 -1151 1153 5.204170427930421e-18 -1151 1154 0.0002814814814814613 -1151 1155 -2.740863092043355e-16 -1152 664 -0.01296296296296308 -1152 665 -0.01342592592592617 -1152 666 -0.1551783264746249 -1152 670 8.153200337090993e-17 -1152 671 -0.02870370370370363 -1152 672 -0.2040466392318244 -1152 676 0.012962962962963 -1152 677 -0.01342592592592593 -1152 678 -0.1551783264746232 -1152 1147 -0.02407407407407404 -1152 1148 -3.642919299551295e-17 -1152 1149 -0.1063100137174164 -1152 1150 -1.35308431126191e-16 -1152 1151 1.214306433183765e-16 -1152 1152 1.241426611796977 -1152 1153 0.02407407407407418 -1152 1154 1.07552855510562e-16 -1152 1155 -0.1063100137174237 -1153 670 -0.0009703703703703678 -1153 671 -0.0004999999999999988 -1153 672 -0.008333333333333333 -1153 676 -0.0002814814814814885 -1153 677 -1.192622389734055e-18 -1153 678 -1.734723475976807e-18 -1153 682 -0.0009703703703703678 -1153 683 0.0005 -1153 684 0.008333333333333335 -1153 1150 -0.001659259259259283 -1153 1151 5.204170427930421e-18 -1153 1152 -0.03333333333333333 -1153 1153 0.007762962962962959 -1153 1154 -5.204170427930421e-18 -1153 1155 -1.387778780781446e-17 -1153 1156 -0.00165925925925922 -1153 1158 0.03333333333333334 -1154 670 -0.0004999999999999987 -1154 671 -0.001040740740740729 -1154 672 -0.009259259259259155 -1154 676 -1.301042606982605e-18 -1154 677 -0.002362962962962973 -1154 678 -0.03703703703703703 -1154 682 0.0005 -1154 683 -0.001040740740740747 -1154 684 -0.009259259259259377 -1154 1150 5.204170427930421e-18 -1154 1151 0.0002814814814814613 -1154 1152 2.081668171172169e-17 -1154 1153 -5.204170427930421e-18 -1154 1154 0.008325925925925935 -1154 1155 1.457167719820518e-16 -1154 1157 0.0002814814814815154 -1155 670 -0.01296296296296289 -1155 671 -0.0134259259259257 -1155 672 -0.1551783264746211 -1155 676 -1.301042606982605e-16 -1155 677 -0.02870370370370403 -1155 678 -0.2040466392318266 -1155 682 0.01296296296296302 -1155 683 -0.01342592592592604 -1155 684 -0.1551783264746249 -1155 1150 -0.02407407407407419 -1155 1151 7.459310946700271e-17 -1155 1152 -0.1063100137174237 -1155 1153 2.393918396847994e-16 -1155 1154 4.85722573273506e-17 -1155 1155 1.241426611796985 -1155 1156 0.02407407407407396 -1155 1158 -0.1063100137174168 -1156 676 -0.0009703703703703678 -1156 677 -0.0005000000000000001 -1156 678 -0.008333333333333333 -1156 682 -0.0002814814814814777 -1156 683 -2.602085213965211e-18 -1156 684 -1.734723475976807e-18 -1156 688 -0.0009703703703703827 -1156 689 0.0005000000000000027 -1156 690 0.008333333333333335 -1156 1153 -0.00165925925925922 -1156 1155 -0.03333333333333333 -1156 1156 0.007762962962962966 -1156 1157 -1.062518129035794e-17 -1156 1158 -6.938893903907228e-18 -1156 1159 -0.001659259259259308 -1156 1160 1.062518129035794e-17 -1156 1161 0.03333333333333334 -1157 676 -0.0005000000000000001 -1157 677 -0.001040740740740747 -1157 678 -0.009259259259259377 -1157 682 -2.602085213965211e-18 -1157 683 -0.002362962962962958 -1157 684 -0.03703703703703715 -1157 688 0.0005000000000000026 -1157 689 -0.001040740740740752 -1157 690 -0.009259259259259169 -1157 1154 0.0002814814814815154 -1157 1156 -1.062518129035794e-17 -1157 1157 0.008325925925925921 -1157 1158 -3.816391647148976e-16 -1157 1159 1.062518129035794e-17 -1157 1160 0.00028148148148144 -1157 1161 -8.153200337090993e-17 -1158 676 -0.01296296296296302 -1158 677 -0.01342592592592604 -1158 678 -0.1551783264746249 -1158 682 -3.642919299551295e-17 -1158 683 -0.02870370370370317 -1158 684 -0.2040466392318246 -1158 688 0.01296296296296306 -1158 689 -0.0134259259259262 -1158 690 -0.155178326474624 -1158 1153 -0.02407407407407396 -1158 1155 -0.1063100137174168 -1158 1156 -1.405126015541214e-16 -1158 1157 -1.578598363138894e-16 -1158 1158 1.241426611796987 -1158 1159 0.0240740740740741 -1158 1160 2.775557561562891e-17 -1158 1161 -0.1063100137174277 -1159 682 -0.0009703703703703649 -1159 683 -0.0004999999999999974 -1159 684 -0.008333333333333333 -1159 688 -0.0002814814814814748 -1159 689 -1.192622389734055e-18 -1159 690 -3.469446951953614e-18 -1159 694 -0.0009703703703703634 -1159 695 0.0004999999999999986 -1159 696 0.008333333333333333 -1159 1156 -0.001659259259259308 -1159 1157 1.062518129035794e-17 -1159 1158 -0.03333333333333333 -1159 1159 0.007762962962962968 -1159 1160 -5.312590645178972e-18 -1159 1161 -1.387778780781446e-17 -1159 1162 -0.001659259259259226 -1159 1163 -5.312590645178972e-18 -1159 1164 0.03333333333333334 -1160 682 -0.0004999999999999974 -1160 683 -0.001040740740740716 -1160 684 -0.009259259259259023 -1160 688 -1.192622389734055e-18 -1160 689 -0.002362962962962954 -1160 690 -0.03703703703703692 -1160 694 0.0004999999999999987 -1160 695 -0.001040740740740736 -1160 696 -0.009259259259259287 -1160 1156 1.062518129035794e-17 -1160 1157 0.00028148148148144 -1160 1158 5.100087019371813e-16 -1160 1159 -5.421010862427522e-18 -1160 1160 0.008325925925925917 -1160 1161 2.324529457808922e-16 -1160 1162 -5.421010862427522e-18 -1160 1163 0.0002814814814815098 -1160 1164 2.116362640691705e-16 -1161 682 -0.01296296296296284 -1161 683 -0.01342592592592572 -1161 684 -0.1551783264746199 -1161 688 -5.204170427930421e-17 -1161 689 -0.02870370370370375 -1161 690 -0.2040466392318225 -1161 694 0.01296296296296289 -1161 695 -0.01342592592592592 -1161 696 -0.1551783264746213 -1161 1156 -0.02407407407407412 -1161 1157 -3.989863994746656e-17 -1161 1158 -0.1063100137174277 -1161 1159 1.214306433183765e-17 -1161 1160 -3.122502256758253e-17 -1161 1161 1.241426611796977 -1161 1162 0.0240740740740741 -1161 1163 3.469446951953614e-18 -1161 1164 -0.106310013717416 -1162 688 -0.0009703703703703723 -1162 689 -0.0005000000000000013 -1162 690 -0.008333333333333331 -1162 694 -0.0002814814814814855 -1162 695 6.505213034913027e-19 -1162 700 -0.0009703703703703744 -1162 701 0.0005000000000000007 -1162 702 0.008333333333333335 -1162 1159 -0.001659259259259226 -1162 1160 -5.421010862427522e-18 -1162 1161 -0.03333333333333333 -1162 1162 0.007762962962962959 -1162 1163 2.710505431213761e-18 -1162 1164 3.469446951953614e-18 -1162 1165 -0.001659259259259283 -1162 1166 2.602085213965211e-18 -1162 1167 0.03333333333333334 -1163 688 -0.0005000000000000014 -1163 689 -0.001040740740740754 -1163 690 -0.009259259259259361 -1163 694 6.505213034913027e-19 -1163 695 -0.002362962962962968 -1163 696 -0.0370370370370371 -1163 700 0.0005000000000000008 -1163 701 -0.001040740740740742 -1163 702 -0.0092592592592592 -1163 1159 -5.204170427930421e-18 -1163 1160 0.0002814814814815098 -1163 1161 -8.326672684688674e-17 -1163 1162 2.710505431213761e-18 -1163 1163 0.008325925925925931 -1163 1164 -3.920475055707584e-16 -1163 1165 2.38524477946811e-18 -1163 1166 0.0002814814814814607 -1163 1167 -1.578598363138894e-16 -1164 688 -0.012962962962963 -1164 689 -0.01342592592592616 -1164 690 -0.1551783264746234 -1164 694 2.775557561562891e-17 -1164 695 -0.02870370370370367 -1164 696 -0.2040466392318244 -1164 700 0.01296296296296297 -1164 701 -0.01342592592592591 -1164 702 -0.1551783264746226 -1164 1159 -0.02407407407407412 -1164 1160 3.816391647148976e-17 -1164 1161 -0.106310013717416 -1164 1162 -1.734723475976807e-18 -1164 1163 1.35308431126191e-16 -1164 1164 1.241426611796978 -1164 1165 0.02407407407407413 -1164 1166 2.949029909160572e-17 -1164 1167 -0.1063100137174242 -1165 694 -0.00097037037037037 -1165 695 -0.0004999999999999995 -1165 696 -0.008333333333333333 -1165 700 -0.0002814814814814856 -1165 701 2.168404344971009e-19 -1165 702 -3.469446951953614e-18 -1165 706 -0.0009703703703703656 -1165 707 0.0004999999999999993 -1165 708 0.008333333333333333 -1165 1162 -0.001659259259259283 -1165 1163 2.38524477946811e-18 -1165 1164 -0.03333333333333335 -1165 1165 0.007762962962962961 -1165 1166 1.084202172485504e-19 -1165 1167 -1.387778780781446e-17 -1165 1168 -0.001659259259259226 -1165 1169 -2.49366499671666e-18 -1165 1170 0.03333333333333334 -1166 694 -0.0004999999999999994 -1166 695 -0.001040740740740733 -1166 696 -0.009259259259259162 -1166 701 -0.002362962962962969 -1166 702 -0.03703703703703699 -1166 706 0.0004999999999999994 -1166 707 -0.001040740740740741 -1166 708 -0.009259259259259316 -1166 1162 2.602085213965211e-18 -1166 1163 0.0002814814814814606 -1166 1164 -1.214306433183765e-17 -1166 1165 1.084202172485504e-19 -1166 1166 0.008325925925925933 -1166 1167 1.387778780781446e-17 -1166 1168 -2.602085213965211e-18 -1166 1169 0.0002814814814815096 -1166 1170 9.540979117872439e-17 -1167 694 -0.01296296296296292 -1167 695 -0.01342592592592579 -1167 696 -0.1551783264746216 -1167 700 -7.28583859910259e-17 -1167 701 -0.02870370370370394 -1167 702 -0.2040466392318261 -1167 706 0.01296296296296299 -1167 707 -0.01342592592592601 -1167 708 -0.1551783264746243 -1167 1162 -0.02407407407407412 -1167 1163 3.469446951953614e-18 -1167 1164 -0.1063100137174242 -1167 1165 1.682681771697503e-16 -1167 1166 1.838806884535416e-16 -1167 1167 1.241426611796988 -1167 1168 0.02407407407407394 -1167 1169 1.734723475976807e-18 -1167 1170 -0.1063100137174177 -1168 700 -0.0009703703703703701 -1168 701 -0.0005000000000000007 -1168 702 -0.008333333333333331 -1168 706 -0.0002814814814815097 -1168 707 -6.505213034913027e-19 -1168 708 -1.734723475976807e-18 -1168 712 -0.0009703703703703723 -1168 713 0.0005000000000000013 -1168 714 0.008333333333333333 -1168 1165 -0.001659259259259226 -1168 1166 -2.710505431213761e-18 -1168 1167 -0.03333333333333333 -1168 1168 0.007762962962962943 -1168 1169 -2.49366499671666e-18 -1168 1170 -1.040834085586084e-17 -1168 1171 -0.001659259259259226 -1168 1172 5.421010862427522e-18 -1168 1173 0.03333333333333334 -1169 700 -0.0005000000000000008 -1169 701 -0.00104074074074075 -1169 702 -0.009259259259259354 -1169 706 -6.505213034913027e-19 -1169 707 -0.002362962962963001 -1169 708 -0.03703703703703742 -1169 712 0.0005000000000000013 -1169 713 -0.001040740740740754 -1169 714 -0.009259259259259404 -1169 1165 -2.49366499671666e-18 -1169 1166 0.0002814814814815095 -1169 1167 -5.204170427930421e-17 -1169 1168 -2.602085213965211e-18 -1169 1169 0.008325925925925962 -1169 1170 -2.706168622523819e-16 -1169 1171 5.204170427930421e-18 -1169 1172 0.0002814814814815098 -1169 1173 -2.567390744445674e-16 -1170 700 -0.01296296296296305 -1170 701 -0.01342592592592613 -1170 702 -0.1551783264746254 -1170 706 4.85722573273506e-17 -1170 707 -0.02870370370370405 -1170 708 -0.2040466392318304 -1170 712 0.012962962962963 -1170 713 -0.01342592592592602 -1170 714 -0.1551783264746234 -1170 1165 -0.02407407407407398 -1170 1166 2.775557561562891e-17 -1170 1167 -0.1063100137174177 -1170 1168 -1.405126015541214e-16 -1170 1169 9.020562075079397e-17 -1170 1170 1.241426611796989 -1170 1171 0.0240740740740741 -1170 1172 1.908195823574488e-17 -1170 1173 -0.106310013717416 -1171 706 -0.0009703703703703634 -1171 707 -0.0004999999999999986 -1171 708 -0.008333333333333331 -1171 712 -0.000281481481481488 -1171 713 -2.059984127722458e-18 -1171 718 -0.0009703703703703737 -1171 719 0.0005000000000000007 -1171 720 0.008333333333333333 -1171 1168 -0.001659259259259226 -1171 1169 5.204170427930421e-18 -1171 1170 -0.03333333333333333 -1171 1171 0.007762962962962958 -1171 1172 -7.914675859144182e-18 -1171 1173 -6.938893903907228e-18 -1171 1174 -0.001659259259259277 -1171 1175 2.710505431213761e-18 -1171 1176 0.03333333333333334 -1172 706 -0.0004999999999999987 -1172 707 -0.001040740740740736 -1172 708 -0.00925925925925933 -1172 712 -1.951563910473908e-18 -1172 713 -0.002362962962962972 -1172 714 -0.03703703703703703 -1172 718 0.0005000000000000008 -1172 719 -0.001040740740740743 -1172 720 -0.009259259259259228 -1172 1168 5.421010862427522e-18 -1172 1169 0.0002814814814815098 -1172 1170 4.163336342344337e-17 -1172 1171 -7.914675859144182e-18 -1172 1172 0.008325925925925935 -1172 1173 1.179611963664229e-16 -1172 1174 2.602085213965211e-18 -1172 1175 0.0002814814814814666 -1172 1176 -1.370431546021678e-16 -1173 706 -0.01296296296296289 -1173 707 -0.01342592592592578 -1173 708 -0.1551783264746213 -1173 712 -8.500145032286355e-17 -1173 713 -0.02870370370370406 -1173 714 -0.2040466392318248 -1173 718 0.01296296296296297 -1173 719 -0.01342592592592591 -1173 720 -0.1551783264746226 -1173 1168 -0.02407407407407412 -1173 1169 -1.040834085586084e-17 -1173 1170 -0.106310013717416 -1173 1171 1.387778780781446e-17 -1173 1172 1.318389841742373e-16 -1173 1173 1.241426611796978 -1173 1174 0.0240740740740741 -1173 1175 1.561251128379126e-17 -1173 1176 -0.1063100137174232 -1174 712 -0.0009703703703703694 -1174 713 -0.0004999999999999994 -1174 714 -0.008333333333333333 -1174 718 -0.0002814814814814639 -1174 719 -6.505213034913027e-19 -1174 724 -0.0009703703703703721 -1174 725 0.0005 -1174 726 0.008333333333333335 -1174 1171 -0.001659259259259277 -1174 1172 2.602085213965211e-18 -1174 1173 -0.03333333333333333 -1174 1174 0.007762962962962975 -1174 1175 -2.602085213965211e-18 -1174 1176 -1.387778780781446e-17 -1174 1177 -0.001659259259259283 -1174 1179 0.03333333333333334 -1175 712 -0.0004999999999999994 -1175 713 -0.001040740740740734 -1175 714 -0.009259259259259189 -1175 718 -7.589415207398531e-19 -1175 719 -0.00236296296296294 -1175 720 -0.0370370370370367 -1175 724 0.0005000000000000001 -1175 725 -0.001040740740740737 -1175 726 -0.009259259259259169 -1175 1171 2.710505431213761e-18 -1175 1172 0.0002814814814814665 -1175 1173 1.040834085586084e-17 -1175 1174 -2.602085213965211e-18 -1175 1175 0.008325925925925903 -1175 1176 -1.040834085586084e-17 -1175 1177 -2.168404344971009e-19 -1175 1178 0.0002814814814814615 -1175 1179 -4.163336342344337e-17 -1176 712 -0.01296296296296292 -1176 713 -0.01342592592592579 -1176 714 -0.1551783264746216 -1176 718 -2.775557561562891e-17 -1176 719 -0.02870370370370361 -1176 720 -0.2040466392318205 -1176 724 0.01296296296296295 -1176 725 -0.01342592592592588 -1176 726 -0.1551783264746221 -1176 1171 -0.02407407407407412 -1176 1172 -3.469446951953614e-18 -1176 1173 -0.1063100137174232 -1176 1174 1.387778780781446e-17 -1176 1175 1.700029006457271e-16 -1176 1176 1.241426611796977 -1176 1177 0.02407407407407411 -1176 1178 2.081668171172169e-17 -1176 1179 -0.1063100137174241 -1177 718 -0.0009703703703703722 -1177 719 -0.0005000000000000001 -1177 720 -0.008333333333333333 -1177 724 -0.0002814814814814856 -1177 725 -1.192622389734055e-18 -1177 726 -3.469446951953614e-18 -1177 730 -0.0009703703703703723 -1177 731 0.0005000000000000013 -1177 732 0.008333333333333333 -1177 1174 -0.001659259259259283 -1177 1175 -1.084202172485504e-19 -1177 1176 -0.03333333333333333 -1177 1177 0.007762962962962959 -1177 1178 -5.312590645178972e-18 -1177 1179 -1.387778780781446e-17 -1177 1180 -0.001659259259259226 -1177 1181 5.421010862427522e-18 -1177 1182 0.03333333333333334 -1178 718 -0.0005 -1178 719 -0.001040740740740737 -1178 720 -0.00925925925925917 -1178 724 -1.409462824231156e-18 -1178 725 -0.002362962962962969 -1178 726 -0.03703703703703704 -1178 730 0.0005000000000000013 -1178 731 -0.001040740740740754 -1178 732 -0.009259259259259404 -1178 1175 0.0002814814814814615 -1178 1176 -4.163336342344337e-17 -1178 1177 -5.204170427930421e-18 -1178 1178 0.008325925925925931 -1178 1179 -1.908195823574488e-16 -1178 1180 5.204170427930421e-18 -1178 1181 0.0002814814814815098 -1178 1182 -2.567390744445674e-16 -1179 718 -0.01296296296296295 -1179 719 -0.01342592592592588 -1179 720 -0.1551783264746221 -1179 724 -5.377642775528102e-17 -1179 725 -0.02870370370370384 -1179 726 -0.2040466392318244 -1179 730 0.012962962962963 -1179 731 -0.01342592592592602 -1179 732 -0.1551783264746234 -1179 1174 -0.02407407407407412 -1179 1175 2.081668171172169e-17 -1179 1176 -0.1063100137174241 -1179 1177 1.561251128379126e-17 -1179 1178 1.561251128379126e-16 -1179 1179 1.241426611796978 -1179 1180 0.0240740740740741 -1179 1181 1.908195823574488e-17 -1179 1182 -0.106310013717416 -1180 724 -0.0009703703703703634 -1180 725 -0.0004999999999999986 -1180 726 -0.008333333333333331 -1180 730 -0.0002814814814815097 -1180 731 -2.059984127722458e-18 -1180 732 -1.734723475976807e-18 -1180 736 -0.0009703703703703701 -1180 737 0.0005000000000000007 -1180 738 0.008333333333333333 -1180 1177 -0.001659259259259226 -1180 1178 5.204170427930421e-18 -1180 1179 -0.03333333333333333 -1180 1180 0.007762962962962942 -1180 1181 -7.914675859144182e-18 -1180 1182 -1.040834085586084e-17 -1180 1183 -0.001659259259259226 -1180 1184 2.710505431213761e-18 -1180 1185 0.03333333333333334 -1181 724 -0.0004999999999999987 -1181 725 -0.001040740740740736 -1181 726 -0.00925925925925933 -1181 730 -1.843143693225358e-18 -1181 731 -0.002362962962963001 -1181 732 -0.03703703703703733 -1181 736 0.0005000000000000007 -1181 737 -0.00104074074074075 -1181 738 -0.009259259259259373 -1181 1177 5.421010862427522e-18 -1181 1178 0.0002814814814815098 -1181 1179 4.163336342344337e-17 -1181 1180 -8.023096076392733e-18 -1181 1181 0.008325925925925962 -1181 1182 1.179611963664229e-16 -1181 1183 2.602085213965211e-18 -1181 1184 0.0002814814814815098 -1181 1185 -1.405126015541214e-16 -1182 724 -0.01296296296296289 -1182 725 -0.01342592592592578 -1182 726 -0.1551783264746213 -1182 730 -1.595945597898663e-16 -1182 731 -0.02870370370370436 -1182 732 -0.2040466392318304 -1182 736 0.01296296296296305 -1182 737 -0.01342592592592606 -1182 738 -0.1551783264746254 -1182 1177 -0.02407407407407412 -1182 1178 -1.040834085586084e-17 -1182 1179 -0.106310013717416 -1182 1180 1.613292832658431e-16 -1182 1181 1.318389841742373e-16 -1182 1182 1.241426611796989 -1182 1183 0.02407407407407396 -1182 1184 1.561251128379126e-17 -1182 1185 -0.1063100137174177 -1183 730 -0.0009703703703703656 -1183 731 -0.0004999999999999994 -1183 732 -0.008333333333333331 -1183 736 -0.0002814814814814881 -1183 737 -6.505213034913027e-19 -1183 742 -0.0009703703703703715 -1183 743 0.0005 -1183 744 0.008333333333333333 -1183 1180 -0.001659259259259226 -1183 1181 2.602085213965211e-18 -1183 1182 -0.03333333333333333 -1183 1183 0.007762962962962958 -1183 1184 -8.023096076392733e-18 -1183 1185 -6.938893903907228e-18 -1183 1186 -0.001659259259259278 -1183 1187 5.421010862427522e-18 -1183 1188 0.03333333333333334 -1184 730 -0.0004999999999999995 -1184 731 -0.001040740740740741 -1184 732 -0.009259259259259339 -1184 736 -6.505213034913027e-19 -1184 737 -0.002362962962962972 -1184 738 -0.03703703703703705 -1184 742 0.0005000000000000001 -1184 743 -0.001040740740740738 -1184 744 -0.009259259259259196 -1184 1180 2.818925648462312e-18 -1184 1181 0.0002814814814815098 -1184 1182 8.673617379884035e-18 -1184 1183 -8.023096076392733e-18 -1184 1184 0.008325925925925938 -1184 1185 3.122502256758253e-17 -1184 1186 5.204170427930421e-18 -1184 1187 0.0002814814814814629 -1184 1188 -2.237793284010081e-16 -1185 730 -0.01296296296296299 -1185 731 -0.01342592592592594 -1185 732 -0.1551783264746243 -1185 736 4.85722573273506e-17 -1185 737 -0.02870370370370393 -1185 738 -0.2040466392318265 -1185 742 0.01296296296296295 -1185 743 -0.01342592592592589 -1185 744 -0.1551783264746221 -1185 1180 -0.02407407407407397 -1185 1181 -1.734723475976807e-18 -1185 1182 -0.1063100137174177 -1185 1183 -1.734723475976807e-16 -1185 1184 1.196959198423997e-16 -1185 1185 1.241426611796991 -1185 1186 0.02407407407407414 -1185 1187 -7.806255641895632e-17 -1185 1188 -0.106310013717424 -1186 736 -0.0009703703703703715 -1186 737 -0.0005 -1186 738 -0.008333333333333333 -1186 742 -0.0002814814814814747 -1186 743 6.505213034913027e-19 -1186 748 -0.000970370370370368 -1186 749 0.0004999999999999994 -1186 750 0.008333333333333333 -1186 1183 -0.001659259259259278 -1186 1184 5.204170427930421e-18 -1186 1185 -0.03333333333333333 -1186 1186 0.007762962962962967 -1186 1187 -7.914675859144182e-18 -1186 1188 -1.387778780781446e-17 -1186 1189 -0.001659259259259257 -1186 1190 2.710505431213761e-18 -1186 1191 0.03333333333333334 -1187 736 -0.0005 -1187 737 -0.001040740740740738 -1187 738 -0.009259259259259198 -1187 742 5.421010862427522e-19 -1187 743 -0.002362962962962954 -1187 744 -0.03703703703703695 -1187 748 0.0004999999999999994 -1187 749 -0.001040740740740737 -1187 750 -0.009259259259259255 -1187 1183 5.421010862427522e-18 -1187 1184 0.0002814814814814629 -1187 1185 7.28583859910259e-17 -1187 1186 -7.914675859144182e-18 -1187 1187 0.008325925925925917 -1187 1188 6.938893903907228e-17 -1187 1189 2.49366499671666e-18 -1187 1190 0.0002814814814814864 -1187 1191 6.591949208711867e-17 -1188 736 -0.01296296296296295 -1188 737 -0.01342592592592589 -1188 738 -0.1551783264746221 -1188 742 2.949029909160572e-17 -1188 743 -0.02870370370370362 -1188 744 -0.2040466392318224 -1188 748 0.01296296296296292 -1188 749 -0.01342592592592588 -1188 750 -0.1551783264746217 -1188 1183 -0.02407407407407394 -1188 1184 -1.110223024625157e-16 -1188 1185 -0.106310013717424 -1188 1186 -3.521488656232918e-16 -1188 1187 -4.85722573273506e-17 -1188 1188 1.241426611796977 -1188 1189 0.02407407407407429 -1188 1190 9.540979117872439e-17 -1188 1191 -0.1063100137174197 -1189 742 -0.0009703703703703725 -1189 743 -0.0005000000000000007 -1189 744 -0.008333333333333333 -1189 748 -0.0002814814814814747 -1189 754 -0.0009703703703703737 -1189 755 0.0005000000000000007 -1189 756 0.008333333333333333 -1189 1186 -0.001659259259259257 -1189 1187 2.49366499671666e-18 -1189 1188 -0.03333333333333333 -1189 1189 0.007762962962962966 -1189 1190 -5.204170427930421e-18 -1189 1191 -1.387778780781446e-17 -1189 1192 -0.001659259259259277 -1189 1193 2.710505431213761e-18 -1189 1194 0.03333333333333334 -1190 742 -0.0005000000000000007 -1190 743 -0.001040740740740746 -1190 744 -0.009259259259259293 -1190 749 -0.002362962962962954 -1190 750 -0.037037037037037 -1190 754 0.0005000000000000008 -1190 755 -0.001040740740740743 -1190 756 -0.009259259259259228 -1190 1186 2.710505431213761e-18 -1190 1187 0.0002814814814814864 -1190 1188 2.151057110211241e-16 -1190 1189 -5.204170427930421e-18 -1190 1190 0.008325925925925912 -1190 1191 -1.040834085586084e-16 -1190 1192 2.602085213965211e-18 -1190 1193 0.0002814814814814666 -1190 1194 -1.370431546021678e-16 -1191 742 -0.01296296296296297 -1191 743 -0.013425925925926 -1191 744 -0.1551783264746227 -1191 749 -0.02870370370370347 -1191 750 -0.2040466392318224 -1191 754 0.01296296296296297 -1191 755 -0.01342592592592591 -1191 756 -0.1551783264746226 -1191 1186 -0.02407407407407408 -1191 1187 7.806255641895632e-17 -1191 1188 -0.1063100137174197 -1191 1189 -1.908195823574488e-17 -1191 1190 -5.898059818321144e-17 -1191 1191 1.241426611796974 -1191 1192 0.0240740740740741 -1191 1193 1.561251128379126e-17 -1191 1194 -0.1063100137174232 -1192 748 -0.0009703703703703694 -1192 749 -0.0004999999999999994 -1192 750 -0.008333333333333333 -1192 754 -0.0002814814814814882 -1192 755 -5.421010862427522e-19 -1192 756 -1.734723475976807e-18 -1192 760 -0.000970370370370368 -1192 761 0.0004999999999999999 -1192 762 0.008333333333333333 -1192 1189 -0.001659259259259277 -1192 1190 2.602085213965211e-18 -1192 1191 -0.03333333333333333 -1192 1192 0.007762962962962959 -1192 1193 -2.710505431213761e-18 -1192 1194 -1.734723475976807e-17 -1192 1195 -0.001659259259259226 -1192 1196 1.084202172485504e-19 -1192 1197 0.03333333333333334 -1193 748 -0.0004999999999999994 -1193 749 -0.001040740740740734 -1193 750 -0.009259259259259189 -1193 754 -6.505213034913027e-19 -1193 755 -0.002362962962962972 -1193 756 -0.03703703703703705 -1193 760 0.0005 -1193 761 -0.001040740740740745 -1193 762 -0.009259259259259345 -1193 1189 2.710505431213761e-18 -1193 1190 0.0002814814814814665 -1193 1191 1.040834085586084e-17 -1193 1192 -2.818925648462312e-18 -1193 1193 0.008325925925925935 -1193 1194 2.42861286636753e-17 -1193 1195 -1.084202172485504e-19 -1193 1196 0.0002814814814815098 -1193 1197 -2.255140518769849e-17 -1194 748 -0.01296296296296292 -1194 749 -0.01342592592592579 -1194 750 -0.1551783264746216 -1194 754 -1.006139616066548e-16 -1194 755 -0.02870370370370393 -1194 756 -0.2040466392318265 -1194 760 0.01296296296296302 -1194 761 -0.01342592592592604 -1194 762 -0.1551783264746249 -1194 1189 -0.02407407407407412 -1194 1190 -3.469446951953614e-18 -1194 1191 -0.1063100137174232 -1194 1192 1.647987302177967e-16 -1194 1193 1.283695372222837e-16 -1194 1194 1.241426611796988 -1194 1195 0.02407407407407396 -1194 1196 1.040834085586084e-17 -1194 1197 -0.1063100137174177 -1195 754 -0.000970370370370368 -1195 755 -0.0005 -1195 756 -0.008333333333333331 -1195 760 -0.0002814814814815097 -1195 761 7.589415207398531e-19 -1195 762 -1.734723475976807e-18 -1195 766 -0.0009703703703703656 -1195 767 0.0004999999999999993 -1195 768 0.008333333333333333 -1195 1192 -0.001659259259259226 -1195 1193 -1.084202172485504e-19 -1195 1194 -0.03333333333333333 -1195 1195 0.007762962962962944 -1195 1196 2.710505431213761e-18 -1195 1197 -1.040834085586084e-17 -1195 1198 -0.001659259259259226 -1195 1199 -2.602085213965211e-18 -1195 1200 0.03333333333333334 -1196 754 -0.0005000000000000001 -1196 755 -0.001040740740740745 -1196 756 -0.009259259259259345 -1196 760 7.589415207398531e-19 -1196 761 -0.002362962962963001 -1196 762 -0.03703703703703737 -1196 766 0.0004999999999999994 -1196 767 -0.001040740740740741 -1196 768 -0.009259259259259316 -1196 1192 2.168404344971009e-19 -1196 1193 0.0002814814814815099 -1196 1194 -2.081668171172169e-17 -1196 1195 2.710505431213761e-18 -1196 1196 0.008325925925925962 -1196 1197 -5.551115123125783e-17 -1196 1198 -2.710505431213761e-18 -1196 1199 0.0002814814814815098 -1196 1200 9.540979117872439e-17 -1197 754 -0.01296296296296302 -1197 755 -0.01342592592592604 -1197 756 -0.1551783264746249 -1197 760 1.040834085586084e-16 -1197 761 -0.02870370370370423 -1197 762 -0.2040466392318304 -1197 766 0.01296296296296292 -1197 767 -0.01342592592592595 -1197 768 -0.1551783264746218 -1197 1192 -0.02407407407407396 -1197 1193 1.214306433183765e-17 -1197 1194 -0.1063100137174177 -1197 1195 -1.405126015541214e-16 -1197 1196 1.144917494144693e-16 -1197 1197 1.241426611796989 -1197 1198 0.0240740740740741 -1197 1199 1.040834085586084e-17 -1197 1200 -0.106310013717416 -1198 760 -0.0009703703703703701 -1198 761 -0.0005000000000000007 -1198 762 -0.008333333333333331 -1198 766 -0.0002814814814814749 -1198 767 -6.505213034913027e-19 -1198 772 -0.0009703703703703784 -1198 773 0.0005000000000000013 -1198 774 0.008333333333333335 -1198 1195 -0.001659259259259226 -1198 1196 -2.710505431213761e-18 -1198 1197 -0.03333333333333333 -1198 1198 0.007762962962962967 -1198 1199 -2.49366499671666e-18 -1198 1200 -6.938893903907228e-18 -1198 1201 -0.001659259259259308 -1198 1202 5.204170427930421e-18 -1198 1203 0.03333333333333334 -1199 760 -0.0005000000000000008 -1199 761 -0.00104074074074075 -1199 762 -0.009259259259259354 -1199 766 -6.505213034913027e-19 -1199 767 -0.002362962962962954 -1199 768 -0.03703703703703701 -1199 772 0.0005000000000000013 -1199 773 -0.001040740740740743 -1199 774 -0.009259259259259196 -1199 1195 -2.602085213965211e-18 -1199 1196 0.0002814814814815099 -1199 1197 -5.204170427930421e-17 -1199 1198 -2.49366499671666e-18 -1199 1199 0.008325925925925917 -1199 1200 -1.249000902703301e-16 -1199 1201 5.421010862427522e-18 -1199 1202 0.0002814814814814399 -1199 1203 -1.89084858881472e-16 -1200 760 -0.01296296296296297 -1200 761 -0.01342592592592606 -1200 762 -0.1551783264746229 -1200 766 -2.949029909160572e-17 -1200 767 -0.02870370370370345 -1200 768 -0.2040466392318224 -1200 772 0.012962962962963 -1200 773 -0.01342592592592587 -1200 774 -0.155178326474623 -1200 1195 -0.02407407407407412 -1200 1196 2.775557561562891e-17 -1200 1197 -0.106310013717416 -1200 1198 1.040834085586084e-17 -1200 1199 -7.632783294297951e-17 -1200 1200 1.241426611796977 -1200 1201 0.02407407407407411 -1200 1202 -1.734723475976807e-17 -1200 1203 -0.1063100137174277 -1201 766 -0.0009703703703703695 -1201 767 -0.0004999999999999987 -1201 768 -0.008333333333333333 -1201 772 -0.0002814814814814531 -1201 773 -1.301042606982605e-18 -1201 774 -1.734723475976807e-18 -1201 778 -0.0009703703703703715 -1201 779 0.0005 -1201 780 0.008333333333333333 -1201 1198 -0.001659259259259308 -1201 1199 5.312590645178972e-18 -1201 1200 -0.03333333333333333 -1201 1201 0.007762962962962983 -1201 1202 -5.312590645178972e-18 -1201 1203 -1.040834085586084e-17 -1201 1204 -0.001659259259259277 -1201 1206 0.03333333333333334 -1202 766 -0.0004999999999999987 -1202 767 -0.001040740740740725 -1202 768 -0.009259259259259123 -1202 772 -1.301042606982605e-18 -1202 773 -0.002362962962962925 -1202 774 -0.0370370370370366 -1202 778 0.0005000000000000001 -1202 779 -0.001040740740740738 -1202 780 -0.009259259259259196 -1202 1198 5.204170427930421e-18 -1202 1199 0.00028148148148144 -1202 1200 1.07552855510562e-16 -1202 1201 -5.421010862427522e-18 -1202 1202 0.008325925925925888 -1202 1203 2.775557561562891e-16 -1202 1204 -2.168404344971009e-19 -1202 1205 0.0002814814814814666 -1202 1206 -2.081668171172169e-17 -1203 766 -0.01296296296296289 -1203 767 -0.01342592592592563 -1203 768 -0.1551783264746209 -1203 772 -5.377642775528102e-17 -1203 773 -0.02870370370370342 -1203 774 -0.2040466392318186 -1203 778 0.01296296296296295 -1203 779 -0.01342592592592589 -1203 780 -0.1551783264746221 -1203 1198 -0.02407407407407412 -1203 1199 -4.85722573273506e-17 -1203 1200 -0.1063100137174277 -1203 1201 1.561251128379126e-17 -1203 1202 -2.775557561562891e-17 -1203 1203 1.241426611796976 -1203 1204 0.0240740740740741 -1203 1205 8.673617379884035e-18 -1203 1206 -0.1063100137174232 -1204 772 -0.0009703703703703715 -1204 773 -0.0005 -1204 774 -0.008333333333333333 -1204 778 -0.0002814814814814856 -1204 779 6.505213034913027e-19 -1204 784 -0.0009703703703703662 -1204 785 0.0004999999999999994 -1204 786 0.008333333333333333 -1204 1201 -0.001659259259259277 -1204 1202 -1.084202172485504e-19 -1204 1203 -0.03333333333333333 -1204 1204 0.007762962962962959 -1204 1205 2.710505431213761e-18 -1204 1206 -3.469446951953614e-18 -1204 1207 -0.001659259259259234 -1204 1208 -2.710505431213761e-18 -1204 1209 0.03333333333333334 -1205 772 -0.0005 -1205 773 -0.001040740740740738 -1205 774 -0.009259259259259198 -1205 778 6.505213034913027e-19 -1205 779 -0.002362962962962969 -1205 780 -0.03703703703703702 -1205 784 0.0004999999999999994 -1205 785 -0.00104074074074074 -1205 786 -0.009259259259259287 -1205 1202 0.0002814814814814665 -1205 1203 -2.081668171172169e-17 -1205 1204 2.710505431213761e-18 -1205 1205 0.008325925925925929 -1205 1206 -1.040834085586084e-16 -1205 1207 -2.710505431213761e-18 -1205 1208 0.0002814814814815037 -1205 1209 7.459310946700271e-17 -1206 772 -0.01296296296296295 -1206 773 -0.01342592592592589 -1206 774 -0.1551783264746221 -1206 778 2.949029909160572e-17 -1206 779 -0.0287037037037039 -1206 780 -0.2040466392318244 -1206 784 0.01296296296296292 -1206 785 -0.01342592592592594 -1206 786 -0.1551783264746218 -1206 1201 -0.02407407407407412 -1206 1202 8.673617379884035e-18 -1206 1203 -0.1063100137174232 -1206 1204 5.204170427930421e-18 -1206 1205 1.665334536937735e-16 -1206 1206 1.241426611796978 -1206 1207 0.02407407407407412 -1206 1208 2.602085213965211e-17 -1206 1209 -0.106310013717417 -1207 778 -0.0009703703703703707 -1207 779 -0.0005000000000000007 -1207 780 -0.008333333333333333 -1207 784 -0.00028148148148151 -1207 790 -0.0009703703703703699 -1207 791 0.0005000000000000007 -1207 792 0.008333333333333335 -1207 1204 -0.001659259259259234 -1207 1205 -2.710505431213761e-18 -1207 1206 -0.03333333333333334 -1207 1207 0.007762962962962945 -1207 1208 -1.084202172485504e-19 -1207 1209 -1.387778780781446e-17 -1207 1210 -0.00165925925925922 -1207 1211 2.818925648462312e-18 -1207 1212 0.03333333333333334 -1208 778 -0.0005000000000000008 -1208 779 -0.001040740740740749 -1208 780 -0.009259259259259325 -1208 784 1.084202172485504e-19 -1208 785 -0.002362962962963002 -1208 786 -0.03703703703703742 -1208 790 0.0005000000000000007 -1208 791 -0.001040740740740751 -1208 792 -0.009259259259259406 -1208 1204 -2.602085213965211e-18 -1208 1205 0.0002814814814815037 -1208 1206 -7.632783294297951e-17 -1208 1208 0.008325925925925964 -1208 1209 -2.393918396847994e-16 -1208 1210 2.710505431213761e-18 -1208 1211 0.0002814814814815153 -1208 1212 -1.179611963664229e-16 -1209 778 -0.01296296296296297 -1209 779 -0.01342592592592606 -1209 780 -0.1551783264746228 -1209 784 -7.632783294297951e-17 -1209 785 -0.02870370370370408 -1209 786 -0.2040466392318304 -1209 790 0.01296296296296305 -1209 791 -0.01342592592592607 -1209 792 -0.1551783264746254 -1209 1204 -0.02407407407407412 -1209 1205 3.122502256758253e-17 -1209 1206 -0.106310013717417 -1209 1207 1.700029006457271e-16 -1209 1208 9.194034422677078e-17 -1209 1209 1.241426611796989 -1209 1210 0.02407407407407394 -1209 1211 -3.469446951953614e-18 -1209 1212 -0.1063100137174168 -1210 784 -0.0009703703703703656 -1210 785 -0.0004999999999999995 -1210 786 -0.008333333333333333 -1210 790 -0.0002814814814814777 -1210 791 -1.192622389734055e-18 -1210 792 -1.734723475976807e-18 -1210 796 -0.0009703703703703761 -1210 797 0.0005000000000000007 -1210 798 0.008333333333333335 -1210 1207 -0.00165925925925922 -1210 1208 2.602085213965211e-18 -1210 1209 -0.03333333333333333 -1210 1210 0.007762962962962966 -1210 1211 -5.095750210681871e-18 -1210 1212 -6.938893903907228e-18 -1210 1213 -0.001659259259259308 -1210 1214 2.602085213965211e-18 -1210 1215 0.03333333333333334 -1211 784 -0.0004999999999999995 -1211 785 -0.001040740740740742 -1211 786 -0.00925925925925937 -1211 790 -1.301042606982605e-18 -1211 791 -0.002362962962962958 -1211 792 -0.03703703703703701 -1211 796 0.0005000000000000007 -1211 797 -0.001040740740740738 -1211 798 -0.009259259259259167 -1211 1207 2.710505431213761e-18 -1211 1208 0.0002814814814815154 -1211 1209 2.775557561562891e-17 -1211 1210 -5.095750210681871e-18 -1211 1211 0.008325925925925921 -1211 1212 1.665334536937735e-16 -1211 1213 2.710505431213761e-18 -1211 1214 0.0002814814814814399 -1211 1215 -7.28583859910259e-17 -1212 784 -0.012962962962963 -1212 785 -0.01342592592592595 -1212 786 -0.1551783264746244 -1212 790 2.081668171172169e-17 -1212 791 -0.02870370370370362 -1212 792 -0.2040466392318246 -1212 796 0.01296296296296297 -1212 797 -0.01342592592592584 -1212 798 -0.1551783264746225 -1212 1207 -0.02407407407407397 -1212 1208 -8.673617379884035e-18 -1212 1209 -0.1063100137174168 -1212 1210 -1.491862189340054e-16 -1212 1211 -8.673617379884035e-17 -1212 1212 1.241426611796987 -1212 1213 0.02407407407407411 -1212 1214 -2.081668171172169e-17 -1212 1215 -0.1063100137174277 -1213 790 -0.0009703703703703718 -1213 791 -0.0004999999999999994 -1213 792 -0.008333333333333333 -1213 796 -0.0002814814814814748 -1213 797 -2.602085213965211e-18 -1213 798 -3.469446951953614e-18 -1213 802 -0.0009703703703703745 -1213 803 0.000500000000000002 -1213 804 0.008333333333333333 -1213 1210 -0.001659259259259308 -1213 1211 2.710505431213761e-18 -1213 1212 -0.03333333333333333 -1213 1213 0.007762962962962968 -1213 1214 -1.073360150760649e-17 -1213 1215 -1.387778780781446e-17 -1213 1216 -0.001659259259259226 -1213 1217 8.023096076392733e-18 -1213 1218 0.03333333333333334 -1214 790 -0.0004999999999999994 -1214 791 -0.00104074074074073 -1214 792 -0.00925925925925913 -1214 796 -2.602085213965211e-18 -1214 797 -0.002362962962962954 -1214 798 -0.03703703703703705 -1214 802 0.000500000000000002 -1214 803 -0.001040740740740759 -1214 804 -0.009259259259259347 -1214 1210 2.602085213965211e-18 -1214 1211 0.00028148148148144 -1214 1212 7.632783294297951e-17 -1214 1213 -1.073360150760649e-17 -1214 1214 0.008325925925925915 -1214 1215 -2.810252031082427e-16 -1214 1216 7.914675859144182e-18 -1214 1217 0.0002814814814815098 -1214 1218 -3.122502256758253e-17 -1215 790 -0.01296296296296292 -1215 791 -0.01342592592592572 -1215 792 -0.1551783264746215 -1215 796 -1.092875789865388e-16 -1215 797 -0.02870370370370334 -1215 798 -0.2040466392318225 -1215 802 0.01296296296296303 -1215 803 -0.01342592592592632 -1215 804 -0.1551783264746239 -1215 1210 -0.02407407407407412 -1215 1211 -3.989863994746656e-17 -1215 1212 -0.1063100137174277 -1215 1213 1.387778780781446e-17 -1215 1214 -8.500145032286355e-17 -1215 1215 1.241426611796977 -1215 1216 0.0240740740740741 -1215 1217 6.418476861114186e-17 -1215 1218 -0.106310013717416 -1216 796 -0.0009703703703703612 -1216 797 -0.000499999999999998 -1216 798 -0.008333333333333331 -1216 802 -0.0002814814814814854 -1216 803 -7.589415207398531e-19 -1216 808 -0.0009703703703703678 -1216 809 0.0004999999999999987 -1216 810 0.008333333333333335 -1216 1213 -0.001659259259259226 -1216 1214 7.806255641895632e-18 -1216 1215 -0.03333333333333333 -1216 1216 0.007762962962962959 -1216 1217 -2.49366499671666e-18 -1216 1218 -6.938893903907228e-18 -1216 1219 -0.001659259259259283 -1216 1220 -5.312590645178972e-18 -1216 1221 0.03333333333333334 -1217 796 -0.0004999999999999981 -1217 797 -0.001040740740740732 -1217 798 -0.009259259259259236 -1217 802 -6.505213034913027e-19 -1217 803 -0.002362962962962969 -1217 804 -0.03703703703703701 -1217 808 0.0004999999999999987 -1217 809 -0.001040740740740729 -1217 810 -0.009259259259259111 -1217 1213 8.023096076392733e-18 -1217 1214 0.0002814814814815099 -1217 1215 4.128641872824801e-16 -1217 1216 -2.49366499671666e-18 -1217 1217 0.008325925925925931 -1217 1218 -5.204170427930421e-17 -1217 1219 -5.421010862427522e-18 -1217 1220 0.0002814814814814615 -1217 1221 1.925543058334256e-16 -1218 796 -0.01296296296296286 -1218 797 -0.01342592592592596 -1218 798 -0.1551783264746208 -1218 802 -2.775557561562891e-17 -1218 803 -0.02870370370370394 -1218 804 -0.2040466392318244 -1218 808 0.01296296296296289 -1218 809 -0.01342592592592583 -1218 810 -0.1551783264746211 -1218 1213 -0.02407407407407412 -1218 1214 1.561251128379126e-17 -1218 1215 -0.106310013717416 -1218 1216 1.214306433183765e-17 -1218 1217 1.595945597898663e-16 -1218 1218 1.241426611796978 -1218 1219 0.02407407407407411 -1218 1220 1.561251128379126e-17 -1218 1221 -0.1063100137174241 -1219 802 -0.0009703703703703766 -1219 803 -0.0005000000000000014 -1219 804 -0.008333333333333333 -1219 808 -0.0002814814814814887 -1219 809 9.75781955236954e-19 -1219 810 -1.387778780781446e-17 -1219 814 -0.0009703703703703667 -1219 815 0.0004999999999999998 -1219 816 0.008333333333333333 -1219 1216 -0.001659259259259283 -1219 1217 -5.421010862427522e-18 -1219 1218 -0.03333333333333333 -1219 1219 0.00776296296296296 -1219 1220 6.179952383167375e-18 -1219 1221 -6.938893903907228e-18 -1219 1222 -0.00165925925925922 -1219 1223 4.336808689942018e-19 -1219 1224 0.03333333333333334 -1220 802 -0.0005000000000000013 -1220 803 -0.001040740740740747 -1220 804 -0.009259259259259186 -1220 808 1.084202172485504e-18 -1220 809 -0.002362962962962973 -1220 810 -0.03703703703703715 -1220 814 0.0004999999999999999 -1220 815 -0.001040740740740746 -1220 816 -0.009259259259259377 -1220 1216 -5.421010862427522e-18 -1220 1217 0.0002814814814814613 -1220 1218 -1.058181320345852e-16 -1220 1219 6.179952383167375e-18 -1220 1220 0.008325925925925935 -1220 1221 -3.261280134836397e-16 -1220 1222 4.336808689942018e-19 -1220 1223 0.0002814814814815153 -1221 802 -0.012962962962963 -1221 803 -0.01342592592592607 -1221 804 -0.1551783264746231 -1221 808 -3.122502256758253e-17 -1221 809 -0.02870370370370365 -1221 810 -0.2040466392318267 -1221 814 0.01296296296296302 -1221 815 -0.01342592592592604 -1221 816 -0.155178326474625 -1221 1216 -0.02407407407407412 -1221 1217 4.85722573273506e-17 -1221 1218 -0.1063100137174241 -1221 1219 1.717376241217039e-16 -1221 1220 8.153200337090993e-17 -1221 1221 1.241426611796988 -1221 1222 0.02407407407407394 -1221 1223 -1.387778780781446e-17 -1221 1224 -0.1063100137174168 -1222 808 -0.0009703703703703686 -1222 809 -0.0005000000000000002 -1222 810 -0.008333333333333342 -1222 814 -0.000140740740740756 -1222 815 0.0004999999999999997 -1222 816 -0.008333333333333356 -1222 1219 -0.00165925925925922 -1222 1220 4.336808689942018e-19 -1222 1221 -0.03333333333333333 -1222 1222 0.00388148148148147 -1222 1223 7.589415207398531e-19 -1222 1224 -0.03333333333333333 -1223 1223 1 -1224 808 -0.01296296296296304 -1224 809 -0.01342592592592606 -1224 810 -0.1551783264746252 -1224 814 0.01296296296296303 -1224 815 -0.01435185185185207 -1224 816 -0.1020233196159163 -1224 1219 -0.02407407407407397 -1224 1220 3.122502256758253e-17 -1224 1221 -0.1063100137174168 -1224 1222 0.02407407407407396 -1224 1223 -1.908195823574488e-17 -1224 1224 0.6207133058984996 -1225 817 -0.0002814814814814805 -1225 818 1.084202172485504e-19 -1225 819 -3.469446951953614e-18 -1225 820 -0.0009703703703703708 -1225 821 -0.0005000000000000001 -1225 822 -0.008333333333333333 -1225 823 -0.0009703703703703704 -1225 824 0.0005 -1225 825 0.008333333333333335 -1225 1225 0.007762962962962964 -1225 1226 -2.168404344971009e-19 -1225 1227 -1.040834085586084e-17 -1225 1228 -0.001659259259259261 -1225 1230 -0.03333333333333332 -1225 1231 -0.001659259259259257 -1225 1232 -1.084202172485504e-19 -1225 1233 0.03333333333333333 -1226 817 1.084202172485504e-19 -1226 818 -0.002362962962962962 -1226 819 -0.03703703703703703 -1226 820 -0.0005 -1226 821 -0.001040740740740741 -1226 822 -0.009259259259259252 -1226 823 0.0005 -1226 824 -0.001040740740740741 -1226 825 -0.009259259259259262 -1226 1225 -3.252606517456513e-19 -1226 1226 0.008325925925925928 -1226 1228 -1.084202172485504e-19 -1226 1229 0.00028148148148148 -1226 1231 -2.168404344971009e-19 -1226 1232 0.0002814814814814834 -1226 1233 1.734723475976807e-18 -1227 817 -1.734723475976807e-18 -1227 818 -0.0287037037037037 -1227 819 -0.2040466392318242 -1227 820 -0.01296296296296296 -1227 821 -0.01342592592592592 -1227 822 -0.1551783264746226 -1227 823 0.01296296296296296 -1227 824 -0.01342592592592593 -1227 825 -0.1551783264746228 -1227 1225 1.908195823574488e-17 -1227 1226 1.734723475976807e-18 -1227 1227 1.241426611796982 -1227 1228 -0.02407407407407407 -1227 1229 -1.734723475976807e-18 -1227 1230 -0.1063100137174213 -1227 1231 0.02407407407407406 -1227 1232 5.204170427930421e-18 -1227 1233 -0.1063100137174209 -1228 1228 1 -1229 1229 1 -1230 817 0.01296296296296296 -1230 818 -0.01342592592592592 -1230 819 -0.1551783264746226 -1230 820 -0.01296296296296296 -1230 821 -0.01435185185185183 -1230 822 -0.1020233196159119 -1230 1225 0.02407407407407406 -1230 1226 -1.734723475976807e-18 -1230 1227 -0.1063100137174213 -1230 1228 -0.02407407407407406 -1230 1230 0.6207133058984904 -1231 817 -0.0009703703703703705 -1231 818 -0.0005 -1231 819 -0.008333333333333333 -1231 823 -0.0002814814814814804 -1231 825 1.040834085586084e-17 -1231 826 -0.000970370370370371 -1231 827 0.0005000000000000002 -1231 828 0.00833333333333334 -1231 1225 -0.001659259259259257 -1231 1226 -1.084202172485504e-19 -1231 1227 -0.03333333333333332 -1231 1231 0.007762962962962963 -1231 1232 -1.084202172485504e-19 -1231 1233 1.387778780781446e-17 -1231 1234 -0.001659259259259259 -1231 1235 -2.168404344971009e-19 -1231 1236 0.03333333333333333 -1232 817 -0.0005000000000000001 -1232 818 -0.001040740740740741 -1232 819 -0.009259259259259264 -1232 823 1.084202172485504e-19 -1232 824 -0.002362962962962961 -1232 825 -0.03703703703703705 -1232 826 0.0005000000000000001 -1232 827 -0.001040740740740741 -1232 828 -0.009259259259259262 -1232 1226 0.0002814814814814833 -1232 1227 -1.734723475976807e-18 -1232 1231 -1.084202172485504e-19 -1232 1232 0.008325925925925926 -1232 1233 -3.469446951953614e-18 -1232 1234 -2.168404344971009e-19 -1232 1235 0.0002814814814814816 -1232 1236 1.734723475976807e-18 -1233 817 -0.01296296296296297 -1233 818 -0.01342592592592593 -1233 819 -0.1551783264746228 -1233 823 -1.734723475976807e-18 -1233 824 -0.02870370370370371 -1233 825 -0.2040466392318243 -1233 826 0.01296296296296297 -1233 827 -0.01342592592592593 -1233 828 -0.1551783264746228 -1233 1225 -0.02407407407407407 -1233 1226 -8.673617379884035e-18 -1233 1227 -0.1063100137174209 -1233 1231 -8.673617379884035e-18 -1233 1232 6.938893903907228e-18 -1233 1233 1.241426611796982 -1233 1234 0.02407407407407407 -1233 1235 3.469446951953614e-18 -1233 1236 -0.1063100137174211 -1234 823 -0.0009703703703703705 -1234 824 -0.0005 -1234 825 -0.00833333333333334 -1234 826 -0.0002814814814814806 -1234 827 1.084202172485504e-19 -1234 828 6.938893903907228e-18 -1234 829 -0.0009703703703703706 -1234 830 0.0005 -1234 831 0.00833333333333334 -1234 1231 -0.001659259259259259 -1234 1232 -2.168404344971009e-19 -1234 1233 -0.03333333333333334 -1234 1234 0.007762962962962962 -1234 1235 2.168404344971009e-19 -1234 1236 1.387778780781446e-17 -1234 1237 -0.001659259259259258 -1234 1238 -2.168404344971009e-19 -1234 1239 0.03333333333333334 -1235 823 -0.0004999999999999999 -1235 824 -0.001040740740740741 -1235 825 -0.009259259259259262 -1235 826 1.084202172485504e-19 -1235 827 -0.002362962962962962 -1235 828 -0.03703703703703705 -1235 829 0.0004999999999999999 -1235 830 -0.001040740740740741 -1235 831 -0.009259259259259266 -1235 1231 -2.168404344971009e-19 -1235 1232 0.0002814814814814816 -1235 1233 -8.673617379884035e-18 -1235 1234 2.168404344971009e-19 -1235 1235 0.008325925925925926 -1235 1237 -1.084202172485504e-19 -1235 1238 0.0002814814814814825 -1235 1239 5.204170427930421e-18 -1236 823 -0.01296296296296297 -1236 824 -0.01342592592592592 -1236 825 -0.1551783264746228 -1236 826 -1.040834085586084e-17 -1236 827 -0.02870370370370372 -1236 828 -0.2040466392318244 -1236 829 0.01296296296296297 -1236 830 -0.01342592592592593 -1236 831 -0.155178326474623 -1236 1231 -0.02407407407407408 -1236 1232 3.469446951953614e-18 -1236 1233 -0.1063100137174211 -1236 1234 5.204170427930421e-18 -1236 1235 3.469446951953614e-18 -1236 1236 1.241426611796983 -1236 1237 0.02407407407407407 -1236 1239 -0.106310013717421 -1237 826 -0.0009703703703703706 -1237 827 -0.0004999999999999999 -1237 828 -0.008333333333333342 -1237 829 -0.0002814814814814818 -1237 830 -3.252606517456513e-19 -1237 831 -1.040834085586084e-17 -1237 832 -0.0009703703703703701 -1237 833 0.0005 -1237 834 0.008333333333333337 -1237 1234 -0.001659259259259258 -1237 1235 -1.084202172485504e-19 -1237 1236 -0.03333333333333335 -1237 1237 0.007762962962962963 -1237 1238 5.421010862427522e-19 -1237 1239 -1.040834085586084e-17 -1237 1240 -0.001659259259259257 -1237 1241 1.084202172485504e-19 -1237 1242 0.03333333333333333 -1238 826 -0.0005 -1238 827 -0.001040740740740741 -1238 828 -0.009259259259259264 -1238 829 1.084202172485504e-19 -1238 830 -0.002362962962962963 -1238 831 -0.03703703703703706 -1238 832 0.0004999999999999999 -1238 833 -0.001040740740740741 -1238 834 -0.009259259259259266 -1238 1234 -2.168404344971009e-19 -1238 1235 0.0002814814814814825 -1238 1236 -6.938893903907228e-18 -1238 1237 5.421010862427522e-19 -1238 1238 0.008325925925925929 -1238 1239 -3.469446951953614e-18 -1238 1240 4.336808689942018e-19 -1238 1241 0.0002814814814814835 -1239 826 -0.01296296296296297 -1239 827 -0.01342592592592594 -1239 828 -0.155178326474623 -1239 829 3.469446951953614e-18 -1239 830 -0.02870370370370372 -1239 831 -0.2040466392318247 -1239 832 0.01296296296296297 -1239 833 -0.01342592592592593 -1239 834 -0.1551783264746229 -1239 1234 -0.02407407407407407 -1239 1235 6.938893903907228e-18 -1239 1236 -0.106310013717421 -1239 1237 1.214306433183765e-17 -1239 1238 5.204170427930421e-18 -1239 1239 1.241426611796983 -1239 1240 0.02407407407407406 -1239 1242 -0.1063100137174208 -1240 829 -0.0009703703703703706 -1240 830 -0.0005 -1240 831 -0.008333333333333335 -1240 832 -0.0002814814814814827 -1240 833 -1.084202172485504e-19 -1240 834 -6.938893903907228e-18 -1240 835 -0.0009703703703703701 -1240 836 0.0005 -1240 837 0.008333333333333337 -1240 1237 -0.001659259259259257 -1240 1238 3.252606517456513e-19 -1240 1239 -0.03333333333333333 -1240 1240 0.007762962962962961 -1240 1241 4.336808689942018e-19 -1240 1242 -6.938893903907228e-18 -1240 1243 -0.001659259259259256 -1240 1244 -3.252606517456513e-19 -1240 1245 0.03333333333333333 -1241 829 -0.0005000000000000001 -1241 830 -0.001040740740740741 -1241 831 -0.009259259259259264 -1241 832 1.084202172485504e-19 -1241 833 -0.002362962962962964 -1241 834 -0.03703703703703706 -1241 835 0.0004999999999999999 -1241 836 -0.001040740740740741 -1241 837 -0.009259259259259266 -1241 1237 1.084202172485504e-19 -1241 1238 0.0002814814814814836 -1241 1240 4.336808689942018e-19 -1241 1241 0.008325925925925929 -1241 1242 3.469446951953614e-18 -1241 1243 -3.252606517456513e-19 -1241 1244 0.0002814814814814849 -1241 1245 1.561251128379126e-17 -1242 829 -0.01296296296296297 -1242 830 -0.01342592592592593 -1242 831 -0.155178326474623 -1242 832 1.214306433183765e-17 -1242 833 -0.02870370370370373 -1242 834 -0.2040466392318248 -1242 835 0.01296296296296296 -1242 836 -0.01342592592592593 -1242 837 -0.1551783264746228 -1242 1237 -0.02407407407407407 -1242 1238 1.387778780781446e-17 -1242 1239 -0.1063100137174208 -1242 1240 1.214306433183765e-17 -1242 1241 -8.673617379884035e-18 -1242 1242 1.241426611796983 -1242 1243 0.02407407407407406 -1242 1245 -0.1063100137174206 -1243 832 -0.0009703703703703706 -1243 833 -0.0005 -1243 834 -0.008333333333333335 -1243 835 -0.0002814814814814795 -1243 837 -3.469446951953614e-18 -1243 838 -0.0009703703703703709 -1243 839 0.0005 -1243 840 0.008333333333333337 -1243 1240 -0.001659259259259256 -1243 1241 -3.252606517456513e-19 -1243 1242 -0.03333333333333333 -1243 1243 0.007762962962962965 -1243 1244 6.505213034913027e-19 -1243 1245 -3.469446951953614e-18 -1243 1246 -0.001659259259259265 -1243 1247 -6.505213034913027e-19 -1243 1248 0.03333333333333333 -1244 832 -0.0005000000000000002 -1244 833 -0.001040740740740742 -1244 834 -0.009259259259259269 -1244 835 3.252606517456513e-19 -1244 836 -0.00236296296296296 -1244 837 -0.03703703703703702 -1244 838 0.0005 -1244 839 -0.001040740740740739 -1244 840 -0.009259259259259238 -1244 1240 -3.252606517456513e-19 -1244 1241 0.000281481481481485 -1244 1242 -3.469446951953614e-18 -1244 1243 7.589415207398531e-19 -1244 1244 0.008325925925925924 -1244 1246 -5.421010862427522e-19 -1244 1247 0.0002814814814814767 -1244 1248 3.295974604355933e-17 -1245 832 -0.01296296296296297 -1245 833 -0.01342592592592594 -1245 834 -0.1551783264746229 -1245 835 1.387778780781446e-17 -1245 836 -0.02870370370370368 -1245 837 -0.2040466392318239 -1245 838 0.01296296296296295 -1245 839 -0.0134259259259259 -1245 840 -0.1551783264746224 -1245 1240 -0.02407407407407406 -1245 1241 -8.673617379884035e-18 -1245 1242 -0.1063100137174206 -1245 1243 -3.469446951953614e-18 -1245 1244 -3.469446951953614e-18 -1245 1245 1.241426611796982 -1245 1246 0.02407407407407407 -1245 1247 -5.204170427930421e-18 -1245 1248 -0.1063100137174218 -1246 835 -0.0009703703703703714 -1246 836 -0.0005000000000000001 -1246 837 -0.008333333333333333 -1246 838 -0.0002814814814814764 -1246 839 3.252606517456513e-19 -1246 840 -3.469446951953614e-18 -1246 841 -0.0009703703703703704 -1246 842 0.0004999999999999998 -1246 843 0.008333333333333335 -1246 1243 -0.001659259259259265 -1246 1244 -6.505213034913027e-19 -1246 1245 -0.03333333333333333 -1246 1246 0.007762962962962966 -1246 1247 9.75781955236954e-19 -1246 1248 -6.938893903907228e-18 -1246 1249 -0.001659259259259263 -1246 1250 -1.084202172485504e-19 -1246 1251 0.03333333333333333 -1247 835 -0.0005000000000000002 -1247 836 -0.001040740740740741 -1247 837 -0.009259259259259241 -1247 838 2.168404344971009e-19 -1247 839 -0.002362962962962956 -1247 840 -0.03703703703703698 -1247 841 0.0004999999999999998 -1247 842 -0.001040740740740739 -1247 843 -0.009259259259259243 -1247 1243 -6.505213034913027e-19 -1247 1244 0.0002814814814814766 -1247 1245 -3.469446951953614e-18 -1247 1246 8.673617379884035e-19 -1247 1247 0.008325925925925919 -1247 1248 -6.938893903907228e-18 -1247 1249 1.084202172485504e-19 -1247 1250 0.0002814814814814782 -1247 1251 6.938893903907228e-18 -1248 835 -0.01296296296296296 -1248 836 -0.01342592592592592 -1248 837 -0.1551783264746225 -1248 838 1.040834085586084e-17 -1248 839 -0.02870370370370363 -1248 840 -0.2040466392318232 -1248 841 0.01296296296296295 -1248 842 -0.01342592592592591 -1248 843 -0.1551783264746225 -1248 1243 -0.02407407407407409 -1248 1245 -0.1063100137174218 -1248 1246 1.561251128379126e-17 -1248 1247 -1.387778780781446e-17 -1248 1248 1.24142661179698 -1248 1249 0.02407407407407407 -1248 1250 -1.387778780781446e-17 -1248 1251 -0.1063100137174216 -1249 838 -0.0009703703703703714 -1249 839 -0.0005000000000000002 -1249 840 -0.008333333333333333 -1249 841 -0.0002814814814814861 -1249 842 5.421010862427522e-19 -1249 843 -1.734723475976807e-18 -1249 844 -0.0009703703703703684 -1249 845 0.0004999999999999997 -1249 846 0.008333333333333335 -1249 1246 -0.001659259259259263 -1249 1247 1.084202172485504e-19 -1249 1248 -0.03333333333333333 -1249 1249 0.007762962962962959 -1249 1250 4.336808689942018e-19 -1249 1251 -6.938893903907228e-18 -1249 1252 -0.001659259259259242 -1249 1253 -3.252606517456513e-19 -1249 1254 0.03333333333333333 -1250 838 -0.0005000000000000002 -1250 839 -0.001040740740740742 -1250 840 -0.009259259259259252 -1250 841 4.336808689942018e-19 -1250 842 -0.002362962962962969 -1250 843 -0.0370370370370371 -1250 844 0.0004999999999999997 -1250 845 -0.001040740740740741 -1250 846 -0.009259259259259297 -1250 1246 -1.084202172485504e-19 -1250 1247 0.000281481481481478 -1250 1248 1.734723475976807e-18 -1250 1249 4.336808689942018e-19 -1250 1250 0.008325925925925935 -1250 1251 1.734723475976807e-17 -1250 1252 -2.168404344971009e-19 -1250 1253 0.0002814814814814961 -1250 1254 -1.734723475976807e-18 -1251 838 -0.01296296296296297 -1251 839 -0.01342592592592594 -1251 840 -0.1551783264746228 -1251 841 -1.734723475976807e-18 -1251 842 -0.02870370370370378 -1251 843 -0.2040466392318254 -1251 844 0.01296296296296297 -1251 845 -0.01342592592592594 -1251 846 -0.1551783264746231 -1251 1246 -0.02407407407407405 -1251 1247 -3.469446951953614e-18 -1251 1248 -0.1063100137174216 -1251 1249 1.734723475976807e-18 -1251 1250 5.204170427930421e-18 -1251 1251 1.241426611796984 -1251 1252 0.02407407407407404 -1251 1253 -5.204170427930421e-18 -1251 1254 -0.106310013717419 -1252 841 -0.00097037037037037 -1252 842 -0.0005000000000000002 -1252 843 -0.008333333333333333 -1252 844 -0.0002814814814814884 -1252 845 2.168404344971009e-19 -1252 846 -1.734723475976807e-18 -1252 847 -0.0009703703703703701 -1252 848 0.0005 -1252 849 0.008333333333333338 -1252 1249 -0.001659259259259242 -1252 1250 -2.168404344971009e-19 -1252 1251 -0.03333333333333332 -1252 1252 0.007762962962962958 -1252 1253 3.252606517456513e-19 -1252 1255 -0.001659259259259257 -1252 1256 -4.336808689942018e-19 -1252 1257 0.03333333333333333 -1253 841 -0.0005000000000000002 -1253 842 -0.001040740740740744 -1253 843 -0.009259259259259313 -1253 844 5.421010862427522e-19 -1253 845 -0.002362962962962972 -1253 846 -0.03703703703703714 -1253 847 0.0005 -1253 848 -0.001040740740740741 -1253 849 -0.009259259259259262 -1253 1249 -3.252606517456513e-19 -1253 1250 0.0002814814814814962 -1253 1251 -1.387778780781446e-17 -1253 1252 2.168404344971009e-19 -1253 1253 0.008325925925925941 -1253 1254 3.469446951953614e-18 -1253 1255 -4.336808689942018e-19 -1253 1256 0.0002814814814814835 -1253 1257 1.561251128379126e-17 -1254 841 -0.01296296296296299 -1254 842 -0.01342592592592598 -1254 843 -0.1551783264746235 -1254 844 3.122502256758253e-17 -1254 845 -0.02870370370370381 -1254 846 -0.204046639231826 -1254 847 0.01296296296296296 -1254 848 -0.01342592592592593 -1254 849 -0.1551783264746228 -1254 1249 -0.02407407407407402 -1254 1250 -5.204170427930421e-18 -1254 1251 -0.106310013717419 -1254 1252 -3.295974604355933e-17 -1254 1253 1.040834085586084e-17 -1254 1254 1.241426611796985 -1254 1255 0.02407407407407406 -1254 1256 3.469446951953614e-18 -1254 1257 -0.1063100137174208 -1255 844 -0.0009703703703703708 -1255 845 -0.0005000000000000001 -1255 846 -0.008333333333333333 -1255 847 -0.0002814814814814757 -1255 848 5.421010862427522e-19 -1255 849 6.938893903907228e-18 -1255 850 -0.0009703703703703707 -1255 851 0.0004999999999999998 -1255 852 0.00833333333333334 -1255 1252 -0.001659259259259257 -1255 1253 -4.336808689942018e-19 -1255 1254 -0.03333333333333333 -1255 1255 0.007762962962962965 -1255 1256 -3.252606517456513e-19 -1255 1257 3.469446951953614e-18 -1255 1258 -0.001659259259259273 -1255 1259 2.168404344971009e-19 -1255 1260 0.03333333333333333 -1256 844 -0.0005000000000000002 -1256 845 -0.001040740740740742 -1256 846 -0.009259259259259266 -1256 847 2.168404344971009e-19 -1256 848 -0.002362962962962955 -1256 849 -0.03703703703703699 -1256 850 0.0004999999999999997 -1256 851 -0.001040740740740737 -1256 852 -0.009259259259259217 -1256 1252 -3.252606517456513e-19 -1256 1253 0.0002814814814814834 -1256 1254 -5.204170427930421e-18 -1256 1255 -2.168404344971009e-19 -1256 1256 0.008325925925925917 -1256 1257 -3.122502256758253e-17 -1256 1258 3.252606517456513e-19 -1256 1259 0.000281481481481469 -1256 1260 1.214306433183765e-17 -1257 844 -0.01296296296296297 -1257 845 -0.01342592592592594 -1257 846 -0.1551783264746229 -1257 847 2.602085213965211e-17 -1257 848 -0.02870370370370361 -1257 849 -0.2040466392318231 -1257 850 0.01296296296296294 -1257 851 -0.0134259259259259 -1257 852 -0.1551783264746222 -1257 1252 -0.02407407407407407 -1257 1253 -1.214306433183765e-17 -1257 1254 -0.1063100137174209 -1257 1255 -4.85722573273506e-17 -1257 1256 -1.561251128379126e-17 -1257 1257 1.241426611796981 -1257 1258 0.02407407407407412 -1257 1260 -0.1063100137174229 -1258 847 -0.0009703703703703719 -1258 848 -0.0005000000000000002 -1258 849 -0.008333333333333338 -1258 850 -0.0002814814814814719 -1258 851 6.505213034913027e-19 -1258 852 8.673617379884035e-18 -1258 853 -0.0009703703703703698 -1258 854 0.0004999999999999997 -1258 855 0.00833333333333334 -1258 1255 -0.001659259259259273 -1258 1256 2.168404344971009e-19 -1258 1257 -0.03333333333333334 -1258 1258 0.007762962962962967 -1258 1259 -2.168404344971009e-19 -1258 1260 1.387778780781446e-17 -1258 1261 -0.001659259259259265 -1258 1262 -1.084202172485504e-19 -1258 1263 0.03333333333333334 -1259 847 -0.0005000000000000001 -1259 848 -0.00104074074074074 -1259 849 -0.009259259259259231 -1259 850 9.75781955236954e-19 -1259 851 -0.00236296296296295 -1259 852 -0.03703703703703694 -1259 853 0.0004999999999999997 -1259 854 -0.001040740740740737 -1259 855 -0.009259259259259228 -1259 1255 2.168404344971009e-19 -1259 1256 0.000281481481481469 -1259 1257 3.122502256758253e-17 -1259 1258 -3.252606517456513e-19 -1259 1259 0.008325925925925914 -1259 1260 3.469446951953614e-18 -1259 1261 -2.168404344971009e-19 -1259 1262 0.0002814814814814778 -1259 1263 8.673617379884035e-18 -1260 847 -0.01296296296296296 -1260 848 -0.01342592592592594 -1260 849 -0.1551783264746225 -1260 850 1.387778780781446e-17 -1260 851 -0.02870370370370358 -1260 852 -0.2040466392318223 -1260 853 0.01296296296296295 -1260 854 -0.01342592592592587 -1260 855 -0.1551783264746222 -1260 1255 -0.02407407407407406 -1260 1256 1.734723475976807e-18 -1260 1257 -0.1063100137174229 -1260 1258 -8.500145032286355e-17 -1260 1259 -5.204170427930421e-18 -1260 1260 1.241426611796979 -1260 1261 0.02407407407407414 -1260 1262 8.673617379884035e-18 -1260 1263 -0.1063100137174216 -1261 850 -0.0009703703703703727 -1261 851 -0.0005000000000000007 -1261 852 -0.008333333333333342 -1261 853 -0.0002814814814814791 -1261 854 2.168404344971009e-19 -1261 855 -8.673617379884035e-18 -1261 856 -0.0009703703703703711 -1261 857 0.0005000000000000002 -1261 858 0.008333333333333337 -1261 1258 -0.001659259259259264 -1261 1259 -3.252606517456513e-19 -1261 1260 -0.03333333333333335 -1261 1261 0.007762962962962963 -1261 1262 -8.673617379884035e-19 -1261 1263 -6.938893903907228e-18 -1261 1264 -0.001659259259259251 -1261 1265 1.301042606982605e-18 -1261 1266 0.03333333333333334 -1262 850 -0.0005000000000000006 -1262 851 -0.001040740740740742 -1262 852 -0.009259259259259252 -1262 853 -1.084202172485504e-19 -1262 854 -0.00236296296296296 -1262 855 -0.03703703703703701 -1262 856 0.0005000000000000003 -1262 857 -0.001040740740740743 -1262 858 -0.00925925925925928 -1262 1258 -1.084202172485504e-19 -1262 1259 0.0002814814814814778 -1262 1260 -3.469446951953614e-18 -1262 1261 -9.75781955236954e-19 -1262 1262 0.008325925925925928 -1262 1263 -6.938893903907228e-18 -1262 1264 1.301042606982605e-18 -1262 1265 0.000281481481481488 -1262 1266 -4.85722573273506e-17 -1263 850 -0.01296296296296298 -1263 851 -0.01342592592592594 -1263 852 -0.1551783264746228 -1263 853 -1.734723475976807e-18 -1263 854 -0.02870370370370367 -1263 855 -0.204046639231824 -1263 856 0.01296296296296299 -1263 857 -0.01342592592592595 -1263 858 -0.1551783264746232 -1263 1258 -0.02407407407407408 -1263 1259 5.204170427930421e-18 -1263 1260 -0.1063100137174216 -1263 1261 2.255140518769849e-17 -1263 1262 3.469446951953614e-18 -1263 1263 1.241426611796982 -1263 1264 0.02407407407407405 -1263 1265 -2.081668171172169e-17 -1263 1266 -0.1063100137174203 -1264 853 -0.0009703703703703694 -1264 854 -0.0004999999999999998 -1264 855 -0.008333333333333337 -1264 856 -0.0002814814814814837 -1264 857 -1.192622389734055e-18 -1264 858 -1.040834085586084e-17 -1264 859 -0.0009703703703703733 -1264 860 0.0005000000000000009 -1264 861 0.008333333333333337 -1264 1261 -0.001659259259259252 -1264 1262 1.301042606982605e-18 -1264 1263 -0.03333333333333333 -1264 1264 0.007762962962962961 -1264 1265 -3.469446951953614e-18 -1264 1266 -1.040834085586084e-17 -1264 1267 -0.001659259259259256 -1264 1268 2.49366499671666e-18 -1264 1269 0.03333333333333333 -1265 853 -0.0004999999999999997 -1265 854 -0.001040740740740739 -1265 855 -0.00925925925925926 -1265 856 -1.301042606982605e-18 -1265 857 -0.002362962962962966 -1265 858 -0.03703703703703708 -1265 859 0.000500000000000001 -1265 860 -0.001040740740740747 -1265 861 -0.009259259259259302 -1265 1261 1.301042606982605e-18 -1265 1262 0.000281481481481488 -1265 1263 2.602085213965211e-17 -1265 1264 -3.469446951953614e-18 -1265 1265 0.008325925925925933 -1265 1266 -6.938893903907228e-18 -1265 1267 2.602085213965211e-18 -1265 1268 0.0002814814814814858 -1265 1269 -6.765421556309548e-17 -1266 853 -0.01296296296296296 -1266 854 -0.01342592592592589 -1266 855 -0.1551783264746227 -1266 856 -3.642919299551295e-17 -1266 857 -0.02870370370370374 -1266 858 -0.2040466392318248 -1266 859 0.012962962962963 -1266 860 -0.013425925925926 -1266 861 -0.1551783264746233 -1266 1261 -0.02407407407407406 -1266 1262 -3.642919299551295e-17 -1266 1263 -0.1063100137174203 -1266 1264 8.673617379884035e-18 -1266 1265 -3.469446951953614e-18 -1266 1266 1.241426611796983 -1266 1267 0.02407407407407405 -1266 1268 5.204170427930421e-18 -1266 1269 -0.1063100137174204 -1267 856 -0.0009703703703703672 -1267 857 -0.0004999999999999991 -1267 858 -0.008333333333333333 -1267 859 -0.0002814814814814811 -1267 860 -1.734723475976807e-18 -1267 861 -3.469446951953614e-18 -1267 862 -0.0009703703703703732 -1267 863 0.0005000000000000009 -1267 864 0.008333333333333335 -1267 1264 -0.001659259259259256 -1267 1265 2.49366499671666e-18 -1267 1266 -0.03333333333333333 -1267 1267 0.007762962962962965 -1267 1268 -2.602085213965211e-18 -1267 1269 -3.469446951953614e-18 -1267 1270 -0.001659259259259262 -1267 1271 1.084202172485504e-19 -1267 1272 0.03333333333333333 -1268 856 -0.0004999999999999991 -1268 857 -0.001040740740740735 -1268 858 -0.00925925925925925 -1268 859 -1.734723475976807e-18 -1268 860 -0.002362962962962963 -1268 861 -0.03703703703703703 -1268 862 0.0005000000000000008 -1268 863 -0.001040740740740746 -1268 864 -0.009259259259259276 -1268 1264 2.49366499671666e-18 -1268 1265 0.0002814814814814858 -1268 1266 6.938893903907228e-17 -1268 1267 -2.710505431213761e-18 -1268 1268 0.008325925925925931 -1268 1269 6.591949208711867e-17 -1268 1270 3.252606517456513e-19 -1268 1271 0.0002814814814814793 -1268 1272 -1.040834085586084e-17 -1269 856 -0.01296296296296292 -1269 857 -0.01342592592592583 -1269 858 -0.1551783264746219 -1269 859 -6.938893903907228e-17 -1269 860 -0.02870370370370372 -1269 861 -0.2040466392318241 -1269 862 0.01296296296296299 -1269 863 -0.01342592592592598 -1269 864 -0.1551783264746232 -1269 1264 -0.0240740740740741 -1269 1266 -0.1063100137174204 -1269 1267 8.673617379884035e-17 -1269 1268 -3.469446951953614e-18 -1269 1269 1.241426611796982 -1269 1270 0.02407407407407402 -1269 1271 5.204170427930421e-18 -1269 1272 -0.1063100137174214 -1270 859 -0.0009703703703703681 -1270 860 -0.0004999999999999993 -1270 861 -0.008333333333333333 -1270 862 -0.0002814814814814797 -1270 863 -1.409462824231156e-18 -1270 865 -0.0009703703703703726 -1270 866 0.0005000000000000007 -1270 867 0.008333333333333335 -1270 1267 -0.001659259259259262 -1270 1268 3.252606517456513e-19 -1270 1269 -0.03333333333333332 -1270 1270 0.007762962962962966 -1270 1271 -4.336808689942018e-19 -1270 1272 -6.938893903907228e-18 -1270 1273 -0.001659259259259261 -1270 1274 2.168404344971009e-19 -1270 1275 0.03333333333333333 -1271 859 -0.0004999999999999993 -1271 860 -0.001040740740740735 -1271 861 -0.009259259259259234 -1271 862 -1.409462824231156e-18 -1271 863 -0.002362962962962961 -1271 864 -0.03703703703703703 -1271 865 0.0005000000000000007 -1271 866 -0.001040740740740745 -1271 867 -0.00925925925925928 -1271 1267 2.168404344971009e-19 -1271 1268 0.0002814814814814793 -1271 1269 6.938893903907228e-18 -1271 1270 -5.421010862427522e-19 -1271 1271 0.008325925925925926 -1271 1272 2.42861286636753e-17 -1271 1273 3.252606517456513e-19 -1271 1274 0.0002814814814814804 -1272 859 -0.01296296296296293 -1272 860 -0.01342592592592584 -1272 861 -0.155178326474622 -1272 862 -5.377642775528102e-17 -1272 863 -0.02870370370370368 -1272 864 -0.2040466392318239 -1272 865 0.01296296296296298 -1272 866 -0.01342592592592597 -1272 867 -0.1551783264746231 -1272 1267 -0.02407407407407413 -1272 1268 -1.040834085586084e-17 -1272 1269 -0.1063100137174215 -1272 1270 1.196959198423997e-16 -1272 1271 -1.387778780781446e-17 -1272 1272 1.241426611796982 -1272 1273 0.02407407407407401 -1272 1274 -1.387778780781446e-17 -1272 1275 -0.1063100137174213 -1273 862 -0.0009703703703703687 -1273 863 -0.0004999999999999994 -1273 864 -0.008333333333333335 -1273 865 -0.000281481481481479 -1273 866 -6.505213034913027e-19 -1273 867 -1.734723475976807e-18 -1273 868 -0.0009703703703703708 -1273 869 0.0005 -1273 870 0.008333333333333335 -1273 1270 -0.001659259259259261 -1273 1271 4.336808689942018e-19 -1273 1272 -0.03333333333333333 -1273 1273 0.007762962962962963 -1273 1276 -0.001659259259259262 -1273 1277 -1.084202172485504e-19 -1273 1278 0.03333333333333333 -1274 862 -0.0004999999999999994 -1274 863 -0.001040740740740737 -1274 864 -0.009259259259259247 -1274 865 -6.505213034913027e-19 -1274 866 -0.00236296296296296 -1274 867 -0.03703703703703701 -1274 868 0.0005 -1274 869 -0.00104074074074074 -1274 870 -0.00925925925925925 -1274 1270 3.252606517456513e-19 -1274 1271 0.0002814814814814804 -1274 1272 6.938893903907228e-18 -1274 1273 -1.084202172485504e-19 -1274 1274 0.008325925925925921 -1274 1275 3.469446951953614e-17 -1274 1276 1.084202172485504e-19 -1274 1277 0.0002814814814814795 -1274 1278 3.469446951953614e-18 -1275 862 -0.01296296296296293 -1275 863 -0.01342592592592587 -1275 864 -0.1551783264746222 -1275 865 -2.42861286636753e-17 -1275 866 -0.02870370370370372 -1275 867 -0.2040466392318237 -1275 868 0.01296296296296296 -1275 869 -0.01342592592592591 -1275 870 -0.1551783264746225 -1275 1270 -0.0240740740740741 -1275 1272 -0.1063100137174213 -1275 1273 2.775557561562891e-17 -1275 1274 -2.42861286636753e-17 -1275 1275 1.24142661179698 -1275 1276 0.02407407407407407 -1275 1278 -0.1063100137174213 -1276 865 -0.0009703703703703709 -1276 866 -0.0005000000000000001 -1276 867 -0.008333333333333333 -1276 868 -0.0002814814814814824 -1276 869 -3.252606517456513e-19 -1276 870 -1.040834085586084e-17 -1276 871 -0.0009703703703703688 -1276 872 0.0004999999999999998 -1276 873 0.008333333333333325 -1276 1273 -0.001659259259259262 -1276 1274 1.084202172485504e-19 -1276 1275 -0.03333333333333332 -1276 1276 0.007762962962962962 -1276 1277 5.421010862427522e-19 -1276 1278 1.387778780781446e-17 -1276 1279 -0.001659259259259253 -1276 1280 7.589415207398531e-19 -1276 1281 0.03333333333333334 -1277 865 -0.0005 -1277 866 -0.00104074074074074 -1277 867 -0.00925925925925925 -1277 868 -5.421010862427522e-19 -1277 869 -0.002362962962962964 -1277 870 -0.03703703703703706 -1277 871 0.0004999999999999999 -1277 872 -0.001040740740740742 -1277 873 -0.009259259259259283 -1277 1274 0.0002814814814814795 -1277 1275 3.469446951953614e-18 -1277 1276 6.505213034913027e-19 -1277 1277 0.008325925925925929 -1277 1278 -6.938893903907228e-18 -1277 1279 7.589415207398531e-19 -1277 1280 0.000281481481481487 -1277 1281 -1.908195823574488e-17 -1278 865 -0.01296296296296296 -1278 866 -0.01342592592592591 -1278 867 -0.1551783264746225 -1278 868 -1.734723475976807e-17 -1278 869 -0.02870370370370372 -1278 870 -0.2040466392318246 -1278 871 0.01296296296296296 -1278 872 -0.01342592592592594 -1278 873 -0.1551783264746232 -1278 1273 -0.02407407407407408 -1278 1274 -3.469446951953614e-18 -1278 1275 -0.1063100137174213 -1278 1276 2.775557561562891e-17 -1278 1277 2.602085213965211e-17 -1278 1278 1.241426611796983 -1278 1279 0.02407407407407405 -1278 1280 -2.42861286636753e-17 -1278 1281 -0.1063100137174206 -1279 868 -0.0009703703703703708 -1279 869 -0.0005000000000000001 -1279 870 -0.008333333333333335 -1279 871 -0.0002814814814814887 -1279 872 -4.336808689942018e-19 -1279 873 -1.734723475976807e-18 -1279 874 -0.0009703703703703725 -1279 875 0.0005000000000000007 -1279 876 0.008333333333333335 -1279 1276 -0.001659259259259253 -1279 1277 7.589415207398531e-19 -1279 1278 -0.03333333333333334 -1279 1279 0.007762962962962961 -1279 1280 -1.734723475976807e-18 -1279 1282 -0.001659259259259257 -1279 1283 9.75781955236954e-19 -1279 1284 0.03333333333333335 -1280 868 -0.0005000000000000001 -1280 869 -0.001040740740740742 -1280 870 -0.009259259259259278 -1280 871 -3.252606517456513e-19 -1280 872 -0.002362962962962972 -1280 873 -0.0370370370370371 -1280 874 0.0005000000000000007 -1280 875 -0.001040740740740744 -1280 876 -0.009259259259259287 -1280 1276 7.589415207398531e-19 -1280 1277 0.000281481481481487 -1280 1278 -1.734723475976807e-18 -1280 1279 -1.409462824231156e-18 -1280 1280 0.008325925925925931 -1280 1281 6.938893903907228e-18 -1280 1282 8.673617379884035e-19 -1280 1283 0.0002814814814814836 -1280 1284 -5.204170427930421e-17 -1281 868 -0.01296296296296299 -1281 869 -0.01342592592592595 -1281 870 -0.1551783264746233 -1281 871 -8.673617379884035e-18 -1281 872 -0.02870370370370375 -1281 873 -0.2040466392318259 -1281 874 0.01296296296296299 -1281 875 -0.01342592592592595 -1281 876 -0.1551783264746232 -1281 1276 -0.02407407407407405 -1281 1277 1.387778780781446e-17 -1281 1278 -0.1063100137174205 -1281 1279 -1.908195823574488e-17 -1281 1280 -3.122502256758253e-17 -1281 1281 1.241426611796985 -1281 1282 0.02407407407407408 -1281 1283 8.673617379884035e-18 -1281 1284 -0.1063100137174209 -1282 871 -0.0009703703703703678 -1282 872 -0.0004999999999999995 -1282 873 -0.008333333333333323 -1282 874 -0.0002814814814814815 -1282 875 -7.589415207398531e-19 -1282 876 -1.561251128379126e-17 -1282 877 -0.0009703703703703691 -1282 878 0.0004999999999999998 -1282 879 0.008333333333333325 -1282 1279 -0.001659259259259257 -1282 1280 8.673617379884035e-19 -1282 1281 -0.03333333333333334 -1282 1282 0.007762962962962965 -1282 1283 -1.517883041479706e-18 -1282 1284 -3.469446951953614e-18 -1282 1285 -0.001659259259259264 -1282 1286 1.409462824231156e-18 -1282 1287 0.03333333333333335 -1283 871 -0.0004999999999999995 -1283 872 -0.001040740740740739 -1283 873 -0.009259259259259267 -1283 874 -8.673617379884035e-19 -1283 875 -0.002362962962962963 -1283 876 -0.03703703703703703 -1283 877 0.0004999999999999998 -1283 878 -0.00104074074074074 -1283 879 -0.00925925925925926 -1283 1279 7.589415207398531e-19 -1283 1280 0.0002814814814814836 -1283 1281 2.081668171172169e-17 -1283 1282 -1.517883041479706e-18 -1283 1283 0.008325925925925924 -1283 1284 6.938893903907228e-17 -1283 1285 1.517883041479706e-18 -1283 1286 0.0002814814814814774 -1283 1287 -2.42861286636753e-17 -1284 871 -0.01296296296296293 -1284 872 -0.01342592592592588 -1284 873 -0.1551783264746224 -1284 874 -2.42861286636753e-17 -1284 875 -0.02870370370370376 -1284 876 -0.2040466392318244 -1284 877 0.01296296296296294 -1284 878 -0.01342592592592591 -1284 879 -0.1551783264746226 -1284 1279 -0.02407407407407408 -1284 1280 -3.642919299551295e-17 -1284 1281 -0.1063100137174209 -1284 1282 -1.734723475976807e-18 -1284 1283 4.683753385137379e-17 -1284 1284 1.241426611796983 -1284 1285 0.02407407407407409 -1284 1286 -3.816391647148976e-17 -1284 1287 -0.1063100137174219 -1285 874 -0.0009703703703703724 -1285 875 -0.0005000000000000003 -1285 876 -0.008333333333333344 -1285 877 -0.0002814814814814738 -1285 878 -2.168404344971009e-19 -1285 879 5.204170427930421e-18 -1285 880 -0.0009703703703703738 -1285 881 0.0005000000000000004 -1285 882 0.008333333333333349 -1285 1282 -0.001659259259259264 -1285 1283 1.517883041479706e-18 -1285 1284 -0.03333333333333335 -1285 1285 0.00776296296296297 -1285 1286 -4.336808689942018e-19 -1285 1287 1.734723475976807e-17 -1285 1288 -0.001659259259259273 -1285 1289 -7.589415207398531e-19 -1285 1290 0.03333333333333335 -1286 874 -0.0005000000000000002 -1286 875 -0.001040740740740741 -1286 876 -0.009259259259259252 -1286 878 -0.002362962962962953 -1286 879 -0.03703703703703697 -1286 880 0.0005000000000000004 -1286 881 -0.00104074074074074 -1286 882 -0.009259259259259217 -1286 1282 1.409462824231156e-18 -1286 1283 0.0002814814814814775 -1286 1284 1.214306433183765e-17 -1286 1285 -4.336808689942018e-19 -1286 1286 0.008325925925925915 -1286 1287 -3.469446951953614e-18 -1286 1288 -6.505213034913027e-19 -1286 1289 0.0002814814814814703 -1286 1290 4.163336342344337e-17 -1287 874 -0.01296296296296298 -1287 875 -0.01342592592592591 -1287 876 -0.1551783264746229 -1287 877 8.673617379884035e-18 -1287 878 -0.02870370370370357 -1287 879 -0.2040466392318226 -1287 880 0.01296296296296297 -1287 881 -0.01342592592592594 -1287 882 -0.1551783264746223 -1287 1282 -0.02407407407407409 -1287 1283 2.081668171172169e-17 -1287 1284 -0.1063100137174219 -1287 1285 -5.898059818321144e-17 -1287 1286 -5.377642775528102e-17 -1287 1287 1.24142661179698 -1287 1288 0.02407407407407414 -1287 1289 2.255140518769849e-17 -1287 1290 -0.1063100137174227 -1288 877 -0.0009703703703703692 -1288 878 -0.0004999999999999997 -1288 879 -0.00833333333333333 -1288 880 -0.0002814814814814732 -1288 881 1.301042606982605e-18 -1288 882 5.204170427930421e-18 -1288 883 -0.000970370370370368 -1288 884 0.0004999999999999991 -1288 885 0.008333333333333337 -1288 1285 -0.001659259259259273 -1288 1286 -7.589415207398531e-19 -1288 1287 -0.03333333333333337 -1288 1288 0.007762962962962967 -1288 1289 4.336808689942018e-19 -1288 1290 -3.469446951953614e-17 -1288 1291 -0.001659259259259268 -1288 1292 -1.192622389734055e-18 -1288 1293 0.03333333333333334 -1289 877 -0.0004999999999999997 -1289 878 -0.001040740740740738 -1289 879 -0.009259259259259217 -1289 880 9.75781955236954e-19 -1289 881 -0.002362962962962952 -1289 882 -0.03703703703703693 -1289 883 0.0004999999999999993 -1289 884 -0.001040740740740734 -1289 885 -0.009259259259259224 -1289 1285 -6.505213034913027e-19 -1289 1286 0.0002814814814814703 -1289 1287 4.163336342344337e-17 -1289 1288 3.252606517456513e-19 -1289 1289 0.00832592592592591 -1289 1290 -3.469446951953614e-17 -1289 1291 -1.301042606982605e-18 -1289 1292 0.0002814814814814757 -1289 1293 5.551115123125783e-17 -1290 877 -0.01296296296296292 -1290 878 -0.01342592592592591 -1290 879 -0.1551783264746218 -1290 880 2.602085213965211e-17 -1290 881 -0.02870370370370363 -1290 882 -0.2040466392318223 -1290 883 0.01296296296296291 -1290 884 -0.01342592592592583 -1290 885 -0.1551783264746218 -1290 1285 -0.02407407407407413 -1290 1286 -2.42861286636753e-17 -1290 1287 -0.1063100137174227 -1290 1288 2.255140518769849e-17 -1290 1289 3.122502256758253e-17 -1290 1290 1.241426611796977 -1290 1291 0.02407407407407411 -1290 1292 1.040834085586084e-17 -1290 1293 -0.1063100137174219 -1291 880 -0.0009703703703703744 -1291 881 -0.0005000000000000009 -1291 882 -0.008333333333333342 -1291 883 -0.000281481481481478 -1291 884 2.059984127722458e-18 -1291 885 -6.938893903907228e-18 -1291 886 -0.0009703703703703688 -1291 887 0.0004999999999999994 -1291 888 0.008333333333333347 -1291 1288 -0.001659259259259268 -1291 1289 -1.301042606982605e-18 -1291 1290 -0.03333333333333333 -1291 1291 0.007762962962962962 -1291 1292 2.276824562219559e-18 -1291 1293 -3.469446951953614e-18 -1291 1294 -0.001659259259259251 -1291 1295 -1.843143693225358e-18 -1291 1296 0.03333333333333334 -1292 880 -0.0005000000000000009 -1292 881 -0.001040740740740744 -1292 882 -0.009259259259259262 -1292 883 1.951563910473908e-18 -1292 884 -0.002362962962962959 -1292 885 -0.03703703703703701 -1292 886 0.0004999999999999994 -1292 887 -0.001040740740740736 -1292 888 -0.009259259259259245 -1292 1288 -1.084202172485504e-18 -1292 1289 0.0002814814814814756 -1292 1290 -1.908195823574488e-17 -1292 1291 2.38524477946811e-18 -1292 1292 0.008325925925925919 -1292 1293 -3.469446951953614e-18 -1292 1294 -1.734723475976807e-18 -1292 1295 0.0002814814814814883 -1292 1296 2.081668171172169e-17 -1293 880 -0.01296296296296299 -1293 881 -0.01342592592592597 -1293 882 -0.155178326474623 -1293 883 3.816391647148976e-17 -1293 884 -0.02870370370370371 -1293 885 -0.2040466392318239 -1293 886 0.01296296296296297 -1293 887 -0.01342592592592586 -1293 888 -0.1551783264746226 -1293 1288 -0.02407407407407407 -1293 1289 3.642919299551295e-17 -1293 1290 -0.1063100137174219 -1293 1291 -2.255140518769849e-17 -1293 1292 -1.040834085586084e-17 -1293 1293 1.241426611796982 -1293 1294 0.02407407407407407 -1293 1295 -3.469446951953614e-18 -1293 1296 -0.1063100137174204 -1294 883 -0.0009703703703703714 -1294 884 -0.0005000000000000008 -1294 885 -0.008333333333333325 -1294 886 -0.0002814814814814872 -1294 887 1.409462824231156e-18 -1294 888 2.602085213965211e-17 -1294 889 -0.0009703703703703708 -1294 890 0.0005000000000000004 -1294 891 0.00833333333333334 -1294 1291 -0.001659259259259251 -1294 1292 -1.734723475976807e-18 -1294 1293 -0.03333333333333331 -1294 1294 0.007762962962962959 -1294 1295 -8.673617379884035e-19 -1294 1296 3.122502256758253e-17 -1294 1297 -0.001659259259259247 -1294 1298 1.084202172485504e-18 -1294 1299 0.03333333333333333 -1295 883 -0.0005000000000000007 -1295 884 -0.001040740740740747 -1295 885 -0.009259259259259302 -1295 886 1.409462824231156e-18 -1295 887 -0.00236296296296297 -1295 888 -0.03703703703703715 -1295 889 0.0005000000000000003 -1295 890 -0.001040740740740744 -1295 891 -0.009259259259259309 -1295 1291 -1.843143693225358e-18 -1295 1292 0.0002814814814814883 -1295 1293 -5.377642775528102e-17 -1295 1294 -7.589415207398531e-19 -1295 1295 0.008325925925925943 -1295 1296 -3.469446951953614e-17 -1295 1297 1.301042606982605e-18 -1295 1298 0.0002814814814814919 -1295 1299 -6.245004513516506e-17 -1296 883 -0.012962962962963 -1296 884 -0.01342592592592601 -1296 885 -0.1551783264746237 -1296 886 5.204170427930421e-17 -1296 887 -0.02870370370370376 -1296 888 -0.2040466392318256 -1296 889 0.01296296296296298 -1296 890 -0.01342592592592596 -1296 891 -0.1551783264746231 -1296 1291 -0.02407407407407402 -1296 1292 -4.683753385137379e-17 -1296 1293 -0.1063100137174204 -1296 1294 -9.367506770274758e-17 -1296 1295 2.775557561562891e-17 -1296 1296 1.241426611796985 -1296 1297 0.02407407407407409 -1296 1298 1.734723475976807e-18 -1296 1299 -0.1063100137174194 -1297 886 -0.0009703703703703682 -1297 887 -0.0004999999999999996 -1297 888 -0.008333333333333338 -1297 889 -0.0002814814814814862 -1297 890 -5.421010862427522e-19 -1297 891 -3.469446951953614e-18 -1297 892 -0.000970370370370371 -1297 893 0.0005000000000000001 -1297 894 0.008333333333333337 -1297 1294 -0.001659259259259247 -1297 1295 1.301042606982605e-18 -1297 1296 -0.03333333333333334 -1297 1297 0.007762962962962959 -1297 1298 -1.626303258728257e-18 -1297 1299 -3.469446951953614e-18 -1297 1300 -0.001659259259259258 -1297 1301 8.673617379884035e-19 -1297 1302 0.03333333333333333 -1298 886 -0.0004999999999999996 -1298 887 -0.00104074074074074 -1298 888 -0.00925925925925929 -1298 889 -4.336808689942018e-19 -1298 890 -0.002362962962962969 -1298 891 -0.03703703703703709 -1298 892 0.0005000000000000001 -1298 893 -0.001040740740740742 -1298 894 -0.009259259259259264 -1298 1294 1.084202172485504e-18 -1298 1295 0.0002814814814814919 -1298 1296 1.214306433183765e-17 -1298 1297 -1.843143693225358e-18 -1298 1298 0.008325925925925933 -1298 1299 3.469446951953614e-17 -1298 1300 1.084202172485504e-18 -1298 1301 0.0002814814814814823 -1298 1302 -3.469446951953614e-17 -1299 886 -0.01296296296296295 -1299 887 -0.0134259259259259 -1299 888 -0.1551783264746225 -1299 889 -2.602085213965211e-17 -1299 890 -0.02870370370370386 -1299 891 -0.2040466392318254 -1299 892 0.01296296296296297 -1299 893 -0.01342592592592593 -1299 894 -0.155178326474623 -1299 1294 -0.02407407407407407 -1299 1295 -5.204170427930421e-18 -1299 1296 -0.1063100137174194 -1299 1297 1.387778780781446e-17 -1299 1298 4.336808689942018e-17 -1299 1299 1.241426611796982 -1299 1300 0.02407407407407406 -1299 1301 -1.734723475976807e-18 -1299 1302 -0.106310013717421 -1300 889 -0.0009703703703703702 -1300 890 -0.0004999999999999999 -1300 891 -0.008333333333333335 -1300 892 -0.0002814814814814773 -1300 893 4.336808689942018e-19 -1300 894 -8.673617379884035e-18 -1300 895 -0.0009703703703703688 -1300 896 0.0004999999999999994 -1300 897 0.008333333333333335 -1300 1297 -0.001659259259259259 -1300 1298 1.084202172485504e-18 -1300 1299 -0.03333333333333333 -1300 1300 0.007762962962962966 -1300 1301 1.084202172485504e-18 -1300 1302 -1.040834085586084e-17 -1300 1303 -0.001659259259259272 -1300 1304 -1.409462824231156e-18 -1300 1305 0.03333333333333332 -1301 889 -0.0005 -1301 890 -0.00104074074074074 -1301 891 -0.009259259259259255 -1301 892 4.336808689942018e-19 -1301 893 -0.002362962962962957 -1301 894 -0.03703703703703698 -1301 895 0.0004999999999999994 -1301 896 -0.001040740740740736 -1301 897 -0.009259259259259214 -1301 1297 9.75781955236954e-19 -1301 1298 0.0002814814814814823 -1301 1299 3.469446951953614e-18 -1301 1300 1.084202172485504e-18 -1301 1301 0.008325925925925919 -1301 1303 -1.301042606982605e-18 -1301 1304 0.0002814814814814697 -1301 1305 3.989863994746656e-17 -1302 889 -0.01296296296296296 -1302 890 -0.01342592592592591 -1302 891 -0.1551783264746228 -1302 892 4.336808689942018e-17 -1302 893 -0.0287037037037037 -1302 894 -0.2040466392318236 -1302 895 0.01296296296296292 -1302 896 -0.01342592592592587 -1302 897 -0.1551783264746219 -1302 1297 -0.02407407407407407 -1302 1298 1.387778780781446e-17 -1302 1299 -0.106310013717421 -1302 1300 -3.816391647148976e-17 -1302 1301 2.775557561562891e-17 -1302 1302 1.24142661179698 -1302 1303 0.0240740740740741 -1302 1304 2.602085213965211e-17 -1302 1305 -0.1063100137174227 -1303 892 -0.0009703703703703732 -1303 893 -0.0005000000000000008 -1303 894 -0.008333333333333333 -1303 895 -0.0002814814814814814 -1303 896 8.673617379884035e-19 -1303 897 -2.42861286636753e-17 -1303 898 -0.0009703703703703643 -1303 899 0.0004999999999999986 -1303 900 0.008333333333333325 -1303 1300 -0.001659259259259272 -1303 1301 -1.301042606982605e-18 -1303 1302 -0.03333333333333331 -1303 1303 0.007762962962962958 -1303 1304 2.602085213965211e-18 -1303 1305 2.081668171172169e-17 -1303 1306 -0.001659259259259246 -1303 1307 6.505213034913027e-19 -1303 1308 0.03333333333333335 -1304 892 -0.0005000000000000007 -1304 893 -0.001040740740740744 -1304 894 -0.00925925925925925 -1304 895 8.673617379884035e-19 -1304 896 -0.002362962962962963 -1304 897 -0.03703703703703702 -1304 898 0.0004999999999999986 -1304 899 -0.001040740740740734 -1304 900 -0.00925925925925925 -1304 1300 -1.409462824231156e-18 -1304 1301 0.0002814814814814697 -1304 1302 -3.642919299551295e-17 -1304 1303 2.602085213965211e-18 -1304 1304 0.008325925925925917 -1304 1305 -8.326672684688674e-17 -1304 1306 5.421010862427522e-19 -1304 1307 0.0002814814814814933 -1304 1308 8.673617379884035e-18 -1305 892 -0.01296296296296297 -1305 893 -0.01342592592592599 -1305 894 -0.1551783264746229 -1305 895 3.642919299551295e-17 -1305 896 -0.02870370370370375 -1305 897 -0.2040466392318244 -1305 898 0.01296296296296291 -1305 899 -0.01342592592592584 -1305 900 -0.155178326474622 -1305 1300 -0.02407407407407405 -1305 1301 3.295974604355933e-17 -1305 1302 -0.1063100137174227 -1305 1303 -9.540979117872439e-17 -1305 1304 5.551115123125783e-17 -1305 1305 1.241426611796981 -1305 1306 0.02407407407407415 -1305 1307 -5.204170427930421e-17 -1305 1308 -0.1063100137174196 -1306 895 -0.0009703703703703757 -1306 896 -0.0005000000000000015 -1306 897 -0.008333333333333344 -1306 898 -0.0002814814814814858 -1306 899 7.589415207398531e-19 -1306 900 5.204170427930421e-18 -1306 901 -0.0009703703703703734 -1306 902 0.0005000000000000008 -1306 903 0.008333333333333347 -1306 1303 -0.001659259259259246 -1306 1304 5.421010862427522e-19 -1306 1305 -0.03333333333333334 -1306 1306 0.007762962962962959 -1306 1307 -9.75781955236954e-19 -1306 1308 1.040834085586084e-17 -1306 1309 -0.00165925925925925 -1306 1310 6.505213034913027e-19 -1306 1311 0.03333333333333334 -1307 895 -0.0005000000000000014 -1307 896 -0.00104074074074075 -1307 897 -0.009259259259259306 -1307 898 5.421010862427522e-19 -1307 899 -0.002362962962962969 -1307 900 -0.0370370370370371 -1307 901 0.0005000000000000007 -1307 902 -0.001040740740740745 -1307 903 -0.00925925925925928 -1307 1303 7.589415207398531e-19 -1307 1304 0.0002814814814814933 -1307 1305 6.938893903907228e-18 -1307 1306 -9.75781955236954e-19 -1307 1307 0.008325925925925941 -1307 1308 1.040834085586084e-17 -1307 1309 7.589415207398531e-19 -1307 1310 0.0002814814814814889 -1307 1311 -5.377642775528102e-17 -1308 895 -0.01296296296296305 -1308 896 -0.01342592592592605 -1308 897 -0.1551783264746241 -1308 898 4.510281037539698e-17 -1308 899 -0.02870370370370374 -1308 900 -0.2040466392318251 -1308 901 0.01296296296296301 -1308 902 -0.01342592592592597 -1308 903 -0.1551783264746229 -1308 1303 -0.02407407407407399 -1308 1304 -1.734723475976807e-18 -1308 1305 -0.1063100137174196 -1308 1306 -1.387778780781446e-16 -1308 1307 -3.816391647148976e-17 -1308 1308 1.241426611796985 -1308 1309 0.02407407407407413 -1308 1310 -5.204170427930421e-18 -1308 1311 -0.1063100137174197 -1309 898 -0.0009703703703703667 -1309 899 -0.0004999999999999994 -1309 900 -0.008333333333333328 -1309 901 -0.0002814814814814745 -1309 902 -2.168404344971009e-19 -1309 903 1.734723475976807e-17 -1309 904 -0.0009703703703703747 -1309 905 0.0005000000000000008 -1309 906 0.008333333333333335 -1309 1306 -0.00165925925925925 -1309 1307 7.589415207398531e-19 -1309 1308 -0.03333333333333337 -1309 1309 0.00776296296296297 -1309 1310 -7.480994990149981e-18 -1309 1311 -2.081668171172169e-17 -1309 1312 -0.001659259259259286 -1309 1313 4.662069341687669e-18 -1309 1314 0.03333333333333333 -1310 898 -0.0004999999999999993 -1310 899 -0.001040740740740738 -1310 900 -0.009259259259259262 -1310 901 -3.252606517456513e-19 -1310 902 -0.002362962962962954 -1310 903 -0.03703703703703694 -1310 904 0.0005000000000000008 -1310 905 -0.001040740740740743 -1310 906 -0.009259259259259212 -1310 1306 5.421010862427522e-19 -1310 1307 0.0002814814814814889 -1310 1308 1.908195823574488e-17 -1310 1309 -7.480994990149981e-18 -1310 1310 0.008325925925925924 -1310 1311 -3.122502256758253e-17 -1310 1312 4.77048955893622e-18 -1310 1313 0.0002814814814814556 -1310 1314 -1.613292832658431e-16 -1311 898 -0.01296296296296292 -1311 899 -0.01342592592592587 -1311 900 -0.1551783264746219 -1311 901 -8.673617379884035e-18 -1311 902 -0.02870370370370361 -1311 903 -0.2040466392318223 -1311 904 0.01296296296296296 -1311 905 -0.01342592592592596 -1311 906 -0.1551783264746223 -1311 1306 -0.02407407407407411 -1311 1307 -6.418476861114186e-17 -1311 1308 -0.1063100137174197 -1311 1309 -6.938893903907228e-18 -1311 1310 5.377642775528102e-17 -1311 1311 1.241426611796979 -1311 1312 0.0240740740740741 -1311 1313 -1.040834085586084e-17 -1311 1314 -0.1063100137174246 -1312 901 -0.0009703703703703692 -1312 902 -0.0004999999999999991 -1312 903 -0.008333333333333331 -1312 904 -0.0002814814814814771 -1312 905 -1.301042606982605e-18 -1312 906 -1.734723475976807e-18 -1312 907 -0.0009703703703703707 -1312 908 0.0005000000000000004 -1312 909 0.008333333333333335 -1312 1309 -0.001659259259259286 -1312 1310 4.77048955893622e-18 -1312 1311 -0.03333333333333332 -1312 1312 0.007762962962962961 -1312 1313 -1.073360150760649e-17 -1312 1314 -3.469446951953614e-18 -1312 1315 -0.001659259259259245 -1312 1316 5.963111948670274e-18 -1312 1317 0.03333333333333332 -1313 901 -0.0004999999999999991 -1313 902 -0.001040740740740732 -1313 903 -0.009259259259259165 -1313 904 -1.192622389734055e-18 -1313 905 -0.002362962962962957 -1313 906 -0.03703703703703697 -1313 907 0.0005000000000000002 -1313 908 -0.001040740740740745 -1313 909 -0.009259259259259309 -1313 1309 4.662069341687669e-18 -1313 1310 0.0002814814814814557 -1313 1311 9.71445146547012e-17 -1313 1312 -1.073360150760649e-17 -1313 1313 0.008325925925925907 -1313 1314 -9.020562075079397e-17 -1313 1315 6.071532165918825e-18 -1313 1316 0.0002814814814814957 -1313 1317 -1.630640067418199e-16 -1314 901 -0.01296296296296289 -1314 902 -0.01342592592592581 -1314 903 -0.1551783264746211 -1314 904 -8.673617379884035e-17 -1314 905 -0.0287037037037037 -1314 906 -0.2040466392318233 -1314 907 0.01296296296296298 -1314 908 -0.01342592592592596 -1314 909 -0.1551783264746235 -1314 1309 -0.02407407407407405 -1314 1310 -3.469446951953614e-17 -1314 1311 -0.1063100137174246 -1314 1312 -9.8879238130678e-17 -1314 1313 4.336808689942018e-17 -1314 1314 1.241426611796978 -1314 1315 0.02407407407407415 -1314 1316 7.806255641895632e-17 -1314 1317 -0.106310013717419 -1315 904 -0.0009703703703703685 -1315 905 -0.0004999999999999996 -1315 906 -0.008333333333333333 -1315 907 -0.0002814814814814826 -1315 908 1.084202172485504e-19 -1315 909 1.040834085586084e-17 -1315 910 -0.0009703703703703697 -1315 911 0.0004999999999999996 -1315 912 0.00833333333333334 -1315 1312 -0.001659259259259245 -1315 1313 5.963111948670274e-18 -1315 1314 -0.03333333333333332 -1315 1315 0.007762962962962963 -1315 1316 -7.26415455565288e-18 -1315 1317 1.387778780781446e-17 -1315 1318 -0.001659259259259266 -1315 1319 9.75781955236954e-19 -1315 1320 0.03333333333333333 -1316 904 -0.0004999999999999996 -1316 905 -0.00104074074074074 -1316 906 -0.00925925925925929 -1316 907 4.336808689942018e-19 -1316 908 -0.002362962962962965 -1316 909 -0.03703703703703706 -1316 910 0.0004999999999999997 -1316 911 -0.001040740740740737 -1316 912 -0.009259259259259229 -1316 1312 5.963111948670274e-18 -1316 1313 0.0002814814814814957 -1316 1314 1.717376241217039e-16 -1316 1315 -7.37257477290143e-18 -1316 1316 0.008325925925925935 -1316 1317 1.283695372222837e-16 -1316 1318 7.589415207398531e-19 -1316 1319 0.0002814814814814744 -1316 1320 -1.040834085586084e-17 -1317 904 -0.01296296296296295 -1317 905 -0.0134259259259259 -1317 906 -0.155178326474623 -1317 907 1.734723475976807e-18 -1317 908 -0.02870370370370379 -1317 909 -0.2040466392318247 -1317 910 0.01296296296296295 -1317 911 -0.01342592592592589 -1317 912 -0.1551783264746222 -1317 1312 -0.02407407407407396 -1317 1313 3.816391647148976e-17 -1317 1314 -0.106310013717419 -1317 1315 -1.97758476261356e-16 -1317 1316 -2.602085213965211e-17 -1317 1317 1.241426611796983 -1317 1318 0.02407407407407415 -1317 1319 -2.602085213965211e-17 -1317 1320 -0.1063100137174221 -1318 907 -0.0009703703703703726 -1318 908 -0.0005000000000000004 -1318 909 -0.008333333333333338 -1318 910 -0.0002814814814814799 -1318 911 1.301042606982605e-18 -1318 912 6.938893903907228e-18 -1318 913 -0.000970370370370368 -1318 914 0.0004999999999999994 -1318 915 0.00833333333333334 -1318 1315 -0.001659259259259266 -1318 1316 7.589415207398531e-19 -1318 1317 -0.03333333333333333 -1318 1318 0.007762962962962972 -1318 1319 -1.734723475976807e-18 -1318 1320 1.387778780781446e-17 -1318 1321 -0.001659259259259261 -1318 1322 1.084202172485504e-19 -1318 1323 0.03333333333333333 -1319 907 -0.0005000000000000004 -1319 908 -0.001040740740740743 -1319 909 -0.009259259259259255 -1319 910 1.192622389734055e-18 -1319 911 -0.002362962962962961 -1319 912 -0.03703703703703708 -1319 913 0.0004999999999999993 -1319 914 -0.001040740740740737 -1319 915 -0.009259259259259257 -1319 1315 9.75781955236954e-19 -1319 1316 0.0002814814814814745 -1319 1317 4.336808689942018e-17 -1319 1318 -1.626303258728257e-18 -1319 1319 0.008325925925925936 -1319 1320 6.938893903907228e-18 -1319 1321 3.252606517456513e-19 -1319 1322 0.0002814814814814797 -1319 1323 1.734723475976807e-18 -1320 907 -0.01296296296296299 -1320 908 -0.01342592592592598 -1320 909 -0.1551783264746229 -1320 910 4.336808689942018e-17 -1320 911 -0.02870370370370361 -1320 912 -0.2040466392318244 -1320 913 0.01296296296296295 -1320 914 -0.01342592592592591 -1320 915 -0.1551783264746228 -1320 1315 -0.02407407407407402 -1320 1316 -3.989863994746656e-17 -1320 1317 -0.1063100137174221 -1320 1318 -1.144917494144693e-16 -1320 1319 -4.163336342344337e-17 -1320 1320 1.241426611796983 -1320 1321 0.02407407407407414 -1320 1322 6.765421556309548e-17 -1320 1323 -0.1063100137174214 -1321 910 -0.0009703703703703724 -1321 911 -0.0005000000000000007 -1321 912 -0.008333333333333342 -1321 913 -0.0002814814814814818 -1321 914 2.818925648462312e-18 -1321 915 1.734723475976807e-18 -1321 916 -0.0009703703703703634 -1321 917 0.0004999999999999978 -1321 918 0.00833333333333334 -1321 1318 -0.001659259259259261 -1321 1319 4.336808689942018e-19 -1321 1320 -0.03333333333333334 -1321 1321 0.007762962962962962 -1321 1322 3.903127820947816e-18 -1321 1323 1.040834085586084e-17 -1321 1324 -0.001659259259259258 -1321 1325 -4.553649124439119e-18 -1321 1326 0.03333333333333334 -1322 910 -0.0005000000000000007 -1322 911 -0.001040740740740746 -1322 912 -0.009259259259259293 -1322 913 2.927345865710862e-18 -1322 914 -0.002362962962962963 -1322 915 -0.03703703703703705 -1322 916 0.0004999999999999977 -1322 917 -0.001040740740740726 -1322 918 -0.009259259259259205 -1322 1318 1.084202172485504e-19 -1322 1319 0.0002814814814814797 -1322 1320 1.908195823574488e-17 -1322 1321 4.011548038196366e-18 -1322 1322 0.008325925925925919 -1322 1323 4.510281037539698e-17 -1322 1324 -4.662069341687669e-18 -1322 1325 0.0002814814814814836 -1322 1326 1.144917494144693e-16 -1323 910 -0.012962962962963 -1323 911 -0.01342592592592604 -1323 912 -0.1551783264746238 -1323 913 1.144917494144693e-16 -1323 914 -0.02870370370370384 -1323 915 -0.204046639231825 -1323 916 0.01296296296296288 -1323 917 -0.01342592592592572 -1323 918 -0.1551783264746213 -1323 1318 -0.02407407407407401 -1323 1319 6.071532165918825e-17 -1323 1320 -0.1063100137174214 -1323 1321 -1.457167719820518e-16 -1323 1322 4.163336342344337e-17 -1323 1323 1.241426611796982 -1323 1324 0.02407407407407416 -1323 1325 -5.204170427930421e-18 -1323 1326 -0.106310013717421 -1324 913 -0.0009703703703703777 -1324 914 -0.0005000000000000022 -1324 915 -0.008333333333333342 -1324 916 -0.0002814814814814839 -1324 917 3.686287386450715e-18 -1324 918 -1.040834085586084e-17 -1324 919 -0.0009703703703703642 -1324 920 0.0004999999999999983 -1324 921 0.008333333333333335 -1324 1321 -0.001659259259259258 -1324 1322 -4.553649124439119e-18 -1324 1323 -0.03333333333333335 -1324 1324 0.007762962962962956 -1324 1325 7.480994990149981e-18 -1324 1326 -1.040834085586084e-17 -1324 1327 -0.001659259259259246 -1324 1328 -2.710505431213761e-18 -1324 1329 0.03333333333333333 -1325 913 -0.0005000000000000022 -1325 914 -0.001040740740740755 -1325 915 -0.009259259259259326 -1325 916 3.794707603699266e-18 -1325 917 -0.002362962962962966 -1325 918 -0.03703703703703705 -1325 919 0.0004999999999999983 -1325 920 -0.001040740740740731 -1325 921 -0.009259259259259243 -1325 1321 -4.553649124439119e-18 -1325 1322 0.0002814814814814837 -1325 1323 -1.457167719820518e-16 -1325 1324 7.589415207398531e-18 -1325 1325 0.008325925925925926 -1325 1326 -1.387778780781446e-17 -1325 1327 -2.602085213965211e-18 -1325 1328 0.000281481481481494 -1325 1329 3.122502256758253e-17 -1326 913 -0.01296296296296306 -1326 914 -0.0134259259259261 -1326 915 -0.1551783264746247 -1326 916 1.52655665885959e-16 -1326 917 -0.02870370370370381 -1326 918 -0.2040466392318253 -1326 919 0.01296296296296292 -1326 920 -0.01342592592592576 -1326 921 -0.155178326474622 -1326 1321 -0.02407407407407399 -1326 1322 1.908195823574488e-17 -1326 1323 -0.106310013717421 -1326 1324 -1.578598363138894e-16 -1326 1325 1.040834085586084e-17 -1326 1326 1.241426611796984 -1326 1327 0.02407407407407414 -1326 1328 -8.673617379884035e-18 -1326 1329 -0.1063100137174194 -1327 916 -0.0009703703703703757 -1327 917 -0.0005000000000000016 -1327 918 -0.008333333333333335 -1327 919 -0.000281481481481484 -1327 920 1.192622389734055e-18 -1327 921 -8.673617379884035e-18 -1327 922 -0.0009703703703703715 -1327 923 0.0005000000000000003 -1327 924 0.008333333333333338 -1327 1324 -0.001659259259259246 -1327 1325 -2.602085213965211e-18 -1327 1326 -0.03333333333333333 -1327 1327 0.007762962962962961 -1327 1328 1.843143693225358e-18 -1327 1329 -3.469446951953614e-18 -1327 1330 -0.001659259259259251 -1327 1331 1.192622389734055e-18 -1327 1332 0.03333333333333333 -1328 916 -0.0005000000000000016 -1328 917 -0.001040740740740753 -1328 918 -0.009259259259259335 -1328 919 1.409462824231156e-18 -1328 920 -0.002362962962962967 -1328 921 -0.03703703703703709 -1328 922 0.0005000000000000004 -1328 923 -0.001040740740740743 -1328 924 -0.009259259259259273 -1328 1324 -2.818925648462312e-18 -1328 1325 0.0002814814814814941 -1328 1326 -1.162264728904461e-16 -1328 1327 1.734723475976807e-18 -1328 1328 0.008325925925925947 -1328 1329 3.122502256758253e-17 -1328 1330 1.084202172485504e-18 -1328 1331 0.0002814814814814891 -1328 1332 -6.938893903907228e-18 -1329 916 -0.01296296296296306 -1329 917 -0.01342592592592606 -1329 918 -0.1551783264746246 -1329 919 8.673617379884035e-17 -1329 920 -0.02870370370370366 -1329 921 -0.204046639231825 -1329 922 0.01296296296296298 -1329 923 -0.01342592592592594 -1329 924 -0.1551783264746228 -1329 1324 -0.02407407407407398 -1329 1325 3.469446951953614e-18 -1329 1326 -0.1063100137174194 -1329 1327 -7.979727989493313e-17 -1329 1328 -5.551115123125783e-17 -1329 1329 1.241426611796986 -1329 1330 0.02407407407407405 -1329 1331 -6.591949208711867e-17 -1329 1332 -0.1063100137174199 -1330 919 -0.0009703703703703694 -1330 920 -0.0004999999999999997 -1330 921 -0.008333333333333333 -1330 922 -0.000281481481481484 -1330 923 -1.192622389734055e-18 -1330 924 -5.204170427930421e-18 -1330 925 -0.000970370370370373 -1330 926 0.0005000000000000009 -1330 927 0.008333333333333338 -1330 1327 -0.001659259259259251 -1330 1328 1.192622389734055e-18 -1330 1329 -0.03333333333333333 -1330 1330 0.007762962962962965 -1330 1331 -2.927345865710862e-18 -1330 1332 -6.938893903907228e-18 -1330 1333 -0.001659259259259258 -1330 1334 2.059984127722458e-18 -1330 1335 0.03333333333333333 -1331 919 -0.0004999999999999998 -1331 920 -0.001040740740740739 -1331 921 -0.009259259259259254 -1331 922 -1.192622389734055e-18 -1331 923 -0.002362962962962966 -1331 924 -0.0370370370370371 -1331 925 0.0005000000000000009 -1331 926 -0.001040740740740747 -1331 927 -0.009259259259259302 -1331 1327 1.192622389734055e-18 -1331 1328 0.0002814814814814891 -1331 1329 5.030698080332741e-17 -1331 1330 -2.818925648462312e-18 -1331 1331 0.008325925925925938 -1331 1332 3.469446951953614e-17 -1331 1333 2.059984127722458e-18 -1331 1334 0.0002814814814814819 -1331 1335 -5.724587470723463e-17 -1332 919 -0.01296296296296295 -1332 920 -0.01342592592592588 -1332 921 -0.1551783264746222 -1332 922 -4.85722573273506e-17 -1332 923 -0.02870370370370367 -1332 924 -0.204046639231825 -1332 925 0.012962962962963 -1332 926 -0.01342592592592604 -1332 927 -0.1551783264746238 -1332 1327 -0.02407407407407407 -1332 1328 -6.245004513516506e-17 -1332 1329 -0.1063100137174199 -1332 1330 4.510281037539698e-17 -1332 1331 -5.724587470723463e-17 -1332 1332 1.241426611796984 -1332 1333 0.02407407407407402 -1332 1334 3.989863994746656e-17 -1332 1335 -0.1063100137174211 -1333 922 -0.0009703703703703673 -1333 923 -0.0004999999999999991 -1333 924 -0.008333333333333333 -1333 925 -0.0002814814814814829 -1333 926 2.49366499671666e-18 -1333 927 -5.204170427930421e-18 -1333 928 -0.0009703703703703595 -1333 929 0.0004999999999999966 -1333 930 0.008333333333333337 -1333 1330 -0.001659259259259258 -1333 1331 2.059984127722458e-18 -1333 1332 -0.03333333333333331 -1333 1333 0.007762962962962958 -1333 1334 3.144186300207963e-18 -1333 1335 -6.938893903907228e-18 -1333 1336 -0.001659259259259273 -1333 1337 -5.421010862427522e-18 -1333 1338 0.03333333333333333 -1334 922 -0.0004999999999999993 -1334 923 -0.001040740740740736 -1334 924 -0.009259259259259255 -1334 925 2.38524477946811e-18 -1334 926 -0.002362962962962965 -1334 927 -0.03703703703703701 -1334 928 0.0004999999999999968 -1334 929 -0.001040740740740718 -1334 930 -0.009259259259259169 -1334 1330 2.059984127722458e-18 -1334 1331 0.0002814814814814817 -1334 1332 5.377642775528102e-17 -1334 1333 3.144186300207963e-18 -1334 1334 0.008325925925925903 -1334 1335 1.214306433183765e-16 -1334 1336 -5.637851296924623e-18 -1334 1337 0.0002814814814814682 -1334 1338 1.214306433183765e-16 -1335 922 -0.01296296296296293 -1335 923 -0.01342592592592589 -1335 924 -0.1551783264746225 -1335 925 1.249000902703301e-16 -1335 926 -0.02870370370370399 -1335 927 -0.204046639231825 -1335 928 0.0129629629629628 -1335 929 -0.01342592592592564 -1335 930 -0.1551783264746202 -1335 1330 -0.02407407407407407 -1335 1331 3.122502256758253e-17 -1335 1332 -0.1063100137174211 -1335 1333 -1.387778780781446e-16 -1335 1334 5.204170427930421e-17 -1335 1335 1.241426611796979 -1335 1336 0.02407407407407423 -1335 1337 4.163336342344337e-17 -1335 1338 -0.106310013717423 -1336 925 -0.0009703703703703817 -1336 926 -0.0005000000000000034 -1336 927 -0.008333333333333333 -1336 928 -0.0002814814814814867 -1336 929 4.336808689942018e-18 -1336 930 -3.469446951953614e-18 -1336 931 -0.000970370370370366 -1336 932 0.000499999999999999 -1336 933 0.008333333333333335 -1336 1333 -0.001659259259259273 -1336 1334 -5.529431079676073e-18 -1336 1335 -0.03333333333333332 -1336 1336 0.007762962962962967 -1336 1337 6.396792817664476e-18 -1336 1339 -0.001659259259259231 -1336 1340 -1.192622389734055e-18 -1336 1341 0.03333333333333333 -1337 925 -0.0005000000000000033 -1337 926 -0.001040740740740763 -1337 927 -0.009259259259259352 -1337 928 4.228388472693467e-18 -1337 929 -0.00236296296296297 -1337 930 -0.03703703703703717 -1337 931 0.0004999999999999989 -1337 932 -0.001040740740740736 -1337 933 -0.009259259259259257 -1337 1333 -5.421010862427522e-18 -1337 1334 0.0002814814814814682 -1337 1335 -1.752070710736575e-16 -1337 1336 6.396792817664476e-18 -1337 1337 0.008325925925925952 -1337 1338 -1.561251128379126e-16 -1337 1339 -1.301042606982605e-18 -1337 1340 0.0002814814814815066 -1337 1341 7.28583859910259e-17 -1338 925 -0.01296296296296309 -1338 926 -0.01342592592592624 -1338 927 -0.1551783264746253 -1338 928 1.457167719820518e-16 -1338 929 -0.02870370370370358 -1338 930 -0.2040466392318253 -1338 931 0.01296296296296294 -1338 932 -0.01342592592592587 -1338 933 -0.1551783264746221 -1338 1333 -0.02407407407407389 -1338 1334 6.071532165918825e-17 -1338 1335 -0.106310013717423 -1338 1336 -2.133709875451473e-16 -1338 1337 2.081668171172169e-17 -1338 1338 1.241426611796985 -1338 1339 0.02407407407407412 -1338 1340 -5.551115123125783e-17 -1338 1341 -0.1063100137174173 -1339 928 -0.0009703703703703727 -1339 929 -0.0005000000000000011 -1339 930 -0.008333333333333333 -1339 931 -0.0002814814814814932 -1339 932 1.843143693225358e-18 -1339 933 -1.387778780781446e-17 -1339 934 -0.0009703703703703654 -1339 935 0.0004999999999999987 -1339 936 0.008333333333333335 -1339 1336 -0.001659259259259231 -1339 1337 -1.409462824231156e-18 -1339 1338 -0.03333333333333333 -1339 1339 0.00776296296296295 -1339 1340 5.963111948670274e-18 -1339 1342 -0.001659259259259245 -1339 1343 -3.686287386450715e-18 -1339 1344 0.03333333333333334 -1340 928 -0.000500000000000001 -1340 929 -0.001040740740740749 -1340 930 -0.009259259259259314 -1340 931 1.734723475976807e-18 -1340 932 -0.002362962962962978 -1340 933 -0.03703703703703715 -1340 934 0.0004999999999999989 -1340 935 -0.001040740740740735 -1340 936 -0.009259259259259278 -1340 1336 -1.192622389734055e-18 -1340 1337 0.0002814814814815066 -1340 1339 5.854691731421724e-18 -1340 1340 0.008325925925925947 -1340 1341 1.006139616066548e-16 -1340 1342 -3.686287386450715e-18 -1340 1343 0.0002814814814814937 -1340 1344 8.847089727481716e-17 -1341 928 -0.01296296296296302 -1341 929 -0.01342592592592605 -1341 930 -0.1551783264746236 -1341 931 7.632783294297951e-17 -1341 932 -0.02870370370370397 -1341 933 -0.2040466392318269 -1341 934 0.01296296296296293 -1341 935 -0.01342592592592585 -1341 936 -0.1551783264746226 -1341 1336 -0.02407407407407401 -1341 1337 -4.336808689942018e-17 -1341 1338 -0.1063100137174173 -1341 1339 -1.214306433183765e-17 -1341 1340 2.775557561562891e-17 -1341 1341 1.241426611796987 -1341 1342 0.02407407407407403 -1341 1343 -3.469446951953614e-17 -1341 1344 -0.1063100137174196 -1342 931 -0.0009703703703703738 -1342 932 -0.0005000000000000013 -1342 933 -0.008333333333333342 -1342 934 -0.0002814814814814779 -1342 935 1.192622389734055e-18 -1342 936 -2.42861286636753e-17 -1342 937 -0.0009703703703703671 -1342 938 0.0004999999999999988 -1342 939 0.008333333333333335 -1342 1339 -0.001659259259259245 -1342 1340 -3.686287386450715e-18 -1342 1341 -0.03333333333333333 -1342 1342 0.007762962962962963 -1342 1343 9.432558900623889e-18 -1342 1344 1.387778780781446e-17 -1342 1345 -0.001659259259259276 -1342 1346 -3.361026734705064e-18 -1342 1347 0.03333333333333335 -1343 931 -0.0005000000000000012 -1343 932 -0.00104074074074075 -1343 933 -0.009259259259259335 -1343 934 1.192622389734055e-18 -1343 935 -0.002362962962962959 -1343 936 -0.03703703703703702 -1343 937 0.0004999999999999989 -1343 938 -0.001040740740740731 -1343 939 -0.009259259259259189 -1343 1339 -3.686287386450715e-18 -1343 1340 0.0002814814814814937 -1343 1341 -1.335737076502141e-16 -1343 1342 9.432558900623889e-18 -1343 1343 0.008325925925925924 -1343 1344 2.081668171172169e-17 -1343 1345 -3.686287386450715e-18 -1343 1346 0.0002814814814814676 -1343 1347 7.632783294297951e-17 -1344 931 -0.01296296296296304 -1344 932 -0.01342592592592605 -1344 933 -0.1551783264746244 -1344 934 1.196959198423997e-16 -1344 935 -0.02870370370370376 -1344 936 -0.204046639231824 -1344 937 0.01296296296296289 -1344 938 -0.01342592592592578 -1344 939 -0.1551783264746213 -1344 1339 -0.02407407407407403 -1344 1340 2.255140518769849e-17 -1344 1341 -0.1063100137174196 -1344 1342 -9.194034422677078e-17 -1344 1343 6.071532165918825e-17 -1344 1344 1.241426611796983 -1344 1345 0.02407407407407413 -1344 1346 -2.602085213965211e-17 -1344 1347 -0.1063100137174232 -1345 934 -0.0009703703703703763 -1345 935 -0.0005000000000000012 -1345 936 -0.008333333333333344 -1345 937 -0.0002814814814814666 -1345 938 -7.589415207398531e-19 -1345 939 -1.214306433183765e-17 -1345 940 -0.0009703703703703763 -1345 941 0.0005000000000000013 -1345 942 0.008333333333333335 -1345 1342 -0.001659259259259276 -1345 1343 -3.686287386450715e-18 -1345 1344 -0.03333333333333336 -1345 1345 0.007762962962962974 -1345 1346 -2.168404344971009e-19 -1345 1347 -3.469446951953614e-18 -1345 1348 -0.001659259259259282 -1345 1349 5.312590645178972e-18 -1345 1350 0.03333333333333335 -1346 934 -0.0005000000000000013 -1346 935 -0.001040740740740746 -1346 936 -0.009259259259259247 -1346 937 -7.589415207398531e-19 -1346 938 -0.002362962962962943 -1346 939 -0.03703703703703689 -1346 940 0.0005000000000000013 -1346 941 -0.001040740740740747 -1346 942 -0.009259259259259241 -1346 1342 -3.469446951953614e-18 -1346 1343 0.0002814814814814676 -1346 1344 -1.43982048506075e-16 -1346 1345 -1.084202172485504e-19 -1346 1346 0.008325925925925903 -1346 1347 -2.393918396847994e-16 -1346 1348 5.204170427930421e-18 -1346 1349 0.0002814814814814621 -1346 1350 -1.370431546021678e-16 -1347 934 -0.01296296296296301 -1347 935 -0.01342592592592597 -1347 936 -0.1551783264746231 -1347 937 -5.204170427930421e-18 -1347 938 -0.02870370370370328 -1347 939 -0.204046639231821 -1347 940 0.012962962962963 -1347 941 -0.013425925925926 -1347 942 -0.1551783264746231 -1347 1342 -0.02407407407407413 -1347 1343 3.295974604355933e-17 -1347 1344 -0.1063100137174231 -1347 1345 -5.204170427930421e-18 -1347 1346 -4.510281037539698e-17 -1347 1347 1.241426611796978 -1347 1348 0.02407407407407414 -1347 1349 8.673617379884035e-18 -1347 1350 -0.106310013717424 -1348 937 -0.0009703703703703673 -1348 938 -0.0004999999999999986 -1348 939 -0.008333333333333333 -1348 940 -0.0002814814814814681 -1348 941 -3.252606517456513e-19 -1348 942 2.775557561562891e-17 -1348 943 -0.0009703703703703723 -1348 944 0.0005000000000000002 -1348 945 0.008333333333333349 -1348 1345 -0.001659259259259282 -1348 1346 5.312590645178972e-18 -1348 1347 -0.03333333333333335 -1348 1348 0.007762962962962972 -1348 1349 -5.529431079676073e-18 -1348 1350 1.734723475976807e-17 -1348 1351 -0.001659259259259269 -1348 1352 -1.951563910473908e-18 -1348 1353 0.03333333333333335 -1349 937 -0.0004999999999999987 -1349 938 -0.001040740740740729 -1349 939 -0.009259259259259167 -1349 940 -1.084202172485504e-19 -1349 941 -0.002362962962962945 -1349 942 -0.03703703703703685 -1349 943 0.0005000000000000002 -1349 944 -0.001040740740740738 -1349 945 -0.009259259259259228 -1349 1345 5.204170427930421e-18 -1349 1346 0.000281481481481462 -1349 1347 1.578598363138894e-16 -1349 1348 -5.312590645178972e-18 -1349 1349 0.008325925925925907 -1349 1350 1.97758476261356e-16 -1349 1351 -2.059984127722458e-18 -1349 1352 0.0002814814814814731 -1349 1353 6.938893903907228e-17 -1350 937 -0.01296296296296289 -1350 938 -0.01342592592592576 -1350 939 -0.155178326474621 -1350 940 -4.510281037539698e-17 -1350 941 -0.02870370370370362 -1350 942 -0.2040466392318212 -1350 943 0.01296296296296296 -1350 944 -0.0134259259259259 -1350 945 -0.1551783264746221 -1350 1345 -0.02407407407407413 -1350 1346 -2.602085213965211e-17 -1350 1347 -0.106310013717424 -1350 1348 -1.908195823574488e-17 -1350 1349 -5.030698080332741e-17 -1350 1350 1.241426611796977 -1350 1351 0.02407407407407414 -1350 1352 1.040834085586084e-17 -1350 1353 -0.1063100137174222 -1351 940 -0.0009703703703703701 -1351 941 -0.0005 -1351 942 -0.00833333333333333 -1351 943 -0.0002814814814814838 -1351 944 2.710505431213761e-18 -1351 945 1.908195823574488e-17 -1351 946 -0.0009703703703703651 -1351 947 0.0004999999999999986 -1351 948 0.008333333333333337 -1351 1348 -0.001659259259259269 -1351 1349 -2.168404344971009e-18 -1351 1350 -0.03333333333333337 -1351 1351 0.007762962962962963 -1351 1352 5.529431079676073e-18 -1351 1353 -2.775557561562891e-17 -1351 1354 -0.001659259259259244 -1351 1355 -5.421010862427522e-18 -1351 1356 0.03333333333333332 -1352 940 -0.0005 -1352 941 -0.001040740740740741 -1352 942 -0.009259259259259247 -1352 943 2.38524477946811e-18 -1352 944 -0.002362962962962967 -1352 945 -0.03703703703703706 -1352 946 0.0004999999999999986 -1352 947 -0.001040740740740734 -1352 948 -0.009259259259259264 -1352 1348 -1.951563910473908e-18 -1352 1349 0.0002814814814814731 -1352 1350 -5.204170427930421e-18 -1352 1351 5.421010862427522e-18 -1352 1352 0.008325925925925931 -1352 1353 1.110223024625157e-16 -1352 1354 -5.204170427930421e-18 -1352 1355 0.0002814814814814947 -1352 1356 1.474514954580286e-16 -1353 940 -0.01296296296296293 -1353 941 -0.01342592592592592 -1353 942 -0.1551783264746221 -1353 943 3.642919299551295e-17 -1353 944 -0.02870370370370383 -1353 945 -0.2040466392318248 -1353 946 0.01296296296296293 -1353 947 -0.01342592592592585 -1353 948 -0.1551783264746225 -1353 1348 -0.02407407407407412 -1353 1349 -3.295974604355933e-17 -1353 1350 -0.1063100137174222 -1353 1351 9.71445146547012e-17 -1353 1352 2.255140518769849e-17 -1353 1353 1.241426611796983 -1353 1354 0.02407407407407402 -1353 1355 -1.908195823574488e-17 -1353 1356 -0.1063100137174194 -1354 943 -0.0009703703703703738 -1354 944 -0.0005000000000000014 -1354 945 -0.008333333333333333 -1354 946 -0.0002814814814814783 -1354 947 1.409462824231156e-18 -1354 948 -3.469446951953614e-18 -1354 949 -0.0009703703703703718 -1354 950 0.0005 -1354 951 0.008333333333333335 -1354 1351 -0.001659259259259244 -1354 1352 -5.204170427930421e-18 -1354 1353 -0.03333333333333332 -1354 1354 0.007762962962962964 -1354 1355 5.204170427930421e-18 -1354 1356 -3.469446951953614e-18 -1354 1357 -0.001659259259259278 -1354 1359 0.03333333333333333 -1355 943 -0.0005000000000000013 -1355 944 -0.001040740740740751 -1355 945 -0.009259259259259339 -1355 946 1.409462824231156e-18 -1355 947 -0.002362962962962959 -1355 948 -0.03703703703703707 -1355 949 0.0004999999999999999 -1355 950 -0.001040740740740738 -1355 951 -0.009259259259259184 -1355 1351 -5.421010862427522e-18 -1355 1352 0.0002814814814814946 -1355 1353 -1.474514954580286e-16 -1355 1354 5.312590645178972e-18 -1355 1355 0.008325925925925924 -1355 1356 -2.081668171172169e-16 -1355 1357 1.084202172485504e-19 -1355 1358 0.0002814814814814651 -1355 1359 9.540979117872439e-17 -1356 943 -0.01296296296296304 -1356 944 -0.01342592592592609 -1356 945 -0.1551783264746245 -1356 946 9.8879238130678e-17 -1356 947 -0.02870370370370345 -1356 948 -0.2040466392318239 -1356 949 0.01296296296296295 -1356 950 -0.01342592592592595 -1356 951 -0.1551783264746221 -1356 1351 -0.02407407407407403 -1356 1352 1.561251128379126e-17 -1356 1353 -0.1063100137174194 -1356 1354 -7.112366251504909e-17 -1356 1355 -5.898059818321144e-17 -1356 1356 1.241426611796982 -1356 1357 0.02407407407407409 -1356 1358 1.040834085586084e-17 -1356 1359 -0.1063100137174235 -1357 946 -0.0009703703703703719 -1357 947 -0.0005 -1357 948 -0.008333333333333333 -1357 949 -0.0002814814814814836 -1357 950 4.336808689942018e-19 -1357 951 -3.469446951953614e-18 -1357 952 -0.0009703703703703671 -1357 953 0.0004999999999999996 -1357 954 0.008333333333333335 -1357 1354 -0.001659259259259278 -1357 1356 -0.03333333333333331 -1357 1357 0.007762962962962959 -1357 1358 4.011548038196366e-18 -1357 1359 -6.938893903907228e-18 -1357 1360 -0.001659259259259233 -1357 1361 -4.011548038196366e-18 -1357 1362 0.03333333333333332 -1358 946 -0.0005 -1358 947 -0.001040740740740738 -1358 948 -0.009259259259259182 -1358 949 3.252606517456513e-19 -1358 950 -0.002362962962962966 -1358 951 -0.0370370370370371 -1358 952 0.0004999999999999996 -1358 953 -0.001040740740740742 -1358 954 -0.009259259259259321 -1358 1354 -1.084202172485504e-19 -1358 1355 0.0002814814814814651 -1358 1356 9.540979117872439e-17 -1358 1357 3.903127820947816e-18 -1358 1358 0.008325925925925926 -1358 1359 -7.28583859910259e-17 -1358 1360 -3.903127820947816e-18 -1358 1361 0.0002814814814815055 -1358 1362 1.43982048506075e-16 -1359 946 -0.01296296296296295 -1359 947 -0.01342592592592594 -1359 948 -0.1551783264746221 -1359 949 -1.908195823574488e-17 -1359 950 -0.02870370370370367 -1359 951 -0.2040466392318248 -1359 952 0.01296296296296297 -1359 953 -0.01342592592592597 -1359 954 -0.1551783264746233 -1359 1354 -0.02407407407407409 -1359 1355 1.734723475976807e-18 -1359 1356 -0.1063100137174235 -1359 1357 1.006139616066548e-16 -1359 1358 -5.204170427930421e-18 -1359 1359 1.241426611796981 -1359 1360 0.024074074074074 -1359 1361 4.683753385137379e-17 -1359 1362 -0.1063100137174175 -1360 949 -0.0009703703703703695 -1360 950 -0.0005000000000000003 -1360 951 -0.008333333333333331 -1360 952 -0.0002814814814814786 -1360 953 7.589415207398531e-19 -1360 954 -1.734723475976807e-18 -1360 955 -0.0009703703703703717 -1360 956 0.0004999999999999996 -1360 957 0.008333333333333335 -1360 1357 -0.001659259259259233 -1360 1358 -3.903127820947816e-18 -1360 1359 -0.03333333333333331 -1360 1360 0.007762962962962965 -1360 1361 8.348356728138384e-18 -1360 1363 -0.001659259259259288 -1360 1364 -4.77048955893622e-18 -1360 1365 0.03333333333333333 -1361 949 -0.0005000000000000002 -1361 950 -0.001040740740740747 -1361 951 -0.009259259259259342 -1361 952 8.673617379884035e-19 -1361 953 -0.002362962962962959 -1361 954 -0.037037037037037 -1361 955 0.0004999999999999996 -1361 956 -0.001040740740740734 -1361 957 -0.009259259259259175 -1361 1357 -4.011548038196366e-18 -1361 1358 0.0002814814814815053 -1361 1359 -7.806255641895632e-17 -1361 1360 8.348356728138384e-18 -1361 1361 0.008325925925925924 -1361 1362 7.28583859910259e-17 -1361 1363 -4.662069341687669e-18 -1361 1364 0.0002814814814814555 -1361 1365 7.459310946700271e-17 -1362 949 -0.012962962962963 -1362 950 -0.01342592592592603 -1362 951 -0.1551783264746238 -1362 952 5.898059818321144e-17 -1362 953 -0.02870370370370368 -1362 954 -0.2040466392318239 -1362 955 0.01296296296296293 -1362 956 -0.01342592592592578 -1362 957 -0.1551783264746218 -1362 1357 -0.02407407407407411 -1362 1358 7.632783294297951e-17 -1362 1359 -0.1063100137174175 -1362 1360 1.387778780781446e-16 -1362 1361 -1.214306433183765e-17 -1362 1362 1.241426611796983 -1362 1363 0.02407407407407399 -1362 1364 -8.153200337090993e-17 -1362 1365 -0.1063100137174252 -1363 952 -0.0009703703703703738 -1363 953 -0.0005000000000000003 -1363 954 -0.008333333333333333 -1363 955 -0.0002814814814814744 -1363 956 2.276824562219559e-18 -1363 957 -3.469446951953614e-18 -1363 958 -0.0009703703703703627 -1363 959 0.0004999999999999981 -1363 960 0.008333333333333335 -1363 1360 -0.001659259259259288 -1363 1361 -4.662069341687669e-18 -1363 1362 -0.03333333333333333 -1363 1363 0.007762962962962963 -1363 1364 7.155734338404329e-18 -1363 1365 -3.469446951953614e-18 -1363 1366 -0.001659259259259259 -1363 1367 -2.710505431213761e-18 -1363 1368 0.03333333333333333 -1364 952 -0.0005000000000000004 -1364 953 -0.001040740740740738 -1364 954 -0.009259259259259193 -1364 955 2.38524477946811e-18 -1364 956 -0.002362962962962953 -1364 957 -0.03703703703703694 -1364 958 0.000499999999999998 -1364 959 -0.00104074074074073 -1364 960 -0.009259259259259228 -1364 1360 -4.77048955893622e-18 -1364 1361 0.0002814814814814555 -1364 1362 -1.856154119295184e-16 -1364 1363 7.155734338404329e-18 -1364 1364 0.008325925925925902 -1364 1365 -3.816391647148976e-17 -1364 1366 -2.49366499671666e-18 -1364 1367 0.0002814814814814757 -1364 1368 5.551115123125783e-17 -1365 952 -0.01296296296296296 -1365 953 -0.01342592592592584 -1365 954 -0.1551783264746223 -1365 955 9.8879238130678e-17 -1365 956 -0.02870370370370369 -1365 957 -0.2040466392318228 -1365 958 0.01296296296296286 -1365 959 -0.01342592592592586 -1365 960 -0.1551783264746213 -1365 1360 -0.02407407407407413 -1365 1361 -6.591949208711867e-17 -1365 1362 -0.1063100137174252 -1365 1363 -3.122502256758253e-17 -1365 1364 6.591949208711867e-17 -1365 1365 1.241426611796979 -1365 1366 0.02407407407407417 -1365 1367 6.418476861114186e-17 -1365 1368 -0.1063100137174214 -1366 955 -0.0009703703703703759 -1366 956 -0.000500000000000002 -1366 957 -0.008333333333333331 -1366 958 -0.000281481481481492 -1366 959 3.144186300207963e-18 -1366 960 -1.387778780781446e-17 -1366 961 -0.0009703703703703635 -1366 962 0.0004999999999999983 -1366 963 0.008333333333333337 -1366 1363 -0.001659259259259259 -1366 1364 -2.49366499671666e-18 -1366 1365 -0.03333333333333333 -1366 1366 0.007762962962962961 -1366 1367 6.938893903907228e-18 -1366 1369 -0.001659259259259236 -1366 1370 -3.577867169202165e-18 -1366 1371 0.03333333333333334 -1367 955 -0.000500000000000002 -1367 956 -0.001040740740740756 -1367 957 -0.00925925925925934 -1367 958 3.361026734705064e-18 -1367 959 -0.002362962962962977 -1367 960 -0.0370370370370372 -1367 961 0.0004999999999999983 -1367 962 -0.00104074074074073 -1367 963 -0.009259259259259241 -1367 1363 -2.710505431213761e-18 -1367 1364 0.0002814814814814757 -1367 1365 -9.367506770274758e-17 -1367 1366 7.047314121155779e-18 -1367 1367 0.008325925925925954 -1367 1368 -3.469446951953614e-18 -1367 1369 -3.794707603699266e-18 -1367 1370 0.0002814814814815044 -1367 1371 1.387778780781446e-16 -1368 955 -0.01296296296296303 -1368 956 -0.01342592592592622 -1368 957 -0.1551783264746244 -1368 958 1.110223024625157e-16 -1368 959 -0.02870370370370382 -1368 960 -0.2040466392318263 -1368 961 0.01296296296296291 -1368 962 -0.01342592592592575 -1368 963 -0.1551783264746215 -1368 1363 -0.02407407407407396 -1368 1364 7.806255641895632e-17 -1368 1365 -0.1063100137174214 -1368 1366 -1.665334536937735e-16 -1368 1367 3.469446951953614e-17 -1368 1368 1.241426611796985 -1368 1369 0.02407407407407412 -1368 1370 -9.8879238130678e-17 -1368 1371 -0.1063100137174178 -1369 958 -0.0009703703703703765 -1369 959 -0.0005000000000000019 -1369 960 -0.008333333333333342 -1369 961 -0.0002814814814814659 -1369 962 1.409462824231156e-18 -1369 963 3.469446951953614e-18 -1369 964 -0.0009703703703703751 -1369 965 0.0005000000000000006 -1369 966 0.008333333333333347 -1369 1366 -0.001659259259259236 -1369 1367 -3.794707603699266e-18 -1369 1368 -0.03333333333333333 -1369 1369 0.007762962962962968 -1369 1370 2.927345865710862e-18 -1369 1371 1.040834085586084e-17 -1369 1372 -0.001659259259259292 -1369 1373 1.084202172485504e-18 -1369 1374 0.03333333333333333 -1370 958 -0.0005000000000000019 -1370 959 -0.001040740740740753 -1370 960 -0.009259259259259335 -1370 961 1.192622389734055e-18 -1370 962 -0.002362962962962943 -1370 963 -0.03703703703703691 -1370 964 0.0005000000000000004 -1370 965 -0.001040740740740738 -1370 966 -0.009259259259259182 -1370 1366 -3.577867169202165e-18 -1370 1367 0.0002814814814815043 -1370 1368 -7.979727989493313e-17 -1370 1369 3.035766082959412e-18 -1370 1370 0.008325925925925921 -1370 1371 2.42861286636753e-17 -1370 1372 1.301042606982605e-18 -1370 1373 0.0002814814814814531 -1370 1374 -4.683753385137379e-17 -1371 958 -0.01296296296296307 -1371 959 -0.01342592592592606 -1371 960 -0.1551783264746243 -1371 961 9.020562075079397e-17 -1371 962 -0.02870370370370342 -1371 963 -0.2040466392318213 -1371 964 0.01296296296296297 -1371 965 -0.01342592592592587 -1371 966 -0.1551783264746224 -1371 1366 -0.02407407407407402 -1371 1367 -4.510281037539698e-17 -1371 1368 -0.1063100137174179 -1371 1369 -1.110223024625157e-16 -1371 1370 -1.43982048506075e-16 -1371 1371 1.241426611796981 -1371 1372 0.02407407407407412 -1371 1373 8.673617379884035e-18 -1371 1374 -0.1063100137174254 -1372 961 -0.000970370370370371 -1372 962 -0.0004999999999999996 -1372 963 -0.00833333333333334 -1372 964 -0.0002814814814814809 -1372 965 -6.505213034913027e-19 -1372 966 6.938893903907228e-18 -1372 967 -0.0009703703703703704 -1372 968 0.0005000000000000007 -1372 969 0.008333333333333335 -1372 1369 -0.001659259259259292 -1372 1370 1.301042606982605e-18 -1372 1371 -0.03333333333333335 -1372 1372 0.007762962962962963 -1372 1373 -4.445228907190568e-18 -1372 1374 -6.938893903907228e-18 -1372 1375 -0.001659259259259225 -1372 1376 2.602085213965211e-18 -1372 1377 0.03333333333333332 -1373 961 -0.0004999999999999995 -1373 962 -0.001040740740740733 -1373 963 -0.009259259259259163 -1373 964 -4.336808689942018e-19 -1373 965 -0.002362962962962962 -1373 966 -0.03703703703703702 -1373 967 0.0005000000000000007 -1373 968 -0.00104074074074075 -1373 969 -0.009259259259259375 -1373 1369 1.084202172485504e-18 -1373 1370 0.0002814814814814531 -1373 1371 2.602085213965211e-17 -1373 1372 -4.553649124439119e-18 -1373 1373 0.008325925925925928 -1373 1374 6.938893903907228e-18 -1373 1375 2.710505431213761e-18 -1373 1376 0.0002814814814815108 -1373 1377 -1.370431546021678e-16 -1374 961 -0.01296296296296293 -1374 962 -0.0134259259259258 -1374 963 -0.1551783264746217 -1374 964 -6.938893903907228e-17 -1374 965 -0.02870370370370374 -1374 966 -0.2040466392318244 -1374 967 0.01296296296296301 -1374 968 -0.01342592592592603 -1374 969 -0.1551783264746241 -1374 1369 -0.02407407407407411 -1374 1370 -1.908195823574488e-17 -1374 1371 -0.1063100137174254 -1374 1372 8.153200337090993e-17 -1374 1373 3.295974604355933e-17 -1374 1374 1.241426611796983 -1374 1375 0.02407407407407402 -1374 1376 1.387778780781446e-17 -1374 1377 -0.1063100137174166 -1375 964 -0.0009703703703703656 -1375 965 -0.0004999999999999993 -1375 966 -0.008333333333333331 -1375 967 -0.0002814814814814972 -1375 968 1.517883041479706e-18 -1375 969 -1.387778780781446e-17 -1375 970 -0.0009703703703703605 -1375 971 0.0004999999999999972 -1375 972 0.008333333333333335 -1375 1372 -0.001659259259259225 -1375 1373 2.602085213965211e-18 -1375 1374 -0.03333333333333331 -1375 1375 0.007762962962962948 -1375 1376 3.144186300207963e-18 -1375 1378 -0.001659259259259264 -1375 1379 -5.204170427930421e-18 -1375 1380 0.03333333333333334 -1376 964 -0.0004999999999999995 -1376 965 -0.001040740740740741 -1376 966 -0.009259259259259339 -1376 967 1.626303258728257e-18 -1376 968 -0.002362962962962983 -1376 969 -0.03703703703703719 -1376 970 0.0004999999999999972 -1376 971 -0.001040740740740723 -1376 972 -0.009259259259259226 -1376 1372 2.710505431213761e-18 -1376 1373 0.0002814814814815108 -1376 1374 1.214306433183765e-17 -1376 1375 3.035766082959412e-18 -1376 1376 0.008325925925925929 -1376 1377 2.151057110211241e-16 -1376 1378 -5.204170427930421e-18 -1376 1379 0.0002814814814814785 -1376 1380 1.43982048506075e-16 -1377 964 -0.01296296296296295 -1377 965 -0.01342592592592591 -1377 966 -0.1551783264746231 -1377 967 1.162264728904461e-16 -1377 968 -0.02870370370370427 -1377 969 -0.2040466392318276 -1377 970 0.01296296296296283 -1377 971 -0.01342592592592566 -1377 972 -0.1551783264746206 -1377 1372 -0.02407407407407402 -1377 1373 -3.469446951953614e-18 -1377 1374 -0.1063100137174167 -1377 1375 -1.474514954580286e-16 -1377 1376 6.245004513516506e-17 -1377 1377 1.241426611796983 -1377 1378 0.02407407407407418 -1377 1379 1.561251128379126e-17 -1377 1380 -0.1063100137174216 -1378 967 -0.0009703703703703802 -1378 968 -0.0005000000000000028 -1378 969 -0.008333333333333342 -1378 970 -0.0002814814814814647 -1378 971 6.288372600415926e-18 -1378 972 5.204170427930421e-18 -1378 973 -0.0009703703703703619 -1378 974 0.0004999999999999965 -1378 975 0.008333333333333347 -1378 1375 -0.001659259259259264 -1378 1376 -5.204170427930421e-18 -1378 1377 -0.03333333333333333 -1378 1378 0.007762962962962975 -1378 1379 9.432558900623889e-18 -1378 1380 6.938893903907228e-18 -1378 1381 -0.001659259259259293 -1378 1382 -4.228388472693467e-18 -1378 1383 0.03333333333333333 -1379 967 -0.0005000000000000028 -1379 968 -0.001040740740740759 -1379 969 -0.009259259259259373 -1379 970 6.288372600415926e-18 -1379 971 -0.002362962962962941 -1379 972 -0.03703703703703692 -1379 973 0.0004999999999999965 -1379 974 -0.001040740740740712 -1379 975 -0.009259259259259051 -1379 1375 -5.204170427930421e-18 -1379 1376 0.0002814814814814785 -1379 1377 -1.52655665885959e-16 -1379 1378 9.432558900623889e-18 -1379 1379 0.008325925925925905 -1379 1380 5.551115123125783e-17 -1379 1381 -4.119968255444917e-18 -1379 1382 0.000281481481481448 -1379 1383 1.301042606982605e-16 -1380 967 -0.01296296296296307 -1380 968 -0.01342592592592616 -1380 969 -0.155178326474625 -1380 970 2.636779683484747e-16 -1380 971 -0.02870370370370347 -1380 972 -0.204046639231821 -1380 973 0.01296296296296281 -1380 974 -0.01342592592592559 -1380 975 -0.1551783264746193 -1380 1375 -0.02407407407407396 -1380 1376 6.591949208711867e-17 -1380 1377 -0.1063100137174216 -1380 1378 -3.469446951953614e-16 -1380 1379 -1.023486850826316e-16 -1380 1380 1.241426611796979 -1380 1381 0.0240740740740743 -1380 1382 -6.245004513516506e-17 -1380 1383 -0.1063100137174261 -1381 970 -0.0009703703703703843 -1381 971 -0.0005000000000000035 -1381 972 -0.00833333333333334 -1381 973 -0.0002814814814814701 -1381 974 5.963111948670274e-18 -1381 975 8.673617379884035e-18 -1381 976 -0.0009703703703703633 -1381 977 0.0004999999999999981 -1381 978 0.008333333333333337 -1381 1378 -0.001659259259259293 -1381 1379 -4.119968255444917e-18 -1381 1380 -0.03333333333333335 -1381 1381 0.007762962962962972 -1381 1382 5.529431079676073e-18 -1381 1383 -6.938893903907228e-18 -1381 1384 -0.00165925925925924 -1381 1385 -1.951563910473908e-18 -1381 1386 0.03333333333333332 -1382 970 -0.0005000000000000035 -1382 971 -0.001040740740740759 -1382 972 -0.009259259259259254 -1382 973 5.963111948670274e-18 -1382 974 -0.002362962962962948 -1382 975 -0.03703703703703692 -1382 976 0.000499999999999998 -1382 977 -0.001040740740740729 -1382 978 -0.009259259259259228 -1382 1378 -4.228388472693467e-18 -1382 1379 0.000281481481481448 -1382 1380 -9.367506770274758e-17 -1382 1381 5.637851296924623e-18 -1382 1382 0.008325925925925931 -1382 1383 2.081668171172169e-17 -1382 1384 -2.059984127722458e-18 -1382 1385 0.0002814814814815007 -1382 1386 9.367506770274758e-17 -1383 970 -0.01296296296296309 -1383 971 -0.01342592592592622 -1383 972 -0.1551783264746247 -1383 973 2.081668171172169e-16 -1383 974 -0.02870370370370338 -1383 975 -0.204046639231822 -1383 976 0.0129629629629629 -1383 977 -0.01342592592592574 -1383 978 -0.1551783264746213 -1383 1378 -0.02407407407407386 -1383 1379 -6.071532165918825e-17 -1383 1380 -0.1063100137174261 -1383 1381 -3.712308238590367e-16 -1383 1382 -7.632783294297951e-17 -1383 1383 1.241426611796982 -1383 1384 0.02407407407407422 -1383 1385 -3.469446951953614e-18 -1383 1386 -0.1063100137174181 -1384 973 -0.0009703703703703766 -1384 974 -0.0005000000000000021 -1384 975 -0.008333333333333333 -1384 976 -0.0002814814814814822 -1384 977 6.505213034913027e-19 -1384 978 -3.469446951953614e-18 -1384 979 -0.0009703703703703752 -1384 980 0.0005000000000000014 -1384 981 0.008333333333333335 -1384 1381 -0.00165925925925924 -1384 1382 -2.059984127722458e-18 -1384 1383 -0.03333333333333332 -1384 1384 0.007762962962962963 -1384 1385 -3.144186300207963e-18 -1384 1387 -0.001659259259259261 -1384 1388 5.204170427930421e-18 -1384 1389 0.03333333333333333 -1385 973 -0.000500000000000002 -1385 974 -0.001040740740740755 -1385 975 -0.009259259259259339 -1385 976 6.505213034913027e-19 -1385 977 -0.002362962962962964 -1385 978 -0.03703703703703716 -1385 979 0.0005000000000000014 -1385 980 -0.001040740740740749 -1385 981 -0.009259259259259273 -1385 1381 -2.059984127722458e-18 -1385 1382 0.0002814814814815006 -1385 1383 -1.734723475976807e-17 -1385 1384 -3.144186300207963e-18 -1385 1385 0.008325925925925941 -1385 1386 -2.324529457808922e-16 -1385 1387 5.421010862427522e-18 -1385 1388 0.0002814814814814819 -1385 1389 -2.602085213965211e-17 -1386 973 -0.01296296296296307 -1386 974 -0.0134259259259261 -1386 975 -0.1551783264746244 -1386 976 3.122502256758253e-17 -1386 977 -0.02870370370370337 -1386 978 -0.2040466392318246 -1386 979 0.01296296296296304 -1386 980 -0.01342592592592612 -1386 981 -0.1551783264746238 -1386 1381 -0.02407407407407397 -1386 1382 6.938893903907228e-18 -1386 1383 -0.1063100137174181 -1386 1384 -8.500145032286355e-17 -1386 1385 -1.023486850826316e-16 -1386 1386 1.241426611796985 -1386 1387 0.02407407407407405 -1386 1388 -3.642919299551295e-17 -1386 1389 -0.1063100137174214 -1387 976 -0.0009703703703703663 -1387 977 -0.0004999999999999987 -1387 978 -0.008333333333333333 -1387 979 -0.0002814814814814885 -1387 980 -4.119968255444917e-18 -1387 981 -2.602085213965211e-17 -1387 982 -0.0009703703703703736 -1387 983 0.0005000000000000016 -1387 984 0.008333333333333319 -1387 1384 -0.001659259259259261 -1387 1385 5.312590645178972e-18 -1387 1386 -0.03333333333333332 -1387 1387 0.007762962962962958 -1387 1388 -3.903127820947816e-18 -1387 1389 1.040834085586084e-17 -1387 1390 -0.001659259259259228 -1387 1391 7.589415207398531e-19 -1387 1392 0.03333333333333334 -1388 976 -0.0004999999999999986 -1388 977 -0.001040740740740731 -1388 978 -0.0092592592592592 -1388 979 -4.119968255444917e-18 -1388 980 -0.002362962962962973 -1388 981 -0.03703703703703709 -1388 982 0.0005000000000000017 -1388 983 -0.001040740740740756 -1388 984 -0.009259259259259375 -1388 1384 5.204170427930421e-18 -1388 1385 0.0002814814814814818 -1388 1386 2.706168622523819e-16 -1388 1387 -4.119968255444917e-18 -1388 1388 0.008325925925925941 -1388 1389 3.469446951953614e-17 -1388 1390 6.505213034913027e-19 -1388 1391 0.0002814814814815131 -1388 1392 -5.204170427930421e-17 -1389 976 -0.01296296296296293 -1389 977 -0.01342592592592587 -1389 978 -0.1551783264746218 -1389 979 -1.370431546021678e-16 -1389 980 -0.02870370370370383 -1389 981 -0.2040466392318261 -1389 982 0.01296296296296304 -1389 983 -0.01342592592592605 -1389 984 -0.1551783264746248 -1389 1384 -0.02407407407407406 -1389 1385 -6.938893903907228e-17 -1389 1386 -0.1063100137174214 -1389 1387 1.543903893619358e-16 -1389 1388 7.459310946700271e-17 -1389 1389 1.241426611796986 -1389 1390 0.02407407407407391 -1389 1391 3.816391647148976e-17 -1389 1392 -0.1063100137174165 -1390 979 -0.0009703703703703646 -1390 980 -0.0004999999999999985 -1390 981 -0.008333333333333342 -1390 982 -0.0002814814814814795 -1390 983 -3.252606517456513e-18 -1390 984 1.040834085586084e-17 -1390 985 -0.000970370370370379 -1390 986 0.0005000000000000017 -1390 987 0.008333333333333349 -1390 1387 -0.001659259259259228 -1390 1388 6.505213034913027e-19 -1390 1389 -0.03333333333333334 -1390 1390 0.007762962962962957 -1390 1391 7.589415207398531e-19 -1390 1392 2.775557561562891e-17 -1390 1393 -0.001659259259259295 -1390 1394 -1.301042606982605e-18 -1390 1395 0.03333333333333334 -1391 979 -0.0004999999999999985 -1391 980 -0.001040740740740732 -1391 981 -0.009259259259259264 -1391 982 -3.361026734705064e-18 -1391 983 -0.002362962962962961 -1391 984 -0.03703703703703697 -1391 985 0.0005000000000000019 -1391 986 -0.001040740740740747 -1391 987 -0.009259259259259228 -1391 1387 8.673617379884035e-19 -1391 1388 0.0002814814814815131 -1391 1389 -5.377642775528102e-17 -1391 1390 6.505213034913027e-19 -1391 1391 0.008325925925925903 -1391 1392 -6.938893903907228e-17 -1391 1393 -1.409462824231156e-18 -1391 1394 0.0002814814814814487 -1391 1395 4.510281037539698e-17 -1392 979 -0.01296296296296293 -1392 980 -0.01342592592592573 -1392 981 -0.1551783264746222 -1392 982 -7.28583859910259e-17 -1392 983 -0.0287037037037038 -1392 984 -0.2040466392318236 -1392 985 0.01296296296296299 -1392 986 -0.01342592592592603 -1392 987 -0.1551783264746226 -1392 1387 -0.02407407407407423 -1392 1388 8.847089727481716e-17 -1392 1389 -0.1063100137174166 -1392 1390 2.255140518769849e-16 -1392 1391 1.387778780781446e-17 -1392 1392 1.241426611796977 -1392 1393 0.02407407407407401 -1392 1394 8.673617379884035e-18 -1392 1395 -0.1063100137174256 -1393 982 -0.0009703703703703656 -1393 983 -0.0004999999999999985 -1393 984 -0.00833333333333333 -1393 985 -0.0002814814814814677 -1393 986 9.75781955236954e-19 -1393 987 1.908195823574488e-17 -1393 988 -0.0009703703703703666 -1393 989 0.0004999999999999987 -1393 990 0.008333333333333335 -1393 1390 -0.001659259259259295 -1393 1391 -1.301042606982605e-18 -1393 1392 -0.03333333333333336 -1393 1393 0.007762962962962966 -1393 1394 2.059984127722458e-18 -1393 1395 -2.081668171172169e-17 -1393 1396 -0.001659259259259261 -1393 1397 -2.710505431213761e-18 -1393 1398 0.03333333333333333 -1394 982 -0.0004999999999999983 -1394 983 -0.001040740740740727 -1394 984 -0.009259259259259155 -1394 985 7.589415207398531e-19 -1394 986 -0.002362962962962945 -1394 987 -0.03703703703703683 -1394 988 0.0004999999999999987 -1394 989 -0.001040740740740731 -1394 990 -0.009259259259259228 -1394 1390 -1.301042606982605e-18 -1394 1391 0.0002814814814814487 -1394 1392 6.938893903907228e-18 -1394 1393 2.059984127722458e-18 -1394 1394 0.008325925925925889 -1394 1395 1.700029006457271e-16 -1394 1396 -2.602085213965211e-18 -1394 1397 0.0002814814814814827 -1394 1398 5.724587470723463e-17 -1395 982 -0.01296296296296283 -1395 983 -0.01342592592592576 -1395 984 -0.15517832647462 -1395 985 -3.122502256758253e-17 -1395 986 -0.02870370370370372 -1395 987 -0.2040466392318211 -1395 988 0.01296296296296289 -1395 989 -0.01342592592592571 -1395 990 -0.1551783264746217 -1395 1390 -0.02407407407407425 -1395 1391 -3.816391647148976e-17 -1395 1392 -0.1063100137174256 -1395 1393 1.630640067418199e-16 -1395 1394 -5.551115123125783e-17 -1395 1395 1.241426611796975 -1395 1396 0.02407407407407408 -1395 1397 -2.949029909160572e-17 -1395 1398 -0.1063100137174211 -1396 985 -0.0009703703703703756 -1396 986 -0.0005000000000000013 -1396 987 -0.008333333333333333 -1396 988 -0.0002814814814814867 -1396 989 2.059984127722458e-18 -1396 990 -1.561251128379126e-17 -1396 991 -0.0009703703703703647 -1396 992 0.0004999999999999987 -1396 993 0.008333333333333335 -1396 1393 -0.001659259259259261 -1396 1394 -2.710505431213761e-18 -1396 1395 -0.03333333333333332 -1396 1396 0.007762962962962964 -1396 1397 3.794707603699266e-18 -1396 1398 -3.469446951953614e-18 -1396 1399 -0.001659259259259255 -1396 1400 -5.421010862427522e-19 -1396 1401 0.03333333333333333 -1397 985 -0.0005000000000000013 -1397 986 -0.001040740740740749 -1397 987 -0.0092592592592593 -1397 988 1.843143693225358e-18 -1397 989 -0.002362962962962969 -1397 990 -0.03703703703703715 -1397 991 0.0004999999999999988 -1397 992 -0.001040740740740736 -1397 993 -0.009259259259259285 -1397 1393 -2.710505431213761e-18 -1397 1394 0.0002814814814814827 -1397 1395 -9.020562075079397e-17 -1397 1396 3.794707603699266e-18 -1397 1397 0.008325925925925933 -1397 1398 -7.979727989493313e-17 -1397 1399 -5.421010862427522e-19 -1397 1400 0.0002814814814814836 -1397 1401 -2.081668171172169e-17 -1398 985 -0.012962962962963 -1398 986 -0.01342592592592595 -1398 987 -0.1551783264746238 -1398 988 5.551115123125783e-17 -1398 989 -0.02870370370370374 -1398 990 -0.2040466392318258 -1398 991 0.01296296296296293 -1398 992 -0.01342592592592592 -1398 993 -0.1551783264746226 -1398 1393 -0.02407407407407396 -1398 1394 -1.387778780781446e-17 -1398 1395 -0.1063100137174211 -1398 1396 -1.595945597898663e-16 -1398 1397 3.469446951953614e-17 -1398 1398 1.241426611796984 -1398 1399 0.02407407407407414 -1398 1400 5.551115123125783e-17 -1398 1401 -0.1063100137174209 -1399 988 -0.0009703703703703734 -1399 989 -0.0005000000000000011 -1399 990 -0.008333333333333342 -1399 991 -0.0002814814814814819 -1399 992 3.903127820947816e-18 -1399 993 5.204170427930421e-18 -1399 994 -0.0009703703703703623 -1399 995 0.0004999999999999972 -1399 996 0.008333333333333349 -1399 1396 -0.001659259259259255 -1399 1397 -4.336808689942018e-19 -1399 1398 -0.03333333333333333 -1399 1399 0.007762962962962965 -1399 1400 4.553649124439119e-18 -1399 1401 1.734723475976807e-17 -1399 1402 -0.001659259259259266 -1399 1403 -4.119968255444917e-18 -1399 1404 0.03333333333333333 -1400 988 -0.0005000000000000011 -1400 989 -0.00104074074074075 -1400 990 -0.009259259259259342 -1400 991 4.119968255444917e-18 -1400 992 -0.002362962962962964 -1400 993 -0.03703703703703711 -1400 994 0.0004999999999999973 -1400 995 -0.00104074074074072 -1400 996 -0.009259259259259155 -1400 1396 -6.505213034913027e-19 -1400 1397 0.0002814814814814837 -1400 1398 -5.898059818321144e-17 -1400 1399 4.662069341687669e-18 -1400 1400 0.008325925925925931 -1400 1401 8.673617379884035e-17 -1400 1402 -4.228388472693467e-18 -1400 1403 0.0002814814814814745 -1400 1404 1.318389841742373e-16 -1401 988 -0.01296296296296304 -1401 989 -0.01342592592592612 -1401 990 -0.1551783264746244 -1401 991 1.97758476261356e-16 -1401 992 -0.02870370370370386 -1401 993 -0.2040466392318246 -1401 994 0.01296296296296284 -1401 995 -0.01342592592592566 -1401 996 -0.1551783264746199 -1401 1396 -0.024074074074074 -1401 1397 7.979727989493313e-17 -1401 1398 -0.1063100137174209 -1401 1399 -2.550043509685906e-16 -1401 1400 3.122502256758253e-17 -1401 1401 1.241426611796983 -1401 1402 0.02407407407407425 -1401 1403 -6.418476861114186e-17 -1401 1404 -0.106310013717422 -1402 991 -0.0009703703703703803 -1402 992 -0.0005000000000000028 -1402 993 -0.00833333333333334 -1402 994 -0.0002814814814814702 -1402 995 4.662069341687669e-18 -1402 996 6.938893903907228e-18 -1402 997 -0.0009703703703703672 -1402 998 0.0004999999999999987 -1402 999 0.008333333333333335 -1402 1399 -0.001659259259259266 -1402 1400 -4.228388472693467e-18 -1402 1401 -0.03333333333333335 -1402 1402 0.007762962962962961 -1402 1403 4.336808689942018e-19 -1402 1404 -6.938893903907228e-18 -1402 1405 -0.00165925925925926 -1402 1406 3.252606517456513e-18 -1402 1407 0.03333333333333332 -1403 991 -0.0005000000000000028 -1403 992 -0.001040740740740759 -1403 993 -0.009259259259259321 -1403 994 4.553649124439119e-18 -1403 995 -0.002362962962962948 -1403 996 -0.03703703703703691 -1403 997 0.0004999999999999987 -1403 998 -0.001040740740740729 -1403 999 -0.009259259259259182 -1403 1399 -4.119968255444917e-18 -1403 1400 0.0002814814814814744 -1403 1401 -9.194034422677078e-17 -1403 1402 3.252606517456513e-19 -1403 1403 0.008325925925925909 -1403 1404 -8.673617379884035e-17 -1403 1405 3.361026734705064e-18 -1403 1406 0.0002814814814814876 -1403 1407 -3.816391647148976e-17 -1404 991 -0.01296296296296307 -1404 992 -0.01342592592592617 -1404 993 -0.1551783264746243 -1404 994 1.578598363138894e-16 -1404 995 -0.02870370370370344 -1404 996 -0.204046639231822 -1404 997 0.01296296296296293 -1404 998 -0.01342592592592573 -1404 999 -0.1551783264746217 -1404 1399 -0.02407407407407391 -1404 1400 -6.071532165918825e-17 -1404 1401 -0.106310013717422 -1404 1402 -3.816391647148976e-16 -1404 1403 -1.405126015541214e-16 -1404 1404 1.24142661179698 -1404 1405 0.02407407407407427 -1404 1406 3.469446951953614e-18 -1404 1407 -0.1063100137174208 -1405 994 -0.0009703703703703761 -1405 995 -0.0005000000000000013 -1405 996 -0.008333333333333333 -1405 997 -0.0002814814814814772 -1405 998 -7.589415207398531e-19 -1405 999 -1.734723475976807e-18 -1405 1000 -0.0009703703703703766 -1405 1001 0.0005000000000000021 -1405 1002 0.008333333333333337 -1405 1402 -0.00165925925925926 -1405 1403 3.361026734705064e-18 -1405 1404 -0.03333333333333332 -1405 1405 0.007762962962962969 -1405 1406 -6.071532165918825e-18 -1405 1408 -0.001659259259259232 -1405 1409 2.710505431213761e-18 -1405 1410 0.03333333333333332 -1406 994 -0.0005000000000000013 -1406 995 -0.001040740740740747 -1406 996 -0.009259259259259255 -1406 997 -7.589415207398531e-19 -1406 998 -0.002362962962962957 -1406 999 -0.03703703703703698 -1406 1000 0.000500000000000002 -1406 1001 -0.001040740740740755 -1406 1002 -0.009259259259259359 -1406 1402 3.252606517456513e-18 -1406 1403 0.0002814814814814875 -1406 1404 1.474514954580286e-16 -1406 1405 -5.963111948670274e-18 -1406 1406 0.008325925925925952 -1406 1407 1.769417945496343e-16 -1406 1408 2.710505431213761e-18 -1406 1409 0.0002814814814815105 -1406 1410 -6.418476861114186e-17 -1407 994 -0.01296296296296304 -1407 995 -0.01342592592592597 -1407 996 -0.1551783264746237 -1407 997 -2.081668171172169e-17 -1407 998 -0.02870370370370354 -1407 999 -0.2040466392318235 -1407 1000 0.01296296296296306 -1407 1001 -0.01342592592592603 -1407 1002 -0.1551783264746242 -1407 1402 -0.02407407407407391 -1407 1403 -2.081668171172169e-17 -1407 1404 -0.1063100137174208 -1407 1405 -3.989863994746656e-17 -1407 1406 -1.387778780781446e-16 -1407 1407 1.241426611796986 -1407 1408 0.02407407407407395 -1407 1409 -6.591949208711867e-17 -1407 1410 -0.106310013717417 -1408 997 -0.0009703703703703632 -1408 998 -0.0004999999999999981 -1408 999 -0.008333333333333333 -1408 1000 -0.0002814814814814863 -1408 1001 -3.252606517456513e-18 -1408 1002 -3.469446951953614e-18 -1408 1003 -0.0009703703703703745 -1408 1004 0.0005000000000000013 -1408 1005 0.008333333333333335 -1408 1405 -0.001659259259259232 -1408 1406 2.710505431213761e-18 -1408 1407 -0.03333333333333332 -1408 1408 0.007762962962962953 -1408 1409 -5.312590645178972e-18 -1408 1411 -0.001659259259259267 -1408 1412 2.602085213965211e-18 -1408 1413 0.03333333333333332 -1409 997 -0.000499999999999998 -1409 998 -0.001040740740740729 -1409 999 -0.009259259259259248 -1409 1000 -3.361026734705064e-18 -1409 1001 -0.002362962962962969 -1409 1002 -0.0370370370370371 -1409 1003 0.0005000000000000013 -1409 1004 -0.00104074074074075 -1409 1005 -0.009259259259259316 -1409 1405 2.602085213965211e-18 -1409 1406 0.0002814814814815105 -1409 1407 8.500145032286355e-17 -1409 1408 -5.312590645178972e-18 -1409 1409 0.008325925925925926 -1409 1410 9.71445146547012e-17 -1409 1411 2.710505431213761e-18 -1409 1412 0.0002814814814814741 -1409 1413 -3.642919299551295e-17 -1410 997 -0.0129629629629629 -1410 998 -0.01342592592592567 -1410 999 -0.1551783264746211 -1410 1000 -1.07552855510562e-16 -1410 1001 -0.02870370370370385 -1410 1002 -0.2040466392318252 -1410 1003 0.012962962962963 -1410 1004 -0.01342592592592609 -1410 1005 -0.1551783264746238 -1410 1405 -0.02407407407407417 -1410 1406 -8.500145032286355e-17 -1410 1407 -0.106310013717417 -1410 1408 1.838806884535416e-16 -1410 1409 -1.144917494144693e-16 -1410 1410 1.241426611796981 -1410 1411 0.024074074074074 -1410 1412 5.030698080332741e-17 -1410 1413 -0.106310013717422 -1411 1000 -0.0009703703703703657 -1411 1001 -0.0004999999999999987 -1411 1002 -0.008333333333333333 -1411 1003 -0.0002814814814814868 -1411 1004 -2.168404344971009e-18 -1411 1005 -1.387778780781446e-17 -1411 1006 -0.0009703703703703702 -1411 1007 0.0005000000000000002 -1411 1008 0.008333333333333337 -1411 1408 -0.001659259259259267 -1411 1409 2.710505431213761e-18 -1411 1410 -0.03333333333333332 -1411 1411 0.007762962962962963 -1411 1412 -3.686287386450715e-18 -1411 1413 3.469446951953614e-18 -1411 1414 -0.001659259259259251 -1411 1415 1.517883041479706e-18 -1411 1416 0.03333333333333334 -1412 1000 -0.0004999999999999986 -1412 1001 -0.001040740740740732 -1412 1002 -0.009259259259259241 -1412 1003 -2.059984127722458e-18 -1412 1004 -0.00236296296296297 -1412 1005 -0.03703703703703713 -1412 1006 0.0005000000000000002 -1412 1007 -0.001040740740740744 -1412 1008 -0.009259259259259288 -1412 1408 2.602085213965211e-18 -1412 1409 0.0002814814814814742 -1412 1410 1.110223024625157e-16 -1412 1411 -3.577867169202165e-18 -1412 1412 0.008325925925925929 -1412 1413 -4.163336342344337e-17 -1412 1414 1.626303258728257e-18 -1412 1415 0.0002814814814814886 -1412 1416 -7.979727989493313e-17 -1413 1000 -0.01296296296296289 -1413 1001 -0.01342592592592586 -1413 1002 -0.1551783264746218 -1413 1003 -1.144917494144693e-16 -1413 1004 -0.02870370370370379 -1413 1005 -0.2040466392318258 -1413 1006 0.01296296296296299 -1413 1007 -0.01342592592592597 -1413 1008 -0.1551783264746236 -1413 1408 -0.02407407407407411 -1413 1409 3.816391647148976e-17 -1413 1410 -0.106310013717422 -1413 1411 1.006139616066548e-16 -1413 1412 3.122502256758253e-17 -1413 1413 1.241426611796984 -1413 1414 0.02407407407407403 -1413 1415 1.734723475976807e-18 -1413 1416 -0.1063100137174204 -1414 1003 -0.0009703703703703699 -1414 1004 -0.0004999999999999999 -1414 1005 -0.008333333333333342 -1414 1006 -0.0002814814814814766 -1414 1008 3.469446951953614e-18 -1414 1009 -0.0009703703703703712 -1414 1010 0.0004999999999999998 -1414 1011 0.008333333333333349 -1414 1411 -0.001659259259259251 -1414 1412 1.626303258728257e-18 -1414 1413 -0.03333333333333333 -1414 1414 0.007762962962962962 -1414 1415 -2.710505431213761e-18 -1414 1416 1.387778780781446e-17 -1414 1417 -0.001659259259259266 -1414 1418 1.084202172485504e-18 -1414 1419 0.03333333333333333 -1415 1003 -0.0004999999999999998 -1415 1004 -0.00104074074074074 -1415 1005 -0.009259259259259269 -1415 1007 -0.002362962962962957 -1415 1008 -0.03703703703703701 -1415 1009 0.0004999999999999999 -1415 1010 -0.001040740740740737 -1415 1011 -0.009259259259259228 -1415 1411 1.409462824231156e-18 -1415 1412 0.0002814814814814885 -1415 1413 -6.938893903907228e-18 -1415 1414 -2.818925648462312e-18 -1415 1415 0.008325925925925928 -1415 1416 7.979727989493313e-17 -1415 1417 1.084202172485504e-18 -1415 1418 0.0002814814814814744 -1415 1419 -1.734723475976807e-17 -1416 1003 -0.01296296296296298 -1416 1004 -0.01342592592592593 -1416 1005 -0.1551783264746233 -1416 1006 3.469446951953614e-17 -1416 1007 -0.02870370370370376 -1416 1008 -0.2040466392318236 -1416 1009 0.01296296296296295 -1416 1010 -0.01342592592592589 -1416 1011 -0.155178326474622 -1416 1411 -0.02407407407407403 -1416 1412 1.387778780781446e-17 -1416 1413 -0.1063100137174204 -1416 1414 -1.144917494144693e-16 -1416 1415 -1.387778780781446e-17 -1416 1416 1.241426611796984 -1416 1417 0.02407407407407414 -1416 1418 -4.85722573273506e-17 -1416 1419 -0.106310013717422 -1417 1006 -0.0009703703703703712 -1417 1007 -0.0005000000000000002 -1417 1008 -0.00833333333333334 -1417 1009 -0.0002814814814814852 -1417 1010 3.035766082959412e-18 -1417 1011 -5.204170427930421e-18 -1417 1012 -0.0009703703703703596 -1417 1013 0.0004999999999999972 -1417 1014 0.008333333333333335 -1417 1414 -0.001659259259259266 -1417 1415 1.084202172485504e-18 -1417 1416 -0.03333333333333335 -1417 1417 0.007762962962962947 -1417 1418 -4.553649124439119e-18 -1417 1419 -6.938893903907228e-18 -1417 1420 -0.001659259259259252 -1417 1421 3.469446951953614e-18 -1417 1422 0.03333333333333333 -1418 1006 -0.0005000000000000002 -1418 1007 -0.001040740740740741 -1418 1008 -0.009259259259259247 -1418 1009 2.927345865710862e-18 -1418 1010 -0.002362962962962968 -1418 1011 -0.03703703703703706 -1418 1012 0.0004999999999999972 -1418 1013 -0.001040740740740725 -1418 1014 -0.009259259259259241 -1418 1414 1.084202172485504e-18 -1418 1415 0.0002814814814814742 -1418 1416 5.551115123125783e-17 -1418 1417 -4.553649124439119e-18 -1418 1418 0.008325925925925896 -1418 1419 -1.110223024625157e-16 -1418 1420 3.469446951953614e-18 -1418 1421 0.0002814814814814898 -1418 1422 -1.231653667943533e-16 -1419 1006 -0.01296296296296296 -1419 1007 -0.01342592592592593 -1419 1008 -0.1551783264746223 -1419 1009 1.301042606982605e-16 -1419 1010 -0.02870370370370397 -1419 1011 -0.2040466392318247 -1419 1012 0.01296296296296283 -1419 1013 -0.01342592592592569 -1419 1014 -0.1551783264746207 -1419 1414 -0.02407407407407402 -1419 1415 -7.806255641895632e-17 -1419 1416 -0.106310013717422 -1419 1417 -3.41740524767431e-16 -1419 1418 5.724587470723463e-17 -1419 1419 1.241426611796976 -1419 1420 0.02407407407407436 -1419 1421 7.806255641895632e-17 -1419 1422 -0.1063100137174197 -1420 1009 -0.0009703703703703792 -1420 1010 -0.0005000000000000028 -1420 1011 -0.008333333333333342 -1420 1012 -0.0002814814814814699 -1420 1013 7.697835424647081e-18 -1420 1014 5.204170427930421e-18 -1420 1015 -0.0009703703703703575 -1420 1016 0.0004999999999999952 -1420 1017 0.008333333333333347 -1420 1417 -0.001659259259259252 -1420 1418 3.469446951953614e-18 -1420 1419 -0.03333333333333333 -1420 1420 0.007762962962962965 -1420 1422 1.040834085586084e-17 -1420 1423 -0.001659259259259293 -1420 1424 -3.469446951953614e-18 -1420 1425 0.03333333333333333 -1421 1009 -0.0005000000000000028 -1421 1010 -0.001040740740740761 -1421 1011 -0.009259259259259391 -1421 1012 7.697835424647081e-18 -1421 1013 -0.002362962962962948 -1421 1014 -0.0370370370370369 -1421 1015 0.0004999999999999952 -1421 1016 -0.001040740740740703 -1421 1017 -0.009259259259259033 -1421 1417 3.469446951953614e-18 -1421 1418 0.0002814814814814898 -1421 1419 6.245004513516506e-17 -1421 1421 0.008325925925925896 -1421 1422 7.979727989493313e-17 -1421 1423 -3.577867169202165e-18 -1421 1424 0.0002814814814814518 -1421 1425 7.112366251504909e-17 -1422 1009 -0.01296296296296307 -1422 1010 -0.01342592592592619 -1422 1011 -0.155178326474625 -1422 1012 3.157196726277789e-16 -1422 1013 -0.02870370370370381 -1422 1014 -0.204046639231822 -1422 1015 0.01296296296296275 -1422 1016 -0.0134259259259254 -1422 1017 -0.1551783264746182 -1422 1417 -0.02407407407407378 -1422 1418 7.459310946700271e-17 -1422 1419 -0.1063100137174197 -1422 1420 -6.938893903907228e-16 -1422 1421 1.006139616066548e-16 -1422 1422 1.241426611796977 -1422 1423 0.02407407407407447 -1422 1424 -1.214306433183765e-17 -1422 1425 -0.1063100137174256 -1423 1012 -0.0009703703703703888 -1423 1013 -0.0005000000000000048 -1423 1014 -0.00833333333333334 -1423 1015 -0.0002814814814814701 -1423 1016 7.26415455565288e-18 -1423 1017 8.673617379884035e-18 -1423 1018 -0.0009703703703703633 -1423 1019 0.0004999999999999981 -1423 1020 0.008333333333333337 -1423 1420 -0.001659259259259293 -1423 1421 -3.577867169202165e-18 -1423 1422 -0.03333333333333335 -1423 1423 0.007762962962962979 -1423 1424 5.095750210681871e-18 -1423 1425 -3.469446951953614e-18 -1423 1426 -0.001659259259259238 -1423 1427 -2.059984127722458e-18 -1423 1428 0.03333333333333332 -1424 1012 -0.0005000000000000049 -1424 1013 -0.001040740740740768 -1424 1014 -0.009259259259259311 -1424 1015 7.37257477290143e-18 -1424 1016 -0.002362962962962948 -1424 1017 -0.03703703703703694 -1424 1018 0.000499999999999998 -1424 1019 -0.001040740740740729 -1424 1020 -0.009259259259259228 -1424 1420 -3.469446951953614e-18 -1424 1421 0.0002814814814814518 -1424 1422 -1.127570259384925e-16 -1424 1423 5.204170427930421e-18 -1424 1424 0.008325925925925941 -1424 1425 2.775557561562891e-17 -1424 1426 -2.059984127722458e-18 -1424 1427 0.0002814814814815041 -1424 1428 1.092875789865388e-16 -1425 1012 -0.01296296296296315 -1425 1013 -0.01342592592592627 -1425 1014 -0.1551783264746257 -1425 1015 2.654126918244515e-16 -1425 1016 -0.02870370370370333 -1425 1017 -0.204046639231822 -1425 1018 0.0129629629629629 -1425 1019 -0.01342592592592575 -1425 1020 -0.1551783264746213 -1425 1420 -0.02407407407407376 -1425 1421 -1.040834085586084e-17 -1425 1422 -0.1063100137174256 -1425 1423 -4.666406150377611e-16 -1425 1424 -7.632783294297951e-17 -1425 1425 1.241426611796983 -1425 1426 0.02407407407407421 -1425 1427 -1.214306433183765e-17 -1425 1428 -0.1063100137174177 -1426 1015 -0.0009703703703703766 -1426 1016 -0.0005000000000000021 -1426 1017 -0.008333333333333333 -1426 1018 -0.000281481481481481 -1426 1019 2.059984127722458e-18 -1426 1020 -3.469446951953614e-18 -1426 1021 -0.000970370370370371 -1426 1022 0.0005 -1426 1023 0.008333333333333335 -1426 1423 -0.001659259259259238 -1426 1424 -2.059984127722458e-18 -1426 1425 -0.03333333333333332 -1426 1426 0.007762962962962961 -1426 1427 2.059984127722458e-18 -1426 1429 -0.001659259259259264 -1426 1431 0.03333333333333333 -1427 1015 -0.000500000000000002 -1427 1016 -0.001040740740740755 -1427 1017 -0.009259259259259339 -1427 1018 2.059984127722458e-18 -1427 1019 -0.002362962962962963 -1427 1020 -0.03703703703703707 -1427 1021 0.0005 -1427 1022 -0.00104074074074074 -1427 1023 -0.009259259259259241 -1427 1423 -2.168404344971009e-18 -1427 1424 0.000281481481481504 -1427 1425 -1.734723475976807e-18 -1427 1426 2.059984127722458e-18 -1427 1427 0.008325925925925938 -1427 1428 6.938893903907228e-18 -1427 1429 1.084202172485504e-19 -1427 1430 0.0002814814814814776 -1427 1431 2.602085213965211e-17 -1428 1015 -0.01296296296296307 -1428 1016 -0.0134259259259261 -1428 1017 -0.1551783264746244 -1428 1018 1.231653667943533e-16 -1428 1019 -0.02870370370370356 -1428 1020 -0.2040466392318243 -1428 1021 0.01296296296296295 -1428 1022 -0.0134259259259259 -1428 1023 -0.1551783264746228 -1428 1423 -0.02407407407407397 -1428 1424 -3.469446951953614e-18 -1428 1425 -0.1063100137174177 -1428 1426 -5.204170427930421e-17 -1428 1427 -1.318389841742373e-16 -1428 1428 1.241426611796983 -1428 1429 0.02407407407407403 -1428 1430 -1.734723475976807e-17 -1428 1431 -0.1063100137174217 -1429 1018 -0.000970370370370371 -1429 1019 -0.0005 -1429 1020 -0.008333333333333333 -1429 1021 -0.0002814814814814867 -1429 1022 2.059984127722458e-18 -1429 1023 -1.561251128379126e-17 -1429 1024 -0.0009703703703703604 -1429 1025 0.0004999999999999974 -1429 1026 0.008333333333333335 -1429 1426 -0.001659259259259264 -1429 1428 -0.03333333333333332 -1429 1429 0.00776296296296296 -1429 1430 3.794707603699266e-18 -1429 1431 -3.469446951953614e-18 -1429 1432 -0.001659259259259257 -1429 1433 -3.252606517456513e-18 -1429 1434 0.03333333333333333 -1430 1018 -0.0005 -1430 1019 -0.00104074074074074 -1430 1020 -0.009259259259259241 -1430 1021 1.843143693225358e-18 -1430 1022 -0.002362962962962969 -1430 1023 -0.03703703703703712 -1430 1024 0.0004999999999999975 -1430 1025 -0.001040740740740727 -1430 1026 -0.009259259259259228 -1430 1427 0.0002814814814814776 -1430 1428 2.602085213965211e-17 -1430 1429 3.794707603699266e-18 -1430 1430 0.008325925925925924 -1430 1431 -1.040834085586084e-17 -1430 1432 -3.144186300207963e-18 -1430 1433 0.0002814814814814785 -1430 1434 9.540979117872439e-17 -1431 1018 -0.01296296296296295 -1431 1019 -0.0134259259259259 -1431 1020 -0.1551783264746228 -1431 1021 5.204170427930421e-17 -1431 1022 -0.02870370370370384 -1431 1023 -0.2040466392318258 -1431 1024 0.01296296296296288 -1431 1025 -0.01342592592592587 -1431 1026 -0.1551783264746216 -1431 1426 -0.02407407407407402 -1431 1427 -1.561251128379126e-17 -1431 1428 -0.1063100137174217 -1431 1429 -1.561251128379126e-16 -1431 1430 3.469446951953614e-17 -1431 1431 1.241426611796983 -1431 1432 0.02407407407407419 -1431 1433 5.204170427930421e-17 -1431 1434 -0.1063100137174215 -1432 1021 -0.0009703703703703777 -1432 1022 -0.0005000000000000024 -1432 1023 -0.008333333333333342 -1432 1024 -0.0002814814814814887 -1432 1025 3.577867169202165e-18 -1432 1026 -6.938893903907228e-18 -1432 1027 -0.0009703703703703647 -1432 1028 0.0004999999999999983 -1432 1029 0.008333333333333349 -1432 1429 -0.001659259259259257 -1432 1430 -3.035766082959412e-18 -1432 1431 -0.03333333333333333 -1432 1432 0.007762962962962966 -1432 1433 7.37257477290143e-18 -1432 1434 1.040834085586084e-17 -1432 1435 -0.001659259259259238 -1432 1436 -4.119968255444917e-18 -1432 1437 0.03333333333333335 -1433 1021 -0.0005000000000000024 -1433 1022 -0.001040740740740759 -1433 1023 -0.009259259259259358 -1433 1024 3.577867169202165e-18 -1433 1025 -0.002362962962962972 -1433 1026 -0.03703703703703724 -1433 1027 0.0004999999999999984 -1433 1028 -0.00104074074074073 -1433 1029 -0.009259259259259241 -1433 1429 -3.252606517456513e-18 -1433 1430 0.0002814814814814785 -1433 1431 -9.020562075079397e-17 -1433 1432 7.480994990149981e-18 -1433 1433 0.008325925925925962 -1433 1434 -1.387778780781446e-17 -1433 1435 -4.228388472693467e-18 -1433 1436 0.0002814814814815027 -1433 1437 1.422473250300982e-16 -1434 1021 -0.01296296296296309 -1434 1022 -0.01342592592592631 -1434 1023 -0.1551783264746254 -1434 1024 1.561251128379126e-16 -1434 1025 -0.02870370370370374 -1434 1026 -0.2040466392318263 -1434 1027 0.01296296296296292 -1434 1028 -0.01342592592592576 -1434 1029 -0.1551783264746217 -1434 1429 -0.02407407407407394 -1434 1430 9.194034422677078e-17 -1434 1431 -0.1063100137174215 -1434 1432 -1.89084858881472e-16 -1434 1433 -1.214306433183765e-17 -1434 1434 1.241426611796989 -1434 1435 0.02407407407407415 -1434 1436 -7.112366251504909e-17 -1434 1437 -0.1063100137174181 -1435 1024 -0.0009703703703703759 -1435 1025 -0.0005000000000000017 -1435 1026 -0.008333333333333351 -1435 1027 -0.0002814814814814778 -1435 1028 1.409462824231156e-18 -1435 1029 1.734723475976807e-18 -1435 1030 -0.0009703703703703724 -1435 1031 0.0005000000000000003 -1435 1032 0.008333333333333349 -1435 1432 -0.001659259259259238 -1435 1433 -4.119968255444917e-18 -1435 1434 -0.03333333333333335 -1435 1435 0.007762962962962965 -1435 1436 5.421010862427522e-18 -1435 1437 6.938893903907228e-18 -1435 1438 -0.001659259259259266 -1435 1439 -1.301042606982605e-18 -1435 1440 0.03333333333333335 -1436 1024 -0.0005000000000000016 -1436 1025 -0.001040740740740752 -1436 1026 -0.009259259259259335 -1436 1027 1.409462824231156e-18 -1436 1028 -0.002362962962962958 -1436 1029 -0.03703703703703709 -1436 1030 0.0005000000000000004 -1436 1031 -0.001040740740740742 -1436 1032 -0.009259259259259273 -1436 1432 -4.119968255444917e-18 -1436 1433 0.0002814814814815027 -1436 1434 -7.979727989493313e-17 -1436 1435 5.312590645178972e-18 -1436 1436 0.00832592592592594 -1436 1437 4.85722573273506e-17 -1436 1438 -1.409462824231156e-18 -1436 1439 0.0002814814814814791 -1436 1440 6.418476861114186e-17 -1437 1024 -0.01296296296296307 -1437 1025 -0.01342592592592606 -1437 1026 -0.1551783264746243 -1437 1027 7.632783294297951e-17 -1437 1028 -0.02870370370370359 -1437 1029 -0.204046639231824 -1437 1030 0.01296296296296299 -1437 1031 -0.01342592592592594 -1437 1032 -0.1551783264746232 -1437 1432 -0.02407407407407403 -1437 1433 -6.071532165918825e-17 -1437 1434 -0.1063100137174182 -1437 1435 -2.775557561562891e-17 -1437 1436 -1.387778780781446e-16 -1437 1437 1.241426611796986 -1437 1438 0.02407407407407405 -1437 1439 1.561251128379126e-17 -1437 1440 -0.1063100137174219 -1438 1027 -0.0009703703703703701 -1438 1028 -0.0004999999999999998 -1438 1029 -0.008333333333333351 -1438 1030 -0.0002814814814814711 -1438 1031 4.336808689942018e-19 -1438 1032 1.387778780781446e-17 -1438 1033 -0.0009703703703703712 -1438 1034 0.0004999999999999998 -1438 1035 0.008333333333333349 -1438 1435 -0.001659259259259266 -1438 1436 -1.409462824231156e-18 -1438 1437 -0.03333333333333335 -1438 1438 0.007762962962962972 -1438 1439 6.071532165918825e-18 -1438 1440 1.040834085586084e-17 -1438 1441 -0.001659259259259265 -1438 1442 -4.98732999343332e-18 -1438 1443 0.03333333333333333 -1439 1027 -0.0004999999999999998 -1439 1028 -0.001040740740740737 -1439 1029 -0.009259259259259254 -1439 1030 3.252606517456513e-19 -1439 1031 -0.00236296296296295 -1439 1032 -0.03703703703703698 -1439 1033 0.0004999999999999999 -1439 1034 -0.001040740740740737 -1439 1035 -0.009259259259259228 -1439 1435 -1.192622389734055e-18 -1439 1436 0.0002814814814814791 -1439 1437 -8.673617379884035e-18 -1439 1438 5.854691731421724e-18 -1439 1439 0.008325925925925924 -1439 1440 1.769417945496343e-16 -1439 1441 -4.87890977618477e-18 -1439 1442 0.0002814814814814756 -1439 1443 1.578598363138894e-16 -1440 1027 -0.01296296296296296 -1440 1028 -0.01342592592592588 -1440 1029 -0.1551783264746227 -1440 1030 2.949029909160572e-17 -1440 1031 -0.02870370370370363 -1440 1032 -0.2040466392318223 -1440 1033 0.01296296296296295 -1440 1034 -0.01342592592592589 -1440 1035 -0.155178326474622 -1440 1435 -0.02407407407407416 -1440 1436 3.642919299551295e-17 -1440 1437 -0.1063100137174219 -1440 1438 1.249000902703301e-16 -1440 1439 -1.058181320345852e-16 -1440 1440 1.241426611796982 -1440 1441 0.02407407407407402 -1440 1442 -6.591949208711867e-17 -1440 1443 -0.1063100137174218 -1441 1030 -0.0009703703703703712 -1441 1031 -0.0005000000000000002 -1441 1032 -0.00833333333333334 -1441 1033 -0.0002814814814814743 -1441 1034 7.589415207398531e-19 -1441 1035 6.938893903907228e-18 -1441 1036 -0.000970370370370371 -1441 1037 0.0005 -1441 1038 0.008333333333333335 -1441 1438 -0.001659259259259265 -1441 1439 -4.87890977618477e-18 -1441 1440 -0.03333333333333335 -1441 1441 0.007762962962962965 -1441 1442 4.445228907190568e-18 -1441 1443 -6.938893903907228e-18 -1441 1444 -0.001659259259259266 -1441 1445 -1.084202172485504e-19 -1441 1446 0.03333333333333332 -1442 1030 -0.0005000000000000002 -1442 1031 -0.001040740740740741 -1442 1032 -0.009259259259259247 -1442 1033 6.505213034913027e-19 -1442 1034 -0.002362962962962953 -1442 1035 -0.03703703703703694 -1442 1036 0.0005 -1442 1037 -0.00104074074074074 -1442 1038 -0.009259259259259285 -1442 1438 -4.87890977618477e-18 -1442 1439 0.0002814814814814756 -1442 1440 -1.006139616066548e-16 -1442 1441 4.445228907190568e-18 -1442 1442 0.008325925925925919 -1442 1443 1.595945597898663e-16 -1442 1445 0.000281481481481476 -1442 1446 -1.595945597898663e-16 -1443 1030 -0.01296296296296296 -1443 1031 -0.01342592592592593 -1443 1032 -0.1551783264746223 -1443 1033 2.42861286636753e-17 -1443 1034 -0.02870370370370369 -1443 1035 -0.2040466392318224 -1443 1036 0.01296296296296294 -1443 1037 -0.01342592592592576 -1443 1038 -0.1551783264746222 -1443 1438 -0.02407407407407414 -1443 1439 -5.724587470723463e-17 -1443 1440 -0.1063100137174218 -1443 1441 4.336808689942018e-17 -1443 1442 -8.500145032286355e-17 -1443 1443 1.241426611796978 -1443 1444 0.02407407407407409 -1443 1445 -2.42861286636753e-17 -1443 1446 -0.1063100137174217 -1444 1033 -0.000970370370370371 -1444 1034 -0.0005 -1444 1035 -0.008333333333333333 -1444 1036 -0.0002814814814814639 -1444 1037 1.084202172485504e-18 -1444 1038 -1.734723475976807e-18 -1444 1039 -0.0009703703703703693 -1444 1040 0.0004999999999999989 -1444 1041 0.008333333333333335 -1444 1441 -0.001659259259259266 -1444 1443 -0.03333333333333332 -1444 1444 0.007762962962962974 -1444 1445 3.903127820947816e-18 -1444 1447 -0.001659259259259291 -1444 1448 -3.903127820947816e-18 -1444 1449 0.03333333333333332 -1445 1033 -0.0005 -1445 1034 -0.00104074074074074 -1445 1035 -0.009259259259259285 -1445 1036 1.084202172485504e-18 -1445 1037 -0.00236296296296294 -1445 1038 -0.03703703703703672 -1445 1039 0.0004999999999999989 -1445 1040 -0.001040740740740729 -1445 1041 -0.009259259259259167 -1445 1441 -1.084202172485504e-19 -1445 1442 0.000281481481481476 -1445 1443 -1.595945597898663e-16 -1445 1444 3.903127820947816e-18 -1445 1445 0.008325925925925903 -1445 1446 4.336808689942018e-16 -1445 1447 -4.011548038196366e-18 -1445 1448 0.0002814814814814546 -1445 1449 1.561251128379126e-17 -1446 1033 -0.01296296296296295 -1446 1034 -0.01342592592592576 -1446 1035 -0.1551783264746222 -1446 1036 4.510281037539698e-17 -1446 1037 -0.02870370370370372 -1446 1038 -0.2040466392318205 -1446 1039 0.0129629629629629 -1446 1040 -0.01342592592592568 -1446 1041 -0.1551783264746213 -1446 1441 -0.02407407407407409 -1446 1442 -2.255140518769849e-17 -1446 1443 -0.1063100137174217 -1446 1445 -1.387778780781446e-17 -1446 1446 1.241426611796977 -1446 1447 0.02407407407407409 -1446 1448 -2.255140518769849e-17 -1446 1449 -0.1063100137174252 -1447 1036 -0.0009703703703703761 -1447 1037 -0.000500000000000001 -1447 1038 -0.008333333333333333 -1447 1039 -0.0002814814814814636 -1447 1040 -9.75781955236954e-19 -1447 1041 -1.734723475976807e-18 -1447 1042 -0.0009703703703703777 -1447 1043 0.000500000000000002 -1447 1044 0.008333333333333335 -1447 1444 -0.001659259259259291 -1447 1445 -4.011548038196366e-18 -1447 1446 -0.03333333333333332 -1447 1447 0.007762962962962975 -1447 1448 -4.011548038196366e-18 -1447 1450 -0.001659259259259266 -1447 1451 7.806255641895632e-18 -1447 1452 0.03333333333333333 -1448 1036 -0.0005000000000000011 -1448 1037 -0.001040740740740743 -1448 1038 -0.009259259259259222 -1448 1039 -9.75781955236954e-19 -1448 1040 -0.002362962962962939 -1448 1041 -0.03703703703703688 -1448 1042 0.0005000000000000021 -1448 1043 -0.001040740740740753 -1448 1044 -0.009259259259259287 -1448 1444 -3.903127820947816e-18 -1448 1445 0.0002814814814814546 -1448 1446 -2.0643209364124e-16 -1448 1447 -4.011548038196366e-18 -1448 1448 0.008325925925925903 -1448 1449 -2.255140518769849e-16 -1448 1450 7.806255641895632e-18 -1448 1451 0.0002814814814814755 -1448 1452 -1.682681771697503e-16 -1449 1036 -0.01296296296296299 -1449 1037 -0.01342592592592586 -1449 1038 -0.1551783264746228 -1449 1039 -4.163336342344337e-17 -1449 1040 -0.02870370370370319 -1449 1041 -0.2040466392318205 -1449 1042 0.01296296296296303 -1449 1043 -0.01342592592592611 -1449 1044 -0.1551783264746237 -1449 1444 -0.02407407407407409 -1449 1445 -3.469446951953614e-18 -1449 1446 -0.1063100137174252 -1449 1447 5.204170427930421e-18 -1449 1448 -8.326672684688674e-17 -1449 1449 1.241426611796977 -1449 1450 0.02407407407407409 -1449 1451 2.42861286636753e-17 -1449 1452 -0.1063100137174217 -1450 1039 -0.0009703703703703645 -1450 1040 -0.000499999999999998 -1450 1041 -0.008333333333333333 -1450 1042 -0.0002814814814815042 -1450 1043 -3.144186300207963e-18 -1450 1044 -1.734723475976807e-18 -1450 1045 -0.0009703703703703693 -1450 1046 0.0005000000000000011 -1450 1047 0.008333333333333335 -1450 1447 -0.001659259259259266 -1450 1448 7.806255641895632e-18 -1450 1449 -0.03333333333333332 -1450 1450 0.007762962962962956 -1450 1451 -4.011548038196366e-18 -1450 1452 -3.469446951953614e-18 -1450 1453 -0.001659259259259204 -1450 1454 -4.119968255444917e-18 -1450 1455 0.03333333333333333 -1451 1039 -0.000499999999999998 -1451 1040 -0.001040740740740726 -1451 1041 -0.009259259259259175 -1451 1042 -3.144186300207963e-18 -1451 1043 -0.002362962962962993 -1451 1044 -0.03703703703703731 -1451 1045 0.0005000000000000009 -1451 1046 -0.001040740740740756 -1451 1047 -0.009259259259259479 -1451 1447 7.806255641895632e-18 -1451 1448 0.0002814814814814757 -1451 1449 2.758210326803123e-16 -1451 1450 -4.011548038196366e-18 -1451 1451 0.008325925925925966 -1451 1452 1.873501354054952e-16 -1451 1453 -3.903127820947816e-18 -1451 1454 0.0002814814814815289 -1451 1455 1.734723475976807e-17 -1452 1039 -0.01296296296296286 -1452 1040 -0.01342592592592575 -1452 1041 -0.1551783264746206 -1452 1042 -1.994931997373328e-16 -1452 1043 -0.02870370370370416 -1452 1044 -0.2040466392318293 -1452 1045 0.01296296296296306 -1452 1046 -0.01342592592592612 -1452 1047 -0.1551783264746258 -1452 1447 -0.0240740740740741 -1452 1448 -3.469446951953614e-17 -1452 1449 -0.1063100137174217 -1452 1450 2.445960101127298e-16 -1452 1451 1.110223024625157e-16 -1452 1452 1.241426611796988 -1452 1453 0.02407407407407386 -1452 1454 1.006139616066548e-16 -1452 1455 -0.1063100137174142 -1453 1042 -0.0009703703703703625 -1453 1043 -0.0004999999999999989 -1453 1044 -0.008333333333333333 -1453 1045 -0.0002814814814814932 -1453 1046 -1.734723475976807e-18 -1453 1047 -1.734723475976807e-18 -1453 1048 -0.0009703703703703748 -1453 1049 0.0005000000000000007 -1453 1050 0.008333333333333335 -1453 1450 -0.001659259259259205 -1453 1451 -3.903127820947816e-18 -1453 1452 -0.03333333333333333 -1453 1453 0.007762962962962963 -1453 1454 1.322726650432315e-17 -1453 1455 -6.938893903907228e-18 -1453 1456 -0.001659259259259293 -1453 1457 -9.324138683375338e-18 -1453 1458 0.03333333333333333 -1454 1042 -0.0004999999999999989 -1454 1043 -0.001040740740740743 -1454 1044 -0.009259259259259424 -1454 1045 -1.409462824231156e-18 -1454 1046 -0.002362962962962978 -1454 1047 -0.03703703703703717 -1454 1048 0.0005000000000000007 -1454 1049 -0.001040740740740741 -1454 1050 -0.009259259259259196 -1454 1450 -4.119968255444917e-18 -1454 1451 0.000281481481481529 -1454 1452 -2.029626466892864e-16 -1454 1453 1.31188462870746e-17 -1454 1454 0.008325925925925952 -1454 1455 1.838806884535416e-16 -1454 1456 -9.215718466126788e-18 -1454 1457 0.0002814814814814493 -1454 1458 1.786765180256111e-16 -1455 1042 -0.01296296296296298 -1455 1043 -0.01342592592592594 -1455 1044 -0.1551783264746243 -1455 1045 8.673617379884035e-18 -1455 1046 -0.02870370370370399 -1455 1047 -0.2040466392318274 -1455 1048 0.01296296296296297 -1455 1049 -0.01342592592592588 -1455 1050 -0.1551783264746225 -1455 1450 -0.02407407407407419 -1455 1451 1.249000902703301e-16 -1455 1452 -0.1063100137174142 -1455 1453 3.469446951953614e-16 -1455 1454 7.112366251504909e-17 -1455 1455 1.241426611796987 -1455 1456 0.02407407407407385 -1455 1457 -5.551115123125783e-17 -1455 1458 -0.1063100137174259 -1456 1045 -0.0009703703703703705 -1456 1046 -0.0004999999999999993 -1456 1047 -0.008333333333333333 -1456 1048 -0.0002814814814814636 -1456 1049 -3.035766082959412e-18 -1456 1050 -1.734723475976807e-18 -1456 1051 -0.0009703703703703788 -1456 1052 0.0005000000000000023 -1456 1053 0.008333333333333335 -1456 1453 -0.001659259259259293 -1456 1454 -9.324138683375338e-18 -1456 1455 -0.03333333333333333 -1456 1456 0.00776296296296297 -1456 1457 9.540979117872439e-18 -1456 1458 -3.469446951953614e-18 -1456 1459 -0.001659259259259265 -1456 1460 -2.168404344971009e-19 -1456 1461 0.03333333333333333 -1457 1045 -0.0004999999999999995 -1457 1046 -0.001040740740740732 -1457 1047 -0.00925925925925916 -1457 1048 -3.035766082959412e-18 -1457 1049 -0.002362962962962939 -1457 1050 -0.03703703703703685 -1457 1051 0.0005000000000000024 -1457 1052 -0.001040740740740755 -1457 1053 -0.009259259259259302 -1457 1453 -9.215718466126788e-18 -1457 1454 0.0002814814814814493 -1457 1455 -3.41740524767431e-16 -1457 1456 9.432558900623889e-18 -1457 1457 0.008325925925925895 -1457 1458 -1.942890293094024e-16 -1457 1459 1.084202172485504e-19 -1457 1460 0.0002814814814814798 -1457 1461 8.153200337090993e-17 -1458 1045 -0.01296296296296292 -1458 1046 -0.01342592592592576 -1458 1047 -0.1551783264746215 -1458 1048 -1.266348137463069e-16 -1458 1049 -0.02870370370370328 -1458 1050 -0.2040466392318205 -1458 1051 0.01296296296296304 -1458 1052 -0.01342592592592612 -1458 1053 -0.155178326474624 -1458 1453 -0.02407407407407435 -1458 1455 -0.1063100137174259 -1458 1456 4.544975507059235e-16 -1458 1457 -7.112366251504909e-17 -1458 1458 1.241426611796976 -1458 1459 0.02407407407407389 -1458 1460 5.204170427930421e-18 -1458 1461 -0.1063100137174213 -1459 1048 -0.0009703703703703633 -1459 1049 -0.0004999999999999977 -1459 1050 -0.008333333333333333 -1459 1051 -0.0002814814814814746 -1459 1052 3.252606517456513e-19 -1459 1053 -1.734723475976807e-18 -1459 1054 -0.0009703703703703622 -1459 1055 0.0004999999999999974 -1459 1056 0.008333333333333335 -1459 1456 -0.001659259259259265 -1459 1457 1.084202172485504e-19 -1459 1458 -0.03333333333333333 -1459 1459 0.007762962962962961 -1459 1460 1.734723475976807e-17 -1459 1461 -3.469446951953614e-18 -1459 1462 -0.00165925925925926 -1459 1463 -1.723881454251952e-17 -1459 1464 0.03333333333333333 -1460 1048 -0.0004999999999999976 -1460 1049 -0.001040740740740724 -1460 1050 -0.009259259259259172 -1460 1051 2.168404344971009e-19 -1460 1052 -0.002362962962962954 -1460 1053 -0.03703703703703683 -1460 1054 0.0004999999999999974 -1460 1055 -0.001040740740740722 -1460 1056 -0.009259259259259169 -1460 1456 -2.168404344971009e-19 -1460 1457 0.0002814814814814798 -1460 1458 8.153200337090993e-17 -1460 1459 1.734723475976807e-17 -1460 1460 0.008325925925925915 -1460 1461 5.93275428784068e-16 -1460 1462 -1.734723475976807e-17 -1460 1463 0.0002814814814814784 -1460 1464 4.909267437014364e-16 -1461 1048 -0.01296296296296285 -1461 1049 -0.01342592592592571 -1461 1050 -0.1551783264746204 -1461 1051 1.734723475976807e-17 -1461 1052 -0.02870370370370402 -1461 1053 -0.2040466392318224 -1461 1054 0.01296296296296283 -1461 1055 -0.01342592592592566 -1461 1056 -0.1551783264746201 -1461 1456 -0.02407407407407429 -1461 1457 5.204170427930421e-18 -1461 1458 -0.1063100137174213 -1461 1459 4.024558464266192e-16 -1461 1460 -3.816391647148976e-17 -1461 1461 1.241426611796979 -1461 1462 0.02407407407407388 -1461 1463 -1.821459649775647e-16 -1461 1464 -0.1063100137174215 -1462 1051 -0.00097037037037038 -1462 1052 -0.0005000000000000026 -1462 1053 -0.008333333333333333 -1462 1054 -0.0002814814814814934 -1462 1055 2.276824562219559e-18 -1462 1056 -1.734723475976807e-18 -1462 1057 -0.0009703703703703689 -1462 1058 0.0005000000000000003 -1462 1059 0.008333333333333335 -1462 1459 -0.00165925925925926 -1462 1460 -1.734723475976807e-17 -1462 1461 -0.03333333333333333 -1462 1462 0.007762962962962958 -1462 1463 2.40692882291782e-17 -1462 1464 -3.469446951953614e-18 -1462 1465 -0.001659259259259229 -1462 1466 -6.613633252161577e-18 -1462 1467 0.03333333333333333 -1463 1051 -0.0005000000000000026 -1463 1052 -0.001040740740740757 -1463 1053 -0.009259259259259316 -1463 1054 2.38524477946811e-18 -1463 1055 -0.002362962962962979 -1463 1056 -0.03703703703703728 -1463 1057 0.0005000000000000003 -1463 1058 -0.001040740740740748 -1463 1059 -0.009259259259259375 -1463 1459 -1.723881454251952e-17 -1463 1460 0.0002814814814814784 -1463 1461 -4.735795089416683e-16 -1463 1462 2.396086801192965e-17 -1463 1463 0.00832592592592595 -1463 1464 -2.532696274926138e-16 -1463 1465 -6.722053469410127e-18 -1463 1466 0.0002814814814815078 -1463 1467 1.335737076502141e-16 -1464 1051 -0.01296296296296306 -1464 1052 -0.01342592592592613 -1464 1053 -0.1551783264746242 -1464 1054 2.775557561562891e-17 -1464 1055 -0.02870370370370362 -1464 1056 -0.2040466392318274 -1464 1057 0.01296296296296303 -1464 1058 -0.01342592592592605 -1464 1059 -0.1551783264746252 -1464 1459 -0.02407407407407416 -1464 1460 -6.938893903907228e-17 -1464 1461 -0.1063100137174215 -1464 1462 3.035766082959412e-16 -1464 1463 -2.775557561562891e-17 -1464 1464 1.241426611796989 -1464 1465 0.02407407407407385 -1464 1466 1.040834085586084e-16 -1464 1467 -0.1063100137174177 -1465 1054 -0.0009703703703703667 -1465 1055 -0.0004999999999999997 -1465 1056 -0.008333333333333333 -1465 1057 -0.0002814814814814931 -1465 1058 -3.252606517456513e-19 -1465 1059 -1.734723475976807e-18 -1465 1060 -0.000970370370370371 -1465 1061 0.0005 -1465 1062 0.008333333333333335 -1465 1462 -0.001659259259259229 -1465 1463 -6.722053469410127e-18 -1465 1464 -0.03333333333333332 -1465 1465 0.007762962962962955 -1465 1466 1.853985714950213e-17 -1465 1467 -3.469446951953614e-18 -1465 1468 -0.001659259259259265 -1465 1469 -1.214306433183765e-17 -1465 1470 0.03333333333333333 -1466 1054 -0.0004999999999999998 -1466 1055 -0.001040740740740744 -1466 1056 -0.009259259259259358 -1466 1057 -3.252606517456513e-19 -1466 1058 -0.002362962962962978 -1466 1059 -0.03703703703703715 -1466 1060 0.0005 -1466 1061 -0.00104074074074074 -1466 1062 -0.009259259259259285 -1466 1462 -6.613633252161577e-18 -1466 1463 0.0002814814814815078 -1466 1464 -2.359223927328458e-16 -1466 1465 1.843143693225358e-17 -1466 1466 0.008325925925925935 -1466 1467 1.52655665885959e-16 -1466 1468 -1.192622389734055e-17 -1466 1469 0.0002814814814814779 -1466 1470 1.960237527853792e-16 -1467 1054 -0.01296296296296301 -1467 1055 -0.01342592592592599 -1467 1056 -0.1551783264746246 -1467 1057 6.418476861114186e-17 -1467 1058 -0.02870370370370405 -1467 1059 -0.2040466392318274 -1467 1060 0.01296296296296294 -1467 1061 -0.01342592592592576 -1467 1062 -0.1551783264746222 -1467 1462 -0.02407407407407419 -1467 1463 1.35308431126191e-16 -1467 1464 -0.1063100137174177 -1467 1465 3.521488656232918e-16 -1467 1466 1.023486850826316e-16 -1467 1467 1.241426611796986 -1467 1468 0.02407407407407385 -1467 1469 -6.418476861114186e-17 -1467 1470 -0.1063100137174215 -1468 1057 -0.000970370370370371 -1468 1058 -0.0005 -1468 1059 -0.008333333333333333 -1468 1060 -0.0002814814814814639 -1468 1061 -3.252606517456513e-19 -1468 1062 -1.734723475976807e-18 -1468 1063 -0.0009703703703703737 -1468 1064 0.0005000000000000003 -1468 1065 0.008333333333333335 -1468 1465 -0.001659259259259265 -1468 1466 -1.192622389734055e-17 -1468 1467 -0.03333333333333333 -1468 1468 0.007762962962962979 -1468 1469 2.255140518769849e-17 -1468 1470 -3.469446951953614e-18 -1468 1471 -0.001659259259259294 -1468 1472 -1.062518129035794e-17 -1468 1473 0.03333333333333333 -1469 1057 -0.0005 -1469 1058 -0.00104074074074074 -1469 1059 -0.009259259259259285 -1469 1060 -2.168404344971009e-19 -1469 1061 -0.00236296296296294 -1469 1062 -0.03703703703703677 -1469 1063 0.0005000000000000002 -1469 1064 -0.001040740740740738 -1469 1065 -0.009259259259259182 -1469 1465 -1.20346441145891e-17 -1469 1466 0.0002814814814814778 -1469 1467 -4.701100619897147e-16 -1469 1468 2.244298497044994e-17 -1469 1469 0.008325925925925914 -1469 1470 2.706168622523819e-16 -1469 1471 -1.051676107310939e-17 -1469 1472 0.0002814814814814493 -1469 1473 2.359223927328458e-16 -1470 1057 -0.01296296296296295 -1470 1058 -0.01342592592592576 -1470 1059 -0.1551783264746222 -1470 1060 -1.214306433183765e-17 -1470 1061 -0.02870370370370354 -1470 1062 -0.2040466392318205 -1470 1063 0.01296296296296296 -1470 1064 -0.01342592592592587 -1470 1065 -0.1551783264746223 -1470 1465 -0.02407407407407435 -1470 1466 1.040834085586084e-17 -1470 1467 -0.1063100137174215 -1470 1468 5.030698080332741e-16 -1470 1469 -6.418476861114186e-17 -1470 1470 1.241426611796979 -1470 1471 0.02407407407407385 -1470 1472 -6.071532165918825e-17 -1470 1473 -0.1063100137174259 -1471 1060 -0.0009703703703703715 -1471 1061 -0.0004999999999999997 -1471 1062 -0.008333333333333333 -1471 1063 -0.0002814814814814649 -1471 1064 -2.38524477946811e-18 -1471 1065 -1.734723475976807e-18 -1471 1066 -0.0009703703703703774 -1471 1067 0.0005000000000000021 -1471 1068 0.008333333333333335 -1471 1468 -0.001659259259259294 -1471 1469 -1.062518129035794e-17 -1471 1470 -0.03333333333333333 -1471 1471 0.007762962962962978 -1471 1472 1.192622389734055e-17 -1471 1473 -6.938893903907228e-18 -1471 1474 -0.00165925925925927 -1471 1475 -1.301042606982605e-18 -1471 1476 0.03333333333333333 -1472 1060 -0.0004999999999999998 -1472 1061 -0.001040740740740734 -1472 1062 -0.009259259259259163 -1472 1063 -2.276824562219559e-18 -1472 1064 -0.002362962962962941 -1472 1065 -0.0370370370370369 -1472 1066 0.0005000000000000021 -1472 1067 -0.001040740740740753 -1472 1068 -0.009259259259259302 -1472 1468 -1.051676107310939e-17 -1472 1469 0.0002814814814814492 -1472 1470 -3.556183125752455e-16 -1472 1471 1.1817803680092e-17 -1472 1472 0.00832592592592591 -1472 1473 -1.561251128379126e-16 -1472 1474 -1.517883041479706e-18 -1472 1475 0.0002814814814814716 -1472 1476 5.030698080332741e-17 -1473 1060 -0.01296296296296293 -1473 1061 -0.01342592592592581 -1473 1062 -0.1551783264746218 -1473 1063 -1.006139616066548e-16 -1473 1064 -0.02870370370370325 -1473 1065 -0.2040466392318207 -1473 1066 0.01296296296296303 -1473 1067 -0.01342592592592611 -1473 1068 -0.1551783264746237 -1473 1468 -0.02407407407407435 -1473 1469 6.938893903907228e-18 -1473 1470 -0.1063100137174259 -1473 1471 4.510281037539698e-16 -1473 1472 -5.724587470723463e-17 -1473 1473 1.241426611796978 -1473 1474 0.0240740740740739 -1473 1475 -3.469446951953614e-18 -1473 1476 -0.1063100137174224 -1474 1063 -0.0009703703703703641 -1474 1064 -0.0004999999999999981 -1474 1065 -0.008333333333333333 -1474 1066 -0.0002814814814814758 -1474 1067 -1.626303258728257e-18 -1474 1068 -1.734723475976807e-18 -1474 1069 -0.0009703703703703699 -1474 1070 0.0004999999999999997 -1474 1071 0.008333333333333335 -1474 1471 -0.00165925925925927 -1474 1472 -1.517883041479706e-18 -1474 1473 -0.03333333333333333 -1474 1474 0.007762962962962962 -1474 1475 6.938893903907228e-18 -1474 1476 -3.469446951953614e-18 -1474 1477 -0.00165925925925926 -1474 1478 -5.421010862427522e-18 -1474 1479 0.03333333333333333 -1475 1063 -0.000499999999999998 -1475 1064 -0.001040740740740727 -1475 1065 -0.009259259259259191 -1475 1066 -1.843143693225358e-18 -1475 1067 -0.002362962962962956 -1475 1068 -0.0370370370370369 -1475 1069 0.0004999999999999997 -1475 1070 -0.001040740740740737 -1475 1071 -0.009259259259259271 -1475 1471 -1.301042606982605e-18 -1475 1472 0.0002814814814814716 -1475 1473 -2.42861286636753e-17 -1475 1474 6.938893903907228e-18 -1475 1475 0.00832592592592591 -1475 1476 3.608224830031759e-16 -1475 1477 -5.421010862427522e-18 -1475 1478 0.0002814814814814796 -1475 1479 3.469446951953614e-17 -1476 1063 -0.01296296296296286 -1476 1064 -0.01342592592592575 -1476 1065 -0.1551783264746206 -1476 1066 -6.765421556309548e-17 -1476 1067 -0.0287037037037039 -1476 1068 -0.2040466392318226 -1476 1069 0.01296296296296293 -1476 1070 -0.01342592592592575 -1476 1071 -0.1551783264746219 -1476 1471 -0.0240740740740743 -1476 1472 6.938893903907228e-18 -1476 1473 -0.1063100137174224 -1476 1474 3.538835890992686e-16 -1476 1475 -6.938893903907228e-18 -1476 1476 1.241426611796979 -1476 1477 0.02407407407407394 -1476 1478 -1.457167719820518e-16 -1476 1479 -0.1063100137174215 -1477 1066 -0.0009703703703703722 -1477 1067 -0.0005000000000000003 -1477 1068 -0.008333333333333333 -1477 1069 -0.0002814814814814828 -1477 1070 3.144186300207963e-18 -1477 1071 8.673617379884035e-18 -1477 1072 -0.0009703703703703609 -1477 1073 0.0004999999999999974 -1477 1074 0.00833333333333334 -1477 1474 -0.00165925925925926 -1477 1475 -5.421010862427522e-18 -1477 1476 -0.03333333333333333 -1477 1477 0.007762962962962954 -1477 1478 1.040834085586084e-17 -1477 1479 6.938893903907228e-18 -1477 1480 -0.001659259259259263 -1477 1481 -5.204170427930421e-18 -1477 1482 0.03333333333333333 -1478 1066 -0.0005000000000000002 -1478 1067 -0.001040740740740742 -1478 1068 -0.009259259259259288 -1478 1069 3.035766082959412e-18 -1478 1070 -0.002362962962962964 -1478 1071 -0.03703703703703698 -1478 1072 0.0004999999999999973 -1478 1073 -0.001040740740740725 -1478 1074 -0.009259259259259228 -1478 1474 -5.421010862427522e-18 -1478 1475 0.0002814814814814796 -1478 1476 -2.619432448724979e-16 -1478 1477 1.051676107310939e-17 -1478 1478 0.008325925925925909 -1478 1479 2.151057110211241e-16 -1478 1480 -5.529431079676073e-18 -1478 1481 0.0002814814814814723 -1478 1482 -1.214306433183765e-17 -1479 1066 -0.01296296296296296 -1479 1067 -0.0134259259259258 -1479 1068 -0.1551783264746224 -1479 1069 1.214306433183765e-16 -1479 1070 -0.02870370370370408 -1479 1071 -0.2040466392318247 -1479 1072 0.01296296296296284 -1479 1073 -0.01342592592592571 -1479 1074 -0.1551783264746215 -1479 1474 -0.02407407407407411 -1479 1475 -1.144917494144693e-16 -1479 1476 -0.1063100137174215 -1479 1477 -3.989863994746656e-17 -1479 1478 7.112366251504909e-17 -1479 1479 1.241426611796981 -1479 1480 0.02407407407407415 -1479 1481 9.367506770274758e-17 -1479 1482 -0.1063100137174222 -1480 1069 -0.0009703703703703782 -1480 1070 -0.0005000000000000026 -1480 1071 -0.008333333333333337 -1480 1072 -0.0002814814814814915 -1480 1073 2.276824562219559e-18 -1480 1074 -5.204170427930421e-18 -1480 1075 -0.0009703703703703708 -1480 1076 0.0005000000000000003 -1480 1077 0.008333333333333335 -1480 1477 -0.001659259259259263 -1480 1478 -5.637851296924623e-18 -1480 1479 -0.03333333333333334 -1480 1480 0.007762962962962977 -1480 1481 1.214306433183765e-17 -1480 1482 -3.469446951953614e-18 -1480 1483 -0.001659259259259242 -1480 1484 -6.613633252161577e-18 -1480 1485 0.03333333333333333 -1481 1069 -0.0005000000000000026 -1481 1070 -0.00104074074074076 -1481 1071 -0.009259259259259375 -1481 1072 2.38524477946811e-18 -1481 1073 -0.002362962962962976 -1481 1074 -0.03703703703703725 -1481 1075 0.0005000000000000003 -1481 1076 -0.001040740740740744 -1481 1077 -0.009259259259259302 -1481 1477 -5.312590645178972e-18 -1481 1478 0.0002814814814814723 -1481 1479 -3.087807787238717e-16 -1481 1480 1.214306433183765e-17 -1481 1481 0.008325925925925976 -1481 1482 -4.510281037539698e-17 -1481 1483 -6.613633252161577e-18 -1481 1484 0.0002814814814814966 -1481 1485 2.081668171172169e-16 -1482 1069 -0.01296296296296306 -1482 1070 -0.01342592592592619 -1482 1071 -0.1551783264746256 -1482 1072 2.42861286636753e-17 -1482 1073 -0.02870370370370361 -1482 1074 -0.2040466392318271 -1482 1075 0.01296296296296304 -1482 1076 -0.013425925925926 -1482 1077 -0.1551783264746238 -1482 1477 -0.02407407407407392 -1482 1478 1.318389841742373e-16 -1482 1479 -0.1063100137174222 -1482 1480 -6.938893903907228e-18 -1482 1481 1.162264728904461e-16 -1482 1482 1.24142661179699 -1482 1483 0.02407407407407394 -1482 1484 -1.387778780781446e-17 -1482 1485 -0.1063100137174191 -1483 1072 -0.0009703703703703688 -1483 1073 -0.0004999999999999998 -1483 1074 -0.008333333333333335 -1483 1075 -0.0002814814814814889 -1483 1076 1.843143693225358e-18 -1483 1077 -1.908195823574488e-17 -1483 1078 -0.0009703703703703598 -1483 1079 0.0004999999999999972 -1483 1080 0.008333333333333326 -1483 1480 -0.001659259259259242 -1483 1481 -6.613633252161577e-18 -1483 1482 -0.03333333333333333 -1483 1483 0.007762962962962952 -1483 1484 2.526191061891225e-17 -1483 1485 1.040834085586084e-17 -1483 1486 -0.001659259259259247 -1483 1487 -1.680513367352532e-17 -1483 1488 0.03333333333333334 -1484 1072 -0.0004999999999999996 -1484 1073 -0.00104074074074074 -1484 1074 -0.009259259259259283 -1484 1075 1.843143693225358e-18 -1484 1076 -0.002362962962962974 -1484 1077 -0.03703703703703703 -1484 1078 0.0004999999999999972 -1484 1079 -0.001040740740740724 -1484 1080 -0.009259259259259198 -1484 1480 -6.613633252161577e-18 -1484 1481 0.0002814814814814967 -1484 1482 -1.613292832658431e-16 -1484 1483 2.51534904016637e-17 -1484 1484 0.008325925925925941 -1484 1485 4.128641872824801e-16 -1484 1486 -1.691355389077387e-17 -1484 1487 0.0002814814814814902 -1484 1488 4.579669976578771e-16 -1485 1072 -0.01296296296296301 -1485 1073 -0.01342592592592594 -1485 1074 -0.1551783264746233 -1485 1075 1.821459649775647e-16 -1485 1076 -0.02870370370370414 -1485 1077 -0.2040466392318258 -1485 1078 0.01296296296296281 -1485 1079 -0.01342592592592569 -1485 1080 -0.15517832647462 -1485 1480 -0.02407407407407428 -1485 1481 1.908195823574488e-17 -1485 1482 -0.1063100137174191 -1485 1483 3.642919299551295e-16 -1485 1484 3.816391647148976e-17 -1485 1485 1.241426611796986 -1485 1486 0.02407407407407389 -1485 1487 -1.838806884535416e-16 -1485 1488 -0.1063100137174195 -1486 1075 -0.0009703703703703799 -1486 1076 -0.000500000000000003 -1486 1077 -0.008333333333333335 -1486 1078 -0.000281481481481472 -1486 1079 1.517883041479706e-18 -1486 1080 -1.387778780781446e-17 -1486 1081 -0.0009703703703703752 -1486 1082 0.0005000000000000007 -1486 1083 0.008333333333333326 -1486 1483 -0.001659259259259247 -1486 1484 -1.691355389077387e-17 -1486 1485 -0.03333333333333334 -1486 1486 0.007762962962962966 -1486 1487 1.604619215278547e-17 -1486 1488 3.469446951953614e-18 -1486 1489 -0.001659259259259296 -1486 1490 2.602085213965211e-18 -1486 1491 0.03333333333333334 -1487 1075 -0.0005000000000000029 -1487 1076 -0.00104074074074076 -1487 1077 -0.009259259259259345 -1487 1078 1.517883041479706e-18 -1487 1079 -0.002362962962962951 -1487 1080 -0.03703703703703694 -1487 1081 0.0005000000000000007 -1487 1082 -0.001040740740740741 -1487 1083 -0.009259259259259182 -1487 1483 -1.669671345627677e-17 -1487 1484 0.0002814814814814903 -1487 1485 -5.048045315092509e-16 -1487 1486 1.604619215278547e-17 -1487 1487 0.008325925925925909 -1487 1488 -3.677613769070831e-16 -1487 1489 2.710505431213761e-18 -1487 1490 0.0002814814814814502 -1487 1491 -1.162264728904461e-16 -1488 1075 -0.01296296296296308 -1488 1076 -0.01342592592592617 -1488 1077 -0.1551783264746244 -1488 1078 9.020562075079397e-17 -1488 1079 -0.02870370370370329 -1488 1080 -0.2040466392318218 -1488 1081 0.01296296296296297 -1488 1082 -0.01342592592592587 -1488 1083 -0.1551783264746224 -1488 1483 -0.02407407407407419 -1488 1484 -3.989863994746656e-17 -1488 1485 -0.1063100137174195 -1488 1486 5.551115123125783e-17 -1488 1487 -6.765421556309548e-17 -1488 1488 1.241426611796979 -1488 1489 0.02407407407407412 -1488 1490 -8.673617379884035e-18 -1488 1491 -0.106310013717426 -1489 1078 -0.0009703703703703708 -1489 1079 -0.0004999999999999995 -1489 1080 -0.008333333333333325 -1489 1081 -0.000281481481481467 -1489 1082 -2.602085213965211e-18 -1489 1083 -1.734723475976807e-18 -1489 1084 -0.0009703703703703771 -1489 1085 0.0005000000000000021 -1489 1086 0.008333333333333325 -1489 1486 -0.001659259259259296 -1489 1487 2.602085213965211e-18 -1489 1488 -0.03333333333333334 -1489 1489 0.007762962962962977 -1489 1490 -1.582935171828836e-17 -1489 1491 -1.040834085586084e-17 -1489 1492 -0.001659259259259265 -1489 1493 1.322726650432315e-17 -1489 1494 0.03333333333333334 -1490 1078 -0.0004999999999999995 -1490 1079 -0.001040740740740732 -1490 1080 -0.009259259259259146 -1490 1081 -2.710505431213761e-18 -1490 1082 -0.002362962962962943 -1490 1083 -0.03703703703703685 -1490 1084 0.0005000000000000021 -1490 1085 -0.001040740740740754 -1490 1086 -0.0092592592592593 -1490 1486 2.602085213965211e-18 -1490 1487 0.0002814814814814502 -1490 1488 2.949029909160572e-17 -1490 1489 -1.593777193553692e-17 -1490 1490 0.008325925925925907 -1490 1491 -1.040834085586084e-16 -1490 1492 1.33356867215717e-17 -1490 1493 0.0002814814814814738 -1490 1494 -3.590877595271991e-16 -1491 1078 -0.01296296296296291 -1491 1079 -0.01342592592592575 -1491 1080 -0.1551783264746213 -1491 1081 -1.110223024625157e-16 -1491 1082 -0.02870370370370331 -1491 1083 -0.2040466392318208 -1491 1084 0.01296296296296302 -1491 1085 -0.0134259259259261 -1491 1086 -0.1551783264746235 -1491 1486 -0.02407407407407412 -1491 1487 -2.775557561562891e-17 -1491 1488 -0.1063100137174259 -1491 1489 -3.295974604355933e-17 -1491 1490 -5.204170427930421e-17 -1491 1491 1.241426611796979 -1491 1492 0.02407407407407415 -1491 1493 -8.500145032286355e-17 -1491 1494 -0.1063100137174222 -1492 1081 -0.0009703703703703637 -1492 1082 -0.0004999999999999981 -1492 1083 -0.008333333333333325 -1492 1084 -0.0002814814814814941 -1492 1085 1.084202172485504e-18 -1492 1086 8.673617379884035e-18 -1492 1087 -0.0009703703703703608 -1492 1088 0.0004999999999999976 -1492 1089 0.008333333333333335 -1492 1489 -0.001659259259259265 -1492 1490 1.344410693882025e-17 -1492 1491 -0.03333333333333333 -1492 1492 0.007762962962962951 -1492 1493 -1.973247953923618e-17 -1492 1494 -6.938893903907228e-18 -1492 1495 -0.001659259259259245 -1492 1496 4.77048955893622e-18 -1492 1497 0.03333333333333334 -1493 1081 -0.000499999999999998 -1493 1082 -0.001040740740740727 -1493 1083 -0.009259259259259191 -1493 1084 1.084202172485504e-18 -1493 1085 -0.002362962962962979 -1493 1086 -0.03703703703703711 -1493 1087 0.0004999999999999975 -1493 1088 -0.001040740740740728 -1493 1089 -0.009259259259259287 -1493 1489 1.322726650432315e-17 -1493 1490 0.0002814814814814738 -1493 1491 3.799044412389208e-16 -1493 1492 -1.962405932198763e-17 -1493 1493 0.008325925925925905 -1493 1494 1.665334536937735e-16 -1493 1495 5.095750210681871e-18 -1493 1496 0.0002814814814815001 -1493 1497 -1.214306433183765e-16 -1494 1081 -0.01296296296296285 -1494 1082 -0.01342592592592575 -1494 1083 -0.1551783264746204 -1494 1084 2.081668171172169e-17 -1494 1085 -0.02870370370370419 -1494 1086 -0.2040466392318265 -1494 1087 0.01296296296296285 -1494 1088 -0.01342592592592572 -1494 1089 -0.1551783264746216 -1494 1489 -0.02407407407407394 -1494 1490 -1.647987302177967e-16 -1494 1491 -0.1063100137174222 -1494 1492 -4.354155924701786e-16 -1494 1493 3.642919299551295e-17 -1494 1494 1.24142661179698 -1494 1495 0.02407407407407437 -1494 1496 1.43982048506075e-16 -1494 1497 -0.1063100137174187 -1495 1084 -0.0009703703703703759 -1495 1085 -0.0005000000000000025 -1495 1086 -0.008333333333333321 -1495 1087 -0.000281481481481499 -1495 1088 5.854691731421724e-18 -1495 1089 6.938893903907228e-18 -1495 1090 -0.0009703703703703604 -1495 1091 0.0004999999999999973 -1495 1092 0.008333333333333335 -1495 1492 -0.001659259259259245 -1495 1493 4.98732999343332e-18 -1495 1494 -0.03333333333333334 -1495 1495 0.007762962962962937 -1495 1496 -7.806255641895632e-18 -1495 1497 -2.081668171172169e-17 -1495 1498 -0.001659259259259223 -1495 1499 1.409462824231156e-18 -1495 1500 0.03333333333333332 -1496 1084 -0.0005000000000000024 -1496 1085 -0.001040740740740762 -1496 1086 -0.009259259259259436 -1496 1087 5.854691731421724e-18 -1496 1088 -0.002362962962962987 -1496 1089 -0.03703703703703719 -1496 1090 0.0004999999999999973 -1496 1091 -0.001040740740740725 -1496 1092 -0.009259259259259228 -1496 1492 4.77048955893622e-18 -1496 1493 0.0002814814814815001 -1496 1494 1.734723475976807e-16 -1496 1495 -7.914675859144182e-18 -1496 1496 0.008325925925925919 -1496 1497 -1.249000902703301e-16 -1496 1498 1.084202172485504e-18 -1496 1499 0.0002814814814815172 -1496 1500 -9.020562075079397e-17 -1497 1084 -0.01296296296296304 -1497 1085 -0.01342592592592618 -1497 1086 -0.1551783264746254 -1497 1087 1.422473250300982e-16 -1497 1088 -0.02870370370370417 -1497 1089 -0.2040466392318284 -1497 1090 0.01296296296296291 -1497 1091 -0.01342592592592564 -1497 1092 -0.1551783264746215 -1497 1492 -0.0240740740740737 -1497 1493 8.500145032286355e-17 -1497 1494 -0.1063100137174187 -1497 1495 -6.366435156834882e-16 -1497 1496 1.838806884535416e-16 -1497 1497 1.241426611796982 -1497 1498 0.02407407407407434 -1497 1499 1.734723475976807e-17 -1497 1500 -0.106310013717416 -1498 1087 -0.0009703703703703782 -1498 1088 -0.0005000000000000027 -1498 1089 -0.008333333333333331 -1498 1090 -0.0002814814814814667 -1498 1091 4.011548038196366e-18 -1498 1092 -1.734723475976807e-18 -1498 1093 -0.0009703703703703695 -1498 1094 0.0004999999999999987 -1498 1095 0.008333333333333337 -1498 1495 -0.001659259259259223 -1498 1496 1.192622389734055e-18 -1498 1497 -0.03333333333333331 -1498 1498 0.007762962962962969 -1498 1499 4.119968255444917e-18 -1498 1500 -3.469446951953614e-18 -1499 1087 -0.0005000000000000027 -1499 1088 -0.00104074074074076 -1499 1089 -0.009259259259259375 -1499 1090 4.011548038196366e-18 -1499 1091 -0.002362962962962943 -1499 1092 -0.03703703703703677 -1499 1093 0.0004999999999999986 -1499 1094 -0.001040740740740725 -1499 1095 -0.009259259259259123 -1499 1495 1.409462824231156e-18 -1499 1496 0.0002814814814815173 -1499 1497 -1.387778780781446e-17 -1499 1498 4.228388472693467e-18 -1499 1499 0.008325925925925921 -1499 1500 3.191891195797325e-16 -1500 1087 -0.01296296296296313 -1500 1088 -0.01342592592592611 -1500 1089 -0.1551783264746256 -1500 1090 2.411265631607762e-16 -1500 1091 -0.02870370370370357 -1500 1092 -0.2040466392318218 -1500 1093 0.01296296296296289 -1500 1094 -0.01342592592592563 -1500 1095 -0.1551783264746209 -1500 1495 -0.02407407407407384 -1500 1496 8.673617379884035e-18 -1500 1497 -0.106310013717416 -1500 1498 -2.480654570646834e-16 -1500 1500 1.241426611796983 diff --git a/packages/muelu/test/navierstokes/CMakeLists.txt b/packages/muelu/test/navierstokes/CMakeLists.txt deleted file mode 100644 index 8673e2ef2a9a..000000000000 --- a/packages/muelu/test/navierstokes/CMakeLists.txt +++ /dev/null @@ -1,197 +0,0 @@ -TRIBITS_INCLUDE_DIRECTORIES(${CMAKE_CURRENT_SOURCE_DIR}) - -TRIBITS_INCLUDE_DIRECTORIES(${CMAKE_CURRENT_SOURCE_DIR}/../../src/Graph) # we need this line because this file is not on the header file List of MueLu -TRIBITS_INCLUDE_DIRECTORIES(${CMAKE_CURRENT_SOURCE_DIR}/../../src/Smoothers) - -# first ensure that these cmake boolean variables are defined -ASSERT_DEFINED( - ${PACKAGE_NAME}_ENABLE_Epetra - ${PACKAGE_NAME}_ENABLE_EpetraExt - ${PACKAGE_NAME}_ENABLE_Amesos - ) - - -IF (${PACKAGE_NAME}_ENABLE_Epetra AND - ${PACKAGE_NAME}_ENABLE_EpetraExt AND - ${PACKAGE_NAME}_ENABLE_Ifpack AND - ${PACKAGE_NAME}_ENABLE_Amesos) - - IF(${PACKAGE_NAME}_ENABLE_AztecOO) - # build only if AztecOO available, too - TRIBITS_ADD_EXECUTABLE_AND_TEST( - Navier2D_Epetra - SOURCES Navier2D_Epetra.cpp - COMM mpi - ) - TRIBITS_COPY_FILES_TO_BINARY_DIR(Navier2D_cpdata - SOURCE_FILES A_re1000_5932.txt b_re1000_5932.txt - ) - - TRIBITS_ADD_EXECUTABLE_AND_TEST( - Navier2DBlocked_Epetra - SOURCES Navier2DBlocked_Epetra.cpp - COMM serial mpi - ) - - ################################# tests for xml framework - TRIBITS_ADD_EXECUTABLE( - Navier2DBlocked_xml - SOURCES Navier2DBlocked_xml.cpp - COMM mpi - ) - - TRIBITS_ADD_TEST( - Navier2DBlocked_xml - NAME "Navier2DBlocked_xml_format" - ARGS "--xml=myXML.xml" - NUM_MPI_PROCS 4 - COMM mpi - ) - - TRIBITS_ADD_TEST( - Navier2DBlocked_xml - NAME "Navier2DBlocked_xml_format2" - ARGS "--xml=myXMLg.xml" - NUM_MPI_PROCS 4 - COMM mpi - ) - - TRIBITS_ADD_TEST( - Navier2DBlocked_xml - NAME "Navier2DBlocked_xml_blockdirect" - ARGS "--xml=myXML2.xml" - NUM_MPI_PROCS 4 - COMM mpi - ) - - TRIBITS_ADD_TEST( - Navier2DBlocked_xml - NAME "Navier2DBlocked_xml_bgs1" - ARGS "--xml=myBGS1.xml" - NUM_MPI_PROCS 4 - COMM mpi - ) - - TRIBITS_ADD_TEST( - Navier2DBlocked_xml - NAME "Navier2DBlocked_xml_bs1" - ARGS "--xml=myBS1.xml" - NUM_MPI_PROCS 4 - COMM mpi - ) - - TRIBITS_ADD_TEST( - Navier2DBlocked_xml - NAME "Navier2DBlocked_xml_bs2" - ARGS "--xml=myBS2.xml" - NUM_MPI_PROCS 4 - COMM mpi - ) - - TRIBITS_ADD_TEST( - Navier2DBlocked_xml - NAME "Navier2DBlocked_xml_bs3" - ARGS "--xml=myBS3.xml" - NUM_MPI_PROCS 4 - COMM mpi - ) - - TRIBITS_ADD_TEST( - Navier2DBlocked_xml - NAME "Navier2DBlocked_xml_sim1" - ARGS "--xml=mySIM1.xml" - NUM_MPI_PROCS 4 - COMM mpi - ) - - TRIBITS_ADD_TEST( - Navier2DBlocked_xml - NAME "Navier2DBlocked_xml_sim2" - ARGS "--xml=mySIM2.xml" - NUM_MPI_PROCS 4 - COMM mpi - ) - - TRIBITS_ADD_TEST( - Navier2DBlocked_xml - NAME "Navier2DBlocked_xml_uzawa1" - ARGS "--xml=myUzawa1.xml" - NUM_MPI_PROCS 4 - COMM mpi - ) - - TRIBITS_ADD_TEST( - Navier2DBlocked_xml - NAME "Navier2DBlocked_xml_uzawa2" - ARGS "--xml=myUzawa2.xml" - NUM_MPI_PROCS 4 - COMM mpi - ) - - TRIBITS_ADD_TEST( - Navier2DBlocked_xml - NAME "Navier2DBlocked_xml_uzawa3" - ARGS "--xml=myUzawa3.xml" - NUM_MPI_PROCS 4 - COMM mpi - ) - - TRIBITS_ADD_TEST( - Navier2DBlocked_xml - NAME "Navier2DBlocked_xml_indef1" - ARGS "--xml=myIndefDiag1.xml" - NUM_MPI_PROCS 4 - COMM mpi - ) - ################################## - TRIBITS_ADD_EXECUTABLE_AND_TEST( - Navier2DBlocked_BraessSarazinSmoother - SOURCES Navier2DBlocked_BraessSarazinSmoother.cpp - COMM serial mpi - ) - - TRIBITS_ADD_EXECUTABLE_AND_TEST( - Navier2DBlocked_SimpleSmoother - SOURCES Navier2DBlocked_SimpleSmoother.cpp - COMM serial mpi - ) - - TRIBITS_ADD_EXECUTABLE_AND_TEST( - Navier2DBlocked_BraessSarazin - SOURCES Navier2DBlocked_BraessSarazin.cpp - COMM serial mpi - ) - - TRIBITS_ADD_EXECUTABLE( - Navier2DBlocked_rebalancing2 - SOURCES Navier2DBlocked_test2.cpp - COMM mpi - ) - - # TODO: fix CloneRepartitionInterface - TRIBITS_ADD_TEST( - Navier2DBlocked_rebalancing2 - NAME "Navier2DBlockedReuseAggs" - ARGS "--rebalanceBlocks=0" - NUM_MPI_PROCS 4 - COMM mpi - ) - #TRIBITS_ADD_TEST( - # Navier2DBlocked_rebalancing2 - # NAME "Navier2DBlockedReuseAggsReb" - # ARGS "--rebalanceBlocks=1" - # NUM_MPI_PROCS 4 - # COMM mpi - # ) - - TRIBITS_ADD_EXECUTABLE_AND_TEST( - Navier2DBlocked_Simple - SOURCES Navier2DBlocked_Simple.cpp - COMM serial mpi - ) - TRIBITS_COPY_FILES_TO_BINARY_DIR(Navier2D_cp - SOURCE_FILES myXML.xml myXMLg.xml myXML2.xml myBS1.xml myBS2.xml myBS3.xml myBGS1.xml mySIM1.xml mySIM2.xml myUzawa1.xml myUzawa2.xml myUzawa3.xml myIndefDiag1.xml - ) - ENDIF() - -ENDIF() diff --git a/packages/muelu/test/navierstokes/Navier2DBlocked_BraessSarazin.cpp b/packages/muelu/test/navierstokes/Navier2DBlocked_BraessSarazin.cpp deleted file mode 100644 index 1f07a7312687..000000000000 --- a/packages/muelu/test/navierstokes/Navier2DBlocked_BraessSarazin.cpp +++ /dev/null @@ -1,499 +0,0 @@ -// @HEADER -// ***************************************************************************** -// MueLu: A package for multigrid based preconditioning -// -// Copyright 2012 NTESS and the MueLu contributors. -// SPDX-License-Identifier: BSD-3-Clause -// ***************************************************************************** -// @HEADER - -/* - * Navier2D_epetra.cpp - * - * Created on: Mar 26, 2011 - * Author: wiesner - */ - -#include -#include -#include - -// Teuchos -#include -#include -#include -#include -#include -#include -#include - -// Epetra -#include -#include -#include - -// Xpetra -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -// MueLu -#include "MueLu_ConfigDefs.hpp" -#include "MueLu_Memory.hpp" -#include "MueLu_Hierarchy.hpp" -#include "MueLu_UncoupledAggregationFactory.hpp" -#include "MueLu_PgPFactory.hpp" -#include "MueLu_GenericRFactory.hpp" -#include "MueLu_SaPFactory.hpp" -#include "MueLu_TransPFactory.hpp" -#include "MueLu_BlockedRAPFactory.hpp" -#include "MueLu_TrilinosSmoother.hpp" -#include "MueLu_Utilities.hpp" -#include "MueLu_Exceptions.hpp" -#include "MueLu_Aggregates.hpp" -#include "MueLu_CoalesceDropFactory.hpp" -#include "MueLu_PreDropFunctionConstVal.hpp" -#include "MueLu_NullspaceFactory.hpp" -#include "MueLu_TentativePFactory.hpp" -#include "MueLu_SmootherFactory.hpp" -#include "MueLu_DirectSolver.hpp" -#include "MueLu_EpetraOperator.hpp" -#include "MueLu_SubBlockAFactory.hpp" -#include "MueLu_BlockedPFactory.hpp" -#include "MueLu_BlockedGaussSeidelSmoother.hpp" -#include "MueLu_SchurComplementFactory.hpp" -#include "MueLu_BraessSarazinSmoother.hpp" - -#include "MueLu_CoarseMapFactory.hpp" - -#include "MueLu_AmalgamationFactory.hpp" -#include "MueLu_AggregationExportFactory.hpp" - -#include -#include - -#include "Navier2D_Helpers.h" - -/*! - * 2d Navier Stokes example (for Epetra) - * - * using block matrices - */ - -int main(int argc, char* argv[]) { -#if defined(HAVE_MUELU_EPETRA) && defined(HAVE_MUELU_EPETRAEXT) - typedef double Scalar; - typedef int LocalOrdinal; - typedef int GlobalOrdinal; - typedef LocalOrdinal LO; - typedef GlobalOrdinal GO; - typedef Xpetra::EpetraNode Node; -#include "MueLu_UseShortNames.hpp" - - using Teuchos::RCP; - using Teuchos::rcp; - using namespace MueLuTests; - using namespace Teuchos; - - oblackholestream blackhole; - GlobalMPISession mpiSession(&argc, &argv, &blackhole); - // - RCP > comm = DefaultComm::getComm(); - RCP out = fancyOStream(rcpFromRef(std::cout)); - out->setOutputToRootOnly(0); - *out << MueLu::MemUtils::PrintMemoryUsage() << std::endl; - - // Timing - Time myTime("global"); - TimeMonitor MM(myTime); - - // custom parameters - LocalOrdinal maxLevels = 3; - - GlobalOrdinal maxCoarseSize = 1; // FIXME clp doesn't like long long int - - int globalNumDofs = 1500; // used for the maps - int nDofsPerNode = 3; // used for generating the fine level null-space - - // build strided maps - // striding information: 2 velocity dofs and 1 pressure dof = 3 dofs per node - std::vector stridingInfo; - stridingInfo.push_back(2); - stridingInfo.push_back(1); - - /////////////////////////////////////// build strided maps - // build strided maps: - // xstridedfullmap: full map (velocity and pressure dof gids), continous - // xstridedvelmap: only velocity dof gid maps (i.e. 0,1,3,4,6,7...) - // xstridedpremap: only pressure dof gid maps (i.e. 2,5,8,...) - Xpetra::UnderlyingLib lib = Xpetra::UseEpetra; - RCP xstridedfullmap = StridedMapFactory::Build(lib, globalNumDofs, 0, stridingInfo, comm, -1); - RCP xstridedvelmap = StridedMapFactory::Build(xstridedfullmap, 0); - RCP xstridedpremap = StridedMapFactory::Build(xstridedfullmap, 1); - - /////////////////////////////////////// transform Xpetra::Map objects to Epetra - // this is needed for AztecOO - const RCP fullmap = rcpFromRef(Xpetra::toEpetra(*xstridedfullmap)); - RCP velmap = rcpFromRef(Xpetra::toEpetra(*xstridedvelmap)); - RCP premap = rcpFromRef(Xpetra::toEpetra(*xstridedpremap)); - - /////////////////////////////////////// import problem matrix and RHS from files (-> Epetra) - - // read in problem - Epetra_CrsMatrix* ptrA = 0; - Epetra_Vector* ptrf = 0; - Epetra_MultiVector* ptrNS = 0; - - *out << "Reading matrix market file" << std::endl; - - EpetraExt::MatrixMarketFileToCrsMatrix("A_re1000_5932.txt", *fullmap, *fullmap, *fullmap, ptrA); - EpetraExt::MatrixMarketFileToVector("b_re1000_5932.txt", *fullmap, ptrf); - - RCP epA = rcp(ptrA); - RCP epv = rcp(ptrf); - RCP epNS = rcp(ptrNS); - - /////////////////////////////////////// split system into 2x2 block system - - *out << "Split matrix into 2x2 block matrix" << std::endl; - - // split fullA into A11,..., A22 - RCP A11; - RCP A12; - RCP A21; - RCP A22; - - if (SplitMatrix2x2(epA, *velmap, *premap, A11, A12, A21, A22) == false) - *out << "Problem with splitting matrix" << std::endl; - - /////////////////////////////////////// transform Epetra objects to Xpetra (needed for MueLu) - - // build Xpetra objects from Epetra_CrsMatrix objects - RCP > xA11 = rcp(new Xpetra::EpetraCrsMatrixT(A11)); - RCP > xA12 = rcp(new Xpetra::EpetraCrsMatrixT(A12)); - RCP > xA21 = rcp(new Xpetra::EpetraCrsMatrixT(A21)); - RCP > xA22 = rcp(new Xpetra::EpetraCrsMatrixT(A22)); - - /////////////////////////////////////// generate MapExtractor object - - std::vector > > xmaps; - xmaps.push_back(xstridedvelmap); - xmaps.push_back(xstridedpremap); - - RCP > map_extractor = Xpetra::MapExtractorFactory::Build(xstridedfullmap, xmaps); - - /////////////////////////////////////// build blocked transfer operator - // using the map extractor - RCP > bOp = rcp(new Xpetra::BlockedCrsMatrix(map_extractor, map_extractor, 10)); - bOp->setMatrix(0, 0, Teuchos::rcp(new Xpetra::CrsMatrixWrap(xA11))); - bOp->setMatrix(0, 1, Teuchos::rcp(new Xpetra::CrsMatrixWrap(xA12))); - bOp->setMatrix(1, 0, Teuchos::rcp(new Xpetra::CrsMatrixWrap(xA21))); - bOp->setMatrix(1, 1, Teuchos::rcp(new Xpetra::CrsMatrixWrap(xA22))); - - bOp->fillComplete(); - - //////////////////////////////////////////////////// create Hierarchy - RCP H = rcp(new Hierarchy()); - H->setDefaultVerbLevel(VERB_HIGH); - // H->setDefaultVerbLevel(VERB_NONE); - H->SetMaxCoarseSize(maxCoarseSize); - - //////////////////////////////////////////////////////// finest Level - RCP Finest = H->GetLevel(); - Finest->setDefaultVerbLevel(VERB_HIGH); - Finest->Set("A", rcp_dynamic_cast(bOp)); - - /////////////////////////////////////////////// define subblocks of A - // make A11 block and A22 block available as variable "A" generated - // by A11Fact and A22Fact - RCP A11Fact = rcp(new SubBlockAFactory()); - A11Fact->SetFactory("A", MueLu::NoFactory::getRCP()); - A11Fact->SetParameter("block row", ParameterEntry(0)); - A11Fact->SetParameter("block col", ParameterEntry(0)); - RCP A22Fact = rcp(new SubBlockAFactory()); - A22Fact->SetFactory("A", MueLu::NoFactory::getRCP()); - A22Fact->SetParameter("block row", ParameterEntry(1)); - A22Fact->SetParameter("block col", ParameterEntry(1)); - - ////////////////////////////////////////// prepare null space for A11 - RCP nullspace11 = MultiVectorFactory::Build(xstridedvelmap, 2); // this is a 2D standard null space - - for (int i = 0; i < nDofsPerNode - 1; ++i) { - ArrayRCP nsValues = nullspace11->getDataNonConst(i); - int numBlocks = nsValues.size() / (nDofsPerNode - 1); - for (int j = 0; j < numBlocks; ++j) { - nsValues[j * (nDofsPerNode - 1) + i] = 1.0; - } - } - - Finest->Set("Nullspace1", nullspace11); - - ///////////////////////////////////////// define CoalesceDropFactory and Aggregation for A11 - // set up amalgamation for A11. Note: we're using a default null space factory (null) - RCP amalgFact11 = rcp(new AmalgamationFactory()); - amalgFact11->SetFactory("A", A11Fact); - - amalgFact11->setDefaultVerbLevel(VERB_EXTREME); - RCP dropFact11 = rcp(new CoalesceDropFactory()); - dropFact11->SetFactory("A", A11Fact); - dropFact11->SetFactory("UnAmalgamationInfo", amalgFact11); - dropFact11->setDefaultVerbLevel(VERB_EXTREME); - RCP CoupledAggFact11 = rcp(new UncoupledAggregationFactory()); - CoupledAggFact11->SetFactory("Graph", dropFact11); - CoupledAggFact11->SetMinNodesPerAggregate(9); - CoupledAggFact11->SetMaxNeighAlreadySelected(2); - CoupledAggFact11->SetOrdering("natural"); - - ///////////////////////////////////////// define transfer ops for A11 -#if 0 - // use PG-AMG - RCP P11Fact = rcp(new PgPFactory()); - - RCP R11Fact = rcp(new GenericRFactory()); - RCP nspFact11 = rcp(new NullspaceFactory("Nullspace1",P11tentFact)); - - RCP nspFact11 = rcp(new NullspaceFactory("Nullspace1")); - - RCP coarseMapFact11 = rcp(new CoarseMapFactory()); - coarseMapFact11->setStridingData(stridingInfo); - coarseMapFact11->setStridedBlockId(0); - - //////////////////////////////// define factory manager for (1,1) block - RCP M11 = rcp(new FactoryManager()); - M11->SetFactory("A", A11Fact); - M11->SetFactory("P", P11Fact); - M11->SetFactory("R", R11Fact); - M11->SetFactory("Aggregates", CoupledAggFact11); - M11->SetFactory("UnAmalgamationInfo", amalgFact11); - M11->SetFactory("Nullspace", nspFact11); - // M11->SetFactory("Ptent", P11tentFact); - M11->SetFactory("CoarseMap", coarseMapFact11); -#else - RCP P11Fact = rcp(new TentativePFactory()); - - RCP R11Fact = rcp(new TransPFactory()); - - RCP nspFact11 = rcp(new NullspaceFactory("Nullspace1")); - nspFact11->SetFactory("Nullspace1", P11Fact); - - RCP coarseMapFact11 = rcp(new CoarseMapFactory()); - coarseMapFact11->setStridingData(stridingInfo); - coarseMapFact11->setStridedBlockId(0); - - //////////////////////////////// define factory manager for (1,1) block - RCP M11 = rcp(new FactoryManager()); - M11->SetFactory("A", A11Fact); - M11->SetFactory("P", P11Fact); - M11->SetFactory("R", R11Fact); - M11->SetFactory("Aggregates", CoupledAggFact11); - M11->SetFactory("UnAmalgamationInfo", amalgFact11); - M11->SetFactory("Nullspace", nspFact11); - // M11->SetFactory("Ptent", P11Fact); - M11->SetFactory("CoarseMap", coarseMapFact11); - M11->SetFactory("Graph", dropFact11); -#endif - M11->SetIgnoreUserData(true); // always use data from factories defined in factory manager - - ////////////////////////////////////////// prepare null space for A22 - RCP nullspace22 = MultiVectorFactory::Build(xstridedpremap, 1); // this is a 2D standard null space - ArrayRCP nsValues22 = nullspace22->getDataNonConst(0); - for (int j = 0; j < nsValues22.size(); ++j) { - nsValues22[j] = 1.0; - } - - Finest->Set("Nullspace2", nullspace22); - - ///////////////////////////////////////// define transfer ops for A22 -#if 0 - // use PGAMG - RCP amalgFact22 = rcp(new AmalgamationFactory(A22Fact)); - RCP P22tentFact = rcp(new TentativePFactory(CoupledAggFact11, amalgFact22)); - - RCP P22Fact = rcp(new SaPFactory(P22tentFact)); - - //RCP R22Fact = rcp(new GenericRFactory(P22Fact)); - RCP R22Fact = rcp(new TransPFactory(P22Fact)); - - RCP nspFact22 = rcp(new NullspaceFactory("Nullspace2",P22tentFact)); - RCP coarseMapFact22 = rcp(new CoarseMapFactory(CoupledAggFact11, nspFact22)); - coarseMapFact22->setStridingData(stridingInfo); - coarseMapFact22->setStridedBlockId(1); - - //////////////////////////////// define factory manager for (2,2) block - RCP M22 = rcp(new FactoryManager()); - M22->SetFactory("A", A22Fact); - M22->SetFactory("P", P22Fact); - M22->SetFactory("R", R22Fact); - M22->SetFactory("Aggregates", AggFact22); - M22->SetFactory("Nullspace", nspFact22); - M22->SetFactory("Ptent", P22tentFact); - M22->SetFactory("CoarseMap", coarseMapFact22); - M22->SetIgnoreUserData(true); // always use data from factories defined in factory manager - -#else - // use TentativePFactory - RCP amalgFact22 = rcp(new AmalgamationFactory()); - RCP P22Fact = rcp(new TentativePFactory()); // check me (fed with A22) wrong column GIDS!!! - - RCP R22Fact = rcp(new TransPFactory()); - - RCP nspFact22 = rcp(new NullspaceFactory("Nullspace2")); - nspFact22->SetFactory("Nullspace2", P22Fact); - RCP coarseMapFact22 = rcp(new CoarseMapFactory()); - coarseMapFact22->setStridingData(stridingInfo); - coarseMapFact22->setStridedBlockId(1); - - //////////////////////////////// define factory manager for (2,2) block - RCP M22 = rcp(new FactoryManager()); - M22->SetFactory("A", A22Fact); - M22->SetFactory("P", P22Fact); - M22->SetFactory("R", R22Fact); - M22->SetFactory("Aggregates", CoupledAggFact11); - M22->SetFactory("Nullspace", nspFact22); - M22->SetFactory("UnAmalgamationInfo", amalgFact22); // TODO oops what about that? it was M11 before? - M22->SetFactory("Ptent", P22Fact); - M22->SetFactory("CoarseMap", coarseMapFact22); - M22->SetIgnoreUserData(true); // always use data from factories defined in factory manager -#endif - - /////////////////////////////////////////// define blocked transfer ops - RCP PFact = rcp(new BlockedPFactory()); // use row map index base from bOp - PFact->AddFactoryManager(M11); - PFact->AddFactoryManager(M22); - - RCP RFact = rcp(new GenericRFactory()); - RFact->SetFactory("P", PFact); - - RCP AcFact = rcp(new BlockedRAPFactory()); - AcFact->SetFactory("P", PFact); - AcFact->SetFactory("R", RFact); - - *out << "Creating Braess-Sarazin Smoother" << std::endl; - - ////////////////////////////////////////////////////////////////////// - // Smoothers - - // Another factory manager for braes sarazin smoother - // Schur Complement Factory, using the factory to generate AcFact - SC omega = 1.3; - RCP SFact = rcp(new SchurComplementFactory()); - SFact->SetParameter("omega", ParameterEntry(omega)); - SFact->SetFactory("A", MueLu::NoFactory::getRCP()); - - // Smoother Factory, using SFact as a factory for A - std::string ifpackSCType; - ParameterList ifpackSCList; - ifpackSCList.set("relaxation: sweeps", (LocalOrdinal)3); - ifpackSCList.set("relaxation: damping factor", (Scalar)1.0); - ifpackSCType = "RELAXATION"; - ifpackSCList.set("relaxation: type", "Gauss-Seidel"); - RCP smoProtoSC = rcp(new TrilinosSmoother(ifpackSCType, ifpackSCList, 0)); - smoProtoSC->SetFactory("A", SFact); - RCP SmooSCFact = rcp(new SmootherFactory(smoProtoSC)); - - RCP smootherPrototype = rcp(new BraessSarazinSmoother()); - smootherPrototype->SetParameter("Sweeps", Teuchos::ParameterEntry(3)); - smootherPrototype->SetParameter("Damping factor", Teuchos::ParameterEntry(omega)); - - RCP smootherFact = rcp(new SmootherFactory(smootherPrototype)); - - RCP coarseSolverPrototype = rcp(new BraessSarazinSmoother()); - coarseSolverPrototype->SetParameter("Sweeps", Teuchos::ParameterEntry(3)); - coarseSolverPrototype->SetParameter("Damping factor", Teuchos::ParameterEntry(omega)); - - RCP coarseSolverFact = rcp(new SmootherFactory(coarseSolverPrototype, null)); - - RCP MB = rcp(new FactoryManager()); - MB->SetFactory("A", SFact); - MB->SetFactory("Smoother", SmooSCFact); - MB->SetIgnoreUserData(true); // always use data from factories defined in factory manager - smootherPrototype->AddFactoryManager(MB, 0); - coarseSolverPrototype->AddFactoryManager(MB, 0); - - // main factory manager - FactoryManager M; - M.SetFactory("A", AcFact); - M.SetFactory("P", PFact); - M.SetFactory("R", RFact); - M.SetFactory("Smoother", smootherFact); // TODO fix me - M.SetFactory("PreSmoother", smootherFact); // TODO fix me - M.SetFactory("PostSmoother", smootherFact); // TODO fix me - M.SetFactory("CoarseSolver", coarseSolverFact); - - //////////////////////////////////// setup multigrid - - H->Setup(M, 0, maxLevels); - - *out << std::endl; - *out << "print content of multigrid levels:" << std::endl; - - Finest->print(*out); - - RCP coarseLevel = H->GetLevel(1); - coarseLevel->print(*out); - - RCP coarseLevel2 = H->GetLevel(2); - coarseLevel2->print(*out); - - RCP xLsg = MultiVectorFactory::Build(xstridedfullmap, 1); - - // Use AMG directly as an iterative method -#if 0 - { - xLsg->putScalar( (SC) 0.0); - - // Epetra_Vector -> Xpetra::Vector - RCP xRhs = rcp(new Xpetra::EpetraVector(epv)); - - // calculate initial (absolute) residual - Array::magnitudeType> norms(1); - xRhs->norm2(norms); - *out << "||x_0|| = " << norms[0] << std::endl; - - // apply ten multigrid iterations - H->Iterate(*xRhs,*xLsg,100); - - - // calculate and print residual - RCP xTmp = MultiVectorFactory::Build(xstridedfullmap,1); - bOp->apply(*xLsg,*xTmp,NO_TRANS,(SC)1.0,(SC)0.0); - xRhs->update((SC)-1.0,*xTmp,(SC)1.0); - xRhs->norm2(norms); - *out << "||x|| = " << norms[0] << std::endl; - } -#endif - - // - // Solve Ax = b using AMG as a preconditioner in AztecOO - // - { - RCP X = rcp(new Epetra_Vector(epv->Map())); - X->PutScalar(0.0); - Epetra_LinearProblem epetraProblem(epA.get(), X.get(), epv.get()); - - AztecOO aztecSolver(epetraProblem); - aztecSolver.SetAztecOption(AZ_solver, AZ_gmres); - - MueLu::EpetraOperator aztecPrec(H); - aztecSolver.SetPrecOperator(&aztecPrec); - - int maxIts = 50; - double tol = 1e-8; - - aztecSolver.Iterate(maxIts, tol); - } - - return EXIT_SUCCESS; -#else - std::cout << "Epetra (and/or EpetraExt) not enabled. Skip test." << std::endl; - return EXIT_SUCCESS; -#endif // #if defined(HAVE_MUELU_SERIAL) && defined(HAVE_MUELU_EPETRA) -} diff --git a/packages/muelu/test/navierstokes/Navier2DBlocked_BraessSarazinSmoother.cpp b/packages/muelu/test/navierstokes/Navier2DBlocked_BraessSarazinSmoother.cpp deleted file mode 100644 index 7c87b94b50d3..000000000000 --- a/packages/muelu/test/navierstokes/Navier2DBlocked_BraessSarazinSmoother.cpp +++ /dev/null @@ -1,324 +0,0 @@ -// @HEADER -// ***************************************************************************** -// MueLu: A package for multigrid based preconditioning -// -// Copyright 2012 NTESS and the MueLu contributors. -// SPDX-License-Identifier: BSD-3-Clause -// ***************************************************************************** -// @HEADER - -/* - * Navier2D_blocked_bssmoother.cpp - * - * Created on: Jun 18, 2012 - * Author: wiesner - */ - -#include -#include -#include - -// Teuchos -#include -#include -#include -#include -#include -#include -#include - -// Epetra -#include -#include -#include - -// Xpetra -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -// MueLu -#include "MueLu_ConfigDefs.hpp" -#include "MueLu_Memory.hpp" -#include "MueLu_Hierarchy.hpp" -#include "MueLu_PgPFactory.hpp" -#include "MueLu_GenericRFactory.hpp" -#include "MueLu_SaPFactory.hpp" -#include "MueLu_TransPFactory.hpp" -#include "MueLu_TrilinosSmoother.hpp" -#include "MueLu_Utilities.hpp" -#include "MueLu_Exceptions.hpp" -#include "MueLu_Aggregates.hpp" -#include "MueLu_CoalesceDropFactory.hpp" -#include "MueLu_PreDropFunctionConstVal.hpp" -#include "MueLu_NullspaceFactory.hpp" -#include "MueLu_TentativePFactory.hpp" -#include "MueLu_SmootherFactory.hpp" -#include "MueLu_DirectSolver.hpp" -#include "MueLu_EpetraOperator.hpp" -#include "MueLu_SubBlockAFactory.hpp" -#include "MueLu_BlockedGaussSeidelSmoother.hpp" -#include "MueLu_BraessSarazinSmoother.hpp" -#include "MueLu_SchurComplementFactory.hpp" -#include "MueLu_Utilities.hpp" -#include "MueLu_TopSmootherFactory.hpp" -#include "MueLu_HierarchyUtils.hpp" - -#include -#include - -#include "Navier2D_Helpers.h" - -/*! - * 2d Navier Stokes example (for Epetra) - * - * using block matrices - */ - -int main(int argc, char* argv[]) { -#if defined(HAVE_MUELU_EPETRA) && defined(HAVE_MUELU_EPETRAEXT) - typedef double Scalar; - typedef int LocalOrdinal; - typedef int GlobalOrdinal; - typedef LocalOrdinal LO; - typedef GlobalOrdinal GO; - typedef Xpetra::EpetraNode Node; -#include "MueLu_UseShortNames.hpp" - - using Teuchos::RCP; - using Teuchos::rcp; - using namespace MueLuTests; - using namespace Teuchos; - - oblackholestream blackhole; - GlobalMPISession mpiSession(&argc, &argv, &blackhole); - - bool success = false; - bool verbose = true; - try { - RCP > comm = DefaultComm::getComm(); - RCP out = fancyOStream(rcpFromRef(std::cout)); - out->setOutputToRootOnly(0); - *out << MueLu::MemUtils::PrintMemoryUsage() << std::endl; - - // Timing - Time myTime("global"); - TimeMonitor MM(myTime); - - // read in input parameters - - // default parameters - LO BS_nSweeps = 100; - Scalar BS_omega = 1.7; - LO SC_nSweeps = 1; - Scalar SC_omega = 1.0; - int SC_bUseDirectSolver = 0; - - // Note: use --help to list available options. - CommandLineProcessor clp(false); - clp.setOption("BraessSarazin_sweeps", &BS_nSweeps, "number of sweeps with BraessSarazin smoother"); - clp.setOption("BraessSarazin_omega", &BS_omega, "scaling factor for BraessSarazin smoother"); - clp.setOption("SchurComp_sweeps", &SC_nSweeps, "number of sweeps for BraessSarazin internal SchurComp solver/smoother (GaussSeidel)"); - clp.setOption("SchurComp_omega", &SC_omega, "damping parameter for BraessSarazin internal SchurComp solver/smoother (GaussSeidel)"); - clp.setOption("SchurComp_solver", &SC_bUseDirectSolver, "if 1: use direct solver for SchurComp equation, otherwise use GaussSeidel smoother (=default)"); - - switch (clp.parse(argc, argv)) { - case Teuchos::CommandLineProcessor::PARSE_HELP_PRINTED: return EXIT_SUCCESS; - case Teuchos::CommandLineProcessor::PARSE_ERROR: - case Teuchos::CommandLineProcessor::PARSE_UNRECOGNIZED_OPTION: return EXIT_FAILURE; - case Teuchos::CommandLineProcessor::PARSE_SUCCESSFUL: break; - } - - int globalNumDofs = 1500; // used for the maps - // int nDofsPerNode = 3; // used for generating the fine level null-space - - // build strided maps - // striding information: 2 velocity dofs and 1 pressure dof = 3 dofs per node - std::vector stridingInfo; - stridingInfo.push_back(2); - stridingInfo.push_back(1); - - /////////////////////////////////////// build strided maps - // build strided maps: - // xstridedfullmap: full map (velocity and pressure dof gids), continous - // xstridedvelmap: only velocity dof gid maps (i.e. 0,1,3,4,6,7...) - // xstridedpremap: only pressure dof gid maps (i.e. 2,5,8,...) - Xpetra::UnderlyingLib lib = Xpetra::UseEpetra; - RCP xstridedfullmap = StridedMapFactory::Build(lib, globalNumDofs, 0, stridingInfo, comm, -1); - RCP xstridedvelmap = StridedMapFactory::Build(xstridedfullmap, 0); - RCP xstridedpremap = StridedMapFactory::Build(xstridedfullmap, 1); - - /////////////////////////////////////// transform Xpetra::Map objects to Epetra - // this is needed for our splitting routine - const RCP fullmap = rcpFromRef(Xpetra::toEpetra(*xstridedfullmap)); - RCP velmap = rcpFromRef(Xpetra::toEpetra(*xstridedvelmap)); - RCP premap = rcpFromRef(Xpetra::toEpetra(*xstridedpremap)); - - /////////////////////////////////////// import problem matrix and RHS from files (-> Epetra) - - // read in problem - Epetra_CrsMatrix* ptrA = 0; - Epetra_Vector* ptrf = 0; - Epetra_MultiVector* ptrNS = 0; - - *out << "Reading matrix market file" << std::endl; - - EpetraExt::MatrixMarketFileToCrsMatrix("A_re1000_5932.txt", *fullmap, *fullmap, *fullmap, ptrA); - EpetraExt::MatrixMarketFileToVector("b_re1000_5932.txt", *fullmap, ptrf); - - RCP epA = rcp(ptrA); - RCP epv = rcp(ptrf); - RCP epNS = rcp(ptrNS); - - /////////////////////////////////////// split system into 2x2 block system - - *out << "Split matrix into 2x2 block matrix" << std::endl; - - // split fullA into A11,..., A22 - RCP A11; - RCP A12; - RCP A21; - RCP A22; - - if (SplitMatrix2x2(epA, *velmap, *premap, A11, A12, A21, A22) == false) - *out << "Problem with splitting matrix" << std::endl; - - /////////////////////////////////////// transform Epetra objects to Xpetra (needed for MueLu) - - // build Xpetra objects from Epetra_CrsMatrix objects - RCP > xA11 = rcp(new Xpetra::EpetraCrsMatrixT(A11)); - RCP > xA12 = rcp(new Xpetra::EpetraCrsMatrixT(A12)); - RCP > xA21 = rcp(new Xpetra::EpetraCrsMatrixT(A21)); - RCP > xA22 = rcp(new Xpetra::EpetraCrsMatrixT(A22)); - - /////////////////////////////////////// generate MapExtractor object - - std::vector > > xmaps; - - xmaps.push_back(xstridedvelmap); - xmaps.push_back(xstridedpremap); - - RCP > map_extractor = Xpetra::MapExtractorFactory::Build(xstridedfullmap, xmaps); - - /////////////////////////////////////// build blocked transfer operator - // using the map extractor - RCP > bOp = rcp(new Xpetra::BlockedCrsMatrix(map_extractor, map_extractor, 10)); - bOp->setMatrix(0, 0, Teuchos::rcp(new Xpetra::CrsMatrixWrap(xA11))); - bOp->setMatrix(0, 1, Teuchos::rcp(new Xpetra::CrsMatrixWrap(xA12))); - bOp->setMatrix(1, 0, Teuchos::rcp(new Xpetra::CrsMatrixWrap(xA21))); - bOp->setMatrix(1, 1, Teuchos::rcp(new Xpetra::CrsMatrixWrap(xA22))); - - bOp->fillComplete(); - //////////////////////////////////////////////////////// finest Level - RCP Finest = rcp(new Level()); - Finest->setDefaultVerbLevel(VERB_NONE); - Finest->Set("A", rcp_dynamic_cast(bOp)); - - /////////////////////////////////// - // Test Braess Sarazin Smoother as a solver - - *out << "Test: Creating Braess Sarazin Smoother" << std::endl; - *out << "Test: Omega for BraessSarazin = " << BS_omega << std::endl; - *out << "Test: Number of sweeps for BraessSarazin = " << BS_nSweeps << std::endl; - *out << "Test: Omega for Schur Complement solver= " << SC_omega << std::endl; - *out << "Test: Number of Schur Complement solver= " << SC_nSweeps << std::endl; - *out << "Test: Setting up Braess Sarazin Smoother" << std::endl; - - // define BraessSarazin Smoother with BS_nSweeps and BS_omega as scaling factor - // AFact_ = null (= default) for the 2x2 blocked operator - RCP BraessSarazinSm = rcp(new BraessSarazinSmoother()); - BraessSarazinSm->SetParameter("Sweeps", Teuchos::ParameterEntry(BS_nSweeps)); - BraessSarazinSm->SetParameter("Damping factor", Teuchos::ParameterEntry(BS_omega)); - - RCP smootherFact = rcp(new SmootherFactory(BraessSarazinSm)); - - /*note that omega must be the same in the SchurComplementFactory and in the BraessSarazinSmoother*/ - // define SchurComplement Factory - // SchurComp gets a RCP to AFact_ which has to be the 2x2 blocked operator - // and the scaling/damping factor omega that is used for BraessSarazin - // It stores the resulting SchurComplement operator as "A" generated by the SchurComplementFactory - // Instead of F^{-1} it uses the approximation \hat{F}^{-1} with \hat{F} = diag(F) - RCP SFact = rcp(new SchurComplementFactory()); - SFact->SetParameter("omega", ParameterEntry(BS_omega)); - SFact->SetFactory("A", MueLu::NoFactory::getRCP()); - - // define smoother/solver for BraessSarazin - RCP smoProtoSC = null; - if (SC_bUseDirectSolver != 1) { - // Smoother Factory, using SFact as a factory for A - std::string ifpackSCType; - ParameterList ifpackSCList; - ifpackSCList.set("relaxation: sweeps", SC_nSweeps); - ifpackSCList.set("relaxation: damping factor", SC_omega); - ifpackSCType = "RELAXATION"; - ifpackSCList.set("relaxation: type", "Gauss-Seidel"); - smoProtoSC = rcp(new TrilinosSmoother(ifpackSCType, ifpackSCList, 0)); - smoProtoSC->SetFactory("A", SFact); - } else { - ParameterList ifpackDSList; - std::string ifpackDSType; - smoProtoSC = rcp(new DirectSolver(ifpackDSType, ifpackDSList)); - smoProtoSC->SetFactory("A", SFact); - } - - RCP SmooSCFact = rcp(new SmootherFactory(smoProtoSC)); - - // define temporary FactoryManager that is used as input for BraessSarazin smoother - RCP MB = rcp(new FactoryManager()); - MB->SetFactory("A", SFact); // SchurComplement operator for correction step (defined as "A") - MB->SetFactory("Smoother", SmooSCFact); // solver/smoother for correction step - MB->SetFactory("PreSmoother", SmooSCFact); - MB->SetFactory("PostSmoother", SmooSCFact); - MB->SetIgnoreUserData(true); // always use data from factories defined in factory manager - BraessSarazinSm->AddFactoryManager(MB, 0); // set temporary factory manager in BraessSarazin smoother - - // setup main factory manager - RCP M = rcp(new FactoryManager()); - M->SetFactory("A", MueLu::NoFactory::getRCP()); // this is the 2x2 blocked operator - M->SetFactory("Smoother", smootherFact); // BraessSarazin block smoother - M->SetFactory("PreSmoother", smootherFact); - M->SetFactory("PostSmoother", smootherFact); - - MueLu::SetFactoryManager SFMCoarse(Finest, M); - Finest->Request(MueLu::TopSmootherFactory(M, "Smoother")); - - // call setup (= extract blocks and extract diagonal of F) - BraessSarazinSm->Setup(*Finest); - - RCP xtest = MultiVectorFactory::Build(xstridedfullmap, 1); - xtest->putScalar((SC)0.0); - - RCP xR = rcp(new Xpetra::EpetraVectorT(epv)); - // calculate initial (absolute) residual - Array::magnitudeType> norms(1); - - xR->norm2(norms); - *out << "Test: ||x_0|| = " << norms[0] << std::endl; - *out << "Test: Applying Braess-Sarazin Smoother" << std::endl; - *out << "Test: START DATA" << std::endl; - *out << "iterations\tVelocity_residual\tPressure_residual" << std::endl; - BraessSarazinSm->Apply(*xtest, *xR); - xtest->norm2(norms); - *out << "Test: ||x_1|| = " << norms[0] << std::endl; - - Array::magnitudeType> test = MueLu::Utilities::ResidualNorm(*bOp, *xtest, *xR); - *out << "residual norm: " << test[0] << std::endl; - - success = true; - } - TEUCHOS_STANDARD_CATCH_STATEMENTS(verbose, std::cerr, success); - - return (success ? EXIT_SUCCESS : EXIT_FAILURE); -#else - std::cout << "Epetra (and/or EpetraExt) are not available. Skip test." << std::endl; - return EXIT_SUCCESS; -#endif // #if defined(HAVE_MUELU_SERIAL) && defined(HAVE_MUELU_EPETRA) -} diff --git a/packages/muelu/test/navierstokes/Navier2DBlocked_Epetra.cpp b/packages/muelu/test/navierstokes/Navier2DBlocked_Epetra.cpp deleted file mode 100644 index 430192bdaacb..000000000000 --- a/packages/muelu/test/navierstokes/Navier2DBlocked_Epetra.cpp +++ /dev/null @@ -1,542 +0,0 @@ -// @HEADER -// ***************************************************************************** -// MueLu: A package for multigrid based preconditioning -// -// Copyright 2012 NTESS and the MueLu contributors. -// SPDX-License-Identifier: BSD-3-Clause -// ***************************************************************************** -// @HEADER - -/* - * Navier2D_epetra.cpp - * - * Created on: Mar 26, 2011 - * Author: wiesner - */ - -#include -#include -#include - -// Teuchos -#include -#include -#include -#include -#include -#include -#include - -// Epetra -#include -#include -#include - -// Xpetra -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -// MueLu -#include "MueLu_ConfigDefs.hpp" -#include "MueLu_Memory.hpp" -#include "MueLu_Hierarchy.hpp" -#include "MueLu_UncoupledAggregationFactory.hpp" -#include "MueLu_PgPFactory.hpp" -#include "MueLu_GenericRFactory.hpp" -#include "MueLu_SaPFactory.hpp" -#include "MueLu_TransPFactory.hpp" -#include "MueLu_BlockedRAPFactory.hpp" -#include "MueLu_TrilinosSmoother.hpp" -#include "MueLu_Utilities.hpp" -#include "MueLu_Exceptions.hpp" -#include "MueLu_Aggregates.hpp" -#include "MueLu_CoalesceDropFactory.hpp" -#include "MueLu_PreDropFunctionConstVal.hpp" -#include "MueLu_NullspaceFactory.hpp" -#include "MueLu_TentativePFactory.hpp" -#include "MueLu_SmootherFactory.hpp" -#include "MueLu_DirectSolver.hpp" -#include "MueLu_EpetraOperator.hpp" -#include "MueLu_SubBlockAFactory.hpp" -#include "MueLu_BlockedPFactory.hpp" -#include "MueLu_BlockedGaussSeidelSmoother.hpp" -#include "MueLu_CoarseMapFactory.hpp" -#include "MueLu_AmalgamationFactory.hpp" - -#include -#include - -#include "Navier2D_Helpers.h" - -/*! - * 2d Navier Stokes example (for Epetra) - * - * using block matrices - */ - -int main(int argc, char* argv[]) { -#if defined(HAVE_MUELU_EPETRA) && defined(HAVE_MUELU_EPETRAEXT) - typedef double Scalar; - typedef int LocalOrdinal; - typedef int GlobalOrdinal; - typedef LocalOrdinal LO; - typedef GlobalOrdinal GO; - typedef Xpetra::EpetraNode Node; -#include "MueLu_UseShortNames.hpp" - - using Teuchos::RCP; - using Teuchos::rcp; - using namespace MueLuTests; - using namespace Teuchos; - - oblackholestream blackhole; - GlobalMPISession mpiSession(&argc, &argv, &blackhole); - - bool success = false; - bool verbose = true; - try { - // default parameters - LO BGS_nSweeps = 3; - Scalar BGS_omega = 1.0; - - // Note: use --help to list available options. - CommandLineProcessor clp(false); - clp.setOption("BGS_sweeps", &BGS_nSweeps, "number of sweeps with BGS smoother"); - clp.setOption("BGS_omega", &BGS_omega, "scaling factor for BGS smoother"); - - switch (clp.parse(argc, argv)) { - case Teuchos::CommandLineProcessor::PARSE_HELP_PRINTED: return EXIT_SUCCESS; - case Teuchos::CommandLineProcessor::PARSE_ERROR: - case Teuchos::CommandLineProcessor::PARSE_UNRECOGNIZED_OPTION: return EXIT_FAILURE; - case Teuchos::CommandLineProcessor::PARSE_SUCCESSFUL: break; - } - - RCP > comm = DefaultComm::getComm(); - RCP out = fancyOStream(rcpFromRef(std::cout)); - out->setOutputToRootOnly(0); - *out << MueLu::MemUtils::PrintMemoryUsage() << std::endl; - - // Timing - Time myTime("global"); - TimeMonitor MM(myTime); - - // custom parameters - LO maxLevels = 2; // TODO: singular system if MaxLevels > 2? - - GO maxCoarseSize = 1; // FIXME clp doesn't like long long int - - int globalNumDofs = 1500; // used for the maps - int nDofsPerNode = 3; // used for generating the fine level null-space - - // build strided maps - // striding information: 2 velocity dofs and 1 pressure dof = 3 dofs per node - std::vector stridingInfo; - stridingInfo.push_back(2); - stridingInfo.push_back(1); - - /////////////////////////////////////// build strided maps - // build strided maps: - // xstridedfullmap: full map (velocity and pressure dof gids), continous - // xstridedvelmap: only velocity dof gid maps (i.e. 0,1,3,4,6,7...) - // xstridedpremap: only pressure dof gid maps (i.e. 2,5,8,...) - Xpetra::UnderlyingLib lib = Xpetra::UseEpetra; - RCP xstridedfullmap = StridedMapFactory::Build(lib, globalNumDofs, 0, stridingInfo, comm, -1); - RCP xstridedvelmap = StridedMapFactory::Build(xstridedfullmap, 0); - RCP xstridedpremap = StridedMapFactory::Build(xstridedfullmap, 1); - - /////////////////////////////////////// transform Xpetra::Map objects to Epetra - // this is needed for AztecOO - const RCP fullmap = rcpFromRef(Xpetra::toEpetra(*xstridedfullmap)); - RCP velmap = rcpFromRef(Xpetra::toEpetra(*xstridedvelmap)); - RCP premap = rcpFromRef(Xpetra::toEpetra(*xstridedpremap)); - - /////////////////////////////////////// import problem matrix and RHS from files (-> Epetra) - - // read in problem - Epetra_CrsMatrix* ptrA = 0; - Epetra_Vector* ptrf = 0; - Epetra_MultiVector* ptrNS = 0; - - *out << "Reading matrix market file" << std::endl; - EpetraExt::MatrixMarketFileToCrsMatrix("A_re1000_5932.txt", *fullmap, *fullmap, *fullmap, ptrA); - EpetraExt::MatrixMarketFileToVector("b_re1000_5932.txt", *fullmap, ptrf); - RCP epA = rcp(ptrA); - RCP epv = rcp(ptrf); - RCP epNS = rcp(ptrNS); - - /////////////////////////////////////// split system into 2x2 block system - - *out << "Split matrix into 2x2 block matrix" << std::endl; - - // split fullA into A11,..., A22 - RCP A11; - RCP A12; - RCP A21; - RCP A22; - - if (SplitMatrix2x2(epA, *velmap, *premap, A11, A12, A21, A22) == false) - *out << "Problem with splitting matrix" << std::endl; - - /////////////////////////////////////// transform Epetra objects to Xpetra (needed for MueLu) - - // build Xpetra objects from Epetra_CrsMatrix objects - RCP > xA11 = rcp(new Xpetra::EpetraCrsMatrixT(A11)); - RCP > xA12 = rcp(new Xpetra::EpetraCrsMatrixT(A12)); - RCP > xA21 = rcp(new Xpetra::EpetraCrsMatrixT(A21)); - RCP > xA22 = rcp(new Xpetra::EpetraCrsMatrixT(A22)); - - /////////////////////////////////////// generate MapExtractor object - - std::vector > > xmaps; - xmaps.push_back(xstridedvelmap); - xmaps.push_back(xstridedpremap); - - RCP > map_extractor = Xpetra::MapExtractorFactory::Build(xstridedfullmap, xmaps); - - /////////////////////////////////////// build blocked transfer operator - // using the map extractor - RCP > bOp = rcp(new Xpetra::BlockedCrsMatrix(map_extractor, map_extractor, 10)); - bOp->setMatrix(0, 0, Teuchos::rcp(new Xpetra::CrsMatrixWrap(xA11))); - bOp->setMatrix(0, 1, Teuchos::rcp(new Xpetra::CrsMatrixWrap(xA12))); - bOp->setMatrix(1, 0, Teuchos::rcp(new Xpetra::CrsMatrixWrap(xA21))); - bOp->setMatrix(1, 1, Teuchos::rcp(new Xpetra::CrsMatrixWrap(xA22))); - - bOp->fillComplete(); - - //////////////////////////////////////////////////// create Hierarchy - RCP H = rcp(new Hierarchy()); - H->setDefaultVerbLevel(VERB_HIGH); - H->SetMaxCoarseSize(maxCoarseSize); - - //////////////////////////////////////////////////////// finest Level - RCP Finest = H->GetLevel(); - Finest->setDefaultVerbLevel(VERB_HIGH); - Finest->Set("A", rcp_dynamic_cast(bOp)); - - /////////////////////////////////////////////// define subblocks of A - // make A11 block and A22 block available as variable "A" generated - // by A11Fact and A22Fact - RCP A11Fact = rcp(new SubBlockAFactory()); - A11Fact->SetFactory("A", MueLu::NoFactory::getRCP()); - A11Fact->SetParameter("block row", ParameterEntry(0)); - A11Fact->SetParameter("block col", ParameterEntry(0)); - RCP A22Fact = rcp(new SubBlockAFactory()); - A22Fact->SetFactory("A", MueLu::NoFactory::getRCP()); - A22Fact->SetParameter("block row", ParameterEntry(1)); - A22Fact->SetParameter("block col", ParameterEntry(1)); - - ///////////////////////////////////////////// define smoother for A11 - // define block smoother for the first block matrix row in BlockGaussSeidel Smoother - std::string ifpack11Type; - ParameterList ifpack11List; - ifpack11List.set("relaxation: sweeps", (LO)3); - ifpack11List.set("relaxation: damping factor", (SC)0.5); - ifpack11Type = "RELAXATION"; - ifpack11List.set("relaxation: type", "Gauss-Seidel"); - RCP smoProto11 = rcp(new TrilinosSmoother(ifpack11Type, ifpack11List, 0)); - smoProto11->SetFactory("A", A11Fact); - RCP Smoo11Fact = rcp(new SmootherFactory(smoProto11)); - - ////////////////////////////////////////// prepare null space for A11 - RCP nullspace11 = MultiVectorFactory::Build(xstridedvelmap, 2); // this is a 2D standard null space - - for (int i = 0; i < nDofsPerNode - 1; ++i) { - ArrayRCP nsValues = nullspace11->getDataNonConst(i); - int numBlocks = nsValues.size() / (nDofsPerNode - 1); - for (int j = 0; j < numBlocks; ++j) { - nsValues[j * (nDofsPerNode - 1) + i] = 1.0; - } - } - - Finest->Set("Nullspace1", nullspace11); - - ///////////////////////////////////////// define CoalesceDropFactory and Aggregation for A11 - // set up amalgamation for A11. Note: we're using a default null space factory (null) - RCP amalgFact11 = rcp(new AmalgamationFactory()); - amalgFact11->SetFactory("A", A11Fact); - RCP dropFact11 = rcp(new CoalesceDropFactory()); - dropFact11->SetFactory("A", A11Fact); - dropFact11->SetFactory("UnAmalgamationInfo", amalgFact11); - RCP CoupledAggFact11 = rcp(new UncoupledAggregationFactory()); - CoupledAggFact11->SetFactory("Graph", dropFact11); - CoupledAggFact11->SetMinNodesPerAggregate(5); - CoupledAggFact11->SetMaxNeighAlreadySelected(1); - CoupledAggFact11->SetOrdering("natural"); - - ///////////////////////////////////////// define transfer ops for A11 -#if 0 - // use PG-AMG - RCP P11tentFact = rcp(new TentativePFactory()); // check me - - RCP P11Fact = rcp(new PgPFactory()); - - RCP R11Fact = rcp(new GenericRFactory()); - - RCP nspFact11 = rcp(new NullspaceFactory("Nullspace1")); - nspFact11->SetFactory("Nullspace1", P11tentFact); - - RCP coarseMapFact11 = rcp(new CoarseMapFactory()); - coarseMapFact11->setStridingData(stridingInfo); - coarseMapFact11->setStridedBlockId(0); - - //////////////////////////////// define factory manager for (1,1) block - RCP M11 = rcp(new FactoryManager()); - M11->SetFactory("A", A11Fact); - M11->SetFactory("P", P11Fact); - M11->SetFactory("R", R11Fact); - M11->SetFactory("Nullspace", nspFact11); - M11->SetFactory("Aggregates", CoupledAggFact11); - M11->SetFactory("UnAmalgamationInfo", amalgFact11); - M11->SetFactory("Ptent", P11tentFact); - M11->SetFactory("Smoother", Smoo11Fact); - M11->SetFactory("CoarseMap", coarseMapFact11); - -#else - - RCP P11Fact = rcp(new TentativePFactory()); - - RCP R11Fact = rcp(new TransPFactory()); - - RCP nspFact11 = rcp(new NullspaceFactory("Nullspace1")); - nspFact11->SetFactory("Nullspace1", P11Fact); - - RCP coarseMapFact11 = rcp(new CoarseMapFactory()); - coarseMapFact11->setStridingData(stridingInfo); - coarseMapFact11->setStridedBlockId(0); - - //////////////////////////////// define factory manager for (1,1) block - RCP M11 = rcp(new FactoryManager()); - M11->SetFactory("A", A11Fact); - M11->SetFactory("P", P11Fact); - M11->SetFactory("R", R11Fact); - M11->SetFactory("Graph", dropFact11); - M11->SetFactory("Aggregates", CoupledAggFact11); - M11->SetFactory("UnAmalgamationInfo", amalgFact11); - M11->SetFactory("Nullspace", nspFact11); - M11->SetFactory("Ptent", P11Fact); - M11->SetFactory("Smoother", Smoo11Fact); - M11->SetFactory("CoarseMap", coarseMapFact11); - -#if OLD - RCP P11Fact = rcp(new TentativePFactory(CoupledAggFact11, amalgFact11)); // check me - - RCP R11Fact = rcp(new TransPFactory(P11Fact)); - - RCP nspFact11 = rcp(new NullspaceFactory("Nullspace1", P11Fact)); - - RCP coarseMapFact11 = rcp(new CoarseMapFactory(CoupledAggFact11, nspFact11)); - coarseMapFact11->setStridingData(stridingInfo); - coarseMapFact11->setStridedBlockId(0); - - //////////////////////////////// define factory manager for (1,1) block - RCP M11 = rcp(new FactoryManager()); - M11->SetFactory("A", A11Fact); - M11->SetFactory("P", P11Fact); - M11->SetFactory("R", R11Fact); - M11->SetFactory("Nullspace", nspFact11); - M11->SetFactory("Ptent", P11Fact); - M11->SetFactory("Smoother", Smoo11Fact); - M11->SetFactory("CoarseMap", coarseMapFact11); -#endif // TODO remove this - -#endif - M11->SetIgnoreUserData(true); // always use data from factories defined in factory manager - - ///////////////////////////////////////////// define smoother for A22 - std::string ifpack22Type; - ParameterList ifpack22List; - ifpack22List.set("relaxation: sweeps", (LO)1); - ifpack22List.set("relaxation: damping factor", (SC)0.3); - ifpack22Type = "RELAXATION"; - ifpack22List.set("relaxation: type", "Gauss-Seidel"); - RCP smoProto22 = rcp(new TrilinosSmoother(ifpack22Type, ifpack22List, 0)); - smoProto22->SetFactory("A", A22Fact); - RCP Smoo22Fact = rcp(new SmootherFactory(smoProto22)); - - ////////////////////////////////////////// prepare null space for A22 - RCP nullspace22 = MultiVectorFactory::Build(xstridedpremap, 1); // this is a 2D standard null space - ArrayRCP nsValues22 = nullspace22->getDataNonConst(0); - for (int j = 0; j < nsValues22.size(); ++j) { - nsValues22[j] = 1.0; - } - - Finest->Set("Nullspace2", nullspace22); - - ///////////////////////////////////////// define transfer ops for A22 -#if 0 - // use PGAMG - RCP amalgFact22 = rcp(new AmalgamationFactory(A22Fact)); - RCP P22tentFact = rcp(new TentativePFactory(CoupledAggFact11, amalgFact22)); // check me (fed with A22) wrong column GIDS!!! - - RCP P22Fact = rcp(new SaPFactory(P22tentFact)); - - //RCP R22Fact = rcp(new GenericRFactory(P22Fact)); - RCP R22Fact = rcp(new TransPFactory(P22Fact)); - - RCP nspFact22 = rcp(new NullspaceFactory("Nullspace2",P22tentFact)); - - RCP coarseMapFact22 = rcp(new CoarseMapFactory(CoupledAggFact11, nspFact22)); - coarseMapFact22->setStridingData(stridingInfo); - coarseMapFact22->setStridedBlockId(1); - - //////////////////////////////// define factory manager for (2,2) block - RCP M22 = rcp(new FactoryManager()); - M22->SetFactory("A", A22Fact); - M22->SetFactory("P", P22Fact); - M22->SetFactory("R", R22Fact); - M22->SetFactory("UnAmalgamationInfo", amalgFact22); - M22->SetFactory("Aggregates", AggFact22); - M22->SetFactory("Nullspace", nspFact22); - M22->SetFactory("Ptent", P22tentFact); - M22->SetFactory("Smoother", Smoo22Fact); - M22->SetFactory("CoarseMap", coarseMapFact22); - M22->SetIgnoreUserData(true); // always use data from factories defined in factory manager - -#else - // use TentativePFactory - RCP amalgFact22 = rcp(new AmalgamationFactory()); - RCP P22Fact = rcp(new TentativePFactory()); // check me (fed with A22) wrong column GIDS!!! - - RCP R22Fact = rcp(new TransPFactory()); - - RCP nspFact22 = rcp(new NullspaceFactory("Nullspace2")); - nspFact22->SetFactory("Nullspace2", P22Fact); - - RCP coarseMapFact22 = rcp(new CoarseMapFactory()); - coarseMapFact22->setStridingData(stridingInfo); - coarseMapFact22->setStridedBlockId(1); - - //////////////////////////////// define factory manager for (2,2) block - RCP M22 = rcp(new FactoryManager()); - M22->SetFactory("A", A22Fact); - M22->SetFactory("P", P22Fact); - M22->SetFactory("R", R22Fact); - M22->SetFactory("UnAmalgamationInfo", amalgFact22); - M22->SetFactory("Aggregates", CoupledAggFact11); - M22->SetFactory("Nullspace", nspFact22); - M22->SetFactory("Ptent", P22Fact); - M22->SetFactory("Smoother", Smoo22Fact); - M22->SetFactory("CoarseMap", coarseMapFact22); - M22->SetIgnoreUserData(true); // always use data from factories defined in factory manager -#endif - - /////////////////////////////////////////// define blocked transfer ops - RCP PFact = rcp(new BlockedPFactory()); // use row map index base from bOp - PFact->AddFactoryManager(M11); - PFact->AddFactoryManager(M22); - - RCP RFact = rcp(new GenericRFactory()); - RFact->SetFactory("P", PFact); - - RCP AcFact = rcp(new BlockedRAPFactory()); - AcFact->SetFactory("P", PFact); - AcFact->SetFactory("R", RFact); - - ////////////////////////////////////////////////////////////////////// - // Smoothers - RCP smootherPrototype = rcp(new BlockedGaussSeidelSmoother()); - smootherPrototype->SetParameter("Sweeps", Teuchos::ParameterEntry(BGS_nSweeps)); - smootherPrototype->SetParameter("Damping factor", Teuchos::ParameterEntry(BGS_omega)); - smootherPrototype->AddFactoryManager(M11, 0); - smootherPrototype->AddFactoryManager(M22, 1); - RCP smootherFact = rcp(new SmootherFactory(smootherPrototype)); - - // Coarse grid correction - RCP coarseSolverPrototype = rcp(new BlockedGaussSeidelSmoother()); - coarseSolverPrototype->SetParameter("Sweeps", Teuchos::ParameterEntry(BGS_nSweeps)); - coarseSolverPrototype->SetParameter("Damping factor", Teuchos::ParameterEntry(BGS_omega)); - coarseSolverPrototype->AddFactoryManager(M11, 0); - coarseSolverPrototype->AddFactoryManager(M22, 1); - RCP coarseSolverFact = rcp(new SmootherFactory(coarseSolverPrototype, null)); - - // main factory manager - FactoryManager M; - M.SetFactory("A", AcFact); - M.SetFactory("P", PFact); - M.SetFactory("R", RFact); - M.SetFactory("Smoother", smootherFact); // TODO fix me - M.SetFactory("PreSmoother", smootherFact); // TODO fix me - M.SetFactory("PostSmoother", smootherFact); // TODO fix me - M.SetFactory("CoarseSolver", coarseSolverFact); - - //////////////////////////////////// setup multigrid - - H->Setup(M, 0, maxLevels); - - *out << std::endl; - *out << "print content of multigrid levels:" << std::endl; - - Finest->print(*out); - - RCP coarseLevel = H->GetLevel(1); - coarseLevel->print(*out); - - // RCP coarseLevel2 = H->GetLevel(2); - // coarseLevel2->print(*out); - - RCP xLsg = MultiVectorFactory::Build(xstridedfullmap, 1); - - // Use AMG directly as an iterative method - { - xLsg->putScalar((SC)0.0); - - // Epetra_Vector -> Xpetra::Vector - RCP xRhs = rcp(new Xpetra::EpetraVectorT(epv)); - - // calculate initial (absolute) residual - Array::magnitudeType> norms(1); - xRhs->norm2(norms); - *out << "||x_0|| = " << norms[0] << std::endl; - - // apply ten multigrid iterations - H->Iterate(*xRhs, *xLsg, 100); - - // calculate and print residual - RCP xTmp = MultiVectorFactory::Build(xstridedfullmap, 1); - bOp->apply(*xLsg, *xTmp, NO_TRANS, (SC)1.0, (SC)0.0); - xRhs->update((SC)-1.0, *xTmp, (SC)1.0); - xRhs->norm2(norms); - *out << "||r|| = " << norms[0] << std::endl; - } - - // TODO: don't forget to add Aztec as prerequisite in CMakeLists.txt! - // - // Solve Ax = b using AMG as a preconditioner in AztecOO - // - { - RCP X = rcp(new Epetra_Vector(epv->Map())); - X->PutScalar(0.0); - Epetra_LinearProblem epetraProblem(epA.get(), X.get(), epv.get()); - - AztecOO aztecSolver(epetraProblem); - aztecSolver.SetAztecOption(AZ_solver, AZ_gmres); - - MueLu::EpetraOperator aztecPrec(H); - aztecSolver.SetPrecOperator(&aztecPrec); - - int maxIts = 50; - double tol = 1e-8; - - aztecSolver.Iterate(maxIts, tol); - } - - success = true; - } - TEUCHOS_STANDARD_CATCH_STATEMENTS(verbose, std::cerr, success); - - return (success ? EXIT_SUCCESS : EXIT_FAILURE); -#else - std::cout << "Epetra (and/or EpetraExt) are not available. Skip test." << std::endl; - return EXIT_SUCCESS; -#endif // #if defined(HAVE_MUELU_SERIAL) && defined(HAVE_MUELU_EPETRA) -} diff --git a/packages/muelu/test/navierstokes/Navier2DBlocked_Simple.cpp b/packages/muelu/test/navierstokes/Navier2DBlocked_Simple.cpp deleted file mode 100644 index d69e6e715baf..000000000000 --- a/packages/muelu/test/navierstokes/Navier2DBlocked_Simple.cpp +++ /dev/null @@ -1,533 +0,0 @@ -// @HEADER -// ***************************************************************************** -// MueLu: A package for multigrid based preconditioning -// -// Copyright 2012 NTESS and the MueLu contributors. -// SPDX-License-Identifier: BSD-3-Clause -// ***************************************************************************** -// @HEADER - -/* - * Navier2D_epetra.cpp - * - * Created on: Mar 26, 2011 - * Author: wiesner - */ - -#include -#include -#include - -// Teuchos -#include -#include -#include -#include -#include -#include -#include -#include - -// Epetra -#include -#include -#include - -// Xpetra -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -// MueLu -#include "MueLu_ConfigDefs.hpp" -#include "MueLu_Memory.hpp" -#include "MueLu_Hierarchy.hpp" -#include "MueLu_UncoupledAggregationFactory.hpp" -#include "MueLu_PgPFactory.hpp" -#include "MueLu_GenericRFactory.hpp" -#include "MueLu_SaPFactory.hpp" -#include "MueLu_TransPFactory.hpp" -#include "MueLu_BlockedRAPFactory.hpp" -#include "MueLu_TrilinosSmoother.hpp" -#include "MueLu_Utilities.hpp" -#include "MueLu_Exceptions.hpp" -#include "MueLu_Aggregates.hpp" -#include "MueLu_CoalesceDropFactory.hpp" -#include "MueLu_PreDropFunctionConstVal.hpp" -#include "MueLu_NullspaceFactory.hpp" -#include "MueLu_TentativePFactory.hpp" -#include "MueLu_SmootherFactory.hpp" -#include "MueLu_DirectSolver.hpp" -#include "MueLu_EpetraOperator.hpp" -#include "MueLu_SubBlockAFactory.hpp" -#include "MueLu_BlockedPFactory.hpp" -#include "MueLu_BlockedGaussSeidelSmoother.hpp" -#include "MueLu_SchurComplementFactory.hpp" -#include "MueLu_SimpleSmoother.hpp" -#include "MueLu_InverseApproximationFactory.hpp" - -#include "MueLu_CoarseMapFactory.hpp" - -#include "MueLu_AmalgamationFactory.hpp" -#include "MueLu_AggregationExportFactory.hpp" - -#include -#include - -#include "Navier2D_Helpers.h" - -/*! - * 2d Navier Stokes example (for Epetra) - * - * using block matrices - */ - -int main(int argc, char* argv[]) { -#if defined(HAVE_MUELU_EPETRA) && defined(HAVE_MUELU_EPETRAEXT) - typedef double Scalar; - typedef int LocalOrdinal; - typedef int GlobalOrdinal; - typedef LocalOrdinal LO; - typedef GlobalOrdinal GO; - typedef Xpetra::EpetraNode Node; -#include "MueLu_UseShortNames.hpp" - - using Teuchos::RCP; - using Teuchos::rcp; - - Teuchos::oblackholestream blackhole; - Teuchos::GlobalMPISession mpiSession(&argc, &argv, &blackhole); - - bool success = false; - bool verbose = true; - try { - // - RCP > comm = Teuchos::DefaultComm::getComm(); - RCP out = Teuchos::fancyOStream(Teuchos::rcpFromRef(std::cout)); - out->setOutputToRootOnly(0); - *out << MueLu::MemUtils::PrintMemoryUsage() << std::endl; - - // Timing - Teuchos::Time myTime("global"); - Teuchos::TimeMonitor MM(myTime); - - // custom parameters - LocalOrdinal maxLevels = 3; - - GlobalOrdinal maxCoarseSize = 1; // FIXME clp doesn't like long long int - - int globalNumDofs = 1500; // used for the maps - int nDofsPerNode = 3; // used for generating the fine level null-space - - // build strided maps - // striding information: 2 velocity dofs and 1 pressure dof = 3 dofs per node - std::vector stridingInfo; - stridingInfo.push_back(2); - stridingInfo.push_back(1); - - /////////////////////////////////////// build strided maps - // build strided maps: - // xstridedfullmap: full map (velocity and pressure dof gids), continous - // xstridedvelmap: only velocity dof gid maps (i.e. 0,1,3,4,6,7...) - // xstridedpremap: only pressure dof gid maps (i.e. 2,5,8,...) - Xpetra::UnderlyingLib lib = Xpetra::UseEpetra; - RCP xstridedfullmap = StridedMapFactory::Build(lib, globalNumDofs, 0, stridingInfo, comm, -1); - RCP xstridedvelmap = StridedMapFactory::Build(xstridedfullmap, 0); - RCP xstridedpremap = StridedMapFactory::Build(xstridedfullmap, 1); - - /////////////////////////////////////// transform Xpetra::Map objects to Epetra - // this is needed for AztecOO - const RCP fullmap = Teuchos::rcpFromRef(Xpetra::toEpetra(*xstridedfullmap)); - RCP velmap = Teuchos::rcpFromRef(Xpetra::toEpetra(*xstridedvelmap)); - RCP premap = Teuchos::rcpFromRef(Xpetra::toEpetra(*xstridedpremap)); - - /////////////////////////////////////// import problem matrix and RHS from files (-> Epetra) - - // read in problem - Epetra_CrsMatrix* ptrA = 0; - Epetra_Vector* ptrf = 0; - Epetra_MultiVector* ptrNS = 0; - - *out << "Reading matrix market file" << std::endl; - - EpetraExt::MatrixMarketFileToCrsMatrix("A_re1000_5932.txt", *fullmap, *fullmap, *fullmap, ptrA); - EpetraExt::MatrixMarketFileToVector("b_re1000_5932.txt", *fullmap, ptrf); - - RCP epA = Teuchos::rcp(ptrA); - RCP epv = Teuchos::rcp(ptrf); - RCP epNS = Teuchos::rcp(ptrNS); - - /////////////////////////////////////// split system into 2x2 block system - - *out << "Split matrix into 2x2 block matrix" << std::endl; - - // split fullA into A11,..., A22 - Teuchos::RCP A11; - Teuchos::RCP A12; - Teuchos::RCP A21; - Teuchos::RCP A22; - - if (MueLuTests::SplitMatrix2x2(epA, *velmap, *premap, A11, A12, A21, A22) == false) - *out << "Problem with splitting matrix" << std::endl; - - /////////////////////////////////////// transform Epetra objects to Xpetra (needed for MueLu) - - // build Xpetra objects from Epetra_CrsMatrix objects - Teuchos::RCP > xA11 = Teuchos::rcp(new Xpetra::EpetraCrsMatrixT(A11)); - Teuchos::RCP > xA12 = Teuchos::rcp(new Xpetra::EpetraCrsMatrixT(A12)); - Teuchos::RCP > xA21 = Teuchos::rcp(new Xpetra::EpetraCrsMatrixT(A21)); - Teuchos::RCP > xA22 = Teuchos::rcp(new Xpetra::EpetraCrsMatrixT(A22)); - - /////////////////////////////////////// generate MapExtractor object - - std::vector > > xmaps; - xmaps.push_back(xstridedvelmap); - xmaps.push_back(xstridedpremap); - - Teuchos::RCP > map_extractor = Xpetra::MapExtractorFactory::Build(xstridedfullmap, xmaps); - - /////////////////////////////////////// build blocked transfer operator - // using the map extractor - Teuchos::RCP > bOp = Teuchos::rcp(new Xpetra::BlockedCrsMatrix(map_extractor, map_extractor, 10)); - bOp->setMatrix(0, 0, Teuchos::rcp(new Xpetra::CrsMatrixWrap(xA11))); - bOp->setMatrix(0, 1, Teuchos::rcp(new Xpetra::CrsMatrixWrap(xA12))); - bOp->setMatrix(1, 0, Teuchos::rcp(new Xpetra::CrsMatrixWrap(xA21))); - bOp->setMatrix(1, 1, Teuchos::rcp(new Xpetra::CrsMatrixWrap(xA22))); - - bOp->fillComplete(); - - //////////////////////////////////////////////////// create Hierarchy - RCP H = rcp(new Hierarchy()); - H->setDefaultVerbLevel(Teuchos::VERB_HIGH); - // H->setDefaultVerbLevel(Teuchos::VERB_NONE); - H->SetMaxCoarseSize(maxCoarseSize); - - //////////////////////////////////////////////////////// finest Level - RCP Finest = H->GetLevel(); - Finest->setDefaultVerbLevel(Teuchos::VERB_HIGH); - Finest->Set("A", Teuchos::rcp_dynamic_cast(bOp)); - - /////////////////////////////////////////////// define subblocks of A - // make A11 block and A22 block available as variable "A" generated - // by A11Fact and A22Fact - RCP A11Fact = rcp(new SubBlockAFactory()); - A11Fact->SetFactory("A", MueLu::NoFactory::getRCP()); - A11Fact->SetParameter("block row", Teuchos::ParameterEntry(0)); - A11Fact->SetParameter("block col", Teuchos::ParameterEntry(0)); - RCP A22Fact = rcp(new SubBlockAFactory()); - A22Fact->SetFactory("A", MueLu::NoFactory::getRCP()); - A22Fact->SetParameter("block row", Teuchos::ParameterEntry(1)); - A22Fact->SetParameter("block col", Teuchos::ParameterEntry(1)); - - ////////////////////////////////////////// prepare null space for A11 - RCP nullspace11 = MultiVectorFactory::Build(xstridedvelmap, 2); // this is a 2D standard null space - - for (int i = 0; i < nDofsPerNode - 1; ++i) { - Teuchos::ArrayRCP nsValues = nullspace11->getDataNonConst(i); - int numBlocks = nsValues.size() / (nDofsPerNode - 1); - for (int j = 0; j < numBlocks; ++j) { - nsValues[j * (nDofsPerNode - 1) + i] = 1.0; - } - } - - Finest->Set("Nullspace1", nullspace11); - - ///////////////////////////////////////// define CoalesceDropFactory and Aggregation for A11 - // set up amalgamation for A11. Note: we're using a default null space factory (Teuchos::null) - RCP amalgFact11 = rcp(new AmalgamationFactory()); - amalgFact11->SetFactory("A", A11Fact); - - amalgFact11->setDefaultVerbLevel(Teuchos::VERB_EXTREME); - RCP dropFact11 = rcp(new CoalesceDropFactory()); - dropFact11->SetFactory("A", A11Fact); - dropFact11->SetFactory("UnAmalgamationInfo", amalgFact11); - dropFact11->setDefaultVerbLevel(Teuchos::VERB_EXTREME); - RCP CoupledAggFact11 = rcp(new UncoupledAggregationFactory()); - CoupledAggFact11->SetFactory("Graph", dropFact11); - CoupledAggFact11->SetMinNodesPerAggregate(9); - CoupledAggFact11->SetMaxNeighAlreadySelected(2); - CoupledAggFact11->SetOrdering("natural"); - - ///////////////////////////////////////// define transfer ops for A11 -#if 0 - // use PG-AMG - RCP P11Fact = rcp(new PgPFactory()); - - RCP R11Fact = rcp(new GenericRFactory()); - Teuchos::RCP nspFact11 = Teuchos::rcp(new NullspaceFactory("Nullspace1",P11tentFact)); - - Teuchos::RCP nspFact11 = Teuchos::rcp(new NullspaceFactory("Nullspace1")); - - RCP coarseMapFact11 = Teuchos::rcp(new CoarseMapFactory()); - coarseMapFact11->setStridingData(stridingInfo); - coarseMapFact11->setStridedBlockId(0); - - //////////////////////////////// define factory manager for (1,1) block - RCP M11 = rcp(new FactoryManager()); - M11->SetFactory("A", A11Fact); - M11->SetFactory("P", P11Fact); - M11->SetFactory("R", R11Fact); - M11->SetFactory("Aggregates", CoupledAggFact11); - M11->SetFactory("UnAmalgamationInfo", amalgFact11); - M11->SetFactory("Nullspace", nspFact11); - // M11->SetFactory("Ptent", P11tentFact); - M11->SetFactory("CoarseMap", coarseMapFact11); -#else - RCP P11Fact = rcp(new TentativePFactory()); - - RCP R11Fact = rcp(new TransPFactory()); - - Teuchos::RCP nspFact11 = Teuchos::rcp(new NullspaceFactory("Nullspace1")); - nspFact11->SetFactory("Nullspace1", P11Fact); - - RCP coarseMapFact11 = Teuchos::rcp(new CoarseMapFactory()); - coarseMapFact11->setStridingData(stridingInfo); - coarseMapFact11->setStridedBlockId(0); - - //////////////////////////////// define factory manager for (1,1) block - RCP M11 = rcp(new FactoryManager()); - M11->SetFactory("A", A11Fact); - M11->SetFactory("P", P11Fact); - M11->SetFactory("R", R11Fact); - M11->SetFactory("Aggregates", CoupledAggFact11); - M11->SetFactory("UnAmalgamationInfo", amalgFact11); - M11->SetFactory("Nullspace", nspFact11); - // M11->SetFactory("Ptent", P11Fact); - M11->SetFactory("CoarseMap", coarseMapFact11); - M11->SetFactory("Graph", dropFact11); -#endif - M11->SetIgnoreUserData(true); // always use data from factories defined in factory manager - - ////////////////////////////////////////// prepare null space for A22 - RCP nullspace22 = MultiVectorFactory::Build(xstridedpremap, 1); // this is a 2D standard null space - Teuchos::ArrayRCP nsValues22 = nullspace22->getDataNonConst(0); - for (int j = 0; j < nsValues22.size(); ++j) { - nsValues22[j] = 1.0; - } - - Finest->Set("Nullspace2", nullspace22); - - ///////////////////////////////////////// define transfer ops for A22 -#if 0 - // use PGAMG - RCP amalgFact22 = rcp(new AmalgamationFactory(A22Fact)); - RCP P22tentFact = rcp(new TentativePFactory(CoupledAggFact11, amalgFact22)); - - RCP P22Fact = rcp(new SaPFactory(P22tentFact)); - - //RCP R22Fact = rcp(new GenericRFactory(P22Fact)); - RCP R22Fact = rcp(new TransPFactory(P22Fact)); - - Teuchos::RCP nspFact22 = Teuchos::rcp(new NullspaceFactory("Nullspace2",P22tentFact)); - RCP coarseMapFact22 = Teuchos::rcp(new CoarseMapFactory(CoupledAggFact11, nspFact22)); - coarseMapFact22->setStridingData(stridingInfo); - coarseMapFact22->setStridedBlockId(1); - - //////////////////////////////// define factory manager for (2,2) block - RCP M22 = rcp(new FactoryManager()); - M22->SetFactory("A", A22Fact); - M22->SetFactory("P", P22Fact); - M22->SetFactory("R", R22Fact); - M22->SetFactory("UnAmalgamationInfo", amalgFact22); - M22->SetFactory("Aggregates", AggFact22); - M22->SetFactory("Nullspace", nspFact22); - M22->SetFactory("Ptent", P22tentFact); - M22->SetFactory("CoarseMap", coarseMapFact22); - M22->SetIgnoreUserData(true); // always use data from factories defined in factory manager - -#else - // use TentativePFactory - RCP amalgFact22 = rcp(new AmalgamationFactory()); - RCP P22Fact = rcp(new TentativePFactory()); // check me (fed with A22) wrong column GIDS!!! - - RCP R22Fact = rcp(new TransPFactory()); - - Teuchos::RCP nspFact22 = Teuchos::rcp(new NullspaceFactory("Nullspace2")); - nspFact22->SetFactory("Nullspace2", P22Fact); - RCP coarseMapFact22 = Teuchos::rcp(new CoarseMapFactory()); - coarseMapFact22->setStridingData(stridingInfo); - coarseMapFact22->setStridedBlockId(1); - - //////////////////////////////// define factory manager for (2,2) block - RCP M22 = rcp(new FactoryManager()); - M22->SetFactory("A", A22Fact); - M22->SetFactory("P", P22Fact); - M22->SetFactory("R", R22Fact); - M22->SetFactory("Aggregates", CoupledAggFact11); - M22->SetFactory("Nullspace", nspFact22); - M22->SetFactory("UnAmalgamationInfo", amalgFact22); - M22->SetFactory("Ptent", P22Fact); - M22->SetFactory("CoarseMap", coarseMapFact22); - M22->SetIgnoreUserData(true); // always use data from factories defined in factory manager -#endif - - /////////////////////////////////////////// define blocked transfer ops - RCP PFact = rcp(new BlockedPFactory()); - PFact->AddFactoryManager(M11); - PFact->AddFactoryManager(M22); - - RCP RFact = rcp(new GenericRFactory()); - RFact->SetFactory("P", PFact); - - RCP AcFact = rcp(new BlockedRAPFactory()); - AcFact->SetFactory("P", PFact); - AcFact->SetFactory("R", RFact); - - *out << "Creating Simple Smoother" << std::endl; - - ////////////////////////////////////////////////////////////////////// - // Smoothers - - RCP A00Fact = Teuchos::rcp(new SubBlockAFactory()); - A00Fact->SetFactory("A", MueLu::NoFactory::getRCP()); - A00Fact->SetParameter("block row", Teuchos::ParameterEntry(0)); - A00Fact->SetParameter("block col", Teuchos::ParameterEntry(0)); - std::string ifpackTypePredictSmoother; - Teuchos::ParameterList ifpackListPredictSmoother; - ifpackListPredictSmoother.set("relaxation: sweeps", (LocalOrdinal)1); - ifpackListPredictSmoother.set("relaxation: damping factor", (Scalar)0.5); - ifpackTypePredictSmoother = "RELAXATION"; - ifpackListPredictSmoother.set("relaxation: type", "Gauss-Seidel"); - RCP smoProtoPredict = rcp(new TrilinosSmoother(ifpackTypePredictSmoother, ifpackListPredictSmoother, 0)); - smoProtoPredict->SetFactory("A", A00Fact); - RCP SmooPredictFact = rcp(new SmootherFactory(smoProtoPredict)); - - RCP MPredict = rcp(new FactoryManager()); - MPredict->SetFactory("A", A00Fact); // SchurComplement operator for correction step (defined as "A") - MPredict->SetFactory("Smoother", SmooPredictFact); // solver/smoother for correction step - MPredict->SetFactory("PreSmoother", SmooPredictFact); - MPredict->SetFactory("PostSmoother", SmooPredictFact); - MPredict->SetIgnoreUserData(true); // always use data from factories defined in factory manager - - //////////////////////////////////////////////// - // InverseApproximation - Teuchos::RCP AinvFact = Teuchos::rcp(new InverseApproximationFactory()); - AinvFact->SetFactory("A", A11Fact); - AinvFact->SetParameter("inverse: approximation type", Teuchos::ParameterEntry(std::string("lumping"))); - - // SchurComp - // create SchurComp factory (SchurComplement smoother is provided by local FactoryManager) - Teuchos::RCP SFact = Teuchos::rcp(new SchurComplementFactory()); - SFact->SetParameter("omega", Teuchos::ParameterEntry(0.8)); - SFact->SetFactory("A", MueLu::NoFactory::getRCP()); // 2x2 blocked operator - SFact->SetFactory("Ainv", AinvFact); - - // define SchurComplement solver - std::string ifpackTypeSchurSmoother; - ifpackTypeSchurSmoother = "RELAXATION"; - Teuchos::ParameterList ifpackListSchurSmoother; - ifpackListSchurSmoother.set("relaxation: sweeps", (LocalOrdinal)10); - ifpackListSchurSmoother.set("relaxation: damping factor", (Scalar)0.8); - ifpackListSchurSmoother.set("relaxation: type", "Gauss-Seidel"); - RCP smoProtoSC = rcp(new TrilinosSmoother(ifpackTypeSchurSmoother, ifpackListSchurSmoother, 0)); - smoProtoSC->SetFactory("A", SFact); // explicitely use SchurComplement matrix as input for smoother - RCP SmooSCFact = rcp(new SmootherFactory(smoProtoSC)); - - // setup local factory manager for SchurComplementFactory - Teuchos::RCP MSchur = Teuchos::rcp(new FactoryManager()); - MSchur->SetFactory("A", SFact); // SchurCompFactory as generating factory for SchurComp equation - MSchur->SetFactory("Smoother", SmooSCFact); - MSchur->SetIgnoreUserData(true); - - ///////////////////////////////////////////////////// - // create smoother prototype - - RCP smootherPrototype = rcp(new SimpleSmoother()); - smootherPrototype->SetParameter("Sweeps", Teuchos::ParameterEntry(3)); - smootherPrototype->SetParameter("Damping factor", Teuchos::ParameterEntry(0.6)); - - smootherPrototype->AddFactoryManager(MPredict, 0); // set temporary factory manager for prediction step - smootherPrototype->AddFactoryManager(MSchur, 1); // set temporary factory manager for correction step - smootherPrototype->SetFactory("A", MueLu::NoFactory::getRCP()); - - ///////////////////////////////////////////////////// - // create smoother factories - RCP smootherFact = rcp(new SmootherFactory(smootherPrototype)); // pre and postsmoothing with SIMPLE on the finest and intermedium levels - RCP coarseSmootherFact = rcp(new SmootherFactory(smootherPrototype, Teuchos::null)); // only presmoothing on finest level (we do not want to run two SIMPLE iterations on the coarsest level) - - // main factory manager - FactoryManager M; - M.SetFactory("A", AcFact); - M.SetFactory("P", PFact); - M.SetFactory("R", RFact); - M.SetFactory("Smoother", smootherFact); // TODO fix me - M.SetFactory("CoarseSolver", coarseSmootherFact); - - //////////////////////////////////// setup multigrid - - H->Setup(M, 0, maxLevels); - - Finest->print(*out); - - RCP coarseLevel = H->GetLevel(1); - coarseLevel->print(*out); - - // RCP coarseLevel2 = H->GetLevel(2); - // coarseLevel2->print(*out); - - RCP xLsg = MultiVectorFactory::Build(xstridedfullmap, 1); - - // Use AMG directly as an iterative method -#if 0 - { - xLsg->putScalar( (SC) 0.0); - - // Epetra_Vector -> Xpetra::Vector - RCP xRhs = Teuchos::rcp(new Xpetra::EpetraVector(epv)); - - // calculate initial (absolute) residual - Teuchos::Array::magnitudeType> norms(1); - xRhs->norm2(norms); - *out << "||x_0|| = " << norms[0] << std::endl; - - // apply ten multigrid iterations - H->Iterate(*xRhs,*xLsg,100); - - - // calculate and print residual - RCP xTmp = MultiVectorFactory::Build(xstridedfullmap,1); - bOp->apply(*xLsg,*xTmp,Teuchos::NO_TRANS,(SC)1.0,(SC)0.0); - xRhs->update((SC)-1.0,*xTmp,(SC)1.0); - xRhs->norm2(norms); - *out << "||x|| = " << norms[0] << std::endl; - } -#endif - - // - // Solve Ax = b using AMG as a preconditioner in AztecOO - // - { - RCP X = rcp(new Epetra_Vector(epv->Map())); - X->PutScalar(0.0); - Epetra_LinearProblem epetraProblem(epA.get(), X.get(), epv.get()); - - AztecOO aztecSolver(epetraProblem); - aztecSolver.SetAztecOption(AZ_solver, AZ_gmres); - - MueLu::EpetraOperator aztecPrec(H); - aztecSolver.SetPrecOperator(&aztecPrec); - - int maxIts = 50; - double tol = 1e-8; - - aztecSolver.Iterate(maxIts, tol); - } - - success = true; - } - TEUCHOS_STANDARD_CATCH_STATEMENTS(verbose, std::cerr, success); - - return (success ? EXIT_SUCCESS : EXIT_FAILURE); -#else - std::cout << "Epetra (and/or EpetraExt) are not available. Skip test." << std::endl; - return EXIT_SUCCESS; -#endif // #if defined(HAVE_MUELU_SERIAL) && defined(HAVE_MUELU_EPETRA) -} diff --git a/packages/muelu/test/navierstokes/Navier2DBlocked_SimpleSmoother.cpp b/packages/muelu/test/navierstokes/Navier2DBlocked_SimpleSmoother.cpp deleted file mode 100644 index 4787a426294f..000000000000 --- a/packages/muelu/test/navierstokes/Navier2DBlocked_SimpleSmoother.cpp +++ /dev/null @@ -1,353 +0,0 @@ -// @HEADER -// ***************************************************************************** -// MueLu: A package for multigrid based preconditioning -// -// Copyright 2012 NTESS and the MueLu contributors. -// SPDX-License-Identifier: BSD-3-Clause -// ***************************************************************************** -// @HEADER - -#include -#include -#include - -// Teuchos -#include -#include -#include -#include -#include -#include -#include - -// Epetra -#include -#include -#include - -// Xpetra -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -// MueLu -#include "MueLu_ConfigDefs.hpp" -#include "MueLu_Memory.hpp" -#include "MueLu_Hierarchy.hpp" -#include "MueLu_PgPFactory.hpp" -#include "MueLu_GenericRFactory.hpp" -#include "MueLu_SaPFactory.hpp" -#include "MueLu_TransPFactory.hpp" -#include "MueLu_TrilinosSmoother.hpp" -#include "MueLu_Utilities.hpp" -#include "MueLu_Exceptions.hpp" -#include "MueLu_Aggregates.hpp" -#include "MueLu_CoalesceDropFactory.hpp" -#include "MueLu_PreDropFunctionConstVal.hpp" -#include "MueLu_NullspaceFactory.hpp" -#include "MueLu_TentativePFactory.hpp" -#include "MueLu_SmootherFactory.hpp" -#include "MueLu_DirectSolver.hpp" -#include "MueLu_EpetraOperator.hpp" -#include "MueLu_SubBlockAFactory.hpp" -#include "MueLu_SimpleSmoother.hpp" -#include "MueLu_SchurComplementFactory.hpp" -#include "MueLu_Utilities.hpp" -#include "MueLu_TopSmootherFactory.hpp" -#include "MueLu_HierarchyUtils.hpp" -#include "MueLu_InverseApproximationFactory.hpp" - -#include -#include - -#include "Navier2D_Helpers.h" - -/*! - * 2d Navier Stokes example (for Epetra) - * - * using block matrices - */ - -int main(int argc, char* argv[]) { -#if defined(HAVE_MUELU_EPETRA) - typedef double Scalar; - typedef int LocalOrdinal; - typedef int GlobalOrdinal; - typedef LocalOrdinal LO; - typedef GlobalOrdinal GO; - typedef Xpetra::EpetraNode Node; -#include "MueLu_UseShortNames.hpp" - - using Teuchos::RCP; - using Teuchos::rcp; - using namespace MueLuTests; - - Teuchos::oblackholestream blackhole; - Teuchos::GlobalMPISession mpiSession(&argc, &argv, &blackhole); - - bool success = false; - bool verbose = true; - try { - RCP > comm = Teuchos::DefaultComm::getComm(); - RCP out = Teuchos::fancyOStream(Teuchos::rcpFromRef(std::cout)); - out->setOutputToRootOnly(0); - *out << MueLu::MemUtils::PrintMemoryUsage() << std::endl; - - // Timing - Teuchos::Time myTime("global"); - Teuchos::TimeMonitor MM(myTime); - - // read in input parameters - - // default parameters - LO SIMPLE_nSweeps = 600; - Scalar SIMPLE_omega = 0.5; - LO SC_nSweeps = 10; - Scalar SC_omega = 1.0; - LO PRED_nSweeps = 3; - Scalar PRED_omega = 1.0; - LO useSIMPLEC = 0; - - int SC_bUseDirectSolver = 0; - - // Note: use --help to list available options. - Teuchos::CommandLineProcessor clp(false); - clp.setOption("SIMPLE_sweeps", &SIMPLE_nSweeps, "number of sweeps with SIMPLE smoother"); - clp.setOption("SIMPLE_omega", &SIMPLE_omega, "scaling factor for SIMPLE smoother"); - clp.setOption("Predict_sweeps", &PRED_nSweeps, "number of sweeps for SIMPLE internal velocity prediction smoother (GaussSeidel)"); - clp.setOption("Predict_omega", &PRED_omega, "damping parameter for SIMPLE internal velocity prediction smoother (GaussSeidel)"); - clp.setOption("SchurComp_sweeps", &SC_nSweeps, "number of sweeps for SIMPLE internal SchurComp solver/smoother (GaussSeidel)"); - clp.setOption("SchurComp_omega", &SC_omega, "damping parameter for SIMPLE internal SchurComp solver/smoother (GaussSeidel)"); - clp.setOption("SchurComp_solver", &SC_bUseDirectSolver, "if 1: use direct solver for SchurComp equation, otherwise use GaussSeidel smoother"); - clp.setOption("useSIMPLEC", &useSIMPLEC, "if 1: use SIMPLEC instead of SIMPLE (default = 0 (SIMPLE))"); - - switch (clp.parse(argc, argv)) { - case Teuchos::CommandLineProcessor::PARSE_HELP_PRINTED: return EXIT_SUCCESS; - case Teuchos::CommandLineProcessor::PARSE_ERROR: - case Teuchos::CommandLineProcessor::PARSE_UNRECOGNIZED_OPTION: return EXIT_FAILURE; - case Teuchos::CommandLineProcessor::PARSE_SUCCESSFUL: break; - } - - int globalNumDofs = 1500; // used for the maps - - // build strided maps - // striding information: 2 velocity dofs and 1 pressure dof = 3 dofs per node - std::vector stridingInfo; - stridingInfo.push_back(2); - stridingInfo.push_back(1); - - /////////////////////////////////////// build strided maps - // build strided maps: - // xstridedfullmap: full map (velocity and pressure dof gids), continous - // xstridedvelmap: only velocity dof gid maps (i.e. 0,1,3,4,6,7...) - // xstridedpremap: only pressure dof gid maps (i.e. 2,5,8,...) - Xpetra::UnderlyingLib lib = Xpetra::UseEpetra; - RCP xstridedfullmap = StridedMapFactory::Build(lib, globalNumDofs, 0, stridingInfo, comm, -1); - RCP xstridedvelmap = StridedMapFactory::Build(xstridedfullmap, 0); - RCP xstridedpremap = StridedMapFactory::Build(xstridedfullmap, 1); - - /////////////////////////////////////// transform Xpetra::Map objects to Epetra - // this is needed for our splitting routine - const RCP fullmap = Teuchos::rcpFromRef(Xpetra::toEpetra(*xstridedfullmap)); - RCP velmap = Teuchos::rcpFromRef(Xpetra::toEpetra(*xstridedvelmap)); - RCP premap = Teuchos::rcpFromRef(Xpetra::toEpetra(*xstridedpremap)); - - /////////////////////////////////////// import problem matrix and RHS from files (-> Epetra) - - // read in problem - Epetra_CrsMatrix* ptrA = 0; - Epetra_Vector* ptrf = 0; - Epetra_MultiVector* ptrNS = 0; - - *out << "Reading matrix market file" << std::endl; - - EpetraExt::MatrixMarketFileToCrsMatrix("A_re1000_5932.txt", *fullmap, *fullmap, *fullmap, ptrA); - EpetraExt::MatrixMarketFileToVector("b_re1000_5932.txt", *fullmap, ptrf); - - RCP epA = Teuchos::rcp(ptrA); - RCP epv = Teuchos::rcp(ptrf); - RCP epNS = Teuchos::rcp(ptrNS); - - /////////////////////////////////////// split system into 2x2 block system - - *out << "Split matrix into 2x2 block matrix" << std::endl; - - // split fullA into A11,..., A22 - Teuchos::RCP A11; - Teuchos::RCP A12; - Teuchos::RCP A21; - Teuchos::RCP A22; - - if (SplitMatrix2x2(epA, *velmap, *premap, A11, A12, A21, A22) == false) - *out << "Problem with splitting matrix" << std::endl; - - /////////////////////////////////////// transform Epetra objects to Xpetra (needed for MueLu) - - // build Xpetra objects from Epetra_CrsMatrix objects - Teuchos::RCP > xA11 = Teuchos::rcp(new Xpetra::EpetraCrsMatrixT(A11)); - Teuchos::RCP > xA12 = Teuchos::rcp(new Xpetra::EpetraCrsMatrixT(A12)); - Teuchos::RCP > xA21 = Teuchos::rcp(new Xpetra::EpetraCrsMatrixT(A21)); - Teuchos::RCP > xA22 = Teuchos::rcp(new Xpetra::EpetraCrsMatrixT(A22)); - - /////////////////////////////////////// generate MapExtractor object - - std::vector > > xmaps; - - xmaps.push_back(xstridedvelmap); - xmaps.push_back(xstridedpremap); - - Teuchos::RCP > map_extractor = Xpetra::MapExtractorFactory::Build(xstridedfullmap, xmaps); - - /////////////////////////////////////// build blocked transfer operator - // using the map extractor - Teuchos::RCP > bOp = Teuchos::rcp(new Xpetra::BlockedCrsMatrix(map_extractor, map_extractor, 10)); - bOp->setMatrix(0, 0, Teuchos::rcp(new Xpetra::CrsMatrixWrap(xA11))); - bOp->setMatrix(0, 1, Teuchos::rcp(new Xpetra::CrsMatrixWrap(xA12))); - bOp->setMatrix(1, 0, Teuchos::rcp(new Xpetra::CrsMatrixWrap(xA21))); - bOp->setMatrix(1, 1, Teuchos::rcp(new Xpetra::CrsMatrixWrap(xA22))); - - bOp->fillComplete(); - //////////////////////////////////////////////////////// finest Level - RCP Finest = rcp(new Level()); - Finest->setDefaultVerbLevel(Teuchos::VERB_NONE); - Finest->Set("A", Teuchos::rcp_dynamic_cast(bOp)); - - /////////////////////////////////// - // Test Braess Sarazin Smoother as a solver - - *out << "Test: Creating SIMPLE Smoother" << std::endl; - *out << "Test: Omega for SIMPLE = " << SIMPLE_omega << std::endl; - *out << "Test: Number of sweeps for SIMPLE = " << SIMPLE_nSweeps << std::endl; - *out << "Test: Omega for Schur Complement solver= " << SC_omega << std::endl; - *out << "Test: Number of Schur Complement solver= " << SC_nSweeps << std::endl; - *out << "Test: Setting up Braess Sarazin Smoother" << std::endl; - - // define SIMPLE Smoother with SIMPLE_nSweeps and SIMPLE_omega as scaling factor - // AFact_ = Teuchos::null (= default) for the 2x2 blocked operator - RCP SimpleSm = rcp(new SimpleSmoother()); - SimpleSm->SetParameter("Sweeps", Teuchos::ParameterEntry(SIMPLE_nSweeps)); - SimpleSm->SetParameter("Damping factor", Teuchos::ParameterEntry(SIMPLE_omega)); - if (useSIMPLEC == 1) SimpleSm->SetParameter("UseSIMPLEC", Teuchos::ParameterEntry(true)); - - RCP smootherFact = rcp(new SmootherFactory(SimpleSm)); - - // define smoother for velocity prediction - // RCP A00Fact = Teuchos::rcp(new SubBlockAFactory(MueLu::NoFactory::getRCP(), 0, 0)); - RCP A00Fact = rcp(new SubBlockAFactory()); - A00Fact->SetFactory("A", MueLu::NoFactory::getRCP()); - A00Fact->SetParameter("block row", Teuchos::ParameterEntry(0)); - A00Fact->SetParameter("block col", Teuchos::ParameterEntry(0)); - RCP smoProtoPredict = Teuchos::null; - std::string ifpackPredictType; - Teuchos::ParameterList ifpackPredictList; - ifpackPredictList.set("relaxation: sweeps", PRED_nSweeps); - ifpackPredictList.set("relaxation: damping factor", PRED_omega); - ifpackPredictType = "RELAXATION"; - ifpackPredictList.set("relaxation: type", "Gauss-Seidel"); - smoProtoPredict = rcp(new TrilinosSmoother(ifpackPredictType, ifpackPredictList, 0)); - smoProtoPredict->SetFactory("A", A00Fact); - RCP SmooPredictFact = rcp(new SmootherFactory(smoProtoPredict)); - // define temporary FactoryManager that is used as input for BraessSarazin smoother - RCP MPredict = rcp(new FactoryManager()); - MPredict->SetFactory("A", A00Fact); - MPredict->SetFactory("Smoother", SmooPredictFact); // solver/smoother for correction step - MPredict->SetFactory("PreSmoother", SmooPredictFact); - MPredict->SetFactory("PostSmoother", SmooPredictFact); - MPredict->SetIgnoreUserData(true); // always use data from factories defined in factory manager - SimpleSm->SetVelocityPredictionFactoryManager(MPredict); // set temporary factory manager in BraessSarazin smoother - - // define SchurComplement Factory - // SchurComp gets a RCP to AFact_ which has to be the 2x2 blocked operator - // It stores the resulting SchurComplement operator as "A" generated by the SchurComplementFactory - // Instead of F^{-1} it uses the approximation \hat{F}^{-1} with \hat{F} = diag(F) - // InverseApproximation - Teuchos::RCP AinvFact = Teuchos::rcp(new InverseApproximationFactory()); - AinvFact->SetFactory("A", A00Fact); - if (useSIMPLEC == 1) AinvFact->SetParameter("inverse: approximation type", Teuchos::ParameterEntry(std::string("lumping"))); - - RCP SFact = Teuchos::rcp(new SchurComplementFactory()); - SFact->SetParameter("omega", Teuchos::ParameterEntry(1.0)); // for Simple, omega is always 1.0 in the SchurComplement - SFact->SetFactory("A", MueLu::NoFactory::getRCP()); - - // define smoother/solver for BraessSarazin - RCP smoProtoSC = Teuchos::null; - if (SC_bUseDirectSolver != 1) { - // Smoother Factory, using SFact as a factory for A - std::string ifpackSCType; - Teuchos::ParameterList ifpackSCList; - ifpackSCList.set("relaxation: sweeps", SC_nSweeps); - ifpackSCList.set("relaxation: damping factor", SC_omega); - ifpackSCType = "RELAXATION"; - ifpackSCList.set("relaxation: type", "Gauss-Seidel"); - smoProtoSC = rcp(new TrilinosSmoother(ifpackSCType, ifpackSCList, 0)); - smoProtoSC->SetFactory("A", SFact); - } else { - Teuchos::ParameterList ifpackDSList; - std::string ifpackDSType; - smoProtoSC = rcp(new DirectSolver(ifpackDSType, ifpackDSList)); - smoProtoSC->SetFactory("A", SFact); - } - - RCP SmooSCFact = rcp(new SmootherFactory(smoProtoSC)); - - // define temporary FactoryManager that is used as input for BraessSarazin smoother - RCP MB = rcp(new FactoryManager()); - MB->SetFactory("A", SFact); // SchurComplement operator for correction step (defined as "A") - MB->SetFactory("Smoother", SmooSCFact); // solver/smoother for correction step - MB->SetFactory("PreSmoother", SmooSCFact); - MB->SetFactory("PostSmoother", SmooSCFact); - MB->SetIgnoreUserData(true); // always use data from factories defined in factory manager - SimpleSm->SetSchurCompFactoryManager(MB); // set temporary factory manager in BraessSarazin smoother - - // setup main factory manager - RCP M = rcp(new FactoryManager()); - M->SetFactory("A", MueLu::NoFactory::getRCP()); // this is the 2x2 blocked operator - M->SetFactory("Smoother", smootherFact); // BraessSarazin block smoother - M->SetFactory("PreSmoother", smootherFact); - M->SetFactory("PostSmoother", smootherFact); - - MueLu::SetFactoryManager SFMCoarse(Finest, M); - Finest->Request(MueLu::TopSmootherFactory(M, "Smoother")); - - // call setup (= extract blocks and extract diagonal of F) - SimpleSm->Setup(*Finest); - - RCP xtest = MultiVectorFactory::Build(xstridedfullmap, 1); - xtest->putScalar((Scalar)0.0); - - RCP xR = Teuchos::rcp(new Xpetra::EpetraVectorT(epv)); - // calculate initial (absolute) residual - Teuchos::Array::magnitudeType> norms(1); - - xR->norm2(norms); - *out << "Test: ||x_0|| = " << norms[0] << std::endl; - *out << "Test: Applying Simple Smoother" << std::endl; - *out << "Test: START DATA" << std::endl; - *out << "iterations\tVelocity_residual\tPressure_residual" << std::endl; - SimpleSm->Apply(*xtest, *xR); - xtest->norm2(norms); - *out << "Test: ||x_1|| = " << norms[0] << std::endl; - - Teuchos::Array::magnitudeType> test = MueLu::Utilities::ResidualNorm(*bOp, *xtest, *xR); - *out << "residual norm: " << test[0] << std::endl; - - success = (test[0] < 1.0e-7); - if (!success) - *out << "no convergence" << std::endl; - } - TEUCHOS_STANDARD_CATCH_STATEMENTS(verbose, std::cerr, success); - - return (success ? EXIT_SUCCESS : EXIT_FAILURE); -#else - std::cout << "Epetra needs Serial node. Please recompile MueLu with the Serial node enabled." << std::endl; - return EXIT_SUCCESS; -#endif // #if defined(HAVE_MUELU_SERIAL) && defined(HAVE_MUELU_EPETRA) -} diff --git a/packages/muelu/test/navierstokes/Navier2DBlocked_test2.cpp b/packages/muelu/test/navierstokes/Navier2DBlocked_test2.cpp deleted file mode 100644 index f972f2d81dee..000000000000 --- a/packages/muelu/test/navierstokes/Navier2DBlocked_test2.cpp +++ /dev/null @@ -1,612 +0,0 @@ -// @HEADER -// ***************************************************************************** -// MueLu: A package for multigrid based preconditioning -// -// Copyright 2012 NTESS and the MueLu contributors. -// SPDX-License-Identifier: BSD-3-Clause -// ***************************************************************************** -// @HEADER - -#include -#include -#include - -// Teuchos -#include -#include -#include -#include -#include -#include -#include -#include - -// Epetra -#include -#include -#include - -// Xpetra -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -// MueLu -#include "MueLu_ConfigDefs.hpp" -#include "MueLu_Memory.hpp" -#include "MueLu_Hierarchy.hpp" -#include "MueLu_UncoupledAggregationFactory.hpp" -#include "MueLu_PgPFactory.hpp" -#include "MueLu_GenericRFactory.hpp" -#include "MueLu_SaPFactory.hpp" -#include "MueLu_TransPFactory.hpp" -#include "MueLu_BlockedRAPFactory.hpp" -#include "MueLu_TrilinosSmoother.hpp" -#include "MueLu_Utilities.hpp" -#include "MueLu_Exceptions.hpp" -#include "MueLu_Aggregates.hpp" -#include "MueLu_CoalesceDropFactory.hpp" -#include "MueLu_PreDropFunctionConstVal.hpp" -#include "MueLu_NullspaceFactory.hpp" -#include "MueLu_TentativePFactory.hpp" -#include "MueLu_SmootherFactory.hpp" -#include "MueLu_DirectSolver.hpp" -#include "MueLu_EpetraOperator.hpp" -#include "MueLu_SubBlockAFactory.hpp" -#include "MueLu_BlockedPFactory.hpp" -#include "MueLu_BlockedGaussSeidelSmoother.hpp" -#include "MueLu_SchurComplementFactory.hpp" -#include "MueLu_BraessSarazinSmoother.hpp" - -#include "MueLu_CoarseMapFactory.hpp" - -#include "MueLu_AmalgamationFactory.hpp" -#include "MueLu_AggregationExportFactory.hpp" - -#if defined(HAVE_MPI) && defined(HAVE_MUELU_ZOLTAN) && defined(HAVE_MUELU_ISORROPIA) -#include "MueLu_RepartitionFactory.hpp" -#include "MueLu_RepartitionHeuristicFactory.hpp" -#include "MueLu_RebalanceTransferFactory.hpp" -#include "MueLu_IsorropiaInterface.hpp" -#include "MueLu_RebalanceBlockAcFactory.hpp" -#include "MueLu_RebalanceBlockInterpolationFactory.hpp" -#include "MueLu_RebalanceBlockRestrictionFactory.hpp" -#include "MueLu_RepartitionInterface.hpp" -#include "MueLu_CloneRepartitionInterface.hpp" -#endif - -#include -#include - -#include "Navier2D_Helpers.h" - -/*! - * 2d Navier Stokes example (for Epetra) - * - * using block matrices - * - * 3 level multigrid with Braess-Sarazin smoother - * Reuse aggregates of block 0 for aggregates in block 1 - * - */ - -int main(int argc, char* argv[]) { -#if defined(HAVE_MUELU_EPETRA) && defined(HAVE_MUELU_EPETRAEXT) - typedef double Scalar; - typedef int LocalOrdinal; - typedef int GlobalOrdinal; - typedef LocalOrdinal LO; - typedef GlobalOrdinal GO; - typedef Xpetra::EpetraNode Node; -#include "MueLu_UseShortNames.hpp" - - using Teuchos::RCP; - using Teuchos::rcp; - using Teuchos::rcpFromRef; - using namespace MueLuTests; - - Teuchos::oblackholestream blackhole; - Teuchos::GlobalMPISession mpiSession(&argc, &argv, &blackhole); - - bool success = false; - bool verbose = true; - try { - RCP > comm = Teuchos::DefaultComm::getComm(); - RCP out = Teuchos::fancyOStream(Teuchos::rcpFromRef(std::cout)); - out->setOutputToRootOnly(0); - *out << MueLu::MemUtils::PrintMemoryUsage() << std::endl; - - // Timing - Teuchos::Time myTime("global"); - Teuchos::TimeMonitor MM(myTime); - - // read in some command line parameters - Teuchos::CommandLineProcessor clp(false); - - int rebalanceBlocks = 1; - clp.setOption("rebalanceBlocks", &rebalanceBlocks, "rebalance blocks (1=yes, else=no)"); - - switch (clp.parse(argc, argv)) { - case Teuchos::CommandLineProcessor::PARSE_HELP_PRINTED: return EXIT_SUCCESS; - case Teuchos::CommandLineProcessor::PARSE_ERROR: - case Teuchos::CommandLineProcessor::PARSE_UNRECOGNIZED_OPTION: return EXIT_FAILURE; - case Teuchos::CommandLineProcessor::PARSE_SUCCESSFUL: break; - } - -#if defined(HAVE_MPI) && defined(HAVE_MUELU_ZOLTAN) && defined(HAVE_MUELU_ISORROPIA) -#ifndef HAVE_XPETRA_INT_LONG_LONG - *out << "Warning: scaling test was not compiled with long long int support" << std::endl; - - // custom parameters - LocalOrdinal maxLevels = 3; - - GlobalOrdinal maxCoarseSize = 1; // FIXME clp doesn't like long long int - - int globalNumDofs = 1500; // used for the maps - int nDofsPerNode = 3; // used for generating the fine level null-space - - // build strided maps - // striding information: 2 velocity dofs and 1 pressure dof = 3 dofs per node - std::vector stridingInfo; - stridingInfo.push_back(2); - stridingInfo.push_back(1); - - /////////////////////////////////////// build strided maps - // build strided maps: - // xstridedfullmap: full map (velocity and pressure dof gids), continous - // xstridedvelmap: only velocity dof gid maps (i.e. 0,1,3,4,6,7...) - // xstridedpremap: only pressure dof gid maps (i.e. 2,5,8,...) - Xpetra::UnderlyingLib lib = Xpetra::UseEpetra; - RCP xstridedfullmap = StridedMapFactory::Build(lib, globalNumDofs, 0, stridingInfo, comm, -1); - RCP xstridedvelmap = StridedMapFactory::Build(xstridedfullmap, 0); - RCP xstridedpremap = StridedMapFactory::Build(xstridedfullmap, 1); - - /////////////////////////////////////// transform Xpetra::Map objects to Epetra - // this is needed for AztecOO - const RCP fullmap = rcpFromRef(Xpetra::toEpetra(*xstridedfullmap)); - RCP velmap = rcpFromRef(Xpetra::toEpetra(*xstridedvelmap)); - RCP premap = rcpFromRef(Xpetra::toEpetra(*xstridedpremap)); - - /////////////////////////////////////// import problem matrix and RHS from files (-> Epetra) - - // read in problem - Epetra_CrsMatrix* ptrA = 0; - Epetra_Vector* ptrf = 0; - Epetra_MultiVector* ptrNS = 0; - - *out << "Reading matrix market file" << std::endl; - - EpetraExt::MatrixMarketFileToCrsMatrix("A_re1000_5932.txt", *fullmap, *fullmap, *fullmap, ptrA); - EpetraExt::MatrixMarketFileToVector("b_re1000_5932.txt", *fullmap, ptrf); - // EpetraExt::MatrixMarketFileToCrsMatrix("/home/tobias/promotion/trilinos/fc17-dyn/packages/muelu/test/navierstokes/A_re1000_5932.txt",*fullmap,*fullmap,*fullmap,ptrA); - // EpetraExt::MatrixMarketFileToVector("/home/tobias/promotion/trilinos/fc17-dyn/packages/muelu/test/navierstokes/b_re1000_5932.txt",*fullmap,ptrf); - - RCP epA = Teuchos::rcp(ptrA); - RCP epv = Teuchos::rcp(ptrf); - RCP epNS = Teuchos::rcp(ptrNS); - - /////////////////////////////////////// split system into 2x2 block system - - *out << "Split matrix into 2x2 block matrix" << std::endl; - - // split fullA into A11,..., A22 - Teuchos::RCP A11; - Teuchos::RCP A12; - Teuchos::RCP A21; - Teuchos::RCP A22; - - if (SplitMatrix2x2(epA, *velmap, *premap, A11, A12, A21, A22) == false) - *out << "Problem with splitting matrix" << std::endl; - - /////////////////////////////////////// transform Epetra objects to Xpetra (needed for MueLu) - - // build Xpetra objects from Epetra_CrsMatrix objects - Teuchos::RCP > xA11 = Teuchos::rcp(new Xpetra::EpetraCrsMatrixT(A11)); - Teuchos::RCP > xA12 = Teuchos::rcp(new Xpetra::EpetraCrsMatrixT(A12)); - Teuchos::RCP > xA21 = Teuchos::rcp(new Xpetra::EpetraCrsMatrixT(A21)); - Teuchos::RCP > xA22 = Teuchos::rcp(new Xpetra::EpetraCrsMatrixT(A22)); - - /////////////////////////////////////// generate MapExtractor object - - std::vector > > xmaps; - xmaps.push_back(xstridedvelmap); - xmaps.push_back(xstridedpremap); - - Teuchos::RCP > map_extractor = Xpetra::MapExtractorFactory::Build(xstridedfullmap, xmaps); - - /////////////////////////////////////// build blocked transfer operator - // using the map extractor - Teuchos::RCP > bOp = Teuchos::rcp(new Xpetra::BlockedCrsMatrix(map_extractor, map_extractor, 10)); - bOp->setMatrix(0, 0, Teuchos::rcp(new Xpetra::CrsMatrixWrap(xA11))); - bOp->setMatrix(0, 1, Teuchos::rcp(new Xpetra::CrsMatrixWrap(xA12))); - bOp->setMatrix(1, 0, Teuchos::rcp(new Xpetra::CrsMatrixWrap(xA21))); - bOp->setMatrix(1, 1, Teuchos::rcp(new Xpetra::CrsMatrixWrap(xA22))); - - bOp->fillComplete(); - - //////////////////////////////////////////////////// create Hierarchy - RCP H = rcp(new Hierarchy()); - H->setDefaultVerbLevel(Teuchos::VERB_HIGH); - // H->setDefaultVerbLevel(Teuchos::VERB_NONE); - H->SetMaxCoarseSize(maxCoarseSize); - - //////////////////////////////////////////////////////// finest Level - RCP Finest = H->GetLevel(); - Finest->setDefaultVerbLevel(Teuchos::VERB_HIGH); - Finest->Set("A", Teuchos::rcp_dynamic_cast(bOp)); - - ////////////////////////////////////////// prepare null space for A11 - RCP nullspace11 = MultiVectorFactory::Build(xstridedvelmap, 2); // this is a 2D standard null space - - for (int i = 0; i < nDofsPerNode - 1; ++i) { - Teuchos::ArrayRCP nsValues = nullspace11->getDataNonConst(i); - int numBlocks = nsValues.size() / (nDofsPerNode - 1); - for (int j = 0; j < numBlocks; ++j) { - nsValues[j * (nDofsPerNode - 1) + i] = 1.0; - } - } - - Finest->Set("Nullspace1", nullspace11); - - ////////////////////////////////////////// prepare null space for A22 - RCP nullspace22 = MultiVectorFactory::Build(xstridedpremap, 1); // this is a 2D standard null space - Teuchos::ArrayRCP nsValues22 = nullspace22->getDataNonConst(0); - for (int j = 0; j < nsValues22.size(); ++j) { - nsValues22[j] = 1.0; - } - - Finest->Set("Nullspace2", nullspace22); - - /////////////////////////////////////////// define rebalanced block AC factory - // This is the main factory for "A" and defines the input for - // - the SubBlockAFactory objects - // - the rebalanced block Ac factory - RCP RebalancedAcFact = rcp(new RebalanceBlockAcFactory()); - - /////////////////////////////////////////// define non-rebalanced blocked transfer ops - RCP PFact = rcp(new BlockedPFactory()); // use row map index base from bOp - RCP RFact = rcp(new GenericRFactory()); - RFact->SetFactory("P", PFact); - - // non-rebalanced block coarse matrix factory - // output is non-rebalanced coarse block matrix Ac - // used as input for rebalanced block coarse factory RebalancedAcFact - RCP AcFact = rcp(new BlockedRAPFactory()); - AcFact->SetFactory("A", MueLu::NoFactory::getRCP()); - AcFact->SetFactory("P", PFact); // use non-rebalanced block prolongator as input - AcFact->SetFactory("R", RFact); // use non-rebalanced block restrictor as input - - // Repartitioning (decides how many partitions are built) - RCP RepartitionHeuristicFact = rcp(new RepartitionHeuristicFactory()); - { - Teuchos::ParameterList paramList; - paramList.set("repartition: min rows per proc", 200); - paramList.set("repartition: max imbalance", 1.3); - if (rebalanceBlocks == 1) - paramList.set("repartition: start level", 1); - else - paramList.set("repartition: start level", 10); // supress rebalancing - RepartitionHeuristicFact->SetParameterList(paramList); - } - RepartitionHeuristicFact->SetFactory("A", AcFact); - - // define matrix sub-blocks of possibly rebalanced block matrix A - // These are used as input for - // - the sub blocks of the transfer operators - RCP A11Fact = Teuchos::rcp(new SubBlockAFactory()); - A11Fact->SetFactory("A", MueLu::NoFactory::getRCP()); - A11Fact->SetParameter("block row", Teuchos::ParameterEntry(0)); - A11Fact->SetParameter("block col", Teuchos::ParameterEntry(0)); - /*A11Fact->SetParameter("Range map: Striding info",Teuchos::ParameterEntry(std::string("{ 2 1 }"))); - A11Fact->SetParameter("Range map: Strided block id",Teuchos::ParameterEntry(0)); - A11Fact->SetParameter("Domain map: Striding info",Teuchos::ParameterEntry(std::string("{ 2 1 }"))); - A11Fact->SetParameter("Domain map: Strided block id",Teuchos::ParameterEntry(0));*/ - - RCP A22Fact = Teuchos::rcp(new SubBlockAFactory()); - A22Fact->SetFactory("A", MueLu::NoFactory::getRCP()); - A22Fact->SetParameter("block row", Teuchos::ParameterEntry(1)); - A22Fact->SetParameter("block col", Teuchos::ParameterEntry(1)); - /*A22Fact->SetParameter("Range map: Striding info",Teuchos::ParameterEntry(std::string("{ 2 1 }"))); - A22Fact->SetParameter("Range map: Strided block id",Teuchos::ParameterEntry(1)); - A22Fact->SetParameter("Domain map: Striding info",Teuchos::ParameterEntry(std::string("{ 2 1 }"))); - A22Fact->SetParameter("Domain map: Strided block id",Teuchos::ParameterEntry(1));*/ - - /////////////////////////////////////////// define rebalancing factories - // define sub blocks of the coarse non-rebalanced block matrix Ac - // input is the block operator generated by AcFact - RCP rebA11Fact = Teuchos::rcp(new SubBlockAFactory()); - rebA11Fact->SetFactory("A", AcFact); - rebA11Fact->SetParameter("block row", Teuchos::ParameterEntry(0)); - rebA11Fact->SetParameter("block col", Teuchos::ParameterEntry(0)); - rebA11Fact->SetParameter("Range map: Striding info", Teuchos::ParameterEntry(std::string("{ 2, 1 }"))); - rebA11Fact->SetParameter("Range map: Strided block id", Teuchos::ParameterEntry(0)); - rebA11Fact->SetParameter("Domain map: Striding info", Teuchos::ParameterEntry(std::string("{ 2, 1 }"))); - rebA11Fact->SetParameter("Domain map: Strided block id", Teuchos::ParameterEntry(0)); - - RCP rebA22Fact = Teuchos::rcp(new SubBlockAFactory()); - rebA22Fact->SetFactory("A", AcFact); - rebA22Fact->SetParameter("block row", Teuchos::ParameterEntry(1)); - rebA22Fact->SetParameter("block col", Teuchos::ParameterEntry(1)); - rebA22Fact->SetParameter("Range map: Striding info", Teuchos::ParameterEntry(std::string("{ 2, 1 }"))); - rebA22Fact->SetParameter("Range map: Strided block id", Teuchos::ParameterEntry(1)); - rebA22Fact->SetParameter("Domain map: Striding info", Teuchos::ParameterEntry(std::string("{ 2, 1 }"))); - rebA22Fact->SetParameter("Domain map: Strided block id", Teuchos::ParameterEntry(1)); - - // define rebalancing factory for coarse block matrix A(1,1) - RCP rebAmalgFact11 = rcp(new AmalgamationFactory()); - rebAmalgFact11->SetFactory("A", rebA11Fact); - rebAmalgFact11->setDefaultVerbLevel(Teuchos::VERB_EXTREME); - - RCP > isoInterface1 = rcp(new MueLu::IsorropiaInterface()); - isoInterface1->SetFactory("A", rebA11Fact); - isoInterface1->SetFactory("number of partitions", RepartitionHeuristicFact); - isoInterface1->SetFactory("UnAmalgamationInfo", rebAmalgFact11); - - RCP > repInterface1 = rcp(new MueLu::RepartitionInterface()); - repInterface1->SetFactory("A", rebA11Fact); - repInterface1->SetFactory("number of partitions", RepartitionHeuristicFact); - repInterface1->SetFactory("AmalgamatedPartition", isoInterface1); - - // Repartitioning (creates "Importer" from "Partition") - RCP RepartitionFact = rcp(new RepartitionFactory()); - RepartitionFact->SetFactory("A", rebA11Fact); - RepartitionFact->SetFactory("number of partitions", RepartitionHeuristicFact); - RepartitionFact->SetFactory("Partition", repInterface1); - RepartitionFact->SetParameter("repartition: print partition distribution", Teuchos::ParameterEntry(true)); - RepartitionFact->SetParameter("repartition: remap parts", Teuchos::ParameterEntry(true)); - - // define rebalancing factory for coarse block matrix A(1,1) - RCP rebAmalgFact22 = rcp(new AmalgamationFactory()); - rebAmalgFact22->SetFactory("A", rebA22Fact); - rebAmalgFact22->setDefaultVerbLevel(Teuchos::VERB_EXTREME); - - RCP > repInterface2 = rcp(new MueLu::CloneRepartitionInterface()); - repInterface2->SetFactory("A", rebA22Fact); - repInterface2->SetFactory("number of partitions", RepartitionHeuristicFact); - repInterface2->SetFactory("Partition", repInterface1); - - // second repartition factory - RCP RepartitionFact2 = rcp(new RepartitionFactory()); - RepartitionFact2->SetFactory("A", rebA22Fact); - RepartitionFact2->SetFactory("number of partitions", RepartitionHeuristicFact); - RepartitionFact2->SetFactory("Partition", repInterface2); // this is not valid - RepartitionFact2->SetParameter("repartition: print partition distribution", Teuchos::ParameterEntry(true)); - RepartitionFact2->SetParameter("repartition: remap parts", Teuchos::ParameterEntry(false)); /* do not remap! */ - - ////////////////////////////////////////// build non-rebalanced matrix blocks - // build factories for transfer operator P(1,1) and R(1,1) - RCP amalgFact11 = rcp(new AmalgamationFactory()); - amalgFact11->SetFactory("A", A11Fact); - amalgFact11->setDefaultVerbLevel(Teuchos::VERB_EXTREME); - - RCP dropFact11 = rcp(new CoalesceDropFactory()); - dropFact11->SetFactory("A", A11Fact); - dropFact11->SetFactory("UnAmalgamationInfo", amalgFact11); - dropFact11->setDefaultVerbLevel(Teuchos::VERB_EXTREME); - - RCP UncoupledAggFact11 = rcp(new UncoupledAggregationFactory()); - UncoupledAggFact11->SetFactory("Graph", dropFact11); - UncoupledAggFact11->SetMinNodesPerAggregate(9); - UncoupledAggFact11->SetMaxNeighAlreadySelected(2); - UncoupledAggFact11->SetOrdering("natural"); - - RCP coarseMapFact11 = Teuchos::rcp(new CoarseMapFactory()); - coarseMapFact11->setStridingData(stridingInfo); - coarseMapFact11->setStridedBlockId(0); - - RCP P11Fact = rcp(new TentativePFactory()); - RCP R11Fact = rcp(new TransPFactory()); - - Teuchos::RCP nspFact11 = Teuchos::rcp(new NullspaceFactory("Nullspace1")); - nspFact11->SetFactory("Nullspace1", P11Fact); // pick "Nullspace1" from Finest level - - //////////////////////////////// define factory manager for (1,1) block - RCP M11 = rcp(new FactoryManager()); - M11->SetFactory("A", A11Fact); // rebalanced fine-level block operator - M11->SetFactory("P", P11Fact); // non-rebalanced transfer operator block P(1,1) - M11->SetFactory("R", R11Fact); // non-rebalanced transfer operator block R(1,1) - M11->SetFactory("Aggregates", UncoupledAggFact11); - M11->SetFactory("Graph", dropFact11); - M11->SetFactory("DofsPerNode", dropFact11); - M11->SetFactory("UnAmalgamationInfo", amalgFact11); - M11->SetFactory("Nullspace", nspFact11); // TODO check me? - M11->SetFactory("CoarseMap", coarseMapFact11); - M11->SetIgnoreUserData(true); // always use data from factories defined in factory manager - - ////////////////////////////////////////// build non-rebalanced matrix blocks - // build factories for transfer operator P(2,2) and R(2,2) - RCP amalgFact22 = rcp(new AmalgamationFactory()); - RCP P22Fact = rcp(new TentativePFactory()); - RCP R22Fact = rcp(new TransPFactory()); - - // connect null space and tentative PFactory - Teuchos::RCP nspFact22 = Teuchos::rcp(new NullspaceFactory("Nullspace2")); - nspFact22->SetFactory("Nullspace2", P22Fact); // define null space generated by P22Fact as null space for coarse level (non-rebalanced) - - RCP coarseMapFact22 = Teuchos::rcp(new CoarseMapFactory()); - coarseMapFact22->setStridingData(stridingInfo); - coarseMapFact22->setStridedBlockId(1); - - //////////////////////////////// define factory manager for (2,2) block - RCP M22 = rcp(new FactoryManager()); - M22->SetFactory("A", A22Fact); // rebalanced fine-level block operator - M22->SetFactory("P", P22Fact); // non-rebalanced transfer operator P(2,2) - M22->SetFactory("R", R22Fact); // non-rebalanced transfer operator R(2,2) - M22->SetFactory("Aggregates", UncoupledAggFact11); // aggregates from block (1,1) - M22->SetFactory("Nullspace", nspFact22); - M22->SetFactory("UnAmalgamationInfo", amalgFact22); - M22->SetFactory("Ptent", P22Fact); - M22->SetFactory("CoarseMap", coarseMapFact22); - M22->SetIgnoreUserData(true); - - /////////////////////////////////////////// define rebalanced blocked transfer ops - //////////////////////////////// define factory manager for (1,1) block - RCP rebM11 = rcp(new FactoryManager()); - rebM11->SetFactory("A", AcFact); // important: must be a 2x2 block A Factory - rebM11->SetFactory("Importer", RepartitionFact); - rebM11->SetFactory("number of partitions", RepartitionHeuristicFact); - rebM11->SetFactory("Nullspace", nspFact11); - // rebM11->SetIgnoreUserData(true); - - RCP rebM22 = rcp(new FactoryManager()); - rebM22->SetFactory("A", AcFact); // important: must be a 2x2 block A Factory - rebM22->SetFactory("Importer", RepartitionFact2); // use dummy repartitioning factory - rebM22->SetFactory("number of partitions", RepartitionHeuristicFact); - rebM22->SetFactory("Nullspace", nspFact22); - - // Reordering of the transfer operators - RCP RebalancedBlockPFact = rcp(new RebalanceBlockInterpolationFactory()); - RebalancedBlockPFact->SetFactory("P", PFact); // use non-rebalanced block P operator as input - RebalancedBlockPFact->AddFactoryManager(rebM11); - RebalancedBlockPFact->AddFactoryManager(rebM22); - - RCP RebalancedBlockRFact = rcp(new RebalanceBlockRestrictionFactory()); - // RebalancedBlockRFact->SetParameter("type", Teuchos::ParameterEntry(std::string("Restriction"))); - RebalancedBlockRFact->SetFactory("R", RFact); // non-rebalanced block P operator - RebalancedBlockRFact->SetParameter("repartition: use subcommunicators", Teuchos::ParameterEntry(true)); - RebalancedBlockRFact->AddFactoryManager(rebM11); - RebalancedBlockRFact->AddFactoryManager(rebM22); - - ///////////////////////////////////////// initialize non-rebalanced block transfer operators - // output are the non-rebalanced block transfer operators used as input in AcFact to build - // the non-rebalanced coarse level block matrix Ac - PFact->AddFactoryManager(M11); // use non-rebalanced information from sub block factory manager M11 - PFact->AddFactoryManager(M22); // use non-rebalanced information from sub block factory manager M22 - - ///////////////////////////////////////// initialize rebalanced coarse block AC factory - RebalancedAcFact->SetFactory("A", AcFact); // use non-rebalanced block operator as input - RebalancedAcFact->SetParameter("repartition: use subcommunicators", Teuchos::ParameterEntry(true)); - RebalancedAcFact->AddFactoryManager(rebM11); - RebalancedAcFact->AddFactoryManager(rebM22); - - ////////////////////////////////////////////////////////////////////// - // Smoothers - - // Another factory manager for braes sarazin smoother - // Schur Complement Factory, using the factory to generate AcFact - SC omega = 1.3; - RCP SFact = Teuchos::rcp(new SchurComplementFactory()); - SFact->SetParameter("omega", Teuchos::ParameterEntry(omega)); - SFact->SetFactory("A", MueLu::NoFactory::getRCP()); // this finally be the rebalanced block operator! - - // Smoother Factory, using SFact as a factory for A - std::string ifpackSCType; - Teuchos::ParameterList ifpackSCList; - ifpackSCList.set("relaxation: sweeps", (LocalOrdinal)3); - ifpackSCList.set("relaxation: damping factor", (Scalar)1.0); - ifpackSCType = "RELAXATION"; - ifpackSCList.set("relaxation: type", "Gauss-Seidel"); - RCP smoProtoSC = rcp(new TrilinosSmoother(ifpackSCType, ifpackSCList, 0)); - smoProtoSC->SetFactory("A", SFact); - RCP SmooSCFact = rcp(new SmootherFactory(smoProtoSC)); - - RCP smootherPrototype = rcp(new BraessSarazinSmoother()); - smootherPrototype->SetParameter("Sweeps", Teuchos::ParameterEntry(3)); - smootherPrototype->SetParameter("Damping factor", Teuchos::ParameterEntry(omega)); - smootherPrototype->SetFactory("A", MueLu::NoFactory::getRCP()); - RCP smootherFact = rcp(new SmootherFactory(smootherPrototype)); - - RCP coarseSolverPrototype = rcp(new BraessSarazinSmoother()); - coarseSolverPrototype->SetParameter("Sweeps", Teuchos::ParameterEntry(3)); - coarseSolverPrototype->SetParameter("Damping factor", Teuchos::ParameterEntry(omega)); - coarseSolverPrototype->SetFactory("A", MueLu::NoFactory::getRCP()); - RCP coarseSolverFact = rcp(new SmootherFactory(coarseSolverPrototype, Teuchos::null)); - - RCP MB = rcp(new FactoryManager()); - MB->SetFactory("A", SFact); - MB->SetFactory("Smoother", SmooSCFact); - MB->SetIgnoreUserData(true); // always use data from factories defined in factory manager - smootherPrototype->AddFactoryManager(MB, 0); - coarseSolverPrototype->AddFactoryManager(MB, 0); - - ////////////////////////////////////////// define main factory manager - FactoryManager M; - M.SetFactory("A", RebalancedAcFact); // rebalance block AC Factory using importer - M.SetFactory("P", RebalancedBlockPFact); // rebalance prolongator using non-balanced Ac - M.SetFactory("R", RebalancedBlockRFact); // rebalance restrictor and null space using non-balanced Ac - M.SetFactory("Smoother", smootherFact); - M.SetFactory("PreSmoother", smootherFact); - M.SetFactory("PostSmoother", smootherFact); - M.SetFactory("CoarseSolver", coarseSolverFact); - - H->Setup(M, 0, maxLevels); - - /**out << std::endl; - *out << "print content of multigrid levels:" << std::endl; - - Finest->print(*out); - - RCP coarseLevel = H->GetLevel(1); - coarseLevel->print(*out); - - RCP coarseLevel2 = H->GetLevel(2); - coarseLevel2->print(*out);*/ - - RCP xLsg = MultiVectorFactory::Build(xstridedfullmap, 1); - - // Use AMG directly as an iterative method -#if 0 - { - xLsg->putScalar( (SC) 0.0); - - // Epetra_Vector -> Xpetra::Vector - RCP xRhs = Teuchos::rcp(new Xpetra::EpetraVector(epv)); - - // calculate initial (absolute) residual - Teuchos::Array::magnitudeType> norms(1); - xRhs->norm2(norms); - *out << "||x_0|| = " << norms[0] << std::endl; - - // apply ten multigrid iterations - H->Iterate(*xRhs,*xLsg,100); - - - // calculate and print residual - RCP xTmp = MultiVectorFactory::Build(xstridedfullmap,1); - bOp->apply(*xLsg,*xTmp,Teuchos::NO_TRANS,(SC)1.0,(SC)0.0); - xRhs->update((SC)-1.0,*xTmp,(SC)1.0); - xRhs->norm2(norms); - *out << "||x|| = " << norms[0] << std::endl; - } -#endif - - // - // Solve Ax = b using AMG as a preconditioner in AztecOO - // - { - RCP X = rcp(new Epetra_Vector(epv->Map())); - X->PutScalar(0.0); - Epetra_LinearProblem epetraProblem(epA.get(), X.get(), epv.get()); - - AztecOO aztecSolver(epetraProblem); - aztecSolver.SetAztecOption(AZ_solver, AZ_gmres); - - MueLu::EpetraOperator aztecPrec(H); - aztecSolver.SetPrecOperator(&aztecPrec); - - int maxIts = 50; - double tol = 1e-8; - - aztecSolver.Iterate(maxIts, tol); - } - -#endif // end ifndef HAVE_LONG_LONG_INT -#endif // #if defined(HAVE_MPI) && defined(HAVE_MUELU_ZOLTAN) && defined(HAVE_MUELU_ISORROPIA) - success = true; - } - TEUCHOS_STANDARD_CATCH_STATEMENTS(verbose, std::cerr, success); - - return (success ? EXIT_SUCCESS : EXIT_FAILURE); -#else - std::cout << "Epetra (and/or EpetraExt) are not available. Skip test." << std::endl; - return EXIT_SUCCESS; -#endif -} diff --git a/packages/muelu/test/navierstokes/Navier2DBlocked_xml.cpp b/packages/muelu/test/navierstokes/Navier2DBlocked_xml.cpp deleted file mode 100644 index 6809ecd02b01..000000000000 --- a/packages/muelu/test/navierstokes/Navier2DBlocked_xml.cpp +++ /dev/null @@ -1,308 +0,0 @@ -// @HEADER -// ***************************************************************************** -// MueLu: A package for multigrid based preconditioning -// -// Copyright 2012 NTESS and the MueLu contributors. -// SPDX-License-Identifier: BSD-3-Clause -// ***************************************************************************** -// @HEADER - -/* - * Navier2D_epetra.cpp - * - * Created on: Mar 26, 2011 - * Author: wiesner - */ - -#include -#include -#include - -// Teuchos -#include -#include -#include -#include -#include -#include -#include - -// Epetra -#include -#include -#include - -// Xpetra -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -// MueLu -#include "MueLu_ConfigDefs.hpp" -#include "MueLu_Memory.hpp" -#include "MueLu_Hierarchy.hpp" -#include "MueLu_UncoupledAggregationFactory.hpp" -#include "MueLu_PgPFactory.hpp" -#include "MueLu_GenericRFactory.hpp" -#include "MueLu_SaPFactory.hpp" -#include "MueLu_TransPFactory.hpp" -#include "MueLu_BlockedRAPFactory.hpp" -#include "MueLu_TrilinosSmoother.hpp" -#include "MueLu_Utilities.hpp" -#include "MueLu_Exceptions.hpp" -#include "MueLu_Aggregates.hpp" -#include "MueLu_CoalesceDropFactory.hpp" -#include "MueLu_PreDropFunctionConstVal.hpp" -#include "MueLu_NullspaceFactory.hpp" -#include "MueLu_TentativePFactory.hpp" -#include "MueLu_SmootherFactory.hpp" -#include "MueLu_DirectSolver.hpp" -#include "MueLu_EpetraOperator.hpp" -#include "MueLu_SubBlockAFactory.hpp" -#include "MueLu_BlockedPFactory.hpp" -#include "MueLu_BlockedGaussSeidelSmoother.hpp" -#include "MueLu_CoarseMapFactory.hpp" -#include "MueLu_AmalgamationFactory.hpp" -#include - -#include -#include - -#include "Navier2D_Helpers.h" - -/*! - * 2d Navier Stokes example (for Epetra) - * - * using block matrices - */ - -int main(int argc, char* argv[]) { -#if defined(HAVE_MUELU_EPETRA) && defined(HAVE_MUELU_EPETRAEXT) - typedef double Scalar; - typedef int LocalOrdinal; - typedef int GlobalOrdinal; - typedef LocalOrdinal LO; - typedef GlobalOrdinal GO; - typedef Xpetra::EpetraNode Node; -#include "MueLu_UseShortNames.hpp" - - using Teuchos::RCP; - using Teuchos::rcp; - using namespace MueLuTests; - using namespace Teuchos; - - oblackholestream blackhole; - GlobalMPISession mpiSession(&argc, &argv, &blackhole); - - bool success = false; - bool verbose = true; - try { - // default parameters - std::string xmlFile = "myXML.xml"; - - // Note: use --help to list available options. - CommandLineProcessor clp(false); - clp.setOption("xml", &xmlFile, "xml file with solver parameters for a 2x2 blocked NS example"); - - switch (clp.parse(argc, argv)) { - case Teuchos::CommandLineProcessor::PARSE_HELP_PRINTED: return EXIT_SUCCESS; - case Teuchos::CommandLineProcessor::PARSE_ERROR: - case Teuchos::CommandLineProcessor::PARSE_UNRECOGNIZED_OPTION: return EXIT_FAILURE; - case Teuchos::CommandLineProcessor::PARSE_SUCCESSFUL: break; - } - - RCP > comm = DefaultComm::getComm(); - RCP out = fancyOStream(rcpFromRef(std::cout)); - out->setOutputToRootOnly(0); - *out << MueLu::MemUtils::PrintMemoryUsage() << std::endl; - - // Timing - Time myTime("global"); - TimeMonitor MM(myTime); - - GO maxCoarseSize = 1; // FIXME clp doesn't like long long int - - int globalNumDofs = 1500; // used for the maps - int nDofsPerNode = 3; // used for generating the fine level null-space - - // build strided maps - // striding information: 2 velocity dofs and 1 pressure dof = 3 dofs per node - std::vector stridingInfo; - stridingInfo.push_back(2); - stridingInfo.push_back(1); - - /////////////////////////////////////// build strided maps - // build strided maps: - // xstridedfullmap: full map (velocity and pressure dof gids), continous - // xstridedvelmap: only velocity dof gid maps (i.e. 0,1,3,4,6,7...) - // xstridedpremap: only pressure dof gid maps (i.e. 2,5,8,...) - Xpetra::UnderlyingLib lib = Xpetra::UseEpetra; - RCP xstridedfullmap = StridedMapFactory::Build(lib, globalNumDofs, 0, stridingInfo, comm, -1); - RCP xstridedvelmap = StridedMapFactory::Build(xstridedfullmap, 0); - RCP xstridedpremap = StridedMapFactory::Build(xstridedfullmap, 1); - - /////////////////////////////////////// transform Xpetra::Map objects to Epetra - // this is needed for AztecOO - const RCP fullmap = rcpFromRef(Xpetra::toEpetra(*xstridedfullmap)); - RCP velmap = rcpFromRef(Xpetra::toEpetra(*xstridedvelmap)); - RCP premap = rcpFromRef(Xpetra::toEpetra(*xstridedpremap)); - - /////////////////////////////////////// import problem matrix and RHS from files (-> Epetra) - - // read in problem - Epetra_CrsMatrix* ptrA = 0; - Epetra_Vector* ptrf = 0; - Epetra_MultiVector* ptrNS = 0; - - *out << "Reading matrix market file" << std::endl; - EpetraExt::MatrixMarketFileToCrsMatrix("A_re1000_5932.txt", *fullmap, *fullmap, *fullmap, ptrA); - EpetraExt::MatrixMarketFileToVector("b_re1000_5932.txt", *fullmap, ptrf); - RCP epA = rcp(ptrA); - RCP epv = rcp(ptrf); - RCP epNS = rcp(ptrNS); - - /////////////////////////////////////// split system into 2x2 block system - - *out << "Split matrix into 2x2 block matrix" << std::endl; - - // split fullA into A11,..., A22 - RCP A11; - RCP A12; - RCP A21; - RCP A22; - - if (SplitMatrix2x2(epA, *velmap, *premap, A11, A12, A21, A22) == false) - *out << "Problem with splitting matrix" << std::endl; - - /////////////////////////////////////// transform Epetra objects to Xpetra (needed for MueLu) - - // build Xpetra objects from Epetra_CrsMatrix objects - RCP > xA11 = rcp(new Xpetra::EpetraCrsMatrixT(A11)); - RCP > xA12 = rcp(new Xpetra::EpetraCrsMatrixT(A12)); - RCP > xA21 = rcp(new Xpetra::EpetraCrsMatrixT(A21)); - RCP > xA22 = rcp(new Xpetra::EpetraCrsMatrixT(A22)); - - /////////////////////////////////////// generate MapExtractor object - - std::vector > > xmaps; - xmaps.push_back(xstridedvelmap); - xmaps.push_back(xstridedpremap); - - RCP > map_extractor = Xpetra::MapExtractorFactory::Build(xstridedfullmap->getMap(), xmaps); - - /////////////////////////////////////// build blocked transfer operator - // using the map extractor - RCP > bOp = rcp(new Xpetra::BlockedCrsMatrix(map_extractor, map_extractor, 10)); - bOp->setMatrix(0, 0, Teuchos::rcp(new Xpetra::CrsMatrixWrap(xA11))); - bOp->setMatrix(0, 1, Teuchos::rcp(new Xpetra::CrsMatrixWrap(xA12))); - bOp->setMatrix(1, 0, Teuchos::rcp(new Xpetra::CrsMatrixWrap(xA21))); - bOp->setMatrix(1, 1, Teuchos::rcp(new Xpetra::CrsMatrixWrap(xA22))); - - bOp->fillComplete(); - - //////////////////////////////////////// prepare setup - ParameterListInterpreter mueLuFactory(xmlFile, *comm); - - RCP H = mueLuFactory.CreateHierarchy(); - H->setDefaultVerbLevel(VERB_HIGH); - H->SetMaxCoarseSize(maxCoarseSize); - - RCP Finest = H->GetLevel(0); - Finest->setDefaultVerbLevel(VERB_HIGH); - Finest->Set("A", rcp_dynamic_cast(bOp)); - - ////////////////////////////////////////// prepare null space for A11 - RCP nullspace11 = MultiVectorFactory::Build(xstridedvelmap, 2); // this is a 2D standard null space - - for (int i = 0; i < nDofsPerNode - 1; ++i) { - ArrayRCP nsValues = nullspace11->getDataNonConst(i); - int numBlocks = nsValues.size() / (nDofsPerNode - 1); - for (int j = 0; j < numBlocks; ++j) { - nsValues[j * (nDofsPerNode - 1) + i] = 1.0; - } - } - - Finest->Set("Nullspace1", nullspace11); - - ////////////////////////////////////////// prepare null space for A22 - RCP nullspace22 = MultiVectorFactory::Build(xstridedpremap, 1); // this is a 2D standard null space - ArrayRCP nsValues22 = nullspace22->getDataNonConst(0); - for (int j = 0; j < nsValues22.size(); ++j) { - nsValues22[j] = 1.0; - } - - Finest->Set("Nullspace2", nullspace22); - - /////////////////////////////////// BEGIN setup - - mueLuFactory.SetupHierarchy(*H); - - ///////////////////////////////////// END setup - - *out << std::endl; - - RCP xLsg = MultiVectorFactory::Build(xstridedfullmap, 1); - - // Use AMG directly as an iterative method - { - xLsg->putScalar((SC)0.0); - - // Epetra_Vector -> Xpetra::Vector - RCP xRhs = rcp(new Xpetra::EpetraVectorT(epv)); - - // calculate initial (absolute) residual - Array::magnitudeType> norms(1); - xRhs->norm2(norms); - *out << "||x_0|| = " << norms[0] << std::endl; - - // apply ten multigrid iterations - H->Iterate(*xRhs, *xLsg, 100); - - // calculate and print residual - RCP xTmp = MultiVectorFactory::Build(xstridedfullmap, 1); - bOp->apply(*xLsg, *xTmp, NO_TRANS, (SC)1.0, (SC)0.0); - xRhs->update((SC)-1.0, *xTmp, (SC)1.0); - xRhs->norm2(norms); - *out << "||r|| = " << norms[0] << std::endl; - } - - // TODO: don't forget to add Aztec as prerequisite in CMakeLists.txt! - // - // Solve Ax = b using AMG as a preconditioner in AztecOO - // - { - RCP X = rcp(new Epetra_Vector(epv->Map())); - X->PutScalar(0.0); - Epetra_LinearProblem epetraProblem(epA.get(), X.get(), epv.get()); - - AztecOO aztecSolver(epetraProblem); - aztecSolver.SetAztecOption(AZ_solver, AZ_gmres); - - MueLu::EpetraOperator aztecPrec(H); - aztecSolver.SetPrecOperator(&aztecPrec); - - int maxIts = 50; - double tol = 1e-8; - - aztecSolver.Iterate(maxIts, tol); - } - - success = true; - } - TEUCHOS_STANDARD_CATCH_STATEMENTS(verbose, std::cerr, success); - - return (success ? EXIT_SUCCESS : EXIT_FAILURE); -#else - std::cout << "Epetra (and/or EpetraExt) are not available. Skip test." << std::endl; - return EXIT_SUCCESS; -#endif -} diff --git a/packages/muelu/test/navierstokes/Navier2D_Epetra.cpp b/packages/muelu/test/navierstokes/Navier2D_Epetra.cpp deleted file mode 100644 index aef993aabb82..000000000000 --- a/packages/muelu/test/navierstokes/Navier2D_Epetra.cpp +++ /dev/null @@ -1,443 +0,0 @@ -// @HEADER -// ***************************************************************************** -// MueLu: A package for multigrid based preconditioning -// -// Copyright 2012 NTESS and the MueLu contributors. -// SPDX-License-Identifier: BSD-3-Clause -// ***************************************************************************** -// @HEADER - -/* - * Navier2D_epetra.cpp - * - * Created on: Mar 26, 2011 - * Author: wiesner - */ - -#include -#include -#include - -// Teuchos -#include -#include -#include -#include -#include -#include - -// Epetra -#include -#include -#include - -// Xpetra -#include -#include -#include -#include -#include -#include - -// MueLu -#include "MueLu_ConfigDefs.hpp" -#include "MueLu_Memory.hpp" -#include "MueLu_Hierarchy.hpp" -#include "MueLu_AmalgamationFactory.hpp" -#include "MueLu_UncoupledAggregationFactory.hpp" -#include "MueLu_PgPFactory.hpp" -#include "MueLu_GenericRFactory.hpp" -#include "MueLu_SaPFactory.hpp" -#include "MueLu_TransPFactory.hpp" -#include "MueLu_RAPFactory.hpp" -#include "MueLu_TrilinosSmoother.hpp" -#include "MueLu_Utilities.hpp" -#include "MueLu_Exceptions.hpp" -#include "MueLu_Aggregates.hpp" -#include "MueLu_CoalesceDropFactory.hpp" -#include "MueLu_PreDropFunctionConstVal.hpp" -#include "MueLu_NullspaceFactory.hpp" -#include "MueLu_TentativePFactory.hpp" -#include "MueLu_SmootherFactory.hpp" -#include "MueLu_DirectSolver.hpp" -#include "MueLu_EpetraOperator.hpp" -#if defined(HAVE_MPI) && defined(HAVE_MUELU_ZOLTAN) && defined(HAVE_MUELU_ISORROPIA) -#include "MueLu_IsorropiaInterface.hpp" -#include "MueLu_RepartitionInterface.hpp" -#include "MueLu_RepartitionHeuristicFactory.hpp" -#include "MueLu_RepartitionFactory.hpp" -#include "MueLu_RebalanceTransferFactory.hpp" -#include "MueLu_RebalanceAcFactory.hpp" -#endif - -#include -#include - -/*! - * 2d Navier Stokes example (for Epetra) - * - */ - -int main(int argc, char* argv[]) { -#if defined(HAVE_MUELU_EPETRA) && defined(HAVE_MUELU_EPETRAEXT) - typedef double Scalar; - typedef int LocalOrdinal; - typedef int GlobalOrdinal; - typedef LocalOrdinal LO; - typedef GlobalOrdinal GO; - typedef Xpetra::EpetraNode Node; -#include "MueLu_UseShortNames.hpp" - - using Teuchos::RCP; - using Teuchos::rcp; - - Teuchos::oblackholestream blackhole; - Teuchos::GlobalMPISession mpiSession(&argc, &argv, &blackhole); - - bool success = false; - try { - RCP > comm = Teuchos::DefaultComm::getComm(); - RCP out = Teuchos::fancyOStream(Teuchos::rcpFromRef(std::cout)); - out->setOutputToRootOnly(0); - *out << MueLu::MemUtils::PrintMemoryUsage() << std::endl; - - // Timing - Teuchos::Time myTime("global"); - Teuchos::TimeMonitor m(myTime); - - // - // SET TEST PARAMETERS - // - // Note: use --help to list available options. - Teuchos::CommandLineProcessor clp(false); - - // - Levels - LO optMaxLevels = 4; - clp.setOption("maxLevels", &optMaxLevels, "maximum number of levels allowed"); - int optMaxCoarseSize = 1; - clp.setOption("maxCoarseSize", &optMaxCoarseSize, "maximum #dofs in coarse operator"); // FIXME clp doesn't like long long int - - // - Repartitioning -#if defined(HAVE_MPI) && defined(HAVE_MUELU_ZOLTAN) && defined(HAVE_MUELU_ISORROPIA) - int optRepartition = 1; - clp.setOption("repartition", &optRepartition, "enable repartitioning"); - LO optMinRowsPerProc = 50; - clp.setOption("minRowsPerProc", &optMinRowsPerProc, "min #rows allowable per proc before repartitioning occurs"); - double optNnzImbalance = 1.2; - clp.setOption("nnzImbalance", &optNnzImbalance, "max allowable nonzero imbalance before repartitioning occurs"); -#else - int optRepartition = 0; -#endif - - switch (clp.parse(argc, argv)) { - case Teuchos::CommandLineProcessor::PARSE_HELP_PRINTED: return EXIT_SUCCESS; - case Teuchos::CommandLineProcessor::PARSE_ERROR: - case Teuchos::CommandLineProcessor::PARSE_UNRECOGNIZED_OPTION: return EXIT_FAILURE; - case Teuchos::CommandLineProcessor::PARSE_SUCCESSFUL: break; - } - - ///////////////////////////////////////////// - // custom parameters - LO maxLevels = optMaxLevels; - - GO maxCoarseSize = optMaxCoarseSize; - std::string aggOrdering = "natural"; - int minPerAgg = 3; - int maxNbrAlreadySelected = 0; - - int globalNumDofs = 1500; - int nProcs = comm->getSize(); - int nDofsPerNode = 3; - - int nLocalDofs = (int)globalNumDofs / nProcs; - nLocalDofs = nLocalDofs - (nLocalDofs % nDofsPerNode); - int nCumulatedDofs = 0; - MueLu_sumAll(comm, nLocalDofs, nCumulatedDofs); - // Teuchos::reduceAll(*comm,Teuchos::REDUCE_SUM, 1, nLocalDofs, &nCumulatedDofs ); - - if (comm->getRank() == nProcs - 1) { - nLocalDofs += globalNumDofs - nCumulatedDofs; - } - - std::cout << "PROC: " << comm->getRank() << " numLocalDofs=" << nLocalDofs << std::endl; - - // read in problem - Epetra_Map emap(globalNumDofs, nLocalDofs, 0, *Xpetra::toEpetra(comm)); - Epetra_CrsMatrix* ptrA = 0; - Epetra_Vector* ptrf = 0; - Epetra_MultiVector* ptrNS = 0; - - std::cout << "Reading matrix market file" << std::endl; - EpetraExt::MatrixMarketFileToCrsMatrix("A_re1000_5932.txt", emap, emap, emap, ptrA); - EpetraExt::MatrixMarketFileToVector("b_re1000_5932.txt", emap, ptrf); - RCP epA = Teuchos::rcp(ptrA); - RCP epv = Teuchos::rcp(ptrf); - RCP epNS = Teuchos::rcp(ptrNS); - - // Epetra_CrsMatrix -> Xpetra::Matrix - RCP exA = Teuchos::rcp(new Xpetra::EpetraCrsMatrixT(epA)); - RCP crsOp = Teuchos::rcp(new CrsMatrixWrap(exA)); - RCP Op = Teuchos::rcp_dynamic_cast(crsOp); - - Op->SetFixedBlockSize(nDofsPerNode); // 2 velocity dofs and 1 pressure dof per node. - - // Epetra_Vector -> Xpetra::Vector - RCP xRhs = Teuchos::rcp(new Xpetra::EpetraVectorT(epv)); - - RCP xNS = Teuchos::rcp(new Xpetra::EpetraMultiVectorT(epNS)); - - // Epetra_Map -> Xpetra::Map - const RCP map = Xpetra::toXpetra(emap); - - RCP H = rcp(new Hierarchy()); - H->setDefaultVerbLevel(Teuchos::VERB_HIGH); - H->SetMaxCoarseSize(maxCoarseSize); - - // build finest Level - RCP Finest = H->GetLevel(); - Finest->setDefaultVerbLevel(Teuchos::VERB_HIGH); - Finest->Set("A", Op); - // Finest->Set("Nullspace",xNS); - - if (optRepartition == 1) { - // create null space - - RCP nullspace; - // determine numPDEs - LocalOrdinal numPDEs = 1; - if (Op->IsView("stridedMaps") == true) { - Xpetra::viewLabel_t oldView = Op->SwitchToView("stridedMaps"); // note: "stridedMaps are always non-overlapping (correspond to range and domain maps!) - // TEUCHOS_TEST_FOR_EXCEPTION(Teuchos::rcp_dynamic_cast(Op->getRowMap()) == Teuchos::null, Exceptions::BadCast, "cast to strided row map failed."); - numPDEs = Teuchos::rcp_dynamic_cast(Op->getRowMap())->getFixedBlockSize(); - oldView = Op->SwitchToView(oldView); - } - - // GetOStream(Runtime1, 0) << "Generating canonical nullspace: dimension = " << numPDEs << std::endl; - nullspace = MultiVectorFactory::Build(Op->getDomainMap(), numPDEs); - - for (int i = 0; i < numPDEs; ++i) { - Teuchos::ArrayRCP nsValues = nullspace->getDataNonConst(i); - int numBlocks = nsValues.size() / numPDEs; - for (int j = 0; j < numBlocks; ++j) { - nsValues[j * numPDEs + i] = 1.0; - } - } - Finest->Set("Nullspace", nullspace); - } - - RCP dropFact = rcp(new CoalesceDropFactory()); - dropFact->SetParameter("lightweight wrap", Teuchos::ParameterEntry(false)); - dropFact->SetVerbLevel(MueLu::Extreme); - - // RCP predrop = rcp(new PreDropFunctionConstVal(0.00001)); - // dropFact->SetPreDropFunction(predrop); - RCP UncoupledAggFact = rcp(new UncoupledAggregationFactory()); - UncoupledAggFact->SetFactory("Graph", dropFact); - *out << "========================= Aggregate option summary =========================" << std::endl; - *out << "min DOFs per aggregate : " << minPerAgg << std::endl; - *out << "min # of root nbrs already aggregated : " << maxNbrAlreadySelected << std::endl; - UncoupledAggFact->SetMinNodesPerAggregate(minPerAgg); // TODO should increase if run anything other than 1D - UncoupledAggFact->SetMaxNeighAlreadySelected(maxNbrAlreadySelected); - std::transform(aggOrdering.begin(), aggOrdering.end(), aggOrdering.begin(), ::tolower); - if (aggOrdering == "natural" || aggOrdering == "random" || aggOrdering == "graph") { - *out << "aggregate ordering : " << aggOrdering << std::endl; - UncoupledAggFact->SetOrdering(aggOrdering); - } else { - std::string msg = - "main: bad aggregation option " - "" + - aggOrdering + - "" - "."; - throw(MueLu::Exceptions::RuntimeError(msg)); - } - *out << "=============================================================================" << std::endl; - - // build non-rebalanced transfer operators - RCP Pfact = rcp(new PgPFactory()); - RCP Rfact = rcp(new GenericRFactory()); - // RCP Pfact = rcp( new SaPFactory() ); - // RCP Rfact = rcp( new TransPFactory() ); - RCP Acfact = rcp(new RAPFactory()); - Acfact->setVerbLevel(Teuchos::VERB_HIGH); - - // build level smoothers - RCP smooProto; - std::string ifpackType; - Teuchos::ParameterList ifpackList; - ifpackList.set("relaxation: sweeps", (LO)3); - ifpackList.set("relaxation: damping factor", (SC)0.6); // 0.7 - ifpackType = "RELAXATION"; - ifpackList.set("relaxation: type", "Gauss-Seidel"); - - smooProto = Teuchos::rcp(new TrilinosSmoother(ifpackType, ifpackList)); - RCP SmooFact; - if (maxLevels > 1) - SmooFact = rcp(new SmootherFactory(smooProto)); - - // create coarsest smoother - RCP coarsestSmooProto; - std::string type = ""; - Teuchos::ParameterList coarsestSmooList; -#if defined(HAVE_AMESOS_SUPERLU) - coarsestSmooProto = Teuchos::rcp(new DirectSolver("Superlu", coarsestSmooList)); -#else - coarsestSmooProto = Teuchos::rcp(new DirectSolver("Klu", coarsestSmooList)); -#endif - RCP coarsestSmooFact = rcp(new SmootherFactory(coarsestSmooProto, Teuchos::null)); - - FactoryManager M; - M.SetKokkosRefactor(false); - M.SetFactory("Graph", dropFact); - // M.SetFactory("UnAmalgamationInfo", amalgFact); - M.SetFactory("Aggregates", UncoupledAggFact); - M.SetFactory("Smoother", SmooFact); - M.SetFactory("CoarseSolver", coarsestSmooFact); - - if (optRepartition == 0) { - // no rebalancing - M.SetFactory("P", Pfact); - M.SetFactory("R", Rfact); - M.SetFactory("A", Acfact); - } else { -#if defined(HAVE_MPI) && defined(HAVE_MUELU_ZOLTAN) && defined(HAVE_MUELU_ISORROPIA) - // The Factory Manager will be configured to return the rebalanced versions of P, R, A by default. - // Everytime we want to use the non-rebalanced versions, we need to explicitly define the generating factory. - Rfact->SetFactory("P", Pfact); - // - Acfact->SetFactory("P", Pfact); - Acfact->SetFactory("R", Rfact); - - // define rebalancing factory for coarse block matrix A(1,1) - RCP rebAmalgFact = rcp(new AmalgamationFactory()); - rebAmalgFact->SetFactory("A", Acfact); - - // Repartitioning (decides how many partitions are built) - RCP RepartitionHeuristicFact = rcp(new RepartitionHeuristicFactory()); - { - Teuchos::ParameterList paramList; - paramList.set("repartition: min rows per proc", optMinRowsPerProc); - paramList.set("repartition: max imbalance", optNnzImbalance); - RepartitionHeuristicFact->SetParameterList(paramList); - } - RepartitionHeuristicFact->SetFactory("A", Acfact); - - // create amalgamated "Partition" - RCP > isoInterface = rcp(new MueLu::IsorropiaInterface()); - isoInterface->SetFactory("A", Acfact); - isoInterface->SetFactory("number of partitions", RepartitionHeuristicFact); - isoInterface->SetFactory("UnAmalgamationInfo", rebAmalgFact); - - // create "Partition" by unamalgamtion - RCP > repInterface = rcp(new MueLu::RepartitionInterface()); - repInterface->SetFactory("A", Acfact); - repInterface->SetFactory("number of partitions", RepartitionHeuristicFact); - repInterface->SetFactory("AmalgamatedPartition", isoInterface); - - // Repartitioning (creates "Importer" from "Partition") - RCP RepartitionFact = rcp(new RepartitionFactory()); - RepartitionFact->SetFactory("A", Acfact); - RepartitionFact->SetFactory("number of partitions", RepartitionHeuristicFact); - RepartitionFact->SetFactory("Partition", repInterface); - - // Reordering of the transfer operators - RCP RebalancedPFact = rcp(new RebalanceTransferFactory()); - RebalancedPFact->SetParameter("type", Teuchos::ParameterEntry(std::string("Interpolation"))); - RebalancedPFact->SetFactory("P", Pfact); - RebalancedPFact->SetFactory("Nullspace", M.GetFactory("Ptent")); - - RCP RebalancedRFact = rcp(new RebalanceTransferFactory()); - RebalancedRFact->SetParameter("type", Teuchos::ParameterEntry(std::string("Restriction"))); - RebalancedRFact->SetFactory("R", Rfact); - // RebalancedRFact->SetFactory("Coordinates", TransferCoordinatesFact); - - // Compute Ac from rebalanced P and R - RCP RebalancedAFact = rcp(new RebalanceAcFactory()); - RebalancedAFact->SetFactory("A", Acfact); - - // Configure FactoryManager - M.SetFactory("A", RebalancedAFact); - M.SetFactory("P", RebalancedPFact); - M.SetFactory("R", RebalancedRFact); - M.SetFactory("Nullspace", RebalancedPFact); - M.SetFactory("Importer", RepartitionFact); -#else - // no re-balancing available - M.SetFactory("P", Pfact); - M.SetFactory("R", Rfact); - M.SetFactory("A", Acfact); -#endif - } - - H->Setup(M, 0, maxLevels); - - { // some debug output - // print out content of levels - std::cout << "FINAL CONTENT of multigrid levels" << std::endl; - for (LO l = 0; l < H->GetNumLevels(); l++) { - RCP coarseLevel = H->GetLevel(l); - coarseLevel->print(*out); - } - std::cout << "END FINAL CONTENT of multigrid levels" << std::endl; - } // end debug output - - RCP xLsg = MultiVectorFactory::Build(map, 1); - - // Use AMG directly as an iterative method - { - xLsg->putScalar((SC)0.0); - - // calculate initial (absolute) residual - Teuchos::Array::magnitudeType> norms(1); - xRhs->norm2(norms); - *out << "||x_0|| = " << norms[0] << std::endl; - - // apply ten multigrid iterations - H->Iterate(*xRhs, *xLsg, 10); - - // calculate and print residual - RCP xTmp = MultiVectorFactory::Build(map, 1); - Op->apply(*xLsg, *xTmp, Teuchos::NO_TRANS, (SC)1.0, (SC)0.0); - xRhs->update((SC)-1.0, *xTmp, (SC)1.0); - xRhs->norm2(norms); - *out << "||x|| = " << norms[0] << std::endl; - } - - // - // Solve Ax = b using AMG as a preconditioner in AztecOO - // - { - RCP X = rcp(new Epetra_Vector(epv->Map())); - X->PutScalar(0.0); - Epetra_LinearProblem epetraProblem(epA.get(), X.get(), epv.get()); - - AztecOO aztecSolver(epetraProblem); - aztecSolver.SetAztecOption(AZ_solver, AZ_gmres); - -#if 0 - // TODO TAW: 4/8/2016 - // temporarely deactivate this due to runtime error on perseus: - // Cast from Xpetra::CrsMatrix to Xpetra::EpetraCrsMatrix failed - // if SERIAL=OFF, OPENMP=OFF, PTHREAD=ON, CUDA=OFF - // probably a fix necessary in EpetraOperator (which only supports - // SERIAL or OPENMP, but not PTHREAD of course). - MueLu::EpetraOperator aztecPrec(H); - aztecSolver.SetPrecOperator(&aztecPrec); - - int maxIts = 50; - double tol = 1e-8; - - aztecSolver.Iterate(maxIts, tol); -#endif - } - - success = true; - } - TEUCHOS_STANDARD_CATCH_STATEMENTS(true, std::cerr, success); - - return (success ? EXIT_SUCCESS : EXIT_FAILURE); -#else - std::cout << "Epetra (and/or EpetraExt) are not available. Skip test." << std::endl; - return EXIT_SUCCESS; -#endif -} diff --git a/packages/muelu/test/navierstokes/Navier2D_Helpers.cpp b/packages/muelu/test/navierstokes/Navier2D_Helpers.cpp deleted file mode 100644 index 44dc838411f5..000000000000 --- a/packages/muelu/test/navierstokes/Navier2D_Helpers.cpp +++ /dev/null @@ -1,11 +0,0 @@ -// @HEADER -// ***************************************************************************** -// MueLu: A package for multigrid based preconditioning -// -// Copyright 2012 NTESS and the MueLu contributors. -// SPDX-License-Identifier: BSD-3-Clause -// ***************************************************************************** -// @HEADER - -// the concrete implementation is in the .h file -#include "Navier2D_Helpers.h" diff --git a/packages/muelu/test/navierstokes/Navier2D_Helpers.h b/packages/muelu/test/navierstokes/Navier2D_Helpers.h deleted file mode 100644 index dc369b1b4ba7..000000000000 --- a/packages/muelu/test/navierstokes/Navier2D_Helpers.h +++ /dev/null @@ -1,245 +0,0 @@ -// @HEADER -// ***************************************************************************** -// MueLu: A package for multigrid based preconditioning -// -// Copyright 2012 NTESS and the MueLu contributors. -// SPDX-License-Identifier: BSD-3-Clause -// ***************************************************************************** -// @HEADER - - -namespace MueLuTests { - -// helper routines -bool SplitMatrix2x2(Teuchos::RCP A, - const Epetra_Map& A11rowmap, - const Epetra_Map& A22rowmap, - Teuchos::RCP& A11, - Teuchos::RCP& A12, - Teuchos::RCP& A21, - Teuchos::RCP& A22) -{ - if (A==Teuchos::null) { - std::cout << "ERROR: SplitMatrix2x2: A==null on entry" << std::endl; - return false; - } - - const Epetra_Comm& Comm = A->Comm(); - const Epetra_Map& A22map = A22rowmap; - const Epetra_Map& A11map = A11rowmap; - - //----------------------------- create a parallel redundant map of A22map - std::map a22gmap; - { - std::vector a22global(A22map.NumGlobalElements()); - int count=0; - for (int proc=0; proc a22gcindices(100); - std::vector a22values(100); - for (int i=0; iNumMyRows(); ++i) { - const int grid = A->GRID(i); - if (A22map.MyGID(grid)==false) - continue; - int numentries; - double* values; - int* cindices; - int err = A->ExtractMyRowView(i,numentries,values,cindices); - if (err) { - std::cout << "ERROR: SplitMatrix2x2: A->ExtractMyRowView returned " << err << std::endl; - return false; - } - - if (numentries>(int)a22gcindices.size()) { - a22gcindices.resize(numentries); - a22values.resize(numentries); - } - int count=0; - for (int j=0; jColMap().GID(cindices[j]); - // see whether we have gcid in a22gmap - std::map::iterator curr = a22gmap.find(gcid); - if (curr==a22gmap.end()) continue; - //cout << gcid << " "; - a22gcindices[count] = gcid; - a22values[count] = values[j]; - ++count; - } - //cout << endl; fflush(stdout); - // add this filtered row to A22 - err = A22->InsertGlobalValues(grid,count,&a22values[0],&a22gcindices[0]); - if (err<0) { - std::cout << "ERROR: SplitMatrix2x2: A->InsertGlobalValues returned " << err << std::endl; - return false; - } - - } //for (int i=0; iNumMyRows(); ++i) - a22gcindices.clear(); - a22values.clear(); - } - A22->FillComplete(); - A22->OptimizeStorage(); - - //----------------------------------------------------- create matrix A11 - A11 = Teuchos::rcp(new Epetra_CrsMatrix(Copy,A11map,100)); - { - std::vector a11gcindices(100); - std::vector a11values(100); - for (int i=0; iNumMyRows(); ++i) - { - const int grid = A->GRID(i); - if (A11map.MyGID(grid)==false) continue; - int numentries; - double* values; - int* cindices; - int err = A->ExtractMyRowView(i,numentries,values,cindices); - if (err) { - std::cout << "ERROR: SplitMatrix2x2: A->ExtractMyRowView returned " << err << std::endl; - return false; - } - - if (numentries>(int)a11gcindices.size()) { - a11gcindices.resize(numentries); - a11values.resize(numentries); - } - int count=0; - for (int j=0; jColMap().GID(cindices[j]); - // see whether we have gcid as part of a22gmap - std::map::iterator curr = a22gmap.find(gcid); - if (curr!=a22gmap.end()) continue; - a11gcindices[count] = gcid; - a11values[count] = values[j]; - ++count; - } - err = A11->InsertGlobalValues(grid,count,&a11values[0],&a11gcindices[0]); - if (err<0) { - std::cout << "ERROR: SplitMatrix2x2: A->InsertGlobalValues returned " << err << std::endl; - return false; - } - - } // for (int i=0; iNumMyRows(); ++i) - a11gcindices.clear(); - a11values.clear(); - } - A11->FillComplete(); - A11->OptimizeStorage(); - - //---------------------------------------------------- create matrix A12 - A12 = Teuchos::rcp(new Epetra_CrsMatrix(Copy,A11map,100)); - { - std::vector a12gcindices(100); - std::vector a12values(100); - for (int i=0; iNumMyRows(); ++i) { - const int grid = A->GRID(i); - if (A11map.MyGID(grid)==false) continue; - int numentries; - double* values; - int* cindices; - int err = A->ExtractMyRowView(i,numentries,values,cindices); - if (err) { - std::cout << "ERROR: SplitMatrix2x2: A->ExtractMyRowView returned " << err << std::endl; - return false; - } - - if (numentries>(int)a12gcindices.size()) { - a12gcindices.resize(numentries); - a12values.resize(numentries); - } - int count=0; - for (int j=0; jColMap().GID(cindices[j]); - // see whether we have gcid as part of a22gmap - std::map::iterator curr = a22gmap.find(gcid); - if (curr==a22gmap.end()) continue; - a12gcindices[count] = gcid; - a12values[count] = values[j]; - ++count; - } - err = A12->InsertGlobalValues(grid,count,&a12values[0],&a12gcindices[0]); - if (err<0) { - std::cout << "ERROR: SplitMatrix2x2: A->InsertGlobalValues returned " << err << std::endl; - return false; - } - - } // for (int i=0; iNumMyRows(); ++i) - a12values.clear(); - a12gcindices.clear(); - } - A12->FillComplete(A22map,A11map); - A12->OptimizeStorage(); - - //----------------------------------------------------------- create A21 - A21 = Teuchos::rcp(new Epetra_CrsMatrix(Copy,A22map,100)); - { - std::vector a21gcindices(100); - std::vector a21values(100); - for (int i=0; iNumMyRows(); ++i) { - const int grid = A->GRID(i); - if (A22map.MyGID(grid)==false) continue; - int numentries; - double* values; - int* cindices; - int err = A->ExtractMyRowView(i,numentries,values,cindices); - if (err) { - std::cout << "ERROR: SplitMatrix2x2: A->ExtractMyRowView returned " << err << std::endl; - return false; - } - - if (numentries>(int)a21gcindices.size()) { - a21gcindices.resize(numentries); - a21values.resize(numentries); - } - int count=0; - for (int j=0; jColMap().GID(cindices[j]); - // see whether we have gcid as part of a22gmap - std::map::iterator curr = a22gmap.find(gcid); - if (curr!=a22gmap.end()) continue; - a21gcindices[count] = gcid; - a21values[count] = values[j]; - ++count; - } - err = A21->InsertGlobalValues(grid,count,&a21values[0],&a21gcindices[0]); - if (err<0) { - std::cout << "ERROR: SplitMatrix2x2: A->InsertGlobalValues returned " << err << std::endl; - return false; - } - - } // for (int i=0; iNumMyRows(); ++i) - a21values.clear(); - a21gcindices.clear(); - } - A21->FillComplete(A11map,A22map); - A21->OptimizeStorage(); - - //-------------------------------------------------------------- tidy up - a22gmap.clear(); - return true; -} - -} diff --git a/packages/muelu/test/navierstokes/b_re1000_5932.txt b/packages/muelu/test/navierstokes/b_re1000_5932.txt deleted file mode 100644 index 2bb0af0119d5..000000000000 --- a/packages/muelu/test/navierstokes/b_re1000_5932.txt +++ /dev/null @@ -1,1502 +0,0 @@ -%%MatrixMarket matrix array real general -1500 1 - 0.2564467013462763 - 0.3452488427287302 - 0.2291903571814953 - 0.0848224209487926 - 0.5922112348795537 - 0.1063197605330878 - 0.3202930044421843 - 0.2640292314683583 - 0.6799768182208593 - 0.1360914052570821 - 0.5266087082579863 - 0.9238552434816886 - 0.6113376117780283 - 0.4428460130451384 - 0.2819298611754712 - 0.2854464049368818 - 0.2247705234092796 - 0.5858948545882591 - 0.02545411111528533 - 0.02545991600820701 - 0.6720265416073978 - 0.6877640423929033 - 0.1247701680185737 - 0.622802504553837 - 0.4706983309397719 - 0.09089794349651296 - 0.6075201925491347 - 0.9697425755233068 - 0.7097626213666257 - 0.8565365814548902 - 0.3518178407178511 - 0.4690102070875579 - 0.05961531315780115 - 0.9935811258116053 - 0.641348949402486 - 0.509574863441996 - 0.839152679397284 - 0.7448659974895344 - 0.2309032530397017 - 0.3225889581515338 - 0.650568746356072 - 0.009533008472333116 - 0.409474067044566 - 0.5403469305773658 - 0.7912234815788558 - 0.2526600148386604 - 0.4217275155682185 - 0.8330455002295949 - 0.04373897354656024 - 0.08854782320920211 - 0.2082734629088372 - 0.9515085128611801 - 0.2189432251594602 - 0.7868333844782074 - 0.3011622130956016 - 0.2672928627852457 - 0.5640915833580286 - 0.9579529260106072 - 0.8804958494366553 - 0.07171765398913114 - 0.376355509706237 - 0.3570358436562432 - 0.4870210163811622 - 0.06789530362877809 - 0.03847201803006621 - 0.08043494366866559 - 0.4341239836113005 - 0.7526586050645425 - 0.3754282979059816 - 0.2816256117627268 - 0.7706855634829071 - 0.7064495913835097 - 0.7312842749828987 - 0.3532411730666479 - 0.9441040019487816 - 0.004041990686115038 - 0.1357685087573721 - 0.3222402571387874 - 0.3659389163277388 - 0.4346091334729242 - 0.6424498402747116 - 0.2345382745625026 - 0.3383753032687812 - 0.5658577396984071 - 0.8936011434788549 - 0.8930790521410269 - 0.153120745430467 - 0.1975501339436042 - 0.7570054720398406 - 0.4647784236970292 - 0.9356605677742075 - 0.2868496530741265 - 0.5017822858347261 - 0.4748250231165831 - 0.5109224528145117 - 0.1246692226431836 - 0.332239054697298 - 0.5378570085511531 - 0.3266998483347891 - 0.8019320560028887 - 0.3845403822288461 - 0.7058858179112052 - 0.857073894447826 - 0.5425661415157356 - 0.6846771825635765 - 0.4252334040229735 - 0.3942869173241749 - 0.1164153521346837 - 0.4559299349847779 - 0.6913351201627893 - 0.9202923775249648 - 0.443629250914066 - 0.3223246183596125 - 0.4859112579713287 - 0.0701627072041731 - 0.9572179799169404 - 0.7885130299278026 - 0.9460214103789741 - 0.7178179394290792 - 0.07062009424034991 - 0.9329544903584327 - 0.4062866338591106 - 0.171474830383519 - 0.9032764364976557 - 0.8430361659353354 - 0.557825324782424 - 0.8337083016897173 - 0.9948676420795278 - 0.9914964671099005 - 0.7476470759026645 - 0.0209820490572074 - 0.3488838260055846 - 0.224819067924334 - 0.3932913530844369 - 0.9660183460064742 - 0.519856923056693 - 0.2096699292868666 - 0.5832645705078797 - 0.3791962210496846 - 0.9069635520617609 - 0.4683003549497067 - 0.4888072221772023 - 0.155916167825789 - 0.1376666406568219 - 0.1122229134949449 - 0.7411625915956404 - 0.8742420875678965 - 0.8180910903144577 - 0.8351564586547553 - 0.3831196189679548 - 0.882367037257355 - 0.4891719620602213 - 0.5124823841714923 - 0.8638555003455858 - 0.7408205682350625 - 0.1444856115091188 - 0.1181093082020793 - 0.4219218794311085 - 0.5254746723405394 - 0.2198998265429585 - 0.437296018130193 - 0.2152465701352722 - 0.7715383200883259 - 0.6830502260921606 - 0.9475075661225065 - 0.8926276908685508 - 0.8386693483824234 - 0.2893768298521436 - 0.4576607076406071 - 0.6338500047864737 - 0.4191936860588605 - 0.2026194982143232 - 0.150176089035935 - 0.965592815105122 - 0.6961745176979085 - 0.2229461555277546 - 0.6546592265652627 - 0.2297687112693753 - 0.2752193565280753 - 0.09883596179266001 - 0.6868848933608412 - 0.1820857952860592 - 0.1025469335291038 - 0.3487166890453847 - 0.1227108751605385 - 0.7169291531399811 - 0.5730410703474382 - 0.2714043057410684 - 0.3851728534820587 - 0.7861651716324339 - 0.8096611316027894 - 0.1860599288320043 - 0.3479799833312293 - 0.6333236718247947 - 0.9858902934288263 - 0.8786432847347183 - 0.9691579334126224 - 0.5751767491640987 - 0.7397588807236622 - 0.7451530244945762 - 0.7635143996139453 - 0.6833385111759264 - 0.617959476685626 - 0.8783013101676109 - 0.8512622483701759 - 0.7970982658159136 - 0.3060735242230331 - 0.7914281431305186 - 0.6682022092629193 - 0.1871011535786092 - 0.2135900763643169 - 0.6610396338640635 - 0.7891246906551823 - 0.830949272898089 - 0.3791547036592831 - 0.01420842891768497 - 0.7246611291006457 - 0.376397674551035 - 0.8634889779455489 - 0.4288577963569478 - 0.9352961104700892 - 0.5080440404149845 - 0.3053128249522754 - 0.5541738805150154 - 0.1178452566525539 - 0.5645224498484293 - 0.2871340417806935 - 0.1181705787990081 - 0.03490937913761631 - 0.8300755893914777 - 0.5658924650521743 - 0.2667050034794553 - 0.4684654003239702 - 0.9480874066637306 - 0.8822346224542048 - 0.5966404897377786 - 0.5984802192463665 - 0.3981621038671254 - 0.6408909526503029 - 0.93327012863956 - 0.3372891475219597 - 0.3655664275236141 - 0.7460484103223701 - 0.5188791744529792 - 0.3461952637078893 - 0.5981266965304051 - 0.4911924472906925 - 0.4806144476358246 - 0.7948938022727334 - 0.8810600650830537 - 0.1994933925616307 - 0.9366710102054975 - 0.4192560754646988 - 0.5195167858279657 - 0.1581703687941822 - 0.5311112587437898 - 0.228225568686594 - 0.6373994990011582 - 0.5147287977706489 - 0.625302487843349 - 0.6391402444854563 - 0.9615076872149739 - 0.4569483995762171 - 0.596320158448761 - 0.3201894824647901 - 0.437439961806564 - 0.9900953740314571 - 0.4356161239705342 - 0.07944489027982919 - 0.6934558384825125 - 0.3352780825733944 - 0.2637134677686392 - 0.6475743967863095 - 0.5834010396020748 - 0.1879264054223742 - 0.07023242298127023 - 0.9353190372672257 - 0.8005763400061148 - 0.900509975265197 - 0.4109525358905277 - 0.4384502794042504 - 0.6367547250171754 - 0.5849942002004057 - 0.8786623361428078 - 0.8494808371443844 - 0.3595926606877028 - 0.7408977626327958 - 0.5378747542578702 - 0.5374580177143989 - 0.1572459852637753 - 0.6839274146161912 - 0.4904425983962102 - 0.9471745481726309 - 0.202877078099533 - 0.04225914026775306 - 0.151524893985519 - 0.2122483322517431 - 0.8515133056764732 - 0.7672903152640278 - 0.7855935858843645 - 0.6407462196961936 - 0.1731774262657879 - 0.05954602490373199 - 0.3380899237951367 - 0.5238954285159715 - 0.3627502343490112 - 0.5333446408789242 - 0.2552711522708372 - 0.9003138414949861 - 0.5917536145245077 - 0.2043801751945454 - 0.870210878684055 - 0.4741861541170251 - 0.8044371192968848 - 0.2440050033647612 - 0.09316892863557406 - 0.2922629727245477 - 0.7013057974436342 - 0.7084623408563288 - 0.6041171660602336 - 0.5395528645679487 - 0.7111704957321811 - 0.1422589700641153 - 0.7326956748470811 - 0.6833960058892905 - 0.04248689548371369 - 0.463636748576039 - 0.9990396798548663 - 0.3179528496961179 - 0.4363043747719422 - 0.07970503149776069 - 0.5449527312067683 - 0.4860876606093741 - 0.5549631336208902 - 0.4654162939601101 - 0.6415119886382223 - 0.6417288994361254 - 0.5101890884574896 - 0.02949510974881424 - 0.5885280077746438 - 0.9645230978769518 - 0.2918074300271108 - 0.5668062781072765 - 0.06133378479335454 - 0.4886829711349037 - 0.002049242410174279 - 0.7845906237450618 - 0.09395369653950052 - 0.5269071873999269 - 0.2066819407017101 - 0.03869931755361582 - 0.9470406717406111 - 0.4496154772018405 - 0.1208273153407893 - 0.7209044562939175 - 0.661121900445846 - 0.8418058062959347 - 0.2967642155932833 - 0.3368852151591473 - 0.8678230308303243 - 0.2571995592399021 - 0.3882263260009973 - 0.7538050658847254 - 0.8938525870276059 - 0.3238571916422445 - 0.3957966811946336 - 0.5119002462474513 - 0.6586621802590656 - 0.3297413632863074 - 0.7494347303006985 - 0.4662234538800152 - 0.9065157173168363 - 0.4569627502926569 - 0.9832038152304042 - 0.3328331977662933 - 0.2093035926971803 - 0.1257953949880472 - 0.3693166165557769 - 0.289419563796241 - 0.6165442747815679 - 0.4104133229660161 - 0.2830671627250317 - 0.7967201965982037 - 0.180156339110615 - 0.6826255453718127 - 0.04752323897409987 - 0.4197255051664081 - 0.5376242743952371 - 0.8618771948205085 - 0.5899022996077713 - 0.1998924372898099 - 0.3412046154760289 - 0.7838122644245367 - 0.5171240067730503 - 0.9226210416894867 - 0.7839138810510727 - 0.1308132591296057 - 0.02577144233023836 - 0.2918851901521911 - 0.7477050832034294 - 0.9720390879043033 - 0.4220644998698 - 0.4259712891920308 - 0.5009102292163007 - 0.2506904472095524 - 0.1970451519915938 - 0.9633033671415848 - 0.005177367439868008 - 0.08389935942155739 - 0.612013617645645 - 0.2168287393083801 - 0.5359352406632013 - 0.0226193071231751 - 0.4451047403825903 - 0.4937261347488193 - 0.6630075081302131 - 0.7749734967097415 - 0.360072067054898 - 0.702853346456747 - 0.886383165487868 - 0.3654242230713954 - 0.8953819381786161 - 0.08292739408289422 - 0.8575662679358208 - 0.07648092060887639 - 0.5813776591953247 - 0.9750723744658933 - 0.3538794183304367 - 0.3334133261606284 - 0.5978423785734828 - 0.7137094321912824 - 0.6835258233918303 - 0.4337107159090478 - 0.7791888606089743 - 0.5326422858950198 - 0.7788346939149404 - 0.1346720729131937 - 0.7501145778587206 - 0.2501760243288004 - 0.72077933906213 - 0.1427333736641791 - 0.2196833537927357 - 0.7130643358280047 - 0.8837711975511059 - 0.07110244898199373 - 0.2375446032259634 - 0.9840654565102459 - 0.7811532845204319 - 0.4446489381614644 - 0.4911987801969815 - 0.9540203827750822 - 0.2021411465082311 - 0.8661052225624448 - 0.09172137326517298 - 0.2268538800396854 - 0.9605799768812603 - 0.6774953699170297 - 0.5526617324976401 - 0.7429681441000798 - 0.1721554848805644 - 0.4122850812656646 - 0.3151427320475509 - 0.57086621961331 - 0.4534621120732571 - 0.8992724381318915 - 0.8453708606462466 - 0.747411633290618 - 0.1049913412488157 - 0.210785431308713 - 0.2900713528364366 - 0.6106082887199307 - 0.6958673095764111 - 0.6250971807184862 - 0.1745517056897118 - 0.3515946559267375 - 0.1396069446237905 - 0.5705168750124499 - 0.6411148261803059 - 0.06460148922327895 - 0.2925044068382281 - 0.8309943982373066 - 0.8162805802844887 - 0.9016751658403124 - 0.6477674733633739 - 0.2658027579236563 - 0.9796903384008431 - 0.3227378207350544 - 0.8970935796453829 - 0.2378580867523791 - 0.09607030346181493 - 0.1000802082902414 - 0.8895840815375847 - 0.5824806421835779 - 0.2042286405973847 - 0.4032794555760092 - 0.3936087625826958 - 0.002263567208643113 - 0.3103252207335485 - 0.1195701963472866 - 0.4412771368351472 - 0.2145852977682307 - 0.2691557709090267 - 0.5379205250426334 - 0.3795290847095759 - 0.5608467505976377 - 0.04570257429779349 - 0.2743429205636955 - 0.8531212718370405 - 0.9606335063022299 - 0.4609531774281249 - 0.7342123314323462 - 0.5047113979599345 - 0.3083396809383894 - 0.2593608218926286 - 0.9202395972033276 - 0.9378611960001634 - 0.6991174442430172 - 0.3240395105063209 - 0.6420070217772148 - 0.9221385975984742 - 0.2630193371485374 - 0.8824592713508399 - 0.1130297889959569 - 0.09050304552253667 - 0.5928665669679873 - 0.5338893857134145 - 0.3770243086821158 - 0.1206121665640568 - 0.5431888581705718 - 0.9355438934097422 - 0.2945269351278834 - 0.637787390498782 - 0.2174566079034259 - 0.2731691521137252 - 0.1745387752449193 - 0.7237567583606361 - 0.8643305561546841 - 0.06197278185665393 - 0.4407460146845736 - 0.7567530050597051 - 0.188362203196471 - 0.7141075959658081 - 0.4628134224695592 - 0.8433995875212741 - 0.8484776931491191 - 0.517101461774659 - 0.6833130841226416 - 0.6805319980777893 - 0.1163282459396743 - 0.610195612608058 - 0.1589174803554409 - 0.681107803584998 - 0.07290525333819335 - 0.2102485579121563 - 0.7049728011609818 - 0.6075433482658719 - 0.2338325056822129 - 0.215704978827566 - 0.8140873392483697 - 0.6090630791726415 - 0.9329761799794565 - 0.9743696271957667 - 0.326540347979052 - 0.8222973034742193 - 0.4932755724805494 - 0.7780436147198629 - 0.8045480858738959 - 0.7760144307696 - 0.2957364363385893 - 0.1689115108661028 - 0.3142612398294169 - 0.9459160470511242 - 0.3341019153436556 - 0.1671961054185614 - 0.03412966846021219 - 0.1449403910514339 - 0.8720103223574517 - 0.7476020655846248 - 0.2228706206454571 - 0.8493374120229797 - 0.5959786745777874 - 0.3894131301063871 - 0.9139922633823064 - 0.9775768134021938 - 0.1716620845227926 - 0.7225302094230941 - 0.2440938113238637 - 0.3661037869666837 - 0.8612435253800703 - 0.3446469457560155 - 0.318720404050336 - 0.5220744785421958 - 0.8880206899408399 - 0.5634774945307948 - 0.9747541732552174 - 0.8102281041010764 - 0.6203340500400349 - 0.4310435738481046 - 0.8712608827026916 - 0.8994202471290041 - 0.2705928865325186 - 0.4521508723802859 - 0.6905025461858068 - 0.4916651130460493 - 0.1804584509878764 - 0.2017015003478852 - 0.3395612438897959 - 0.4091002604069691 - 0.5600197845626381 - 0.5956277119101879 - 0.8838321638557483 - 0.9658612027944986 - 0.6963460659776661 - 0.4738495479538888 - 0.4088119113580302 - 0.243284483054209 - 0.3859296436381466 - 0.7679544357104162 - 0.01381159924825186 - 0.1796811448730014 - 0.02541082334789051 - 0.7743384896047482 - 0.141483560101383 - 0.3889654336665851 - 0.8459402061837412 - 0.1405166229612373 - 0.9287785116849069 - 0.3140817050649155 - 0.5504986286971166 - 0.2422571404929973 - 0.2659128725950909 - 0.3870170197842911 - 0.5413139984374419 - 0.8625100772880461 - 0.7613679970891851 - 0.5730129884362317 - 0.1049478534842198 - 0.6929555386435059 - 0.8755770513105527 - 0.07269326371310651 - 0.8033069796739505 - 0.1370703232384103 - 0.8858623873308566 - 0.3023220394949059 - 0.4550848132764369 - 0.9905978777755867 - 0.01670583470407387 - 0.6436711056162766 - 0.06279571445182157 - 0.5052188950111678 - 0.8538507156686752 - 0.4396330476423022 - 0.02677514121712281 - 0.2115722346560593 - 0.5061218287842983 - 0.2427971814210999 - 0.9817541944739631 - 0.8429169137427158 - 0.4386705025508759 - 0.0696305050252302 - 0.2026887661912696 - 0.7945464248623811 - 0.003091268207049458 - 0.8244325196754175 - 0.5974378754111207 - 0.1573986463364677 - 0.9225258982404058 - 0.5836561857240182 - 0.1289123458548393 - 0.9884255592181573 - 0.1893804140323522 - 0.3782965032231579 - 0.2999975134725639 - 0.120010547026463 - 0.6389036255953586 - 0.9260330877534549 - 0.5827358770771827 - 0.09636587900876641 - 0.1278879032495667 - 0.06851399916891658 - 0.4242571474054461 - 0.1066483523776082 - 0.9949658293193997 - 0.2995006794311852 - 0.8747688154968453 - 0.4456912029318541 - 0.1886307984630315 - 0.1478096750681439 - 0.8248453302845162 - 0.6148854538446694 - 0.8425552442990274 - 0.3680433093563081 - 0.7433714676486414 - 0.9039110115732223 - 0.7196683178722294 - 0.7941963919891452 - 0.5514322523813037 - 0.4327590090298268 - 0.9242768015464562 - 0.9399185154803609 - 0.1317700763001642 - 0.5764953305607093 - 0.3242712195883189 - 0.4515189969248448 - 0.7729207394392783 - 0.7618251009920901 - 0.3405845114417143 - 0.4541923320320092 - 0.4057618027789309 - 0.7642146540518437 - 0.9286519410922046 - 0.718431422144423 - 0.4424542298244888 - 0.05606278261311252 - 0.5960353643448986 - 0.4811394277903455 - 0.4146973882953274 - 0.4920868109971459 - 0.6326989326475572 - 0.2732887011923575 - 0.1091636473262322 - 0.389959875407753 - 0.6038967013071028 - 0.8350402852411354 - 0.4902591647603883 - 0.8331922328561268 - 0.4912482537091994 - 0.8570467279336746 - 0.1094308223329823 - 0.6282479725723822 - 0.9100074117353395 - 0.5602508836990613 - 0.2920251327465024 - 0.8514043412579372 - 0.01537251436533576 - 0.6881663239512863 - 0.01706958906470695 - 0.8217778601582442 - 0.1191014134939982 - 0.725228841798392 - 0.4437742418097352 - 0.1235544902212146 - 0.801799356599981 - 0.3527858446278138 - 0.8582637237724371 - 0.9163963064442912 - 0.5726744842914573 - 0.4524406749426405 - 0.1880737410200616 - 0.373614723965328 - 0.7325739388320339 - 0.6999537856177709 - 0.01330397189336845 - 0.751164458663805 - 0.07417225409900334 - 0.2690798010824355 - 0.8822851214351823 - 0.1791896863317788 - 0.3045185796698804 - 0.5936045437703302 - 0.03606891649639914 - 0.396599802753088 - 0.3656781095183303 - 0.5806719483298611 - 0.7482572179396327 - 0.4680168598446316 - 0.7086084167914426 - 0.7471127414094495 - 0.1492424893621891 - 0.8565759617383288 - 0.2240663562090822 - 0.05845715246300846 - 0.9997072310982718 - 0.6018473335203661 - 0.643039968515234 - 0.7089007238297697 - 0.3104032324001013 - 0.3069612925020412 - 0.9113368067527325 - 0.2435779821290638 - 0.6752496416746457 - 0.1778387025273011 - 0.6925117161630895 - 0.5441882067135849 - 0.6437577622558207 - 0.1289260713665658 - 0.09889475837258514 - 0.1691373330066308 - 0.7227251468036348 - 0.621670717769386 - 0.4034542567789129 - 0.2303706609191148 - 0.0212834178803955 - 0.6207971583076944 - 0.8880512502373764 - 0.4245159977967383 - 0.1400464889962343 - 0.4086529948295152 - 0.9239332331657654 - 0.9681090080465848 - 0.1500437048339138 - 0.7126079393145757 - 0.7892058816186217 - 0.887479937316816 - 0.6721611667393579 - 0.3077499769165418 - 0.5905821862535975 - 0.8432957351313645 - 0.2603972632523439 - 0.2680991243397005 - 0.7118039371892934 - 0.763486285932547 - 0.06138382344243391 - 0.08274535805983434 - 0.4289110762152741 - 0.01244910956316574 - 0.5705607932647186 - 0.8229949712109675 - 0.5668310758308389 - 0.4513635251539973 - 0.4891930400609323 - 0.5500614565681379 - 0.8150267837567298 - 0.6098643174405738 - 0.722678207720437 - 0.8105868246132308 - 0.342122889796706 - 0.2795077587508625 - 0.1553010411619414 - 0.1098345987752024 - 0.114510854640637 - 0.01802190020541432 - 0.785814594151004 - 0.6680863964936914 - 0.7360013240079439 - 0.8815712350135023 - 0.4998816696044335 - 0.8856704014960747 - 0.3413437294837701 - 0.03634656897376436 - 0.4592133881876219 - 0.4393353261863663 - 0.1305100613585626 - 0.9337895571315944 - 0.8671894907062691 - 0.05302540146830918 - 0.591551894431407 - 0.71597600179319 - 0.5319767122362667 - 0.5838587320039861 - 0.1051209784987235 - 0.05277053587886453 - 0.6720618843125248 - 0.4665845719888469 - 0.1107915586891454 - 0.5226393827038072 - 0.2204652440673544 - 0.06601499404732207 - 0.3387533214391681 - 0.9706485079814611 - 0.1413295117550827 - 0.8589759809899643 - 0.08023056789558551 - 0.9818616666182494 - 0.1525582229572501 - 0.8497589156219139 - 0.2296906934057258 - 0.3664228557502381 - 0.3938589309492805 - 0.08975470787675215 - 0.5423000640808678 - 0.2096503808121794 - 0.8703204513334639 - 0.291244153303485 - 0.3227383849921404 - 0.3118386748815531 - 0.5173416914875623 - 0.671514488029772 - 0.5980772302030491 - 0.248002563363223 - 0.07549655984316621 - 0.04306584293219066 - 0.07443758670604221 - 0.1326441247474257 - 0.1611722776648295 - 0.1778957960607805 - 0.4743474054484313 - 0.2850730924701975 - 0.6298896153026614 - 0.9272958267639055 - 0.3216062923498228 - 0.8384147580354113 - 0.4570782284014609 - 0.817628727130461 - 0.5604555806798577 - 0.9726831870474196 - 0.9858680504634877 - 0.07392947424835354 - 0.09968440450719789 - 0.09751126711566153 - 0.03211548077421704 - 0.3875651951958846 - 0.7457322982884322 - 0.0004697040417629861 - 0.1077940713434874 - 0.4279600787668676 - 0.6893011378373346 - 0.1717478612279998 - 0.3692187838466137 - 0.8382571163390394 - 0.3149083970250214 - 0.6840459863769585 - 0.7135391229502623 - 0.6967511324751411 - 0.60682826210796 - 0.9312038004730354 - 0.8489470936583481 - 0.6675596258593118 - 0.7102575116484467 - 0.7967909701354394 - 0.4222335175131094 - 0.7658571827362561 - 0.3955452784091645 - 0.7391478951253777 - 0.05950582451091894 - 0.7377350156494462 - 0.4356315025102891 - 0.5760202792053971 - 0.1259744142612996 - 0.8800929652466301 - 0.9917123938415827 - 0.8999824872601219 - 0.6904739973304442 - 0.3937429103863946 - 0.7676213008584185 - 0.8378212900266957 - 0.09557417084964519 - 0.7587848534693958 - 0.1674699461872662 - 0.3100017590466494 - 0.7585817456076577 - 0.5301585756332858 - 0.4967109489039354 - 0.1720401586974536 - 0.7751750894332681 - 0.2283956914742215 - 0.6161865420719972 - 0.4672540667013729 - 0.4122114631912392 - 0.5002685895175031 - 0.8992035394321143 - 0.7630075683616467 - 0.636190987859467 - 0.8993717561421758 - 0.9046917795404263 - 0.8813557355427249 - 0.1390034801968926 - 0.3730716896392752 - 0.7493950429884348 - 0.5029684186942133 - 0.002931732425185118 - 0.7789901595130169 - 0.5797134111246834 - 0.07582599466765109 - 0.1692973190110605 - 0.3218872787628239 - 0.9772473433917533 - 0.4789804157567115 - 0.6492369078344077 - 0.4348055711922547 - 0.07530210788829965 - 0.7411302103616203 - 0.2822842925826574 - 0.7659498912288849 - 0.4158163251939743 - 0.810220587861167 - 0.4332936819970083 - 0.6509266944332163 - 0.7890454195885467 - 0.07677581573100249 - 0.01715959772393887 - 0.3513180956056803 - 0.7573848799235937 - 0.7832430131254958 - 0.5488928792607946 - 0.2773807079428495 - 0.9644101076109292 - 0.158128025147876 - 0.2162000576369936 - 0.8059668123173478 - 0.5596874475431408 - 0.9036123190078021 - 0.08245919929739202 - 0.4017322585526485 - 0.6189041471871277 - 0.2976975411997949 - 0.9118928858752171 - 0.8118844157466067 - 0.2004919029544974 - 0.7195897694720751 - 0.614117480737869 - 0.306868520691101 - 0.0717548601853502 - 0.316192042616442 - 0.4950875509345636 - 0.06341940125232008 - 0.2261429159513282 - 0.9477322391849365 - 0.2379723606355013 - 0.113282590712818 - 0.8954895978126202 - 0.897962688213585 - 0.7859583224991343 - 0.5395933599442969 - 0.2940186000883492 - 0.2881129505656405 - 0.9254074869056036 - 0.4665788917538722 - 0.2516783318053842 - 0.4673264901039096 - 0.5587270942101568 - 0.8373336551012776 - 0.8578313585116252 - 0.08421676586460895 - 0.9117896197064603 - 0.362068346471736 - 0.08494934091248922 - 0.0589882001708371 - 0.3482495482508627 - 0.9183185712666031 - 0.04509779404133844 - 0.6896750573093369 - 0.0436647400414291 - 0.4959922081717886 - 0.258489085695881 - 0.2671004679365747 - 0.1404033538059976 - 0.7992996307669106 - 0.9153005849023453 - 0.3486058871149975 - 0.3125036970697249 - 0.2958797579693915 - 0.2818197402951976 - 0.9588779210113451 - 0.3245333955132491 - 0.1448761252595434 - 0.6858518785732061 - 0.7963713371647351 - 0.06101090004089031 - 0.5047314999463277 - 0.08193366782962246 - 0.05245896328572013 - 0.1296420254365437 - 0.7937405220245349 - 0.6322448824643628 - 0.8046882987960707 - 0.2972781117403377 - 0.9701834242027625 - 0.4619063501984906 - 0.07378755308013256 - 0.8062440179206589 - 0.909194869187436 - 0.8614088354824202 - 0.006690870757484357 - 0.1411727712466666 - 0.911329642194494 - 0.7086769671942363 - 0.8725257377557902 - 0.922351990582281 - 0.7136859047158257 - 0.8483603178024464 - 0.4028343849054984 - 0.9535369162656465 - 0.1578313833998866 - 0.5332375920394412 - 0.6134822502813563 - 0.4617561168111728 - 0.4631144263600847 - 0.4194165802899457 - 0.6548189885067731 - 0.8953243898387648 - 0.7645678431712443 - 0.377354750244799 - 0.7698310848536658 - 0.590461611435421 - 0.3511027997311003 - 0.4563868438609254 - 0.6907407481225073 - 0.8477647240556769 - 0.05189504045270381 - 0.238271151863399 - 0.4621819944008538 - 0.8226561065249887 - 0.0991627683467086 - 0.2260422345023392 - 0.3214905996142528 - 0.5034650291634134 - 0.3568090090124901 - 0.8954744314113768 - 0.9961634645278953 - 0.05592562075719436 - 0.6094996827420404 - 0.6299883306167965 - 0.4968024430663177 - 0.9666553624616696 - 0.1562721485868494 - 0.2087950602055799 - 0.9845884015225781 - 0.08013060435051116 - 0.660584965912305 - 0.6185756180952549 - 0.1682132659549145 - 0.5292042644762542 - 0.4506671787073869 - 0.6253361339687641 - 0.829764286775202 - 0.01193963992800622 - 0.5971093457835975 - 0.526713497747761 - 0.6368931740302869 - 0.5003096919148142 - 0.05210850004107907 - 0.09143239349921133 - 0.4285658558372586 - 0.8845129759567675 - 0.3574970195444563 - 0.3827176331309809 - 0.007061177729346157 - 0.9728547232184367 - 0.3048161073844426 - 0.05672969476285321 - 0.6966150557728767 - 0.2241098237291293 - 0.6023795465926515 - 0.3888252033140849 - 0.22076936560458 - 0.2077741662392577 - 0.9973340266701218 - 0.09640036219002894 - 0.5493953384102378 - 0.6331189646117095 - 0.1560639387456087 - 0.7613072425402105 - 0.7963608949318763 - 0.1096597520220524 - 0.7282307238548603 - 0.4716769743635857 - 0.4493162460288411 - 0.4943913366408397 - 0.4721696629559047 - 0.1427344078076833 - 0.5709975735457051 - 0.6357211383353272 - 0.7751682515780767 - 0.7988028543903278 - 0.6427185834563324 - 0.1229811929321158 - 0.180622971450645 - 0.5818295807934132 - 0.8306782717089598 - 0.8040272734297611 - 0.3846443174149285 - 0.9063579640079829 - 0.9258502085418037 - 0.3122769024397199 - 0.01365530722529522 - 0.6688296045982205 - 0.1225798304347622 - 0.2777893059623694 - 0.4606303248498584 - 0.6004330239244856 - 0.01396692564680484 - 0.2346999690105585 - 0.495680993033855 - 0.01139045831962475 - 0.8063614705586037 - 0.8878735313611138 - 0.3858808740669085 - 0.8106925919645608 - 0.0001194300927482184 - 0.4792492687346955 - 0.6922062264664133 - 0.6880750489499505 - 0.4019511021877059 - 0.5866401713118062 - 0.9104654479942975 - 0.7352613804377491 - 0.2801322422973289 - 0.4914802270273346 - 0.7888744574729042 - 0.2578842821138366 - 0.5107520699440508 - 0.1887975424737173 - 0.9230533990859889 - 0.1379936807125312 - 0.8716709676467432 - 0.2430341300108037 - 0.1456003821523588 - 0.9637647199215743 - 0.1133054109782459 - 0.7526737364010497 - 0.5338865194784609 - 0.1046405553485287 - 0.5715352134468953 - 0.9191098078626746 - 0.4147043748114285 - 0.009149058245851927 - 0.2461444377562196 - 0.8375426547426361 - 0.7453467435167912 - 0.2019932927024077 - 0.178720421335089 - 0.6117359424836225 - 0.3194780356252735 - 0.1127758378100353 - 0.3700288321332428 - 0.8709350030897772 - 0.4319769743699743 - 0.7752869137189558 - 0.5543693324732653 - 0.331207635012958 - 0.7717079358756485 - 0.02726295719922582 - 0.7284959580819013 - 0.4594120414860793 - 0.40718209433765 - 0.226578766991043 - 0.3604793378678612 - 0.9272079264992265 - 0.3624000994256164 - 0.5083410505936828 - 0.5132010193885073 - 0.1870429231875193 - 0.8735136110638102 - 0.6890939743487512 - 0.5051236709151333 - 0.8139743912615182 - 0.1120758936900458 - 0.9306755140184001 - 0.9665951515696175 - 0.02471692156535448 - 0.5771470256319545 - 0.7110943844202603 - 0.5922335442319472 - 0.2398018977772279 - 0.1203609933764469 - 0.3826580876049639 - 0.875805558068222 - 0.3981163435254406 - 0.2108112451881527 - 0.191099083671583 - 0.5124795678625652 - 0.7503979355312498 - 0.7547862613298055 - 0.1789196514639365 - 0.3028497185704136 - 0.3385065971416608 - 0.3745784534396412 - 0.3248866877814978 - 0.613835961315966 - 0.4889792947062341 - 0.8716740681915276 - 0.6756480344063235 - 0.968112438426283 - 0.9308161405896457 - 0.2538406098596726 - 0.3627292049052688 - 0.2025475957545959 - 0.1811788234788845 - 0.9608429624299698 - 0.4333927840810356 - 0.01603033395983349 - 0.9892798657921559 - 0.8345493122951335 - 0.1467690268157033 - 0.6515231915812871 - 0.04242365793537033 - 0.07211348196173166 - 0.008519136855435084 - 0.899080212021852 - 0.2957822514012526 - 0.2390899967867923 - 0.3324238754920917 - 0.2486949475576186 - 0.5127430817294065 - 0.09317781704725296 - 0.6874292155612595 - 0.9026597852654902 - 0.3926674513911342 - 0.5117818051033309 - 0.5175175869912791 - 0.8039224784380771 - 0.6959210754766185 - 0.07706306981330029 - 0.5276455823271231 - 0.7839613435050881 - 0.2001366271802047 - 0.08902919547661874 - 0.8048397500719897 - 0.1555384003018449 - 0.4441815425846533 - 0.4823602917887764 - 0.3401085531863694 - 0.3011816171840091 - 0.543744200215992 - 0.4239042920984262 - 0.4455084629239816 - 0.2936079590265439 - 0.2234175086927699 - 0.008053063992677734 - 0.5162477058394888 - 0.8327241539560692 - 0.4868967495860982 - 0.5610734944924202 - 0.7592612407079381 - 0.6806092985372305 - 0.1711518583823707 - 0.6492827793916514 - 0.6164542527755618 - 0.9176357458772743 - 0.9110377033653959 - 0.1138326962043278 - 0.6282820898249568 - 0.5223380643853266 - 0.531675792025915 - 0.6159258517083439 - 0.8165352239818717 - 0.3165316024840137 - 0.9540078127517641 - 0.7205929289665157 - 0.7255199418600131 - 0.3533332560809035 - 0.932211347981781 - 0.03301042155249816 - 0.9773712086089945 - 0.4298262134133736 - 0.9105073877840035 - 0.7441073093378612 - 0.5532773286995735 - 0.1107016802926484 - 0.5641726460407059 - 0.9173148095248845 - 0.2821930451433768 - 0.9251178319034694 - 0.1099791916419871 - 0.7669220627371564 - 0.1668065341618327 - 0.7997049365434751 - 0.7710458896862208 - 0.8940259454112305 - 0.7458956764371325 - 0.3360972494653212 - 0.01857409463499742 - 0.09135582751964948 - 0.6117138554299808 - 0.3234976761366443 - 0.2572152731427709 - 0.5991283124374612 - 0.9803232204821808 - 0.8419270971519397 - 0.847450268997076 - 0.4270975513603293 - 0.617516262315833 - 0.4785105542177723 - 0.4310331638959676 - 0.4166271814244361 - 0.09543657088347417 - 0.05230608336573576 - 0.7573438467432491 - 0.1873455017174158 - 0.08639341650190784 - 0.4699261851036909 - 0.7885833570553514 - 0.3101950990203943 - 0.92299458056949 - 0.2183588927595191 - 0.7669441496039388 - 0.7318366708627464 - 0.8374815825708336 - 0.1465524917864471 - 0.6524839251731855 - 0.5298420135281581 - 0.3751582216810048 - 0.08223058299700385 - 0.8053864935951569 - 0.7827495125402972 - 0.9085876927414407 - 0.6582655448311053 - 0.2009221353122 - 0.84909078271494 - 0.5162758942521 - 0.7351026433431321 - 0.2392584579963593 - 0.9121431535312886 - 0.7538698856613363 - 0.337535871506999 - 0.6421286580674769 - 0.8019863530844662 - 0.7817014652246687 - 0.8399559948165362 - 0.3706777111010865 - 0.3100963232217205 - 0.1595502756309751 - 0.9225597915281327 - 0.8443921678509758 - 0.1353833524464909 - 0.8868118624565748 - 0.1871009220083383 - 0.5404799541422477 - 0.9204085503644368 - 0.5169503123969303 - 0.8052747353895215 - 0.6184613906934043 - 0.3086863282877159 - 0.5635625338377678 - 0.9246082641358258 - 0.8554347191003365 - 0.9937942648258703 - 0.5697781531410282 - 0.818071466342193 - 0.2191285401289352 - 0.2411231556302273 - 0.9134360740123122 - 0.1065620672389537 - 0.7814774339538224 - 0.5436031859859516 - 0.7996598357100672 - 0.01460122498504251 - 0.5348768157729654 - 0.5532616175527936 - 0.04259679440381663 - 0.2151978834194401 - 0.9636760743982743 - 0.8935821396699114 - 0.7199144874335632 - 0.9261607671827503 - 0.322090215809866 - 0.3464364039028821 - 0.6046687957430094 - 0.5466826291883904 - 0.5488130183746518 - 0.7730239361954699 - 0.1186714941138909 - 0.163675267602798 - 0.5839922667751914 - 0.3376690853040974 - 0.3157625955485641 - 0.2335444519150322 - 0.9552128787117048 - 0.6060498684168233 - 0.8031205790966756 - 0.09500394924393367 - 0.6829293612225309 - 0.02474172790868994 - 0.6928399599537594 - 0.9596662968909566 - 0.0354140096120779 - 0.1700160463986237 - 0.5431418713960434 - 0.3518108929501464 - 0.478690003324274 - 0.9975356573648183 - 0.5688629381980881 - 0.07301866870144262 - 0.1769912570904168 - 0.8785636309166717 - 0.7938444777774916 - 0.3649112372869195 - 0.6449426993878609 - 0.319081343338302 - 0.4145125723157901 - 0.3347414790034876 - 0.05679418328935963 - 0.7741908818972759 - 0.1665714838674846 - 0.580437131728996 - 0.2548933276798601 - 0.118487305147958 - 0.8998981013784229 - 0.9189234457230651 - 0.4815650513691491 - 0.0184262730245514 - 0.4788222375808187 - 0.7113373371556735 - 0.1807011619352573 - 0.4770037873643909 - 0.6901673126823901 - 0.7028505087653749 - 0.1327824622351439 - 0.1990375833814905 - 0.4505384052186897 - 0.4487799018544328 - 0.261501007045134 - 0.7367005909649922 - 0.9616152826820373 - 0.652256524642562 - 0.4432236802169118 - 0.07726278457386186 - 0.7005161194649856 - 0.2227400848204112 diff --git a/packages/muelu/test/navierstokes/myBGS1.xml b/packages/muelu/test/navierstokes/myBGS1.xml deleted file mode 100644 index 38c2c2513150..000000000000 --- a/packages/muelu/test/navierstokes/myBGS1.xml +++ /dev/null @@ -1,211 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/packages/muelu/test/navierstokes/myBS1.xml b/packages/muelu/test/navierstokes/myBS1.xml deleted file mode 100644 index 9e2afe1a68bc..000000000000 --- a/packages/muelu/test/navierstokes/myBS1.xml +++ /dev/null @@ -1,210 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/packages/muelu/test/navierstokes/myBS2.xml b/packages/muelu/test/navierstokes/myBS2.xml deleted file mode 100644 index aad9bd493d8a..000000000000 --- a/packages/muelu/test/navierstokes/myBS2.xml +++ /dev/null @@ -1,193 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/packages/muelu/test/navierstokes/myBS3.xml b/packages/muelu/test/navierstokes/myBS3.xml deleted file mode 100644 index b88aeda14d7a..000000000000 --- a/packages/muelu/test/navierstokes/myBS3.xml +++ /dev/null @@ -1,201 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/packages/muelu/test/navierstokes/myIndefDiag1.xml b/packages/muelu/test/navierstokes/myIndefDiag1.xml deleted file mode 100644 index a768ca679bda..000000000000 --- a/packages/muelu/test/navierstokes/myIndefDiag1.xml +++ /dev/null @@ -1,211 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/packages/muelu/test/navierstokes/mySIM1.xml b/packages/muelu/test/navierstokes/mySIM1.xml deleted file mode 100644 index 490b201d9991..000000000000 --- a/packages/muelu/test/navierstokes/mySIM1.xml +++ /dev/null @@ -1,212 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/packages/muelu/test/navierstokes/mySIM2.xml b/packages/muelu/test/navierstokes/mySIM2.xml deleted file mode 100644 index a021071b5ebb..000000000000 --- a/packages/muelu/test/navierstokes/mySIM2.xml +++ /dev/null @@ -1,212 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/packages/muelu/test/navierstokes/myUzawa1.xml b/packages/muelu/test/navierstokes/myUzawa1.xml deleted file mode 100644 index 496f184b5b42..000000000000 --- a/packages/muelu/test/navierstokes/myUzawa1.xml +++ /dev/null @@ -1,211 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/packages/muelu/test/navierstokes/myUzawa2.xml b/packages/muelu/test/navierstokes/myUzawa2.xml deleted file mode 100644 index d91036ab88c4..000000000000 --- a/packages/muelu/test/navierstokes/myUzawa2.xml +++ /dev/null @@ -1,219 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/packages/muelu/test/navierstokes/myUzawa3.xml b/packages/muelu/test/navierstokes/myUzawa3.xml deleted file mode 100644 index aad14d35832b..000000000000 --- a/packages/muelu/test/navierstokes/myUzawa3.xml +++ /dev/null @@ -1,217 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/packages/muelu/test/navierstokes/myXML.xml b/packages/muelu/test/navierstokes/myXML.xml deleted file mode 100644 index 19e2aab335b6..000000000000 --- a/packages/muelu/test/navierstokes/myXML.xml +++ /dev/null @@ -1,201 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/packages/muelu/test/navierstokes/myXML2.xml b/packages/muelu/test/navierstokes/myXML2.xml deleted file mode 100644 index 5ad9d559a5b8..000000000000 --- a/packages/muelu/test/navierstokes/myXML2.xml +++ /dev/null @@ -1,215 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/packages/muelu/test/navierstokes/myXMLg.xml b/packages/muelu/test/navierstokes/myXMLg.xml deleted file mode 100644 index bffd8b6c7d03..000000000000 --- a/packages/muelu/test/navierstokes/myXMLg.xml +++ /dev/null @@ -1,217 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/packages/muelu/test/perf_tests_kokkos/CMakeLists.txt b/packages/muelu/test/perf_tests_kokkos/CMakeLists.txt index b736403f8bbd..36dfeb3b27a3 100644 --- a/packages/muelu/test/perf_tests_kokkos/CMakeLists.txt +++ b/packages/muelu/test/perf_tests_kokkos/CMakeLists.txt @@ -9,8 +9,7 @@ TRIBITS_INCLUDE_DIRECTORIES(${CMAKE_CURRENT_SOURCE_DIR}/../../gallery) TRIBITS_INCLUDE_DIRECTORIES(${CMAKE_CURRENT_SOURCE_DIR}/../unit_tests) -IF ((${PACKAGE_NAME}_ENABLE_Ifpack2 AND ${PACKAGE_NAME}_ENABLE_Amesos2) OR - (${PACKAGE_NAME}_ENABLE_Epetra AND ${PACKAGE_NAME}_ENABLE_Ifpack AND ${PACKAGE_NAME}_ENABLE_Amesos)) +IF ((${PACKAGE_NAME}_ENABLE_Ifpack2 AND ${PACKAGE_NAME}_ENABLE_Amesos2)) TRIBITS_ADD_EXECUTABLE( Redirection @@ -44,15 +43,3 @@ TRIBITS_ADD_EXECUTABLE( ) ENDIF() - - IF (${PACKAGE_NAME}_ENABLE_Epetra AND ${PACKAGE_NAME}_ENABLE_Ifpack AND ${PACKAGE_NAME}_ENABLE_Amesos) - - TRIBITS_ADD_TEST( - Redirection - NAME "Redirection_Epetra" - ARGS "--linAlgebra=Epetra" - NUM_MPI_PROCS 4 - COMM mpi # HAVE_MPI required - ) - - ENDIF() diff --git a/packages/muelu/test/permutation/CMakeLists.txt b/packages/muelu/test/permutation/CMakeLists.txt deleted file mode 100644 index 96a13a1dc4b4..000000000000 --- a/packages/muelu/test/permutation/CMakeLists.txt +++ /dev/null @@ -1,17 +0,0 @@ - -TRIBITS_INCLUDE_DIRECTORIES(${CMAKE_CURRENT_SOURCE_DIR}) -TRIBITS_INCLUDE_DIRECTORIES(${CMAKE_CURRENT_SOURCE_DIR}/../../src) - -# GH: remove all the permutation tests based on this? -IF(NOT HAVE_MUELU_COMPLEX AND ${PACKAGE_NAME}_ENABLE_EpetraExt AND ${PACKAGE_NAME}_ENABLE_Epetra AND NOT ${PACKAGE_NAME}_ENABLE_Tpetra) - TRIBITS_ADD_EXECUTABLE_AND_TEST( - Permutation - SOURCES Permutation.cpp - ARGS "--linAlgebra=Epetra" - COMM serial mpi - ) -ENDIF() - -TRIBITS_COPY_FILES_TO_BINARY_DIR(Permutation_cp -SOURCE_FILES test1.txt test2.txt test3.txt test4.txt test5.txt exp1.txt exp2.txt exp3.txt exp4.txt exp5.txt -) diff --git a/packages/muelu/test/permutation/Permutation.cpp b/packages/muelu/test/permutation/Permutation.cpp deleted file mode 100644 index e35fc4ecaded..000000000000 --- a/packages/muelu/test/permutation/Permutation.cpp +++ /dev/null @@ -1,310 +0,0 @@ -// @HEADER -// ***************************************************************************** -// MueLu: A package for multigrid based preconditioning -// -// Copyright 2012 NTESS and the MueLu contributors. -// SPDX-License-Identifier: BSD-3-Clause -// ***************************************************************************** -// @HEADER - -#include - -// Teuchos -#include -#include -#include -#include -#include - -#include -#include - -#include -#include -#include -#include - -#include "MueLu_ConfigDefs.hpp" - -#include "MueLu_Utilities.hpp" -#include "MueLu_Level.hpp" -#include "MueLu_FactoryManager.hpp" -#include "MueLu_HierarchyUtils.hpp" -#include "MueLu_PermutationFactory.hpp" - -#include "MueLu_Exceptions.hpp" - -#include -/**********************************************************************************/ - -namespace MueLuTests { - -template -Teuchos::RCP GetEpetraMatrix(std::string name, const Teuchos::RCP level, const Teuchos::RCP& fct) { - Teuchos::RCP > result = level->Get > >(name, fct.get()); - Teuchos::RCP > crsres = Teuchos::rcp_dynamic_cast >(result); - Teuchos::RCP > crsmat = crsres->getCrsMatrix(); - Teuchos::RCP > epcrsmat = Teuchos::rcp_dynamic_cast >(crsmat); - Teuchos::RCP epres = epcrsmat->getEpetra_CrsMatrix(); - return epres; -} - -// run tests with "Algebraic" permutation strategy and nDofsPerNode = 1 -template -bool runPermutationTest(const std::string input_filename, const std::string expected_filename, const Teuchos::RCP >& comm) { -#include - -#ifndef HAVE_MUELU_INST_COMPLEX_INT_INT - Teuchos::RCP out = Teuchos::fancyOStream(Teuchos::rcpFromRef(std::cout)); - out->setOutputToRootOnly(0); - - Epetra_CrsMatrix* ptrA = NULL; - Epetra_CrsMatrix* ptrExpected = NULL; - int ret = EpetraExt::MatlabFileToCrsMatrix(input_filename.c_str(), - *Xpetra::toEpetra(comm), - ptrA); - - if (ret != 0) - std::cout << "failed to read matrix from file" << std::endl; - - if (expected_filename.size() > 0) { - int ret2 = EpetraExt::MatlabFileToCrsMatrix(expected_filename.c_str(), - *Xpetra::toEpetra(comm), - ptrExpected); - - if (ret2 != 0) - std::cout << "failed to read matrix from file" << std::endl; - } - Teuchos::RCP epA = Teuchos::rcp(ptrA); - Teuchos::RCP epExpected = Teuchos::rcp(ptrExpected); - - // Epetra_CrsMatrix -> Xpetra::Matrix - Teuchos::RCP exA = Teuchos::rcp(new EpetraCrsMatrix(epA)); - Teuchos::RCP crsOp = Teuchos::rcp(new CrsMatrixWrap(exA)); - Teuchos::RCP A = Teuchos::rcp_dynamic_cast(crsOp); - A->SetFixedBlockSize(1); - - Teuchos::RCP Finest = Teuchos::rcp(new Level()); - Finest->SetLevelID(0); // must be level 0 for NullspaceFactory - Finest->Set("A", A); - - // permute full matrix - Teuchos::RCP PermFact = Teuchos::rcp(new MueLu::PermutationFactory()); - PermFact->SetParameter("PermutationStrategy", Teuchos::ParameterEntry(std::string("Algebraic"))); - // PermFact->SetParameter("PermutationStrategy",Teuchos::ParameterEntry(std::string("Local"))); - PermFact->SetParameter("PermutationRowMapName", Teuchos::ParameterEntry(std::string(""))); - PermFact->SetFactory("PermutationRowMapFactory", Teuchos::null); - - // setup main factory manager - Teuchos::RCP M = Teuchos::rcp(new FactoryManager()); - M->SetFactory("permQT", PermFact); - M->SetFactory("A", MueLu::NoFactory::getRCP()); // this is the input matrix - MueLu::SetFactoryManager SFMFinest(Finest, M); - - // prepare building process for permutation operators - Finest->Request("A", PermFact.get()); - Finest->Request("permA", PermFact.get()); - Finest->Request("permP", PermFact.get()); - Finest->Request("permQT", PermFact.get()); - Finest->Request("permScaling", PermFact.get()); - Finest->Request("#RowPermutations", PermFact.get()); - Finest->Request("#ColPermutations", PermFact.get()); - Finest->Request("#WideRangeRowPermutations", PermFact.get()); - Finest->Request("#WideRangeColPermutations", PermFact.get()); - - // build permutation operators - PermFact->Build(*Finest); - - // std::cout << "P" << *GetEpetraMatrix("permP", Finest, PermFact) << std::endl; - // std::cout << "Q^T" << *GetEpetraMatrix("permQT", Finest, PermFact) << std::endl; - // std::cout << "permA" << *GetEpetraMatrix("A", Finest, PermFact) << std::endl; - - Teuchos::RCP epResult = GetEpetraMatrix("A", Finest, PermFact); - // std::cout << *epResult << std::endl; - - if (epExpected != Teuchos::null) { - Epetra_CrsMatrix* comparison = NULL; - EpetraExt::MatrixMatrix::Add(*epResult, false, -1.0, *epExpected, false, 1.0, comparison); - comparison->FillComplete(); - double norm = comparison->NormInf(); - delete comparison; - comparison = NULL; - - if (norm < 1.0e-14) { - *out << "** PASSED **: " << input_filename << std::endl; - return true; - } else { - *out << "-- FAILED --: " << input_filename << std::endl; - return false; - } - } -#endif - *out << "-- FAILED --: " << input_filename << " no result file found" << std::endl; - return false; // no result for comparison available -} - -// run tests with "Local" permutation strategy and nDofsPerNode = 3 -template -bool runPermutationTest2(const std::string input_filename, const std::string expected_filename, const Teuchos::RCP >& comm) { -#include - -#ifndef HAVE_MUELU_INST_COMPLEX_INT_INT - Teuchos::RCP out = Teuchos::fancyOStream(Teuchos::rcpFromRef(std::cout)); - out->setOutputToRootOnly(0); - - Epetra_CrsMatrix* ptrA = NULL; - Epetra_CrsMatrix* ptrExpected = NULL; - int ret = EpetraExt::MatlabFileToCrsMatrix(input_filename.c_str(), - *Xpetra::toEpetra(comm), - ptrA); - - if (ret != 0) - std::cout << "failed to read matrix from file" << std::endl; - - if (expected_filename.size() > 0) { - int ret2 = EpetraExt::MatlabFileToCrsMatrix(expected_filename.c_str(), - *Xpetra::toEpetra(comm), - ptrExpected); - - if (ret2 != 0) - std::cout << "failed to read matrix from file" << std::endl; - } - Teuchos::RCP epA = Teuchos::rcp(ptrA); - Teuchos::RCP epExpected = Teuchos::rcp(ptrExpected); - - // Epetra_CrsMatrix -> Xpetra::Matrix - Teuchos::RCP exA = Teuchos::rcp(new EpetraCrsMatrix(epA)); - Teuchos::RCP crsOp = Teuchos::rcp(new CrsMatrixWrap(exA)); - Teuchos::RCP A = Teuchos::rcp_dynamic_cast(crsOp); - A->SetFixedBlockSize(3); - - Teuchos::RCP Finest = Teuchos::rcp(new Level()); - Finest->SetLevelID(0); // must be level 0 for NullspaceFactory - Finest->Set("A", A); - - // permute full matrix - Teuchos::RCP PermFact = Teuchos::rcp(new MueLu::PermutationFactory()); - PermFact->SetParameter("PermutationStrategy", Teuchos::ParameterEntry(std::string("Local"))); - PermFact->SetParameter("PermutationRowMapName", Teuchos::ParameterEntry(std::string(""))); - PermFact->SetFactory("PermutationRowMapFactory", Teuchos::null); - - // setup main factory manager - Teuchos::RCP M = Teuchos::rcp(new FactoryManager()); - M->SetFactory("permQT", PermFact); - M->SetFactory("A", MueLu::NoFactory::getRCP()); // this is the input matrix - MueLu::SetFactoryManager SFMFinest(Finest, M); - - // prepare building process for permutation operators - Finest->Request("A", PermFact.get()); - Finest->Request("permA", PermFact.get()); - Finest->Request("permP", PermFact.get()); - Finest->Request("permQT", PermFact.get()); - Finest->Request("permScaling", PermFact.get()); - Finest->Request("#RowPermutations", PermFact.get()); - Finest->Request("#ColPermutations", PermFact.get()); - Finest->Request("#WideRangeRowPermutations", PermFact.get()); - Finest->Request("#WideRangeColPermutations", PermFact.get()); - - // build permutation operators - PermFact->Build(*Finest); - - // std::cout << "P" << *GetEpetraMatrix("permP", Finest, PermFact) << std::endl; - // std::cout << "Q^T" << *GetEpetraMatrix("permQT", Finest, PermFact) << std::endl; - // std::cout << "permA" << *GetEpetraMatrix("A", Finest, PermFact) << std::endl; - - Teuchos::RCP epResult = GetEpetraMatrix("A", Finest, PermFact); - // std::cout << *epResult << std::endl; - - if (epExpected != Teuchos::null) { - Epetra_CrsMatrix* comparison = NULL; - EpetraExt::MatrixMatrix::Add(*epResult, false, -1.0, *epExpected, false, 1.0, comparison); - comparison->FillComplete(); - // std::cout << *comparison << std::endl; - double norm = comparison->NormInf(); - delete comparison; - comparison = NULL; - - if (norm < 1.0e-14) { - *out << "** PASSED **: " << input_filename << std::endl; - return true; - } else { - *out << "-- FAILED --: " << input_filename << std::endl; - return false; - } - } -#endif - *out << "-- FAILED --: " << input_filename << " no result file found" << std::endl; - return false; // no result for comparison available -} - -} // namespace MueLuTests - -template -int main_(Teuchos::CommandLineProcessor& clp, Xpetra::UnderlyingLib lib, int argc, char* argv[]) { -#include - - using Teuchos::RCP; - using namespace MueLuTests; - - Teuchos::oblackholestream blackhole; - - RCP > comm = Teuchos::DefaultComm::getComm(); - int numProcs = comm->getSize(); - - bool bSuccess = true; -#ifndef HAVE_MUELU_INST_COMPLEX_INT_INT - // runPermutationTest(MatrixFileName, ExpectedFileName, comm) - if (runPermutationTest("test1.txt", "exp1.txt", comm) == false) bSuccess = false; - if (runPermutationTest("test2.txt", "exp2.txt", comm) == false) bSuccess = false; - if (runPermutationTest("test3.txt", "exp3.txt", comm) == false) bSuccess = false; - - // the following tests work only on 1 or 2 processors - if (numProcs == 1 || numProcs == 2) { - if (runPermutationTest2("test4.txt", "exp4.txt", comm) == false) bSuccess = false; - // test seems to be ok, but matrix addition is not working - // has wrong entries on the diagonal on proc1... -> wrong handling of index base? - // if(runPermutationTest2("test5.txt", "exp5.txt" /*"exp5.txt"*/, comm) == false) bSuccess = false; - } -#endif - if (bSuccess == false) - return EXIT_FAILURE; - return EXIT_SUCCESS; -} - -int main(int argc, char* argv[]) { - bool success = false; - - Teuchos::GlobalMPISession mpiSession(&argc, &argv); - - const bool throwExceptions = false; - const bool recogniseAllOptions = false; - - Teuchos::CommandLineProcessor clp(throwExceptions, recogniseAllOptions); - Xpetra::Parameters xpetraParameters(clp); - - std::string node = ""; - clp.setOption("node", &node, "node type (serial | openmp | cuda | hip)"); - - switch (clp.parse(argc, argv, NULL)) { - case Teuchos::CommandLineProcessor::PARSE_ERROR: return EXIT_FAILURE; - case Teuchos::CommandLineProcessor::PARSE_HELP_PRINTED: - case Teuchos::CommandLineProcessor::PARSE_UNRECOGNIZED_OPTION: - case Teuchos::CommandLineProcessor::PARSE_SUCCESSFUL: break; - } - - Xpetra::UnderlyingLib lib = xpetraParameters.GetLib(); - - if (lib == Xpetra::UseEpetra) { -#ifdef HAVE_MUELU_EPETRA - return main_(clp, lib, argc, argv); -#else - throw MueLu::Exceptions::RuntimeError("Epetra is not available"); -#endif - } - - if (lib == Xpetra::UseTpetra) { - std::cout << "Skip permutation tests for Tpetra." << std::endl; - } - - return (success ? EXIT_SUCCESS : EXIT_FAILURE); -} diff --git a/packages/muelu/test/permutation/exp1.txt b/packages/muelu/test/permutation/exp1.txt deleted file mode 100644 index f05addfae256..000000000000 --- a/packages/muelu/test/permutation/exp1.txt +++ /dev/null @@ -1,3 +0,0 @@ -1 1 1.0 -2 2 1.0 -3 3 1.0 \ No newline at end of file diff --git a/packages/muelu/test/permutation/exp2.txt b/packages/muelu/test/permutation/exp2.txt deleted file mode 100644 index 1254af30db3d..000000000000 --- a/packages/muelu/test/permutation/exp2.txt +++ /dev/null @@ -1,6 +0,0 @@ -1 1 1.0 -2 2 1.0 -2 3 0.5 -3 1 1.4 -3 2 0.6 -3 3 1.0 \ No newline at end of file diff --git a/packages/muelu/test/permutation/exp3.txt b/packages/muelu/test/permutation/exp3.txt deleted file mode 100644 index 54c20b036e1d..000000000000 --- a/packages/muelu/test/permutation/exp3.txt +++ /dev/null @@ -1,6 +0,0 @@ -1 1 1 -2 2 1 -3 3 1 -4 4 1 -5 5 1 -6 6 1 \ No newline at end of file diff --git a/packages/muelu/test/permutation/exp4.txt b/packages/muelu/test/permutation/exp4.txt deleted file mode 100644 index 860fb927e6d3..000000000000 --- a/packages/muelu/test/permutation/exp4.txt +++ /dev/null @@ -1,6 +0,0 @@ -1 1 1.0 -2 2 1.0 -3 3 1.0 -4 4 1.0 -5 5 1.0 -6 6 1.0 \ No newline at end of file diff --git a/packages/muelu/test/permutation/exp5.txt b/packages/muelu/test/permutation/exp5.txt deleted file mode 100644 index 0dfe72b2b558..000000000000 --- a/packages/muelu/test/permutation/exp5.txt +++ /dev/null @@ -1,13 +0,0 @@ -1 1 1.0 -1 2 10.0 -2 1 0.01 -2 2 1.0 -3 1 1.1 -4 2 1.125 -3 3 1.0 -4 4 1.0 -5 5 1.0 -6 6 1.0 - - - diff --git a/packages/muelu/test/permutation/test1.txt b/packages/muelu/test/permutation/test1.txt deleted file mode 100644 index 2600cd39d02f..000000000000 --- a/packages/muelu/test/permutation/test1.txt +++ /dev/null @@ -1,3 +0,0 @@ -1 1 1.0 -2 3 2.0 -3 2 3.0 diff --git a/packages/muelu/test/permutation/test2.txt b/packages/muelu/test/permutation/test2.txt deleted file mode 100644 index 92d5d4290b45..000000000000 --- a/packages/muelu/test/permutation/test2.txt +++ /dev/null @@ -1,6 +0,0 @@ -1 1 1.0 -2 3 2.0 -2 2 1.0 -3 1 7.0 -3 2 5.0 -3 3 3.0 diff --git a/packages/muelu/test/permutation/test3.txt b/packages/muelu/test/permutation/test3.txt deleted file mode 100644 index 1f5433d482ed..000000000000 --- a/packages/muelu/test/permutation/test3.txt +++ /dev/null @@ -1,6 +0,0 @@ -3 1 3 -1 2 1 -2 3 2 -5 4 5 -6 5 6 -4 6 4 \ No newline at end of file diff --git a/packages/muelu/test/permutation/test4.txt b/packages/muelu/test/permutation/test4.txt deleted file mode 100644 index 5137403a2aa1..000000000000 --- a/packages/muelu/test/permutation/test4.txt +++ /dev/null @@ -1,6 +0,0 @@ -1 2 1.0 -2 1 2.0 -3 3 3.0 -4 5 4.0 -5 6 5.0 -6 4 6.0 \ No newline at end of file diff --git a/packages/muelu/test/permutation/test5.txt b/packages/muelu/test/permutation/test5.txt deleted file mode 100644 index e92a13ad7830..000000000000 --- a/packages/muelu/test/permutation/test5.txt +++ /dev/null @@ -1,10 +0,0 @@ -1 1 1.0 -2 2 2.0 -3 3 3.0 -4 4 4.0 -5 5 5.0 -6 6 6.0 -1 2 0.1 -2 1 200 -3 2 3.3 -4 1 4.5 \ No newline at end of file diff --git a/packages/muelu/test/scaling/CMakeLists.txt b/packages/muelu/test/scaling/CMakeLists.txt index ab9a95e1b7ff..2602e7a2a595 100644 --- a/packages/muelu/test/scaling/CMakeLists.txt +++ b/packages/muelu/test/scaling/CMakeLists.txt @@ -1,9 +1,7 @@ # Ensure that these cmake boolean variables are defined ASSERT_DEFINED( - ${PACKAGE_NAME}_ENABLE_Amesos ${PACKAGE_NAME}_ENABLE_Amesos2 ${PACKAGE_NAME}_ENABLE_Belos - ${PACKAGE_NAME}_ENABLE_Epetra ) # @@ -24,12 +22,8 @@ IF (${PACKAGE_NAME}_ENABLE_Ifpack2 AND ${PACKAGE_NAME}_ENABLE_Amesos2) SET(${PACKAGE_NAME}_HAVE_TPETRA_SOLVER_STACK YES) ENDIF() -IF (${PACKAGE_NAME}_ENABLE_Epetra AND ${PACKAGE_NAME}_ENABLE_EpetraExt AND ${PACKAGE_NAME}_ENABLE_Ifpack AND ${PACKAGE_NAME}_ENABLE_Amesos) - SET(${PACKAGE_NAME}_HAVE_EPETRA_SOLVER_STACK YES) -ENDIF() - -IF (${PACKAGE_NAME}_HAVE_TPETRA_SOLVER_STACK OR ${PACKAGE_NAME}_HAVE_EPETRA_SOLVER_STACK) +IF (${PACKAGE_NAME}_HAVE_TPETRA_SOLVER_STACK) TRIBITS_ADD_EXECUTABLE( Driver @@ -168,7 +162,6 @@ TRIBITS_ADD_TEST( PASS_REGULAR_EXPRESSION "Belos converged" ) -# not very elegant. The best would probably to make Reuse.cpp work for both Epetra and Tpetra IF (${PACKAGE_NAME}_HAVE_TPETRA_SOLVER_STACK) TRIBITS_ADD_EXECUTABLE( Reuse @@ -194,121 +187,12 @@ TRIBITS_COPY_FILES_TO_BINARY_DIR(ReadMatrix_cp ENDIF() -IF (${PACKAGE_NAME}_HAVE_EPETRA_SOLVER_STACK) - - TRIBITS_ADD_EXECUTABLE( - ImportPerformanceEpetra - SOURCES ImportPerformance - COMM mpi - TARGET_DEFINES ${PACKAGE_NAME}_UNDEFINE_Tpetra=1 - ) - -ENDIF() - - # # Tests # - -IF (${PACKAGE_NAME}_HAVE_EPETRA_SOLVER_STACK AND (NOT Xpetra_INT_LONG_LONG)) - - IF (${PACKAGE_NAME}_ENABLE_Zoltan) - TRIBITS_ADD_TEST( - Driver - NAME "DriverEpetra_Defaults" - ARGS "--linAlgebra=Epetra" - NUM_MPI_PROCS 4 - COMM mpi # HAVE_MPI required - ) - - TRIBITS_ADD_TEST( - Driver - NAME "DriverEpetra_Rerun" - ARGS "--linAlgebra=Epetra --xml=scaling-with-rerun.xml" - NUM_MPI_PROCS 4 - COMM mpi # HAVE_MPI required - ) - - TRIBITS_ADD_TEST( - Driver - NAME "DriverEpetra_isotropic_poisson" - ARGS "--linAlgebra=Epetra --xml=iso_poisson.xml" - NUM_MPI_PROCS 4 - COMM mpi # HAVE_MPI required - ) - - - TRIBITS_ADD_TEST( - Driver - NAME "DriverEpetra_Milestone" - ARGS "--linAlgebra=Epetra --xml=conchas_milestone_zoltan.xml" - NUM_MPI_PROCS 4 - COMM mpi # HAVE_MPI required - ) - - IF (${PACKAGE_NAME}_ENABLE_Zoltan AND ${PACKAGE_NAME}_ENABLE_Isorropia) - TRIBITS_ADD_TEST( - Driver - NAME "DriverEpetra_IsorropiaPoisson" - ARGS "--linAlgebra=Epetra --xml=isorropia.xml" - NUM_MPI_PROCS 4 - COMM mpi # HAVE_MPI required - ) - ENDIF() - - IF (${PACKAGE_NAME}_ENABLE_Zoltan AND ${PACKAGE_NAME}_ENABLE_Isorropia) - TRIBITS_ADD_TEST( - Driver - NAME "DriverEpetra_CircNspDependency" - ARGS "--linAlgebra=Epetra --xml=circ_nsp_dependency.xml" - NUM_MPI_PROCS 4 - COMM mpi # HAVE_MPI required - ) - ENDIF() - - ENDIF() - - MUELU_ADD_SERIAL_AND_MPI_TEST( - Driver - NAME "RAPScalingTestEpetra" - ARGS "--linAlgebra=Epetra --xml=rap.xml --solver=none --nx=50 --ny=50 --rebuild=1" - NUM_MPI_PROCS 4 - COMM serial mpi - ) - - MUELU_ADD_SERIAL_AND_MPI_TEST( - Driver - NAME "SmootherScalingTestEpetra" - ARGS "--linAlgebra=Epetra --xml=smoother.xml --nx=10 --ny=10 --solver=none" - NUM_MPI_PROCS 4 - COMM serial mpi - ) - - MUELU_ADD_SERIAL_AND_MPI_TEST( - ReadMatrix - NAME "ReadMatrixEpetra" - ARGS "--linAlgebra=Epetra --xml=simple.xml" - NUM_MPI_PROCS 4 - COMM serial mpi - ) - -ENDIF() - -IF (${PACKAGE_NAME}_HAVE_EPETRA_SOLVER_STACK) - - TRIBITS_ADD_TEST( - ImportPerformanceEpetra - NAME "ImportPerformance_Epetra" - ARGS "--linAlgebra=Epetra --nx=30 --ny=30" - NUM_MPI_PROCS 4 - COMM mpi # HAVE_MPI required - ) - -ENDIF() - IF (${PACKAGE_NAME}_HAVE_TPETRA_SOLVER_STACK) TRIBITS_ADD_TEST( @@ -641,29 +525,6 @@ IF(Tpetra_INST_SERIAL) ) ENDIF() -IF (${PACKAGE_NAME}_ENABLE_Epetra) - TRIBITS_ADD_TEST( - SpMVPerformance - NAME_POSTFIX "Epetra" - COMM mpi - NUM_MPI_PROCS 1 - ARGS "--linAlgebra=Epetra --nx=120 --ny=120 --nz=120 --matrixType=Laplace3D --num-runs=1000" - PASS_REGULAR_EXPRESSION "Complete" - RUN_SERIAL - CATEGORIES PERFORMANCE - ) - - TRIBITS_ADD_TEST( - SpMVPerformance - NAME_POSTFIX "Epetra" - COMM mpi - NUM_MPI_PROCS 4 - ARGS "--linAlgebra=Epetra --nx=120 --ny=120 --nz=120 --matrixType=Laplace3D --num-runs=1000" - PASS_REGULAR_EXPRESSION "Complete" - RUN_SERIAL - CATEGORIES PERFORMANCE - ) -ENDIF() # Driver to evaluate low level Matrix Matrix multiply kernels potentially using different TPLs # This differs from the existing Matrix Matrix driver that forms parallel random matrices for testing diff --git a/packages/muelu/test/simple1D/CMakeLists.txt b/packages/muelu/test/simple1D/CMakeLists.txt deleted file mode 100644 index b432b8c7c923..000000000000 --- a/packages/muelu/test/simple1D/CMakeLists.txt +++ /dev/null @@ -1,74 +0,0 @@ - -TRIBITS_INCLUDE_DIRECTORIES(${CMAKE_CURRENT_SOURCE_DIR}) -TRIBITS_INCLUDE_DIRECTORIES(${CMAKE_CURRENT_SOURCE_DIR}/../unit_tests) -TRIBITS_INCLUDE_DIRECTORIES(${CMAKE_CURRENT_SOURCE_DIR}/../../src) -TRIBITS_INCLUDE_DIRECTORIES(${CMAKE_CURRENT_SOURCE_DIR}/../../src/Transfers) -TRIBITS_INCLUDE_DIRECTORIES(${CMAKE_CURRENT_SOURCE_DIR}/../../src/Smoothers) -TRIBITS_INCLUDE_DIRECTORIES(${CMAKE_CURRENT_SOURCE_DIR}/../../gallery) -TRIBITS_INCLUDE_DIRECTORIES(${CMAKE_CURRENT_SOURCE_DIR}/../../adapters/belos) - -# first ensure that these cmake boolean variables are defined -ASSERT_DEFINED( - ${PACKAGE_NAME}_ENABLE_Amesos - ${PACKAGE_NAME}_ENABLE_Ifpack - ) - -ASSERT_DEFINED( - ${PACKAGE_NAME}_ENABLE_Amesos2 - ) - -IF (${PACKAGE_NAME}_ENABLE_Epetra) - - # TRIBITS_ADD_EXECUTABLE_AND_TEST( - # amesos2 - # SOURCES amesos2.cpp - # ARGS "" - # COMM serial mpi - # ) - - - # TRIBITS_ADD_EXECUTABLE_AND_TEST( - # simple1D-mergedSmoo - # SOURCES mainMergedSmoo.cpp - # ARGS "" - # COMM serial mpi - # ) - - # JJH: 9/3/2013 This test is failing. Until Andrey fixes it, I'm allowing - # it to compile (for coverage) but not run. - IF (${PACKAGE_NAME}_ENABLE_Belos) - TRIBITS_ADD_EXECUTABLE( - simple1D-Emin - SOURCES Emin.cpp - COMM serial mpi - ) - ENDIF() - - # TRIBITS_ADD_EXECUTABLE_AND_TEST( - # simple1D-Emin - # SOURCES Emin.cpp - # ARGS "" - # COMM serial mpi - # ) - - TRIBITS_ADD_EXECUTABLE( - simple1D-UncoupledAggregation - SOURCES simple1D-UncoupledAggregation.cpp - ) - - TRIBITS_ADD_TEST( - simple1D-UncoupledAggregation - NAME "simple1D-UncoupledAggregation-Tpetra" - ARGS "--linAlgebra=Tpetra" - COMM serial mpi - ) - - IF( ${PACKAGE_NAME}_ENABLE_Epetra ) - TRIBITS_ADD_TEST( - simple1D-UncoupledAggregation - NAME "simple1D-UncoupledAggregation-Epetra" - ARGS "--linAlgebra=Epetra" - COMM serial mpi - ) - ENDIF() -ENDIF() diff --git a/packages/muelu/test/simple1D/Emin.cpp b/packages/muelu/test/simple1D/Emin.cpp deleted file mode 100644 index bac68d3a4ace..000000000000 --- a/packages/muelu/test/simple1D/Emin.cpp +++ /dev/null @@ -1,365 +0,0 @@ -// @HEADER -// ***************************************************************************** -// MueLu: A package for multigrid based preconditioning -// -// Copyright 2012 NTESS and the MueLu contributors. -// SPDX-License-Identifier: BSD-3-Clause -// ***************************************************************************** -// @HEADER - -#include - -// Teuchos -#include -#include -#include -#include -#include -#include - -#include "MueLu_Exceptions.hpp" - -#include "MueLu_Hierarchy.hpp" -#include "MueLu_EminPFactory.hpp" -#include "MueLu_PatternFactory.hpp" -#include "MueLu_ConstraintFactory.hpp" -#include "MueLu_NullspaceFactory.hpp" -#include "MueLu_NullspacePresmoothFactory.hpp" -#include "MueLu_SaPFactory.hpp" -#include "MueLu_RAPFactory.hpp" -#include "MueLu_IfpackSmoother.hpp" -#include "MueLu_Ifpack2Smoother.hpp" -#include "MueLu_ProjectorSmoother.hpp" - -#include "MueLu_MergedSmoother.hpp" -#include "MueLu_AmesosSmoother.hpp" -#include "MueLu_Amesos2Smoother.hpp" -#include "MueLu_Utilities.hpp" - -#include "MueLu_UncoupledAggregationFactory.hpp" -#include "MueLu_TentativePFactory.hpp" -#include "MueLu_TransPFactory.hpp" -#include "MueLu_SmootherFactory.hpp" - -#include "MueLu_VerbosityLevel.hpp" - -#include -#include -#include -#include -#include -#include -#include - -// Galeri -#include -#include - -#include "MueLu_UseDefaultTypes.hpp" -#include -/**********************************************************************************/ - -// Belos -#include "BelosConfigDefs.hpp" -#include "BelosLinearProblem.hpp" -#include "BelosBlockCGSolMgr.hpp" -#include "BelosMueLuAdapter.hpp" // this header defines Belos::MueLuOp() - -#define NEUMANN -#define EMIN - -using Teuchos::ArrayRCP; -using Teuchos::RCP; -using Teuchos::rcp; - -namespace MueLuTests { - -#include "MueLu_UseShortNames.hpp" - -RCP gimmeGaussSeidelProto(Xpetra::UnderlyingLib lib) { - RCP smooProto; - Teuchos::ParameterList ifpackList; - ifpackList.set("relaxation: sweeps", (LO)1); - ifpackList.set("relaxation: damping factor", (SC)1.0); - - if (lib == Xpetra::UseEpetra) { -#if defined(HAVE_MUELU_EPETRA) && defined(HAVE_MUELU_IFPACK) -#if defined(HAVE_MUELU_SERIAL) - ifpackList.set("relaxation: type", "symmetric Gauss-Seidel"); - smooProto = MueLu::GetIfpackSmoother("point relaxation stand-alone", ifpackList); -#else - throw(MueLu::Exceptions::RuntimeError("gimmeGaussSeidelProto: IfpackSmoother only available with SerialNode.")); -#endif -#endif - } else if (lib == Xpetra::UseTpetra) { -#if defined(HAVE_MUELU_IFPACK2) - ifpackList.set("relaxation: type", "Symmetric Gauss-Seidel"); - smooProto = rcp(new Ifpack2Smoother("RELAXATION", ifpackList)); -#endif - } - if (smooProto == Teuchos::null) { - throw(MueLu::Exceptions::RuntimeError("gimmeGaussSeidelSmoother: smoother error")); - } - - return smooProto; -} - -RCP gimmeCoarseProto(Xpetra::UnderlyingLib lib, const std::string& coarseSolver, int rank) { - RCP coarseProto; - if (lib == Xpetra::UseEpetra) { -#if defined(HAVE_MUELU_EPETRA) && defined(HAVE_MUELU_AMESOS) -#if defined(HAVE_MUELU_SERIAL) - if (rank == 0) std::cout << "CoarseGrid: AMESOS" << std::endl; - Teuchos::ParameterList amesosList; - amesosList.set("PrintTiming", true); - coarseProto = MueLu::GetAmesosSmoother("Amesos_Klu", amesosList); -#else - throw(MueLu::Exceptions::RuntimeError("gimmeGaussSeidelProto: AmesosSmoother only available with SerialNode.")); -#endif -#endif - } else if (lib == Xpetra::UseTpetra) { - if (coarseSolver == "amesos2") { -#if defined(HAVE_MUELU_AMESOS2) - if (rank == 0) std::cout << "CoarseGrid: AMESOS2" << std::endl; - Teuchos::ParameterList paramList; // unused - coarseProto = rcp(new Amesos2Smoother("Superlu", paramList)); -#else - std::cout << "AMESOS2 not available (try --coarseSolver=ifpack2)" << std::endl; - return Teuchos::null; // TODO test for exception //EXIT_FAILURE; -#endif // HAVE_MUELU_AMESOS2 - } else if (coarseSolver == "ifpack2") { -#if defined(HAVE_MUELU_IFPACK2) - if (rank == 0) std::cout << "CoarseGrid: IFPACK2" << std::endl; - Teuchos::ParameterList ifpack2List; - ifpack2List.set("fact: ilut level-of-fill", (double)99); // TODO ?? - ifpack2List.set("fact: drop tolerance", 0.0); - ifpack2List.set("fact: absolute threshold", 0.0); - ifpack2List.set("fact: relative threshold", 1.0); - coarseProto = rcp(new Ifpack2Smoother("ILUT", ifpack2List)); -#else - std::cout << "IFPACK2 not available (try --coarseSolver=amesos2)" << std::endl; - // TODO TEUCHOS_TEST_FOR_EXCEPTION - return Teuchos::null; -#endif - } else { - std::cout << "Unknow coarse grid solver (try --coarseSolver=ifpack2 or --coarseSolver=amesos2)" << std::endl; - return Teuchos::null; - } - } - if (coarseProto == Teuchos::null) { - throw(MueLu::Exceptions::RuntimeError("main: coarse smoother error")); - } - - return coarseProto; -} - -RCP gimmeMergedSmoother(int nSmoothers, Xpetra::UnderlyingLib lib, const std::string& coarseSolver, int rank) { - ArrayRCP > smootherList(nSmoothers); - - for (int i = 0; i < nSmoothers; i++) - smootherList[i] = gimmeGaussSeidelProto(lib); - - return rcp(new MergedSmoother(smootherList)); - // verbose mode: return rcp (new MergedSmoother(smootherList, true)); -} - -} // namespace MueLuTests - -int main(int argc, char* argv[]) { -#include "MueLu_UseShortNames.hpp" - - using namespace MueLuTests; - - Teuchos::oblackholestream blackhole; - Teuchos::GlobalMPISession mpiSession(&argc, &argv, &blackhole); - - bool success = false; - bool verbose = true; - try { - RCP > comm = Teuchos::DefaultComm::getComm(); - - /**********************************************************************************/ - /* SET TEST PARAMETERS */ - /**********************************************************************************/ - // Note: use --help to list available options. - Teuchos::CommandLineProcessor clp(false); - - // Default is Laplace1D with nx = 8748. - // It's a nice size for 1D and perfect aggregation. (6561=3^8) - // Nice size for 1D and perfect aggregation on small numbers of processors. (8748=4*3^7) - Galeri::Xpetra::Parameters matrixParameters(clp, 8748); // manage parameters of the test case - Xpetra::Parameters xpetraParameters(clp); // manage parameters of xpetra - - // custom parameters - int nSmoothers = 2; - LO maxLevels = 3; - LO its = 10; - std::string coarseSolver = "ifpack2"; - // std::string coarseSolver="amesos2"; - clp.setOption("nSmoothers", &nSmoothers, "number of Gauss-Seidel smoothers in the MergedSmoothers"); - clp.setOption("maxLevels", &maxLevels, "maximum number of levels allowed. If 1, then a MergedSmoother is used on the coarse grid"); - clp.setOption("its", &its, "number of multigrid cycles"); - clp.setOption("coarseSolver", &coarseSolver, "amesos2 or ifpack2 (Tpetra specific. Ignored for Epetra)"); - - switch (clp.parse(argc, argv)) { - case Teuchos::CommandLineProcessor::PARSE_HELP_PRINTED: return EXIT_SUCCESS; - case Teuchos::CommandLineProcessor::PARSE_ERROR: - case Teuchos::CommandLineProcessor::PARSE_UNRECOGNIZED_OPTION: return EXIT_FAILURE; - case Teuchos::CommandLineProcessor::PARSE_SUCCESSFUL: break; - } - - matrixParameters.check(); - xpetraParameters.check(); - // TODO: check custom parameters - - if (comm->getRank() == 0) { - // matrixParameters.print(); - // xpetraParameters.print(); - // TODO: print custom parameters - } - - /**********************************************************************************/ - /* CREATE INITIAL MATRIX */ - /**********************************************************************************/ - const RCP map = MapFactory::Build(xpetraParameters.GetLib(), matrixParameters.GetNumGlobalElements(), 0, comm); - RCP > Pr = - Galeri::Xpetra::BuildProblem(matrixParameters.GetMatrixType(), map, matrixParameters.GetParameterList()); // TODO: Matrix vs. CrsMatrixWrap - RCP Op = Pr->BuildMatrix(); - -#ifdef NEUMANN - // Tranform matrix to Neumann b.c. - // Essentially, we need to update two diagonal elements - - // TODO: calls to getLocalRowView not really needed - - Op->resumeFill(); - - Teuchos::ArrayView indices; - Teuchos::ArrayView values; - Teuchos::Array newValues(2, 0.0); - - size_t myRank = Op->getRowMap()->getComm()->getRank(); - size_t nCpus = Op->getRowMap()->getComm()->getSize(); - if (myRank == 0) { // JG TODO: can we use rowMap->isNodeLocalElement(0) instead for more genericity? - // LO firstRow = 0; - newValues[0] = 1.0; - newValues[1] = -1.0; - Op->getLocalRowView(0, indices, values); - Op->replaceLocalValues(0, indices, newValues); - } - if (myRank == nCpus - 1) { // JG TODO: can we use rowMap->isNodeLocalElement(lastRow) instead for more genericity? - LO lastRow = Op->getLocalNumRows() - 1; - newValues[0] = -1.0; - newValues[1] = 1.0; - Op->getLocalRowView(lastRow, indices, values); - Op->replaceLocalValues(lastRow, indices, newValues); - } - - Op->fillComplete(); -#endif // NEUMANN - - /**********************************************************************************/ - /* */ - /**********************************************************************************/ - - RCP nullSpace = MultiVectorFactory::Build(map, 1); - nullSpace->putScalar((SC)1.0); - Teuchos::Array::magnitudeType> norms(1); - nullSpace->norm1(norms); - if (comm->getRank() == 0) - std::cout << "||NS|| = " << norms[0] << std::endl; - - RCP > H = rcp(new Hierarchy()); - H->SetDefaultVerbLevel(MueLu::Extreme); - H->IsPreconditioner(false); - - RCP Finest = H->GetLevel(); - Finest->setDefaultVerbLevel(Teuchos::VERB_HIGH); - Finest->Set("A", Op); - Finest->Set("Nullspace", nullSpace); - - FactoryManager M; - - M.SetFactory("Aggregates", rcp(new UncoupledAggregationFactory())); - M.SetFactory("Ptent", rcp(new TentativePFactory())); - M.SetFactory("P", rcp(new SaPFactory())); - -#ifdef EMIN - // Energy-minimization - RCP PatternFact = rcp(new PatternFactory()); -#if 0 - PatternFact->SetFactory("P", M.GetFactory("Ptent")); -#else - PatternFact->SetFactory("P", M.GetFactory("P")); -#endif - M.SetFactory("Ppattern", PatternFact); - - RCP EminPFact = rcp(new EminPFactory()); - EminPFact->SetFactory("P", M.GetFactory("Ptent")); - M.SetFactory("P", EminPFact); - - RCP NullPreFact = rcp(new NullspacePresmoothFactory()); - NullPreFact->SetFactory("Nullspace", M.GetFactory("Nullspace")); - M.SetFactory("Nullspace", NullPreFact); -#endif - - RCP smooProto = gimmeMergedSmoother(nSmoothers, xpetraParameters.GetLib(), coarseSolver, comm->getRank()); - M.SetFactory("Smoother", rcp(new SmootherFactory(smooProto))); - - Teuchos::ParameterList status; - - RCP coarseProto; - if (maxLevels != 1) - coarseProto = gimmeCoarseProto(xpetraParameters.GetLib(), coarseSolver, comm->getRank()); - else - coarseProto = gimmeMergedSmoother(nSmoothers, xpetraParameters.GetLib(), coarseSolver, comm->getRank()); - - if (coarseProto == Teuchos::null) - return EXIT_FAILURE; - -#ifdef NEUMANN - // Use coarse level projection solver - RCP projectedSolver = rcp(new ProjectorSmoother(coarseProto)); - RCP coarseSolveFact = rcp(new SmootherFactory(projectedSolver, Teuchos::null)); -#else - RCP coarseSolveFact = rcp(new SmootherFactory(coarseProto, Teuchos::null)); -#endif - M.SetFactory("CoarseSolver", coarseSolveFact); - - H->EnableGraphDumping("graph.dot", 2); - - H->Setup(M, 0, maxLevels); - // if (comm->getRank() == 0) { - // std::cout << "======================\n Multigrid statistics \n======================" << std::endl; - // status.print(std::cout,Teuchos::ParameterList::PrintOptions().indent(2)); - // } - - // Define RHS - RCP X = MultiVectorFactory::Build(map, 1); - RCP RHS = MultiVectorFactory::Build(map, 1); - - X->setSeed(846930886); - X->randomize(); - X->norm2(norms); - if (comm->getRank() == 0) - std::cout << "||X_true|| = " << std::setiosflags(std::ios::fixed) << std::setprecision(10) << norms[0] << std::endl; - - Op->apply(*X, *RHS, Teuchos::NO_TRANS, (SC)1.0, (SC)0.0); - - // Use AMG directly as an iterative method - { - X->putScalar((SC)0.0); - - H->Iterate(*RHS, *X, its); - - X->norm2(norms); - if (comm->getRank() == 0) - std::cout << "||X_" << std::setprecision(2) << its << "|| = " << std::setiosflags(std::ios::fixed) << std::setprecision(10) << norms[0] << std::endl; - } - - success = true; - } - TEUCHOS_STANDARD_CATCH_STATEMENTS(verbose, std::cerr, success); - - return (success ? EXIT_SUCCESS : EXIT_FAILURE); -} diff --git a/packages/muelu/test/simple1D/aggregation.cpp b/packages/muelu/test/simple1D/aggregation.cpp deleted file mode 100644 index 5f412b92d6f6..000000000000 --- a/packages/muelu/test/simple1D/aggregation.cpp +++ /dev/null @@ -1,107 +0,0 @@ -// @HEADER -// ***************************************************************************** -// MueLu: A package for multigrid based preconditioning -// -// Copyright 2012 NTESS and the MueLu contributors. -// SPDX-License-Identifier: BSD-3-Clause -// ***************************************************************************** -// @HEADER - -#include - -// Teuchos -#include -#include -#include -#include -#include - -#include "MueLu_Hierarchy.hpp" -#include "MueLu_SaPFactory.hpp" -#include "MueLu_Utilities.hpp" - -/**********************************************************************************/ -/* CREATE INITAL MATRIX */ -/**********************************************************************************/ -#include -#include -#include -#include -#include -#include - -// Galeri -#include -#include - -#include "MueLu_UseDefaultTypes.hpp" -#include -/**********************************************************************************/ - -int main(int argc, char *argv[]) { -#include "MueLu_UseShortNames.hpp" - - Teuchos::oblackholestream blackhole; - Teuchos::GlobalMPISession mpiSession(&argc, &argv, &blackhole); - RCP > comm = Teuchos::DefaultComm::getComm(); - - /**********************************************************************************/ - /* SET TEST PARAMETERS */ - /**********************************************************************************/ - // Note: use --help to list available options. - Teuchos::CommandLineProcessor clp(false); - - // Default is Laplace1D with nx = 8748. - // It's a nice size for 1D and perfect aggregation. (6561=3^8) - // Nice size for 1D and perfect aggregation on small numbers of processors. (8748=4*3^7) - Galeri::Xpetra::Parameters matrixParameters(clp, 8748); // manage parameters of the test case - Xpetra::Parameters xpetraParameters(clp); // manage parameters of xpetra - - // custom parameters - LO maxLevels = 3; - LO its = 10; - clp.setOption("maxLevels", &maxLevels, "maximum number of levels allowed"); - clp.setOption("its", &its, "number of multigrid cycles"); - - switch (clp.parse(argc, argv)) { - case Teuchos::CommandLineProcessor::PARSE_HELP_PRINTED: return EXIT_SUCCESS; - case Teuchos::CommandLineProcessor::PARSE_ERROR: - case Teuchos::CommandLineProcessor::PARSE_UNRECOGNIZED_OPTION: return EXIT_FAILURE; - case Teuchos::CommandLineProcessor::PARSE_SUCCESSFUL: break; - } - - matrixParameters.check(); - xpetraParameters.check(); - // TODO: check custom parameters - - if (comm->getRank() == 0) { - matrixParameters.print(); - xpetraParameters.print(); - // TODO: print custom parameters - } - - /**********************************************************************************/ - /* CREATE INITIAL MATRIX */ - /**********************************************************************************/ - const RCP map = MapFactory::Build(xpetraParameters.GetLib(), matrixParameters.GetNumGlobalElements(), 0, comm); - RCP > Pr = - Galeri::Xpetra::BuildProblem(matrixParameters.GetMatrixType(), map, matrixParameters.GetParameterList()); // TODO: Matrix vs. CrsMatrixWrap - RCP Op = Pr->BuildMatrix(); - /**********************************************************************************/ - /* */ - /**********************************************************************************/ - - MueLu::AggregationOptions aggOptions; - aggOptions.SetPrintFlag(6); - aggOptions.SetMinNodesPerAggregate(2); - aggOptions.SetMaxNeighAlreadySelected(0); - aggOptions.SetOrdering("natural"); - UncoupledAggregationFactory aggFact(aggOptions); - RCP graph = rcp(new Graph(Op->getCrsGraph(), "someGraphLabel")); - double t0 = MPI_Wtime(); - RCP aggregates = aggFact.Build(*graph); - double t1 = MPI_Wtime() - t0; - printf("Aggregation time only: %g\n", t1); - - return EXIT_SUCCESS; -} diff --git a/packages/muelu/test/simple1D/amesos2.cpp b/packages/muelu/test/simple1D/amesos2.cpp deleted file mode 100644 index edfbc9b3d4f0..000000000000 --- a/packages/muelu/test/simple1D/amesos2.cpp +++ /dev/null @@ -1,282 +0,0 @@ -// @HEADER -// ***************************************************************************** -// MueLu: A package for multigrid based preconditioning -// -// Copyright 2012 NTESS and the MueLu contributors. -// SPDX-License-Identifier: BSD-3-Clause -// ***************************************************************************** -// @HEADER - -#include - -// Teuchos -#include -#include -#include -#include -#include - -#include "MueLu_Hierarchy.hpp" -#include "MueLu_SaPFactory.hpp" -#include "MueLu_RAPFactory.hpp" -#include "MueLu_IfpackSmoother.hpp" -#include "MueLu_Ifpack2Smoother.hpp" -#include "MueLu_GenericPRFactory.hpp" - -#include "MueLu_AmesosSmoother.hpp" -#include "MueLu_Amesos2Smoother.hpp" -#include "MueLu_Utilities.hpp" - -#include -#include -#include -#include -#include -#include - -// Galeri -#include -#include - -#include "MueLu_UseDefaultTypes.hpp" -#include -/**********************************************************************************/ - -// Belos -#include "BelosConfigDefs.hpp" -#include "BelosLinearProblem.hpp" -#include "BelosBlockCGSolMgr.hpp" -#include "BelosMueLuAdapter.hpp" // this header defines Belos::MueLuOp() - -int main(int argc, char *argv[]) { -#include "MueLu_UseShortNames.hpp" - - Teuchos::oblackholestream blackhole; - Teuchos::GlobalMPISession mpiSession(&argc, &argv, &blackhole); - RCP > comm = Teuchos::DefaultComm::getComm(); - - /**********************************************************************************/ - /* SET TEST PARAMETERS */ - /**********************************************************************************/ - // Note: use --help to list available options. - Teuchos::CommandLineProcessor clp(false); - - // Default is Laplace1D with nx = 8748. - // It's a nice size for 1D and perfect aggregation. (6561=3^8) - // Nice size for 1D and perfect aggregation on small numbers of processors. (8748=4*3^7) - Galeri::Xpetra::Parameters matrixParameters(clp, 8748); // manage parameters of the test case - Xpetra::Parameters xpetraParameters(clp); // manage parameters of xpetra - - // custom parameters - LO maxLevels = 1; - LO its = 2; - std::string coarseSolver = "amesos2"; - clp.setOption("maxLevels", &maxLevels, "maximum number of levels allowed"); - clp.setOption("its", &its, "number of multigrid cycles"); - clp.setOption("coarseSolver", &coarseSolver, "amesos2 or ifpack2 (Tpetra specific. Ignored for Epetra)"); - - switch (clp.parse(argc, argv)) { - case Teuchos::CommandLineProcessor::PARSE_HELP_PRINTED: return EXIT_SUCCESS; - case Teuchos::CommandLineProcessor::PARSE_ERROR: - case Teuchos::CommandLineProcessor::PARSE_UNRECOGNIZED_OPTION: return EXIT_FAILURE; - case Teuchos::CommandLineProcessor::PARSE_SUCCESSFUL: break; - } - - matrixParameters.check(); - xpetraParameters.check(); - // TODO: check custom parameters - - if (comm->getRank() == 0) { - matrixParameters.print(); - xpetraParameters.print(); - // TODO: print custom parameters - } - -#ifdef FOR_PARALLEL_DEBUGGING - // Utils::BreakForDebugger(*comm); - - LO mypid = comm->getRank(); - - if (mypid == 0) std::cout << "Host and Process Ids for tasks" << std::endl; - for (LO i = 0; i < comm->getSize(); i++) { - if (i == mypid) { - char buf[80]; - char hostname[80]; - gethostname(hostname, sizeof(hostname)); - LO pid = getpid(); - sprintf(buf, "Host: %s\tMPI rank: %d,\tPID: %d\n\tattach %d\n\tcontinue\n", - hostname, mypid, pid, pid); - printf("%s\n", buf); - fflush(stdout); - sleep(1); - } - } - - if (mypid == 0) { - printf("** Enter a character to continue > "); - fflush(stdout); - char go = ' '; - scanf("%c", &go); - } - comm->barrier(); -#endif - - /**********************************************************************************/ - /* CREATE INITIAL MATRIX */ - /**********************************************************************************/ - const RCP map = MapFactory::Build(xpetraParameters.GetLib(), matrixParameters.GetNumGlobalElements(), 0, comm); - RCP > Pr = - Galeri::Xpetra::BuildProblem(matrixParameters.GetMatrixType(), map, matrixParameters.GetParameterList()); // TODO: Matrix vs. CrsMatrixWrap - RCP Op = Pr->BuildMatrix(); - /**********************************************************************************/ - /* */ - /**********************************************************************************/ - - // dump matrix to file - // std::string fileName = "Amat.mm"; - // Utils::Write(fileName,Op); - - RCP nullSpace = MultiVectorFactory::Build(map, 1); - nullSpace->putScalar((SC)1.0); - Teuchos::Array::magnitudeType> norms(1); - nullSpace->norm1(norms); - if (comm->getRank() == 0) - std::cout << "||NS|| = " << norms[0] << std::endl; - - RCP > H = rcp(new Hierarchy()); - H->setDefaultVerbLevel(Teuchos::VERB_HIGH); - RCP Finest = rcp(new MueLu::Level()); - Finest->setDefaultVerbLevel(Teuchos::VERB_HIGH); - - Finest->Set("A", Op); - Finest->Set("Nullspace", nullSpace); - Finest->Request("Nullspace"); // FIXME putting this in to avoid error until Merge needs business - // FIXME is implemented - - Finest->Set("NullSpace", nullSpace); - H->SetLevel(Finest); - - RCP UncoupledAggFact = rcp(new UncoupledAggregationFactory()); - UncoupledAggFact->SetMinNodesPerAggregate(3); - UncoupledAggFact->SetMaxNeighAlreadySelected(0); - UncoupledAggFact->SetOrdering("natural"); - - RCP TentPFact = rcp(new TentativePFactory(UncoupledAggFact)); - - RCP Pfact = rcp(new SaPFactory(TentPFact)); - RCP Rfact = rcp(new TransPFactory()); - RCP PRfact = rcp(new GenericPRFactory(Pfact, Rfact)); - RCP Acfact = rcp(new RAPFactory()); - - RCP smooProto; - Teuchos::ParameterList ifpackList; - ifpackList.set("relaxation: sweeps", (LO)1); - ifpackList.set("relaxation: damping factor", (SC)1.0); - /* - ifpackList.set("type", "Chebyshev"); - ifpackList.set("chebyshev: degree", (int) 1); - ifpackList.set("chebyshev: max eigenvalue", (double) 2.0); - ifpackList.set("chebyshev: min eigenvalue", (double) 1.0); - ifpackList.set("chebyshev: zero starting solution", false); - */ - if (xpetraParameters.GetLib() == Xpetra::UseEpetra) { -#if defined(HAVE_MUELU_EPETRA) && defined(HAVE_MUELU_IFPACK) - ifpackList.set("relaxation: type", "symmetric Gauss-Seidel"); - smooProto = rcp(new IfpackSmoother("point relaxation stand-alone", ifpackList)); -#endif - } else if (xpetraParameters.GetLib() == Xpetra::UseTpetra) { -#if defined(HAVE_MUELU_IFPACK2) - ifpackList.set("relaxation: type", "Symmetric Gauss-Seidel"); - smooProto = rcp(new Ifpack2Smoother("RELAXATION", ifpackList)); -#endif - } - if (smooProto == Teuchos::null) { - throw(MueLu::Exceptions::RuntimeError("main: smoother error")); - } - - RCP SmooFact = rcp(new SmootherFactory(smooProto)); - Acfact->setVerbLevel(Teuchos::VERB_HIGH); - - Teuchos::ParameterList status; - status = H->FullPopulate(PRfact, Acfact, SmooFact, 0, maxLevels); - // RCP coarseLevel = H.GetLevel(1); - // RCP P = coarseLevel->template Get< RCP >("P"); - // fileName = "Pfinal.mm"; - // Utils::Write(fileName,P); - if (comm->getRank() == 0) { - std::cout << "======================\n Multigrid statistics \n======================" << std::endl; - status.print(std::cout, Teuchos::ParameterList::PrintOptions().indent(2)); - } - - // FIXME we should be able to just call smoother->SetNIts(50) ... but right now an exception gets thrown - - RCP coarseProto; - if (xpetraParameters.GetLib() == Xpetra::UseEpetra) { -#if defined(HAVE_MUELU_EPETRA) && defined(HAVE_MUELU_AMESOS) - if (comm->getRank() == 0) std::cout << "CoarseGrid: AMESOS" << std::endl; - Teuchos::ParameterList amesosList; - amesosList.set("PrintTiming", true); - coarseProto = rcp(new AmesosSmoother("Amesos_Klu", amesosList)); - //#elif -#endif - } else if (xpetraParameters.GetLib() == Xpetra::UseTpetra) { - if (coarseSolver == "amesos2") { -#if defined(HAVE_MUELU_AMESOS2) - if (comm->getRank() == 0) std::cout << "CoarseGrid: AMESOS2" << std::endl; - Teuchos::ParameterList paramList; // unused - coarseProto = rcp(new Amesos2Smoother("Superlu", paramList)); -#else - std::cout << "AMESOS2 not available (try --coarseSolver=ifpack2)" << std::endl; - return EXIT_FAILURE; -#endif // HAVE_MUELU_AMESOS2 - } else if (coarseSolver == "ifpack2") { -#if defined(HAVE_MUELU_IFPACK2) - if (comm->getRank() == 0) std::cout << "CoarseGrid: IFPACK2" << std::endl; - Teuchos::ParameterList ifpack2List; - ifpack2List.set("fact: ilut level-of-fill", 99); // TODO ?? - ifpack2List.set("fact: drop tolerance", 0); - ifpack2List.set("fact: absolute threshold", 0); - ifpack2List.set("fact: relative threshold", 0); - coarseProto = rcp(new Ifpack2Smoother("ILUT", ifpack2List)); -#else - std::cout << "IFPACK2 not available (try --coarseSolver=amesos2)" << std::endl; - return EXIT_FAILURE; -#endif - } else { - std::cout << "Unknow coarse grid solver (try --coarseSolver=ifpack2 or --coarseSolver=amesos2)" << std::endl; - return EXIT_FAILURE; - } - } - if (coarseProto == Teuchos::null) { - throw(MueLu::Exceptions::RuntimeError("main: coarse smoother error")); - } - - SmootherFactory coarseSolveFact(coarseProto); - H->SetCoarsestSolver(coarseSolveFact, MueLu::PRE); - - // Define RHS - RCP X = MultiVectorFactory::Build(map, 1); - RCP RHS = MultiVectorFactory::Build(map, 1); - - X->setSeed(846930886); - X->randomize(); - X->norm2(norms); - if (comm->getRank() == 0) - std::cout << "||X_true|| = " << std::setiosflags(std::ios::fixed) << std::setprecision(10) << norms[0] << std::endl; - - Op->apply(*X, *RHS, Teuchos::NO_TRANS, (SC)1.0, (SC)0.0); - - // Use AMG directly as an iterative method - { - X->putScalar((SC)0.0); - - H->PrintResidualHistory(true); - H->Iterate(*RHS, *X, its); - - X->norm2(norms); - if (comm->getRank() == 0) - std::cout << "||X_" << std::setprecision(2) << its << "|| = " << std::setiosflags(std::ios::fixed) << std::setprecision(10) << norms[0] << std::endl; - } - - return EXIT_SUCCESS; -} diff --git a/packages/muelu/test/simple1D/amesos2StandAlone.cpp b/packages/muelu/test/simple1D/amesos2StandAlone.cpp deleted file mode 100644 index ea77dce35c3c..000000000000 --- a/packages/muelu/test/simple1D/amesos2StandAlone.cpp +++ /dev/null @@ -1,134 +0,0 @@ -// @HEADER -// ***************************************************************************** -// MueLu: A package for multigrid based preconditioning -// -// Copyright 2012 NTESS and the MueLu contributors. -// -// Amesos2: Templated Direct Sparse Solver Package -// -// Copyright 2011 NTESS and the Amesos2 contributors. -// SPDX-License-Identifier: BSD-3-Clause -// ***************************************************************************** -// @HEADER - -/** - \file SimpleSolve.cpp - \author Eric Bavier - \date Sat Jul 17 10:35:39 2010 - - \brief Simple example of Amesos2 usage. - - This example solves a simple sparse system of linear equations using the - Amesos2 interface to the Superlu solver. - */ - -#include -#include -#include -#include -#include -#include - -#include -#include -#include -#include - -#include "Amesos2.hpp" -#include "Amesos2_Version.hpp" - -int main(int argc, char *argv[]) { - Tpetra::ScopeGuard mpiSession(&argc, &argv); - - typedef Tpetra::MultiVector<> MV; - typedef MV::scalar_type Scalar; - typedef MV::local_ordinal_type LO; - typedef MV::global_ordinal_type GO; - - typedef Teuchos::ScalarTraits ST; - typedef Tpetra::CrsMatrix MAT; - - using std::endl; - using Teuchos::tuple; - using Tpetra::global_size_t; - - std::ostream &out = std::cout; - RCP fos = Teuchos::fancyOStream(rcpFromRef(out)); - - RCP > comm = Tpetra::getDefaultComm(); - size_t myRank = comm->getRank(); - - out << "Amesos2 stand-alone test" << endl - << endl; - - const size_t numVectors = 1; - - int numGlobalElements = 1000; - RCP > map = Tpetra::createUniformContigMap(numGlobalElements, comm); - const size_t numMyElements = map->getLocalNumElements(); - Teuchos::ArrayView myGlobalElements = map->getLocalElementList(); - - RCP A = Tpetra::createCrsMatrix(map, 3); - - // 1D Laplace - for (size_t i = 0; i < numMyElements; i++) { - if (myGlobalElements[i] == 0) { - A->insertGlobalValues(myGlobalElements[i], - tuple(myGlobalElements[i], myGlobalElements[i] + 1), - tuple(2.0, -1.0)); - } else if (myGlobalElements[i] == numGlobalElements - 1) { - A->insertGlobalValues(myGlobalElements[i], - tuple(myGlobalElements[i] - 1, myGlobalElements[i]), - tuple(-1.0, 2.0)); - } else { - A->insertGlobalValues(myGlobalElements[i], - tuple(myGlobalElements[i] - 1, myGlobalElements[i], myGlobalElements[i] + 1), - tuple(-1.0, 2.0, -1.0)); - } - } - A->fillComplete(); - - /* Create X */ - RCP X = rcp(new MV(map, numVectors)); - Teuchos::ScalarTraits::seedrandom(846930886); - X->randomize(); - - /* Print X norm */ - { - Teuchos::Array norms(1); - X->norm2(norms); - if (myRank == 0) - *fos << "||X_true|| = " << std::setiosflags(std::ios::fixed) << std::setprecision(10) << norms[0] << endl; - } - - /* Create B */ - RCP B = rcp(new MV(map, numVectors)); - A->apply(*X, *B, Teuchos::NO_TRANS, (Scalar)1.0, (Scalar)0.0); - - /* Reset X */ - X->putScalar((Scalar)0.0); - - // Create solver interface to Superlu through Amesos::Factory - RCP > solver = Amesos2::create("Superlu", A, X, B); - - // Solve - solver->symbolicFactorization().numericFactorization().solve(); - - /* Print X norm */ - { - Teuchos::Array norms(1); - X->norm2(norms); - if (myRank == 0) - *fos << "||X_directSolve|| = " << std::setiosflags(std::ios::fixed) << std::setprecision(10) << norms[0] << endl; - } - - // /* Print the solution */ - // RCP fos = Teuchos::fancyOStream(rcpFromRef(out)); - - // *fos << "Solution :" << endl; - // X->describe(*fos,Teuchos::VERB_EXTREME); - // *fos << endl; - - // We are done. - return 0; -} diff --git a/packages/muelu/test/simple1D/mainMergedSmoo.cpp b/packages/muelu/test/simple1D/mainMergedSmoo.cpp deleted file mode 100644 index f7f0bd59d97b..000000000000 --- a/packages/muelu/test/simple1D/mainMergedSmoo.cpp +++ /dev/null @@ -1,270 +0,0 @@ -// @HEADER -// ***************************************************************************** -// MueLu: A package for multigrid based preconditioning -// -// Copyright 2012 NTESS and the MueLu contributors. -// SPDX-License-Identifier: BSD-3-Clause -// ***************************************************************************** -// @HEADER - -#include - -// Teuchos -#include -#include -#include -#include -#include - -#include "MueLu_Hierarchy.hpp" -#include "MueLu_SaPFactory.hpp" -#include "MueLu_RAPFactory.hpp" -#include "MueLu_IfpackSmoother.hpp" -#include "MueLu_Ifpack2Smoother.hpp" -#include "MueLu_GenericPRFactory.hpp" - -#include "MueLu_MergedSmoother.hpp" -#include "MueLu_AmesosSmoother.hpp" -#include "MueLu_Amesos2Smoother.hpp" -#include "MueLu_Utilities.hpp" - -#include -#include -#include -#include -#include -#include - -// Galeri -#include -#include - -#include "MueLu_UseDefaultTypes.hpp" -#include -/**********************************************************************************/ - -// Belos -#include "BelosConfigDefs.hpp" -#include "BelosLinearProblem.hpp" -#include "BelosBlockCGSolMgr.hpp" -#include "BelosMueLuAdapter.hpp" // this header defines Belos::MueLuOp() - -namespace MueLuTests { -#include "MueLu_UseShortNames.hpp" - -RCP gimmeGaussSeidelProto(Xpetra::UnderlyingLib lib) { - RCP smooProto; - Teuchos::ParameterList ifpackList; - ifpackList.set("relaxation: sweeps", (LO)1); - ifpackList.set("relaxation: damping factor", (SC)1.0); - - if (lib == Xpetra::UseEpetra) { -#if defined(HAVE_MUELU_EPETRA) && defined(HAVE_MUELU_IFPACK) - ifpackList.set("relaxation: type", "symmetric Gauss-Seidel"); - smooProto = rcp(new IfpackSmoother("point relaxation stand-alone", ifpackList)); -#endif - } else if (lib == Xpetra::UseTpetra) { -#if defined(HAVE_MUELU_IFPACK2) - ifpackList.set("relaxation: type", "Symmetric Gauss-Seidel"); - smooProto = rcp(new Ifpack2Smoother("RELAXATION", ifpackList)); -#endif - } - if (smooProto == Teuchos::null) { - throw(MueLu::Exceptions::RuntimeError("gimmeGaussSeidelSmoother: smoother error")); - } - - return smooProto; -} - -RCP gimmeCoarseProto(Xpetra::UnderlyingLib lib, const std::string& coarseSolver, int rank) { - RCP coarseProto; - if (lib == Xpetra::UseEpetra) { -#if defined(HAVE_MUELU_EPETRA) && defined(HAVE_MUELU_AMESOS) - if (rank == 0) std::cout << "CoarseGrid: AMESOS" << std::endl; - Teuchos::ParameterList amesosList; - amesosList.set("PrintTiming", true); - coarseProto = rcp(new AmesosSmoother("Amesos_Klu", amesosList)); - //#elif... -#endif - } else if (lib == Xpetra::UseTpetra) { - if (coarseSolver == "amesos2") { -#if defined(HAVE_MUELU_AMESOS2) - if (rank == 0) std::cout << "CoarseGrid: AMESOS2" << std::endl; - Teuchos::ParameterList paramList; // unused - coarseProto = rcp(new Amesos2Smoother("Superlu", paramList)); -#else - std::cout << "AMESOS2 not available (try --coarseSolver=ifpack2)" << std::endl; - return Teuchos::null; // TODO test for exception //EXIT_FAILURE; -#endif // HAVE_MUELU_AMESOS2 - } else if (coarseSolver == "ifpack2") { -#if defined(HAVE_MUELU_IFPACK2) - if (rank == 0) std::cout << "CoarseGrid: IFPACK2" << std::endl; - Teuchos::ParameterList ifpack2List; - ifpack2List.set("fact: ilut level-of-fill", 99); // TODO ?? - ifpack2List.set("fact: drop tolerance", 0); - ifpack2List.set("fact: absolute threshold", 0); - ifpack2List.set("fact: relative threshold", 0); - coarseProto = rcp(new Ifpack2Smoother("ILUT", ifpack2List)); -#else - std::cout << "IFPACK2 not available (try --coarseSolver=amesos2)" << std::endl; - // TODO TEUCHOS_TEST_FOR_EXCEPTION - return Teuchos::null; -#endif - } else { - std::cout << "Unknow coarse grid solver (try --coarseSolver=ifpack2 or --coarseSolver=amesos2)" << std::endl; - return Teuchos::null; - } - } - if (coarseProto == Teuchos::null) { - throw(MueLu::Exceptions::RuntimeError("main: coarse smoother error")); - } - - return coarseProto; -} - -RCP gimmeMergedSmoother(int nSmoothers, Xpetra::UnderlyingLib lib, const std::string& coarseSolver, int rank) { - ArrayRCP > smootherList(nSmoothers); - - for (int i = 0; i < nSmoothers; i++) - smootherList[i] = gimmeGaussSeidelProto(lib); - - return rcp(new MergedSmoother(smootherList)); - // verbose mode: return rcp (new MergedSmoother(smootherList, true)); -} - -} // namespace MueLuTests - -int main(int argc, char* argv[]) { -#include "MueLu_UseShortNames.hpp" - - using namespace MueLuTests; - - Teuchos::oblackholestream blackhole; - Teuchos::GlobalMPISession mpiSession(&argc, &argv, &blackhole); - RCP > comm = Teuchos::DefaultComm::getComm(); - - /**********************************************************************************/ - /* SET TEST PARAMETERS */ - /**********************************************************************************/ - // Note: use --help to list available options. - Teuchos::CommandLineProcessor clp(false); - - // Default is Laplace1D with nx = 8748. - // It's a nice size for 1D and perfect aggregation. (6561=3^8) - // Nice size for 1D and perfect aggregation on small numbers of processors. (8748=4*3^7) - Galeri::Xpetra::Parameters matrixParameters(clp, 8748); // manage parameters of the test case - Xpetra::Parameters xpetraParameters(clp); // manage parameters of xpetra - - // custom parameters - int nSmoothers = 2; - LO maxLevels = 3; - LO its = 10; - std::string coarseSolver = "ifpack2"; - clp.setOption("nSmoothers", &nSmoothers, "number of Gauss-Seidel smoothers in the MergedSmootehrs"); - clp.setOption("maxLevels", &maxLevels, "maximum number of levels allowed. If 1, then a MergedSmoother is used on the coarse grid"); - clp.setOption("its", &its, "number of multigrid cycles"); - clp.setOption("coarseSolver", &coarseSolver, "amesos2 or ifpack2 (Tpetra specific. Ignored for Epetra)"); - - switch (clp.parse(argc, argv)) { - case Teuchos::CommandLineProcessor::PARSE_HELP_PRINTED: return EXIT_SUCCESS; - case Teuchos::CommandLineProcessor::PARSE_ERROR: - case Teuchos::CommandLineProcessor::PARSE_UNRECOGNIZED_OPTION: return EXIT_FAILURE; - case Teuchos::CommandLineProcessor::PARSE_SUCCESSFUL: break; - } - - matrixParameters.check(); - xpetraParameters.check(); - // TODO: check custom parameters - - if (comm->getRank() == 0) { - matrixParameters.print(); - xpetraParameters.print(); - // TODO: print custom parameters - } - - /**********************************************************************************/ - /* CREATE INITIAL MATRIX */ - /**********************************************************************************/ - const RCP map = MapFactory::Build(xpetraParameters.GetLib(), matrixParameters.GetNumGlobalElements(), 0, comm); - RCP > Pr = - Galeri::Xpetra::BuildProblem(matrixParameters.GetMatrixType(), map, matrixParameters.GetParameterList()); // TODO: Matrix vs. CrsMatrixWrap - RCP Op = Pr->BuildMatrix(); - /**********************************************************************************/ - /* */ - /**********************************************************************************/ - - RCP nullSpace = MultiVectorFactory::Build(map, 1); - nullSpace->putScalar((SC)1.0); - Teuchos::Array::magnitudeType> norms(1); - nullSpace->norm1(norms); - if (comm->getRank() == 0) - std::cout << "||NS|| = " << norms[0] << std::endl; - - RCP > H = rcp(new Hierarchy()); - H->setDefaultVerbLevel(Teuchos::VERB_HIGH); - RCP Finest = rcp(new MueLu::Level()); - Finest->setDefaultVerbLevel(Teuchos::VERB_HIGH); - - Finest->Set("A", Op); - Finest->Set("Nullspace", nullSpace); - Finest->Request("Nullspace"); // FIXME putting this in to avoid error until Merge needs business - // FIXME is implemented - - Finest->Set("NullSpace", nullSpace); - H->SetLevel(Finest); - - RCP UncoupledAggFact = rcp(new UncoupledAggregationFactory()); - RCP TentPFact = rcp(new TentativePFactory(UncoupledAggFact)); - - RCP Pfact = rcp(new SaPFactory(TentPFact)); - RCP Rfact = rcp(new TransPFactory()); - RCP PRfact = rcp(new GenericPRFactory(Pfact, Rfact)); - RCP Acfact = rcp(new RAPFactory()); - - RCP smooProto = gimmeMergedSmoother(nSmoothers, xpetraParameters.GetLib(), coarseSolver, comm->getRank()); - RCP SmooFact = rcp(new SmootherFactory(smooProto)); - Acfact->setVerbLevel(Teuchos::VERB_HIGH); - - Teuchos::ParameterList status; - status = H->FullPopulate(PRfact, Acfact, SmooFact, 0, maxLevels); - if (comm->getRank() == 0) { - std::cout << "======================\n Multigrid statistics \n======================" << std::endl; - status.print(std::cout, Teuchos::ParameterList::PrintOptions().indent(2)); - } - - RCP coarseProto; - if (maxLevels != 1) { - coarseProto = gimmeCoarseProto(xpetraParameters.GetLib(), coarseSolver, comm->getRank()); - } else { - coarseProto = gimmeMergedSmoother(nSmoothers, xpetraParameters.GetLib(), coarseSolver, comm->getRank()); - } - if (coarseProto == Teuchos::null) return EXIT_FAILURE; - SmootherFactory coarseSolveFact(coarseProto); - H->SetCoarsestSolver(coarseSolveFact, MueLu::PRE); - - // Define RHS - RCP X = MultiVectorFactory::Build(map, 1); - RCP RHS = MultiVectorFactory::Build(map, 1); - - X->setSeed(846930886); - X->randomize(); - X->norm2(norms); - if (comm->getRank() == 0) - std::cout << "||X_true|| = " << std::setiosflags(std::ios::fixed) << std::setprecision(10) << norms[0] << std::endl; - - Op->apply(*X, *RHS, Teuchos::NO_TRANS, (SC)1.0, (SC)0.0); - - // Use AMG directly as an iterative method - { - X->putScalar((SC)0.0); - - H->PrintResidualHistory(true); - H->Iterate(*RHS, *X, its); - - X->norm2(norms); - if (comm->getRank() == 0) - std::cout << "||X_" << std::setprecision(2) << its << "|| = " << std::setiosflags(std::ios::fixed) << std::setprecision(10) << norms[0] << std::endl; - } - - return EXIT_SUCCESS; -} diff --git a/packages/muelu/test/simple1D/simple1D-UncoupledAggregation.cpp b/packages/muelu/test/simple1D/simple1D-UncoupledAggregation.cpp deleted file mode 100644 index 5cf3106a8f55..000000000000 --- a/packages/muelu/test/simple1D/simple1D-UncoupledAggregation.cpp +++ /dev/null @@ -1,165 +0,0 @@ -// @HEADER -// ***************************************************************************** -// MueLu: A package for multigrid based preconditioning -// -// Copyright 2012 NTESS and the MueLu contributors. -// SPDX-License-Identifier: BSD-3-Clause -// ***************************************************************************** -// @HEADER - -#include - -// Teuchos -#include -#include -#include -#include -#include -#include -#include - -#include "MueLu_Hierarchy.hpp" -#include "MueLu_CoalesceDropFactory.hpp" -#include "MueLu_AmalgamationFactory.hpp" -#include "MueLu_UncoupledAggregationFactory.hpp" -#include "MueLu_Utilities.hpp" - -/**********************************************************************************/ -/* CREATE INITAL MATRIX */ -/**********************************************************************************/ -#include -#include -#include -#include -#include -#include -#include - -// Galeri -// Galeri -#include -#include -#include -#include -/**********************************************************************************/ - -template -int main_(Teuchos::CommandLineProcessor &clp, Xpetra::UnderlyingLib lib, int argc, char *argv[]) { -#include - - Teuchos::oblackholestream blackhole; - - bool success = false; - bool verbose = true; - try { - Teuchos::RCP > comm = Teuchos::DefaultComm::getComm(); - - /**********************************************************************************/ - /* SET TEST PARAMETERS */ - /**********************************************************************************/ - - // Default is Laplace1D with nx = 8748. - // It's a nice size for 1D and perfect aggregation. (6561=3^8) - // Nice size for 1D and perfect aggregation on small numbers of processors. (8748=4*3^7) - Galeri::Xpetra::Parameters matrixParameters(clp, 8748); // manage parameters of the test case - Xpetra::Parameters xpetraParameters(clp); // manage parameters of xpetra - - // custom parameters - // std::string aggOrdering = "natural"; - int minPerAgg = 2; // was 3 in simple - int maxNbrAlreadySelected = 0; - int printTimings = 0; - - // clp.setOption("aggOrdering",&aggOrdering,"aggregation ordering strategy (natural,graph)"); - clp.setOption("maxNbrSel", &maxNbrAlreadySelected, "maximum # of nbrs allowed to be in other aggregates"); - clp.setOption("minPerAgg", &minPerAgg, "minimum #DOFs per aggregate"); - clp.setOption("timings", &printTimings, "print timings to screen"); - - switch (clp.parse(argc, argv)) { - case Teuchos::CommandLineProcessor::PARSE_HELP_PRINTED: return EXIT_SUCCESS; - case Teuchos::CommandLineProcessor::PARSE_ERROR: - case Teuchos::CommandLineProcessor::PARSE_UNRECOGNIZED_OPTION: return EXIT_FAILURE; - case Teuchos::CommandLineProcessor::PARSE_SUCCESSFUL: break; - } - - Teuchos::RCP globalTimeMonitor = Teuchos::rcp(new Teuchos::TimeMonitor(*Teuchos::TimeMonitor::getNewTimer("Timings: Global Time"))); - - matrixParameters.check(); - xpetraParameters.check(); - - if (comm->getRank() == 0) { - std::cout << xpetraParameters << matrixParameters; - } - - /**********************************************************************************/ - /* CREATE INITIAL MATRIX */ - /**********************************************************************************/ - Teuchos::RCP map; - Teuchos::RCP A; - - { - Teuchos::TimeMonitor tm(*Teuchos::TimeMonitor::getNewTimer("Timings: Matrix Build")); - - map = MapFactory::Build(lib, matrixParameters.GetNumGlobalElements(), 0, comm); - Teuchos::RCP > Pr = - Galeri::Xpetra::BuildProblem(matrixParameters.GetMatrixType(), map, matrixParameters.GetParameterList()); // TODO: Matrix vs. CrsMatrixWrap - A = Pr->BuildMatrix(); - } - /**********************************************************************************/ - /* */ - /**********************************************************************************/ - - Teuchos::RCP hierarchy = Teuchos::rcp(new Hierarchy(A)); - hierarchy->SetDefaultVerbLevel(MueLu::toMueLuVerbLevel(Teuchos::VERB_EXTREME)); - hierarchy->SetMaxCoarseSize(100); - - /////////////////////////////////////////////////////////// - - Teuchos::RCP Finest = hierarchy->GetLevel(); // get finest level - - Finest->Set("A", A); - - Teuchos::RCP amalgFact = Teuchos::rcp(new AmalgamationFactory()); - Teuchos::RCP dropFact = Teuchos::rcp(new CoalesceDropFactory()); - dropFact->SetFactory("UnAmalgamationInfo", amalgFact); - - // aggregation factory - Teuchos::RCP UnCoupledAggFact = Teuchos::rcp(new UncoupledAggregationFactory(/*dropFact*/)); - UnCoupledAggFact->SetFactory("Graph", dropFact); - UnCoupledAggFact->SetFactory("DofsPerNode", dropFact); - // UnCoupledAggFact->SetFactory("Graph", dropFact); // UnCoupledAggFact not changed to new factory handling - // UnCoupledAggFact->SetMinNodesPerAggregate(minPerAgg); - // UnCoupledAggFact->SetMaxNeighAlreadySelected(maxNbrAlreadySelected); - // UnCoupledAggFact->SetOrdering(MueLu::AggOptions::GRAPH); - UnCoupledAggFact->SetParameter("aggregation: max selected neighbors", Teuchos::ParameterEntry(maxNbrAlreadySelected)); - UnCoupledAggFact->SetParameter("aggregation: min agg size", Teuchos::ParameterEntry(minPerAgg)); - UnCoupledAggFact->SetParameter("aggregation: ordering", Teuchos::ParameterEntry(std::string("graph"))); - - Finest->Request("Graph", dropFact.get()); - Finest->Request("DofsPerNode", dropFact.get()); - Finest->Request("UnAmalgamationInfo", amalgFact.get()); - UnCoupledAggFact->Build(*Finest); - - // Timer final summaries - globalTimeMonitor = Teuchos::null; // stop this timer before summary - - if (printTimings) { - Teuchos::TimeMonitor::summarize(); -#ifdef HAVE_TEUCHOS_ADD_TIME_MONITOR_TO_STACKED_TIMER - Teuchos::TimeMonitor::getStackedTimer()->report(std::cout, comm); -#endif - } - success = true; - } - TEUCHOS_STANDARD_CATCH_STATEMENTS(verbose, std::cerr, success); - - return (success ? EXIT_SUCCESS : EXIT_FAILURE); -} - -//- -- -------------------------------------------------------- -#define MUELU_AUTOMATIC_TEST_ETI_NAME main_ -#include "MueLu_Test_ETI.hpp" - -int main(int argc, char *argv[]) { - return Automatic_Test_ETI(argc, argv); -} diff --git a/packages/muelu/test/structured/CMakeLists.txt b/packages/muelu/test/structured/CMakeLists.txt index 6f0c3734dfb3..8fc8f116043a 100644 --- a/packages/muelu/test/structured/CMakeLists.txt +++ b/packages/muelu/test/structured/CMakeLists.txt @@ -92,40 +92,6 @@ IF (${PACKAGE_NAME}_ENABLE_Belos AND ${PACKAGE_NAME}_ENABLE_Amesos2) NUM_MPI_PROCS 4 ) - IF (${PACKAGE_NAME}_ENABLE_Epetra) - MUELU_ADD_SERIAL_AND_MPI_TEST( - Structured - NAME "Structured_Laplace2D_Epetra" - ARGS "--linAlgebra=Epetra --xml=structured_1dof.xml --matrixType=Laplace2D" - COMM serial mpi - NUM_MPI_PROCS 4 - ) - - MUELU_ADD_SERIAL_AND_MPI_TEST( - Structured - NAME "Structured_Laplace2D_Shift_Epetra" - ARGS "--linAlgebra=Epetra --xml=structured_1dof_shift.xml --matrixType=Laplace2D" - COMM serial mpi - NUM_MPI_PROCS 4 - ) - - MUELU_ADD_SERIAL_AND_MPI_TEST( - Structured - NAME "Structured_Elasticity3D_Epetra" - ARGS "--linAlgebra=Epetra --xml=structured_3dof.xml --matrixType=Elasticity3D --nx=25 --ny=25 --nz=25" - COMM serial mpi - NUM_MPI_PROCS 4 - ) - - MUELU_ADD_SERIAL_AND_MPI_TEST( - Structured - NAME "Structured_Line_Epetra" - ARGS "--linAlgebra=Epetra --xml=structured_interp_line.xml --matrixType=Laplace3D --nx=25 --ny=25 --nz=25" - COMM serial mpi - NUM_MPI_PROCS 4 - ) - ENDIF() - TRIBITS_COPY_FILES_TO_BINARY_DIR(Structured_cp SOURCE_FILES structured_1dof.xml structured_1dof_shift.xml structured_2dof.xml structured_3dof.xml structured_interp_line.xml structured_interp_kokkos.xml structured_interp_sa_kokkos.xml structured_tentative_kokkos.xml structured_scp_1dof.xml structured_sparc_1dof.xml diff --git a/packages/muelu/test/toggletransfer/CMakeLists.txt b/packages/muelu/test/toggletransfer/CMakeLists.txt index 0b1adb9a0174..9d6477693f76 100644 --- a/packages/muelu/test/toggletransfer/CMakeLists.txt +++ b/packages/muelu/test/toggletransfer/CMakeLists.txt @@ -8,10 +8,6 @@ TRIBITS_INCLUDE_DIRECTORIES(${CMAKE_CURRENT_SOURCE_DIR}/../../gallery) TRIBITS_INCLUDE_DIRECTORIES(${CMAKE_CURRENT_SOURCE_DIR}/../../adapters/belos) # first ensure that these cmake boolean variables are defined -ASSERT_DEFINED( - ${PACKAGE_NAME}_ENABLE_Amesos - ) - ASSERT_DEFINED( ${PACKAGE_NAME}_ENABLE_Amesos2 ) @@ -24,50 +20,6 @@ TRIBITS_ADD_EXECUTABLE( COMM serial mpi ) -IF (${PACKAGE_NAME}_ENABLE_Epetra AND ${PACKAGE_NAME}_ENABLE_EpetraExt AND - ${PACKAGE_NAME}_ENABLE_Ifpack AND ${PACKAGE_NAME}_ENABLE_Amesos) - - MUELU_ADD_SERIAL_AND_MPI_TEST( - TogglePFactory_driver - NAME "Driver_TogglePFactory_tent_tent_Epetra" - ARGS "--matrixType=Laplace3D --nx=40 --ny=40 --nz=60 --mz=1 --xmlFile=parameters_tent_tent.xml --linAlgebra=Epetra" - NUM_MPI_PROCS 4 - COMM serial mpi - ) - - MUELU_ADD_SERIAL_AND_MPI_TEST( - TogglePFactory_driver - NAME "Driver_TogglePFactory_sa_tent_Epetra" - ARGS "--matrixType=Laplace3D --nx=40 --ny=40 --nz=60 --mz=1 --xmlFile=parameters_sa_tent.xml --linAlgebra=Epetra" - NUM_MPI_PROCS 4 - COMM serial mpi - ) - - MUELU_ADD_SERIAL_AND_MPI_TEST( - TogglePFactory_driver - NAME "Driver_TogglePFactory_semi_tent_Epetra" - ARGS "--matrixType=Laplace3D --nx=40 --ny=40 --nz=60 --mz=1 --xmlFile=parameters_semi_tent.xml --linAlgebra=Epetra" - NUM_MPI_PROCS 4 - COMM serial mpi - ) - - TRIBITS_ADD_TEST( - TogglePFactory_driver - NAME "Driver_TogglePFactory_semi_tent_line_Epetra" - ARGS "--matrixType=Laplace3D --nx=40 --ny=40 --nz=60 --mz=1 --xmlFile=parameters_semi_tent_line.xml --linAlgebra=Epetra" - NUM_MPI_PROCS 4 - COMM serial mpi - ) - - TRIBITS_ADD_TEST( - TogglePFactory_driver - NAME "Driver_TogglePFactory_semi_sa_line_easy_Epetra" - ARGS "--matrixType=Laplace3D --nx=40 --ny=40 --nz=60 --mz=1 --xmlFile=parameters_semi_sa_easy.xml --linAlgebra=Epetra" - NUM_MPI_PROCS 4 - COMM serial mpi - ) -ENDIF() - IF (${PACKAGE_NAME}_ENABLE_Ifpack2 AND ${PACKAGE_NAME}_ENABLE_Amesos2) MUELU_ADD_SERIAL_AND_MPI_TEST( TogglePFactory_driver diff --git a/packages/muelu/test/unit_tests/CMakeLists.txt b/packages/muelu/test/unit_tests/CMakeLists.txt index ea356df4ea6a..db415fee955b 100644 --- a/packages/muelu/test/unit_tests/CMakeLists.txt +++ b/packages/muelu/test/unit_tests/CMakeLists.txt @@ -117,19 +117,6 @@ TRIBITS_COPY_FILES_TO_BINARY_DIR(UnitTestsTestMatrices_cp DEST_DIR ${CMAKE_CURRENT_BINARY_DIR}/TestMatrices ) -IF (${PACKAGE_NAME}_ENABLE_Epetra) - -IF( HAVE_${PACKAGE_NAME_UC}_DEPRECATED_CODE) -APPEND_SET(SOURCES - ParameterList/MLParameterListInterpreter.cpp -) -ENDIF() - -APPEND_SET(SOURCES - ParameterList/CreateSublists.cpp -) -ENDIF() - APPEND_SET(SOURCES_BLOCKED BlockedCoarseMapFactory.cpp BlockedPFactory.cpp @@ -148,12 +135,8 @@ ENDIF() # first ensure that these cmake boolean variables are defined ASSERT_DEFINED( - ${PACKAGE_NAME}_ENABLE_Amesos ${PACKAGE_NAME}_ENABLE_Amesos2 - ${PACKAGE_NAME}_ENABLE_Ifpack ${PACKAGE_NAME}_ENABLE_Ifpack2 - ${PACKAGE_NAME}_ENABLE_Epetra - ${PACKAGE_NAME}_ENABLE_EpetraExt ${PACKAGE_NAME}_ENABLE_Belos ${PACKAGE_NAME}_ENABLE_Zoltan ) @@ -165,10 +148,6 @@ IF(${PACKAGE_NAME}_ENABLE_Ifpack2) APPEND_SET(SOURCES_BLOCKED Smoothers/BlockedSmoother.cpp) ENDIF() -IF(${PACKAGE_NAME}_ENABLE_Epetra AND ${PACKAGE_NAME}_ENABLE_Ifpack) - APPEND_SET(SOURCES Smoothers/IfpackSmoother.cpp) -ENDIF() - IF(${PACKAGE_NAME}_ENABLE_Belos) APPEND_SET(SOURCES Smoothers/BelosSmoother.cpp) ENDIF() @@ -177,13 +156,6 @@ IF(${PACKAGE_NAME}_ENABLE_Stratimikos AND ${PACKAGE_NAME}_ENABLE_Thyra) APPEND_SET(SOURCES Smoothers/StratimikosSmoother.cpp) ENDIF() -IF(${PACKAGE_NAME}_ENABLE_Epetra AND ${PACKAGE_NAME}_ENABLE_Amesos) - APPEND_SET(SOURCES Smoothers/AmesosSmoother.cpp) - IF(NOT ${PACKAGE_NAME}_ENABLE_Amesos2) - APPEND_SET(SOURCES_BLOCKED Smoothers/BlockedDirectSolver.cpp) - ENDIF() -ENDIF() - IF(${PACKAGE_NAME}_ENABLE_Amesos2) APPEND_SET(SOURCES Smoothers/Amesos2Smoother.cpp) APPEND_SET(SOURCES_BLOCKED Smoothers/BlockedDirectSolver.cpp) @@ -201,8 +173,7 @@ IF (${PACKAGE_NAME}_ENABLE_Belos) APPEND_SET(SOURCES Adapters/BelosAdapters.cpp) ENDIF() -IF ((${PACKAGE_NAME}_ENABLE_Epetra AND ${PACKAGE_NAME}_ENABLE_EpetraExt AND ${PACKAGE_NAME}_ENABLE_Ifpack AND ${PACKAGE_NAME}_ENABLE_Amesos) OR - (${PACKAGE_NAME}_ENABLE_Ifpack2 AND ${PACKAGE_NAME}_ENABLE_Amesos2)) +IF ((${PACKAGE_NAME}_ENABLE_Ifpack2 AND ${PACKAGE_NAME}_ENABLE_Amesos2)) SET(${PACKAGE_NAME}_ENABLE_CreatePreconditionerTests ON) ELSE() SET(${PACKAGE_NAME}_ENABLE_CreatePreconditionerTests OFF) @@ -280,66 +251,6 @@ ENDIF() ) ENDIF() - IF (${PACKAGE_NAME}_ENABLE_Epetra AND ${PACKAGE_NAME}_ENABLE_EpetraExt) - - TRIBITS_ADD_TEST( - UnitTests - NAME "UnitTestsEpetra" - ARGS "--linAlgebra=Epetra" - PASS_REGULAR_EXPRESSION "End Result: TEST PASSED" - NUM_MPI_PROCS 1 - COMM serial mpi - ) - - TRIBITS_ADD_TEST( - UnitTests - NAME "UnitTestsEpetra" - ARGS "--linAlgebra=Epetra" - PASS_REGULAR_EXPRESSION "End Result: TEST PASSED" - NUM_MPI_PROCS 4 - COMM mpi - ) - - TRIBITS_ADD_TEST( - UnitTests_Blocked - NAME "UnitTestsBlockedEpetra" - ARGS "--linAlgebra=Epetra" - PASS_REGULAR_EXPRESSION "End Result: TEST PASSED" - NUM_MPI_PROCS 1 - COMM serial mpi - ) - - TRIBITS_ADD_TEST( - UnitTests_Blocked - NAME "UnitTestsBlockedEpetra" - ARGS "--linAlgebra=Epetra" - PASS_REGULAR_EXPRESSION "End Result: TEST PASSED" - NUM_MPI_PROCS 4 - COMM mpi - ) - - IF (${PACKAGE_NAME}_ENABLE_CreatePreconditionerTests) - TRIBITS_ADD_TEST( - UnitTests_CreatePreconditioner - NAME "UnitTestsCreatePreconditionerEpetra" - ARGS "--linAlgebra=Epetra" - PASS_REGULAR_EXPRESSION "End Result: TEST PASSED" - NUM_MPI_PROCS 1 - COMM serial mpi - ) - - TRIBITS_ADD_TEST( - UnitTests_CreatePreconditioner - NAME "UnitTestsCreatePreconditionerEpetra" - ARGS "--linAlgebra=Epetra" - PASS_REGULAR_EXPRESSION "End Result: TEST PASSED" - NUM_MPI_PROCS 4 - COMM mpi - ) - ENDIF() - - ENDIF() # Epetra / EpetraExt - TRIBITS_ADD_TEST( UnitTests NAME "UnitTestsTpetra" @@ -448,8 +359,3 @@ ENDIF() ADD_SUBDIRECTORY(ParameterList/FactoryFactory/) ADD_SUBDIRECTORY(ParameterList/ParameterListInterpreter/) - -IF (${PACKAGE_NAME}_ENABLE_Epetra) - ADD_SUBDIRECTORY(ParameterList/MLParameterListInterpreter/) - ADD_SUBDIRECTORY(ParameterList/CreateSublists/) -ENDIF() diff --git a/packages/muelu/test/viz/CMakeLists.txt b/packages/muelu/test/viz/CMakeLists.txt index 572cc5972964..ca5186f45e4e 100644 --- a/packages/muelu/test/viz/CMakeLists.txt +++ b/packages/muelu/test/viz/CMakeLists.txt @@ -1,9 +1,7 @@ # Ensure that these cmake boolean variables are defined ASSERT_DEFINED( - ${PACKAGE_NAME}_ENABLE_Amesos ${PACKAGE_NAME}_ENABLE_Amesos2 ${PACKAGE_NAME}_ENABLE_Belos - ${PACKAGE_NAME}_ENABLE_Epetra ) # @@ -91,27 +89,6 @@ IF (${PACKAGE_NAME}_ENABLE_Ifpack2 AND ${PACKAGE_NAME}_ENABLE_Amesos2) COMM serial mpi ) - # Test Epetra variant, too. - IF (${PACKAGE_NAME}_ENABLE_Epetra AND ${PACKAGE_NAME}_ENABLE_EpetraExt AND ${PACKAGE_NAME}_ENABLE_Ifpack AND ${PACKAGE_NAME}_ENABLE_Amesos AND (NOT Xpetra_INT_LONG_LONG)) - - MUELU_ADD_SERIAL_AND_MPI_TEST( - Viz - NAME "Viz3DEpetra" - ARGS "--matrixType=Laplace3D --nx=20 --ny=20 --nz=20 --linAlgebra=Epetra" - NUM_MPI_PROCS 4 - COMM serial mpi - ) - - MUELU_ADD_SERIAL_AND_MPI_TEST( - Viz - NAME "Viz2DEpetra" - ARGS "--matrixType=Laplace2D --nx=40 --ny=40 --linAlgebra=Epetra" - NUM_MPI_PROCS 4 - COMM serial mpi - ) - - ENDIF() #endif Epetra - ENDIF() ENDIF() From 584bb2a4e231f2840c69016a8fac5671f35ed7cc Mon Sep 17 00:00:00 2001 From: Epetracide Date: Mon, 19 Aug 2024 19:46:23 +0000 Subject: [PATCH 2/2] Xpetra & MueLu: Remove Epetra files --- .../aztecoo/MueLu_AztecEpetraOperator.cpp | 100 - .../aztecoo/MueLu_AztecEpetraOperator.hpp | 128 - .../adapters/belos/BelosMueLuAdapter.hpp | 283 -- .../MueLu_CreateEpetraPreconditioner.cpp | 134 - .../MueLu_CreateEpetraPreconditioner.hpp | 65 - .../adapters/epetra/MueLu_EpetraOperator.cpp | 118 - .../adapters/epetra/MueLu_EpetraOperator.hpp | 128 - .../MueLu_Details_LinearSolverFactory_def.hpp | 5 - ...Lu_Details_registerLinearSolverFactory.cpp | 58 - ...MueLuMaxwell1PreconditionerFactory_def.hpp | 4 - .../Thyra_MueLuPreconditionerFactory_decl.hpp | 13 - .../Thyra_MueLuPreconditionerFactory_def.hpp | 179 - ...LuRefMaxwellPreconditionerFactory_decl.hpp | 8 - ...eLuRefMaxwellPreconditionerFactory_def.hpp | 4 - .../tpetra/MueLu_ShiftedLaplacian_decl.hpp | 4 - .../example/ParameterList/MLParameterList.cpp | 147 - .../advanced/memory/Epetra1DLaplace.cpp | 123 - packages/muelu/matlab/bin/muemex.cpp | 2 - packages/muelu/matlab/bin/muemex.h | 193 -- .../muelu/matlab/src/MueLu_MatlabUtils.cpp | 401 --- .../matlab/src/MueLu_MatlabUtils_decl.hpp | 168 - .../matlab/src/MueLu_MatlabUtils_def.hpp | 1461 -------- .../Driver_Structured_Regions.cpp | 4 - .../muelu/research/max/AdditiveMG/Test.cpp | 118 - .../max/XpetraSplitting/Test_muelu.cpp | 94 - .../max/XpetraSplitting/Test_xpetra.cpp | 137 - .../regionMG/src/SetupRegionHierarchy_def.hpp | 2 - .../regionMG/src/SolveRegionHierarchy_def.hpp | 8 - .../structured/Driver_Structured_Regions.cpp | 5 - .../muelu/research/tawiesn/aria/Driver.cpp | 4 - .../MueLu_CoalesceDropFactory_def.hpp | 4 - ...aptiveSaMLParameterListInterpreter_def.hpp | 3 - .../Interface/MueLu_FactoryFactory_def.hpp | 4 - .../MueLu_ML2MueLuParameterTranslator.cpp | 34 - .../MueLu_MLParameterListInterpreter_decl.hpp | 9 - .../MueLu_MLParameterListInterpreter_def.hpp | 125 - .../src/Operators/MueLu_RefMaxwell_def.hpp | 2 - .../MueLu_IsorropiaInterface_decl.hpp | 4 - .../MueLu_IsorropiaInterface_def.hpp | 59 - .../MueLu_Zoltan2Interface_decl.hpp | 94 - .../Smoothers/MueLu_Amesos2Smoother_decl.hpp | 39 - .../Smoothers/MueLu_Amesos2Smoother_def.hpp | 2 - .../src/Smoothers/MueLu_AmesosSmoother.cpp | 177 - .../src/Smoothers/MueLu_AmesosSmoother.hpp | 164 - .../Smoothers/MueLu_BelosSmoother_decl.hpp | 48 - .../src/Smoothers/MueLu_BelosSmoother_def.hpp | 2 - .../src/Smoothers/MueLu_DirectSolver_def.hpp | 18 - .../Smoothers/MueLu_Ifpack2Smoother_decl.hpp | 54 - .../Smoothers/MueLu_Ifpack2Smoother_def.hpp | 3 - .../src/Smoothers/MueLu_IfpackSmoother.cpp | 385 --- .../src/Smoothers/MueLu_IfpackSmoother.hpp | 178 - .../Smoothers/MueLu_PermutingSmoother_def.hpp | 4 - .../Smoothers/MueLu_ProjectorSmoother_def.hpp | 2 - .../src/Smoothers/MueLu_SmootherCloner.hpp | 2 - .../Smoothers/MueLu_TrilinosSmoother_decl.hpp | 2 - .../Smoothers/MueLu_TrilinosSmoother_def.hpp | 18 - .../MueLu_Amesos2Smoother_fwd.hpp | 3 - .../MueLu_Ifpack2Smoother_fwd.hpp | 3 - .../MueLu_IsorropiaInterface_fwd.hpp | 12 - packages/muelu/src/Utils/MueLu_ETI_3arg.hpp | 20 - packages/muelu/src/Utils/MueLu_ETI_4arg.hpp | 20 - .../muelu/src/Utils/MueLu_ETI_4arg_Xpetra.hpp | 20 - packages/muelu/src/Utils/MueLu_Utilities.cpp | 4 - .../muelu/src/Utils/MueLu_Utilities_decl.hpp | 774 ----- .../muelu/src/Utils/MueLu_Utilities_def.hpp | 141 - .../muelu/test/interface/CreateOperator.cpp | 23 - .../interface/ParameterListInterpreter.cpp | 10 - packages/muelu/test/maxwell/Maxwell3D.cpp | 137 - packages/muelu/test/mhdvanka/tomtest.cpp | 330 -- .../test/perf_tests_kokkos/Redirection.cpp | 22 - packages/muelu/test/scaling/ComboPDriver.cpp | 2 - packages/muelu/test/scaling/Driver.cpp | 7 - packages/muelu/test/scaling/DriverCore.hpp | 48 - .../muelu/test/scaling/ImportPerformance.cpp | 315 -- .../muelu/test/scaling/TAFCPerformance.cpp | 5 - .../test/structured/Driver_Structured.cpp | 4 - .../unit_tests/Adapters/BelosAdapters.cpp | 64 - .../Adapters/CreatePreconditioner.cpp | 238 -- .../Adapters/TpetraOperatorAdapter.cpp | 8 - .../test/unit_tests/BlockedRepartition.cpp | 367 -- .../muelu/test/unit_tests/GenericRFactory.cpp | 6 - packages/muelu/test/unit_tests/Hierarchy.cpp | 132 - .../unit_tests/IntrepidPCoarsenFactory.cpp | 50 - .../test/unit_tests/MueLu_TestHelpers.hpp | 52 - .../unit_tests/MueLu_TestHelpers_Common.hpp | 73 - .../test/unit_tests/MueLu_TestHelpers_HO.hpp | 4 - .../muelu/test/unit_tests/MueLu_Test_ETI.hpp | 14 - .../unit_tests/MultiVectorTransferFactory.cpp | 3 - .../ParameterList/CreateSublists.cpp | 25 - .../ParameterList/FactoryFactory.cpp | 9 - .../ParameterListInterpreter.cpp | 33 - packages/muelu/test/unit_tests/PgPFactory.cpp | 208 -- .../muelu/test/unit_tests/RAPShiftFactory.cpp | 18 - .../muelu/test/unit_tests/Repartition.cpp | 10 - packages/muelu/test/unit_tests/SaPFactory.cpp | 203 -- .../test/unit_tests/TentativePFactory.cpp | 147 - .../UserData/CreateXpetraPreconditioner.cpp | 124 - packages/muelu/test/unit_tests/Utilities.cpp | 63 - .../MueLu_TestHelpers_Common_kokkos.hpp | 73 - .../MueLu_TestHelpers_kokkos.hpp | 54 - .../unit_tests_kokkos/SaPFactory_kokkos.cpp | 201 -- .../TentativePFactory_kokkos.cpp | 139 - .../muelu/test/vardofpernode/VarDofDriver.cpp | 4 - .../example/MueLu_MatrixDriverTests.cpp | 42 - .../example/Simple/Laplace1D-Xpetra.cpp | 8 - .../xpetra/example/Xpetra_Example_Comm.cpp | 48 - .../src/BlockedMap/Xpetra_BlockedMap_decl.hpp | 7 - .../xpetra/src/CrsGraph/Xpetra_CrsGraph.hpp | 9 - .../src/CrsGraph/Xpetra_CrsGraphFactory.hpp | 522 --- .../src/CrsGraph/Xpetra_EpetraCrsGraph.cpp | 126 - .../src/CrsGraph/Xpetra_EpetraCrsGraph.hpp | 1505 -------- .../CrsGraph/Xpetra_TpetraCrsGraph_def.hpp | 710 ---- .../xpetra/src/CrsMatrix/Xpetra_CrsMatrix.hpp | 8 - .../src/CrsMatrix/Xpetra_CrsMatrixFactory.hpp | 564 --- .../src/CrsMatrix/Xpetra_EpetraCrsMatrix.cpp | 79 - .../src/CrsMatrix/Xpetra_EpetraCrsMatrix.hpp | 2447 ------------- .../Xpetra_TpetraBlockCrsMatrix_decl.hpp | 2 - .../Xpetra_TpetraBlockCrsMatrix_def.hpp | 622 ---- .../CrsMatrix/Xpetra_TpetraCrsMatrix_decl.hpp | 803 ----- .../CrsMatrix/Xpetra_TpetraCrsMatrix_def.hpp | 2 - .../xpetra/src/Export/Xpetra_EpetraExport.cpp | 103 - .../xpetra/src/Export/Xpetra_EpetraExport.hpp | 174 - .../src/Export/Xpetra_ExportFactory.hpp | 65 - .../src/Export/Xpetra_TpetraExport_def.hpp | 236 -- .../xpetra/src/Headers/Xpetra_ConfigDefs.hpp | 2 - .../src/Headers/Xpetra_EpetraConfigDefs.hpp | 19 - .../src/Headers/Xpetra_TpetraConfigDefs.hpp | 4 - .../xpetra/src/Import/Xpetra_EpetraImport.cpp | 104 - .../xpetra/src/Import/Xpetra_EpetraImport.hpp | 181 - .../src/Import/Xpetra_ImportFactory.hpp | 71 - .../src/Import/Xpetra_TpetraImport_def.hpp | 220 -- packages/xpetra/src/Map/Xpetra_EpetraMap.cpp | 148 - packages/xpetra/src/Map/Xpetra_EpetraMap.hpp | 1223 ------- .../src/Map/Xpetra_EpetraMapFactory.cpp | 665 ---- .../xpetra/src/Map/Xpetra_MapFactory_decl.hpp | 196 -- .../xpetra/src/Map/Xpetra_MapFactory_def.hpp | 27 - packages/xpetra/src/Map/Xpetra_Map_decl.hpp | 15 - .../xpetra/src/Map/Xpetra_TpetraMap_decl.hpp | 4 - .../xpetra/src/Map/Xpetra_TpetraMap_def.hpp | 338 -- .../src/Matrix/Xpetra_CrsMatrixWrap_decl.hpp | 16 - .../src/Matrix/Xpetra_CrsMatrixWrap_def.hpp | 12 - .../src/Matrix/Xpetra_MatrixFactory2_decl.hpp | 37 - .../src/Matrix/Xpetra_MatrixFactory2_def.hpp | 9 - .../xpetra/src/Matrix/Xpetra_Matrix_decl.hpp | 8 - .../Xpetra_EpetraIntMultiVector.cpp | 120 - .../Xpetra_EpetraIntMultiVector.hpp | 1188 ------- .../MultiVector/Xpetra_EpetraMultiVector.cpp | 172 - .../MultiVector/Xpetra_EpetraMultiVector.hpp | 1189 ------- .../Xpetra_EpetraMultiVectorFactory.cpp | 301 -- .../Xpetra_MultiVectorFactory_decl.hpp | 130 - .../Xpetra_MultiVectorFactory_def.hpp | 6 - .../Xpetra_TpetraMultiVector_def.hpp | 488 --- .../src/Operator/Xpetra_EpetraOperator.hpp | 251 -- .../src/Operator/Xpetra_TpetraOperator.hpp | 141 - .../src/StridedMap/Xpetra_StridedMap_decl.hpp | 7 - .../Xpetra_EpetraCrsGraph_fwd.hpp | 22 - .../Xpetra_EpetraCrsMatrix_fwd.hpp | 24 - .../Xpetra_EpetraExport_fwd.hpp | 23 - .../Xpetra_EpetraImport_fwd.hpp | 23 - .../Xpetra_EpetraIntVector_fwd.hpp | 23 - .../Xpetra_EpetraMap_fwd.hpp | 23 - .../Xpetra_EpetraMultiVector_fwd.hpp | 23 - .../Xpetra_EpetraOperator_fwd.hpp | 27 - .../Xpetra_EpetraVector_fwd.hpp | 23 - .../src/Utils/Xpetra_CrsMatrixUtils.hpp | 142 - packages/xpetra/src/Utils/Xpetra_ETI_3arg.hpp | 26 - packages/xpetra/src/Utils/Xpetra_ETI_4arg.hpp | 26 - .../xpetra/src/Utils/Xpetra_ETI_4arg_mv.hpp | 26 - .../src/Utils/Xpetra_EpetraExceptions.hpp | 40 - .../xpetra/src/Utils/Xpetra_EpetraUtils.cpp | 81 - .../xpetra/src/Utils/Xpetra_EpetraUtils.hpp | 44 - .../xpetra/src/Utils/Xpetra_Exceptions.hpp | 6 - .../xpetra/src/Utils/Xpetra_Helpers_decl.hpp | 33 - .../xpetra/src/Utils/Xpetra_Helpers_def.hpp | 129 - packages/xpetra/src/Utils/Xpetra_IO_decl.hpp | 933 ----- packages/xpetra/src/Utils/Xpetra_IO_def.hpp | 138 - .../xpetra/src/Utils/Xpetra_ImportUtils.hpp | 195 -- .../xpetra/src/Utils/Xpetra_IteratorOps.cpp | 166 - .../xpetra/src/Utils/Xpetra_IteratorOps.hpp | 34 - .../src/Utils/Xpetra_MatrixMatrix_decl.hpp | 1439 -------- .../src/Utils/Xpetra_MatrixMatrix_def.hpp | 38 - .../src/Utils/Xpetra_MatrixUtils_decl.hpp | 2 - .../src/Utils/Xpetra_MatrixUtils_def.hpp | 14 - .../xpetra/src/Utils/Xpetra_Parameters.hpp | 15 - .../src/Utils/Xpetra_ThyraUtils_decl.hpp | 1596 --------- .../src/Utils/Xpetra_ThyraUtils_def.hpp | 249 -- .../Xpetra_TripleMatrixMultiply_decl.hpp | 254 -- .../Utils/Xpetra_TripleMatrixMultiply_def.hpp | 4 - packages/xpetra/src/Utils/Xpetra_Utils.cpp | 44 - packages/xpetra/src/Utils/Xpetra_Utils.hpp | 23 - .../src/Vector/Xpetra_EpetraIntVector.cpp | 120 - .../src/Vector/Xpetra_EpetraIntVector.hpp | 1302 ------- .../xpetra/src/Vector/Xpetra_EpetraVector.cpp | 122 - .../xpetra/src/Vector/Xpetra_EpetraVector.hpp | 531 --- .../src/Vector/Xpetra_EpetraVectorFactory.cpp | 136 - .../src/Vector/Xpetra_TpetraVector_def.hpp | 261 -- .../src/Vector/Xpetra_VectorFactory_decl.hpp | 121 - .../BlockedCrsMatrix_UnitTests.cpp | 3058 ----------------- .../BlockedMatrixTestHelpers.hpp | 246 -- .../ThyraBlockedOperator_UnitTests.cpp | 1065 ------ .../BlockedMultiVector_UnitTests.cpp | 34 - .../ThyraBlockedMultiVector_UnitTests.cpp | 34 - .../CrsMatrix/CrsMatrixUtils_UnitTests.cpp | 18 - .../test/CrsMatrix/CrsMatrix_UnitTests.cpp | 186 - packages/xpetra/test/IO/IO_UnitTests.cpp | 31 - .../xpetra/test/Map/MapFactory_UnitTests.cpp | 35 - packages/xpetra/test/Map/Map_UnitTests.cpp | 43 - packages/xpetra/test/Map/Map_UnitTests2.cpp | 34 - .../test/Map/StridedMapFactory_UnitTests.cpp | 35 - .../xpetra/test/Map/StridedMap_UnitTests.cpp | 35 - .../MapExtractorFactory_UnitTests.cpp | 37 - .../xpetra/test/Matrix/Matrix_UnitTests.cpp | 71 - .../MatrixMatrix/MatrixMatrix_UnitTests.cpp | 262 -- .../MatrixUtils/MatrixUtils_UnitTests.cpp | 36 - .../MultiVector/MultiVector_UnitTests.cpp | 160 - .../MultiVector_UnitTestsThyraSpecific.cpp | 36 - .../MultiVector_UnitTestsXpetraSpecific.cpp | 38 - 217 files changed, 39125 deletions(-) delete mode 100644 packages/muelu/adapters/aztecoo/MueLu_AztecEpetraOperator.cpp delete mode 100644 packages/muelu/adapters/aztecoo/MueLu_AztecEpetraOperator.hpp delete mode 100644 packages/muelu/adapters/epetra/MueLu_CreateEpetraPreconditioner.cpp delete mode 100644 packages/muelu/adapters/epetra/MueLu_CreateEpetraPreconditioner.hpp delete mode 100644 packages/muelu/adapters/epetra/MueLu_EpetraOperator.cpp delete mode 100644 packages/muelu/adapters/epetra/MueLu_EpetraOperator.hpp delete mode 100644 packages/muelu/adapters/linear_solver_factory/MueLu_Details_registerLinearSolverFactory.cpp delete mode 100644 packages/muelu/example/advanced/memory/Epetra1DLaplace.cpp delete mode 100644 packages/muelu/matlab/bin/muemex.h delete mode 100644 packages/muelu/research/max/AdditiveMG/Test.cpp delete mode 100644 packages/muelu/research/max/XpetraSplitting/Test_muelu.cpp delete mode 100644 packages/muelu/research/max/XpetraSplitting/Test_xpetra.cpp delete mode 100644 packages/muelu/test/mhdvanka/tomtest.cpp delete mode 100644 packages/xpetra/example/Xpetra_Example_Comm.cpp delete mode 100644 packages/xpetra/src/CrsGraph/Xpetra_EpetraCrsGraph.cpp delete mode 100644 packages/xpetra/src/CrsGraph/Xpetra_EpetraCrsGraph.hpp delete mode 100644 packages/xpetra/src/CrsMatrix/Xpetra_EpetraCrsMatrix.cpp delete mode 100644 packages/xpetra/src/CrsMatrix/Xpetra_EpetraCrsMatrix.hpp delete mode 100644 packages/xpetra/src/Export/Xpetra_EpetraExport.cpp delete mode 100644 packages/xpetra/src/Export/Xpetra_EpetraExport.hpp delete mode 100644 packages/xpetra/src/Headers/Xpetra_EpetraConfigDefs.hpp delete mode 100644 packages/xpetra/src/Import/Xpetra_EpetraImport.cpp delete mode 100644 packages/xpetra/src/Import/Xpetra_EpetraImport.hpp delete mode 100644 packages/xpetra/src/Map/Xpetra_EpetraMap.cpp delete mode 100644 packages/xpetra/src/Map/Xpetra_EpetraMap.hpp delete mode 100644 packages/xpetra/src/Map/Xpetra_EpetraMapFactory.cpp delete mode 100644 packages/xpetra/src/MultiVector/Xpetra_EpetraIntMultiVector.cpp delete mode 100644 packages/xpetra/src/MultiVector/Xpetra_EpetraIntMultiVector.hpp delete mode 100644 packages/xpetra/src/MultiVector/Xpetra_EpetraMultiVector.cpp delete mode 100644 packages/xpetra/src/MultiVector/Xpetra_EpetraMultiVector.hpp delete mode 100644 packages/xpetra/src/MultiVector/Xpetra_EpetraMultiVectorFactory.cpp delete mode 100644 packages/xpetra/src/Operator/Xpetra_EpetraOperator.hpp delete mode 100644 packages/xpetra/src/Utils/ForwardDeclaration/Xpetra_EpetraCrsGraph_fwd.hpp delete mode 100644 packages/xpetra/src/Utils/ForwardDeclaration/Xpetra_EpetraCrsMatrix_fwd.hpp delete mode 100644 packages/xpetra/src/Utils/ForwardDeclaration/Xpetra_EpetraExport_fwd.hpp delete mode 100644 packages/xpetra/src/Utils/ForwardDeclaration/Xpetra_EpetraImport_fwd.hpp delete mode 100644 packages/xpetra/src/Utils/ForwardDeclaration/Xpetra_EpetraIntVector_fwd.hpp delete mode 100644 packages/xpetra/src/Utils/ForwardDeclaration/Xpetra_EpetraMap_fwd.hpp delete mode 100644 packages/xpetra/src/Utils/ForwardDeclaration/Xpetra_EpetraMultiVector_fwd.hpp delete mode 100644 packages/xpetra/src/Utils/ForwardDeclaration/Xpetra_EpetraOperator_fwd.hpp delete mode 100644 packages/xpetra/src/Utils/ForwardDeclaration/Xpetra_EpetraVector_fwd.hpp delete mode 100644 packages/xpetra/src/Utils/Xpetra_EpetraExceptions.hpp delete mode 100644 packages/xpetra/src/Utils/Xpetra_EpetraUtils.cpp delete mode 100644 packages/xpetra/src/Utils/Xpetra_EpetraUtils.hpp delete mode 100644 packages/xpetra/src/Vector/Xpetra_EpetraIntVector.cpp delete mode 100644 packages/xpetra/src/Vector/Xpetra_EpetraIntVector.hpp delete mode 100644 packages/xpetra/src/Vector/Xpetra_EpetraVector.cpp delete mode 100644 packages/xpetra/src/Vector/Xpetra_EpetraVector.hpp delete mode 100644 packages/xpetra/src/Vector/Xpetra_EpetraVectorFactory.cpp delete mode 100644 packages/xpetra/test/BlockedCrsMatrix/BlockedCrsMatrix_UnitTests.cpp delete mode 100644 packages/xpetra/test/BlockedCrsMatrix/BlockedMatrixTestHelpers.hpp delete mode 100644 packages/xpetra/test/BlockedCrsMatrix/ThyraBlockedOperator_UnitTests.cpp diff --git a/packages/muelu/adapters/aztecoo/MueLu_AztecEpetraOperator.cpp b/packages/muelu/adapters/aztecoo/MueLu_AztecEpetraOperator.cpp deleted file mode 100644 index 261614a84001..000000000000 --- a/packages/muelu/adapters/aztecoo/MueLu_AztecEpetraOperator.cpp +++ /dev/null @@ -1,100 +0,0 @@ -// @HEADER -// ***************************************************************************** -// MueLu: A package for multigrid based preconditioning -// -// Copyright 2012 NTESS and the MueLu contributors. -// SPDX-License-Identifier: BSD-3-Clause -// ***************************************************************************** -// @HEADER - -#ifndef PACKAGES_MUELU_ADAPTERS_AZTECOO_MUELU_AZTECEPETRAOPERATOR_CPP_ -#define PACKAGES_MUELU_ADAPTERS_AZTECOO_MUELU_AZTECEPETRAOPERATOR_CPP_ - -#include "Xpetra_EpetraMultiVector.hpp" -#include "Xpetra_CrsMatrixWrap.hpp" -#include "Xpetra_EpetraCrsMatrix.hpp" - -#include "MueLu_config.hpp" // for HAVE_MUELU_DEBUG -#include "MueLu_RefMaxwell.hpp" -#include "MueLu_Exceptions.hpp" - -#include "MueLu_AztecEpetraOperator.hpp" - -#if defined(HAVE_MUELU_SERIAL) and defined(HAVE_MUELU_EPETRA) - -namespace MueLu { - -int AztecEpetraOperator::ApplyInverse(const Epetra_MultiVector& X, Epetra_MultiVector& Y) const { - try { - // There is no rcpFromRef(const T&), so we need to do const_cast - const Xpetra::EpetraMultiVectorT eX(Teuchos::rcpFromRef(const_cast(X))); - Xpetra::EpetraMultiVectorT eY(Teuchos::rcpFromRef(Y)); - // Generally, we assume two different vectors, but AztecOO uses a single vector - if (X.Values() == Y.Values()) { - // X and Y point to the same memory, use an additional vector - Teuchos::RCP> tmpY = Teuchos::rcp(new Xpetra::EpetraMultiVectorT(eY.getMap(), eY.getNumVectors())); - tmpY->putScalar(0.0); - xOp_->apply(eX, *tmpY); - // deep copy solution from MueLu - eY.update(1.0, *tmpY, 0.0); - } else { - // X and Y point to different memory, pass the vectors through - eY.putScalar(0.0); - xOp_->apply(eX, eY); - } - - } catch (std::exception& e) { - // TODO: error msg directly on std::cerr? - std::cerr << "Caught an exception in MueLu::AztecEpetraOperator::ApplyInverse():" << std::endl - << e.what() << std::endl; - return -1; - } - return 0; -} - -const Epetra_Comm& AztecEpetraOperator::Comm() const { - const Epetra_Map emap = Xpetra::toEpetra(xOp_->getDomainMap()); - return emap.Comm(); -} - -const Epetra_Map& AztecEpetraOperator::OperatorDomainMap() const { - if (Teuchos::rcp_dynamic_cast>(xOp_) != Teuchos::null) { - RCP> A = Teuchos::rcp_dynamic_cast>(xOp_)->getJacobian(); - RCP> crsOp = rcp_dynamic_cast>(A); - if (crsOp == Teuchos::null) - throw Exceptions::BadCast("Cast from Xpetra::Matrix to Xpetra::CrsMatrixWrap failed"); - const RCP>& tmp_ECrsMtx = rcp_dynamic_cast>(crsOp->getCrsMatrix()); - if (tmp_ECrsMtx == Teuchos::null) - throw Exceptions::BadCast("Cast from Xpetra::CrsMatrix to Xpetra::EpetraCrsMatrix failed"); - return tmp_ECrsMtx->getEpetra_CrsMatrixNonConst()->DomainMap(); - } - - // TAW there is a problem with the Map version of toEeptra leading to code crashes - // we probably need to create a new copy of the Epetra_Map - Teuchos::RCP map = xOp_->getDomainMap(); - return Xpetra::toEpetra(map); -} - -const Epetra_Map& AztecEpetraOperator::OperatorRangeMap() const { - if (Teuchos::rcp_dynamic_cast>(xOp_) != Teuchos::null) { - RCP> A = Teuchos::rcp_dynamic_cast>(xOp_)->getJacobian(); - RCP> crsOp = rcp_dynamic_cast>(A); - if (crsOp == Teuchos::null) - throw Exceptions::BadCast("Cast from Xpetra::Matrix to Xpetra::CrsMatrixWrap failed"); - const RCP>& tmp_ECrsMtx = rcp_dynamic_cast>(crsOp->getCrsMatrix()); - if (tmp_ECrsMtx == Teuchos::null) - throw Exceptions::BadCast("Cast from Xpetra::CrsMatrix to Xpetra::EpetraCrsMatrix failed"); - return tmp_ECrsMtx->getEpetra_CrsMatrixNonConst()->RangeMap(); - } - - // TAW there is a problem with the Map version of toEeptra leading to code crashes - // we probably need to create a new copy of the Epetra_Map - Teuchos::RCP map = xOp_->getRangeMap(); - return Xpetra::toEpetra(map); -} - -} // namespace MueLu - -#endif /*#if defined(HAVE_MUELU_SERIAL) and defined(HAVE_MUELU_EPETRA)*/ - -#endif /* PACKAGES_MUELU_ADAPTERS_AZTECOO_MUELU_AZTECEPETRAOPERATOR_CPP_ */ diff --git a/packages/muelu/adapters/aztecoo/MueLu_AztecEpetraOperator.hpp b/packages/muelu/adapters/aztecoo/MueLu_AztecEpetraOperator.hpp deleted file mode 100644 index 30b73fc9dca5..000000000000 --- a/packages/muelu/adapters/aztecoo/MueLu_AztecEpetraOperator.hpp +++ /dev/null @@ -1,128 +0,0 @@ -// @HEADER -// ***************************************************************************** -// MueLu: A package for multigrid based preconditioning -// -// Copyright 2012 NTESS and the MueLu contributors. -// SPDX-License-Identifier: BSD-3-Clause -// ***************************************************************************** -// @HEADER - -#ifndef PACKAGES_MUELU_ADAPTERS_AZTECOO_MUELU_AZTECEPETRAOPERATOR_HPP_ -#define PACKAGES_MUELU_ADAPTERS_AZTECOO_MUELU_AZTECEPETRAOPERATOR_HPP_ - -#include - -#include "Xpetra_Operator.hpp" - -#if defined(HAVE_MUELU_SERIAL) and defined(HAVE_MUELU_EPETRA) - -namespace MueLu { - -/*! @class AztecEpetraOperator - @brief Turns a Xpetra::Operator into a Epetra_Operator. - It allows an Xpetra::Operator to be used as a preconditioner for AztecOO (for instance). - - Currently only used for RefMaxwell. -*/ -class AztecEpetraOperator : public Epetra_Operator { - typedef double SC; - typedef int LO; - typedef int GO; - typedef Xpetra::EpetraNode NO; - - typedef Xpetra::Map Map; - typedef Xpetra::EpetraMapT EpetraMap; - typedef Xpetra::Operator Operator; - - public: - //! @name Constructor/Destructor - //@{ - - //! Constructor - AztecEpetraOperator(const Teuchos::RCP& Op) - : xOp_(Op) {} - - //! Destructor. - virtual ~AztecEpetraOperator() {} - - //@} - - int SetUseTranspose(bool /* UseTransposeBool */) { return -1; } - - //! @name Mathematical functions - //@{ - - //! Returns the result of a Epetra_Operator applied to a Epetra_MultiVector X in Y. - /*! - \param In - X - A Epetra_MultiVector of dimension NumVectors to multiply with matrix. - \param Out - Y -A Epetra_MultiVector of dimension NumVectors containing result. - - \return Integer error code, set to 0 if successful. - */ - int Apply(const Epetra_MultiVector& /* X */, Epetra_MultiVector& /* Y */) const { return -1; } - - //! Returns the result of a Epetra_Operator inverse applied to an Epetra_MultiVector X in Y. - /*! - \param In - X - A Epetra_MultiVector of dimension NumVectors to solve for. - \param Out - Y -A Epetra_MultiVector of dimension NumVectors containing result. - - \return Integer error code, set to 0 if successful. - - \warning In order to work with AztecOO, any implementation of this method must - support the case where X and Y are the same object. - */ - int ApplyInverse(const Epetra_MultiVector& X, Epetra_MultiVector& Y) const; - - //! Returns the infinity norm of the global matrix. - /* Returns the quantity \f$ \| A \|_\infty\f$ such that - \f[\| A \|_\infty = \max_{1\lei\lem} \sum_{j=1}^n |a_{ij}| \f]. - - \warning This method must not be called unless HasNormInf() returns true. - */ - double NormInf() const { return 0; } - //@} - - //! @name Attribute access functions - //@{ - - //! Returns a character string describing the operator - const char* Label() const { return "MueLu::AztecEpetraOperator"; } - - //! Returns the current UseTranspose setting. - bool UseTranspose() const { return false; } - - //! Returns true if the \e this object can provide an approximate Inf-norm, false otherwise. - bool HasNormInf() const { return 0; } - - //! Returns a pointer to the Epetra_Comm communicator associated with this operator. - const Epetra_Comm& Comm() const; - - //! Returns the Epetra_Map object associated with the domain of this operator. - const Epetra_Map& OperatorDomainMap() const; - - //! Returns the Epetra_Map object associated with the range of this operator. - const Epetra_Map& OperatorRangeMap() const; - - //@} - - //! @name MueLu specific - //@{ - - //! Direct access to the underlying Xpetra::Operator. - Teuchos::RCP GetOperator() const { return xOp_; } - - //@} - - private: - Teuchos::RCP xOp_; -}; - -} // namespace MueLu - -#endif - -#endif /* PACKAGES_MUELU_ADAPTERS_AZTECOO_MUELU_AZTECEPETRAOPERATOR_HPP_ */ diff --git a/packages/muelu/adapters/belos/BelosMueLuAdapter.hpp b/packages/muelu/adapters/belos/BelosMueLuAdapter.hpp index 44b1d3b18161..79ee28d0c2a4 100644 --- a/packages/muelu/adapters/belos/BelosMueLuAdapter.hpp +++ b/packages/muelu/adapters/belos/BelosMueLuAdapter.hpp @@ -12,10 +12,6 @@ // TAW: 3/4/2016: we use the Xpetra macros // These are available and Xpetra is prerequisite for MueLu -#ifdef HAVE_XPETRA_EPETRA -#include -#include -#endif //#ifdef HAVE_XPETRA_TPETRA //#include "TpetraCore_config.h" @@ -63,10 +59,8 @@ template class MueLuOp : public OperatorT > -#ifdef HAVE_XPETRA_TPETRA , public OperatorT > -#endif { public: //! @name Constructor/Destructor @@ -111,7 +105,6 @@ class MueLuOp : public OperatorTIterate(tX, tY, 1, true); } } -#endif - - private: - RCP > Hierarchy_; -#ifdef HAVE_MUELU_AMGX - RCP > AMGX_; -#endif -}; - -#ifdef HAVE_XPETRA_EPETRA -#ifndef EPETRA_NO_32BIT_GLOBAL_INDICES -/*! @class MueLuOp - * - * @brief MueLuOp derives from Belos::OperatorT and administrates a MueLu::Hierarchy. It implements the apply - * call which represents the effect of the multigrid preconditioner on a given vector. - * Note, in contrast to Belos::XpetraOp this operator has the multigrid hierarchy. - * - * The Belos::OperatorT class is a generalization of the Belos::Operator<> class, which - * deals with any kind of vector (not only Belos::MultiVec as the Belos::Operator<> interface does). - * - * This is the specialization for - */ -template <> -class MueLuOp : public OperatorT > -#ifdef HAVE_XPETRA_TPETRA -// check whether Tpetra is instantiated on double,int,int,EpetraNode -#if ((defined(EPETRA_HAVE_OMP) && (defined(HAVE_TPETRA_INST_OPENMP) && defined(HAVE_TPETRA_INST_INT_INT))) || \ - (!defined(EPETRA_HAVE_OMP) && (defined(HAVE_TPETRA_INST_SERIAL) && defined(HAVE_TPETRA_INST_INT_INT)))) - , - public OperatorT > -#endif -#endif -#ifdef HAVE_XPETRA_EPETRA - , - public OperatorT, - public Belos::Operator -#endif -{ - typedef double Scalar; - typedef int LocalOrdinal; - typedef int GlobalOrdinal; - typedef Xpetra::EpetraNode Node; - - public: - MueLuOp(const RCP >& H) - : Hierarchy_(H) {} -#ifdef HAVE_MUELU_AMGX - MueLuOp(const RCP >& A) - : AMGX_(A) {} -#endif - virtual ~MueLuOp() {} - - void Apply(const Xpetra::MultiVector& x, Xpetra::MultiVector& y, ETrans trans = NOTRANS) const { - TEUCHOS_TEST_FOR_EXCEPTION(trans != NOTRANS, MueLuOpFailure, - "Belos::MueLuOp::Apply, transpose mode != NOTRANS not supported by MueLu preconditionners."); - - // FIXME InitialGuessIsZero currently does nothing in MueLu::Hierarchy.Iterate(), but it matters for AMGX - y.putScalar(0.0); - -#ifdef HAVE_MUELU_AMGX - if (!AMGX_.is_null()) { - Tpetra::MultiVector tX = Xpetra::toTpetra(x); - Tpetra::MultiVector tY = Xpetra::toTpetra(y); - - AMGX_->apply(tX, tY); - } -#endif - if (!Hierarchy_.is_null()) - Hierarchy_->Iterate(x, y, 1, true); - } - -#ifdef HAVE_XPETRA_TPETRA -#if ((defined(EPETRA_HAVE_OMP) && (defined(HAVE_TPETRA_INST_OPENMP) && defined(HAVE_TPETRA_INST_INT_INT))) || \ - (!defined(EPETRA_HAVE_OMP) && (defined(HAVE_TPETRA_INST_SERIAL) && defined(HAVE_TPETRA_INST_INT_INT)))) - void Apply(const Tpetra::MultiVector& x, Tpetra::MultiVector& y, ETrans trans = NOTRANS) const { - TEUCHOS_TEST_FOR_EXCEPTION(trans != NOTRANS, MueLuOpFailure, - "Belos::MueLuOp::Apply, transpose mode != NOTRANS not supported by MueLu preconditionners."); - - // FIXME InitialGuessIsZero currently does nothing in MueLu::Hierarchy.Iterate(), but it matters for AMGX - y.putScalar(0.0); - -#ifdef HAVE_MUELU_AMGX - if (!AMGX_.is_null()) - AMGX_->apply(x, y); -#endif - - if (!Hierarchy_.is_null()) { - Tpetra::MultiVector& temp_x = const_cast&>(x); - - const Xpetra::TpetraMultiVector tX(rcpFromRef(temp_x)); - Xpetra::TpetraMultiVector tY(rcpFromRef(y)); - - tY.putScalar(0.0); - - Hierarchy_->Iterate(tX, tY, 1, true); - } - } -#endif -#endif - -#ifdef HAVE_XPETRA_EPETRA - // TO SKIP THE TRAIT IMPLEMENTATION OF XPETRA::MULTIVECTOR - /*! \brief This routine takes the Tpetra::MultiVector \c x and applies the operator - to it resulting in the Tpetra::MultiVector \c y, which is returned. - \note It is expected that any problem with applying this operator to \c x will be - indicated by an std::exception being thrown. - */ - void Apply(const Epetra_MultiVector& x, Epetra_MultiVector& y, ETrans trans = NOTRANS) const { - TEUCHOS_TEST_FOR_EXCEPTION(trans != NOTRANS, MueLuOpFailure, - "Belos::MueLuOp::Apply, transpose mode != NOTRANS not supported by MueLu preconditionners."); - - Epetra_MultiVector& temp_x = const_cast(x); - - const Xpetra::EpetraMultiVectorT tX(rcpFromRef(temp_x)); - Xpetra::EpetraMultiVectorT tY(rcpFromRef(y)); - - // FIXME InitialGuessIsZero currently does nothing in MueLu::Hierarchy.Iterate(). - tY.putScalar(0.0); - - Hierarchy_->Iterate(tX, tY, 1, true); - } - - /*! \brief This routine takes the Belos::MultiVec \c x and applies the operator - to it resulting in the Belos::MultiVec \c y, which is returned. - \note It is expected that any problem with applying this operator to \c x will be - indicated by an std::exception being thrown. - */ - void Apply(const Belos::MultiVec& x, Belos::MultiVec& y, ETrans trans = NOTRANS) const { - const Epetra_MultiVector* vec_x = dynamic_cast(&x); - Epetra_MultiVector* vec_y = dynamic_cast(&y); - - TEUCHOS_TEST_FOR_EXCEPTION(vec_x == NULL || vec_y == NULL, MueLuOpFailure, - "Belos::MueLuOp::Apply, x and/or y cannot be dynamic cast to an Epetra_MultiVector."); - - Apply(*vec_x, *vec_y, trans); - } -#endif private: RCP > Hierarchy_; @@ -282,146 +138,7 @@ class MueLuOp : public OperatorT > AMGX_; #endif }; -#endif // !EPETRA_NO_32BIT_GLOBAL_INDICES -#endif // HAVE_XPETRA_EPETRA - -#ifdef HAVE_XPETRA_EPETRA -#ifndef EPETRA_NO_64BIT_GLOBAL_INDICES -/*! @class MueLuOp - * - * @brief MueLuOp derives from Belos::OperatorT and administrates a MueLu::Hierarchy. It implements the apply - * call which represents the effect of the multigrid preconditioner on a given vector. - * Note, in contrast to Belos::XpetraOp this operator has the multigrid hierarchy. - * - * The Belos::OperatorT class is a generalization of the Belos::Operator<> class, which - * deals with any kind of vector (not only Belos::MultiVec as the Belos::Operator<> interface does). - * - * This is the specialization for - */ -template <> -class MueLuOp : public OperatorT > -#ifdef HAVE_XPETRA_TPETRA -// check whether Tpetra is instantiated on double,int,int,EpetraNode -#if ((defined(EPETRA_HAVE_OMP) && (defined(HAVE_TPETRA_INST_OPENMP) && defined(HAVE_TPETRA_INST_INT_LONG_LONG))) || \ - (!defined(EPETRA_HAVE_OMP) && (defined(HAVE_TPETRA_INST_SERIAL) && defined(HAVE_TPETRA_INST_INT_LONG_LONG)))) - , - public OperatorT > -#endif -#endif -#ifdef HAVE_XPETRA_EPETRA - , - public OperatorT, - public Belos::Operator -#endif -{ - typedef double Scalar; - typedef int LocalOrdinal; - typedef long long GlobalOrdinal; - typedef Xpetra::EpetraNode Node; - - public: - MueLuOp(const RCP >& H) - : Hierarchy_(H) {} -#ifdef HAVE_MUELU_AMGX - MueLuOp(const RCP >& A) - : AMGX_(A) {} -#endif - virtual ~MueLuOp() {} - - void Apply(const Xpetra::MultiVector& x, Xpetra::MultiVector& y, ETrans trans = NOTRANS) const { - TEUCHOS_TEST_FOR_EXCEPTION(trans != NOTRANS, MueLuOpFailure, - "Belos::MueLuOp::Apply, transpose mode != NOTRANS not supported by MueLu preconditionners."); - - // FIXME InitialGuessIsZero currently does nothing in MueLu::Hierarchy.Iterate(), but it matters for AMGX - y.putScalar(0.0); - -#ifdef HAVE_MUELU_AMGX - if (!AMGX_.is_null()) { - Tpetra::MultiVector tX = Xpetra::toTpetra(x); - Tpetra::MultiVector tY = Xpetra::toTpetra(y); - - AMGX_->apply(tX, tY); - } -#endif - if (!Hierarchy_.is_null()) - Hierarchy_->Iterate(x, y, 1, true); - } - -#ifdef HAVE_XPETRA_TPETRA -#if ((defined(EPETRA_HAVE_OMP) && (defined(HAVE_TPETRA_INST_OPENMP) && defined(HAVE_TPETRA_INST_INT_LONG_LONG))) || \ - (!defined(EPETRA_HAVE_OMP) && (defined(HAVE_TPETRA_INST_SERIAL) && defined(HAVE_TPETRA_INST_INT_LONG_LONG)))) - void Apply(const Tpetra::MultiVector& x, Tpetra::MultiVector& y, ETrans trans = NOTRANS) const { - TEUCHOS_TEST_FOR_EXCEPTION(trans != NOTRANS, MueLuOpFailure, - "Belos::MueLuOp::Apply, transpose mode != NOTRANS not supported by MueLu preconditionners."); - - // FIXME InitialGuessIsZero currently does nothing in MueLu::Hierarchy.Iterate(), but it matters for AMGX - y.putScalar(0.0); - -#ifdef HAVE_MUELU_AMGX - if (!AMGX_.is_null()) - AMGX_->apply(x, y); -#endif - - if (!Hierarchy_.is_null()) { - Tpetra::MultiVector& temp_x = const_cast&>(x); - - const Xpetra::TpetraMultiVector tX(rcpFromRef(temp_x)); - Xpetra::TpetraMultiVector tY(rcpFromRef(y)); - - tY.putScalar(0.0); - - Hierarchy_->Iterate(tX, tY, 1, true); - } - } -#endif -#endif - -#ifdef HAVE_XPETRA_EPETRA - // TO SKIP THE TRAIT IMPLEMENTATION OF XPETRA::MULTIVECTOR - /*! \brief This routine takes the Tpetra::MultiVector \c x and applies the operator - to it resulting in the Tpetra::MultiVector \c y, which is returned. - \note It is expected that any problem with applying this operator to \c x will be - indicated by an std::exception being thrown. - */ - void Apply(const Epetra_MultiVector& x, Epetra_MultiVector& y, ETrans trans = NOTRANS) const { - TEUCHOS_TEST_FOR_EXCEPTION(trans != NOTRANS, MueLuOpFailure, - "Belos::MueLuOp::Apply, transpose mode != NOTRANS not supported by MueLu preconditionners."); - - Epetra_MultiVector& temp_x = const_cast(x); - const Xpetra::EpetraMultiVectorT tX(rcpFromRef(temp_x)); - Xpetra::EpetraMultiVectorT tY(rcpFromRef(y)); - - // FIXME InitialGuessIsZero currently does nothing in MueLu::Hierarchy.Iterate(). - tY.putScalar(0.0); - - Hierarchy_->Iterate(tX, tY, 1, true); - } - - /*! \brief This routine takes the Belos::MultiVec \c x and applies the operator - to it resulting in the Belos::MultiVec \c y, which is returned. - \note It is expected that any problem with applying this operator to \c x will be - indicated by an std::exception being thrown. - */ - void Apply(const Belos::MultiVec& x, Belos::MultiVec& y, ETrans trans = NOTRANS) const { - const Epetra_MultiVector* vec_x = dynamic_cast(&x); - Epetra_MultiVector* vec_y = dynamic_cast(&y); - - TEUCHOS_TEST_FOR_EXCEPTION(vec_x == NULL || vec_y == NULL, MueLuOpFailure, - "Belos::MueLuOp::Apply, x and/or y cannot be dynamic cast to an Epetra_MultiVector."); - - Apply(*vec_x, *vec_y, trans); - } -#endif - - private: - RCP > Hierarchy_; -#ifdef HAVE_MUELU_AMGX - RCP > AMGX_; -#endif -}; -#endif // !EPETRA_NO_64BIT_GLOBAL_INDICES -#endif // HAVE_XPETRA_EPETRA } // namespace Belos #endif // BELOS_MUELU_ADAPTER_HPP diff --git a/packages/muelu/adapters/epetra/MueLu_CreateEpetraPreconditioner.cpp b/packages/muelu/adapters/epetra/MueLu_CreateEpetraPreconditioner.cpp deleted file mode 100644 index 4ec5ece1997a..000000000000 --- a/packages/muelu/adapters/epetra/MueLu_CreateEpetraPreconditioner.cpp +++ /dev/null @@ -1,134 +0,0 @@ -// @HEADER -// ***************************************************************************** -// MueLu: A package for multigrid based preconditioning -// -// Copyright 2012 NTESS and the MueLu contributors. -// SPDX-License-Identifier: BSD-3-Clause -// ***************************************************************************** -// @HEADER - -#ifndef MUELU_CREATE_EPETRA_PRECONDITIONER_CPP -#define MUELU_CREATE_EPETRA_PRECONDITIONER_CPP - -#include -#include -#include -#include - -#include - -#include -#include -#include -#include -#include -#include -#include -#include - -//! @file -//! @brief Various adapters that will create a MueLu preconditioner that is an Epetra_Operator. -#if defined(HAVE_MUELU_EPETRA) -namespace MueLu { - -/*! - @brief Helper function to create a MueLu preconditioner that can be used by Epetra. - @ingroup MueLuAdapters - Given a EpetraCrs_Matrix, this function returns a constructed MueLu preconditioner. - @param[in] inA Matrix - @param[in] paramListIn Parameter list - */ -Teuchos::RCP -CreateEpetraPreconditioner(const Teuchos::RCP& inA, - // FIXME: why is it non-const - Teuchos::ParameterList& paramListIn) { - using SC = double; - using LO = int; - using GO = int; - using NO = Xpetra::EpetraNode; - - using Teuchos::ParameterList; - - using MultiVector = Xpetra::MultiVector; - using Matrix = Xpetra::Matrix; - using Hierarchy = Hierarchy; - using HierarchyManager = HierarchyManager; - - Teuchos::ParameterList& userList = paramListIn.sublist("user data"); - if (userList.isParameter("Coordinates")) { - RCP::coordinateType, LO, GO, NO> > coordinates = Teuchos::null; - try { - coordinates = EpetraMultiVector_To_XpetraMultiVector::coordinateType, LO, GO, NO>(userList.get >("Coordinates")); - } catch (Teuchos::Exceptions::InvalidParameterType&) { - coordinates = userList.get::coordinateType, LO, GO, NO> > >("Coordinates"); - } - if (Teuchos::nonnull(coordinates)) { - userList.set::coordinateType, LO, GO, NO> > >("Coordinates", coordinates); - } - } - if (userList.isParameter("Nullspace")) { - RCP::coordinateType, LO, GO, NO> > nullspace = Teuchos::null; - try { - nullspace = EpetraMultiVector_To_XpetraMultiVector(userList.get >("Nullspace")); - } catch (Teuchos::Exceptions::InvalidParameterType&) { - nullspace = userList.get > >("Nullspace"); - } - if (Teuchos::nonnull(nullspace)) { - userList.set::coordinateType, LO, GO, NO> > >("Nullspace", nullspace); - } - } - - RCP A = EpetraCrs_To_XpetraMatrix(inA); - RCP H = MueLu::CreateXpetraPreconditioner(A, paramListIn); - return rcp(new EpetraOperator(H)); -} - -/*! - @brief Helper function to create a MueLu preconditioner that can be used by Epetra. - @ingroup MueLuAdapters - Given a Epetra_CrsMatrix, this function returns a constructed MueLu preconditioner. - @param[in] inA Matrix - @param[in] xmlFileName XML file containing MueLu options. - */ -Teuchos::RCP -CreateEpetraPreconditioner(const Teuchos::RCP& A, - const std::string& xmlFileName) { - Teuchos::ParameterList paramList; - Teuchos::updateParametersFromXmlFileAndBroadcast(xmlFileName, Teuchos::Ptr(¶mList), *Xpetra::toXpetra(A->Comm())); - - return CreateEpetraPreconditioner(A, paramList); -} - -/*! - @brief Helper function to create a MueLu preconditioner that can be used by Epetra. - @ingroup MueLuAdapters - Given a Epetra_CrsMatrix, this function returns a constructed MueLu preconditioner. - @param[in] inA Matrix. - */ -Teuchos::RCP -CreateEpetraPreconditioner(const Teuchos::RCP& A) { - Teuchos::ParameterList paramList; - return CreateEpetraPreconditioner(A, paramList); -} - -void ReuseEpetraPreconditioner(const Teuchos::RCP& inA, MueLu::EpetraOperator& Op) { - using SC = double; - using LO = int; - using GO = int; - using NO = Xpetra::EpetraNode; - - using Teuchos::ParameterList; - - using Matrix = Xpetra::Matrix; - using Hierarchy = Hierarchy; - - RCP H = Op.GetHierarchy(); - RCP A = EpetraCrs_To_XpetraMatrix(inA); - - MueLu::ReuseXpetraPreconditioner(A, H); -} - -} // namespace MueLu -#endif // HAVE_MUELU_SERIAL and HAVE_MUELU_EPETRA - -#endif // ifndef MUELU_CREATE_EPETRA_PRECONDITIONER_CPP diff --git a/packages/muelu/adapters/epetra/MueLu_CreateEpetraPreconditioner.hpp b/packages/muelu/adapters/epetra/MueLu_CreateEpetraPreconditioner.hpp deleted file mode 100644 index af448200cb9a..000000000000 --- a/packages/muelu/adapters/epetra/MueLu_CreateEpetraPreconditioner.hpp +++ /dev/null @@ -1,65 +0,0 @@ -// @HEADER -// ***************************************************************************** -// MueLu: A package for multigrid based preconditioning -// -// Copyright 2012 NTESS and the MueLu contributors. -// SPDX-License-Identifier: BSD-3-Clause -// ***************************************************************************** -// @HEADER - -#ifndef MUELU_CREATE_EPETRA_PRECONDITIONER_HPP -#define MUELU_CREATE_EPETRA_PRECONDITIONER_HPP - -#include -#include - -#include - -#include - -#include - -//! @file -//! @brief Various adapters that will create a MueLu preconditioner that is an Epetra_Operator. -#if defined(HAVE_MUELU_EPETRA) -namespace MueLu { - -/*! - @brief Helper function to create a MueLu preconditioner that can be used by Epetra. - @ingroup MueLuAdapters - Given a EpetraCrs_Matrix, this function returns a constructed MueLu preconditioner. - @param[in] inA Matrix - @param[in] paramListIn Parameter list - */ -Teuchos::RCP -CreateEpetraPreconditioner(const Teuchos::RCP& inA, - // FIXME: why is it non-const - Teuchos::ParameterList& paramListIn); - -/*! - @brief Helper function to create a MueLu preconditioner that can be used by Epetra. - @ingroup MueLuAdapters - Given a Epetra_CrsMatrix, this function returns a constructed MueLu preconditioner. - @param[in] inA Matrix - @param[in] xmlFileName XML file containing MueLu options. - */ -Teuchos::RCP -CreateEpetraPreconditioner(const Teuchos::RCP& A, - const std::string& xmlFileName); - -/*! - @brief Helper function to create a MueLu preconditioner that can be used by Epetra. - @ingroup MueLuAdapters - Given a Epetra_CrsMatrix, this function returns a constructed MueLu preconditioner. - @param[in] inA Matrix - */ -Teuchos::RCP -CreateEpetraPreconditioner(const Teuchos::RCP& A, - const std::string& xmlFileName); - -void ReuseEpetraPreconditioner(const Teuchos::RCP& inA, MueLu::EpetraOperator& Op); - -} // namespace MueLu -#endif // HAVE_MUELU_SERIAL and HAVE_MUELU_EPETRA - -#endif // ifndef MUELU_CREATE_EPETRA_PRECONDITIONER_HPP diff --git a/packages/muelu/adapters/epetra/MueLu_EpetraOperator.cpp b/packages/muelu/adapters/epetra/MueLu_EpetraOperator.cpp deleted file mode 100644 index ef4d687fd46e..000000000000 --- a/packages/muelu/adapters/epetra/MueLu_EpetraOperator.cpp +++ /dev/null @@ -1,118 +0,0 @@ -// @HEADER -// ***************************************************************************** -// MueLu: A package for multigrid based preconditioning -// -// Copyright 2012 NTESS and the MueLu contributors. -// SPDX-License-Identifier: BSD-3-Clause -// ***************************************************************************** -// @HEADER - -#include -#include -#include -#include - -#include "MueLu_EpetraOperator.hpp" -#include "MueLu_Level.hpp" - -#if defined(HAVE_MUELU_SERIAL) and defined(HAVE_MUELU_EPETRA) - -namespace MueLu { - -int EpetraOperator::ApplyInverse(const Epetra_MultiVector& X, Epetra_MultiVector& Y) const { - try { - // There is no rcpFromRef(const T&), so we need to do const_cast - const Xpetra::EpetraMultiVectorT eX(rcpFromRef(const_cast(X))); - Xpetra::EpetraMultiVectorT eY(rcpFromRef(Y)); - // Generally, we assume two different vectors, but AztecOO uses a single vector - if (X.Values() == Y.Values()) { - // X and Y point to the same memory, use an additional vector - RCP> tmpY = Teuchos::rcp(new Xpetra::EpetraMultiVectorT(eY.getMap(), eY.getNumVectors())); - // InitialGuessIsZero in MueLu::Hierarchy.Iterate() does not zero out components, it - // only assumes that user provided an already zeroed out vector - bool initialGuessZero = true; - tmpY->putScalar(0.0); - // apply one V-cycle as preconditioner - Hierarchy_->Iterate(eX, *tmpY, 1, initialGuessZero); - // deep copy solution from MueLu - eY.update(1.0, *tmpY, 0.0); - } else { - // X and Y point to different memory, pass the vectors through - - // InitialGuessIsZero in MueLu::Hierarchy.Iterate() does not zero out components, it - // only assumes that user provided an already zeroed out vector - bool initialGuessZero = true; - eY.putScalar(0.0); - Hierarchy_->Iterate(eX, eY, 1, initialGuessZero); - } - - } catch (std::exception& e) { - // TODO: error msg directly on std::cerr? - std::cerr << "Caught an exception in MueLu::EpetraOperator::ApplyInverse():" << std::endl - << e.what() << std::endl; - return -1; - } - return 0; -} - -const Epetra_Comm& EpetraOperator::Comm() const { - RCP A = Hierarchy_->GetLevel(0)->Get>("A"); - - // TODO: This code is not pretty - RCP> epbA = Teuchos::rcp_dynamic_cast>(A); - if (epbA != Teuchos::null) { - RCP> blockMat = epbA->getMatrix(0, 0); - RCP> blockCrsWrap = Teuchos::rcp_dynamic_cast>(blockMat); - if (blockCrsWrap == Teuchos::null) - throw Exceptions::BadCast("MueLu::EpetraOperator::Comm(): Cast from block (0,0) to CrsMatrixWrap failed. Could be a block matrix. TODO implement recursive support for block matrices."); - RCP> tmp_ECrsMtx = rcp_dynamic_cast>(blockCrsWrap->getCrsMatrix()); - if (tmp_ECrsMtx == Teuchos::null) - throw Exceptions::BadCast("MueLu::EpetraOperator::Comm(): Cast from Xpetra::CrsMatrix to Xpetra::EpetraCrsMatrix failed"); - RCP epA = tmp_ECrsMtx->getEpetra_CrsMatrixNonConst(); - return epA->Comm(); - } - - RCP> crsOp = rcp_dynamic_cast>(A); - if (crsOp == Teuchos::null) - throw Exceptions::BadCast("Cast from Xpetra::Matrix to Xpetra::CrsMatrixWrap failed"); - const RCP>& tmp_ECrsMtx = rcp_dynamic_cast>(crsOp->getCrsMatrix()); - if (tmp_ECrsMtx == Teuchos::null) - throw Exceptions::BadCast("Cast from Xpetra::CrsMatrix to Xpetra::EpetraCrsMatrix failed"); - return tmp_ECrsMtx->getEpetra_CrsMatrixNonConst()->Comm(); -} - -const Epetra_Map& EpetraOperator::OperatorDomainMap() const { - RCP> A = Hierarchy_->GetLevel(0)->Get>("A"); - - RCP> epbA = Teuchos::rcp_dynamic_cast>(A); - if (epbA != Teuchos::null) - return Xpetra::toEpetra(epbA->getFullDomainMap()); // TODO check me - - RCP> crsOp = rcp_dynamic_cast>(A); - if (crsOp == Teuchos::null) - throw Exceptions::BadCast("Cast from Xpetra::Matrix to Xpetra::CrsMatrixWrap failed"); - const RCP>& tmp_ECrsMtx = rcp_dynamic_cast>(crsOp->getCrsMatrix()); - if (tmp_ECrsMtx == Teuchos::null) - throw Exceptions::BadCast("Cast from Xpetra::CrsMatrix to Xpetra::EpetraCrsMatrix failed"); - return tmp_ECrsMtx->getEpetra_CrsMatrixNonConst()->DomainMap(); -} - -const Epetra_Map& EpetraOperator::OperatorRangeMap() const { - RCP> A = Hierarchy_->GetLevel(0)->Get>("A"); - - RCP> epbA = Teuchos::rcp_dynamic_cast>(A); - if (epbA != Teuchos::null) - return Xpetra::toEpetra(epbA->getFullRangeMap()); - - RCP> crsOp = rcp_dynamic_cast>(A); - if (crsOp == Teuchos::null) - throw Exceptions::BadCast("Cast from Xpetra::Matrix to Xpetra::CrsMatrixWrap failed"); - const RCP>& tmp_ECrsMtx = rcp_dynamic_cast>(crsOp->getCrsMatrix()); - if (tmp_ECrsMtx == Teuchos::null) - throw Exceptions::BadCast("Cast from Xpetra::CrsMatrix to Xpetra::EpetraCrsMatrix failed"); - return tmp_ECrsMtx->getEpetra_CrsMatrixNonConst()->RangeMap(); -} - -} // namespace MueLu - -#endif // #if defined(HAVE_MUELU_SERIAL) and defined(HAVE_MUELU_EPETRA) diff --git a/packages/muelu/adapters/epetra/MueLu_EpetraOperator.hpp b/packages/muelu/adapters/epetra/MueLu_EpetraOperator.hpp deleted file mode 100644 index 12f46ae89f95..000000000000 --- a/packages/muelu/adapters/epetra/MueLu_EpetraOperator.hpp +++ /dev/null @@ -1,128 +0,0 @@ -// @HEADER -// ***************************************************************************** -// MueLu: A package for multigrid based preconditioning -// -// Copyright 2012 NTESS and the MueLu contributors. -// SPDX-License-Identifier: BSD-3-Clause -// ***************************************************************************** -// @HEADER - -#ifndef MUELU_EPETRAOPERATOR_HPP -#define MUELU_EPETRAOPERATOR_HPP - -//! @file - -#include -#include "MueLu_Hierarchy.hpp" -// TODO: Kokkos headers - -#if defined(HAVE_MUELU_SERIAL) and defined(HAVE_MUELU_EPETRA) - -namespace MueLu { - -/*! @class EpetraOperator - @brief Turns a MueLu::Hierarchy into a Epetra_Operator. - It allows MueLu to be used as a preconditioner for AztecOO (for instance). -*/ -class EpetraOperator : public Epetra_Operator { - typedef double SC; - typedef int LO; - typedef int GO; - typedef Xpetra::EpetraNode NO; - - typedef Xpetra::Matrix Matrix; - typedef MueLu::Hierarchy Hierarchy; - typedef MueLu::Utilities Utils; - - public: - //! @name Constructor/Destructor - //@{ - - //! Constructor - EpetraOperator(const RCP& H) - : Hierarchy_(H) {} - - //! Destructor. - virtual ~EpetraOperator() {} - - //@} - - int SetUseTranspose(bool /* UseTransposeBool */) { return -1; } - - //! @name Mathematical functions - //@{ - - //! Returns the result of a Epetra_Operator applied to a Epetra_MultiVector X in Y. - /*! - \param In - X - A Epetra_MultiVector of dimension NumVectors to multiply with matrix. - \param Out - Y -A Epetra_MultiVector of dimension NumVectors containing result. - - \return Integer error code, set to 0 if successful. - */ - int Apply(const Epetra_MultiVector& /* X */, Epetra_MultiVector& /* Y */) const { return -1; } - - //! Returns the result of a Epetra_Operator inverse applied to an Epetra_MultiVector X in Y. - /*! - \param In - X - A Epetra_MultiVector of dimension NumVectors to solve for. - \param Out - Y -A Epetra_MultiVector of dimension NumVectors containing result. - - \return Integer error code, set to 0 if successful. - - \warning In order to work with AztecOO, any implementation of this method must - support the case where X and Y are the same object. - */ - int ApplyInverse(const Epetra_MultiVector& X, Epetra_MultiVector& Y) const; - - //! Returns the infinity norm of the global matrix. - /* Returns the quantity \f$ \| A \|_\infty\f$ such that - \f[\| A \|_\infty = \max_{1\lei\lem} \sum_{j=1}^n |a_{ij}| \f]. - - \warning This method must not be called unless HasNormInf() returns true. - */ - double NormInf() const { return 0; } - //@} - - //! @name Attribute access functions - //@{ - - //! Returns a character string describing the operator - const char* Label() const { return "MueLu::Hierarchy"; } - - //! Returns the current UseTranspose setting. - bool UseTranspose() const { return false; } - - //! Returns true if the \e this object can provide an approximate Inf-norm, false otherwise. - bool HasNormInf() const { return 0; } - - //! Returns a pointer to the Epetra_Comm communicator associated with this operator. - const Epetra_Comm& Comm() const; - - //! Returns the Epetra_Map object associated with the domain of this operator. - const Epetra_Map& OperatorDomainMap() const; - - //! Returns the Epetra_Map object associated with the range of this operator. - const Epetra_Map& OperatorRangeMap() const; - - //@} - - //! @name MueLu specific - //@{ - - //! Direct access to the underlying MueLu::Hierarchy. - RCP GetHierarchy() const { return Hierarchy_; } - - //@} - - private: - RCP Hierarchy_; -}; - -} // namespace MueLu - -#endif // HAVE_MUELU_EPETRA and HAVE_MUELU_SERIAL - -#endif // MUELU_EPETRAOPERATOR_HPP diff --git a/packages/muelu/adapters/linear_solver_factory/MueLu_Details_LinearSolverFactory_def.hpp b/packages/muelu/adapters/linear_solver_factory/MueLu_Details_LinearSolverFactory_def.hpp index b0abcce3b5d5..73bb6ecefc7c 100644 --- a/packages/muelu/adapters/linear_solver_factory/MueLu_Details_LinearSolverFactory_def.hpp +++ b/packages/muelu/adapters/linear_solver_factory/MueLu_Details_LinearSolverFactory_def.hpp @@ -19,11 +19,6 @@ #include "Trilinos_Details_LinearSolverFactory.hpp" #include -#ifdef HAVE_MUELU_EPETRA -#include "Epetra_CrsMatrix.h" -#include "MueLu_CreateEpetraPreconditioner.hpp" -#endif // HAVE_MUELU_EPETRA - #include "Tpetra_Operator.hpp" #include "MueLu_CreateTpetraPreconditioner.hpp" diff --git a/packages/muelu/adapters/linear_solver_factory/MueLu_Details_registerLinearSolverFactory.cpp b/packages/muelu/adapters/linear_solver_factory/MueLu_Details_registerLinearSolverFactory.cpp deleted file mode 100644 index 54f5679e1a19..000000000000 --- a/packages/muelu/adapters/linear_solver_factory/MueLu_Details_registerLinearSolverFactory.cpp +++ /dev/null @@ -1,58 +0,0 @@ -// @HEADER -// ***************************************************************************** -// MueLu: A package for multigrid based preconditioning -// -// Copyright 2012 NTESS and the MueLu contributors. -// SPDX-License-Identifier: BSD-3-Clause -// ***************************************************************************** -// @HEADER - -#include "MueLu_Details_registerLinearSolverFactory.hpp" -#include "MueLu_Details_LinearSolverFactory.hpp" -#include "Tpetra_MultiVector.hpp" -#include "Tpetra_Operator.hpp" -#ifdef HAVE_MUELU_EPETRA -#include "Epetra_MultiVector.h" -#include "Epetra_Operator.h" -#endif -#include "TpetraCore_ETIHelperMacros.h" - -// Define Tpetra instantiation macros and typedefs that make the -// macros work. The fix for Bug 6380 makes this work whether or not -// ETI is ON. We use the Tpetra macros because MueLu doesn't have -// its own macos. -TPETRA_ETI_MANGLING_TYPEDEFS() - -// Macro that registers MueLu's LinearSolverFactory for Tpetra -// objects, for the given four template parameters (Scalar = SC, -// LocalOrdinal = LO, GlobalOrdinal = GO, Node = NT). The macro is -// local to this file. -// -// NOTE: This macro does NOT do explicit instantiation! That's why I -// call it LCL_CALL and not LCL_INST. We are just using the macros to -// invoke this class method over the set of enabled template -// parameters. -#define LCL_CALL(SC, LO, GO, NT) \ - ::MueLu::Details::LinearSolverFactory, \ - Tpetra::Operator, \ - typename Tpetra::MultiVector::mag_type>::registerLinearSolverFactory(); - -namespace MueLu { -namespace Details { - -void registerLinearSolverFactory() { - // Fill in the body of the function with all the type-specific - // run-time registration functions, for registering MueLu's - // LinearSolverFactory with Tpetra objects. - TPETRA_INSTANTIATE_SLGN_NO_ORDINAL_SCALAR(LCL_CALL) - - // If Epetra is enabled in MueLu, also register MueLu's - // LinearSolverFactory for Epetra objects. -#ifdef HAVE_MUELU_EPETRA - ::MueLu::Details::LinearSolverFactory::registerLinearSolverFactory(); -#endif // HAVE_MUELU_EPETRA -} - -} // namespace Details -} // namespace MueLu \ No newline at end of file diff --git a/packages/muelu/adapters/stratimikos/Thyra_MueLuMaxwell1PreconditionerFactory_def.hpp b/packages/muelu/adapters/stratimikos/Thyra_MueLuMaxwell1PreconditionerFactory_def.hpp index 5427491e0a3d..418484e0d39e 100644 --- a/packages/muelu/adapters/stratimikos/Thyra_MueLuMaxwell1PreconditionerFactory_def.hpp +++ b/packages/muelu/adapters/stratimikos/Thyra_MueLuMaxwell1PreconditionerFactory_def.hpp @@ -50,10 +50,6 @@ bool MueLuMaxwell1PreconditionerFactory::isTpetra(fwdOp)) return true; -#ifdef HAVE_MUELU_EPETRA - if (Xpetra::ThyraUtils::isEpetra(fwdOp)) return true; -#endif - return false; } diff --git a/packages/muelu/adapters/stratimikos/Thyra_MueLuPreconditionerFactory_decl.hpp b/packages/muelu/adapters/stratimikos/Thyra_MueLuPreconditionerFactory_decl.hpp index 5d3a61f0ea5b..c60aa851ff59 100644 --- a/packages/muelu/adapters/stratimikos/Thyra_MueLuPreconditionerFactory_decl.hpp +++ b/packages/muelu/adapters/stratimikos/Thyra_MueLuPreconditionerFactory_decl.hpp @@ -21,9 +21,6 @@ #include "Thyra_XpetraLinearOp.hpp" #include "Thyra_TpetraLinearOp.hpp" #include "Thyra_TpetraThyraWrappers.hpp" -#ifdef HAVE_MUELU_EPETRA -#include "Thyra_EpetraLinearOp.hpp" -#endif #include "Teuchos_Ptr.hpp" #include "Teuchos_TestForException.hpp" @@ -45,9 +42,6 @@ #include #include #include -#ifdef HAVE_MUELU_EPETRA -#include -#endif #include "Thyra_PreconditionerFactoryBase.hpp" @@ -65,13 +59,6 @@ struct Converters { static bool replaceWithXpetra(ParameterList& paramList, std::string parameterName); }; -#ifdef HAVE_MUELU_EPETRA -template -struct Converters { - static bool replaceWithXpetra(ParameterList& paramList, std::string parameterName); -}; -#endif - /** @brief Concrete preconditioner factory subclass for Thyra based on MueLu. @ingroup MueLuAdapters Add support for MueLu preconditioners in Thyra. This class provides an interface both diff --git a/packages/muelu/adapters/stratimikos/Thyra_MueLuPreconditionerFactory_def.hpp b/packages/muelu/adapters/stratimikos/Thyra_MueLuPreconditionerFactory_def.hpp index 313c2a98b497..5b8a036c805f 100644 --- a/packages/muelu/adapters/stratimikos/Thyra_MueLuPreconditionerFactory_def.hpp +++ b/packages/muelu/adapters/stratimikos/Thyra_MueLuPreconditionerFactory_def.hpp @@ -165,181 +165,6 @@ bool Converters::replaceWithXpetra(Pa return false; } -#ifdef HAVE_MUELU_EPETRA -template -bool Converters::replaceWithXpetra(ParameterList& paramList, std::string parameterName) { - typedef double Scalar; - typedef int LocalOrdinal; - typedef Tpetra::KokkosCompat::KokkosSerialWrapperNode Node; - typedef typename Teuchos::ScalarTraits::magnitudeType Magnitude; - typedef Xpetra::Operator XpOp; - typedef Xpetra::ThyraUtils XpThyUtils; - typedef Xpetra::CrsMatrixWrap XpCrsMatWrap; - typedef Xpetra::CrsMatrix XpCrsMat; - typedef Xpetra::Matrix XpMat; - typedef Xpetra::MultiVector XpMultVec; - typedef Xpetra::MultiVector XpMagMultVec; - typedef Xpetra::Vector XpVec; - - typedef Thyra::LinearOpBase ThyLinOpBase; - typedef Thyra::DiagonalLinearOpBase ThyDiagLinOpBase; - typedef Thyra::SpmdVectorSpaceBase ThyVSBase; - - typedef Tpetra::CrsMatrix TpCrsMat; - typedef Tpetra::Operator tOp; - typedef Tpetra::Vector tV; - typedef Thyra::TpetraVector thyTpV; - typedef Tpetra::MultiVector tMV; - typedef Tpetra::MultiVector tMagMV; -#if defined(MUELU_CAN_USE_MIXED_PRECISION) - typedef typename Teuchos::ScalarTraits::halfPrecision HalfMagnitude; - typedef Tpetra::MultiVector tHalfMagMV; -#endif -#if defined(HAVE_MUELU_EPETRA) - typedef Xpetra::EpetraCrsMatrixT XpEpCrsMat; -#endif - - if (paramList.isParameter(parameterName)) { - if (paramList.isType >(parameterName)) - return true; - else if (paramList.isType >(parameterName)) { - RCP constM = paramList.get >(parameterName); - paramList.remove(parameterName); - RCP M = rcp_const_cast(constM); - paramList.set >(parameterName, M); - return true; - } else if (paramList.isType >(parameterName)) - return true; - else if (paramList.isType >(parameterName)) { - RCP constX = paramList.get >(parameterName); - paramList.remove(parameterName); - RCP X = rcp_const_cast(constX); - paramList.set >(parameterName, X); - return true; - } else if (paramList.isType >(parameterName)) - return true; - else if (paramList.isType >(parameterName)) { - RCP constX = paramList.get >(parameterName); - paramList.remove(parameterName); - RCP X = rcp_const_cast(constX); - paramList.set >(parameterName, X); - return true; - } else if (paramList.isType >(parameterName)) { - RCP tM = paramList.get >(parameterName); - paramList.remove(parameterName); - RCP xM = MueLu::TpetraCrs_To_XpetraMatrix(tM); - paramList.set >(parameterName, xM); - return true; - } else if (paramList.isType >(parameterName)) { - RCP tpetra_X = paramList.get >(parameterName); - paramList.remove(parameterName); - RCP X = MueLu::TpetraMultiVector_To_XpetraMultiVector(tpetra_X); - paramList.set >(parameterName, X); - TEUCHOS_TEST_FOR_EXCEPT(Teuchos::is_null(X)); - return true; - } else if (paramList.isType >(parameterName)) { - RCP tpetra_X = paramList.get >(parameterName); - paramList.remove(parameterName); - RCP X = MueLu::TpetraMultiVector_To_XpetraMultiVector(tpetra_X); - paramList.set >(parameterName, X); - TEUCHOS_TEST_FOR_EXCEPT(Teuchos::is_null(X)); - return true; - } -#if defined(MUELU_CAN_USE_MIXED_PRECISION) - else if (paramList.isType >(parameterName)) { - RCP tpetra_hX = paramList.get >(parameterName); - paramList.remove(parameterName); - RCP tpetra_X = rcp(new tMagMV(tpetra_hX->getMap(), tpetra_hX->getNumVectors())); - Tpetra::deep_copy(*tpetra_X, *tpetra_hX); - RCP X = MueLu::TpetraMultiVector_To_XpetraMultiVector(tpetra_X); - paramList.set >(parameterName, X); - TEUCHOS_TEST_FOR_EXCEPT(Teuchos::is_null(X)); - return true; - } -#endif -#ifdef HAVE_MUELU_EPETRA - else if (paramList.isType >(parameterName)) { - RCP eM = paramList.get >(parameterName); - paramList.remove(parameterName); - RCP xeM = rcp(new XpEpCrsMat(eM)); - RCP xCrsM = rcp_dynamic_cast(xeM, true); - RCP xwM = rcp(new XpCrsMatWrap(xCrsM)); - RCP xM = rcp_dynamic_cast(xwM); - paramList.set >(parameterName, xM); - return true; - } else if (paramList.isType >(parameterName)) { - RCP epetra_X = Teuchos::null; - epetra_X = paramList.get >(parameterName); - paramList.remove(parameterName); - RCP > xpEpX = rcp(new Xpetra::EpetraMultiVectorT(epetra_X)); - RCP > xpEpXMult = rcp_dynamic_cast >(xpEpX, true); - RCP X = rcp_dynamic_cast(xpEpXMult, true); - paramList.set >(parameterName, X); - return true; - } -#endif - else if (paramList.isType >(parameterName) || - (paramList.isType >(parameterName) && !rcp_dynamic_cast(paramList.get >(parameterName)).is_null())) { - RCP thyM; - if (paramList.isType >(parameterName)) - thyM = paramList.get >(parameterName); - else - thyM = rcp_dynamic_cast(paramList.get >(parameterName), true); - paramList.remove(parameterName); - RCP > diag = thyM->getDiag(); - - RCP xpDiag; - if (!rcp_dynamic_cast(diag).is_null()) { - RCP tDiag = Thyra::TpetraOperatorVectorExtraction::getConstTpetraVector(diag); - if (!tDiag.is_null()) - xpDiag = Xpetra::toXpetra(tDiag); - } -#ifdef HAVE_MUELU_EPETRA - if (xpDiag.is_null()) { - RCP comm = Thyra::get_Epetra_Comm(*rcp_dynamic_cast(thyM->range())->getComm()); - RCP map = Thyra::get_Epetra_Map(*(thyM->range()), comm); - if (!map.is_null()) { - RCP eDiag = Thyra::get_Epetra_Vector(*map, diag); - RCP nceDiag = rcp_const_cast(eDiag); - RCP > xpEpDiag = rcp(new Xpetra::EpetraVectorT(nceDiag)); - xpDiag = rcp_dynamic_cast(xpEpDiag, true); - } - } -#endif - TEUCHOS_ASSERT(!xpDiag.is_null()); - RCP M = Xpetra::MatrixFactory::Build(xpDiag); - paramList.set >(parameterName, M); - return true; - } else if (paramList.isType >(parameterName)) { - RCP thyM = paramList.get >(parameterName); - paramList.remove(parameterName); - try { - RCP M = XpThyUtils::toXpetra(Teuchos::rcp_const_cast(thyM)); - paramList.set >(parameterName, M); - } catch (std::exception& e) { - RCP M = XpThyUtils::toXpetraOperator(Teuchos::rcp_const_cast(thyM)); - RCP > tpOp = rcp_dynamic_cast >(M, true); - RCP tO = tpOp->getOperator(); - RCP diag; - if (tO->hasDiagonal()) { - diag = rcp(new tV(tO->getRangeMap())); - tO->getLocalDiagCopy(*diag); - } - auto fTpRow = rcp(new MueLu::TpetraOperatorAsRowMatrix(tO, diag)); - RCP > tpFOp = rcp(new Xpetra::TpetraOperator(fTpRow)); - auto op = rcp_dynamic_cast(tpFOp); - paramList.set >(parameterName, op); - } - return true; - } else { - TEUCHOS_TEST_FOR_EXCEPTION(true, MueLu::Exceptions::RuntimeError, "Parameter " << parameterName << " has wrong type."); - return false; - } - } else - return false; -} -#endif - // Constructors/initializers/accessors template @@ -357,10 +182,6 @@ bool MueLuPreconditionerFactory::isCo if (Xpetra::ThyraUtils::isTpetra(fwdOp)) return true; -#ifdef HAVE_MUELU_EPETRA - if (Xpetra::ThyraUtils::isEpetra(fwdOp)) return true; -#endif - if (Xpetra::ThyraUtils::isBlockedOperator(fwdOp)) return true; return false; diff --git a/packages/muelu/adapters/stratimikos/Thyra_MueLuRefMaxwellPreconditionerFactory_decl.hpp b/packages/muelu/adapters/stratimikos/Thyra_MueLuRefMaxwellPreconditionerFactory_decl.hpp index f60bd7385aa8..82cb3b0e2882 100644 --- a/packages/muelu/adapters/stratimikos/Thyra_MueLuRefMaxwellPreconditionerFactory_decl.hpp +++ b/packages/muelu/adapters/stratimikos/Thyra_MueLuRefMaxwellPreconditionerFactory_decl.hpp @@ -22,10 +22,6 @@ #include #include "Thyra_TpetraLinearOp.hpp" #include "Thyra_TpetraThyraWrappers.hpp" -#ifdef HAVE_MUELU_EPETRA -#include "Thyra_EpetraLinearOp.hpp" -#include "Thyra_EpetraThyraWrappers.hpp" -#endif #include "Teuchos_Ptr.hpp" #include "Teuchos_TestForException.hpp" @@ -42,10 +38,6 @@ #include #include #include -#ifdef HAVE_MUELU_EPETRA -#include -#include -#endif #include "Thyra_PreconditionerFactoryBase.hpp" diff --git a/packages/muelu/adapters/stratimikos/Thyra_MueLuRefMaxwellPreconditionerFactory_def.hpp b/packages/muelu/adapters/stratimikos/Thyra_MueLuRefMaxwellPreconditionerFactory_def.hpp index 19aa9e34db37..3abdac4b7814 100644 --- a/packages/muelu/adapters/stratimikos/Thyra_MueLuRefMaxwellPreconditionerFactory_def.hpp +++ b/packages/muelu/adapters/stratimikos/Thyra_MueLuRefMaxwellPreconditionerFactory_def.hpp @@ -44,10 +44,6 @@ bool MueLuRefMaxwellPreconditionerFactory::isTpetra(fwdOp)) return true; -#ifdef HAVE_MUELU_EPETRA - if (Xpetra::ThyraUtils::isEpetra(fwdOp)) return true; -#endif - return false; } diff --git a/packages/muelu/adapters/tpetra/MueLu_ShiftedLaplacian_decl.hpp b/packages/muelu/adapters/tpetra/MueLu_ShiftedLaplacian_decl.hpp index 74b69a90603e..219602bd0d31 100644 --- a/packages/muelu/adapters/tpetra/MueLu_ShiftedLaplacian_decl.hpp +++ b/packages/muelu/adapters/tpetra/MueLu_ShiftedLaplacian_decl.hpp @@ -20,8 +20,6 @@ #include "MueLu.hpp" #include "MueLu_ConfigDefs.hpp" -#if defined(HAVE_MUELU_IFPACK2) - #include #include #include @@ -270,6 +268,4 @@ class ShiftedLaplacian : public BaseClass { #define MUELU_SHIFTEDLAPLACIAN_SHORT -#endif // if defined(HAVE_MUELU_IFPACK2) and defined(HAVE_MUELU_TPETRA) - #endif // MUELU_SHIFTEDLAPLACIAN_DECL_HPP diff --git a/packages/muelu/example/ParameterList/MLParameterList.cpp b/packages/muelu/example/ParameterList/MLParameterList.cpp index afcc58d03679..78e2bd419414 100644 --- a/packages/muelu/example/ParameterList/MLParameterList.cpp +++ b/packages/muelu/example/ParameterList/MLParameterList.cpp @@ -15,20 +15,6 @@ #include // getParametersFromXmlFile() -#if defined(HAVE_MUELU_ML) && defined(HAVE_MUELU_EPETRA) -#include -#include -#include -#endif - -#ifdef HAVE_MUELU_AZTECOO -#include -#endif - -#ifdef HAVE_MUELU_EPETRA -#include -#endif - #include #include #include @@ -76,9 +62,6 @@ int main_(Teuchos::CommandLineProcessor &clp, Xpetra::UnderlyingLib lib, int arg int translatedmuelu = true; clp.setOption("muelu2", &translatedmuelu, "use muelu through XML parameter translation and ParameterListInterpreter"); int ml = true; -#if defined(HAVE_MUELU_ML) && defined(HAVE_MUELU_EPETRA) - clp.setOption("ml", &ml, "use ml"); -#endif switch (clp.parse(argc, argv)) { case Teuchos::CommandLineProcessor::PARSE_HELP_PRINTED: return EXIT_SUCCESS; @@ -195,134 +178,8 @@ int main_(Teuchos::CommandLineProcessor &clp, Xpetra::UnderlyingLib lib, int arg if (comm->getRank() == 0) std::cout << "||Residual|| = " << residualNorms << std::endl; -#if defined(HAVE_MUELU_EPETRA) && defined(HAVE_MUELU_AZTECOO) && !defined(HAVE_MUELU_CUDA) && !defined(HAVE_MUELU_HIP) && !defined(HAVE_MUELU_SYCL) - // TODO TAW: 4/8/2016 - // temporarely deactivate this due to runtime error on perseus: - // Cast from Xpetra::CrsMatrix to Xpetra::EpetraCrsMatrix failed - // if SERIAL=OFF, OPENMP=OFF, PTHREAD=ON, CUDA=OFF - // probably a fix necessary in EpetraOperator (which only supports - // SERIAL or OPENMP, but not PTHREAD of course). - - if (xpetraParameters.GetLib() == Xpetra::UseEpetra) { // TODO: should be doable with Tpetra too - - // AMG as a preconditioner - - // TODO: name mueluPrec and mlPrec not - - H->IsPreconditioner(true); - MueLu::EpetraOperator mueluPrec(H); // Wrap MueLu preconditioner into an Epetra Operator - - // - // Solve Ax = b - // - RCP eA; // duplicate code - { // TODO: simplify this - RCP xCrsOp = Teuchos::rcp_dynamic_cast(A, true); - RCP xCrsMtx = xCrsOp->getCrsMatrix(); - RCP eCrsMtx = Teuchos::rcp_dynamic_cast(xCrsMtx, true); - eA = eCrsMtx->getEpetra_CrsMatrixNonConst(); - } - - RCP eX = rcp(new Epetra_Vector(eA->RowMap())); - RCP eB = rcp(new Epetra_Vector(eA->RowMap())); - - eX->PutScalar((Scalar)0.0); - eB->SetSeed(846930886); - eB->Random(); - - Epetra_LinearProblem eProblem(eA.get(), eX.get(), eB.get()); - - // AMG as a standalone solver - AztecOO solver(eProblem); - solver.SetPrecOperator(&mueluPrec); - solver.SetAztecOption(AZ_solver, AZ_fixed_pt); - solver.SetAztecOption(AZ_output, 1); - - solver.Iterate(nIts, 1e-10); - - { // TODO: simplify this - RCP mueluX = rcp(new Xpetra::EpetraVectorT(eX)); - RCP mueluB = rcp(new Xpetra::EpetraVectorT(eB)); - // Print relative residual norm - typename Teuchos::ScalarTraits::magnitudeType residualNorms2 = Utilities::ResidualNorm(*A, *mueluX, *mueluB)[0]; - if (comm->getRank() == 0) - std::cout << "||Residual|| = " << residualNorms2 << std::endl; - } - - // TODO: AMG as a preconditioner (AZ_cg) - } -#endif // HAVE_MUELU_AZTECOO } // if (translatedmuelu) -#if defined(HAVE_MUELU_ML) && defined(HAVE_MUELU_EPETRA) && defined(HAVE_MUELU_AZTECOO) && !defined(HAVE_MUELU_CUDA) && !defined(HAVE_MUELU_HIP) && !defined(HAVE_MUELU_SYCL) - if (ml) { - std::cout << std::endl - << std::endl - << std::endl - << std::endl - << "**** ML ml ML ml ML" << std::endl - << std::endl - << std::endl - << std::endl; - - // - // Construct a multigrid preconditioner - // - - // Multigrid Hierarchy - RCP crsOp = Teuchos::rcp_dynamic_cast(A, true); - RCP crsMtx = crsOp->getCrsMatrix(); - RCP epetraCrsMtx = Teuchos::rcp_dynamic_cast(crsMtx, true); - RCP epetra_CrsMtx = epetraCrsMtx->getEpetra_CrsMatrix(); - - RCP eA; - { // TODO: simplify this - RCP xCrsOp = Teuchos::rcp_dynamic_cast(A, true); - RCP xCrsMtx = xCrsOp->getCrsMatrix(); - RCP eCrsMtx = Teuchos::rcp_dynamic_cast(xCrsMtx, true); - eA = eCrsMtx->getEpetra_CrsMatrixNonConst(); - } - - RCP mlPrec = rcp(new ML_Epetra::MultiLevelPreconditioner(*eA, *params)); - - // - // Solve Ax = b - // - - RCP eX = rcp(new Epetra_Vector(eA->RowMap())); - RCP eB = rcp(new Epetra_Vector(eA->RowMap())); - - eX->PutScalar((Scalar)0.0); - eB->SetSeed(846930886); - eB->Random(); - - Epetra_LinearProblem eProblem(eA.get(), eX.get(), eB.get()); - - // AMG as a standalone solver - AztecOO solver(eProblem); - solver.SetPrecOperator(mlPrec.get()); - solver.SetAztecOption(AZ_solver, AZ_fixed_pt); - solver.SetAztecOption(AZ_output, 1); - - solver.Iterate(nIts, 1e-10); - - { // TODO: simplify this - RCP mueluX = rcp(new Xpetra::EpetraVectorT(eX)); - RCP mueluB = rcp(new Xpetra::EpetraVectorT(eB)); - // Print relative residual norm - typename Teuchos::ScalarTraits::magnitudeType residualNorms = Utilities::ResidualNorm(*A, *mueluX, *mueluB)[0]; - if (comm->getRank() == 0) - std::cout << "||Residual|| = " << residualNorms << std::endl; - } - - std::cout << "Parameter list after ML run" << std::endl; - const Teuchos::ParameterList ¶msAfterML = mlPrec->GetList(); - std::cout << paramsAfterML << std::endl; - - } // if (ml) - -#endif // HAVE_MUELU_ML && HAVE_MUELU_EPETRA - success = true; } TEUCHOS_STANDARD_CATCH_STATEMENTS(verbose, std::cerr, success); @@ -356,11 +213,7 @@ int main(int argc, char *argv[]) { Xpetra::UnderlyingLib lib = xpetraParameters.GetLib(); if (lib == Xpetra::UseEpetra) { -#ifdef HAVE_MUELU_EPETRA - return main_(clp, lib, argc, argv); -#else throw MueLu::Exceptions::RuntimeError("Epetra is not available"); -#endif } if (lib == Xpetra::UseTpetra) { std::cout << "Skipped tests for Tpetra. We officially only support the MLParameterListInterpreter for Epetra. It is supposed to be a transition from ML with Epetra to MueLu. Furthermore, there is only support for Epetra and not for Epetra64. That is, only GO=int allowed." << std::endl; diff --git a/packages/muelu/example/advanced/memory/Epetra1DLaplace.cpp b/packages/muelu/example/advanced/memory/Epetra1DLaplace.cpp deleted file mode 100644 index cd6bfd83555a..000000000000 --- a/packages/muelu/example/advanced/memory/Epetra1DLaplace.cpp +++ /dev/null @@ -1,123 +0,0 @@ -// @HEADER -// ***************************************************************************** -// MueLu: A package for multigrid based preconditioning -// -// Copyright 2012 NTESS and the MueLu contributors. -// SPDX-License-Identifier: BSD-3-Clause -// ***************************************************************************** -// @HEADER - -#include - -#include -#include - -#include -#include -#ifdef HAVE_MPI -#include -#include -#endif -#include -#include -#include - -#include "MueLu_MemoryProfiler.hpp" - -int main(int argc, char *argv[]) { - int ierr, i; - -#ifdef HAVE_MPI - MPI_Init(&argc, &argv); - Epetra_MpiComm Comm(MPI_COMM_WORLD); -#else - Epetra_SerialComm Comm; -#endif - - bool success = false; - bool verbose = true; - try { - // int myRank = Comm.MyPID(); - - // int numGlobalElements = 10000000; - int numGlobalElements = 100; - - Teuchos::CommandLineProcessor cmdp(false, true); - cmdp.setOption("numGlobalElements", &numGlobalElements, "Global problem size."); - if (cmdp.parse(argc, argv) != Teuchos::CommandLineProcessor::PARSE_SUCCESSFUL) { - throw -1; - } - - Epetra_Map Map(numGlobalElements, 0, Comm); - - int NumMyElements = Map.NumMyElements(); - - std::vector MyGlobalElements(NumMyElements); - Map.MyGlobalElements(&MyGlobalElements[0]); - - int NumNz = 3; - // std::vector NumNz(NumMyElements); - // for (i=0; i Values(2); - Values[0] = -1.0; - Values[1] = -1.0; - std::vector Indices(2); - double two = 2.0; - int NumEntries; - - for (i = 0; i < NumMyElements; i++) { - if (MyGlobalElements[i] == 0) { - Indices[0] = 1; - NumEntries = 1; - } else if (MyGlobalElements[i] == numGlobalElements - 1) { - Indices[0] = numGlobalElements - 2; - NumEntries = 1; - } else { - Indices[0] = MyGlobalElements[i] - 1; - Indices[1] = MyGlobalElements[i] + 1; - NumEntries = 2; - } - - ierr = A.InsertGlobalValues(MyGlobalElements[i], NumEntries, &Values[0], &Indices[0]); - assert(ierr == 0); - - // Put in the diagonal entry - ierr = A.InsertGlobalValues(MyGlobalElements[i], 1, &two, &MyGlobalElements[i]); - assert(ierr == 0); - } - - PrintMemoryUsage("Memory after InsertGlobalValues()", "epetra-after-insert.heap"); - - ierr = A.FillComplete(); - assert(ierr == 0); - - PrintMemoryUsage("Memory after FillComplete()", "epetra-after-fillcomplete.heap"); - - MemoryUsageStop(); - - if (ierr == 0) - success = true; - else - success = false; - } - TEUCHOS_STANDARD_CATCH_STATEMENTS(verbose, std::cerr, success); - -#ifdef HAVE_MPI - MPI_Finalize(); -#endif - - return (success ? EXIT_SUCCESS : EXIT_FAILURE); -} diff --git a/packages/muelu/matlab/bin/muemex.cpp b/packages/muelu/matlab/bin/muemex.cpp index 03068adff0e4..67ca22bd35ae 100644 --- a/packages/muelu/matlab/bin/muemex.cpp +++ b/packages/muelu/matlab/bin/muemex.cpp @@ -14,9 +14,7 @@ #define MUEMEX_ERROR -1 // Do not compile MueMex if any of these aren't available -#if !defined HAVE_MUELU_EPETRA || !defined HAVE_MUELU_MATLAB #error "MueMex requires Epetra, Tpetra and MATLAB." -#endif #include #include "MueLu_MatlabUtils.hpp" diff --git a/packages/muelu/matlab/bin/muemex.h b/packages/muelu/matlab/bin/muemex.h deleted file mode 100644 index fb66654a13de..000000000000 --- a/packages/muelu/matlab/bin/muemex.h +++ /dev/null @@ -1,193 +0,0 @@ -// @HEADER -// ***************************************************************************** -// MueLu: A package for multigrid based preconditioning -// -// Copyright 2012 NTESS and the MueLu contributors. -// SPDX-License-Identifier: BSD-3-Clause -// ***************************************************************************** -// @HEADER - -#ifndef MUEMEX_H -#define MUEMEX_H - -#include -#include -#include -#include -#include -#include - -#include "Teuchos_ParameterList.hpp" -#include "Teuchos_RCP.hpp" -#include "MueLu_config.hpp" -#include "MueLu.hpp" -#include "MueLu_EpetraOperator.hpp" -#include "MueLu_TpetraOperator.hpp" -#include "MueLu_Hierarchy.hpp" -#include "MueLu_MatlabUtils.hpp" -#include "MueLu_CreateEpetraPreconditioner.hpp" -#include "MueLu_CreateTpetraPreconditioner.hpp" -#include "Epetra_SerialComm.h" -#include "Epetra_Map.h" -#include "Epetra_MultiVector.h" -#include "Epetra_CrsMatrix.h" -#include "Epetra_LinearProblem.h" -#include "Tpetra_CrsMatrix.hpp" -#include "Xpetra_EpetraCrsMatrix.hpp" -#include "BelosSolverFactory.hpp" -#include "BelosEpetraAdapter.hpp" -#include "BelosTpetraAdapter.hpp" -#include "BelosPseudoBlockGmresSolMgr.hpp" -#include "BelosBlockGmresSolMgr.hpp" -#include "BelosMueLuAdapter.hpp" -#include "MueLu_MatlabUtils.hpp" - -#include "mex.h" - -#ifdef HAVE_TPETRA_INST_COMPLEX_DOUBLE -#define HAVE_COMPLEX_SCALARS -#endif - -namespace MueLu -{ - -typedef enum - { - EPETRA, - TPETRA, - TPETRA_COMPLEX - } DataPackType; - -//Mode value passed to MATLAB muemex function as 1st arg (int) -typedef enum - { - MODE_SETUP, //0 - MODE_SOLVE, //1 - MODE_CLEANUP, //2 - MODE_STATUS, //3 - MODE_AGGREGATE, //4 - MODE_GET, //5 - MODE_SET, //6 - MODE_ERROR, //7 - MODE_APPLY //8 - } MODE_TYPE; - -/* Note: MuemexSystem is declared friend in MueLu::Hierarchy and MueLu::FactoryManager. - This gives access to the private method Hierarchy::GetFactoryManager, which allows - muelu('get', ...) to retrieve nonstandard "kept" items like Nullspace and Aggregates. -*/ -class MuemexSystem -{ - public: - MuemexSystem(DataPackType type); //type is one of EPETRA, TPETRA or TPETRA_COMPLEX - virtual ~MuemexSystem() = 0; - virtual int status() = 0; - virtual int setup(const mxArray* matlabA, bool haveCoords , const mxArray* matlabCoords) = 0; - int id; - Teuchos::RCP List; - DataPackType type; - mxArray* getHierarchyData(std::string dataName, MuemexType dataType, int levelID); //Works for all dp types -}; - -class EpetraSystem : public MuemexSystem -{ - public: - EpetraSystem(); - ~EpetraSystem(); - int setup(const mxArray* matlabA, bool haveCoords = false, const mxArray* matlabCoords = NULL); - int status(); - mxArray* solve(Teuchos::RCP params, Teuchos::RCP matrix, const mxArray* rhs, int &iters); - mxArray* apply(const mxArray* rhs); - Teuchos::RCP GetMatrix() - { - return A; - } - Teuchos::RCP GetPrec() - { - return prec; - } - int NumGlobalRows() - { - return A->NumGlobalRows(); - } - int NumMyCols() - { - return A->NumGlobalCols(); - } - double operatorComplexity; - Teuchos::RCP getHierarchy(); - private: - Teuchos::RCP A; - Teuchos::RCP prec; -}; - -//Scalar can be double or std::complex (complex_t) -//Note: DataPackType is either TPETRA or TPETRA_COMPLEX - -template -class TpetraSystem : public MuemexSystem -{ - public: - TpetraSystem(); - ~TpetraSystem(); - typedef Tpetra::CrsMatrix TMatrix; - typedef Tpetra::Operator TOperator; - int setup(const mxArray* matlabA, bool haveCoords = false, const mxArray* matlabCoords = NULL); - void normalSetup(const mxArray* matlabA, bool haveCoords = false, const mxArray* matlabCoords = NULL); - void customSetup(const mxArray* matlabA, bool haveCoords = false, const mxArray* matlabCoords = NULL); - int status(); - mxArray* solve(Teuchos::RCP params, Teuchos::RCP matrix, const mxArray* rhs, int &iters); - mxArray* apply(const mxArray* rhs); - //note: I typedef'd mm_node_t at the top of this file as the Kokkos default type - Teuchos::RCP GetMatrix() - { - return A; - } - Teuchos::RCP GetPrec() - { - return prec; - } - int NumMyRows() - { - if(A.is_null()) - return 0; - else - return A->getGlobalNumRows(); - } - int NumMyCols() - { - if(A.is_null()) - return 0; - else - return A->getGlobalNumCols(); - } - double operatorComplexity; - Teuchos::RCP> getHierarchy(); - private: - Teuchos::RCP A; - Teuchos::RCP prec; - public: - bool keepAll; - std::vector> systemManagers; -}; - -namespace MuemexSystemList -{ - extern std::vector> list; - extern int nextID; - int add(Teuchos::RCP D); - Teuchos::RCP find(int id); - int remove(int id); - int size(); - int status_all(); - bool isInList(int id); - void clearAll(); -} - -// Get a hierarchy from a MuemexSystem -template -Teuchos::RCP> getDatapackHierarchy(MuemexSystem* dp); - -}// end namespace - -#endif //MUEMEX_H diff --git a/packages/muelu/matlab/src/MueLu_MatlabUtils.cpp b/packages/muelu/matlab/src/MueLu_MatlabUtils.cpp index 9d0e4444069b..ab47b286d14c 100644 --- a/packages/muelu/matlab/src/MueLu_MatlabUtils.cpp +++ b/packages/muelu/matlab/src/MueLu_MatlabUtils.cpp @@ -9,405 +9,4 @@ #include "MueLu_MatlabUtils_def.hpp" -#if !defined(HAVE_MUELU_MATLAB) || !defined(HAVE_MUELU_EPETRA) #error "Muemex types require MATLAB, Epetra and Tpetra." -#else - -/* Stuff for MATLAB R2006b vs. previous versions */ -#if (defined(MX_API_VER) && MX_API_VER >= 0x07030000) -#else -typedef int mwIndex; -#endif - -using namespace std; -using namespace Teuchos; - -namespace MueLu { - -/* Explicit instantiation of MuemexData variants */ -template class MuemexData > >; -template class MuemexData > >; -template class MuemexData > >; -template class MuemexData > >; -template class MuemexData >; -template class MuemexData >; -template class MuemexData; -template class MuemexData; -template class MuemexData; -template class MuemexData; -template class MuemexData; -template class MuemexData > >; -template class MuemexData > >; -template class MuemexData >; -template class MuemexData > >; -template class MuemexData > >; -template class MuemexData > >; - -// Flag set to true if MATLAB's CSC matrix index type is not int (usually false) -bool rewrap_ints = sizeof(int) != sizeof(mwIndex); - -int* mwIndex_to_int(int N, mwIndex* mwi_array) { - // int* rv = (int*) malloc(N * sizeof(int)); - int* rv = new int[N]; // not really better but may avoid confusion for valgrind - for (int i = 0; i < N; i++) - rv[i] = (int)mwi_array[i]; - return rv; -} - -/* ******************************* */ -/* Specializations */ -/* ******************************* */ - -template <> -mxArray* createMatlabSparse(int numRows, int numCols, int nnz) { - return mxCreateSparse(numRows, numCols, nnz, mxREAL); -} - -template <> -mxArray* createMatlabSparse(int numRows, int numCols, int nnz) { - return mxCreateSparse(numRows, numCols, nnz, mxCOMPLEX); -} - -template <> -void fillMatlabArray(double* array, const mxArray* mxa, int n) { - memcpy(mxGetPr(mxa), array, n * sizeof(double)); -} - -template <> -void fillMatlabArray(complex_t* array, const mxArray* mxa, int n) { - double* pr = mxGetPr(mxa); - double* pi = mxGetPi(mxa); - for (int i = 0; i < n; i++) { - pr[i] = std::real(array[i]); - pi[i] = std::imag(array[i]); - } -} - -/******************************/ -/* Callback Functions */ -/******************************/ - -void callMatlabNoArgs(std::string function) { - int result = mexEvalString(function.c_str()); - if (result != 0) - mexPrintf("An error occurred while running a MATLAB command."); -} - -std::vector > callMatlab(std::string function, int numOutputs, std::vector > args) { - using Teuchos::rcp_static_cast; - mxArray** matlabArgs = new mxArray*[args.size()]; - mxArray** matlabOutput = new mxArray*[numOutputs]; - std::vector > output; - - for (int i = 0; i < int(args.size()); i++) { - try { - switch (args[i]->type) { - case BOOL: - matlabArgs[i] = rcp_static_cast, MuemexArg>(args[i])->convertToMatlab(); - break; - case INT: - matlabArgs[i] = rcp_static_cast, MuemexArg>(args[i])->convertToMatlab(); - break; - case DOUBLE: - matlabArgs[i] = rcp_static_cast, MuemexArg>(args[i])->convertToMatlab(); - break; - case STRING: - matlabArgs[i] = rcp_static_cast, MuemexArg>(args[i])->convertToMatlab(); - break; - case COMPLEX: - matlabArgs[i] = rcp_static_cast, MuemexArg>(args[i])->convertToMatlab(); - break; - case XPETRA_MAP: - matlabArgs[i] = rcp_static_cast >, MuemexArg>(args[i])->convertToMatlab(); - break; - case XPETRA_ORDINAL_VECTOR: - matlabArgs[i] = rcp_static_cast >, MuemexArg>(args[i])->convertToMatlab(); - break; - case TPETRA_MULTIVECTOR_DOUBLE: - matlabArgs[i] = rcp_static_cast > >, MuemexArg>(args[i])->convertToMatlab(); - break; - case TPETRA_MULTIVECTOR_COMPLEX: - matlabArgs[i] = rcp_static_cast > >, MuemexArg>(args[i])->convertToMatlab(); - break; - case TPETRA_MATRIX_DOUBLE: - matlabArgs[i] = rcp_static_cast > >, MuemexArg>(args[i])->convertToMatlab(); - break; - case TPETRA_MATRIX_COMPLEX: - matlabArgs[i] = rcp_static_cast > >, MuemexArg>(args[i])->convertToMatlab(); - break; - case XPETRA_MATRIX_DOUBLE: - matlabArgs[i] = rcp_static_cast >, MuemexArg>(args[i])->convertToMatlab(); - break; - case XPETRA_MATRIX_COMPLEX: - matlabArgs[i] = rcp_static_cast >, MuemexArg>(args[i])->convertToMatlab(); - break; - case XPETRA_MULTIVECTOR_DOUBLE: - matlabArgs[i] = rcp_static_cast >, MuemexArg>(args[i])->convertToMatlab(); - break; - case XPETRA_MULTIVECTOR_COMPLEX: - matlabArgs[i] = rcp_static_cast >, MuemexArg>(args[i])->convertToMatlab(); - break; - case EPETRA_CRSMATRIX: - matlabArgs[i] = rcp_static_cast >, MuemexArg>(args[i])->convertToMatlab(); - break; - case EPETRA_MULTIVECTOR: - matlabArgs[i] = rcp_static_cast >, MuemexArg>(args[i])->convertToMatlab(); - break; - case AGGREGATES: - matlabArgs[i] = rcp_static_cast >, MuemexArg>(args[i])->convertToMatlab(); - break; - case AMALGAMATION_INFO: - matlabArgs[i] = rcp_static_cast >, MuemexArg>(args[i])->convertToMatlab(); - break; - case GRAPH: - matlabArgs[i] = rcp_static_cast >, MuemexArg>(args[i])->convertToMatlab(); -#ifdef HAVE_MUELU_INTREPID2 - case FIELDCONTAINER_ORDINAL: - matlabArgs[i] = rcp_static_cast >, MuemexArg>(args[i])->convertToMatlab(); - break; -#endif - } - } catch (std::exception& e) { - mexPrintf("An error occurred while converting arg #%d to MATLAB:\n", i); - std::cout << e.what() << std::endl; - mexPrintf("Passing 0 instead.\n"); - matlabArgs[i] = mxCreateDoubleScalar(0); - } - } - // now matlabArgs is populated with MATLAB data types - int result = mexCallMATLAB(numOutputs, matlabOutput, args.size(), matlabArgs, function.c_str()); - if (result != 0) - mexPrintf("Matlab encountered an error while running command through muemexCallbacks.\n"); - // now, if all went well, matlabOutput contains all the output to return to user - for (int i = 0; i < numOutputs; i++) { - try { - output.push_back(convertMatlabVar(matlabOutput[i])); - } catch (std::exception& e) { - mexPrintf("An error occurred while converting output #%d from MATLAB:\n", i); - std::cout << e.what() << std::endl; - } - } - delete[] matlabOutput; - delete[] matlabArgs; - return output; -} - -/******************************/ -/* More utility functions */ -/******************************/ - -template <> -mxArray* createMatlabMultiVector(int numRows, int numCols) { - return mxCreateDoubleMatrix(numRows, numCols, mxREAL); -} - -template <> -mxArray* createMatlabMultiVector(int numRows, int numCols) { - return mxCreateDoubleMatrix(numRows, numCols, mxCOMPLEX); -} - -mxArray* saveAmalInfo(RCP& amalInfo) { - throw runtime_error("AmalgamationInfo not supported in MueMex yet."); - return mxCreateDoubleScalar(0); -} - -bool isValidMatlabAggregates(const mxArray* mxa) { - bool isValidAggregates = true; - if (!mxIsStruct(mxa)) - return false; - int numFields = mxGetNumberOfFields(mxa); // check that struct has correct # of fields - if (numFields != 5) - isValidAggregates = false; - if (isValidAggregates) { - const char* mem1 = mxGetFieldNameByNumber(mxa, 0); - if (mem1 == NULL || strcmp(mem1, "nVertices") != 0) - isValidAggregates = false; - const char* mem2 = mxGetFieldNameByNumber(mxa, 1); - if (mem2 == NULL || strcmp(mem2, "nAggregates") != 0) - isValidAggregates = false; - const char* mem3 = mxGetFieldNameByNumber(mxa, 2); - if (mem3 == NULL || strcmp(mem3, "vertexToAggID") != 0) - isValidAggregates = false; - const char* mem4 = mxGetFieldNameByNumber(mxa, 3); - if (mem3 == NULL || strcmp(mem4, "rootNodes") != 0) - isValidAggregates = false; - const char* mem5 = mxGetFieldNameByNumber(mxa, 4); - if (mem4 == NULL || strcmp(mem5, "aggSizes") != 0) - isValidAggregates = false; - } - return isValidAggregates; -} - -bool isValidMatlabGraph(const mxArray* mxa) { - bool isValidGraph = true; - if (!mxIsStruct(mxa)) - return false; - int numFields = mxGetNumberOfFields(mxa); // check that struct has correct # of fields - if (numFields != 2) - isValidGraph = false; - if (isValidGraph) { - const char* mem1 = mxGetFieldNameByNumber(mxa, 0); - if (mem1 == NULL || strcmp(mem1, "edges") != 0) - isValidGraph = false; - const char* mem2 = mxGetFieldNameByNumber(mxa, 1); - if (mem2 == NULL || strcmp(mem2, "boundaryNodes") != 0) - isValidGraph = false; - } - return isValidGraph; -} - -std::vector tokenizeList(const std::string& params) { - using namespace std; - vector rlist; - const char* delims = ","; - char* copy = (char*)malloc(params.length() + 1); - strcpy(copy, params.c_str()); - char* mark = (char*)strtok(copy, delims); - while (mark != NULL) { - // Remove leading and trailing whitespace in token - char* tail = mark + strlen(mark) - 1; - while (*mark == ' ') - mark++; - while (*tail == ' ' && tail > mark) - tail--; - tail++; - *tail = 0; - string tok(mark); // copies the characters to string object - rlist.push_back(tok); - mark = strtok(NULL, delims); - } - free(copy); - return rlist; -} - -Teuchos::RCP getInputParamList() { - using namespace Teuchos; - RCP validParamList = rcp(new ParameterList()); - validParamList->set >("A", Teuchos::null, "Factory for the matrix A."); - validParamList->set >("P", Teuchos::null, "Factory for the prolongator."); - validParamList->set >("R", Teuchos::null, "Factory for the restrictor."); - validParamList->set >("Ptent", Teuchos::null, "Factory for the tentative (unsmoothed) prolongator."); - validParamList->set >("Coordinates", Teuchos::null, "Factory for the node coordinates."); - validParamList->set >("Nullspace", Teuchos::null, "Factory for the nullspace."); - validParamList->set >("Aggregates", Teuchos::null, "Factory for the aggregates."); - validParamList->set >("UnamalgamationInfo", Teuchos::null, "Factory for amalgamation."); -#ifdef HAVE_MUELU_INTREPID2 - validParamList->set >("pcoarsen: element to node map", Teuchos::null, "Generating factory of the element to node map"); -#endif - return validParamList; -} - -Teuchos::RCP convertMatlabVar(const mxArray* mxa) { - switch (mxGetClassID(mxa)) { - case mxCHAR_CLASS: - // string - return rcp_implicit_cast(rcp(new MuemexData(mxa))); - break; - case mxLOGICAL_CLASS: - // boolean - return rcp_implicit_cast(rcp(new MuemexData(mxa))); - break; - case mxINT32_CLASS: - if (mxGetM(mxa) == 1 && mxGetN(mxa) == 1) - // individual integer - return rcp_implicit_cast(rcp(new MuemexData(mxa))); - else if (mxGetM(mxa) != 1 || mxGetN(mxa) != 1) - // ordinal vector - return rcp_implicit_cast(rcp(new MuemexData >(mxa))); - else - throw std::runtime_error("Error: Don't know what to do with integer array.\n"); - break; - case mxDOUBLE_CLASS: - if (mxGetM(mxa) == 1 && mxGetN(mxa) == 1) { - if (mxIsComplex(mxa)) - // single double (scalar, real) - return rcp_implicit_cast(rcp(new MuemexData(mxa))); - else - // single complex scalar - return rcp_implicit_cast(rcp(new MuemexData(mxa))); - } else if (mxIsSparse(mxa)) // use a CRS matrix - { - // Default to Tpetra matrix for this - if (mxIsComplex(mxa)) - // complex matrix - return rcp_implicit_cast(rcp(new MuemexData >(mxa))); - else - // real-valued matrix - return rcp_implicit_cast(rcp(new MuemexData >(mxa))); - } else { - // Default to Xpetra multivector for this case - if (mxIsComplex(mxa)) - return rcp_implicit_cast(rcp(new MuemexData > >(mxa))); - else - return rcp_implicit_cast(rcp(new MuemexData > >(mxa))); - } - break; - case mxSTRUCT_CLASS: { - // the only thing that should get here currently is an Aggregates struct or Graph struct - // verify that it has the correct fields with the correct types - // also assume that aggregates data will not be stored in an array of more than 1 element. - if (isValidMatlabAggregates(mxa)) { - return rcp_implicit_cast(rcp(new MuemexData >(mxa))); - } else if (isValidMatlabGraph(mxa)) { - return rcp_implicit_cast(rcp(new MuemexData >(mxa))); - } else { - throw runtime_error("Invalid aggregates or graph struct passed in from MATLAB."); - return Teuchos::null; - } - break; - } - default: - throw std::runtime_error("MATLAB returned an unsupported type as a function output.\n"); - return Teuchos::null; - } -} - -/******************************/ -/* Explicit Instantiations */ -/******************************/ - -template bool loadDataFromMatlab(const mxArray* mxa); -template int loadDataFromMatlab(const mxArray* mxa); -template double loadDataFromMatlab(const mxArray* mxa); -template complex_t loadDataFromMatlab(const mxArray* mxa); -template string loadDataFromMatlab(const mxArray* mxa); -template RCP loadDataFromMatlab >(const mxArray* mxa); -template RCP loadDataFromMatlab >(const mxArray* mxa); -template RCP loadDataFromMatlab >(const mxArray* mxa); -template RCP loadDataFromMatlab >(const mxArray* mxa); -template RCP loadDataFromMatlab >(const mxArray* mxa); -template RCP loadDataFromMatlab >(const mxArray* mxa); -template RCP loadDataFromMatlab >(const mxArray* mxa); -template RCP loadDataFromMatlab >(const mxArray* mxa); -template RCP loadDataFromMatlab >(const mxArray* mxa); -template RCP loadDataFromMatlab >(const mxArray* mxa); -template RCP loadDataFromMatlab >(const mxArray* mxa); -template RCP loadDataFromMatlab >(const mxArray* mxa); -template RCP loadDataFromMatlab >(const mxArray* mxa); - -template mxArray* saveDataToMatlab(bool& data); -template mxArray* saveDataToMatlab(int& data); -template mxArray* saveDataToMatlab(double& data); -template mxArray* saveDataToMatlab(complex_t& data); -template mxArray* saveDataToMatlab(string& data); -template mxArray* saveDataToMatlab(RCP& data); -template mxArray* saveDataToMatlab(RCP& data); -template mxArray* saveDataToMatlab(RCP& data); -template mxArray* saveDataToMatlab(RCP& data); -template mxArray* saveDataToMatlab(RCP& data); -template mxArray* saveDataToMatlab(RCP& data); -template mxArray* saveDataToMatlab(RCP& data); -template mxArray* saveDataToMatlab(RCP& data); -template mxArray* saveDataToMatlab(RCP& data); -template mxArray* saveDataToMatlab(RCP& data); -template mxArray* saveDataToMatlab(RCP& data); -template mxArray* saveDataToMatlab(RCP& data); -template mxArray* saveDataToMatlab(RCP& data); - -template vector > processNeeds(const Factory* factory, string& needsParam, Level& lvl); -template vector > processNeeds(const Factory* factory, string& needsParam, Level& lvl); -template void processProvides(vector >& mexOutput, const Factory* factory, string& providesParam, Level& lvl); -template void processProvides(vector >& mexOutput, const Factory* factory, string& providesParam, Level& lvl); - -} // namespace MueLu -#endif // HAVE_MUELU_MATLAB diff --git a/packages/muelu/matlab/src/MueLu_MatlabUtils_decl.hpp b/packages/muelu/matlab/src/MueLu_MatlabUtils_decl.hpp index ddcdf3ba6ef1..ecae02d15374 100644 --- a/packages/muelu/matlab/src/MueLu_MatlabUtils_decl.hpp +++ b/packages/muelu/matlab/src/MueLu_MatlabUtils_decl.hpp @@ -12,173 +12,5 @@ #include "MueLu_ConfigDefs.hpp" -#if !defined(HAVE_MUELU_MATLAB) || !defined(HAVE_MUELU_EPETRA) #error "Muemex requires MATLAB, Epetra and Tpetra." -#else - -#include "mex.h" -#include -#include -#include -#include -#include -#include -#include "MueLu_Factory.hpp" -#include "MueLu_Hierarchy_decl.hpp" -#include "MueLu_Aggregates_decl.hpp" -#include "MueLu_AmalgamationInfo_decl.hpp" -#include "MueLu_Utilities_decl.hpp" -#include "MueLu_Graph_decl.hpp" -#include "Epetra_MultiVector.h" -#include "Epetra_CrsMatrix.h" -#include "Tpetra_CrsMatrix_decl.hpp" -#include "Xpetra_EpetraCrsMatrix.hpp" -#include "Xpetra_MapFactory.hpp" -#include "Xpetra_CrsGraph.hpp" -#include "Xpetra_VectorFactory.hpp" -#include - -#include "Kokkos_DynRankView.hpp" - -namespace MueLu { - -enum MuemexType { - INT, - BOOL, - DOUBLE, - COMPLEX, - STRING, - XPETRA_MAP, - XPETRA_ORDINAL_VECTOR, - TPETRA_MULTIVECTOR_DOUBLE, - TPETRA_MULTIVECTOR_COMPLEX, - TPETRA_MATRIX_DOUBLE, - TPETRA_MATRIX_COMPLEX, - XPETRA_MATRIX_DOUBLE, - XPETRA_MATRIX_COMPLEX, - XPETRA_MULTIVECTOR_DOUBLE, - XPETRA_MULTIVECTOR_COMPLEX, - EPETRA_CRSMATRIX, - EPETRA_MULTIVECTOR, - AGGREGATES, - AMALGAMATION_INFO, - GRAPH -#ifdef HAVE_MUELU_INTREPID2 - , - FIELDCONTAINER_ORDINAL -#endif -}; - -typedef Tpetra::KokkosCompat::KokkosDeviceWrapperNode mm_node_t; -typedef typename Tpetra::Map<>::local_ordinal_type mm_LocalOrd; // these are used for LocalOrdinal and GlobalOrdinal of all xpetra/tpetra templated types -typedef typename Tpetra::Map<>::global_ordinal_type mm_GlobalOrd; -typedef std::complex complex_t; -typedef Tpetra::Map<> muemex_map_type; -typedef Tpetra::CrsMatrix Tpetra_CrsMatrix_double; -typedef Tpetra::CrsMatrix Tpetra_CrsMatrix_complex; -typedef Tpetra::MultiVector Tpetra_MultiVector_double; -typedef Tpetra::MultiVector Tpetra_MultiVector_complex; -typedef Xpetra::Map Xpetra_map; -typedef Xpetra::Vector Xpetra_ordinal_vector; -typedef Xpetra::Matrix Xpetra_Matrix_double; -typedef Xpetra::Matrix Xpetra_Matrix_complex; -typedef Xpetra::CrsGraph Xpetra_CrsGraph; -typedef Xpetra::MultiVector Xpetra_MultiVector_double; -typedef Xpetra::MultiVector Xpetra_MultiVector_complex; -typedef MueLu::Hierarchy Hierarchy_double; -typedef MueLu::Hierarchy Hierarchy_complex; -typedef MueLu::Aggregates MAggregates; -typedef MueLu::AmalgamationInfo MAmalInfo; -typedef MueLu::LWGraph MGraph; - -#ifdef HAVE_MUELU_INTREPID2 -typedef Kokkos::DynRankView FieldContainer_ordinal; -#endif - -class MuemexArg { - public: - MuemexArg(MuemexType dataType) { type = dataType; } - MuemexType type; -}; - -template -MuemexType getMuemexType(const T& data); - -template -class MuemexData : public MuemexArg { - public: - MuemexData(T& data); // Construct from pre-existing data, to pass to MATLAB. - MuemexData(T& data, MuemexType type); // Construct from pre-existing data, to pass to MATLAB. - MuemexData(const mxArray* mxa); // Construct from MATLAB array, to get from MATLAB. - mxArray* convertToMatlab(); // Create a MATLAB object and copy this data to it - T& getData(); // Set and get methods - void setData(T& data); - - private: - T data; -}; - -template -MuemexType getMuemexType(const T& data); - -template -MuemexType getMuemexType(); - -template -T loadDataFromMatlab(const mxArray* mxa); - -template -mxArray* saveDataToMatlab(T& data); - -// Add data to level. Set the keep flag on the data to "user-provided" so it's not deleted. -template -void addLevelVariable(const T& data, std::string& name, Level& lvl, const FactoryBase* fact = NoFactory::get()); - -template -const T& getLevelVariable(std::string& name, Level& lvl); - -// Functions used to put data through matlab factories - first arg is "this" pointer of matlab factory -template -std::vector > processNeeds(const Factory* factory, std::string& needsParam, Level& lvl); - -template -void processProvides(std::vector >& mexOutput, const Factory* factory, std::string& providesParam, Level& lvl); - -// create a sparse array in Matlab -template -mxArray* createMatlabSparse(int numRows, int numCols, int nnz); -template -mxArray* createMatlabMultiVector(int numRows, int numCols); -template -void fillMatlabArray(Scalar* array, const mxArray* mxa, int n); -int* mwIndex_to_int(int N, mwIndex* mwi_array); -bool isValidMatlabAggregates(const mxArray* mxa); -bool isValidMatlabGraph(const mxArray* mxa); -std::vector tokenizeList(const std::string& param); -// The two callback functions that MueLu can call to run anything in MATLAB -void callMatlabNoArgs(std::string function); -std::vector > callMatlab(std::string function, int numOutputs, std::vector > args); -Teuchos::RCP getInputParamList(); -Teuchos::RCP convertMatlabVar(const mxArray* mxa); - -// trim from start -static inline std::string& ltrim(std::string& s) { - s.erase(s.begin(), std::find_if(s.begin(), s.end(), std::not1(std::ptr_fun(std::isspace)))); - return s; -} - -// trim from end -static inline std::string& rtrim(std::string& s) { - s.erase(std::find_if(s.rbegin(), s.rend(), std::not1(std::ptr_fun(std::isspace))).base(), s.end()); - return s; -} - -// trim from both ends -static inline std::string& trim(std::string& s) { - return ltrim(rtrim(s)); -} - -} // namespace MueLu - -#endif // HAVE_MUELU_MATLAB error handler #endif // MUELU_MATLABUTILS_DECL_HPP guard diff --git a/packages/muelu/matlab/src/MueLu_MatlabUtils_def.hpp b/packages/muelu/matlab/src/MueLu_MatlabUtils_def.hpp index bb70471b1066..71816beee58f 100644 --- a/packages/muelu/matlab/src/MueLu_MatlabUtils_def.hpp +++ b/packages/muelu/matlab/src/MueLu_MatlabUtils_def.hpp @@ -12,1466 +12,5 @@ #include "MueLu_MatlabUtils_decl.hpp" -#if !defined(HAVE_MUELU_MATLAB) || !defined(HAVE_MUELU_EPETRA) #error "Muemex types require MATLAB, Epetra and Tpetra." -#else - -using Teuchos::RCP; -using Teuchos::rcp; -using namespace std; - -namespace MueLu { - -extern bool rewrap_ints; - -/* ******************************* */ -/* getMuemexType */ -/* ******************************* */ - -template -MuemexType getMuemexType(const T& data) { throw std::runtime_error("Unknown Type"); } - -template <> -MuemexType getMuemexType(const int& data) { return INT; } -template <> -MuemexType getMuemexType() { return INT; } -template <> -MuemexType getMuemexType() { return BOOL; } - -template <> -MuemexType getMuemexType(const double& data) { return DOUBLE; } -template <> -MuemexType getMuemexType() { return DOUBLE; } - -template <> -MuemexType getMuemexType(const std::string& data) { return STRING; } -template <> -MuemexType getMuemexType() { return STRING; } - -template <> -MuemexType getMuemexType(const complex_t& data) { return COMPLEX; } -template <> -MuemexType getMuemexType() { return COMPLEX; } - -template <> -MuemexType getMuemexType(const RCP& data) { return XPETRA_MAP; } -template <> -MuemexType getMuemexType >() { return XPETRA_MAP; } - -template <> -MuemexType getMuemexType(const RCP& data) { return XPETRA_ORDINAL_VECTOR; } -template <> -MuemexType getMuemexType >() { return XPETRA_ORDINAL_VECTOR; } - -template <> -MuemexType getMuemexType(const RCP& data) { return TPETRA_MULTIVECTOR_DOUBLE; } -template <> -MuemexType getMuemexType >() { return TPETRA_MULTIVECTOR_DOUBLE; } - -template <> -MuemexType getMuemexType(const RCP& data) { return TPETRA_MULTIVECTOR_COMPLEX; } -template <> -MuemexType getMuemexType >() { return TPETRA_MULTIVECTOR_COMPLEX; } - -template <> -MuemexType getMuemexType(const RCP& data) { return TPETRA_MATRIX_DOUBLE; } -template <> -MuemexType getMuemexType >() { return TPETRA_MATRIX_DOUBLE; } - -template <> -MuemexType getMuemexType(const RCP& data) { return TPETRA_MATRIX_COMPLEX; } -template <> -MuemexType getMuemexType >() { return TPETRA_MATRIX_COMPLEX; } - -template <> -MuemexType getMuemexType(const RCP& data) { return XPETRA_MULTIVECTOR_DOUBLE; } -template <> -MuemexType getMuemexType >() { return XPETRA_MULTIVECTOR_DOUBLE; } - -template <> -MuemexType getMuemexType(const RCP& data) { return XPETRA_MULTIVECTOR_COMPLEX; } -template <> -MuemexType getMuemexType >() { return XPETRA_MULTIVECTOR_COMPLEX; } - -template <> -MuemexType getMuemexType(const RCP& data) { return XPETRA_MATRIX_DOUBLE; } -template <> -MuemexType getMuemexType >() { return XPETRA_MATRIX_DOUBLE; } - -template <> -MuemexType getMuemexType(const RCP& data) { return XPETRA_MATRIX_COMPLEX; } -template <> -MuemexType getMuemexType >() { return XPETRA_MATRIX_COMPLEX; } - -template <> -MuemexType getMuemexType(const RCP& data) { return EPETRA_CRSMATRIX; } -template <> -MuemexType getMuemexType >() { return EPETRA_CRSMATRIX; } - -template <> -MuemexType getMuemexType(const RCP& data) { return EPETRA_MULTIVECTOR; } -template <> -MuemexType getMuemexType >() { return EPETRA_MULTIVECTOR; } - -template <> -MuemexType getMuemexType(const RCP& data) { return AGGREGATES; } -template <> -MuemexType getMuemexType >() { return AGGREGATES; } - -template <> -MuemexType getMuemexType(const RCP& data) { return AMALGAMATION_INFO; } -template <> -MuemexType getMuemexType >() { return AMALGAMATION_INFO; } - -template <> -MuemexType getMuemexType(const RCP& data) { return GRAPH; } -template <> -MuemexType getMuemexType >() { return GRAPH; } - -#ifdef HAVE_MUELU_INTREPID2 -template <> -MuemexType getMuemexType(const RCP& data) { return FIELDCONTAINER_ORDINAL; } -template <> -MuemexType getMuemexType >() { return FIELDCONTAINER_ORDINAL; } -#endif - -/* "prototypes" for specialized functions used in other specialized functions */ - -template <> -mxArray* createMatlabSparse(int numRows, int numCols, int nnz); -template <> -mxArray* createMatlabSparse(int numRows, int numCols, int nnz); -template <> -mxArray* createMatlabMultiVector(int numRows, int numCols); -template <> -mxArray* createMatlabMultiVector(int numRows, int numCols); -template <> -void fillMatlabArray(double* array, const mxArray* mxa, int n); -template <> -void fillMatlabArray(complex_t* array, const mxArray* mxa, int n); -template <> -mxArray* saveDataToMatlab(RCP& data); -template <> -mxArray* saveDataToMatlab(RCP& data); -template <> -mxArray* saveDataToMatlab(RCP& data); -template <> -mxArray* saveDataToMatlab(RCP& data); - -/* ******************************* */ -/* loadDataFromMatlab */ -/* ******************************* */ - -template <> -int loadDataFromMatlab(const mxArray* mxa) { - mxClassID probIDtype = mxGetClassID(mxa); - int rv; - if (probIDtype == mxINT32_CLASS) { - rv = *((int*)mxGetData(mxa)); - } else if (probIDtype == mxLOGICAL_CLASS) { - rv = (int)*((bool*)mxGetData(mxa)); - } else if (probIDtype == mxDOUBLE_CLASS) { - rv = (int)*((double*)mxGetData(mxa)); - } else if (probIDtype == mxUINT32_CLASS) { - rv = (int)*((unsigned int*)mxGetData(mxa)); - } else { - rv = -1; - throw std::runtime_error("Error: Unrecognized numerical type."); - } - return rv; -} - -template <> -bool loadDataFromMatlab(const mxArray* mxa) { - return *((bool*)mxGetData(mxa)); -} - -template <> -double loadDataFromMatlab(const mxArray* mxa) { - return *((double*)mxGetPr(mxa)); -} - -template <> -complex_t loadDataFromMatlab(const mxArray* mxa) { - double realpart = real(*((double*)mxGetPr(mxa))); - double imagpart = imag(*((double*)mxGetPi(mxa))); - return complex_t(realpart, imagpart); -} - -template <> -string loadDataFromMatlab(const mxArray* mxa) { - string rv = ""; - if (mxGetClassID(mxa) != mxCHAR_CLASS) { - throw runtime_error("Can't construct string from anything but a char array."); - } - rv = string(mxArrayToString(mxa)); - return rv; -} - -template <> -RCP loadDataFromMatlab >(const mxArray* mxa) { - RCP > comm = rcp(new Teuchos::SerialComm()); - int nr = mxGetM(mxa); - int nc = mxGetN(mxa); - if (nr != 1) - throw std::runtime_error("A Xpetra::Map representation from MATLAB must be a single row vector."); - double* pr = mxGetPr(mxa); - mm_GlobalOrd numGlobalIndices = nc; - - std::vector localGIDs(numGlobalIndices); - for (int i = 0; i < int(numGlobalIndices); i++) { - localGIDs[i] = Teuchos::as(pr[i]); - } - - const Teuchos::ArrayView localGIDs_view(&localGIDs[0], localGIDs.size()); - RCP map = - Xpetra::MapFactory::Build( - Xpetra::UseTpetra, - Teuchos::OrdinalTraits::invalid(), - localGIDs_view, - 0, comm); - - if (map.is_null()) - throw runtime_error("Failed to create Xpetra::Map."); - return map; -} - -template <> -RCP loadDataFromMatlab >(const mxArray* mxa) { - RCP > comm = rcp(new Teuchos::SerialComm()); - if (mxGetN(mxa) != 1 && mxGetM(mxa) != 1) - throw std::runtime_error("An OrdinalVector from MATLAB must be a single row or column vector."); - mm_GlobalOrd numGlobalIndices = mxGetM(mxa) * mxGetN(mxa); - RCP > map = Xpetra::MapFactory::Build(Xpetra::UseTpetra, numGlobalIndices, 0, comm); - if (mxGetClassID(mxa) != mxINT32_CLASS) - throw std::runtime_error("Can only construct LOVector with int32 data."); - int* array = (int*)mxGetData(mxa); - if (map.is_null()) - throw runtime_error("Failed to create map for Xpetra ordinal vector."); - RCP loVec = Xpetra::VectorFactory::Build(map, false); - if (loVec.is_null()) - throw runtime_error("Failed to create ordinal vector with Xpetra::VectorFactory."); - for (int i = 0; i < int(numGlobalIndices); i++) { - loVec->replaceGlobalValue(i, 0, array[i]); - } - return loVec; -} - -template <> -RCP loadDataFromMatlab >(const mxArray* mxa) { - RCP > mv; - try { - int nr = mxGetM(mxa); - int nc = mxGetN(mxa); - double* pr = mxGetPr(mxa); - RCP > comm = Tpetra::getDefaultComm(); - // numGlobalIndices for map constructor is the number of rows in matrix/vectors, right? - RCP map = rcp(new muemex_map_type(nr, (mm_GlobalOrd)0, comm)); - // Allocate a new array of complex values to use with the multivector - Teuchos::ArrayView arrView(pr, nr * nc); - mv = rcp(new Tpetra::MultiVector(map, arrView, size_t(nr), size_t(nc))); - } catch (std::exception& e) { - mexPrintf("Error constructing Tpetra MultiVector.\n"); - std::cout << e.what() << std::endl; - } - return mv; -} - -template <> -RCP loadDataFromMatlab >(const mxArray* mxa) { - RCP > mv; - try { - int nr = mxGetM(mxa); - int nc = mxGetN(mxa); - double* pr = mxGetPr(mxa); - double* pi = mxGetPi(mxa); - RCP > comm = Tpetra::getDefaultComm(); - // numGlobalIndices for map constructor is the number of rows in matrix/vectors, right? - RCP map = rcp(new muemex_map_type(nr, (mm_GlobalOrd)0, comm)); - // Allocate a new array of complex values to use with the multivector - complex_t* myArr = new complex_t[nr * nc]; - for (int n = 0; n < nc; n++) { - for (int m = 0; m < nr; m++) { - myArr[n * nr + m] = complex_t(pr[n * nr + m], pi[n * nr + m]); - } - } - Teuchos::ArrayView arrView(myArr, nr * nc); - mv = rcp(new Tpetra::MultiVector(map, arrView, nr, nc)); - } catch (std::exception& e) { - mexPrintf("Error constructing Tpetra MultiVector.\n"); - std::cout << e.what() << std::endl; - } - return mv; -} - -template <> -RCP loadDataFromMatlab >(const mxArray* mxa) { - bool success = false; - RCP A; - - int* colptr = NULL; - int* rowind = NULL; - - try { - RCP > comm = rcp(new Teuchos::SerialComm()); - // numGlobalIndices is just the number of rows in the matrix - const size_t numGlobalIndices = mxGetM(mxa); - RCP rowMap = rcp(new muemex_map_type(numGlobalIndices, 0, comm)); - RCP domainMap = rcp(new muemex_map_type(mxGetN(mxa), 0, comm)); - double* valueArray = mxGetPr(mxa); - int nc = mxGetN(mxa); - if (rewrap_ints) { - // mwIndex_to_int allocates memory so must delete[] later - colptr = mwIndex_to_int(nc + 1, mxGetJc(mxa)); - rowind = mwIndex_to_int(colptr[nc], mxGetIr(mxa)); - } else { - rowind = (int*)mxGetIr(mxa); - colptr = (int*)mxGetJc(mxa); - } - // Need this to convert CSC colptrs to CRS row counts - Teuchos::Array rowCounts(numGlobalIndices); - for (int i = 0; i < nc; i++) { - for (int j = colptr[i]; j < colptr[i + 1]; j++) { - rowCounts[rowind[j]]++; - } - } - A = rcp(new Tpetra::CrsMatrix(rowMap, rowCounts())); - for (int i = 0; i < nc; i++) { - for (int j = colptr[i]; j < colptr[i + 1]; j++) { - //'array' of 1 element, containing column (in global matrix). - Teuchos::ArrayView cols = Teuchos::ArrayView(&i, 1); - //'array' of 1 element, containing value - Teuchos::ArrayView vals = Teuchos::ArrayView(&valueArray[j], 1); - A->insertGlobalValues(rowind[j], cols, vals); - } - } - A->fillComplete(domainMap, rowMap); - if (rewrap_ints) { - delete[] rowind; - rowind = NULL; - delete[] colptr; - colptr = NULL; - } - success = true; - } catch (std::exception& e) { - if (rewrap_ints) { - if (rowind != NULL) delete[] rowind; - if (colptr != NULL) delete[] colptr; - rowind = NULL; - colptr = NULL; - } - mexPrintf("Error while constructing Tpetra matrix:\n"); - std::cout << e.what() << std::endl; - } - if (!success) - mexErrMsgTxt("An error occurred while setting up a Tpetra matrix.\n"); - return A; -} - -template <> -RCP loadDataFromMatlab >(const mxArray* mxa) { - RCP A; - // Create a map in order to create the matrix (taken from muelu basic example - complex) - try { - RCP > comm = Tpetra::getDefaultComm(); - const Tpetra::global_size_t numGlobalIndices = mxGetM(mxa); - const mm_GlobalOrd indexBase = 0; - RCP rowMap = rcp(new muemex_map_type(numGlobalIndices, indexBase, comm)); - RCP domainMap = rcp(new muemex_map_type(mxGetN(mxa), indexBase, comm)); - double* realArray = mxGetPr(mxa); - double* imagArray = mxGetPi(mxa); - int* colptr; - int* rowind; - int nc = mxGetN(mxa); - if (rewrap_ints) { - // mwIndex_to_int allocates memory so must delete[] later - colptr = mwIndex_to_int(nc + 1, mxGetJc(mxa)); - rowind = mwIndex_to_int(colptr[nc], mxGetIr(mxa)); - } else { - rowind = (int*)mxGetIr(mxa); - colptr = (int*)mxGetJc(mxa); - } - // Need this to convert CSC colptrs to CRS row counts - Teuchos::Array rowCounts(numGlobalIndices); - for (int i = 0; i < nc; i++) { - for (int j = colptr[i]; j < colptr[i + 1]; j++) { - rowCounts[rowind[j]]++; - } - } - A = rcp(new Tpetra::CrsMatrix(rowMap, rowCounts())); - for (int i = 0; i < nc; i++) { - for (int j = colptr[i]; j < colptr[i + 1]; j++) { - // here assuming that complex_t will always be defined as std::complex - // use 'value' over and over again with Teuchos::ArrayViews to insert into matrix - complex_t value = std::complex(realArray[j], imagArray[j]); - Teuchos::ArrayView cols = Teuchos::ArrayView(&i, 1); - Teuchos::ArrayView vals = Teuchos::ArrayView(&value, 1); - A->insertGlobalValues(rowind[j], cols, vals); - } - } - A->fillComplete(domainMap, rowMap); - if (rewrap_ints) { - delete[] rowind; - delete[] colptr; - } - } catch (std::exception& e) { - mexPrintf("Error while constructing tpetra matrix:\n"); - std::cout << e.what() << std::endl; - } - return A; -} - -template <> -RCP > loadDataFromMatlab > >(const mxArray* mxa) { - RCP > tmat = loadDataFromMatlab > >(mxa); - return MueLu::TpetraCrs_To_XpetraMatrix(tmat); -} - -template <> -RCP > loadDataFromMatlab > >(const mxArray* mxa) { - RCP > tmat = loadDataFromMatlab > >(mxa); - return MueLu::TpetraCrs_To_XpetraMatrix(tmat); -} - -template <> -RCP > loadDataFromMatlab > >(const mxArray* mxa) { - RCP > tpetraMV = loadDataFromMatlab > >(mxa); - return MueLu::TpetraMultiVector_To_XpetraMultiVector(tpetraMV); -} - -template <> -RCP > loadDataFromMatlab > >(const mxArray* mxa) { - RCP > tpetraMV = loadDataFromMatlab > >(mxa); - return MueLu::TpetraMultiVector_To_XpetraMultiVector(tpetraMV); -} - -template <> -RCP loadDataFromMatlab >(const mxArray* mxa) { - RCP matrix; - try { - int* colptr; - int* rowind; - double* vals = mxGetPr(mxa); - int nr = mxGetM(mxa); - int nc = mxGetN(mxa); - if (rewrap_ints) { - colptr = mwIndex_to_int(nc + 1, mxGetJc(mxa)); - rowind = mwIndex_to_int(colptr[nc], mxGetIr(mxa)); - } else { - rowind = (int*)mxGetIr(mxa); - colptr = (int*)mxGetJc(mxa); - } - Epetra_SerialComm Comm; - Epetra_Map RangeMap(nr, 0, Comm); - Epetra_Map DomainMap(nc, 0, Comm); - matrix = rcp(new Epetra_CrsMatrix(Epetra_DataAccess::Copy, RangeMap, DomainMap, 0)); - /* Do the matrix assembly */ - for (int i = 0; i < nc; i++) { - for (int j = colptr[i]; j < colptr[i + 1]; j++) { - // global row, # of entries, value array, column indices array - matrix->InsertGlobalValues(rowind[j], 1, &vals[j], &i); - } - } - matrix->FillComplete(DomainMap, RangeMap); - if (rewrap_ints) { - delete[] rowind; - delete[] colptr; - } - } catch (std::exception& e) { - mexPrintf("An error occurred while setting up an Epetra matrix:\n"); - std::cout << e.what() << std::endl; - } - return matrix; -} - -template <> -RCP loadDataFromMatlab >(const mxArray* mxa) { - int nr = mxGetM(mxa); - int nc = mxGetN(mxa); - Epetra_SerialComm Comm; - Epetra_BlockMap map(nr * nc, 1, 0, Comm); - return rcp(new Epetra_MultiVector(Epetra_DataAccess::Copy, map, mxGetPr(mxa), nr, nc)); -} - -template <> -RCP loadDataFromMatlab >(const mxArray* mxa) { - if (mxGetNumberOfElements(mxa) != 1) - throw runtime_error("Aggregates must be individual structs in MATLAB."); - if (!mxIsStruct(mxa)) - throw runtime_error("Trying to pull aggregates from non-struct MATLAB object."); - // assume that in matlab aggregate structs will only be stored in a 1x1 array - // mxa must have the same fields as the ones declared in constructAggregates function in muelu.m for this to work - const int correctNumFields = 5; // change if more fields are added to the aggregates representation in constructAggregates in muelu.m - if (mxGetNumberOfFields(mxa) != correctNumFields) - throw runtime_error("Aggregates structure has wrong number of fields."); - // Pull MuemexData types back out - int nVert = *(int*)mxGetData(mxGetField(mxa, 0, "nVertices")); - int nAgg = *(int*)mxGetData(mxGetField(mxa, 0, "nAggregates")); - // Now have all the data needed to fully reconstruct the aggregate - // Use similar approach as UserAggregationFactory (which is written for >1 thread but will just be serial here) - RCP > comm = Teuchos::DefaultComm::getComm(); - int myRank = comm->getRank(); - Xpetra::UnderlyingLib lib = Xpetra::UseTpetra; - RCP > map = Xpetra::MapFactory::Build(lib, nVert, 0, comm); - RCP agg = rcp(new MAggregates(map)); - agg->SetNumAggregates(nAgg); - // Get handles for the vertex2AggId and procwinner arrays in reconstituted aggregates object - // this is serial so all procwinner values will be same (0) - ArrayRCP vertex2AggId = agg->GetVertex2AggId()->getDataNonConst(0); // the '0' means first (and only) column of multivector, since is just vector - ArrayRCP procWinner = agg->GetProcWinner()->getDataNonConst(0); - // mm_LocalOrd and int are equivalent, so is ok to talk about aggSize with just 'int' - // Deep copy the entire vertex2AggID and isRoot arrays, which are both nVert items long - // At the same time, set ProcWinner - mxArray* vertToAggID_in = mxGetField(mxa, 0, "vertexToAggID"); - int* vertToAggID_inArray = (int*)mxGetData(vertToAggID_in); - mxArray* rootNodes_in = mxGetField(mxa, 0, "rootNodes"); - int* rootNodes_inArray = (int*)mxGetData(rootNodes_in); - for (int i = 0; i < nVert; i++) { - vertex2AggId[i] = vertToAggID_inArray[i]; - procWinner[i] = myRank; // all nodes are going to be on the same proc - agg->SetIsRoot(i, false); // the ones that are root will be set in next loop - } - for (int i = 0; i < nAgg; i++) // rootNodesToCopy is an array of node IDs which are the roots of their aggs - { - agg->SetIsRoot(rootNodes_inArray[i], true); - } - // Now recompute the aggSize array the results in the object - agg->ComputeAggregateSizes(true); - agg->AggregatesCrossProcessors(false); - return agg; -} - -template <> -RCP loadDataFromMatlab >(const mxArray* mxa) { - RCP amal; - throw runtime_error("AmalgamationInfo not supported in Muemex yet."); - return amal; -} - -template <> -RCP loadDataFromMatlab >(const mxArray* mxa) { - // mxa must be struct with logical sparse matrix called 'edges' and Nx1 int32 array 'boundaryNodes' - mxArray* edges = mxGetField(mxa, 0, "edges"); - mxArray* boundaryNodes = mxGetField(mxa, 0, "boundaryNodes"); - if (edges == NULL) - throw runtime_error("Graph structure in MATLAB must have a field called 'edges' (logical sparse matrix)"); - if (boundaryNodes == NULL) - throw runtime_error("Graph structure in MATLAB must have a field called 'boundaryNodes' (int32 array containing list of boundary nodes)"); - int* boundaryList = (int*)mxGetData(boundaryNodes); - if (!mxIsSparse(edges) || mxGetClassID(edges) != mxLOGICAL_CLASS) - throw runtime_error("Graph edges must be stored as a logical sparse matrix."); - // Note that Matlab stores sparse matrices in column major format. - mwIndex* matlabColPtrs = mxGetJc(edges); - mwIndex* matlabRowIndices = mxGetIr(edges); - mm_GlobalOrd nRows = (mm_GlobalOrd)mxGetM(edges); - - // Create and populate row-major CRS data structures for Xpetra::TpetraCrsGraph. - - // calculate number of nonzeros in each row - Teuchos::Array entriesPerRow(nRows); - int nnz = matlabColPtrs[mxGetN(edges)]; // last entry in matlabColPtrs - for (int i = 0; i < nnz; i++) - entriesPerRow[matlabRowIndices[i]]++; - // Populate usual row index array. We don't need this for the Xpetra Graph ctor, but - // it's convenient for building up the column index array, which the ctor does need. - Teuchos::Array rows(nRows + 1); - rows[0] = 0; - for (int i = 0; i < nRows; i++) - rows[i + 1] = rows[i] + entriesPerRow[i]; - Teuchos::Array cols(nnz); // column index array - Teuchos::Array insertionsPerRow(nRows, 0); // track of #insertions done per row - int ncols = mxGetN(edges); - for (int colNum = 0; colNum < ncols; ++colNum) { - int ci = matlabColPtrs[colNum]; - for (int j = ci; j < Teuchos::as(matlabColPtrs[colNum + 1]); ++j) { - int rowNum = matlabRowIndices[j]; - cols[rows[rowNum] + insertionsPerRow[rowNum]] = colNum; - insertionsPerRow[rowNum]++; - } - } - // Find maximum - int maxNzPerRow = 0; - for (int i = 0; i < nRows; i++) { - if (maxNzPerRow < entriesPerRow[i]) - maxNzPerRow = entriesPerRow[i]; - } - - RCP > comm = rcp(new Teuchos::SerialComm()); - typedef Xpetra::TpetraMap MMap; - RCP map = rcp(new MMap(nRows, 0, comm)); - typedef Xpetra::TpetraCrsGraph TpetraGraph; - RCP tgraph = rcp(new TpetraGraph(map, (size_t)maxNzPerRow)); - // Populate tgraph in compressed-row format. Must get each row individually... - for (int i = 0; i < nRows; ++i) { - tgraph->insertGlobalIndices((mm_GlobalOrd)i, cols(rows[i], entriesPerRow[i])); - } - tgraph->fillComplete(map, map); - RCP mgraph = rcp(new MueLu::Graph(tgraph)); - // Set boundary nodes - int numBoundaryNodes = mxGetNumberOfElements(boundaryNodes); - bool* boundaryFlags = new bool[nRows]; - for (int i = 0; i < nRows; i++) { - boundaryFlags[i] = false; - } - for (int i = 0; i < numBoundaryNodes; i++) { - boundaryFlags[boundaryList[i]] = true; - } - ArrayRCP boundaryNodesInput(boundaryFlags, 0, nRows, true); - mgraph->SetBoundaryNodeMap(boundaryNodesInput); - return mgraph; -} - -#ifdef HAVE_MUELU_INTREPID2 -template <> -RCP loadDataFromMatlab >(const mxArray* mxa) { - if (mxGetClassID(mxa) != mxINT32_CLASS) - throw runtime_error("FieldContainer must have integer storage entries"); - - int* data = (int*)mxGetData(mxa); - int nr = mxGetM(mxa); - int nc = mxGetN(mxa); - - RCP fc = rcp(new FieldContainer_ordinal("FC from Matlab", nr, nc)); - for (int col = 0; col < nc; col++) { - for (int row = 0; row < nr; row++) { - (*fc)(row, col) = data[col * nr + row]; - } - } - return fc; -} -#endif - -/* ******************************* */ -/* saveDataToMatlab */ -/* ******************************* */ - -template <> -mxArray* saveDataToMatlab(int& data) { - mwSize dims[] = {1, 1}; - mxArray* mxa = mxCreateNumericArray(2, dims, mxINT32_CLASS, mxREAL); - *((int*)mxGetData(mxa)) = data; - return mxa; -} - -template <> -mxArray* saveDataToMatlab(bool& data) { - mwSize dims[] = {1, 1}; - mxArray* mxa = mxCreateLogicalArray(2, dims); - *((bool*)mxGetData(mxa)) = data; - return mxa; -} - -template <> -mxArray* saveDataToMatlab(double& data) { - return mxCreateDoubleScalar(data); -} - -template <> -mxArray* saveDataToMatlab(complex_t& data) { - mwSize dims[] = {1, 1}; - mxArray* mxa = mxCreateNumericArray(2, dims, mxDOUBLE_CLASS, mxCOMPLEX); - *((double*)mxGetPr(mxa)) = real(data); - *((double*)mxGetPi(mxa)) = imag(data); - return mxa; -} - -template <> -mxArray* saveDataToMatlab(string& data) { - return mxCreateString(data.c_str()); -} - -template <> -mxArray* saveDataToMatlab(RCP& data) { - // Precondition: Memory has already been allocated by MATLAB for the array. - int nc = data->getGlobalNumElements(); - int nr = 1; - mxArray* output = createMatlabMultiVector(nr, nc); - double* array = (double*)malloc(sizeof(double) * nr * nc); - for (int col = 0; col < nc; col++) { - mm_GlobalOrd gid = data->getGlobalElement(col); - array[col] = Teuchos::as(gid); - } - fillMatlabArray(array, output, nc * nr); - free(array); - return output; -} - -template <> -mxArray* saveDataToMatlab(RCP& data) { - mwSize len = data->getGlobalLength(); - // create a single column vector - mwSize dimensions[] = {len, 1}; - mxArray* rv = mxCreateNumericArray(2, dimensions, mxINT32_CLASS, mxREAL); - int* dataPtr = (int*)mxGetData(rv); - ArrayRCP arr = data->getData(0); - for (int i = 0; i < int(data->getGlobalLength()); i++) { - dataPtr[i] = arr[i]; - } - return rv; -} - -template <> -mxArray* saveDataToMatlab(RCP >& data) { - RCP xmv = MueLu::TpetraMultiVector_To_XpetraMultiVector(data); - return saveDataToMatlab(xmv); -} - -template <> -mxArray* saveDataToMatlab(RCP >& data) { - RCP xmv = MueLu::TpetraMultiVector_To_XpetraMultiVector(data); - return saveDataToMatlab(xmv); -} - -template <> -mxArray* saveDataToMatlab(RCP& data) { - RCP > xmat = TpetraCrs_To_XpetraMatrix(data); - return saveDataToMatlab(xmat); -} - -template <> -mxArray* saveDataToMatlab(RCP& data) { - RCP > xmat = TpetraCrs_To_XpetraMatrix(data); - return saveDataToMatlab(xmat); -} - -template <> -mxArray* saveDataToMatlab(RCP& data) { - typedef double Scalar; - // Compute global constants, if we need them - Teuchos::rcp_const_cast(data->getCrsGraph())->computeGlobalConstants(); - - int nr = data->getGlobalNumRows(); - int nc = data->getGlobalNumCols(); - int nnz = data->getGlobalNumEntries(); - -#ifdef VERBOSE_OUTPUT - RCP fancyStream = Teuchos::fancyOStream(Teuchos::rcpFromRef(std::cout)); - mat->describe(*fancyStream, Teuchos::VERB_EXTREME); -#endif - mxArray* mxa = createMatlabSparse(nr, nc, nnz); - mwIndex* ir = mxGetIr(mxa); - mwIndex* jc = mxGetJc(mxa); - for (int i = 0; i < nc + 1; i++) { - jc[i] = 0; - } - - size_t maxEntriesPerRow = data->getGlobalMaxNumRowEntries(); - if (maxEntriesPerRow == Teuchos::OrdinalTraits::invalid() || maxEntriesPerRow == 0) maxEntriesPerRow = data->getLocalMaxNumRowEntries(); - - int* rowProgress = new int[nc]; - // The array that will be copied to Pr and (if complex) Pi later - Scalar* sparseVals = new Scalar[nnz]; - size_t numEntries; - if (data->isLocallyIndexed()) { - Scalar* rowValArray = new Scalar[maxEntriesPerRow]; - Teuchos::ArrayView rowVals(rowValArray, maxEntriesPerRow); - mm_LocalOrd* rowIndicesArray = new mm_LocalOrd[maxEntriesPerRow]; - Teuchos::ArrayView rowIndices(rowIndicesArray, maxEntriesPerRow); - for (mm_LocalOrd m = 0; m < nr; m++) // All rows in the Xpetra matrix - { - data->getLocalRowCopy(m, rowIndices, rowVals, numEntries); // Get the row - for (mm_LocalOrd entry = 0; entry < int(numEntries); entry++) // All entries in row - { - jc[rowIndices[entry] + 1]++; // for each entry, increase jc for the entry's column - } - } - - // now jc holds the number of elements in each column, but needs cumulative sum over all previous columns also - int entriesAccum = 0; - for (int n = 0; n <= nc; n++) { - int temp = entriesAccum; - entriesAccum += jc[n]; - jc[n] += temp; - } - // Jc now populated with colptrs - for (int i = 0; i < nc; i++) { - rowProgress[i] = 0; - } - // Row progress values like jc but keep track as the MATLAB matrix is being filled in - for (mm_LocalOrd m = 0; m < nr; m++) // rows - { - data->getLocalRowCopy(m, rowIndices, rowVals, numEntries); - for (mm_LocalOrd i = 0; i < int(numEntries); i++) // entries in row m (NOT columns) - { - // row is m, col is rowIndices[i], val is rowVals[i] - mm_LocalOrd col = rowIndices[i]; - sparseVals[jc[col] + rowProgress[col]] = rowVals[i]; // Set value - ir[jc[col] + rowProgress[col]] = m; // Set row at which value occurs - rowProgress[col]++; - } - } - delete[] rowIndicesArray; - } else { - Teuchos::ArrayView rowIndices; - Teuchos::ArrayView rowVals; - for (mm_GlobalOrd m = 0; m < nr; m++) { - data->getGlobalRowView(m, rowIndices, rowVals); - for (mm_GlobalOrd n = 0; n < rowIndices.size(); n++) { - jc[rowIndices[n] + 1]++; - } - } - // Last element of jc is just nnz - jc[nc] = nnz; - // Jc now populated with colptrs - for (int i = 0; i < nc; i++) { - rowProgress[i] = 0; - } - int entriesAccum = 0; - for (int n = 0; n <= nc; n++) { - int temp = entriesAccum; - entriesAccum += jc[n]; - jc[n] += temp; - } - // Row progress values like jc but keep track as the MATLAB matrix is being filled in - for (mm_GlobalOrd m = 0; m < nr; m++) // rows - { - data->getGlobalRowView(m, rowIndices, rowVals); - for (mm_LocalOrd i = 0; i < rowIndices.size(); i++) // entries in row m - { - mm_GlobalOrd col = rowIndices[i]; // row is m, col is rowIndices[i], val is rowVals[i] - sparseVals[jc[col] + rowProgress[col]] = rowVals[i]; // Set value - ir[jc[col] + rowProgress[col]] = m; // Set row at which value occurs - rowProgress[col]++; - } - } - } - // finally, copy sparseVals into pr (and pi, if complex) - fillMatlabArray(sparseVals, mxa, nnz); - delete[] sparseVals; - delete[] rowProgress; - return mxa; -} - -template <> -mxArray* saveDataToMatlab(RCP& data) { - typedef complex_t Scalar; - - // Compute global constants, if we need them - Teuchos::rcp_const_cast(data->getCrsGraph())->computeGlobalConstants(); - - int nr = data->getGlobalNumRows(); - int nc = data->getGlobalNumCols(); - int nnz = data->getGlobalNumEntries(); -#ifdef VERBOSE_OUTPUT - RCP fancyStream = Teuchos::fancyOStream(Teuchos::rcpFromRef(std::cout)); - mat->describe(*fancyStream, Teuchos::VERB_EXTREME); -#endif - mxArray* mxa = createMatlabSparse(nr, nc, nnz); - mwIndex* ir = mxGetIr(mxa); - mwIndex* jc = mxGetJc(mxa); - for (int i = 0; i < nc + 1; i++) { - jc[i] = 0; - } - size_t maxEntriesPerRow = data->getGlobalMaxNumRowEntries(); - int* rowProgress = new int[nc]; - // The array that will be copied to Pr and (if complex) Pi later - Scalar* sparseVals = new Scalar[nnz]; - size_t numEntries; - if (data->isLocallyIndexed()) { - Scalar* rowValArray = new Scalar[maxEntriesPerRow]; - Teuchos::ArrayView rowVals(rowValArray, maxEntriesPerRow); - mm_LocalOrd* rowIndicesArray = new mm_LocalOrd[maxEntriesPerRow]; - Teuchos::ArrayView rowIndices(rowIndicesArray, maxEntriesPerRow); - for (mm_LocalOrd m = 0; m < nr; m++) // All rows in the Xpetra matrix - { - data->getLocalRowCopy(m, rowIndices, rowVals, numEntries); // Get the row - for (mm_LocalOrd entry = 0; entry < int(numEntries); entry++) // All entries in row - { - jc[rowIndices[entry] + 1]++; // for each entry, increase jc for the entry's column - } - } - // now jc holds the number of elements in each column, but needs cumulative sum over all previous columns also - int entriesAccum = 0; - for (int n = 0; n <= nc; n++) { - int temp = entriesAccum; - entriesAccum += jc[n]; - jc[n] += temp; - } - // Jc now populated with colptrs - for (int i = 0; i < nc; i++) { - rowProgress[i] = 0; - } - // Row progress values like jc but keep track as the MATLAB matrix is being filled in - for (mm_LocalOrd m = 0; m < nr; m++) // rows - { - data->getLocalRowCopy(m, rowIndices, rowVals, numEntries); - for (mm_LocalOrd i = 0; i < int(numEntries); i++) // entries in row m (NOT columns) - { - // row is m, col is rowIndices[i], val is rowVals[i] - mm_LocalOrd col = rowIndices[i]; - sparseVals[jc[col] + rowProgress[col]] = rowVals[i]; // Set value - ir[jc[col] + rowProgress[col]] = m; // Set row at which value occurs - rowProgress[col]++; - } - } - delete[] rowIndicesArray; - } else { - Teuchos::ArrayView rowIndices; - Teuchos::ArrayView rowVals; - for (mm_GlobalOrd m = 0; m < nr; m++) { - data->getGlobalRowView(m, rowIndices, rowVals); - for (mm_GlobalOrd n = 0; n < rowIndices.size(); n++) { - jc[rowIndices[n] + 1]++; - } - } - // Last element of jc is just nnz - jc[nc] = nnz; - // Jc now populated with colptrs - for (int i = 0; i < nc; i++) { - rowProgress[i] = 0; - } - int entriesAccum = 0; - for (int n = 0; n <= nc; n++) { - int temp = entriesAccum; - entriesAccum += jc[n]; - jc[n] += temp; - } - // Row progress values like jc but keep track as the MATLAB matrix is being filled in - for (mm_GlobalOrd m = 0; m < nr; m++) // rows - { - data->getGlobalRowView(m, rowIndices, rowVals); - for (mm_LocalOrd i = 0; i < rowIndices.size(); i++) // entries in row m - { - mm_GlobalOrd col = rowIndices[i]; // row is m, col is rowIndices[i], val is rowVals[i] - sparseVals[jc[col] + rowProgress[col]] = rowVals[i]; // Set value - ir[jc[col] + rowProgress[col]] = m; // Set row at which value occurs - rowProgress[col]++; - } - } - } - // finally, copy sparseVals into pr (and pi, if complex) - fillMatlabArray(sparseVals, mxa, nnz); - delete[] sparseVals; - delete[] rowProgress; - return mxa; -} - -/* -template<> -mxArray* saveDataToMatlab(RCP>& data) -{ - //Precondition: Memory has already been allocated by MATLAB for the array. - int nr = data->getGlobalLength(); - int nc = data->getNumVectors(); - mxArray* output = createMatlabMultiVector(nr, nc); - Scalar* array = (Scalar*) malloc(sizeof(Scalar) * nr * nc); - for(int col = 0; col < nc; col++) - { - Teuchos::ArrayRCP colData = data->getData(col); - for(int row = 0; row < nr; row++) - { - array[col * nr + row] = colData[row]; - } - } - fillMatlabArray(array, output, nc * nr); - free(array); - return output; -} -*/ - -template <> -mxArray* saveDataToMatlab(RCP >& data) { - // Precondition: Memory has already been allocated by MATLAB for the array. - int nr = data->getGlobalLength(); - int nc = data->getNumVectors(); - mxArray* output = createMatlabMultiVector(nr, nc); - double* array = (double*)malloc(sizeof(double) * nr * nc); - for (int col = 0; col < nc; col++) { - Teuchos::ArrayRCP colData = data->getData(col); - for (int row = 0; row < nr; row++) { - array[col * nr + row] = colData[row]; - } - } - fillMatlabArray(array, output, nc * nr); - free(array); - return output; -} - -template <> -mxArray* saveDataToMatlab(RCP >& data) { - // Precondition: Memory has already been allocated by MATLAB for the array. - int nr = data->getGlobalLength(); - int nc = data->getNumVectors(); - mxArray* output = createMatlabMultiVector(nr, nc); - complex_t* array = (complex_t*)malloc(sizeof(complex_t) * nr * nc); - for (int col = 0; col < nc; col++) { - Teuchos::ArrayRCP colData = data->getData(col); - for (int row = 0; row < nr; row++) { - array[col * nr + row] = colData[row]; - } - } - fillMatlabArray(array, output, nc * nr); - free(array); - return output; -} - -template <> -mxArray* saveDataToMatlab(RCP& data) { - RCP xmat = EpetraCrs_To_XpetraMatrix(data); - return saveDataToMatlab(xmat); -} - -template <> -mxArray* saveDataToMatlab(RCP& data) { - mxArray* output = mxCreateDoubleMatrix(data->GlobalLength(), data->NumVectors(), mxREAL); - double* dataPtr = mxGetPr(output); - data->ExtractCopy(dataPtr, data->GlobalLength()); - return output; -} - -template <> -mxArray* saveDataToMatlab(RCP& data) { - // Set up array of inputs for matlab constructAggregates - int numNodes = data->GetVertex2AggId()->getData(0).size(); - int numAggs = data->GetNumAggregates(); - mxArray* dataIn[5]; - mwSize singleton[] = {1, 1}; - dataIn[0] = mxCreateNumericArray(2, singleton, mxINT32_CLASS, mxREAL); - *((int*)mxGetData(dataIn[0])) = numNodes; - dataIn[1] = mxCreateNumericArray(2, singleton, mxINT32_CLASS, mxREAL); - *((int*)mxGetData(dataIn[1])) = numAggs; - mwSize nodeArrayDims[] = {(mwSize)numNodes, 1}; // dimensions for Nx1 array, where N is number of nodes (vert2Agg) - dataIn[2] = mxCreateNumericArray(2, nodeArrayDims, mxINT32_CLASS, mxREAL); - int* vtaid = (int*)mxGetData(dataIn[2]); - ArrayRCP vertexToAggID = data->GetVertex2AggId()->getData(0); - for (int i = 0; i < numNodes; i++) { - vtaid[i] = vertexToAggID[i]; - } - mwSize aggArrayDims[] = {(mwSize)numAggs, 1}; // dims for Nx1 array, where N is number of aggregates (rootNodes, aggSizes) - dataIn[3] = mxCreateNumericArray(2, aggArrayDims, mxINT32_CLASS, mxREAL); - // First, find out if the aggregates even have 1 root node per aggregate. If not, assume roots are invalid and assign ourselves - int totalRoots = 0; - for (int i = 0; i < numNodes; i++) { - if (data->IsRoot(i)) - totalRoots++; - } - bool reassignRoots = false; - if (totalRoots != numAggs) { - cout << endl - << "Warning: Number of root nodes and number of aggregates do not match." << endl; - cout << "Will reassign root nodes when writing aggregates to matlab." << endl - << endl; - reassignRoots = true; - } - int* rn = (int*)mxGetData(dataIn[3]); // list of root nodes (in no particular order) - { - if (reassignRoots) { - // For each aggregate, just pick the first node we see in it and set it as root - int lastFoundNode = 0; // heuristic for speed, a node in aggregate N+1 is likely to come very soon after a node in agg N - for (int i = 0; i < numAggs; i++) { - rn[i] = -1; - for (int j = lastFoundNode; j < lastFoundNode + numNodes; j++) { - int index = j % numNodes; - if (vertexToAggID[index] == i) { - rn[i] = index; - lastFoundNode = index; - } - } - TEUCHOS_TEST_FOR_EXCEPTION(rn[i] == -1, runtime_error, "Invalid aggregates: Couldn't find any node in aggregate #" << i << "."); - } - } else { - int i = 0; // iterates over aggregate IDs - for (int j = 0; j < numNodes; j++) { - if (data->IsRoot(j)) { - if (i == numAggs) - throw runtime_error("Cannot store invalid aggregates in MATLAB - more root nodes than aggregates."); - rn[i] = j; // now we know this won't go out of bounds (rn's underlying matlab array is numAggs in length) - i++; - } - } - if (i + 1 < numAggs) - throw runtime_error("Cannot store invalid aggregates in MATLAB - fewer root nodes than aggregates."); - } - } - dataIn[4] = mxCreateNumericArray(1, aggArrayDims, mxINT32_CLASS, mxREAL); - int* as = (int*)mxGetData(dataIn[4]); // list of aggregate sizes - ArrayRCP aggSizes = data->ComputeAggregateSizes(); - for (int i = 0; i < numAggs; i++) { - as[i] = aggSizes[i]; - } - mxArray* matlabAggs[1]; - int result = mexCallMATLAB(1, matlabAggs, 5, dataIn, "constructAggregates"); - if (result != 0) - throw runtime_error("Matlab encountered an error while constructing aggregates struct."); - return matlabAggs[0]; -} - -template <> -mxArray* saveDataToMatlab(RCP& data) { - throw runtime_error("AmalgamationInfo not supported in MueMex yet."); - return mxCreateDoubleScalar(0); -} - -template <> -mxArray* saveDataToMatlab(RCP& data) { - int numEntries = (int)data->GetGlobalNumEdges(); - int numRows = (int)data->GetDomainMap()->getGlobalNumElements(); // assume numRows == numCols - mxArray* mat = mxCreateSparseLogicalMatrix(numRows, numRows, numEntries); - mxLogical* outData = (mxLogical*)mxGetData(mat); - mwIndex* rowInds = mxGetIr(mat); - mwIndex* colPtrs = mxGetJc(mat); - mm_LocalOrd* dataCopy = new mm_LocalOrd[numEntries]; - mm_LocalOrd* iter = dataCopy; - int* entriesPerRow = new int[numRows]; - int* entriesPerCol = new int[numRows]; - for (int i = 0; i < numRows; i++) { - entriesPerRow[i] = 0; - entriesPerCol[i] = 0; - } - for (int i = 0; i < numRows; i++) { - ArrayView neighbors = data->getNeighborVertices(i); // neighbors has the column indices for row i - memcpy(iter, neighbors.getRawPtr(), sizeof(mm_LocalOrd) * neighbors.size()); - entriesPerRow[i] = neighbors.size(); - for (int j = 0; j < neighbors.size(); j++) { - entriesPerCol[neighbors[j]]++; - } - iter += neighbors.size(); - } - mwIndex** rowIndsByColumn = new mwIndex*[numRows]; // rowIndsByColumn[0] points to array of row indices in column 1 - mxLogical** valuesByColumn = new mxLogical*[numRows]; - int* numEnteredPerCol = new int[numRows]; - int accum = 0; - for (int i = 0; i < numRows; i++) { - rowIndsByColumn[i] = &rowInds[accum]; - // cout << "Entries in column " << i << " start at offset " << accum << endl; - valuesByColumn[i] = &outData[accum]; - accum += entriesPerCol[i]; - if (accum > numEntries) - throw runtime_error("potato"); - } - for (int i = 0; i < numRows; i++) { - numEnteredPerCol[i] = 0; // rowIndsByColumn[n][numEnteredPerCol[n]] gives the next place to put a row index - } - // entriesPerCol now has Jc information (col offsets) - accum = 0; // keep track of cumulative index in dataCopy - for (int row = 0; row < numRows; row++) { - for (int entryInRow = 0; entryInRow < entriesPerRow[row]; entryInRow++) { - int col = dataCopy[accum]; - accum++; - rowIndsByColumn[col][numEnteredPerCol[col]] = row; - valuesByColumn[col][numEnteredPerCol[col]] = (mxLogical)1; - numEnteredPerCol[col]++; - } - } - accum = 0; // keep track of total entries over all columns - for (int col = 0; col < numRows; col++) { - colPtrs[col] = accum; - accum += entriesPerCol[col]; - } - colPtrs[numRows] = accum; // the last entry in jc, which is equivalent to numEntries - delete[] numEnteredPerCol; - delete[] rowIndsByColumn; - delete[] valuesByColumn; - delete[] dataCopy; - delete[] entriesPerRow; - delete[] entriesPerCol; - // Construct list of boundary nodes - const ArrayRCP boundaryFlags = data->GetBoundaryNodeMap(); - int numBoundaryNodes = 0; - for (int i = 0; i < boundaryFlags.size(); i++) { - if (boundaryFlags[i]) - numBoundaryNodes++; - } - cout << "Graph has " << numBoundaryNodes << " Dirichlet boundary nodes." << endl; - mwSize dims[] = {(mwSize)numBoundaryNodes, 1}; - mxArray* boundaryList = mxCreateNumericArray(2, dims, mxINT32_CLASS, mxREAL); - int* dest = (int*)mxGetData(boundaryList); - int* destIter = dest; - for (int i = 0; i < boundaryFlags.size(); i++) { - if (boundaryFlags[i]) { - *destIter = i; - destIter++; - } - } - mxArray* constructArgs[] = {mat, boundaryList}; - mxArray* out[1]; - mexCallMATLAB(1, out, 2, constructArgs, "constructGraph"); - return out[0]; -} - -#ifdef HAVE_MUELU_INTREPID2 -template <> -mxArray* saveDataToMatlab(RCP& data) { - int rank = data->rank(); - // NOTE: Only supports rank 2 arrays - if (rank != 2) - throw std::runtime_error("Error: Only rank two FieldContainers are supported."); - - int nr = data->extent(0); - int nc = data->extent(1); - - mwSize dims[] = {(mwSize)nr, (mwSize)nc}; - mxArray* mxa = mxCreateNumericArray(2, dims, mxINT32_CLASS, mxREAL); - int* array = (int*)mxGetData(mxa); - - for (int col = 0; col < nc; col++) { - for (int row = 0; row < nr; row++) { - array[col * nr + row] = (*data)(row, col); - } - } - return mxa; -} -#endif - -template -MuemexData::MuemexData(const mxArray* mxa) - : MuemexArg(getMuemexType()) { - data = loadDataFromMatlab(mxa); -} - -template -mxArray* MuemexData::convertToMatlab() { - return saveDataToMatlab(data); -} - -template -MuemexData::MuemexData(T& dataToCopy, MuemexType dataType) - : MuemexArg(dataType) { - data = dataToCopy; -} - -template -MuemexData::MuemexData(T& dataToCopy) - : MuemexData(dataToCopy, getMuemexType(dataToCopy)) {} - -template -T& MuemexData::getData() { - return data; -} - -template -void MuemexData::setData(T& newData) { - this->data = newData; -} - -/* ***************************** */ -/* More Template Functions */ -/* ***************************** */ - -template -void addLevelVariable(const T& data, std::string& name, Level& lvl, const Factory* fact) { - lvl.AddKeepFlag(name, fact, MueLu::UserData); - lvl.Set(name, data, fact); -} - -template -const T& getLevelVariable(std::string& name, Level& lvl) { - try { - return lvl.Get(name); - } catch (std::exception& e) { - throw std::runtime_error("Requested custom variable " + name + " is not in the level."); - } -} - -// Functions used to put data through matlab factories - first arg is "this" pointer of matlab factory -template -std::vector > processNeeds(const Factory* factory, std::string& needsParam, Level& lvl) { - using namespace std; - using namespace Teuchos; - typedef RCP > Matrix_t; - typedef RCP > MultiVector_t; - typedef RCP > Aggregates_t; - typedef RCP > AmalgamationInfo_t; - typedef RCP Graph_t; - vector needsList = tokenizeList(needsParam); - vector > args; - for (size_t i = 0; i < needsList.size(); i++) { - if (needsList[i] == "A" || needsList[i] == "P" || needsList[i] == "R" || needsList[i] == "Ptent") { - Matrix_t mydata = lvl.Get(needsList[i], factory->GetFactory(needsList[i]).get()); - args.push_back(rcp(new MuemexData(mydata))); - } else if (needsList[i] == "Nullspace" || needsList[i] == "Coordinates") { - MultiVector_t mydata = lvl.Get(needsList[i], factory->GetFactory(needsList[i]).get()); - args.push_back(rcp(new MuemexData(mydata))); - } else if (needsList[i] == "Aggregates") { - Aggregates_t mydata = lvl.Get(needsList[i], factory->GetFactory(needsList[i]).get()); - args.push_back(rcp(new MuemexData(mydata))); - } else if (needsList[i] == "UnAmalgamationInfo") { - AmalgamationInfo_t mydata = lvl.Get(needsList[i], factory->GetFactory(needsList[i]).get()); - args.push_back(rcp(new MuemexData(mydata))); - } else if (needsList[i] == "Level") { - int levelNum = lvl.GetLevelID(); - args.push_back(rcp(new MuemexData(levelNum))); - } else if (needsList[i] == "Graph") { - Graph_t mydata = lvl.Get(needsList[i], factory->GetFactory(needsList[i]).get()); - args.push_back(rcp(new MuemexData(mydata))); - } else { - vector words; - string badNameMsg = "Custom Muemex variables in \"Needs\" list require a type and a name, e.g. \"double myVal\". \n Leading and trailing spaces are OK. \n Don't know how to handle \"" + needsList[i] + "\".\n"; - // compare type without case sensitivity - char* buf = (char*)malloc(needsList[i].size() + 1); - strcpy(buf, needsList[i].c_str()); - for (char* iter = buf; *iter != ' '; iter++) { - if (*iter == 0) { - free(buf); - throw runtime_error(badNameMsg); - } - *iter = (char)tolower(*iter); - } - const char* wordDelim = " "; - char* mark = strtok(buf, wordDelim); - while (mark != NULL) { - string wordStr(mark); - words.push_back(wordStr); - mark = strtok(NULL, wordDelim); - } - if (words.size() != 2) { - free(buf); - throw runtime_error(badNameMsg); - } - char* typeStr = (char*)words[0].c_str(); - if (strstr(typeStr, "ordinalvector")) { - typedef RCP > LOVector_t; - LOVector_t mydata = getLevelVariable(needsList[i], lvl); - args.push_back(rcp(new MuemexData(mydata))); - } else if (strstr(typeStr, "map")) { - typedef RCP > Map_t; - Map_t mydata = getLevelVariable(needsList[i], lvl); - args.push_back(rcp(new MuemexData(mydata))); - } else if (strstr(typeStr, "scalar")) { - Scalar mydata = getLevelVariable(needsList[i], lvl); - args.push_back(rcp(new MuemexData(mydata))); - } else if (strstr(typeStr, "double")) { - double mydata = getLevelVariable(needsList[i], lvl); - args.push_back(rcp(new MuemexData(mydata))); - } else if (strstr(typeStr, "complex")) { - complex_t mydata = getLevelVariable(needsList[i], lvl); - args.push_back(rcp(new MuemexData(mydata))); - } else if (strstr(typeStr, "matrix")) { - Matrix_t mydata = getLevelVariable(needsList[i], lvl); - args.push_back(rcp(new MuemexData(mydata))); - } else if (strstr(typeStr, "multivector")) { - MultiVector_t mydata = getLevelVariable(needsList[i], lvl); - args.push_back(rcp(new MuemexData(mydata))); - } else if (strstr(typeStr, "int")) { - int mydata = getLevelVariable(needsList[i], lvl); - args.push_back(rcp(new MuemexData(mydata))); - } else if (strstr(typeStr, "string")) { - string mydata = getLevelVariable(needsList[i], lvl); - args.push_back(rcp(new MuemexData(mydata))); - } else { - free(buf); - throw std::runtime_error(words[0] + " is not a known variable type."); - } - free(buf); - } - } - return args; -} - -template -void processProvides(std::vector >& mexOutput, const Factory* factory, std::string& providesParam, Level& lvl) { - using namespace std; - using namespace Teuchos; - typedef RCP > Matrix_t; - typedef RCP > MultiVector_t; - typedef RCP > Aggregates_t; - typedef RCP > AmalgamationInfo_t; - typedef RCP Graph_t; - vector provides = tokenizeList(providesParam); - for (size_t i = 0; i < size_t(provides.size()); i++) { - if (provides[i] == "A" || provides[i] == "P" || provides[i] == "R" || provides[i] == "Ptent") { - RCP > mydata = Teuchos::rcp_static_cast >(mexOutput[i]); - lvl.Set(provides[i], mydata->getData(), factory); - } else if (provides[i] == "Nullspace" || provides[i] == "Coordinates") { - RCP > mydata = Teuchos::rcp_static_cast >(mexOutput[i]); - lvl.Set(provides[i], mydata->getData(), factory); - } else if (provides[i] == "Aggregates") { - RCP > mydata = Teuchos::rcp_static_cast >(mexOutput[i]); - lvl.Set(provides[i], mydata->getData(), factory); - } else if (provides[i] == "UnAmalgamationInfo") { - RCP > mydata = Teuchos::rcp_static_cast >(mexOutput[i]); - lvl.Set(provides[i], mydata->getData(), factory); - } else if (provides[i] == "Graph") { - RCP > mydata = Teuchos::rcp_static_cast >(mexOutput[i]); - lvl.Set(provides[i], mydata->getData(), factory); - } else { - vector words; - string badNameMsg = "Custom Muemex variables in \"Provides\" list require a type and a name, e.g. \"double myVal\". \n Leading and trailing spaces are OK. \n Don't know how to handle \"" + provides[i] + "\".\n"; - // compare type without case sensitivity - char* buf = (char*)malloc(provides[i].size() + 1); - strcpy(buf, provides[i].c_str()); - for (char* iter = buf; *iter != ' '; iter++) { - if (*iter == 0) { - free(buf); - throw runtime_error(badNameMsg); - } - *iter = (char)tolower(*iter); - } - const char* wordDelim = " "; - char* mark = strtok(buf, wordDelim); - while (mark != NULL) { - string wordStr(mark); - words.push_back(wordStr); - mark = strtok(NULL, wordDelim); - } - if (words.size() != 2) { - free(buf); - throw runtime_error(badNameMsg); - } - const char* typeStr = words[0].c_str(); - if (strstr(typeStr, "ordinalvector")) { - typedef RCP > LOVector_t; - RCP > mydata = Teuchos::rcp_static_cast >(mexOutput[i]); - addLevelVariable(mydata->getData(), words[1], lvl, factory); - } else if (strstr(typeStr, "map")) { - typedef RCP > Map_t; - RCP > mydata = Teuchos::rcp_static_cast >(mexOutput[i]); - addLevelVariable(mydata->getData(), words[1], lvl, factory); - } else if (strstr(typeStr, "scalar")) { - RCP > mydata = Teuchos::rcp_static_cast >(mexOutput[i]); - addLevelVariable(mydata->getData(), words[1], lvl, factory); - } else if (strstr(typeStr, "double")) { - RCP > mydata = Teuchos::rcp_static_cast >(mexOutput[i]); - addLevelVariable(mydata->getData(), words[1], lvl, factory); - } else if (strstr(typeStr, "complex")) { - RCP > mydata = Teuchos::rcp_static_cast >(mexOutput[i]); - addLevelVariable(mydata->getData(), words[1], lvl, factory); - } else if (strstr(typeStr, "matrix")) { - RCP > mydata = Teuchos::rcp_static_cast >(mexOutput[i]); - addLevelVariable(mydata->getData(), words[1], lvl, factory); - } else if (strstr(typeStr, "multivector")) { - RCP > mydata = Teuchos::rcp_static_cast >(mexOutput[i]); - addLevelVariable(mydata->getData(), words[1], lvl, factory); - } else if (strstr(typeStr, "int")) { - RCP > mydata = Teuchos::rcp_static_cast >(mexOutput[i]); - addLevelVariable(mydata->getData(), words[1], lvl, factory); - } else if (strstr(typeStr, "bool")) { - RCP > mydata = Teuchos::rcp_static_cast >(mexOutput[i]); - addLevelVariable(mydata->getData(), words[1], lvl, factory); - } else if (strstr(typeStr, "string")) { - RCP > mydata = Teuchos::rcp_static_cast >(mexOutput[i]); - addLevelVariable(mydata->getData(), words[1], lvl, factory); - } else { - free(buf); - throw std::runtime_error(words[0] + " is not a known variable type."); - } - free(buf); - } - } -} - -// Throwable Stubs for long long - -template <> -std::vector > processNeeds(const Factory* factory, std::string& needsParam, Level& lvl) { - throw std::runtime_error("Muemex does not support long long for global indices"); -} - -template <> -std::vector > processNeeds(const Factory* factory, std::string& needsParam, Level& lvl) { - throw std::runtime_error("Muemex does not support long long for global indices"); -} - -template <> -void processProvides(std::vector >& mexOutput, const Factory* factory, std::string& providesParam, Level& lvl) { - throw std::runtime_error("Muemex does not support long long for global indices"); -} - -template <> -void processProvides(std::vector >& mexOutput, const Factory* factory, std::string& providesParam, Level& lvl) { - throw std::runtime_error("Muemex does not support long long for global indices"); -} - -} // namespace MueLu -#endif // HAVE_MUELU_MATLAB error handler #endif // MUELU_MATLABUTILS_DEF_HPP guard diff --git a/packages/muelu/research/luc/region_algorithms/Driver_Structured_Regions.cpp b/packages/muelu/research/luc/region_algorithms/Driver_Structured_Regions.cpp index 4e894bd99068..e38b8582e37a 100644 --- a/packages/muelu/research/luc/region_algorithms/Driver_Structured_Regions.cpp +++ b/packages/muelu/research/luc/region_algorithms/Driver_Structured_Regions.cpp @@ -65,10 +65,6 @@ #include #include -#ifdef HAVE_MUELU_EPETRA -#include "Xpetra_EpetraMultiVector.hpp" -#endif - #include template diff --git a/packages/muelu/research/max/AdditiveMG/Test.cpp b/packages/muelu/research/max/AdditiveMG/Test.cpp deleted file mode 100644 index d8671754e0b6..000000000000 --- a/packages/muelu/research/max/AdditiveMG/Test.cpp +++ /dev/null @@ -1,118 +0,0 @@ -// @HEADER -// ***************************************************************************** -// MueLu: A package for multigrid based preconditioning -// -// Copyright 2012 NTESS and the MueLu contributors. -// SPDX-License-Identifier: BSD-3-Clause -// ***************************************************************************** -// @HEADER - -#include - -// Teuchos -#include -#include -#include - -// Galeri -#include "Galeri_Maps.h" -#include "Galeri_CrsMatrices.h" -#include "Galeri_Utils.h" - -// MueLu -#include "MueLu.hpp" -#include -#include -#include -#include - -// Belos -#include -#include -#include -#include -#include - -#ifdef HAVE_MPI -#include "Epetra_MpiComm.h" -#include "mpi.h" -#else -#include "Epetra_SerialComm.h" -#endif -#include "Epetra_Map.h" -#include "Epetra_Vector.h" -#include "Epetra_CrsMatrix.h" -#include "Epetra_LinearProblem.h" -#include "Teuchos_ParameterList.hpp" - -using namespace Galeri; - -// =========== // -// main driver // -// =========== // - -int main(int argc, char* argv[]) { -#ifdef HAVE_MPI - MPI_Init(&argc, &argv); - Epetra_MpiComm Comm(MPI_COMM_WORLD); -#else - Epetra_SerialComm Comm; -#endif - - // Here we create the linear problem - // - // Matrix * LHS = RHS - // - // with Matrix arising from a 5-point formula discretization. - - Epetra_Map* Map = 0; - Epetra_RowMatrix* Matrix = 0; - - Teuchos::ParameterList GaleriList; - // dimension of the problem is nx x ny - GaleriList.set("nx", 10 * Comm.NumProc()); - GaleriList.set("ny", 10); - // total number of processors is mx x my - GaleriList.set("mx", Comm.NumProc()); - GaleriList.set("my", 1); - - try { - Map = CreateMap("Cartesian2D", Comm, GaleriList); - Matrix = CreateCrsMatrix("Laplace2D", Map, GaleriList); - Epetra_Vector ExactSolution(*Map); - ExactSolution.Random(); - Epetra_Vector LHS(*Map); - LHS.PutScalar(0.0); - Epetra_Vector RHS(*Map); - - Matrix->Multiply(false, ExactSolution, RHS); - - Epetra_LinearProblem Problem(Matrix, &LHS, &RHS); - - // at this point any object that understand Epetra_LinearProblem can be - // used, for example AztecOO, Amesos. IFPACK and ML can be used to define a - // preconditioner for Matrix. Here we use a simple solver, based on - // LAPACK, that is meant for simple testing only. - - Solve(Problem); - - // and we compute the norm of the true residual. - double ResidualNorm = ComputeNorm(Matrix, &LHS, &RHS); - - if (Comm.MyPID() == 0) - cout << ResidualNorm << endl; - - delete Map; - delete Matrix; - } catch (Galeri::Exception& rhs) { - if (Comm.MyPID() == 0) - rhs.Print(); - exit(EXIT_FAILURE); - } - -#ifdef HAVE_MPI - MPI_Finalize(); -#endif - - return (EXIT_SUCCESS); -} diff --git a/packages/muelu/research/max/XpetraSplitting/Test_muelu.cpp b/packages/muelu/research/max/XpetraSplitting/Test_muelu.cpp deleted file mode 100644 index 05dae657dde7..000000000000 --- a/packages/muelu/research/max/XpetraSplitting/Test_muelu.cpp +++ /dev/null @@ -1,94 +0,0 @@ -// @HEADER -// ***************************************************************************** -// MueLu: A package for multigrid based preconditioning -// -// Copyright 2012 NTESS and the MueLu contributors. -// SPDX-License-Identifier: BSD-3-Clause -// ***************************************************************************** -// @HEADER - -#include - -// Teuchos -#include -#include -#include "Teuchos_Assert.hpp" -#include "Teuchos_LocalTestingHelpers.hpp" -#include -#include "Teuchos_ParameterList.hpp" - -// Xpetra -#include "Xpetra_Map.hpp" -#include "Xpetra_MapFactory.hpp" -#include "Xpetra_Matrix.hpp" -#include "Xpetra_CrsMatrixWrap.hpp" -#include "Xpetra_IO.hpp" -#include "Xpetra_MatrixSplitting.hpp" -#ifdef HAVE_XPETRA_TPETRA -#include "Xpetra_TpetraCrsMatrix.hpp" -#endif -#ifdef HAVE_XPETRA_EPETRA -#include "Xpetra_EpetraCrsMatrix.hpp" -#endif - -// Epetra -#ifdef HAVE_MPI -#include "Epetra_MpiComm.h" -#include "mpi.h" -#else -#include "Epetra_SerialComm.h" -#endif -#include "Epetra_Map.h" -#include "Epetra_Vector.h" -#include "Epetra_CrsMatrix.h" -#include "Epetra_LinearProblem.h" - -// MueLu -#include -#include -#include -#include - -// =========== // -// main driver // -// =========== // - -int main(int argc, char* argv[]) { - typedef double scalar_type; - typedef int local_ordinal_type; - typedef int global_ordinal_type; - typedef scalar_type Scalar; - typedef local_ordinal_type LocalOrdinal; - typedef global_ordinal_type GlobalOrdinal; - typedef Tpetra::KokkosClassic::DefaultNode::DefaultNodeType Node; - - typedef Xpetra::Matrix Matrix; - typedef Xpetra::MatrixSplitting MatrixSplitting; - typedef Xpetra::CrsMatrixWrap EpCrsMatrix; - - TEUCHOS_TEST_FOR_EXCEPT_MSG(argc < 2, "\nInvalid name for input matrix\n"); - - int numGlobalElements = 1; - - Teuchos::RCP > comm = Teuchos::DefaultComm::getComm(); - - // Create Xpetra map - Teuchos::RCP > xpetraMap; - xpetraMap = Xpetra::MapFactory::Build(Xpetra::UseEpetra, numGlobalElements, 0, comm); - - // Import matrix from an .mtx file into an Xpetra wrapper for an Epetra matrix - Teuchos::RCP > xpetraMatrix = Xpetra::IO::Read(argv[1], Xpetra::UseEpetra, comm); - // Export matrix from an Xpetra wrapper into an .mtx file - Xpetra::IO::Write("A_write.mtx", *xpetraMatrix); - - Teuchos::RCP xpetraMatrixSplitting; - - Teuchos::ParameterList xmlParams; - Teuchos::RCP > Hierarchy = MueLu::CreateXpetraPreconditioner((Teuchos::RCP)xpetraMatrixSplitting, xmlParams); - -#ifdef HAVE_MPI - MPI_Finalize(); -#endif - - return (EXIT_SUCCESS); -} diff --git a/packages/muelu/research/max/XpetraSplitting/Test_xpetra.cpp b/packages/muelu/research/max/XpetraSplitting/Test_xpetra.cpp deleted file mode 100644 index 5c604b0d5434..000000000000 --- a/packages/muelu/research/max/XpetraSplitting/Test_xpetra.cpp +++ /dev/null @@ -1,137 +0,0 @@ -// @HEADER -// ***************************************************************************** -// MueLu: A package for multigrid based preconditioning -// -// Copyright 2012 NTESS and the MueLu contributors. -// SPDX-License-Identifier: BSD-3-Clause -// ***************************************************************************** -// @HEADER - -#include - -// Teuchos -#include -#include -#include "Teuchos_Assert.hpp" -#include "Teuchos_LocalTestingHelpers.hpp" -#include -#include "Teuchos_ParameterList.hpp" - -// Xpetra -#include "Xpetra_Map.hpp" -#include "Xpetra_MapFactory.hpp" -#include "Xpetra_Matrix.hpp" -#include "Xpetra_CrsMatrixWrap.hpp" -#include "Xpetra_IO.hpp" -#include "Xpetra_MatrixSplitting.hpp" -#include "Xpetra_RegionAMG_def.hpp" -#include "Xpetra_RegionHandler_def.hpp" -#ifdef HAVE_XPETRA_TPETRA -#include "Xpetra_TpetraCrsMatrix.hpp" -#endif -#ifdef HAVE_XPETRA_EPETRA -#include "Xpetra_EpetraCrsMatrix.hpp" -#endif - -// Epetra -#ifdef HAVE_MPI -#include "Epetra_MpiComm.h" -#include "mpi.h" -#else -#include "Epetra_SerialComm.h" -#endif -#include "Epetra_Map.h" -#include "Epetra_Vector.h" -#include "Epetra_CrsMatrix.h" -#include "Epetra_LinearProblem.h" - -// =========== // -// main driver // -// =========== // - -int main(int argc, char* argv[]) { - typedef double scalar_type; - typedef int local_ordinal_type; - typedef int global_ordinal_type; - typedef scalar_type Scalar; - typedef local_ordinal_type LocalOrdinal; - typedef global_ordinal_type GlobalOrdinal; - typedef Tpetra::KokkosClassic::DefaultNode::DefaultNodeType Node; - - typedef Xpetra::MultiVector multivector_type; - typedef Xpetra::MatrixSplitting tpetra_splitting; - -#ifdef HAVE_MPI - MPI_Init(&argc, &argv); - Epetra_MpiComm CommEpetra(MPI_COMM_WORLD); -#else - Epetra_SerialComm CommEpetra; -#endif - - // Here we create the linear problem - // - // Matrix * LHS = RHS - // - // with Matrix arising from a 5-point formula discretization. - - TEUCHOS_TEST_FOR_EXCEPT_MSG(argc < 4, "\nInvalid name for input matrix and output file\n"); - - Teuchos::RCP out = Teuchos::fancyOStream(Teuchos::rcpFromRef(std::cout)); - - // process command line arguments - const char* xmlFileName = argv[1]; - const char* matrixFileName = argv[2]; - const char* mappingFileName = argv[3]; - - Teuchos::ParameterList xmlParams; - Teuchos::ParameterList mueluParams; - Teuchos::updateParametersFromXmlFile(argv[1], Teuchos::inoutArg(mueluParams)); - - Teuchos::RCP > comm = Teuchos::DefaultComm::getComm(); - if (CommEpetra.MyPID() == 0) - std::cout << "Number of processors: " << CommEpetra.NumProc() << std::endl; - - // SplittingDriver - /*Xpetra::SplittingDriver driver("node.txt", comm); - Teuchos::Array elementlist = driver.GetGlobalRowMap(); - driver.printInactive(); - Xpetra::MatrixSplitting xpetraWrapper( argv[1], argv[2], comm ); - std::string output_file="A_write.mtx"; - xpetraWrapper.writeGlobalMatrix(); - xpetraWrapper.writeRegionMatrices();*/ - - // Teuchos::RCP > A; - // A = Xpetra::IO::Read(argv[2], Xpetra::UseTpetra, comm); - - // Create the RegionHandler to deal with mappings of nodes to regions etc. - Teuchos::RCP > regionHandler = Teuchos::rcp(new Xpetra::RegionHandler(mappingFileName, comm)); - Teuchos::Array elementlist = regionHandler->GetGlobalRowMap(); - std::size_t num_total_elements = regionHandler->GetNumGlobalElements(); - std::size_t num_total_regions = regionHandler->GetNumTotalRegions(); - - // Read and split the matrix - Teuchos::RCP matrixSplitting = Teuchos::rcp(new tpetra_splitting(matrixFileName, regionHandler, comm)); - - // Create region-wise AMG hierarchy - int max_num_levels = 4; - int coarsening_factor = 3; - Xpetra::RegionAMG preconditioner(matrixSplitting, regionHandler, comm, mueluParams, max_num_levels, coarsening_factor); - - // // Setup vectors for test problem - // Teuchos::RCP X = Xpetra::MultiVectorFactory< Scalar, LocalOrdinal, GlobalOrdinal, Node >::Build(preconditioner.getDomainMap(), 1) ; - // Teuchos::RCP Y = Xpetra::MultiVectorFactory< Scalar, LocalOrdinal, GlobalOrdinal, Node >::Build(preconditioner.getRangeMap(), 1) ; - // X->randomize(); - // Y->putScalar((scalar_type) 0.0); - // - // // Apply the preconditioner - // preconditioner.apply(*X,*Y); - // - // // Output result to screen - // Y->describe(*out, Teuchos::VERB_EXTREME); - -#ifdef HAVE_MPI - MPI_Finalize(); -#endif - - return (EXIT_SUCCESS); -} diff --git a/packages/muelu/research/regionMG/src/SetupRegionHierarchy_def.hpp b/packages/muelu/research/regionMG/src/SetupRegionHierarchy_def.hpp index a4ed28627bd7..5c8beb322b05 100644 --- a/packages/muelu/research/regionMG/src/SetupRegionHierarchy_def.hpp +++ b/packages/muelu/research/regionMG/src/SetupRegionHierarchy_def.hpp @@ -38,10 +38,8 @@ #include "SetupRegionMatrix_def.hpp" #include "SetupRegionSmoothers_def.hpp" -#if defined(HAVE_MUELU_AMESOS2) #include #include -#endif using Teuchos::Array; using Teuchos::ArrayRCP; diff --git a/packages/muelu/research/regionMG/src/SolveRegionHierarchy_def.hpp b/packages/muelu/research/regionMG/src/SolveRegionHierarchy_def.hpp index db287cf2ebc7..47270af5087e 100644 --- a/packages/muelu/research/regionMG/src/SolveRegionHierarchy_def.hpp +++ b/packages/muelu/research/regionMG/src/SolveRegionHierarchy_def.hpp @@ -179,7 +179,6 @@ void MgCycle(const int levelID, ///< ID of current level } if (coarseSolverType == "direct") { -#if defined(HAVE_MUELU_AMESOS2) using DirectCoarseSolver = Amesos2::Solver, Tpetra::MultiVector>; RCP coarseSolver = coarseSolverData->get>("direct solver object"); @@ -216,13 +215,6 @@ void MgCycle(const int levelID, ///< ID of current level "but actually is missing. Anyway ... just do it right now." << std::endl; coarseSolver->solve(tX.ptr(), tB.ptr()); -#else - *fos << "+++++++++++++++++++++++++++ WARNING +++++++++++++++++++++++++\n" - << "+ Coarse level direct solver requires Tpetra and Amesos2. +\n" - << "+ Skipping the coarse level solve. +\n" - << "+++++++++++++++++++++++++++ WARNING +++++++++++++++++++++++++" - << std::endl; -#endif } else if (coarseSolverType == "amg") // use AMG as coarse level solver { const bool coarseSolverRebalance = coarseSolverData->get("coarse solver rebalance"); diff --git a/packages/muelu/research/regionMG/test/structured/Driver_Structured_Regions.cpp b/packages/muelu/research/regionMG/test/structured/Driver_Structured_Regions.cpp index 39303a4553ca..f5de2295303c 100644 --- a/packages/muelu/research/regionMG/test/structured/Driver_Structured_Regions.cpp +++ b/packages/muelu/research/regionMG/test/structured/Driver_Structured_Regions.cpp @@ -71,16 +71,11 @@ #include // Xpetra Epetra stack -#ifdef HAVE_MUELU_EPETRA -#include "Xpetra_EpetraMultiVector.hpp" -#endif #include -#if defined(HAVE_MUELU_AMESOS2) #include #include -#endif // Region MG headers #include "SetupRegionUtilities.hpp" diff --git a/packages/muelu/research/tawiesn/aria/Driver.cpp b/packages/muelu/research/tawiesn/aria/Driver.cpp index 957e99b04642..fabc1dde5aa0 100644 --- a/packages/muelu/research/tawiesn/aria/Driver.cpp +++ b/packages/muelu/research/tawiesn/aria/Driver.cpp @@ -434,11 +434,7 @@ int main(int argc, char* argv[]) { Xpetra::UnderlyingLib lib = xpetraParameters.GetLib(); if (lib == Xpetra::UseEpetra) { -#ifdef HAVE_MUELU_EPETRA - return main_(clp, lib, argc, argv); -#else throw MueLu::Exceptions::RuntimeError("Epetra is not available"); -#endif } if (lib == Xpetra::UseTpetra) { diff --git a/packages/muelu/src/Graph/MatrixTransformation/MueLu_CoalesceDropFactory_def.hpp b/packages/muelu/src/Graph/MatrixTransformation/MueLu_CoalesceDropFactory_def.hpp index 0b7e1d89d800..81fad1c19645 100644 --- a/packages/muelu/src/Graph/MatrixTransformation/MueLu_CoalesceDropFactory_def.hpp +++ b/packages/muelu/src/Graph/MatrixTransformation/MueLu_CoalesceDropFactory_def.hpp @@ -39,9 +39,7 @@ #include "MueLu_PreDropFunctionConstVal.hpp" #include "MueLu_Utilities.hpp" -#ifdef HAVE_XPETRA_TPETRA #include "Tpetra_CrsGraphTransposer.hpp" -#endif #include #include @@ -1912,7 +1910,6 @@ void CoalesceDropFactory::BlockDiagon outputGraph->SetBoundaryNodeMap(inputGraph->GetBoundaryNodeMap()); } else { TEUCHOS_ASSERT(inputGraph->GetDomainMap()->lib() == Xpetra::UseTpetra); -#ifdef HAVE_XPETRA_TPETRA auto outputGraph2 = rcp(new LWGraph(rows_graph, Kokkos::subview(columns, Kokkos::make_pair(0, realnnz)), inputGraph->GetDomainMap(), inputGraph->GetImportMap(), "block-diagonalized graph of A")); auto tpGraph = Xpetra::toTpetra(rcp_const_cast(outputGraph2->GetCrsGraph())); @@ -1927,7 +1924,6 @@ void CoalesceDropFactory::BlockDiagon rows_graphSym(row) = rowsSym(row); outputGraph = rcp(new LWGraph(rows_graphSym, colIndsSym, inputGraph->GetDomainMap(), Xpetra::toXpetra(tpGraphSym->getColMap()), "block-diagonalized graph of A")); outputGraph->SetBoundaryNodeMap(inputGraph->GetBoundaryNodeMap()); -#endif } } diff --git a/packages/muelu/src/Interface/MueLu_AdaptiveSaMLParameterListInterpreter_def.hpp b/packages/muelu/src/Interface/MueLu_AdaptiveSaMLParameterListInterpreter_def.hpp index 123383c997e3..b094c52f72c8 100644 --- a/packages/muelu/src/Interface/MueLu_AdaptiveSaMLParameterListInterpreter_def.hpp +++ b/packages/muelu/src/Interface/MueLu_AdaptiveSaMLParameterListInterpreter_def.hpp @@ -20,9 +20,6 @@ #include #include "MueLu_ConfigDefs.hpp" -#if defined(HAVE_MUELU_ML) && defined(HAVE_MUELU_EPETRA) -#include -#endif #include #include diff --git a/packages/muelu/src/Interface/MueLu_FactoryFactory_def.hpp b/packages/muelu/src/Interface/MueLu_FactoryFactory_def.hpp index cc144b4366fe..e622ab51eb96 100644 --- a/packages/muelu/src/Interface/MueLu_FactoryFactory_def.hpp +++ b/packages/muelu/src/Interface/MueLu_FactoryFactory_def.hpp @@ -243,11 +243,7 @@ RCP FactoryFactory #endif // HAVE_MUELU_ZOLTAN2 && HAVE_MPI } if (factoryName == "IsorropiaInterface") { -#if defined(HAVE_MUELU_ISORROPIA) && defined(HAVE_MPI) - return Build2(paramList, factoryMapIn, factoryManagersIn); -#else TEUCHOS_TEST_FOR_EXCEPTION(true, Exceptions::RuntimeError, "MueLu::FactoryFactory:BuildFactory(): Cannot create a IsorropiaInterface object: Isorropia is disabled: HAVE_MUELU_ISORROPIA && HAVE_MPI == false."); -#endif // HAVE_MUELU_ZOLTAN2 && HAVE_MPI } if (factoryName == "NodePartitionInterface") { diff --git a/packages/muelu/src/Interface/MueLu_ML2MueLuParameterTranslator.cpp b/packages/muelu/src/Interface/MueLu_ML2MueLuParameterTranslator.cpp index 7589c6830464..ce091a712aee 100644 --- a/packages/muelu/src/Interface/MueLu_ML2MueLuParameterTranslator.cpp +++ b/packages/muelu/src/Interface/MueLu_ML2MueLuParameterTranslator.cpp @@ -8,14 +8,6 @@ // @HEADER #include "MueLu_ConfigDefs.hpp" -#if defined(HAVE_MUELU_ML) -#include -#if defined(HAVE_ML_EPETRA) && defined(HAVE_ML_TEUCHOS) -#include -#include // for default values -#include -#endif -#endif #include @@ -313,29 +305,10 @@ std::string ML2MueLuParameterTranslator::SetParameterList(const Teuchos::Paramet RCP out = Teuchos::fancyOStream(Teuchos::rcpFromRef(std::cout)); // TODO: use internal out (GetOStream()) -#if defined(HAVE_MUELU_ML) && defined(HAVE_ML_EPETRA) && defined(HAVE_ML_TEUCHOS) - - // TODO alternative with standard parameterlist from ML user guide? - - if (defaultVals != "") { - TEUCHOS_TEST_FOR_EXCEPTION(defaultVals != "SA" && defaultVals != "NSSA" && defaultVals != "refmaxwell" && defaultVals != "Maxwell", Exceptions::RuntimeError, - "MueLu::MLParameterListInterpreter: only \"SA\", \"NSSA\", \"refmaxwell\" and \"Maxwell\" allowed as options for ML default parameters."); - Teuchos::ParameterList ML_defaultlist; - if (defaultVals == "refmaxwell") - ML_Epetra::SetDefaultsRefMaxwell(ML_defaultlist); - else - ML_Epetra::SetDefaults(defaultVals, ML_defaultlist); - - // merge user parameters with default parameters - MueLu::MergeParameterList(paramList_in, ML_defaultlist, true); - paramList = ML_defaultlist; - } -#else if (defaultVals != "") { // If no validator available: issue a warning and set parameter value to false in the output list *out << "Warning: MueLu_ENABLE_ML=OFF, ML_ENABLE_Epetra=OFF or ML_ENABLE_TEUCHOS=OFF. No ML default values available." << std::endl; } -#endif // HAVE_MUELU_ML && HAVE_ML_EPETRA && HAVE_ML_TEUCHOS // // Move smoothers/aggregation/coarse parameters to sublists @@ -355,17 +328,10 @@ std::string ML2MueLuParameterTranslator::SetParameterList(const Teuchos::Paramet { bool validate = paramList.get("ML validate parameter list", true); /* true = default in ML */ if (validate && defaultVals != "refmaxwell") { -#if defined(HAVE_MUELU_ML) && defined(HAVE_ML_EPETRA) && defined(HAVE_ML_TEUCHOS) - // Validate parameter list using ML validator - int depth = paramList.get("ML validate depth", 5); /* 5 = default in ML */ - TEUCHOS_TEST_FOR_EXCEPTION(!ML_Epetra::ValidateMLPParameters(paramList, depth), Exceptions::RuntimeError, - "ERROR: ML's Teuchos::ParameterList contains incorrect parameter!"); -#else // If no validator available: issue a warning and set parameter value to false in the output list *out << "Warning: MueLu_ENABLE_ML=OFF, ML_ENABLE_Epetra=OFF or ML_ENABLE_TEUCHOS=OFF. The parameter list cannot be validated." << std::endl; paramList.set("ML validate parameter list", false); -#endif // HAVE_MUELU_ML && HAVE_ML_EPETRA && HAVE_ML_TEUCHOS } // if(validate) } // scope diff --git a/packages/muelu/src/Interface/MueLu_MLParameterListInterpreter_decl.hpp b/packages/muelu/src/Interface/MueLu_MLParameterListInterpreter_decl.hpp index b1cc80c1181d..96dc426f1a77 100644 --- a/packages/muelu/src/Interface/MueLu_MLParameterListInterpreter_decl.hpp +++ b/packages/muelu/src/Interface/MueLu_MLParameterListInterpreter_decl.hpp @@ -39,15 +39,6 @@ #include "MueLu_NullspaceFactory_fwd.hpp" #include "MueLu_FactoryBase_fwd.hpp" -#if defined(HAVE_MUELU_ISORROPIA) && defined(HAVE_MPI) -#include "MueLu_RepartitionHeuristicFactory_fwd.hpp" -#include "MueLu_RepartitionFactory_fwd.hpp" -#include "MueLu_RebalanceTransferFactory_fwd.hpp" -#include "MueLu_IsorropiaInterface_fwd.hpp" -#include "MueLu_RebalanceAcFactory_fwd.hpp" -#include "MueLu_RebalanceMapFactory_fwd.hpp" -#endif - #ifdef HAVE_MUELU_DEPRECATED_CODE #ifndef TRILINOS_HIDE_DEPRECATED_HEADER_WARNINGS #warning "The header file MueLu_MLParameterListInterpreter.hpp is deprecated" diff --git a/packages/muelu/src/Interface/MueLu_MLParameterListInterpreter_def.hpp b/packages/muelu/src/Interface/MueLu_MLParameterListInterpreter_def.hpp index 09eb4bc28e60..053627c4b25a 100644 --- a/packages/muelu/src/Interface/MueLu_MLParameterListInterpreter_def.hpp +++ b/packages/muelu/src/Interface/MueLu_MLParameterListInterpreter_def.hpp @@ -13,9 +13,6 @@ #include #include "MueLu_ConfigDefs.hpp" -#if defined(HAVE_MUELU_ML) -#include -#endif #include #include @@ -51,16 +48,6 @@ // #include "MueLu_CoordinatesTransferFactory_kokkos.hpp" #include "MueLu_TentativePFactory_kokkos.hpp" -#if defined(HAVE_MUELU_ISORROPIA) && defined(HAVE_MPI) -#include "MueLu_IsorropiaInterface.hpp" -#include "MueLu_RepartitionHeuristicFactory.hpp" -#include "MueLu_RepartitionFactory.hpp" -#include "MueLu_RebalanceTransferFactory.hpp" -#include "MueLu_RepartitionInterface.hpp" -#include "MueLu_RebalanceAcFactory.hpp" -//#include "MueLu_RebalanceMapFactory.hpp" -#endif - // Note: do not add options that are only recognized by MueLu. // TODO: this parameter list interpreter should force MueLu to use default ML parameters @@ -174,17 +161,10 @@ void MLParameterListInterpreter::SetP { bool validate = paramList.get("ML validate parameter list", true); /* true = default in ML */ if (validate) { -#if defined(HAVE_MUELU_ML) && defined(HAVE_MUELU_EPETRA) - // Validate parameter list using ML validator - int depth = paramList.get("ML validate depth", 5); /* 5 = default in ML */ - TEUCHOS_TEST_FOR_EXCEPTION(!ML_Epetra::ValidateMLPParameters(paramList, depth), Exceptions::RuntimeError, - "ERROR: ML's Teuchos::ParameterList contains incorrect parameter!"); -#else // If no validator available: issue a warning and set parameter value to false in the output list this->GetOStream(Warnings0) << "Warning: MueLu_ENABLE_ML=OFF. The parameter list cannot be validated." << std::endl; paramList.set("ML validate parameter list", false); -#endif // HAVE_MUELU_ML } // if(validate) } // scope @@ -272,79 +252,10 @@ void MLParameterListInterpreter::SetP // // introduce rebalancing // -#if defined(HAVE_MUELU_ISORROPIA) && defined(HAVE_MPI) - Teuchos::RCP RebalancedPFact = Teuchos::null; - Teuchos::RCP RebalancedRFact = Teuchos::null; - Teuchos::RCP RepartitionFact = Teuchos::null; - Teuchos::RCP RebalancedAFact = Teuchos::null; - - MUELU_READ_PARAM(paramList, "repartition: enable", int, 0, bDoRepartition); - if (bDoRepartition == 1) { - // The Factory Manager will be configured to return the rebalanced versions of P, R, A by default. - // Everytime we want to use the non-rebalanced versions, we need to explicitly define the generating factory. - RFact->SetFactory("P", PFact); - // - AcFact->SetFactory("P", PFact); - AcFact->SetFactory("R", RFact); - - // define rebalancing factory for coarse matrix - Teuchos::RCP > rebAmalgFact = Teuchos::rcp(new MueLu::AmalgamationFactory()); - rebAmalgFact->SetFactory("A", AcFact); - - MUELU_READ_PARAM(paramList, "repartition: max min ratio", double, 1.3, maxminratio); - MUELU_READ_PARAM(paramList, "repartition: min per proc", int, 512, minperproc); - - // Repartitioning heuristic - RCP RepartitionHeuristicFact = Teuchos::rcp(new RepartitionHeuristicFactory()); - { - Teuchos::ParameterList paramListRepFact; - paramListRepFact.set("repartition: min rows per proc", minperproc); - paramListRepFact.set("repartition: max imbalance", maxminratio); - RepartitionHeuristicFact->SetParameterList(paramListRepFact); - } - RepartitionHeuristicFact->SetFactory("A", AcFact); - - // create "Partition" - Teuchos::RCP > isoInterface = Teuchos::rcp(new MueLu::IsorropiaInterface()); - isoInterface->SetFactory("A", AcFact); - isoInterface->SetFactory("number of partitions", RepartitionHeuristicFact); - isoInterface->SetFactory("UnAmalgamationInfo", rebAmalgFact); - - // create "Partition" by unamalgamtion - Teuchos::RCP > repInterface = Teuchos::rcp(new MueLu::RepartitionInterface()); - repInterface->SetFactory("A", AcFact); - repInterface->SetFactory("number of partitions", RepartitionHeuristicFact); - repInterface->SetFactory("AmalgamatedPartition", isoInterface); - // repInterface->SetFactory("UnAmalgamationInfo", rebAmalgFact); // not necessary? - - // Repartitioning (creates "Importer" from "Partition") - RepartitionFact = Teuchos::rcp(new RepartitionFactory()); - RepartitionFact->SetFactory("A", AcFact); - RepartitionFact->SetFactory("number of partitions", RepartitionHeuristicFact); - RepartitionFact->SetFactory("Partition", repInterface); - - // Reordering of the transfer operators - RebalancedPFact = Teuchos::rcp(new RebalanceTransferFactory()); - RebalancedPFact->SetParameter("type", Teuchos::ParameterEntry(std::string("Interpolation"))); - RebalancedPFact->SetFactory("P", PFact); - RebalancedPFact->SetFactory("Nullspace", PtentFact); - RebalancedPFact->SetFactory("Importer", RepartitionFact); - - RebalancedRFact = Teuchos::rcp(new RebalanceTransferFactory()); - RebalancedRFact->SetParameter("type", Teuchos::ParameterEntry(std::string("Restriction"))); - RebalancedRFact->SetFactory("R", RFact); - RebalancedRFact->SetFactory("Importer", RepartitionFact); - - // Compute Ac from rebalanced P and R - RebalancedAFact = Teuchos::rcp(new RebalanceAcFactory()); - RebalancedAFact->SetFactory("A", AcFact); - } -#else // #ifdef HAVE_MUELU_ISORROPIA // Get rid of [-Wunused] warnings //(void) // // ^^^ FIXME (mfh 17 Nov 2013) That definitely doesn't compile. -#endif // // Nullspace factory @@ -433,22 +344,10 @@ void MLParameterListInterpreter::SetP manager->SetFactory("DofsPerNode", dropFact); manager->SetFactory("Ptent", PtentFact); -#if defined(HAVE_MUELU_ISORROPIA) && defined(HAVE_MPI) - if (bDoRepartition == 1) { - manager->SetFactory("A", RebalancedAFact); - manager->SetFactory("P", RebalancedPFact); - manager->SetFactory("R", RebalancedRFact); - manager->SetFactory("Nullspace", RebalancedPFact); - manager->SetFactory("Importer", RepartitionFact); - } else { -#endif // #ifdef HAVE_MUELU_ISORROPIA manager->SetFactory("Nullspace", nspFact); // use same nullspace factory throughout all multigrid levels manager->SetFactory("A", AcFact); // same RAP factory for all levels manager->SetFactory("P", PFact); // same prolongator and restrictor factories for all levels manager->SetFactory("R", RFact); // same prolongator and restrictor factories for all levels -#if defined(HAVE_MUELU_ISORROPIA) && defined(HAVE_MPI) - } -#endif this->AddFactoryManager(levelID, 1, manager); } // for (level loop) @@ -621,31 +520,7 @@ MLParameterListInterpreter:: } else if (type == "IFPACK") { // TODO: this option is not described in the ML Guide v5.0 -#if defined(HAVE_MUELU_EPETRA) && defined(HAVE_MUELU_IFPACK) - ifpackType = paramList.get("smoother: ifpack type"); - - if (ifpackType == "ILU") { - // TODO fix this (type mismatch double vs. int) - // MUELU_COPY_PARAM(paramList, "smoother: ifpack level-of-fill", double /*int*/, 0.0 /*2*/, smootherParamList, "fact: level-of-fill"); - if (paramList.isParameter("smoother: ifpack level-of-fill")) - smootherParamList.set("fact: level-of-fill", Teuchos::as(paramList.get("smoother: ifpack level-of-fill"))); - else - smootherParamList.set("fact: level-of-fill", as(0)); - - MUELU_COPY_PARAM(paramList, "smoother: ifpack overlap", int, 2, smootherParamList, "partitioner: overlap"); - - // TODO change to TrilinosSmoother as soon as Ifpack2 supports all preconditioners from Ifpack - smooProto = - MueLu::GetIfpackSmoother(ifpackType, - smootherParamList, - paramList.get("smoother: ifpack overlap")); - smooProto->SetFactory("A", AFact); - } else { - TEUCHOS_TEST_FOR_EXCEPTION(true, Exceptions::RuntimeError, "MueLu::MLParameterListInterpreter: unknown ML smoother type " + type + " (IFPACK) not supported by MueLu. Only ILU is supported."); - } -#else TEUCHOS_TEST_FOR_EXCEPTION(true, Exceptions::RuntimeError, "MueLu::MLParameterListInterpreter: MueLu compiled without Ifpack support"); -#endif } else if (type.length() > strlen("Amesos") && type.substr(0, strlen("Amesos")) == "Amesos") { /* catch Amesos-* */ std::string solverType = type.substr(strlen("Amesos") + 1); /* ("Amesos-KLU" -> "KLU") */ diff --git a/packages/muelu/src/Operators/MueLu_RefMaxwell_def.hpp b/packages/muelu/src/Operators/MueLu_RefMaxwell_def.hpp index 54ba2b31c9d7..d39dc70e11ed 100644 --- a/packages/muelu/src/Operators/MueLu_RefMaxwell_def.hpp +++ b/packages/muelu/src/Operators/MueLu_RefMaxwell_def.hpp @@ -564,7 +564,6 @@ void RefMaxwell::compute(bool reuse) rcp_dynamic_cast(Dk_1_)->getCrsMatrix()->replaceDomainMapAndImporter(Importer22_->getTargetMap(), ImporterD); } -#ifdef HAVE_MUELU_TPETRA if ((!Dk_1_T_.is_null()) && (!R11_.is_null()) && (!rcp_dynamic_cast(Dk_1_T_)->getCrsMatrix()->getCrsGraph()->getImporter().is_null()) && @@ -573,7 +572,6 @@ void RefMaxwell::compute(bool reuse) (R11_->getColMap()->lib() == Xpetra::UseTpetra)) Dk_1_T_R11_colMapsMatch_ = Dk_1_T_->getColMap()->isSameAs(*R11_->getColMap()); else -#endif Dk_1_T_R11_colMapsMatch_ = false; if (Dk_1_T_R11_colMapsMatch_) GetOStream(Runtime0) << solverName_ + "::compute(): Dk_1_T and R11 have matching colMaps" << std::endl; diff --git a/packages/muelu/src/Rebalancing/MueLu_IsorropiaInterface_decl.hpp b/packages/muelu/src/Rebalancing/MueLu_IsorropiaInterface_decl.hpp index 81bd77212eb1..725dd32736b5 100644 --- a/packages/muelu/src/Rebalancing/MueLu_IsorropiaInterface_decl.hpp +++ b/packages/muelu/src/Rebalancing/MueLu_IsorropiaInterface_decl.hpp @@ -25,10 +25,6 @@ #include #include //TODO -#ifdef HAVE_MUELU_EPETRA -#include -#endif - #include "MueLu_SingleLevelFactoryBase.hpp" #include "MueLu_Level_fwd.hpp" diff --git a/packages/muelu/src/Rebalancing/MueLu_IsorropiaInterface_def.hpp b/packages/muelu/src/Rebalancing/MueLu_IsorropiaInterface_def.hpp index d1909c5eb8bb..d675b10eb7ea 100644 --- a/packages/muelu/src/Rebalancing/MueLu_IsorropiaInterface_def.hpp +++ b/packages/muelu/src/Rebalancing/MueLu_IsorropiaInterface_def.hpp @@ -28,18 +28,6 @@ #include #include -#ifdef HAVE_MUELU_ISORROPIA -#include - -#ifdef HAVE_MUELU_EPETRA -#include -#include -#include -#endif - -#include -#endif // ENDIF HAVE_MUELU_ISORROPIA - #include "MueLu_Level.hpp" #include "MueLu_Exceptions.hpp" #include "MueLu_Monitor.hpp" @@ -177,53 +165,6 @@ void IsorropiaInterface::Build(Level& level) crsGraph->fillComplete(nodeMap, nodeMap); #ifdef HAVE_MPI -#ifdef HAVE_MUELU_ISORROPIA - - // prepare parameter list for Isorropia - Teuchos::ParameterList paramlist; - paramlist.set("NUM PARTS", toString(numParts)); - - /*STRUCTURALLY SYMMETRIC [NO/yes] (is symmetrization required?) - PARTITIONING METHOD [block/cyclic/random/rcb/rib/hsfc/graph/HYPERGRAPH] - NUM PARTS [int k] (global number of parts) - IMBALANCE TOL [float tol] (1.0 is perfect balance) - BALANCE OBJECTIVE [ROWS/nonzeros] - */ - Teuchos::ParameterList& sublist = paramlist.sublist("Zoltan"); - sublist.set("LB_APPROACH", "PARTITION"); - -#ifdef HAVE_MUELU_EPETRA - RCP > epCrsGraph = Teuchos::rcp_dynamic_cast >(crsGraph); - if (epCrsGraph != Teuchos::null) { - RCP epetraCrsGraph = epCrsGraph->getEpetra_CrsGraph(); - - RCP isoPart = Teuchos::rcp(new Isorropia::Epetra::Partitioner(epetraCrsGraph, paramlist)); - - int size = 0; - const int* array = NULL; - isoPart->extractPartsView(size, array); - - TEUCHOS_TEST_FOR_EXCEPTION(size != Teuchos::as(nodeMap->getLocalNumElements()), Exceptions::RuntimeError, "length of array returned from extractPartsView does not match local length of rowMap"); - - RCP > decomposition = Xpetra::VectorFactory::Build(nodeMap, false); - ArrayRCP decompEntries = decomposition->getDataNonConst(0); - - // fill vector with amalgamated information about partitioning - for (int i = 0; i < size; i++) { - decompEntries[i] = Teuchos::as(array[i]); - } - - Set(level, "AmalgamatedPartition", decomposition); - } -#endif // ENDIF HAVE_MUELU_EPETRA - -#ifdef HAVE_MUELU_INST_DOUBLE_INT_INT - RCP > tpCrsGraph = Teuchos::rcp_dynamic_cast >(crsGraph); - TEUCHOS_TEST_FOR_EXCEPTION(tpCrsGraph != Teuchos::null, Exceptions::RuntimeError, "Tpetra is not supported with Isorropia."); -#else - TEUCHOS_TEST_FOR_EXCEPTION(false, Exceptions::RuntimeError, "Isorropia is an interface to Zoltan which only has support for LO=GO=int and SC=double."); -#endif // ENDIF HAVE_MUELU_INST_DOUBLE_INT_INT -#endif // HAVE_MUELU_ISORROPIA #else // if we don't have MPI // Running on one processor, so decomposition is the trivial one, all zeros. diff --git a/packages/muelu/src/Rebalancing/MueLu_Zoltan2Interface_decl.hpp b/packages/muelu/src/Rebalancing/MueLu_Zoltan2Interface_decl.hpp index 9fe2b98468d7..9eee3b6ddb34 100644 --- a/packages/muelu/src/Rebalancing/MueLu_Zoltan2Interface_decl.hpp +++ b/packages/muelu/src/Rebalancing/MueLu_Zoltan2Interface_decl.hpp @@ -109,100 +109,6 @@ class Zoltan2Interface : public SingleLevelFactoryBase { }; // class Zoltan2Interface -#ifdef HAVE_MUELU_EPETRA - -#if ((defined(EPETRA_HAVE_OMP) && (!defined(HAVE_TPETRA_INST_OPENMP) || !defined(HAVE_TPETRA_INST_INT_INT))) || \ - (!defined(EPETRA_HAVE_OMP) && (!defined(HAVE_TPETRA_INST_SERIAL) || !defined(HAVE_TPETRA_INST_INT_INT)))) - -#if defined(HAVE_MUELU_ZOLTAN) -// Stub partial specialization of Zoltan2Interface for EpetraNode -// Use ZoltanInterface instead of Zoltan2Interface -template <> -class Zoltan2Interface : public SingleLevelFactoryBase { - typedef double Scalar; - typedef int LocalOrdinal; - typedef int GlobalOrdinal; - typedef Xpetra::EpetraNode Node; -#undef MUELU_ZOLTAN2INTERFACE_SHORT -#include "MueLu_UseShortNames.hpp" - public: - typedef typename Teuchos::ScalarTraits::magnitudeType real_type; - typedef Xpetra::MultiVector RealValuedMultiVector; - - Zoltan2Interface() { - level_ = rcp(new Level()); - zoltanInterface_ = rcp(new ZoltanInterface()); - - level_->SetLevelID(1); - } - virtual ~Zoltan2Interface() { - zoltanInterface_ = Teuchos::null; - level_ = Teuchos::null; - } - RCP GetValidParameterList() const { - RCP validParamList = rcp(new ParameterList()); - - validParamList->set >("A", Teuchos::null, "Factory of the matrix A"); - validParamList->set >("Coordinates", Teuchos::null, "Factory of the coordinates"); - validParamList->set >("number of partitions", Teuchos::null, "Instance of RepartitionHeuristicFactory."); - validParamList->set >("ParameterList", Teuchos::null, "Zoltan2 parameters"); - - return validParamList; - }; - void DeclareInput(Level& currentLevel) const { - Input(currentLevel, "A"); - Input(currentLevel, "number of partitions"); - const ParameterList& pL = GetParameterList(); - // We do this dance, because we don't want "ParameterList" to be marked as used. - // Is there a better way? - Teuchos::ParameterEntry entry = pL.getEntry("ParameterList"); - RCP providedList = Teuchos::any_cast >(entry.getAny(false)); - if (providedList != Teuchos::null && providedList->isType("algorithm")) { - const std::string algo = providedList->get("algorithm"); - if (algo == "multijagged" || algo == "rcb") - Input(currentLevel, "Coordinates"); - } else - Input(currentLevel, "Coordinates"); - }; - void Build(Level& currentLevel) const { - this->GetOStream(Warnings0) << "Tpetra does not support instantiation, " - "switching Zoltan2Interface to ZoltanInterface" - << std::endl; - - // Put the data into a fake level - level_->Set("A", Get >(currentLevel, "A")); - level_->Set("Coordinates", Get >(currentLevel, "Coordinates")); - level_->Set("number of partitions", currentLevel.Get("number of partitions")); - - level_->Request("Partition", zoltanInterface_.get()); - zoltanInterface_->Build(*level_); - - RCP > decomposition; - level_->Get("Partition", decomposition, zoltanInterface_.get()); - Set(currentLevel, "Partition", decomposition); - }; - - private: - RCP level_; // fake Level - RCP zoltanInterface_; -}; -#else -// Stub partial specialization of Zoltan2Interface for EpetraNode -template <> -class Zoltan2Interface : public SingleLevelFactoryBase { - public: - Zoltan2Interface() { throw Exceptions::RuntimeError("Tpetra does not support instantiation"); } - virtual ~Zoltan2Interface() {} - RCP GetValidParameterList() const { return Teuchos::null; }; - void DeclareInput(Level& level) const {}; - void Build(Level& level) const {}; -}; -#endif // HAVE_MUELU_ZOLTAN - -#endif - -#endif // HAVE_MUELU_EPETRA - } // namespace MueLu #define MUELU_ZOLTAN2INTERFACE_SHORT diff --git a/packages/muelu/src/Smoothers/MueLu_Amesos2Smoother_decl.hpp b/packages/muelu/src/Smoothers/MueLu_Amesos2Smoother_decl.hpp index a869c2207ce1..7a39587d8358 100644 --- a/packages/muelu/src/Smoothers/MueLu_Amesos2Smoother_decl.hpp +++ b/packages/muelu/src/Smoothers/MueLu_Amesos2Smoother_decl.hpp @@ -11,7 +11,6 @@ #define MUELU_AMESOS2SMOOTHER_DECL_HPP #include "MueLu_ConfigDefs.hpp" -#if defined(HAVE_MUELU_AMESOS2) #include #include @@ -136,45 +135,7 @@ class Amesos2Smoother : public SmootherPrototype -class Amesos2Smoother : public SmootherPrototype { - typedef double Scalar; - typedef int LocalOrdinal; - typedef int GlobalOrdinal; - typedef Xpetra::EpetraNode Node; -#undef MUELU_AMESOS2SMOOTHER_SHORT -#include "MueLu_UseShortNames.hpp" - - public: - Amesos2Smoother(const std::string& type = "", const Teuchos::ParameterList& paramList = Teuchos::ParameterList()) { - MUELU_TPETRA_ETI_EXCEPTION("Amesos2Smoother", "Amesos2Smoother", "int"); - } - virtual ~Amesos2Smoother(){}; - void DeclareInput(Level& currentLevel) const {}; - void Setup(Level& currentLevel){}; - void Apply(MultiVector& X, const MultiVector& B, bool InitialGuessIsZero = false) const {}; - - RCP Copy() const { return Teuchos::null; }; - - std::string description() const { return std::string(""); }; - void print(Teuchos::FancyOStream& out, const VerbLevel verbLevel = Default) const {}; - - //! Get a rough estimate of cost per iteration - size_t getNodeSmootherComplexity() const { - size_t cplx = 0; - return cplx; - }; -}; -#endif -#endif // HAVE_MUELU_EPETRA - } // namespace MueLu #define MUELU_AMESOS2SMOOTHER_SHORT -#endif // HAVE_MUELU_AMESOS2 #endif // MUELU_AMESOS2SMOOTHER_DECL_HPP diff --git a/packages/muelu/src/Smoothers/MueLu_Amesos2Smoother_def.hpp b/packages/muelu/src/Smoothers/MueLu_Amesos2Smoother_def.hpp index a78cc24697e5..3fab35464b23 100644 --- a/packages/muelu/src/Smoothers/MueLu_Amesos2Smoother_def.hpp +++ b/packages/muelu/src/Smoothers/MueLu_Amesos2Smoother_def.hpp @@ -13,7 +13,6 @@ #include #include "MueLu_ConfigDefs.hpp" -#if defined(HAVE_MUELU_AMESOS2) #include #include @@ -413,5 +412,4 @@ size_t Amesos2Smoother::getNodeSmooth } } // namespace MueLu -#endif // HAVE_MUELU_AMESOS2 #endif // MUELU_AMESOS2SMOOTHER_DEF_HPP diff --git a/packages/muelu/src/Smoothers/MueLu_AmesosSmoother.cpp b/packages/muelu/src/Smoothers/MueLu_AmesosSmoother.cpp index adc53c72c3d7..0b575e30b99a 100644 --- a/packages/muelu/src/Smoothers/MueLu_AmesosSmoother.cpp +++ b/packages/muelu/src/Smoothers/MueLu_AmesosSmoother.cpp @@ -11,180 +11,3 @@ #include "MueLu_ConfigDefs.hpp" -#if defined(HAVE_MUELU_EPETRA) && defined(HAVE_MUELU_AMESOS) - -#include - -#include -#include -#include - -#include "MueLu_AmesosSmoother.hpp" - -#include "MueLu_Level.hpp" -#include "MueLu_Utilities.hpp" -#include "MueLu_Monitor.hpp" - -namespace MueLu { - -template -AmesosSmoother::AmesosSmoother(const std::string& type, const Teuchos::ParameterList& paramList) - : type_(type) { - this->SetParameterList(paramList); - - if (!type_.empty()) { - // Transform string to "Abcde" notation - std::transform(type_.begin(), type_.end(), type_.begin(), ::tolower); - std::transform(type_.begin(), ++type_.begin(), type_.begin(), ::toupper); - } - if (type_ == "Amesos_klu") type_ = "Klu"; - if (type_ == "Klu2") type_ = "Klu"; - if (type_ == "Amesos_umfpack") type_ = "Umfpack"; - if (type_ == "Superlu_dist") type_ = "Superludist"; - if (type_ == "Amesos_mumps") type_ = "Mumps"; - - // Try to come up with something availble - // Order corresponds to our preference - // TODO: It would be great is Amesos provides directly this kind of logic for us - std::string oldtype = type_; - if (type_ == "" || Amesos().Query(type_) == false) { -#if defined(HAVE_AMESOS_SUPERLU) - type_ = "Superlu"; -#elif defined(HAVE_AMESOS_KLU) - type_ = "Klu"; -#elif defined(HAVE_AMESOS_SUPERLUDIST) - type_ = "Superludist"; -#elif defined(HAVE_AMESOS_UMFPACK) - type_ = "Umfpack"; -#else - this->declareConstructionOutcome(true, "Amesos has been compiled without SuperLU_DIST, SuperLU, Umfpack or Klu. By default, MueLu tries" + - "to use one of these libraries. Amesos must be compiled with one of these solvers, " + - "or a valid Amesos solver has to be specified explicitly."); - return; -#endif - if (oldtype != "") - this->GetOStream(Warnings0) << "MueLu::AmesosSmoother: \"" << oldtype << "\" is not available. Using \"" << type_ << "\" instead" << std::endl; - else - this->GetOStream(Runtime1) << "MueLu::AmesosSmoother: using \"" << type_ << "\"" << std::endl; - } - this->declareConstructionOutcome(false, ""); -} - -template -void AmesosSmoother::DeclareInput(Level& currentLevel) const { - this->Input(currentLevel, "A"); -} - -template -void AmesosSmoother::Setup(Level& currentLevel) { - FactoryMonitor m(*this, "Setup Smoother", currentLevel); - - if (SmootherPrototype::IsSetup() == true) - this->GetOStream(Warnings0) << "MueLu::AmesosSmoother::Setup(): Setup() has already been called" << std::endl; - - A_ = Factory::Get >(currentLevel, "A"); - - RCP epA = Utilities::Op2NonConstEpetraCrs(A_); - linearProblem_ = rcp(new Epetra_LinearProblem()); - linearProblem_->SetOperator(epA.get()); - - Amesos factory; - prec_ = rcp(factory.Create(type_, *linearProblem_)); - TEUCHOS_TEST_FOR_EXCEPTION(prec_ == Teuchos::null, Exceptions::RuntimeError, "MueLu::AmesosSmoother::Setup(): Solver '" + type_ + "' not supported by Amesos"); - - // set Reindex flag, if A is distributed with non-contiguous maps - // unfortunately there is no reindex for Amesos2, yet. So, this only works for Epetra based problems - if (A_->getRowMap()->isDistributed() == true && A_->getRowMap()->isContiguous() == false) - const_cast(this->GetParameterList()).set("Reindex", true); - - const ParameterList& paramList = this->GetParameterList(); - RCP precList = this->RemoveFactoriesFromList(paramList); - - prec_->SetParameters(*precList); - - const_cast(paramList).setParameters(*precList); - - int r = prec_->NumericFactorization(); - TEUCHOS_TEST_FOR_EXCEPTION(r != 0, Exceptions::RuntimeError, "MueLu::AmesosSmoother::Setup(): Amesos solver returns value of " + Teuchos::toString(r) + " during NumericFactorization()"); - - SmootherPrototype::IsSetup(true); -} - -template -void AmesosSmoother::Apply(MultiVector& X, const MultiVector& B, bool InitialGuessIsZero) const { - TEUCHOS_TEST_FOR_EXCEPTION(SmootherPrototype::IsSetup() == false, Exceptions::RuntimeError, "MueLu::AmesosSmoother::Apply(): Setup() has not been called"); - - Epetra_MultiVector& epX = Utilities::MV2NonConstEpetraMV(X); - Epetra_MultiVector const& epB = Utilities::MV2EpetraMV(B); - // Epetra_LinearProblem takes the right-hand side as a non-const pointer. - // I think this const_cast is safe because Amesos won't modify the rhs. - Epetra_MultiVector& nonconstB = const_cast(epB); - - linearProblem_->SetLHS(&epX); - linearProblem_->SetRHS(&nonconstB); - - prec_->Solve(); - - // Don't keep pointers to our vectors in the Epetra_LinearProblem. - linearProblem_->SetLHS(0); - linearProblem_->SetRHS(0); -} - -template -RCP > AmesosSmoother::Copy() const { - return rcp(new AmesosSmoother(*this)); -} - -template -std::string AmesosSmoother::description() const { - std::ostringstream out; - out << SmootherPrototype::description(); - out << "{type = " << type_ << "}"; - return out.str(); -} - -// using MueLu::Describable::describe; // overloading, not hiding -template -void AmesosSmoother::print(Teuchos::FancyOStream& out, const VerbLevel verbLevel) const { - MUELU_DESCRIBE; - - if (verbLevel & Parameters0) - out0 << "Prec. type: " << type_ << std::endl; - - if (verbLevel & Parameters1) { - out0 << "Parameter list: " << std::endl; - Teuchos::OSTab tab2(out); - out << this->GetParameterList(); - } - - if (verbLevel & External) - if (prec_ != Teuchos::null) { - prec_->PrintStatus(); - prec_->PrintTiming(); - } - - if (verbLevel & Debug) { - out0 << "IsSetup: " << Teuchos::toString(SmootherPrototype::IsSetup()) << std::endl - << "-" << std::endl - << "RCP: " << A_ << std::endl - << "RCP: " << linearProblem_ << std::endl - << "RCP: " << prec_ << std::endl; - } -} - -template -size_t AmesosSmoother::getNodeSmootherComplexity() const { - // FIXME: This is a placeholder - return Teuchos::OrdinalTraits::invalid(); -} - -} // namespace MueLu - -// The AmesosSmoother is only templated on the Node, since it is an Epetra only object -// Therefore we do not need the full ETI instantiations as we do for the other MueLu -// objects which are instantiated on all template parameters. -#if defined(HAVE_MUELU_EPETRA) -template class MueLu::AmesosSmoother; -#endif - -#endif // HAVE_MUELU_EPETRA && HAVE_MUELU_AMESOS diff --git a/packages/muelu/src/Smoothers/MueLu_AmesosSmoother.hpp b/packages/muelu/src/Smoothers/MueLu_AmesosSmoother.hpp index d673dce7b451..8bd758566e48 100644 --- a/packages/muelu/src/Smoothers/MueLu_AmesosSmoother.hpp +++ b/packages/muelu/src/Smoothers/MueLu_AmesosSmoother.hpp @@ -11,168 +11,4 @@ #define MUELU_AMESOSSMOOTHER_HPP #include "MueLu_ConfigDefs.hpp" -#if defined(HAVE_MUELU_EPETRA) && defined(HAVE_MUELU_AMESOS) - -#include -#include - -class Epetra_LinearProblem; -class Amesos_BaseSolver; - -#include "MueLu_SmootherPrototype.hpp" -#include "MueLu_Exceptions.hpp" - -#include "MueLu_Level_fwd.hpp" -#include "MueLu_FactoryBase_fwd.hpp" -#include "MueLu_Utilities_fwd.hpp" - -namespace MueLu { - -/*! - @class AmesosSmoother - @ingroup MueLuSmootherClasses - @brief Class that encapsulates Amesos direct solvers. - - This class creates an Amesos preconditioner factory. The factory is capable of generating direct solvers - based on the type and ParameterList passed into the constructor. See the constructor for more information. -*/ -template ::node_type> -class AmesosSmoother : public SmootherPrototype { - typedef double Scalar; - typedef int LocalOrdinal; - typedef int GlobalOrdinal; - -#undef MUELU_AMESOSSMOOTHER_SHORT -#include "MueLu_UseShortNames.hpp" - - public: - //! @name Constructors / destructors - //@{ - - /*! @brief Constructor - - Creates a MueLu interface to the direct solvers in the Amesos package. The options are those specified in - the Amesos user's manual. - - @param type solver type - @param list options for the particular solver type - - Here is how to select the more commonly used direct solvers: - - - KLU (serial sparse direct solver) - - type = Amesos-KLU - - parameter list options - - none required - - - SuperLU (serial sparse super-nodal direct solver) - - type = Amesos-SuperLU - - parameter list options - - none required - - If you are using type=="", then either SuperLU or KLU are used by default. - - See also Amesos_Klu and Amesos_Superlu. - - */ - - AmesosSmoother(const std::string& type = "", const Teuchos::ParameterList& paramList = Teuchos::ParameterList()); - - //! Destructor - virtual ~AmesosSmoother(){}; - - //@} - - //! Input - //@{ - - void DeclareInput(Level& currentLevel) const; - - //@} - - //! @name Setup and Apply methods. - //@{ - - /*! @brief Set up the direct solver. - This creates the underlying Amesos solver object according to the parameter list options passed into the - AmesosSmoother constructor. This includes doing a numeric factorization of the matrix. - */ - void Setup(Level& currentLevel); - - /*! @brief Apply the direct solver. - - Solves the linear system AX=B using the constructed solver. - - @param X initial guess - @param B right-hand side - @param InitialGuessIsZero This option has no effect with this smoother - */ - void Apply(MultiVector& X, const MultiVector& B, bool /* InitialGuessIsZero */ = false) const; - - //@} - - RCP Copy() const; - - //! @name Overridden from Teuchos::Describable - //@{ - - //! Return a simple one-line description of this object. - std::string description() const; - - //! Print the object with some verbosity level to an FancyOStream object. - // using MueLu::Describable::describe; // overloading, not hiding - void print(Teuchos::FancyOStream& out, const VerbLevel verbLevel = Default) const; - - //! Get a rough estimate of cost per iteration - size_t getNodeSmootherComplexity() const; - - //@} - - private: - // Important note: - // linearProblem_ must be destroyed before A_, because destructor of linearProblem_ is using A_. - // In C++, destructor of member objects are called in the reverse order they appear within the declaration for the class. - // ==18029== Invalid read of size 8 - // ==18029== at 0xC0780A: Epetra_LinearProblem::GetMatrix() const (Epetra_LinearProblem.h:173) - // ==18029== by 0xC5EC27: Amesos_Superlu::PrintTiming() const (Amesos_Superlu.cpp:664) - // ==18029== by 0xC628C6: Amesos_Superlu::~Amesos_Superlu() (Amesos_Superlu.cpp:108) - - //! amesos-specific key phrase that denote smoother type - std::string type_; - - //! Matrix. Not used directly, but held inside of linearProblem_. So we have to keep an RCP pointer to it! - RCP A_; - - //! Problem that Amesos uses internally. - RCP linearProblem_; - - //! pointer to Amesos solver object - RCP prec_; - -}; // class AmesosSmoother - -//! Non-member templated function GetAmesosSmoother() returns a new AmesosSmoother object -// when == . Otherwise, an exception is thrown. -//! This function simplifies the usage of AmesosSmoother objects inside of templates as templates do not have to be specialized for (see DirectSolver for an example). -template -RCP > -GetAmesosSmoother(const std::string& /* type */ = "", const Teuchos::ParameterList& /* paramList */ = Teuchos::ParameterList()) { - TEUCHOS_TEST_FOR_EXCEPTION(true, Exceptions::RuntimeError, - "AmesosSmoother cannot be used with Scalar != double, LocalOrdinal != int, GlobalOrdinal != int"); - TEUCHOS_UNREACHABLE_RETURN(Teuchos::null); -} - -// specialization for Epetra -#if defined(HAVE_MUELU_SERIAL) -template <> -inline RCP > -GetAmesosSmoother(const std::string& type, const Teuchos::ParameterList& paramList) { - return rcp(new MueLu::AmesosSmoother(type, paramList)); -} -#endif // HAVE_MUELU_SERIAL - -} // namespace MueLu - -#define MUELU_AMESOSSMOOTHER_SHORT - -#endif // HAVE_MUELU_AMESOS #endif // MUELU_AMESOSSMOOTHER_HPP diff --git a/packages/muelu/src/Smoothers/MueLu_BelosSmoother_decl.hpp b/packages/muelu/src/Smoothers/MueLu_BelosSmoother_decl.hpp index 8d3b99b60a0d..e9dbe9ec10c9 100644 --- a/packages/muelu/src/Smoothers/MueLu_BelosSmoother_decl.hpp +++ b/packages/muelu/src/Smoothers/MueLu_BelosSmoother_decl.hpp @@ -21,11 +21,9 @@ #include "MueLu_BelosSmoother_fwd.hpp" -#ifdef HAVE_XPETRA_TPETRA #include "BelosTpetraAdapter.hpp" #include #include -#endif #include "MueLu_Level_fwd.hpp" #include "MueLu_SmootherPrototype.hpp" @@ -152,52 +150,6 @@ class BelosSmoother : public SmootherPrototype -class BelosSmoother : public SmootherPrototype { - typedef double Scalar; - typedef int LocalOrdinal; - typedef int GlobalOrdinal; - typedef Xpetra::EpetraNode Node; -#undef MUELU_BELOSSMOOTHER_SHORT -#include "MueLu_UseShortNames.hpp" - - public: -#ifndef _MSC_VER - // Avoid error C3772: invalid friend template declaration - template - friend class BelosSmoother; -#endif - - BelosSmoother(const std::string& type, const Teuchos::ParameterList& paramList = Teuchos::ParameterList(), const LocalOrdinal& overlap = 0) { - MUELU_TPETRA_ETI_EXCEPTION("BelosSmoother", "BelosSmoother", "int"); - }; - - virtual ~BelosSmoother() {} - - void SetParameterList(const Teuchos::ParameterList& paramList) {} - void DeclareInput(Level& currentLevel) const {} - void Setup(Level& currentLevel) {} - void Apply(MultiVector& X, const MultiVector& B, bool InitialGuessIsZero = false) const {} - RCP Copy() const { return Teuchos::null; } - - std::string description() const { return std::string(""); } - void print(Teuchos::FancyOStream& out, const VerbLevel verbLevel = Default) const {} - - //! Get a rough estimate of cost per iteration - size_t getNodeSmootherComplexity() const { - size_t cplx = 0; - return cplx; - }; -}; -#endif - -#endif // HAVE_MUELU_EPETRA - } // namespace MueLu #define MUELU_BELOSSMOOTHER_SHORT diff --git a/packages/muelu/src/Smoothers/MueLu_BelosSmoother_def.hpp b/packages/muelu/src/Smoothers/MueLu_BelosSmoother_def.hpp index c3a2f7a85391..d7c120de97cf 100644 --- a/packages/muelu/src/Smoothers/MueLu_BelosSmoother_def.hpp +++ b/packages/muelu/src/Smoothers/MueLu_BelosSmoother_def.hpp @@ -19,9 +19,7 @@ #include #include #include -#ifdef HAVE_XPETRA_TPETRA #include -#endif #include "MueLu_BelosSmoother_decl.hpp" #include "MueLu_Level.hpp" diff --git a/packages/muelu/src/Smoothers/MueLu_DirectSolver_def.hpp b/packages/muelu/src/Smoothers/MueLu_DirectSolver_def.hpp index b1c4b30c8cbf..9a86b775ac55 100644 --- a/packages/muelu/src/Smoothers/MueLu_DirectSolver_def.hpp +++ b/packages/muelu/src/Smoothers/MueLu_DirectSolver_def.hpp @@ -45,7 +45,6 @@ DirectSolver::DirectSolver(const std: // We want DirectSolver to be able to work with both Epetra and Tpetra objects, therefore we try to construct both // Amesos and Amesos2 solver prototypes. The construction really depends on configuration options. triedEpetra_ = triedTpetra_ = false; -#if defined(HAVE_MUELU_AMESOS2) try { sTpetra_ = rcp(new Amesos2Smoother(type_, paramList)); if (sTpetra_.is_null()) @@ -62,23 +61,6 @@ DirectSolver::DirectSolver(const std: errorTpetra_ = e.what(); } triedTpetra_ = true; -#endif -#if defined(HAVE_MUELU_EPETRA) && defined(HAVE_MUELU_AMESOS) - try { - // GetAmesosSmoother masks the template argument matching, and simply throws if template arguments are incompatible with Epetra - sEpetra_ = GetAmesosSmoother(type_, paramList); - if (sEpetra_.is_null()) - errorEpetra_ = "Unable to construct Amesos direct solver"; - else if (!sEpetra_->constructionSuccessful()) { - errorEpetra_ = sEpetra_->constructionErrorMsg(); - sEpetra_ = Teuchos::null; - } - } catch (Exceptions::RuntimeError& e) { - // AmesosSmoother throws if Scalar != double, LocalOrdinal != int, GlobalOrdinal != int - errorEpetra_ = e.what(); - } - triedEpetra_ = true; -#endif #if defined(HAVE_MUELU_BELOS) try { sBelos_ = rcp(new BelosSmoother(type_, paramList)); diff --git a/packages/muelu/src/Smoothers/MueLu_Ifpack2Smoother_decl.hpp b/packages/muelu/src/Smoothers/MueLu_Ifpack2Smoother_decl.hpp index 0d9eabfaf644..4919171eb6ea 100644 --- a/packages/muelu/src/Smoothers/MueLu_Ifpack2Smoother_decl.hpp +++ b/packages/muelu/src/Smoothers/MueLu_Ifpack2Smoother_decl.hpp @@ -16,15 +16,11 @@ #include #include #include -#ifdef HAVE_XPETRA_TPETRA // needed for clone() #include -#endif #include "MueLu_ConfigDefs.hpp" #include "MueLu_Ifpack2Smoother_fwd.hpp" -#if defined(HAVE_MUELU_IFPACK2) - #include #include @@ -198,57 +194,7 @@ class Ifpack2Smoother : public SmootherPrototype -class Ifpack2Smoother : public SmootherPrototype { - typedef double Scalar; - typedef int LocalOrdinal; - typedef int GlobalOrdinal; - typedef Xpetra::EpetraNode Node; -#undef MUELU_AMESOS2SMOOTHER_SHORT -#include "MueLu_UseShortNames.hpp" - - public: -#ifndef _MSC_VER - // Avoid error C3772: invalid friend template declaration - template - friend class Ifpack2Smoother; -#endif - - Ifpack2Smoother(const std::string& type, const Teuchos::ParameterList& paramList = Teuchos::ParameterList(), const LocalOrdinal& overlap = 0) { - MUELU_TPETRA_ETI_EXCEPTION("Ifpack2Smoother", "Ifpack2Smoother", "int"); - }; - - virtual ~Ifpack2Smoother() {} - - void SetParameterList(const Teuchos::ParameterList& paramList) {} - void DeclareInput(Level& currentLevel) const {} - void Setup(Level& currentLevel) {} - void Apply(MultiVector& X, const MultiVector& B, bool InitialGuessIsZero = false) const {} - RCP Copy() const { return Teuchos::null; } - - std::string description() const { return std::string(""); } - void print(Teuchos::FancyOStream& out, const VerbLevel verbLevel = Default) const {} - - //! Get a rough estimate of cost per iteration - size_t getNodeSmootherComplexity() const { - size_t cplx = 0; - return cplx; - }; - - private: - void SetPrecParameters(const Teuchos::ParameterList& list = Teuchos::ParameterList()) const {} -}; -#endif - -#endif // HAVE_MUELU_EPETRA - } // namespace MueLu #define MUELU_IFPACK2SMOOTHER_SHORT -#endif // HAVE_MUELU_IFPACK2 #endif // MUELU_IFPACK2SMOOTHER_DECL_HPP diff --git a/packages/muelu/src/Smoothers/MueLu_Ifpack2Smoother_def.hpp b/packages/muelu/src/Smoothers/MueLu_Ifpack2Smoother_def.hpp index e8dca02fbfff..28434e2656d5 100644 --- a/packages/muelu/src/Smoothers/MueLu_Ifpack2Smoother_def.hpp +++ b/packages/muelu/src/Smoothers/MueLu_Ifpack2Smoother_def.hpp @@ -12,8 +12,6 @@ #include "MueLu_ConfigDefs.hpp" -#if defined(HAVE_MUELU_IFPACK2) - #include #include @@ -1059,5 +1057,4 @@ size_t Ifpack2Smoother::getNodeSmooth } // namespace MueLu -#endif // HAVE_MUELU_IFPACK2 #endif // MUELU_IFPACK2SMOOTHER_DEF_HPP diff --git a/packages/muelu/src/Smoothers/MueLu_IfpackSmoother.cpp b/packages/muelu/src/Smoothers/MueLu_IfpackSmoother.cpp index cb859d25a7cb..c22015c2ab46 100644 --- a/packages/muelu/src/Smoothers/MueLu_IfpackSmoother.cpp +++ b/packages/muelu/src/Smoothers/MueLu_IfpackSmoother.cpp @@ -9,388 +9,3 @@ #include "MueLu_ConfigDefs.hpp" -#if defined(HAVE_MUELU_EPETRA) && defined(HAVE_MUELU_IFPACK) -#include -#include -#include "Xpetra_MultiVectorFactory.hpp" - -#include "MueLu_IfpackSmoother.hpp" - -#include "MueLu_Level.hpp" -#include "MueLu_Utilities.hpp" -#include "MueLu_Monitor.hpp" -#include "MueLu_Aggregates.hpp" - -namespace MueLu { - -template -IfpackSmoother::IfpackSmoother(std::string const& type, Teuchos::ParameterList const& paramList, LO const& overlap) - : type_(type) - , overlap_(overlap) { - this->declareConstructionOutcome(false, ""); - SetParameterList(paramList); -} - -template -void IfpackSmoother::SetParameterList(const Teuchos::ParameterList& paramList) { - Factory::SetParameterList(paramList); - - if (SmootherPrototype::IsSetup()) { - // It might be invalid to change parameters after the setup, but it depends entirely on Ifpack implementation. - // TODO: I don't know if Ifpack returns an error code or exception or ignore parameters modification in this case... - prec_->SetParameters(const_cast(this->GetParameterList())); - } -} - -template -void IfpackSmoother::SetPrecParameters(const Teuchos::ParameterList& list) const { - ParameterList& paramList = const_cast(this->GetParameterList()); - paramList.setParameters(list); - - RCP precList = this->RemoveFactoriesFromList(this->GetParameterList()); - - prec_->SetParameters(*precList); - - // We would like to have the following line here: - // paramList.setParameters(*precList); - // For instance, if Ifpack sets somem parameters internally, we would like to have - // them listed when we call this->GetParameterList() - // But because of the way Ifpack handles the list, we cannot do that. - // The bad scenario goes like this: - // * SmootherFactory calls Setup - // * Setup calls SetPrecParameters - // * We call prec_->SetParameters(*precList) - // This actually updates the internal parameter list with default prec_ parameters - // This means that we get a parameter ("chebyshev: max eigenvalue", -1) in the list - // * Setup calls prec_->Compute() - // Here we may compute the max eigenvalue, but we get no indication of this. If we - // do compute it, our parameter list becomes outdated - // * SmootherFactory calls Apply - // * Apply constructs a list with a list with an entry "chebyshev: zero starting solution" - // * We call prec_->SetParameters(*precList) - // The last call is the problem. At this point, we have a list with an outdated entry - // "chebyshev: max eigenvalue", but prec_ uses this entry and replaces the computed max - // eigenvalue with the one from the list, resulting in -1.0 eigenvalue. - // - // Ifpack2 does not have this problem, as it does not populate the list with new entries -} - -template -void IfpackSmoother::DeclareInput(Level& currentLevel) const { - this->Input(currentLevel, "A"); - - if (type_ == "LINESMOOTHING_BANDED_RELAXATION" || - type_ == "LINESMOOTHING_BANDED RELAXATION" || - type_ == "LINESMOOTHING_BANDEDRELAXATION" || - type_ == "LINESMOOTHING_BLOCK_RELAXATION" || - type_ == "LINESMOOTHING_BLOCK RELAXATION" || - type_ == "LINESMOOTHING_BLOCKRELAXATION") { - this->Input(currentLevel, "CoarseNumZLayers"); // necessary for fallback criterion - this->Input(currentLevel, "LineDetection_VertLineIds"); // necessary to feed block smoother - } // if (type_ == "LINESMOOTHING_BANDEDRELAXATION") - else if (type_ == "AGGREGATE") { - // Aggregate smoothing needs aggregates - this->Input(currentLevel, "Aggregates"); - } -} - -template -void IfpackSmoother::Setup(Level& currentLevel) { - FactoryMonitor m(*this, "Setup Smoother", currentLevel); - if (SmootherPrototype::IsSetup() == true) - this->GetOStream(Warnings0) << "MueLu::IfpackSmoother::Setup(): Setup() has already been called" << std::endl; - - A_ = Factory::Get >(currentLevel, "A"); - - double lambdaMax = -1.0; - if (type_ == "Chebyshev") { - std::string maxEigString = "chebyshev: max eigenvalue"; - std::string eigRatioString = "chebyshev: ratio eigenvalue"; - - try { - lambdaMax = Teuchos::getValue(this->GetParameter(maxEigString)); - this->GetOStream(Statistics1) << maxEigString << " (cached with smoother parameter list) = " << lambdaMax << std::endl; - - } catch (Teuchos::Exceptions::InvalidParameterName&) { - lambdaMax = A_->GetMaxEigenvalueEstimate(); - - if (lambdaMax != -1.0) { - this->GetOStream(Statistics1) << maxEigString << " (cached with matrix) = " << lambdaMax << std::endl; - this->SetParameter(maxEigString, ParameterEntry(lambdaMax)); - } - } - - // Calculate the eigenvalue ratio - const Scalar defaultEigRatio = 20; - - Scalar ratio = defaultEigRatio; - try { - ratio = Teuchos::getValue(this->GetParameter(eigRatioString)); - - } catch (Teuchos::Exceptions::InvalidParameterName&) { - this->SetParameter(eigRatioString, ParameterEntry(ratio)); - } - - if (currentLevel.GetLevelID()) { - // Update ratio to be - // ratio = max(number of fine DOFs / number of coarse DOFs, defaultValue) - // - // NOTE: We don't need to request previous level matrix as we know for sure it was constructed - RCP fineA = currentLevel.GetPreviousLevel()->Get >("A"); - size_t nRowsFine = fineA->getGlobalNumRows(); - size_t nRowsCoarse = A_->getGlobalNumRows(); - - ratio = std::max(ratio, as(nRowsFine) / nRowsCoarse); - - this->GetOStream(Statistics1) << eigRatioString << " (computed) = " << ratio << std::endl; - this->SetParameter(eigRatioString, ParameterEntry(ratio)); - } - } // if (type_ == "Chebyshev") - - if (type_ == "LINESMOOTHING_BANDED_RELAXATION" || - type_ == "LINESMOOTHING_BANDED RELAXATION" || - type_ == "LINESMOOTHING_BANDEDRELAXATION" || - type_ == "LINESMOOTHING_BLOCK_RELAXATION" || - type_ == "LINESMOOTHING_BLOCK RELAXATION" || - type_ == "LINESMOOTHING_BLOCKRELAXATION") { - ParameterList& myparamList = const_cast(this->GetParameterList()); - - LO CoarseNumZLayers = currentLevel.Get("CoarseNumZLayers", Factory::GetFactory("CoarseNumZLayers").get()); - if (CoarseNumZLayers > 0) { - Teuchos::ArrayRCP TVertLineIdSmoo = currentLevel.Get >("LineDetection_VertLineIds", Factory::GetFactory("LineDetection_VertLineIds").get()); - - // determine number of local parts - LO maxPart = 0; - for (size_t k = 0; k < Teuchos::as(TVertLineIdSmoo.size()); k++) { - if (maxPart < TVertLineIdSmoo[k]) maxPart = TVertLineIdSmoo[k]; - } - - size_t numLocalRows = A_->getLocalNumRows(); - TEUCHOS_TEST_FOR_EXCEPTION(numLocalRows % TVertLineIdSmoo.size() != 0, Exceptions::RuntimeError, "MueLu::Ifpack2Smoother::Setup(): the number of local nodes is incompatible with the TVertLineIdsSmoo."); - - if (numLocalRows == Teuchos::as(TVertLineIdSmoo.size())) { - myparamList.set("partitioner: type", "user"); - myparamList.set("partitioner: map", &(TVertLineIdSmoo[0])); - myparamList.set("partitioner: local parts", maxPart + 1); - } else { - // we assume a constant number of DOFs per node - size_t numDofsPerNode = numLocalRows / TVertLineIdSmoo.size(); - - // Create a new Teuchos::ArrayRCP of size numLocalRows and fill it with the corresponding information - Teuchos::ArrayRCP partitionerMap(numLocalRows, Teuchos::OrdinalTraits::invalid()); - for (size_t blockRow = 0; blockRow < Teuchos::as(TVertLineIdSmoo.size()); ++blockRow) - for (size_t dof = 0; dof < numDofsPerNode; dof++) - partitionerMap[blockRow * numDofsPerNode + dof] = TVertLineIdSmoo[blockRow]; - myparamList.set("partitioner: type", "user"); - myparamList.set("partitioner: map", &(partitionerMap[0])); - myparamList.set("partitioner: local parts", maxPart + 1); - } - - if (type_ == "LINESMOOTHING_BANDED_RELAXATION" || - type_ == "LINESMOOTHING_BANDED RELAXATION" || - type_ == "LINESMOOTHING_BANDEDRELAXATION") - type_ = "block relaxation"; - else - type_ = "block relaxation"; - } else { - // line detection failed -> fallback to point-wise relaxation - this->GetOStream(Runtime0) << "Line detection failed: fall back to point-wise relaxation" << std::endl; - myparamList.remove("partitioner: type", false); - myparamList.remove("partitioner: map", false); - myparamList.remove("partitioner: local parts", false); - type_ = "point relaxation stand-alone"; - } - - } // if (type_ == "LINESMOOTHING_BANDEDRELAXATION") - - if (type_ == "AGGREGATE") { - SetupAggregate(currentLevel); - } - - else { - // If we're using a linear partitioner and haven't set the # local parts, set it to match the operator's block size - ParameterList precList = this->GetParameterList(); - if (precList.isParameter("partitioner: type") && precList.get("partitioner: type") == "linear" && - !precList.isParameter("partitioner: local parts")) { - precList.set("partitioner: local parts", (int)A_->getLocalNumRows() / A_->GetFixedBlockSize()); - } - - RCP epA = Utilities::Op2NonConstEpetraCrs(A_); - - Ifpack factory; - prec_ = rcp(factory.Create(type_, &(*epA), overlap_)); - TEUCHOS_TEST_FOR_EXCEPTION(prec_.is_null(), Exceptions::RuntimeError, "Could not create an Ifpack preconditioner with type = \"" << type_ << "\""); - SetPrecParameters(); - prec_->Compute(); - } - - SmootherPrototype::IsSetup(true); - - if (type_ == "Chebyshev" && lambdaMax == -1.0) { - Teuchos::RCP chebyPrec = rcp_dynamic_cast(prec_); - if (chebyPrec != Teuchos::null) { - lambdaMax = chebyPrec->GetLambdaMax(); - A_->SetMaxEigenvalueEstimate(lambdaMax); - this->GetOStream(Statistics1) << "chebyshev: max eigenvalue (calculated by Ifpack)" - << " = " << lambdaMax << std::endl; - } - TEUCHOS_TEST_FOR_EXCEPTION(lambdaMax == -1.0, Exceptions::RuntimeError, "MueLu::IfpackSmoother::Setup(): no maximum eigenvalue estimate"); - } - - this->GetOStream(Statistics1) << description() << std::endl; -} - -template -void IfpackSmoother::SetupAggregate(Level& currentLevel) { - ParameterList& paramList = const_cast(this->GetParameterList()); - - if (this->IsSetup() == true) { - this->GetOStream(Warnings0) << "MueLu::Ifpack2moother::SetupAggregate(): Setup() has already been called" << std::endl; - this->GetOStream(Warnings0) << "MueLu::IfpackSmoother::SetupAggregate(): reuse of this type is not available, reverting to full construction" << std::endl; - } - - this->GetOStream(Statistics0) << "IfpackSmoother: Using Aggregate Smoothing" << std::endl; - - RCP aggregates = Factory::Get >(currentLevel, "Aggregates"); - RCP vertex2AggId = aggregates->GetVertex2AggId(); - ArrayRCP aggregate_ids = rcp_const_cast(vertex2AggId)->getDataNonConst(0); - ArrayRCP dof_ids; - - // We need to unamalgamate, if the FixedBlockSize > 1 - if (A_->GetFixedBlockSize() > 1) { - // NOTE: We're basically going to have to leave a deallocated pointer hanging out - // in the paramList object (and inside the partitioner). This never gets - // use again after Compute() gets called, so this is OK, but I'm still leaving - // this note here in case it bites us again later. - LO blocksize = (LO)A_->GetFixedBlockSize(); - dof_ids.resize(aggregate_ids.size() * blocksize); - for (LO i = 0; i < (LO)aggregate_ids.size(); i++) { - for (LO j = 0; j < (LO)blocksize; j++) - dof_ids[i * blocksize + j] = aggregate_ids[i]; - } - } else { - dof_ids = aggregate_ids; - } - - paramList.set("partitioner: map", dof_ids.getRawPtr()); - paramList.set("partitioner: type", "user"); - paramList.set("partitioner: overlap", 0); - paramList.set("partitioner: local parts", (int)aggregates->GetNumAggregates()); - // In case of Dirichlet nodes - paramList.set("partitioner: keep singletons", true); - - RCP A = Utilities::Op2NonConstEpetraCrs(A_); - type_ = "block relaxation stand-alone"; - - Ifpack factory; - prec_ = rcp(factory.Create(type_, &(*A), overlap_)); - TEUCHOS_TEST_FOR_EXCEPTION(prec_.is_null(), Exceptions::RuntimeError, "Could not create an Ifpack preconditioner with type = \"" << type_ << "\""); - SetPrecParameters(); - - int rv = prec_->Compute(); - TEUCHOS_TEST_FOR_EXCEPTION(rv, Exceptions::RuntimeError, "Ifpack preconditioner with type = \"" << type_ << "\" Compute() call failed."); -} - -template -void IfpackSmoother::Apply(MultiVector& X, const MultiVector& B, bool InitialGuessIsZero) const { - TEUCHOS_TEST_FOR_EXCEPTION(SmootherPrototype::IsSetup() == false, Exceptions::RuntimeError, "MueLu::IfpackSmoother::Apply(): Setup() has not been called"); - - // Forward the InitialGuessIsZero option to Ifpack - Teuchos::ParameterList paramList; - bool supportInitialGuess = false; - if (type_ == "Chebyshev") { - paramList.set("chebyshev: zero starting solution", InitialGuessIsZero); - supportInitialGuess = true; - - } else if (type_ == "point relaxation stand-alone") { - paramList.set("relaxation: zero starting solution", InitialGuessIsZero); - supportInitialGuess = true; - } - - SetPrecParameters(paramList); - - // Apply - if (InitialGuessIsZero || supportInitialGuess) { - Epetra_MultiVector& epX = Utilities::MV2NonConstEpetraMV(X); - const Epetra_MultiVector& epB = Utilities::MV2EpetraMV(B); - - prec_->ApplyInverse(epB, epX); - - } else { - RCP Residual = Utilities::Residual(*A_, X, B); - RCP Correction = MultiVectorFactory::Build(A_->getDomainMap(), X.getNumVectors()); - - Epetra_MultiVector& epX = Utilities::MV2NonConstEpetraMV(*Correction); - const Epetra_MultiVector& epB = Utilities::MV2EpetraMV(*Residual); - - prec_->ApplyInverse(epB, epX); - - X.update(1.0, *Correction, 1.0); - } -} - -template -RCP > IfpackSmoother::Copy() const { - RCP > smoother = rcp(new IfpackSmoother(*this)); - smoother->SetParameterList(this->GetParameterList()); - return Teuchos::rcp_dynamic_cast >(smoother); -} - -template -std::string IfpackSmoother::description() const { - std::ostringstream out; - // The check "GetVerbLevel() == Test" is to avoid - // failures in the EasyInterface test. - if (prec_ == Teuchos::null || this->GetVerbLevel() == InterfaceTest) { - out << SmootherPrototype::description(); - out << "{type = " << type_ << "}"; - } else { - out << prec_->Label(); - } - return out.str(); -} - -template -void IfpackSmoother::print(Teuchos::FancyOStream& out, const VerbLevel verbLevel) const { - MUELU_DESCRIBE; - - if (verbLevel & Parameters0) - out0 << "Prec. type: " << type_ << std::endl; - - if (verbLevel & Parameters1) { - out0 << "Parameter list: " << std::endl; - Teuchos::OSTab tab2(out); - out << this->GetParameterList(); - out0 << "Overlap: " << overlap_ << std::endl; - } - - if (verbLevel & External) - if (prec_ != Teuchos::null) { - Teuchos::OSTab tab2(out); - out << *prec_ << std::endl; - } - - if (verbLevel & Debug) { - out0 << "IsSetup: " << Teuchos::toString(SmootherPrototype::IsSetup()) << std::endl - << "-" << std::endl - << "RCP: " << A_ << std::endl - << "RCP: " << prec_ << std::endl; - } -} - -template -size_t IfpackSmoother::getNodeSmootherComplexity() const { - // FIXME: This is a placeholder - return Teuchos::OrdinalTraits::invalid(); -} - -} // namespace MueLu - -// The IfpackSmoother is only templated on the Node, since it is an Epetra only object -// Therefore we do not need the full ETI instantiations as we do for the other MueLu -// objects which are instantiated on all template parameters. -#if defined(HAVE_MUELU_EPETRA) -template class MueLu::IfpackSmoother; -#endif - -#endif diff --git a/packages/muelu/src/Smoothers/MueLu_IfpackSmoother.hpp b/packages/muelu/src/Smoothers/MueLu_IfpackSmoother.hpp index 52c988d7c960..c69bb6867e32 100644 --- a/packages/muelu/src/Smoothers/MueLu_IfpackSmoother.hpp +++ b/packages/muelu/src/Smoothers/MueLu_IfpackSmoother.hpp @@ -11,182 +11,4 @@ #define MUELU_IFPACKSMOOTHER_HPP #include "MueLu_ConfigDefs.hpp" -#if defined(HAVE_MUELU_EPETRA) && defined(HAVE_MUELU_IFPACK) - -#include -#include -#include - -class Ifpack_Preconditioner; - -#include "MueLu_SmootherPrototype.hpp" -#include "MueLu_Exceptions.hpp" - -#include "MueLu_Level_fwd.hpp" -#include "MueLu_FactoryBase_fwd.hpp" -#include "MueLu_Utilities_fwd.hpp" -#include "MueLu_Aggregates_fwd.hpp" - -namespace MueLu { - -/*! - @class IfpackSmoother - @ingroup MueLuSmootherClasses - @brief Class that encapsulates Ifpack smoothers. - - This class creates an Ifpack preconditioner factory. The factory creates a smoother based on the - type and ParameterList passed into the constructor. See the constructor for more information. -*/ -template ::node_type> -class IfpackSmoother : public MueLu::SmootherPrototype { - typedef double Scalar; - typedef int LocalOrdinal; - typedef int GlobalOrdinal; -#undef MUELU_IFPACKSMOOTHER_SHORT -#include "MueLu_UseShortNames.hpp" - - public: - //! @name Constructors / destructors - //@{ - - /*! @brief Constructor - - The options passed into IfpackSmoother are those given in the Ifpack user's manual. - - @param type smoother type - @param list options for the particular smoother (e.g., fill factor or damping parameter) - - Here is how to select some of the most common smoothers. - - - Gauss-Seidel - - type = point relaxation stand-alone - - parameter list options - - relaxation: type = Gauss-Seidel - - relaxation: damping factor - - symmetric Gauss-Seidel - - type = point relaxation stand-alone - - parameter list options - - relaxation: type = symmetric Gauss-Seidel - - relaxation: damping factor - - Chebyshev - - type = Chebyshev - - parameter list options - - chebyshev: ratio eigenvalue - - chebyshev: min eigenvalue - - chebyshev: max eigenvalue - - chebyshev: degree - - chebyshev: zero starting solution (defaults to true) - - ILU - - type = ILU - - parameter list options - - fact: level-of-fill - - See also Ifpack_PointRelaxation, Ifpack_Chebyshev, Ifpack_ILU. - */ - IfpackSmoother(std::string const& type, Teuchos::ParameterList const& paramList = Teuchos::ParameterList(), LO const& overlap = 0); // TODO: empty paramList valid for Ifpack?? - - //! Destructor - virtual ~IfpackSmoother() {} - - //@} - - void SetParameterList(const Teuchos::ParameterList& paramList); - - //! Input - //@{ - - void DeclareInput(Level& currentLevel) const; - - //@} - - //! @name Computational methods. - //@{ - - /*! @brief Set up the smoother. - - This creates the underlying Ifpack smoother object, copies any parameter list options - supplied to the constructor to the Ifpack object, and computes the preconditioner. - */ - void Setup(Level& currentLevel); - - /*! @brief Apply the preconditioner. - - Solves the linear system AX=B using the constructed smoother. - - @param X initial guess - @param B right-hand side - @param InitialGuessIsZero (optional) If false, some work can be avoided. Whether this actually saves any work depends on the underlying Ifpack implementation. - */ - void Apply(MultiVector& X, const MultiVector& B, bool InitialGuessIsZero = false) const; - - //@} - - //! @name Utilities - //@{ - - RCP Copy() const; - - //@} - - //! @name Overridden from Teuchos::Describable - //@{ - - //! Return a simple one-line description of this object. - std::string description() const; - - //! Print the object with some verbosity level to an FancyOStream object. - // using MueLu::Describable::describe; // overloading, not hiding - // void describe(Teuchos::FancyOStream &out, const VerbLevel verbLevel = Default) const - void print(Teuchos::FancyOStream& out, const VerbLevel verbLevel = Default) const; - - //! Get a rough estimate of cost per iteration - size_t getNodeSmootherComplexity() const; - - //@} - - private: - void SetPrecParameters(const Teuchos::ParameterList& list = Teuchos::ParameterList()) const; - - void SetupAggregate(Level& currentLevel); - - private: - //! ifpack-specific key phrase that denote smoother type - std::string type_; - - //! overlap when using the smoother in additive Schwarz mode - LO overlap_; - - //! Matrix. Not used directly, but held inside of prec_. So we have to keep an RCP pointer to it! - RCP A_; - - //! pointer to Ifpack solver object - // Note: prec_ must be destroyed before A_, so declaration of prec_ appears after declaration of A_ - RCP prec_; - -}; // class IfpackSmoother - -//! Non-member templated function GetIfpackSmoother() returns a new IfpackSmoother object when == . Otherwise, an exception is thrown. -//! This function simplifies the usage of IfpackSmoother objects inside of templates as templates do not have to be specialized for (see DirectSolver for an example). -template -RCP > -GetIfpackSmoother(const std::string& /* type */ = "", - const Teuchos::ParameterList& /* paramList */ = Teuchos::ParameterList(), - const LocalOrdinal& /* overlap */ = 0) { - TEUCHOS_TEST_FOR_EXCEPTION(true, Exceptions::RuntimeError, "IfpackSmoother cannot be used with Scalar != double, LocalOrdinal != int, GlobalOrdinal != int"); - TEUCHOS_UNREACHABLE_RETURN(Teuchos::null); -} - -// Specialization for serial node (used for Epetra) -#if defined(HAVE_MUELU_EPETRA) -template <> -inline RCP > -GetIfpackSmoother(const std::string& type, const Teuchos::ParameterList& paramList, const int& overlap) { - return rcp(new MueLu::IfpackSmoother(type, paramList, overlap)); -} -#endif - -} // namespace MueLu - -#define MUELU_IFPACKSMOOTHER_SHORT -#endif // HAVE_MUELU_EPETRA && HAVE_MUELU_IFPACK #endif // MUELU_IFPACKSMOOTHER_HPP diff --git a/packages/muelu/src/Smoothers/MueLu_PermutingSmoother_def.hpp b/packages/muelu/src/Smoothers/MueLu_PermutingSmoother_def.hpp index c072d61cf7c7..0b6c380cbe87 100644 --- a/packages/muelu/src/Smoothers/MueLu_PermutingSmoother_def.hpp +++ b/packages/muelu/src/Smoothers/MueLu_PermutingSmoother_def.hpp @@ -53,11 +53,7 @@ PermutingSmoother::PermutingSmoother( // create internal smoother if (type_ == "ILU") { -#if defined(HAVE_MUELU_EPETRA) && defined(HAVE_MUELU_IFPACK) - s_ = MueLu::GetIfpackSmoother(type_, this->GetParameterList(), overlap_); -#else TEUCHOS_TEST_FOR_EXCEPTION(true, Exceptions::RuntimeError, "MueLu::PermutingSmoother requires Epetra and Ifpack."); -#endif } else { s_ = Teuchos::rcp(new TrilinosSmoother(type_, this->GetParameterList(), overlap_)); } diff --git a/packages/muelu/src/Smoothers/MueLu_ProjectorSmoother_def.hpp b/packages/muelu/src/Smoothers/MueLu_ProjectorSmoother_def.hpp index c93f43eb6a39..f9251ccf0807 100644 --- a/packages/muelu/src/Smoothers/MueLu_ProjectorSmoother_def.hpp +++ b/packages/muelu/src/Smoothers/MueLu_ProjectorSmoother_def.hpp @@ -67,7 +67,6 @@ void ProjectorSmoother::Setup(Level & } this->GetOStream(Runtime0) << "Coarse level orth indices: " << selectedIndices << std::endl; -#if defined(HAVE_XPETRA_TPETRA) #ifdef HAVE_MUELU_TPETRA_INST_INT_INT // Orthonormalize RCP > B_ = Utilities::MV2TpetraMV(B); @@ -93,7 +92,6 @@ void ProjectorSmoother::Setup(Level & Borth_ = rcp(static_cast(new TpetraMultiVector(Borth))); #else TEUCHOS_TEST_FOR_EXCEPTION(true, Exceptions::RuntimeError, "Tpetra with GO=int not available. The code in ProjectorSmoother should be rewritten!"); -#endif #endif SmootherPrototype::IsSetup(true); diff --git a/packages/muelu/src/Smoothers/MueLu_SmootherCloner.hpp b/packages/muelu/src/Smoothers/MueLu_SmootherCloner.hpp index b4fe069dc67e..8ee374b6ddc8 100644 --- a/packages/muelu/src/Smoothers/MueLu_SmootherCloner.hpp +++ b/packages/muelu/src/Smoothers/MueLu_SmootherCloner.hpp @@ -16,9 +16,7 @@ #include "MueLu_BaseClass.hpp" #include "MueLu_SmootherBase.hpp" -#if defined(HAVE_MUELU_IFPACK2) #include "MueLu_Ifpack2Smoother.hpp" -#endif #include "MueLu_TrilinosSmoother.hpp" namespace MueLu { diff --git a/packages/muelu/src/Smoothers/MueLu_TrilinosSmoother_decl.hpp b/packages/muelu/src/Smoothers/MueLu_TrilinosSmoother_decl.hpp index 884e369c9e24..80df5b1b0aad 100644 --- a/packages/muelu/src/Smoothers/MueLu_TrilinosSmoother_decl.hpp +++ b/packages/muelu/src/Smoothers/MueLu_TrilinosSmoother_decl.hpp @@ -19,10 +19,8 @@ #include "MueLu_FactoryBase_fwd.hpp" #include "MueLu_IfpackSmoother_fwd.hpp" -#if defined(HAVE_MUELU_IFPACK2) #include "MueLu_Ifpack2Smoother_fwd.hpp" #include "MueLu_Ifpack2Smoother.hpp" -#endif #if defined(HAVE_MUELU_BELOS) #include "MueLu_BelosSmoother_fwd.hpp" diff --git a/packages/muelu/src/Smoothers/MueLu_TrilinosSmoother_def.hpp b/packages/muelu/src/Smoothers/MueLu_TrilinosSmoother_def.hpp index 67d7672bc71b..46ac91643891 100644 --- a/packages/muelu/src/Smoothers/MueLu_TrilinosSmoother_def.hpp +++ b/packages/muelu/src/Smoothers/MueLu_TrilinosSmoother_def.hpp @@ -48,7 +48,6 @@ TrilinosSmoother::TrilinosSmoother(co // We want TrilinosSmoother to be able to work with both Epetra and Tpetra objects, therefore we try to construct both // Ifpack and Ifpack2 smoother prototypes. The construction really depends on configuration options. triedEpetra_ = triedTpetra_ = triedBelos_ = triedStratimikos_ = false; -#if defined(HAVE_MUELU_IFPACK2) try { sTpetra_ = rcp(new Ifpack2Smoother(type_, paramList, overlap_)); if (sTpetra_.is_null()) @@ -65,23 +64,6 @@ TrilinosSmoother::TrilinosSmoother(co errorTpetra_ = e.what(); } triedTpetra_ = true; -#endif -#if defined(HAVE_MUELU_EPETRA) && defined(HAVE_MUELU_IFPACK) - try { - // GetIfpackSmoother masks the template argument matching, and simply throws if template arguments are incompatible with Epetra - sEpetra_ = GetIfpackSmoother(TrilinosSmoother::Ifpack2ToIfpack1Type(type_), TrilinosSmoother::Ifpack2ToIfpack1Param(paramList), overlap_); - if (sEpetra_.is_null()) - errorEpetra_ = "Unable to construct Ifpack smoother"; - else if (!sEpetra_->constructionSuccessful()) { - errorEpetra_ = sEpetra_->constructionErrorMsg(); - sEpetra_ = Teuchos::null; - } - } catch (Exceptions::RuntimeError& e) { - // IfpackSmoother throws if Scalar != double, LocalOrdinal != int, GlobalOrdinal != int - errorEpetra_ = e.what(); - } - triedEpetra_ = true; -#endif #if defined(HAVE_MUELU_BELOS) try { sBelos_ = rcp(new BelosSmoother(type_, paramList)); diff --git a/packages/muelu/src/Utils/ForwardDeclaration/MueLu_Amesos2Smoother_fwd.hpp b/packages/muelu/src/Utils/ForwardDeclaration/MueLu_Amesos2Smoother_fwd.hpp index 3411a09775b3..0e5ebb011733 100644 --- a/packages/muelu/src/Utils/ForwardDeclaration/MueLu_Amesos2Smoother_fwd.hpp +++ b/packages/muelu/src/Utils/ForwardDeclaration/MueLu_Amesos2Smoother_fwd.hpp @@ -11,7 +11,6 @@ #define MUELU_AMESOS2SMOOTHER_FWD_HPP #include "MueLu_ConfigDefs.hpp" -#if defined(HAVE_MUELU_AMESOS2) namespace MueLu { template @@ -22,6 +21,4 @@ class Amesos2Smoother; #define MUELU_AMESOS2SMOOTHER_SHORT #endif -#endif - #endif // MUELU_AMESOS2SMOOTHER_FWD_HPP diff --git a/packages/muelu/src/Utils/ForwardDeclaration/MueLu_Ifpack2Smoother_fwd.hpp b/packages/muelu/src/Utils/ForwardDeclaration/MueLu_Ifpack2Smoother_fwd.hpp index 20c45fcef0d8..98c481071fcb 100644 --- a/packages/muelu/src/Utils/ForwardDeclaration/MueLu_Ifpack2Smoother_fwd.hpp +++ b/packages/muelu/src/Utils/ForwardDeclaration/MueLu_Ifpack2Smoother_fwd.hpp @@ -11,7 +11,6 @@ #define MUELU_IFPACK2SMOOTHER_FWD_HPP #include "MueLu_ConfigDefs.hpp" -#if defined(HAVE_MUELU_IFPACK2) namespace MueLu { template @@ -22,6 +21,4 @@ class Ifpack2Smoother; #define MUELU_IFPACK2SMOOTHER_SHORT #endif -#endif - #endif // MUELU_IFPACK2SMOOTHER_FWD_HPP diff --git a/packages/muelu/src/Utils/ForwardDeclaration/MueLu_IsorropiaInterface_fwd.hpp b/packages/muelu/src/Utils/ForwardDeclaration/MueLu_IsorropiaInterface_fwd.hpp index d789ee1b242a..315b4a7a847d 100644 --- a/packages/muelu/src/Utils/ForwardDeclaration/MueLu_IsorropiaInterface_fwd.hpp +++ b/packages/muelu/src/Utils/ForwardDeclaration/MueLu_IsorropiaInterface_fwd.hpp @@ -11,17 +11,5 @@ #define MUELU_ISORROPIAINTERFACE_FWD_HPP #include "MueLu_ConfigDefs.hpp" -#if defined(HAVE_MUELU_ISORROPIA) && defined(HAVE_MPI) - -namespace MueLu { -template -class IsorropiaInterface; -} - -#ifndef MUELU_ISORROPIAINTERFACE_SHORT -#define MUELU_ISORROPIAINTERFACE_SHORT -#endif - -#endif #endif // MUELU_ISORROPIAINTERFACE_FWD_HPP diff --git a/packages/muelu/src/Utils/MueLu_ETI_3arg.hpp b/packages/muelu/src/Utils/MueLu_ETI_3arg.hpp index b265a998503d..b15793ff65e0 100644 --- a/packages/muelu/src/Utils/MueLu_ETI_3arg.hpp +++ b/packages/muelu/src/Utils/MueLu_ETI_3arg.hpp @@ -17,30 +17,10 @@ #include #include TPETRA_ETI_MANGLING_TYPEDEFS() -#if defined(HAVE_MUELU_EPETRA) -#include -#endif - -#if (defined(HAVE_MUELU_EPETRA) && defined(EPETRA_HAVE_OMP) && (!defined(HAVE_TPETRA_INST_OPENMP) || !defined(HAVE_TPETRA_INST_INT_INT))) -// Epetra is enabled with OpenMP node, but Tpetra is a) not enabled, or b) is not instantiated on OpenMP, or c) is not instantiated on OpenMP with -typedef Tpetra::KokkosCompat::KokkosOpenMPWrapperNode EpetraNode; -#elif (defined(HAVE_MUELU_EPETRA) && !defined(EPETRA_HAVE_OMP) && (!defined(HAVE_TPETRA_INST_SERIAL) || !defined(HAVE_TPETRA_INST_INT_INT))) -// Epetra is enabled with Serial node, but Tpetra is a) not enabled, or b) is not instantiated on Serial, or c) is not instantiated on Serial with -typedef Tpetra::KokkosCompat::KokkosSerialWrapperNode EpetraNode; -#endif // Epetra = on, Tpetra = on -#if defined(HAVE_MUELU_EPETRA) -TPETRA_INSTANTIATE_LGN(MUELU_ETI_GROUP) -#if ((defined(EPETRA_HAVE_OMP) && (!defined(HAVE_TPETRA_INST_OPENMP) || !defined(HAVE_TPETRA_INST_INT_INT))) || \ - (!defined(EPETRA_HAVE_OMP) && (!defined(HAVE_TPETRA_INST_SERIAL) || !defined(HAVE_TPETRA_INST_INT_INT)))) -MUELU_ETI_GROUP(int, int, EpetraNode) -#endif -#endif // Epetra = off, Tpetra = on -#if !defined(HAVE_MUELU_EPETRA) TPETRA_INSTANTIATE_LGN(MUELU_ETI_GROUP) -#endif #endif // ifndef MUELU_ETI_3ARGUMENT_HPP diff --git a/packages/muelu/src/Utils/MueLu_ETI_4arg.hpp b/packages/muelu/src/Utils/MueLu_ETI_4arg.hpp index 719bc5382f3d..4fe82199f8a3 100644 --- a/packages/muelu/src/Utils/MueLu_ETI_4arg.hpp +++ b/packages/muelu/src/Utils/MueLu_ETI_4arg.hpp @@ -17,30 +17,10 @@ #include #include TPETRA_ETI_MANGLING_TYPEDEFS() -#if defined(HAVE_MUELU_EPETRA) -#include -#endif - -#if (defined(HAVE_MUELU_EPETRA) && defined(EPETRA_HAVE_OMP) && (!defined(HAVE_TPETRA_INST_OPENMP) || !defined(HAVE_TPETRA_INST_INT_INT))) -// Epetra is enabled with OpenMP node, but Tpetra is a) not enabled, or b) is not instantiated on OpenMP, or c) is not instantiated on OpenMP with -typedef Tpetra::KokkosCompat::KokkosOpenMPWrapperNode EpetraNode; -#elif (defined(HAVE_MUELU_EPETRA) && !defined(EPETRA_HAVE_OMP) && (!defined(HAVE_TPETRA_INST_SERIAL) || !defined(HAVE_TPETRA_INST_INT_INT))) -// Epetra is enabled with Serial node, but Tpetra is a) not enabled, or b) is not instantiated on Serial, or c) is not instantiated on Serial with -typedef Tpetra::KokkosCompat::KokkosSerialWrapperNode EpetraNode; -#endif // Epetra = on, Tpetra = on -#if defined(HAVE_MUELU_EPETRA) -TPETRA_INSTANTIATE_SLGN_NO_ORDINAL_SCALAR(MUELU_ETI_GROUP) -#if ((defined(EPETRA_HAVE_OMP) && (!defined(HAVE_TPETRA_INST_OPENMP) || !defined(HAVE_TPETRA_INST_INT_INT))) || \ - (!defined(EPETRA_HAVE_OMP) && (!defined(HAVE_TPETRA_INST_SERIAL) || !defined(HAVE_TPETRA_INST_INT_INT)))) -MUELU_ETI_GROUP(double, int, int, EpetraNode) -#endif -#endif // Epetra = off, Tpetra = on -#if !defined(HAVE_MUELU_EPETRA) TPETRA_INSTANTIATE_SLGN_NO_ORDINAL_SCALAR(MUELU_ETI_GROUP) -#endif #endif // ifndef MUELU_ETI_4ARGUMENT_HPP diff --git a/packages/muelu/src/Utils/MueLu_ETI_4arg_Xpetra.hpp b/packages/muelu/src/Utils/MueLu_ETI_4arg_Xpetra.hpp index d5f18c48dcad..af4f73da953a 100644 --- a/packages/muelu/src/Utils/MueLu_ETI_4arg_Xpetra.hpp +++ b/packages/muelu/src/Utils/MueLu_ETI_4arg_Xpetra.hpp @@ -17,30 +17,10 @@ #include #include TPETRA_ETI_MANGLING_TYPEDEFS() -#if defined(HAVE_MUELU_EPETRA) -#include -#endif - -#if (defined(HAVE_MUELU_EPETRA) && defined(EPETRA_HAVE_OMP) && (!defined(HAVE_TPETRA_INST_OPENMP) || !defined(HAVE_TPETRA_INST_INT_INT))) -// Epetra is enabled with OpenMP node, but Tpetra is a) not enabled, or b) is not instantiated on OpenMP, or c) is not instantiated on OpenMP with -typedef Tpetra::KokkosCompat::KokkosOpenMPWrapperNode EpetraNode; -#elif (defined(HAVE_MUELU_EPETRA) && !defined(EPETRA_HAVE_OMP) && (!defined(HAVE_TPETRA_INST_SERIAL) || !defined(HAVE_TPETRA_INST_INT_INT))) -// Epetra is enabled with Serial node, but Tpetra is a) not enabled, or b) is not instantiated on Serial, or c) is not instantiated on Serial with -typedef Tpetra::KokkosCompat::KokkosSerialWrapperNode EpetraNode; -#endif // Epetra = on, Tpetra = on -#if defined(HAVE_MUELU_EPETRA) -TPETRA_INSTANTIATE_SLGN_NO_ORDINAL_SCALAR(MUELU_ETI_GROUP_TPETRA) -#if ((defined(EPETRA_HAVE_OMP) && (!defined(HAVE_TPETRA_INST_OPENMP) || !defined(HAVE_TPETRA_INST_INT_INT))) || \ - (!defined(EPETRA_HAVE_OMP) && (!defined(HAVE_TPETRA_INST_SERIAL) || !defined(HAVE_TPETRA_INST_INT_INT)))) -MUELU_ETI_GROUP_EPETRA(double, int, int, EpetraNode) -#endif -#endif // Epetra = off, Tpetra = on -#if !defined(HAVE_MUELU_EPETRA) TPETRA_INSTANTIATE_SLGN_NO_ORDINAL_SCALAR(MUELU_ETI_GROUP_TPETRA) -#endif #endif // ifndef MUELU_ETI_4ARGUMENT_HPP diff --git a/packages/muelu/src/Utils/MueLu_Utilities.cpp b/packages/muelu/src/Utils/MueLu_Utilities.cpp index 3fdf13dd4560..50a75db182de 100644 --- a/packages/muelu/src/Utils/MueLu_Utilities.cpp +++ b/packages/muelu/src/Utils/MueLu_Utilities.cpp @@ -12,10 +12,6 @@ #include #include -#ifdef HAVE_MUELU_EPETRAEXT -#include "EpetraExt_Transpose_RowMatrix.h" -#endif - #ifdef HAVE_MPI #include #ifdef _WIN32 diff --git a/packages/muelu/src/Utils/MueLu_Utilities_decl.hpp b/packages/muelu/src/Utils/MueLu_Utilities_decl.hpp index 7f738cef23dc..041627eecf94 100644 --- a/packages/muelu/src/Utils/MueLu_Utilities_decl.hpp +++ b/packages/muelu/src/Utils/MueLu_Utilities_decl.hpp @@ -32,25 +32,8 @@ #include -#ifdef HAVE_MUELU_EPETRA -#include - -// needed because of inlined function -// TODO: remove inline function? -#include -#include - -#endif - #include "MueLu_Exceptions.hpp" -#ifdef HAVE_MUELU_EPETRAEXT -class Epetra_CrsMatrix; -class Epetra_MultiVector; -class Epetra_Vector; -#include "EpetraExt_Transpose_RowMatrix.h" -#endif - #include #include #include @@ -67,21 +50,6 @@ class Epetra_Vector; namespace MueLu { -#ifdef HAVE_MUELU_EPETRA -// defined after Utilities class -template -RCP> -Convert_Epetra_CrsMatrix_ToXpetra_CrsMatrixWrap(RCP& epAB); - -template -RCP> -EpetraCrs_To_XpetraMatrix(const Teuchos::RCP& A); - -template -RCP> -EpetraMultiVector_To_XpetraMultiVector(const Teuchos::RCP& V); -#endif - template RCP> TpetraCrs_To_XpetraMatrix(const Teuchos::RCP>& Atpetra); @@ -124,25 +92,6 @@ class Utilities : public UtilitiesBase::magnitudeType Magnitude; -#ifdef HAVE_MUELU_EPETRA - //! Helper utility to pull out the underlying Epetra objects from an Xpetra object - // @{ - static RCP MV2EpetraMV(RCP> const vec); - static RCP MV2NonConstEpetraMV(RCP> vec); - - static const Epetra_MultiVector& MV2EpetraMV(const Xpetra::MultiVector& vec); - static Epetra_MultiVector& MV2NonConstEpetraMV(Xpetra::MultiVector& vec); - - static RCP Op2EpetraCrs(RCP> Op); - static RCP Op2NonConstEpetraCrs(RCP> Op); - - static const Epetra_CrsMatrix& Op2EpetraCrs(const Xpetra::Matrix& Op); - static Epetra_CrsMatrix& Op2NonConstEpetraCrs(Xpetra::Matrix& Op); - - static const Epetra_Map& Map2EpetraMap(const Xpetra::Map& map); - // @} -#endif - //! Helper utility to pull out the underlying Tpetra objects from an Xpetra object static RCP> MV2TpetraMV(RCP> const vec); static RCP> MV2NonConstTpetraMV(RCP> vec); @@ -186,684 +135,6 @@ class Utilities : public UtilitiesBase -class Utilities : public UtilitiesBase { - public: - typedef double Scalar; - typedef int LocalOrdinal; - typedef int GlobalOrdinal; - typedef Xpetra::EpetraNode Node; - typedef Teuchos::ScalarTraits::magnitudeType Magnitude; -#undef MUELU_UTILITIES_SHORT -#include "MueLu_UseShortNames.hpp" - - private: - using EpetraMap = Xpetra::EpetraMapT; - using EpetraMultiVector = Xpetra::EpetraMultiVectorT; - // using EpetraCrsMatrix = Xpetra::EpetraCrsMatrixT; - public: - //! Helper utility to pull out the underlying Epetra objects from an Xpetra object - // @{ - static RCP MV2EpetraMV(RCP const vec) { - RCP tmpVec = rcp_dynamic_cast(vec); - if (tmpVec == Teuchos::null) - throw Exceptions::BadCast("Cast from Xpetra::MultiVector to Xpetra::EpetraMultiVector failed"); - return tmpVec->getEpetra_MultiVector(); - } - static RCP MV2NonConstEpetraMV(RCP vec) { - RCP tmpVec = rcp_dynamic_cast(vec); - if (tmpVec == Teuchos::null) - throw Exceptions::BadCast("Cast from Xpetra::MultiVector to Xpetra::EpetraMultiVector failed"); - return tmpVec->getEpetra_MultiVector(); - } - - static const Epetra_MultiVector& MV2EpetraMV(const MultiVector& vec) { - const EpetraMultiVector& tmpVec = dynamic_cast(vec); - return *(tmpVec.getEpetra_MultiVector()); - } - static Epetra_MultiVector& MV2NonConstEpetraMV(MultiVector& vec) { - const EpetraMultiVector& tmpVec = dynamic_cast(vec); - return *(tmpVec.getEpetra_MultiVector()); - } - - static RCP Op2EpetraCrs(RCP Op) { - RCP crsOp = rcp_dynamic_cast(Op); - if (crsOp == Teuchos::null) - throw Exceptions::BadCast("Cast from Xpetra::Matrix to Xpetra::CrsMatrixWrap failed"); - const RCP& tmp_ECrsMtx = rcp_dynamic_cast(crsOp->getCrsMatrix()); - if (tmp_ECrsMtx == Teuchos::null) - throw Exceptions::BadCast("Cast from Xpetra::CrsMatrix to Xpetra::EpetraCrsMatrix failed"); - return tmp_ECrsMtx->getEpetra_CrsMatrix(); - } - static RCP Op2NonConstEpetraCrs(RCP Op) { - RCP crsOp = rcp_dynamic_cast(Op); - if (crsOp == Teuchos::null) - throw Exceptions::BadCast("Cast from Xpetra::Matrix to Xpetra::CrsMatrixWrap failed"); - const RCP& tmp_ECrsMtx = rcp_dynamic_cast(crsOp->getCrsMatrix()); - if (tmp_ECrsMtx == Teuchos::null) - throw Exceptions::BadCast("Cast from Xpetra::CrsMatrix to Xpetra::EpetraCrsMatrix failed"); - return tmp_ECrsMtx->getEpetra_CrsMatrixNonConst(); - } - - static const Epetra_CrsMatrix& Op2EpetraCrs(const Matrix& Op) { - try { - const CrsMatrixWrap& crsOp = dynamic_cast(Op); - try { - const EpetraCrsMatrix& tmp_ECrsMtx = dynamic_cast(*crsOp.getCrsMatrix()); - return *tmp_ECrsMtx.getEpetra_CrsMatrix(); - } catch (std::bad_cast&) { - throw Exceptions::BadCast("Cast from Xpetra::CrsMatrix to Xpetra::EpetraCrsMatrix failed"); - } - } catch (std::bad_cast&) { - throw Exceptions::BadCast("Cast from Xpetra::Matrix to Xpetra::CrsMatrixWrap failed"); - } - } - static Epetra_CrsMatrix& Op2NonConstEpetraCrs(Matrix& Op) { - try { - CrsMatrixWrap& crsOp = dynamic_cast(Op); - try { - EpetraCrsMatrix& tmp_ECrsMtx = dynamic_cast(*crsOp.getCrsMatrix()); - return *tmp_ECrsMtx.getEpetra_CrsMatrixNonConst(); - } catch (std::bad_cast&) { - throw Exceptions::BadCast("Cast from Xpetra::CrsMatrix to Xpetra::EpetraCrsMatrix failed"); - } - } catch (std::bad_cast&) { - throw Exceptions::BadCast("Cast from Xpetra::Matrix to Xpetra::CrsMatrixWrap failed"); - } - } - - static const Epetra_Map& Map2EpetraMap(const Map& map) { - RCP xeMap = rcp_dynamic_cast(rcpFromRef(map)); - if (xeMap == Teuchos::null) - throw Exceptions::BadCast("Utilities::Map2EpetraMap : Cast from Xpetra::Map to Xpetra::EpetraMap failed"); - return xeMap->getEpetra_Map(); - } - // @} - - //! Helper utility to pull out the underlying Tpetra objects from an Xpetra object - static RCP> MV2TpetraMV(RCP const vec) { -#if ((defined(EPETRA_HAVE_OMP) && (!defined(HAVE_TPETRA_INST_OPENMP) || !defined(HAVE_TPETRA_INST_INT_INT))) || \ - (!defined(EPETRA_HAVE_OMP) && (!defined(HAVE_TPETRA_INST_SERIAL) || !defined(HAVE_TPETRA_INST_INT_INT)))) - throw Exceptions::RuntimeError("MV2TpetraMV: Tpetra has not been compiled with support for LO=GO=int."); -#else - RCP> tmpVec = rcp_dynamic_cast>(vec); - if (tmpVec == Teuchos::null) - throw Exceptions::BadCast("Cast from Xpetra::MultiVector to Xpetra::TpetraMultiVector failed"); - return tmpVec->getTpetra_MultiVector(); -#endif - } - static RCP> MV2NonConstTpetraMV(RCP vec) { -#if ((defined(EPETRA_HAVE_OMP) && (!defined(HAVE_TPETRA_INST_OPENMP) || !defined(HAVE_TPETRA_INST_INT_INT))) || \ - (!defined(EPETRA_HAVE_OMP) && (!defined(HAVE_TPETRA_INST_SERIAL) || !defined(HAVE_TPETRA_INST_INT_INT)))) - throw Exceptions::RuntimeError("MV2NonConstTpetraMV: Tpetra has not been compiled with support for LO=GO=int."); -#else - RCP> tmpVec = rcp_dynamic_cast>(vec); - if (tmpVec == Teuchos::null) - throw Exceptions::BadCast("Cast from Xpetra::MultiVector to Xpetra::TpetraMultiVector failed"); - return tmpVec->getTpetra_MultiVector(); -#endif - } - static RCP> MV2NonConstTpetraMV2(MultiVector& vec) { -#if ((defined(EPETRA_HAVE_OMP) && (!defined(HAVE_TPETRA_INST_OPENMP) || !defined(HAVE_TPETRA_INST_INT_INT))) || \ - (!defined(EPETRA_HAVE_OMP) && (!defined(HAVE_TPETRA_INST_SERIAL) || !defined(HAVE_TPETRA_INST_INT_INT)))) - throw Exceptions::RuntimeError("MV2NonConstTpetraMV2: Tpetra has not been compiled with support for LO=GO=int."); -#else - const Xpetra::TpetraMultiVector& tmpVec = dynamic_cast&>(vec); - return tmpVec.getTpetra_MultiVector(); -#endif - } - - static const Tpetra::MultiVector& MV2TpetraMV(const MultiVector& vec) { -#if ((defined(EPETRA_HAVE_OMP) && (!defined(HAVE_TPETRA_INST_OPENMP) || !defined(HAVE_TPETRA_INST_INT_INT))) || \ - (!defined(EPETRA_HAVE_OMP) && (!defined(HAVE_TPETRA_INST_SERIAL) || !defined(HAVE_TPETRA_INST_INT_INT)))) - throw Exceptions::RuntimeError("MV2TpetraMV: Tpetra has not been compiled with support for LO=GO=int."); -#else - const Xpetra::TpetraMultiVector& tmpVec = dynamic_cast&>(vec); - return *(tmpVec.getTpetra_MultiVector()); -#endif - } - static Tpetra::MultiVector& MV2NonConstTpetraMV(MultiVector& vec) { -#if ((defined(EPETRA_HAVE_OMP) && (!defined(HAVE_TPETRA_INST_OPENMP) || !defined(HAVE_TPETRA_INST_INT_INT))) || \ - (!defined(EPETRA_HAVE_OMP) && (!defined(HAVE_TPETRA_INST_SERIAL) || !defined(HAVE_TPETRA_INST_INT_INT)))) - throw Exceptions::RuntimeError("MV2NonConstTpetraMV: Tpetra has not been compiled with support for LO=GO=int."); -#else - const Xpetra::TpetraMultiVector& tmpVec = dynamic_cast&>(vec); - return *(tmpVec.getTpetra_MultiVector()); -#endif - } - - static RCP> Op2TpetraCrs(RCP Op) { -#if ((defined(EPETRA_HAVE_OMP) && (!defined(HAVE_TPETRA_INST_OPENMP) || !defined(HAVE_TPETRA_INST_INT_INT))) || \ - (!defined(EPETRA_HAVE_OMP) && (!defined(HAVE_TPETRA_INST_SERIAL) || !defined(HAVE_TPETRA_INST_INT_INT)))) - throw Exceptions::RuntimeError("Op2TpetraCrs: Tpetra has not been compiled with support for LO=GO=int."); -#else - // Get the underlying Tpetra Mtx - RCP crsOp = rcp_dynamic_cast(Op); - if (crsOp == Teuchos::null) - throw Exceptions::BadCast("Cast from Xpetra::Matrix to Xpetra::CrsMatrixWrap failed"); - const RCP>& tmp_ECrsMtx = rcp_dynamic_cast>(crsOp->getCrsMatrix()); - if (tmp_ECrsMtx == Teuchos::null) - throw Exceptions::BadCast("Cast from Xpetra::CrsMatrix to Xpetra::TpetraCrsMatrix failed"); - return tmp_ECrsMtx->getTpetra_CrsMatrix(); -#endif - } - static RCP> Op2NonConstTpetraCrs(RCP Op) { -#if ((defined(EPETRA_HAVE_OMP) && (!defined(HAVE_TPETRA_INST_OPENMP) || !defined(HAVE_TPETRA_INST_INT_INT))) || \ - (!defined(EPETRA_HAVE_OMP) && (!defined(HAVE_TPETRA_INST_SERIAL) || !defined(HAVE_TPETRA_INST_INT_INT)))) - throw Exceptions::RuntimeError("Op2NonConstTpetraCrs: Tpetra has not been compiled with support for LO=GO=int."); -#else - RCP crsOp = rcp_dynamic_cast(Op); - if (crsOp == Teuchos::null) - throw Exceptions::BadCast("Cast from Xpetra::Matrix to Xpetra::CrsMatrixWrap failed"); - const RCP>& tmp_ECrsMtx = rcp_dynamic_cast>(crsOp->getCrsMatrix()); - if (tmp_ECrsMtx == Teuchos::null) - throw Exceptions::BadCast("Cast from Xpetra::CrsMatrix to Xpetra::TpetraCrsMatrix failed"); - return tmp_ECrsMtx->getTpetra_CrsMatrixNonConst(); -#endif - }; - - static const Tpetra::CrsMatrix& Op2TpetraCrs(const Matrix& Op) { -#if ((defined(EPETRA_HAVE_OMP) && (!defined(HAVE_TPETRA_INST_OPENMP) || !defined(HAVE_TPETRA_INST_INT_INT))) || \ - (!defined(EPETRA_HAVE_OMP) && (!defined(HAVE_TPETRA_INST_SERIAL) || !defined(HAVE_TPETRA_INST_INT_INT)))) - throw Exceptions::RuntimeError("Op2TpetraCrs: Tpetra has not been compiled with support for LO=GO=int."); -#else - try { - const CrsMatrixWrap& crsOp = dynamic_cast(Op); - try { - const Xpetra::TpetraCrsMatrix& tmp_ECrsMtx = dynamic_cast&>(*crsOp.getCrsMatrix()); - return *tmp_ECrsMtx.getTpetra_CrsMatrix(); - } catch (std::bad_cast&) { - throw Exceptions::BadCast("Cast from Xpetra::CrsMatrix to Xpetra::TpetraCrsMatrix failed"); - } - } catch (std::bad_cast&) { - throw Exceptions::BadCast("Cast from Xpetra::Matrix to Xpetra::CrsMatrixWrap failed"); - } -#endif - } - static Tpetra::CrsMatrix& Op2NonConstTpetraCrs(Matrix& Op) { -#if ((defined(EPETRA_HAVE_OMP) && (!defined(HAVE_TPETRA_INST_OPENMP) || !defined(HAVE_TPETRA_INST_INT_INT))) || \ - (!defined(EPETRA_HAVE_OMP) && (!defined(HAVE_TPETRA_INST_SERIAL) || !defined(HAVE_TPETRA_INST_INT_INT)))) - throw Exceptions::RuntimeError("Op2NonConstTpetraCrs: Tpetra has not been compiled with support for LO=GO=int."); -#else - try { - CrsMatrixWrap& crsOp = dynamic_cast(Op); - try { - Xpetra::TpetraCrsMatrix& tmp_ECrsMtx = dynamic_cast&>(*crsOp.getCrsMatrix()); - return *tmp_ECrsMtx.getTpetra_CrsMatrixNonConst(); - } catch (std::bad_cast&) { - throw Exceptions::BadCast("Cast from Xpetra::CrsMatrix to Xpetra::TpetraCrsMatrix failed"); - } - } catch (std::bad_cast&) { - throw Exceptions::BadCast("Cast from Xpetra::Matrix to Xpetra::CrsMatrixWrap failed"); - } -#endif - } - - static RCP> Op2TpetraBlockCrs(RCP Op) { -#if ((defined(EPETRA_HAVE_OMP) && (!defined(HAVE_TPETRA_INST_OPENMP) || !defined(HAVE_TPETRA_INST_INT_INT))) || \ - (!defined(EPETRA_HAVE_OMP) && (!defined(HAVE_TPETRA_INST_SERIAL) || !defined(HAVE_TPETRA_INST_INT_INT)))) - throw Exceptions::RuntimeError("Op2TpetraBlockCrs: Tpetra has not been compiled with support for LO=GO=int."); -#else - // Get the underlying Tpetra Mtx - RCP crsOp = rcp_dynamic_cast(Op); - if (crsOp == Teuchos::null) - throw Exceptions::BadCast("Cast from Xpetra::Matrix to Xpetra::CrsMatrixWrap failed"); - const RCP>& tmp_ECrsMtx = rcp_dynamic_cast>(crsOp->getCrsMatrix()); - if (tmp_ECrsMtx == Teuchos::null) - throw Exceptions::BadCast("Cast from Xpetra::CrsMatrix to Xpetra::TpetraBlockCrsMatrix failed"); - return tmp_ECrsMtx->getTpetra_BlockCrsMatrix(); -#endif - } - - static RCP> Op2NonConstTpetraBlockCrs(RCP Op) { -#if ((defined(EPETRA_HAVE_OMP) && (!defined(HAVE_TPETRA_INST_OPENMP) || !defined(HAVE_TPETRA_INST_INT_INT))) || \ - (!defined(EPETRA_HAVE_OMP) && (!defined(HAVE_TPETRA_INST_SERIAL) || !defined(HAVE_TPETRA_INST_INT_INT)))) - throw Exceptions::RuntimeError("Op2NonConstTpetraBlockCrs: Tpetra has not been compiled with support for LO=GO=int."); -#else - RCP crsOp = rcp_dynamic_cast(Op); - if (crsOp == Teuchos::null) - throw Exceptions::BadCast("Cast from Xpetra::Matrix to Xpetra::CrsMatrixWrap failed"); - const RCP>& tmp_ECrsMtx = rcp_dynamic_cast>(crsOp->getCrsMatrix()); - if (tmp_ECrsMtx == Teuchos::null) - throw Exceptions::BadCast("Cast from Xpetra::CrsMatrix to Xpetra::TpetraBlockCrsMatrix failed"); - return tmp_ECrsMtx->getTpetra_BlockCrsMatrixNonConst(); -#endif - }; - - static const Tpetra::BlockCrsMatrix& Op2TpetraBlockCrs(const Matrix& Op) { -#if ((defined(EPETRA_HAVE_OMP) && (!defined(HAVE_TPETRA_INST_OPENMP) || !defined(HAVE_TPETRA_INST_INT_INT))) || \ - (!defined(EPETRA_HAVE_OMP) && (!defined(HAVE_TPETRA_INST_SERIAL) || !defined(HAVE_TPETRA_INST_INT_INT)))) - throw Exceptions::RuntimeError("Op2TpetraBlockCrs: Tpetra has not been compiled with support for LO=GO=int."); -#else - try { - const CrsMatrixWrap& crsOp = dynamic_cast(Op); - try { - const Xpetra::TpetraBlockCrsMatrix& tmp_ECrsMtx = dynamic_cast&>(*crsOp.getCrsMatrix()); - return *tmp_ECrsMtx.getTpetra_BlockCrsMatrix(); - } catch (std::bad_cast&) { - throw Exceptions::BadCast("Cast from Xpetra::CrsMatrix to Xpetra::TpetraBlockCrsMatrix failed"); - } - } catch (std::bad_cast&) { - throw Exceptions::BadCast("Cast from Xpetra::Matrix to Xpetra::CrsMatrixWrap failed"); - } -#endif - } - static Tpetra::BlockCrsMatrix& Op2NonConstTpetraBlockCrs(Matrix& Op) { -#if ((defined(EPETRA_HAVE_OMP) && (!defined(HAVE_TPETRA_INST_OPENMP) || !defined(HAVE_TPETRA_INST_INT_INT))) || \ - (!defined(EPETRA_HAVE_OMP) && (!defined(HAVE_TPETRA_INST_SERIAL) || !defined(HAVE_TPETRA_INST_INT_INT)))) - throw Exceptions::RuntimeError("Op2NonConstTpetraCrs: Tpetra has not been compiled with support for LO=GO=int."); -#else - try { - CrsMatrixWrap& crsOp = dynamic_cast(Op); - try { - Xpetra::TpetraBlockCrsMatrix& tmp_ECrsMtx = dynamic_cast&>(*crsOp.getCrsMatrix()); - return *tmp_ECrsMtx.getTpetra_BlockCrsMatrixNonConst(); - } catch (std::bad_cast&) { - throw Exceptions::BadCast("Cast from Xpetra::CrsMatrix to Xpetra::TpetraBlockCrsMatrix failed"); - } - } catch (std::bad_cast&) { - throw Exceptions::BadCast("Cast from Xpetra::Matrix to Xpetra::CrsMatrixWrap failed"); - } -#endif - } - - static RCP> Op2TpetraRow(RCP Op) { -#if ((defined(EPETRA_HAVE_OMP) && (!defined(HAVE_TPETRA_INST_OPENMP) || !defined(HAVE_TPETRA_INST_INT_INT))) || \ - (!defined(EPETRA_HAVE_OMP) && (!defined(HAVE_TPETRA_INST_SERIAL) || !defined(HAVE_TPETRA_INST_INT_INT)))) - throw Exceptions::RuntimeError("Op2TpetraRow: Tpetra has not been compiled with support for LO=GO=int."); -#else - RCP mat = rcp_dynamic_cast(Op); - RCP> rmat = rcp_dynamic_cast>(Op); - if (!mat.is_null()) { - RCP crsOp = rcp_dynamic_cast(mat); - if (crsOp == Teuchos::null) - throw Exceptions::BadCast("Cast from Xpetra::Matrix to Xpetra::CrsMatrixWrap failed"); - - RCP crsMat = crsOp->getCrsMatrix(); - const RCP> tmp_Crs = rcp_dynamic_cast>(crsMat); - RCP> tmp_BlockCrs; - if (!tmp_Crs.is_null()) { - return tmp_Crs->getTpetra_CrsMatrixNonConst(); - } else { - tmp_BlockCrs = rcp_dynamic_cast>(crsMat); - if (tmp_BlockCrs.is_null()) - throw Exceptions::BadCast("Cast from Xpetra::CrsMatrix to Xpetra::TpetraCrsMatrix and Xpetra::TpetraBlockCrsMatrix failed"); - return tmp_BlockCrs->getTpetra_BlockCrsMatrixNonConst(); - } - } else if (!rmat.is_null()) { - return rmat->getTpetra_RowMatrix(); - } else { - RCP tpOp = rcp_dynamic_cast(Op, true); - RCP> tOp = tpOp->getOperatorConst(); - RCP> tRow = rcp_dynamic_cast>(tOp, true); - return tRow; - } -#endif - } - - static RCP> Op2NonConstTpetraRow(RCP Op) { -#if ((defined(EPETRA_HAVE_OMP) && (!defined(HAVE_TPETRA_INST_OPENMP) || !defined(HAVE_TPETRA_INST_INT_INT))) || \ - (!defined(EPETRA_HAVE_OMP) && (!defined(HAVE_TPETRA_INST_SERIAL) || !defined(HAVE_TPETRA_INST_INT_INT)))) - throw Exceptions::RuntimeError("Op2NonConstTpetraRow: Tpetra has not been compiled with support for LO=GO=int."); -#else - RCP mat = rcp_dynamic_cast(Op); - RCP> rmat = rcp_dynamic_cast>(Op); - if (!mat.is_null()) { - RCP crsOp = rcp_dynamic_cast(mat); - if (crsOp == Teuchos::null) - throw Exceptions::BadCast("Cast from Xpetra::Matrix to Xpetra::CrsMatrixWrap failed"); - - RCP crsMat = crsOp->getCrsMatrix(); - const RCP> tmp_Crs = rcp_dynamic_cast>(crsMat); - RCP> tmp_BlockCrs; - if (!tmp_Crs.is_null()) { - return tmp_Crs->getTpetra_CrsMatrixNonConst(); - } else { - tmp_BlockCrs = rcp_dynamic_cast>(crsMat); - if (tmp_BlockCrs.is_null()) - throw Exceptions::BadCast("Cast from Xpetra::CrsMatrix to Xpetra::TpetraCrsMatrix and Xpetra::TpetraBlockCrsMatrix failed"); - return tmp_BlockCrs->getTpetra_BlockCrsMatrixNonConst(); - } - } else if (!rmat.is_null()) { - return rmat->getTpetra_RowMatrixNonConst(); - } else { - RCP tpOp = rcp_dynamic_cast(Op, true); - RCP> tOp = tpOp->getOperator(); - RCP> tRow = rcp_dynamic_cast>(tOp, true); - return tRow; - } -#endif - }; - - static const RCP> Map2TpetraMap(const Map& map) { -#if ((defined(EPETRA_HAVE_OMP) && (!defined(HAVE_TPETRA_INST_OPENMP) || !defined(HAVE_TPETRA_INST_INT_INT))) || \ - (!defined(EPETRA_HAVE_OMP) && (!defined(HAVE_TPETRA_INST_SERIAL) || !defined(HAVE_TPETRA_INST_INT_INT)))) - throw Exceptions::RuntimeError("Map2TpetraMap: Tpetra has not been compiled with support for LO=GO=int."); -#else - const RCP>& tmp_TMap = rcp_dynamic_cast>(rcpFromRef(map)); - if (tmp_TMap == Teuchos::null) - throw Exceptions::BadCast("Utilities::Map2TpetraMap : Cast from Xpetra::Map to Xpetra::TpetraMap failed"); - return tmp_TMap->getTpetra_Map(); -#endif - }; - - static void MyOldScaleMatrix(Matrix& Op, const Teuchos::ArrayRCP& scalingVector, bool doInverse = true, - bool doFillComplete = true, bool doOptimizeStorage = true) { - Scalar one = Teuchos::ScalarTraits::one(); - Teuchos::ArrayRCP sv(scalingVector.size()); - if (doInverse) { - for (int i = 0; i < scalingVector.size(); ++i) - sv[i] = one / scalingVector[i]; - } else { - for (int i = 0; i < scalingVector.size(); ++i) - sv[i] = scalingVector[i]; - } - - switch (Op.getRowMap()->lib()) { - case Xpetra::UseTpetra: - MyOldScaleMatrix_Tpetra(Op, sv, doFillComplete, doOptimizeStorage); - break; - - case Xpetra::UseEpetra: - MyOldScaleMatrix_Epetra(Op, sv, doFillComplete, doOptimizeStorage); - break; - - default: - throw Exceptions::RuntimeError("Only Epetra and Tpetra matrices can be scaled."); - } - } - - // TODO This is the specialization - static void MyOldScaleMatrix_Tpetra(Matrix& Op, const Teuchos::ArrayRCP& scalingVector, - bool doFillComplete, bool doOptimizeStorage) { -#if ((defined(EPETRA_HAVE_OMP) && (!defined(HAVE_TPETRA_INST_OPENMP) || !defined(HAVE_TPETRA_INST_INT_INT))) || \ - (!defined(EPETRA_HAVE_OMP) && (!defined(HAVE_TPETRA_INST_SERIAL) || !defined(HAVE_TPETRA_INST_INT_INT)))) - throw Exceptions::RuntimeError("Matrix scaling is not possible because Tpetra has not been compiled with support for LO=GO=int."); -#else - try { - Tpetra::CrsMatrix& tpOp = Op2NonConstTpetraCrs(Op); - - const RCP> rowMap = tpOp.getRowMap(); - const RCP> domainMap = tpOp.getDomainMap(); - const RCP> rangeMap = tpOp.getRangeMap(); - - size_t maxRowSize = tpOp.getLocalMaxNumRowEntries(); - if (maxRowSize == Teuchos::as(-1)) // hasn't been determined yet - maxRowSize = 20; - - std::vector scaledVals(maxRowSize); - if (tpOp.isFillComplete()) - tpOp.resumeFill(); - - if (Op.isLocallyIndexed() == true) { - typename Tpetra::CrsMatrix::local_inds_host_view_type cols; - typename Tpetra::CrsMatrix::values_host_view_type vals; - for (size_t i = 0; i < rowMap->getLocalNumElements(); ++i) { - tpOp.getLocalRowView(i, cols, vals); - size_t nnz = tpOp.getNumEntriesInLocalRow(i); - if (nnz > maxRowSize) { - maxRowSize = nnz; - scaledVals.resize(maxRowSize); - } - for (size_t j = 0; j < nnz; ++j) - scaledVals[j] = vals[j] * scalingVector[i]; - - if (nnz > 0) { - Teuchos::ArrayView cols_view(cols.data(), nnz); - Teuchos::ArrayView valview(&scaledVals[0], nnz); - tpOp.replaceLocalValues(i, cols_view, valview); - } - } // for (size_t i=0; ... - - } else { - typename Tpetra::CrsMatrix::local_inds_host_view_type cols; - typename Tpetra::CrsMatrix::values_host_view_type vals; - - for (size_t i = 0; i < rowMap->getLocalNumElements(); ++i) { - GlobalOrdinal gid = rowMap->getGlobalElement(i); - tpOp.getGlobalRowView(gid, cols, vals); - size_t nnz = tpOp.getNumEntriesInGlobalRow(gid); - if (nnz > maxRowSize) { - maxRowSize = nnz; - scaledVals.resize(maxRowSize); - } - // FIXME FIXME FIXME FIXME FIXME FIXME - for (size_t j = 0; j < nnz; ++j) - scaledVals[j] = vals[j] * scalingVector[i]; // FIXME i or gid? - - if (nnz > 0) { - Teuchos::ArrayView cols_view(cols.data(), nnz); - Teuchos::ArrayView valview(&scaledVals[0], nnz); - tpOp.replaceGlobalValues(gid, cols_view, valview); - } - } // for (size_t i=0; ... - } - - if (doFillComplete) { - if (domainMap == Teuchos::null || rangeMap == Teuchos::null) - throw Exceptions::RuntimeError("In Utilities::Scaling: cannot fillComplete because the domain and/or range map hasn't been defined"); - - RCP params = rcp(new Teuchos::ParameterList()); - params->set("Optimize Storage", doOptimizeStorage); - params->set("No Nonlocal Changes", true); - Op.fillComplete(Op.getDomainMap(), Op.getRangeMap(), params); - } - } catch (...) { - throw Exceptions::RuntimeError("Only Tpetra::CrsMatrix types can be scaled (Err.1)"); - } -#endif - } - - static void MyOldScaleMatrix_Epetra(Matrix& Op, const Teuchos::ArrayRCP& scalingVector, bool /* doFillComplete */, bool /* doOptimizeStorage */) { -#ifdef HAVE_MUELU_EPETRA - try { - // const Epetra_CrsMatrix& epOp = Utilities::Op2NonConstEpetraCrs(Op); - const Epetra_CrsMatrix& epOp = Op2NonConstEpetraCrs(Op); - - Epetra_Map const& rowMap = epOp.RowMap(); - int nnz; - double* vals; - int* cols; - - for (int i = 0; i < rowMap.NumMyElements(); ++i) { - epOp.ExtractMyRowView(i, nnz, vals, cols); - for (int j = 0; j < nnz; ++j) - vals[j] *= scalingVector[i]; - } - - } catch (...) { - throw Exceptions::RuntimeError("Only Epetra_CrsMatrix types can be scaled"); - } -#else - throw Exceptions::RuntimeError("Matrix scaling is not possible because Epetra has not been enabled."); -#endif // HAVE_MUELU_EPETRA - } - - /*! @brief Transpose a Xpetra::Matrix - - Note: Currently, an error is thrown if the matrix isn't a Tpetra::CrsMatrix or Epetra_CrsMatrix. - In principle, however, we could allow any Epetra_RowMatrix because the Epetra transposer does. - */ - static RCP Transpose(Matrix& Op, bool /* optimizeTranspose */ = false, const std::string& label = std::string(), const Teuchos::RCP& params = Teuchos::null) { - switch (Op.getRowMap()->lib()) { - case Xpetra::UseTpetra: { -#if ((defined(EPETRA_HAVE_OMP) && (!defined(HAVE_TPETRA_INST_OPENMP) || !defined(HAVE_TPETRA_INST_INT_INT))) || \ - (!defined(EPETRA_HAVE_OMP) && (!defined(HAVE_TPETRA_INST_SERIAL) || !defined(HAVE_TPETRA_INST_INT_INT)))) - throw Exceptions::RuntimeError("Utilities::Transpose: Tpetra is not compiled with LO=GO=int. Add TPETRA_INST_INT_INT:BOOL=ON to your configuration!"); -#else - using Helpers = Xpetra::Helpers; - /***************************************************************/ - if (Helpers::isTpetraCrs(Op)) { - const Tpetra::CrsMatrix& tpetraOp = Utilities::Op2TpetraCrs(Op); - - // Compute the transpose A of the Tpetra matrix tpetraOp. - RCP> A; - Tpetra::RowMatrixTransposer transposer(rcpFromRef(tpetraOp), label); - - { - using Teuchos::ParameterList; - using Teuchos::rcp; - RCP transposeParams = params.is_null() ? rcp(new ParameterList) : rcp(new ParameterList(*params)); - transposeParams->set("sort", false); - A = transposer.createTranspose(transposeParams); - } - - RCP> AA = rcp(new Xpetra::TpetraCrsMatrix(A)); - RCP AAA = rcp_implicit_cast(AA); - RCP AAAA = rcp(new CrsMatrixWrap(AAA)); - - if (Op.IsView("stridedMaps")) - AAAA->CreateView("stridedMaps", Teuchos::rcpFromRef(Op), true /*doTranspose*/); - - return AAAA; - } - /***************************************************************/ - else if (Helpers::isTpetraBlockCrs(Op)) { - using BCRS = Tpetra::BlockCrsMatrix; - // using CRS = Tpetra::CrsMatrix; - const BCRS& tpetraOp = Utilities::Op2TpetraBlockCrs(Op); - RCP At; - { - Tpetra::BlockCrsMatrixTransposer transposer(rcpFromRef(tpetraOp), label); - - using Teuchos::ParameterList; - using Teuchos::rcp; - RCP transposeParams = params.is_null() ? rcp(new ParameterList) : rcp(new ParameterList(*params)); - transposeParams->set("sort", false); - At = transposer.createTranspose(transposeParams); - } - - RCP> AA = rcp(new Xpetra::TpetraBlockCrsMatrix(At)); - RCP AAA = rcp_implicit_cast(AA); - RCP AAAA = rcp(new CrsMatrixWrap(AAA)); - - if (Op.IsView("stridedMaps")) - AAAA->CreateView("stridedMaps", Teuchos::rcpFromRef(Op), true /*doTranspose*/); - - return AAAA; - - } - /***************************************************************/ - else { - throw Exceptions::RuntimeError("Utilities::Transpose failed, perhaps because matrix is not a Crs or BlockCrs matrix"); - } -#endif - } - case Xpetra::UseEpetra: { -#if defined(HAVE_MUELU_EPETRA) && defined(HAVE_MUELU_EPETRAEXT) - Teuchos::TimeMonitor tm(*Teuchos::TimeMonitor::getNewTimer("ZZ Entire Transpose")); - // Epetra case - Epetra_CrsMatrix& epetraOp = Utilities::Op2NonConstEpetraCrs(Op); - EpetraExt::RowMatrix_Transpose transposer; - Epetra_CrsMatrix* A = dynamic_cast(&transposer(epetraOp)); - transposer.ReleaseTranspose(); // So we can keep A in Muelu... - - RCP rcpA(A); - RCP AA = rcp(new EpetraCrsMatrix(rcpA)); - RCP AAA = rcp_implicit_cast(AA); - RCP AAAA = rcp(new CrsMatrixWrap(AAA)); - - if (Op.IsView("stridedMaps")) - AAAA->CreateView("stridedMaps", Teuchos::rcpFromRef(Op), true /*doTranspose*/); - - return AAAA; -#else - throw Exceptions::RuntimeError("Epetra (Err. 2)"); -#endif - } - default: - throw Exceptions::RuntimeError("Only Epetra and Tpetra matrices can be transposed."); - } - - TEUCHOS_UNREACHABLE_RETURN(Teuchos::null); - } - - static RCP::magnitudeType, LocalOrdinal, GlobalOrdinal, Node>> - RealValuedToScalarMultiVector(RCP::coordinateType, LocalOrdinal, GlobalOrdinal, Node>> X) { - RCP> Xscalar = rcp_dynamic_cast>(X, true); - return Xscalar; - } - - /*! @brief Extract coordinates from parameter list and return them in a Xpetra::MultiVector - */ - static RCP::magnitudeType, LocalOrdinal, GlobalOrdinal, Node>> ExtractCoordinatesFromParameterList(ParameterList& paramList) { - RCP::magnitudeType, LocalOrdinal, GlobalOrdinal, Node>> coordinates = Teuchos::null; - - // check whether coordinates are contained in parameter list - if (paramList.isParameter("Coordinates") == false) - return coordinates; - -#if (defined(EPETRA_HAVE_OMP) && defined(HAVE_TPETRA_INST_OPENMP) && defined(HAVE_TPETRA_INST_INT_INT)) || \ - (!defined(EPETRA_HAVE_OMP) && defined(HAVE_TPETRA_INST_SERIAL) && defined(HAVE_TPETRA_INST_INT_INT)) - - // define Tpetra::MultiVector type with Scalar=float only if - // * ETI is turned off, since then the compiler will instantiate it automatically OR - // * Tpetra is instantiated on Scalar=float -#if !defined(HAVE_TPETRA_EXPLICIT_INSTANTIATION) || defined(HAVE_TPETRA_INST_FLOAT) - typedef Tpetra::MultiVector tfMV; - RCP floatCoords = Teuchos::null; -#endif - - // define Tpetra::MultiVector type with Scalar=double only if - // * ETI is turned off, since then the compiler will instantiate it automatically OR - // * Tpetra is instantiated on Scalar=double - typedef Tpetra::MultiVector::magnitudeType, LocalOrdinal, GlobalOrdinal, Node> tdMV; - RCP doubleCoords = Teuchos::null; - if (paramList.isType>("Coordinates")) { - // Coordinates are stored as a double vector - doubleCoords = paramList.get>("Coordinates"); - paramList.remove("Coordinates"); - } -#if !defined(HAVE_TPETRA_EXPLICIT_INSTANTIATION) || defined(HAVE_TPETRA_INST_FLOAT) - else if (paramList.isType>("Coordinates")) { - // check if coordinates are stored as a float vector - floatCoords = paramList.get>("Coordinates"); - paramList.remove("Coordinates"); - doubleCoords = rcp(new tdMV(floatCoords->getMap(), floatCoords->getNumVectors())); - deep_copy(*doubleCoords, *floatCoords); - } -#endif - // We have the coordinates in a Tpetra double vector - if (doubleCoords != Teuchos::null) { - coordinates = Teuchos::rcp(new Xpetra::TpetraMultiVector::magnitudeType, LocalOrdinal, GlobalOrdinal, Node>(doubleCoords)); - TEUCHOS_TEST_FOR_EXCEPT(doubleCoords->getNumVectors() != coordinates->getNumVectors()); - } -#endif // Tpetra instantiated on GO=int and EpetraNode - -#if defined(HAVE_MUELU_EPETRA) - RCP doubleEpCoords; - if (paramList.isType>("Coordinates")) { - doubleEpCoords = paramList.get>("Coordinates"); - paramList.remove("Coordinates"); - RCP> epCoordinates = Teuchos::rcp(new Xpetra::EpetraMultiVectorT(doubleEpCoords)); - coordinates = rcp_dynamic_cast::magnitudeType, LocalOrdinal, GlobalOrdinal, Node>>(epCoordinates); - TEUCHOS_TEST_FOR_EXCEPT(doubleEpCoords->NumVectors() != Teuchos::as(coordinates->getNumVectors())); - } -#endif - - // check for Xpetra coordinates vector - if (paramList.isType("Coordinates")) { - coordinates = paramList.get("Coordinates"); - } - - TEUCHOS_TEST_FOR_EXCEPT(Teuchos::is_null(coordinates)); - return coordinates; - } - -}; // class Utilities (specialization SC=double LO=GO=int) - -#endif // HAVE_MUELU_EPETRA - /*! \brief Extract non-serializable data from level-specific sublists and move it to a separate parameter list @@ -908,33 +179,6 @@ bool IsParamMuemexVariable(const std::string& name); */ bool IsParamValidVariable(const std::string& name); -#ifdef HAVE_MUELU_EPETRA -/*! \fn EpetraCrs_To_XpetraMatrix - @brief Helper function to convert a Epetra::CrsMatrix to an Xpetra::Matrix - TODO move this function to an Xpetra utility file - */ -template -RCP> -EpetraCrs_To_XpetraMatrix(const Teuchos::RCP& A) { - typedef Xpetra::EpetraCrsMatrixT XECrsMatrix; - typedef Xpetra::CrsMatrix XCrsMatrix; - typedef Xpetra::CrsMatrixWrap XCrsMatrixWrap; - - RCP Atmp = rcp(new XECrsMatrix(A)); - return rcp(new XCrsMatrixWrap(Atmp)); -} - -/*! \fn EpetraMultiVector_To_XpetraMultiVector - @brief Helper function to convert a Epetra::MultiVector to an Xpetra::MultiVector - TODO move this function to an Xpetra utility file - */ -template -RCP> -EpetraMultiVector_To_XpetraMultiVector(const Teuchos::RCP& V) { - return rcp(new Xpetra::EpetraMultiVectorT(V)); -} -#endif - /*! \fn TpetraCrs_To_XpetraMatrix @brief Helper function to convert a Tpetra::CrsMatrix to an Xpetra::Matrix TODO move this function to an Xpetra utility file @@ -1105,24 +349,6 @@ std::string toString(const T& what) { return buf.str(); } -#ifdef HAVE_MUELU_EPETRA -/*! \fn EpetraCrs_To_XpetraMatrix - @brief Helper function to convert a Epetra::CrsMatrix to an Xpetra::Matrix - TODO move this function to an Xpetra utility file - */ -template -RCP> -EpetraCrs_To_XpetraMatrix(const Teuchos::RCP& A); - -/*! \fn EpetraMultiVector_To_XpetraMultiVector - @brief Helper function to convert a Epetra::MultiVector to an Xpetra::MultiVector - TODO move this function to an Xpetra utility file - */ -template -RCP> -EpetraMultiVector_To_XpetraMultiVector(const Teuchos::RCP& V); -#endif - /*! \fn TpetraCrs_To_XpetraMatrix @brief Helper function to convert a Tpetra::CrsMatrix to an Xpetra::Matrix TODO move this function to an Xpetra utility file diff --git a/packages/muelu/src/Utils/MueLu_Utilities_def.hpp b/packages/muelu/src/Utils/MueLu_Utilities_def.hpp index 5548cc4595a1..363e3eb82f56 100644 --- a/packages/muelu/src/Utils/MueLu_Utilities_def.hpp +++ b/packages/muelu/src/Utils/MueLu_Utilities_def.hpp @@ -17,24 +17,6 @@ #include "MueLu_ConfigDefs.hpp" #include "Xpetra_TpetraRowMatrix.hpp" -#ifdef HAVE_MUELU_EPETRA -#ifdef HAVE_MPI -#include "Epetra_MpiComm.h" -#endif -#endif - -#if defined(HAVE_MUELU_EPETRA) && defined(HAVE_MUELU_EPETRAEXT) -#include -#include -#include -#include -#include -#include -#include -#include -#include -#endif - #include #include #include @@ -43,10 +25,6 @@ #include #include -#ifdef HAVE_MUELU_EPETRA -#include -#endif - #include //#include #include @@ -63,115 +41,9 @@ #include #include -#if defined(HAVE_MUELU_EPETRA) && defined(HAVE_MUELU_ML) -#include -#include -#endif namespace MueLu { -#ifdef HAVE_MUELU_EPETRA -// using Xpetra::EpetraCrsMatrix; // TODO: mv in Xpetra_UseShortNamesScalar -// using Xpetra::EpetraMultiVector; -#endif - -#ifdef HAVE_MUELU_EPETRA -template -RCP> Convert_Epetra_CrsMatrix_ToXpetra_CrsMatrixWrap(RCP& epAB) { - return Xpetra::Convert_Epetra_CrsMatrix_ToXpetra_CrsMatrixWrap(epAB); -} -#endif - -#ifdef HAVE_MUELU_EPETRA -template -RCP Utilities::MV2EpetraMV(const RCP> vec) { - RCP> tmpVec = rcp_dynamic_cast>(vec); - if (tmpVec == Teuchos::null) - throw Exceptions::BadCast("Cast from Xpetra::MultiVector to Xpetra::EpetraMultiVector failed"); - return tmpVec->getEpetra_MultiVector(); -} - -template -RCP Utilities::MV2NonConstEpetraMV(RCP> vec) { - RCP> tmpVec = rcp_dynamic_cast>(vec); - if (tmpVec == Teuchos::null) - throw Exceptions::BadCast("Cast from Xpetra::MultiVector to Xpetra::EpetraMultiVector failed"); - return tmpVec->getEpetra_MultiVector(); -} - -template -Epetra_MultiVector& Utilities::MV2NonConstEpetraMV(Xpetra::MultiVector& vec) { - const Xpetra::EpetraMultiVectorT& tmpVec = dynamic_cast&>(vec); - return *(tmpVec.getEpetra_MultiVector()); -} - -template -const Epetra_MultiVector& Utilities::MV2EpetraMV(const Xpetra::MultiVector& vec) { - const Xpetra::EpetraMultiVectorT& tmpVec = dynamic_cast&>(vec); - return *(tmpVec.getEpetra_MultiVector()); -} - -template -RCP Utilities::Op2EpetraCrs(RCP> Op) { - RCP> crsOp = rcp_dynamic_cast>(Op); - if (crsOp == Teuchos::null) - throw Exceptions::BadCast("Cast from Xpetra::Matrix to Xpetra::CrsMatrixWrap failed"); - const RCP>& tmp_ECrsMtx = rcp_dynamic_cast>(crsOp->getCrsMatrix()); - if (tmp_ECrsMtx == Teuchos::null) - throw Exceptions::BadCast("Cast from Xpetra::CrsMatrix to Xpetra::EpetraCrsMatrix failed"); - return tmp_ECrsMtx->getEpetra_CrsMatrix(); -} - -template -RCP Utilities::Op2NonConstEpetraCrs(RCP> Op) { - RCP> crsOp = rcp_dynamic_cast>(Op); - if (crsOp == Teuchos::null) - throw Exceptions::BadCast("Cast from Xpetra::Matrix to Xpetra::CrsMatrixWrap failed"); - const RCP>& tmp_ECrsMtx = rcp_dynamic_cast>(crsOp->getCrsMatrix()); - if (tmp_ECrsMtx == Teuchos::null) - throw Exceptions::BadCast("Cast from Xpetra::CrsMatrix to Xpetra::EpetraCrsMatrix failed"); - return tmp_ECrsMtx->getEpetra_CrsMatrixNonConst(); -} - -template -const Epetra_CrsMatrix& Utilities::Op2EpetraCrs(const Xpetra::Matrix& Op) { - try { - const Xpetra::CrsMatrixWrap& crsOp = dynamic_cast&>(Op); - try { - const Xpetra::EpetraCrsMatrixT& tmp_ECrsMtx = dynamic_cast&>(*crsOp.getCrsMatrix()); - return *tmp_ECrsMtx.getEpetra_CrsMatrix(); - } catch (std::bad_cast&) { - throw Exceptions::BadCast("Cast from Xpetra::CrsMatrix to Xpetra::EpetraCrsMatrix failed"); - } - } catch (std::bad_cast&) { - throw Exceptions::BadCast("Cast from Xpetra::Matrix to Xpetra::CrsMatrixWrap failed"); - } -} - -template -Epetra_CrsMatrix& Utilities::Op2NonConstEpetraCrs(Xpetra::Matrix& Op) { - try { - Xpetra::CrsMatrixWrap& crsOp = dynamic_cast&>(Op); - try { - Xpetra::EpetraCrsMatrixT& tmp_ECrsMtx = dynamic_cast&>(*crsOp.getCrsMatrix()); - return *tmp_ECrsMtx.getEpetra_CrsMatrixNonConst(); - } catch (std::bad_cast&) { - throw Exceptions::BadCast("Cast from Xpetra::CrsMatrix to Xpetra::EpetraCrsMatrix failed"); - } - } catch (std::bad_cast&) { - throw Exceptions::BadCast("Cast from Xpetra::Matrix to Xpetra::CrsMatrixWrap failed"); - } -} - -template -const Epetra_Map& Utilities::Map2EpetraMap(const Xpetra::Map& map) { - RCP> xeMap = rcp_dynamic_cast>(rcpFromRef(map)); - if (xeMap == Teuchos::null) - throw Exceptions::BadCast("Utilities::Map2EpetraMap : Cast from Xpetra::Map to Xpetra::EpetraMap failed"); - return xeMap->getEpetra_Map(); -} -#endif - template RCP> Utilities::MV2TpetraMV(RCP> const vec) { @@ -494,20 +366,7 @@ template RCP> Utilities:: Transpose(Xpetra::Matrix& Op, bool /* optimizeTranspose */, const std::string& label, const Teuchos::RCP& params) { -#if defined(HAVE_MUELU_EPETRA) && defined(HAVE_MUELU_EPETRAEXT) - std::string TorE = "epetra"; -#else std::string TorE = "tpetra"; -#endif - -#if defined(HAVE_MUELU_EPETRA) && defined(HAVE_MUELU_EPETRAEXT) - try { - const Epetra_CrsMatrix& epetraOp = Utilities::Op2NonConstEpetraCrs(Op); - (void)epetraOp; // silence "unused variable" compiler warning - } catch (...) { - TorE = "tpetra"; - } -#endif if (TorE == "tpetra") { using Helpers = Xpetra::Helpers; diff --git a/packages/muelu/test/interface/CreateOperator.cpp b/packages/muelu/test/interface/CreateOperator.cpp index 00a4eaaea530..b8d15e45529b 100644 --- a/packages/muelu/test/interface/CreateOperator.cpp +++ b/packages/muelu/test/interface/CreateOperator.cpp @@ -29,11 +29,6 @@ #include #include #include -#ifdef HAVE_MUELU_EPETRA -#include -#include -#include -#endif #include const std::string thickSeparator = "=========================================================================================================================="; @@ -74,24 +69,6 @@ void setup_system_list(Xpetra::UnderlyingLib& lib, Teuchos::RCP Ae = Xpetra::Helpers::Op2NonConstEpetraCrs(A); - RCP Me = MueLu::CreateEpetraPreconditioner(Ae, mueluList); - - if (myRank == 0) { - // Redirect output back - std::cout.rdbuf(oldbuffer); - buffer.close(); - } - } -#endif } // This routine generate's the user's original A matrix and nullspace diff --git a/packages/muelu/test/interface/ParameterListInterpreter.cpp b/packages/muelu/test/interface/ParameterListInterpreter.cpp index 5f5e00828f02..e94182c892c0 100644 --- a/packages/muelu/test/interface/ParameterListInterpreter.cpp +++ b/packages/muelu/test/interface/ParameterListInterpreter.cpp @@ -18,9 +18,7 @@ #include -#if defined(HAVE_MUELU_AMESOS2) #include // needed for check whether KLU2 is available -#endif #include #include @@ -108,14 +106,6 @@ int main_(Teuchos::CommandLineProcessor& clp, Xpetra::UnderlyingLib& lib, int ar dirList.push_back(prefix + "FactoryParameterListInterpreter/"); } } -#if defined(HAVE_MPI) && defined(HAVE_MUELU_ISORROPIA) && defined(HAVE_AMESOS2_KLU2) - // The ML interpreter have internal ifdef, which means that the resulting - // output would depend on configuration (reguarl interpreter does not have - // that). Therefore, we need to stabilize the configuration here. - // In addition, we run ML parameter list tests only if KLU is available - dirList.push_back(prefix + "MLParameterListInterpreter/"); - dirList.push_back(prefix + "MLParameterListInterpreter2/"); -#endif int numLists = dirList.size(); bool failed = false; diff --git a/packages/muelu/test/maxwell/Maxwell3D.cpp b/packages/muelu/test/maxwell/Maxwell3D.cpp index e5929084cb25..0eb3cd3faf2e 100644 --- a/packages/muelu/test/maxwell/Maxwell3D.cpp +++ b/packages/muelu/test/maxwell/Maxwell3D.cpp @@ -94,123 +94,6 @@ struct EpetraSolvers_Wrapper { } }; -#if defined(HAVE_MUELU_EPETRA) -template -struct EpetraSolvers_Wrapper { - static void Generate_ML_MaxwellPreconditioner(Teuchos::RCP >& SM, - Teuchos::RCP >& D0, - Teuchos::RCP >& Kn, - Teuchos::RCP >& nullspace, - Teuchos::RCP::coordinateType, int, GlobalOrdinal, Tpetra::KokkosCompat::KokkosSerialWrapperNode> >& coords, - Teuchos::ParameterList& mueluList, - Teuchos::RCP >& mlopX) { -#if defined(HAVE_MUELU_ML) - typedef double SC; - typedef int LO; - typedef GlobalOrdinal GO; - typedef Tpetra::KokkosCompat::KokkosSerialWrapperNode NO; - typedef typename Teuchos::ScalarTraits::coordinateType coordinate_type; - typedef typename Xpetra::Matrix Matrix; - - RCP epetraSM = Xpetra::Helpers::Op2EpetraCrs(SM); - RCP epetraD0 = Xpetra::Helpers::Op2EpetraCrs(D0); - if (!coords.is_null()) { - RCP epetraCoord = MueLu::Utilities::MV2EpetraMV(coords); - if (epetraCoord->NumVectors() > 0) mueluList.set("x-coordinates", (*epetraCoord)[0]); - if (epetraCoord->NumVectors() > 1) mueluList.set("y-coordinates", (*epetraCoord)[1]); - if (epetraCoord->NumVectors() > 2) mueluList.set("z-coordinates", (*epetraCoord)[2]); - } - if (!nullspace.is_null()) { - RCP epetraNullspace = MueLu::Utilities::MV2EpetraMV(nullspace); - mueluList.set("null space: dimension", epetraNullspace->NumVectors()); - mueluList.set("null space: vectors", (*epetraNullspace)[0]); - mueluList.set("null space: type", "pre-computed"); - } - RCP epetraKn; - if (Kn.is_null()) { - RCP temp = Xpetra::MatrixFactory::Build(SM->getRangeMap()); - Xpetra::MatrixMatrix::Multiply(*SM, false, *D0, false, *temp, true, true); - RCP Kn2 = Xpetra::MatrixFactory::Build(D0->getDomainMap()); - Xpetra::MatrixMatrix::Multiply(*D0, true, *temp, false, *Kn2, true, true); - epetraKn = Xpetra::Helpers::Op2EpetraCrs(Kn2); - } else - epetraKn = Xpetra::Helpers::Op2EpetraCrs(Kn); - - RCP mlop = rcp(new ML_Epetra::MultiLevelPreconditioner(*epetraSM, *epetraD0, *epetraKn, mueluList, true)); -#if defined(HAVE_MUELU_BELOS) - // NOTE: Belos needs the Apply() and AppleInverse() routines of ML swapped. So... - mlop = rcp(new Belos::EpetraPrecOp(mlop)); -#endif - - mlopX = rcp(new Xpetra::EpetraOperator(mlop)); -#else - TEUCHOS_TEST_FOR_EXCEPTION(true, std::runtime_error, - "Need ML & Epetra support"); -#endif - } - - static void Generate_ML_RefMaxwellPreconditioner(Teuchos::RCP >& SM, - Teuchos::RCP >& D0, - Teuchos::RCP >& Ms, - Teuchos::RCP >& M0inv, - Teuchos::RCP >& M1, - Teuchos::RCP >& nullspace, - Teuchos::RCP >& node_material, - Teuchos::RCP::coordinateType, int, GlobalOrdinal, Tpetra::KokkosCompat::KokkosSerialWrapperNode> >& coords, - Teuchos::ParameterList& mueluList, - Teuchos::RCP >& mlopX) { -#if defined(HAVE_MUELU_ML) - typedef double SC; - typedef int LO; - typedef GlobalOrdinal GO; - typedef Tpetra::KokkosCompat::KokkosSerialWrapperNode NO; - typedef typename Teuchos::ScalarTraits::coordinateType coordinate_type; - - RCP epetraSM = Xpetra::Helpers::Op2EpetraCrs(SM); - RCP epetraD0 = Xpetra::Helpers::Op2EpetraCrs(D0); - RCP epetraM0inv = Xpetra::Helpers::Op2EpetraCrs(M0inv); - RCP epetraMs; - RCP epetraM1 = Xpetra::Helpers::Op2EpetraCrs(M1); - if (!Ms.is_null()) - epetraMs = Xpetra::Helpers::Op2EpetraCrs(Ms); - else - epetraMs = epetraM1; - mueluList.set("D0", epetraD0); - mueluList.set("Ms", epetraMs); - mueluList.set("M0inv", epetraM0inv); - mueluList.set("M1", epetraM1); - if (!coords.is_null()) { - RCP epetraCoord = MueLu::Utilities::MV2EpetraMV(coords); - if (epetraCoord->NumVectors() > 0) mueluList.sublist("refmaxwell: 11list").set("x-coordinates", (*epetraCoord)[0]); - if (epetraCoord->NumVectors() > 1) mueluList.sublist("refmaxwell: 11list").set("y-coordinates", (*epetraCoord)[1]); - if (epetraCoord->NumVectors() > 2) mueluList.sublist("refmaxwell: 11list").set("z-coordinates", (*epetraCoord)[2]); - } - if (!node_material.is_null()) { - RCP epetraMaterial = MueLu::Utilities::MV2EpetraMV(node_material); - mueluList.sublist("refmaxwell: 11list").set("material coordinates", (*epetraMaterial)[0]); - } - if (!nullspace.is_null()) { - RCP epetraNullspace = MueLu::Utilities::MV2EpetraMV(nullspace); - mueluList.sublist("refmaxwell: 11list").set("null space: dimension", epetraNullspace->NumVectors()); - mueluList.sublist("refmaxwell: 11list").set("null space: vectors", (*epetraNullspace)[0]); - mueluList.sublist("refmaxwell: 11list").set("null space: type", "pre-computed"); - } - - RCP mlop = rcp(new ML_Epetra::RefMaxwellPreconditioner(*epetraSM, mueluList, true)); -#if defined(HAVE_MUELU_BELOS) - // NOTE: Belos needs the Apply() and AppleInverse() routines of ML swapped. So... - mlop = rcp(new Belos::EpetraPrecOp(mlop)); -#endif - - mlopX = rcp(new Xpetra::EpetraOperator(mlop)); -#else - TEUCHOS_TEST_FOR_EXCEPTION(true, std::runtime_error, - "Need ML & Epetra support"); -#endif - } -}; -#endif // HAVE_MUELU_EPETRA - template bool SetupSolve(std::map inputs) { #include @@ -262,19 +145,6 @@ bool SetupSolve(std::map inputs) { preconditioner = rcp(new MueLu::Maxwell1(SM_Matrix, D0_Matrix, Kn_Matrix, nullspace, coords, params, GmhdA_Matrix)); } -#ifdef HAVE_MUELU_EPETRA - else if (precType == "ML-RefMaxwell") { - Xpetra::UnderlyingLib lib = *static_cast(inputs["lib"]); - TEUCHOS_ASSERT(lib == Xpetra::UseEpetra); - EpetraSolvers_Wrapper::Generate_ML_RefMaxwellPreconditioner(SM_Matrix, D0_Matrix, Ms_Matrix, M0inv_Matrix, - M1_Matrix, nullspace, material, coords, params, preconditioner); - } else if (precType == "ML-Maxwell") { - Xpetra::UnderlyingLib lib = *static_cast(inputs["lib"]); - TEUCHOS_ASSERT(lib == Xpetra::UseEpetra); - EpetraSolvers_Wrapper::Generate_ML_MaxwellPreconditioner(SM_Matrix, D0_Matrix, Kn_Matrix, - nullspace, coords, params, preconditioner); - } -#endif { // A test to make sure we can wrap this guy as a MueLu::TpetraOperator @@ -396,13 +266,6 @@ bool SetupSolve(std::map inputs) { sublist->set(*key_it, coords); // else if (*key_it == "Nullspace") // sublist->set(*key_it, Nullspace); -#ifdef HAVE_MUELU_EPETRA - else if (value == "eD0") { - auto eD0 = Teuchos::rcp_dynamic_cast(Teuchos::rcp_dynamic_cast(D0_Matrix, true)->getCrsMatrix(), true)->getEpetra_CrsMatrix(); - sublist->set(*key_it, eD0); - } else if (value == "eCoordinates") - sublist->set(*key_it, Teuchos::rcp_dynamic_cast >(coords, true)->getEpetra_MultiVector()); -#endif else if (value == "tD0") { auto tD0 = Teuchos::rcp_dynamic_cast(Teuchos::rcp_dynamic_cast(D0_Matrix, true)->getCrsMatrix(), true)->getTpetra_CrsMatrix(); sublist->set(*key_it, tD0); diff --git a/packages/muelu/test/mhdvanka/tomtest.cpp b/packages/muelu/test/mhdvanka/tomtest.cpp deleted file mode 100644 index ec03fc1eb62a..000000000000 --- a/packages/muelu/test/mhdvanka/tomtest.cpp +++ /dev/null @@ -1,330 +0,0 @@ -// @HEADER -// ***************************************************************************** -// MueLu: A package for multigrid based preconditioning -// -// Copyright 2012 NTESS and the MueLu contributors. -// SPDX-License-Identifier: BSD-3-Clause -// ***************************************************************************** -// @HEADER - -// A very simple driver to test basic MueLu functionality, -// most specifically, a geometric linear interpolation routine. - -#include -#include -#include - -// MueLu main header: include most common header files in one line -#include - -// Teuchos -#include - -// Epetra -#include - -// EpetraExt -#include -#include -#include - -// Xpetra -#define XPETRA_ENABLED -#include -#include -#include - -#include "MueLu_Level.hpp" - -#include -#include -#include -#include -#include -#include -#include - -#include -#include -#include -#include -#include - -#include - -#include -#include -#include -#include - -//#include "EditCopies/MueLu_MHDVankaSmoother_def.hpp" - -int main(int argc, char *argv[]) { -#include - - using Teuchos::RCP; // reference count pointers - - typedef MueLu::GeoInterpFactory GeoInterpFactory; - typedef MueLu::Q2Q1Q2CoarseGridFactory Q2Q1Q2CoarseGridFactory; - typedef MueLu::MHDRAPFactory MHDRAPFactory; - - // - // MPI initialization using Teuchos - // *Included because JHU indicated that it shouldn't cause problems - // if running in serial - // - - Teuchos::GlobalMPISession mpiSession(&argc, &argv, NULL); - - bool success = false; - bool verbose = true; - try { - RCP > comm = Teuchos::DefaultComm::getComm(); - - // Initialize a "FancyOStream" to output to standard out (cout) - RCP out = Teuchos::fancyOStream(Teuchos::rcpFromRef(std::cout)); - out->setOutputToRootOnly(0); - - // First, we start with an Xpetra::Map - Xpetra::UnderlyingLib lib = Xpetra::UseTpetra; - - string fileNameA00 = "./Matrices/J_00_3.mm"; - string fileNameA01 = "./Matrices/J_01_3.mm"; - string fileNameA02 = "./Matrices/J_02_3.mm"; - string fileNameA10 = "./Matrices/J_10_3.mm"; - string fileNameA11 = "./Matrices/J_11_3.mm"; - string fileNameA12 = "./Matrices/J_12_3.mm"; - string fileNameA20 = "./Matrices/J_20_3.mm"; - string fileNameA21 = "./Matrices/J_21_3.mm"; - string fileNameA22 = "./Matrices/J_22_3.mm"; - - RCP A00 = Utils::Read(fileNameA00, lib, comm); - RCP A01 = Utils::Read(fileNameA01, lib, comm); - RCP A02 = Utils::Read(fileNameA02, lib, comm); - RCP A10 = Utils::Read(fileNameA10, lib, comm); - RCP A11 = Utils::Read(fileNameA11, lib, comm); - RCP A12 = Utils::Read(fileNameA12, lib, comm); - RCP A20 = Utils::Read(fileNameA20, lib, comm); - RCP A21 = Utils::Read(fileNameA21, lib, comm); - RCP A22 = Utils::Read(fileNameA22, lib, comm); - - std::cout << A00->isFillComplete() << std::endl; - - // Now we want to build A; - RCP VMap = A00->getRowMap(); - RCP PMap = A10->getRowMap(); - RCP MMap = A20->getRowMap(); - - size_t nv = VMap->getGlobalNumElements(); - size_t np = PMap->getGlobalNumElements(); - size_t nm = MMap->getGlobalNumElements(); - - RCP AMap = Xpetra::MapFactory::createUniformContigMap(Xpetra::UseTpetra, nv + np + nm, comm); - - size_t maxEntriesPerRow = 84; - RCP A = rcp(new CrsMatrixWrap(AMap, maxEntriesPerRow)); - - Teuchos::ArrayView colPtr; - Teuchos::ArrayView valPtr; - - A00->getLocalRowView(7, colPtr, valPtr); - - std::cout << "valPtr.size() = " << valPtr.size() << std::endl; - - A01->getLocalRowView(7, colPtr, valPtr); - - std::cout << "valPtr.size() = " << valPtr.size() << std::endl; - - // Loop over V rows - for (size_t VRow = 0; VRow < nv; VRow++) { - Teuchos::ArrayView colPtr; - Teuchos::ArrayView valPtr; - - A00->getLocalRowView(VRow, colPtr, valPtr); - - // Can be directly inserted! - A->insertGlobalValues(VRow, colPtr, valPtr); - - // Now do pressure column: - A01->getLocalRowView(VRow, colPtr, valPtr); - - Teuchos::ArrayRCP newColPtr(colPtr.size(), nv); - for (LO jj = 0; jj < colPtr.size(); jj++) { - newColPtr[jj] += colPtr[jj]; - } - - // Insert into A - A->insertGlobalValues(VRow, newColPtr.view(0, colPtr.size()), valPtr); - - // Now do magnetics column: - A02->getLocalRowView(VRow, colPtr, valPtr); - - newColPtr.clear(); - newColPtr.resize(colPtr.size(), nv + np); - for (LO jj = 0; jj < colPtr.size(); jj++) { - newColPtr[jj] += colPtr[jj]; - } - - // Insert into A - A->insertGlobalValues(VRow, newColPtr.view(0, colPtr.size()), valPtr); - } - - // Loop over P rows - for (size_t PRow = 0; PRow < np; PRow++) { - Teuchos::ArrayView colPtr; - Teuchos::ArrayView valPtr; - - A10->getLocalRowView(PRow, colPtr, valPtr); - - // Can be directly inserted! - A->insertGlobalValues(PRow + nv, colPtr, valPtr); - - // Now do pressure column: - A11->getLocalRowView(PRow, colPtr, valPtr); - - Teuchos::ArrayRCP newColPtr(colPtr.size(), nv); - for (LO jj = 0; jj < colPtr.size(); jj++) { - newColPtr[jj] += colPtr[jj]; - } - - // Insert into A - A->insertGlobalValues(PRow + nv, newColPtr.view(0, colPtr.size()), valPtr); - - // Now do magnetics column: - A12->getLocalRowView(PRow, colPtr, valPtr); - - newColPtr.clear(); - newColPtr.resize(colPtr.size(), nv + np); - for (LO jj = 0; jj < colPtr.size(); jj++) { - newColPtr[jj] += colPtr[jj]; - } - - // Insert into A - A->insertGlobalValues(PRow + nv, newColPtr.view(0, colPtr.size()), valPtr); - } - - // Loop over M rows - for (size_t MRow = 0; MRow < nm; MRow++) { - Teuchos::ArrayView colPtr; - Teuchos::ArrayView valPtr; - - A20->getLocalRowView(MRow, colPtr, valPtr); - - // Can be directly inserted! - A->insertGlobalValues(MRow + nv + np, colPtr, valPtr); - - // Now do pressure column: - A21->getLocalRowView(MRow, colPtr, valPtr); - - Teuchos::ArrayRCP newColPtr(colPtr.size(), nv); - for (LO jj = 0; jj < colPtr.size(); jj++) { - newColPtr[jj] += colPtr[jj]; - } - - // Insert into A - A->insertGlobalValues(MRow + nv + np, newColPtr.view(0, colPtr.size()), valPtr); - - // Now do magnetics column: - A22->getLocalRowView(MRow, colPtr, valPtr); - - newColPtr.clear(); - newColPtr.resize(colPtr.size(), nv + np); - for (LO jj = 0; jj < colPtr.size(); jj++) { - newColPtr[jj] += colPtr[jj]; - } - - // Insert into A - A->insertGlobalValues(MRow + nv + np, newColPtr.view(0, colPtr.size()), valPtr); - } - - A->fillComplete(); - - // Let's read in the element connectivity info: - GO totalFineElements = 32 * 32; - - RCP > fineGridVElements = rcp(new Teuchos::SerialDenseMatrix(totalFineElements, 18)); - RCP > fineGridPElements = rcp(new Teuchos::SerialDenseMatrix(totalFineElements, 4)); - RCP > fineGridMElements = rcp(new Teuchos::SerialDenseMatrix(totalFineElements, 9)); - - std::ifstream VElementFile("./Matrices/elements_0_0"); - std::ifstream PElementFile("./Matrices/elements_1_1"); - std::ifstream MElementFile("./Matrices/elements_2_2"); - - for (GO ii = 0; ii < totalFineElements; ii++) { - for (LO jj = 0; jj < 9; jj++) { - VElementFile >> (*fineGridVElements)(ii, 2 * jj); - VElementFile >> (*fineGridVElements)(ii, 2 * jj + 1); - - MElementFile >> (*fineGridMElements)(ii, jj); - } - - for (LO kk = 0; kk < 4; kk++) { - PElementFile >> (*fineGridPElements)(ii, kk); - } - } - VElementFile.close(); - PElementFile.close(); - MElementFile.close(); - - Hierarchy H; - H.setDefaultVerbLevel(Teuchos::VERB_NONE); - - RCP finest = H.GetLevel(); - finest->setDefaultVerbLevel(Teuchos::VERB_NONE); - - finest->Set("A", A); - finest->Set("A00", A00); - finest->Set("A01", A01); - finest->Set("A02", A02); - finest->Set("A10", A10); - finest->Set("A11", A11); - finest->Set("A12", A12); - finest->Set("A20", A20); - finest->Set("A21", A21); - finest->Set("A22", A22); - - // Set finegrid elements - finest->Set("VElementList", fineGridVElements); - finest->Set("PElementList", fineGridPElements); - finest->Set("MElementList", fineGridMElements); - - // Set count stuff for Vanka Smoother - finest->Set("NV", A00->getGlobalNumRows()); - finest->Set("NP", A10->getGlobalNumRows()); - finest->Set("NM", A20->getGlobalNumRows()); - - // Create a GeoInterpFactory - RCP geoInterp = rcp(new GeoInterpFactory()); - RCP coarseElementFact = rcp(new Q2Q1Q2CoarseGridFactory()); - RCP > rapFact = rcp(new MueLu::MHDRAPFactory()); - - RCP M = rcp(new FactoryManager()); - M->SetFactory("A", rapFact); - M->SetFactory("A00", rapFact); - M->SetFactory("A01", rapFact); - M->SetFactory("A02", rapFact); - M->SetFactory("A10", rapFact); - M->SetFactory("A11", rapFact); - M->SetFactory("A12", rapFact); - M->SetFactory("A20", rapFact); - M->SetFactory("A21", rapFact); - M->SetFactory("A22", rapFact); - M->SetFactory("VElementList", coarseElementFact); - M->SetFactory("PElementList", coarseElementFact); - M->SetFactory("MElementList", coarseElementFact); - M->SetFactory("PV", geoInterp); - M->SetFactory("PP", geoInterp); - M->SetFactory("PM", geoInterp); - M->SetFactory("P", geoInterp); - - H.Setup(*M, 0, 3); - - // Utils::Write("./output/BigAMat.mm",*A); - std::cout << "Hello world!\n"; - - success = true; - } - TEUCHOS_STANDARD_CATCH_STATEMENTS(verbose, std::cerr, success); - - return (success ? EXIT_SUCCESS : EXIT_FAILURE); -} diff --git a/packages/muelu/test/perf_tests_kokkos/Redirection.cpp b/packages/muelu/test/perf_tests_kokkos/Redirection.cpp index 2e085a260db9..8de091be5ee4 100644 --- a/packages/muelu/test/perf_tests_kokkos/Redirection.cpp +++ b/packages/muelu/test/perf_tests_kokkos/Redirection.cpp @@ -137,30 +137,8 @@ int main_(Teuchos::CommandLineProcessor &clp, Xpetra::UnderlyingLib &lib, int ar tm = Teuchos::null; } if (lib == Xpetra::UseEpetra) { -#ifdef HAVE_MUELU_EPETRA - typedef Epetra_CrsMatrix eCrsMatrix; - RCP eA = Utilities::Op2EpetraCrs(A); - TEUCHOS_TEST_FOR_EXCEPTION(eA.is_null(), MueLu::Exceptions::RuntimeError, - "A is not a Epetra CrsMatrix"); - - tm = rcp(new TimeMonitor(*TimeMonitor::getNewTimer("Loop #2: Tpetra/Epetra"))); - - for (int i = 0; i < loops; i++) { - for (LocalOrdinal row = 0; row < numRows; row++) { - int numEntries; - double *eValues; - int *eIndices; - - eA->ExtractMyRowView(row, numEntries, eValues, eIndices); - - validation += numEntries; - } - } - tm = Teuchos::null; -#else TEUCHOS_TEST_FOR_EXCEPTION(true, MueLu::Exceptions::RuntimeError, "Epetra is not available"); -#endif } std::cout << "validation = " << validation << std::endl; } diff --git a/packages/muelu/test/scaling/ComboPDriver.cpp b/packages/muelu/test/scaling/ComboPDriver.cpp index 909bbd012e63..b509add0198c 100644 --- a/packages/muelu/test/scaling/ComboPDriver.cpp +++ b/packages/muelu/test/scaling/ComboPDriver.cpp @@ -45,9 +45,7 @@ #include #include #include -#ifdef HAVE_MUELU_TPETRA #include -#endif #include // => This header defines Belos::XpetraOp #endif #define FOURBYFOUR diff --git a/packages/muelu/test/scaling/Driver.cpp b/packages/muelu/test/scaling/Driver.cpp index 39f2fd5d2053..6e3568e06af6 100644 --- a/packages/muelu/test/scaling/Driver.cpp +++ b/packages/muelu/test/scaling/Driver.cpp @@ -56,9 +56,6 @@ #include // => This header defines Belos::XpetraOp #include // => This header defines Belos::MueLuOp #include // => This header defines Belos::TpetraOp -#ifdef HAVE_MUELU_EPETRA -#include // => This header defines Belos::EpetraPrecOp -#endif #endif #ifdef HAVE_MUELU_CUDA @@ -77,10 +74,6 @@ #include #include -#ifdef HAVE_MUELU_EPETRA -#include "Xpetra_EpetraMultiVector.hpp" -#endif - /*********************************************************************/ #include "KokkosBlas1_abs_impl.hpp" diff --git a/packages/muelu/test/scaling/DriverCore.hpp b/packages/muelu/test/scaling/DriverCore.hpp index e04b9e51748b..8d1a3a7cd52a 100644 --- a/packages/muelu/test/scaling/DriverCore.hpp +++ b/packages/muelu/test/scaling/DriverCore.hpp @@ -45,9 +45,6 @@ extern void register_GmresSingleReduce(const bool verbose); } // namespace Impl } // namespace BelosTpetra -#ifdef HAVE_MUELU_EPETRA -#include // => This header defines Belos::EpetraPrecOp -#endif #endif // Cuda @@ -180,40 +177,6 @@ void PreconditionerSetup(Teuchos::RCP -struct Matvec_Wrapper { - static void UnwrapEpetra(Teuchos::RCP>& A, - Teuchos::RCP>& X, - Teuchos::RCP>& B, - Teuchos::RCP& Aepetra, - Teuchos::RCP& Xepetra, - Teuchos::RCP& Bepetra) { - throw std::runtime_error("Template parameter mismatch"); - } -}; - -template -struct Matvec_Wrapper { - static void UnwrapEpetra(Teuchos::RCP>& A, - Teuchos::RCP>& X, - Teuchos::RCP>& B, - Teuchos::RCP& Aepetra, - Teuchos::RCP& Xepetra, - Teuchos::RCP& Bepetra) { - typedef double SC; - typedef int LO; - typedef GlobalOrdinal GO; - typedef Tpetra::KokkosCompat::KokkosSerialWrapperNode NO; - Aepetra = Xpetra::Helpers::Op2EpetraCrs(A); - Xepetra = Teuchos::rcp(&Xpetra::toEpetra(*X), false); - Bepetra = Teuchos::rcp(&Xpetra::toEpetra(*B), false); - } -}; -#endif - //************************************************************************************* template void SystemSolve(Teuchos::RCP>& A, @@ -261,14 +224,6 @@ void SystemSolve(Teuchos::RCP Aepetra; - Teuchos::RCP Xepetra, Bepetra; - if (lib == Xpetra::UseEpetra) { - Matvec_Wrapper::UnwrapEpetra(A, X, B, Aepetra, Xepetra, Bepetra); - } -#endif - for (int solveno = 0; solveno <= numResolves; solveno++) { RCP tm = rcp(new TimeMonitor(*TimeMonitor::getNewTimer("Driver: 3 - LHS and RHS initialization"))); X->putScalar(zero); @@ -282,9 +237,6 @@ void SystemSolve(Teuchos::RCPapply(*Btpetra, *Xtpetra); -#if defined(HAVE_MUELU_EPETRA) && !defined(HAVE_MUELU_INST_COMPLEX_INT_INT) && !defined(HAVE_MUELU_INST_FLOAT_INT_INT) - if (lib == Xpetra::UseEpetra) Aepetra->Apply(*Bepetra, *Xepetra); -#endif // clear the cache (and don't time it) tm = Teuchos::null; int ttt = rand(); diff --git a/packages/muelu/test/scaling/ImportPerformance.cpp b/packages/muelu/test/scaling/ImportPerformance.cpp index a501130ce2e0..d4714c1275cf 100644 --- a/packages/muelu/test/scaling/ImportPerformance.cpp +++ b/packages/muelu/test/scaling/ImportPerformance.cpp @@ -37,11 +37,6 @@ #include #include -#ifdef HAVE_MUELU_EPETRA -#include -#include -#endif - #include #include @@ -67,269 +62,10 @@ inline void resize_doubles(int nold, int nnew, double*& d) { // ========================================================================= // ========================================================================= // ========================================================================= -#if defined(HAVE_MUELU_EPETRA) - -extern void MakeColMapAndReindexSort(int& NumRemoteColGIDs, int*& RemoteColindices, - std::vector& RemotePermuteIDs, std::vector& RemoteOwningPIDs); - -extern void MakeColMapAndReindexSort(int& NumRemoteColGIDs, long long*& RemoteColindices, - std::vector& RemotePermuteIDs, std::vector& RemoteOwningPIDs); - -void build_remote_pids(int MyPID, const std::vector& ColMapOwningPIDs, std::vector& RemotePIDs) { - // Presume the column map has Aztec ordering - int N = (int)ColMapOwningPIDs.size(); - int first_idx; - for (first_idx = 0; first_idx < N; first_idx++) - if (ColMapOwningPIDs[first_idx] != MyPID) - break; - - /* printf("[%d] ColMapOwningPIDs(%d) =",MyPID,(int)ColMapOwningPIDs.size()); - for(int i=0;i<(int)ColMapOwningPIDs.size(); i++) - printf("%d ",ColMapOwningPIDs[i]); - printf("\n");*/ - - // Make sure there are some non-local unknowns - if (first_idx == N) { - printf("[%d] No remotes\n", MyPID); - return; - } - - RemotePIDs.resize(ColMapOwningPIDs.size() - first_idx); - for (int i = first_idx; i < N; i++) - RemotePIDs[i - first_idx] = ColMapOwningPIDs[i]; - - /* printf("[%d] RemotePIDs(%d) =",MyPID,(int)RemotePIDs.size()); - for(int i=0;i<(int)RemotePIDs.size(); i++) - printf("%d ",RemotePIDs[i]); - printf("\n");*/ -} - -Epetra_Map* convert_lightweightmap_to_map(const EpetraExt::LightweightMap& A, const Epetra_Comm& Comm) { - Epetra_Map* Aout = 0; - if (A.GlobalIndicesInt()) { -#ifndef EPETRA_NO_32BIT_GLOBAL_INDICES - Aout = new Epetra_Map(-1, A.NumMyElements(), A.MyGlobalElements(), 0, Comm); -#endif - } else if (A.GlobalIndicesLongLong()) { -#ifndef EPETRA_NO_64BIT_GLOBAL_INDICES - Aout = new Epetra_Map((long long)-1, A.NumMyElements(), A.MyGlobalElements64(), (long long)0, Comm); -#endif - } - - return Aout; -} - -Epetra_CrsMatrix* convert_lightweightcrsmatrix_to_crsmatrix(const EpetraExt::LightweightCrsMatrix& A) { - auto tm = TimeMonitor::getNewTimer("OptimizedTransfer: Convert: MapConstructor"); - const Epetra_Comm& Comm = A.DomainMap_.Comm(); - - // Build Maps - Epetra_Map *RowMap, *ColMap; - if (A.use_lw) - RowMap = convert_lightweightmap_to_map(*A.RowMapLW_, Comm); - else - throw std::runtime_error("Only works in LW mode"); - ColMap = convert_lightweightmap_to_map(A.ColMap_, Comm); - Epetra_CrsMatrix* Aout = new Epetra_CrsMatrix(Copy, *RowMap, *ColMap, 0); - int N = RowMap->NumMyElements(); - int nnz = A.colind_.size(); - - tm = Teuchos::null; - // Copy pointers over - auto tm2 = TimeMonitor::getNewTimer("OptimizedTransfer: Convert: Data Copy"); - Epetra_IntSerialDenseVector& rowptr = Aout->ExpertExtractIndexOffset(); - Epetra_IntSerialDenseVector& colind = Aout->ExpertExtractIndices(); - double*& vals = Aout->ExpertExtractValues(); - rowptr.Resize(N + 1); - colind.Resize(nnz); - resize_doubles(0, nnz, vals); - - for (int i = 0; i < N + 1; i++) - rowptr[i] = A.rowptr_[i]; - - for (int i = 0; i < nnz; i++) { - colind[i] = A.colind_[i]; - vals[i] = A.vals_[i]; - } - tm2 = Teuchos::null; - auto tm3 = TimeMonitor::getNewTimer("OptimizedTransfer: Convert: BuildRemote"); - - // Get RemotePIDs - std::vector RemotePIDs_; - build_remote_pids(Comm.MyPID(), A.ColMapOwningPIDs_, RemotePIDs_); - - tm3 = Teuchos::null; - auto tm4 = TimeMonitor::getNewTimer("OptimizedTransfer: Convert: BuildImport"); - - // Importer build - const int* ExportLIDs = A.ExportLIDs_.size() ? &A.ExportLIDs_[0] : 0; - const int* ExportPIDs = A.ExportPIDs_.size() ? &A.ExportPIDs_[0] : 0; - const int* RemotePIDs = RemotePIDs_.size() ? &RemotePIDs_[0] : 0; - Epetra_Import* Importer = new Epetra_Import(*ColMap, A.DomainMap_, RemotePIDs_.size(), RemotePIDs, A.ExportLIDs_.size(), ExportLIDs, ExportPIDs); - - tm4 = Teuchos::null; - auto tm5 = TimeMonitor::getNewTimer("OptimizedTransfer: Convert: ESFC"); - - // ESFC - Aout->ExpertStaticFillComplete(A.DomainMap_, *RowMap, Importer, 0); - - // Cleanup - if (A.use_lw) delete RowMap; - delete ColMap; - - return Aout; -} - -#endif // ========================================================================= // ========================================================================= // ========================================================================= -#if defined(HAVE_MUELU_EPETRA) -bool epetra_check_importer_correctness(const Epetra_Import& A, const Epetra_Import& B) { - int MyPID = A.SourceMap().Comm().MyPID(); - bool is_correct = true; - - // Same - if (A.NumSameIDs() != B.NumSameIDs()) { - printf("[%d] NumSameIDs %d vs. %d\n", MyPID, A.NumSameIDs(), B.NumSameIDs()); - is_correct = false; - } - // Permutes - if (A.NumPermuteIDs() != B.NumPermuteIDs()) { - printf("[%d] NumPermuteIDs %d vs. %d\n", MyPID, A.NumPermuteIDs(), B.NumPermuteIDs()); - is_correct = false; - } else { - int N = A.NumPermuteIDs(); - bool error_detected = false; - for (int i = 0; !error_detected && i < N; i++) - error_detected = (A.PermuteFromLIDs()[i] != B.PermuteFromLIDs()[i]) || (A.PermuteToLIDs()[i] != B.PermuteToLIDs()[i]); - - if (error_detected) { - printf("[%d] A Permutes = ", MyPID); - for (int i = 0; i < N; i++) - printf("%d->%d ", A.PermuteFromLIDs()[i], A.PermuteToLIDs()[i]); - printf("\n[%d] B Permutes = ", MyPID); - for (int i = 0; i < N; i++) - printf("%d->%d ", B.PermuteFromLIDs()[i], B.PermuteToLIDs()[i]); - printf("\n"); - is_correct = false; - } - } - - // Remotes - if (A.NumRemoteIDs() != B.NumRemoteIDs()) { - printf("[%d] NumRemoteIDs %d vs. %d\n", MyPID, A.NumRemoteIDs(), B.NumRemoteIDs()); - is_correct = false; - } else { - int N = A.NumRemoteIDs(); - bool error_detected = false; - for (int i = 0; !error_detected && i < N; i++) - error_detected = A.RemoteLIDs()[i] != B.RemoteLIDs()[i]; - - if (error_detected) { - printf("[%d] A RemoteLIDs = ", MyPID); - for (int i = 0; i < N; i++) - printf("%d ", A.RemoteLIDs()[i]); - printf("\n[%d] B RemoteLIDs = ", MyPID); - for (int i = 0; i < N; i++) - printf("%d ", B.RemoteLIDs()[i]); - printf("\n"); - is_correct = false; - } - } - - // Exports - if (A.NumExportIDs() != B.NumExportIDs()) { - printf("[%d] NumExportIDs %d vs. %d\n", MyPID, A.NumExportIDs(), B.NumExportIDs()); - is_correct = false; - } else { - int N = A.NumExportIDs(); - bool error_detected = false; - for (int i = 0; !error_detected && i < N; i++) - error_detected = (A.ExportLIDs()[i] != B.ExportLIDs()[i]) || (A.ExportPIDs()[i] != B.ExportPIDs()[i]); - - if (error_detected) { - printf("[%d] A Exports(%d) = ", MyPID, A.NumExportIDs()); - for (int i = 0; i < N; i++) - printf("%d(%d)->%d ", A.ExportLIDs()[i], A.SourceMap().GID(A.ExportLIDs()[i]), A.ExportPIDs()[i]); - printf("\n[%d] B Exports(%d) = ", MyPID, B.NumExportIDs()); - for (int i = 0; i < N; i++) - printf("%d(%d)->%d ", B.ExportLIDs()[i], B.SourceMap().GID(A.ExportLIDs()[i]), B.ExportPIDs()[i]); - printf("\n"); - is_correct = false; - } - } - - // Message Counts - if (A.NumSend() != B.NumSend()) { - printf("[%d] NumSend %d vs. %d\n", MyPID, A.NumSend(), B.NumSend()); - is_correct = false; - } - if (A.NumRecv() != B.NumRecv()) { - printf("[%d] NumRecv %d vs. %d\n", MyPID, A.NumRecv(), B.NumRecv()); - is_correct = false; - } - -#ifdef HAVE_MPI - const Epetra_MpiDistributor& Ad = *dynamic_cast(&A.Distributor()); - const Epetra_MpiDistributor& Bd = *dynamic_cast(&B.Distributor()); - - if (Ad.MaxSendLength() != Bd.MaxSendLength()) { - printf("[%d] Distor.MaxSendLength %d vs. %d\n", MyPID, Ad.MaxSendLength(), Bd.MaxSendLength()); - is_correct = false; - } - if (Ad.TotalReceiveLength() != Bd.TotalReceiveLength()) { - printf("[%d] Distor.TotalReceiveLength %d vs. %d\n", MyPID, Ad.TotalReceiveLength(), Bd.TotalReceiveLength()); - is_correct = false; - } - - if (Ad.NumSends() != Bd.NumSends()) { - printf("[%d] Distor.NumSends %d vs. %d\n", MyPID, Ad.NumSends(), Bd.NumSends()); - is_correct = false; - } else { - int N = Ad.NumSends(); - bool error_detected = false; - for (int i = 0; !error_detected && i < N; i++) - error_detected = (Ad.ProcsTo()[i] != Bd.ProcsTo()[i]) || (Ad.LengthsTo()[i] != Bd.LengthsTo()[i]); - - if (error_detected) { - printf("[%d] Ad Sends = ", MyPID); - for (int i = 0; i < N; i++) - printf("%d->%d ", Ad.LengthsTo()[i], Ad.ProcsTo()[i]); - printf("\n[%d] Bd Sends = ", MyPID); - for (int i = 0; i < N; i++) - printf("%d->%d ", Bd.LengthsTo()[i], Bd.ProcsTo()[i]); - printf("\n"); - is_correct = false; - } - } - - if (Ad.NumReceives() != Bd.NumReceives()) { - printf("[%d] Distor.NumReceives %d vs. %d\n", MyPID, Ad.NumReceives(), Bd.NumReceives()); - is_correct = false; - } else { - int N = Ad.NumReceives(); - bool error_detected = false; - for (int i = 0; !error_detected && i < N; i++) - error_detected = (Ad.ProcsFrom()[i] != Bd.ProcsFrom()[i]) || (Ad.LengthsFrom()[i] != Bd.LengthsFrom()[i]); - - if (error_detected) { - printf("[%d] Ad Receives = ", MyPID); - for (int i = 0; i < N; i++) - printf("%d->%d ", Ad.LengthsFrom()[i], Ad.ProcsFrom()[i]); - printf("\n[%d] Bd Receives = ", MyPID); - for (int i = 0; i < N; i++) - printf("%d->%d ", Bd.LengthsFrom()[i], Bd.ProcsFrom()[i]); - printf("\n"); - is_correct = false; - } - } -#endif - - return is_correct; -} -#endif // if defined(HAVE_MUELU_EPETRA) // ========================================================================= // ========================================================================= @@ -367,57 +103,6 @@ void TestTransfer(Teuchos::RCPgetColMap(), Pu->getDomainMap()); Au->getComm()->barrier(); } else if (lib == Xpetra::UseEpetra) { -#if defined(HAVE_MUELU_EPETRA) - RCP Au = Utilities::Op2EpetraCrs(A); - RCP Pu = Utilities::Op2EpetraCrs(P); - if (Au->Comm().NumProc() == 1) return; - - // ================== - // Optimized Transfer - // ================== - // Build the LightweightCrsMatrix - - auto tm3 = TimeMonitor::getNewTimer("OptimizedTransfer: Import"); - EpetraExt::CrsMatrixStruct Pview; - bool SortGhosts = true; - - if (Au->RowMap().GlobalIndicesInt()) { -#ifndef EPETRA_NO_32BIT_GLOBAL_INDICES - EpetraExt::import_only(*Pu, Au->ColMap(), Pview, Au->Importer(), SortGhosts, "ImportPerf: "); -#endif - } else if (Au->RowMap().GlobalIndicesInt()) { -#ifndef EPETRA_NO_64BIT_GLOBAL_INDICES - EpetraExt::import_only(*Pu, Au->ColMap(), Pview, Au->Importer(), SortGhosts, "ImportPerf: "); -#endif - } - tm3 = Teuchos::null; - auto tm4 = TimeMonitor::getNewTimer("OptimizedTransfer: Convert"); - Epetra_CrsMatrix* Aopt = convert_lightweightcrsmatrix_to_crsmatrix(*Pview.importMatrix); - - Au->Comm().Barrier(); - // ================== - // Naive Transfer - // ================== - // Use the columnmap from Aopt and build an importer ex nihilo - tm4 = Teuchos::null; - auto tm5 = TimeMonitor::getNewTimer("NaiveTransfer: BuildImport"); - const Epetra_Map& NaiveColMap = Aopt->ColMap(); - Epetra_Import NaiveImport(NaiveColMap, Pu->DomainMap()); - - Au->Comm().Barrier(); - - // Check importer for correctness - fflush(stdout); - const Epetra_Import* OptImport = Aopt->Importer(); - bool is_correct = epetra_check_importer_correctness(NaiveImport, *OptImport); - fflush(stdout); - int is_OK_local = is_correct, is_OK_global; - Au->Comm().MinAll(&is_OK_local, &is_OK_global, 1); - if (!is_OK_global) throw std::runtime_error("Importer correctness test failed."); - - // Cleanup - delete Aopt; -#endif // defined(HAVE_MUELU_EPETRA) } } diff --git a/packages/muelu/test/scaling/TAFCPerformance.cpp b/packages/muelu/test/scaling/TAFCPerformance.cpp index e9fcad9df948..d7557e2c09c3 100644 --- a/packages/muelu/test/scaling/TAFCPerformance.cpp +++ b/packages/muelu/test/scaling/TAFCPerformance.cpp @@ -39,11 +39,6 @@ #include #include -#ifdef HAVE_MUELU_EPETRA -#include -#include -#include -#endif using Teuchos::RCP; using Teuchos::rcp; diff --git a/packages/muelu/test/structured/Driver_Structured.cpp b/packages/muelu/test/structured/Driver_Structured.cpp index 5b42573c1ba9..3997d9438b85 100644 --- a/packages/muelu/test/structured/Driver_Structured.cpp +++ b/packages/muelu/test/structured/Driver_Structured.cpp @@ -68,10 +68,6 @@ #include #include -#ifdef HAVE_MUELU_EPETRA -#include "Xpetra_EpetraMultiVector.hpp" -#endif - #include template diff --git a/packages/muelu/test/unit_tests/Adapters/BelosAdapters.cpp b/packages/muelu/test/unit_tests/Adapters/BelosAdapters.cpp index f7e78702c312..cc5e291e8d90 100644 --- a/packages/muelu/test/unit_tests/Adapters/BelosAdapters.cpp +++ b/packages/muelu/test/unit_tests/Adapters/BelosAdapters.cpp @@ -145,27 +145,6 @@ TEUCHOS_UNIT_TEST_TEMPLATE_4_DECL(BelosAdapters, XpetraOp_EpetraMV, Scalar, Loca MUELU_TESTING_LIMIT_SCOPE(Scalar, GlobalOrdinal, Node); out << "version: " << MueLu::Version() << std::endl; -#if defined(HAVE_MUELU_EPETRA) && defined(HAVE_MUELU_EPETRAEXT) && defined(HAVE_MUELU_IFPACK) && defined(HAVE_MUELU_AMESOS) - Xpetra::UnderlyingLib lib = TestHelpers::Parameters::getLib(); - RCP > p = rcp(new TestProblem(lib)); - - typedef Epetra_MultiVector MV; - typedef Belos::OperatorT OP; - - // Construct a Belos LinearProblem object - RCP belosOp = rcp(new Belos::XpetraOp(p->GetA())); - RCP belosPrec = rcp(new Belos::MueLuOp(p->GetH())); - - // X, B - RCP X = MueLu::Utilities::MV2NonConstEpetraMV(p->GetNewX0()); - RCP B = MueLu::Utilities::MV2NonConstEpetraMV(p->GetRHS()); - - // Run Belos - int numIters = MueLuTests::BelosAdaptersTest(belosOp, belosPrec, X, B, out, success); - - // Tests - TEST_EQUALITY(MueLuTests::BelosAdaptersTestResults(numIters, X, out, success), true); -#endif } // TEST: @@ -178,34 +157,6 @@ TEUCHOS_UNIT_TEST_TEMPLATE_4_DECL(BelosAdapters, BelosMultiVec_BelosMatrix, Scal MUELU_TESTING_LIMIT_SCOPE(Scalar, GlobalOrdinal, Node); out << "version: " << MueLu::Version() << std::endl; -#if defined(HAVE_MUELU_EPETRA) && defined(HAVE_MUELU_EPETRAEXT) && defined(HAVE_MUELU_IFPACK) && defined(HAVE_MUELU_AMESOS) - Xpetra::UnderlyingLib lib = TestHelpers::Parameters::getLib(); - RCP > p = rcp(new TestProblem(lib)); - - typedef Belos::MultiVec MV; - typedef Belos::Operator OP; - - // Construct a Belos LinearProblem object - RCP A = Utilities::Op2NonConstEpetraCrs(p->GetA()); - RCP belosOp = rcp(new Belos::EpetraOp(A)); - RCP belosPrec = rcp(new Belos::MueLuOp(p->GetH())); - - // X, B - RCP eX = Utilities::MV2NonConstEpetraMV(p->GetNewX0()); - RCP eB = Utilities::MV2NonConstEpetraMV(p->GetRHS()); - RCP X = rcp(new Belos::EpetraMultiVec(*eX)); - RCP B = rcp(new Belos::EpetraMultiVec(*eB)); - - // Run Belos - int numIters = MueLuTests::BelosAdaptersTest(belosOp, belosPrec, X, B, out, success); - - // Tests - TEST_EQUALITY(MueLuTests::BelosAdaptersTestResults(numIters, X, out, success), true); - - // TODO: this do not work. Is it a bug? - // double norm; - // eX->Norm2(&norm); -#endif } // TEST: @@ -218,7 +169,6 @@ TEUCHOS_UNIT_TEST_TEMPLATE_4_DECL(BelosAdapters, XpetraOp_TpetraMV, Scalar, Loca MUELU_TESTING_LIMIT_SCOPE(Scalar, GlobalOrdinal, Node); out << "version: " << MueLu::Version() << std::endl; -#if defined(HAVE_MUELU_IFPACK2) && defined(HAVE_MUELU_AMESOS2) Xpetra::UnderlyingLib lib = TestHelpers::Parameters::getLib(); RCP > p = rcp(new TestProblem(lib)); @@ -238,7 +188,6 @@ TEUCHOS_UNIT_TEST_TEMPLATE_4_DECL(BelosAdapters, XpetraOp_TpetraMV, Scalar, Loca // Tests TEST_EQUALITY(MueLuTests::BelosAdaptersTestResults(numIters, X, out, success), true); -#endif } // Instantiate the Tpetra and Xpetra based tests @@ -273,19 +222,6 @@ typedef Tpetra::KokkosCompat::KokkosOpenMPWrapperNode OpenMPNode; TEUCHOS_UNIT_TEST_TEMPLATE_4_INSTANT(BelosAdapters, XpetraOp_TpetraMV, double, int, LongLong, OpenMPNode) #endif -#if defined(HAVE_MUELU_EPETRA) -#include "Epetra_config.h" -#include "Xpetra_Map.hpp" // defines EpetraNode -typedef Xpetra::EpetraNode EpetraNode; -#ifndef EPETRA_NO_32BIT_GLOBAL_INDICES -TEUCHOS_UNIT_TEST_TEMPLATE_4_INSTANT(BelosAdapters, XpetraOp_EpetraMV, double, int, int, EpetraNode) -#endif -#ifndef EPETRA_NO_64BIT_GLOBAL_INDICES -// typedef long long int LongLong; -// TEUCHOS_UNIT_TEST_TEMPLATE_4_INSTANT(BelosAdapters, XpetraOp_EpetraMV, double, int, LongLong, EpetraNode) -#endif -#endif - } // namespace MueLuTests // TODO: norm test can be factorized, using Belos Adapter Norm function. diff --git a/packages/muelu/test/unit_tests/Adapters/CreatePreconditioner.cpp b/packages/muelu/test/unit_tests/Adapters/CreatePreconditioner.cpp index bcf3b145440c..d6b0abfef07a 100644 --- a/packages/muelu/test/unit_tests/Adapters/CreatePreconditioner.cpp +++ b/packages/muelu/test/unit_tests/Adapters/CreatePreconditioner.cpp @@ -31,10 +31,6 @@ #include "MueLu_CreateTpetraPreconditioner.hpp" #include "MueLu_TpetraOperator.hpp" -#ifdef HAVE_MUELU_EPETRA -#include "MueLu_CreateEpetraPreconditioner.hpp" -#include "MueLu_EpetraOperator.hpp" -#endif // #endif @@ -104,61 +100,7 @@ TEUCHOS_UNIT_TEST_TEMPLATE_4_DECL(PetraOperator, CreatePreconditioner, Scalar, L #endif // #if defined(HAVE_MUELU_TPETRA_INST_INT_INT) } else if (lib == Xpetra::UseEpetra) { -#ifdef HAVE_MUELU_EPETRA - - // Matrix - GO nx = 1000; - RCP Op = TestHelpers::TestFactory::Build1DPoisson(nx * comm->getSize(), lib); - RCP map = Op->getRowMap(); - - // Normalized RHS - RCP RHS1 = MultiVectorFactory::Build(map, 1); - RHS1->setSeed(846930886); - RHS1->randomize(); - Teuchos::Array::magnitudeType> norms(1); - RHS1->norm2(norms); - RHS1->scale(1 / norms[0]); - - // Zero initial guess - RCP X1 = MultiVectorFactory::Build(Op->getRowMap(), 1); - X1->putScalar(Teuchos::ScalarTraits::zero()); - -#if defined(HAVE_MUELU_ZOLTAN) && defined(HAVE_MPI) - Teuchos::ParameterList galeriList; - galeriList.set("nx", nx); - RCP coordinates = Galeri::Xpetra::Utils::CreateCartesianCoordinates("1D", Op->getRowMap(), galeriList); - RCP nullspace = Xpetra::MultiVectorFactory::Build(Op->getDomainMap(), 1); - nullspace->putScalar(Teuchos::ScalarTraits::one()); - - RCP epA = Utils::Op2NonConstEpetraCrs(Op); - - RCP eH = MueLu::CreateEpetraPreconditioner(epA, xmlFileName); - - eH->Apply(*(Utils::MV2EpetraMV(RHS1)), *(Utils::MV2NonConstEpetraMV(X1))); - out << "after apply, ||b-A*x||_2 = " << std::setiosflags(std::ios::fixed) << std::setprecision(10) << Utils::ResidualNorm(*Op, *X1, *RHS1) << std::endl; - - xmlFileName = "testWithRebalance.xml"; - - RCP epcoordinates = MueLu::Utilities::MV2NonConstEpetraMV(coordinates); - RCP epnullspace = Utils::MV2NonConstEpetraMV(nullspace); - - Teuchos::ParameterList paramList; - Teuchos::updateParametersFromXmlFileAndBroadcast(xmlFileName, Teuchos::Ptr(¶mList), *map->getComm()); - Teuchos::ParameterList& userParamList = paramList.sublist("user data"); - userParamList.set >("Coordinates", epcoordinates); - userParamList.set >("Nullspace", epnullspace); - - eH = MueLu::CreateEpetraPreconditioner(epA, paramList); - - X1->putScalar(Teuchos::ScalarTraits::zero()); - eH->Apply(*(Utils::MV2EpetraMV(RHS1)), *(Utils::MV2NonConstEpetraMV(X1))); - out << "after apply, ||b-A*x||_2 = " << std::setiosflags(std::ios::fixed) << std::setprecision(10) << Utils::ResidualNorm(*Op, *X1, *RHS1) << std::endl; - -#endif - -#else std::cout << "Skip PetraOperator::CreatePreconditioner: Epetra is not available" << std::endl; -#endif } else { TEUCHOS_TEST_FOR_EXCEPTION(true, MueLu::Exceptions::InvalidArgument, "Unknown Xpetra lib"); @@ -242,54 +184,7 @@ TEUCHOS_UNIT_TEST_TEMPLATE_4_DECL(PetraOperator, CreatePreconditioner_XMLOnList, #endif // #if defined(HAVE_MUELU_TPETRA_INST_INT_INT) } else if (lib == Xpetra::UseEpetra) { -#ifdef HAVE_MUELU_EPETRA - // Matrix - GO nx = 1000; - RCP Op = TestHelpers::TestFactory::Build1DPoisson(nx * comm->getSize(), lib); - RCP map = Op->getRowMap(); - - // Normalized RHS - RCP RHS1 = MultiVectorFactory::Build(map, 1); - RHS1->setSeed(846930886); - RHS1->randomize(); - Teuchos::Array::magnitudeType> norms(1); - RHS1->norm2(norms); - RHS1->scale(1 / norms[0]); - - // Zero initial guess - RCP X1 = MultiVectorFactory::Build(Op->getRowMap(), 1); - X1->putScalar(Teuchos::ScalarTraits::zero()); - -#if defined(HAVE_MUELU_ZOLTAN) && defined(HAVE_MPI) - Teuchos::ParameterList galeriList; - galeriList.set("nx", nx); - RCP coordinates = Galeri::Xpetra::Utils::CreateCartesianCoordinates("1D", Op->getRowMap(), galeriList); - RCP nullspace = Xpetra::MultiVectorFactory::Build(Op->getDomainMap(), 1); - nullspace->putScalar(Teuchos::ScalarTraits::one()); - - RCP epA = Utils::Op2NonConstEpetraCrs(Op); - - RCP eH = MueLu::CreateEpetraPreconditioner(epA, mylist); - - eH->Apply(*(Utils::MV2EpetraMV(RHS1)), *(Utils::MV2NonConstEpetraMV(X1))); - out << "after apply, ||b-A*x||_2 = " << std::setiosflags(std::ios::fixed) << std::setprecision(10) << Utils::ResidualNorm(*Op, *X1, *RHS1) << std::endl; - - mylist.set("xml parameter file", "testWithRebalance.xml"); - - RCP epcoordinates = MueLu::Utilities::MV2NonConstEpetraMV(coordinates); - RCP epnullspace = Utils::MV2NonConstEpetraMV(nullspace); - - Teuchos::ParameterList paramList = mylist; - Teuchos::ParameterList& userParamList = paramList.sublist("user data"); - userParamList.set >("Coordinates", epcoordinates); - userParamList.set >("Nullspace", epnullspace); - eH = MueLu::CreateEpetraPreconditioner(epA, paramList); - -#endif - -#else std::cout << "Skip PetraOperator::CreatePreconditioner_XMLOnList: Epetra is not available" << std::endl; -#endif } else { TEUCHOS_TEST_FOR_EXCEPTION(true, MueLu::Exceptions::InvalidArgument, "Unknown Xpetra lib"); @@ -377,64 +272,7 @@ TEUCHOS_UNIT_TEST_TEMPLATE_4_DECL(PetraOperator, CreatePreconditioner_PDESystem, #endif // #if defined(HAVE_MUELU_TPETRA_INST_INT_INT) } else if (lib == Xpetra::UseEpetra) { -#ifdef HAVE_MUELU_EPETRA - int numPDEs = 3; - - // Matrix - GO nx = 972; - RCP Op = TestHelpers::TestFactory::Build1DPoisson(nx * comm->getSize(), lib); - RCP map = Op->getRowMap(); - - Teuchos::ParameterList clist; - clist.set("nx", (nx * comm->getSize()) / numPDEs); - RCP cmap = MapFactory::Build(lib, Teuchos::as((nx * comm->getSize()) / numPDEs), Teuchos::as(0), comm); - RCP coordinates = Galeri::Xpetra::Utils::CreateCartesianCoordinates("1D", cmap, clist); - RCP nullspace = Xpetra::MultiVectorFactory::Build(Op->getDomainMap(), numPDEs); - if (numPDEs == 1) { - nullspace->putScalar(Teuchos::ScalarTraits::one()); - } else { - for (int i = 0; i < numPDEs; i++) { - Teuchos::ArrayRCP nsData = nullspace->getDataNonConst(i); - for (int j = 0; j < nsData.size(); j++) { - GlobalOrdinal GID = Op->getDomainMap()->getGlobalElement(j) - Op->getDomainMap()->getIndexBase(); - if ((GID - i) % numPDEs == 0) - nsData[j] = Teuchos::ScalarTraits::one(); - } - } - } - - // Normalized RHS - RCP RHS1 = MultiVectorFactory::Build(Op->getRowMap(), 1); - RHS1->setSeed(846930886); - RHS1->randomize(); - Teuchos::Array::magnitudeType> norms(1); - RHS1->norm2(norms); - RHS1->scale(1 / norms[0]); - - // Zero initial guess - RCP X1 = MultiVectorFactory::Build(Op->getRowMap(), 1); - X1->putScalar(Teuchos::ScalarTraits::zero()); - - RCP epA = MueLu::Utilities::Op2NonConstEpetraCrs(Op); - RCP epcoordinates = MueLu::Utilities::MV2NonConstEpetraMV(coordinates); - RCP epnullspace = Utils::MV2NonConstEpetraMV(nullspace); - - Teuchos::ParameterList paramList; - Teuchos::updateParametersFromXmlFileAndBroadcast(xmlFileName, - Teuchos::Ptr(¶mList), - *map->getComm()); - paramList.set("use kokkos refactor", false); // Done to avoid having kokkos factories called with Epetra - Teuchos::ParameterList& userParamList = paramList.sublist("user data"); - userParamList.set >("Coordinates", epcoordinates); - userParamList.set >("Nullspace", epnullspace); - RCP eH = MueLu::CreateEpetraPreconditioner(epA, paramList); - - eH->Apply(*(Utils::MV2EpetraMV(RHS1)), *(Utils::MV2NonConstEpetraMV(X1))); - out << "after apply, ||b-A*x||_2 = " << std::setiosflags(std::ios::fixed) << std::setprecision(10) << Utils::ResidualNorm(*Op, *X1, *RHS1) << std::endl; - -#else std::cout << "Skip PetraOperator::CreatePreconditioner_PDESystem: Epetra is not available" << std::endl; -#endif } else { TEUCHOS_TEST_FOR_EXCEPTION(true, MueLu::Exceptions::InvalidArgument, "Unknown Xpetra lib"); } @@ -497,45 +335,7 @@ TEUCHOS_UNIT_TEST_TEMPLATE_4_DECL(PetraOperator, ReusePreconditioner, Scalar, Lo #endif // #if defined(HAVE_MUELU_TPETRA_INST_INT_INT) } else if (lib == Xpetra::UseEpetra) { -#ifdef HAVE_MUELU_EPETRA - // Matrix - GO nx = 1000; - RCP Op = TestHelpers::TestFactory::Build1DPoisson(nx * comm->getSize(), lib); - RCP map = Op->getRowMap(); - - // Normalized RHS - RCP RHS1 = MultiVectorFactory::Build(Op->getRowMap(), 1); - RHS1->setSeed(846930886); - RHS1->randomize(); - Teuchos::Array::magnitudeType> norms(1); - RHS1->norm2(norms); - RHS1->scale(1 / norms[0]); - - // Zero initial guess - RCP X1 = MultiVectorFactory::Build(Op->getRowMap(), 1); - X1->putScalar(Teuchos::ScalarTraits::zero()); - - RCP epA = MueLu::Utilities::Op2NonConstEpetraCrs(Op); - - Teuchos::ParameterList paramList; - Teuchos::updateParametersFromXmlFileAndBroadcast(xmlFileName, - Teuchos::Ptr(¶mList), - *map->getComm()); - paramList.set("use kokkos refactor", false); - RCP eH = MueLu::CreateEpetraPreconditioner(epA, paramList); - - eH->Apply(*(Utils::MV2EpetraMV(RHS1)), *(Utils::MV2NonConstEpetraMV(X1))); - out << "after apply, ||b-A*x||_2 = " << std::setiosflags(std::ios::fixed) << std::setprecision(10) << Utils::ResidualNorm(*Op, *X1, *RHS1) << std::endl; - - // Reuse preconditioner - MueLu::ReuseEpetraPreconditioner(epA, *eH); - - X1->putScalar(Teuchos::ScalarTraits::zero()); - eH->Apply(*(Utils::MV2EpetraMV(RHS1)), *(Utils::MV2NonConstEpetraMV(X1))); - out << "after apply, ||b-A*x||_2 = " << std::setiosflags(std::ios::fixed) << std::setprecision(10) << Utils::ResidualNorm(*Op, *X1, *RHS1) << std::endl; -#else std::cout << "Skip PetraOperator::ReusePreconditioner: Epetra is not available" << std::endl; -#endif } else { TEUCHOS_TEST_FOR_EXCEPTION(true, MueLu::Exceptions::InvalidArgument, "Unknown Xpetra lib"); @@ -604,45 +404,7 @@ TEUCHOS_UNIT_TEST_TEMPLATE_4_DECL(PetraOperator, ReusePreconditioner2, Scalar, L tH->apply(*(Utils::MV2TpetraMV(RHS1)), *(Utils::MV2NonConstTpetraMV(X1))); out << "after apply, ||b-A*x||_2 = " << std::setiosflags(std::ios::fixed) << std::setprecision(10) << Utils::ResidualNorm(*Op, *X1, *RHS1) << std::endl; } else if (lib == Xpetra::UseEpetra) { -#ifdef HAVE_MUELU_EPETRA - // Matrix - std::string matrixFile("TestMatrices/fuego0.mm"); - RCP rowmap = MapFactory::Build(lib, Teuchos::as(1500), Teuchos::as(0), comm); - RCP Op = Xpetra::IO::Read(matrixFile, rowmap, null, null, null); - RCP map = Op->getRowMap(); - - // Normalized RHS - RCP RHS1 = MultiVectorFactory::Build(Op->getRowMap(), 1); - RHS1->setSeed(846930886); - RHS1->randomize(); - Teuchos::Array::magnitudeType> norms(1); - RHS1->norm2(norms); - RHS1->scale(1 / norms[0]); - - // Zero initial guess - RCP X1 = MultiVectorFactory::Build(Op->getRowMap(), 1); - X1->putScalar(Teuchos::ScalarTraits::zero()); - - params.set("use kokkos refactor", false); - RCP epA = MueLu::Utilities::Op2NonConstEpetraCrs(Op); - RCP eH = MueLu::CreateEpetraPreconditioner(epA, params); - - eH->Apply(*(Utils::MV2EpetraMV(RHS1)), *(Utils::MV2NonConstEpetraMV(X1))); - out << "after apply, ||b-A*x||_2 = " << std::setiosflags(std::ios::fixed) << std::setprecision(10) << Utils::ResidualNorm(*Op, *X1, *RHS1) << std::endl; - - // Reuse preconditioner - - matrixFile = "TestMatrices/fuego1.mm"; - RCP Op2 = Xpetra::IO::Read(matrixFile, rowmap, null, null, null); - epA = MueLu::Utilities::Op2NonConstEpetraCrs(Op); - MueLu::ReuseEpetraPreconditioner(epA, *eH); - - X1->putScalar(Teuchos::ScalarTraits::zero()); - eH->Apply(*(Utils::MV2EpetraMV(RHS1)), *(Utils::MV2NonConstEpetraMV(X1))); - out << "after apply, ||b-A*x||_2 = " << std::setiosflags(std::ios::fixed) << std::setprecision(10) << Utils::ResidualNorm(*Op, *X1, *RHS1) << std::endl; -#else std::cout << "Skip PetraOperator::ReusePreconditioner: Epetra is not available" << std::endl; -#endif } else { TEUCHOS_TEST_FOR_EXCEPTION(true, MueLu::Exceptions::InvalidArgument, "Unknown Xpetra lib"); diff --git a/packages/muelu/test/unit_tests/Adapters/TpetraOperatorAdapter.cpp b/packages/muelu/test/unit_tests/Adapters/TpetraOperatorAdapter.cpp index 5e86c7be2a76..4a413788fb88 100644 --- a/packages/muelu/test/unit_tests/Adapters/TpetraOperatorAdapter.cpp +++ b/packages/muelu/test/unit_tests/Adapters/TpetraOperatorAdapter.cpp @@ -37,7 +37,6 @@ TEUCHOS_UNIT_TEST_TEMPLATE_4_DECL(TpetraOperator, Apply, Scalar, LocalOrdinal, G MUELU_TESTING_LIMIT_SCOPE(Scalar, GlobalOrdinal, Node); out << "version: " << MueLu::Version() << std::endl; -#if defined(HAVE_MUELU_IFPACK2) && defined(HAVE_MUELU_AMESOS2) typedef MueLu::Utilities Utils; typedef MueLu::TpetraOperator muelu_tpetra_operator_type; typedef typename Teuchos::ScalarTraits::magnitudeType magnitude_type; @@ -109,9 +108,6 @@ TEUCHOS_UNIT_TEST_TEMPLATE_4_DECL(TpetraOperator, Apply, Scalar, LocalOrdinal, G } else { out << "This test is enabled only for linAlgebra=Tpetra." << std::endl; } -#else - out << "Skipping test because some required packages are not enabled (Tpetra, Ifpack2, Amesos2)." << std::endl; -#endif } // Apply TEUCHOS_UNIT_TEST_TEMPLATE_4_DECL(TpetraOperator, Getters, Scalar, LocalOrdinal, GlobalOrdinal, Node) { @@ -120,7 +116,6 @@ TEUCHOS_UNIT_TEST_TEMPLATE_4_DECL(TpetraOperator, Getters, Scalar, LocalOrdinal, MUELU_TESTING_LIMIT_SCOPE(Scalar, GlobalOrdinal, Node); out << "version: " << MueLu::Version() << std::endl; -#if defined(HAVE_MUELU_IFPACK2) && defined(HAVE_MUELU_AMESOS2) using Utils = MueLu::Utilities; using TpetraOperatorType = MueLu::TpetraOperator; using MagnitudeType = typename Teuchos::ScalarTraits::magnitudeType; @@ -169,9 +164,6 @@ TEUCHOS_UNIT_TEST_TEMPLATE_4_DECL(TpetraOperator, Getters, Scalar, LocalOrdinal, TEST_EQUALITY(tO->hasTransposeApply(), false); } } -#else - out << "Skipping test because some required packages are not enabled (Tpetra, Ifpack2, Amesos2)." << std::endl; -#endif } #define MUELU_ETI_GROUP(Scalar, LocalOrdinal, GlobalOrdinal, Node) \ diff --git a/packages/muelu/test/unit_tests/BlockedRepartition.cpp b/packages/muelu/test/unit_tests/BlockedRepartition.cpp index b5357021bef6..6af9d39c4705 100644 --- a/packages/muelu/test/unit_tests/BlockedRepartition.cpp +++ b/packages/muelu/test/unit_tests/BlockedRepartition.cpp @@ -240,34 +240,6 @@ TEUCHOS_UNIT_TEST_TEMPLATE_4_DECL(BlockedRepartition, BlockedRAPFactory, Scalar, Amalg11Fact->SetFactory("A", A11Fact); Amalg22Fact->SetFactory("A", A22Fact); -#ifdef HAVE_MUELU_ISORROPIA - RCP Rep11Interface = Teuchos::null; - if (TestHelpers::Parameters::getLib() == Xpetra::UseEpetra) { - RCP Iso11Interface = Teuchos::rcp(new IsorropiaInterface()); - Iso11Interface->SetFactory("A", A11Fact); - Iso11Interface->SetFactory("number of partitions", RepHeuFact); - Iso11Interface->SetFactory("UnAmalgamationInfo", Amalg11Fact); - - Rep11Interface = Teuchos::rcp(new RepartitionInterface()); - Rep11Interface->SetFactory("A", A11Fact); - Rep11Interface->SetFactory("number of partitions", RepHeuFact); - Rep11Interface->SetFactory("AmalgamatedPartition", Iso11Interface); - } else { - // we are in Tpetra mode (even though Isorropia would be available) - // create dummy "Partition" array - RCP > decomposition = Xpetra::VectorFactory::Build(Op11->getRowMap(), false); - ArrayRCP decompEntries = decomposition->getDataNonConst(0); - for (size_t r = 0; r < decomposition->getMap()->getLocalNumElements(); r++) { - if (r % 2 == 0) - decompEntries[r] = 0; - else - decompEntries[r] = 1; - } - Rep11Interface = Teuchos::rcp(new SubBlockAFactory()); - levelTwo->Request("Partition", Rep11Interface.get()); - levelTwo->Set("Partition", decomposition, Rep11Interface.get()); - } -#else // create dummy "Partition" array RCP > decomposition = Xpetra::VectorFactory::Build(Op11->getRowMap(), false); ArrayRCP decompEntries = decomposition->getDataNonConst(0); @@ -280,7 +252,6 @@ TEUCHOS_UNIT_TEST_TEMPLATE_4_DECL(BlockedRepartition, BlockedRAPFactory, Scalar, RCP Rep11Interface = Teuchos::rcp(new SubBlockAFactory()); levelTwo->Request("Partition", Rep11Interface.get()); levelTwo->Set("Partition", decomposition, Rep11Interface.get()); -#endif RCP Rep11Factory = Teuchos::rcp(new RepartitionFactory); Rep11Factory->SetFactory("A", A11Fact); @@ -500,34 +471,6 @@ TEUCHOS_UNIT_TEST_TEMPLATE_4_DECL(BlockedRepartition, BlockedRAPFactoryWithRestr Amalg11Fact->SetFactory("A", A11Fact); Amalg22Fact->SetFactory("A", A22Fact); -#ifdef HAVE_MUELU_ISORROPIA - RCP Rep11Interface = Teuchos::null; - if (TestHelpers::Parameters::getLib() == Xpetra::UseEpetra) { - RCP Iso11Interface = Teuchos::rcp(new IsorropiaInterface()); - Iso11Interface->SetFactory("A", A11Fact); - Iso11Interface->SetFactory("number of partitions", RepHeuFact); - Iso11Interface->SetFactory("UnAmalgamationInfo", Amalg11Fact); - - Rep11Interface = Teuchos::rcp(new RepartitionInterface()); - Rep11Interface->SetFactory("A", A11Fact); - Rep11Interface->SetFactory("number of partitions", RepHeuFact); - Rep11Interface->SetFactory("AmalgamatedPartition", Iso11Interface); - } else { - // we are in Tpetra mode (even though Isorropia would be available) - // create dummy "Partition" array - RCP > decomposition = Xpetra::VectorFactory::Build(Op11->getRowMap(), false); - ArrayRCP decompEntries = decomposition->getDataNonConst(0); - for (size_t r = 0; r < decomposition->getMap()->getLocalNumElements(); r++) { - if (r % 2 == 0) - decompEntries[r] = 0; - else - decompEntries[r] = 1; - } - Rep11Interface = Teuchos::rcp(new SubBlockAFactory()); - levelTwo->Request("Partition", Rep11Interface.get()); - levelTwo->Set("Partition", decomposition, Rep11Interface.get()); - } -#else // create dummy "Partition" array RCP > decomposition = Xpetra::VectorFactory::Build(Op11->getRowMap(), false); ArrayRCP decompEntries = decomposition->getDataNonConst(0); @@ -540,7 +483,6 @@ TEUCHOS_UNIT_TEST_TEMPLATE_4_DECL(BlockedRepartition, BlockedRAPFactoryWithRestr RCP Rep11Interface = Teuchos::rcp(new SubBlockAFactory()); levelTwo->Request("Partition", Rep11Interface.get()); levelTwo->Set("Partition", decomposition, Rep11Interface.get()); -#endif RCP Rep11Factory = Teuchos::rcp(new RepartitionFactory); Rep11Factory->SetFactory("A", A11Fact); @@ -636,300 +578,6 @@ TEUCHOS_UNIT_TEST_TEMPLATE_4_DECL(BlockedRepartition, BlockedRAPFactoryWithRestr } // end if rebA != Teuchos::null } // BlockedRAPFactoryWithRestriction -#if defined(HAVE_MUELU_ISORROPIA) && defined(HAVE_MUELU_ZOLTAN) -TEUCHOS_UNIT_TEST_TEMPLATE_4_DECL(BlockedRepartition, BlockedRAPFactoryWithDiagonal, Scalar, LocalOrdinal, GlobalOrdinal, Node) { -#include "MueLu_UseShortNames.hpp" - MUELU_TESTING_SET_OSTREAM; - MUELU_TESTING_LIMIT_SCOPE(Scalar, GlobalOrdinal, NO); - out << "version: " << MueLu::Version() << std::endl; - - RCP > comm = TestHelpers::Parameters::getDefaultComm(); - - if (comm->getSize() == 1) { - out << "Skip BlockedRepartion test in serial case" << std::endl; - return; - } - - // int NumProcs = comm->getSize(); // number of procs used before rebalancing - - /**********************************************************************************/ - /* CREATE INITIAL MATRIX */ - /**********************************************************************************/ - RCP bigMap; - RCP map1; - RCP map2; - GO numElements = 400; - GO numElements1 = 200; - GO numElements2 = 200; - - Xpetra::UnderlyingLib lib = MueLuTests::TestHelpers::Parameters::getLib(); - - // the test matrix has to be a nxn block matrix with quadratic blocks - // where the subblocks use consequent numbering of global DOF ids. - std::vector stridingInfo; - stridingInfo.push_back(1); - - map1 = StridedMapFactory::Build(lib, numElements1, 0, stridingInfo, comm); - map2 = StridedMapFactory::Build(lib, numElements2, 0, stridingInfo, comm, -1, numElements1); - - std::vector localGids; // vector with all local GIDs on cur proc - Teuchos::ArrayView map1eleList = map1->getLocalElementList(); // append all local gids from map1 and map2 - localGids.insert(localGids.end(), map1eleList.begin(), map1eleList.end()); - Teuchos::ArrayView map2eleList = map2->getLocalElementList(); - localGids.insert(localGids.end(), map2eleList.begin(), map2eleList.end()); - Teuchos::ArrayView eleList(&localGids[0], localGids.size()); - bigMap = StridedMapFactory::Build(lib, numElements, eleList, 0, stridingInfo, comm); // create full big map (concatenation of map1 and map2) - std::vector > maps; - maps.push_back(map1); - maps.push_back(map2); - - Teuchos::RCP > mapExtractor = Xpetra::MapExtractorFactory::Build(bigMap, maps); - - RCP Op11 = GenerateProblemMatrix(map1, map1, 2, -1, -1); - RCP Op12 = GenerateProblemMatrix(map1, map2, 1, 0, 0); - RCP Op21 = GenerateProblemMatrix(map2, map1, 1, 0, 0); - RCP Op22 = GenerateProblemMatrix(map2, map2, 3, -2, -1); - - // store output of simple MV products for OpIJ - RCP test11 = VectorFactory::Build(Op11->getDomainMap()); - test11->putScalar(1.0); - RCP test12 = VectorFactory::Build(Op12->getDomainMap()); - test12->putScalar(1.0); - RCP test21 = VectorFactory::Build(Op21->getDomainMap()); - test21->putScalar(1.0); - RCP test22 = VectorFactory::Build(Op22->getDomainMap()); - test22->putScalar(1.0); - RCP res11 = VectorFactory::Build(Op11->getRangeMap()); - RCP res12 = VectorFactory::Build(Op12->getRangeMap()); - RCP res21 = VectorFactory::Build(Op21->getRangeMap()); - RCP res22 = VectorFactory::Build(Op22->getRangeMap()); - Op11->apply(*test11, *res11); - Op12->apply(*test12, *res12); - Op21->apply(*test21, *res21); - Op22->apply(*test22, *res22); - - // build blocked operator - Teuchos::RCP > bOp = Teuchos::rcp(new Xpetra::BlockedCrsMatrix(mapExtractor, mapExtractor, 10)); - - bOp->setMatrix(0, 0, Op11); - bOp->setMatrix(0, 1, Op12); - bOp->setMatrix(1, 0, Op21); - bOp->setMatrix(1, 1, Op22); - bOp->fillComplete(); - TEST_EQUALITY(bOp != Teuchos::null, true); - TEST_EQUALITY(bOp->getGlobalNumEntries(), 2392); - - // coordinates - RCP::magnitudeType, LO, GO, NO> > coord = Xpetra::MultiVectorFactory::magnitudeType, LO, GO, NO>::Build(bOp->getFullRangeMap(), 1); - int PID = comm->getRank(); - // GH: scope data manipulation because we should not let a pointer to this data live once we call MueLu - { - Teuchos::ArrayRCP::magnitudeType> coordData = coord->getDataNonConst(0); - for (size_t i = 0; i < (size_t)coordData.size(); ++i) - coordData[i] = PID + (typename Teuchos::ScalarTraits::magnitudeType)i / coordData.size(); - } - // nullspace - RCP nullspace = MultiVectorFactory::Build(bOp->getFullRangeMap(), 1); - Teuchos::ArrayRCP nspData = nullspace->getDataNonConst(0); - for (size_t i = 0; i < (size_t)nspData.size(); i++) - nspData[i] = 1.0; - - // Grab sub-blocks for the Tobias-style goodies - RCP nullspace1 = mapExtractor->ExtractVector(nullspace, 0); - RCP nullspace2 = mapExtractor->ExtractVector(nullspace, 1); - - // build hierarchy - Hierarchy H; - H.SetMaxCoarseSize(10); // FIXME: At present this does not work past two levels - RCP levelOne = H.GetLevel(); - levelOne->Set("A", Teuchos::rcp_dynamic_cast(bOp)); // set blocked operator - levelOne->Set("Coordinates", coord); - levelOne->Set("Nullspace1", nullspace1); - levelOne->Set("Nullspace2", nullspace2); - - // Define the operator's subblocks - RCP A11Fact = Teuchos::rcp(new SubBlockAFactory()); - A11Fact->SetFactory("A", MueLu::NoFactory::getRCP()); - A11Fact->SetParameter("block row", Teuchos::ParameterEntry(0)); - A11Fact->SetParameter("block col", Teuchos::ParameterEntry(0)); - RCP A22Fact = Teuchos::rcp(new SubBlockAFactory()); - A22Fact->SetFactory("A", MueLu::NoFactory::getRCP()); - A22Fact->SetParameter("block row", Teuchos::ParameterEntry(1)); - A22Fact->SetParameter("block col", Teuchos::ParameterEntry(1)); - - // Create smoothers for each block - std::string ifpackType; - Teuchos::ParameterList ifpackList; - ifpackList.set("relaxation: sweeps", (LO)5); - ifpackList.set("relaxation: damping factor", (SC)1.0); - ifpackType = "RELAXATION"; - ifpackList.set("relaxation: type", "Symmetric Gauss-Seidel"); - RCP smoProto11 = rcp(new TrilinosSmoother(ifpackType, ifpackList, 0)); - smoProto11->SetFactory("A", A11Fact); - RCP smoProto22 = rcp(new TrilinosSmoother(ifpackType, ifpackList, 0)); - smoProto22->SetFactory("A", A22Fact); - - RCP Smoo11Fact = rcp(new SmootherFactory(smoProto11)); - RCP Smoo22Fact = rcp(new SmootherFactory(smoProto22)); - - // Define how the transfer operators for block (0,0) is computed - RCP Amalg11 = rcp(new AmalgamationFactory()); - RCP CDFact11 = rcp(new CoalesceDropFactory()); - CDFact11->SetFactory("UnAmalgamationInfo", Amalg11); - RCP AggFact11 = rcp(new UncoupledAggregationFactory()); - AggFact11->SetFactory("Graph", CDFact11); - AggFact11->SetFactory("DofsPerNode", CDFact11); - RCP P11Fact = rcp(new TentativePFactory()); - P11Fact->SetFactory("Aggregates", AggFact11); - P11Fact->SetFactory("UnAmalgamationInfo", Amalg11); - P11Fact->SetParameter("tentative: build coarse coordinates", Teuchos::ParameterEntry(false)); - RCP R11Fact = rcp(new TransPFactory()); - RCP Nullspace11 = rcp(new NullspaceFactory()); - Nullspace11->SetParameter("Fine level nullspace", Teuchos::ParameterEntry(std::string("Nullspace1"))); - Nullspace11->SetFactory("Nullspace1", P11Fact); - RCP Coord11 = rcp(new CoordinatesTransferFactory()); - RCP Cmap11 = rcp(new CoarseMapFactory()); - Coord11->SetFactory("Aggregates", AggFact11); - Coord11->SetFactory("CoarseMap", Cmap11); - - // Create a factory manager for block (0,0) - RCP M11 = rcp(new FactoryManager()); - M11->SetFactory("A", A11Fact); - M11->SetFactory("Graph", CDFact11); - M11->SetFactory("DofsPerNode", CDFact11); - M11->SetFactory("Aggregates", AggFact11); - M11->SetFactory("UnAmalgamationInfo", Amalg11); - M11->SetFactory("P", P11Fact); - M11->SetFactory("R", R11Fact); - M11->SetFactory("Ptent", P11Fact); // for Nullspace - M11->SetFactory("Coordinates", Coord11); - M11->SetFactory("Smoother", Smoo11Fact); - M11->SetFactory("CoarseMap", Cmap11); - M11->SetFactory("Nullspace", Nullspace11); - M11->SetIgnoreUserData(true); - - // Define how the transfer operators for block (1,1) is computed - RCP Amalg22 = rcp(new AmalgamationFactory()); - RCP CDFact22 = rcp(new CoalesceDropFactory()); - CDFact22->SetFactory("UnAmalgamationInfo", Amalg22); - RCP AggFact22 = rcp(new UncoupledAggregationFactory()); - AggFact22->SetFactory("Graph", CDFact22); - AggFact22->SetFactory("DofsPerNode", CDFact22); - RCP P22Fact = rcp(new TentativePFactory()); - P22Fact->SetFactory("Aggregates", AggFact22); - P22Fact->SetFactory("UnAmalgamationInfo", Amalg22); - P22Fact->SetParameter("tentative: build coarse coordinates", Teuchos::ParameterEntry(false)); - RCP R22Fact = rcp(new TransPFactory()); - RCP Nullspace22 = rcp(new NullspaceFactory()); - Nullspace22->SetParameter("Fine level nullspace", Teuchos::ParameterEntry(std::string("Nullspace2"))); - Nullspace22->SetFactory("Nullspace2", P22Fact); - RCP Cmap22 = rcp(new BlockedCoarseMapFactory()); - Cmap22->SetFactory("Aggregates", AggFact22); - Cmap22->SetFactory("CoarseMap", Cmap11); - RCP Coord22 = rcp(new CoordinatesTransferFactory()); - Coord22->SetFactory("Aggregates", AggFact22); - Coord22->SetFactory("CoarseMap", Cmap22); - - // Create a factory manager for block (1,1) - RCP M22 = rcp(new FactoryManager()); - M22->SetFactory("A", A22Fact); - M22->SetFactory("Graph", CDFact22); - M22->SetFactory("DofsPerNode", CDFact22); - M22->SetFactory("Aggregates", AggFact22); - M22->SetFactory("UnAmalgamationInfo", Amalg22); - M22->SetFactory("P", P22Fact); - M22->SetFactory("R", R22Fact); - M22->SetFactory("Ptent", P22Fact); // for Nullspace - M22->SetFactory("Coordinates", P22Fact); - M22->SetFactory("Smoother", Smoo22Fact); - M22->SetFactory("CoarseMap", Cmap22); - M22->SetFactory("Nullspace", Nullspace22); - M22->SetIgnoreUserData(true); - - RCP PFact = rcp(new BlockedPFactory()); - // We might want to set a afactory for "A" here? - PFact->AddFactoryManager(M11); - PFact->AddFactoryManager(M22); - - RCP RFact = rcp(new GenericRFactory()); - RFact->SetFactory("P", PFact); - - RCP CoordXfer = rcp(new BlockedCoordinatesTransferFactory()); - CoordXfer->AddFactory(Coord11); - CoordXfer->AddFactory(Coord22); - CoordXfer->SetFactory("CoarseMap", PFact); - - RCP AcFact = rcp(new BlockedRAPFactory()); - AcFact->AddTransferFactory(CoordXfer); - AcFact->SetFactory("P", PFact); - AcFact->SetFactory("R", RFact); - - // Smoothers - RCP smootherPrototype = rcp(new BlockedGaussSeidelSmoother()); - smootherPrototype->SetParameter("Sweeps", Teuchos::ParameterEntry(2)); - smootherPrototype->SetParameter("Damping factor", Teuchos::ParameterEntry(Teuchos::as(1.0))); - smootherPrototype->AddFactoryManager(M11, 0); - smootherPrototype->AddFactoryManager(M22, 1); - RCP smootherFact = rcp(new SmootherFactory(smootherPrototype)); - - // Coarse grid correction - RCP coarseSolverPrototype = rcp(new BlockedGaussSeidelSmoother()); - coarseSolverPrototype->AddFactoryManager(M11, 0); - coarseSolverPrototype->AddFactoryManager(M22, 1); - RCP coarseSolverFact = rcp(new SmootherFactory(coarseSolverPrototype, Teuchos::null)); - - // Repartitioning - RCP RepHeuFact = Teuchos::rcp(new RepartitionHeuristicFactory); - RepHeuFact->SetFactory("A", AcFact); // MueLu::NoFactory::getRCP()); - RepHeuFact->SetParameter("repartition: start level", Teuchos::ParameterEntry(0)); - RepHeuFact->SetParameter("repartition: min rows per proc", Teuchos::ParameterEntry(40)); - - RCP BDFact = rcp(new RepartitionBlockDiagonalFactory()); - BDFact->SetFactory("A", AcFact); - - RCP zoltan = rcp(new ZoltanInterface()); - zoltan->SetFactory("A", BDFact); - zoltan->SetFactory("number of partitions", RepHeuFact); - zoltan->SetFactory("Coordinates", CoordXfer); - - RCP repart = rcp(new RepartitionFactory()); - repart->SetFactory("A", BDFact); - repart->SetFactory("number of partitions", RepHeuFact); - repart->SetFactory("Partition", zoltan); - - RCP RebAcFact = rcp(new RebalanceBlockAcFactory()); - RebAcFact->SetFactory("A", AcFact); - RebAcFact->SetFactory("Importer", repart); - RebAcFact->SetFactory("SubImporters", repart); - - RCP RebRFact = rcp(new RebalanceBlockRestrictionFactory()); - RebRFact->AddFactoryManager(M11); - RebRFact->AddFactoryManager(M22); - RebRFact->SetFactory("SubImporters", repart); - RebRFact->SetFactory("R", RFact); - RebRFact->SetSingleSourceImporters(true); - - RCP RebPFact = rcp(new RebalanceBlockInterpolationFactory()); - - // main factory manager - FactoryManager M; - M.SetFactory("A", RebAcFact); - M.SetFactory("P", PFact); - M.SetFactory("R", RebRFact); - M.SetFactory("Coordinates", CoordXfer); - M.SetFactory("Smoother", smootherFact); // TODO fix me - M.SetFactory("CoarseSolver", coarseSolverFact); - M.SetFactory("Nullspace", RebRFact); - - // setup hierarchy - H.SetVerbLevel(MueLu::Test); - H.EnableGraphDumping("dep_graph", 0); - - H.Setup(M); - -} // BlockedRAPFactoryWithDiagonal -#endif - TEUCHOS_UNIT_TEST_TEMPLATE_4_DECL(BlockedRepartition, BlockedRAPFactoryCoords, Scalar, LocalOrdinal, GlobalOrdinal, Node) { #include "MueLu_UseShortNames.hpp" MUELU_TESTING_SET_OSTREAM; @@ -1255,24 +903,9 @@ TEUCHOS_UNIT_TEST_TEMPLATE_4_DECL(BlockedRepartition, BlockedRAPFactoryCoords, S H.Setup(M); } // BlockedRAPFactoryCoords -#if defined(HAVE_MUELU_ZOLTAN2) && defined(HAVE_MUELU_ISORROPIA) && defined(HAVE_MUELU_ZOLTAN) -#define MUELU_ETI_GROUP(SC, LO, GO, Node) \ - TEUCHOS_UNIT_TEST_TEMPLATE_4_INSTANT(BlockedRepartition, BlockedRAPFactory, SC, LO, GO, Node) \ - TEUCHOS_UNIT_TEST_TEMPLATE_4_INSTANT(BlockedRepartition, BlockedRAPFactoryWithRestriction, SC, LO, GO, Node) \ - TEUCHOS_UNIT_TEST_TEMPLATE_4_INSTANT(BlockedRepartition, BlockedRAPFactoryWithDiagonal, SC, LO, GO, Node) \ - TEUCHOS_UNIT_TEST_TEMPLATE_4_INSTANT(BlockedRepartition, BlockedRAPFactoryCoords, SC, LO, GO, Node) - -#elif defined(HAVE_MUELU_ISORROPIA) && defined(HAVE_MUELU_ZOLTAN) -#define MUELU_ETI_GROUP(SC, LO, GO, Node) \ - TEUCHOS_UNIT_TEST_TEMPLATE_4_INSTANT(BlockedRepartition, BlockedRAPFactory, SC, LO, GO, Node) \ - TEUCHOS_UNIT_TEST_TEMPLATE_4_INSTANT(BlockedRepartition, BlockedRAPFactoryWithRestriction, SC, LO, GO, Node) \ - TEUCHOS_UNIT_TEST_TEMPLATE_4_INSTANT(BlockedRepartition, BlockedRAPFactoryWithDiagonal, SC, LO, GO, Node) - -#else #define MUELU_ETI_GROUP(SC, LO, GO, Node) \ TEUCHOS_UNIT_TEST_TEMPLATE_4_INSTANT(BlockedRepartition, BlockedRAPFactory, SC, LO, GO, Node) \ TEUCHOS_UNIT_TEST_TEMPLATE_4_INSTANT(BlockedRepartition, BlockedRAPFactoryWithRestriction, SC, LO, GO, Node) -#endif #include diff --git a/packages/muelu/test/unit_tests/GenericRFactory.cpp b/packages/muelu/test/unit_tests/GenericRFactory.cpp index 271627cdd2d4..d0d0d94c17b1 100644 --- a/packages/muelu/test/unit_tests/GenericRFactory.cpp +++ b/packages/muelu/test/unit_tests/GenericRFactory.cpp @@ -53,9 +53,6 @@ TEUCHOS_UNIT_TEST_TEMPLATE_4_DECL(GenericRFactory, SymmetricProblem, Scalar, Loc MUELU_TESTING_LIMIT_SCOPE(Scalar, GlobalOrdinal, Node); #if !defined(HAVE_MUELU_IFPACK) MUELU_TESTING_DO_NOT_TEST(Xpetra::UseEpetra, "Ifpack"); -#endif -#if !defined(HAVE_MUELU_IFPACK2) - MUELU_TESTING_DO_NOT_TEST(Xpetra::UseTpetra, "Ifpack2"); #endif out << "version: " << MueLu::Version() << std::endl; RCP > comm = Teuchos::DefaultComm::getComm(); @@ -189,9 +186,6 @@ TEUCHOS_UNIT_TEST_TEMPLATE_4_DECL(GenericRFactory, GenericRSetup, Scalar, LocalO MUELU_TESTING_LIMIT_SCOPE(Scalar, GlobalOrdinal, Node); #if !defined(HAVE_MUELU_IFPACK) MUELU_TESTING_DO_NOT_TEST(Xpetra::UseEpetra, "Ifpack"); -#endif -#if !defined(HAVE_MUELU_IFPACK2) - MUELU_TESTING_DO_NOT_TEST(Xpetra::UseTpetra, "Ifpack2"); #endif out << "version: " << MueLu::Version() << std::endl; diff --git a/packages/muelu/test/unit_tests/Hierarchy.cpp b/packages/muelu/test/unit_tests/Hierarchy.cpp index 8ccea6f393d0..8f0257a3c881 100644 --- a/packages/muelu/test/unit_tests/Hierarchy.cpp +++ b/packages/muelu/test/unit_tests/Hierarchy.cpp @@ -66,9 +66,6 @@ TEUCHOS_UNIT_TEST_TEMPLATE_4_DECL(Hierarchy, DescriptionCaching, Scalar, LocalOr */ MUELU_TESTING_SET_OSTREAM; MUELU_TESTING_LIMIT_SCOPE(Scalar, GlobalOrdinal, Node); -#if !defined(HAVE_MUELU_AMESOS2) - MUELU_TESTING_DO_NOT_TEST(Xpetra::UseTpetra, "Amesos2"); -#endif out << "version: " << MueLu::Version() << std::endl; typedef typename Teuchos::ScalarTraits::magnitudeType real_type; @@ -196,12 +193,7 @@ TEUCHOS_UNIT_TEST_TEMPLATE_4_DECL(Hierarchy, Iterate, Scalar, LocalOrdinal, Glob using real_type = typename Teuchos::ScalarTraits::coordinateType; using RealValuedMultiVector = Xpetra::MultiVector; -#if !defined(HAVE_MUELU_AMESOS) || !defined(HAVE_MUELU_IFPACK) MUELU_TESTING_DO_NOT_TEST(Xpetra::UseEpetra, "Amesos, Ifpack"); -#endif -#if !defined(HAVE_MUELU_AMESOS2) || !defined(HAVE_MUELU_IFPACK2) - MUELU_TESTING_DO_NOT_TEST(Xpetra::UseTpetra, "Amesos2, Ifpack2"); -#endif out << "version: " << MueLu::Version() << std::endl; @@ -301,12 +293,7 @@ TEUCHOS_UNIT_TEST_TEMPLATE_4_DECL(Hierarchy, IterateWithFusedProlongationUpdate, using real_type = typename Teuchos::ScalarTraits::coordinateType; using RealValuedMultiVector = Xpetra::MultiVector; -#if !defined(HAVE_MUELU_AMESOS) || !defined(HAVE_MUELU_IFPACK) MUELU_TESTING_DO_NOT_TEST(Xpetra::UseEpetra, "Amesos, Ifpack"); -#endif -#if !defined(HAVE_MUELU_AMESOS2) || !defined(HAVE_MUELU_IFPACK2) - MUELU_TESTING_DO_NOT_TEST(Xpetra::UseTpetra, "Amesos2, Ifpack2"); -#endif out << "version: " << MueLu::Version() << std::endl; @@ -402,12 +389,7 @@ TEUCHOS_UNIT_TEST_TEMPLATE_4_DECL(Hierarchy, IterateWithImplicitRestriction, Sca MUELU_TESTING_SET_OSTREAM; MUELU_TESTING_LIMIT_SCOPE(Scalar, GlobalOrdinal, Node); out << "version: " << MueLu::Version() << std::endl; -#if !defined(HAVE_MUELU_AMESOS) || !defined(HAVE_MUELU_IFPACK) MUELU_TESTING_DO_NOT_TEST(Xpetra::UseEpetra, "Amesos, Ifpack"); -#endif -#if !defined(HAVE_MUELU_AMESOS2) || !defined(HAVE_MUELU_IFPACK2) - MUELU_TESTING_DO_NOT_TEST(Xpetra::UseTpetra, "Amesos2, Ifpack2"); -#endif using TST = Teuchos::ScalarTraits; using magnitude_type = typename Teuchos::ScalarTraits::magnitudeType; using TMT = Teuchos::ScalarTraits; @@ -509,10 +491,6 @@ TEUCHOS_UNIT_TEST_TEMPLATE_4_DECL(Hierarchy, SetupHierarchy1level, Scalar, Local MUELU_TESTING_SET_OSTREAM; MUELU_TESTING_LIMIT_SCOPE(Scalar, GlobalOrdinal, Node); -#if !defined(HAVE_MUELU_AMESOS2) || !defined(HAVE_MUELU_IFPACK2) - MUELU_TESTING_DO_NOT_TEST(Xpetra::UseTpetra, "Amesos2, Ifpack2"); -#endif - RCP > comm = TestHelpers::Parameters::getDefaultComm(); RCP A = TestHelpers::TestFactory::Build1DPoisson(299 * comm->getSize()); @@ -553,12 +531,7 @@ TEUCHOS_UNIT_TEST_TEMPLATE_4_DECL(Hierarchy, SetupHierarchy1levelv2, Scalar, Loc #include MUELU_TESTING_LIMIT_SCOPE(Scalar, GlobalOrdinal, Node); MUELU_TESTING_SET_OSTREAM; -#if !defined(HAVE_MUELU_AMESOS) || !defined(HAVE_MUELU_IFPACK) MUELU_TESTING_DO_NOT_TEST(Xpetra::UseEpetra, "Amesos, Ifpack"); -#endif -#if !defined(HAVE_MUELU_AMESOS2) || !defined(HAVE_MUELU_IFPACK2) - MUELU_TESTING_DO_NOT_TEST(Xpetra::UseTpetra, "Amesos2, Ifpack2"); -#endif RCP > comm = TestHelpers::Parameters::getDefaultComm(); RCP A = TestHelpers::TestFactory::Build1DPoisson(299 * comm->getSize()); @@ -599,80 +572,12 @@ TEUCHOS_UNIT_TEST_TEMPLATE_4_DECL(Hierarchy, SetupHierarchy2level, Scalar, Local MUELU_TESTING_SET_OSTREAM; MUELU_TESTING_LIMIT_SCOPE(Scalar, GlobalOrdinal, Node); -#if defined(HAVE_MUELU_EPETRA) && defined(HAVE_MUELU_AMESOS) - RCP > comm = TestHelpers::Parameters::getDefaultComm(); - RCP A = TestHelpers::TestFactory::Build1DPoisson(299 * comm->getSize()); - - // Multigrid Hierarchy - Hierarchy H(A); - H.setVerbLevel(Teuchos::VERB_HIGH); - H.SetMaxCoarseSize(50); - - // Multigrid setup phase (using default parameters) - FactoryManager M0; // how to build aggregates and smoother of the first level - M0.SetKokkosRefactor(false); - - FactoryManager M1; // first coarse level (Plain aggregation) - M1.SetKokkosRefactor(false); - M1.SetFactory("A", rcp(new RAPFactory())); - M1.SetFactory("P", rcp(new TentativePFactory())); - - FactoryManager M2; // last level (SA) - M2.SetKokkosRefactor(false); - M2.SetFactory("A", rcp(new RAPFactory())); - M2.SetFactory("P", rcp(new SaPFactory())); - - bool r; // cf. Teuchos Bug 5214 - r = H.Setup(0, Teuchos::null, rcpFromRef(M0), rcpFromRef(M1)); - TEST_EQUALITY(r, false); - r = H.Setup(1, rcpFromRef(M0), rcpFromRef(M1), Teuchos::null); - TEST_EQUALITY(r, true); - - RCP l0 = H.GetLevel(0); - RCP l1 = H.GetLevel(1); - - /*RCP stdout = Teuchos::fancyOStream(Teuchos::rcpFromRef(std::cout)); - l0->print(*stdout,Teuchos::VERB_EXTREME); - l1->print(*stdout,Teuchos::VERB_EXTREME);*/ - - TEST_EQUALITY(l0->IsAvailable("PreSmoother", MueLu::NoFactory::get()), true); - TEST_EQUALITY(l1->IsAvailable("PreSmoother", MueLu::NoFactory::get()), true); - TEST_EQUALITY(l0->IsAvailable("PostSmoother", MueLu::NoFactory::get()), true); - TEST_EQUALITY(l1->IsAvailable("PostSmoother", MueLu::NoFactory::get()), false); // direct solve - TEST_EQUALITY(l1->IsAvailable("P", MueLu::NoFactory::get()), true); - TEST_EQUALITY(l1->IsAvailable("R", MueLu::NoFactory::get()), true); - TEST_EQUALITY(l0->IsAvailable("A", MueLu::NoFactory::get()), true); - TEST_EQUALITY(l1->IsAvailable("A", MueLu::NoFactory::get()), true); - - TEST_EQUALITY(l0->GetKeepFlag("A", MueLu::NoFactory::get()), MueLu::UserData); - TEST_EQUALITY(l0->GetKeepFlag("PreSmoother", MueLu::NoFactory::get()), MueLu::Final); - TEST_EQUALITY(l0->GetKeepFlag("PostSmoother", MueLu::NoFactory::get()), MueLu::Final); - - TEST_EQUALITY(l1->GetKeepFlag("A", MueLu::NoFactory::get()), MueLu::Final); - TEST_EQUALITY(l1->GetKeepFlag("P", MueLu::NoFactory::get()), MueLu::Final); - TEST_EQUALITY(l1->GetKeepFlag("R", MueLu::NoFactory::get()), MueLu::Final); - TEST_EQUALITY(l1->GetKeepFlag("PreSmoother", MueLu::NoFactory::get()), MueLu::Final); - // TEST_EQUALITY(l1->GetKeepFlag("PostSmoother", MueLu::NoFactory::get()), MueLu::Final); // direct solve - - RCP RHS = MultiVectorFactory::Build(A->getRowMap(), 1); - RCP X = MultiVectorFactory::Build(A->getRowMap(), 1); - RHS->setSeed(846930886); - RHS->randomize(); - - X->putScalar((Scalar)0.0); - - int iterations = 10; - H.Iterate(*RHS, *X, iterations); -#endif } TEUCHOS_UNIT_TEST_TEMPLATE_4_DECL(Hierarchy, SetupHierarchy2level_AggregateSmooth, Scalar, LocalOrdinal, GlobalOrdinal, Node) { #include MUELU_TESTING_SET_OSTREAM; MUELU_TESTING_LIMIT_SCOPE(Scalar, GlobalOrdinal, Node); -#if !defined(HAVE_MUELU_AMESOS2) - MUELU_TESTING_DO_NOT_TEST(Xpetra::UseTpetra, "Amesos2"); -#endif RCP > comm = TestHelpers::Parameters::getDefaultComm(); RCP A = TestHelpers::TestFactory::Build1DPoisson(299 * comm->getSize()); @@ -746,9 +651,6 @@ TEUCHOS_UNIT_TEST_TEMPLATE_4_DECL(Hierarchy, SetupHierarchy2level_AggregateSmoot #include MUELU_TESTING_SET_OSTREAM; MUELU_TESTING_LIMIT_SCOPE(Scalar, GlobalOrdinal, Node); -#if !defined(HAVE_MUELU_AMESOS2) - MUELU_TESTING_DO_NOT_TEST(Xpetra::UseTpetra, "Amesos2"); -#endif RCP > comm = TestHelpers::Parameters::getDefaultComm(); Teuchos::ParameterList matrixParams; @@ -826,10 +728,6 @@ TEUCHOS_UNIT_TEST_TEMPLATE_4_DECL(Hierarchy, SetupHierarchy3level_BlockTriDi_3PD MUELU_TESTING_SET_OSTREAM; MUELU_TESTING_LIMIT_SCOPE(Scalar, GlobalOrdinal, Node); -#if !defined(HAVE_MUELU_AMESOS2) || !defined(HAVE_MUELU_IFPACK2) - MUELU_TESTING_DO_NOT_TEST(Xpetra::UseTpetra, "Amesos2, Ifpack2"); -#endif - RCP > comm = TestHelpers::Parameters::getDefaultComm(); Teuchos::ParameterList matrixParams; matrixParams.set("matrixType", "Laplace1D"); @@ -930,12 +828,7 @@ TEUCHOS_UNIT_TEST_TEMPLATE_4_DECL(Hierarchy, SetupHierarchy3level, Scalar, Local typedef typename Teuchos::ScalarTraits::magnitudeType real_type; typedef typename Xpetra::MultiVector RealValuedMultiVector; -#if !defined(HAVE_MUELU_AMESOS) || !defined(HAVE_MUELU_IFPACK) MUELU_TESTING_DO_NOT_TEST(Xpetra::UseEpetra, "Amesos, Ifpack"); -#endif -#if !defined(HAVE_MUELU_AMESOS2) || !defined(HAVE_MUELU_IFPACK2) - MUELU_TESTING_DO_NOT_TEST(Xpetra::UseTpetra, "Amesos2, Ifpack2"); -#endif RCP > comm = TestHelpers::Parameters::getDefaultComm(); GO nx = 299 * comm->getSize(); @@ -1030,12 +923,7 @@ TEUCHOS_UNIT_TEST_TEMPLATE_4_DECL(Hierarchy, SetupHierarchy3level_BlockSmooth, S MUELU_TESTING_LIMIT_SCOPE(Scalar, GlobalOrdinal, Node); MUELU_TESTING_SET_OSTREAM; MUELU_TEST_ONLY_FOR(Xpetra::UseTpetra) { -#if !defined(HAVE_MUELU_AMESOS) || !defined(HAVE_MUELU_IFPACK) MUELU_TESTING_DO_NOT_TEST(Xpetra::UseEpetra, "Amesos, Ifpack"); -#endif -#if !defined(HAVE_MUELU_AMESOS2) || !defined(HAVE_MUELU_IFPACK2) - MUELU_TESTING_DO_NOT_TEST(Xpetra::UseTpetra, "Amesos2, Ifpack2"); -#endif RCP > comm = TestHelpers::Parameters::getDefaultComm(); GO nx = 10 * comm->getSize(); @@ -1130,12 +1018,7 @@ TEUCHOS_UNIT_TEST_TEMPLATE_4_DECL(Hierarchy, SetupHierarchy3level_NoPreSmooth, S typedef typename Teuchos::ScalarTraits::magnitudeType real_type; typedef typename Xpetra::MultiVector RealValuedMultiVector; -#if !defined(HAVE_MUELU_AMESOS) || !defined(HAVE_MUELU_IFPACK) MUELU_TESTING_DO_NOT_TEST(Xpetra::UseEpetra, "Amesos, Ifpack"); -#endif -#if !defined(HAVE_MUELU_AMESOS2) || !defined(HAVE_MUELU_IFPACK2) - MUELU_TESTING_DO_NOT_TEST(Xpetra::UseTpetra, "Amesos2, Ifpack2"); -#endif RCP > comm = TestHelpers::Parameters::getDefaultComm(); GO nx = 299 * comm->getSize(); @@ -1235,12 +1118,7 @@ TEUCHOS_UNIT_TEST_TEMPLATE_4_DECL(Hierarchy, SetupHierarchy3levelFacManagers, Sc #include MUELU_TESTING_SET_OSTREAM; MUELU_TESTING_LIMIT_SCOPE(Scalar, GlobalOrdinal, Node); -#if !defined(HAVE_MUELU_AMESOS) || !defined(HAVE_MUELU_IFPACK) MUELU_TESTING_DO_NOT_TEST(Xpetra::UseEpetra, "Amesos, Ifpack"); -#endif -#if !defined(HAVE_MUELU_AMESOS2) || !defined(HAVE_MUELU_IFPACK2) - MUELU_TESTING_DO_NOT_TEST(Xpetra::UseTpetra, "Amesos2, Ifpack2"); -#endif typedef typename Teuchos::ScalarTraits::magnitudeType real_type; typedef typename Xpetra::MultiVector RealValuedMultiVector; @@ -1357,12 +1235,7 @@ TEUCHOS_UNIT_TEST_TEMPLATE_4_DECL(Hierarchy, SetupHierarchyTestBreakCondition, S #include MUELU_TESTING_SET_OSTREAM; MUELU_TESTING_LIMIT_SCOPE(Scalar, GlobalOrdinal, Node); -#if !defined(HAVE_MUELU_AMESOS) || !defined(HAVE_MUELU_IFPACK) MUELU_TESTING_DO_NOT_TEST(Xpetra::UseEpetra, "Amesos, Ifpack"); -#endif -#if !defined(HAVE_MUELU_AMESOS2) || !defined(HAVE_MUELU_IFPACK2) - MUELU_TESTING_DO_NOT_TEST(Xpetra::UseTpetra, "Amesos2, Ifpack2"); -#endif typedef typename Teuchos::ScalarTraits::magnitudeType real_type; typedef typename Xpetra::MultiVector RealValuedMultiVector; @@ -1494,9 +1367,6 @@ TEUCHOS_UNIT_TEST_TEMPLATE_4_DECL(Hierarchy, Write, Scalar, LocalOrdinal, Global MUELU_TESTING_SET_OSTREAM; Teuchos::RCP allOut = Teuchos::rcp(new Teuchos::FancyOStream(Teuchos::rcpFromRef(std::cout))); MUELU_TESTING_LIMIT_SCOPE(Scalar, GlobalOrdinal, Node); -#if !defined(HAVE_MUELU_AMESOS2) - MUELU_TESTING_DO_NOT_TEST(Xpetra::UseTpetra, "Amesos2"); -#endif using TST = Teuchos::ScalarTraits; using magnitude_type = typename Teuchos::ScalarTraits::magnitudeType; using TMT = Teuchos::ScalarTraits; @@ -1648,7 +1518,6 @@ TEUCHOS_UNIT_TEST_TEMPLATE_4_DECL(Hierarchy, Write, Scalar, LocalOrdinal, Global TEUCHOS_UNIT_TEST_TEMPLATE_4_DECL(Hierarchy, BlockCrs_Mixed, Scalar, LocalOrdinal, GlobalOrdinal, Node) { #include MUELU_TESTING_SET_OSTREAM; -#if defined(HAVE_MUELU_IFPACK2) && defined(HAVE_MUELU_AMESOS2) MUELU_TEST_ONLY_FOR(Xpetra::UseTpetra); typedef typename Teuchos::ScalarTraits::magnitudeType real_type; @@ -1758,7 +1627,6 @@ TEUCHOS_UNIT_TEST_TEMPLATE_4_DECL(Hierarchy, BlockCrs_Mixed, Scalar, LocalOrdina real_type tol = 1.0e-10; H.IsPreconditioner(false); H.Iterate(*RHS, *X, std::pair(iterations, tol)); -#endif TEST_EQUALITY(0, 0); } diff --git a/packages/muelu/test/unit_tests/IntrepidPCoarsenFactory.cpp b/packages/muelu/test/unit_tests/IntrepidPCoarsenFactory.cpp index 44bd442d6d27..4a86a22e19b6 100644 --- a/packages/muelu/test/unit_tests/IntrepidPCoarsenFactory.cpp +++ b/packages/muelu/test/unit_tests/IntrepidPCoarsenFactory.cpp @@ -1423,12 +1423,7 @@ TEUCHOS_UNIT_TEST_TEMPLATE_4_DECL(IntrepidPCoarsenFactory, CreatePreconditioner_ MUELU_TESTING_SET_OSTREAM; MUELU_TESTING_LIMIT_SCOPE(Scalar, GlobalOrdinal, Tpetra::KokkosCompat::KokkosSerialWrapperNode); MUELU_TESTING_LIMIT_SCOPE(Scalar, GlobalOrdinal, NO); -#if !defined(HAVE_MUELU_AMESOS) || !defined(HAVE_MUELU_IFPACK) MUELU_TESTING_DO_NOT_TEST(Xpetra::UseEpetra, "Amesos, Ifpack"); -#endif -#if !defined(HAVE_MUELU_AMESOS2) || !defined(HAVE_MUELU_IFPACK2) - MUELU_TESTING_DO_NOT_TEST(Xpetra::UseTpetra, "Amesos2, Ifpack2"); -#endif typedef Scalar SC; typedef GlobalOrdinal GO; @@ -1488,12 +1483,7 @@ TEUCHOS_UNIT_TEST_TEMPLATE_4_DECL(IntrepidPCoarsenFactory, CreatePreconditioner_ MUELU_TESTING_SET_OSTREAM; MUELU_TESTING_LIMIT_SCOPE(Scalar, GlobalOrdinal, Tpetra::KokkosCompat::KokkosSerialWrapperNode); MUELU_TESTING_LIMIT_SCOPE(Scalar, GlobalOrdinal, NO); -#if !defined(HAVE_MUELU_AMESOS) || !defined(HAVE_MUELU_IFPACK) MUELU_TESTING_DO_NOT_TEST(Xpetra::UseEpetra, "Amesos, Ifpack"); -#endif -#if !defined(HAVE_MUELU_AMESOS2) || !defined(HAVE_MUELU_IFPACK2) - MUELU_TESTING_DO_NOT_TEST(Xpetra::UseTpetra, "Amesos2, Ifpack2"); -#endif typedef Scalar SC; typedef GlobalOrdinal GO; @@ -1552,12 +1542,7 @@ TEUCHOS_UNIT_TEST_TEMPLATE_4_DECL(IntrepidPCoarsenFactory, CreatePreconditioner_ MUELU_TESTING_SET_OSTREAM; MUELU_TESTING_LIMIT_SCOPE(Scalar, GlobalOrdinal, Tpetra::KokkosCompat::KokkosSerialWrapperNode); MUELU_TESTING_LIMIT_SCOPE(Scalar, GlobalOrdinal, NO); -#if !defined(HAVE_MUELU_AMESOS) || !defined(HAVE_MUELU_IFPACK) MUELU_TESTING_DO_NOT_TEST(Xpetra::UseEpetra, "Amesos, Ifpack"); -#endif -#if !defined(HAVE_MUELU_AMESOS2) || !defined(HAVE_MUELU_IFPACK2) - MUELU_TESTING_DO_NOT_TEST(Xpetra::UseTpetra, "Amesos2, Ifpack2"); -#endif typedef Scalar SC; typedef GlobalOrdinal GO; @@ -2324,12 +2309,7 @@ TEUCHOS_UNIT_TEST_TEMPLATE_4_DECL(IntrepidPCoarsenFactory, CreatePreconditioner_ MUELU_TESTING_SET_OSTREAM; MUELU_TESTING_LIMIT_SCOPE(Scalar, GlobalOrdinal, Tpetra::KokkosCompat::KokkosSerialWrapperNode); MUELU_TESTING_LIMIT_SCOPE(Scalar, GlobalOrdinal, NO); -#if !defined(HAVE_MUELU_AMESOS) || !defined(HAVE_MUELU_IFPACK) MUELU_TESTING_DO_NOT_TEST(Xpetra::UseEpetra, "Amesos, Ifpack"); -#endif -#if !defined(HAVE_MUELU_AMESOS2) || !defined(HAVE_MUELU_IFPACK2) - MUELU_TESTING_DO_NOT_TEST(Xpetra::UseTpetra, "Amesos2, Ifpack2"); -#endif typedef Scalar SC; typedef GlobalOrdinal GO; @@ -2388,12 +2368,7 @@ TEUCHOS_UNIT_TEST_TEMPLATE_4_DECL(IntrepidPCoarsenFactory, CreatePreconditioner_ MUELU_TESTING_SET_OSTREAM; MUELU_TESTING_LIMIT_SCOPE(Scalar, GlobalOrdinal, Tpetra::KokkosCompat::KokkosSerialWrapperNode); MUELU_TESTING_LIMIT_SCOPE(Scalar, GlobalOrdinal, NO); -#if !defined(HAVE_MUELU_AMESOS) || !defined(HAVE_MUELU_IFPACK) MUELU_TESTING_DO_NOT_TEST(Xpetra::UseEpetra, "Amesos, Ifpack"); -#endif -#if !defined(HAVE_MUELU_AMESOS2) || !defined(HAVE_MUELU_IFPACK2) - MUELU_TESTING_DO_NOT_TEST(Xpetra::UseTpetra, "Amesos2, Ifpack2"); -#endif typedef Scalar SC; typedef GlobalOrdinal GO; @@ -2452,12 +2427,7 @@ TEUCHOS_UNIT_TEST_TEMPLATE_4_DECL(IntrepidPCoarsenFactory, CreatePreconditioner_ MUELU_TESTING_SET_OSTREAM; MUELU_TESTING_LIMIT_SCOPE(Scalar, GlobalOrdinal, Tpetra::KokkosCompat::KokkosSerialWrapperNode); MUELU_TESTING_LIMIT_SCOPE(Scalar, GlobalOrdinal, NO); -#if !defined(HAVE_MUELU_AMESOS) || !defined(HAVE_MUELU_IFPACK) MUELU_TESTING_DO_NOT_TEST(Xpetra::UseEpetra, "Amesos, Ifpack"); -#endif -#if !defined(HAVE_MUELU_AMESOS2) || !defined(HAVE_MUELU_IFPACK2) - MUELU_TESTING_DO_NOT_TEST(Xpetra::UseTpetra, "Amesos2, Ifpack2"); -#endif typedef Scalar SC; typedef GlobalOrdinal GO; @@ -2516,12 +2486,7 @@ TEUCHOS_UNIT_TEST_TEMPLATE_4_DECL(IntrepidPCoarsenFactory, CreatePreconditioner_ MUELU_TESTING_SET_OSTREAM; MUELU_TESTING_LIMIT_SCOPE(Scalar, GlobalOrdinal, Tpetra::KokkosCompat::KokkosSerialWrapperNode); MUELU_TESTING_LIMIT_SCOPE(Scalar, GlobalOrdinal, NO); -#if !defined(HAVE_MUELU_AMESOS) || !defined(HAVE_MUELU_IFPACK) MUELU_TESTING_DO_NOT_TEST(Xpetra::UseEpetra, "Amesos, Ifpack"); -#endif -#if !defined(HAVE_MUELU_AMESOS2) || !defined(HAVE_MUELU_IFPACK2) - MUELU_TESTING_DO_NOT_TEST(Xpetra::UseTpetra, "Amesos2, Ifpack2"); -#endif typedef Scalar SC; typedef GlobalOrdinal GO; @@ -2596,12 +2561,7 @@ TEUCHOS_UNIT_TEST_TEMPLATE_4_DECL(IntrepidPCoarsenFactory, CreatePreconditioner_ MUELU_TESTING_SET_OSTREAM; MUELU_TESTING_LIMIT_SCOPE(Scalar, GlobalOrdinal, Tpetra::KokkosCompat::KokkosSerialWrapperNode); MUELU_TESTING_LIMIT_SCOPE(Scalar, GlobalOrdinal, NO); -#if !defined(HAVE_MUELU_AMESOS) || !defined(HAVE_MUELU_IFPACK) MUELU_TESTING_DO_NOT_TEST(Xpetra::UseEpetra, "Amesos, Ifpack"); -#endif -#if !defined(HAVE_MUELU_AMESOS2) || !defined(HAVE_MUELU_IFPACK2) - MUELU_TESTING_DO_NOT_TEST(Xpetra::UseTpetra, "Amesos2, Ifpack2"); -#endif typedef Scalar SC; typedef GlobalOrdinal GO; @@ -2667,12 +2627,7 @@ TEUCHOS_UNIT_TEST_TEMPLATE_4_DECL(IntrepidPCoarsenFactory, CreatePreconditioner_ MUELU_TESTING_SET_OSTREAM; MUELU_TESTING_LIMIT_SCOPE(Scalar, GlobalOrdinal, Tpetra::KokkosCompat::KokkosSerialWrapperNode); MUELU_TESTING_LIMIT_SCOPE(Scalar, GlobalOrdinal, NO); -#if !defined(HAVE_MUELU_AMESOS) || !defined(HAVE_MUELU_IFPACK) MUELU_TESTING_DO_NOT_TEST(Xpetra::UseEpetra, "Amesos, Ifpack"); -#endif -#if !defined(HAVE_MUELU_AMESOS2) || !defined(HAVE_MUELU_IFPACK2) - MUELU_TESTING_DO_NOT_TEST(Xpetra::UseTpetra, "Amesos2, Ifpack2"); -#endif typedef Scalar SC; typedef GlobalOrdinal GO; @@ -2740,12 +2695,7 @@ TEUCHOS_UNIT_TEST_TEMPLATE_4_DECL(IntrepidPCoarsenFactory, CreatePreconditioner_ MUELU_TESTING_SET_OSTREAM; MUELU_TESTING_LIMIT_SCOPE(Scalar, GlobalOrdinal, Tpetra::KokkosCompat::KokkosSerialWrapperNode); MUELU_TESTING_LIMIT_SCOPE(Scalar, GlobalOrdinal, NO); -#if !defined(HAVE_MUELU_AMESOS) || !defined(HAVE_MUELU_IFPACK) MUELU_TESTING_DO_NOT_TEST(Xpetra::UseEpetra, "Amesos, Ifpack"); -#endif -#if !defined(HAVE_MUELU_AMESOS2) || !defined(HAVE_MUELU_IFPACK2) - MUELU_TESTING_DO_NOT_TEST(Xpetra::UseTpetra, "Amesos2, Ifpack2"); -#endif typedef Scalar SC; typedef GlobalOrdinal GO; diff --git a/packages/muelu/test/unit_tests/MueLu_TestHelpers.hpp b/packages/muelu/test/unit_tests/MueLu_TestHelpers.hpp index 4e5ed08971d5..d9d099bf60e2 100644 --- a/packages/muelu/test/unit_tests/MueLu_TestHelpers.hpp +++ b/packages/muelu/test/unit_tests/MueLu_TestHelpers.hpp @@ -21,10 +21,6 @@ #include "Teuchos_OrdinalTraits.hpp" #include "Teuchos_ScalarTraits.hpp" -#ifdef HAVE_MUELU_EPETRA -#include "Epetra_config.h" -#endif - // Xpetra #include "Xpetra_ConfigDefs.hpp" #include "Xpetra_DefaultPlatform.hpp" @@ -853,54 +849,6 @@ class TpetraTestFactory { // TAW: 3/14/2016: If both Epetra and Tpetra are enabled we need partial specializations // on GO=int/long long as well as NO=EpetraNode to disable BuildBlockMatrix -#ifdef HAVE_MUELU_EPETRA -// partial specializations (GO=int not enabled with Tpetra) -#if !defined(HAVE_TPETRA_INST_INT_INT) -template -class TpetraTestFactory { - typedef int GlobalOrdinal; -#include "MueLu_UseShortNames.hpp" - public: - static RCP BuildBlockMatrix(Teuchos::ParameterList& matrixList, Xpetra::UnderlyingLib lib) { return Teuchos::null; } - static RCP BuildBlockMatrixAsPoint(Teuchos::ParameterList& matrixList, Xpetra::UnderlyingLib lib) { return Teuchos::null; } - - private: - TpetraTestFactory() {} // static class -}; // class TpetraTestFactory -#endif - -// partial specializations (GO=long long not enabled with Tpetra) -#if !defined(HAVE_TPETRA_INST_INT_LONG_LONG) -template -class TpetraTestFactory { - typedef long long GlobalOrdinal; -#include "MueLu_UseShortNames.hpp" - public: - static RCP BuildBlockMatrix(Teuchos::ParameterList& matrixList, Xpetra::UnderlyingLib lib) { return Teuchos::null; } - static RCP BuildBlockMatrixAsPoint(Teuchos::ParameterList& matrixList, Xpetra::UnderlyingLib lib) { return Teuchos::null; } - - private: - TpetraTestFactory() {} // static class -}; // class TpetraTestFactory -#endif - -// partial specializations (NO=EpetraNode not enabled with Tpetra) -#if ((defined(EPETRA_HAVE_OMP) && !(defined(HAVE_TPETRA_INST_OPENMP))) || \ - (!defined(EPETRA_HAVE_OMP) && !(defined(HAVE_TPETRA_INST_SERIAL)))) - -template -class TpetraTestFactory { - typedef Xpetra::EpetraNode Node; -#include "MueLu_UseShortNames.hpp" - public: - static RCP BuildBlockMatrix(Teuchos::ParameterList& matrixList, Xpetra::UnderlyingLib lib) { return Teuchos::null; } - static RCP BuildBlockMatrixAsPoint(Teuchos::ParameterList& matrixList, Xpetra::UnderlyingLib lib) { return Teuchos::null; } - - private: - TpetraTestFactory() {} // static class -}; // class TpetraTestFactory -#endif -#endif // endif HAVE_MUELU_EPETRA //! Return the list of files in the directory. Only files that are matching '*filter*' are returned. ArrayRCP GetFileList(const std::string& dirPath, const std::string& filter); diff --git a/packages/muelu/test/unit_tests/MueLu_TestHelpers_Common.hpp b/packages/muelu/test/unit_tests/MueLu_TestHelpers_Common.hpp index 7dd1c35338c9..002430a62e4b 100644 --- a/packages/muelu/test/unit_tests/MueLu_TestHelpers_Common.hpp +++ b/packages/muelu/test/unit_tests/MueLu_TestHelpers_Common.hpp @@ -25,82 +25,9 @@ #define TYPE_EQUAL(TYPE1, TYPE2) \ (typeid(TYPE1).name() == typeid(TYPE2).name()) -#ifdef HAVE_MUELU_EPETRA - -#if ((defined(EPETRA_HAVE_OMP) && (!defined(HAVE_TPETRA_INST_OPENMP) || !defined(HAVE_TPETRA_INST_INT_INT))) || \ - (!defined(EPETRA_HAVE_OMP) && (!defined(HAVE_TPETRA_INST_SERIAL) || !defined(HAVE_TPETRA_INST_INT_INT)))) -// : run Epetra, do not run Tpetra -#define MUELU_TESTING_LIMIT_SCOPE(SC, GO, NO) \ - MUELU_DEBUGGER_MACRO \ - if (TestHelpers::Parameters::getLib() == Xpetra::UseEpetra) { \ - if (!TYPE_EQUAL(SC, double)) { \ - out << "Skipping Epetra for SC != double" << std::endl; \ - return; \ - } \ - if (!TYPE_EQUAL(GO, int)) { \ - out << "Skipping Epetra for GO != int" << std::endl; \ - return; \ - } \ - if (!TYPE_EQUAL(NO, Xpetra::EpetraNode)) { \ - out << "Skipping Epetra for NO != EpetraNode" << std::endl; \ - return; \ - } \ - } else if (TestHelpers::Parameters::getLib() == Xpetra::UseTpetra) { \ - if (TYPE_EQUAL(SC, double) && TYPE_EQUAL(GO, int) && TYPE_EQUAL(NO, Xpetra::EpetraNode)) { \ - out << "Skipping Tpetra for " << std::endl; \ - return; \ - } \ - } - -#define MUELU_TESTING_LIMIT_EPETRA_SCOPE_TPETRA_IS_DEFAULT(SC, GO, NO) \ - { \ - out << "Skipping as we cannot run Epetra and Tpetra for the same combination of template args" << std::endl; \ - return; \ - } - -#else - -#define MUELU_TESTING_LIMIT_SCOPE(SC, GO, NO) \ - MUELU_DEBUGGER_MACRO \ - if (TestHelpers::Parameters::getLib() == Xpetra::UseEpetra) { \ - if (!TYPE_EQUAL(SC, double)) { \ - out << "Skipping Epetra for SC != double" << std::endl; \ - return; \ - } \ - if (!TYPE_EQUAL(GO, int)) { \ - out << "Skipping Epetra for GO != int" << std::endl; \ - return; \ - } \ - if (!TYPE_EQUAL(NO, Xpetra::EpetraNode)) { \ - out << "Skipping Epetra for NO != EpetraNode" << std::endl; \ - return; \ - } \ - } - -// If linAlgebra==Tpetra, but the test also requires Epetra, this macro will cause the test -// to return early if SC!=double, GO!={int}, or NO!=Serial. -#define MUELU_TESTING_LIMIT_EPETRA_SCOPE_TPETRA_IS_DEFAULT(SC, GO, NO) \ - if (!TYPE_EQUAL(SC, double)) { \ - out << "Skipping Epetra for SC != double" << std::endl; \ - return; \ - } \ - if (!TYPE_EQUAL(GO, int)) { \ - out << "Skipping Epetra for GO != int" << std::endl; \ - return; \ - } \ - if (!TYPE_EQUAL(NO, Xpetra::EpetraNode)) { \ - out << "Skipping Epetra for NO != EpetraNode" << std::endl; \ - return; \ - } -#endif - -#else // HAVE_MUELU_EPETRA - #define MUELU_TESTING_LIMIT_SCOPE(SC, GO, NO) #define MUELU_TESTING_LIMIT_EPETRA_SCOPE_TPETRA_IS_DEFAULT(SC, GO, NO) -#endif // HAVE_MUELU_EPETRA - // Macro to set MueLu's internal oh-so FancyOStream to be the same as the one used by Teuchos' unit testing framework. // This prevents MueLu's output from intermingling with with the unit test pass/fail summary lines. #define MUELU_TESTING_SET_OSTREAM \ diff --git a/packages/muelu/test/unit_tests/MueLu_TestHelpers_HO.hpp b/packages/muelu/test/unit_tests/MueLu_TestHelpers_HO.hpp index 437749bda702..77f108dd147c 100644 --- a/packages/muelu/test/unit_tests/MueLu_TestHelpers_HO.hpp +++ b/packages/muelu/test/unit_tests/MueLu_TestHelpers_HO.hpp @@ -17,10 +17,6 @@ #include "MueLu_TestHelpers.hpp" -#ifdef HAVE_MUELU_EPETRA -#include "Epetra_FECrsMatrix.h" -#endif - #include "MueLu_Utilities_def.hpp" namespace MueLuTests { diff --git a/packages/muelu/test/unit_tests/MueLu_Test_ETI.hpp b/packages/muelu/test/unit_tests/MueLu_Test_ETI.hpp index 3de1815e0745..bf76b89034ce 100644 --- a/packages/muelu/test/unit_tests/MueLu_Test_ETI.hpp +++ b/packages/muelu/test/unit_tests/MueLu_Test_ETI.hpp @@ -117,21 +117,7 @@ bool Automatic_Test_ETI(int argc, char *argv[]) { auto lib = xpetraParameters.GetLib(); if (lib == Xpetra::UseEpetra) { -#ifdef HAVE_MUELU_EPETRA - // TAW: we might want to simplify the following logic block. - // In fact, there are examples/tests which only run with Tpetra - // We might need a feature that allows to run Epetra/Tpetra only - // We still need to make sure that the test compiles (i.e., we - // need some preprocessor flags/macros RUN_WITH_EPETRA and RUN_WITH_TPETRA -#if defined(HAVE_MUELU_INST_DOUBLE_INT_INT) || defined(HAVE_TPETRA_INST_DOUBLE) && defined(HAVE_TPETRA_INST_INT_INT) - // Both Epetra and Tpetra (with double, int, int) enabled - return MUELU_AUTOMATIC_TEST_ETI_NAME(clp, lib, argc, argv); -#else - *out << "Skip running with Epetra since both Epetra and Tpetra are enabled but Tpetra is not instantiated on double, int, int." << std::endl; -#endif // end Tpetra instantiated on double, int, int -#else throw RuntimeError("Epetra is not available"); -#endif } if (lib == Xpetra::UseTpetra) { diff --git a/packages/muelu/test/unit_tests/MultiVectorTransferFactory.cpp b/packages/muelu/test/unit_tests/MultiVectorTransferFactory.cpp index 84afe6fed818..ae5bb355d069 100644 --- a/packages/muelu/test/unit_tests/MultiVectorTransferFactory.cpp +++ b/packages/muelu/test/unit_tests/MultiVectorTransferFactory.cpp @@ -108,9 +108,6 @@ TEUCHOS_UNIT_TEST_TEMPLATE_4_DECL(MultiVectorTransferFactory, ThreeLevels, Scala MUELU_TESTING_LIMIT_SCOPE(Scalar, GlobalOrdinal, Node); #if !defined(HAVE_MUELU_IFPACK) MUELU_TESTING_DO_NOT_TEST(Xpetra::UseEpetra, "Ifpack"); -#endif -#if !defined(HAVE_MUELU_IFPACK2) - MUELU_TESTING_DO_NOT_TEST(Xpetra::UseTpetra, "Ifpack2"); #endif out << "version: " << MueLu::Version() << std::endl; diff --git a/packages/muelu/test/unit_tests/ParameterList/CreateSublists.cpp b/packages/muelu/test/unit_tests/ParameterList/CreateSublists.cpp index e820fd9b70f2..230fa1af56dc 100644 --- a/packages/muelu/test/unit_tests/ParameterList/CreateSublists.cpp +++ b/packages/muelu/test/unit_tests/ParameterList/CreateSublists.cpp @@ -12,10 +12,6 @@ #include #include -#ifdef HAVE_MUELU_ML -#include -#endif - #include "MueLu_TestHelpers.hpp" #include "MueLu_Exceptions.hpp" #include "MueLu_UseDefaultTypes.hpp" @@ -44,25 +40,4 @@ TEUCHOS_UNIT_TEST(MueLu_CreateSublists, SetParameterList) { } } -#ifdef HAVE_MUELU_ML -TEUCHOS_UNIT_TEST(ML_CreateSublists, SetParameterList) { - std::string dir("ParameterList/CreateSublists/"); - - ArrayRCP fileList = TestHelpers::GetFileList(dir, std::string(".xml")); - - for (int i = 0; i < fileList.size(); i++) { - out << "Processing file: " << fileList[i] << std::endl; - - Teuchos::RCP inputList = Teuchos::getParametersFromXmlFile(dir + fileList[i]); - Teuchos::ParameterList outputList; - - ML_CreateSublists(*inputList, outputList); - - // Test against reference output (replace '.xml' by '.output' to get the filename) - Teuchos::RCP refOutputList = Teuchos::getParametersFromXmlFile(dir + fileList[i].substr(0, fileList[i].find_last_of(".")) + ".output"); - TEST_EQUALITY(outputList, *refOutputList); - } -} -#endif - } // namespace MueLuTests diff --git a/packages/muelu/test/unit_tests/ParameterList/FactoryFactory.cpp b/packages/muelu/test/unit_tests/ParameterList/FactoryFactory.cpp index ae34730ae71e..7bc7050ab5cf 100644 --- a/packages/muelu/test/unit_tests/ParameterList/FactoryFactory.cpp +++ b/packages/muelu/test/unit_tests/ParameterList/FactoryFactory.cpp @@ -14,12 +14,7 @@ #include -#if defined(HAVE_MUELU_AMESOS) -#include -#endif -#if defined(HAVE_MUELU_AMESOS2) #include -#endif #include @@ -139,11 +134,7 @@ TEUCHOS_UNIT_TEST_TEMPLATE_4_DECL(FactoryFactory, BuildFactory, Scalar, LocalOrd TEST_THROW(RUN, MueLu::Exceptions::RuntimeError); #endif } else if (lib == Xpetra::UseTpetra) { -#if defined(HAVE_MUELU_IFPACK2) RUN; -#else - TEST_THROW(RUN, MueLu::Exceptions::RuntimeError); -#endif } } else { RUN; diff --git a/packages/muelu/test/unit_tests/ParameterList/ParameterListInterpreter.cpp b/packages/muelu/test/unit_tests/ParameterList/ParameterListInterpreter.cpp index 2e4b8da1073f..7ec85125aeff 100644 --- a/packages/muelu/test/unit_tests/ParameterList/ParameterListInterpreter.cpp +++ b/packages/muelu/test/unit_tests/ParameterList/ParameterListInterpreter.cpp @@ -28,37 +28,7 @@ TEUCHOS_UNIT_TEST_TEMPLATE_4_DECL(ParameterListInterpreter, SetParameterList, Sc #include MUELU_TESTING_SET_OSTREAM; MUELU_TESTING_LIMIT_SCOPE(Scalar, GlobalOrdinal, Node); -#if defined(HAVE_MUELU_EPETRA) && defined(HAVE_MUELU_IFPACK) && defined(HAVE_MUELU_IFPACK2) && defined(HAVE_MUELU_AMESOS) && defined(HAVE_MUELU_AMESOS2) - - RCP A = TestHelpers::TestFactory::Build1DPoisson(99); - RCP > comm = TestHelpers::Parameters::getDefaultComm(); - - ArrayRCP fileList = TestHelpers::GetFileList(std::string("ParameterList/ParameterListInterpreter/"), std::string(".xml")); - - for (int i = 0; i < fileList.size(); i++) { - // Ignore files with "BlockCrs" in their name - auto found = fileList[i].find("BlockCrs"); - if (found != std::string::npos) continue; - - // Ignore files with "Comparison" in their name - found = fileList[i].find("Comparison"); - if (found != std::string::npos) continue; - - out << "Processing file: " << fileList[i] << std::endl; - ParameterListInterpreter mueluFactory("ParameterList/ParameterListInterpreter/" + fileList[i], *comm); - - RCP H = mueluFactory.CreateHierarchy(); - H->GetLevel(0)->Set("A", A); - - mueluFactory.SetupHierarchy(*H); - - // TODO: check no unused parameters - // TODO: check results of Iterate() - } - -#else out << "Skipping test because some required packages are not enabled (Tpetra, Epetra, EpetraExt, Ifpack, Ifpack2, Amesos, Amesos2)." << std::endl; -#endif } TEUCHOS_UNIT_TEST_TEMPLATE_4_DECL(ParameterListInterpreter, BlockCrs, Scalar, LocalOrdinal, GlobalOrdinal, Node) { @@ -136,9 +106,6 @@ TEUCHOS_UNIT_TEST_TEMPLATE_4_DECL(ParameterListInterpreter, PointCrs_vs_BlockCrs #include MUELU_TESTING_SET_OSTREAM; MUELU_TESTING_LIMIT_SCOPE(Scalar, GlobalOrdinal, Node); -#if !defined(HAVE_MUELU_AMESOS2) - MUELU_TESTING_DO_NOT_TEST(Xpetra::UseTpetra, "Amesos2"); -#endif MUELU_TEST_ONLY_FOR(Xpetra::UseTpetra) { Teuchos::ParameterList matrixParams; matrixParams.set("matrixType", "Laplace1D"); diff --git a/packages/muelu/test/unit_tests/PgPFactory.cpp b/packages/muelu/test/unit_tests/PgPFactory.cpp index fa5bdcd1f008..6b4442baac01 100644 --- a/packages/muelu/test/unit_tests/PgPFactory.cpp +++ b/packages/muelu/test/unit_tests/PgPFactory.cpp @@ -610,9 +610,6 @@ void ReUseOmegasInternal(Teuchos::FancyOStream &out, bool &success, MueLu::Minim #include MUELU_TESTING_SET_OSTREAM; MUELU_TESTING_LIMIT_SCOPE(Scalar, GlobalOrdinal, Node); -#if !defined(HAVE_MUELU_IFPACK2) - MUELU_TESTING_DO_NOT_TEST(Xpetra::UseTpetra, "Ifpack2"); -#endif out << "version: " << MueLu::Version() << std::endl; out << "Test PgPFactory (reuse row based omegas for restriction operator)" << std::endl; @@ -800,9 +797,6 @@ void ReUseOmegasTransPInternal(Teuchos::FancyOStream &out, bool &success, MueLu: #include MUELU_TESTING_SET_OSTREAM; MUELU_TESTING_LIMIT_SCOPE(Scalar, GlobalOrdinal, Node); -#if !defined(HAVE_MUELU_AMESOS2) || !defined(HAVE_MUELU_IFPACK2) - MUELU_TESTING_DO_NOT_TEST(Xpetra::UseTpetra, "Amesos2, Ifpack2"); -#endif out << "version: " << MueLu::Version() << std::endl; out << "Test PgPFactory (reuse row based omegas for restriction operator)" << std::endl; @@ -983,209 +977,7 @@ TEUCHOS_UNIT_TEST_TEMPLATE_4_DECL(PgPFactory, ReUseOmegasTransP, Scalar, LocalOr } TEUCHOS_UNIT_TEST_TEMPLATE_4_DECL(PgPFactory, EpetraVsTpetra, Scalar, LocalOrdinal, GlobalOrdinal, Node) { -#if defined(HAVE_MUELU_EPETRA) && defined(HAVE_MUELU_EPETRAEXT) && defined(HAVE_MUELU_IFPACK) && defined(HAVE_MUELU_IFPACK2) -#include - MUELU_TESTING_SET_OSTREAM; - out << "version: " << MueLu::Version() << std::endl; - out << "Compare results of Epetra and Tpetra" << std::endl; - out << "for 3 level AMG solver using Petrov Galerkin smoothed aggregation with" << std::endl; - out << "one SGS sweep on each multigrid level as pre- and postsmoother" << std::endl; - - typedef typename Teuchos::ScalarTraits::magnitudeType real_type; - typedef typename Xpetra::MultiVector RealValuedMultiVector; - - MUELU_TESTING_LIMIT_EPETRA_SCOPE_TPETRA_IS_DEFAULT(Scalar, GlobalOrdinal, Node); - - typedef typename Teuchos::ScalarTraits::magnitudeType magnitude_type; - - RCP > comm = Teuchos::DefaultComm::getComm(); - - Teuchos::Array results(2); - - // run test only on 1 procs - // then we can check shape of transfer operators - // furthermore slightly different results in parallel for Epetra and Tpetra (due to smoothers?) - if (comm->getSize() == 1) { - Xpetra::UnderlyingLib lib = Xpetra::UseEpetra; - - // run Epetra and Tpetra test - for (int run = 0; run < 2; run++) // TODO: create a subfunction instead or Tuple of UnderlyingLib - { - if (run == 0) - lib = Xpetra::UseEpetra; - else - lib = Xpetra::UseTpetra; - - // generate problem - LocalOrdinal maxLevels = 3; - LocalOrdinal its = 10; - GlobalOrdinal nEle = 63; - const RCP map = MapFactory::Build(lib, nEle, 0, comm); - Teuchos::ParameterList matrixParameters; - matrixParameters.set("nx", nEle); - - RCP > Pr = - Galeri::Xpetra::BuildProblem("Laplace1D", map, matrixParameters); - RCP Op = Pr->BuildMatrix(); - RCP coordinates = Pr->BuildCoords(); - - // build nullspace - RCP nullSpace = MultiVectorFactory::Build(map, 1); - nullSpace->putScalar((SC)1.0); - Teuchos::Array norms(1); - nullSpace->norm1(norms); - if (comm->getRank() == 0) - out << "||NS|| = " << norms[0] << std::endl; - - // fill hierarchy - RCP H = rcp(new Hierarchy()); - H->setDefaultVerbLevel(Teuchos::VERB_HIGH); - - RCP Finest = H->GetLevel(); - Finest->setDefaultVerbLevel(Teuchos::VERB_HIGH); - Finest->Set("A", Op); // set fine level matrix - Finest->Set("Nullspace", nullSpace); // set null space information for finest level - // Finest->Set("Coordinates", coordinates); // set coordinates for finest level - - // define transfer operators - RCP UncoupledAggFact = rcp(new UncoupledAggregationFactory()); - UncoupledAggFact->SetMinNodesPerAggregate(3); - UncoupledAggFact->SetMaxNeighAlreadySelected(0); - UncoupledAggFact->SetOrdering("natural"); - - RCP Ptentfact = rcp(new TentativePFactory()); - RCP Pfact = rcp(new PgPFactory()); - RCP Rfact = rcp(new GenericRFactory()); - RCP Acfact = rcp(new RAPFactory()); - H->SetMaxCoarseSize(1); - - // setup smoothers - Teuchos::ParameterList smootherParamList; - smootherParamList.set("relaxation: type", "Symmetric Gauss-Seidel"); - smootherParamList.set("relaxation: sweeps", (LocalOrdinal)1); - smootherParamList.set("relaxation: damping factor", (SC)1.0); - RCP smooProto = rcp(new TrilinosSmoother("RELAXATION", smootherParamList)); - RCP SmooFact = rcp(new SmootherFactory(smooProto)); - Acfact->setVerbLevel(Teuchos::VERB_HIGH); - - RCP coarseSolveFact = rcp(new SmootherFactory(smooProto, Teuchos::null)); - - FactoryManager M; - M.SetKokkosRefactor(false); - M.SetFactory("P", Pfact); - M.SetFactory("R", Rfact); - M.SetFactory("A", Acfact); - M.SetFactory("Ptent", Ptentfact); - M.SetFactory("Aggregates", UncoupledAggFact); - M.SetFactory("Smoother", SmooFact); - M.SetFactory("CoarseSolver", coarseSolveFact); - - H->Setup(M, 0, maxLevels); - - // test some basic multigrid data - RCP coarseLevel = H->GetLevel(1); - TEST_EQUALITY(coarseLevel->IsRequested("A", MueLu::NoFactory::get()), false); - TEST_EQUALITY(coarseLevel->IsRequested("P", MueLu::NoFactory::get()), false); - TEST_EQUALITY(coarseLevel->IsRequested("PreSmoother", MueLu::NoFactory::get()), false); - TEST_EQUALITY(coarseLevel->IsRequested("PostSmoother", MueLu::NoFactory::get()), false); - TEST_EQUALITY(coarseLevel->IsRequested("R", MueLu::NoFactory::get()), false); - TEST_EQUALITY(coarseLevel->IsAvailable("A", MueLu::NoFactory::get()), true); - TEST_EQUALITY(coarseLevel->IsAvailable("P", MueLu::NoFactory::get()), true); - TEST_EQUALITY(coarseLevel->IsAvailable("PreSmoother", MueLu::NoFactory::get()), true); - TEST_EQUALITY(coarseLevel->IsAvailable("PostSmoother", MueLu::NoFactory::get()), true); - TEST_EQUALITY(coarseLevel->IsAvailable("R", MueLu::NoFactory::get()), true); - TEST_EQUALITY(coarseLevel->IsRequested("P", Pfact.get()), false); - TEST_EQUALITY(coarseLevel->GetKeepFlag("A", MueLu::NoFactory::get()), MueLu::Final); - TEST_EQUALITY(coarseLevel->GetKeepFlag("P", MueLu::NoFactory::get()), MueLu::Final); - TEST_EQUALITY(coarseLevel->GetKeepFlag("PreSmoother", MueLu::NoFactory::get()), MueLu::Final); - TEST_EQUALITY(coarseLevel->GetKeepFlag("PostSmoother", MueLu::NoFactory::get()), MueLu::Final); - TEST_EQUALITY(coarseLevel->GetKeepFlag("R", MueLu::NoFactory::get()), MueLu::Final); - TEST_EQUALITY(coarseLevel->IsRequested("P", Ptentfact.get()), false); - TEST_EQUALITY(coarseLevel->IsRequested("PreSmoother", SmooFact.get()), false); - TEST_EQUALITY(coarseLevel->IsRequested("PostSmoother", SmooFact.get()), false); - TEST_EQUALITY(coarseLevel->IsRequested("R", Rfact.get()), false); - TEST_EQUALITY(coarseLevel->IsAvailable("P", Pfact.get()), false); - TEST_EQUALITY(coarseLevel->IsAvailable("P", Ptentfact.get()), false); - TEST_EQUALITY(coarseLevel->IsAvailable("PreSmoother", SmooFact.get()), false); - TEST_EQUALITY(coarseLevel->IsAvailable("PostSmoother", SmooFact.get()), false); - TEST_EQUALITY(coarseLevel->IsAvailable("R", Rfact.get()), false); - RCP P1 = coarseLevel->Get >("P"); - RCP R1 = coarseLevel->Get >("R"); - TEST_EQUALITY(P1->getGlobalNumRows(), 63); - TEST_EQUALITY(P1->getGlobalNumCols(), 21); - TEST_EQUALITY(R1->getGlobalNumRows(), 21); - TEST_EQUALITY(R1->getGlobalNumCols(), 63); - RCP coarseLevel2 = H->GetLevel(2); - TEST_EQUALITY(coarseLevel2->IsRequested("A", MueLu::NoFactory::get()), false); - TEST_EQUALITY(coarseLevel2->IsRequested("P", MueLu::NoFactory::get()), false); - TEST_EQUALITY(coarseLevel2->IsRequested("R", MueLu::NoFactory::get()), false); - TEST_EQUALITY(coarseLevel2->IsRequested("PreSmoother", MueLu::NoFactory::get()), false); - TEST_EQUALITY(coarseLevel2->IsRequested("PostSmoother", MueLu::NoFactory::get()), false); - TEST_EQUALITY(coarseLevel2->IsAvailable("A", MueLu::NoFactory::get()), true); - TEST_EQUALITY(coarseLevel2->IsAvailable("P", MueLu::NoFactory::get()), true); - TEST_EQUALITY(coarseLevel2->IsAvailable("PreSmoother", MueLu::NoFactory::get()), true); - TEST_EQUALITY(coarseLevel2->IsAvailable("PostSmoother", MueLu::NoFactory::get()), false); - TEST_EQUALITY(coarseLevel2->IsAvailable("R", MueLu::NoFactory::get()), true); - TEST_EQUALITY(coarseLevel2->GetKeepFlag("A", MueLu::NoFactory::get()), MueLu::Final); - TEST_EQUALITY(coarseLevel2->GetKeepFlag("P", MueLu::NoFactory::get()), MueLu::Final); - TEST_EQUALITY(coarseLevel2->GetKeepFlag("PreSmoother", MueLu::NoFactory::get()), MueLu::Final); - TEST_EQUALITY(coarseLevel2->GetKeepFlag("PostSmoother", MueLu::NoFactory::get()), 0); - TEST_EQUALITY(coarseLevel2->GetKeepFlag("R", MueLu::NoFactory::get()), MueLu::Final); - TEST_EQUALITY(coarseLevel2->IsRequested("P", Pfact.get()), false); - TEST_EQUALITY(coarseLevel2->IsRequested("P", Ptentfact.get()), false); - TEST_EQUALITY(coarseLevel2->IsRequested("R", Rfact.get()), false); - TEST_EQUALITY(coarseLevel2->IsAvailable("P", Pfact.get()), false); - TEST_EQUALITY(coarseLevel2->IsAvailable("P", Ptentfact.get()), false); - TEST_EQUALITY(coarseLevel2->IsAvailable("PreSmoother", SmooFact.get()), false); - TEST_EQUALITY(coarseLevel2->IsAvailable("PostSmoother", SmooFact.get()), false); - TEST_EQUALITY(coarseLevel2->IsAvailable("R", Rfact.get()), false); - TEST_EQUALITY(coarseLevel2->GetKeepFlag("P", Pfact.get()), 0); - TEST_EQUALITY(coarseLevel2->GetKeepFlag("P", Ptentfact.get()), 0); - TEST_EQUALITY(coarseLevel2->GetKeepFlag("PreSmoother", SmooFact.get()), 0); - TEST_EQUALITY(coarseLevel2->GetKeepFlag("PostSmoother", SmooFact.get()), 0); - TEST_EQUALITY(coarseLevel2->GetKeepFlag("R", Rfact.get()), 0); - RCP P2 = coarseLevel2->Get >("P"); - RCP R2 = coarseLevel2->Get >("R"); - TEST_EQUALITY(P2->getGlobalNumRows(), 21); - TEST_EQUALITY(P2->getGlobalNumCols(), 7); - TEST_EQUALITY(R2->getGlobalNumRows(), 7); - TEST_EQUALITY(R2->getGlobalNumCols(), 21); - - Teuchos::RCP > PtentTPtent = Xpetra::MatrixMatrix::Multiply(*P1, true, *P1, false, out); - TEST_EQUALITY(PtentTPtent->getGlobalMaxNumRowEntries() - 3 < 1e-12, true); - TEST_EQUALITY(P1->getGlobalMaxNumRowEntries() - 2 < 1e-12, true); - TEST_EQUALITY(P2->getGlobalMaxNumRowEntries() - 2 < 1e-12, true); - - // Define RHS - RCP X = MultiVectorFactory::Build(map, 1); - RCP RHS = MultiVectorFactory::Build(map, 1); - - X->putScalar(1.0); - X->norm2(norms); - if (comm->getRank() == 0) - out << "||X_true|| = " << std::setiosflags(std::ios::fixed) << std::setprecision(10) << norms[0] << std::endl; - - Op->apply(*X, *RHS, Teuchos::NO_TRANS, (SC)1.0, (SC)0.0); - - // Use AMG directly as an iterative method - { - X->putScalar((SC)0.0); - - H->Iterate(*RHS, *X, its); - - X->norm2(norms); - if (comm->getRank() == 0) - out << "||X_" << std::setprecision(2) << its << "|| = " << std::setiosflags(std::ios::fixed) << std::setprecision(10) << norms[0] << std::endl; - results[run] = norms[0]; - } - } - - std::cout << results[0] << " VS " << results[1] << std::endl; - TEST_EQUALITY(results[0] - results[1] < 1e-10, true); // check results of EPETRA vs TPETRA - } // comm->getSize == 1 -#else out << "Skipping test because some required packages are not enabled (Tpetra, Epetra, EpetraExt, Ifpack, Ifpack2)." << std::endl; -#endif } // EpetraVsTpetra diff --git a/packages/muelu/test/unit_tests/RAPShiftFactory.cpp b/packages/muelu/test/unit_tests/RAPShiftFactory.cpp index 346d3f269078..0bdc4fba829e 100644 --- a/packages/muelu/test/unit_tests/RAPShiftFactory.cpp +++ b/packages/muelu/test/unit_tests/RAPShiftFactory.cpp @@ -238,9 +238,6 @@ TEUCHOS_UNIT_TEST_TEMPLATE_4_DECL(RAPShiftFactory, CreatePreconditioner_Factory, #include "MueLu_UseShortNames.hpp" MUELU_TESTING_SET_OSTREAM; MUELU_TESTING_LIMIT_SCOPE(Scalar, GlobalOrdinal, Node); -#if !defined(HAVE_MUELU_AMESOS2) - MUELU_TESTING_DO_NOT_TEST(Xpetra::UseTpetra, "Amesos2"); -#endif out << "version: " << MueLu::Version() << std::endl; typedef Scalar SC; typedef GlobalOrdinal GO; @@ -348,9 +345,6 @@ TEUCHOS_UNIT_TEST_TEMPLATE_4_DECL(RAPShiftFactory, CreatePreconditioner_Easy, Sc #include "MueLu_UseShortNames.hpp" MUELU_TESTING_SET_OSTREAM; MUELU_TESTING_LIMIT_SCOPE(Scalar, GlobalOrdinal, Node); -#if !defined(HAVE_MUELU_AMESOS2) - MUELU_TESTING_DO_NOT_TEST(Xpetra::UseTpetra, "Amesos2"); -#endif out << "version: " << MueLu::Version() << std::endl; typedef Scalar SC; typedef GlobalOrdinal GO; @@ -426,9 +420,6 @@ TEUCHOS_UNIT_TEST_TEMPLATE_4_DECL(RAPShiftFactory, CreatePreconditioner_Easy_Dia #include "MueLu_UseShortNames.hpp" MUELU_TESTING_SET_OSTREAM; MUELU_TESTING_LIMIT_SCOPE(Scalar, GlobalOrdinal, Node); -#if !defined(HAVE_MUELU_AMESOS2) - MUELU_TESTING_DO_NOT_TEST(Xpetra::UseTpetra, "Amesos2"); -#endif out << "version: " << MueLu::Version() << std::endl; typedef Scalar SC; typedef GlobalOrdinal GO; @@ -515,9 +506,6 @@ TEUCHOS_UNIT_TEST_TEMPLATE_4_DECL(RAPShiftFactory, CreatePreconditioner_Low_Stor #include "MueLu_UseShortNames.hpp" MUELU_TESTING_SET_OSTREAM; MUELU_TESTING_LIMIT_SCOPE(Scalar, GlobalOrdinal, Node); -#if !defined(HAVE_MUELU_AMESOS2) - MUELU_TESTING_DO_NOT_TEST(Xpetra::UseTpetra, "Amesos2"); -#endif out << "version: " << MueLu::Version() << std::endl; typedef Scalar SC; typedef GlobalOrdinal GO; @@ -606,9 +594,6 @@ TEUCHOS_UNIT_TEST_TEMPLATE_4_DECL(RAPShiftFactory, CreatePreconditioner_Low_Stor #include "MueLu_UseShortNames.hpp" MUELU_TESTING_SET_OSTREAM; MUELU_TESTING_LIMIT_SCOPE(Scalar, GlobalOrdinal, Node); -#if !defined(HAVE_MUELU_AMESOS2) - MUELU_TESTING_DO_NOT_TEST(Xpetra::UseTpetra, "Amesos2"); -#endif out << "version: " << MueLu::Version() << std::endl; typedef Scalar SC; typedef GlobalOrdinal GO; @@ -699,9 +684,6 @@ TEUCHOS_UNIT_TEST_TEMPLATE_4_DECL(RAPShiftFactory, CreatePreconditioner_Low_Stor #include "MueLu_UseShortNames.hpp" MUELU_TESTING_SET_OSTREAM; MUELU_TESTING_LIMIT_SCOPE(Scalar, GlobalOrdinal, Node); -#if !defined(HAVE_MUELU_AMESOS2) - MUELU_TESTING_DO_NOT_TEST(Xpetra::UseTpetra, "Amesos2"); -#endif out << "version: " << MueLu::Version() << std::endl; typedef Scalar SC; typedef GlobalOrdinal GO; diff --git a/packages/muelu/test/unit_tests/Repartition.cpp b/packages/muelu/test/unit_tests/Repartition.cpp index 49a14ffe931b..2cdd713e06eb 100644 --- a/packages/muelu/test/unit_tests/Repartition.cpp +++ b/packages/muelu/test/unit_tests/Repartition.cpp @@ -867,12 +867,7 @@ TEUCHOS_UNIT_TEST_TEMPLATE_4_DECL(Repartition, CoordinateMap, Scalar, LocalOrdin #include MUELU_TESTING_SET_OSTREAM; MUELU_TESTING_LIMIT_SCOPE(Scalar, GlobalOrdinal, Node); -#if !defined(HAVE_MUELU_AMESOS) || !defined(HAVE_MUELU_IFPACK) MUELU_TESTING_DO_NOT_TEST(Xpetra::UseEpetra, "Amesos, Ifpack"); -#endif -#if !defined(HAVE_MUELU_AMESOS2) || !defined(HAVE_MUELU_IFPACK2) - MUELU_TESTING_DO_NOT_TEST(Xpetra::UseTpetra, "Amesos2, Ifpack2"); -#endif out << "version: " << MueLu::Version() << std::endl; out << "Tests that repartitioning is invariant to map specified in coordinates." << std::endl; @@ -977,12 +972,7 @@ TEUCHOS_UNIT_TEST_TEMPLATE_4_DECL(Repartition, NodePartition, Scalar, LocalOrdin MUELU_TESTING_SET_OSTREAM; MUELU_TESTING_LIMIT_SCOPE(Scalar, GlobalOrdinal, Node); -#if !defined(HAVE_MUELU_AMESOS) || !defined(HAVE_MUELU_IFPACK) MUELU_TESTING_DO_NOT_TEST(Xpetra::UseEpetra, "Amesos, Ifpack"); -#endif -#if !defined(HAVE_MUELU_AMESOS2) || !defined(HAVE_MUELU_IFPACK2) - MUELU_TESTING_DO_NOT_TEST(Xpetra::UseTpetra, "Amesos2, Ifpack2"); -#endif out << "version: " << MueLu::Version() << std::endl; out << "Tests that node repartitioning works " << std::endl; diff --git a/packages/muelu/test/unit_tests/SaPFactory.cpp b/packages/muelu/test/unit_tests/SaPFactory.cpp index 05f46b25d4a0..45f9b805d7b3 100644 --- a/packages/muelu/test/unit_tests/SaPFactory.cpp +++ b/packages/muelu/test/unit_tests/SaPFactory.cpp @@ -41,210 +41,7 @@ TEUCHOS_UNIT_TEST_TEMPLATE_4_DECL(SaPFactory, Test0, Scalar, LocalOrdinal, Globa } TEUCHOS_UNIT_TEST_TEMPLATE_4_DECL(SaPFactory, EpetraVsTpetra, Scalar, LocalOrdinal, GlobalOrdinal, Node) { -#if defined(HAVE_MUELU_EPETRA) && defined(HAVE_MUELU_EPETRAEXT) && defined(HAVE_MUELU_IFPACK) && defined(HAVE_MUELU_IFPACK2) -#include "MueLu_UseShortNames.hpp" - MUELU_TESTING_SET_OSTREAM; - out << "version: " << MueLu::Version() << std::endl; - out << "Compare results of Epetra and Tpetra" << std::endl; - out << "for 3 level AMG solver using smoothed aggregation with" << std::endl; - out << "one SGS sweep on each multigrid level as pre- and postsmoother" << std::endl; - - typedef typename Teuchos::ScalarTraits::magnitudeType magnitude_type; - - MUELU_TESTING_LIMIT_EPETRA_SCOPE_TPETRA_IS_DEFAULT(Scalar, GlobalOrdinal, Node); - - RCP > comm = Teuchos::DefaultComm::getComm(); - - Teuchos::Array results(2); - - // run test only on 1 proc - if (comm->getSize() == 1) { - Xpetra::UnderlyingLib lib = Xpetra::UseEpetra; - - // run Epetra and Tpetra test - for (int run = 0; run < 2; run++) // TODO: create a subfunction instead or Tuple of UnderlyingLib - { - if (run == 0) - lib = Xpetra::UseEpetra; - else - lib = Xpetra::UseTpetra; - - // generate problem - LocalOrdinal maxLevels = 3; - LocalOrdinal its = 10; - GlobalOrdinal nEle = 63; - const RCP map = MapFactory::Build(lib, nEle, 0, comm); - Teuchos::ParameterList matrixParameters; - matrixParameters.set("nx", nEle); - - RCP > Pr = - Galeri::Xpetra::BuildProblem("Laplace1D", map, matrixParameters); - RCP Op = Pr->BuildMatrix(); - - // build nullspace - RCP nullSpace = MultiVectorFactory::Build(map, 1); - nullSpace->putScalar((Scalar)1.0); - Teuchos::Array norms(1); - nullSpace->norm1(norms); - if (comm->getRank() == 0) - out << "||NS|| = " << norms[0] << std::endl; - - // fill hierarchy - RCP H = rcp(new Hierarchy()); - H->setDefaultVerbLevel(Teuchos::VERB_HIGH); - - RCP Finest = H->GetLevel(); - Finest->setDefaultVerbLevel(Teuchos::VERB_HIGH); - Finest->Set("A", Op); // set fine level matrix - Finest->Set("Nullspace", nullSpace); // set null space information for finest level - - // define transfer operators - RCP UncoupledAggFact = rcp(new UncoupledAggregationFactory()); - UncoupledAggFact->SetMinNodesPerAggregate(3); - UncoupledAggFact->SetMaxNeighAlreadySelected(0); - UncoupledAggFact->SetOrdering("natural"); - - RCP Ptentfact = rcp(new TentativePFactory()); - RCP Pfact = rcp(new SaPFactory()); - RCP Rfact = rcp(new TransPFactory()); - RCP Acfact = rcp(new RAPFactory()); - H->SetMaxCoarseSize(1); - - // setup smoothers - Teuchos::ParameterList smootherParamList; - smootherParamList.set("relaxation: type", "Symmetric Gauss-Seidel"); - smootherParamList.set("relaxation: sweeps", (LocalOrdinal)1); - smootherParamList.set("relaxation: damping factor", (Scalar)1.0); - RCP smooProto = rcp(new TrilinosSmoother("RELAXATION", smootherParamList)); - RCP SmooFact = rcp(new SmootherFactory(smooProto)); - Acfact->setVerbLevel(Teuchos::VERB_HIGH); - - RCP coarseSolveFact = rcp(new SmootherFactory(smooProto, Teuchos::null)); - - FactoryManager M; - M.SetKokkosRefactor(false); - M.SetFactory("P", Pfact); - M.SetFactory("R", Rfact); - M.SetFactory("A", Acfact); - M.SetFactory("Ptent", Ptentfact); - M.SetFactory("Aggregates", UncoupledAggFact); - M.SetFactory("Smoother", SmooFact); - M.SetFactory("CoarseSolver", coarseSolveFact); - - H->Setup(M, 0, maxLevels); - - // test some basic multigrid data - RCP coarseLevel = H->GetLevel(1); - TEST_EQUALITY(coarseLevel->IsRequested("A", MueLu::NoFactory::get()), false); - TEST_EQUALITY(coarseLevel->IsRequested("P", MueLu::NoFactory::get()), false); - TEST_EQUALITY(coarseLevel->IsRequested("PreSmoother", MueLu::NoFactory::get()), false); - TEST_EQUALITY(coarseLevel->IsRequested("PostSmoother", MueLu::NoFactory::get()), false); - TEST_EQUALITY(coarseLevel->IsRequested("R", MueLu::NoFactory::get()), false); - TEST_EQUALITY(coarseLevel->IsAvailable("A", MueLu::NoFactory::get()), true); - TEST_EQUALITY(coarseLevel->IsAvailable("P", MueLu::NoFactory::get()), true); - TEST_EQUALITY(coarseLevel->IsAvailable("PreSmoother", MueLu::NoFactory::get()), true); - TEST_EQUALITY(coarseLevel->IsAvailable("PostSmoother", MueLu::NoFactory::get()), true); - TEST_EQUALITY(coarseLevel->IsAvailable("R", MueLu::NoFactory::get()), true); - TEST_EQUALITY(coarseLevel->GetKeepFlag("A", MueLu::NoFactory::get()), MueLu::Final); - TEST_EQUALITY(coarseLevel->GetKeepFlag("P", MueLu::NoFactory::get()), MueLu::Final); - TEST_EQUALITY(coarseLevel->GetKeepFlag("PreSmoother", MueLu::NoFactory::get()), MueLu::Final); - TEST_EQUALITY(coarseLevel->GetKeepFlag("PostSmoother", MueLu::NoFactory::get()), MueLu::Final); - TEST_EQUALITY(coarseLevel->GetKeepFlag("R", MueLu::NoFactory::get()), MueLu::Final); - TEST_EQUALITY(coarseLevel->IsRequested("P", Pfact.get()), false); - TEST_EQUALITY(coarseLevel->IsRequested("P", Ptentfact.get()), false); - TEST_EQUALITY(coarseLevel->IsRequested("PreSmoother", SmooFact.get()), false); - TEST_EQUALITY(coarseLevel->IsRequested("PostSmoother", SmooFact.get()), false); - TEST_EQUALITY(coarseLevel->IsRequested("R", Rfact.get()), false); - TEST_EQUALITY(coarseLevel->IsRequested("A", Acfact.get()), false); - TEST_EQUALITY(coarseLevel->IsAvailable("P", Pfact.get()), false); - TEST_EQUALITY(coarseLevel->IsAvailable("P", Ptentfact.get()), false); - TEST_EQUALITY(coarseLevel->IsAvailable("PreSmoother", SmooFact.get()), false); - TEST_EQUALITY(coarseLevel->IsAvailable("PostSmoother", SmooFact.get()), false); - TEST_EQUALITY(coarseLevel->IsAvailable("R", Rfact.get()), false); - TEST_EQUALITY(coarseLevel->IsAvailable("A", Acfact.get()), false); - TEST_EQUALITY(coarseLevel->GetKeepFlag("P", Pfact.get()), 0); - TEST_EQUALITY(coarseLevel->GetKeepFlag("P", Ptentfact.get()), 0); - TEST_EQUALITY(coarseLevel->GetKeepFlag("PreSmoother", SmooFact.get()), 0); - TEST_EQUALITY(coarseLevel->GetKeepFlag("PostSmoother", SmooFact.get()), 0); - TEST_EQUALITY(coarseLevel->GetKeepFlag("R", Rfact.get()), 0); - TEST_EQUALITY(coarseLevel->GetKeepFlag("A", Acfact.get()), 0); - RCP P1 = coarseLevel->Get >("P"); - RCP R1 = coarseLevel->Get >("R"); - TEST_EQUALITY(P1->getGlobalNumRows(), 63); - TEST_EQUALITY(P1->getGlobalNumCols(), 21); - TEST_EQUALITY(R1->getGlobalNumRows(), 21); - TEST_EQUALITY(R1->getGlobalNumCols(), 63); - RCP coarseLevel2 = H->GetLevel(2); - TEST_EQUALITY(coarseLevel2->IsRequested("A", MueLu::NoFactory::get()), false); - TEST_EQUALITY(coarseLevel2->IsRequested("P", MueLu::NoFactory::get()), false); - TEST_EQUALITY(coarseLevel2->IsRequested("R", MueLu::NoFactory::get()), false); - TEST_EQUALITY(coarseLevel2->IsRequested("PreSmoother", MueLu::NoFactory::get()), false); - TEST_EQUALITY(coarseLevel2->IsRequested("PostSmoother", MueLu::NoFactory::get()), false); - TEST_EQUALITY(coarseLevel2->IsAvailable("A", MueLu::NoFactory::get()), true); - TEST_EQUALITY(coarseLevel2->IsAvailable("P", MueLu::NoFactory::get()), true); - TEST_EQUALITY(coarseLevel2->IsAvailable("PreSmoother", MueLu::NoFactory::get()), true); - TEST_EQUALITY(coarseLevel2->IsAvailable("PostSmoother", MueLu::NoFactory::get()), false); - TEST_EQUALITY(coarseLevel2->IsAvailable("R", MueLu::NoFactory::get()), true); - TEST_EQUALITY(coarseLevel2->GetKeepFlag("A", MueLu::NoFactory::get()), MueLu::Final); - TEST_EQUALITY(coarseLevel2->GetKeepFlag("P", MueLu::NoFactory::get()), MueLu::Final); - TEST_EQUALITY(coarseLevel2->GetKeepFlag("PreSmoother", MueLu::NoFactory::get()), MueLu::Final); - TEST_EQUALITY(coarseLevel2->GetKeepFlag("PostSmoother", MueLu::NoFactory::get()), 0); - TEST_EQUALITY(coarseLevel2->GetKeepFlag("R", MueLu::NoFactory::get()), MueLu::Final); - TEST_EQUALITY(coarseLevel2->IsRequested("P", Pfact.get()), false); - TEST_EQUALITY(coarseLevel2->IsRequested("P", Ptentfact.get()), false); - TEST_EQUALITY(coarseLevel2->IsRequested("R", Rfact.get()), false); - TEST_EQUALITY(coarseLevel2->IsAvailable("P", Pfact.get()), false); - TEST_EQUALITY(coarseLevel2->IsAvailable("P", Ptentfact.get()), false); - TEST_EQUALITY(coarseLevel2->IsAvailable("PreSmoother", SmooFact.get()), false); - TEST_EQUALITY(coarseLevel2->IsAvailable("PostSmoother", SmooFact.get()), false); - TEST_EQUALITY(coarseLevel2->IsAvailable("R", Rfact.get()), false); - TEST_EQUALITY(coarseLevel2->GetKeepFlag("P", Pfact.get()), 0); - TEST_EQUALITY(coarseLevel2->GetKeepFlag("P", Ptentfact.get()), 0); - TEST_EQUALITY(coarseLevel2->GetKeepFlag("PreSmoother", SmooFact.get()), 0); - TEST_EQUALITY(coarseLevel2->GetKeepFlag("PostSmoother", SmooFact.get()), 0); - TEST_EQUALITY(coarseLevel2->GetKeepFlag("R", Rfact.get()), 0); - RCP P2 = coarseLevel2->Get >("P"); - RCP R2 = coarseLevel2->Get >("R"); - TEST_EQUALITY(P2->getGlobalNumRows(), 21); - TEST_EQUALITY(P2->getGlobalNumCols(), 7); - TEST_EQUALITY(R2->getGlobalNumRows(), 7); - TEST_EQUALITY(R2->getGlobalNumCols(), 21); - - Teuchos::RCP > PtentTPtent = Xpetra::MatrixMatrix::Multiply(*P1, true, *P1, false, out); - - if (PtentTPtent->haveGlobalConstants()) TEST_EQUALITY(PtentTPtent->getGlobalMaxNumRowEntries() - 3 < 1e-12, true); - if (P1->haveGlobalConstants()) TEST_EQUALITY(P1->getGlobalMaxNumRowEntries() - 2 < 1e-12, true); - if (P2->haveGlobalConstants()) TEST_EQUALITY(P2->getGlobalMaxNumRowEntries() - 2 < 1e-12, true); - - // Define RHS - RCP X = MultiVectorFactory::Build(map, 1); - RCP RHS = MultiVectorFactory::Build(map, 1); - - X->putScalar(1.0); - X->norm2(norms); - if (comm->getRank() == 0) - out << "||X_true|| = " << std::setiosflags(std::ios::fixed) << std::setprecision(10) << norms[0] << std::endl; - - Op->apply(*X, *RHS, Teuchos::NO_TRANS, (Scalar)1.0, (Scalar)0.0); - - // Use AMG directly as an iterative method - { - X->putScalar((Scalar)0.0); - - H->Iterate(*RHS, *X, its); - - X->norm2(norms); - if (comm->getRank() == 0) - out << "||X_" << std::setprecision(2) << its << "|| = " << std::setiosflags(std::ios::fixed) << std::setprecision(10) << norms[0] << std::endl; - results[run] = norms[0]; - } - } - - TEST_EQUALITY(results[0] - results[1] < 1e-10, true); // check results of EPETRA vs TPETRA - } // comm->getSize == 1 -#else out << "Skipping test because some required packages are not enabled (Tpetra, Epetra, EpetraExt, Ifpack, Ifpack2)." << std::endl; -#endif } // SaPFactory_EpetraVsTpetra diff --git a/packages/muelu/test/unit_tests/TentativePFactory.cpp b/packages/muelu/test/unit_tests/TentativePFactory.cpp index 79277b2ee671..5a7f3ed363fa 100644 --- a/packages/muelu/test/unit_tests/TentativePFactory.cpp +++ b/packages/muelu/test/unit_tests/TentativePFactory.cpp @@ -496,9 +496,6 @@ TEUCHOS_UNIT_TEST_TEMPLATE_4_DECL(TentativePFactory, NonStandardMaps, Scalar, Lo #if !defined(HAVE_MUELU_IFPACK) MUELU_TESTING_DO_NOT_TEST(Xpetra::UseEpetra, "Ifpack"); #endif -#if !defined(HAVE_MUELU_IFPACK2) - MUELU_TESTING_DO_NOT_TEST(Xpetra::UseTpetra, "Ifpack2"); -#endif RCP > comm = Teuchos::DefaultComm::getComm(); Xpetra::UnderlyingLib lib = MueLuTests::TestHelpers::Parameters::getLib(); @@ -670,151 +667,7 @@ TEUCHOS_UNIT_TEST_TEMPLATE_4_DECL(TentativePFactory, PtentEpetraVsTpetra, Scalar #include "MueLu_UseShortNames.hpp" MUELU_TESTING_SET_OSTREAM; MUELU_TESTING_LIMIT_EPETRA_SCOPE_TPETRA_IS_DEFAULT(Scalar, GlobalOrdinal, Node); -#if defined(HAVE_MUELU_EPETRA) && defined(HAVE_MUELU_EPETRAEXT) && defined(HAVE_MUELU_IFPACK) && defined(HAVE_MUELU_IFPACK2) - - using TST = Teuchos::ScalarTraits; - using magnitude_type = typename Teuchos::ScalarTraits::magnitudeType; - using TMT = Teuchos::ScalarTraits; - using real = typename TST::coordinateType; - typedef Xpetra::MultiVector RealValuedMultiVector; - - out << "version: " << MueLu::Version() << std::endl; - out << "Test QR when nullspace isn't supplied by user" << std::endl; - - RCP > comm = Teuchos::DefaultComm::getComm(); - - Teuchos::Array results(2); - - // run test only on 1 proc - if (comm->getSize() == 1) { - Xpetra::UnderlyingLib lib = Xpetra::UseEpetra; - - // run Epetra and Tpetra test - for (int run = 0; run < 2; run++) { - if (run == 0) - lib = Xpetra::UseEpetra; - else - lib = Xpetra::UseTpetra; - - // generate problem - LocalOrdinal maxLevels = 3; - LocalOrdinal its = 10; - GlobalOrdinal nEle = 63; - const RCP map = MapFactory::Build(lib, nEle, 0, comm); - Teuchos::ParameterList matrixParameters; - matrixParameters.set("nx", nEle); - RCP > Pr = - Galeri::Xpetra::BuildProblem("Laplace1D", map, matrixParameters); - RCP Op = Pr->BuildMatrix(); - RCP coordinates = Pr->BuildCoords(); - - // build nullspace - RCP nullSpace = MultiVectorFactory::Build(map, 1); - nullSpace->putScalar(TST::one()); - Teuchos::Array norms(1); - nullSpace->norm1(norms); - if (comm->getRank() == 0) - out << "||NS|| = " << norms[0] << std::endl; - - // fill hierarchy - RCP H = rcp(new Hierarchy()); - H->setDefaultVerbLevel(Teuchos::VERB_HIGH); - RCP Finest = H->GetLevel(); // first associate level with hierarchy (for defaultFactoryHandler!) - - Finest->setDefaultVerbLevel(Teuchos::VERB_HIGH); - Finest->Set("A", Op); // set fine level matrix - Finest->Set("Nullspace", nullSpace); // set null space information for finest level - // Finest->Set("Coordinates", coordinates); // set coordinates for finest level - - // define transfer operators - RCP UncoupledAggFact = rcp(new UncoupledAggregationFactory()); - UncoupledAggFact->SetMinNodesPerAggregate(3); - UncoupledAggFact->SetMaxNeighAlreadySelected(0); - UncoupledAggFact->SetOrdering("natural"); - - RCP Pfact = rcp(new TentativePFactory()); - RCP Rfact = rcp(new TransPFactory()); - RCP Acfact = rcp(new RAPFactory()); - H->SetMaxCoarseSize(1); - - // setup smoothers - Teuchos::ParameterList smootherParamList; - smootherParamList.set("relaxation: type", "Symmetric Gauss-Seidel"); - smootherParamList.set("relaxation: sweeps", (LocalOrdinal)1); - smootherParamList.set("relaxation: damping factor", TST::one()); - RCP smooProto = rcp(new TrilinosSmoother("RELAXATION", smootherParamList)); - RCP SmooFact = rcp(new SmootherFactory(smooProto)); - Acfact->setVerbLevel(Teuchos::VERB_HIGH); - - RCP coarseSolveFact = rcp(new SmootherFactory(smooProto, Teuchos::null)); - - FactoryManager M; - M.SetKokkosRefactor(false); - M.SetFactory("P", Pfact); - M.SetFactory("R", Rfact); - M.SetFactory("A", Acfact); - M.SetFactory("Ptent", Pfact); - M.SetFactory("Aggregates", UncoupledAggFact); - M.SetFactory("Smoother", SmooFact); - M.SetFactory("CoarseSolver", coarseSolveFact); - // M.SetFactory("Coordinates", Pfact); - - H->Setup(M, 0, maxLevels); - - // test some basic multgrid data - RCP coarseLevel = H->GetLevel(1); - RCP P1 = coarseLevel->Get >("P"); - RCP R1 = coarseLevel->Get >("R"); - TEST_EQUALITY(P1->getGlobalNumRows(), 63); - TEST_EQUALITY(P1->getGlobalNumCols(), 21); - TEST_EQUALITY(R1->getGlobalNumRows(), 21); - TEST_EQUALITY(R1->getGlobalNumCols(), 63); - RCP coarseLevel2 = H->GetLevel(2); - RCP P2 = coarseLevel2->Get >("P"); - RCP R2 = coarseLevel2->Get >("R"); - TEST_EQUALITY(P2->getGlobalNumRows(), 21); - TEST_EQUALITY(P2->getGlobalNumCols(), 7); - TEST_EQUALITY(R2->getGlobalNumRows(), 7); - TEST_EQUALITY(R2->getGlobalNumCols(), 21); - - Teuchos::RCP > PtentTPtent = Xpetra::MatrixMatrix::Multiply(*P1, true, *P1, false, out); - Teuchos::RCP > diagVec = Xpetra::VectorFactory::Build(PtentTPtent->getRowMap()); - PtentTPtent->getLocalDiagCopy(*diagVec); - TEST_EQUALITY(diagVec->norm1() - diagVec->getGlobalLength() < 100 * TMT::eps(), true); - TEST_EQUALITY(diagVec->normInf() - TMT::one() < 100 * TMT::eps(), true); - TEST_EQUALITY(TST::magnitude(diagVec->meanValue()) - TMT::one() < 100 * TMT::eps(), true); - TEST_EQUALITY(PtentTPtent->getGlobalNumEntries(), diagVec->getGlobalLength()); - - // Define RHS - RCP X = MultiVectorFactory::Build(map, 1); - RCP RHS = MultiVectorFactory::Build(map, 1); - - X->putScalar(1.0); - X->norm2(norms); - if (comm->getRank() == 0) - out << "||X_true|| = " << std::setiosflags(std::ios::fixed) << std::setprecision(10) << norms[0] << std::endl; - - Op->apply(*X, *RHS, Teuchos::NO_TRANS, (Scalar)1.0, (Scalar)0.0); - - // Use AMG directly as an iterative method - { - X->putScalar((Scalar)0.0); - - H->Iterate(*RHS, *X, its); - - X->norm2(norms); - if (comm->getRank() == 0) - out << "||X_" << std::setprecision(2) << its << "|| = " << std::setiosflags(std::ios::fixed) << std::setprecision(10) << norms[0] << std::endl; - results[run] = norms[0]; - } - } - - TEST_FLOATING_EQUALITY(results[0], results[1], 100 * TMT::eps()); // check results of EPETRA vs TPETRA - } // comm->getSize == 1 - -#else out << "Skipping test because some required packages are not enabled (Tpetra, Epetra, EpetraExt, Ifpack, Ifpack2)." << std::endl; -#endif } // TentativePFactory_EpetraVsTpetra diff --git a/packages/muelu/test/unit_tests/UserData/CreateXpetraPreconditioner.cpp b/packages/muelu/test/unit_tests/UserData/CreateXpetraPreconditioner.cpp index 4073bd19b6b7..a7fe2da61838 100644 --- a/packages/muelu/test/unit_tests/UserData/CreateXpetraPreconditioner.cpp +++ b/packages/muelu/test/unit_tests/UserData/CreateXpetraPreconditioner.cpp @@ -34,127 +34,3 @@ #include "MueLu_CreateXpetraPreconditioner.hpp" -#if defined(HAVE_MUELU_EPETRA) && defined(HAVE_MUELU_SERIAL) - -#include "MueLu_UseDefaultTypes.hpp" - -namespace MueLuTests { - -TEUCHOS_UNIT_TEST_TEMPLATE_4_DECL(UserData, CreateXpetraPreconditioner, Scalar, LocalOrdinal, GlobalOrdinal, Node) { -#include "MueLu_UseShortNames.hpp" - MUELU_TESTING_SET_OSTREAM; - MUELU_TESTING_LIMIT_SCOPE(Scalar, GlobalOrdinal, Node); - out << "version: " << MueLu::Version() << std::endl; - - using Teuchos::RCP; - - Xpetra::UnderlyingLib lib = TestHelpers::Parameters::getLib(); - RCP > comm = TestHelpers::Parameters::getDefaultComm(); - - GO nx = 1000; - - std::string xmlFileName = "UserData/test.xml"; - Teuchos::RCP inParamList = Teuchos::getParametersFromXmlFile(xmlFileName); - if (lib == Xpetra::UseEpetra) { - inParamList->sublist("Hierarchy").set("use kokkos refactor", false); - } - - typedef typename Teuchos::ScalarTraits::magnitudeType magnitude_type; - - // Matrix - RCP Op = TestHelpers::TestFactory::Build1DPoisson(nx * comm->getSize(), lib); - RCP map = Op->getRowMap(); - - // Normalized RHS - RCP RHS1 = MultiVectorFactory::Build(map, 1); - RHS1->setSeed(846930886); - RHS1->randomize(); - Teuchos::Array norms(1); - RHS1->norm2(norms); - RHS1->scale(1 / norms[0]); - - // Zero initial guess - RCP X1 = MultiVectorFactory::Build(Op->getRowMap(), 1); - X1->putScalar(Teuchos::ScalarTraits::zero()); - - Teuchos::ParameterList galeriList; - galeriList.set("nx", nx); - RCP coordinates = Galeri::Xpetra::Utils::CreateCartesianCoordinates("1D", Op->getRowMap(), galeriList); - RCP nullspace = Xpetra::MultiVectorFactory::Build(Op->getDomainMap(), 1); - nullspace->putScalar(Teuchos::ScalarTraits::one()); - - // Add sublist "user data" to MueLu's parameter list - const std::string userName = "user data"; - Teuchos::ParameterList& userParamList = inParamList->sublist(userName); - - // Create test variables to be stored on Level 0 of the Hierarchy - SC myScalar = 3.14; - userParamList.set("Scalar myScalar", myScalar); - double myDouble = 2.71; - userParamList.set("Double myDouble", myDouble); - int myInt = 42; - userParamList.set("int myInt", myInt); - std::string myString = "Test string"; - userParamList.set("String myString", myString); - Array myArrayGO(4); - myArrayGO[0] = 1; - myArrayGO[1] = 4; - myArrayGO[2] = 5; - myArrayGO[3] = 0; - userParamList.set >("Array myArray", myArrayGO); - Array myArrayLO(5); - myArrayLO[0] = 8; - myArrayLO[1] = 7; - myArrayLO[2] = 1; - myArrayLO[3] = 2; - myArrayLO[4] = 3; - userParamList.set >("Array myArray", myArrayLO); - - RCP xH = MueLu::CreateXpetraPreconditioner(Op, *inParamList); - - // Extract variables on level 0 and check that they are unchanged. - RCP level0 = xH->GetLevel(); - bool result = true; - std::string errorMsg = ""; - - if (!(level0->Get("myScalar") == myScalar)) { - errorMsg += "myScalar does not have correct value on level 0.\n"; - result = false; - } - - if (!(level0->Get("myDouble") == myDouble)) { - errorMsg += "myDouble does not have correct value on level 0.\n"; - result = false; - } - - if (!(level0->Get("myInt") == myInt)) { - errorMsg += "myInt does not have correct value on level 0.\n"; - result = false; - } - - if (!(level0->Get("myString") == myString)) { - errorMsg += "myString does not have correct value on level 0.\n"; - result = false; - } - - if (!(level0->Get >("myArray") == myArrayGO)) { - errorMsg += "myArray does not have correct value on level 0.\n"; - result = false; - } - - if (!(level0->Get >("myArray") == myArrayLO)) { - errorMsg += "myArray does not have correct value on level 0.\n"; - result = false; - } - - TEST_EQUALITY(result, true); -} // CreatePreconditioner - -#define MUELU_ETI_GROUP(Scalar, LocalOrdinal, GlobalOrdinal, Node) \ - TEUCHOS_UNIT_TEST_TEMPLATE_4_INSTANT(UserData, CreateXpetraPreconditioner, Scalar, LocalOrdinal, GlobalOrdinal, Node) - -#include - -} // namespace MueLuTests - -#endif // HAVE_MUELU_EPETRA && HAVE_MUELU_SERIAL diff --git a/packages/muelu/test/unit_tests/Utilities.cpp b/packages/muelu/test/unit_tests/Utilities.cpp index 97842d36f208..970e0ce359f8 100644 --- a/packages/muelu/test/unit_tests/Utilities.cpp +++ b/packages/muelu/test/unit_tests/Utilities.cpp @@ -29,70 +29,7 @@ namespace MueLuTests { TEUCHOS_UNIT_TEST_TEMPLATE_4_DECL(Utilities, MatMatMult_EpetraVsTpetra, Scalar, LocalOrdinal, GlobalOrdinal, Node) { -#if defined(HAVE_MUELU_EPETRA) && defined(HAVE_MUELU_EPETRAEXT) -#include - MUELU_TESTING_SET_OSTREAM; - out << "version: " << MueLu::Version() << std::endl; - out << "This test compares the matrix matrix multiply between Tpetra and Epetra" << std::endl; - - MUELU_TESTING_LIMIT_EPETRA_SCOPE_TPETRA_IS_DEFAULT(Scalar, GlobalOrdinal, Node); - - RCP> comm = Parameters::getDefaultComm(); - - typedef typename Teuchos::ScalarTraits::magnitudeType magnitude_type; - - // Calculate result = (Op*Op)*X for Epetra - GO nx = 37 * comm->getSize(); - GO ny = nx; - RCP Op = TestHelpers::TestFactory::Build2DPoisson(nx, ny, Xpetra::UseEpetra); - RCP OpOp = Xpetra::MatrixMatrix::Multiply(*Op, false, *Op, false, out); - RCP result = MultiVectorFactory::Build(OpOp->getRangeMap(), 1); - RCP X_epetra = MultiVectorFactory::Build(OpOp->getDomainMap(), 1); - Teuchos::Array xnorm(1); - X_epetra->setSeed(8675309); - X_epetra->randomize(true); - X_epetra->norm2(xnorm); - OpOp->apply(*X_epetra, *result, Teuchos::NO_TRANS, (Scalar)1.0, (Scalar)0.0); - Teuchos::Array normEpetra(1); - result->norm2(normEpetra); - - // aid debugging by calculating Op*(Op*X) - RCP workVec = MultiVectorFactory::Build(OpOp->getRangeMap(), 1); - RCP check1 = MultiVectorFactory::Build(OpOp->getRangeMap(), 1); - Op->apply(*X_epetra, *workVec, Teuchos::NO_TRANS, (Scalar)1.0, (Scalar)0.0); - Op->apply(*workVec, *check1, Teuchos::NO_TRANS, (Scalar)1.0, (Scalar)0.0); - Teuchos::Array normCheck1(1); - check1->norm2(normCheck1); - - // Calculate result = (Op*Op)*X for Tpetra - Op = TestHelpers::TestFactory::Build2DPoisson(nx, ny, Xpetra::UseTpetra); - OpOp = Xpetra::MatrixMatrix::Multiply(*Op, false, *Op, false, out); - result = MultiVectorFactory::Build(OpOp->getRangeMap(), 1); - RCP X_tpetra = MultiVectorFactory::Build(OpOp->getDomainMap(), 1); - { - auto lcl_X_epetra = X_epetra->getHostLocalView(Xpetra::Access::ReadOnly); - auto lcl_X_tpetra = X_tpetra->getHostLocalView(Xpetra::Access::OverwriteAll); - Kokkos::deep_copy(lcl_X_tpetra, lcl_X_epetra); - } - X_tpetra->norm2(xnorm); - OpOp->apply(*X_tpetra, *result, Teuchos::NO_TRANS, (Scalar)1.0, (Scalar)0.0); - Teuchos::Array normTpetra(1); - result->norm2(normTpetra); - - // aid debugging by calculating Op*(Op*X) - workVec = MultiVectorFactory::Build(OpOp->getRangeMap(), 1); - RCP check2 = MultiVectorFactory::Build(OpOp->getRangeMap(), 1); - Op->apply(*X_tpetra, *workVec, Teuchos::NO_TRANS, (Scalar)1.0, (Scalar)0.0); - Op->apply(*workVec, *check2, Teuchos::NO_TRANS, (Scalar)1.0, (Scalar)0.0); - Teuchos::Array normCheck2(1); - check2->norm2(normCheck2); - - TEST_FLOATING_EQUALITY(normEpetra[0], normTpetra[0], 1e-12); - out << "Epetra ||A*(A*x)|| = " << normCheck1[0] << std::endl; - out << "Tpetra ||A*(A*x)|| = " << normCheck2[0] << std::endl; -#else out << "Skipping test because some required packages are not enabled (Tpetra, EpetraExt)." << std::endl; -#endif } // EpetraVersusTpetra diff --git a/packages/muelu/test/unit_tests_kokkos/MueLu_TestHelpers_Common_kokkos.hpp b/packages/muelu/test/unit_tests_kokkos/MueLu_TestHelpers_Common_kokkos.hpp index d44caf48b604..a32f5469da56 100644 --- a/packages/muelu/test/unit_tests_kokkos/MueLu_TestHelpers_Common_kokkos.hpp +++ b/packages/muelu/test/unit_tests_kokkos/MueLu_TestHelpers_Common_kokkos.hpp @@ -25,82 +25,9 @@ #define TYPE_EQUAL(TYPE1, TYPE2) \ (typeid(TYPE1).name() == typeid(TYPE2).name()) -#ifdef HAVE_MUELU_EPETRA - -#if ((defined(EPETRA_HAVE_OMP) && (!defined(HAVE_TPETRA_INST_OPENMP) || !defined(HAVE_TPETRA_INST_INT_INT))) || \ - (!defined(EPETRA_HAVE_OMP) && (!defined(HAVE_TPETRA_INST_SERIAL) || !defined(HAVE_TPETRA_INST_INT_INT)))) -// : run Epetra, do not run Tpetra -#define MUELU_TESTING_LIMIT_SCOPE(SC, GO, NO) \ - MUELU_DEBUGGER_MACRO \ - if (TestHelpers_kokkos::Parameters::getLib() == Xpetra::UseEpetra) { \ - if (!TYPE_EQUAL(SC, double)) { \ - out << "Skipping Epetra for SC != double" << std::endl; \ - return; \ - } \ - if (!TYPE_EQUAL(GO, int)) { \ - out << "Skipping Epetra for GO != int" << std::endl; \ - return; \ - } \ - if (!TYPE_EQUAL(NO, Xpetra::EpetraNode)) { \ - out << "Skipping Epetra for NO != EpetraNode" << std::endl; \ - return; \ - } \ - } else if (TestHelpers_kokkos::Parameters::getLib() == Xpetra::UseTpetra) { \ - if (TYPE_EQUAL(SC, double) && TYPE_EQUAL(GO, int) && TYPE_EQUAL(NO, Xpetra::EpetraNode)) { \ - out << "Skipping Tpetra for " << std::endl; \ - return; \ - } \ - } - -#define MUELU_TESTING_LIMIT_EPETRA_SCOPE_TPETRA_IS_DEFAULT(SC, GO, NO) \ - { \ - out << "Skipping as we cannot run Epetra and Tpetra for the same combination of template args" << std::endl; \ - return; \ - } - -#else - -#define MUELU_TESTING_LIMIT_SCOPE(SC, GO, NO) \ - MUELU_DEBUGGER_MACRO \ - if (TestHelpers_kokkos::Parameters::getLib() == Xpetra::UseEpetra) { \ - if (!TYPE_EQUAL(SC, double)) { \ - out << "Skipping Epetra for SC != double" << std::endl; \ - return; \ - } \ - if (!TYPE_EQUAL(GO, int)) { \ - out << "Skipping Epetra for GO != int" << std::endl; \ - return; \ - } \ - if (!TYPE_EQUAL(NO, Xpetra::EpetraNode)) { \ - out << "Skipping Epetra for NO != EpetraNode" << std::endl; \ - return; \ - } \ - } - -// If linAlgebra==Tpetra, but the test also requires Epetra, this macro will cause the test -// to return early if SC!=double, GO!={int}, or NO!=Serial. -#define MUELU_TESTING_LIMIT_EPETRA_SCOPE_TPETRA_IS_DEFAULT(SC, GO, NO) \ - if (!TYPE_EQUAL(SC, double)) { \ - out << "Skipping Epetra for SC != double" << std::endl; \ - return; \ - } \ - if (!TYPE_EQUAL(GO, int)) { \ - out << "Skipping Epetra for GO != int" << std::endl; \ - return; \ - } \ - if (!TYPE_EQUAL(NO, Xpetra::EpetraNode)) { \ - out << "Skipping Epetra for NO != EpetraNode" << std::endl; \ - return; \ - } -#endif - -#else // HAVE_MUELU_EPETRA - #define MUELU_TESTING_LIMIT_SCOPE(SC, GO, NO) #define MUELU_TESTING_LIMIT_EPETRA_SCOPE_TPETRA_IS_DEFAULT(SC, GO, NO) -#endif // HAVE_MUELU_EPETRA - // Macro to set MueLu's internal oh-so FancyOStream to be the same as the one used by Teuchos' unit testing framework. // This prevents MueLu's output from intermingling with with the unit test pass/fail summary lines. #define MUELU_TESTING_SET_OSTREAM \ diff --git a/packages/muelu/test/unit_tests_kokkos/MueLu_TestHelpers_kokkos.hpp b/packages/muelu/test/unit_tests_kokkos/MueLu_TestHelpers_kokkos.hpp index ff400f9ca3cb..e8a9efc224e6 100644 --- a/packages/muelu/test/unit_tests_kokkos/MueLu_TestHelpers_kokkos.hpp +++ b/packages/muelu/test/unit_tests_kokkos/MueLu_TestHelpers_kokkos.hpp @@ -664,15 +664,6 @@ class TestFactory { } #if 0 -#if defined(HAVE_MUELU_EPETRA) && defined(HAVE_MUELU_IFPACK) - static RCP createSmootherPrototype(const std::string& type="Gauss-Seidel", LO sweeps=1) { - Teuchos::ParameterList ifpackList; - ifpackList.set("relaxation: type", type); - ifpackList.set("relaxation: sweeps", (LO) sweeps); - ifpackList.set("relaxation: damping factor", (SC) 1.0); - return rcp( new IfpackSmoother("point relaxation stand-alone",ifpackList) ); - } -#endif #endif }; // class TestFactory @@ -744,51 +735,6 @@ class TpetraTestFactory { // TAW: 3/14/2016: If both Epetra and Tpetra are enabled we need partial specializations // on GO=int/long long as well as NO=EpetraNode to disable BuildBlockMatrix -#ifdef HAVE_MUELU_EPETRA -// partial specializations (GO=int not enabled with Tpetra) -#if !defined(HAVE_TPETRA_INST_INT_INT) -template -class TpetraTestFactory { - typedef int GlobalOrdinal; -#include "MueLu_UseShortNames.hpp" - public: - static RCP BuildBlockMatrix(Teuchos::ParameterList& matrixList, Xpetra::UnderlyingLib lib) { return Teuchos::null; } - - private: - TpetraTestFactory() {} // static class -}; // class TpetraTestFactory -#endif - -// partial specializations (GO=long long not enabled with Tpetra) -#if !defined(HAVE_TPETRA_INST_INT_LONG_LONG) -template -class TpetraTestFactory { - typedef long long GlobalOrdinal; -#include "MueLu_UseShortNames.hpp" - public: - static RCP BuildBlockMatrix(Teuchos::ParameterList& matrixList, Xpetra::UnderlyingLib lib) { return Teuchos::null; } - - private: - TpetraTestFactory() {} // static class -}; // class TpetraTestFactory -#endif - -// partial specializations (NO=EpetraNode not enabled with Tpetra) -#if ((defined(EPETRA_HAVE_OMP) && !(defined(HAVE_TPETRA_INST_OPENMP))) || \ - (!defined(EPETRA_HAVE_OMP) && !(defined(HAVE_TPETRA_INST_SERIAL)))) - -template -class TpetraTestFactory { - typedef Xpetra::EpetraNode Node; -#include "MueLu_UseShortNames.hpp" - public: - static RCP BuildBlockMatrix(Teuchos::ParameterList& matrixList, Xpetra::UnderlyingLib lib) { return Teuchos::null; } - - private: - TpetraTestFactory() {} // static class -}; // class TpetraTestFactory -#endif -#endif // endif HAVE_MUELU_EPETRA //! Return the list of files in the directory. Only files that are matching '*filter*' are returned. ArrayRCP GetFileList(const std::string& dirPath, const std::string& filter); diff --git a/packages/muelu/test/unit_tests_kokkos/SaPFactory_kokkos.cpp b/packages/muelu/test/unit_tests_kokkos/SaPFactory_kokkos.cpp index aa99a21bc93a..a63275a23ae0 100644 --- a/packages/muelu/test/unit_tests_kokkos/SaPFactory_kokkos.cpp +++ b/packages/muelu/test/unit_tests_kokkos/SaPFactory_kokkos.cpp @@ -249,207 +249,6 @@ TEUCHOS_UNIT_TEST_TEMPLATE_4_DECL(SaPFactory_kokkos, ConstrainRowOptimalScalarPD // FIXME_KOKKOS: uncomment the test when we get all corresponding factories ported to kokkos #if 0 -#if defined(HAVE_MUELU_EPETRA) && defined(HAVE_MUELU_EPETRAEXT) && defined(HAVE_MUELU_IFPACK) && defined(HAVE_MUELU_IFPACK2) - TEUCHOS_UNIT_TEST(SaPFactory_kokkos, EpetraVsTpetra) - { -#include "MueLu_UseShortNames.hpp" - MueLu::VerboseObject::SetMueLuOStream(Teuchos::rcpFromRef(out)); - - out << "version: " << MueLu::Version() << std::endl; - out << "Compare results of Epetra and Tpetra" << std::endl; - out << "for 3 level AMG solver using smoothed aggregation with" << std::endl; - out << "one SGS sweep on each multigrid level as pre- and postsmoother" << std::endl; - - RCP > comm = Teuchos::DefaultComm::getComm(); - - typedef Teuchos::ScalarTraits STS; - SC zero = STS::zero(), one = STS::one(); - - Array results(2); - - // run test only on 1 proc - if(comm->getSize() == 1) { - Xpetra::UnderlyingLib lib = Xpetra::UseEpetra; - - // run Epetra and Tpetra test - for (int run = 0; run < 2; run++) { //TODO: create a subfunction instead or Tuple of UnderlyingLib - if (run == 0) lib = Xpetra::UseEpetra; - else lib = Xpetra::UseTpetra; - - // generate problem - LO maxLevels = 3; - LO its = 10; - GO nEle = 63; - const RCP map = MapFactory::Build(lib, nEle, 0, comm); - Teuchos::ParameterList matrixParameters; - matrixParameters.set("nx", nEle); - - RCP > Pr = - Galeri::Xpetra::BuildProblem("Laplace1D", map, matrixParameters); - RCP Op = Pr->BuildMatrix(); - - // build nullspace - RCP nullSpace = MultiVectorFactory::Build(map,1); - nullSpace->putScalar(one); - Array norms(1); - nullSpace->norm1(norms); - if (comm->getRank() == 0) - out << "||NS|| = " << norms[0] << std::endl; - - // fill hierarchy - RCP H = rcp( new Hierarchy() ); - H->setDefaultVerbLevel(Teuchos::VERB_HIGH); - - RCP Finest = H->GetLevel(); - Finest->setDefaultVerbLevel(Teuchos::VERB_HIGH); - Finest->Set("A",Op); // set fine level matrix - Finest->Set("Nullspace",nullSpace); // set null space information for finest level - - // define transfer operators - RCP UncoupledAggFact = rcp(new UncoupledAggregationFactory()); - UncoupledAggFact->SetMinNodesPerAggregate(3); - UncoupledAggFact->SetMaxNeighAlreadySelected(0); - UncoupledAggFact->SetOrdering("natural"); - - RCP Ptentfact = rcp(new TentativePFactory()); - RCP Pfact = rcp( new SaPFactory()); - RCP Rfact = rcp( new TransPFactory() ); - RCP Acfact = rcp( new RAPFactory() ); - H->SetMaxCoarseSize(1); - - // setup smoothers - Teuchos::ParameterList smootherParamList; - smootherParamList.set("relaxation: type", "Symmetric Gauss-Seidel"); - smootherParamList.set("relaxation: sweeps", (LO) 1); - smootherParamList.set("relaxation: damping factor", (SC) 1.0); - RCP smooProto = rcp( new TrilinosSmoother("RELAXATION", smootherParamList) ); - RCP SmooFact = rcp( new SmootherFactory(smooProto) ); - Acfact->setVerbLevel(Teuchos::VERB_HIGH); - - RCP coarseSolveFact = rcp(new SmootherFactory(smooProto, Teuchos::null)); - - FactoryManager M; - M.SetFactory("P", Pfact); - M.SetFactory("R", Rfact); - M.SetFactory("A", Acfact); - M.SetFactory("Ptent", Ptentfact); - M.SetFactory("Aggregates", UncoupledAggFact); - M.SetFactory("Smoother", SmooFact); - M.SetFactory("CoarseSolver", coarseSolveFact); - - H->Setup(M, 0, maxLevels); - - // test some basic multigrid data - RCP coarseLevel = H->GetLevel(1); - TEST_EQUALITY(coarseLevel->IsRequested("A",MueLu::NoFactory::get()), false); - TEST_EQUALITY(coarseLevel->IsRequested("P",MueLu::NoFactory::get()), false); - TEST_EQUALITY(coarseLevel->IsRequested("PreSmoother",MueLu::NoFactory::get()), false); - TEST_EQUALITY(coarseLevel->IsRequested("PostSmoother",MueLu::NoFactory::get()), false); - TEST_EQUALITY(coarseLevel->IsRequested("R",MueLu::NoFactory::get()), false); - TEST_EQUALITY(coarseLevel->IsAvailable("A",MueLu::NoFactory::get()), true); - TEST_EQUALITY(coarseLevel->IsAvailable("P",MueLu::NoFactory::get()), true); - TEST_EQUALITY(coarseLevel->IsAvailable("PreSmoother",MueLu::NoFactory::get()), true); - TEST_EQUALITY(coarseLevel->IsAvailable("PostSmoother",MueLu::NoFactory::get()), true); - TEST_EQUALITY(coarseLevel->IsAvailable("R",MueLu::NoFactory::get()), true); - TEST_EQUALITY(coarseLevel->GetKeepFlag("A",MueLu::NoFactory::get()), MueLu::Final); - TEST_EQUALITY(coarseLevel->GetKeepFlag("P",MueLu::NoFactory::get()), MueLu::Final); - TEST_EQUALITY(coarseLevel->GetKeepFlag("PreSmoother",MueLu::NoFactory::get()), MueLu::Final); - TEST_EQUALITY(coarseLevel->GetKeepFlag("PostSmoother",MueLu::NoFactory::get()), MueLu::Final); - TEST_EQUALITY(coarseLevel->GetKeepFlag("R",MueLu::NoFactory::get()), MueLu::Final); - TEST_EQUALITY(coarseLevel->IsRequested("P",Pfact.get()), false); - TEST_EQUALITY(coarseLevel->IsRequested("P",Ptentfact.get()), false); - TEST_EQUALITY(coarseLevel->IsRequested("PreSmoother",SmooFact.get()), false); - TEST_EQUALITY(coarseLevel->IsRequested("PostSmoother",SmooFact.get()), false); - TEST_EQUALITY(coarseLevel->IsRequested("R",Rfact.get()), false); - TEST_EQUALITY(coarseLevel->IsRequested("A",Acfact.get()), false); - TEST_EQUALITY(coarseLevel->IsAvailable("P",Pfact.get()), false); - TEST_EQUALITY(coarseLevel->IsAvailable("P",Ptentfact.get()), false); - TEST_EQUALITY(coarseLevel->IsAvailable("PreSmoother",SmooFact.get()), false); - TEST_EQUALITY(coarseLevel->IsAvailable("PostSmoother",SmooFact.get()), false); - TEST_EQUALITY(coarseLevel->IsAvailable("R",Rfact.get()), false); - TEST_EQUALITY(coarseLevel->IsAvailable("A",Acfact.get()), false); - TEST_EQUALITY(coarseLevel->GetKeepFlag("P",Pfact.get()), 0); - TEST_EQUALITY(coarseLevel->GetKeepFlag("P",Ptentfact.get()), 0); - TEST_EQUALITY(coarseLevel->GetKeepFlag("PreSmoother",SmooFact.get()), 0); - TEST_EQUALITY(coarseLevel->GetKeepFlag("PostSmoother",SmooFact.get()), 0); - TEST_EQUALITY(coarseLevel->GetKeepFlag("R",Rfact.get()), 0); - TEST_EQUALITY(coarseLevel->GetKeepFlag("A",Acfact.get()), 0); - RCP P1 = coarseLevel->Get< RCP >("P"); - RCP R1 = coarseLevel->Get< RCP >("R"); - TEST_EQUALITY(P1->getGlobalNumRows(), 63); - TEST_EQUALITY(P1->getGlobalNumCols(), 21); - TEST_EQUALITY(R1->getGlobalNumRows(), 21); - TEST_EQUALITY(R1->getGlobalNumCols(), 63); - RCP coarseLevel2 = H->GetLevel(2); - TEST_EQUALITY(coarseLevel2->IsRequested("A",MueLu::NoFactory::get()), false); - TEST_EQUALITY(coarseLevel2->IsRequested("P",MueLu::NoFactory::get()), false); - TEST_EQUALITY(coarseLevel2->IsRequested("R",MueLu::NoFactory::get()), false); - TEST_EQUALITY(coarseLevel2->IsRequested("PreSmoother",MueLu::NoFactory::get()), false); - TEST_EQUALITY(coarseLevel2->IsRequested("PostSmoother",MueLu::NoFactory::get()), false); - TEST_EQUALITY(coarseLevel2->IsAvailable("A",MueLu::NoFactory::get()), true); - TEST_EQUALITY(coarseLevel2->IsAvailable("P",MueLu::NoFactory::get()), true); - TEST_EQUALITY(coarseLevel2->IsAvailable("PreSmoother",MueLu::NoFactory::get()), true); - TEST_EQUALITY(coarseLevel2->IsAvailable("PostSmoother",MueLu::NoFactory::get()), false); - TEST_EQUALITY(coarseLevel2->IsAvailable("R",MueLu::NoFactory::get()), true); - TEST_EQUALITY(coarseLevel2->GetKeepFlag("A",MueLu::NoFactory::get()), MueLu::Final); - TEST_EQUALITY(coarseLevel2->GetKeepFlag("P",MueLu::NoFactory::get()), MueLu::Final); - TEST_EQUALITY(coarseLevel2->GetKeepFlag("PreSmoother",MueLu::NoFactory::get()), MueLu::Final); - TEST_EQUALITY(coarseLevel2->GetKeepFlag("PostSmoother",MueLu::NoFactory::get()), 0); - TEST_EQUALITY(coarseLevel2->GetKeepFlag("R",MueLu::NoFactory::get()), MueLu::Final); - TEST_EQUALITY(coarseLevel2->IsRequested("P",Pfact.get()), false); - TEST_EQUALITY(coarseLevel2->IsRequested("P",Ptentfact.get()), false); - TEST_EQUALITY(coarseLevel2->IsRequested("R",Rfact.get()), false); - TEST_EQUALITY(coarseLevel2->IsAvailable("P",Pfact.get()), false); - TEST_EQUALITY(coarseLevel2->IsAvailable("P",Ptentfact.get()), false); - TEST_EQUALITY(coarseLevel2->IsAvailable("PreSmoother",SmooFact.get()), false); - TEST_EQUALITY(coarseLevel2->IsAvailable("PostSmoother",SmooFact.get()), false); - TEST_EQUALITY(coarseLevel2->IsAvailable("R",Rfact.get()), false); - TEST_EQUALITY(coarseLevel2->GetKeepFlag("P",Pfact.get()), 0); - TEST_EQUALITY(coarseLevel2->GetKeepFlag("P",Ptentfact.get()), 0); - TEST_EQUALITY(coarseLevel2->GetKeepFlag("PreSmoother",SmooFact.get()), 0); - TEST_EQUALITY(coarseLevel2->GetKeepFlag("PostSmoother",SmooFact.get()), 0); - TEST_EQUALITY(coarseLevel2->GetKeepFlag("R",Rfact.get()), 0); - RCP P2 = coarseLevel2->Get< RCP >("P"); - RCP R2 = coarseLevel2->Get< RCP >("R"); - TEST_EQUALITY(P2->getGlobalNumRows(), 21); - TEST_EQUALITY(P2->getGlobalNumCols(), 7); - TEST_EQUALITY(R2->getGlobalNumRows(), 7); - TEST_EQUALITY(R2->getGlobalNumCols(), 21); - - Teuchos::RCP > PtentTPtent = Xpetra::MatrixMatrix::Multiply(*P1,true,*P1,false,out); - TEST_EQUALITY(PtentTPtent->getGlobalMaxNumRowEntries()-3<1e-12, true); - TEST_EQUALITY(P1->getGlobalMaxNumRowEntries()-2<1e-12, true); - TEST_EQUALITY(P2->getGlobalMaxNumRowEntries()-2<1e-12, true); - - // Define RHS - RCP X = MultiVectorFactory::Build(map,1); - RCP RHS = MultiVectorFactory::Build(map,1); - - X->putScalar(1.0); - X->norm2(norms); - if (comm->getRank() == 0) - out << "||X_true|| = " << std::setiosflags(std::ios::fixed) << std::setprecision(10) << norms[0] << std::endl; - - Op->apply(*X,*RHS,Teuchos::NO_TRANS,(SC)1.0,(SC)0.0); - - // Use AMG directly as an iterative method - { - X->putScalar( (SC) 0.0); - - H->Iterate(*RHS,*X,its); - - X->norm2(norms); - if (comm->getRank() == 0) - out << "||X_" << std::setprecision(2) << its << "|| = " << std::setiosflags(std::ios::fixed) << std::setprecision(10) << norms[0] << std::endl; - results[run] = norms[0]; - } - } - - TEST_EQUALITY(results[0] - results[1] < 1e-10, true); // check results of EPETRA vs TPETRA - } // comm->getSize == 1 - - } //SaPFactory_EpetraVsTpetra -#endif #endif #define MUELU_ETI_GROUP(SC, LO, GO, NO) \ diff --git a/packages/muelu/test/unit_tests_kokkos/TentativePFactory_kokkos.cpp b/packages/muelu/test/unit_tests_kokkos/TentativePFactory_kokkos.cpp index 2864e357ac6d..b301a85bb266 100644 --- a/packages/muelu/test/unit_tests_kokkos/TentativePFactory_kokkos.cpp +++ b/packages/muelu/test/unit_tests_kokkos/TentativePFactory_kokkos.cpp @@ -587,145 +587,6 @@ TEUCHOS_UNIT_TEST_TEMPLATE_4_DECL(TentativePFactory_kokkos, MakeTentativeUsingDe } -#if defined(HAVE_MUELU_EPETRA) && defined(HAVE_MUELU_EPETRAEXT) && defined(HAVE_MUELU_IFPACK) && defined(HAVE_MUELU_IFPACK2) - TEUCHOS_UNIT_TEST(TentativePFactory, EpetraVsTpetra) - { - out << "version: " << MueLu::Version() << std::endl; - out << "Test QR when nullspace isn't supplied by user" << std::endl; - - RCP > comm = Teuchos::DefaultComm::getComm(); - - using TST = Teuchos::ScalarTraits; - using magnitude_type = typename TST::magnitudeType; - using TMT = Teuchos::ScalarTraits; - - Teuchos::Array results(2); - - // run test only on 1 proc - if(comm->getSize() == 1) - { - Xpetra::UnderlyingLib lib = Xpetra::UseEpetra; - - // run Epetra and Tpetra test - for (int run = 0; run < 2; run++) - { - if (run == 0) lib = Xpetra::UseEpetra; - else lib = Xpetra::UseTpetra; - - // generate problem - LO maxLevels = 3; - LO its=10; - LO nEle = 63; - const RCP map = MapFactory::Build(lib, nEle, 0, comm); - Teuchos::ParameterList matrixParameters; - matrixParameters.set("nx", Teuchos::as(nEle)); - RCP > Pr = - Galeri::Xpetra::BuildProblem("Laplace1D", map, matrixParameters); - RCP Op = Pr->BuildMatrix(); - - // build nullspace - RCP nullSpace = MultiVectorFactory::Build(map,1); - nullSpace->putScalar( (SC) 1.0); - Teuchos::Array norms(1); - nullSpace->norm1(norms); - if (comm->getRank() == 0) - out << "||NS|| = " << norms[0] << std::endl; - - // fill hierarchy - RCP H = rcp( new Hierarchy() ); - H->setDefaultVerbLevel(Teuchos::VERB_HIGH); - RCP Finest = H->GetLevel(); // first associate level with hierarchy (for defaultFactoryHandler!) - - Finest->setDefaultVerbLevel(Teuchos::VERB_HIGH); - Finest->Set("A",Op); // set fine level matrix - Finest->Set("Nullspace",nullSpace); // set null space information for finest level - - // define transfer operators - RCP UncoupledAggFact = rcp(new UncoupledAggregationFactory()); - UncoupledAggFact->SetMinNodesPerAggregate(3); - UncoupledAggFact->SetMaxNeighAlreadySelected(0); - UncoupledAggFact->SetOrdering("natural"); - - RCP Pfact = rcp(new TentativePFactory()); - RCP Rfact = rcp( new TransPFactory() ); - RCP Acfact = rcp( new RAPFactory() ); - H->SetMaxCoarseSize(1); - - // setup smoothers - Teuchos::ParameterList smootherParamList; - smootherParamList.set("relaxation: type", "Symmetric Gauss-Seidel"); - smootherParamList.set("relaxation: sweeps", (LO) 1); - smootherParamList.set("relaxation: damping factor", (SC) 1.0); - RCP smooProto = rcp( new TrilinosSmoother("RELAXATION", smootherParamList) ); - RCP SmooFact = rcp( new SmootherFactory(smooProto) ); - Acfact->setVerbLevel(Teuchos::VERB_HIGH); - - RCP coarseSolveFact = rcp(new SmootherFactory(smooProto, Teuchos::null)); - - FactoryManager M; - M.SetFactory("P", Pfact); - M.SetFactory("R", Rfact); - M.SetFactory("A", Acfact); - M.SetFactory("Ptent", Pfact); - M.SetFactory("Aggregates", UncoupledAggFact); - M.SetFactory("Smoother", SmooFact); - M.SetFactory("CoarseSolver", coarseSolveFact); - - H->Setup(M, 0, maxLevels); - - // test some basic multgrid data - RCP coarseLevel = H->GetLevel(1); - RCP P1 = coarseLevel->Get< RCP >("P"); - RCP R1 = coarseLevel->Get< RCP >("R"); - TEST_EQUALITY(P1->getGlobalNumRows(), 63); - TEST_EQUALITY(P1->getGlobalNumCols(), 21); - TEST_EQUALITY(R1->getGlobalNumRows(), 21); - TEST_EQUALITY(R1->getGlobalNumCols(), 63); - RCP coarseLevel2 = H->GetLevel(2); - RCP P2 = coarseLevel2->Get< RCP >("P"); - RCP R2 = coarseLevel2->Get< RCP >("R"); - TEST_EQUALITY(P2->getGlobalNumRows(), 21); - TEST_EQUALITY(P2->getGlobalNumCols(), 7); - TEST_EQUALITY(R2->getGlobalNumRows(), 7); - TEST_EQUALITY(R2->getGlobalNumCols(), 21); - - Teuchos::RCP > PtentTPtent = Xpetra::MatrixMatrix::Multiply(*P1,true,*P1,false,out); - Teuchos::RCP > diagVec = Xpetra::VectorFactory::Build(PtentTPtent->getRowMap()); - PtentTPtent->getLocalDiagCopy(*diagVec); - TEST_FLOATING_EQUALITY(diagVec->norm1(), TST::magnitude(diagVec->getGlobalLength()), 100*TMT:eps()); - TEST_FLOATING_EQUALITY(diagVec->normInf(), TMT::one(), 100*TMT:eps()); - TEST_FLOATING_EQUALITY(diagVec->meanValue(), TMT::one(), 100*TMT:eps()); - TEST_EQUALITY(PtentTPtent->getGlobalNumEntries(), diagVec->getGlobalLength()); - - // Define RHS - RCP X = MultiVectorFactory::Build(map,1); - RCP RHS = MultiVectorFactory::Build(map,1); - - X->putScalar(1.0); - X->norm2(norms); - if (comm->getRank() == 0) - out << "||X_true|| = " << std::setiosflags(std::ios::fixed) << std::setprecision(10) << norms[0] << std::endl; - - Op->apply(*X,*RHS,Teuchos::NO_TRANS,(SC)1.0,(SC)0.0); - - // Use AMG directly as an iterative method - { - X->putScalar( (SC) 0.0); - - H->Iterate(*RHS,*X,its); - - X->norm2(norms); - if (comm->getRank() == 0) - out << "||X_" << std::setprecision(2) << its << "|| = " << std::setiosflags(std::ios::fixed) << std::setprecision(10) << norms[0] << std::endl; - results[run] = norms[0]; - } - } - - TEST_FLOATING_EQUALITY(results[0], results[1], 100*TMT::eps()); // check results of EPETRA vs TPETRA - } // comm->getSize == 1 - - } // TentativePFactory_EpetraVsTpetra -#endif #endif #define MUELU_ETI_GROUP(SC, LO, GO, NO) \ diff --git a/packages/muelu/test/vardofpernode/VarDofDriver.cpp b/packages/muelu/test/vardofpernode/VarDofDriver.cpp index 736509df1610..7222cf9b0f94 100644 --- a/packages/muelu/test/vardofpernode/VarDofDriver.cpp +++ b/packages/muelu/test/vardofpernode/VarDofDriver.cpp @@ -437,11 +437,7 @@ int main(int argc, char* argv[]) { Xpetra::UnderlyingLib lib = xpetraParameters.GetLib(); if (lib == Xpetra::UseEpetra) { -#ifdef HAVE_MUELU_EPETRA - return main_(clp, lib, argc, argv); -#else throw MueLu::Exceptions::RuntimeError("Epetra is not available"); -#endif } if (lib == Xpetra::UseTpetra) { diff --git a/packages/xpetra/example/MueLu_MatrixDriverTests.cpp b/packages/xpetra/example/MueLu_MatrixDriverTests.cpp index c124d2d77d26..2fd673e6642b 100644 --- a/packages/xpetra/example/MueLu_MatrixDriverTests.cpp +++ b/packages/xpetra/example/MueLu_MatrixDriverTests.cpp @@ -27,17 +27,10 @@ #include "Xpetra_Map.hpp" #include "Xpetra_CrsMatrix.hpp" -#ifdef HAVE_XPETRA_TPETRA #include "Xpetra_TpetraMap.hpp" #include "Xpetra_TpetraCrsMatrix.hpp" #include "Tpetra_Map.hpp" #include "Tpetra_CrsMatrix.hpp" -#endif - -#ifdef HAVE_XPETRA_EPETRA -#include "Xpetra_EpetraMap.hpp" -#include "Xpetra_EpetraCrsMatrix.hpp" -#endif // Define data types typedef double SC; @@ -69,68 +62,33 @@ int main(int argc, char* argv[]) { RCP out = Teuchos::fancyOStream(Teuchos::rcpFromRef(std::cout)); -#ifdef HAVE_XPETRA_TPETRA // Tpetra::CrsMatrix { RCP > map = rcp(new Tpetra::Map(numGlobalElements, indexBase, comm)); RCP > A = MueLu::Gallery::CreateCrsMatrix, Tpetra::CrsMatrix >(matrixType, map, matrixList); A->describe(*out, Teuchos::VERB_EXTREME); } -#endif -#ifdef HAVE_XPETRA_TPETRA // Xpetra::TpetraCrsMatrix { RCP > map = rcp(new Xpetra::TpetraMap(numGlobalElements, indexBase, comm)); RCP > A = MueLu::Gallery::CreateCrsMatrix, Xpetra::TpetraCrsMatrix >(matrixType, map, matrixList); A->describe(*out, Teuchos::VERB_EXTREME); } -#endif - -#ifdef HAVE_XPETRA_EPETRA - // Xpetra::EpetraCrsMatrix - { - RCP map = rcp(new Xpetra::EpetraMap(numGlobalElements, indexBase, comm)); - RCP A = MueLu::Gallery::CreateCrsMatrix(matrixType, map, matrixList); - A->describe(*out, Teuchos::VERB_EXTREME); - } -#endif -#ifdef HAVE_XPETRA_TPETRA // Xpetra::CrsMatrix (Tpetra) { RCP > map = rcp(new Xpetra::TpetraMap(numGlobalElements, indexBase, comm)); RCP > A = MueLu::Gallery::CreateCrsMatrix, Xpetra::CrsMatrix >(matrixType, map, matrixList); A->describe(*out, Teuchos::VERB_EXTREME); } -#endif -#ifdef HAVE_XPETRA_EPETRA - // Xpetra::CrsMatrix (Epetra) - { - RCP > map = rcp(new Xpetra::EpetraMap(numGlobalElements, indexBase, comm)); - RCP > A = MueLu::Gallery::CreateCrsMatrix, Xpetra::CrsMatrix >(matrixType, map, matrixList); - A->describe(*out, Teuchos::VERB_EXTREME); - } -#endif - -#ifdef HAVE_XPETRA_TPETRA // Xpetra::Matrix (Tpetra) { RCP > map = rcp(new Xpetra::TpetraMap(numGlobalElements, indexBase, comm)); RCP > A = MueLu::Gallery::CreateCrsMatrix, Xpetra::Matrix >(matrixType, map, matrixList); A->describe(*out, Teuchos::VERB_EXTREME); } -#endif - -#ifdef HAVE_XPETRA_EPETRA - // Xpetra::Matrix (Epetra) - { - RCP > map = rcp(new Xpetra::EpetraMap(numGlobalElements, indexBase, comm)); - RCP > A = MueLu::Gallery::CreateCrsMatrix, Xpetra::Matrix >(matrixType, map, matrixList); - A->describe(*out, Teuchos::VERB_EXTREME); - } -#endif return EXIT_SUCCESS; } diff --git a/packages/xpetra/example/Simple/Laplace1D-Xpetra.cpp b/packages/xpetra/example/Simple/Laplace1D-Xpetra.cpp index 45dc67b673a4..13b54c0b584c 100644 --- a/packages/xpetra/example/Simple/Laplace1D-Xpetra.cpp +++ b/packages/xpetra/example/Simple/Laplace1D-Xpetra.cpp @@ -19,8 +19,6 @@ #include #include -#ifdef HAVE_XPETRA_TPETRA - #include #if ((defined(HAVE_TPETRA_INST_OPENMP) || defined(HAVE_TPETRA_INST_SERIAL)) && \ @@ -93,9 +91,3 @@ int main(int argc, char *argv[]) { return EXIT_SUCCESS; } #endif // Tpetra instantiated on SC=double, GO=int/long long and Node=Serial/OpenMP -#else -int main(int argc, char *argv[]) { - std::cout << "Xpetra has been compiled without Tpetra support. Skip example." << std::endl; - return EXIT_SUCCESS; -} -#endif // HAVE_XPETRA_TPETRA diff --git a/packages/xpetra/example/Xpetra_Example_Comm.cpp b/packages/xpetra/example/Xpetra_Example_Comm.cpp deleted file mode 100644 index fda115e48938..000000000000 --- a/packages/xpetra/example/Xpetra_Example_Comm.cpp +++ /dev/null @@ -1,48 +0,0 @@ -// @HEADER -// ***************************************************************************** -// Xpetra: A linear algebra interface package -// -// Copyright 2012 NTESS and the Xpetra contributors. -// SPDX-License-Identifier: BSD-3-Clause -// ***************************************************************************** -// @HEADER - -#include - -#include -#include -#include - -#include - -#include "Teuchos_DefaultSerialComm.hpp" -#include "Tpetra_Core.hpp" - -// This driver simply tests Teuchos2Epetra_Comm - -int main(int argc, char** argv) { - typedef int Ordinal; - typedef double Scalar; - - using namespace Teuchos; - - oblackholestream blackhole; - GlobalMPISession mpiSession(&argc, &argv, &blackhole); - - { - RCP > serialTeuchosComm = rcp(new SerialComm); - RCP > teuchosComm = rcp_implicit_cast >(serialTeuchosComm); - RCP epetraComm = Teuchos2Epetra_Comm(teuchosComm); - - assert(epetraComm != Teuchos::null); - } - - { - RCP > teuchosComm = Tpetra::getDefaultComm(); - RCP epetraComm = Teuchos2Epetra_Comm(teuchosComm); - - assert(epetraComm != Teuchos::null); - } - - return (0); -} // main diff --git a/packages/xpetra/src/BlockedMap/Xpetra_BlockedMap_decl.hpp b/packages/xpetra/src/BlockedMap/Xpetra_BlockedMap_decl.hpp index c56685221392..ba6f7a52008d 100644 --- a/packages/xpetra/src/BlockedMap/Xpetra_BlockedMap_decl.hpp +++ b/packages/xpetra/src/BlockedMap/Xpetra_BlockedMap_decl.hpp @@ -231,18 +231,11 @@ class BlockedMap : public Map { /// returns map index in map extractor which contains GID size_t getMapIndexForGID(GlobalOrdinal gid) const; -#ifdef HAVE_XPETRA_TPETRA using local_map_type = typename Xpetra::Map::local_map_type; /// \brief Get the local Map for Kokkos kernels. local_map_type getLocalMap() const { return fullmap_->getLocalMap(); } -#else // HAVE_XPETRA_TPETRA -#ifdef __GNUC__ -#warning "Xpetra Kokkos interface for CrsMatrix is enabled (HAVE_XPETRA_KOKKOS_REFACTOR) but Tpetra is disabled. The Kokkos interface needs Tpetra to be enabled, too." -#endif // __GNUC__ -#endif // #else !HAVE_XPETRA_TPETRA - //@} //! @name Overridden from Teuchos::Describable diff --git a/packages/xpetra/src/CrsGraph/Xpetra_CrsGraph.hpp b/packages/xpetra/src/CrsGraph/Xpetra_CrsGraph.hpp index c32b38cedf9a..361f43ec6371 100644 --- a/packages/xpetra/src/CrsGraph/Xpetra_CrsGraph.hpp +++ b/packages/xpetra/src/CrsGraph/Xpetra_CrsGraph.hpp @@ -20,9 +20,7 @@ #include "Xpetra_Map.hpp" -#ifdef HAVE_XPETRA_TPETRA #include -#endif namespace Xpetra { @@ -191,7 +189,6 @@ class CrsGraph //! @name Tpetra-specific routines //@{ -#ifdef HAVE_XPETRA_TPETRA typedef typename node_type::execution_space execution_space; typedef typename node_type::device_type device_type; typedef Kokkos::StaticCrsGraph local_graph_type; @@ -209,12 +206,6 @@ class CrsGraph //! Get offsets of the diagonal entries in the matrix. virtual void getLocalDiagOffsets(const Kokkos::View &offsets) const = 0; -#else -#ifdef __GNUC__ -#warning "Xpetra Kokkos interface for CrsMatrix is enabled (HAVE_XPETRA_KOKKOS_REFACTOR) but Tpetra is disabled. The Kokkos interface needs Tpetra to be enabled, too." -#endif -#endif - //@} //! @name Overridden from Teuchos::Describable diff --git a/packages/xpetra/src/CrsGraph/Xpetra_CrsGraphFactory.hpp b/packages/xpetra/src/CrsGraph/Xpetra_CrsGraphFactory.hpp index 68b1d76adfa5..00a7ff5fa087 100644 --- a/packages/xpetra/src/CrsGraph/Xpetra_CrsGraphFactory.hpp +++ b/packages/xpetra/src/CrsGraph/Xpetra_CrsGraphFactory.hpp @@ -14,13 +14,7 @@ #include "Xpetra_CrsGraph.hpp" -#ifdef HAVE_XPETRA_TPETRA #include "Xpetra_TpetraCrsGraph.hpp" -#endif - -#ifdef HAVE_XPETRA_EPETRA -#include "Xpetra_EpetraCrsGraph.hpp" -#endif #include "Xpetra_Exceptions.hpp" @@ -40,10 +34,8 @@ class CrsGraphFactory { Build(const RCP>& rowMap) { TEUCHOS_TEST_FOR_EXCEPTION(rowMap->lib() == UseEpetra, std::logic_error, "Can't create Xpetra::EpetraCrsMatrix with these scalar/LO/GO types"); -#ifdef HAVE_XPETRA_TPETRA if (rowMap->lib() == UseTpetra) return rcp(new TpetraCrsGraph(rowMap, 0)); -#endif XPETRA_FACTORY_END; } @@ -53,10 +45,8 @@ class CrsGraphFactory { Build(const Teuchos::RCP>& map, size_t maxNumEntriesPerRow) { XPETRA_MONITOR("CrsGraphFactory::Build"); -#ifdef HAVE_XPETRA_TPETRA if (map->lib() == UseTpetra) return rcp(new TpetraCrsGraph(map, maxNumEntriesPerRow)); -#endif XPETRA_FACTORY_ERROR_IF_EPETRA(map->lib()); XPETRA_FACTORY_END; @@ -71,10 +61,8 @@ class CrsGraphFactory { const Teuchos::RCP& plist = Teuchos::null) { XPETRA_MONITOR("CrsGraphFactory::Build"); -#ifdef HAVE_XPETRA_TPETRA if (rowMap->lib() == UseTpetra) return rcp(new TpetraCrsGraph(rowMap, colMap, maxNumEntriesPerRow, plist)); -#endif XPETRA_FACTORY_ERROR_IF_EPETRA(rowMap->lib()); XPETRA_FACTORY_END; @@ -89,10 +77,8 @@ class CrsGraphFactory { const Teuchos::RCP& plist = Teuchos::null) { XPETRA_MONITOR("CrsGraphFactory::Build"); -#ifdef HAVE_XPETRA_TPETRA if (rowMap->lib() == UseTpetra) return rcp(new TpetraCrsGraph(rowMap, colMap, NumEntriesPerRowToAlloc, plist)); -#endif XPETRA_FACTORY_ERROR_IF_EPETRA(rowMap->lib()); XPETRA_FACTORY_END; @@ -106,17 +92,14 @@ class CrsGraphFactory { const RCP>& domainMap = Teuchos::null, const RCP>& rangeMap = Teuchos::null, const RCP& params = Teuchos::null) { -#ifdef HAVE_XPETRA_TPETRA if (sourceGraph->getRowMap()->lib() == UseTpetra) return rcp(new TpetraCrsGraph(sourceGraph, importer, domainMap, rangeMap, params)); -#endif XPETRA_FACTORY_ERROR_IF_EPETRA(sourceGraph()->getRowMap()->lib()); XPETRA_FACTORY_END; TEUCHOS_UNREACHABLE_RETURN(null); } -#ifdef HAVE_XPETRA_TPETRA /// \brief Constructor specifying column Map and arrays containing the graph in sorted, local ids. /// /// @@ -231,7 +214,6 @@ class CrsGraphFactory { XPETRA_FACTORY_END; } -#endif /// \brief Constructor specifying column Map and arrays containing the graph in sorted, local ids. /// @@ -272,512 +254,8 @@ class CrsGraphFactory { }; // we need the Epetra specialization only if Epetra is enabled -#if (defined(HAVE_XPETRA_EPETRA) && !defined(XPETRA_EPETRA_NO_32BIT_GLOBAL_INDICES)) - -template <> -class CrsGraphFactory { - typedef int LocalOrdinal; - typedef int GlobalOrdinal; - typedef EpetraNode Node; - - private: - //! Private constructor. This is a static class. - CrsGraphFactory() {} - - public: - //! Constructor for empty graph (intended use is an import/export target - can't insert entries directly) - static RCP> - Build(const RCP>& rowMap) { - XPETRA_MONITOR("CrsMatrixFactory::Build"); -#ifdef HAVE_XPETRA_TPETRA - if (rowMap->lib() == UseTpetra) - return rcp(new TpetraCrsGraph(rowMap, 0)); -#endif -#ifdef HAVE_XPETRA_EPETRA - if (rowMap->lib() == UseEpetra) - return rcp(new EpetraCrsGraphT(rowMap)); -#endif - XPETRA_FACTORY_END; - } - - static RCP> - Build(const Teuchos::RCP>& map, size_t maxNumEntriesPerRow) { - XPETRA_MONITOR("CrsGraphFactory::Build"); - -#ifdef HAVE_XPETRA_TPETRA - if (map->lib() == UseTpetra) - return rcp(new TpetraCrsGraph(map, maxNumEntriesPerRow)); -#endif - - if (map->lib() == UseEpetra) - return rcp(new EpetraCrsGraphT(map, maxNumEntriesPerRow)); - - XPETRA_FACTORY_END; - TEUCHOS_UNREACHABLE_RETURN(null); - } - - static Teuchos::RCP> - Build(const Teuchos::RCP>& rowMap, const Teuchos::RCP>& colMap, const ArrayRCP& NumEntriesPerRowToAlloc, const Teuchos::RCP& plist = Teuchos::null) { - XPETRA_MONITOR("CrsGraphFactory::Build"); - -#ifdef HAVE_XPETRA_TPETRA - if (rowMap->lib() == UseTpetra) - return rcp(new TpetraCrsGraph(rowMap, colMap, NumEntriesPerRowToAlloc, plist)); -#endif - - if (rowMap->lib() == UseEpetra) - return rcp(new EpetraCrsGraphT(rowMap, colMap, NumEntriesPerRowToAlloc, plist)); - - XPETRA_FACTORY_END; - TEUCHOS_UNREACHABLE_RETURN(null); - } - - //! Constructor specifying column Map and number of entries per row - static Teuchos::RCP> - Build(const Teuchos::RCP>& rowMap, - const Teuchos::RCP>& colMap, - size_t maxNumEntriesPerRow, - const Teuchos::RCP& plist = Teuchos::null) { - XPETRA_MONITOR("CrsGraphFactory::Build"); - -#ifdef HAVE_XPETRA_TPETRA - if (rowMap->lib() == UseTpetra) - return rcp(new TpetraCrsGraph(rowMap, colMap, maxNumEntriesPerRow, plist)); -#endif - if (rowMap->lib() == UseEpetra) - return rcp(new EpetraCrsGraphT(rowMap, colMap, maxNumEntriesPerRow, plist)); - - XPETRA_FACTORY_END; - TEUCHOS_UNREACHABLE_RETURN(null); - } - - //! Constructor using fused import - static Teuchos::RCP> - Build(const RCP>& sourceGraph, - const Import& importer, - const RCP>& domainMap = Teuchos::null, - const RCP>& rangeMap = Teuchos::null, - const RCP& params = Teuchos::null) { -#ifdef HAVE_XPETRA_TPETRA - if (sourceGraph->getRowMap()->lib() == UseTpetra) - return rcp(new TpetraCrsGraph(sourceGraph, importer, domainMap, rangeMap, params)); -#endif - if (sourceGraph->getRowMap()->lib() == UseEpetra) - return rcp(new EpetraCrsGraphT(sourceGraph, importer, domainMap, rangeMap, params)); - - XPETRA_FACTORY_END; - TEUCHOS_UNREACHABLE_RETURN(null); - } - -#ifdef HAVE_XPETRA_TPETRA - /// \brief Constructor specifying column Map and arrays containing the graph in sorted, local ids. - /// - /// - /// \param rowMap [in] Distribution of rows of the graph. - /// - /// \param colMap [in] Distribution of columns of the graph. - /// - /// \param rowPointers [in] The beginning of each row in the graph, - /// as in a CSR "rowptr" array. The length of this vector should be - /// equal to the number of rows in the graph, plus one. This last - /// entry should store the nunber of nonzeros in the graph. - /// - /// \param columnIndices [in] The local indices of the columns, - /// as in a CSR "colind" array. The length of this vector - /// should be equal to the number of unknowns in the graph. - /// - /// \param params [in/out] Optional list of parameters. If not - /// null, any missing parameters will be filled in with their - /// default values. - static Teuchos::RCP> - Build(const Teuchos::RCP>& rowMap, - const Teuchos::RCP>& colMap, - const typename Xpetra::CrsGraph::local_graph_type::row_map_type& rowPointers, - const typename Xpetra::CrsGraph::local_graph_type::entries_type::non_const_type& columnIndices, - const Teuchos::RCP& plist = Teuchos::null) { - XPETRA_MONITOR("CrsMatrixFactory::Build"); - - if (rowMap->lib() == UseTpetra) - return rcp(new TpetraCrsGraph(rowMap, - colMap, - rowPointers, - columnIndices, - plist)); - - XPETRA_FACTORY_END; - } - - /// \brief Constructor specifying column Map and a local (sorted) - /// graph, which the resulting CrsGraph views. - /// - /// Unlike most other CrsGraph constructors, successful completion - /// of this constructor will result in a fill-complete graph. - /// - /// \param rowMap [in] Distribution of rows of the graph. - /// - /// \param colMap [in] Distribution of columns of the graph. - /// - /// \param lclGraph [in] A locally indexed Kokkos::StaticCrsGraph - /// whose local row indices come from the specified row Map, and - /// whose local column indices come from the specified column - /// Map. - /// - /// \param params [in/out] Optional list of parameters. If not - /// null, any missing parameters will be filled in with their - /// default values. - static Teuchos::RCP> - Build(const Teuchos::RCP>& rowMap, - const Teuchos::RCP>& colMap, - const typename Xpetra::CrsGraph::local_graph_type& lclGraph, - const Teuchos::RCP& params) { - XPETRA_MONITOR("CrsMatrixFactory::Build"); - - if (rowMap->lib() == UseTpetra) - return rcp(new TpetraCrsGraph(rowMap, - colMap, - lclGraph, - params)); - - XPETRA_FACTORY_END; - } - - /// \brief Constructor specifying column, domain and range maps, and a - /// local (sorted) graph, which the resulting CrsGraph views. - /// - /// Unlike most other CrsGraph constructors, successful completion - /// of this constructor will result in a fill-complete graph. - /// - /// \param rowMap [in] Distribution of rows of the graph. - /// - /// \param colMap [in] Distribution of columns of the graph. - /// - /// \param domainMap [in] The graph's domain Map. MUST be one to - /// one! - /// - /// \param rangeMap [in] The graph's range Map. MUST be one to - /// one! May be, but need not be, the same as the domain Map. - /// - /// \param lclGraph [in] A locally indexed Kokkos::StaticCrsGraph - /// whose local row indices come from the specified row Map, and - /// whose local column indices come from the specified column - /// Map. - /// - /// \param params [in/out] Optional list of parameters. If not - /// null, any missing parameters will be filled in with their - /// default values. - static Teuchos::RCP> - Build(const typename Xpetra::CrsGraph::local_graph_type& lclGraph, - const Teuchos::RCP>& rowMap, - const Teuchos::RCP>& colMap, - const Teuchos::RCP>& domainMap = Teuchos::null, - const Teuchos::RCP>& rangeMap = Teuchos::null, - const Teuchos::RCP& params = Teuchos::null) { - XPETRA_MONITOR("CrsMatrixFactory::Build"); - - if (rowMap->lib() == UseTpetra) - return rcp(new TpetraCrsGraph(lclGraph, - rowMap, - colMap, - domainMap, - rangeMap, - params)); - - XPETRA_FACTORY_END; - } -#endif - - /// \brief Constructor specifying column Map and arrays containing the graph in sorted, local ids. - /// - /// - /// \param rowMap [in] Distribution of rows of the graph. - /// - /// \param colMap [in] Distribution of columns of the graph. - /// - /// \param rowPointers [in] The beginning of each row in the graph, - /// as in a CSR "rowptr" array. The length of this vector should be - /// equal to the number of rows in the graph, plus one. This last - /// entry should store the nunber of nonzeros in the graph. - /// - /// \param columnIndices [in] The local indices of the columns, - /// as in a CSR "colind" array. The length of this vector - /// should be equal to the number of unknowns in the graph. - /// - /// \param params [in/out] Optional list of parameters. If not - /// null, any missing parameters will be filled in with their - /// default values. - static Teuchos::RCP> - Build(const Teuchos::RCP>& rowMap, - const Teuchos::RCP>& colMap, - const Teuchos::ArrayRCP& rowPointers, - const Teuchos::ArrayRCP& columnIndices, - const Teuchos::RCP& plist = Teuchos::null) { - XPETRA_MONITOR("CrsMatrixFactory::Build"); - - if (rowMap->lib() == UseTpetra) - return rcp(new TpetraCrsGraph(rowMap, - colMap, - rowPointers, - columnIndices, - plist)); - - XPETRA_FACTORY_END; - } -}; -#endif // we need the Epetra specialization only if Epetra is enabled -#if (defined(HAVE_XPETRA_EPETRA) && !defined(XPETRA_EPETRA_NO_64BIT_GLOBAL_INDICES)) - -template <> -class CrsGraphFactory { - typedef int LocalOrdinal; - typedef long long GlobalOrdinal; - typedef EpetraNode Node; - - private: - //! Private constructor. This is a static class. - CrsGraphFactory() {} - - public: - //! Constructor for empty graph (intended use is an import/export target - can't insert entries directly) - static RCP> - Build(const RCP>& rowMap) { - XPETRA_MONITOR("CrsMatrixFactory::Build"); -#ifdef HAVE_XPETRA_TPETRA - if (rowMap->lib() == UseTpetra) - return rcp(new TpetraCrsGraph(rowMap, 0)); -#endif -#ifdef HAVE_XPETRA_EPETRA - if (rowMap->lib() == UseEpetra) - return rcp(new EpetraCrsGraphT(rowMap)); -#endif - XPETRA_FACTORY_END; - } - - static RCP> - Build(const Teuchos::RCP>& map, size_t maxNumEntriesPerRow) { - XPETRA_MONITOR("CrsGraphFactory::Build"); - -#ifdef HAVE_XPETRA_TPETRA - if (map->lib() == UseTpetra) - return rcp(new TpetraCrsGraph(map, maxNumEntriesPerRow)); -#endif - - if (map->lib() == UseEpetra) - return rcp(new EpetraCrsGraphT(map, maxNumEntriesPerRow)); - - XPETRA_FACTORY_END; - TEUCHOS_UNREACHABLE_RETURN(null); - } - - static Teuchos::RCP> - Build(const Teuchos::RCP>& rowMap, const Teuchos::RCP>& colMap, const ArrayRCP& NumEntriesPerRowToAlloc, const Teuchos::RCP& plist = Teuchos::null) { - XPETRA_MONITOR("CrsGraphFactory::Build"); - -#ifdef HAVE_XPETRA_TPETRA - if (rowMap->lib() == UseTpetra) - return rcp(new TpetraCrsGraph(rowMap, colMap, NumEntriesPerRowToAlloc, plist)); -#endif - - if (rowMap->lib() == UseEpetra) - return rcp(new EpetraCrsGraphT(rowMap, colMap, NumEntriesPerRowToAlloc, plist)); - - XPETRA_FACTORY_END; - TEUCHOS_UNREACHABLE_RETURN(null); - } - - //! Constructor specifying column Map and number of entries per row - static Teuchos::RCP> - Build(const Teuchos::RCP>& rowMap, - const Teuchos::RCP>& colMap, - size_t maxNumEntriesPerRow, - const Teuchos::RCP& plist = Teuchos::null) { - XPETRA_MONITOR("CrsGraphFactory::Build"); - -#ifdef HAVE_XPETRA_TPETRA - if (rowMap->lib() == UseTpetra) - return rcp(new TpetraCrsGraph(rowMap, colMap, maxNumEntriesPerRow, plist)); -#endif - if (rowMap->lib() == UseEpetra) - return rcp(new EpetraCrsGraphT(rowMap, colMap, maxNumEntriesPerRow, plist)); - - XPETRA_FACTORY_END; - TEUCHOS_UNREACHABLE_RETURN(null); - } - - //! Constructor using fused import - static Teuchos::RCP> - Build(const RCP>& sourceGraph, - const Import& importer, - const RCP>& domainMap = Teuchos::null, - const RCP>& rangeMap = Teuchos::null, - const RCP& params = Teuchos::null) { -#ifdef HAVE_XPETRA_TPETRA - if (sourceGraph->getRowMap()->lib() == UseTpetra) - return rcp(new TpetraCrsGraph(sourceGraph, importer, domainMap, rangeMap, params)); -#endif - if (sourceGraph->getRowMap()->lib() == UseTpetra) - return rcp(new EpetraCrsGraphT(sourceGraph, importer, domainMap, rangeMap, params)); - - XPETRA_FACTORY_END; - TEUCHOS_UNREACHABLE_RETURN(null); - } - -#ifdef HAVE_XPETRA_TPETRA - /// \brief Constructor specifying column Map and arrays containing the graph in sorted, local ids. - /// - /// - /// \param rowMap [in] Distribution of rows of the graph. - /// - /// \param colMap [in] Distribution of columns of the graph. - /// - /// \param rowPointers [in] The beginning of each row in the graph, - /// as in a CSR "rowptr" array. The length of this vector should be - /// equal to the number of rows in the graph, plus one. This last - /// entry should store the nunber of nonzeros in the graph. - /// - /// \param columnIndices [in] The local indices of the columns, - /// as in a CSR "colind" array. The length of this vector - /// should be equal to the number of unknowns in the graph. - /// - /// \param params [in/out] Optional list of parameters. If not - /// null, any missing parameters will be filled in with their - /// default values. - static Teuchos::RCP> - Build(const Teuchos::RCP>& rowMap, - const Teuchos::RCP>& colMap, - const typename Xpetra::CrsGraph::local_graph_type::row_map_type& rowPointers, - const typename Xpetra::CrsGraph::local_graph_type::entries_type::non_const_type& columnIndices, - const Teuchos::RCP& plist = Teuchos::null) { - XPETRA_MONITOR("CrsMatrixFactory::Build"); - - if (rowMap->lib() == UseTpetra) - return rcp(new TpetraCrsGraph(rowMap, - colMap, - rowPointers, - columnIndices, - plist)); - - XPETRA_FACTORY_END; - } - - /// \brief Constructor specifying column Map and a local (sorted) - /// graph, which the resulting CrsGraph views. - /// - /// Unlike most other CrsGraph constructors, successful completion - /// of this constructor will result in a fill-complete graph. - /// - /// \param rowMap [in] Distribution of rows of the graph. - /// - /// \param colMap [in] Distribution of columns of the graph. - /// - /// \param lclGraph [in] A locally indexed Kokkos::StaticCrsGraph - /// whose local row indices come from the specified row Map, and - /// whose local column indices come from the specified column - /// Map. - /// - /// \param params [in/out] Optional list of parameters. If not - /// null, any missing parameters will be filled in with their - /// default values. - static Teuchos::RCP> - Build(const Teuchos::RCP>& rowMap, - const Teuchos::RCP>& colMap, - const typename Xpetra::CrsGraph::local_graph_type& lclGraph, - const Teuchos::RCP& params) { - XPETRA_MONITOR("CrsMatrixFactory::Build"); - - if (rowMap->lib() == UseTpetra) - return rcp(new TpetraCrsGraph(rowMap, - colMap, - lclGraph, - params)); - - XPETRA_FACTORY_END; - } - - /// \brief Constructor specifying column, domain and range maps, and a - /// local (sorted) graph, which the resulting CrsGraph views. - /// - /// Unlike most other CrsGraph constructors, successful completion - /// of this constructor will result in a fill-complete graph. - /// - /// \param rowMap [in] Distribution of rows of the graph. - /// - /// \param colMap [in] Distribution of columns of the graph. - /// - /// \param domainMap [in] The graph's domain Map. MUST be one to - /// one! - /// - /// \param rangeMap [in] The graph's range Map. MUST be one to - /// one! May be, but need not be, the same as the domain Map. - /// - /// \param lclGraph [in] A locally indexed Kokkos::StaticCrsGraph - /// whose local row indices come from the specified row Map, and - /// whose local column indices come from the specified column - /// Map. - /// - /// \param params [in/out] Optional list of parameters. If not - /// null, any missing parameters will be filled in with their - /// default values. - static Teuchos::RCP> - Build(const typename Xpetra::CrsGraph::local_graph_type& lclGraph, - const Teuchos::RCP>& rowMap, - const Teuchos::RCP>& colMap, - const Teuchos::RCP>& domainMap = Teuchos::null, - const Teuchos::RCP>& rangeMap = Teuchos::null, - const Teuchos::RCP& params = Teuchos::null) { - XPETRA_MONITOR("CrsMatrixFactory::Build"); - - if (rowMap->lib() == UseTpetra) - return rcp(new TpetraCrsGraph(lclGraph, - rowMap, - colMap, - domainMap, - rangeMap, - params)); - - XPETRA_FACTORY_END; - } -#endif - - /// \brief Constructor specifying column Map and arrays containing the graph in sorted, local ids. - /// - /// - /// \param rowMap [in] Distribution of rows of the graph. - /// - /// \param colMap [in] Distribution of columns of the graph. - /// - /// \param rowPointers [in] The beginning of each row in the graph, - /// as in a CSR "rowptr" array. The length of this vector should be - /// equal to the number of rows in the graph, plus one. This last - /// entry should store the nunber of nonzeros in the graph. - /// - /// \param columnIndices [in] The local indices of the columns, - /// as in a CSR "colind" array. The length of this vector - /// should be equal to the number of unknowns in the graph. - /// - /// \param params [in/out] Optional list of parameters. If not - /// null, any missing parameters will be filled in with their - /// default values. - static Teuchos::RCP> - Build(const Teuchos::RCP>& rowMap, - const Teuchos::RCP>& colMap, - const Teuchos::ArrayRCP& rowPointers, - const Teuchos::ArrayRCP& columnIndices, - const Teuchos::RCP& plist = Teuchos::null) { - XPETRA_MONITOR("CrsMatrixFactory::Build"); - - if (rowMap->lib() == UseTpetra) - return rcp(new TpetraCrsGraph(rowMap, - colMap, - rowPointers, - columnIndices, - plist)); - - XPETRA_FACTORY_END; - } -}; -#endif } // namespace Xpetra #define XPETRA_CRSGRAPHFACTORY_SHORT diff --git a/packages/xpetra/src/CrsGraph/Xpetra_EpetraCrsGraph.cpp b/packages/xpetra/src/CrsGraph/Xpetra_EpetraCrsGraph.cpp deleted file mode 100644 index c2458d244625..000000000000 --- a/packages/xpetra/src/CrsGraph/Xpetra_EpetraCrsGraph.cpp +++ /dev/null @@ -1,126 +0,0 @@ -// @HEADER -// ***************************************************************************** -// Xpetra: A linear algebra interface package -// -// Copyright 2012 NTESS and the Xpetra contributors. -// SPDX-License-Identifier: BSD-3-Clause -// ***************************************************************************** -// @HEADER - -#include "Xpetra_EpetraCrsGraph.hpp" - -#include "Xpetra_Exceptions.hpp" -#include "Xpetra_Utils.hpp" -#include "Xpetra_EpetraExport.hpp" -#include "Xpetra_EpetraImport.hpp" - -namespace Xpetra { - -// TODO: move that elsewhere -template -const Epetra_CrsGraph &toEpetra(const RCP > &graph) { - XPETRA_RCP_DYNAMIC_CAST(const EpetraCrsGraphT, graph, epetraGraph, "toEpetra"); - return *(epetraGraph->getEpetra_CrsGraph()); -} - -// TODO: move that elsewhere -template -RCP > -toXpetra(const Epetra_CrsGraph &g) { - RCP const_graph = rcp(new Epetra_CrsGraph(g)); - RCP graph = - Teuchos::rcp_const_cast(const_graph); - return rcp(new Xpetra::EpetraCrsGraphT(graph)); -} - -#ifndef XPETRA_EPETRA_NO_32BIT_GLOBAL_INDICES -#ifdef HAVE_XPETRA_TPETRA -#include "TpetraCore_config.h" -#if ((defined(EPETRA_HAVE_OMP) && !defined(HAVE_TPETRA_INST_OPENMP)) || \ - (!defined(EPETRA_HAVE_OMP) && !defined(HAVE_TPETRA_INST_SERIAL))) -template class EpetraCrsGraphT; -template RCP > toXpetra(const Epetra_CrsGraph &g); -template const Epetra_CrsGraph &toEpetra(const RCP > &graph); -#endif -#ifdef HAVE_TPETRA_INST_SERIAL -template class EpetraCrsGraphT; -template RCP > toXpetra(const Epetra_CrsGraph &g); -template const Epetra_CrsGraph &toEpetra(const RCP > &graph); -#endif -#ifdef HAVE_TPETRA_INST_PTHREAD -template class EpetraCrsGraphT; -template RCP > toXpetra(const Epetra_CrsGraph &g); -template const Epetra_CrsGraph &toEpetra(const RCP > &graph); -#endif -#ifdef HAVE_TPETRA_INST_OPENMP -template class EpetraCrsGraphT; -template RCP > toXpetra(const Epetra_CrsGraph &g); -template const Epetra_CrsGraph &toEpetra(const RCP > &graph); -#endif -#ifdef HAVE_TPETRA_INST_CUDA -typedef Tpetra::KokkosCompat::KokkosCudaWrapperNode default_node_type; -template class EpetraCrsGraphT; -template RCP > toXpetra(const Epetra_CrsGraph &g); -template const Epetra_CrsGraph &toEpetra(const RCP > &graph); -#endif -#ifdef HAVE_TPETRA_INST_HIP -typedef Tpetra::KokkosCompat::KokkosHIPWrapperNode default_node_type; -template class EpetraCrsGraphT; -template RCP > toXpetra(const Epetra_CrsGraph &g); -template const Epetra_CrsGraph &toEpetra(const RCP > &graph); -#endif -#else -// Tpetra is disabled and Kokkos not available: use dummy node type -typedef Xpetra::EpetraNode default_node_type; -template class EpetraCrsGraphT; -template RCP > toXpetra(const Epetra_CrsGraph &g); -template const Epetra_CrsGraph &toEpetra(const RCP > &graph); -#endif // HAVE_XPETRA_TPETRA -#endif - -#ifndef XPETRA_EPETRA_NO_64BIT_GLOBAL_INDICES -#ifdef HAVE_XPETRA_TPETRA -#include "TpetraCore_config.h" -#if ((defined(EPETRA_HAVE_OMP) && !defined(HAVE_TPETRA_INST_OPENMP)) || \ - (!defined(EPETRA_HAVE_OMP) && !defined(HAVE_TPETRA_INST_SERIAL))) -template class EpetraCrsGraphT; -template RCP > toXpetra(const Epetra_CrsGraph &g); -template const Epetra_CrsGraph &toEpetra(const RCP > &graph); -#endif -#ifdef HAVE_TPETRA_INST_SERIAL -template class EpetraCrsGraphT; -template RCP > toXpetra(const Epetra_CrsGraph &g); -template const Epetra_CrsGraph &toEpetra(const RCP > &graph); -#endif -#ifdef HAVE_TPETRA_INST_PTHREAD -template class EpetraCrsGraphT; -template RCP > toXpetra(const Epetra_CrsGraph &g); -template const Epetra_CrsGraph &toEpetra(const RCP > &graph); -#endif -#ifdef HAVE_TPETRA_INST_OPENMP -template class EpetraCrsGraphT; -template RCP > toXpetra(const Epetra_CrsGraph &g); -template const Epetra_CrsGraph &toEpetra(const RCP > &graph); -#endif -#ifdef HAVE_TPETRA_INST_CUDA -typedef Tpetra::KokkosCompat::KokkosCudaWrapperNode default_node_type; -template class EpetraCrsGraphT; -template RCP > toXpetra(const Epetra_CrsGraph &g); -template const Epetra_CrsGraph &toEpetra(const RCP > &graph); -#endif -#ifdef HAVE_TPETRA_INST_HIP -typedef Tpetra::KokkosCompat::KokkosHIPWrapperNode default_node_type; -template class EpetraCrsGraphT; -template RCP > toXpetra(const Epetra_CrsGraph &g); -template const Epetra_CrsGraph &toEpetra(const RCP > &graph); -#endif -#else -// Tpetra is disabled and Kokkos not available: use dummy node type -typedef Xpetra::EpetraNode default_node_type; -template class EpetraCrsGraphT; -template RCP > toXpetra(const Epetra_CrsGraph &g); -template const Epetra_CrsGraph &toEpetra(const RCP > &graph); -#endif // HAVE_XPETRA_TPETRA -#endif - -} // namespace Xpetra diff --git a/packages/xpetra/src/CrsGraph/Xpetra_EpetraCrsGraph.hpp b/packages/xpetra/src/CrsGraph/Xpetra_EpetraCrsGraph.hpp deleted file mode 100644 index 738fc85e61a9..000000000000 --- a/packages/xpetra/src/CrsGraph/Xpetra_EpetraCrsGraph.hpp +++ /dev/null @@ -1,1505 +0,0 @@ -// @HEADER -// ***************************************************************************** -// Xpetra: A linear algebra interface package -// -// Copyright 2012 NTESS and the Xpetra contributors. -// SPDX-License-Identifier: BSD-3-Clause -// ***************************************************************************** -// @HEADER - -#ifndef XPETRA_EPETRACRSGRAPH_HPP -#define XPETRA_EPETRACRSGRAPH_HPP - -/* this file is automatically generated - do not edit (see script/epetra.py) */ - -#include "Xpetra_EpetraConfigDefs.hpp" -#include "Xpetra_Exceptions.hpp" - -#include "Xpetra_CrsGraph.hpp" - -#include "Xpetra_EpetraExport.hpp" -#include "Xpetra_EpetraImport.hpp" -#include "Xpetra_EpetraMap.hpp" -#include "Xpetra_EpetraUtils.hpp" - -#include - -#if defined(XPETRA_ENABLE_DEPRECATED_CODE) -#ifdef __GNUC__ -#if defined(Xpetra_SHOW_DEPRECATED_WARNINGS) -#warning "The header file Trilinos/packages/xpetra/src/CrsGraph/Xpetra_EpetraCrsGraph.hpp is deprecated." -#endif -#endif -#else -#error "The header file Trilinos/packages/xpetra/src/CrsGraph/Xpetra_EpetraCrsGraph.hpp is deprecated." -#endif - -namespace Xpetra { - -// TODO: move that elsewhere -template -XPETRA_DEPRECATED RCP> -toXpetra(const Epetra_CrsGraph &graph); - -template -XPETRA_DEPRECATED const Epetra_CrsGraph & -toEpetra(const RCP> &graph); - -template -class XPETRA_DEPRECATED EpetraCrsGraphT - : public CrsGraph { - typedef int LocalOrdinal; - - //! The specialization of Map used by this class. - typedef Map map_type; - -#ifdef HAVE_XPETRA_TPETRA - typedef typename Xpetra::CrsGraph::local_graph_type local_graph_type; - typedef typename Xpetra::CrsGraph::node_type node_type; - typedef typename node_type::execution_space execution_space; -#endif - - public: - //! @name Constructor/Destructor Methods - //@{ - //! Constructor for empty DynamicProfile graph (no space is preallocated). - EpetraCrsGraphT(const RCP &rowMap, const RCP &plist = Teuchos::null) { - TEUCHOS_TEST_FOR_EXCEPTION(true, Xpetra::Exceptions::RuntimeError, - "Xpetra::EpetraCrsGraph only available for GO=int or GO=long long with EpetraNode (Serial or OpenMP depending on configuration)"); - } - - //! Constructor specifying fixed number of entries for each row. - EpetraCrsGraphT(const RCP &rowMap, size_t maxNumEntriesPerRow, const RCP &plist = Teuchos::null) { - TEUCHOS_TEST_FOR_EXCEPTION(true, Xpetra::Exceptions::RuntimeError, - "Xpetra::EpetraCrsGraph only available for GO=int or GO=long long with EpetraNode (Serial or OpenMP depending on configuration)"); - } - - //! Constructor specifying column Map and fixed number of entries for each row. - EpetraCrsGraphT(const RCP> &rowMap, const RCP> &colMap, size_t maxNumEntriesPerRow, const Teuchos::RCP &plist = null) { - TEUCHOS_TEST_FOR_EXCEPTION(true, Xpetra::Exceptions::RuntimeError, - "Xpetra::EpetraCrsGraph only available for GO=int or GO=long long with EpetraNode (Serial or OpenMP depending on configuration)"); - } - - ////! Constructor specifying column Map and number of entries in each row. - // Definition not in cpp, so comment out - EpetraCrsGraphT(const RCP> &rowMap, const RCP> &colMap, const ArrayRCP &NumEntriesPerRowToAlloc, const RCP ¶ms = null) { - TEUCHOS_TEST_FOR_EXCEPTION(true, Xpetra::Exceptions::RuntimeError, - "Xpetra::EpetraCrsGraph only available for GO=int or GO=long long with EpetraNode (Serial or OpenMP depending on configuration)"); - } - - // Constructor for fused import - EpetraCrsGraphT(const RCP> &sourceGraph, - const Import &importer, - const RCP> &domainMap = Teuchos::null, - const RCP> &rangeMap = Teuchos::null, - const RCP ¶ms = Teuchos::null) { - TEUCHOS_TEST_FOR_EXCEPTION(true, Xpetra::Exceptions::RuntimeError, - "Xpetra::EpetraCrsGraph only available for GO=int or GO=long long with EpetraNode (Serial or OpenMP depending on configuration)"); - } - -#ifdef HAVE_XPETRA_TPETRA - //! Constructor specifying column Map, number of entries in each row and column indices in each row. - EpetraCrsGraphT(const RCP> &rowMap, - const RCP> &colMap, - const typename local_graph_type::row_map_type &rowPointers, - const typename local_graph_type::entries_type::non_const_type &columnIndices, - const RCP &plist = Teuchos::null) { - TEUCHOS_TEST_FOR_EXCEPTION(true, Xpetra::Exceptions::NotImplemented, - "Xpetra::EpetraCrsGraph only available for GO=int or GO=long long with EpetraNode (Serial or OpenMP depending on configuration)"); - } - - //! Constructor specifying column Map, number of entries in each row and column indices in each row. - EpetraCrsGraphT(const RCP> &rowMap, - const RCP> &colMap, - const local_graph_type &lclGraph, - const RCP &plist = Teuchos::null) { - TEUCHOS_TEST_FOR_EXCEPTION(true, Xpetra::Exceptions::NotImplemented, - "Xpetra::EpetraCrsGraph only available for GO=int or GO=long long with EpetraNode (Serial or OpenMP depending on configuration)"); - } - - //! Constructor specifying column Map, number of entries in each row and column indices in each row. - EpetraCrsGraphT(const local_graph_type &lclGraph, - const RCP> &rowMap, - const RCP> &colMap, - const Teuchos::RCP &domainMap = Teuchos::null, - const Teuchos::RCP &rangeMap = Teuchos::null, - const RCP &plist = Teuchos::null) { - TEUCHOS_TEST_FOR_EXCEPTION(true, Xpetra::Exceptions::NotImplemented, - "Xpetra::EpetraCrsGraph only available for GO=int or GO=long long with EpetraNode (Serial or OpenMP depending on configuration)"); - } -#endif - - //! Destructor. - virtual ~EpetraCrsGraphT() {} - - //@} - - //! @name Insertion/Removal Methods - //@{ - - //! Insert global indices into the graph. - void insertGlobalIndices(GlobalOrdinal globalRow, const ArrayView &indices) {} - - //! Insert local indices into the graph. - void insertLocalIndices(const LocalOrdinal localRow, const ArrayView &indices) {} - - //! Remove all graph indices from the specified local row. - void removeLocalIndices(LocalOrdinal localRow) {} - - //! Allocates the 1D pointer arrays of the graph - void allocateAllIndices(size_t numNonZeros, ArrayRCP &rowptr, ArrayRCP &colind) {} - - //! Sets the 1D pointer arrays of the graph. - void setAllIndices(const ArrayRCP &rowptr, const ArrayRCP &colind) {} - - //! Gets the 1D pointer arrays of the graph. - void getAllIndices(ArrayRCP &rowptr, ArrayRCP &colind) const {} - - //@} - - //! @name Transformational Methods - //@{ - - //! Signal that data entry is complete, specifying domain and range maps. - void fillComplete(const RCP> &domainMap, const RCP> &rangeMap, const RCP ¶ms = null) {} - - //! Signal that data entry is complete. - void fillComplete(const RCP ¶ms = null) {} - - //! Expert version of fillComplete - void - expertStaticFillComplete(const Teuchos::RCP> &domainMap, - const Teuchos::RCP> &rangeMap, - const Teuchos::RCP> &importer = - Teuchos::null, - const Teuchos::RCP> &exporter = - Teuchos::null, - const Teuchos::RCP ¶ms = - Teuchos::null) {} - - //@} - - //! @name Methods implementing RowGraph. - //@{ - - //! Returns the communicator. - RCP> getComm() const { - return Teuchos::null; - } - - //! Returns the Map that describes the row distribution in this graph. - RCP> getRowMap() const { return Teuchos::null; } - - //! Returns the Map that describes the column distribution in this graph. - RCP> getColMap() const { return Teuchos::null; } - - //! Returns the Map associated with the domain of this graph. - RCP> getDomainMap() const { return Teuchos::null; } - - //! Returns the Map associated with the domain of this graph. - RCP> getRangeMap() const { return Teuchos::null; } - - //! Returns the importer associated with this graph. - RCP> getImporter() const { return Teuchos::null; } - - //! Returns the exporter associated with this graph. - RCP> getExporter() const { return Teuchos::null; } - - //! Returns the number of global rows in the graph. - global_size_t getGlobalNumRows() const { return 0; } - - //! Returns the number of global columns in the graph. - global_size_t getGlobalNumCols() const { return 0; } - - //! Returns the number of graph rows owned on the calling node. - size_t getLocalNumRows() const { return 0; } - - //! Returns the number of columns connected to the locally owned rows of this graph. - size_t getLocalNumCols() const { return 0; } - - //! Returns the index base for global indices for this graph. - GlobalOrdinal getIndexBase() const { return 0; } - - //! Returns the global number of entries in the graph. - global_size_t getGlobalNumEntries() const { return 0; } - - //! Returns the local number of entries in the graph. - size_t getLocalNumEntries() const { return 0; } - - //! Returns the current number of entries on this node in the specified global row. - size_t getNumEntriesInGlobalRow(GlobalOrdinal globalRow) const { return 0; } - - //! Returns the current number of entries on this node in the specified local row. - size_t getNumEntriesInLocalRow(LocalOrdinal localRow) const { return 0; } - - //! Returns the current number of allocated entries for this node in the specified global row . - size_t getNumAllocatedEntriesInGlobalRow(GlobalOrdinal globalRow) const { return 0; } - - //! Returns the current number of allocated entries on this node in the specified local row. - size_t getNumAllocatedEntriesInLocalRow(LocalOrdinal localRow) const { return 0; } - - //! Maximum number of entries in all rows over all processes. - size_t getGlobalMaxNumRowEntries() const { return 0; } - - //! Maximum number of entries in all rows owned by the calling process. - size_t getLocalMaxNumRowEntries() const { return 0; } - - //! Whether the graph has a column Map. - bool hasColMap() const { return false; } - - //! Whether column indices are stored using local indices on the calling process. - bool isLocallyIndexed() const { return false; } - - //! Whether column indices are stored using global indices on the calling process. - bool isGloballyIndexed() const { return false; } - - //! Whether fillComplete() has been called and the graph is in compute mode. - bool isFillComplete() const { return false; } - - //! Returns true if storage has been optimized. - bool isStorageOptimized() const { return false; } - - //! Return a const, nonpersisting view of global indices in the given row. - void getGlobalRowView(GlobalOrdinal GlobalRow, ArrayView &Indices) const {} - - //! Return a const, nonpersisting view of local indices in the given row. - void getLocalRowView(LocalOrdinal LocalRow, ArrayView &indices) const {} - -#ifdef HAVE_XPETRA_TPETRA - typename local_graph_type::HostMirror getLocalGraphHost() const { - TEUCHOS_TEST_FOR_EXCEPTION(true, Xpetra::Exceptions::NotImplemented, - "Xpetra::EpetraCrsGraph only available for GO=int or GO=long long with EpetraNode (Serial or OpenMP depending on configuration)"); - TEUCHOS_UNREACHABLE_RETURN((typename local_graph_type::HostMirror())); - } -#else -#ifdef __GNUC__ -#warning "Xpetra Kokkos interface for CrsGraph is enabled (HAVE_XPETRA_KOKKOS_REFACTOR) but Tpetra is disabled. The Kokkos interface needs Tpetra to be enabled, too." -#endif -#endif - -#ifdef HAVE_XPETRA_TPETRA - local_graph_type getLocalGraphDevice() const { - TEUCHOS_TEST_FOR_EXCEPTION(true, Xpetra::Exceptions::NotImplemented, - "Xpetra::EpetraCrsGraph only available for GO=int or GO=long long with EpetraNode (Serial or OpenMP depending on configuration)"); - TEUCHOS_UNREACHABLE_RETURN((local_graph_type())); - } - - void getLocalDiagOffsets(const Kokkos::View &offsets) const { - TEUCHOS_TEST_FOR_EXCEPTION(true, Xpetra::Exceptions::RuntimeError, - "Epetra does not support getLocalDiagOffsets!"); - } -#else -#ifdef __GNUC__ -#warning "Xpetra Kokkos interface for CrsGraph is enabled (HAVE_XPETRA_KOKKOS_REFACTOR) but Tpetra is disabled. The Kokkos interface needs Tpetra to be enabled, too." -#endif - -#endif - - //! Force the computation of global constants if we don't have them - void computeGlobalConstants() {} - - //@} - - //! @name Overridden from Teuchos::Describable - //@{ - - //! Return a simple one-line description of this object. - std::string description() const { return std::string(""); } - - //! Print the object with some verbosity level to an FancyOStream object. - void describe(Teuchos::FancyOStream &out, const Teuchos::EVerbosityLevel verbLevel = Teuchos::Describable::verbLevel_default) const {} - - //@} - - //! Implements DistObject interface - //{@ - - //! Access function for the Tpetra::Map this DistObject was constructed with. - Teuchos::RCP> getMap() const { return Teuchos::null; } - - //! Import. - void doImport(const DistObject &source, - const Import &importer, CombineMode CM) {} - - //! Export. - void doExport(const DistObject &dest, - const Import &importer, CombineMode CM) {} - - //! Import (using an Exporter). - void doImport(const DistObject &source, - const Export &exporter, CombineMode CM) {} - - //! Export (using an Importer). - void doExport(const DistObject &dest, - const Export &exporter, CombineMode CM) {} - //@} - - //! @name Xpetra specific - //@{ - - //! EpetraCrsGraphT constructor to wrap a Epetra_CrsGraph object - EpetraCrsGraphT(const Teuchos::RCP &graph) { - TEUCHOS_TEST_FOR_EXCEPTION(true, Xpetra::Exceptions::RuntimeError, - "Xpetra::EpetraCrsGraph only available for GO=int or GO=long long with EpetraNode (Serial or OpenMP depending on configuration)"); - } - - //! Get the underlying Epetra graph - RCP getEpetra_CrsGraph() const { return Teuchos::null; } - - //@} - - private: -}; // EpetraCrsGraphT class - -// specialization on GO=int and Node=EpetraNode -#ifndef XPETRA_EPETRA_NO_32BIT_GLOBAL_INDICES -template <> -class EpetraCrsGraphT - : public virtual CrsGraph { - typedef int LocalOrdinal; - typedef int GlobalOrdinal; - typedef EpetraNode Node; - - //! The specialization of Map used by this class. - typedef Map map_type; - -#ifdef HAVE_XPETRA_TPETRA - typedef typename Xpetra::CrsGraph::local_graph_type local_graph_type; - typedef typename Xpetra::CrsGraph::node_type node_type; - typedef typename node_type::execution_space execution_space; -#endif - - public: - //! @name Constructor/Destructor Methods - //@{ - - //! Constructor for empty DynamicProfile graph (no space is preallocated). - EpetraCrsGraphT(const Teuchos::RCP> &rowMap) - : graph_(Teuchos::rcp(new Epetra_CrsGraph(Copy, toEpetra(rowMap), 0, false))) {} - - //! Constructor specifying fixed number of entries for each row. - EpetraCrsGraphT(const RCP &rowMap, size_t maxNumEntriesPerRow, const RCP & /* plist */ = Teuchos::null) - : graph_(Teuchos::rcp(new Epetra_CrsGraph(Copy, toEpetra(rowMap), maxNumEntriesPerRow, true))) {} - - ////! Constructor specifying (possibly different) number of entries in each row. - // Definition not in cpp, so comment out - // EpetraCrsGraphT(const RCP< const Map< LocalOrdinal, GlobalOrdinal, Node > > &rowMap, const ArrayRCP< const size_t > &NumEntriesPerRowToAlloc, const RCP< ParameterList > ¶ms=null); - - //! Constructor specifying column Map and fixed number of entries for each row. - EpetraCrsGraphT(const RCP> &rowMap, const RCP> &colMap, size_t maxNumEntriesPerRow, const Teuchos::RCP & /* plist */ = null) - : graph_(Teuchos::rcp(new Epetra_CrsGraph(Copy, toEpetra(rowMap), toEpetra(colMap), maxNumEntriesPerRow, true))) {} - - ////! Constructor specifying column Map and number of entries in each row. - // Definition not in cpp, so comment out - EpetraCrsGraphT(const RCP> &rowMap, const RCP> &colMap, const ArrayRCP &NumEntriesPerRowToAlloc, const RCP & /* params */ = null) { - Teuchos::Array numEntriesPerRowToAlloc(NumEntriesPerRowToAlloc.begin(), NumEntriesPerRowToAlloc.end()); // convert array of "size_t" to array of "int" - graph_ = Teuchos::rcp(new Epetra_CrsGraph(Copy, toEpetra(rowMap), toEpetra(colMap), numEntriesPerRowToAlloc.getRawPtr(), true)); - } - - // Constructor for fused import - EpetraCrsGraphT(const RCP> &sourceGraph, - const Import &importer, - const RCP> &domainMap = Teuchos::null, - const RCP> &rangeMap = Teuchos::null, - const RCP ¶ms = Teuchos::null) { - XPETRA_DYNAMIC_CAST(const EpetraCrsGraphT, *sourceGraph, tSourceGraph, "Xpetra::EpetraCrsGraphT() only accepts Xpetra::EpetraCrsGraphT as input arguments."); - XPETRA_DYNAMIC_CAST(const EpetraImportT, importer, tImporter, "Xpetra::EpetraCrsGraphT::doImport only accept Xpetra::EpetraImportT as input arguments."); - RCP eSourceGraph = tSourceGraph.getEpetra_CrsGraph(); - - // NOTE: Unlike Tpetra, Epetra does not have a FusedTransfer for Graphs. So we do this the slow way - graph_ = Teuchos::rcp(new Epetra_CrsGraph(Copy, eSourceGraph->RowMap(), 0, false)); - graph_->Import(*eSourceGraph, *tImporter.getEpetra_Import(), Insert); - - const Epetra_BlockMap &myDomainMap = domainMap != Teuchos::null ? toEpetra(domainMap) : eSourceGraph->ColMap(); - const Epetra_BlockMap &myRangeMap = rangeMap != Teuchos::null ? toEpetra(rangeMap) : toEpetra(importer.getTargetMap()); - - graph_->FillComplete(myDomainMap, myRangeMap); - } - -#ifdef HAVE_XPETRA_TPETRA - //! Constructor specifying column Map, number of entries in each row and column indices in each row. - EpetraCrsGraphT(const RCP> & /* rowMap */, - const RCP> & /* colMap */, - const typename local_graph_type::row_map_type & /* rowPointers */, - const typename local_graph_type::entries_type::non_const_type & /* columnIndices */, - const RCP & /* plist */ = Teuchos::null) { - TEUCHOS_TEST_FOR_EXCEPTION(true, Xpetra::Exceptions::NotImplemented, - "Epetra does not support CrsGraph constructors using Kokkos Views!"); - } - - //! Constructor specifying column Map, number of entries in each row and column indices in each row. - EpetraCrsGraphT(const RCP> & /* rowMap */, - const RCP> & /* colMap */, - const local_graph_type & /* lclGraph */, - const RCP & /* plist */ = Teuchos::null) { - TEUCHOS_TEST_FOR_EXCEPTION(true, Xpetra::Exceptions::NotImplemented, - "Epetra does not support CrsGraph constructors using a local graph!"); - } - - //! Constructor specifying column Map, number of entries in each row and column indices in each row. - EpetraCrsGraphT(const local_graph_type & /* lclGraph */, - const RCP> & /* rowMap */, - const RCP> & /* colMap */, - const Teuchos::RCP & /* domainMap */ = Teuchos::null, - const Teuchos::RCP & /* rangeMap */ = Teuchos::null, - const RCP & /* plist */ = Teuchos::null) { - TEUCHOS_TEST_FOR_EXCEPTION(true, Xpetra::Exceptions::NotImplemented, - "Epetra does not support CrsGraph constructors using a local graph!"); - } -#endif - - //! Destructor. - virtual ~EpetraCrsGraphT() {} - - //@} - - //! @name Insertion/Removal Methods - //@{ - - //! Insert global indices into the graph. - void insertGlobalIndices(GlobalOrdinal globalRow, const ArrayView &indices) { - XPETRA_MONITOR("EpetraCrsGraphT::insertGlobalIndices"); - - GlobalOrdinal *indices_rawPtr = const_cast(indices.getRawPtr()); // there is no const in the Epetra interface :( - XPETRA_ERR_CHECK(graph_->InsertGlobalIndices(globalRow, indices.size(), indices_rawPtr)); - } - - //! Insert local indices into the graph. - void insertLocalIndices(const LocalOrdinal localRow, const ArrayView &indices) { - XPETRA_MONITOR("EpetraCrsGraphT::insertLocalIndices"); - - int *indices_rawPtr = const_cast(indices.getRawPtr()); // there is no const in the Epetra interface :( - XPETRA_ERR_CHECK(graph_->InsertMyIndices(localRow, indices.size(), indices_rawPtr)); - } - - //! Remove all graph indices from the specified local row. - void removeLocalIndices(LocalOrdinal localRow) { - XPETRA_MONITOR("EpetraCrsGraphT::removeLocalIndices"); - graph_->RemoveMyIndices(localRow); - } - - //! Allocates and returns ArrayRCPs of the Crs arrays --- This is an Xpetra-only routine. - //** \warning This is an expert-only routine and should not be called from user code. */ - void allocateAllIndices(size_t numNonZeros, ArrayRCP &rowptr, ArrayRCP &colind) { - XPETRA_MONITOR("EpetraCrsGraphT::allocateAllIndies"); - - // Row offsets - // Unfortunately, we cannot do this in the same manner as column indices - // and values (see below). The problem is that Tpetra insists on using - // size_t, and Epetra uses int internally. So we only resize here, and - // will need to copy in setAllValues - rowptr.resize(getLocalNumRows() + 1); - - int lowerOffset = 0; - bool ownMemory = false; - - // Column indices - // Extract, resize, set colind - Epetra_IntSerialDenseVector &myColind = graph_->ExpertExtractIndices(); - myColind.Resize(numNonZeros); - colind = Teuchos::arcp(myColind.Values(), lowerOffset, numNonZeros, ownMemory); - } - - //! Sets the 1D pointer arrays of the graph. - void setAllIndices(const ArrayRCP &rowptr, const ArrayRCP &colind) { - XPETRA_MONITOR("EpetraCrsGraphT::setAllIndices"); - - // Check sizes - TEUCHOS_TEST_FOR_EXCEPTION(Teuchos::as(rowptr.size()) != getLocalNumRows() + 1, Xpetra::Exceptions::RuntimeError, - "An exception is thrown to let you know that the size of your rowptr array is incorrect."); - if (colind.size() > 0) { - TEUCHOS_TEST_FOR_EXCEPTION(colind.getRawPtr() != graph_->ExpertExtractIndices().Values(), Xpetra::Exceptions::RuntimeError, - "An exception is thrown to let you know that you mismatched your pointers."); - } - - // We have to make a copy here, it is unavoidable - // See comments in allocateAllIndices - const size_t N = getLocalNumRows(); - - Epetra_IntSerialDenseVector &myRowptr = graph_->ExpertExtractIndexOffset(); - myRowptr.Resize(N + 1); - for (size_t i = 0; i < N + 1; i++) - myRowptr[i] = Teuchos::as(rowptr[i]); - } - - //! Gets the 1D pointer arrays of the graph. - void getAllIndices(ArrayRCP &rowptr, ArrayRCP &colind) const { - XPETRA_MONITOR("EpetraCrsGraphT::getAllIndices"); - - int lowerOffset = 0; - bool ownMemory = false; - - const size_t n = getLocalNumRows(); - const size_t nnz = getLocalNumEntries(); - - // Row offsets - // We have to make a copy here, it is unavoidable (see comments in allocateAllValues) - Epetra_IntSerialDenseVector &myRowptr = graph_->ExpertExtractIndexOffset(); - rowptr.resize(n + 1); - for (size_t i = 0; i < n + 1; i++) - (*const_cast(&rowptr[i])) = Teuchos::as(myRowptr[i]); - - // Column indices - colind = Teuchos::arcp(graph_->ExpertExtractIndices().Values(), lowerOffset, nnz, ownMemory); - } - - //@} - - //! @name Transformational Methods - //@{ - - //! Signal that data entry is complete, specifying domain and range maps. - void fillComplete(const RCP> &domainMap, const RCP> &rangeMap, const RCP ¶ms = null) { - XPETRA_MONITOR("EpetraCrsGraphT::fillComplete"); - - graph_->FillComplete(toEpetra(domainMap), toEpetra(rangeMap)); - bool doOptimizeStorage = true; - if (params != null && params->get("Optimize Storage", true) == false) doOptimizeStorage = false; - if (doOptimizeStorage) graph_->OptimizeStorage(); - } - - //! Signal that data entry is complete. - void fillComplete(const RCP ¶ms = null) { - XPETRA_MONITOR("EpetraCrsGraphT::fillComplete"); - - graph_->FillComplete(); - bool doOptimizeStorage = true; - if (params != null && params->get("Optimize Storage", true) == false) doOptimizeStorage = false; - if (doOptimizeStorage) graph_->OptimizeStorage(); - } - - //! Expert version of fillComplete - void - expertStaticFillComplete(const Teuchos::RCP> &domainMap, - const Teuchos::RCP> &rangeMap, - const Teuchos::RCP> &importer = - Teuchos::null, - const Teuchos::RCP> &exporter = - Teuchos::null, - const Teuchos::RCP ¶ms = - Teuchos::null) { - // Not optimized - graph_->FillComplete(toEpetra(domainMap), toEpetra(rangeMap)); - graph_->OptimizeStorage(); - } - - //@} - - //! @name Methods implementing RowGraph. - //@{ - - //! Returns the communicator. - RCP> getComm() const { - XPETRA_MONITOR("EpetraCrsGraphT::getComm"); - return toXpetra(graph_->Comm()); - } - - //! Returns the Map that describes the row distribution in this graph. - RCP> getRowMap() const { - XPETRA_MONITOR("EpetraCrsGraphT::getRowMap"); - return toXpetra(graph_->RowMap()); - } - - //! Returns the Map that describes the column distribution in this graph. - RCP> getColMap() const { - XPETRA_MONITOR("EpetraCrsGraphT::getColMap"); - return toXpetra(graph_->ColMap()); - } - - //! Returns the Map associated with the domain of this graph. - RCP> getDomainMap() const { - XPETRA_MONITOR("EpetraCrsGraphT::getDomainMap"); - return toXpetra(graph_->DomainMap()); - } - - //! Returns the Map associated with the domain of this graph. - RCP> getRangeMap() const { - XPETRA_MONITOR("EpetraCrsGraphT::getRangeMap"); - return toXpetra(graph_->RangeMap()); - } - - //! Returns the importer associated with this graph. - RCP> getImporter() const { - XPETRA_MONITOR("EpetraCrsGraphT::getImporter"); - return toXpetra(graph_->Importer()); - } - - //! Returns the exporter associated with this graph. - RCP> getExporter() const { - XPETRA_MONITOR("EpetraCrsGraphT::getExporter"); - return toXpetra(graph_->Exporter()); - } - - //! Returns the number of global rows in the graph. - global_size_t getGlobalNumRows() const { - XPETRA_MONITOR("EpetraCrsGraphT::getGlobalNumRows"); - return graph_->NumGlobalRows64(); - } - - //! Returns the number of global columns in the graph. - global_size_t getGlobalNumCols() const { - XPETRA_MONITOR("EpetraCrsGraphT::getGlobalNumCols"); - return graph_->NumGlobalCols64(); - } - - //! Returns the number of graph rows owned on the calling node. - size_t getLocalNumRows() const { - XPETRA_MONITOR("EpetraCrsGraphT::getLocalNumRows"); - return graph_->NumMyRows(); - } - - //! Returns the number of columns connected to the locally owned rows of this graph. - size_t getLocalNumCols() const { - XPETRA_MONITOR("EpetraCrsGraphT::getLocalNumCols"); - return graph_->NumMyCols(); - } - - //! Returns the index base for global indices for this graph. - GlobalOrdinal getIndexBase() const { - XPETRA_MONITOR("EpetraCrsGraphT::getIndexBase"); - return (GlobalOrdinal)graph_->IndexBase64(); - } - - //! Returns the global number of entries in the graph. - global_size_t getGlobalNumEntries() const { - XPETRA_MONITOR("EpetraCrsGraphT::getGlobalNumEntries"); - return graph_->NumGlobalEntries64(); - } - - //! Returns the local number of entries in the graph. - size_t getLocalNumEntries() const { - XPETRA_MONITOR("EpetraCrsGraphT::getLocalNumEntries"); - return graph_->NumMyEntries(); - } - - //! Returns the current number of entries on this node in the specified global row. - size_t getNumEntriesInGlobalRow(GlobalOrdinal globalRow) const { - XPETRA_MONITOR("EpetraCrsGraphT::getNumEntriesInGlobalRow"); - return graph_->NumGlobalIndices(globalRow); - } - - //! Returns the current number of entries on this node in the specified local row. - size_t getNumEntriesInLocalRow(LocalOrdinal localRow) const { - XPETRA_MONITOR("EpetraCrsGraphT::getNumEntriesInLocalRow"); - return graph_->NumMyIndices(localRow); - } - - //! Returns the current number of allocated entries for this node in the specified global row . - size_t getNumAllocatedEntriesInGlobalRow(GlobalOrdinal globalRow) const { - XPETRA_MONITOR("EpetraCrsGraphT::getNumAllocatedEntriesInGlobalRow"); - return graph_->NumAllocatedGlobalIndices(globalRow); - } - - //! Returns the current number of allocated entries on this node in the specified local row. - size_t getNumAllocatedEntriesInLocalRow(LocalOrdinal localRow) const { - XPETRA_MONITOR("EpetraCrsGraphT::getNumAllocatedEntriesInLocalRow"); - return graph_->NumAllocatedMyIndices(localRow); - } - - //! Maximum number of entries in all rows over all processes. - size_t getGlobalMaxNumRowEntries() const { - XPETRA_MONITOR("EpetraCrsGraphT::getGlobalMaxNumRowEntries"); - return graph_->GlobalMaxNumIndices(); - } - - //! Maximum number of entries in all rows owned by the calling process. - size_t getLocalMaxNumRowEntries() const { - XPETRA_MONITOR("EpetraCrsGraphT::getLocalMaxNumRowEntries"); - return graph_->MaxNumIndices(); - } - - //! Whether the graph has a column Map. - bool hasColMap() const { - XPETRA_MONITOR("EpetraCrsGraphT::hasColMap"); - return graph_->HaveColMap(); - } - - //! Whether column indices are stored using local indices on the calling process. - bool isLocallyIndexed() const { - XPETRA_MONITOR("EpetraCrsGraphT::isLocallyIndexed"); - return graph_->IndicesAreLocal(); - } - - //! Whether column indices are stored using global indices on the calling process. - bool isGloballyIndexed() const { - XPETRA_MONITOR("EpetraCrsGraphT::isGloballyIndexed"); - return graph_->IndicesAreGlobal(); - } - - //! Whether fillComplete() has been called and the graph is in compute mode. - bool isFillComplete() const { - XPETRA_MONITOR("EpetraCrsGraphT::isFillComplete"); - return graph_->Filled(); - } - - //! Returns true if storage has been optimized. - bool isStorageOptimized() const { - XPETRA_MONITOR("EpetraCrsGraphT::isStorageOptimized"); - return graph_->StorageOptimized(); - } - - //! Return a const, nonpersisting view of global indices in the given row. - void getGlobalRowView(GlobalOrdinal GlobalRow, ArrayView &Indices) const { - XPETRA_MONITOR("EpetraCrsGraphT::getGlobalRowView"); - - int numEntries; - GlobalOrdinal *eIndices; - - XPETRA_ERR_CHECK(graph_->ExtractGlobalRowView(GlobalRow, numEntries, eIndices)); - if (numEntries == 0) { - eIndices = NULL; - } // Cf. TEUCHOS_TEST_FOR_EXCEPT( p == 0 && size_in != 0 ) in Teuchos ArrayView constructor. - - Indices = ArrayView(eIndices, numEntries); - } - - //! Return a const, nonpersisting view of local indices in the given row. - void getLocalRowView(LocalOrdinal LocalRow, ArrayView &indices) const { - XPETRA_MONITOR("EpetraCrsGraphT::getLocalRowView"); - - int numEntries; - int *eIndices; - - XPETRA_ERR_CHECK(graph_->ExtractMyRowView(LocalRow, numEntries, eIndices)); - if (numEntries == 0) { - eIndices = NULL; - } // Cf. TEUCHOS_TEST_FOR_EXCEPT( p == 0 && size_in != 0 ) in Teuchos ArrayView constructor. - - indices = ArrayView(eIndices, numEntries); - } - -#ifdef HAVE_XPETRA_TPETRA - typename local_graph_type::HostMirror getLocalGraphHost() const { - RCP graph = Teuchos::rcp_const_cast(getEpetra_CrsGraph()); - - using local_graph_type_host = typename local_graph_type::HostMirror; - - const int numRows = graph->NumMyRows(); - const int nnz = graph->NumMyNonzeros(); - - TEUCHOS_TEST_FOR_EXCEPTION(!graph->StorageOptimized(), std::runtime_error, "Xpetra::CrsGraph<>::getLocalGraph: Epetra_CrsGraph not StorageOptimized"); - const int *rowptr = graph->ExpertExtractIndexOffset().Values(); - int *colind = graph->ExpertExtractIndices().Values(); - - // Transform int* rowptr array to size_type* array - typename local_graph_type_host::row_map_type::non_const_type kokkosRowPtr(Kokkos::ViewAllocateWithoutInitializing("local row map"), numRows + 1); - for (size_t i = 0; i < kokkosRowPtr.size(); i++) - kokkosRowPtr(i) = Teuchos::asSafe(rowptr[i]); - - // create Kokkos::Views - typename local_graph_type_host::entries_type kokkosColind(colind, nnz); - - local_graph_type_host localGraph = local_graph_type_host(kokkosColind, kokkosRowPtr); - - return localGraph; - } - - local_graph_type getLocalGraphDevice() const { - RCP graph = Teuchos::rcp_const_cast(getEpetra_CrsGraph()); - - const int numRows = graph->NumMyRows(); - const int nnz = graph->NumMyNonzeros(); - - TEUCHOS_TEST_FOR_EXCEPTION(!graph->StorageOptimized(), std::runtime_error, "Xpetra::CrsGraph<>::getLocalGraph: Epetra_CrsGraph not StorageOptimized"); - const int *rowptr = graph->ExpertExtractIndexOffset().Values(); - int *colind = graph->ExpertExtractIndices().Values(); - - // Transform int* rowptr array to size_type* array - typename local_graph_type::row_map_type::non_const_type kokkosRowPtr(Kokkos::ViewAllocateWithoutInitializing("local row map"), numRows + 1); - for (size_t i = 0; i < kokkosRowPtr.size(); i++) - kokkosRowPtr(i) = Teuchos::asSafe(rowptr[i]); - - // create Kokkos::Views - typename local_graph_type::entries_type kokkosColind(colind, nnz); - - local_graph_type localGraph = local_graph_type(kokkosColind, kokkosRowPtr); - - return localGraph; - } - - void getLocalDiagOffsets(const Kokkos::View &offsets) const { - TEUCHOS_TEST_FOR_EXCEPTION(true, Xpetra::Exceptions::RuntimeError, - "Epetra does not support getLocalDiagOffsets!"); - } -#else -#ifdef __GNUC__ -#warning "Xpetra Kokkos interface for CrsGraph is enabled (HAVE_XPETRA_KOKKOS_REFACTOR) but Tpetra is disabled. The Kokkos interface needs Tpetra to be enabled, too." -#endif -#endif - - //! Force the computation of global constants if we don't have them - void computeGlobalConstants() {} - - //@} - - //! @name Overridden from Teuchos::Describable - //@{ - - //! Return a simple one-line description of this object. - std::string description() const { - XPETRA_MONITOR("EpetraCrsGraphT::description"); - return "NotImplemented"; - } - - //! Print the object with some verbosity level to an FancyOStream object. - void describe(Teuchos::FancyOStream &out, const Teuchos::EVerbosityLevel /* verbLevel */ = Teuchos::Describable::verbLevel_default) const { - XPETRA_MONITOR("EpetraCrsGraphT::describe"); - - out << "EpetraCrsGraphT::describe : Warning, verbosity level is ignored by this method." << std::endl; - const Epetra_BlockMap rowmap = graph_->RowMap(); - if (rowmap.Comm().MyPID() == 0) out << "** EpetraCrsGraphT **\n\nrowmap" << std::endl; - rowmap.Print(out); - graph_->Print(out); - } - - //@} - - //! Implements DistObject interface - //{@ - - //! Access function for the Tpetra::Map this DistObject was constructed with. - Teuchos::RCP> getMap() const { - XPETRA_MONITOR("EpetraCrsGraphT::getMap"); - return toXpetra(graph_->Map()); - } - - //! Import. - void doImport(const DistObject &source, - const Import &importer, CombineMode CM) { - XPETRA_MONITOR("EpetraCrsGraphT::doImport"); - - XPETRA_DYNAMIC_CAST(const EpetraCrsGraphT, source, tSource, "Xpetra::EpetraCrsGraphT::doImport only accept Xpetra::EpetraCrsGraphT as input arguments."); - XPETRA_DYNAMIC_CAST(const EpetraImportT, importer, tImporter, "Xpetra::EpetraCrsGraphT::doImport only accept Xpetra::EpetraImportT as input arguments."); - - RCP v = tSource.getEpetra_CrsGraph(); - int err = graph_->Import(*v, *tImporter.getEpetra_Import(), toEpetra(CM)); - TEUCHOS_TEST_FOR_EXCEPTION(err != 0, std::runtime_error, "Catch error code returned by Epetra."); - } - - //! Export. - void doExport(const DistObject &dest, - const Import &importer, CombineMode CM) { - XPETRA_MONITOR("EpetraCrsGraphT::doExport"); - - XPETRA_DYNAMIC_CAST(const EpetraCrsGraphT, dest, tDest, "Xpetra::EpetraCrsGraphT::doImport only accept Xpetra::EpetraCrsGraphT as input arguments."); - XPETRA_DYNAMIC_CAST(const EpetraImportT, importer, tImporter, "Xpetra::EpetraCrsGraphT::doImport only accept Xpetra::EpetraImportT as input arguments."); - - RCP v = tDest.getEpetra_CrsGraph(); - int err = graph_->Export(*v, *tImporter.getEpetra_Import(), toEpetra(CM)); - TEUCHOS_TEST_FOR_EXCEPTION(err != 0, std::runtime_error, "Catch error code returned by Epetra."); - } - - //! Import (using an Exporter). - void doImport(const DistObject &source, - const Export &exporter, CombineMode CM) { - XPETRA_MONITOR("EpetraCrsGraphT::doImport"); - - XPETRA_DYNAMIC_CAST(const EpetraCrsGraphT, source, tSource, "Xpetra::EpetraCrsGraphT::doImport only accept Xpetra::EpetraCrsGraphT as input arguments."); - XPETRA_DYNAMIC_CAST(const EpetraExportT, exporter, tExporter, "Xpetra::EpetraCrsGraphT::doImport only accept Xpetra::EpetraImportT as input arguments."); - - RCP v = tSource.getEpetra_CrsGraph(); - int err = graph_->Import(*v, *tExporter.getEpetra_Export(), toEpetra(CM)); - TEUCHOS_TEST_FOR_EXCEPTION(err != 0, std::runtime_error, "Catch error code returned by Epetra."); - } - - //! Export (using an Importer). - void doExport(const DistObject &dest, - const Export &exporter, CombineMode CM) { - XPETRA_MONITOR("EpetraCrsGraphT::doExport"); - - XPETRA_DYNAMIC_CAST(const EpetraCrsGraphT, dest, tDest, "Xpetra::EpetraCrsGraphT::doImport only accept Xpetra::EpetraCrsGraphT as input arguments."); - XPETRA_DYNAMIC_CAST(const EpetraExportT, exporter, tExporter, "Xpetra::EpetraCrsGraphT::doImport only accept Xpetra::EpetraImportT as input arguments."); - - RCP v = tDest.getEpetra_CrsGraph(); - int err = graph_->Export(*v, *tExporter.getEpetra_Export(), toEpetra(CM)); - TEUCHOS_TEST_FOR_EXCEPTION(err != 0, std::runtime_error, "Catch error code returned by Epetra."); - } - //@} - - //! @name Xpetra specific - //@{ - - //! EpetraCrsGraphT constructor to wrap a Epetra_CrsGraph object - EpetraCrsGraphT(const Teuchos::RCP &graph) - : graph_(graph) { - TEUCHOS_TEST_FOR_EXCEPTION(!graph->RowMap().GlobalIndicesIsType(), std::runtime_error, "Xpetra::EpetraCrsGraphT: GlobalOrdinal mismatch."); - } - - //! Get the underlying Epetra graph - RCP getEpetra_CrsGraph() const { return graph_; } - - //@} - - private: - RCP graph_; -}; - -#endif // specialization on Node=EpetraNode and GO=int - -// specialization on GO=long long and Node=EpetraNode -#ifndef XPETRA_EPETRA_NO_64BIT_GLOBAL_INDICES -template <> -class EpetraCrsGraphT - : public virtual CrsGraph { - typedef int LocalOrdinal; - typedef long long GlobalOrdinal; - typedef EpetraNode Node; - - //! The specialization of Map used by this class. - typedef Map map_type; - -#ifdef HAVE_XPETRA_TPETRA - typedef typename Xpetra::CrsGraph::local_graph_type local_graph_type; - typedef typename Xpetra::CrsGraph::node_type node_type; - typedef typename node_type::execution_space execution_space; -#endif - - public: - //! @name Constructor/Destructor Methods - //@{ - - //! Constructor for empty DynamicProfile graph (no space is preallocated). - EpetraCrsGraphT(const Teuchos::RCP> &rowMap) - : graph_(Teuchos::rcp(new Epetra_CrsGraph(Copy, toEpetra(rowMap), 0, false))) {} - - //! Constructor specifying fixed number of entries for each row. - EpetraCrsGraphT(const RCP &rowMap, size_t maxNumEntriesPerRow, const RCP & /* plist */ = Teuchos::null) - : graph_(Teuchos::rcp(new Epetra_CrsGraph(Copy, toEpetra(rowMap), maxNumEntriesPerRow, true))) {} - - ////! Constructor specifying (possibly different) number of entries in each row. - // Definition not in cpp, so comment out - // EpetraCrsGraphT(const RCP< const Map< LocalOrdinal, GlobalOrdinal, Node > > &rowMap, const ArrayRCP< const size_t > &NumEntriesPerRowToAlloc, const RCP< ParameterList > ¶ms=null); - - //! Constructor specifying column Map and fixed number of entries for each row. - EpetraCrsGraphT(const RCP> &rowMap, const RCP> &colMap, size_t maxNumEntriesPerRow, const Teuchos::RCP & /* plist */ = null) - : graph_(Teuchos::rcp(new Epetra_CrsGraph(Copy, toEpetra(rowMap), toEpetra(colMap), maxNumEntriesPerRow, true))) {} - - ////! Constructor specifying column Map and number of entries in each row. - // Definition not in cpp, so comment out - EpetraCrsGraphT(const RCP> &rowMap, const RCP> &colMap, const ArrayRCP &NumEntriesPerRowToAlloc, const RCP & /* params */ = null) { - Teuchos::Array numEntriesPerRowToAlloc(NumEntriesPerRowToAlloc.begin(), NumEntriesPerRowToAlloc.end()); // convert array of "size_t" to array of "int" - graph_ = Teuchos::rcp(new Epetra_CrsGraph(Copy, toEpetra(rowMap), toEpetra(colMap), numEntriesPerRowToAlloc.getRawPtr(), true)); - } - -#ifdef HAVE_XPETRA_TPETRA - //! Constructor specifying column Map, number of entries in each row and column indices in each row. - EpetraCrsGraphT(const RCP> & /* rowMap */, - const RCP> & /* colMap */, - const typename local_graph_type::row_map_type & /* rowPointers */, - const typename local_graph_type::entries_type::non_const_type & /* columnIndices */, - const RCP & /* plist */ = Teuchos::null) { - TEUCHOS_TEST_FOR_EXCEPTION(true, Xpetra::Exceptions::NotImplemented, - "Epetra does not support CrsGraph constructors using Kokkos Views!"); - } - - //! Constructor specifying column Map, number of entries in each row and column indices in each row. - EpetraCrsGraphT(const RCP> & /* rowMap */, - const RCP> & /* colMap */, - const local_graph_type & /* lclGraph */, - const RCP & /* plist */ = Teuchos::null) { - TEUCHOS_TEST_FOR_EXCEPTION(true, Xpetra::Exceptions::NotImplemented, - "Epetra does not support CrsGraph constructors using a local graph!"); - } - - //! Constructor specifying column Map, number of entries in each row and column indices in each row. - EpetraCrsGraphT(const local_graph_type & /* lclGraph */, - const RCP> & /* rowMap */, - const RCP> & /* colMap */, - const Teuchos::RCP & /* domainMap */ = Teuchos::null, - const Teuchos::RCP & /* rangeMap */ = Teuchos::null, - const RCP & /* plist */ = Teuchos::null) { - TEUCHOS_TEST_FOR_EXCEPTION(true, Xpetra::Exceptions::NotImplemented, - "Epetra does not support CrsGraph constructors using a local graph!"); - } -#endif - - //! Destructor. - virtual ~EpetraCrsGraphT() {} - - //@} - - //! @name Insertion/Removal Methods - //@{ - - //! Insert global indices into the graph. - void insertGlobalIndices(GlobalOrdinal globalRow, const ArrayView &indices) { - XPETRA_MONITOR("EpetraCrsGraphT::insertGlobalIndices"); - - GlobalOrdinal *indices_rawPtr = const_cast(indices.getRawPtr()); // there is no const in the Epetra interface :( - XPETRA_ERR_CHECK(graph_->InsertGlobalIndices(globalRow, indices.size(), indices_rawPtr)); - } - - //! Insert local indices into the graph. - void insertLocalIndices(const LocalOrdinal localRow, const ArrayView &indices) { - XPETRA_MONITOR("EpetraCrsGraphT::insertLocalIndices"); - - int *indices_rawPtr = const_cast(indices.getRawPtr()); // there is no const in the Epetra interface :( - XPETRA_ERR_CHECK(graph_->InsertMyIndices(localRow, indices.size(), indices_rawPtr)); - } - - //! Remove all graph indices from the specified local row. - void removeLocalIndices(LocalOrdinal localRow) { - XPETRA_MONITOR("EpetraCrsGraphT::removeLocalIndices"); - graph_->RemoveMyIndices(localRow); - } - - //! Allocates and returns ArrayRCPs of the Crs arrays --- This is an Xpetra-only routine. - //** \warning This is an expert-only routine and should not be called from user code. */ - void allocateAllIndices(size_t numNonZeros, ArrayRCP &rowptr, ArrayRCP &colind) { - XPETRA_MONITOR("EpetraCrsGraphT::allocateAllIndies"); - - // Row offsets - // Unfortunately, we cannot do this in the same manner as column indices - // and values (see below). The problem is that Tpetra insists on using - // size_t, and Epetra uses int internally. So we only resize here, and - // will need to copy in setAllValues - rowptr.resize(getLocalNumRows() + 1); - - int lowerOffset = 0; - bool ownMemory = false; - - // Column indices - // Extract, resize, set colind - Epetra_IntSerialDenseVector &myColind = graph_->ExpertExtractIndices(); - myColind.Resize(numNonZeros); - colind = Teuchos::arcp(myColind.Values(), lowerOffset, numNonZeros, ownMemory); - } - - //! Sets the 1D pointer arrays of the graph. - void setAllIndices(const ArrayRCP &rowptr, const ArrayRCP &colind) { - XPETRA_MONITOR("EpetraCrsGraphT::setAllIndices"); - - // Check sizes - TEUCHOS_TEST_FOR_EXCEPTION(Teuchos::as(rowptr.size()) != getLocalNumRows() + 1, Xpetra::Exceptions::RuntimeError, - "An exception is thrown to let you know that the size of your rowptr array is incorrect."); - if (colind.size() > 0) { - TEUCHOS_TEST_FOR_EXCEPTION(colind.getRawPtr() != graph_->ExpertExtractIndices().Values(), Xpetra::Exceptions::RuntimeError, - "An exception is thrown to let you know that you mismatched your pointers."); - } - - // We have to make a copy here, it is unavoidable - // See comments in allocateAllIndices - const size_t N = getLocalNumRows(); - - Epetra_IntSerialDenseVector &myRowptr = graph_->ExpertExtractIndexOffset(); - myRowptr.Resize(N + 1); - for (size_t i = 0; i < N + 1; i++) - myRowptr[i] = Teuchos::as(rowptr[i]); - } - - //! Gets the 1D pointer arrays of the graph. - void getAllIndices(ArrayRCP &rowptr, ArrayRCP &colind) const { - XPETRA_MONITOR("EpetraCrsGraphT::getAllIndices"); - - int lowerOffset = 0; - bool ownMemory = false; - - const size_t n = getLocalNumRows(); - const size_t nnz = getLocalNumEntries(); - - // Row offsets - // We have to make a copy here, it is unavoidable (see comments in allocateAllValues) - Epetra_IntSerialDenseVector &myRowptr = graph_->ExpertExtractIndexOffset(); - rowptr.resize(n + 1); - for (size_t i = 0; i < n + 1; i++) - (*const_cast(&rowptr[i])) = Teuchos::as(myRowptr[i]); - - // Column indices - colind = Teuchos::arcp(graph_->ExpertExtractIndices().Values(), lowerOffset, nnz, ownMemory); - } - - //@} - - //! @name Transformational Methods - //@{ - - //! Signal that data entry is complete, specifying domain and range maps. - void fillComplete(const RCP> &domainMap, const RCP> &rangeMap, const RCP ¶ms = null) { - XPETRA_MONITOR("EpetraCrsGraphT::fillComplete"); - - graph_->FillComplete(toEpetra(domainMap), toEpetra(rangeMap)); - bool doOptimizeStorage = true; - if (params != null && params->get("Optimize Storage", true) == false) doOptimizeStorage = false; - if (doOptimizeStorage) graph_->OptimizeStorage(); - } - - //! Signal that data entry is complete. - void fillComplete(const RCP ¶ms = null) { - XPETRA_MONITOR("EpetraCrsGraphT::fillComplete"); - - graph_->FillComplete(); - bool doOptimizeStorage = true; - if (params != null && params->get("Optimize Storage", true) == false) doOptimizeStorage = false; - if (doOptimizeStorage) graph_->OptimizeStorage(); - } - - //! Expert version of fillComplete - void - expertStaticFillComplete(const Teuchos::RCP> &domainMap, - const Teuchos::RCP> &rangeMap, - const Teuchos::RCP> &importer = - Teuchos::null, - const Teuchos::RCP> &exporter = - Teuchos::null, - const Teuchos::RCP ¶ms = - Teuchos::null) { - // Not optimized - graph_->FillComplete(toEpetra(domainMap), toEpetra(rangeMap)); - graph_->OptimizeStorage(); - } - - //@} - - //! @name Methods implementing RowGraph. - //@{ - - //! Returns the communicator. - RCP> getComm() const { - XPETRA_MONITOR("EpetraCrsGraphT::getComm"); - return toXpetra(graph_->Comm()); - } - - //! Returns the Map that describes the row distribution in this graph. - RCP> getRowMap() const { - XPETRA_MONITOR("EpetraCrsGraphT::getRowMap"); - return toXpetra(graph_->RowMap()); - } - - //! Returns the Map that describes the column distribution in this graph. - RCP> getColMap() const { - XPETRA_MONITOR("EpetraCrsGraphT::getColMap"); - return toXpetra(graph_->ColMap()); - } - - //! Returns the Map associated with the domain of this graph. - RCP> getDomainMap() const { - XPETRA_MONITOR("EpetraCrsGraphT::getDomainMap"); - return toXpetra(graph_->DomainMap()); - } - - //! Returns the Map associated with the domain of this graph. - RCP> getRangeMap() const { - XPETRA_MONITOR("EpetraCrsGraphT::getRangeMap"); - return toXpetra(graph_->RangeMap()); - } - - //! Returns the importer associated with this graph. - RCP> getImporter() const { - XPETRA_MONITOR("EpetraCrsGraphT::getImporter"); - return toXpetra(graph_->Importer()); - } - - //! Returns the exporter associated with this graph. - RCP> getExporter() const { - XPETRA_MONITOR("EpetraCrsGraphT::getExporter"); - return toXpetra(graph_->Exporter()); - } - - //! Returns the number of global rows in the graph. - global_size_t getGlobalNumRows() const { - XPETRA_MONITOR("EpetraCrsGraphT::getGlobalNumRows"); - return graph_->NumGlobalRows64(); - } - - //! Returns the number of global columns in the graph. - global_size_t getGlobalNumCols() const { - XPETRA_MONITOR("EpetraCrsGraphT::getGlobalNumCols"); - return graph_->NumGlobalCols64(); - } - - //! Returns the number of graph rows owned on the calling node. - size_t getLocalNumRows() const { - XPETRA_MONITOR("EpetraCrsGraphT::getLocalNumRows"); - return graph_->NumMyRows(); - } - - //! Returns the number of columns connected to the locally owned rows of this graph. - size_t getLocalNumCols() const { - XPETRA_MONITOR("EpetraCrsGraphT::getLocalNumCols"); - return graph_->NumMyCols(); - } - - //! Returns the index base for global indices for this graph. - GlobalOrdinal getIndexBase() const { - XPETRA_MONITOR("EpetraCrsGraphT::getIndexBase"); - return (GlobalOrdinal)graph_->IndexBase64(); - } - - //! Returns the global number of entries in the graph. - global_size_t getGlobalNumEntries() const { - XPETRA_MONITOR("EpetraCrsGraphT::getGlobalNumEntries"); - return graph_->NumGlobalEntries64(); - } - - //! Returns the local number of entries in the graph. - size_t getLocalNumEntries() const { - XPETRA_MONITOR("EpetraCrsGraphT::getLocalNumEntries"); - return graph_->NumMyEntries(); - } - - //! Returns the current number of entries on this node in the specified global row. - size_t getNumEntriesInGlobalRow(GlobalOrdinal globalRow) const { - XPETRA_MONITOR("EpetraCrsGraphT::getNumEntriesInGlobalRow"); - return graph_->NumGlobalIndices(globalRow); - } - - //! Returns the current number of entries on this node in the specified local row. - size_t getNumEntriesInLocalRow(LocalOrdinal localRow) const { - XPETRA_MONITOR("EpetraCrsGraphT::getNumEntriesInLocalRow"); - return graph_->NumMyIndices(localRow); - } - - //! Returns the current number of allocated entries for this node in the specified global row . - size_t getNumAllocatedEntriesInGlobalRow(GlobalOrdinal globalRow) const { - XPETRA_MONITOR("EpetraCrsGraphT::getNumAllocatedEntriesInGlobalRow"); - return graph_->NumAllocatedGlobalIndices(globalRow); - } - - //! Returns the current number of allocated entries on this node in the specified local row. - size_t getNumAllocatedEntriesInLocalRow(LocalOrdinal localRow) const { - XPETRA_MONITOR("EpetraCrsGraphT::getNumAllocatedEntriesInLocalRow"); - return graph_->NumAllocatedMyIndices(localRow); - } - - //! Maximum number of entries in all rows over all processes. - size_t getGlobalMaxNumRowEntries() const { - XPETRA_MONITOR("EpetraCrsGraphT::getGlobalMaxNumRowEntries"); - return graph_->GlobalMaxNumIndices(); - } - - //! Maximum number of entries in all rows owned by the calling process. - size_t getLocalMaxNumRowEntries() const { - XPETRA_MONITOR("EpetraCrsGraphT::getLocalMaxNumRowEntries"); - return graph_->MaxNumIndices(); - } - - //! Whether the graph has a column Map. - bool hasColMap() const { - XPETRA_MONITOR("EpetraCrsGraphT::hasColMap"); - return graph_->HaveColMap(); - } - - //! Whether column indices are stored using local indices on the calling process. - bool isLocallyIndexed() const { - XPETRA_MONITOR("EpetraCrsGraphT::isLocallyIndexed"); - return graph_->IndicesAreLocal(); - } - - //! Whether column indices are stored using global indices on the calling process. - bool isGloballyIndexed() const { - XPETRA_MONITOR("EpetraCrsGraphT::isGloballyIndexed"); - return graph_->IndicesAreGlobal(); - } - - //! Whether fillComplete() has been called and the graph is in compute mode. - bool isFillComplete() const { - XPETRA_MONITOR("EpetraCrsGraphT::isFillComplete"); - return graph_->Filled(); - } - - //! Returns true if storage has been optimized. - bool isStorageOptimized() const { - XPETRA_MONITOR("EpetraCrsGraphT::isStorageOptimized"); - return graph_->StorageOptimized(); - } - - //! Return a const, nonpersisting view of global indices in the given row. - void getGlobalRowView(GlobalOrdinal GlobalRow, ArrayView &Indices) const { - XPETRA_MONITOR("EpetraCrsGraphT::getGlobalRowView"); - - int numEntries; - GlobalOrdinal *eIndices; - - XPETRA_ERR_CHECK(graph_->ExtractGlobalRowView(GlobalRow, numEntries, eIndices)); - if (numEntries == 0) { - eIndices = NULL; - } // Cf. TEUCHOS_TEST_FOR_EXCEPT( p == 0 && size_in != 0 ) in Teuchos ArrayView constructor. - - Indices = ArrayView(eIndices, numEntries); - } - - //! Return a const, nonpersisting view of local indices in the given row. - void getLocalRowView(LocalOrdinal LocalRow, ArrayView &indices) const { - XPETRA_MONITOR("EpetraCrsGraphT::getLocalRowView"); - - int numEntries; - int *eIndices; - - XPETRA_ERR_CHECK(graph_->ExtractMyRowView(LocalRow, numEntries, eIndices)); - if (numEntries == 0) { - eIndices = NULL; - } // Cf. TEUCHOS_TEST_FOR_EXCEPT( p == 0 && size_in != 0 ) in Teuchos ArrayView constructor. - - indices = ArrayView(eIndices, numEntries); - } - -#ifdef HAVE_XPETRA_TPETRA - typename local_graph_type::HostMirror getLocalGraphHost() const { - RCP graph = Teuchos::rcp_const_cast(getEpetra_CrsGraph()); - - using local_graph_type_host = typename local_graph_type::HostMirror; - - const int numRows = graph->NumMyRows(); - const int nnz = graph->NumMyNonzeros(); - - TEUCHOS_TEST_FOR_EXCEPTION(!graph->StorageOptimized(), std::runtime_error, "Xpetra::CrsGraph<>::getLocalGraph: Epetra_CrsGraph not StorageOptimized"); - const int *rowptr = graph->ExpertExtractIndexOffset().Values(); - int *colind = graph->ExpertExtractIndices().Values(); - - // Transform int* rowptr array to size_type* array - typename local_graph_type_host::row_map_type::non_const_type kokkosRowPtr(Kokkos::ViewAllocateWithoutInitializing("local row map"), numRows + 1); - for (size_t i = 0; i < kokkosRowPtr.size(); i++) - kokkosRowPtr(i) = Teuchos::asSafe(rowptr[i]); - - // create Kokkos::Views - typename local_graph_type_host::entries_type kokkosColind(colind, nnz); - - local_graph_type_host localGraph = local_graph_type_host(kokkosColind, kokkosRowPtr); - - return localGraph; - } - - local_graph_type getLocalGraphDevice() const { - RCP graph = Teuchos::rcp_const_cast(getEpetra_CrsGraph()); - - const int numRows = graph->NumMyRows(); - const int nnz = graph->NumMyNonzeros(); - - TEUCHOS_TEST_FOR_EXCEPTION(!graph->StorageOptimized(), std::runtime_error, "Xpetra::CrsGraph<>::getLocalGraph: Epetra_CrsGraph not StorageOptimized"); - const int *rowptr = graph->ExpertExtractIndexOffset().Values(); - int *colind = graph->ExpertExtractIndices().Values(); - - // Transform int* rowptr array to size_type* array - typename local_graph_type::row_map_type::non_const_type kokkosRowPtr(Kokkos::ViewAllocateWithoutInitializing("local row map"), numRows + 1); - for (size_t i = 0; i < kokkosRowPtr.size(); i++) - kokkosRowPtr(i) = Teuchos::asSafe(rowptr[i]); - - // create Kokkos::Views - typename local_graph_type::entries_type kokkosColind(colind, nnz); - - local_graph_type localGraph = local_graph_type(kokkosColind, kokkosRowPtr); - - return localGraph; - } - - void getLocalDiagOffsets(const Kokkos::View &offsets) const { - TEUCHOS_TEST_FOR_EXCEPTION(true, Xpetra::Exceptions::RuntimeError, - "Epetra does not support getLocalDiagOffsets!"); - } -#else -#ifdef __GNUC__ -#warning "Xpetra Kokkos interface for CrsGraph is enabled (HAVE_XPETRA_KOKKOS_REFACTOR) but Tpetra is disabled. The Kokkos interface needs Tpetra to be enabled, too." -#endif -#endif - - //! Force the computation of global constants if we don't have them - void computeGlobalConstants() {} - - //@} - - //! @name Overridden from Teuchos::Describable - //@{ - - //! Return a simple one-line description of this object. - std::string description() const { - XPETRA_MONITOR("EpetraCrsGraphT::description"); - return "NotImplemented"; - } - - //! Print the object with some verbosity level to an FancyOStream object. - void describe(Teuchos::FancyOStream &out, const Teuchos::EVerbosityLevel /* verbLevel */ = Teuchos::Describable::verbLevel_default) const { - XPETRA_MONITOR("EpetraCrsGraphT::describe"); - - out << "EpetraCrsGraphT::describe : Warning, verbosity level is ignored by this method." << std::endl; - const Epetra_BlockMap rowmap = graph_->RowMap(); - if (rowmap.Comm().MyPID() == 0) out << "** EpetraCrsGraphT **\n\nrowmap" << std::endl; - rowmap.Print(out); - graph_->Print(out); - } - - //@} - - //! Implements DistObject interface - //{@ - - //! Access function for the Tpetra::Map this DistObject was constructed with. - Teuchos::RCP> getMap() const { - XPETRA_MONITOR("EpetraCrsGraphT::getMap"); - return toXpetra(graph_->Map()); - } - - //! Import. - void doImport(const DistObject &source, - const Import &importer, CombineMode CM) { - XPETRA_MONITOR("EpetraCrsGraphT::doImport"); - - XPETRA_DYNAMIC_CAST(const EpetraCrsGraphT, source, tSource, "Xpetra::EpetraCrsGraphT::doImport only accept Xpetra::EpetraCrsGraphT as input arguments."); - XPETRA_DYNAMIC_CAST(const EpetraImportT, importer, tImporter, "Xpetra::EpetraCrsGraphT::doImport only accept Xpetra::EpetraImportT as input arguments."); - - RCP v = tSource.getEpetra_CrsGraph(); - int err = graph_->Import(*v, *tImporter.getEpetra_Import(), toEpetra(CM)); - TEUCHOS_TEST_FOR_EXCEPTION(err != 0, std::runtime_error, "Catch error code returned by Epetra."); - } - - //! Export. - void doExport(const DistObject &dest, - const Import &importer, CombineMode CM) { - XPETRA_MONITOR("EpetraCrsGraphT::doExport"); - - XPETRA_DYNAMIC_CAST(const EpetraCrsGraphT, dest, tDest, "Xpetra::EpetraCrsGraphT::doImport only accept Xpetra::EpetraCrsGraphT as input arguments."); - XPETRA_DYNAMIC_CAST(const EpetraImportT, importer, tImporter, "Xpetra::EpetraCrsGraphT::doImport only accept Xpetra::EpetraImportT as input arguments."); - - RCP v = tDest.getEpetra_CrsGraph(); - int err = graph_->Export(*v, *tImporter.getEpetra_Import(), toEpetra(CM)); - TEUCHOS_TEST_FOR_EXCEPTION(err != 0, std::runtime_error, "Catch error code returned by Epetra."); - } - - //! Import (using an Exporter). - void doImport(const DistObject &source, - const Export &exporter, CombineMode CM) { - XPETRA_MONITOR("EpetraCrsGraphT::doImport"); - - XPETRA_DYNAMIC_CAST(const EpetraCrsGraphT, source, tSource, "Xpetra::EpetraCrsGraphT::doImport only accept Xpetra::EpetraCrsGraphT as input arguments."); - XPETRA_DYNAMIC_CAST(const EpetraExportT, exporter, tExporter, "Xpetra::EpetraCrsGraphT::doImport only accept Xpetra::EpetraImportT as input arguments."); - - RCP v = tSource.getEpetra_CrsGraph(); - int err = graph_->Import(*v, *tExporter.getEpetra_Export(), toEpetra(CM)); - TEUCHOS_TEST_FOR_EXCEPTION(err != 0, std::runtime_error, "Catch error code returned by Epetra."); - } - - //! Export (using an Importer). - void doExport(const DistObject &dest, - const Export &exporter, CombineMode CM) { - XPETRA_MONITOR("EpetraCrsGraphT::doExport"); - - XPETRA_DYNAMIC_CAST(const EpetraCrsGraphT, dest, tDest, "Xpetra::EpetraCrsGraphT::doImport only accept Xpetra::EpetraCrsGraphT as input arguments."); - XPETRA_DYNAMIC_CAST(const EpetraExportT, exporter, tExporter, "Xpetra::EpetraCrsGraphT::doImport only accept Xpetra::EpetraImportT as input arguments."); - - RCP v = tDest.getEpetra_CrsGraph(); - int err = graph_->Export(*v, *tExporter.getEpetra_Export(), toEpetra(CM)); - TEUCHOS_TEST_FOR_EXCEPTION(err != 0, std::runtime_error, "Catch error code returned by Epetra."); - } - //@} - - //! @name Xpetra specific - //@{ - - //! EpetraCrsGraphT constructor to wrap a Epetra_CrsGraph object - EpetraCrsGraphT(const Teuchos::RCP &graph) - : graph_(graph) { - TEUCHOS_TEST_FOR_EXCEPTION(!graph->RowMap().GlobalIndicesIsType(), std::runtime_error, "Xpetra::EpetraCrsGraphT: GlobalOrdinal mismatch."); - } - - //! Get the underlying Epetra graph - RCP getEpetra_CrsGraph() const { return graph_; } - - //@} - - private: - RCP graph_; -}; -#endif // specialization on Node=EpetraNode and GO=int - -} // namespace Xpetra - -#endif // XPETRA_EPETRACRSGRAPH_HPP diff --git a/packages/xpetra/src/CrsGraph/Xpetra_TpetraCrsGraph_def.hpp b/packages/xpetra/src/CrsGraph/Xpetra_TpetraCrsGraph_def.hpp index 4e7eb0a697bc..b88f9a023d61 100644 --- a/packages/xpetra/src/CrsGraph/Xpetra_TpetraCrsGraph_def.hpp +++ b/packages/xpetra/src/CrsGraph/Xpetra_TpetraCrsGraph_def.hpp @@ -432,715 +432,5 @@ TpetraCrsGraph::TpetraCrsGraph(const Teuchos: template RCP > TpetraCrsGraph::getTpetra_CrsGraph() const { return graph_; } -#ifdef HAVE_XPETRA_EPETRA - -#if ((defined(EPETRA_HAVE_OMP) && (!defined(HAVE_TPETRA_INST_OPENMP) || !defined(HAVE_TPETRA_INST_INT_INT))) || \ - (!defined(EPETRA_HAVE_OMP) && (!defined(HAVE_TPETRA_INST_SERIAL) || !defined(HAVE_TPETRA_INST_INT_INT)))) - -// specialization of TpetraCrsGraph for GO=LO=int -template <> -class TpetraCrsGraph - : public CrsGraph { - typedef int LocalOrdinal; - typedef int GlobalOrdinal; - typedef EpetraNode Node; - - // The following typedef is used by the XPETRA_DYNAMIC_CAST() macro. - typedef TpetraCrsGraph TpetraCrsGraphClass; - typedef Map map_type; - - public: - //! @name Constructor/Destructor Methods - //@{ - - //! Constructor specifying fixed number of entries for each row. - TpetraCrsGraph(const RCP &rowMap, size_t maxNumEntriesPerRow, const RCP ¶ms = null) { - XPETRA_TPETRA_ETI_EXCEPTION(typeid(TpetraCrsGraph).name(), typeid(TpetraCrsGraph).name(), "int", typeid(EpetraNode).name()); - } - - //! Constructor specifying (possibly different) number of entries in each row. - TpetraCrsGraph(const RCP > &rowMap, const ArrayRCP &NumEntriesPerRowToAlloc, const RCP ¶ms = null) { - XPETRA_TPETRA_ETI_EXCEPTION(typeid(TpetraCrsGraph).name(), typeid(TpetraCrsGraph).name(), "int", typeid(EpetraNode).name()); - } - - //! Constructor specifying column Map and fixed number of entries for each row. - TpetraCrsGraph(const RCP > &rowMap, const RCP > &colMap, size_t maxNumEntriesPerRow, const RCP ¶ms = null) { - XPETRA_TPETRA_ETI_EXCEPTION(typeid(TpetraCrsGraph).name(), typeid(TpetraCrsGraph).name(), "int", typeid(EpetraNode).name()); - } - - //! Constructor specifying column Map and number of entries in each row. - TpetraCrsGraph(const RCP > &rowMap, const RCP > &colMap, const ArrayRCP &NumEntriesPerRowToAlloc, const RCP ¶ms = null) { - XPETRA_TPETRA_ETI_EXCEPTION(typeid(TpetraCrsGraph).name(), typeid(TpetraCrsGraph).name(), "int", typeid(EpetraNode).name()); - } - - /// \brief Constructor specifying column Map and arrays containing the graph in sorted, local ids. - /// - /// - /// \param rowMap [in] Distribution of rows of the graph. - /// - /// \param colMap [in] Distribution of columns of the graph. - /// - /// \param rowPointers [in] The beginning of each row in the graph, - /// as in a CSR "rowptr" array. The length of this vector should be - /// equal to the number of rows in the graph, plus one. This last - /// entry should store the nunber of nonzeros in the graph. - /// - /// \param columnIndices [in] The local indices of the columns, - /// as in a CSR "colind" array. The length of this vector - /// should be equal to the number of unknowns in the graph. - /// - /// \param params [in/out] Optional list of parameters. If not - /// null, any missing parameters will be filled in with their - /// default values. - TpetraCrsGraph(const Teuchos::RCP > &rowMap, - const Teuchos::RCP > &colMap, - const typename local_graph_type::row_map_type &rowPointers, - const typename local_graph_type::entries_type::non_const_type &columnIndices, - const Teuchos::RCP &plist = Teuchos::null) { - XPETRA_TPETRA_ETI_EXCEPTION(typeid(TpetraCrsGraph).name(), - typeid(TpetraCrsGraph).name(), - "int", - typeid(EpetraNode).name()); - } - - /// \brief Constructor specifying column Map and a local (sorted) - /// graph, which the resulting CrsGraph views. - /// - /// Unlike most other CrsGraph constructors, successful completion - /// of this constructor will result in a fill-complete graph. - /// - /// \param rowMap [in] Distribution of rows of the graph. - /// - /// \param colMap [in] Distribution of columns of the graph. - /// - /// \param lclGraph [in] A locally indexed Kokkos::StaticCrsGraph - /// whose local row indices come from the specified row Map, and - /// whose local column indices come from the specified column - /// Map. - /// - /// \param params [in/out] Optional list of parameters. If not - /// null, any missing parameters will be filled in with their - /// default values. - TpetraCrsGraph(const Teuchos::RCP &rowMap, - const Teuchos::RCP &colMap, - const local_graph_type &lclGraph, - const Teuchos::RCP ¶ms) { - XPETRA_TPETRA_ETI_EXCEPTION(typeid(TpetraCrsGraph).name(), - typeid(TpetraCrsGraph).name(), - "int", - typeid(EpetraNode).name()); - } - - /// \brief Constructor specifying column, domain and range maps, and a - /// local (sorted) graph, which the resulting CrsGraph views. - /// - /// Unlike most other CrsGraph constructors, successful completion - /// of this constructor will result in a fill-complete graph. - /// - /// \param rowMap [in] Distribution of rows of the graph. - /// - /// \param colMap [in] Distribution of columns of the graph. - /// - /// \param domainMap [in] The graph's domain Map. MUST be one to - /// one! - /// - /// \param rangeMap [in] The graph's range Map. MUST be one to - /// one! May be, but need not be, the same as the domain Map. - /// - /// \param lclGraph [in] A locally indexed Kokkos::StaticCrsGraph - /// whose local row indices come from the specified row Map, and - /// whose local column indices come from the specified column - /// Map. - /// - /// \param params [in/out] Optional list of parameters. If not - /// null, any missing parameters will be filled in with their - /// default values. - TpetraCrsGraph(const local_graph_type &lclGraph, - const Teuchos::RCP &rowMap, - const Teuchos::RCP &colMap, - const Teuchos::RCP &domainMap = Teuchos::null, - const Teuchos::RCP &rangeMap = Teuchos::null, - const Teuchos::RCP ¶ms = Teuchos::null) { - XPETRA_TPETRA_ETI_EXCEPTION(typeid(TpetraCrsGraph).name(), - typeid(TpetraCrsGraph).name(), - "int", - typeid(EpetraNode).name()); - } - - //! Destructor. - virtual ~TpetraCrsGraph() {} - - //@} - - //! @name Insertion/Removal Methods - //@{ - - //! Insert global indices into the graph. - void insertGlobalIndices(GlobalOrdinal globalRow, const ArrayView &indices) {} - - //! Insert local indices into the graph. - void insertLocalIndices(const LocalOrdinal localRow, const ArrayView &indices) {} - - //! Remove all graph indices from the specified local row. - void removeLocalIndices(LocalOrdinal localRow) {} - - //! Allocates the 1D pointer arrays of the graph - void allocateAllIndices(size_t numNonZeros, ArrayRCP &rowptr, ArrayRCP &colind) {} - - //! Sets the 1D pointer arrays of the graph. - void setAllIndices(const ArrayRCP &rowptr, const ArrayRCP &colind) {} - - //! Gets the 1D pointer arrays of the graph. - void getAllIndices(ArrayRCP &rowptr, ArrayRCP &colind) const {} - - //@} - - //! @name Transformational Methods - //@{ - - //! Signal that data entry is complete, specifying domain and range maps. - void fillComplete(const RCP > &domainMap, const RCP > &rangeMap, const RCP ¶ms = null) {} - - //! Signal that data entry is complete. - void fillComplete(const RCP ¶ms = null) {} - - //! Expert version of fillComplete - void expertStaticFillComplete(const Teuchos::RCP &domainMap, - const Teuchos::RCP &rangeMap, - const Teuchos::RCP > &importer = null, - const Teuchos::RCP > &exporter = null, - const Teuchos::RCP ¶ms = null) {} - - //@} - - //! @name Methods implementing RowGraph. - //@{ - - //! Returns the communicator. - RCP > getComm() const { return Teuchos::null; } - - //! Returns the Map that describes the row distribution in this graph. - RCP > getRowMap() const { return Teuchos::null; } - - //! Returns the Map that describes the column distribution in this graph. - RCP > getColMap() const { return Teuchos::null; } - - //! Returns the Map associated with the domain of this graph. - RCP > getDomainMap() const { return Teuchos::null; } - - //! Returns the Map associated with the domain of this graph. - RCP > getRangeMap() const { return Teuchos::null; } - - //! Returns the importer associated with this graph. - RCP > getImporter() const { return Teuchos::null; } - - //! Returns the exporter associated with this graph. - RCP > getExporter() const { return Teuchos::null; } - - //! Returns the number of global rows in the graph. - global_size_t getGlobalNumRows() const { return 0; } - - //! Returns the number of global columns in the graph. - global_size_t getGlobalNumCols() const { return 0; } - - //! Returns the number of graph rows owned on the calling node. - size_t getLocalNumRows() const { return 0; } - - //! Returns the number of columns connected to the locally owned rows of this graph. - size_t getLocalNumCols() const { return 0; } - - //! Returns the index base for global indices for this graph. - GlobalOrdinal getIndexBase() const { return 0; } - - //! Returns the global number of entries in the graph. - global_size_t getGlobalNumEntries() const { return 0; } - - //! Returns the local number of entries in the graph. - size_t getLocalNumEntries() const { return 0; } - - //! Returns the current number of entries on this node in the specified global row. - size_t getNumEntriesInGlobalRow(GlobalOrdinal globalRow) const { return 0; } - - //! Returns the current number of entries on this node in the specified local row. - size_t getNumEntriesInLocalRow(LocalOrdinal localRow) const { return 0; } - - //! Returns the current number of allocated entries for this node in the specified global row . - size_t getNumAllocatedEntriesInGlobalRow(GlobalOrdinal globalRow) const { return 0; } - - //! Returns the current number of allocated entries on this node in the specified local row. - size_t getNumAllocatedEntriesInLocalRow(LocalOrdinal localRow) const { return 0; } - - //! Maximum number of entries in all rows over all processes. - size_t getGlobalMaxNumRowEntries() const { return 0; } - - //! Maximum number of entries in all rows owned by the calling process. - size_t getLocalMaxNumRowEntries() const { return 0; } - - //! Whether the graph has a column Map. - bool hasColMap() const { return false; } - - //! Whether column indices are stored using local indices on the calling process. - bool isLocallyIndexed() const { return false; } - - //! Whether column indices are stored using global indices on the calling process. - bool isGloballyIndexed() const { return false; } - - //! Whether fillComplete() has been called and the graph is in compute mode. - bool isFillComplete() const { return false; } - - //! Returns true if storage has been optimized. - bool isStorageOptimized() const { return false; } - - //! Return a const, nonpersisting view of global indices in the given row. - void getGlobalRowView(GlobalOrdinal GlobalRow, ArrayView &Indices) const {} - - //! Return a const, nonpersisting view of local indices in the given row. - void getLocalRowView(LocalOrdinal LocalRow, ArrayView &indices) const {} - - /// \brief Access the local KokkosSparse::StaticCrsGraph data - local_graph_type getLocalGraph() const { - TEUCHOS_TEST_FOR_EXCEPTION(true, Xpetra::Exceptions::RuntimeError, - "Epetra does not support Kokkos::StaticCrsGraph!"); - TEUCHOS_UNREACHABLE_RETURN((local_graph_type())); - } - - //! Dummy implementation for computeGlobalConstants - void computeGlobalConstants() {} - - //@} - - //! @name Overridden from Teuchos::Describable - //@{ - - //! Return a simple one-line description of this object. - std::string description() const { return std::string(""); } - - //! Print the object with some verbosity level to an FancyOStream object. - void describe(Teuchos::FancyOStream &out, const Teuchos::EVerbosityLevel verbLevel = Teuchos::Describable::verbLevel_default) const {} - - //@} - - //! @name Advanced methods, at increased risk of deprecation. - //@{ - - //! Get an ArrayRCP of the row-offsets. - ArrayRCP getNodeRowPtrs() const { return Teuchos::ArrayRCP(); } - - //@} - - //! Implements DistObject interface - //{@ - - //! Access function for the Tpetra::Map this DistObject was constructed with. - Teuchos::RCP > getMap() const { return Teuchos::null; } - - //! Import. - void doImport(const DistObject &source, - const Import &importer, CombineMode CM) {} - - //! Export. - void doExport(const DistObject &dest, - const Import &importer, CombineMode CM) {} - - //! Import (using an Exporter). - void doImport(const DistObject &source, - const Export &exporter, CombineMode CM) {} - - //! Export (using an Importer). - void doExport(const DistObject &dest, - const Export &exporter, CombineMode CM) {} - - // @} - - //! @name Xpetra specific - //@{ - - //! TpetraCrsGraph constructor to wrap a Tpetra::CrsGraph object - TpetraCrsGraph(const Teuchos::RCP > &graph) { - XPETRA_TPETRA_ETI_EXCEPTION(typeid(TpetraCrsGraph).name(), typeid(TpetraCrsGraph).name(), "int", typeid(EpetraNode).name()); - } - - //! Get the underlying Tpetra graph - RCP > getTpetra_CrsGraph() const { return Teuchos::null; } - - //@} -}; // TpetraCrsGraph class (specialization for LO=GO=int and NO=EpetraNode) -#endif - -#if ((defined(EPETRA_HAVE_OMP) && (!defined(HAVE_TPETRA_INST_OPENMP) || !defined(HAVE_TPETRA_INST_INT_LONG_LONG))) || \ - (!defined(EPETRA_HAVE_OMP) && (!defined(HAVE_TPETRA_INST_SERIAL) || !defined(HAVE_TPETRA_INST_INT_LONG_LONG)))) - -// specialization of TpetraCrsGraph for GO=long long and NO=EpetraNode -template <> -class TpetraCrsGraph - : public CrsGraph { - typedef int LocalOrdinal; - typedef long long GlobalOrdinal; - typedef EpetraNode Node; - - // The following typedef is used by the XPETRA_DYNAMIC_CAST() macro. - typedef TpetraCrsGraph TpetraCrsGraphClass; - typedef Map map_type; - - public: - //! @name Constructor/Destructor Methods - //@{ - - //! Constructor specifying fixed number of entries for each row. - TpetraCrsGraph(const RCP &rowMap, size_t maxNumEntriesPerRow, const RCP ¶ms = null) { - XPETRA_TPETRA_ETI_EXCEPTION(typeid(TpetraCrsGraph).name(), typeid(TpetraCrsGraph).name(), "long long", typeid(EpetraNode).name()); - } - - //! Constructor specifying (possibly different) number of entries in each row. - TpetraCrsGraph(const RCP > &rowMap, const ArrayRCP &NumEntriesPerRowToAlloc, const RCP ¶ms = null) { - XPETRA_TPETRA_ETI_EXCEPTION(typeid(TpetraCrsGraph).name(), typeid(TpetraCrsGraph).name(), "long long", typeid(EpetraNode).name()); - } - - //! Constructor specifying column Map and fixed number of entries for each row. - TpetraCrsGraph(const RCP > &rowMap, const RCP > &colMap, size_t maxNumEntriesPerRow, const RCP ¶ms = null) { - XPETRA_TPETRA_ETI_EXCEPTION(typeid(TpetraCrsGraph).name(), typeid(TpetraCrsGraph).name(), "long long", typeid(EpetraNode).name()); - } - - //! Constructor specifying column Map and number of entries in each row. - TpetraCrsGraph(const RCP > &rowMap, const RCP > &colMap, const ArrayRCP &NumEntriesPerRowToAlloc, const RCP ¶ms = null) { - XPETRA_TPETRA_ETI_EXCEPTION(typeid(TpetraCrsGraph).name(), typeid(TpetraCrsGraph).name(), "long long", typeid(EpetraNode).name()); - } - - /// \brief Constructor specifying column Map and arrays containing the graph in sorted, local ids. - /// - /// - /// \param rowMap [in] Distribution of rows of the graph. - /// - /// \param colMap [in] Distribution of columns of the graph. - /// - /// \param rowPointers [in] The beginning of each row in the graph, - /// as in a CSR "rowptr" array. The length of this vector should be - /// equal to the number of rows in the graph, plus one. This last - /// entry should store the nunber of nonzeros in the graph. - /// - /// \param columnIndices [in] The local indices of the columns, - /// as in a CSR "colind" array. The length of this vector - /// should be equal to the number of unknowns in the graph. - /// - /// \param params [in/out] Optional list of parameters. If not - /// null, any missing parameters will be filled in with their - /// default values. - TpetraCrsGraph(const Teuchos::RCP > &rowMap, - const Teuchos::RCP > &colMap, - const typename local_graph_type::row_map_type &rowPointers, - const typename local_graph_type::entries_type::non_const_type &columnIndices, - const Teuchos::RCP &plist = Teuchos::null) { - XPETRA_TPETRA_ETI_EXCEPTION(typeid(TpetraCrsGraph).name(), - typeid(TpetraCrsGraph).name(), - "int", - typeid(EpetraNode).name()); - } - - /// \brief Constructor specifying column Map and a local (sorted) - /// graph, which the resulting CrsGraph views. - /// - /// Unlike most other CrsGraph constructors, successful completion - /// of this constructor will result in a fill-complete graph. - /// - /// \param rowMap [in] Distribution of rows of the graph. - /// - /// \param colMap [in] Distribution of columns of the graph. - /// - /// \param lclGraph [in] A locally indexed Kokkos::StaticCrsGraph - /// whose local row indices come from the specified row Map, and - /// whose local column indices come from the specified column - /// Map. - /// - /// \param params [in/out] Optional list of parameters. If not - /// null, any missing parameters will be filled in with their - /// default values. - TpetraCrsGraph(const Teuchos::RCP &rowMap, - const Teuchos::RCP &colMap, - const local_graph_type &lclGraph, - const Teuchos::RCP ¶ms) { - XPETRA_TPETRA_ETI_EXCEPTION(typeid(TpetraCrsGraph).name(), - typeid(TpetraCrsGraph).name(), - "int", - typeid(EpetraNode).name()); - } - - /// \brief Constructor specifying column, domain and range maps, and a - /// local (sorted) graph, which the resulting CrsGraph views. - /// - /// Unlike most other CrsGraph constructors, successful completion - /// of this constructor will result in a fill-complete graph. - /// - /// \param rowMap [in] Distribution of rows of the graph. - /// - /// \param colMap [in] Distribution of columns of the graph. - /// - /// \param domainMap [in] The graph's domain Map. MUST be one to - /// one! - /// - /// \param rangeMap [in] The graph's range Map. MUST be one to - /// one! May be, but need not be, the same as the domain Map. - /// - /// \param lclGraph [in] A locally indexed Kokkos::StaticCrsGraph - /// whose local row indices come from the specified row Map, and - /// whose local column indices come from the specified column - /// Map. - /// - /// \param params [in/out] Optional list of parameters. If not - /// null, any missing parameters will be filled in with their - /// default values. - TpetraCrsGraph(const local_graph_type &lclGraph, - const Teuchos::RCP &rowMap, - const Teuchos::RCP &colMap, - const Teuchos::RCP &domainMap = Teuchos::null, - const Teuchos::RCP &rangeMap = Teuchos::null, - const Teuchos::RCP ¶ms = Teuchos::null) { - XPETRA_TPETRA_ETI_EXCEPTION(typeid(TpetraCrsGraph).name(), - typeid(TpetraCrsGraph).name(), - "int", - typeid(EpetraNode).name()); - } - - /// \brief Constructor specifying column Map and arrays containing the graph in sorted, local ids. - /// - /// - /// \param rowMap [in] Distribution of rows of the graph. - /// - /// \param colMap [in] Distribution of columns of the graph. - /// - /// \param rowPointers [in] The beginning of each row in the graph, - /// as in a CSR "rowptr" array. The length of this vector should be - /// equal to the number of rows in the graph, plus one. This last - /// entry should store the nunber of nonzeros in the graph. - /// - /// \param columnIndices [in] The local indices of the columns, - /// as in a CSR "colind" array. The length of this vector - /// should be equal to the number of unknowns in the graph. - /// - /// \param params [in/out] Optional list of parameters. If not - /// null, any missing parameters will be filled in with their - /// default values. - TpetraCrsGraph(const Teuchos::RCP &rowMap, - const Teuchos::RCP &colMap, - const Teuchos::ArrayRCP &rowPointers, - const Teuchos::ArrayRCP &columnIndices, - const Teuchos::RCP ¶ms) { - XPETRA_TPETRA_ETI_EXCEPTION(typeid(TpetraCrsGraph).name(), - typeid(TpetraCrsGraph).name(), - "int", - typeid(EpetraNode).name()) - } - - //! Destructor. - virtual ~TpetraCrsGraph() {} - - //@} - - //! @name Insertion/Removal Methods - //@{ - - //! Insert global indices into the graph. - void insertGlobalIndices(GlobalOrdinal globalRow, const ArrayView &indices) {} - - //! Insert local indices into the graph. - void insertLocalIndices(const LocalOrdinal localRow, const ArrayView &indices) {} - - //! Remove all graph indices from the specified local row. - void removeLocalIndices(LocalOrdinal localRow) {} - - //! Allocates the 1D pointer arrays of the graph - void allocateAllIndices(size_t numNonZeros, ArrayRCP &rowptr, ArrayRCP &colind) {} - - //! Sets the 1D pointer arrays of the graph. - void setAllIndices(const ArrayRCP &rowptr, const ArrayRCP &colind) {} - - //! Gets the 1D pointer arrays of the graph. - void getAllIndices(ArrayRCP &rowptr, ArrayRCP &colind) const {} - - //@} - - //! @name Transformational Methods - //@{ - - //! Signal that data entry is complete, specifying domain and range maps. - void fillComplete(const RCP > &domainMap, const RCP > &rangeMap, const RCP ¶ms = null) {} - - //! Signal that data entry is complete. - void fillComplete(const RCP ¶ms = null) {} - - //! Expert version of fillComplete - void expertStaticFillComplete(const Teuchos::RCP &domainMap, - const Teuchos::RCP &rangeMap, - const Teuchos::RCP > &importer = null, - const Teuchos::RCP > &exporter = null, - const Teuchos::RCP ¶ms = null) {} - - //@} - - //! @name Methods implementing RowGraph. - //@{ - - //! Returns the communicator. - RCP > getComm() const { return Teuchos::null; } - - //! Returns the Map that describes the row distribution in this graph. - RCP > getRowMap() const { return Teuchos::null; } - - //! Returns the Map that describes the column distribution in this graph. - RCP > getColMap() const { return Teuchos::null; } - - //! Returns the Map associated with the domain of this graph. - RCP > getDomainMap() const { return Teuchos::null; } - - //! Returns the Map associated with the domain of this graph. - RCP > getRangeMap() const { return Teuchos::null; } - - //! Returns the importer associated with this graph. - RCP > getImporter() const { return Teuchos::null; } - - //! Returns the exporter associated with this graph. - RCP > getExporter() const { return Teuchos::null; } - - //! Returns the number of global rows in the graph. - global_size_t getGlobalNumRows() const { return 0; } - - //! Returns the number of global columns in the graph. - global_size_t getGlobalNumCols() const { return 0; } - - //! Returns the number of graph rows owned on the calling node. - size_t getLocalNumRows() const { return 0; } - - //! Returns the number of columns connected to the locally owned rows of this graph. - size_t getLocalNumCols() const { return 0; } - - //! Returns the index base for global indices for this graph. - GlobalOrdinal getIndexBase() const { return 0; } - - //! Returns the global number of entries in the graph. - global_size_t getGlobalNumEntries() const { return 0; } - - //! Returns the local number of entries in the graph. - size_t getLocalNumEntries() const { return 0; } - - //! Returns the current number of entries on this node in the specified global row. - size_t getNumEntriesInGlobalRow(GlobalOrdinal globalRow) const { return 0; } - - //! Returns the current number of entries on this node in the specified local row. - size_t getNumEntriesInLocalRow(LocalOrdinal localRow) const { return 0; } - - //! Returns the current number of allocated entries for this node in the specified global row . - size_t getNumAllocatedEntriesInGlobalRow(GlobalOrdinal globalRow) const { return 0; } - - //! Returns the current number of allocated entries on this node in the specified local row. - size_t getNumAllocatedEntriesInLocalRow(LocalOrdinal localRow) const { return 0; } - - //! Maximum number of entries in all rows over all processes. - size_t getGlobalMaxNumRowEntries() const { return 0; } - - //! Maximum number of entries in all rows owned by the calling process. - size_t getLocalMaxNumRowEntries() const { return 0; } - - //! Whether the graph has a column Map. - bool hasColMap() const { return false; } - - //! Whether column indices are stored using local indices on the calling process. - bool isLocallyIndexed() const { return false; } - - //! Whether column indices are stored using global indices on the calling process. - bool isGloballyIndexed() const { return false; } - - //! Whether fillComplete() has been called and the graph is in compute mode. - bool isFillComplete() const { return false; } - - //! Returns true if storage has been optimized. - bool isStorageOptimized() const { return false; } - - //! Return a const, nonpersisting view of global indices in the given row. - void getGlobalRowView(GlobalOrdinal GlobalRow, ArrayView &Indices) const {} - - //! Return a const, nonpersisting view of local indices in the given row. - void getLocalRowView(LocalOrdinal LocalRow, ArrayView &indices) const {} - - local_graph_type getLocalGraphDevice() const { - TEUCHOS_TEST_FOR_EXCEPTION(true, Xpetra::Exceptions::RuntimeError, - "Epetra does not support Kokkos::StaticCrsGraph!"); - TEUCHOS_UNREACHABLE_RETURN((local_graph_type())); - } - - void getLocalDiagOffsets(const Kokkos::View &offsets) const { - TEUCHOS_TEST_FOR_EXCEPTION(true, Xpetra::Exceptions::RuntimeError, - "Epetra does not support getLocalDiagOffsets!"); - } - - typename local_graph_type::HostMirror getLocalGraphHost() const { - TEUCHOS_TEST_FOR_EXCEPTION(true, Xpetra::Exceptions::RuntimeError, - "Epetra does not support Kokkos::StaticCrsGraph!"); - TEUCHOS_UNREACHABLE_RETURN((local_graph_type::HostMirror())); - } - - //! Dummy implementation for computeGlobalConstants - void computeGlobalConstants() {} - - //@} - - //! @name Overridden from Teuchos::Describable - //@{ - - //! Return a simple one-line description of this object. - std::string description() const { return std::string(""); } - - //! Print the object with some verbosity level to an FancyOStream object. - void describe(Teuchos::FancyOStream &out, const Teuchos::EVerbosityLevel verbLevel = Teuchos::Describable::verbLevel_default) const {} - - //@} - - //! @name Advanced methods, at increased risk of deprecation. - //@{ - - //! Get an ArrayRCP of the row-offsets. - ArrayRCP getNodeRowPtrs() const { return Teuchos::ArrayRCP(); } - - //@} - - //! Implements DistObject interface - //{@ - - //! Access function for the Tpetra::Map this DistObject was constructed with. - Teuchos::RCP > getMap() const { return Teuchos::null; } - - //! Import. - void doImport(const DistObject &source, - const Import &importer, CombineMode CM) {} - - //! Export. - void doExport(const DistObject &dest, - const Import &importer, CombineMode CM) {} - - //! Import (using an Exporter). - void doImport(const DistObject &source, - const Export &exporter, CombineMode CM) {} - - //! Export (using an Importer). - void doExport(const DistObject &dest, - const Export &exporter, CombineMode CM) {} - - // @} - - //! @name Xpetra specific - //@{ - - //! TpetraCrsGraph constructor to wrap a Tpetra::CrsGraph object - TpetraCrsGraph(const Teuchos::RCP > &graph) { - XPETRA_TPETRA_ETI_EXCEPTION(typeid(TpetraCrsGraph).name(), typeid(TpetraCrsGraph).name(), "long long", typeid(EpetraNode).name()); - } - - //! Get the underlying Tpetra graph - RCP > getTpetra_CrsGraph() const { return Teuchos::null; } - - //@} -}; // TpetraCrsGraph class (specialization for GO=long long and NO=EpetraNode) -#endif - -#endif // HAVE_XPETRA_EPETRA - } // namespace Xpetra #endif // XPETRA_TPETRACRSGRAPH_DEF_HPP diff --git a/packages/xpetra/src/CrsMatrix/Xpetra_CrsMatrix.hpp b/packages/xpetra/src/CrsMatrix/Xpetra_CrsMatrix.hpp index 6269ca9bb38c..175314ea220b 100644 --- a/packages/xpetra/src/CrsMatrix/Xpetra_CrsMatrix.hpp +++ b/packages/xpetra/src/CrsMatrix/Xpetra_CrsMatrix.hpp @@ -19,10 +19,8 @@ #include "Xpetra_CrsGraph.hpp" #include "Xpetra_Vector.hpp" -#ifdef HAVE_XPETRA_TPETRA #include #include -#endif namespace Xpetra { @@ -272,7 +270,6 @@ class CrsMatrix //! @name Xpetra-specific routines //@{ -#ifdef HAVE_XPETRA_TPETRA using impl_scalar_type = typename Kokkos::ArithTraits::val_type; using execution_space = typename node_type::device_type; @@ -294,11 +291,6 @@ class CrsMatrix virtual void setAllValues(const typename local_matrix_type::row_map_type &ptr, const typename local_graph_type::entries_type::non_const_type &ind, const typename local_matrix_type::values_type &val) = 0; -#else -#ifdef __GNUC__ -#warning "Xpetra Kokkos interface for CrsMatrix is enabled (HAVE_XPETRA_KOKKOS_REFACTOR) but Tpetra is disabled. The Kokkos interface needs Tpetra to be enabled, too." -#endif -#endif //@} diff --git a/packages/xpetra/src/CrsMatrix/Xpetra_CrsMatrixFactory.hpp b/packages/xpetra/src/CrsMatrix/Xpetra_CrsMatrixFactory.hpp index 06e1e14aec57..1f664b4a6ad0 100644 --- a/packages/xpetra/src/CrsMatrix/Xpetra_CrsMatrixFactory.hpp +++ b/packages/xpetra/src/CrsMatrix/Xpetra_CrsMatrixFactory.hpp @@ -14,14 +14,8 @@ #include "Xpetra_CrsMatrix.hpp" -#ifdef HAVE_XPETRA_TPETRA #include "Xpetra_TpetraCrsMatrix.hpp" #include "Xpetra_TpetraBlockCrsMatrix.hpp" -#endif - -#ifdef HAVE_XPETRA_EPETRA -#include "Xpetra_EpetraCrsMatrix.hpp" -#endif #include "Xpetra_Exceptions.hpp" @@ -42,10 +36,8 @@ class CrsMatrixFactory { Build(const RCP>& rowMap) { TEUCHOS_TEST_FOR_EXCEPTION(rowMap->lib() == UseEpetra, std::logic_error, "Can't create Xpetra::EpetraCrsMatrix with these scalar/LO/GO types"); -#ifdef HAVE_XPETRA_TPETRA if (rowMap->lib() == UseTpetra) return rcp(new TpetraCrsMatrix(rowMap, 0)); -#endif XPETRA_FACTORY_END; } @@ -57,10 +49,8 @@ class CrsMatrixFactory { const Teuchos::RCP& plist = Teuchos::null) { XPETRA_MONITOR("CrsMatrixFactory::Build"); -#ifdef HAVE_XPETRA_TPETRA if (rowMap->lib() == UseTpetra) return Teuchos::rcp(new TpetraCrsMatrix(rowMap, maxNumEntriesPerRow, plist)); -#endif XPETRA_FACTORY_ERROR_IF_EPETRA(rowMap->lib()); XPETRA_FACTORY_END; @@ -71,10 +61,8 @@ class CrsMatrixFactory { Build(const Teuchos::RCP>& rowMap, const ArrayRCP& NumEntriesPerRowToAlloc, const Teuchos::RCP& plist = Teuchos::null) { -#ifdef HAVE_XPETRA_TPETRA if (rowMap->lib() == UseTpetra) return Teuchos::rcp(new TpetraCrsMatrix(rowMap, NumEntriesPerRowToAlloc, plist)); -#endif XPETRA_FACTORY_ERROR_IF_EPETRA(rowMap->lib()); XPETRA_FACTORY_END; @@ -88,10 +76,8 @@ class CrsMatrixFactory { const Teuchos::RCP& plist = Teuchos::null) { XPETRA_MONITOR("CrsMatrixFactory::Build"); -#ifdef HAVE_XPETRA_TPETRA if (rowMap->lib() == UseTpetra) return rcp(new TpetraCrsMatrix(rowMap, colMap, maxNumEntriesPerRow, plist)); -#endif XPETRA_FACTORY_ERROR_IF_EPETRA(rowMap->lib()); XPETRA_FACTORY_END; @@ -101,10 +87,8 @@ class CrsMatrixFactory { static RCP> Build(const Teuchos::RCP>& rowMap, const Teuchos::RCP>& colMap, const ArrayRCP& NumEntriesPerRowToAlloc, const Teuchos::RCP& plist = Teuchos::null) { XPETRA_MONITOR("CrsMatrixFactory::Build"); -#ifdef HAVE_XPETRA_TPETRA if (rowMap->lib() == UseTpetra) return rcp(new TpetraCrsMatrix(rowMap, colMap, NumEntriesPerRowToAlloc, plist)); -#endif XPETRA_FACTORY_ERROR_IF_EPETRA(rowMap->lib()); XPETRA_FACTORY_END; @@ -114,10 +98,8 @@ class CrsMatrixFactory { static RCP> Build(const Teuchos::RCP>& graph, const Teuchos::RCP& plist = Teuchos::null) { XPETRA_MONITOR("CrsMatrixFactory::Build"); -#ifdef HAVE_XPETRA_TPETRA if (graph->getRowMap()->lib() == UseTpetra) return rcp(new TpetraCrsMatrix(graph, plist)); -#endif XPETRA_FACTORY_ERROR_IF_EPETRA(graph->getRowMap()->lib()); XPETRA_FACTORY_END; @@ -127,10 +109,8 @@ class CrsMatrixFactory { static RCP> Build(const Teuchos::RCP>& graph, typename Xpetra::CrsMatrix::local_matrix_type::values_type& values, const Teuchos::RCP& plist = Teuchos::null) { XPETRA_MONITOR("CrsMatrixFactory::Build"); -#ifdef HAVE_XPETRA_TPETRA if (graph->getRowMap()->lib() == UseTpetra) return rcp(new TpetraCrsMatrix(graph, values, plist)); -#endif XPETRA_FACTORY_ERROR_IF_EPETRA(graph->getRowMap()->lib()); XPETRA_FACTORY_END; @@ -144,10 +124,8 @@ class CrsMatrixFactory { const Teuchos::RCP& params = Teuchos::null) { XPETRA_MONITOR("CrsMatrixFactory::Build"); -#ifdef HAVE_XPETRA_TPETRA if (sourceMatrix->getRowMap()->lib() == UseTpetra) return rcp(new TpetraCrsMatrix(sourceMatrix, importer, domainMap, rangeMap, params)); -#endif XPETRA_FACTORY_ERROR_IF_EPETRA(sourceMatrix->getRowMap()->lib()); XPETRA_FACTORY_END; @@ -161,10 +139,8 @@ class CrsMatrixFactory { const Teuchos::RCP& params = Teuchos::null) { XPETRA_MONITOR("CrsMatrixFactory::Build"); -#ifdef HAVE_XPETRA_TPETRA if (sourceMatrix->getRowMap()->lib() == UseTpetra) return rcp(new TpetraCrsMatrix(sourceMatrix, exporter, domainMap, rangeMap, params)); -#endif XPETRA_FACTORY_ERROR_IF_EPETRA(sourceMatrix->getRowMap()->lib()); XPETRA_FACTORY_END; @@ -179,10 +155,8 @@ class CrsMatrixFactory { const Teuchos::RCP& params) { XPETRA_MONITOR("CrsMatrixFactory::Build"); -#ifdef HAVE_XPETRA_TPETRA if (sourceMatrix->getRowMap()->lib() == UseTpetra) return rcp(new TpetraCrsMatrix(sourceMatrix, RowImporter, DomainImporter, domainMap, rangeMap, params)); -#endif XPETRA_FACTORY_ERROR_IF_EPETRA(sourceMatrix->getRowMap()->lib()); XPETRA_FACTORY_END; @@ -197,10 +171,8 @@ class CrsMatrixFactory { const Teuchos::RCP& params) { XPETRA_MONITOR("CrsMatrixFactory::Build"); -#ifdef HAVE_XPETRA_TPETRA if (sourceMatrix->getRowMap()->lib() == UseTpetra) return rcp(new TpetraCrsMatrix(sourceMatrix, RowExporter, DomainExporter, domainMap, rangeMap, params)); -#endif XPETRA_FACTORY_ERROR_IF_EPETRA(sourceMatrix->getRowMap()->lib()); XPETRA_FACTORY_END; @@ -213,10 +185,8 @@ class CrsMatrixFactory { const Teuchos::RCP& params = null) { XPETRA_MONITOR("CrsMatrixFactory::Build"); -#ifdef HAVE_XPETRA_TPETRA if (rowMap->lib() == UseTpetra) return rcp(new TpetraCrsMatrix(rowMap, colMap, lclMatrix, params)); -#endif XPETRA_FACTORY_ERROR_IF_EPETRA(rowMap->lib()); XPETRA_FACTORY_END; @@ -231,10 +201,8 @@ class CrsMatrixFactory { const Teuchos::RCP& params = null) { XPETRA_MONITOR("CrsMatrixFactory::Build"); -#ifdef HAVE_XPETRA_TPETRA if (rowMap->lib() == UseTpetra) return rcp(new TpetraCrsMatrix(lclMatrix, rowMap, colMap, domainMap, rangeMap, params)); -#endif XPETRA_FACTORY_ERROR_IF_EPETRA(rowMap->lib()); XPETRA_FACTORY_END; @@ -251,10 +219,8 @@ class CrsMatrixFactory { const Teuchos::RCP& params = null) { XPETRA_MONITOR("CrsMatrixFactory::Build"); -#ifdef HAVE_XPETRA_TPETRA if (rowMap->lib() == UseTpetra) return rcp(new TpetraCrsMatrix(lclMatrix, rowMap, colMap, domainMap, rangeMap, importer, exporter, params)); -#endif TEUCHOS_TEST_FOR_EXCEPTION(rowMap->lib() == UseEpetra, std::logic_error, "Epetra doesn't support this matrix constructor"); @@ -269,11 +235,9 @@ class CrsMatrixFactory { LocalOrdinal blockSize) { XPETRA_MONITOR("CrsMatrixFactory::BuildBlock"); -#ifdef HAVE_XPETRA_TPETRA if (domainMap->lib() == UseTpetra) { return rcp(new Xpetra::TpetraBlockCrsMatrix(blockGraph, domainMap, rangeMap, blockSize)); } -#endif TEUCHOS_TEST_FOR_EXCEPTION(domainMap->lib() == UseEpetra, std::logic_error, "Epetra doesn't support this matrix constructor"); XPETRA_FACTORY_END; @@ -281,536 +245,8 @@ class CrsMatrixFactory { }; // we need the Epetra specialization only if Epetra is enabled -#if (defined(HAVE_XPETRA_EPETRA) && !defined(XPETRA_EPETRA_NO_32BIT_GLOBAL_INDICES)) - -// Specializtion for SC=double, LO=int, GO=int and Node=EpetraNode -// Used both for Epetra and Tpetra -template <> -class CrsMatrixFactory { - typedef double Scalar; - typedef int LocalOrdinal; - typedef int GlobalOrdinal; - typedef EpetraNode Node; - - private: - //! Private constructor. This is a static class. - CrsMatrixFactory() {} - - public: - //! Constructor for empty matrix (intended use is an import/export target - can't insert entries directly) - static RCP> - Build(const RCP>& rowMap) { - XPETRA_MONITOR("CrsMatrixFactory::Build"); -#ifdef HAVE_XPETRA_TPETRA - if (rowMap->lib() == UseTpetra) - return rcp(new TpetraCrsMatrix(rowMap, 0)); -#endif - if (rowMap->lib() == UseEpetra) - return rcp(new EpetraCrsMatrixT(rowMap)); - - XPETRA_FACTORY_END; - } - - static RCP> Build(const RCP>& rowMap, size_t maxNumEntriesPerRow, const Teuchos::RCP& plist = Teuchos::null) { - XPETRA_MONITOR("CrsMatrixFactory::Build"); - -#ifdef HAVE_XPETRA_TPETRA - if (rowMap->lib() == UseTpetra) - return rcp(new TpetraCrsMatrix(rowMap, maxNumEntriesPerRow, plist)); -#endif - - if (rowMap->lib() == UseEpetra) - return rcp(new EpetraCrsMatrixT(rowMap, maxNumEntriesPerRow, plist)); - - XPETRA_FACTORY_END; - } - - static RCP> Build(const Teuchos::RCP>& rowMap, const ArrayRCP& NumEntriesPerRowToAlloc, const Teuchos::RCP& plist = Teuchos::null) { - XPETRA_MONITOR("CrsMatrixFactory::Build"); - -#ifdef HAVE_XPETRA_TPETRA - if (rowMap->lib() == UseTpetra) - return rcp(new TpetraCrsMatrix(rowMap, NumEntriesPerRowToAlloc, plist)); -#endif - - if (rowMap->lib() == UseEpetra) - return rcp(new EpetraCrsMatrixT(rowMap, NumEntriesPerRowToAlloc, plist)); - - XPETRA_FACTORY_END; - } - - //! Constructor specifying column Map and fixed number of entries for each row. - static RCP> Build(const Teuchos::RCP>& rowMap, const Teuchos::RCP>& colMap, size_t maxNumEntriesPerRow, const Teuchos::RCP& plist = Teuchos::null) { - XPETRA_MONITOR("CrsMatrixFactory::Build"); - -#ifdef HAVE_XPETRA_TPETRA - if (rowMap->lib() == UseTpetra) - return rcp(new TpetraCrsMatrix(rowMap, colMap, maxNumEntriesPerRow, plist)); -#endif - - if (rowMap->lib() == UseEpetra) - return rcp(new EpetraCrsMatrixT(rowMap, colMap, maxNumEntriesPerRow, plist)); - - XPETRA_FACTORY_END; - } - - //! Constructor specifying column Map and number of entries in each row. - static RCP> Build(const Teuchos::RCP>& rowMap, const Teuchos::RCP>& colMap, const ArrayRCP& NumEntriesPerRowToAlloc, const Teuchos::RCP& plist = Teuchos::null) { - XPETRA_MONITOR("CrsMatrixFactory::Build"); - -#ifdef HAVE_XPETRA_TPETRA - if (rowMap->lib() == UseTpetra) - return rcp(new TpetraCrsMatrix(rowMap, colMap, NumEntriesPerRowToAlloc, plist)); -#endif - - if (rowMap->lib() == UseEpetra) - return rcp(new EpetraCrsMatrixT(rowMap, colMap, NumEntriesPerRowToAlloc, plist)); - - XPETRA_FACTORY_END; - } - - //! Constructor specifying a previously constructed graph. - static RCP> Build(const Teuchos::RCP>& graph, const Teuchos::RCP& plist = Teuchos::null) { - XPETRA_MONITOR("CrsMatrixFactory::Build"); - -#ifdef HAVE_XPETRA_TPETRA - if (graph->getRowMap()->lib() == UseTpetra) - return rcp(new TpetraCrsMatrix(graph, plist)); -#endif - - if (graph->getRowMap()->lib() == UseEpetra) - return rcp(new EpetraCrsMatrixT(graph, plist)); - - XPETRA_FACTORY_END; - } - - //! Constructor specifying a previously constructed graph and values array - static RCP> Build(const Teuchos::RCP>& graph, typename Xpetra::CrsMatrix::local_matrix_type::values_type& values, const Teuchos::RCP& plist = Teuchos::null) { - XPETRA_MONITOR("CrsMatrixFactory::Build"); - -#ifdef HAVE_XPETRA_TPETRA - if (graph->getRowMap()->lib() == UseTpetra) - return rcp(new TpetraCrsMatrix(graph, values, plist)); -#endif - - XPETRA_FACTORY_ERROR_IF_EPETRA(graph->getRowMap()->lib()); - XPETRA_FACTORY_END; - } - - //! Constructor using FusedImport - static RCP> Build( - const Teuchos::RCP>& sourceMatrix, - const Import& importer, - const RCP>& domainMap = Teuchos::null, - const RCP>& rangeMap = Teuchos::null, - const Teuchos::RCP& params = Teuchos::null) { - XPETRA_MONITOR("CrsMatrixFactory::Build"); - -#ifdef HAVE_XPETRA_TPETRA - if (sourceMatrix->getRowMap()->lib() == UseTpetra) - return rcp(new TpetraCrsMatrix(sourceMatrix, importer, domainMap, rangeMap, params)); -#endif - - if (sourceMatrix->getRowMap()->lib() == UseEpetra) - return rcp(new EpetraCrsMatrixT(sourceMatrix, importer, domainMap, rangeMap, params)); - - XPETRA_FACTORY_END; - } - - //! Constructor using FusedExport - static RCP> Build( - const Teuchos::RCP>& sourceMatrix, - const Export& exporter, - const RCP>& domainMap = Teuchos::null, - const RCP>& rangeMap = Teuchos::null, - const Teuchos::RCP& params = Teuchos::null) { - XPETRA_MONITOR("CrsMatrixFactory::Build"); - -#ifdef HAVE_XPETRA_TPETRA - if (sourceMatrix->getRowMap()->lib() == UseTpetra) - return rcp(new TpetraCrsMatrix(sourceMatrix, exporter, domainMap, rangeMap, params)); -#endif - - if (sourceMatrix->getRowMap()->lib() == UseEpetra) - return rcp(new EpetraCrsMatrixT(sourceMatrix, exporter, domainMap, rangeMap, params)); - - XPETRA_FACTORY_END; - } - - //! Constructor using FusedImport - static RCP> Build( - const Teuchos::RCP>& sourceMatrix, - const Import& RowImporter, - const RCP> DomainImporter, - const RCP>& domainMap, - const RCP>& rangeMap, - const Teuchos::RCP& params) { - XPETRA_MONITOR("CrsMatrixFactory::Build"); - -#ifdef HAVE_XPETRA_TPETRA - if (sourceMatrix->getRowMap()->lib() == UseTpetra) - return rcp(new TpetraCrsMatrix(sourceMatrix, RowImporter, DomainImporter, domainMap, rangeMap, params)); -#endif - - if (sourceMatrix->getRowMap()->lib() == UseEpetra) - return rcp(new EpetraCrsMatrixT(sourceMatrix, RowImporter, DomainImporter, domainMap, rangeMap, params)); - - XPETRA_FACTORY_END; - } - - //! Constructor using FusedExport - static RCP> Build( - const Teuchos::RCP>& sourceMatrix, - const Export& RowExporter, - const RCP> DomainExporter, - const RCP>& domainMap, - const RCP>& rangeMap, - const Teuchos::RCP& params) { - XPETRA_MONITOR("CrsMatrixFactory::Build"); - -#ifdef HAVE_XPETRA_TPETRA - if (sourceMatrix->getRowMap()->lib() == UseTpetra) - return rcp(new TpetraCrsMatrix(sourceMatrix, RowExporter, DomainExporter, domainMap, rangeMap, params)); -#endif - - if (sourceMatrix->getRowMap()->lib() == UseEpetra) - return rcp(new EpetraCrsMatrixT(sourceMatrix, RowExporter, DomainExporter, domainMap, rangeMap, params)); - - XPETRA_FACTORY_END; - } - - static RCP> Build( - const Teuchos::RCP>& rowMap, - const Teuchos::RCP>& colMap, - const typename Xpetra::CrsMatrix::local_matrix_type& lclMatrix, - const Teuchos::RCP& params = null) { - XPETRA_MONITOR("CrsMatrixFactory::Build"); - -#ifdef HAVE_XPETRA_TPETRA - if (rowMap->lib() == UseTpetra) - return rcp(new TpetraCrsMatrix(rowMap, colMap, lclMatrix, params)); -#endif - - if (rowMap->lib() == UseEpetra) - return rcp(new EpetraCrsMatrixT(rowMap, colMap, lclMatrix, params)); - - XPETRA_FACTORY_END; - } - - static RCP> Build( - const typename Xpetra::CrsMatrix::local_matrix_type& lclMatrix, - const Teuchos::RCP>& rowMap, - const Teuchos::RCP>& colMap, - const Teuchos::RCP>& domainMap = Teuchos::null, - const Teuchos::RCP>& rangeMap = Teuchos::null, - const Teuchos::RCP& params = null) { - XPETRA_MONITOR("CrsMatrixFactory::Build"); - -#ifdef HAVE_XPETRA_TPETRA - if (rowMap->lib() == UseTpetra) - return rcp(new TpetraCrsMatrix(lclMatrix, rowMap, colMap, domainMap, rangeMap, params)); -#endif - - if (rowMap->lib() == UseEpetra) - return rcp(new EpetraCrsMatrixT(lclMatrix, rowMap, colMap, domainMap, rangeMap, params)); - - XPETRA_FACTORY_END; - } - - static RCP> Build( - const typename Xpetra::CrsMatrix::local_matrix_type& lclMatrix, - const Teuchos::RCP>& rowMap, - const Teuchos::RCP>& colMap, - const Teuchos::RCP>& domainMap, - const Teuchos::RCP>& rangeMap, - const Teuchos::RCP>& importer, - const Teuchos::RCP>& exporter, - const Teuchos::RCP& params = null) { - XPETRA_MONITOR("CrsMatrixFactory::Build"); - -#ifdef HAVE_XPETRA_TPETRA - if (rowMap->lib() == UseTpetra) - return rcp(new TpetraCrsMatrix(lclMatrix, rowMap, colMap, domainMap, rangeMap, importer, exporter, params)); -#endif - - TEUCHOS_TEST_FOR_EXCEPTION(rowMap->lib() == UseEpetra, std::logic_error, "Epetra doesn't support this matrix constructor"); - - XPETRA_FACTORY_END; - } - - //! Build a BlockCrsMatrix - static RCP> BuildBlock( - const Teuchos::RCP>& blockGraph, - const Teuchos::RCP>& domainMap, - const Teuchos::RCP>& rangeMap, - LocalOrdinal blockSize) { - XPETRA_MONITOR("CrsMatrixFactory::BuildBlock"); -#ifdef HAVE_XPETRA_TPETRA - if (domainMap->lib() == UseTpetra) - return rcp(new Xpetra::TpetraBlockCrsMatrix(blockGraph, domainMap, rangeMap, blockSize)); -#endif - TEUCHOS_TEST_FOR_EXCEPTION(domainMap->lib() == UseEpetra, std::logic_error, "Epetra doesn't support this matrix constructor"); - - XPETRA_FACTORY_END; - } -}; -#endif // we need the Epetra specialization only if Epetra is enabled -#if (defined(HAVE_XPETRA_EPETRA) && !defined(XPETRA_EPETRA_NO_64BIT_GLOBAL_INDICES)) - -template <> -class CrsMatrixFactory { - typedef double Scalar; - typedef int LocalOrdinal; - typedef long long GlobalOrdinal; - typedef EpetraNode Node; - - private: - //! Private constructor. This is a static class. - CrsMatrixFactory() {} - - public: - //! Constructor for empty matrix (intended use is an import/export target - can't insert entries directly) - static RCP> - Build(const RCP>& rowMap) { - XPETRA_MONITOR("CrsMatrixFactory::Build"); -#ifdef HAVE_XPETRA_TPETRA - if (rowMap->lib() == UseTpetra) - return rcp(new TpetraCrsMatrix(rowMap, 0)); -#endif -#ifdef HAVE_XPETRA_EPETRA - if (rowMap->lib() == UseEpetra) - return rcp(new EpetraCrsMatrixT(rowMap, 0)); -#endif - XPETRA_FACTORY_END; - } - - static RCP> Build(const RCP>& rowMap, size_t maxNumEntriesPerRow, const Teuchos::RCP& plist = Teuchos::null) { - XPETRA_MONITOR("CrsMatrixFactory::Build"); - -#ifdef HAVE_XPETRA_TPETRA - if (rowMap->lib() == UseTpetra) - return rcp(new TpetraCrsMatrix(rowMap, maxNumEntriesPerRow, plist)); -#endif - - if (rowMap->lib() == UseEpetra) - return rcp(new EpetraCrsMatrixT(rowMap, maxNumEntriesPerRow, plist)); - - XPETRA_FACTORY_END; - } - - static RCP> Build(const Teuchos::RCP>& rowMap, const ArrayRCP& NumEntriesPerRowToAlloc, const Teuchos::RCP& plist = Teuchos::null) { - XPETRA_MONITOR("CrsMatrixFactory::Build"); - -#ifdef HAVE_XPETRA_TPETRA - if (rowMap->lib() == UseTpetra) - return rcp(new TpetraCrsMatrix(rowMap, NumEntriesPerRowToAlloc, plist)); -#endif - - if (rowMap->lib() == UseEpetra) - return rcp(new EpetraCrsMatrixT(rowMap, NumEntriesPerRowToAlloc, plist)); - - XPETRA_FACTORY_END; - } - - //! Constructor specifying column Map and fixed number of entries for each row. - static RCP> Build(const Teuchos::RCP>& rowMap, const Teuchos::RCP>& colMap, size_t maxNumEntriesPerRow, const Teuchos::RCP& plist = Teuchos::null) { - XPETRA_MONITOR("CrsMatrixFactory::Build"); - -#ifdef HAVE_XPETRA_TPETRA - if (rowMap->lib() == UseTpetra) - return rcp(new TpetraCrsMatrix(rowMap, colMap, maxNumEntriesPerRow, plist)); -#endif - - if (rowMap->lib() == UseEpetra) - return rcp(new EpetraCrsMatrixT(rowMap, colMap, maxNumEntriesPerRow, plist)); - - XPETRA_FACTORY_END; - } - - //! Constructor specifying column Map and number of entries in each row. - static RCP> Build(const Teuchos::RCP>& rowMap, const Teuchos::RCP>& colMap, const ArrayRCP& NumEntriesPerRowToAlloc, const Teuchos::RCP& plist = Teuchos::null) { - XPETRA_MONITOR("CrsMatrixFactory::Build"); - -#ifdef HAVE_XPETRA_TPETRA - if (rowMap->lib() == UseTpetra) - return rcp(new TpetraCrsMatrix(rowMap, colMap, NumEntriesPerRowToAlloc, plist)); -#endif - - if (rowMap->lib() == UseEpetra) - return rcp(new EpetraCrsMatrixT(rowMap, colMap, NumEntriesPerRowToAlloc, plist)); - - XPETRA_FACTORY_END; - } - - //! Constructor specifying a previously constructed graph. - static RCP> Build(const Teuchos::RCP>& graph, const Teuchos::RCP& plist = Teuchos::null) { - XPETRA_MONITOR("CrsMatrixFactory::Build"); - -#ifdef HAVE_XPETRA_TPETRA - if (graph->getRowMap()->lib() == UseTpetra) - return rcp(new TpetraCrsMatrix(graph, plist)); -#endif - - if (graph->getRowMap()->lib() == UseEpetra) - return rcp(new EpetraCrsMatrixT(graph, plist)); - - XPETRA_FACTORY_END; - } - - //! Constructor specifying a previously constructed graph and values array - static RCP> Build(const Teuchos::RCP>& graph, typename Xpetra::CrsMatrix::local_matrix_type::values_type& values, const Teuchos::RCP& plist = Teuchos::null) { - XPETRA_MONITOR("CrsMatrixFactory::Build"); - -#ifdef HAVE_XPETRA_TPETRA - if (graph->getRowMap()->lib() == UseTpetra) { - return rcp(new TpetraCrsMatrix(graph, values, plist)); - } -#endif - - XPETRA_FACTORY_ERROR_IF_EPETRA(graph->getRowMap()->lib()); - XPETRA_FACTORY_END; - } - - //! Constructor using FusedImport - static RCP> Build( - const Teuchos::RCP>& sourceMatrix, - const Import& importer, - const RCP>& domainMap = Teuchos::null, - const RCP>& rangeMap = Teuchos::null, - const Teuchos::RCP& params = Teuchos::null) { - XPETRA_MONITOR("CrsMatrixFactory::Build"); - -#ifdef HAVE_XPETRA_TPETRA - if (sourceMatrix->getRowMap()->lib() == UseTpetra) - return rcp(new TpetraCrsMatrix(sourceMatrix, importer, domainMap, rangeMap, params)); -#endif - - if (sourceMatrix->getRowMap()->lib() == UseEpetra) - return rcp(new EpetraCrsMatrixT(sourceMatrix, importer, domainMap, rangeMap, params)); - - XPETRA_FACTORY_END; - } - - //! Constructor using FusedExport - static RCP> Build( - const Teuchos::RCP>& sourceMatrix, - const Export& exporter, - const RCP>& domainMap = Teuchos::null, - const RCP>& rangeMap = Teuchos::null, - const Teuchos::RCP& params = Teuchos::null) { - XPETRA_MONITOR("CrsMatrixFactory::Build"); - -#ifdef HAVE_XPETRA_TPETRA - if (sourceMatrix->getRowMap()->lib() == UseTpetra) - return rcp(new TpetraCrsMatrix(sourceMatrix, exporter, domainMap, rangeMap, params)); -#endif - - if (sourceMatrix->getRowMap()->lib() == UseEpetra) - return rcp(new EpetraCrsMatrixT(sourceMatrix, exporter, domainMap, rangeMap, params)); - - XPETRA_FACTORY_END; - } - - //! Constructor using FusedImport - static RCP> Build( - const Teuchos::RCP>& sourceMatrix, - const Import& RowImporter, - const RCP> DomainImporter, - const RCP>& domainMap, - const RCP>& rangeMap, - const Teuchos::RCP& params) { - XPETRA_MONITOR("CrsMatrixFactory::Build"); - -#ifdef HAVE_XPETRA_TPETRA - if (sourceMatrix->getRowMap()->lib() == UseTpetra) - return rcp(new TpetraCrsMatrix(sourceMatrix, RowImporter, DomainImporter, domainMap, rangeMap, params)); -#endif - - if (sourceMatrix->getRowMap()->lib() == UseEpetra) - return rcp(new EpetraCrsMatrixT(sourceMatrix, RowImporter, DomainImporter, domainMap, rangeMap, params)); - - XPETRA_FACTORY_END; - } - - //! Constructor using FusedExport - static RCP> Build( - const Teuchos::RCP>& sourceMatrix, - const Export& RowExporter, - const RCP> DomainExporter, - const RCP>& domainMap, - const RCP>& rangeMap, - const Teuchos::RCP& params) { - XPETRA_MONITOR("CrsMatrixFactory::Build"); - -#ifdef HAVE_XPETRA_TPETRA - if (sourceMatrix->getRowMap()->lib() == UseTpetra) - return rcp(new TpetraCrsMatrix(sourceMatrix, RowExporter, DomainExporter, domainMap, rangeMap, params)); -#endif - - if (sourceMatrix->getRowMap()->lib() == UseEpetra) - return rcp(new EpetraCrsMatrixT(sourceMatrix, RowExporter, DomainExporter, domainMap, rangeMap, params)); - - XPETRA_FACTORY_END; - } - - static RCP> Build( - const Teuchos::RCP>& rowMap, - const Teuchos::RCP>& colMap, - const typename Xpetra::CrsMatrix::local_matrix_type& lclMatrix, - const Teuchos::RCP& params = null) { - XPETRA_MONITOR("CrsMatrixFactory::Build"); - -#ifdef HAVE_XPETRA_TPETRA - if (rowMap->lib() == UseTpetra) - return rcp(new TpetraCrsMatrix(rowMap, colMap, lclMatrix, params)); -#endif - - if (rowMap->lib() == UseEpetra) - return rcp(new EpetraCrsMatrixT(rowMap, colMap, lclMatrix, params)); - - XPETRA_FACTORY_END; - } - static RCP> Build( - const typename Xpetra::CrsMatrix::local_matrix_type& lclMatrix, - const Teuchos::RCP>& rowMap, - const Teuchos::RCP>& colMap, - const Teuchos::RCP>& domainMap = Teuchos::null, - const Teuchos::RCP>& rangeMap = Teuchos::null, - const Teuchos::RCP& params = null) { - XPETRA_MONITOR("CrsMatrixFactory::Build"); - -#ifdef HAVE_XPETRA_TPETRA - if (rowMap->lib() == UseTpetra) - return rcp(new TpetraCrsMatrix(lclMatrix, rowMap, colMap, domainMap, rangeMap, params)); -#endif - - if (rowMap->lib() == UseEpetra) - return rcp(new EpetraCrsMatrixT(lclMatrix, rowMap, colMap, domainMap, rangeMap, params)); - - XPETRA_FACTORY_END; - } - - //! Build a BlockCrsMatrix - static RCP> BuildBlock( - const Teuchos::RCP>& blockGraph, - const Teuchos::RCP>& domainMap, - const Teuchos::RCP>& rangeMap, - LocalOrdinal blockSize) { - XPETRA_MONITOR("CrsMatrixFactory::BuildBlock"); - -#ifdef HAVE_XPETRA_TPETRA - if (domainMap->lib() == UseTpetra) { - return rcp(new Xpetra::TpetraBlockCrsMatrix(blockGraph, domainMap, rangemap, blockSize)); - } -#endif - TEUCHOS_TEST_FOR_EXCEPTION(domainMap->lib() == UseEpetra, std::logic_error, "Epetra doesn't support this matrix constructor"); - - XPETRA_FACTORY_END; - } -}; -#endif } // namespace Xpetra diff --git a/packages/xpetra/src/CrsMatrix/Xpetra_EpetraCrsMatrix.cpp b/packages/xpetra/src/CrsMatrix/Xpetra_EpetraCrsMatrix.cpp deleted file mode 100644 index 666055e8a218..000000000000 --- a/packages/xpetra/src/CrsMatrix/Xpetra_EpetraCrsMatrix.cpp +++ /dev/null @@ -1,79 +0,0 @@ -// @HEADER -// ***************************************************************************** -// Xpetra: A linear algebra interface package -// -// Copyright 2012 NTESS and the Xpetra contributors. -// SPDX-License-Identifier: BSD-3-Clause -// ***************************************************************************** -// @HEADER - -#include -#include "Xpetra_EpetraCrsMatrix.hpp" - -namespace Xpetra { - -#ifndef XPETRA_EPETRA_NO_32BIT_GLOBAL_INDICES -#ifdef HAVE_XPETRA_TPETRA -#include "TpetraCore_config.h" -#if ((defined(EPETRA_HAVE_OMP) && !defined(HAVE_TPETRA_INST_OPENMP)) || \ - (!defined(EPETRA_HAVE_OMP) && !defined(HAVE_TPETRA_INST_SERIAL))) -template class EpetraCrsMatrixT; -#endif - -#ifdef HAVE_TPETRA_INST_SERIAL -template class EpetraCrsMatrixT; -#endif -#ifdef HAVE_TPETRA_INST_PTHREAD -template class EpetraCrsMatrixT; -#endif -#ifdef HAVE_TPETRA_INST_OPENMP -template class EpetraCrsMatrixT; -#endif -#ifdef HAVE_TPETRA_INST_CUDA -typedef Tpetra::KokkosCompat::KokkosCudaWrapperNode default_node_type; -template class EpetraCrsMatrixT; -#endif -#ifdef HAVE_TPETRA_INST_HIP -typedef Tpetra::KokkosCompat::KokkosHIPWrapperNode default_node_type; -template class EpetraCrsMatrixT; -#endif -#else -// Tpetra is disabled and Kokkos not available: use dummy node type -typedef Xpetra::EpetraNode default_node_type; -template class EpetraCrsMatrixT; -#endif // HAVE_XPETRA_TPETRA -#endif - -#ifndef XPETRA_EPETRA_NO_64BIT_GLOBAL_INDICES -#ifdef HAVE_XPETRA_TPETRA -#include "TpetraCore_config.h" -#if ((defined(EPETRA_HAVE_OMP) && !defined(HAVE_TPETRA_INST_OPENMP)) || \ - (!defined(EPETRA_HAVE_OMP) && !defined(HAVE_TPETRA_INST_SERIAL))) -template class EpetraCrsMatrixT; -#endif - -#ifdef HAVE_TPETRA_INST_SERIAL -template class EpetraCrsMatrixT; -#endif -#ifdef HAVE_TPETRA_INST_PTHREAD -template class EpetraCrsMatrixT; -#endif -#ifdef HAVE_TPETRA_INST_OPENMP -template class EpetraCrsMatrixT; -#endif -#ifdef HAVE_TPETRA_INST_CUDA -typedef Tpetra::KokkosCompat::KokkosCudaWrapperNode default_node_type; -template class EpetraCrsMatrixT; -#endif -#ifdef HAVE_TPETRA_INST_HIP -typedef Tpetra::KokkosCompat::KokkosHIPWrapperNode default_node_type; -template class EpetraCrsMatrixT; -#endif -#else -// Tpetra is disabled and Kokkos not available: use dummy node type -typedef Xpetra::EpetraNode default_node_type; -template class EpetraCrsMatrixT; -#endif // HAVE_XPETRA_TPETRA -#endif - -} // namespace Xpetra diff --git a/packages/xpetra/src/CrsMatrix/Xpetra_EpetraCrsMatrix.hpp b/packages/xpetra/src/CrsMatrix/Xpetra_EpetraCrsMatrix.hpp deleted file mode 100644 index 432aabdf338d..000000000000 --- a/packages/xpetra/src/CrsMatrix/Xpetra_EpetraCrsMatrix.hpp +++ /dev/null @@ -1,2447 +0,0 @@ -// @HEADER -// ***************************************************************************** -// Xpetra: A linear algebra interface package -// -// Copyright 2012 NTESS and the Xpetra contributors. -// SPDX-License-Identifier: BSD-3-Clause -// ***************************************************************************** -// @HEADER - -#ifndef XPETRA_EPETRACRSMATRIX_HPP -#define XPETRA_EPETRACRSMATRIX_HPP - -/* this file is automatically generated - do not edit (see script/epetra.py) */ - -#ifdef HAVE_XPETRA_TPETRA -#include -#endif - -#include "Xpetra_EpetraConfigDefs.hpp" - -#include "Xpetra_CrsMatrix.hpp" - -#include -#include - -#include "Xpetra_EpetraMap.hpp" -#include "Xpetra_EpetraVector.hpp" -#include "Xpetra_EpetraMultiVector.hpp" -#include "Xpetra_EpetraCrsGraph.hpp" - -#include "Xpetra_MapFactory.hpp" - -#include "Xpetra_Utils.hpp" -#include "Xpetra_Exceptions.hpp" - -#if defined(XPETRA_ENABLE_DEPRECATED_CODE) -#ifdef __GNUC__ -#if defined(Xpetra_SHOW_DEPRECATED_WARNINGS) -#warning "The header file Trilinos/packages/xpetra/src/CrsMatrix/Xpetra_EpetraCrsMatrix.hpp is deprecated." -#endif -#endif -#else -#error "The header file Trilinos/packages/xpetra/src/CrsMatrix/Xpetra_EpetraCrsMatrix.hpp is deprecated." -#endif - -namespace Xpetra { - -// general implementation: empty stub -template -class XPETRA_DEPRECATED EpetraCrsMatrixT - : public CrsMatrix { - typedef EpetraGlobalOrdinal GlobalOrdinal; - typedef typename CrsMatrix::scalar_type Scalar; - typedef typename CrsMatrix::local_ordinal_type LocalOrdinal; - -#ifdef HAVE_XPETRA_TPETRA - typedef typename Xpetra::CrsMatrix::local_matrix_type local_matrix_type; - typedef typename Xpetra::CrsMatrix::node_type node_type; -#endif - - public: - EpetraCrsMatrixT(const Teuchos::RCP > &rowMap, size_t maxNumEntriesPerRow, const Teuchos::RCP ¶ms = Teuchos::null) { - TEUCHOS_TEST_FOR_EXCEPTION(true, Xpetra::Exceptions::RuntimeError, - "Xpetra::EpetraCrsMatrix only available for GO=int or GO=long long with EpetraNode (Serial or OpenMP depending on configuration)"); - } - EpetraCrsMatrixT(const Teuchos::RCP > &rowMap, const ArrayRCP &NumEntriesPerRowToAlloc, const Teuchos::RCP ¶ms = Teuchos::null) { - TEUCHOS_TEST_FOR_EXCEPTION(true, Xpetra::Exceptions::RuntimeError, - "Xpetra::EpetraCrsMatrix only available for GO=int or GO=long long with EpetraNode (Serial or OpenMP depending on configuration)"); - } - EpetraCrsMatrixT(const Teuchos::RCP > &rowMap, const Teuchos::RCP > &colMap, size_t maxNumEntriesPerRow, const Teuchos::RCP ¶ms = Teuchos::null) { TEUCHOS_TEST_FOR_EXCEPTION(true, Xpetra::Exceptions::RuntimeError, "Xpetra::EpetraCrsMatrix only available for GO=int or GO=long long with Node=Tpetra::KokkosCompat::KokkosSerialWrapperNode."); } - EpetraCrsMatrixT(const Teuchos::RCP > &rowMap, const Teuchos::RCP > &colMap, const ArrayRCP &NumEntriesPerRowToAlloc, const Teuchos::RCP ¶ms = Teuchos::null) { TEUCHOS_TEST_FOR_EXCEPTION(true, Xpetra::Exceptions::RuntimeError, "Xpetra::EpetraCrsMatrix only available for GO=int or GO=long long with Node=Tpetra::KokkosCompat::KokkosSerialWrapperNode."); } - EpetraCrsMatrixT(const Teuchos::RCP > &graph, const Teuchos::RCP ¶ms = Teuchos::null) { TEUCHOS_TEST_FOR_EXCEPTION(true, Xpetra::Exceptions::RuntimeError, "Xpetra::EpetraCrsMatrix only available for GO=int or GO=long long with Node=Tpetra::KokkosCompat::KokkosSerialWrapperNode."); } - EpetraCrsMatrixT(const Teuchos::RCP > &sourceMatrix, - const Import &importer, - const Teuchos::RCP > &domainMap = Teuchos::null, - const Teuchos::RCP > &rangeMap = Teuchos::null, - const Teuchos::RCP ¶ms = Teuchos::null) { - TEUCHOS_TEST_FOR_EXCEPTION(true, Xpetra::Exceptions::RuntimeError, - "Xpetra::EpetraCrsMatrix only available for GO=int or GO=long long with EpetraNode (Serial or OpenMP depending on configuration)"); - } - EpetraCrsMatrixT(const Teuchos::RCP > &sourceMatrix, - const Export &exporter, - const Teuchos::RCP > &domainMap = Teuchos::null, - const Teuchos::RCP > &rangeMap = Teuchos::null, - const Teuchos::RCP ¶ms = Teuchos::null) { - TEUCHOS_TEST_FOR_EXCEPTION(true, Xpetra::Exceptions::RuntimeError, - "Xpetra::EpetraCrsMatrix only available for GO=int or GO=long long with EpetraNode (Serial or OpenMP depending on configuration)"); - } - EpetraCrsMatrixT(const Teuchos::RCP > &sourceMatrix, - const Import &RowImporter, - const Teuchos::RCP > DomainImporter, - const Teuchos::RCP > &domainMap, - const Teuchos::RCP > &rangeMap, - const Teuchos::RCP ¶ms) { - TEUCHOS_TEST_FOR_EXCEPTION(true, Xpetra::Exceptions::RuntimeError, - "Xpetra::EpetraCrsMatrix only available for GO=int or GO=long long with EpetraNode (Serial or OpenMP depending on configuration)"); - } - EpetraCrsMatrixT(const Teuchos::RCP > &sourceMatrix, - const Export &RowExporter, - const Teuchos::RCP > DomainExporter, - const Teuchos::RCP > &domainMap, - const Teuchos::RCP > &rangeMap, - const Teuchos::RCP ¶ms) { - TEUCHOS_TEST_FOR_EXCEPTION(true, Xpetra::Exceptions::RuntimeError, - "Xpetra::EpetraCrsMatrix only available for GO=int or GO=long long with EpetraNode (Serial or OpenMP depending on configuration)"); - } -#ifdef HAVE_XPETRA_TPETRA - EpetraCrsMatrixT(const Teuchos::RCP > &rowMap, - const Teuchos::RCP > &colMap, - const local_matrix_type &lclMatrix, - const Teuchos::RCP ¶ms = null) { - TEUCHOS_TEST_FOR_EXCEPTION(true, Xpetra::Exceptions::RuntimeError, - "Xpetra::EpetraCrsMatrix only available for GO=int or GO=long long with EpetraNode (Serial or OpenMP depending on configuration)"); - } - EpetraCrsMatrixT( - const local_matrix_type &lclMatrix, - const Teuchos::RCP > &rowMap, - const Teuchos::RCP > &colMap, - const Teuchos::RCP > &rangeMap = Teuchos::null, - const Teuchos::RCP > &domainMap = Teuchos::null, - const Teuchos::RCP ¶ms = null) { - TEUCHOS_TEST_FOR_EXCEPTION(true, Xpetra::Exceptions::RuntimeError, - "Xpetra::EpetraCrsMatrix only available for GO=int or GO=long long with EpetraNode (Serial or OpenMP depending on configuration)"); - } -#endif - virtual ~EpetraCrsMatrixT() {} - - void insertGlobalValues(GlobalOrdinal globalRow, const ArrayView &cols, const ArrayView &vals) {} - void insertLocalValues(LocalOrdinal localRow, const ArrayView &cols, const ArrayView &vals) {} - void replaceGlobalValues(GlobalOrdinal globalRow, const ArrayView &cols, const ArrayView &vals) {} - void replaceLocalValues(LocalOrdinal localRow, const ArrayView &cols, const ArrayView &vals) {} - void setAllToScalar(const Scalar &alpha) {} - void scale(const Scalar &alpha) {} - void allocateAllValues(size_t numNonZeros, ArrayRCP &rowptr, ArrayRCP &colind, ArrayRCP &values) {} - void setAllValues(const ArrayRCP &rowptr, const ArrayRCP &colind, const ArrayRCP &values) {} - void getAllValues(ArrayRCP &rowptr, ArrayRCP &colind, ArrayRCP &values) const {} - void getAllValues(ArrayRCP &values) {} - bool haveGlobalConstants() const { return true; } - void expertStaticFillComplete(const RCP > &domainMap, - const RCP > &rangeMap, - const RCP > &importer = Teuchos::null, - const RCP > &exporter = Teuchos::null, - const RCP ¶ms = Teuchos::null) {} - - void resumeFill(const RCP ¶ms = null) {} - void fillComplete(const RCP > &domainMap, const RCP > &rangeMap, const RCP ¶ms = null) {} - void fillComplete(const RCP ¶ms = null) {} - void replaceDomainMapAndImporter(const Teuchos::RCP > &newDomainMap, Teuchos::RCP > &newImporter) {} - const RCP > getComm() const { return Teuchos::null; } - const RCP > getRowMap() const { return Teuchos::null; } - const RCP > getColMap() const { return Teuchos::null; } - RCP > getCrsGraph() const { return Teuchos::null; } - global_size_t getGlobalNumRows() const { return 0; } - global_size_t getGlobalNumCols() const { return 0; } - size_t getLocalNumRows() const { return 0; } - size_t getLocalNumCols() const { return 0; } - global_size_t getGlobalNumEntries() const { return 0; } - size_t getLocalNumEntries() const { return 0; } - size_t getNumEntriesInLocalRow(LocalOrdinal localRow) const { return 0; } - size_t getNumEntriesInGlobalRow(GlobalOrdinal globalRow) const { return 0; } - size_t getGlobalMaxNumRowEntries() const { return 0; } - size_t getLocalMaxNumRowEntries() const { return 0; } - bool isLocallyIndexed() const { return false; } - bool isGloballyIndexed() const { return false; } - bool isFillComplete() const { return false; } - bool isFillActive() const { return false; } - typename ScalarTraits::magnitudeType getFrobeniusNorm() const { return ScalarTraits::magnitude(ScalarTraits::zero()); } - bool supportsRowViews() const { return false; } - void getLocalRowCopy(LocalOrdinal LocalRow, const ArrayView &Indices, const ArrayView &Values, size_t &NumEntries) const {} - void getGlobalRowCopy(GlobalOrdinal GlobalRow, const ArrayView &Indices, const ArrayView &Values, size_t &NumEntries) const {} - void getGlobalRowView(GlobalOrdinal GlobalRow, ArrayView &indices, ArrayView &values) const {} - void getLocalRowView(LocalOrdinal LocalRow, ArrayView &indices, ArrayView &values) const {} - void getLocalDiagCopy(Vector &diag) const {} - void getLocalDiagOffsets(Teuchos::ArrayRCP &offsets) const {} - void getLocalDiagCopy(Vector &diag, const Teuchos::ArrayView &offsets) const {} - void getLocalDiagCopy(Vector &diag, const Kokkos::View &offsets) const {} - void replaceDiag(const Vector &diag) {} - void leftScale(const Vector &x){}; - void rightScale(const Vector &x){}; - - void apply(const MultiVector &X, MultiVector &Y, Teuchos::ETransp mode = Teuchos::NO_TRANS, Scalar alpha = ScalarTraits::one(), Scalar beta = ScalarTraits::zero()) const {} - void apply(const MultiVector &X, MultiVector &Y, Teuchos::ETransp mode, Scalar alpha, Scalar beta, bool sumInterfaceValues, const RCP > ®ionInterfaceImporter, const Teuchos::ArrayRCP ®ionInterfaceLIDs) const {} - const RCP > getDomainMap() const { return Teuchos::null; } - const RCP > getRangeMap() const { return Teuchos::null; } - - std::string description() const { return std::string(""); } - void describe(Teuchos::FancyOStream &out, const Teuchos::EVerbosityLevel verbLevel = Teuchos::Describable::verbLevel_default) const {} - void setObjectLabel(const std::string &objectLabel) {} - - EpetraCrsMatrixT(const EpetraCrsMatrixT &matrix) { - TEUCHOS_TEST_FOR_EXCEPTION(true, Xpetra::Exceptions::RuntimeError, - "Xpetra::EpetraCrsMatrix only available for GO=int or GO=long long with EpetraNode (Serial or OpenMP depending on configuration)"); - } - - Teuchos::RCP > getMap() const { return Teuchos::null; } - void doImport(const DistObject &source, const Import &importer, CombineMode CM) {} - void doExport(const DistObject &dest, const Import &importer, CombineMode CM) {} - void doImport(const DistObject &source, const Export &exporter, CombineMode CM) {} - void doExport(const DistObject &dest, const Export &exporter, CombineMode CM) {} - void removeEmptyProcessesInPlace(const Teuchos::RCP > &newMap) {} - - bool hasMatrix() const { return false; } - EpetraCrsMatrixT(const Teuchos::RCP &mtx) { - TEUCHOS_TEST_FOR_EXCEPTION(true, Xpetra::Exceptions::RuntimeError, - "Xpetra::EpetraCrsMatrix only available for GO=int or GO=long long with EpetraNode (Serial or OpenMP depending on configuration)"); - } - RCP getEpetra_CrsMatrix() const { return Teuchos::null; } - RCP getEpetra_CrsMatrixNonConst() const { return Teuchos::null; } // TODO: remove -#ifdef HAVE_XPETRA_TPETRA - local_matrix_type getLocalMatrixDevice() const { - TEUCHOS_TEST_FOR_EXCEPTION(true, Xpetra::Exceptions::RuntimeError, - "Xpetra::EpetraCrsMatrix only available for GO=int or GO=long long with EpetraNode (Serial or OpenMP depending on configuration)"); - } - typename local_matrix_type::HostMirror getLocalMatrixHost() const { - TEUCHOS_TEST_FOR_EXCEPTION(true, Xpetra::Exceptions::RuntimeError, - "Xpetra::EpetraCrsMatrix only available for GO=int or GO=long long with EpetraNode (Serial or OpenMP depending on configuration)"); - } - - void setAllValues(const typename local_matrix_type::row_map_type &ptr, - const typename local_matrix_type::StaticCrsGraphType::entries_type::non_const_type &ind, - const typename local_matrix_type::values_type &val) { - TEUCHOS_TEST_FOR_EXCEPTION(true, Xpetra::Exceptions::RuntimeError, - "Xpetra::EpetraCrsMatrix only available for GO=int or GO=long long with EpetraNode (Serial or OpenMP depending on configuration)"); - } - - LocalOrdinal GetStorageBlockSize() const { return 1; } - -#else -#ifdef __GNUC__ -#warning "Xpetra Kokkos interface for CrsMatrix is enabled (HAVE_XPETRA_KOKKOS_REFACTOR) but Tpetra is disabled. The Kokkos interface needs Tpetra to be enabled, too." -#endif -#endif - - void residual(const MultiVector &X, - const MultiVector &B, - MultiVector &R) const { - Scalar one = Teuchos::ScalarTraits::one(), negone = -one; - apply(X, R); - R.update(one, B, negone); - } - -}; // EpetraCrsMatrixT class (specialization on GO=long, empty stub implementation) - -#ifndef XPETRA_EPETRA_NO_32BIT_GLOBAL_INDICES -template <> -class EpetraCrsMatrixT - : public CrsMatrix { - typedef int GlobalOrdinal; - typedef EpetraNode Node; - typedef CrsMatrix::scalar_type Scalar; - typedef CrsMatrix::local_ordinal_type LocalOrdinal; - - // The following typedefs are used by the Kokkos interface -#ifdef HAVE_XPETRA_TPETRA - typedef typename Xpetra::CrsMatrix::local_matrix_type local_matrix_type; - typedef typename Xpetra::CrsMatrix::node_type node_type; -#endif - - public: - //! @name Constructor/Destructor Methods - //@{ - - //! Constructor for empty DynamicProfile matrix (no space is preallocated). - EpetraCrsMatrixT(const Teuchos::RCP > &rowMap) - : mtx_(Teuchos::rcp(new Epetra_CrsMatrix(Copy, toEpetra(rowMap), 0, false))) - , isFillResumed_(false) {} - - //! Constructor specifying fixed number of entries for each row. - EpetraCrsMatrixT(const Teuchos::RCP > &rowMap, size_t maxNumEntriesPerRow, const Teuchos::RCP & /* plist */ = Teuchos::null) - : mtx_(Teuchos::rcp(new Epetra_CrsMatrix(Copy, toEpetra(rowMap), maxNumEntriesPerRow, true))) - , isFillResumed_(false) {} - - //! Constructor specifying (possibly different) number of entries in each row. - EpetraCrsMatrixT(const Teuchos::RCP > &rowMap, const ArrayRCP &NumEntriesPerRowToAlloc, const Teuchos::RCP & /* plist */ = Teuchos::null) - : isFillResumed_(false) { - Teuchos::Array numEntriesPerRowToAlloc(NumEntriesPerRowToAlloc.begin(), NumEntriesPerRowToAlloc.end()); // convert array of "size_t" to array of "int" - mtx_ = Teuchos::rcp(new Epetra_CrsMatrix(Copy, toEpetra(rowMap), numEntriesPerRowToAlloc.getRawPtr(), true)); - } - - //! Constructor specifying column Map and fixed number of entries for each row. - EpetraCrsMatrixT(const Teuchos::RCP > &rowMap, const Teuchos::RCP > &colMap, size_t maxNumEntriesPerRow, const Teuchos::RCP & /* plist */ = Teuchos::null) - : mtx_(Teuchos::rcp(new Epetra_CrsMatrix(Copy, toEpetra(rowMap), toEpetra(colMap), maxNumEntriesPerRow, true))) - , isFillResumed_(false) {} - - //! Constructor specifying row and column Maps and number of entries in each row. - EpetraCrsMatrixT(const Teuchos::RCP > &rowMap, const Teuchos::RCP > &colMap, const ArrayRCP &NumEntriesPerRowToAlloc, const Teuchos::RCP & /* plist */ = Teuchos::null) - : isFillResumed_(false) { - Teuchos::Array numEntriesPerRowToAlloc(NumEntriesPerRowToAlloc.begin(), NumEntriesPerRowToAlloc.end()); // convert array of "size_t" to array of "int" - mtx_ = Teuchos::rcp(new Epetra_CrsMatrix(Copy, toEpetra(rowMap), toEpetra(colMap), numEntriesPerRowToAlloc.getRawPtr(), true)); - } - - //! Constructor specifying a previously constructed graph. - EpetraCrsMatrixT(const Teuchos::RCP > &graph, const Teuchos::RCP & /* plist */ = Teuchos::null) - : mtx_(Teuchos::rcp(new Epetra_CrsMatrix(Copy, toEpetra(graph)))) - , isFillResumed_(false) {} - - //! Constructor for a fused import - EpetraCrsMatrixT(const Teuchos::RCP > &sourceMatrix, - const Import &importer, - const Teuchos::RCP > &domainMap = Teuchos::null, - const Teuchos::RCP > &rangeMap = Teuchos::null, - const Teuchos::RCP ¶ms = Teuchos::null) - : isFillResumed_(false) { - XPETRA_DYNAMIC_CAST(const EpetraCrsMatrixT, *sourceMatrix, tSourceMatrix, "Xpetra::EpetraCrsMatrixT constructor only accepts Xpetra::EpetraCrsMatrixT as an input argument."); - XPETRA_DYNAMIC_CAST(const EpetraImportT, importer, tImporter, "Xpetra::EpetraCrsMatrixT constructor only accepts Xpetra::EpetraImportT as an input argument."); - - const Epetra_Map *myDomainMap = (domainMap != Teuchos::null) ? &toEpetra(domainMap) : 0; - const Epetra_Map *myRangeMap = (rangeMap != Teuchos::null) ? &toEpetra(rangeMap) : 0; - - // Follows the Tpetra parameters - bool restrictComm = false; - if (!params.is_null()) restrictComm = params->get("Restrict Communicator", restrictComm); - mtx_ = Teuchos::rcp(new Epetra_CrsMatrix(*tSourceMatrix.getEpetra_CrsMatrix(), *tImporter.getEpetra_Import(), myDomainMap, myRangeMap, restrictComm)); - if (restrictComm && mtx_->NumMyRows() == 0) - mtx_ = Teuchos::null; - } - - //! Constructor for a fused export - EpetraCrsMatrixT(const Teuchos::RCP > &sourceMatrix, - const Export &exporter, - const Teuchos::RCP > &domainMap = Teuchos::null, - const Teuchos::RCP > &rangeMap = Teuchos::null, - const Teuchos::RCP ¶ms = Teuchos::null) - : isFillResumed_(false) { - XPETRA_DYNAMIC_CAST(const EpetraCrsMatrixT, *sourceMatrix, tSourceMatrix, "Xpetra::EpetraCrsMatrixT constructor only accepts Xpetra::EpetraCrsMatrixT as an input argument."); - XPETRA_DYNAMIC_CAST(const EpetraExportT, exporter, tExporter, "Xpetra::EpetraCrsMatrixT constructor only accepts Xpetra::EpetraExportT as an input argument."); - - const Epetra_Map *myDomainMap = (domainMap != Teuchos::null) ? &toEpetra(domainMap) : 0; - const Epetra_Map *myRangeMap = (rangeMap != Teuchos::null) ? &toEpetra(rangeMap) : 0; - - // Follows the Tpetra parameters - bool restrictComm = false; - if (!params.is_null()) restrictComm = params->get("Restrict Communicator", restrictComm); - - mtx_ = Teuchos::rcp(new Epetra_CrsMatrix(*tSourceMatrix.getEpetra_CrsMatrix(), *tExporter.getEpetra_Export(), myDomainMap, myRangeMap, restrictComm)); - } - - EpetraCrsMatrixT(const Teuchos::RCP > &sourceMatrix, - const Import &RowImporter, - const Teuchos::RCP > DomainImporter, - const Teuchos::RCP > &domainMap, - const Teuchos::RCP > &rangeMap, - const Teuchos::RCP ¶ms) - : isFillResumed_(false) { - XPETRA_DYNAMIC_CAST(const EpetraCrsMatrixT, *sourceMatrix, tSourceMatrix, "Xpetra::EpetraCrsMatrixT constructor only accepts Xpetra::EpetraCrsMatrixT as an input argument."); - XPETRA_DYNAMIC_CAST(const EpetraImportT, RowImporter, tImporter, "Xpetra::EpetraCrsMatrixT constructor only accepts Xpetra::EpetraImportT as an input argument."); - XPETRA_RCP_DYNAMIC_CAST(const EpetraImportT, DomainImporter, tdImporter, "Xpetra::EpetraCrsMatrixT constructor only accepts Xpetra::EpetraImportT as an input argument."); - - const Epetra_Map *myDomainMap = (domainMap != Teuchos::null) ? &toEpetra(domainMap) : 0; - const Epetra_Map *myRangeMap = (rangeMap != Teuchos::null) ? &toEpetra(rangeMap) : 0; - - // Follows the Tpetra parameters - bool restrictComm = false; - if (!params.is_null()) restrictComm = params->get("Restrict Communicator", restrictComm); - mtx_ = Teuchos::rcp(new Epetra_CrsMatrix(*tSourceMatrix.getEpetra_CrsMatrix(), *tImporter.getEpetra_Import(), tdImporter->getEpetra_Import().get(), myDomainMap, myRangeMap, restrictComm)); - if (restrictComm && mtx_->NumMyRows() == 0) - mtx_ = Teuchos::null; - } - - EpetraCrsMatrixT(const Teuchos::RCP > &sourceMatrix, - const Export &RowExporter, - const Teuchos::RCP > DomainExporter, - const Teuchos::RCP > &domainMap, - const Teuchos::RCP > &rangeMap, - const Teuchos::RCP ¶ms) - : isFillResumed_(false) { - XPETRA_DYNAMIC_CAST(const EpetraCrsMatrixT, *sourceMatrix, tSourceMatrix, "Xpetra::EpetraCrsMatrixT constructor only accepts Xpetra::EpetraCrsMatrixT as an input argument."); - XPETRA_DYNAMIC_CAST(const EpetraExportT, RowExporter, tExporter, "Xpetra::EpetraCrsMatrixT constructor only accepts Xpetra::EpetraExportT as an input argument."); - XPETRA_RCP_DYNAMIC_CAST(const EpetraExportT, DomainExporter, tdExporter, "Xpetra::EpetraCrsMatrixT constructor only accepts Xpetra::EpetraExportT as an input argument."); - - const Epetra_Map *myDomainMap = (domainMap != Teuchos::null) ? &toEpetra(domainMap) : 0; - const Epetra_Map *myRangeMap = (rangeMap != Teuchos::null) ? &toEpetra(rangeMap) : 0; - - // Follows the Tpetra parameters - bool restrictComm = false; - if (!params.is_null()) restrictComm = params->get("Restrict Communicator", restrictComm); - - mtx_ = Teuchos::rcp(new Epetra_CrsMatrix(*tSourceMatrix.getEpetra_CrsMatrix(), *tExporter.getEpetra_Export(), tdExporter->getEpetra_Export().get(), myDomainMap, myRangeMap, restrictComm)); - } - -#ifdef HAVE_XPETRA_TPETRA - // NOTE: TPETRA means we can use C++11 here - - /// \brief Constructor specifying column Map and a local matrix, - /// which the resulting CrsMatrix views. - /// - /// Unlike most other CrsMatrix constructors, successful - /// completion of this constructor will result in a fill-complete - /// matrix. - /// - /// \param rowMap [in] Distribution of rows of the matrix. - /// - /// \param colMap [in] Distribution of columns of the matrix. - /// - /// \param lclMatrix [in] A local CrsMatrix containing all local - /// matrix values as well as a local graph. The graph's local - /// row indices must come from the specified row Map, and its - /// local column indices must come from the specified column - /// Map. - /// - /// \param params [in/out] Optional list of parameters. If not - /// null, any missing parameters will be filled in with their - /// default values. - EpetraCrsMatrixT( - const Teuchos::RCP > &rowMap, - const Teuchos::RCP > &colMap, - const local_matrix_type &lclMatrix, - const Teuchos::RCP ¶ms = null) - : EpetraCrsMatrixT(lclMatrix, rowMap, colMap, Teuchos::null, Teuchos::null, params) {} - - EpetraCrsMatrixT( - const local_matrix_type &lclMatrix, - const Teuchos::RCP > &rowMap, - const Teuchos::RCP > &colMap, - const Teuchos::RCP > &domainMap = Teuchos::null, - const Teuchos::RCP > &rangeMap = Teuchos::null, - const Teuchos::RCP ¶ms = null) { - // local typedefs from local_matrix_type - // typedef typename local_matrix_type::size_type size_type; - typedef typename local_matrix_type::value_type value_type; - typedef typename local_matrix_type::ordinal_type ordinal_type; - - // The number of rows in the sparse matrix. - ordinal_type lclNumRows = lclMatrix.numRows(); - ordinal_type lclNumCols = lclMatrix.numCols(); // do we need this? - - // plausibility checks - TEUCHOS_TEST_FOR_EXCEPTION(lclNumRows != Teuchos::as(rowMap->getLocalNumElements()), Xpetra::Exceptions::RuntimeError, - "Xpetra::EpetraCrsMatrixT: number of rows in local matrix and number of local entries in row map do not match!"); - TEUCHOS_TEST_FOR_EXCEPTION(lclNumCols != Teuchos::as(colMap->getLocalNumElements()), Xpetra::Exceptions::RuntimeError, - "Xpetra::EpetraCrsMatrixT: number of columns in local matrix and number of local entries in column map do not match!"); - - Teuchos::ArrayRCP NumEntriesPerRowToAlloc(lclNumRows); - for (ordinal_type r = 0; r < lclNumRows; ++r) { - // extract data from current row r - auto rowview = lclMatrix.row(r); - NumEntriesPerRowToAlloc[r] = rowview.length; - } - - // setup matrix - isFillResumed_ = false; - Teuchos::Array numEntriesPerRowToAlloc(NumEntriesPerRowToAlloc.begin(), NumEntriesPerRowToAlloc.end()); // convert array of "size_t" to array of "int" - mtx_ = Teuchos::rcp(new Epetra_CrsMatrix(Copy, toEpetra(rowMap), toEpetra(colMap), numEntriesPerRowToAlloc.getRawPtr(), true)); - - // loop over all rows and colums of local matrix and fill matrix - for (ordinal_type r = 0; r < lclNumRows; ++r) { - // extract data from current row r - auto rowview = lclMatrix.row(r); - - // arrays for current row data - Teuchos::ArrayRCP indout(rowview.length, Teuchos::ScalarTraits::zero()); - Teuchos::ArrayRCP valout(rowview.length, Teuchos::ScalarTraits::zero()); - - for (ordinal_type c = 0; c < rowview.length; c++) { - value_type value = rowview.value(c); - ordinal_type colidx = rowview.colidx(c); - - TEUCHOS_TEST_FOR_EXCEPTION(colMap->isNodeLocalElement(colidx) == false, Xpetra::Exceptions::RuntimeError, - "Xpetra::EpetraCrsMatrixT: local matrix contains column elements which are not in the provided column map!"); - - indout[c] = colidx; - valout[c] = value; - } - insertLocalValues(r, indout.view(0, indout.size()), valout.view(0, valout.size())); - } - - // call fill complete - if (!domainMap.is_null() && !rangeMap.is_null()) - this->fillComplete(domainMap, rowMap, params); - else - this->fillComplete(rowMap, rowMap, params); - } -#endif - - //! Destructor. - virtual ~EpetraCrsMatrixT() {} - - //@} - - //! @name Insertion/Removal Methods - //@{ - - //! Insert matrix entries, using global IDs. - void insertGlobalValues(GlobalOrdinal globalRow, const ArrayView &cols, const ArrayView &vals) { - XPETRA_MONITOR("EpetraCrsMatrixT::insertGlobalValues"); - XPETRA_ERR_CHECK(mtx_->InsertGlobalValues(globalRow, vals.size(), vals.getRawPtr(), cols.getRawPtr())); - } - - //! Insert matrix entries, using local IDs. - void insertLocalValues(LocalOrdinal localRow, const ArrayView &cols, const ArrayView &vals) { - XPETRA_MONITOR("EpetraCrsMatrixT::insertLocalValues"); - XPETRA_ERR_CHECK(mtx_->InsertMyValues(localRow, vals.size(), vals.getRawPtr(), cols.getRawPtr())); - } - - //! Replace matrix entries, using global IDs. - void replaceGlobalValues(GlobalOrdinal globalRow, const ArrayView &indices, const ArrayView &values) { - XPETRA_MONITOR("EpetraCrsMatrixT::replaceGlobalValues"); - - { - const std::string tfecfFuncName("replaceGlobalValues"); - TEUCHOS_TEST_FOR_EXCEPTION_CLASS_FUNC(!isFillActive(), std::runtime_error, - ": Fill must be active in order to call this method. If you have already " - "called fillComplete(), you need to call resumeFill() before you can " - "replace values."); - - TEUCHOS_TEST_FOR_EXCEPTION_CLASS_FUNC(values.size() != indices.size(), - std::runtime_error, ": values.size() must equal indices.size()."); - } - - XPETRA_ERR_CHECK(mtx_->ReplaceGlobalValues(globalRow, indices.size(), values.getRawPtr(), indices.getRawPtr())); - } - - //! Replace matrix entries, using local IDs. - void replaceLocalValues(LocalOrdinal localRow, const ArrayView &indices, const ArrayView &values) { - XPETRA_MONITOR("EpetraCrsMatrixT::replaceLocalValues"); - - { - const std::string tfecfFuncName("replaceLocalValues"); - TEUCHOS_TEST_FOR_EXCEPTION_CLASS_FUNC(!isFillActive(), std::runtime_error, - ": Fill must be active in order to call this method. If you have already " - "called fillComplete(), you need to call resumeFill() before you can " - "replace values."); - - TEUCHOS_TEST_FOR_EXCEPTION_CLASS_FUNC(values.size() != indices.size(), - std::runtime_error, ": values.size() must equal indices.size()."); - } - - XPETRA_ERR_CHECK(mtx_->ReplaceMyValues(localRow, indices.size(), values.getRawPtr(), indices.getRawPtr())); - } - - //! Set all matrix entries equal to scalarThis. - void setAllToScalar(const Scalar &alpha) { - XPETRA_MONITOR("EpetraCrsMatrixT::setAllToScalar"); - mtx_->PutScalar(alpha); - } - - //! Scale the current values of a matrix, this = alpha*this. - void scale(const Scalar &alpha) { - XPETRA_MONITOR("EpetraCrsMatrixT::scale"); - mtx_->Scale(alpha); - } - - //! Allocates and returns ArrayRCPs of the Crs arrays --- This is an Xpetra-only routine. - //** \warning This is an expert-only routine and should not be called from user code. */ - void allocateAllValues(size_t numNonZeros, ArrayRCP &rowptr, ArrayRCP &colind, ArrayRCP &values) { - XPETRA_MONITOR("EpetraCrsMatrixT::allocateAllValues"); - - // Row offsets - // Unfortunately, we cannot do this in the same manner as column indices - // and values (see below). The problem is that Tpetra insists on using - // size_t, and Epetra uses int internally. So we only resize here, and - // will need to copy in setAllValues - rowptr.resize(getLocalNumRows() + 1); - - int lowerOffset = 0; - bool ownMemory = false; - - // Column indices - // Extract, resize, set colind - Epetra_IntSerialDenseVector &myColind = mtx_->ExpertExtractIndices(); - myColind.Resize(numNonZeros); - colind = Teuchos::arcp(myColind.Values(), lowerOffset, numNonZeros, ownMemory); - - // Values - // Extract, reallocate, set values - double *&myValues = mtx_->ExpertExtractValues(); - delete[] myValues; - myValues = new double[numNonZeros]; - values = Teuchos::arcp(myValues, lowerOffset, numNonZeros, ownMemory); - } - - //! Sets the 1D pointer arrays of the graph. - void setAllValues(const ArrayRCP &rowptr, const ArrayRCP &colind, const ArrayRCP &values) { - XPETRA_MONITOR("EpetraCrsMatrixT::setAllValues"); - - // Check sizes - TEUCHOS_TEST_FOR_EXCEPTION(Teuchos::as(rowptr.size()) != getLocalNumRows() + 1, Xpetra::Exceptions::RuntimeError, - "An exception is thrown to let you know that the size of your rowptr array is incorrect."); - TEUCHOS_TEST_FOR_EXCEPTION(values.size() != colind.size(), Xpetra::Exceptions::RuntimeError, - "An exception is thrown to let you know that you mismatched your pointers."); - - // Check pointers - if (values.size() > 0) { - TEUCHOS_TEST_FOR_EXCEPTION(colind.getRawPtr() != mtx_->ExpertExtractIndices().Values(), Xpetra::Exceptions::RuntimeError, - "An exception is thrown to let you know that you mismatched your pointers."); - TEUCHOS_TEST_FOR_EXCEPTION(values.getRawPtr() != mtx_->ExpertExtractValues(), Xpetra::Exceptions::RuntimeError, - "An exception is thrown to let you know that you mismatched your pointers."); - } - - // We have to make a copy here, it is unavoidable - // See comments in allocateAllValues - const size_t N = getLocalNumRows(); - - Epetra_IntSerialDenseVector &myRowptr = mtx_->ExpertExtractIndexOffset(); - myRowptr.Resize(N + 1); - for (size_t i = 0; i < N + 1; i++) - myRowptr[i] = Teuchos::as(rowptr[i]); - } - - //! Gets the 1D pointer arrays of the graph. - void getAllValues(ArrayRCP &rowptr, ArrayRCP &colind, ArrayRCP &values) const { - XPETRA_MONITOR("EpetraCrsMatrixT::getAllValues"); - - int lowerOffset = 0; - bool ownMemory = false; - - const size_t n = getLocalNumRows(); - const size_t nnz = getLocalNumEntries(); - - // Row offsets - // We have to make a copy here, it is unavoidable (see comments in allocateAllValues) - Epetra_IntSerialDenseVector &myRowptr = mtx_->ExpertExtractIndexOffset(); - rowptr.resize(n + 1); - for (size_t i = 0; i < n + 1; i++) - (*const_cast(&rowptr[i])) = Teuchos::as(myRowptr[i]); - - // Column indices - colind = Teuchos::arcp(mtx_->ExpertExtractIndices().Values(), lowerOffset, nnz, ownMemory); - - // Values - values = Teuchos::arcp(mtx_->ExpertExtractValues(), lowerOffset, nnz, ownMemory); - } - - //! Gets the 1D pointer arrays of the graph. - void getAllValues(ArrayRCP &values) { - XPETRA_MONITOR("EpetraCrsMatrixT::getAllValues"); - - int lowerOffset = 0; - bool ownMemory = false; - - const size_t nnz = getLocalNumEntries(); - // Values - values = Teuchos::arcp(mtx_->ExpertExtractValues(), lowerOffset, nnz, ownMemory); - } - - // Epetra always has global constants - bool haveGlobalConstants() const { return true; } - //! Expert static fill complete - //** \warning This is an expert-only routine and should not be called from user code. */ - void expertStaticFillComplete(const RCP > &domainMap, - const RCP > &rangeMap, - const RCP > &importer = Teuchos::null, - const RCP > &exporter = Teuchos::null, - const RCP & /* params */ = Teuchos::null) { - XPETRA_MONITOR("EpetraCrsMatrixT::expertStaticFillComplete"); - - // For Epetra matrices, resumeFill() is a fictive operation. - isFillResumed_ = false; - - int rv = 0; - const Epetra_Import *myimport = 0; - const Epetra_Export *myexport = 0; - - if (!importer.is_null()) { - XPETRA_DYNAMIC_CAST(const EpetraImportT, *importer, eImporter, "Xpetra::EpetraCrsMatrixT::expertStaticFillComplete only accepts Xpetra::EpetraImportT."); - myimport = eImporter.getEpetra_Import().getRawPtr(); - } - if (!exporter.is_null()) { - XPETRA_DYNAMIC_CAST(const EpetraExportT, *exporter, eExporter, "Xpetra::EpetraCrsMatrixT::expertStaticFillComplete only accepts Xpetra::EpetraImportT."); - myexport = eExporter.getEpetra_Export().getRawPtr(); - } - - rv = mtx_->ExpertStaticFillComplete(toEpetra(domainMap), toEpetra(rangeMap), myimport, myexport); - - TEUCHOS_TEST_FOR_EXCEPTION(rv != 0, std::runtime_error, "Xpetra::EpetraCrsMatrixT::expertStaticFillComplete FAILED!"); - } - //@} - - //! @name Transformational Methods - //@{ - - //! - void resumeFill(const RCP & /* params */ = Teuchos::null) { - XPETRA_MONITOR("EpetraCrsMatrixT::resumeFill"); - - // According to Tpetra documentation, resumeFill() may be called repeatedly. - isFillResumed_ = true; - } - - //! Signal that data entry is complete, specifying domain and range maps. - void fillComplete(const RCP > &domainMap, const RCP > &rangeMap, const RCP ¶ms = Teuchos::null) { - XPETRA_MONITOR("EpetraCrsMatrixT::fillComplete"); - - // For Epetra matrices, resumeFill() is a fictive operation. - isFillResumed_ = false; - - bool doOptimizeStorage = true; - if (params != null && params->get("Optimize Storage", true) == false) doOptimizeStorage = false; - mtx_->FillComplete(toEpetra(domainMap), toEpetra(rangeMap), doOptimizeStorage); - } - - //! Signal that data entry is complete. - void fillComplete(const RCP ¶ms = Teuchos::null) { - XPETRA_MONITOR("EpetraCrsMatrixT::fillComplete"); - - // For Epetra matrices, resumeFill() is a fictive operation. There is no need for a fillComplete after some resumeFill() operations. - if (isFillResumed_ == true) { - isFillResumed_ = false; - return; - } - - bool doOptimizeStorage = true; - if (params != null && params->get("Optimize Storage", true) == false) doOptimizeStorage = false; - mtx_->FillComplete(doOptimizeStorage); - } - - //! Replaces the current domainMap and importer with the user-specified objects. - void replaceDomainMapAndImporter(const Teuchos::RCP > &newDomainMap, Teuchos::RCP > &newImporter) { - XPETRA_MONITOR("EpetraCrsMatrixT::replaceDomainMapAndImporter"); - XPETRA_DYNAMIC_CAST(const EpetraImportT, *newImporter, eImporter, "Xpetra::EpetraCrsMatrixT::replaceDomainMapAndImporter only accepts Xpetra::EpetraImportT."); - - const RCP &myImport = eImporter.getEpetra_Import(); - int rv = 0; - if (myImport == Teuchos::null) - rv = mtx_->ReplaceDomainMapAndImporter(toEpetra(newDomainMap), 0); - else - rv = mtx_->ReplaceDomainMapAndImporter(toEpetra(newDomainMap), &*myImport); - TEUCHOS_TEST_FOR_EXCEPTION(rv != 0, std::runtime_error, "Xpetra::EpetraCrsMatrixT::replaceDomainMapAndImporter FAILED!"); - } - - //@} - - //! @name Methods implementing RowMatrix - //@{ - - //! Returns the communicator. - const RCP > getComm() const { - XPETRA_MONITOR("EpetraCrsMatrixT::getComm"); - return toXpetra(mtx_->Comm()); - } - - //! Returns the Map that describes the row distribution in this matrix. - const RCP > getRowMap() const { - XPETRA_MONITOR("EpetraCrsMatrixT::getRowMap"); - return toXpetra(mtx_->RowMap()); - } - - //! Returns the Map that describes the column distribution in this matrix. - const RCP > getColMap() const { - XPETRA_MONITOR("EpetraCrsMatrixT::getColMap"); - return toXpetra(mtx_->ColMap()); - } - - //! Returns the CrsGraph associated with this matrix. - RCP > getCrsGraph() const { - XPETRA_MONITOR("EpetraCrsMatrixT::getCrsGraph"); - return toXpetra(mtx_->Graph()); - } - - //! Number of global elements in the row map of this matrix. - global_size_t getGlobalNumRows() const { - XPETRA_MONITOR("EpetraCrsMatrixT::getGlobalNumRows"); - return mtx_->NumGlobalRows64(); - } - - //! Number of global columns in the matrix. - global_size_t getGlobalNumCols() const { - XPETRA_MONITOR("EpetraCrsMatrixT::getGlobalNumCols"); - return mtx_->NumGlobalCols64(); - } - - //! Returns the number of matrix rows owned on the calling node. - size_t getLocalNumRows() const { - XPETRA_MONITOR("EpetraCrsMatrixT::getLocalNumRows"); - return mtx_->NumMyRows(); - } - - //! Returns the number of columns connected to the locally owned rows of this matrix. - size_t getLocalNumCols() const { - XPETRA_MONITOR("EpetraCrsMatrixT::getLocalNumCols"); - return mtx_->NumMyCols(); - } - - //! Returns the global number of entries in this matrix. - global_size_t getGlobalNumEntries() const { - XPETRA_MONITOR("EpetraCrsMatrixT::getGlobalNumEntries"); - return mtx_->NumGlobalNonzeros64(); - } - - //! Returns the local number of entries in this matrix. - size_t getLocalNumEntries() const { - XPETRA_MONITOR("EpetraCrsMatrixT::getLocalNumEntries"); - return mtx_->NumMyNonzeros(); - } - - //! Returns the current number of entries on this node in the specified local row. - size_t getNumEntriesInLocalRow(LocalOrdinal localRow) const { - XPETRA_MONITOR("EpetraCrsMatrixT::getNumEntriesInLocalRow"); - return mtx_->NumMyEntries(localRow); - } - - //! Returns the current number of entries on this node in the specified (locally owned) global row. - size_t getNumEntriesInGlobalRow(GlobalOrdinal globalRow) const { - XPETRA_MONITOR("EpetraCrsMatrixT::getNumEntriesInGlobalRow"); - return mtx_->NumGlobalEntries(globalRow); - } - - //! Returns the maximum number of entries across all rows/columns on all nodes. - size_t getGlobalMaxNumRowEntries() const { - XPETRA_MONITOR("EpetraCrsMatrixT::getGlobalMaxNumRowEntries"); - return mtx_->GlobalMaxNumEntries(); - } - - //! Returns the maximum number of entries across all rows/columns on this node. - size_t getLocalMaxNumRowEntries() const { - XPETRA_MONITOR("EpetraCrsMatrixT::getLocalMaxNumRowEntries"); - return mtx_->MaxNumEntries(); - } - - //! If matrix indices are in the local range, this function returns true. Otherwise, this function returns false. - bool isLocallyIndexed() const { - XPETRA_MONITOR("EpetraCrsMatrixT::isLocallyIndexed"); - return mtx_->IndicesAreLocal(); - } - - //! If matrix indices are in the global range, this function returns true. Otherwise, this function returns false. - bool isGloballyIndexed() const { - XPETRA_MONITOR("EpetraCrsMatrixT::isGloballyIndexed"); - return mtx_->IndicesAreGlobal(); - } - - //! Returns true if the matrix is in compute mode, i.e. if fillComplete() has been called. - bool isFillComplete() const { - XPETRA_MONITOR("EpetraCrsMatrixT::isFillComplete"); - if (isFillResumed_) - return false; - else - return mtx_->Filled(); - } - - //! Returns true if the matrix is in edit mode. - bool isFillActive() const { - XPETRA_MONITOR("EpetraCrsMatrixT::isFillActive"); - return !isFillComplete(); - } - - //! Returns the Frobenius norm of the matrix. - ScalarTraits::magnitudeType getFrobeniusNorm() const { - XPETRA_MONITOR("EpetraCrsMatrixT::getFrobeniusNorm"); - return mtx_->NormFrobenius(); - } - - //! Returns true if getLocalRowView() and getGlobalRowView() are valid for this class. - bool supportsRowViews() const { - XPETRA_MONITOR("EpetraCrsMatrixT::supportsRowViews"); - return true; - } - - //! Extract a list of entries in a specified local row of the matrix. Put into storage allocated by calling routine. - void getLocalRowCopy(LocalOrdinal LocalRow, const ArrayView &Indices, const ArrayView &Values, size_t &NumEntries) const { - XPETRA_MONITOR("EpetraCrsMatrixT::getLocalRowCopy"); - - int numEntries = -1; - XPETRA_ERR_CHECK(mtx_->ExtractMyRowCopy(LocalRow, Indices.size(), numEntries, Values.getRawPtr(), Indices.getRawPtr())); - NumEntries = numEntries; - } - - //! Extract a list of entries in a specified global row of this matrix. Put into pre-allocated storage. - void getGlobalRowCopy(GlobalOrdinal GlobalRow, const ArrayView &Indices, const ArrayView &Values, size_t &NumEntries) const { - XPETRA_MONITOR("EpetraCrsMatrixT::getGlobalRowCopy"); - - int numEntries = -1; - XPETRA_ERR_CHECK(mtx_->ExtractGlobalRowCopy(GlobalRow, Indices.size(), numEntries, Values.getRawPtr(), Indices.getRawPtr())); - NumEntries = numEntries; - } - - //! Extract a const, non-persisting view of global indices in a specified row of the matrix. - void getGlobalRowView(GlobalOrdinal GlobalRow, ArrayView &indices, ArrayView &values) const { - XPETRA_MONITOR("EpetraCrsMatrixT::getGlobalRowView"); - - int numEntries; - double *eValues; - GlobalOrdinal *eIndices; - - XPETRA_ERR_CHECK(mtx_->ExtractGlobalRowView(GlobalRow, numEntries, eValues, eIndices)); - if (numEntries == 0) { - eValues = NULL; - eIndices = NULL; - } // Cf. TEUCHOS_TEST_FOR_EXCEPT( p == 0 && size_in != 0 ) in Teuchos ArrayView constructor. - - indices = ArrayView(eIndices, numEntries); - values = ArrayView(eValues, numEntries); - } - - //! Extract a const, non-persisting view of local indices in a specified row of the matrix. - void getLocalRowView(LocalOrdinal LocalRow, ArrayView &indices, ArrayView &values) const { - XPETRA_MONITOR("EpetraCrsMatrixT::getLocalRowView"); - - int numEntries; - double *eValues; - int *eIndices; - - XPETRA_ERR_CHECK(mtx_->ExtractMyRowView(LocalRow, numEntries, eValues, eIndices)); - if (numEntries == 0) { - eValues = NULL; - eIndices = NULL; - } // Cf. TEUCHOS_TEST_FOR_EXCEPT( p == 0 && size_in != 0 ) in Teuchos ArrayView constructor. - - indices = ArrayView(eIndices, numEntries); - values = ArrayView(eValues, numEntries); - } - - //! Get a copy of the diagonal entries owned by this node, with local row indices. - void getLocalDiagCopy(Vector &diag) const { - XPETRA_MONITOR("EpetraCrsMatrixT::getLocalDiagCopy"); - XPETRA_ERR_CHECK(mtx_->ExtractDiagonalCopy(toEpetra(diag))); - } - - //! Get offsets of the diagonal entries in the matrix. - void getLocalDiagOffsets(Teuchos::ArrayRCP & /* offsets */) const { - TEUCHOS_TEST_FOR_EXCEPTION(true, Xpetra::Exceptions::NotImplemented, "Xpetra::EpetraCrsMatrixT.getLocalDiagOffsets() is not implemented or supported."); - } - - //! Get a copy of the diagonal entries owned by this node, with local row indices, using row offsets. - void getLocalDiagCopy(Vector & /* diag */, const Teuchos::ArrayView & /* offsets */) const { - TEUCHOS_TEST_FOR_EXCEPTION(true, Xpetra::Exceptions::NotImplemented, "Xpetra::EpetraCrsMatrixT.getLocalDiagCopy using offsets is not implemented or supported."); - } - - //! Get a copy of the diagonal entries owned by this node, with local row indices, using row offsets. - void getLocalDiagCopy(Vector & /* diag */, const Kokkos::View & /* offsets */) const { - TEUCHOS_TEST_FOR_EXCEPTION(true, Xpetra::Exceptions::NotImplemented, "Xpetra::EpetraCrsMatrixT.getLocalDiagCopy using offsets is not implemented or supported."); - } - - //! Replace the diagonal entries of the matrix - void replaceDiag(const Vector &diag) { - mtx_->ReplaceDiagonalValues(toEpetra(diag)); - } - - void leftScale(const Vector &x) { - XPETRA_ERR_CHECK(mtx_->LeftScale(toEpetra(x))); - }; - void rightScale(const Vector &x) { - XPETRA_ERR_CHECK(mtx_->RightScale(toEpetra(x))); - }; - - //@} - - //! @name Methods implementing Operator - //@{ - - //! Computes the sparse matrix-multivector multiplication. - void apply(const MultiVector &X, MultiVector &Y, Teuchos::ETransp mode = Teuchos::NO_TRANS, Scalar alpha = ScalarTraits::one(), Scalar beta = ScalarTraits::zero()) const { - XPETRA_MONITOR("EpetraCrsMatrixT::apply"); - - // TEUCHOS_TEST_FOR_EXCEPTION((alpha != 1) || (beta != 0), Xpetra::Exceptions::NotImplemented, "Xpetra::EpetraCrsMatrixT.multiply() only accept alpha==1 and beta==0"); - - XPETRA_DYNAMIC_CAST(const EpetraMultiVectorT, X, eX, "Xpetra::EpetraCrsMatrixT->apply() only accept Xpetra::EpetraMultiVectorT as input arguments."); - XPETRA_DYNAMIC_CAST(EpetraMultiVectorT, Y, eY, "Xpetra::EpetraCrsMatrixT->apply() only accept Xpetra::EpetraMultiVectorT as input arguments."); - - TEUCHOS_TEST_FOR_EXCEPTION((mode != Teuchos::NO_TRANS) && (mode != Teuchos::TRANS), Xpetra::Exceptions::NotImplemented, "Xpetra::EpetraCrsMatrixT->apply() only accept mode == NO_TRANS or mode == TRANS"); - bool eTrans = toEpetra(mode); - - // /!\ UseTranspose value - TEUCHOS_TEST_FOR_EXCEPTION(mtx_->UseTranspose(), Xpetra::Exceptions::NotImplemented, "An exception is throw to let you know that Xpetra::EpetraCrsMatrixT->apply() do not take into account the UseTranspose() parameter of Epetra_CrsMatrix."); - - RCP epY = eY.getEpetra_MultiVector(); - - // helper vector: tmp = A*x - RCP tmp = Teuchos::rcp(new Epetra_MultiVector(*epY)); - tmp->PutScalar(0.0); - XPETRA_ERR_CHECK(mtx_->Multiply(eTrans, *eX.getEpetra_MultiVector(), *tmp)); - - // calculate alpha * A * x + beta * y - XPETRA_ERR_CHECK(eY.getEpetra_MultiVector()->Update(alpha, *tmp, beta)); - } - - //! - void apply(const MultiVector &X, MultiVector &Y, Teuchos::ETransp mode, Scalar alpha, Scalar beta, bool sumInterfaceValues, const RCP > ®ionInterfaceImporter, const Teuchos::ArrayRCP ®ionInterfaceLIDs) const { - TEUCHOS_TEST_FOR_EXCEPTION(true, Xpetra::Exceptions::NotImplemented, "Xpetra::EpetraCrsMatrixT.apply() is not implemented for region matricies."); - } - - //! Returns the Map associated with the domain of this operator. This will be null until fillComplete() is called. - const RCP > getDomainMap() const { - XPETRA_MONITOR("EpetraCrsMatrixT::getDomainMap"); - return toXpetra(mtx_->DomainMap()); - } - - //! - const RCP > getRangeMap() const { - XPETRA_MONITOR("EpetraCrsMatrixT::getRangeMap"); - return toXpetra(mtx_->RangeMap()); - } - - //@} - - //! @name Overridden from Teuchos::Describable - //@{ - - //! A simple one-line description of this object. - std::string description() const { - XPETRA_MONITOR("EpetraCrsMatrixT::description"); - - // This implementation come from Tpetra_CrsMatrix_def.hpp (without modification) - std::ostringstream oss; - // TODO: oss << DistObject::description(); - if (isFillComplete()) { - oss << "{status = fill complete" - << ", global rows = " << getGlobalNumRows() - << ", global cols = " << getGlobalNumCols() - << ", global num entries = " << getGlobalNumEntries() - << "}"; - } else { - oss << "{status = fill not complete" - << ", global rows = " << getGlobalNumRows() - << "}"; - } - return oss.str(); - } - - //! Print the object with some verbosity level to an FancyOStream object. - void describe(Teuchos::FancyOStream &out, const Teuchos::EVerbosityLevel verbLevel = Teuchos::Describable::verbLevel_default) const { - XPETRA_MONITOR("EpetraCrsMatrixT::describe"); - - // This implementation come from Tpetra_CrsMatrix_def.hpp (without modification) - using std::endl; - using std::setw; - using Teuchos::VERB_DEFAULT; - using Teuchos::VERB_EXTREME; - using Teuchos::VERB_HIGH; - using Teuchos::VERB_LOW; - using Teuchos::VERB_MEDIUM; - using Teuchos::VERB_NONE; - Teuchos::EVerbosityLevel vl = verbLevel; - if (vl == VERB_DEFAULT) vl = VERB_LOW; - RCP > comm = this->getComm(); - const int myImageID = comm->getRank(), - numImages = comm->getSize(); - size_t width = 1; - for (size_t dec = 10; dec < getGlobalNumRows(); dec *= 10) { - ++width; - } - width = std::max(width, 11) + 2; - Teuchos::OSTab tab(out); - // none: print nothing - // low: print O(1) info from node 0 - // medium: print O(P) info, num entries per node - // high: print O(N) info, num entries per row - // extreme: print O(NNZ) info: print indices and values - // - // for medium and higher, print constituent objects at specified verbLevel - if (vl != VERB_NONE) { - if (myImageID == 0) out << this->description() << std::endl; - // O(1) globals, minus what was already printed by description() - if (isFillComplete() && myImageID == 0) { - out << "Global max number of entries = " << getGlobalMaxNumRowEntries() << std::endl; - } - // constituent objects - if (vl == VERB_MEDIUM || vl == VERB_HIGH || vl == VERB_EXTREME) { - if (myImageID == 0) out << "\nRow map: " << std::endl; - getRowMap()->describe(out, vl); - // - if (getColMap() != null) { - if (getColMap() == getRowMap()) { - if (myImageID == 0) out << "\nColumn map is row map."; - } else { - if (myImageID == 0) out << "\nColumn map: " << std::endl; - getColMap()->describe(out, vl); - } - } - if (getDomainMap() != null) { - if (getDomainMap() == getRowMap()) { - if (myImageID == 0) out << "\nDomain map is row map."; - } else if (getDomainMap() == getColMap()) { - if (myImageID == 0) out << "\nDomain map is row map."; - } else { - if (myImageID == 0) out << "\nDomain map: " << std::endl; - getDomainMap()->describe(out, vl); - } - } - if (getRangeMap() != null) { - if (getRangeMap() == getDomainMap()) { - if (myImageID == 0) out << "\nRange map is domain map." << std::endl; - } else if (getRangeMap() == getRowMap()) { - if (myImageID == 0) out << "\nRange map is row map." << std::endl; - } else { - if (myImageID == 0) out << "\nRange map: " << std::endl; - getRangeMap()->describe(out, vl); - } - } - if (myImageID == 0) out << std::endl; - } - // O(P) data - if (vl == VERB_MEDIUM || vl == VERB_HIGH || vl == VERB_EXTREME) { - for (int imageCtr = 0; imageCtr < numImages; ++imageCtr) { - if (myImageID == imageCtr) { - out << "Node ID = " << imageCtr << std::endl; - // TODO: need a graph - // if (staticGraph_->indicesAreAllocated() == false) { - // out << "Node not allocated" << std::endl; - // } - // else { - // out << "Node number of allocated entries = " << staticGraph_->getLocalAllocationSize() << std::endl; - // } - - // TMP: - // const Epetra_CrsGraph & staticGraph_ = mtx_->Graph(); - // End of TMP - - out << "Node number of entries = " << getLocalNumEntries() << std::endl; - out << "Node max number of entries = " << getLocalMaxNumRowEntries() << std::endl; - } - comm->barrier(); - comm->barrier(); - comm->barrier(); - } - } - // O(N) and O(NNZ) data - if (vl == VERB_HIGH || vl == VERB_EXTREME) { - for (int imageCtr = 0; imageCtr < numImages; ++imageCtr) { - if (myImageID == imageCtr) { - out << std::setw(width) << "Node ID" - << std::setw(width) << "Global Row" - << std::setw(width) << "Num Entries"; - if (vl == VERB_EXTREME) { - out << std::setw(width) << "(Index,Value)"; - } - out << std::endl; - for (size_t r = 0; r < getLocalNumRows(); ++r) { - const size_t nE = getNumEntriesInLocalRow(r); - GlobalOrdinal gid = getRowMap()->getGlobalElement(r); - out << std::setw(width) << myImageID - << std::setw(width) << gid - << std::setw(width) << nE; - if (vl == VERB_EXTREME) { - if (isGloballyIndexed()) { - ArrayView rowinds; - ArrayView rowvals; - getGlobalRowView(gid, rowinds, rowvals); - for (size_t j = 0; j < nE; ++j) { - out << " (" << rowinds[j] - << ", " << rowvals[j] - << ") "; - } - } else if (isLocallyIndexed()) { - ArrayView rowinds; - ArrayView rowvals; - getLocalRowView(r, rowinds, rowvals); - for (size_t j = 0; j < nE; ++j) { - out << " (" << getColMap()->getGlobalElement(rowinds[j]) - << ", " << rowvals[j] - << ") "; - } - } - } - out << std::endl; - } - } - comm->barrier(); - comm->barrier(); - comm->barrier(); - } - } - } - } - - void setObjectLabel(const std::string &objectLabel) { - Teuchos::LabeledObject::setObjectLabel(objectLabel); - mtx_->SetLabel(objectLabel.c_str()); - } - //@} - - //! Deep copy constructor - EpetraCrsMatrixT(const EpetraCrsMatrixT &matrix) - : mtx_(Teuchos::rcp(new Epetra_CrsMatrix(*(matrix.mtx_)))) - , isFillResumed_(false) {} - - //! Implements DistObject interface - //{@ - - //! Access function for the Tpetra::Map this DistObject was constructed with. - Teuchos::RCP > getMap() const { - XPETRA_MONITOR("EpetraCrsMatrixT::getMap"); - return toXpetra(mtx_->Map()); - } - - //! Import. - void doImport(const DistObject &source, - const Import &importer, CombineMode CM) { - XPETRA_MONITOR("EpetraCrsMatrixT::doImport"); - - XPETRA_DYNAMIC_CAST(const EpetraCrsMatrixT, source, tSource, "Xpetra::EpetraCrsMatrixT::doImport only accept Xpetra::EpetraCrsMatrixT as input arguments."); - XPETRA_DYNAMIC_CAST(const EpetraImportT, importer, tImporter, "Xpetra::EpetraCrsMatrixT::doImport only accept Xpetra::EpetraImportT as input arguments."); - - RCP v = tSource.getEpetra_CrsMatrix(); - int err = mtx_->Import(*v, *tImporter.getEpetra_Import(), toEpetra(CM)); - TEUCHOS_TEST_FOR_EXCEPTION(err != 0, std::runtime_error, "Catch error code returned by Epetra."); - } - - //! Export. - void doExport(const DistObject &dest, - const Import &importer, CombineMode CM) { - XPETRA_MONITOR("EpetraCrsMatrixT::doExport"); - - XPETRA_DYNAMIC_CAST(const EpetraCrsMatrixT, dest, tDest, "Xpetra::EpetraCrsMatrixT::doImport only accept Xpetra::EpetraCrsMatrixT as input arguments."); - XPETRA_DYNAMIC_CAST(const EpetraImportT, importer, tImporter, "Xpetra::EpetraCrsMatrixT::doImport only accept Xpetra::EpetraImportT as input arguments."); - - RCP v = tDest.getEpetra_CrsMatrix(); - int err = mtx_->Export(*v, *tImporter.getEpetra_Import(), toEpetra(CM)); - TEUCHOS_TEST_FOR_EXCEPTION(err != 0, std::runtime_error, "Catch error code returned by Epetra."); - } - - //! Import (using an Exporter). - void doImport(const DistObject &source, - const Export &exporter, CombineMode CM) { - XPETRA_MONITOR("EpetraCrsMatrixT::doImport"); - - XPETRA_DYNAMIC_CAST(const EpetraCrsMatrixT, source, tSource, "Xpetra::EpetraCrsMatrixT::doImport only accept Xpetra::EpetraCrsMatrixT as input arguments."); - XPETRA_DYNAMIC_CAST(const EpetraExportT, exporter, tExporter, "Xpetra::EpetraCrsMatrixT::doImport only accept Xpetra::EpetraImportT as input arguments."); - - RCP v = tSource.getEpetra_CrsMatrix(); - int err = mtx_->Import(*v, *tExporter.getEpetra_Export(), toEpetra(CM)); - TEUCHOS_TEST_FOR_EXCEPTION(err != 0, std::runtime_error, "Catch error code returned by Epetra."); - } - - //! Export (using an Importer). - void doExport(const DistObject &dest, - const Export &exporter, CombineMode CM) { - XPETRA_MONITOR("EpetraCrsMatrixT::doExport"); - - XPETRA_DYNAMIC_CAST(const EpetraCrsMatrixT, dest, tDest, "Xpetra::EpetraCrsMatrixT::doImport only accept Xpetra::EpetraCrsMatrixT as input arguments."); - XPETRA_DYNAMIC_CAST(const EpetraExportT, exporter, tExporter, "Xpetra::EpetraCrsMatrixT::doImport only accept Xpetra::EpetraImportT as input arguments."); - - RCP v = tDest.getEpetra_CrsMatrix(); - int err = mtx_->Export(*v, *tExporter.getEpetra_Export(), toEpetra(CM)); - TEUCHOS_TEST_FOR_EXCEPTION(err != 0, std::runtime_error, "Caught nonzero error code " + std::to_string(err) + " returned by Epetra."); - } - - void removeEmptyProcessesInPlace(const Teuchos::RCP > &newMap) { - XPETRA_MONITOR("EpetraCrsMatrixT::removeEmptyProcessesInPlace"); - const Epetra_Map *newMapEpetra = (!newMap.is_null()) ? &toEpetra(newMap) : 0; - int err = mtx_->RemoveEmptyProcessesInPlace(newMapEpetra); - TEUCHOS_TEST_FOR_EXCEPTION(err != 0, std::runtime_error, "Caught nonzero error code " + std::to_string(err) + " returned by Epetra."); - } - - //@} - - //! @name Xpetra specific - //@{ - - //! Does this have an underlying matrix - bool hasMatrix() const { return !mtx_.is_null(); } - - //! EpetraCrsMatrixT constructor to wrap a Epetra_CrsMatrix object - EpetraCrsMatrixT(const Teuchos::RCP &mtx) - : mtx_(mtx) - , isFillResumed_(false) {} - - //! Get the underlying Epetra matrix - RCP getEpetra_CrsMatrix() const { return mtx_; } - - //! Get the underlying Epetra matrix - RCP getEpetra_CrsMatrixNonConst() const { return mtx_; } // TODO: remove - -#ifdef HAVE_XPETRA_TPETRA - /// \brief Compatibility layer for accessing the matrix data through a Kokkos interface - - local_matrix_type getLocalMatrixDevice() const { -#if 0 - TEUCHOS_TEST_FOR_EXCEPTION(true, Xpetra::Exceptions::NotImplemented, - "Xpetra::EpetraCrsMatrx only available on host for GO=int or GO=long long with EpetraNode (Serial or OpenMP depending on configuration)"); - TEUCHOS_UNREACHABLE_RETURN((local_matrix_type())); -#endif - return getLocalMatrixHost(); - } - - typename local_matrix_type::HostMirror getLocalMatrixHost() const { - RCP matrix = getEpetra_CrsMatrixNonConst(); - - const int numRows = matrix->NumMyRows(); - const int numCols = matrix->NumMyCols(); - const int nnz = matrix->NumMyNonzeros(); - - int *rowptr; - int *colind; - double *vals; - int rv = matrix->ExtractCrsDataPointers(rowptr, colind, vals); - TEUCHOS_TEST_FOR_EXCEPTION(rv, std::runtime_error, "Xpetra::CrsMatrix<>::getLocalMatrix: failed in ExtractCrsDataPointers"); - - // Transform int* rowptr array to size_type* array - typename local_matrix_type::row_map_type::non_const_type kokkosRowPtr(Kokkos::ViewAllocateWithoutInitializing("local row map"), numRows + 1); - for (size_t i = 0; i < kokkosRowPtr.size(); i++) - kokkosRowPtr(i) = Teuchos::asSafe(rowptr[i]); - - // create Kokkos::Views - typename local_matrix_type::index_type kokkosColind(colind, nnz); - typename local_matrix_type::values_type kokkosVals(vals, nnz); - - local_matrix_type localMatrix = local_matrix_type("LocalMatrix", numRows, numCols, nnz, kokkosVals, kokkosRowPtr, kokkosColind); - - return localMatrix; - } - - void setAllValues(const typename local_matrix_type::row_map_type &ptr, - const typename local_matrix_type::StaticCrsGraphType::entries_type::non_const_type &ind, - const typename local_matrix_type::values_type &val) { - // Check sizes - TEUCHOS_TEST_FOR_EXCEPTION(Teuchos::as(ptr.size()) != getLocalNumRows() + 1, Xpetra::Exceptions::RuntimeError, - "An exception is thrown to let you know that the size of your rowptr array is incorrect."); - TEUCHOS_TEST_FOR_EXCEPTION(val.size() != ind.size(), Xpetra::Exceptions::RuntimeError, - "An exception is thrown to let you know that you mismatched your pointers."); - - // Check pointers - if (val.size() > 0) { - std::cout << ind.data() << " " << mtx_->ExpertExtractIndices().Values() << std::endl; - TEUCHOS_TEST_FOR_EXCEPTION(ind.data() != mtx_->ExpertExtractIndices().Values(), Xpetra::Exceptions::RuntimeError, - "An exception is thrown to let you know that you mismatched your pointers."); - TEUCHOS_TEST_FOR_EXCEPTION(val.data() != mtx_->ExpertExtractValues(), Xpetra::Exceptions::RuntimeError, - "An exception is thrown to let you know that you mismatched your pointers."); - } - - // We have to make a copy here, it is unavoidable - // See comments in allocateAllValues - const size_t N = getLocalNumRows(); - - Epetra_IntSerialDenseVector &myRowptr = mtx_->ExpertExtractIndexOffset(); - myRowptr.Resize(N + 1); - for (size_t i = 0; i < N + 1; i++) - myRowptr[i] = Teuchos::as(ptr(i)); - } - - LocalOrdinal GetStorageBlockSize() const { return 1; } - - private: -#else -#ifdef __GNUC__ -#warning "Xpetra Kokkos interface for CrsMatrix is enabled (HAVE_XPETRA_KOKKOS_REFACTOR) but Tpetra is disabled. The Kokkos interface needs Tpetra to be enabled, too." -#endif -#endif - //@} - - void residual(const MultiVector &X, - const MultiVector &B, - MultiVector &R) const { - Scalar one = Teuchos::ScalarTraits::one(), negone = -one; - - apply(X, R); - R.update(one, B, negone); - } - - private: - //! The underlying actual matrix object - RCP mtx_; - - /*! - \brief Flag to keep track of fill status - - For Epetra, fillResume() is a fictitious operation but we need to keep track of it. - This boolean is true only is resumeFill() have been called and fillComplete() have not been called afterward. - */ - bool isFillResumed_; - -}; // EpetraCrsMatrixT class - -#endif //#ifndef XPETRA_EPETRA_NO_32BIT_GLOBAL_INDICES - -#ifndef XPETRA_EPETRA_NO_64BIT_GLOBAL_INDICES -template <> -class EpetraCrsMatrixT - : public CrsMatrix { - typedef long long GlobalOrdinal; - typedef EpetraNode Node; - typedef typename CrsMatrix::scalar_type Scalar; - typedef typename CrsMatrix::local_ordinal_type LocalOrdinal; - - // The following typedefs are used by the Kokkos interface -#ifdef HAVE_XPETRA_TPETRA - typedef typename Xpetra::CrsMatrix::local_matrix_type local_matrix_type; - typedef typename Xpetra::CrsMatrix::node_type node_type; -#endif - - public: - //! @name Constructor/Destructor Methods - //@{ - - //! Constructor specifying fixed number of entries for each row. - EpetraCrsMatrixT(const Teuchos::RCP > &rowMap, size_t maxNumEntriesPerRow, const Teuchos::RCP & /* plist */ = Teuchos::null) - : mtx_(Teuchos::rcp(new Epetra_CrsMatrix(Copy, toEpetra(rowMap), maxNumEntriesPerRow, true))) - , isFillResumed_(false) {} - - //! Constructor specifying (possibly different) number of entries in each row. - EpetraCrsMatrixT(const Teuchos::RCP > &rowMap, const ArrayRCP &NumEntriesPerRowToAlloc, const Teuchos::RCP & /* plist */ = Teuchos::null) - : isFillResumed_(false) { - Teuchos::Array numEntriesPerRowToAlloc(NumEntriesPerRowToAlloc.begin(), NumEntriesPerRowToAlloc.end()); // convert array of "size_t" to array of "int" - mtx_ = Teuchos::rcp(new Epetra_CrsMatrix(Copy, toEpetra(rowMap), numEntriesPerRowToAlloc.getRawPtr(), true)); - } - - //! Constructor specifying column Map and fixed number of entries for each row. - EpetraCrsMatrixT(const Teuchos::RCP > &rowMap, const Teuchos::RCP > &colMap, size_t maxNumEntriesPerRow, const Teuchos::RCP & /* plist */ = Teuchos::null) - : mtx_(Teuchos::rcp(new Epetra_CrsMatrix(Copy, toEpetra(rowMap), toEpetra(colMap), maxNumEntriesPerRow, true))) - , isFillResumed_(false) {} - - //! Constructor specifying column Map and number of entries in each row. - EpetraCrsMatrixT(const Teuchos::RCP > &rowMap, const Teuchos::RCP > &colMap, const ArrayRCP &NumEntriesPerRowToAlloc, const Teuchos::RCP & /* plist */ = Teuchos::null) - : isFillResumed_(false) { - Teuchos::Array numEntriesPerRowToAlloc(NumEntriesPerRowToAlloc.begin(), NumEntriesPerRowToAlloc.end()); // convert array of "size_t" to array of "int" - mtx_ = Teuchos::rcp(new Epetra_CrsMatrix(Copy, toEpetra(rowMap), toEpetra(colMap), numEntriesPerRowToAlloc.getRawPtr(), true)); - } - - //! Constructor specifying a previously constructed graph. - EpetraCrsMatrixT(const Teuchos::RCP > &graph, const Teuchos::RCP & /* plist */ = Teuchos::null) - : mtx_(Teuchos::rcp(new Epetra_CrsMatrix(Copy, toEpetra(graph)))) - , isFillResumed_(false) {} - - //! Constructor for a fused import - EpetraCrsMatrixT(const Teuchos::RCP > &sourceMatrix, - const Import &importer, - const Teuchos::RCP > &domainMap = Teuchos::null, - const Teuchos::RCP > &rangeMap = Teuchos::null, - const Teuchos::RCP ¶ms = Teuchos::null) - : isFillResumed_(false) { - XPETRA_DYNAMIC_CAST(const EpetraCrsMatrixT, *sourceMatrix, tSourceMatrix, "Xpetra::EpetraCrsMatrixT constructor only accepts Xpetra::EpetraCrsMatrixT as an input argument."); - XPETRA_DYNAMIC_CAST(const EpetraImportT, importer, tImporter, "Xpetra::EpetraCrsMatrixT constructor only accepts Xpetra::EpetraImportT as an input argument."); - - const Epetra_Map *myDomainMap = (domainMap != Teuchos::null) ? &toEpetra(domainMap) : 0; - const Epetra_Map *myRangeMap = (rangeMap != Teuchos::null) ? &toEpetra(rangeMap) : 0; - - // Follows the Tpetra parameters - bool restrictComm = false; - if (!params.is_null()) restrictComm = params->get("Restrict Communicator", restrictComm); - mtx_ = Teuchos::rcp(new Epetra_CrsMatrix(*tSourceMatrix.getEpetra_CrsMatrix(), *tImporter.getEpetra_Import(), myDomainMap, myRangeMap, restrictComm)); - if (restrictComm && mtx_->NumMyRows() == 0) - mtx_ = Teuchos::null; - } - - //! Constructor for a fused export - EpetraCrsMatrixT(const Teuchos::RCP > &sourceMatrix, - const Export &exporter, - const Teuchos::RCP > &domainMap = Teuchos::null, - const Teuchos::RCP > &rangeMap = Teuchos::null, - const Teuchos::RCP ¶ms = Teuchos::null) - : isFillResumed_(false) { - XPETRA_DYNAMIC_CAST(const EpetraCrsMatrixT, *sourceMatrix, tSourceMatrix, "Xpetra::EpetraCrsMatrixT constructor only accepts Xpetra::EpetraCrsMatrixT as an input argument."); - XPETRA_DYNAMIC_CAST(const EpetraExportT, exporter, tExporter, "Xpetra::EpetraCrsMatrixT constructor only accepts Xpetra::EpetraExportT as an input argument."); - - const Epetra_Map *myDomainMap = (domainMap != Teuchos::null) ? &toEpetra(domainMap) : 0; - const Epetra_Map *myRangeMap = (rangeMap != Teuchos::null) ? &toEpetra(rangeMap) : 0; - - // Follows the Tpetra parameters - bool restrictComm = false; - if (!params.is_null()) restrictComm = params->get("Restrict Communicator", restrictComm); - - mtx_ = Teuchos::rcp(new Epetra_CrsMatrix(*tSourceMatrix.getEpetra_CrsMatrix(), *tExporter.getEpetra_Export(), myDomainMap, myRangeMap, restrictComm)); - } - - EpetraCrsMatrixT(const Teuchos::RCP > &sourceMatrix, - const Import &RowImporter, - const Teuchos::RCP > DomainImporter, - const Teuchos::RCP > &domainMap, - const Teuchos::RCP > &rangeMap, - const Teuchos::RCP ¶ms) - : isFillResumed_(false) { - XPETRA_DYNAMIC_CAST(const EpetraCrsMatrixT, *sourceMatrix, tSourceMatrix, "Xpetra::EpetraCrsMatrixT constructor only accepts Xpetra::EpetraCrsMatrixT as an input argument."); - XPETRA_DYNAMIC_CAST(const EpetraImportT, RowImporter, tImporter, "Xpetra::EpetraCrsMatrixT constructor only accepts Xpetra::EpetraImportT as an input argument."); - XPETRA_RCP_DYNAMIC_CAST(const EpetraImportT, DomainImporter, tdImporter, "Xpetra::EpetraCrsMatrixT constructor only accepts Xpetra::EpetraImportT as an input argument."); - - const Epetra_Map *myDomainMap = (domainMap != Teuchos::null) ? &toEpetra(domainMap) : 0; - const Epetra_Map *myRangeMap = (rangeMap != Teuchos::null) ? &toEpetra(rangeMap) : 0; - - // Follows the Tpetra parameters - bool restrictComm = false; - if (!params.is_null()) restrictComm = params->get("Restrict Communicator", restrictComm); - mtx_ = Teuchos::rcp(new Epetra_CrsMatrix(*tSourceMatrix.getEpetra_CrsMatrix(), *tImporter.getEpetra_Import(), tdImporter->getEpetra_Import().get(), myDomainMap, myRangeMap, restrictComm)); - if (restrictComm && mtx_->NumMyRows() == 0) - mtx_ = Teuchos::null; - } - - EpetraCrsMatrixT(const Teuchos::RCP > &sourceMatrix, - const Export &RowExporter, - const Teuchos::RCP > DomainExporter, - const Teuchos::RCP > &domainMap, - const Teuchos::RCP > &rangeMap, - const Teuchos::RCP ¶ms) - : isFillResumed_(false) { - XPETRA_DYNAMIC_CAST(const EpetraCrsMatrixT, *sourceMatrix, tSourceMatrix, "Xpetra::EpetraCrsMatrixT constructor only accepts Xpetra::EpetraCrsMatrixT as an input argument."); - XPETRA_DYNAMIC_CAST(const EpetraExportT, RowExporter, tExporter, "Xpetra::EpetraCrsMatrixT constructor only accepts Xpetra::EpetraExportT as an input argument."); - XPETRA_RCP_DYNAMIC_CAST(const EpetraExportT, DomainExporter, tdExporter, "Xpetra::EpetraCrsMatrixT constructor only accepts Xpetra::EpetraExportT as an input argument."); - - const Epetra_Map *myDomainMap = (domainMap != Teuchos::null) ? &toEpetra(domainMap) : 0; - const Epetra_Map *myRangeMap = (rangeMap != Teuchos::null) ? &toEpetra(rangeMap) : 0; - - // Follows the Tpetra parameters - bool restrictComm = false; - if (!params.is_null()) restrictComm = params->get("Restrict Communicator", restrictComm); - - mtx_ = Teuchos::rcp(new Epetra_CrsMatrix(*tSourceMatrix.getEpetra_CrsMatrix(), *tExporter.getEpetra_Export(), tdExporter->getEpetra_Export().get(), myDomainMap, myRangeMap, restrictComm)); - } - -#ifdef HAVE_XPETRA_TPETRA - /// \brief Constructor specifying column Map and a local matrix, - /// which the resulting CrsMatrix views. - /// - /// Unlike most other CrsMatrix constructors, successful - /// completion of this constructor will result in a fill-complete - /// matrix. - /// - /// \param rowMap [in] Distribution of rows of the matrix. - /// - /// \param colMap [in] Distribution of columns of the matrix. - /// - /// \param lclMatrix [in] A local CrsMatrix containing all local - /// matrix values as well as a local graph. The graph's local - /// row indices must come from the specified row Map, and its - /// local column indices must come from the specified column - /// Map. - /// - /// \param params [in/out] Optional list of parameters. If not - /// null, any missing parameters will be filled in with their - /// default values. - EpetraCrsMatrixT(const Teuchos::RCP > &rowMap, - const Teuchos::RCP > &colMap, - const local_matrix_type &lclMatrix, - const Teuchos::RCP ¶ms = null) - : EpetraCrsMatrixT(lclMatrix, rowMap, colMap, Teuchos::null, Teuchos::null, params) {} - - EpetraCrsMatrixT( - const local_matrix_type &lclMatrix, - const Teuchos::RCP > &rowMap, - const Teuchos::RCP > &colMap, - const Teuchos::RCP > &domainMap = Teuchos::null, - const Teuchos::RCP > &rangeMap = Teuchos::null, - const Teuchos::RCP ¶ms = null) { - // local typedefs from local_matrix_type - // typedef typename local_matrix_type::size_type size_type; - typedef typename local_matrix_type::value_type value_type; - typedef typename local_matrix_type::ordinal_type ordinal_type; - - // The number of rows in the sparse matrix. - ordinal_type lclNumRows = lclMatrix.numRows(); - ordinal_type lclNumCols = lclMatrix.numCols(); // do we need this? - - // plausibility checks - TEUCHOS_TEST_FOR_EXCEPTION(lclNumRows != Teuchos::as(rowMap->getLocalNumElements()), Xpetra::Exceptions::RuntimeError, - "Xpetra::EpetraCrsMatrixT: number of rows in local matrix and number of local entries in row map do not match!"); - TEUCHOS_TEST_FOR_EXCEPTION(lclNumCols != Teuchos::as(colMap->getLocalNumElements()), Xpetra::Exceptions::RuntimeError, - "Xpetra::EpetraCrsMatrixT: number of columns in local matrix and number of local entries in column map do not match!"); - - Teuchos::ArrayRCP NumEntriesPerRowToAlloc(lclNumRows); - for (ordinal_type r = 0; r < lclNumRows; ++r) { - // extract data from current row r - auto rowview = lclMatrix.row(r); - NumEntriesPerRowToAlloc[r] = rowview.length; - } - - // setup matrix - isFillResumed_ = false; - Teuchos::Array numEntriesPerRowToAlloc(NumEntriesPerRowToAlloc.begin(), NumEntriesPerRowToAlloc.end()); // convert array of "size_t" to array of "int" - mtx_ = Teuchos::rcp(new Epetra_CrsMatrix(Copy, toEpetra(rowMap), toEpetra(colMap), numEntriesPerRowToAlloc.getRawPtr(), true)); - - // loop over all rows and colums of local matrix and fill matrix - for (ordinal_type r = 0; r < lclNumRows; ++r) { - // extract data from current row r - auto rowview = lclMatrix.row(r); - - // arrays for current row data - Teuchos::ArrayRCP indout(rowview.length, Teuchos::ScalarTraits::zero()); - Teuchos::ArrayRCP valout(rowview.length, Teuchos::ScalarTraits::zero()); - - for (ordinal_type c = 0; c < rowview.length; c++) { - value_type value = rowview.value(c); - ordinal_type colidx = rowview.colidx(c); - - TEUCHOS_TEST_FOR_EXCEPTION(colMap->isNodeLocalElement(colidx) == false, Xpetra::Exceptions::RuntimeError, "Xpetra::EpetraCrsMatrixT: local matrix contains column elements which are not in the provided column map!"); - - indout[c] = colidx; - valout[c] = value; - } - insertLocalValues(r, indout.view(0, indout.size()), valout.view(0, valout.size())); - } - - // call fill complete - if (!domainMap.is_null() && !rangeMap.is_null()) - this->fillComplete(domainMap, rowMap, params); - else - this->fillComplete(rowMap, rowMap, params); - } -#endif - - //! Destructor. - virtual ~EpetraCrsMatrixT() {} - - //@} - - //! @name Insertion/Removal Methods - //@{ - - //! Insert matrix entries, using global IDs. - void insertGlobalValues(GlobalOrdinal globalRow, const ArrayView &cols, const ArrayView &vals) { - XPETRA_MONITOR("EpetraCrsMatrixT::insertGlobalValues"); - XPETRA_ERR_CHECK(mtx_->InsertGlobalValues(globalRow, vals.size(), vals.getRawPtr(), cols.getRawPtr())); - } - - //! Insert matrix entries, using local IDs. - void insertLocalValues(LocalOrdinal localRow, const ArrayView &cols, const ArrayView &vals) { - XPETRA_MONITOR("EpetraCrsMatrixT::insertLocalValues"); - XPETRA_ERR_CHECK(mtx_->InsertMyValues(localRow, vals.size(), vals.getRawPtr(), cols.getRawPtr())); - } - - //! Replace matrix entries, using global IDs. - void replaceGlobalValues(GlobalOrdinal globalRow, const ArrayView &indices, const ArrayView &values) { - XPETRA_MONITOR("EpetraCrsMatrixT::replaceGlobalValues"); - - { - const std::string tfecfFuncName("replaceGlobalValues"); - TEUCHOS_TEST_FOR_EXCEPTION_CLASS_FUNC(!isFillActive(), std::runtime_error, - ": Fill must be active in order to call this method. If you have already " - "called fillComplete(), you need to call resumeFill() before you can " - "replace values."); - - TEUCHOS_TEST_FOR_EXCEPTION_CLASS_FUNC(values.size() != indices.size(), - std::runtime_error, ": values.size() must equal indices.size()."); - } - - XPETRA_ERR_CHECK(mtx_->ReplaceGlobalValues(globalRow, indices.size(), values.getRawPtr(), indices.getRawPtr())); - } - - //! Replace matrix entries, using local IDs. - void replaceLocalValues(LocalOrdinal localRow, const ArrayView &indices, const ArrayView &values) { - XPETRA_MONITOR("EpetraCrsMatrixT::replaceLocalValues"); - - { - const std::string tfecfFuncName("replaceLocalValues"); - TEUCHOS_TEST_FOR_EXCEPTION_CLASS_FUNC(!isFillActive(), std::runtime_error, - ": Fill must be active in order to call this method. If you have already " - "called fillComplete(), you need to call resumeFill() before you can " - "replace values."); - - TEUCHOS_TEST_FOR_EXCEPTION_CLASS_FUNC(values.size() != indices.size(), - std::runtime_error, ": values.size() must equal indices.size()."); - } - - XPETRA_ERR_CHECK(mtx_->ReplaceMyValues(localRow, indices.size(), values.getRawPtr(), indices.getRawPtr())); - } - - //! Set all matrix entries equal to scalarThis. - void setAllToScalar(const Scalar &alpha) { - XPETRA_MONITOR("EpetraCrsMatrixT::setAllToScalar"); - mtx_->PutScalar(alpha); - } - - //! Scale the current values of a matrix, this = alpha*this. - void scale(const Scalar &alpha) { - XPETRA_MONITOR("EpetraCrsMatrixT::scale"); - mtx_->Scale(alpha); - } - - //! Allocates and returns ArrayRCPs of the Crs arrays --- This is an Xpetra-only routine. - //** \warning This is an expert-only routine and should not be called from user code. */ - void allocateAllValues(size_t numNonZeros, ArrayRCP &rowptr, ArrayRCP &colind, ArrayRCP &values) { - XPETRA_MONITOR("EpetraCrsMatrixT::allocateAllValues"); - - // Row offsets - // Unfortunately, we cannot do this in the same manner as column indices - // and values (see below). The problem is that Tpetra insists on using - // size_t, and Epetra uses int internally. So we only resize here, and - // will need to copy in setAllValues - rowptr.resize(getLocalNumRows() + 1); - - int lowerOffset = 0; - bool ownMemory = false; - - // Column indices - // Extract, resize, set colind - Epetra_IntSerialDenseVector &myColind = mtx_->ExpertExtractIndices(); - myColind.Resize(numNonZeros); - colind = Teuchos::arcp(myColind.Values(), lowerOffset, numNonZeros, ownMemory); - - // Values - // Extract, reallocate, set values - double *&myValues = mtx_->ExpertExtractValues(); - delete[] myValues; - myValues = new double[numNonZeros]; - values = Teuchos::arcp(myValues, lowerOffset, numNonZeros, ownMemory); - } - - //! Sets the 1D pointer arrays of the graph. - void setAllValues(const ArrayRCP &rowptr, const ArrayRCP &colind, const ArrayRCP &values) { - XPETRA_MONITOR("EpetraCrsMatrixT::setAllValues"); - - // Check sizes - TEUCHOS_TEST_FOR_EXCEPTION(Teuchos::as(rowptr.size()) != getLocalNumRows() + 1, Xpetra::Exceptions::RuntimeError, - "An exception is thrown to let you know that the size of your rowptr array is incorrect."); - TEUCHOS_TEST_FOR_EXCEPTION(values.size() != colind.size(), Xpetra::Exceptions::RuntimeError, - "An exception is thrown to let you know that you mismatched your pointers."); - - // Check pointers - if (values.size() > 0) { - TEUCHOS_TEST_FOR_EXCEPTION(colind.getRawPtr() != mtx_->ExpertExtractIndices().Values(), Xpetra::Exceptions::RuntimeError, - "An exception is thrown to let you know that you mismatched your pointers."); - TEUCHOS_TEST_FOR_EXCEPTION(values.getRawPtr() != mtx_->ExpertExtractValues(), Xpetra::Exceptions::RuntimeError, - "An exception is thrown to let you know that you mismatched your pointers."); - } - - // We have to make a copy here, it is unavoidable - // See comments in allocateAllValues - const size_t N = getLocalNumRows(); - - Epetra_IntSerialDenseVector &myRowptr = mtx_->ExpertExtractIndexOffset(); - myRowptr.Resize(N + 1); - for (size_t i = 0; i < N + 1; i++) - myRowptr[i] = Teuchos::as(rowptr[i]); - } - - //! Gets the 1D pointer arrays of the graph. - void getAllValues(ArrayRCP &rowptr, ArrayRCP &colind, ArrayRCP &values) const { - XPETRA_MONITOR("EpetraCrsMatrixT::getAllValues"); - - int lowerOffset = 0; - bool ownMemory = false; - - const size_t n = getLocalNumRows(); - const size_t nnz = getLocalNumEntries(); - - // Row offsets - // We have to make a copy here, it is unavoidable (see comments in allocateAllValues) - Epetra_IntSerialDenseVector &myRowptr = mtx_->ExpertExtractIndexOffset(); - rowptr.resize(n + 1); - for (size_t i = 0; i < n + 1; i++) - (*const_cast(&rowptr[i])) = Teuchos::as(myRowptr[i]); - - // Column indices - colind = Teuchos::arcp(mtx_->ExpertExtractIndices().Values(), lowerOffset, nnz, ownMemory); - - // Values - values = Teuchos::arcp(mtx_->ExpertExtractValues(), lowerOffset, nnz, ownMemory); - } - - //! Gets the 1D pointer arrays of the graph. - void getAllValues(ArrayRCP &values) { - XPETRA_MONITOR("EpetraCrsMatrixT::getAllValues"); - - int lowerOffset = 0; - bool ownMemory = false; - - const size_t nnz = getLocalNumEntries(); - // Values - values = Teuchos::arcp(mtx_->ExpertExtractValues(), lowerOffset, nnz, ownMemory); - } - - // Epetra always has global constants - bool haveGlobalConstants() const { return true; } - - //! Expert static fill complete - //** \warning This is an expert-only routine and should not be called from user code. */ - void expertStaticFillComplete(const RCP > &domainMap, - const RCP > &rangeMap, - const RCP > &importer = Teuchos::null, - const RCP > &exporter = Teuchos::null, - const RCP & /* params */ = Teuchos::null) { - XPETRA_MONITOR("EpetraCrsMatrixT::expertStaticFillComplete"); - - // For Epetra matrices, resumeFill() is a fictive operation. - isFillResumed_ = false; - - int rv = 0; - const Epetra_Import *myimport = 0; - const Epetra_Export *myexport = 0; - - if (!importer.is_null()) { - XPETRA_DYNAMIC_CAST(const EpetraImportT, *importer, eImporter, "Xpetra::EpetraCrsMatrixT::expertStaticFillComplete only accepts Xpetra::EpetraImportT."); - myimport = eImporter.getEpetra_Import().getRawPtr(); - } - if (!exporter.is_null()) { - XPETRA_DYNAMIC_CAST(const EpetraExportT, *exporter, eExporter, "Xpetra::EpetraCrsMatrixT::expertStaticFillComplete only accepts Xpetra::EpetraImportT."); - myexport = eExporter.getEpetra_Export().getRawPtr(); - } - - rv = mtx_->ExpertStaticFillComplete(toEpetra(domainMap), toEpetra(rangeMap), myimport, myexport); - - TEUCHOS_TEST_FOR_EXCEPTION(rv != 0, std::runtime_error, "Xpetra::EpetraCrsMatrixT::expertStaticFillComplete FAILED!"); - } - //@} - - //! @name Transformational Methods - //@{ - - //! - void resumeFill(const RCP & /* params */ = Teuchos::null) { - XPETRA_MONITOR("EpetraCrsMatrixT::resumeFill"); - - // According to Tpetra documentation, resumeFill() may be called repeatedly. - isFillResumed_ = true; - } - - //! Signal that data entry is complete, specifying domain and range maps. - void fillComplete(const RCP > &domainMap, const RCP > &rangeMap, const RCP ¶ms = Teuchos::null) { - XPETRA_MONITOR("EpetraCrsMatrixT::fillComplete"); - - // For Epetra matrices, resumeFill() is a fictive operation. There is no need for a fillComplete after some resumeFill() operations. - if (isFillResumed_ == true) { - isFillResumed_ = false; - return; - } - - bool doOptimizeStorage = true; - if (params != null && params->get("Optimize Storage", true) == false) doOptimizeStorage = false; - mtx_->FillComplete(toEpetra(domainMap), toEpetra(rangeMap), doOptimizeStorage); - } - - //! Signal that data entry is complete. - void fillComplete(const RCP ¶ms = Teuchos::null) { - XPETRA_MONITOR("EpetraCrsMatrixT::fillComplete"); - - // For Epetra matrices, resumeFill() is a fictive operation. There is no need for a fillComplete after some resumeFill() operations. - if (isFillResumed_ == true) { - isFillResumed_ = false; - return; - } - - bool doOptimizeStorage = true; - if (params != null && params->get("Optimize Storage", true) == false) doOptimizeStorage = false; - mtx_->FillComplete(doOptimizeStorage); - } - - //! Replaces the current domainMap and importer with the user-specified objects. - void replaceDomainMapAndImporter(const Teuchos::RCP > &newDomainMap, Teuchos::RCP > &newImporter) { - XPETRA_MONITOR("EpetraCrsMatrixT::replaceDomainMapAndImporter"); - XPETRA_DYNAMIC_CAST(const EpetraImportT, *newImporter, eImporter, "Xpetra::EpetraCrsMatrixT::replaceDomainMapAndImporter only accepts Xpetra::EpetraImportT."); - - const RCP &myImport = eImporter.getEpetra_Import(); - int rv = 0; - if (myImport == Teuchos::null) - rv = mtx_->ReplaceDomainMapAndImporter(toEpetra(newDomainMap), 0); - else - rv = mtx_->ReplaceDomainMapAndImporter(toEpetra(newDomainMap), &*myImport); - TEUCHOS_TEST_FOR_EXCEPTION(rv != 0, std::runtime_error, "Xpetra::EpetraCrsMatrixT::replaceDomainMapAndImporter FAILED!"); - } - - //@} - - //! @name Methods implementing RowMatrix - //@{ - - //! Returns the communicator. - const RCP > getComm() const { - XPETRA_MONITOR("EpetraCrsMatrixT::getComm"); - return toXpetra(mtx_->Comm()); - } - - //! Returns the Map that describes the row distribution in this matrix. - const RCP > getRowMap() const { - XPETRA_MONITOR("EpetraCrsMatrixT::getRowMap"); - return toXpetra(mtx_->RowMap()); - } - - //! Returns the Map that describes the column distribution in this matrix. - const RCP > getColMap() const { - XPETRA_MONITOR("EpetraCrsMatrixT::getColMap"); - return toXpetra(mtx_->ColMap()); - } - - //! Returns the CrsGraph associated with this matrix. - RCP > getCrsGraph() const { - XPETRA_MONITOR("EpetraCrsMatrixT::getCrsGraph"); - return toXpetra(mtx_->Graph()); - } - - //! Number of global elements in the row map of this matrix. - global_size_t getGlobalNumRows() const { - XPETRA_MONITOR("EpetraCrsMatrixT::getGlobalNumRows"); - return mtx_->NumGlobalRows64(); - } - - //! Number of global columns in the matrix. - global_size_t getGlobalNumCols() const { - XPETRA_MONITOR("EpetraCrsMatrixT::getGlobalNumCols"); - return mtx_->NumGlobalCols64(); - } - - //! Returns the number of matrix rows owned on the calling node. - size_t getLocalNumRows() const { - XPETRA_MONITOR("EpetraCrsMatrixT::getLocalNumRows"); - return mtx_->NumMyRows(); - } - - //! Returns the number of columns connected to the locally owned rows of this matrix. - size_t getLocalNumCols() const { - XPETRA_MONITOR("EpetraCrsMatrixT::getLocalNumCols"); - return mtx_->NumMyCols(); - } - - //! Returns the global number of entries in this matrix. - global_size_t getGlobalNumEntries() const { - XPETRA_MONITOR("EpetraCrsMatrixT::getGlobalNumEntries"); - return mtx_->NumGlobalNonzeros64(); - } - - //! Returns the local number of entries in this matrix. - size_t getLocalNumEntries() const { - XPETRA_MONITOR("EpetraCrsMatrixT::getLocalNumEntries"); - return mtx_->NumMyNonzeros(); - } - - //! Returns the current number of entries on this node in the specified local row. - size_t getNumEntriesInLocalRow(LocalOrdinal localRow) const { - XPETRA_MONITOR("EpetraCrsMatrixT::getNumEntriesInLocalRow"); - return mtx_->NumMyEntries(localRow); - } - - //! Returns the current number of entries on this node in the specified (locally owned) global row. - size_t getNumEntriesInGlobalRow(GlobalOrdinal globalRow) const { - XPETRA_MONITOR("EpetraCrsMatrixT::getNumEntriesInGlobalRow"); - return mtx_->NumGlobalEntries(globalRow); - } - - //! Returns the maximum number of entries across all rows/columns on all nodes. - size_t getGlobalMaxNumRowEntries() const { - XPETRA_MONITOR("EpetraCrsMatrixT::getGlobalMaxNumRowEntries"); - return mtx_->GlobalMaxNumEntries(); - } - - //! Returns the maximum number of entries across all rows/columns on this node. - size_t getLocalMaxNumRowEntries() const { - XPETRA_MONITOR("EpetraCrsMatrixT::getLocalMaxNumRowEntries"); - return mtx_->MaxNumEntries(); - } - - //! If matrix indices are in the local range, this function returns true. Otherwise, this function returns false. - bool isLocallyIndexed() const { - XPETRA_MONITOR("EpetraCrsMatrixT::isLocallyIndexed"); - return mtx_->IndicesAreLocal(); - } - - //! If matrix indices are in the global range, this function returns true. Otherwise, this function returns false. - bool isGloballyIndexed() const { - XPETRA_MONITOR("EpetraCrsMatrixT::isGloballyIndexed"); - return mtx_->IndicesAreGlobal(); - } - - //! Returns true if the matrix is in compute mode, i.e. if fillComplete() has been called. - bool isFillComplete() const { - XPETRA_MONITOR("EpetraCrsMatrixT::isFillComplete"); - if (isFillResumed_) - return false; - else - return mtx_->Filled(); - } - - //! Returns true if the matrix is in edit mode. - bool isFillActive() const { - XPETRA_MONITOR("EpetraCrsMatrixT::isFillActive"); - return !isFillComplete(); - } - - //! Returns the Frobenius norm of the matrix. - typename ScalarTraits::magnitudeType getFrobeniusNorm() const { - XPETRA_MONITOR("EpetraCrsMatrixT::getFrobeniusNorm"); - return mtx_->NormFrobenius(); - } - - //! Returns true if getLocalRowView() and getGlobalRowView() are valid for this class. - bool supportsRowViews() const { - XPETRA_MONITOR("EpetraCrsMatrixT::supportsRowViews"); - return true; - } - - //! Extract a list of entries in a specified local row of the matrix. Put into storage allocated by calling routine. - void getLocalRowCopy(LocalOrdinal LocalRow, const ArrayView &Indices, const ArrayView &Values, size_t &NumEntries) const { - XPETRA_MONITOR("EpetraCrsMatrixT::getLocalRowCopy"); - - int numEntries = -1; - XPETRA_ERR_CHECK(mtx_->ExtractMyRowCopy(LocalRow, Indices.size(), numEntries, Values.getRawPtr(), Indices.getRawPtr())); - NumEntries = numEntries; - } - - //! Extract a list of entries in a specified global row of this matrix. Put into pre-allocated storage. - void getGlobalRowCopy(GlobalOrdinal GlobalRow, const ArrayView &Indices, const ArrayView &Values, size_t &NumEntries) const { - XPETRA_MONITOR("EpetraCrsMatrixT::getGlobalRowCopy"); - - int numEntries = -1; - XPETRA_ERR_CHECK(mtx_->ExtractGlobalRowCopy(GlobalRow, Indices.size(), numEntries, Values.getRawPtr(), Indices.getRawPtr())); - NumEntries = numEntries; - } - - //! Extract a const, non-persisting view of global indices in a specified row of the matrix. - void getGlobalRowView(GlobalOrdinal GlobalRow, ArrayView &indices, ArrayView &values) const { - XPETRA_MONITOR("EpetraCrsMatrixT::getGlobalRowView"); - - int numEntries; - double *eValues; - GlobalOrdinal *eIndices; - - XPETRA_ERR_CHECK(mtx_->ExtractGlobalRowView(GlobalRow, numEntries, eValues, eIndices)); - if (numEntries == 0) { - eValues = NULL; - eIndices = NULL; - } // Cf. TEUCHOS_TEST_FOR_EXCEPT( p == 0 && size_in != 0 ) in Teuchos ArrayView constructor. - - indices = ArrayView(eIndices, numEntries); - values = ArrayView(eValues, numEntries); - } - - //! Extract a const, non-persisting view of local indices in a specified row of the matrix. - void getLocalRowView(LocalOrdinal LocalRow, ArrayView &indices, ArrayView &values) const { - XPETRA_MONITOR("EpetraCrsMatrixT::getLocalRowView"); - - int numEntries; - double *eValues; - int *eIndices; - - XPETRA_ERR_CHECK(mtx_->ExtractMyRowView(LocalRow, numEntries, eValues, eIndices)); - if (numEntries == 0) { - eValues = NULL; - eIndices = NULL; - } // Cf. TEUCHOS_TEST_FOR_EXCEPT( p == 0 && size_in != 0 ) in Teuchos ArrayView constructor. - - indices = ArrayView(eIndices, numEntries); - values = ArrayView(eValues, numEntries); - } - - //! Get a copy of the diagonal entries owned by this node, with local row indices. - void getLocalDiagCopy(Vector &diag) const { - XPETRA_MONITOR("EpetraCrsMatrixT::getLocalDiagCopy"); - mtx_->ExtractDiagonalCopy(toEpetra(diag)); - } - - //! Get offsets of the diagonal entries in the matrix. - void getLocalDiagOffsets(Teuchos::ArrayRCP & /* offsets */) const { - TEUCHOS_TEST_FOR_EXCEPTION(true, Xpetra::Exceptions::NotImplemented, "Xpetra::EpetraCrsMatrixT.getLocalDiagOffsets() is not implemented or supported."); - } - - //! Get a copy of the diagonal entries owned by this node, with local row indices, using row offsets. - void getLocalDiagCopy(Vector & /* diag */, const Teuchos::ArrayView & /* offsets */) const { - TEUCHOS_TEST_FOR_EXCEPTION(true, Xpetra::Exceptions::NotImplemented, "Xpetra::EpetraCrsMatrixT.getLocalDiagCopy using offsets is not implemented or supported."); - } - - //! Get a copy of the diagonal entries owned by this node, with local row indices, using row offsets. - void getLocalDiagCopy(Vector & /* diag */, const Kokkos::View & /* offsets */) const { - TEUCHOS_TEST_FOR_EXCEPTION(true, Xpetra::Exceptions::NotImplemented, "Xpetra::EpetraCrsMatrixT.getLocalDiagCopy using offsets is not implemented or supported."); - } - - //! Replace the diagonal entries of the matrix - void replaceDiag(const Vector &diag) { - mtx_->ReplaceDiagonalValues(toEpetra(diag)); - } - - void leftScale(const Vector &x) { - XPETRA_ERR_CHECK(mtx_->LeftScale(toEpetra(x))); - }; - void rightScale(const Vector &x) { - XPETRA_ERR_CHECK(mtx_->RightScale(toEpetra(x))); - }; - - //@} - - //! @name Methods implementing Operator - //@{ - - //! Computes the sparse matrix-multivector multiplication. - void apply(const MultiVector &X, MultiVector &Y, Teuchos::ETransp mode = Teuchos::NO_TRANS, Scalar alpha = ScalarTraits::one(), Scalar beta = ScalarTraits::zero()) const { - XPETRA_MONITOR("EpetraCrsMatrixT::apply"); - - // TEUCHOS_TEST_FOR_EXCEPTION((alpha != 1) || (beta != 0), Xpetra::Exceptions::NotImplemented, "Xpetra::EpetraCrsMatrixT.multiply() only accept alpha==1 and beta==0"); - - XPETRA_DYNAMIC_CAST(const EpetraMultiVectorT, X, eX, "Xpetra::EpetraCrsMatrixT->apply() only accept Xpetra::EpetraMultiVectorT as input arguments."); - XPETRA_DYNAMIC_CAST(EpetraMultiVectorT, Y, eY, "Xpetra::EpetraCrsMatrixT->apply() only accept Xpetra::EpetraMultiVectorT as input arguments."); - - TEUCHOS_TEST_FOR_EXCEPTION((mode != Teuchos::NO_TRANS) && (mode != Teuchos::TRANS), Xpetra::Exceptions::NotImplemented, "Xpetra::EpetraCrsMatrixT->apply() only accept mode == NO_TRANS or mode == TRANS"); - bool eTrans = toEpetra(mode); - - // /!\ UseTranspose value - TEUCHOS_TEST_FOR_EXCEPTION(mtx_->UseTranspose(), Xpetra::Exceptions::NotImplemented, "An exception is throw to let you know that Xpetra::EpetraCrsMatrixT->apply() do not take into account the UseTranspose() parameter of Epetra_CrsMatrix."); - - RCP epY = eY.getEpetra_MultiVector(); - - // helper vector: tmp = A*x - RCP tmp = Teuchos::rcp(new Epetra_MultiVector(*epY)); - tmp->PutScalar(0.0); - XPETRA_ERR_CHECK(mtx_->Multiply(eTrans, *eX.getEpetra_MultiVector(), *tmp)); - - // calculate alpha * A * x + beta * y - XPETRA_ERR_CHECK(eY.getEpetra_MultiVector()->Update(alpha, *tmp, beta)); - } - - void apply(const MultiVector &X, MultiVector &Y, Teuchos::ETransp mode, Scalar alpha, Scalar beta, bool sumInterfaceValues, const RCP > ®ionInterfaceImporter, const Teuchos::ArrayRCP ®ionInterfaceLIDs) const { - TEUCHOS_TEST_FOR_EXCEPTION(true, Xpetra::Exceptions::NotImplemented, "Xpetra::EpetraCrsMatrixT.apply() is not implemented for region matricies."); - } - - //! Returns the Map associated with the domain of this operator. This will be null until fillComplete() is called. - const RCP > getDomainMap() const { - XPETRA_MONITOR("EpetraCrsMatrixT::getDomainMap"); - return toXpetra(mtx_->DomainMap()); - } - - //! - const RCP > getRangeMap() const { - XPETRA_MONITOR("EpetraCrsMatrixT::getRangeMap"); - return toXpetra(mtx_->RangeMap()); - } - - //@} - - //! @name Overridden from Teuchos::Describable - //@{ - - //! A simple one-line description of this object. - std::string description() const { - XPETRA_MONITOR("EpetraCrsMatrixT::description"); - - // This implementation come from Tpetra_CrsMatrix_def.hpp (without modification) - std::ostringstream oss; - // TODO: oss << DistObject::description(); - if (isFillComplete()) { - oss << "{status = fill complete" - << ", global rows = " << getGlobalNumRows() - << ", global cols = " << getGlobalNumCols() - << ", global num entries = " << getGlobalNumEntries() - << "}"; - } else { - oss << "{status = fill not complete" - << ", global rows = " << getGlobalNumRows() - << "}"; - } - return oss.str(); - } - - //! Print the object with some verbosity level to an FancyOStream object. - void describe(Teuchos::FancyOStream &out, const Teuchos::EVerbosityLevel verbLevel = Teuchos::Describable::verbLevel_default) const { - XPETRA_MONITOR("EpetraCrsMatrixT::describe"); - - // This implementation come from Tpetra_CrsMatrix_def.hpp (without modification) - using std::endl; - using std::setw; - using Teuchos::VERB_DEFAULT; - using Teuchos::VERB_EXTREME; - using Teuchos::VERB_HIGH; - using Teuchos::VERB_LOW; - using Teuchos::VERB_MEDIUM; - using Teuchos::VERB_NONE; - Teuchos::EVerbosityLevel vl = verbLevel; - if (vl == VERB_DEFAULT) vl = VERB_LOW; - RCP > comm = this->getComm(); - const int myImageID = comm->getRank(), - numImages = comm->getSize(); - size_t width = 1; - for (size_t dec = 10; dec < getGlobalNumRows(); dec *= 10) { - ++width; - } - width = std::max(width, 11) + 2; - Teuchos::OSTab tab(out); - // none: print nothing - // low: print O(1) info from node 0 - // medium: print O(P) info, num entries per node - // high: print O(N) info, num entries per row - // extreme: print O(NNZ) info: print indices and values - // - // for medium and higher, print constituent objects at specified verbLevel - if (vl != VERB_NONE) { - if (myImageID == 0) out << this->description() << std::endl; - // O(1) globals, minus what was already printed by description() - if (isFillComplete() && myImageID == 0) { - out << "Global max number of entries = " << getGlobalMaxNumRowEntries() << std::endl; - } - // constituent objects - if (vl == VERB_MEDIUM || vl == VERB_HIGH || vl == VERB_EXTREME) { - if (myImageID == 0) out << "\nRow map: " << std::endl; - getRowMap()->describe(out, vl); - // - if (getColMap() != null) { - if (getColMap() == getRowMap()) { - if (myImageID == 0) out << "\nColumn map is row map."; - } else { - if (myImageID == 0) out << "\nColumn map: " << std::endl; - getColMap()->describe(out, vl); - } - } - if (getDomainMap() != null) { - if (getDomainMap() == getRowMap()) { - if (myImageID == 0) out << "\nDomain map is row map."; - } else if (getDomainMap() == getColMap()) { - if (myImageID == 0) out << "\nDomain map is row map."; - } else { - if (myImageID == 0) out << "\nDomain map: " << std::endl; - getDomainMap()->describe(out, vl); - } - } - if (getRangeMap() != null) { - if (getRangeMap() == getDomainMap()) { - if (myImageID == 0) out << "\nRange map is domain map." << std::endl; - } else if (getRangeMap() == getRowMap()) { - if (myImageID == 0) out << "\nRange map is row map." << std::endl; - } else { - if (myImageID == 0) out << "\nRange map: " << std::endl; - getRangeMap()->describe(out, vl); - } - } - if (myImageID == 0) out << std::endl; - } - // O(P) data - if (vl == VERB_MEDIUM || vl == VERB_HIGH || vl == VERB_EXTREME) { - for (int imageCtr = 0; imageCtr < numImages; ++imageCtr) { - if (myImageID == imageCtr) { - out << "Node ID = " << imageCtr << std::endl; - // TODO: need a graph - // if (staticGraph_->indicesAreAllocated() == false) { - // out << "Node not allocated" << std::endl; - // } - // else { - // out << "Node number of allocated entries = " << staticGraph_->getLocalAllocationSize() << std::endl; - // } - - // TMP: - // const Epetra_CrsGraph & staticGraph_ = mtx_->Graph(); - // End of TMP - - out << "Node number of entries = " << getLocalNumEntries() << std::endl; - out << "Node max number of entries = " << getLocalMaxNumRowEntries() << std::endl; - } - comm->barrier(); - comm->barrier(); - comm->barrier(); - } - } - // O(N) and O(NNZ) data - if (vl == VERB_HIGH || vl == VERB_EXTREME) { - for (int imageCtr = 0; imageCtr < numImages; ++imageCtr) { - if (myImageID == imageCtr) { - out << std::setw(width) << "Node ID" - << std::setw(width) << "Global Row" - << std::setw(width) << "Num Entries"; - if (vl == VERB_EXTREME) { - out << std::setw(width) << "(Index,Value)"; - } - out << std::endl; - for (size_t r = 0; r < getLocalNumRows(); ++r) { - const size_t nE = getNumEntriesInLocalRow(r); - GlobalOrdinal gid = getRowMap()->getGlobalElement(r); - out << std::setw(width) << myImageID - << std::setw(width) << gid - << std::setw(width) << nE; - if (vl == VERB_EXTREME) { - if (isGloballyIndexed()) { - ArrayView rowinds; - ArrayView rowvals; - getGlobalRowView(gid, rowinds, rowvals); - for (size_t j = 0; j < nE; ++j) { - out << " (" << rowinds[j] - << ", " << rowvals[j] - << ") "; - } - } else if (isLocallyIndexed()) { - ArrayView rowinds; - ArrayView rowvals; - getLocalRowView(r, rowinds, rowvals); - for (size_t j = 0; j < nE; ++j) { - out << " (" << getColMap()->getGlobalElement(rowinds[j]) - << ", " << rowvals[j] - << ") "; - } - } - } - out << std::endl; - } - } - comm->barrier(); - comm->barrier(); - comm->barrier(); - } - } - } - } - - void setObjectLabel(const std::string &objectLabel) { - Teuchos::LabeledObject::setObjectLabel(objectLabel); - mtx_->SetLabel(objectLabel.c_str()); - } - //@} - - //! Deep copy constructor - EpetraCrsMatrixT(const EpetraCrsMatrixT &matrix) - : mtx_(Teuchos::rcp(new Epetra_CrsMatrix(*(matrix.mtx_)))) - , isFillResumed_(false) {} - - //! Implements DistObject interface - //{@ - - //! Access function for the Tpetra::Map this DistObject was constructed with. - Teuchos::RCP > getMap() const { - XPETRA_MONITOR("EpetraCrsMatrixT::getMap"); - return toXpetra(mtx_->Map()); - } - - //! Import. - void doImport(const DistObject &source, - const Import &importer, CombineMode CM) { - XPETRA_MONITOR("EpetraCrsMatrixT::doImport"); - - XPETRA_DYNAMIC_CAST(const EpetraCrsMatrixT, source, tSource, "Xpetra::EpetraCrsMatrixT::doImport only accept Xpetra::EpetraCrsMatrixT as input arguments."); - XPETRA_DYNAMIC_CAST(const EpetraImportT, importer, tImporter, "Xpetra::EpetraCrsMatrixT::doImport only accept Xpetra::EpetraImportT as input arguments."); - - RCP v = tSource.getEpetra_CrsMatrix(); - int err = mtx_->Import(*v, *tImporter.getEpetra_Import(), toEpetra(CM)); - TEUCHOS_TEST_FOR_EXCEPTION(err != 0, std::runtime_error, "Catch error code returned by Epetra."); - } - - //! Export. - void doExport(const DistObject &dest, - const Import &importer, CombineMode CM) { - XPETRA_MONITOR("EpetraCrsMatrixT::doExport"); - - XPETRA_DYNAMIC_CAST(const EpetraCrsMatrixT, dest, tDest, "Xpetra::EpetraCrsMatrixT::doImport only accept Xpetra::EpetraCrsMatrixT as input arguments."); - XPETRA_DYNAMIC_CAST(const EpetraImportT, importer, tImporter, "Xpetra::EpetraCrsMatrixT::doImport only accept Xpetra::EpetraImportT as input arguments."); - - RCP v = tDest.getEpetra_CrsMatrix(); - int err = mtx_->Export(*v, *tImporter.getEpetra_Import(), toEpetra(CM)); - TEUCHOS_TEST_FOR_EXCEPTION(err != 0, std::runtime_error, "Catch error code returned by Epetra."); - } - - //! Import (using an Exporter). - void doImport(const DistObject &source, - const Export &exporter, CombineMode CM) { - XPETRA_MONITOR("EpetraCrsMatrixT::doImport"); - - XPETRA_DYNAMIC_CAST(const EpetraCrsMatrixT, source, tSource, "Xpetra::EpetraCrsMatrixT::doImport only accept Xpetra::EpetraCrsMatrixT as input arguments."); - XPETRA_DYNAMIC_CAST(const EpetraExportT, exporter, tExporter, "Xpetra::EpetraCrsMatrixT::doImport only accept Xpetra::EpetraImportT as input arguments."); - - RCP v = tSource.getEpetra_CrsMatrix(); - int err = mtx_->Import(*v, *tExporter.getEpetra_Export(), toEpetra(CM)); - TEUCHOS_TEST_FOR_EXCEPTION(err != 0, std::runtime_error, "Catch error code returned by Epetra."); - } - - //! Export (using an Importer). - void doExport(const DistObject &dest, - const Export &exporter, CombineMode CM) { - XPETRA_MONITOR("EpetraCrsMatrixT::doExport"); - - XPETRA_DYNAMIC_CAST(const EpetraCrsMatrixT, dest, tDest, "Xpetra::EpetraCrsMatrixT::doImport only accept Xpetra::EpetraCrsMatrixT as input arguments."); - XPETRA_DYNAMIC_CAST(const EpetraExportT, exporter, tExporter, "Xpetra::EpetraCrsMatrixT::doImport only accept Xpetra::EpetraImportT as input arguments."); - - RCP v = tDest.getEpetra_CrsMatrix(); - int err = mtx_->Export(*v, *tExporter.getEpetra_Export(), toEpetra(CM)); - TEUCHOS_TEST_FOR_EXCEPTION(err != 0, std::runtime_error, "Catch error code returned by Epetra."); - } - - void removeEmptyProcessesInPlace(const Teuchos::RCP > &newMap) { - XPETRA_MONITOR("EpetraCrsMatrixT::removeEmptyProcessesInPlace"); - const Epetra_Map *newMapEpetra = (!newMap.is_null()) ? &toEpetra(newMap) : 0; - int err = mtx_->RemoveEmptyProcessesInPlace(newMapEpetra); - TEUCHOS_TEST_FOR_EXCEPTION(err != 0, std::runtime_error, "Caught nonzero error code " + std::to_string(err) + " returned by Epetra."); - } - - //@} - - //! @name Xpetra specific - //@{ - - //! Does this have an underlying matrix - bool hasMatrix() const { return !mtx_.is_null(); } - - //! EpetraCrsMatrixT constructor to wrap a Epetra_CrsMatrix object - EpetraCrsMatrixT(const Teuchos::RCP &mtx) - : mtx_(mtx) - , isFillResumed_(false) {} - - //! Get the underlying Epetra matrix - RCP getEpetra_CrsMatrix() const { return mtx_; } - - //! Get the underlying Epetra matrix - RCP getEpetra_CrsMatrixNonConst() const { return mtx_; } // TODO: remove - -#ifdef HAVE_XPETRA_TPETRA - /// \brief Compatibility layer for accessing the matrix data through a Kokkos interface - local_matrix_type getLocalMatrix() const { - RCP matrix = getEpetra_CrsMatrixNonConst(); - - const int numRows = matrix->NumMyRows(); - const int numCols = matrix->NumMyCols(); - const int nnz = matrix->NumMyNonzeros(); - - int *rowptr; - int *colind; - double *vals; - int rv = matrix->ExtractCrsDataPointers(rowptr, colind, vals); - TEUCHOS_TEST_FOR_EXCEPTION(rv, std::runtime_error, "Xpetra::CrsMatrix<>::getLocalMatrix: failed in ExtractCrsDataPointers"); - - // Transform int* rowptr array to size_type* array - typename local_matrix_type::row_map_type::non_const_type kokkosRowPtr(Kokkos::ViewAllocateWithoutInitializing("local row map"), numRows + 1); - for (size_t i = 0; i < kokkosRowPtr.size(); i++) - kokkosRowPtr(i) = Teuchos::asSafe(rowptr[i]); - - // create Kokkos::Views - typename local_matrix_type::index_type kokkosColind(colind, nnz); - typename local_matrix_type::values_type kokkosVals(vals, nnz); - - local_matrix_type localMatrix = local_matrix_type("LocalMatrix", numRows, numCols, nnz, kokkosVals, kokkosRowPtr, kokkosColind); - - return localMatrix; - } - - void setAllValues(const typename local_matrix_type::row_map_type &ptr, - const typename local_matrix_type::StaticCrsGraphType::entries_type::non_const_type &ind, - const typename local_matrix_type::values_type &val) { - // Check sizes - TEUCHOS_TEST_FOR_EXCEPTION(Teuchos::as(ptr.size()) != getLocalNumRows() + 1, Xpetra::Exceptions::RuntimeError, - "An exception is thrown to let you know that the size of your rowptr array is incorrect."); - TEUCHOS_TEST_FOR_EXCEPTION(val.size() != ind.size(), Xpetra::Exceptions::RuntimeError, - "An exception is thrown to let you know that you mismatched your pointers."); - - // Check pointers - if (val.size() > 0) { - TEUCHOS_TEST_FOR_EXCEPTION(ind.data() != mtx_->ExpertExtractIndices().Values(), Xpetra::Exceptions::RuntimeError, - "An exception is thrown to let you know that you mismatched your pointers."); - TEUCHOS_TEST_FOR_EXCEPTION(val.data() != mtx_->ExpertExtractValues(), Xpetra::Exceptions::RuntimeError, - "An exception is thrown to let you know that you mismatched your pointers."); - } - - // We have to make a copy here, it is unavoidable - // See comments in allocateAllValues - const size_t N = getLocalNumRows(); - - Epetra_IntSerialDenseVector &myRowptr = mtx_->ExpertExtractIndexOffset(); - myRowptr.Resize(N + 1); - for (size_t i = 0; i < N + 1; i++) - myRowptr[i] = Teuchos::as(ptr(i)); - } - - LocalOrdinal GetStorageBlockSize() const { return 1; } - - private: -#else -#ifdef __GNUC__ -#warning "Xpetra Kokkos interface for CrsMatrix is enabled (HAVE_XPETRA_KOKKOS_REFACTOR) but Tpetra is disabled. The Kokkos interface needs Tpetra to be enabled, too." -#endif -#endif - - //@} - - void residual(const MultiVector &X, - const MultiVector &B, - MultiVector &R) const { - Scalar one = Teuchos::ScalarTraits::one(), negone = -one; - apply(X, R); - R.update(one, B, negone); - } - - private: - RCP mtx_; - - bool isFillResumed_; //< For Epetra, fillResume() is a fictive operation but we need to keep track of it. This boolean is true only is resumeFill() have been called and fillComplete() have not been called afterward. - -}; // EpetraCrsMatrixT class - -#endif // #ifndef XPETRA_EPETRA_NO_64BIT_GLOBAL_INDICES - -} // namespace Xpetra - -#define XPETRA_EPETRACRSMATRIX_SHORT -#endif // XPETRA_EPETRACRSMATRIX_HPP diff --git a/packages/xpetra/src/CrsMatrix/Xpetra_TpetraBlockCrsMatrix_decl.hpp b/packages/xpetra/src/CrsMatrix/Xpetra_TpetraBlockCrsMatrix_decl.hpp index aa5afb701896..d197001eed5a 100644 --- a/packages/xpetra/src/CrsMatrix/Xpetra_TpetraBlockCrsMatrix_decl.hpp +++ b/packages/xpetra/src/CrsMatrix/Xpetra_TpetraBlockCrsMatrix_decl.hpp @@ -335,7 +335,6 @@ class TpetraBlockCrsMatrix //! Get the underlying Tpetra matrix RCP > getTpetra_BlockCrsMatrixNonConst() const; -#ifdef HAVE_XPETRA_TPETRA // using local_matrix_type = typename Xpetra::CrsMatrix::local_matrix_type; using local_matrix_type = typename CrsMatrix::local_matrix_type; @@ -345,7 +344,6 @@ class TpetraBlockCrsMatrix void setAllValues(const typename local_matrix_type::row_map_type &ptr, const typename local_matrix_type::StaticCrsGraphType::entries_type::non_const_type &ind, const typename local_matrix_type::values_type &val); -#endif // HAVE_XPETRA_TPETRA //! Returns the block size of the storage mechanism LocalOrdinal GetStorageBlockSize() const { return mtx_->getBlockSize(); } diff --git a/packages/xpetra/src/CrsMatrix/Xpetra_TpetraBlockCrsMatrix_def.hpp b/packages/xpetra/src/CrsMatrix/Xpetra_TpetraBlockCrsMatrix_def.hpp index 1fd843f06b60..97dd74886c53 100644 --- a/packages/xpetra/src/CrsMatrix/Xpetra_TpetraBlockCrsMatrix_def.hpp +++ b/packages/xpetra/src/CrsMatrix/Xpetra_TpetraBlockCrsMatrix_def.hpp @@ -674,8 +674,6 @@ TpetraBlockCrsMatrix:: return mtx_; } -#ifdef HAVE_XPETRA_TPETRA - // was: typedef typename Xpetra::CrsMatrix::local_matrix_type local_matrix_type; // using local_matrix_type = typename CrsMatrix::local_matrix_type; @@ -713,626 +711,6 @@ void TpetraBlockCrsMatrix:: throw std::runtime_error("Xpetra::TpetraBlockCrsMatrix does not support setAllValues due to missing Kokkos::CrsMatrix in Tpetra's experimental implementation in " + std::string(__FILE__) + ":" + std::to_string(__LINE__)); } -#endif // HAVE_XPETRA_TPETRA - -#ifdef HAVE_XPETRA_EPETRA - -#if ((defined(EPETRA_HAVE_OMP) && (!defined(HAVE_TPETRA_INST_OPENMP) || !defined(HAVE_TPETRA_INST_INT_INT))) || \ - (!defined(EPETRA_HAVE_OMP) && (!defined(HAVE_TPETRA_INST_SERIAL) || !defined(HAVE_TPETRA_INST_INT_INT)))) - -// specialization of TpetraBlockCrsMatrix for GO=LO=int and Node=EpetraNode -template -class TpetraBlockCrsMatrix - : public CrsMatrix //, public TpetraRowMatrix -{ - // The following typedef are used by the XPETRA_DYNAMIC_CAST() macro. - typedef int LocalOrdinal; - typedef int GlobalOrdinal; - typedef EpetraNode Node; - typedef TpetraBlockCrsMatrix TpetraBlockCrsMatrixClass; - typedef TpetraVector TpetraVectorClass; - typedef TpetraImport TpetraImportClass; - typedef TpetraExport TpetraExportClass; - - public: - //! @name Constructor/Destructor Methods - - //! Constructor specifying fixed number of entries for each row (not implemented) - TpetraBlockCrsMatrix(const Teuchos::RCP > &rowMap, size_t maxNumEntriesPerRow, const Teuchos::RCP ¶ms = Teuchos::null) { - XPETRA_TPETRA_ETI_EXCEPTION(typeid(TpetraBlockCrsMatrix).name(), typeid(TpetraBlockCrsMatrix).name(), "int", typeid(EpetraNode).name()); - } - - //! Constructor specifying (possibly different) number of entries in each row (not implemented) - TpetraBlockCrsMatrix(const Teuchos::RCP > &rowMap, const ArrayRCP &NumEntriesPerRowToAlloc, const Teuchos::RCP ¶ms = Teuchos::null) { - XPETRA_TPETRA_ETI_EXCEPTION(typeid(TpetraBlockCrsMatrix).name(), typeid(TpetraBlockCrsMatrix).name(), "int", typeid(EpetraNode).name()); - } - - //! Constructor specifying column Map and fixed number of entries for each row (not implemented) - TpetraBlockCrsMatrix(const Teuchos::RCP > &rowMap, const Teuchos::RCP > &colMap, size_t maxNumEntriesPerRow, const Teuchos::RCP ¶ms = Teuchos::null) { - XPETRA_TPETRA_ETI_EXCEPTION(typeid(TpetraBlockCrsMatrix).name(), typeid(TpetraBlockCrsMatrix).name(), "int", typeid(EpetraNode).name()); - } - - //! Constructor specifying column Map and number of entries in each row (not implemented) - TpetraBlockCrsMatrix(const Teuchos::RCP > &rowMap, const Teuchos::RCP > &colMap, const ArrayRCP &NumEntriesPerRowToAlloc, const Teuchos::RCP ¶ms = Teuchos::null) { - XPETRA_TPETRA_ETI_EXCEPTION(typeid(TpetraBlockCrsMatrix).name(), typeid(TpetraBlockCrsMatrix).name(), "int", typeid(EpetraNode).name()); - } - - //! Constructor specifying a previously constructed graph ( not implemented ) - TpetraBlockCrsMatrix(const Teuchos::RCP > &graph, const Teuchos::RCP ¶ms = Teuchos::null) { - XPETRA_TPETRA_ETI_EXCEPTION(typeid(TpetraBlockCrsMatrix).name(), typeid(TpetraBlockCrsMatrix).name(), "int", typeid(EpetraNode).name()); - } - - //! Constructor specifying a previously constructed graph & blocksize - TpetraBlockCrsMatrix(const Teuchos::RCP > &graph, const LocalOrdinal blockSize) { - XPETRA_TPETRA_ETI_EXCEPTION(typeid(TpetraBlockCrsMatrix).name(), typeid(TpetraBlockCrsMatrix).name(), "int", typeid(EpetraNode).name()); - } - - //! Constructor for a fused import ( not implemented ) - TpetraBlockCrsMatrix(const Teuchos::RCP > &sourceMatrix, - const Import &importer, - const Teuchos::RCP > &domainMap = Teuchos::null, - const Teuchos::RCP > &rangeMap = Teuchos::null, - const Teuchos::RCP ¶ms = Teuchos::null) { XPETRA_TPETRA_ETI_EXCEPTION(typeid(TpetraBlockCrsMatrix).name(), typeid(TpetraBlockCrsMatrix).name(), "int", typeid(EpetraNode).name()); } - - //! Constructor for a fused export (not implemented( - TpetraBlockCrsMatrix(const Teuchos::RCP > &sourceMatrix, - const Export &exporter, - const Teuchos::RCP > &domainMap = Teuchos::null, - const Teuchos::RCP > &rangeMap = Teuchos::null, - const Teuchos::RCP ¶ms = Teuchos::null) { XPETRA_TPETRA_ETI_EXCEPTION(typeid(TpetraBlockCrsMatrix).name(), typeid(TpetraBlockCrsMatrix).name(), "int", typeid(EpetraNode).name()); } - - //! Constructor for a fused import ( not implemented ) - TpetraBlockCrsMatrix(const Teuchos::RCP > &sourceMatrix, - const Import &RowImporter, - const Teuchos::RCP > DomainImporter, - const Teuchos::RCP > &domainMap, - const Teuchos::RCP > &rangeMap, - const Teuchos::RCP ¶ms) { XPETRA_TPETRA_ETI_EXCEPTION(typeid(TpetraBlockCrsMatrix).name(), typeid(TpetraBlockCrsMatrix).name(), "int", typeid(EpetraNode).name()); } - - //! Constructor for a fused export (not implemented( - TpetraBlockCrsMatrix(const Teuchos::RCP > &sourceMatrix, - const Export &RowExporter, - const Teuchos::RCP > DomainExporter, - const Teuchos::RCP > &domainMap, - const Teuchos::RCP > &rangeMap, - const Teuchos::RCP ¶ms) { - XPETRA_TPETRA_ETI_EXCEPTION(typeid(TpetraBlockCrsMatrix).name(), typeid(TpetraBlockCrsMatrix).name(), "int", typeid(EpetraNode).name()); - } - - //! Destructor. - ~TpetraBlockCrsMatrix() {} - - //! @name Insertion/Removal Methods - - //! Insert matrix entries, using global IDs (not implemented) - void insertGlobalValues(GlobalOrdinal globalRow, const ArrayView &cols, const ArrayView &vals) {} - - //! Insert matrix entries, using local IDs (not implemented) - void insertLocalValues(LocalOrdinal localRow, const ArrayView &cols, const ArrayView &vals) {} - - //! Replace matrix entries, using global IDs (not implemented) - void replaceGlobalValues(GlobalOrdinal globalRow, const ArrayView &cols, const ArrayView &vals) {} - - //! Replace matrix entries, using local IDs. - void replaceLocalValues(LocalOrdinal localRow, const ArrayView &cols, const ArrayView &vals) {} - - //! Set all matrix entries equal to scalarThis. - void setAllToScalar(const Scalar &alpha) {} - - //! Scale the current values of a matrix, this = alpha*this (not implemented) - void scale(const Scalar &alpha) {} - - //! Allocates and returns ArrayRCPs of the Crs arrays --- This is an Xpetra-only routine. - //** \warning This is an expert-only routine and should not be called from user code. (not implemented) - void allocateAllValues(size_t numNonZeros, ArrayRCP &rowptr, ArrayRCP &colind, ArrayRCP &values) {} - - //! Sets the 1D pointer arrays of the graph (not impelmented) - void setAllValues(const ArrayRCP &rowptr, const ArrayRCP &colind, const ArrayRCP &values) {} - - //! Gets the 1D pointer arrays of the graph (not implemented) - void getAllValues(ArrayRCP &rowptr, ArrayRCP &colind, ArrayRCP &values) const {} - - //! Gets the 1D pointer arrays of the graph (not implemented) - void getAllValues(ArrayRCP &values) {} - - //! @name Transformational Methods - - //! - void resumeFill(const RCP ¶ms = null) { /*noop*/ - } - - //! Signal that data entry is complete, specifying domain and range maps. - void fillComplete(const RCP > &domainMap, const RCP > &rangeMap, const RCP ¶ms = null) { /*noop*/ - } - - //! Signal that data entry is complete. - void fillComplete(const RCP ¶ms = null) { /*noop*/ - } - - //! Replaces the current domainMap and importer with the user-specified objects. - void replaceDomainMapAndImporter(const Teuchos::RCP > &newDomainMap, Teuchos::RCP > &newImporter) {} - - //! Expert static fill complete - void expertStaticFillComplete(const RCP > &domainMap, - const RCP > &rangeMap, - const RCP > &importer = Teuchos::null, - const RCP > &exporter = Teuchos::null, - const RCP ¶ms = Teuchos::null) {} - - //! @name Methods implementing RowMatrix - - //! Returns the Map that describes the row distribution in this matrix. - const RCP > getRowMap() const { return Teuchos::null; } - - //! Returns the Map that describes the column distribution in this matrix. - const RCP > getColMap() const { return Teuchos::null; } - - //! Returns the CrsGraph associated with this matrix. - RCP > getCrsGraph() const { return Teuchos::null; } - - //! Number of global elements in the row map of this matrix. - global_size_t getGlobalNumRows() const { return 0; } - - //! Number of global columns in the matrix. - global_size_t getGlobalNumCols() const { return 0; } - - //! Returns the number of matrix rows owned on the calling node. - size_t getLocalNumRows() const { return 0; } - - //! Returns the number of columns connected to the locally owned rows of this matrix. - size_t getLocalNumCols() const { return 0; } - - //! Returns the global number of entries in this matrix. - global_size_t getGlobalNumEntries() const { return 0; } - - //! Returns the local number of entries in this matrix. - size_t getLocalNumEntries() const { return 0; } - - //! Returns the current number of entries on this node in the specified local row. - size_t getNumEntriesInLocalRow(LocalOrdinal localRow) const { return 0; } - - //! Returns the current number of entries in the (locally owned) global row. - size_t getNumEntriesInGlobalRow(GlobalOrdinal globalRow) const { return 0; } - - //! Returns the maximum number of entries across all rows/columns on all nodes. - size_t getGlobalMaxNumRowEntries() const { return 0; } - - //! Returns the maximum number of entries across all rows/columns on this node. - size_t getLocalMaxNumRowEntries() const { return 0; } - - //! If matrix indices are in the local range, this function returns true. Otherwise, this function returns false. - bool isLocallyIndexed() const { return false; } - - //! If matrix indices are in the global range, this function returns true. Otherwise, this function returns false. - bool isGloballyIndexed() const { return false; } - - //! Returns true if the matrix is in compute mode, i.e. if fillComplete() has been called. - bool isFillComplete() const { return false; } - - //! Returns true if the matrix is in edit mode. - bool isFillActive() const { return false; } - - //! Returns the Frobenius norm of the matrix. - typename ScalarTraits::magnitudeType getFrobeniusNorm() const { return Teuchos::ScalarTraits::magnitude(Teuchos::ScalarTraits::zero()); } - - //! Returns true if getLocalRowView() and getGlobalRowView() are valid for this class. - bool supportsRowViews() const { return false; } - - //! Extract a list of entries in a specified local row of the matrix. Put into storage allocated by calling routine. - void getLocalRowCopy(LocalOrdinal LocalRow, const ArrayView &Indices, const ArrayView &Values, size_t &NumEntries) const {} - - //! Extract a const, non-persisting view of global indices in a specified row of the matrix. - void getGlobalRowView(GlobalOrdinal GlobalRow, ArrayView &indices, ArrayView &values) const {} - - //! Extract a list of entries in a specified global row of this matrix. Put into pre-allocated storage. - void getGlobalRowCopy(GlobalOrdinal GlobalRow, const ArrayView &indices, const ArrayView &values, size_t &numEntries) const {} - - //! Extract a const, non-persisting view of local indices in a specified row of the matrix. - void getLocalRowView(LocalOrdinal LocalRow, ArrayView &indices, ArrayView &values) const {} - - //! Returns true if globalConstants have been computed; false otherwise - bool haveGlobalConstants() const { return false; } - - //! @name Methods implementing Operator - - //! Computes the sparse matrix-multivector multiplication. - void apply(const MultiVector &X, MultiVector &Y, Teuchos::ETransp mode = Teuchos::NO_TRANS, Scalar alpha = ScalarTraits::one(), Scalar beta = ScalarTraits::zero()) const {} - - //! Returns the Map associated with the domain of this operator. This will be null until fillComplete() is called. - const RCP > getDomainMap() const { return Teuchos::null; } - - //! - const RCP > getRangeMap() const { return Teuchos::null; } - - //! @name Overridden from Teuchos::Describable - - //! A simple one-line description of this object. - std::string description() const { return std::string(""); } - - //! Print the object with some verbosity level to an FancyOStream object. - void describe(Teuchos::FancyOStream &out, const Teuchos::EVerbosityLevel verbLevel = Teuchos::Describable::verbLevel_default) const {} - - //! Deep copy constructor - TpetraBlockCrsMatrix(const TpetraBlockCrsMatrix &matrix) {} - - //! Get a copy of the diagonal entries owned by this node, with local row idices - void getLocalDiagCopy(Vector &diag) const {} - - //! Get offsets of the diagonal entries in the matrix. - void getLocalDiagOffsets(Teuchos::ArrayRCP &offsets) const {} - - //! Get a copy of the diagonal entries owned by this node, with local row indices. - void getLocalDiagCopy(Vector &diag, const Teuchos::ArrayView &offsets) const {} - - //! Get a copy of the diagonal entries owned by this node, with local row indices. - void getLocalDiagCopy(Vector &diag, const Kokkos::View &offsets) const {} - - void replaceDiag(const Vector &diag) {} - - void leftScale(const Vector &x) {} - void rightScale(const Vector &x) {} - - //! Implements DistObject interface - - //! Access function for the Tpetra::Map this DistObject was constructed with. - Teuchos::RCP > getMap() const { return Teuchos::null; } - - //! Import. - void doImport(const DistObject &source, - const Import &importer, CombineMode CM) {} - - //! Export. - void doExport(const DistObject &dest, - const Import &importer, CombineMode CM) {} - - //! Import (using an Exporter). - void doImport(const DistObject &source, - const Export &exporter, CombineMode CM) {} - - //! Export (using an Importer). - void doExport(const DistObject &dest, - const Export &exporter, CombineMode CM) {} - - void removeEmptyProcessesInPlace(const Teuchos::RCP > &newMap) {} - - //! @name Xpetra specific - - //! Does this have an underlying matrix - bool hasMatrix() const { return false; } - - //! TpetraBlockCrsMatrix constructor to wrap a Tpetra::BlockCrsMatrix object - TpetraBlockCrsMatrix(const Teuchos::RCP > &mtx) { - XPETRA_TPETRA_ETI_EXCEPTION(typeid(TpetraBlockCrsMatrix).name(), typeid(TpetraBlockCrsMatrix).name(), "int", typeid(EpetraNode).name()); - } - - //! Get the underlying Tpetra matrix - RCP > getTpetra_BlockCrsMatrix() const { return Teuchos::null; } - - //! Get the underlying Tpetra matrix - RCP > getTpetra_BlockCrsMatrixNonConst() const { return Teuchos::null; } - -#ifdef HAVE_XPETRA_TPETRA - typedef typename Xpetra::CrsMatrix::local_matrix_type local_matrix_type; - - local_matrix_type getLocalMatrix() const { - throw std::runtime_error("Xpetra::TpetraBlockCrsMatrix does not support getLocalMatrix due to missing Kokkos::CrsMatrix in Tpetra's experimental implementation in " + std::string(__FILE__) + ":" + std::to_string(__LINE__)); - local_matrix_type ret; - return ret; // make compiler happy - } - - void setAllValues(const typename local_matrix_type::row_map_type &ptr, - const typename local_matrix_type::StaticCrsGraphType::entries_type::non_const_type &ind, - const typename local_matrix_type::values_type &val) { - throw std::runtime_error("Xpetra::TpetraBlockCrsMatrix does not support setAllValues due to missing Kokkos::CrsMatrix in Tpetra's experimental implementation in " + std::string(__FILE__) + ":" + std::to_string(__LINE__)); - } -#endif // HAVE_XPETRA_TPETRA - -}; // TpetraBlockCrsMatrix class - -#endif // #if ((defined(EPETRA_HAVE_OMP) && (!defined(HAVE_TPETRA_INST_OPENMP) || !defined(HAVE_TPETRA_INST_INT_INT))) - -#if ((defined(EPETRA_HAVE_OMP) && (!defined(HAVE_TPETRA_INST_OPENMP) || !defined(HAVE_TPETRA_INST_INT_LONG_LONG))) || \ - (!defined(EPETRA_HAVE_OMP) && (!defined(HAVE_TPETRA_INST_SERIAL) || !defined(HAVE_TPETRA_INST_INT_LONG_LONG)))) - -// specialization of TpetraBlockCrsMatrix for GO=long long and Node=EpetraNode -template -class TpetraBlockCrsMatrix - : public CrsMatrix //, public TpetraRowMatrix -{ - // The following typedef are used by the XPETRA_DYNAMIC_CAST() macro. - typedef int LocalOrdinal; - typedef long long GlobalOrdinal; - typedef EpetraNode Node; - typedef TpetraBlockCrsMatrix TpetraBlockCrsMatrixClass; - typedef TpetraVector TpetraVectorClass; - typedef TpetraImport TpetraImportClass; - typedef TpetraExport TpetraExportClass; - - public: - //! @name Constructor/Destructor Methods - - //! Constructor specifying fixed number of entries for each row (not implemented) - TpetraBlockCrsMatrix(const Teuchos::RCP > &rowMap, size_t maxNumEntriesPerRow, const Teuchos::RCP ¶ms = Teuchos::null) { XPETRA_TPETRA_ETI_EXCEPTION(typeid(TpetraBlockCrsMatrix).name(), typeid(TpetraBlockCrsMatrix).name(), "long long", typeid(EpetraNode).name()); } - - //! Constructor specifying (possibly different) number of entries in each row (not implemented) - TpetraBlockCrsMatrix(const Teuchos::RCP > &rowMap, const ArrayRCP &NumEntriesPerRowToAlloc, const Teuchos::RCP ¶ms = Teuchos::null) { XPETRA_TPETRA_ETI_EXCEPTION(typeid(TpetraBlockCrsMatrix).name(), typeid(TpetraBlockCrsMatrix).name(), "long long", typeid(EpetraNode).name()); } - - //! Constructor specifying column Map and fixed number of entries for each row (not implemented) - TpetraBlockCrsMatrix(const Teuchos::RCP > &rowMap, const Teuchos::RCP > &colMap, size_t maxNumEntriesPerRow, const Teuchos::RCP ¶ms = Teuchos::null) { XPETRA_TPETRA_ETI_EXCEPTION(typeid(TpetraBlockCrsMatrix).name(), typeid(TpetraBlockCrsMatrix).name(), "long long", typeid(EpetraNode).name()); } - - //! Constructor specifying column Map and number of entries in each row (not implemented) - TpetraBlockCrsMatrix(const Teuchos::RCP > &rowMap, const Teuchos::RCP > &colMap, const ArrayRCP &NumEntriesPerRowToAlloc, const Teuchos::RCP ¶ms = Teuchos::null) { XPETRA_TPETRA_ETI_EXCEPTION(typeid(TpetraBlockCrsMatrix).name(), typeid(TpetraBlockCrsMatrix).name(), "long long", typeid(EpetraNode).name()); } - - //! Constructor specifying a previously constructed graph ( not implemented ) - TpetraBlockCrsMatrix(const Teuchos::RCP > &graph, const Teuchos::RCP ¶ms = Teuchos::null) { XPETRA_TPETRA_ETI_EXCEPTION(typeid(TpetraBlockCrsMatrix).name(), typeid(TpetraBlockCrsMatrix).name(), "long long", typeid(EpetraNode).name()); } - - //! Constructor specifying a previously constructed graph & blocksize - TpetraBlockCrsMatrix(const Teuchos::RCP > &graph, const LocalOrdinal blockSize) { XPETRA_TPETRA_ETI_EXCEPTION(typeid(TpetraBlockCrsMatrix).name(), typeid(TpetraBlockCrsMatrix).name(), "long long", typeid(EpetraNode).name()); } - - //! Constructor for a fused import (not implemented) - TpetraBlockCrsMatrix(const Teuchos::RCP > &sourceMatrix, - const Import &importer, - const Teuchos::RCP > &domainMap = Teuchos::null, - const Teuchos::RCP > &rangeMap = Teuchos::null, - const Teuchos::RCP ¶ms = Teuchos::null) { XPETRA_TPETRA_ETI_EXCEPTION(typeid(TpetraBlockCrsMatrix).name(), typeid(TpetraBlockCrsMatrix).name(), "long long", typeid(EpetraNode).name()); } - - //! Constructor for a fused export (not implemented) - TpetraBlockCrsMatrix(const Teuchos::RCP > &sourceMatrix, - const Export &exporter, - const Teuchos::RCP > &domainMap = Teuchos::null, - const Teuchos::RCP > &rangeMap = Teuchos::null, - const Teuchos::RCP ¶ms = Teuchos::null) { XPETRA_TPETRA_ETI_EXCEPTION(typeid(TpetraBlockCrsMatrix).name(), typeid(TpetraBlockCrsMatrix).name(), "long long", typeid(EpetraNode).name()); } - - //! Constructor for a fused import (not implemented) - TpetraBlockCrsMatrix(const Teuchos::RCP > &sourceMatrix, - const Import &RowImporter, - const Teuchos::RCP > DomainImporter, - const Teuchos::RCP > &domainMap, - const Teuchos::RCP > &rangeMap, - const Teuchos::RCP ¶ms) { XPETRA_TPETRA_ETI_EXCEPTION(typeid(TpetraBlockCrsMatrix).name(), typeid(TpetraBlockCrsMatrix).name(), "long long", typeid(EpetraNode).name()); } - - //! Constructor for a fused export (not implemented) - TpetraBlockCrsMatrix(const Teuchos::RCP > &sourceMatrix, - const Export &RowExporter, - const Teuchos::RCP > DomainExporter, - const Teuchos::RCP > &domainMap, - const Teuchos::RCP > &rangeMap, - const Teuchos::RCP ¶ms) { XPETRA_TPETRA_ETI_EXCEPTION(typeid(TpetraBlockCrsMatrix).name(), typeid(TpetraBlockCrsMatrix).name(), "long long", typeid(EpetraNode).name()); } - - //! Destructor. - ~TpetraBlockCrsMatrix() {} - - //! @name Insertion/Removal Methods - - //! Insert matrix entries, using global IDs (not implemented) - void insertGlobalValues(GlobalOrdinal globalRow, const ArrayView &cols, const ArrayView &vals) {} - - //! Insert matrix entries, using local IDs (not implemented) - void insertLocalValues(LocalOrdinal localRow, const ArrayView &cols, const ArrayView &vals) {} - - //! Replace matrix entries, using global IDs (not implemented) - void replaceGlobalValues(GlobalOrdinal globalRow, const ArrayView &cols, const ArrayView &vals) {} - - //! Replace matrix entries, using local IDs. - void replaceLocalValues(LocalOrdinal localRow, const ArrayView &cols, const ArrayView &vals) {} - - //! Set all matrix entries equal to scalarThis. - void setAllToScalar(const Scalar &alpha) {} - - //! Scale the current values of a matrix, this = alpha*this (not implemented) - void scale(const Scalar &alpha) {} - - //! Allocates and returns ArrayRCPs of the Crs arrays --- This is an Xpetra-only routine. - //** \warning This is an expert-only routine and should not be called from user code. (not implemented) - void allocateAllValues(size_t numNonZeros, ArrayRCP &rowptr, ArrayRCP &colind, ArrayRCP &values) {} - - //! Sets the 1D pointer arrays of the graph (not impelmented) - void setAllValues(const ArrayRCP &rowptr, const ArrayRCP &colind, const ArrayRCP &values) {} - - //! Gets the 1D pointer arrays of the graph (not implemented) - void getAllValues(ArrayRCP &rowptr, ArrayRCP &colind, ArrayRCP &values) const {} - - //! Gets the 1D pointer arrays of the graph (not implemented) - void getAllValues(ArrayRCP &values) {} - - //! @name Transformational Methods - - //! - void resumeFill(const RCP ¶ms = null) { /*noop*/ - } - - //! Signal that data entry is complete, specifying domain and range maps. - void fillComplete(const RCP > &domainMap, const RCP > &rangeMap, const RCP ¶ms = null) { /*noop*/ - } - - //! Signal that data entry is complete. - void fillComplete(const RCP ¶ms = null) { /*noop*/ - } - - //! Replaces the current domainMap and importer with the user-specified objects. - void replaceDomainMapAndImporter(const Teuchos::RCP > &newDomainMap, Teuchos::RCP > &newImporter) {} - - //! Expert static fill complete - void expertStaticFillComplete(const RCP > &domainMap, - const RCP > &rangeMap, - const RCP > &importer = Teuchos::null, - const RCP > &exporter = Teuchos::null, - const RCP ¶ms = Teuchos::null) {} - - //! @name Methods implementing RowMatrix - - //! Returns the Map that describes the row distribution in this matrix. - const RCP > getRowMap() const { return Teuchos::null; } - - //! Returns the Map that describes the column distribution in this matrix. - const RCP > getColMap() const { return Teuchos::null; } - - //! Returns the CrsGraph associated with this matrix. - RCP > getCrsGraph() const { return Teuchos::null; } - - //! Number of global elements in the row map of this matrix. - global_size_t getGlobalNumRows() const { return 0; } - - //! Number of global columns in the matrix. - global_size_t getGlobalNumCols() const { return 0; } - - //! Returns the number of matrix rows owned on the calling node. - size_t getLocalNumRows() const { return 0; } - - //! Returns the number of columns connected to the locally owned rows of this matrix. - size_t getLocalNumCols() const { return 0; } - - //! Returns the global number of entries in this matrix. - global_size_t getGlobalNumEntries() const { return 0; } - - //! Returns the local number of entries in this matrix. - size_t getLocalNumEntries() const { return 0; } - - //! Returns the current number of entries on this node in the specified local row. - size_t getNumEntriesInLocalRow(LocalOrdinal localRow) const { return 0; } - - //! Returns the current number of entries in the (locally owned) global row. - size_t getNumEntriesInGlobalRow(GlobalOrdinal globalRow) const { return 0; } - - //! Returns the maximum number of entries across all rows/columns on all nodes. - size_t getGlobalMaxNumRowEntries() const { return 0; } - - //! Returns the maximum number of entries across all rows/columns on this node. - size_t getLocalMaxNumRowEntries() const { return 0; } - - //! If matrix indices are in the local range, this function returns true. Otherwise, this function returns false. - bool isLocallyIndexed() const { return false; } - - //! If matrix indices are in the global range, this function returns true. Otherwise, this function returns false. - bool isGloballyIndexed() const { return false; } - - //! Returns true if the matrix is in compute mode, i.e. if fillComplete() has been called. - bool isFillComplete() const { return false; } - - //! Returns true if the matrix is in edit mode. - bool isFillActive() const { return false; } - - //! Returns the Frobenius norm of the matrix. - typename ScalarTraits::magnitudeType getFrobeniusNorm() const { return Teuchos::ScalarTraits::magnitude(Teuchos::ScalarTraits::zero()); } - - //! Returns true if getLocalRowView() and getGlobalRowView() are valid for this class. - bool supportsRowViews() const { return false; } - - //! Extract a list of entries in a specified local row of the matrix. Put into storage allocated by calling routine. - void getLocalRowCopy(LocalOrdinal LocalRow, const ArrayView &Indices, const ArrayView &Values, size_t &NumEntries) const {} - - //! Extract a const, non-persisting view of global indices in a specified row of the matrix. - void getGlobalRowView(GlobalOrdinal GlobalRow, ArrayView &indices, ArrayView &values) const {} - - //! Extract a list of entries in a specified global row of this matrix. Put into pre-allocated storage. - void getGlobalRowCopy(GlobalOrdinal GlobalRow, const ArrayView &indices, const ArrayView &values, size_t &numEntries) const {} - - //! Extract a const, non-persisting view of local indices in a specified row of the matrix. - void getLocalRowView(LocalOrdinal LocalRow, ArrayView &indices, ArrayView &values) const {} - - //! Returns true if globalConstants have been computed; false otherwise - bool haveGlobalConstants() const { return true; } - - //! @name Methods implementing Operator - - //! Computes the sparse matrix-multivector multiplication. - void apply(const MultiVector &X, MultiVector &Y, Teuchos::ETransp mode = Teuchos::NO_TRANS, Scalar alpha = ScalarTraits::one(), Scalar beta = ScalarTraits::zero()) const {} - - //! Returns the Map associated with the domain of this operator. This will be null until fillComplete() is called. - const RCP > getDomainMap() const { return Teuchos::null; } - - //! - const RCP > getRangeMap() const { return Teuchos::null; } - - //! @name Overridden from Teuchos::Describable - - //! A simple one-line description of this object. - std::string description() const { return std::string(""); } - - //! Print the object with some verbosity level to an FancyOStream object. - void describe(Teuchos::FancyOStream &out, const Teuchos::EVerbosityLevel verbLevel = Teuchos::Describable::verbLevel_default) const {} - - //! Deep copy constructor - TpetraBlockCrsMatrix(const TpetraBlockCrsMatrix &matrix) {} - - //! Get a copy of the diagonal entries owned by this node, with local row idices - void getLocalDiagCopy(Vector &diag) const {} - - //! Get offsets of the diagonal entries in the matrix. - void getLocalDiagOffsets(Teuchos::ArrayRCP &offsets) const {} - - //! Get a copy of the diagonal entries owned by this node, with local row indices. - void getLocalDiagCopy(Vector &diag, const Teuchos::ArrayView &offsets) const {} - - //! Get a copy of the diagonal entries owned by this node, with local row indices. - void getLocalDiagCopy(Vector &diag, const Kokkos::View &offsets) const {} - - void replaceDiag(Vector &diag) const {} - - void leftScale(const Vector &x) {} - void rightScale(const Vector &x) {} - - //! Implements DistObject interface - - //! Access function for the Tpetra::Map this DistObject was constructed with. - Teuchos::RCP > getMap() const { return Teuchos::null; } - - //! Import. - void doImport(const DistObject &source, - const Import &importer, CombineMode CM) {} - - //! Export. - void doExport(const DistObject &dest, - const Import &importer, CombineMode CM) {} - - //! Import (using an Exporter). - void doImport(const DistObject &source, - const Export &exporter, CombineMode CM) {} - - //! Export (using an Importer). - void doExport(const DistObject &dest, - const Export &exporter, CombineMode CM) {} - - void removeEmptyProcessesInPlace(const Teuchos::RCP > &newMap) {} - - //! @name Xpetra specific - - //! Does this have an underlying matrix - bool hasMatrix() const { return false; } - - //! TpetraBlockCrsMatrix constructor to wrap a Tpetra::BlockCrsMatrix object - TpetraBlockCrsMatrix(const Teuchos::RCP > &mtx) { - XPETRA_TPETRA_ETI_EXCEPTION(typeid(TpetraBlockCrsMatrix).name(), typeid(TpetraBlockCrsMatrix).name(), "long long", typeid(EpetraNode).name()); - } - - //! Get the underlying Tpetra matrix - RCP > getTpetra_BlockCrsMatrix() const { return Teuchos::null; } - - //! Get the underlying Tpetra matrix - RCP > getTpetra_BlockCrsMatrixNonConst() const { return Teuchos::null; } - -#ifdef HAVE_XPETRA_TPETRA - typedef typename Xpetra::CrsMatrix::local_matrix_type local_matrix_type; - - local_matrix_type getLocalMatrix() const { - throw std::runtime_error("Xpetra::TpetraBlockCrsMatrix does not support getLocalMatrix due to missing Kokkos::CrsMatrix in Tpetra's experimental implementation in " + std::string(__FILE__) + ":" + std::to_string(__LINE__)); - local_matrix_type ret; - TEUCHOS_UNREACHABLE_RETURN(ret); - } - - void setAllValues(const typename local_matrix_type::row_map_type &ptr, - const typename local_matrix_type::StaticCrsGraphType::entries_type::non_const_type &ind, - const typename local_matrix_type::values_type &val) { - throw std::runtime_error("Xpetra::TpetraBlockCrsMatrix does not support setAllValues due to missing Kokkos::CrsMatrix in Tpetra's experimental implementation in " + std::string(__FILE__) + ":" + std::to_string(__LINE__)); - } -#endif // HAVE_XPETRA_TPETRA - -}; // TpetraBlockCrsMatrix class - -#endif // IF ((defined(EPETRA_HAVE_OMP) && (!defined(HAVE_TPETRA_INST_OPENMP) || !defined(HAVE_TPETRA_INST_INT_LONG_LONG))) - -#endif // HAVE_XPETRA_EPETRA - } // namespace Xpetra #endif // XPETRA_TPETRABLOCKCRSMATRIX_DEF_HPP diff --git a/packages/xpetra/src/CrsMatrix/Xpetra_TpetraCrsMatrix_decl.hpp b/packages/xpetra/src/CrsMatrix/Xpetra_TpetraCrsMatrix_decl.hpp index a8f38f64e871..3e85cb2592c7 100644 --- a/packages/xpetra/src/CrsMatrix/Xpetra_TpetraCrsMatrix_decl.hpp +++ b/packages/xpetra/src/CrsMatrix/Xpetra_TpetraCrsMatrix_decl.hpp @@ -49,9 +49,7 @@ class TpetraCrsMatrix typedef TpetraExport TpetraExportClass; // The following typedefs are used by the Kokkos interface -#ifdef HAVE_XPETRA_TPETRA typedef typename Xpetra::CrsMatrix::local_matrix_type local_matrix_type; -#endif public: //! @name Constructor/Destructor Methods @@ -105,7 +103,6 @@ class TpetraCrsMatrix const Teuchos::RCP > &rangeMap, const Teuchos::RCP ¶ms); -#ifdef HAVE_XPETRA_TPETRA /// \brief Constructor specifying column Map and a local matrix, /// which the resulting CrsMatrix views. /// @@ -150,7 +147,6 @@ class TpetraCrsMatrix const Teuchos::RCP > &importer, const Teuchos::RCP > &exporter, const Teuchos::RCP ¶ms = null); -#endif //! Destructor. virtual ~TpetraCrsMatrix(); @@ -393,7 +389,6 @@ class TpetraCrsMatrix //! Get the underlying Tpetra matrix RCP > getTpetra_CrsMatrixNonConst() const; // TODO: remove -#ifdef HAVE_XPETRA_TPETRA /// \brief Access the local Kokkos::CrsMatrix data typename local_matrix_type::HostMirror getLocalMatrixHost() const { return getTpetra_CrsMatrixNonConst()->getLocalMatrixHost(); @@ -408,7 +403,6 @@ class TpetraCrsMatrix const typename local_matrix_type::values_type &val) { getTpetra_CrsMatrixNonConst()->setAllValues(ptr, ind, val); } -#endif //! Returns the block size of the storage mechanism, which is usually 1, except for Tpetra::BlockCrsMatrix LocalOrdinal GetStorageBlockSize() const { return 1; } @@ -424,803 +418,6 @@ class TpetraCrsMatrix RCP > mtx_; }; // TpetraCrsMatrix class -#ifdef HAVE_XPETRA_EPETRA - -#if ((defined(EPETRA_HAVE_OMP) && (!defined(HAVE_TPETRA_INST_OPENMP) || !defined(HAVE_TPETRA_INST_INT_INT))) || \ - (!defined(EPETRA_HAVE_OMP) && (!defined(HAVE_TPETRA_INST_SERIAL) || !defined(HAVE_TPETRA_INST_INT_INT)))) - -// specialization of TpetraCrsMatrix for GO=LO=int -template -class TpetraCrsMatrix - : public CrsMatrix //, public TpetraRowMatrix -{ - typedef int LocalOrdinal; - typedef int GlobalOrdinal; - typedef EpetraNode Node; - // The following typedef are used by the XPETRA_DYNAMIC_CAST() macro. - typedef TpetraCrsMatrix TpetraCrsMatrixClass; - typedef TpetraVector TpetraVectorClass; - typedef TpetraImport TpetraImportClass; - typedef TpetraExport TpetraExportClass; - - // The following typedefs are used by the Kokkos interface -#ifdef HAVE_XPETRA_TPETRA - typedef typename Xpetra::CrsMatrix::local_matrix_type local_matrix_type; -#endif - - public: - //! @name Constructor/Destructor Methods - //@{ - - //! Constructor specifying fixed number of entries for each row. - TpetraCrsMatrix(const Teuchos::RCP > &rowMap, size_t maxNumEntriesPerRow, const Teuchos::RCP ¶ms = Teuchos::null) { - XPETRA_TPETRA_ETI_EXCEPTION(typeid(TpetraCrsMatrix).name(), typeid(TpetraCrsMatrix).name(), "int", typeid(EpetraNode).name()); - } - - //! Constructor specifying (possibly different) number of entries in each row. - TpetraCrsMatrix(const Teuchos::RCP > &rowMap, const ArrayRCP &NumEntriesPerRowToAlloc, const Teuchos::RCP ¶ms = Teuchos::null) { - XPETRA_TPETRA_ETI_EXCEPTION(typeid(TpetraCrsMatrix).name(), typeid(TpetraCrsMatrix).name(), "int", typeid(EpetraNode).name()); - } - - //! Constructor specifying column Map and fixed number of entries for each row. - TpetraCrsMatrix(const Teuchos::RCP > &rowMap, const Teuchos::RCP > &colMap, size_t maxNumEntriesPerRow, const Teuchos::RCP ¶ms = Teuchos::null) { - XPETRA_TPETRA_ETI_EXCEPTION(typeid(TpetraCrsMatrix).name(), typeid(TpetraCrsMatrix).name(), "int", typeid(EpetraNode).name()); - } - - //! Constructor specifying column Map and number of entries in each row. - TpetraCrsMatrix(const Teuchos::RCP > &rowMap, const Teuchos::RCP > &colMap, const ArrayRCP &NumEntriesPerRowToAlloc, const Teuchos::RCP ¶ms = Teuchos::null) { - XPETRA_TPETRA_ETI_EXCEPTION(typeid(TpetraCrsMatrix).name(), typeid(TpetraCrsMatrix).name(), "int", typeid(EpetraNode).name()); - } - - //! Constructor specifying a previously constructed graph. - TpetraCrsMatrix(const Teuchos::RCP > &graph, const Teuchos::RCP ¶ms = Teuchos::null) { - XPETRA_TPETRA_ETI_EXCEPTION(typeid(TpetraCrsMatrix).name(), typeid(TpetraCrsMatrix).name(), "int", typeid(EpetraNode).name()); - } - - //! Constructor for a fused import - TpetraCrsMatrix(const Teuchos::RCP > &sourceMatrix, - const Import &importer, - const Teuchos::RCP > &domainMap = Teuchos::null, - const Teuchos::RCP > &rangeMap = Teuchos::null, - const Teuchos::RCP ¶ms = Teuchos::null) { - XPETRA_TPETRA_ETI_EXCEPTION(typeid(TpetraCrsMatrix).name(), typeid(TpetraCrsMatrix).name(), "int", typeid(EpetraNode).name()); - } - - //! Constructor for a fused export - TpetraCrsMatrix(const Teuchos::RCP > &sourceMatrix, - const Export &exporter, - const Teuchos::RCP > &domainMap = Teuchos::null, - const Teuchos::RCP > &rangeMap = Teuchos::null, - const Teuchos::RCP ¶ms = Teuchos::null) { - XPETRA_TPETRA_ETI_EXCEPTION(typeid(TpetraCrsMatrix).name(), typeid(TpetraCrsMatrix).name(), "int", typeid(EpetraNode).name()); - } - - //! Constructor for a fused import - TpetraCrsMatrix(const Teuchos::RCP > &sourceMatrix, - const Import &RowImporter, - const Teuchos::RCP > DomainImporter, - const Teuchos::RCP > &domainMap, - const Teuchos::RCP > &rangeMap, - const Teuchos::RCP ¶ms) { - XPETRA_TPETRA_ETI_EXCEPTION(typeid(TpetraCrsMatrix).name(), typeid(TpetraCrsMatrix).name(), "int", typeid(EpetraNode).name()); - } - - //! Constructor for a fused export - TpetraCrsMatrix(const Teuchos::RCP > &sourceMatrix, - const Export &RowExporter, - const Teuchos::RCP > DomainExporter, - const Teuchos::RCP > &domainMap, - const Teuchos::RCP > &rangeMap, - const Teuchos::RCP ¶ms) { - XPETRA_TPETRA_ETI_EXCEPTION(typeid(TpetraCrsMatrix).name(), typeid(TpetraCrsMatrix).name(), "int", typeid(EpetraNode).name()); - } - -#ifdef HAVE_XPETRA_TPETRA - /// \brief Constructor specifying column Map and a local matrix, - /// which the resulting CrsMatrix views. - /// - /// Unlike most other CrsMatrix constructors, successful - /// completion of this constructor will result in a fill-complete - /// matrix. - /// - /// \param rowMap [in] Distribution of rows of the matrix. - /// - /// \param colMap [in] Distribution of columns of the matrix. - /// - /// \param lclMatrix [in] A local CrsMatrix containing all local - /// matrix values as well as a local graph. The graph's local - /// row indices must come from the specified row Map, and its - /// local column indices must come from the specified column - /// Map. - /// - /// \param params [in/out] Optional list of parameters. If not - /// null, any missing parameters will be filled in with their - /// default values. - TpetraCrsMatrix(const Teuchos::RCP > &rowMap, - const Teuchos::RCP > &colMap, - const local_matrix_type &lclMatrix, - const Teuchos::RCP ¶ms = null) { - XPETRA_TPETRA_ETI_EXCEPTION(typeid(TpetraCrsMatrix).name(), "TpetraCrsMatrix", "int", typeid(EpetraNode).name()); - } - - /// \brief Constructor specifying local matrix and 4 maps - TpetraCrsMatrix( - const local_matrix_type &lclMatrix, - const Teuchos::RCP > &rowMap, - const Teuchos::RCP > &colMap, - const Teuchos::RCP > &domainMap = Teuchos::null, - const Teuchos::RCP > &rangeMap = Teuchos::null, - const Teuchos::RCP ¶ms = null) { - XPETRA_TPETRA_ETI_EXCEPTION(typeid(TpetraCrsMatrix).name(), "TpetraCrsMatrix", "int", typeid(EpetraNode).name()); - } -#endif - - //! Destructor. - virtual ~TpetraCrsMatrix() {} - - //@} - - //! @name Insertion/Removal Methods - //@{ - - //! Insert matrix entries, using global IDs. - void insertGlobalValues(GlobalOrdinal globalRow, const ArrayView &cols, const ArrayView &vals) {} - - //! Insert matrix entries, using local IDs. - void insertLocalValues(LocalOrdinal localRow, const ArrayView &cols, const ArrayView &vals) {} - - //! Replace matrix entries, using global IDs. - void replaceGlobalValues(GlobalOrdinal globalRow, const ArrayView &cols, const ArrayView &vals) {} - - //! Replace matrix entries, using local IDs. - void - replaceLocalValues(LocalOrdinal localRow, - const ArrayView &cols, - const ArrayView &vals) {} - - //! Set all matrix entries equal to scalarThis. - void setAllToScalar(const Scalar &alpha) {} - - //! Scale the current values of a matrix, this = alpha*this. - void scale(const Scalar &alpha) {} - - //! Allocates and returns ArrayRCPs of the Crs arrays --- This is an Xpetra-only routine. - //** \warning This is an expert-only routine and should not be called from user code. */ - void allocateAllValues(size_t numNonZeros, ArrayRCP &rowptr, ArrayRCP &colind, ArrayRCP &values) {} - - //! Sets the 1D pointer arrays of the graph. - void setAllValues(const ArrayRCP &rowptr, const ArrayRCP &colind, const ArrayRCP &values) {} - - //! Gets the 1D pointer arrays of the graph. - void getAllValues(ArrayRCP &rowptr, ArrayRCP &colind, ArrayRCP &values) const {} - - //! Gets the 1D pointer arrays of the graph. - void getAllValues(ArrayRCP &values) {} - - bool haveGlobalConstants() const { return false; } - - //@} - - //! @name Transformational Methods - //@{ - - //! - void resumeFill(const RCP ¶ms = null) {} - - //! Signal that data entry is complete, specifying domain and range maps. - void fillComplete(const RCP > &domainMap, const RCP > &rangeMap, const RCP ¶ms = null) {} - - //! Signal that data entry is complete. - void fillComplete(const RCP ¶ms = null) {} - - //! Replaces the current domainMap and importer with the user-specified objects. - void replaceDomainMapAndImporter(const Teuchos::RCP > &newDomainMap, Teuchos::RCP > &newImporter) {} - - //! Expert static fill complete - void expertStaticFillComplete(const RCP > &domainMap, - const RCP > &rangeMap, - const RCP > &importer = Teuchos::null, - const RCP > &exporter = Teuchos::null, - const RCP ¶ms = Teuchos::null) {} - - //@} - - //! @name Methods implementing RowMatrix - //@{ - - //! Returns the Map that describes the row distribution in this matrix. - const RCP > getRowMap() const { return Teuchos::null; } - - //! Returns the Map that describes the column distribution in this matrix. - const RCP > getColMap() const { return Teuchos::null; } - - //! Returns the CrsGraph associated with this matrix. - RCP > getCrsGraph() const { return Teuchos::null; } - - //! Number of global elements in the row map of this matrix. - global_size_t getGlobalNumRows() const { return 0; } - - //! Number of global columns in the matrix. - global_size_t getGlobalNumCols() const { return 0; } - - //! Returns the number of matrix rows owned on the calling node. - size_t getLocalNumRows() const { return 0; } - - //! Returns the number of columns connected to the locally owned rows of this matrix. - size_t getLocalNumCols() const { return 0; } - - //! Returns the global number of entries in this matrix. - global_size_t getGlobalNumEntries() const { return 0; } - - //! Returns the local number of entries in this matrix. - size_t getLocalNumEntries() const { return 0; } - - //! Returns the current number of entries on this node in the specified local row. - size_t getNumEntriesInLocalRow(LocalOrdinal localRow) const { return 0; } - - //! Returns the current number of entries in the (locally owned) global row. - size_t getNumEntriesInGlobalRow(GlobalOrdinal globalRow) const { return 0; } - - //! Returns the maximum number of entries across all rows/columns on all nodes. - size_t getGlobalMaxNumRowEntries() const { return 0; } - - //! Returns the maximum number of entries across all rows/columns on this node. - size_t getLocalMaxNumRowEntries() const { return 0; } - - //! If matrix indices are in the local range, this function returns true. Otherwise, this function returns false. - bool isLocallyIndexed() const { return false; } - - //! If matrix indices are in the global range, this function returns true. Otherwise, this function returns false. - bool isGloballyIndexed() const { return false; } - - //! Returns true if the matrix is in compute mode, i.e. if fillComplete() has been called. - bool isFillComplete() const { return false; } - - //! Returns true if the matrix is in edit mode. - bool isFillActive() const { return false; } - - //! Returns the Frobenius norm of the matrix. - typename ScalarTraits::magnitudeType getFrobeniusNorm() const { return ScalarTraits::magnitude(ScalarTraits::zero()); } - - //! Returns true if getLocalRowView() and getGlobalRowView() are valid for this class. - bool supportsRowViews() const { return false; } - - //! Extract a list of entries in a specified local row of the matrix. Put into storage allocated by calling routine. - void getLocalRowCopy(LocalOrdinal LocalRow, const ArrayView &Indices, const ArrayView &Values, size_t &NumEntries) const {} - - //! Extract a const, non-persisting view of global indices in a specified row of the matrix. - void getGlobalRowView(GlobalOrdinal GlobalRow, ArrayView &indices, ArrayView &values) const {} - - //! Extract a list of entries in a specified global row of this matrix. Put into pre-allocated storage. - void getGlobalRowCopy(GlobalOrdinal GlobalRow, const ArrayView &indices, const ArrayView &values, size_t &numEntries) const {} - - //! Extract a const, non-persisting view of local indices in a specified row of the matrix. - void getLocalRowView(LocalOrdinal LocalRow, ArrayView &indices, ArrayView &values) const {} - - //@} - - //! @name Methods implementing Operator - //@{ - - //! Computes the sparse matrix-multivector multiplication. - void apply(const MultiVector &X, MultiVector &Y, Teuchos::ETransp mode = Teuchos::NO_TRANS, Scalar alpha = ScalarTraits::one(), Scalar beta = ScalarTraits::zero()) const {} - - //! Computes the matrix-multivector multiplication for region layout matrices - void apply(const MultiVector &X, MultiVector &Y, Teuchos::ETransp mode, Scalar alpha, Scalar beta, bool sumInterfaceValues, const RCP > ®ionInterfaceImporter, const Teuchos::ArrayRCP ®ionInterfaceLIDs) const {} - - //! Returns the Map associated with the domain of this operator. This will be null until fillComplete() is called. - const RCP > getDomainMap() const { return Teuchos::null; } - - //! - const RCP > getRangeMap() const { return Teuchos::null; } - - //@} - - //! @name Overridden from Teuchos::Describable - //@{ - - //! A simple one-line description of this object. - std::string description() const { return std::string(""); } - - //! Print the object with some verbosity level to an FancyOStream object. - void describe(Teuchos::FancyOStream &out, const Teuchos::EVerbosityLevel verbLevel = Teuchos::Describable::verbLevel_default) const {} - - //@} - - //! @name Overridden from Teuchos::LabeledObject - //@{ - void setObjectLabel(const std::string &objectLabel) {} - //@} - - //! Deep copy constructor - TpetraCrsMatrix(const TpetraCrsMatrix &matrix) {} - - //! Get a copy of the diagonal entries owned by this node, with local row idices. - void getLocalDiagCopy(Vector &diag) const {} - - //! Get offsets of the diagonal entries in the matrix. - void getLocalDiagOffsets(Teuchos::ArrayRCP &offsets) const {} - - //! Get a copy of the diagonal entries owned by this node, with local row indices. - void getLocalDiagCopy(Vector &diag, const Teuchos::ArrayView &offsets) const {} - - //! Replace the diagonal entries of the matrix - void replaceDiag(const Vector &diag) {} - - //! Left scale operator with given vector values - void leftScale(const Vector &x) {} - - //! Right scale operator with given vector values - void rightScale(const Vector &x) {} - - //! Implements DistObject interface - //{@ - - //! Access function for the Tpetra::Map this DistObject was constructed with. - Teuchos::RCP > getMap() const { return Teuchos::null; } - - //! Import. - void doImport(const DistObject &source, - const Import &importer, CombineMode CM) {} - - //! Export. - void doExport(const DistObject &dest, - const Import &importer, CombineMode CM) {} - - //! Import (using an Exporter). - void doImport(const DistObject &source, - const Export &exporter, CombineMode CM) {} - - //! Export (using an Importer). - void doExport(const DistObject &dest, - const Export &exporter, CombineMode CM) {} - - void removeEmptyProcessesInPlace(const Teuchos::RCP > &newMap) {} - - // @} - //! @name Xpetra specific - //@{ - - //! Does this have an underlying matrix - bool hasMatrix() const { return false; } - - //! TpetraCrsMatrix constructor to wrap a Tpetra::CrsMatrix object - TpetraCrsMatrix(const Teuchos::RCP > &mtx) { - XPETRA_TPETRA_ETI_EXCEPTION(typeid(TpetraCrsMatrix).name(), typeid(TpetraCrsMatrix).name(), "int", typeid(EpetraNode).name()); - } - - //! Get the underlying Tpetra matrix - RCP > getTpetra_CrsMatrix() const { return Teuchos::null; } - - //! Get the underlying Tpetra matrix - RCP > getTpetra_CrsMatrixNonConst() const { return Teuchos::null; } // TODO: remove - -#ifdef HAVE_XPETRA_TPETRA - /// \brief Access the local Kokkos::CrsMatrix data - local_matrix_type getLocalMatrix() const { - TEUCHOS_UNREACHABLE_RETURN(local_matrix_type()); - } - - void setAllValues(const typename local_matrix_type::row_map_type &ptr, - const typename local_matrix_type::StaticCrsGraphType::entries_type::non_const_type &ind, - const typename local_matrix_type::values_type &val) {} -#endif - - //! Returns the block size of the storage mechanism, which is usually 1, except for Tpetra::BlockCrsMatrix - LocalOrdinal GetStorageBlockSize() const { return 1; } - - //! Compute a residual R = B - (*this) * X - void residual(const MultiVector &X, - const MultiVector &B, - MultiVector &R) const {} - - //@} -}; // TpetraCrsMatrix class (specialization for GO=int, NO=EpetraNode) -#endif - -#if ((defined(EPETRA_HAVE_OMP) && (!defined(HAVE_TPETRA_INST_OPENMP) || !defined(HAVE_TPETRA_INST_INT_LONG_LONG))) || \ - (!defined(EPETRA_HAVE_OMP) && (!defined(HAVE_TPETRA_INST_SERIAL) || !defined(HAVE_TPETRA_INST_INT_LONG_LONG)))) - -// specialization of TpetraCrsMatrix for GO=long long, NO=EpetraNode -template -class TpetraCrsMatrix - : public CrsMatrix //, public TpetraRowMatrix -{ - typedef int LocalOrdinal; - typedef long long GlobalOrdinal; - typedef EpetraNode Node; - // The following typedef are used by the XPETRA_DYNAMIC_CAST() macro. - typedef TpetraCrsMatrix TpetraCrsMatrixClass; - typedef TpetraVector TpetraVectorClass; - typedef TpetraImport TpetraImportClass; - typedef TpetraExport TpetraExportClass; - - // The following typedefs are used by the Kokkos interface -#ifdef HAVE_XPETRA_TPETRA - typedef typename Xpetra::CrsMatrix::local_matrix_type local_matrix_type; -#endif - - public: - //! @name Constructor/Destructor Methods - //@{ - - //! Constructor specifying fixed number of entries for each row. - TpetraCrsMatrix(const Teuchos::RCP > &rowMap, size_t maxNumEntriesPerRow, const Teuchos::RCP ¶ms = Teuchos::null) { - XPETRA_TPETRA_ETI_EXCEPTION(typeid(TpetraCrsMatrix).name(), typeid(TpetraCrsMatrix).name(), "long long", typeid(EpetraNode).name()); - } - - //! Constructor specifying (possibly different) number of entries in each row. - TpetraCrsMatrix(const Teuchos::RCP > &rowMap, const ArrayRCP &NumEntriesPerRowToAlloc, const Teuchos::RCP ¶ms = Teuchos::null) { - XPETRA_TPETRA_ETI_EXCEPTION(typeid(TpetraCrsMatrix).name(), typeid(TpetraCrsMatrix).name(), "long long", typeid(EpetraNode).name()); - } - - //! Constructor specifying column Map and fixed number of entries for each row. - TpetraCrsMatrix(const Teuchos::RCP > &rowMap, const Teuchos::RCP > &colMap, size_t maxNumEntriesPerRow, const Teuchos::RCP ¶ms = Teuchos::null) { - XPETRA_TPETRA_ETI_EXCEPTION(typeid(TpetraCrsMatrix).name(), typeid(TpetraCrsMatrix).name(), "long long", typeid(EpetraNode).name()); - } - - //! Constructor specifying column Map and number of entries in each row. - TpetraCrsMatrix(const Teuchos::RCP > &rowMap, const Teuchos::RCP > &colMap, const ArrayRCP &NumEntriesPerRowToAlloc, const Teuchos::RCP ¶ms = Teuchos::null) { - XPETRA_TPETRA_ETI_EXCEPTION(typeid(TpetraCrsMatrix).name(), typeid(TpetraCrsMatrix).name(), "long long", typeid(EpetraNode).name()); - } - - //! Constructor specifying a previously constructed graph. - TpetraCrsMatrix(const Teuchos::RCP > &graph, const Teuchos::RCP ¶ms = Teuchos::null) { - XPETRA_TPETRA_ETI_EXCEPTION(typeid(TpetraCrsMatrix).name(), typeid(TpetraCrsMatrix).name(), "long long", typeid(EpetraNode).name()); - } - - //! Constructor for a fused import - TpetraCrsMatrix(const Teuchos::RCP > &sourceMatrix, - const Import &importer, - const Teuchos::RCP > &domainMap = Teuchos::null, - const Teuchos::RCP > &rangeMap = Teuchos::null, - const Teuchos::RCP ¶ms = Teuchos::null) { - XPETRA_TPETRA_ETI_EXCEPTION(typeid(TpetraCrsMatrix).name(), typeid(TpetraCrsMatrix).name(), "long long", typeid(EpetraNode).name()); - } - - //! Constructor for a fused export - TpetraCrsMatrix(const Teuchos::RCP > &sourceMatrix, - const Export &exporter, - const Teuchos::RCP > &domainMap = Teuchos::null, - const Teuchos::RCP > &rangeMap = Teuchos::null, - const Teuchos::RCP ¶ms = Teuchos::null) { - XPETRA_TPETRA_ETI_EXCEPTION(typeid(TpetraCrsMatrix).name(), typeid(TpetraCrsMatrix).name(), "long long", typeid(EpetraNode).name()); - } - - //! Constructor for a fused import - TpetraCrsMatrix(const Teuchos::RCP > &sourceMatrix, - const Import &RowImporter, - const Teuchos::RCP > DomainImporter, - const Teuchos::RCP > &domainMap, - const Teuchos::RCP > &rangeMap, - const Teuchos::RCP ¶ms) { - XPETRA_TPETRA_ETI_EXCEPTION(typeid(TpetraCrsMatrix).name(), typeid(TpetraCrsMatrix).name(), "long long", typeid(EpetraNode).name()); - } - - //! Constructor for a fused export - TpetraCrsMatrix(const Teuchos::RCP > &sourceMatrix, - const Export &RowExporter, - const Teuchos::RCP > DomainExporter, - const Teuchos::RCP > &domainMap, - const Teuchos::RCP > &rangeMap, - const Teuchos::RCP ¶ms) { - XPETRA_TPETRA_ETI_EXCEPTION(typeid(TpetraCrsMatrix).name(), typeid(TpetraCrsMatrix).name(), "long long", typeid(EpetraNode).name()); - } - -#ifdef HAVE_XPETRA_TPETRA - /// \brief Constructor specifying column Map and a local matrix, - /// which the resulting CrsMatrix views. - /// - /// Unlike most other CrsMatrix constructors, successful - /// completion of this constructor will result in a fill-complete - /// matrix. - /// - /// \param rowMap [in] Distribution of rows of the matrix. - /// - /// \param colMap [in] Distribution of columns of the matrix. - /// - /// \param lclMatrix [in] A local CrsMatrix containing all local - /// matrix values as well as a local graph. The graph's local - /// row indices must come from the specified row Map, and its - /// local column indices must come from the specified column - /// Map. - /// - /// \param params [in/out] Optional list of parameters. If not - /// null, any missing parameters will be filled in with their - /// default values. - TpetraCrsMatrix(const Teuchos::RCP > &rowMap, - const Teuchos::RCP > &colMap, - const local_matrix_type &lclMatrix, - const Teuchos::RCP ¶ms = null) { - XPETRA_TPETRA_ETI_EXCEPTION(typeid(TpetraCrsMatrix).name(), typeid(TpetraCrsMatrix).name(), "long long", typeid(EpetraNode).name()); - } - - /// \brief Constructor specifying local matrix and 4 maps - TpetraCrsMatrix( - const local_matrix_type &lclMatrix, - const Teuchos::RCP > &rowMap, - const Teuchos::RCP > &colMap, - const Teuchos::RCP > &domainMap = Teuchos::null, - const Teuchos::RCP > &rangeMap = Teuchos::null, - const Teuchos::RCP ¶ms = null) { - XPETRA_TPETRA_ETI_EXCEPTION(typeid(TpetraCrsMatrix).name(), typeid(TpetraCrsMatrix).name(), "long long", typeid(EpetraNode).name()); - } -#endif - - //! Destructor. - virtual ~TpetraCrsMatrix() {} - - //@} - - //! @name Insertion/Removal Methods - //@{ - - //! Insert matrix entries, using global IDs. - void insertGlobalValues(GlobalOrdinal globalRow, const ArrayView &cols, const ArrayView &vals) {} - - //! Insert matrix entries, using local IDs. - void insertLocalValues(LocalOrdinal localRow, const ArrayView &cols, const ArrayView &vals) {} - - //! Replace matrix entries, using global IDs. - void replaceGlobalValues(GlobalOrdinal globalRow, const ArrayView &cols, const ArrayView &vals) {} - - //! Replace matrix entries, using local IDs. - void - replaceLocalValues(LocalOrdinal localRow, - const ArrayView &cols, - const ArrayView &vals) {} - - //! Set all matrix entries equal to scalarThis. - void setAllToScalar(const Scalar &alpha) {} - - //! Scale the current values of a matrix, this = alpha*this. - void scale(const Scalar &alpha) {} - - //! Allocates and returns ArrayRCPs of the Crs arrays --- This is an Xpetra-only routine. - //** \warning This is an expert-only routine and should not be called from user code. */ - void allocateAllValues(size_t numNonZeros, ArrayRCP &rowptr, ArrayRCP &colind, ArrayRCP &values) {} - - //! Sets the 1D pointer arrays of the graph. - void setAllValues(const ArrayRCP &rowptr, const ArrayRCP &colind, const ArrayRCP &values) {} - - //! Gets the 1D pointer arrays of the graph. - void getAllValues(ArrayRCP &rowptr, ArrayRCP &colind, ArrayRCP &values) const {} - - //! Gets the 1D pointer arrays of the graph. - void getAllValues(ArrayRCP &values) {} - - bool haveGlobalConstants() const { return false; } - - //@} - - //! @name Transformational Methods - //@{ - - //! - void resumeFill(const RCP ¶ms = null) {} - - //! Signal that data entry is complete, specifying domain and range maps. - void fillComplete(const RCP > &domainMap, const RCP > &rangeMap, const RCP ¶ms = null) {} - - //! Signal that data entry is complete. - void fillComplete(const RCP ¶ms = null) {} - - //! Replaces the current domainMap and importer with the user-specified objects. - void replaceDomainMapAndImporter(const Teuchos::RCP > &newDomainMap, Teuchos::RCP > &newImporter) {} - - //! Expert static fill complete - void expertStaticFillComplete(const RCP > &domainMap, - const RCP > &rangeMap, - const RCP > &importer = Teuchos::null, - const RCP > &exporter = Teuchos::null, - const RCP ¶ms = Teuchos::null) {} - - //@} - - //! @name Methods implementing RowMatrix - //@{ - - //! Returns the Map that describes the row distribution in this matrix. - const RCP > getRowMap() const { return Teuchos::null; } - - //! Returns the Map that describes the column distribution in this matrix. - const RCP > getColMap() const { return Teuchos::null; } - - //! Returns the CrsGraph associated with this matrix. - RCP > getCrsGraph() const { return Teuchos::null; } - - //! Number of global elements in the row map of this matrix. - global_size_t getGlobalNumRows() const { return 0; } - - //! Number of global columns in the matrix. - global_size_t getGlobalNumCols() const { return 0; } - - //! Returns the number of matrix rows owned on the calling node. - size_t getLocalNumRows() const { return 0; } - - //! Returns the number of columns connected to the locally owned rows of this matrix. - size_t getLocalNumCols() const { return 0; } - - //! Returns the global number of entries in this matrix. - global_size_t getGlobalNumEntries() const { return 0; } - - //! Returns the local number of entries in this matrix. - size_t getLocalNumEntries() const { return 0; } - - //! Returns the current number of entries on this node in the specified local row. - size_t getNumEntriesInLocalRow(LocalOrdinal localRow) const { return 0; } - - //! Returns the current number of entries in the (locally owned) global row. - size_t getNumEntriesInGlobalRow(GlobalOrdinal globalRow) const { return 0; } - - //! Returns the maximum number of entries across all rows/columns on all nodes. - size_t getGlobalMaxNumRowEntries() const { return 0; } - - //! Returns the maximum number of entries across all rows/columns on this node. - size_t getLocalMaxNumRowEntries() const { return 0; } - - //! If matrix indices are in the local range, this function returns true. Otherwise, this function returns false. - bool isLocallyIndexed() const { return false; } - - //! If matrix indices are in the global range, this function returns true. Otherwise, this function returns false. - bool isGloballyIndexed() const { return false; } - - //! Returns true if the matrix is in compute mode, i.e. if fillComplete() has been called. - bool isFillComplete() const { return false; } - - //! Returns true if the matrix is in edit mode. - bool isFillActive() const { return false; } - - //! Returns the Frobenius norm of the matrix. - typename ScalarTraits::magnitudeType getFrobeniusNorm() const { return ScalarTraits::magnitude(ScalarTraits::zero()); } - - //! Returns true if getLocalRowView() and getGlobalRowView() are valid for this class. - bool supportsRowViews() const { return false; } - - //! Extract a list of entries in a specified local row of the matrix. Put into storage allocated by calling routine. - void getLocalRowCopy(LocalOrdinal LocalRow, const ArrayView &Indices, const ArrayView &Values, size_t &NumEntries) const {} - - //! Extract a const, non-persisting view of global indices in a specified row of the matrix. - void getGlobalRowView(GlobalOrdinal GlobalRow, ArrayView &indices, ArrayView &values) const {} - - //! Extract a list of entries in a specified global row of this matrix. Put into pre-allocated storage. - void getGlobalRowCopy(GlobalOrdinal GlobalRow, const ArrayView &indices, const ArrayView &values, size_t &numEntries) const {} - - //! Extract a const, non-persisting view of local indices in a specified row of the matrix. - void getLocalRowView(LocalOrdinal LocalRow, ArrayView &indices, ArrayView &values) const {} - - //@} - - //! @name Methods implementing Operator - //@{ - - //! Computes the sparse matrix-multivector multiplication. - void apply(const MultiVector &X, MultiVector &Y, Teuchos::ETransp mode = Teuchos::NO_TRANS, Scalar alpha = ScalarTraits::one(), Scalar beta = ScalarTraits::zero()) const {} - - //! Computes the matrix-multivector multiplication for region layout matrices - void apply(const MultiVector &X, MultiVector &Y, Teuchos::ETransp mode, Scalar alpha, Scalar beta, bool sumInterfaceValues, const RCP > ®ionInterfaceImporter, const Teuchos::ArrayRCP ®ionInterfaceLIDs) const {} - - //! Returns the Map associated with the domain of this operator. This will be null until fillComplete() is called. - const RCP > getDomainMap() const { return Teuchos::null; } - - //! - const RCP > getRangeMap() const { return Teuchos::null; } - - //@} - - //! @name Overridden from Teuchos::Describable - //@{ - - //! A simple one-line description of this object. - std::string description() const { return std::string(""); } - - //! Print the object with some verbosity level to an FancyOStream object. - void describe(Teuchos::FancyOStream &out, const Teuchos::EVerbosityLevel verbLevel = Teuchos::Describable::verbLevel_default) const {} - - //@} - - //! @name Overridden from Teuchos::LabeledObject - //@{ - void setObjectLabel(const std::string &objectLabel) {} - //@} - - //! Deep copy constructor - TpetraCrsMatrix(const TpetraCrsMatrix &matrix) {} - - //! Get a copy of the diagonal entries owned by this node, with local row idices. - void getLocalDiagCopy(Vector &diag) const {} - - //! Get offsets of the diagonal entries in the matrix. - void getLocalDiagOffsets(Teuchos::ArrayRCP &offsets) const {} - - //! Get a copy of the diagonal entries owned by this node, with local row indices. - void getLocalDiagCopy(Vector &diag, const Teuchos::ArrayView &offsets) const {} - - //! Replace the diagonal entries of the matrix - void replaceDiag(const Vector &diag) {} - - //! Left scale operator with given vector values - void leftScale(const Vector &x) {} - - //! Right scale operator with given vector values - void rightScale(const Vector &x) {} - - //! Implements DistObject interface - //{@ - - //! Access function for the Tpetra::Map this DistObject was constructed with. - Teuchos::RCP > getMap() const { return Teuchos::null; } - - //! Import. - void doImport(const DistObject &source, - const Import &importer, CombineMode CM) {} - - //! Export. - void doExport(const DistObject &dest, - const Import &importer, CombineMode CM) {} - - //! Import (using an Exporter). - void doImport(const DistObject &source, - const Export &exporter, CombineMode CM) {} - - //! Export (using an Importer). - void doExport(const DistObject &dest, - const Export &exporter, CombineMode CM) {} - - void removeEmptyProcessesInPlace(const Teuchos::RCP > &newMap) {} - - // @} - //! @name Xpetra specific - //@{ - - //! Does this have an underlying matrix - bool hasMatrix() const { return false; } - - //! TpetraCrsMatrix constructor to wrap a Tpetra::CrsMatrix object - TpetraCrsMatrix(const Teuchos::RCP > &mtx) { - XPETRA_TPETRA_ETI_EXCEPTION(typeid(TpetraCrsMatrix).name(), typeid(TpetraCrsMatrix).name(), "long long", typeid(EpetraNode).name()); - } - - //! Get the underlying Tpetra matrix - RCP > getTpetra_CrsMatrix() const { return Teuchos::null; } - - //! Get the underlying Tpetra matrix - RCP > getTpetra_CrsMatrixNonConst() const { return Teuchos::null; } // TODO: remove - -#ifdef HAVE_XPETRA_TPETRA - /// \brief Access the local Kokkos::CrsMatrix data - local_matrix_type getLocalMatrix() const { - TEUCHOS_UNREACHABLE_RETURN(local_matrix_type()); - } - - /// \brief Access the local Kokkos::CrsMatrix data - typename local_matrix_type::HostMirror getLocalMatrixHost() const { - TEUCHOS_UNREACHABLE_RETURN(typename local_matrix_type::HostMirror()); - } - /// \brief Access the local Kokkos::CrsMatrix data - local_matrix_type getLocalMatrixDevice() const { - TEUCHOS_UNREACHABLE_RETURN(local_matrix_type()); - } - - void setAllValues(const typename local_matrix_type::row_map_type &ptr, - const typename local_matrix_type::StaticCrsGraphType::entries_type::non_const_type &ind, - const typename local_matrix_type::values_type &val) {} -#endif - - //! Returns the block size of the storage mechanism, which is usually 1, except for Tpetra::BlockCrsMatrix - LocalOrdinal GetStorageBlockSize() const { return 1; } - - //! Compute a residual R = B - (*this) * X - void residual(const MultiVector &X, - const MultiVector &B, - MultiVector &R) const {} - - //@} -}; // TpetraCrsMatrix class (specialization for GO=long long, NO=EpetraNode) -#endif - -#endif // HAVE_XPETRA_EPETRA - } // namespace Xpetra #define XPETRA_TPETRACRSMATRIX_SHORT diff --git a/packages/xpetra/src/CrsMatrix/Xpetra_TpetraCrsMatrix_def.hpp b/packages/xpetra/src/CrsMatrix/Xpetra_TpetraCrsMatrix_def.hpp index ae22f4e946ca..6526f69e1e94 100644 --- a/packages/xpetra/src/CrsMatrix/Xpetra_TpetraCrsMatrix_def.hpp +++ b/packages/xpetra/src/CrsMatrix/Xpetra_TpetraCrsMatrix_def.hpp @@ -112,7 +112,6 @@ TpetraCrsMatrix::TpetraCrsMatrix(cons /////////////////////////////////////////////////////////////////////////////////////// -#ifdef HAVE_XPETRA_TPETRA template TpetraCrsMatrix::TpetraCrsMatrix(const Teuchos::RCP> &rowMap, const Teuchos::RCP> &colMap, @@ -141,7 +140,6 @@ TpetraCrsMatrix::TpetraCrsMatrix( const Teuchos::RCP> &exporter, const Teuchos::RCP ¶ms) : mtx_(Teuchos::rcp(new Tpetra::CrsMatrix(lclMatrix, toTpetra(rowMap), toTpetra(colMap), toTpetra(domainMap), toTpetra(rangeMap), toTpetra(importer), toTpetra(exporter), params))) {} -#endif template TpetraCrsMatrix::~TpetraCrsMatrix() {} diff --git a/packages/xpetra/src/Export/Xpetra_EpetraExport.cpp b/packages/xpetra/src/Export/Xpetra_EpetraExport.cpp deleted file mode 100644 index eafe67b62f88..000000000000 --- a/packages/xpetra/src/Export/Xpetra_EpetraExport.cpp +++ /dev/null @@ -1,103 +0,0 @@ -// @HEADER -// ***************************************************************************** -// Xpetra: A linear algebra interface package -// -// Copyright 2012 NTESS and the Xpetra contributors. -// SPDX-License-Identifier: BSD-3-Clause -// ***************************************************************************** -// @HEADER - -#include "Xpetra_EpetraExport.hpp" -#include "Xpetra_Exceptions.hpp" - -namespace Xpetra { - -template -RCP > toXpetra(const Epetra_Export *exp) { - if (exp != NULL) { - RCP eexp = rcp(new Epetra_Export(*exp)); // NOTE: non consitent: return pointer, take ref - return rcp(new Xpetra::EpetraExportT(eexp)); - } - - return Teuchos::null; -} - -#ifndef XPETRA_EPETRA_NO_32BIT_GLOBAL_INDICES -#ifdef HAVE_XPETRA_TPETRA -#include "TpetraCore_config.h" -#if ((defined(EPETRA_HAVE_OMP) && !defined(HAVE_TPETRA_INST_OPENMP)) || \ - (!defined(EPETRA_HAVE_OMP) && !defined(HAVE_TPETRA_INST_SERIAL))) -template class EpetraExportT; -template RCP > toXpetra(const Epetra_Export *); -#endif - -#ifdef HAVE_TPETRA_INST_SERIAL -template class EpetraExportT; -template RCP > toXpetra(const Epetra_Export *); -#endif -#ifdef HAVE_TPETRA_INST_PTHREAD -template class EpetraExportT; -template RCP > toXpetra(const Epetra_Export *); -#endif -#ifdef HAVE_TPETRA_INST_OPENMP -template class EpetraExportT; -template RCP > toXpetra(const Epetra_Export *); -#endif -#ifdef HAVE_TPETRA_INST_CUDA -typedef Tpetra::KokkosCompat::KokkosCudaWrapperNode default_node_type; -template class EpetraExportT; -template RCP > toXpetra(const Epetra_Export *); -#endif -#ifdef HAVE_TPETRA_INST_HIP -typedef Tpetra::KokkosCompat::KokkosHIPWrapperNode default_node_type; -template class EpetraExportT; -template RCP > toXpetra(const Epetra_Export *); -#endif -#else -// Tpetra is disabled and Kokkos not available: use dummy node type -typedef Xpetra::EpetraNode default_node_type; -template class EpetraExportT; -template RCP > toXpetra(const Epetra_Export *); -#endif // HAVE_XPETRA_TPETRA -#endif - -#ifndef XPETRA_EPETRA_NO_64BIT_GLOBAL_INDICES -#ifdef HAVE_XPETRA_TPETRA -#include "TpetraCore_config.h" -#if ((defined(EPETRA_HAVE_OMP) && !defined(HAVE_TPETRA_INST_OPENMP)) || \ - (!defined(EPETRA_HAVE_OMP) && !defined(HAVE_TPETRA_INST_SERIAL))) -template class EpetraExportT; -template RCP > toXpetra(const Epetra_Export *); -#endif - -#ifdef HAVE_TPETRA_INST_SERIAL -template class EpetraExportT; -template RCP > toXpetra(const Epetra_Export *); -#endif -#ifdef HAVE_TPETRA_INST_PTHREAD -template class EpetraExportT; -template RCP > toXpetra(const Epetra_Export *); -#endif -#ifdef HAVE_TPETRA_INST_OPENMP -template class EpetraExportT; -template RCP > toXpetra(const Epetra_Export *); -#endif -#ifdef HAVE_TPETRA_INST_CUDA -typedef Tpetra::KokkosCompat::KokkosCudaWrapperNode default_node_type; -template class EpetraExportT; -template RCP > toXpetra(const Epetra_Export *); -#endif -#ifdef HAVE_TPETRA_INST_HIP -typedef Tpetra::KokkosCompat::KokkosHIPWrapperNode default_node_type; -template class EpetraExportT; -template RCP > toXpetra(const Epetra_Export *); -#endif -#else -// Tpetra is disabled and Kokkos not available: use dummy node type -typedef Xpetra::EpetraNode default_node_type; -template class EpetraExportT; -template RCP > toXpetra(const Epetra_Export *); -#endif // HAVE_XPETRA_TPETRA -#endif - -} // namespace Xpetra diff --git a/packages/xpetra/src/Export/Xpetra_EpetraExport.hpp b/packages/xpetra/src/Export/Xpetra_EpetraExport.hpp deleted file mode 100644 index 7a08c27edd4d..000000000000 --- a/packages/xpetra/src/Export/Xpetra_EpetraExport.hpp +++ /dev/null @@ -1,174 +0,0 @@ -// @HEADER -// ***************************************************************************** -// Xpetra: A linear algebra interface package -// -// Copyright 2012 NTESS and the Xpetra contributors. -// SPDX-License-Identifier: BSD-3-Clause -// ***************************************************************************** -// @HEADER - -#ifndef XPETRA_EPETRAEXPORT_HPP -#define XPETRA_EPETRAEXPORT_HPP - -#include "Xpetra_EpetraConfigDefs.hpp" - -#include "Xpetra_Export.hpp" - -#include "Xpetra_EpetraMap.hpp" //TMP - -#include "Epetra_Export.h" - -#if defined(XPETRA_ENABLE_DEPRECATED_CODE) -#ifdef __GNUC__ -#if defined(Xpetra_SHOW_DEPRECATED_WARNINGS) -#warning "The header file Trilinos/packages/xpetra/src/Export/Xpetra_EpetraExport.hpp is deprecated." -#endif -#endif -#else -#error "The header file Trilinos/packages/xpetra/src/Export/Xpetra_EpetraExport.hpp is deprecated." -#endif - -// Note: 'export' is a reserved keyword in C++. Do not use 'export' as a variable name. - -namespace Xpetra { - -// TODO: move that elsewhere -template -XPETRA_DEPRECATED const Epetra_Export &toEpetra(const Export &); -template -XPETRA_DEPRECATED RCP > toXpetra(const Epetra_Export *exp); - -template -class XPETRA_DEPRECATED EpetraExportT - : public Export { - typedef int LocalOrdinal; - typedef EpetraGlobalOrdinal GlobalOrdinal; - //! The specialization of Map used by this class. - typedef Map map_type; - - public: - //! @name Constructor/Destructor Methods - //@{ - - //! Construct a Export object from the source and target Map. - EpetraExportT(const Teuchos::RCP &source, const Teuchos::RCP &target) - : export_(rcp(new Epetra_Export(toEpetra(source), toEpetra(target)))) {} // Warning: Epetra(Target, Source) vs. Tpetra(Source, Target) - - ////! Constructor (with list of parameters). - // Definition not in cpp, so comment out - // EpetraExportT(const Teuchos::RCP< const map_type > &source, const Teuchos::RCP< const map_type > &target, const Teuchos::RCP< Teuchos::ParameterList > &plist); - - ////! Copy constructor. - // Definition not in cpp, so comment out - // EpetraExportT(const Export< LocalOrdinal, GlobalOrdinal, Node > &rhs); - - //! Destructor. - ~EpetraExportT() {} - - //@} - - //! @name Export Attribute Methods - //@{ - - //! Number of initial identical IDs. - size_t getNumSameIDs() const { - XPETRA_MONITOR("EpetraExportT::getNumSameIDs"); - return export_->NumSameIDs(); - } - - //! Number of IDs to permute but not to communicate. - size_t getNumPermuteIDs() const { - XPETRA_MONITOR("EpetraExportT::getNumPermuteIDs"); - return export_->NumPermuteIDs(); - } - - //! List of local IDs in the source Map that are permuted. - ArrayView getPermuteFromLIDs() const { - XPETRA_MONITOR("EpetraExportT::getPermuteFromLIDs"); - TEUCHOS_TEST_FOR_EXCEPTION(1, Xpetra::Exceptions::NotImplemented, "TODO EpetraExportT::getExportImageIDs not implemented"); - } - - //! List of local IDs in the target Map that are permuted. - ArrayView getPermuteToLIDs() const { - XPETRA_MONITOR("EpetraExportT::getPermuteToLIDs"); - TEUCHOS_TEST_FOR_EXCEPTION(1, Xpetra::Exceptions::NotImplemented, "TODO EpetraExportT::getPermuteToLIDs not implemented"); - } - - //! Number of entries not on the calling process. - size_t getNumRemoteIDs() const { - XPETRA_MONITOR("EpetraExportT::getNumRemoteIDs"); - TEUCHOS_TEST_FOR_EXCEPTION(1, Xpetra::Exceptions::NotImplemented, "TODO EpetraExportT::getNumRemoteIDs not implemented"); - } - - //! List of entries in the target Map to receive from other processes. - ArrayView getRemoteLIDs() const { - XPETRA_MONITOR("EpetraExportT::getRemoteLIDs"); - TEUCHOS_TEST_FOR_EXCEPTION(1, Xpetra::Exceptions::NotImplemented, "TODO EpetraExportT::getRemoteLIDs not implemented"); - } - - //! Number of entries that must be sent by the calling process to other processes. - size_t getNumExportIDs() const { - XPETRA_MONITOR("EpetraExportT::getNumExportIDs"); - TEUCHOS_TEST_FOR_EXCEPTION(1, Xpetra::Exceptions::NotImplemented, "TODO EpetraExportT::getNumExportIDs not implemented"); - } - - //! List of entries in the source Map that will be sent to other processes. - ArrayView getExportLIDs() const { - XPETRA_MONITOR("EpetraExportT::getExportLIDs"); - TEUCHOS_TEST_FOR_EXCEPTION(1, Xpetra::Exceptions::NotImplemented, "TODO EpetraExportT::getExportLIDs not implemented"); - } - - //! List of processes to which entries will be sent. - ArrayView getExportPIDs() const { - XPETRA_MONITOR("EpetraExportT::getExportImageIDs"); - return ArrayView(export_->ExportPIDs(), export_->NumExportIDs()); - } - - //! The source Map used to construct this Export. - Teuchos::RCP > getSourceMap() const { - XPETRA_MONITOR("EpetraExportT::getSourceMap"); - return toXpetra(export_->SourceMap()); - } - - //! The target Map used to construct this Export. - Teuchos::RCP > getTargetMap() const { - XPETRA_MONITOR("EpetraExportT::getTargetMap"); - return toXpetra(export_->TargetMap()); - } - - //! Set parameters on the underlying object - void setDistributorParameters(const Teuchos::RCP params) const { XPETRA_MONITOR("EpetraExportT::setDistributorParameters"); } - - //@} - - //! @name I/O Methods - //@{ - - //! Print the Export's data to the given output stream. - void print(std::ostream &os) const { - XPETRA_MONITOR("EpetraExportT::"); - export_->Print(os); - } - - //@} - - //! @name Xpetra specific - //@{ - - //! EpetraExportT constructor to wrap a Epetra_Export object - EpetraExportT(const RCP &exp) - : export_(exp) {} - - //! Get the underlying Epetra export - RCP getEpetra_Export() const { return export_; } - - //@} - - private: - RCP export_; - -}; // EpetraExportT class - -} // namespace Xpetra - -#endif // XPETRA_EPETRAEXPORT_HPP diff --git a/packages/xpetra/src/Export/Xpetra_ExportFactory.hpp b/packages/xpetra/src/Export/Xpetra_ExportFactory.hpp index 2de1c0bb6fc5..4311a40203c7 100644 --- a/packages/xpetra/src/Export/Xpetra_ExportFactory.hpp +++ b/packages/xpetra/src/Export/Xpetra_ExportFactory.hpp @@ -14,12 +14,7 @@ #include "Xpetra_Export.hpp" -#ifdef HAVE_XPETRA_TPETRA #include "Xpetra_TpetraExport.hpp" -#endif -#ifdef HAVE_XPETRA_EPETRA -#include "Xpetra_EpetraExport.hpp" -#endif #include "Xpetra_Exceptions.hpp" @@ -39,10 +34,8 @@ class ExportFactory { XPETRA_MONITOR("ExportFactory::Build"); TEUCHOS_TEST_FOR_EXCEPTION(source->lib() != target->lib(), Xpetra::Exceptions::RuntimeError, ""); -#ifdef HAVE_XPETRA_TPETRA if (source->lib() == UseTpetra) return rcp(new TpetraExport(source, target)); -#endif XPETRA_FACTORY_ERROR_IF_EPETRA(source->lib()); XPETRA_FACTORY_END; @@ -50,66 +43,8 @@ class ExportFactory { }; // we need the Epetra specialization only if Epetra is enabled -#if (defined(HAVE_XPETRA_EPETRA) && !defined(XPETRA_EPETRA_NO_32BIT_GLOBAL_INDICES)) -template <> -class ExportFactory { - typedef int LocalOrdinal; - typedef int GlobalOrdinal; - typedef EpetraNode Node; - - private: - //! Private constructor. This is a static class. - ExportFactory() {} - - public: - static RCP > Build(const RCP > &source, const RCP > &target) { - XPETRA_MONITOR("ExportFactory::Build"); - - TEUCHOS_TEST_FOR_EXCEPTION(source->lib() != target->lib(), Xpetra::Exceptions::RuntimeError, ""); - -#ifdef HAVE_XPETRA_TPETRA - if (source->lib() == UseTpetra) - return rcp(new TpetraExport(source, target)); -#endif - - if (source->lib() == UseEpetra) - return rcp(new EpetraExportT(source, target)); - - XPETRA_FACTORY_END; - } -}; -#endif // we need the Epetra specialization only if Epetra is enabled -#if (defined(HAVE_XPETRA_EPETRA) && !defined(XPETRA_EPETRA_NO_64BIT_GLOBAL_INDICES)) -template <> -class ExportFactory { - typedef int LocalOrdinal; - typedef long long GlobalOrdinal; - typedef EpetraNode Node; - - private: - //! Private constructor. This is a static class. - ExportFactory() {} - - public: - static RCP > Build(const RCP > &source, const RCP > &target) { - XPETRA_MONITOR("ExportFactory::Build"); - - TEUCHOS_TEST_FOR_EXCEPTION(source->lib() != target->lib(), Xpetra::Exceptions::RuntimeError, ""); - -#ifdef HAVE_XPETRA_TPETRA - if (source->lib() == UseTpetra) - return rcp(new TpetraExport(source, target)); -#endif - - if (source->lib() == UseEpetra) - return rcp(new EpetraExportT(source, target)); - - XPETRA_FACTORY_END; - } -}; -#endif } // namespace Xpetra diff --git a/packages/xpetra/src/Export/Xpetra_TpetraExport_def.hpp b/packages/xpetra/src/Export/Xpetra_TpetraExport_def.hpp index b43bff8435a0..4c38f93d2981 100644 --- a/packages/xpetra/src/Export/Xpetra_TpetraExport_def.hpp +++ b/packages/xpetra/src/Export/Xpetra_TpetraExport_def.hpp @@ -160,242 +160,6 @@ TpetraExport:: return export_; } -#ifdef HAVE_XPETRA_EPETRA - -#if ((defined(EPETRA_HAVE_OMP) && (!defined(HAVE_TPETRA_INST_OPENMP) || !defined(HAVE_TPETRA_INST_INT_INT))) || (!defined(EPETRA_HAVE_OMP) && (!defined(HAVE_TPETRA_INST_SERIAL) || !defined(HAVE_TPETRA_INST_INT_INT)))) - -// stub implementation for GO=int and NO=EpetraNode -template <> -class TpetraExport - : public Export { - public: - typedef int LocalOrdinal; - typedef int GlobalOrdinal; - typedef EpetraNode Node; - - //! The specialization of Map used by this class. - typedef Map map_type; - - //! @name Constructor/Destructor Methods - //@{ - - //! Construct a Export object from the source and target Map. - TpetraExport(const Teuchos::RCP& source, const Teuchos::RCP& target) { - XPETRA_TPETRA_ETI_EXCEPTION(typeid(TpetraExport).name(), - typeid(TpetraExport).name(), - "int", - typeid(EpetraNode).name()); - } - - //! Constructor (with list of parameters). - TpetraExport(const Teuchos::RCP& source, - const Teuchos::RCP& target, - const Teuchos::RCP& plist) { - XPETRA_TPETRA_ETI_EXCEPTION(typeid(TpetraExport).name(), - typeid(TpetraExport).name(), - "int", - typeid(EpetraNode).name()); - } - - //! Copy constructor. - TpetraExport(const Export& rhs) { - XPETRA_TPETRA_ETI_EXCEPTION(typeid(TpetraExport).name(), - typeid(TpetraExport).name(), - "int", - typeid(EpetraNode).name()); - } - - //! Destructor. - ~TpetraExport() {} - - //@} - - //! @name Export Attribute Methods - //@{ - - //! Number of initial identical IDs. - size_t getNumSameIDs() const { return 0; } - - //! Number of IDs to permute but not to communicate. - size_t getNumPermuteIDs() const { return 0; } - - //! List of local IDs in the source Map that are permuted. - ArrayView getPermuteFromLIDs() const { return Teuchos::ArrayView(); } - - //! List of local IDs in the target Map that are permuted. - ArrayView getPermuteToLIDs() const { return Teuchos::ArrayView(); } - - //! Number of entries not on the calling process. - size_t getNumRemoteIDs() const { return 0; } - - //! List of entries in the target Map to receive from other processes. - ArrayView getRemoteLIDs() const { return Teuchos::ArrayView(); } - - //! Number of entries that must be sent by the calling process to other processes. - size_t getNumExportIDs() const { return 0; } - - //! List of entries in the source Map that will be sent to other processes. - ArrayView getExportLIDs() const { return Teuchos::ArrayView(); } - - //! List of processes to which entries will be sent. - ArrayView getExportPIDs() const { return Teuchos::ArrayView(); } - - //! The source Map used to construct this Export. - Teuchos::RCP> getSourceMap() const { return Teuchos::null; } - - //! The target Map used to construct this Export. - Teuchos::RCP> getTargetMap() const { return Teuchos::null; } - - //! Set parameters on the underlying object - void setDistributorParameters(const Teuchos::RCP params) const {}; - - //@} - - //! @name I/O Methods - //@{ - - //! Print the Export's data to the given output stream. - void print(std::ostream& os) const { /* noop */ - } - - //@} - - //! @name Xpetra specific - //@{ - - //! TpetraExport constructor to wrap a Tpetra::Export object - TpetraExport(const RCP>& exp) { - XPETRA_TPETRA_ETI_EXCEPTION(typeid(TpetraExport).name(), - typeid(TpetraExport).name(), - "int", - typeid(EpetraNode).name()); - } - - RCP> getTpetra_Export() const { return Teuchos::null; } - - //@} - -}; // TpetraExport class (specialization for LO=GO=int) -#endif // #if ((defined(EPETRA_HAVE_OMP) && (!defined(HAVE_TPETRA_INST_OPENMP) || !defined(HAVE_TPETRA_INST_INT_INT))) - -#if ((defined(EPETRA_HAVE_OMP) && (!defined(HAVE_TPETRA_INST_OPENMP) || !defined(HAVE_TPETRA_INST_INT_LONG_LONG))) || (!defined(EPETRA_HAVE_OMP) && (!defined(HAVE_TPETRA_INST_SERIAL) || !defined(HAVE_TPETRA_INST_INT_LONG_LONG)))) - -// stub implementation for GO=long long and NO=EpetraNode -template <> -class TpetraExport - : public Export { - public: - typedef int LocalOrdinal; - typedef long long GlobalOrdinal; - typedef EpetraNode Node; - - //! The specialization of Map used by this class. - typedef Map map_type; - - //! @name Constructor/Destructor Methods - //@{ - - //! Construct a Export object from the source and target Map. - TpetraExport(const Teuchos::RCP& source, const Teuchos::RCP& target) { - XPETRA_TPETRA_ETI_EXCEPTION(typeid(TpetraExport).name(), - typeid(TpetraExport).name(), - "long long", - typeid(EpetraNode).name()); - } - - //! Constructor (with list of parameters). - TpetraExport(const Teuchos::RCP& source, - const Teuchos::RCP& target, - const Teuchos::RCP& plist) { - XPETRA_TPETRA_ETI_EXCEPTION(typeid(TpetraExport).name(), - typeid(TpetraExport).name(), - "long long", - typeid(EpetraNode).name()); - } - - //! Copy constructor. - TpetraExport(const Export& rhs) { - XPETRA_TPETRA_ETI_EXCEPTION(typeid(TpetraExport).name(), - typeid(TpetraExport).name(), - "long long", - typeid(EpetraNode).name()); - } - - //! Destructor. - ~TpetraExport() {} - - //@} - - //! @name Export Attribute Methods - //@{ - - //! Number of initial identical IDs. - size_t getNumSameIDs() const { return 0; } - - //! Number of IDs to permute but not to communicate. - size_t getNumPermuteIDs() const { return 0; } - - //! List of local IDs in the source Map that are permuted. - ArrayView getPermuteFromLIDs() const { return Teuchos::ArrayView(); } - - //! List of local IDs in the target Map that are permuted. - ArrayView getPermuteToLIDs() const { return Teuchos::ArrayView(); } - - //! Number of entries not on the calling process. - size_t getNumRemoteIDs() const { return 0; } - - //! List of entries in the target Map to receive from other processes. - ArrayView getRemoteLIDs() const { return Teuchos::ArrayView(); } - - //! Number of entries that must be sent by the calling process to other processes. - size_t getNumExportIDs() const { return 0; } - - //! List of entries in the source Map that will be sent to other processes. - ArrayView getExportLIDs() const { return Teuchos::ArrayView(); } - - //! List of processes to which entries will be sent. - ArrayView getExportPIDs() const { return Teuchos::ArrayView(); } - - //! The source Map used to construct this Export. - Teuchos::RCP> getSourceMap() const { return Teuchos::null; } - - //! The target Map used to construct this Export. - Teuchos::RCP> getTargetMap() const { return Teuchos::null; } - - //! Set parameters on the underlying object - void setDistributorParameters(const Teuchos::RCP params) const {}; - - //@} - - //! @name I/O Methods - //@{ - - //! Print the Export's data to the given output stream. - void print(std::ostream& os) const { /* noop */ - } - - //@} - - //! @name Xpetra specific - //@{ - - //! TpetraExport constructor to wrap a Tpetra::Export object - TpetraExport(const RCP>& exp) { - XPETRA_TPETRA_ETI_EXCEPTION(typeid(TpetraExport).name(), - typeid(TpetraExport).name(), - "long long", - typeid(EpetraNode).name()); - } - - RCP> getTpetra_Export() const { return Teuchos::null; } - - //@} - -}; // TpetraExport class (specialization for GO=long long, NO=EpetraNode) -#endif // #if ((defined(EPETRA_HAVE_OMP) && (!defined(HAVE_TPETRA_INST_OPENMP) || !defined(HAVE_TPETRA_INST_INT_LONG_LONG))) - -#endif // HAVE_XPETRA_EPETRA - } // namespace Xpetra #endif // XPETRA_TPETRAEXPORT_DEF_HPP diff --git a/packages/xpetra/src/Headers/Xpetra_ConfigDefs.hpp b/packages/xpetra/src/Headers/Xpetra_ConfigDefs.hpp index cf3fd2b6ec62..9de258427e98 100644 --- a/packages/xpetra/src/Headers/Xpetra_ConfigDefs.hpp +++ b/packages/xpetra/src/Headers/Xpetra_ConfigDefs.hpp @@ -50,9 +50,7 @@ #include #include -#if defined(HAVE_XPETRA_TPETRA) #include -#endif //! %Xpetra namespace namespace Xpetra { diff --git a/packages/xpetra/src/Headers/Xpetra_EpetraConfigDefs.hpp b/packages/xpetra/src/Headers/Xpetra_EpetraConfigDefs.hpp deleted file mode 100644 index c090eeb81bd7..000000000000 --- a/packages/xpetra/src/Headers/Xpetra_EpetraConfigDefs.hpp +++ /dev/null @@ -1,19 +0,0 @@ -// @HEADER -// ***************************************************************************** -// Xpetra: A linear algebra interface package -// -// Copyright 2012 NTESS and the Xpetra contributors. -// SPDX-License-Identifier: BSD-3-Clause -// ***************************************************************************** -// @HEADER - -#ifndef XPETRA_EPETRACONFIGDEFS_HPP -#define XPETRA_EPETRACONFIGDEFS_HPP - -#include "Xpetra_ConfigDefs.hpp" - -#ifndef HAVE_XPETRA_EPETRA -#error This file should be included only if HAVE_XPETRA_EPETRA is defined. -#endif - -#endif // XPETRA_EPETRACONFIGDEFS_HPP diff --git a/packages/xpetra/src/Headers/Xpetra_TpetraConfigDefs.hpp b/packages/xpetra/src/Headers/Xpetra_TpetraConfigDefs.hpp index e8832a091fd5..908839a9a159 100644 --- a/packages/xpetra/src/Headers/Xpetra_TpetraConfigDefs.hpp +++ b/packages/xpetra/src/Headers/Xpetra_TpetraConfigDefs.hpp @@ -12,8 +12,4 @@ #include "Xpetra_ConfigDefs.hpp" -#ifndef HAVE_XPETRA_TPETRA -#error This file should be included only if HAVE_XPETRA_TPETRA is defined. -#endif - #endif // XPETRA_TPETRACONFIGDEFS_HPP diff --git a/packages/xpetra/src/Import/Xpetra_EpetraImport.cpp b/packages/xpetra/src/Import/Xpetra_EpetraImport.cpp deleted file mode 100644 index 26a4aaca4cbc..000000000000 --- a/packages/xpetra/src/Import/Xpetra_EpetraImport.cpp +++ /dev/null @@ -1,104 +0,0 @@ -// @HEADER -// ***************************************************************************** -// Xpetra: A linear algebra interface package -// -// Copyright 2012 NTESS and the Xpetra contributors. -// SPDX-License-Identifier: BSD-3-Clause -// ***************************************************************************** -// @HEADER - -#include "Xpetra_EpetraImport.hpp" -#include "Xpetra_Exceptions.hpp" - -namespace Xpetra { - -template -RCP > toXpetra(const Epetra_Import *import) { - if (import != NULL) { - RCP imp = rcp(new Epetra_Import(*import)); // NOTE: non consitent: return pointer, take ref - return rcp(new Xpetra::EpetraImportT(imp)); - } - - return Teuchos::null; -} -// - -#ifndef XPETRA_EPETRA_NO_32BIT_GLOBAL_INDICES -#ifdef HAVE_XPETRA_TPETRA -#include "TpetraCore_config.h" -#if ((defined(EPETRA_HAVE_OMP) && !defined(HAVE_TPETRA_INST_OPENMP)) || \ - (!defined(EPETRA_HAVE_OMP) && !defined(HAVE_TPETRA_INST_SERIAL))) -template class EpetraImportT; -template RCP > toXpetra(const Epetra_Import *); -#endif - -#ifdef HAVE_TPETRA_INST_SERIAL -template class EpetraImportT; -template RCP > toXpetra(const Epetra_Import *); -#endif -#ifdef HAVE_TPETRA_INST_PTHREAD -template class EpetraImportT; -template RCP > toXpetra(const Epetra_Import *); -#endif -#ifdef HAVE_TPETRA_INST_OPENMP -template class EpetraImportT; -template RCP > toXpetra(const Epetra_Import *); -#endif -#ifdef HAVE_TPETRA_INST_CUDA -typedef Tpetra::KokkosCompat::KokkosCudaWrapperNode default_node_type; -template class EpetraImportT; -template RCP > toXpetra(const Epetra_Import *); -#endif -#ifdef HAVE_TPETRA_INST_HIP -typedef Tpetra::KokkosCompat::KokkosHIPWrapperNode default_node_type; -template class EpetraImportT; -template RCP > toXpetra(const Epetra_Import *); -#endif -#else -// Tpetra is disabled and Kokkos not available: use dummy node type -typedef Xpetra::EpetraNode default_node_type; -template class EpetraImportT; -template RCP > toXpetra(const Epetra_Import *); -#endif // HAVE_XPETRA_TPETRA -#endif // XPETRA_EPETRA_NO_32BIT_GLOBAL_INDICES - -#ifndef XPETRA_EPETRA_NO_64BIT_GLOBAL_INDICES -#ifdef HAVE_XPETRA_TPETRA -#include "TpetraCore_config.h" -#if ((defined(EPETRA_HAVE_OMP) && !defined(HAVE_TPETRA_INST_OPENMP)) || \ - (!defined(EPETRA_HAVE_OMP) && !defined(HAVE_TPETRA_INST_SERIAL))) -template class EpetraImportT; -template RCP > toXpetra(const Epetra_Import *); -#endif - -#ifdef HAVE_TPETRA_INST_SERIAL -template class EpetraImportT; -template RCP > toXpetra(const Epetra_Import *); -#endif -#ifdef HAVE_TPETRA_INST_PTHREAD -template class EpetraImportT; -template RCP > toXpetra(const Epetra_Import *); -#endif -#ifdef HAVE_TPETRA_INST_OPENMP -template class EpetraImportT; -template RCP > toXpetra(const Epetra_Import *); -#endif -#ifdef HAVE_TPETRA_INST_CUDA -typedef Tpetra::KokkosCompat::KokkosCudaWrapperNode default_node_type; -template class EpetraImportT; -template RCP > toXpetra(const Epetra_Import *); -#endif -#ifdef HAVE_TPETRA_INST_HIP -typedef Tpetra::KokkosCompat::KokkosHIPWrapperNode default_node_type; -template class EpetraImportT; -template RCP > toXpetra(const Epetra_Import *); -#endif -#else -// Tpetra is disabled and Kokkos not available: use dummy node type -typedef Xpetra::EpetraNode default_node_type; -template class EpetraImportT; -template RCP > toXpetra(const Epetra_Import *); -#endif // HAVE_XPETRA_TPETRA -#endif - -} // namespace Xpetra diff --git a/packages/xpetra/src/Import/Xpetra_EpetraImport.hpp b/packages/xpetra/src/Import/Xpetra_EpetraImport.hpp deleted file mode 100644 index 3923ff943305..000000000000 --- a/packages/xpetra/src/Import/Xpetra_EpetraImport.hpp +++ /dev/null @@ -1,181 +0,0 @@ -// @HEADER -// ***************************************************************************** -// Xpetra: A linear algebra interface package -// -// Copyright 2012 NTESS and the Xpetra contributors. -// SPDX-License-Identifier: BSD-3-Clause -// ***************************************************************************** -// @HEADER - -#ifndef XPETRA_EPETRAIMPORT_HPP -#define XPETRA_EPETRAIMPORT_HPP - -/* this file is automatically generated - do not edit (see script/epetra.py) */ - -#include "Xpetra_EpetraConfigDefs.hpp" - -#include "Xpetra_Import.hpp" - -#include "Xpetra_EpetraMap.hpp" //TMP - -#include "Epetra_Import.h" - -#if defined(XPETRA_ENABLE_DEPRECATED_CODE) -#ifdef __GNUC__ -#if defined(Xpetra_SHOW_DEPRECATED_WARNINGS) -#warning "The header file Trilinos/packages/xpetra/src/Import/Xpetra_EpetraImport.hpp is deprecated." -#endif -#endif -#else -#error "The header file Trilinos/packages/xpetra/src/Import/Xpetra_EpetraImport.hpp is deprecated." -#endif - -namespace Xpetra { - -template -XPETRA_DEPRECATED RCP > toXpetra(const Epetra_Import *import); -// - -template -class XPETRA_DEPRECATED EpetraImportT - : public Import { - typedef int LocalOrdinal; - typedef EpetraGlobalOrdinal GlobalOrdinal; - //! The specialization of Map used by this class. - typedef Map map_type; - - public: - //! @name Constructor/Destructor Methods - //@{ - - //! Construct an Import from the source and target Maps. - EpetraImportT(const Teuchos::RCP &source, const Teuchos::RCP &target) - : import_(rcp(new Epetra_Import(toEpetra(target), toEpetra(source)))) {} // Warning: Epetra(Target, Source) vs. Tpetra(Source, Target) - - ////! Constructor (with list of parameters). - // Definition not in cpp, so comment out - // EpetraImportT(const Teuchos::RCP< const map_type > &source, const Teuchos::RCP< const map_type > &target, const Teuchos::RCP< Teuchos::ParameterList > &plist); - - ////! Copy constructor. - // Definition commented out in cpp - // EpetraImportT(const Import< LocalOrdinal, GlobalOrdinal, Node > &import); - - //! Destructor. - ~EpetraImportT() {} - - //! Special "constructor" - Teuchos::RCP > - createRemoteOnlyImport(const Teuchos::RCP &remoteTarget) const { TEUCHOS_TEST_FOR_EXCEPTION(1, Xpetra::Exceptions::NotImplemented, "TODO EpetraImportT::createRemoteOnlyImport not implemented"); } - - //@} - - //! @name Import Attribute Methods - //@{ - - //! Number of initial identical IDs. - size_t getNumSameIDs() const { - XPETRA_MONITOR("EpetraImportT::getNumSameIDs"); - return import_->NumSameIDs(); - } - - //! Number of IDs to permute but not to communicate. - size_t getNumPermuteIDs() const { - XPETRA_MONITOR("EpetraImportT::getNumPermuteIDs"); - return import_->NumPermuteIDs(); - } - - //! List of local IDs in the source Map that are permuted. - ArrayView getPermuteFromLIDs() const { - XPETRA_MONITOR("EpetraImportT::getPermuteFromLIDs"); - TEUCHOS_TEST_FOR_EXCEPTION(1, Xpetra::Exceptions::NotImplemented, "TODO EpetraImportT::getExportImageIDs not implemented"); - } - - //! List of local IDs in the target Map that are permuted. - ArrayView getPermuteToLIDs() const { - XPETRA_MONITOR("EpetraImportT::getPermuteToLIDs"); - TEUCHOS_TEST_FOR_EXCEPTION(1, Xpetra::Exceptions::NotImplemented, "TODO EpetraImportT::getPermuteToLIDs not implemented"); - } - - //! Number of entries not on the calling process. - size_t getNumRemoteIDs() const { - XPETRA_MONITOR("EpetraImportT::getNumRemoteIDs"); - return import_->NumRemoteIDs(); - } - - //! List of entries in the target Map to receive from other processes. - ArrayView getRemoteLIDs() const { - XPETRA_MONITOR("EpetraImportT::getRemoteLIDs"); - TEUCHOS_TEST_FOR_EXCEPTION(1, Xpetra::Exceptions::NotImplemented, "TODO EpetraImportT::getRemoteLIDs not implemented"); - } - - //! List of entries in the target Map to receive from other processes. - ArrayView getRemotePIDs() const { - XPETRA_MONITOR("EpetraImportT::getRemotePIDs"); - TEUCHOS_TEST_FOR_EXCEPTION(1, Xpetra::Exceptions::NotImplemented, "TODO EpetraImportT::getRemotePIDs not implemented"); - } - - //! Number of entries that must be sent by the calling process to other processes. - size_t getNumExportIDs() const { - XPETRA_MONITOR("EpetraImportT::getNumExportIDs"); - return import_->NumExportIDs(); - } - - //! List of entries in the source Map that will be sent to other processes. - ArrayView getExportLIDs() const { - XPETRA_MONITOR("EpetraImportT::getExportLIDs"); - TEUCHOS_TEST_FOR_EXCEPTION(1, Xpetra::Exceptions::NotImplemented, "TODO EpetraImportT::getExportLIDs not implemented"); - } - - //! List of processes to which entries will be sent. - ArrayView getExportPIDs() const { - XPETRA_MONITOR("EpetraImportT::getExportImageIDs"); - return ArrayView(import_->ExportPIDs(), import_->NumExportIDs()); - } - - //! The Source Map used to construct this Import object. - Teuchos::RCP > getSourceMap() const { - XPETRA_MONITOR("EpetraImportT::getSourceMap"); - return toXpetra(import_->SourceMap()); - } - - //! The Target Map used to construct this Import object. - Teuchos::RCP > getTargetMap() const { - XPETRA_MONITOR("EpetraImportT::getTargetMap"); - return toXpetra(import_->TargetMap()); - } - - void setDistributorParameters(const Teuchos::RCP params) const { XPETRA_MONITOR("EpetraImportT::setDistributorParameters"); } - - //@} - - //! @name I/O Methods - //@{ - - //! Print the Import's data to the given output stream. - void print(std::ostream &os) const { - XPETRA_MONITOR("EpetraImportT::print"); - import_->Print(os); - } - - //@} - - //! @name Xpetra specific - //@{ - - //! EpetraImportT constructor to wrap a Epetra_Import object - EpetraImportT(const RCP &import) - : import_(import) {} - - //! Get the underlying Epetra import - RCP getEpetra_Import() const { return import_; } - - //@} - - private: - RCP import_; - -}; // EpetraImportT class - -} // namespace Xpetra - -#endif // XPETRA_EPETRAIMPORT_HPP diff --git a/packages/xpetra/src/Import/Xpetra_ImportFactory.hpp b/packages/xpetra/src/Import/Xpetra_ImportFactory.hpp index 620e22da1249..71bbb18f5a88 100644 --- a/packages/xpetra/src/Import/Xpetra_ImportFactory.hpp +++ b/packages/xpetra/src/Import/Xpetra_ImportFactory.hpp @@ -14,12 +14,7 @@ #include "Xpetra_Import.hpp" -#ifdef HAVE_XPETRA_TPETRA #include "Xpetra_TpetraImport.hpp" -#endif -#ifdef HAVE_XPETRA_EPETRA -#include "Xpetra_EpetraImport.hpp" -#endif #include "Xpetra_Exceptions.hpp" @@ -42,10 +37,8 @@ class ImportFactory { TEUCHOS_TEST_FOR_EXCEPTION(source->lib() != target->lib(), Xpetra::Exceptions::RuntimeError, ""); -#ifdef HAVE_XPETRA_TPETRA if (source->lib() == UseTpetra) return rcp(new TpetraImport(source, target, plist)); -#endif XPETRA_FACTORY_ERROR_IF_EPETRA(source->lib()); XPETRA_FACTORY_END; @@ -53,72 +46,8 @@ class ImportFactory { }; // we need the Epetra specialization only if Epetra is enabled -#if (defined(HAVE_XPETRA_EPETRA) && !defined(XPETRA_EPETRA_NO_32BIT_GLOBAL_INDICES)) - -// Specialization on LO=GO=int with serial node. -// Used for Epetra and Tpetra -// For any other node definition the general default implementation is used which allows Tpetra only -template <> -class ImportFactory { - typedef int LocalOrdinal; - typedef int GlobalOrdinal; - typedef EpetraNode Node; - - private: - //! Private constructor. This is a static class. - ImportFactory() {} - - public: - static RCP > Build(const RCP > &source, - const RCP > &target, - const Teuchos::RCP &plist = Teuchos::null) { - XPETRA_MONITOR("ImportFactory::Build"); - TEUCHOS_TEST_FOR_EXCEPTION(source->lib() != target->lib(), Xpetra::Exceptions::RuntimeError, ""); - -#ifdef HAVE_XPETRA_TPETRA - if (source->lib() == UseTpetra) - return rcp(new TpetraImport(source, target, plist)); -#endif - - if (source->lib() == UseEpetra) - return rcp(new EpetraImportT(source, target)); - - XPETRA_FACTORY_END; - } -}; -#endif // we need the Epetra specialization only if Epetra is enabled -#if (defined(HAVE_XPETRA_EPETRA) && !defined(XPETRA_EPETRA_NO_64BIT_GLOBAL_INDICES)) -template <> -class ImportFactory { - typedef int LocalOrdinal; - typedef long long GlobalOrdinal; - typedef EpetraNode Node; - - private: - //! Private constructor. This is a static class. - ImportFactory() {} - - public: - static RCP > Build(const RCP > &source, - const RCP > &target, - const Teuchos::RCP &plist = Teuchos::null) { - XPETRA_MONITOR("ImportFactory::Build"); - TEUCHOS_TEST_FOR_EXCEPTION(source->lib() != target->lib(), Xpetra::Exceptions::RuntimeError, ""); - -#ifdef HAVE_XPETRA_TPETRA - if (source->lib() == UseTpetra) - return rcp(new TpetraImport(source, target, plist)); -#endif - - if (source->lib() == UseEpetra) - return rcp(new EpetraImportT(source, target)); - - XPETRA_FACTORY_END; - } -}; -#endif } // namespace Xpetra #define XPETRA_IMPORTFACTORY_SHORT diff --git a/packages/xpetra/src/Import/Xpetra_TpetraImport_def.hpp b/packages/xpetra/src/Import/Xpetra_TpetraImport_def.hpp index 4a53e66ea5b8..b2aea6660d37 100644 --- a/packages/xpetra/src/Import/Xpetra_TpetraImport_def.hpp +++ b/packages/xpetra/src/Import/Xpetra_TpetraImport_def.hpp @@ -131,226 +131,6 @@ TpetraImport::TpetraImport(const RCP RCP > TpetraImport::getTpetra_Import() const { return import_; } -#ifdef HAVE_XPETRA_EPETRA - -#if ((defined(EPETRA_HAVE_OMP) && (!defined(HAVE_TPETRA_INST_OPENMP) || !defined(HAVE_TPETRA_INST_INT_INT))) || \ - (!defined(EPETRA_HAVE_OMP) && (!defined(HAVE_TPETRA_INST_SERIAL) || !defined(HAVE_TPETRA_INST_INT_INT)))) - -// stub implementation for GO=int and NO=EpetraNode -template <> -class TpetraImport : public Import { - public: - typedef int LocalOrdinal; - typedef int GlobalOrdinal; - typedef EpetraNode Node; - - //! The specialization of Map used by this class. - typedef Map map_type; - - //! @name Constructor/Destructor Methods - //@{ - - //! Construct an Import from the source and target Maps. - TpetraImport(const Teuchos::RCP &source, const Teuchos::RCP &target) { - XPETRA_TPETRA_ETI_EXCEPTION(typeid(TpetraImport).name(), typeid(TpetraImport).name(), "int", typeid(EpetraNode).name()); - } - - //! Constructor (with list of parameters). - TpetraImport(const Teuchos::RCP &source, const Teuchos::RCP &target, const Teuchos::RCP &plist) { - XPETRA_TPETRA_ETI_EXCEPTION(typeid(TpetraImport).name(), typeid(TpetraImport).name(), "int", typeid(EpetraNode).name()); - } - - //! Copy constructor. - TpetraImport(const Import &import) { - XPETRA_TPETRA_ETI_EXCEPTION(typeid(TpetraImport).name(), typeid(TpetraImport).name(), "int", typeid(EpetraNode).name()); - } - - //! Destructor. - ~TpetraImport() {} - - //! Special "constructor" - Teuchos::RCP > - createRemoteOnlyImport(const Teuchos::RCP &remoteTarget) const { - return Teuchos::null; - } - - //@} - - //! @name Import Attribute Methods - //@{ - - //! Number of initial identical IDs. - size_t getNumSameIDs() const { return 0; } - - //! Number of IDs to permute but not to communicate. - size_t getNumPermuteIDs() const { return 0; } - - //! List of local IDs in the source Map that are permuted. - ArrayView getPermuteFromLIDs() const { return Teuchos::ArrayView(); } - - //! List of local IDs in the target Map that are permuted. - ArrayView getPermuteToLIDs() const { return Teuchos::ArrayView(); } - - //! Number of entries not on the calling process. - size_t getNumRemoteIDs() const { return 0; } - - //! List of entries in the target Map to receive from other processes. - ArrayView getRemoteLIDs() const { return Teuchos::ArrayView(); } - - //! Number of entries that must be sent by the calling process to other processes. - size_t getNumExportIDs() const { return 0; } - - //! List of entries in the source Map that will be sent to other processes. - ArrayView getExportLIDs() const { return Teuchos::ArrayView(); } - - //! List of processes to which entries will be sent. - ArrayView getExportPIDs() const { return Teuchos::ArrayView(); } - - //! The Source Map used to construct this Import object. - Teuchos::RCP > getSourceMap() const { return Teuchos::null; } - - //! The Target Map used to construct this Import object. - Teuchos::RCP > getTargetMap() const { return Teuchos::null; } - - //! Set parameters on the underlying object - void setDistributorParameters(const Teuchos::RCP params) const {} - - //@} - - //! @name I/O Methods - //@{ - - //! Print the Import's data to the given output stream. - void print(std::ostream &os) const { /* noop */ - } - - //@} - - //! @name Xpetra specific - //@{ - - //! TpetraImport constructor to wrap a Tpetra::Import object - TpetraImport(const RCP > &import) { - XPETRA_TPETRA_ETI_EXCEPTION(typeid(TpetraImport).name(), typeid(TpetraImport).name(), "int", typeid(EpetraNode).name()); - } - - RCP > getTpetra_Import() const { return Teuchos::null; } - - //@} - -}; // TpetraImport class (stub implementation for GO=int, NO=EpetraNode) -#endif - -#if ((defined(EPETRA_HAVE_OMP) && (!defined(HAVE_TPETRA_INST_OPENMP) || !defined(HAVE_TPETRA_INST_INT_LONG_LONG))) || \ - (!defined(EPETRA_HAVE_OMP) && (!defined(HAVE_TPETRA_INST_SERIAL) || !defined(HAVE_TPETRA_INST_INT_LONG_LONG)))) - -// stub implementation for GO=long long and NO=EpetraNode -template <> -class TpetraImport : public Import { - public: - typedef int LocalOrdinal; - typedef long long GlobalOrdinal; - typedef EpetraNode Node; - - //! The specialization of Map used by this class. - typedef Map map_type; - - //! @name Constructor/Destructor Methods - //@{ - - //! Construct an Import from the source and target Maps. - TpetraImport(const Teuchos::RCP &source, const Teuchos::RCP &target) { - XPETRA_TPETRA_ETI_EXCEPTION(typeid(TpetraImport).name(), typeid(TpetraImport).name(), "long long", typeid(EpetraNode).name()); - } - - //! Constructor (with list of parameters). - TpetraImport(const Teuchos::RCP &source, const Teuchos::RCP &target, const Teuchos::RCP &plist) { - XPETRA_TPETRA_ETI_EXCEPTION(typeid(TpetraImport).name(), typeid(TpetraImport).name(), "long long", typeid(EpetraNode).name()); - } - - //! Copy constructor. - TpetraImport(const Import &import) { - XPETRA_TPETRA_ETI_EXCEPTION(typeid(TpetraImport).name(), typeid(TpetraImport).name(), "long long", typeid(EpetraNode).name()); - } - - //! Destructor. - ~TpetraImport() {} - - //! Special "constructor" - Teuchos::RCP > - createRemoteOnlyImport(const Teuchos::RCP &remoteTarget) const { - return Teuchos::null; - } - - //@} - - //! @name Import Attribute Methods - //@{ - - //! Number of initial identical IDs. - size_t getNumSameIDs() const { return 0; } - - //! Number of IDs to permute but not to communicate. - size_t getNumPermuteIDs() const { return 0; } - - //! List of local IDs in the source Map that are permuted. - ArrayView getPermuteFromLIDs() const { return Teuchos::ArrayView(); } - - //! List of local IDs in the target Map that are permuted. - ArrayView getPermuteToLIDs() const { return Teuchos::ArrayView(); } - - //! Number of entries not on the calling process. - size_t getNumRemoteIDs() const { return 0; } - - //! List of entries in the target Map to receive from other processes. - ArrayView getRemoteLIDs() const { return Teuchos::ArrayView(); } - - //! Number of entries that must be sent by the calling process to other processes. - size_t getNumExportIDs() const { return 0; } - - //! List of entries in the source Map that will be sent to other processes. - ArrayView getExportLIDs() const { return Teuchos::ArrayView(); } - - //! List of processes to which entries will be sent. - ArrayView getExportPIDs() const { return Teuchos::ArrayView(); } - - //! The Source Map used to construct this Import object. - Teuchos::RCP > getSourceMap() const { return Teuchos::null; } - - //! The Target Map used to construct this Import object. - Teuchos::RCP > getTargetMap() const { return Teuchos::null; } - - //! Set parameters on the underlying object - void setDistributorParameters(const Teuchos::RCP params) const {} - - //@} - - //! @name I/O Methods - //@{ - - //! Print the Import's data to the given output stream. - void print(std::ostream &os) const { /* noop */ - } - - //@} - - //! @name Xpetra specific - //@{ - - //! TpetraImport constructor to wrap a Tpetra::Import object - TpetraImport(const RCP > &import) { - XPETRA_TPETRA_ETI_EXCEPTION(typeid(TpetraImport).name(), typeid(TpetraImport).name(), "long long", typeid(EpetraNode).name()); - } - - RCP > getTpetra_Import() const { return Teuchos::null; } - - //@} - -}; // TpetraImport class (stub implementation for GO=long long, NO=EpetraNode) -#endif - -#endif // HAVE_XPETRA_EPETRA - } // namespace Xpetra #endif diff --git a/packages/xpetra/src/Map/Xpetra_EpetraMap.cpp b/packages/xpetra/src/Map/Xpetra_EpetraMap.cpp deleted file mode 100644 index 083c5cf5ab17..000000000000 --- a/packages/xpetra/src/Map/Xpetra_EpetraMap.cpp +++ /dev/null @@ -1,148 +0,0 @@ -// @HEADER -// ***************************************************************************** -// Xpetra: A linear algebra interface package -// -// Copyright 2012 NTESS and the Xpetra contributors. -// SPDX-License-Identifier: BSD-3-Clause -// ***************************************************************************** -// @HEADER - -#include "Xpetra_ConfigDefs.hpp" - -#ifdef HAVE_XPETRA_EPETRA - -#include "Xpetra_EpetraMap.hpp" - -namespace Xpetra { - -template -const Epetra_Map &toEpetra(const Map &map) { - const EpetraMapT &epetraMap = dynamic_cast &>(*map.getMap()); - return epetraMap.getEpetra_Map(); -} - -template -const Epetra_Map &toEpetra(const RCP > &map) { - XPETRA_RCP_DYNAMIC_CAST(const EpetraMapT, map->getMap(), epetraMap, "toEpetra"); - return epetraMap->getEpetra_Map(); -} - -template -const RCP > toXpetra(const Epetra_BlockMap &map) { - RCP m = rcp(new Epetra_BlockMap(map)); - return rcp(new EpetraMapT(m)); -} - -#ifndef XPETRA_EPETRA_NO_32BIT_GLOBAL_INDICES - -#ifdef HAVE_XPETRA_TPETRA -#include "TpetraCore_config.h" -#if ((defined(EPETRA_HAVE_OMP) && !defined(HAVE_TPETRA_INST_OPENMP)) || \ - (!defined(EPETRA_HAVE_OMP) && !defined(HAVE_TPETRA_INST_SERIAL))) -template const RCP > toXpetra(const Epetra_BlockMap &map); -template const Epetra_Map &toEpetra(const RCP > &map); -template const Epetra_Map &toEpetra(const Map &map); -#endif -#ifdef HAVE_TPETRA_INST_SERIAL -// template class EpetraMapT; -template const RCP > toXpetra(const Epetra_BlockMap &map); -template const Epetra_Map &toEpetra(const RCP > &map); -template const Epetra_Map &toEpetra(const Map &map); -#endif -#ifdef HAVE_TPETRA_INST_PTHREAD -// template class EpetraMapT; -template const RCP > toXpetra(const Epetra_BlockMap &map); -template const Epetra_Map &toEpetra(const RCP > &map); -template const Epetra_Map &toEpetra(const Map &map); -#endif -#ifdef HAVE_TPETRA_INST_OPENMP -// template class EpetraMapT; -template const RCP > toXpetra(const Epetra_BlockMap &map); -template const Epetra_Map &toEpetra(const RCP > &map); -template const Epetra_Map &toEpetra(const Map &map); -#endif -#ifdef HAVE_TPETRA_INST_CUDA -typedef Tpetra::KokkosCompat::KokkosCudaWrapperNode default_node_type; -// template class EpetraMapT; -template const RCP > toXpetra(const Epetra_BlockMap &map); -template const Epetra_Map &toEpetra(const RCP > &map); -template const Epetra_Map &toEpetra(const Map &map); -#endif -#ifdef HAVE_TPETRA_INST_HIP -typedef Tpetra::KokkosCompat::KokkosHIPWrapperNode default_node_type; -// template class EpetraMapT; -template const RCP > toXpetra(const Epetra_BlockMap &map); -template const Epetra_Map &toEpetra(const RCP > &map); -template const Epetra_Map &toEpetra(const Map &map); -#endif -#else -// Tpetra is disabled and Kokkos not available: use dummy node type -typedef Xpetra::EpetraNode default_node_type; -template const RCP > toXpetra(const Epetra_BlockMap &map); -template const Epetra_Map &toEpetra(const RCP > &map); -template const Epetra_Map &toEpetra(const Map &map); -#endif // HAVE_XPETRA_TPETRA - -#endif // XPETRA_EPETRA_NO_32BIT_GLOBAL_INDICES - -#ifndef XPETRA_EPETRA_NO_64BIT_GLOBAL_INDICES - -#ifdef HAVE_XPETRA_TPETRA -#include "TpetraCore_config.h" -#if ((defined(EPETRA_HAVE_OMP) && !defined(HAVE_TPETRA_INST_OPENMP)) || \ - (!defined(EPETRA_HAVE_OMP) && !defined(HAVE_TPETRA_INST_SERIAL))) -template const RCP > toXpetra(const Epetra_BlockMap &map); -template const Epetra_Map &toEpetra(const RCP > &map); -template const Epetra_Map &toEpetra(const Map &map); -#endif - -#ifdef HAVE_TPETRA_INST_SERIAL -// template class EpetraMapT; -template const RCP > toXpetra(const Epetra_BlockMap &map); -template const Epetra_Map &toEpetra(const RCP > &map); -template const Epetra_Map &toEpetra(const Map &map); -#endif - -#ifdef HAVE_TPETRA_INST_PTHREAD -// template class EpetraMapT; -template const RCP > toXpetra(const Epetra_BlockMap &map); -template const Epetra_Map &toEpetra(const RCP > &map); -template const Epetra_Map &toEpetra(const Map &map); -#endif - -#ifdef HAVE_TPETRA_INST_OPENMP -// template class EpetraMapT; -template const RCP > toXpetra(const Epetra_BlockMap &map); -template const Epetra_Map &toEpetra(const RCP > &map); -template const Epetra_Map &toEpetra(const Map &map); -#endif - -#ifdef HAVE_TPETRA_INST_CUDA -typedef Tpetra::KokkosCompat::KokkosCudaWrapperNode default_node_type; -// template class EpetraMapT; -template const RCP > toXpetra(const Epetra_BlockMap &map); -template const Epetra_Map &toEpetra(const RCP > &map); -template const Epetra_Map &toEpetra(const Map &map); -#endif - -#ifdef HAVE_TPETRA_INST_HIP -typedef Tpetra::KokkosCompat::KokkosHIPWrapperNode default_node_type; -// template class EpetraMapT; -template const RCP > toXpetra(const Epetra_BlockMap &map); -template const Epetra_Map &toEpetra(const RCP > &map); -template const Epetra_Map &toEpetra(const Map &map); -#endif - -#else -// Tpetra is disabled and Kokkos not available: use dummy node type -typedef Xpetra::EpetraNode default_node_type; -template const RCP > toXpetra(const Epetra_BlockMap &map); -template const Epetra_Map &toEpetra(const RCP > &map); -template const Epetra_Map &toEpetra(const Map &map); -#endif // HAVE_XPETRA_TPETRA - -#endif // HAVE_XPETRA_EPETRA_NO_64BIT_GLOBAL_INDICES - -} // namespace Xpetra - -#endif // HAVE_XPETRA_EPETRA diff --git a/packages/xpetra/src/Map/Xpetra_EpetraMap.hpp b/packages/xpetra/src/Map/Xpetra_EpetraMap.hpp deleted file mode 100644 index 732b387175e8..000000000000 --- a/packages/xpetra/src/Map/Xpetra_EpetraMap.hpp +++ /dev/null @@ -1,1223 +0,0 @@ -// @HEADER -// ***************************************************************************** -// Xpetra: A linear algebra interface package -// -// Copyright 2012 NTESS and the Xpetra contributors. -// SPDX-License-Identifier: BSD-3-Clause -// ***************************************************************************** -// @HEADER - -#ifndef XPETRA_EPETRAMAP_HPP -#define XPETRA_EPETRAMAP_HPP - -#include "Xpetra_EpetraConfigDefs.hpp" - -#include "Xpetra_Map.hpp" - -#include -#include - -#include "Xpetra_Utils.hpp" -#include "Xpetra_EpetraUtils.hpp" -#include "Xpetra_EpetraExceptions.hpp" - -#include "Xpetra_ConfigDefs.hpp" - -#if defined(XPETRA_ENABLE_DEPRECATED_CODE) -#ifdef __GNUC__ -#if defined(Xpetra_SHOW_DEPRECATED_WARNINGS) -#warning "The header file Trilinos/packages/xpetra/src/Map/Xpetra_EpetraMap.hpp is deprecated." -#endif -#endif -#else -#error "The header file Trilinos/packages/xpetra/src/Map/Xpetra_EpetraMap.hpp is deprecated." -#endif - -namespace Xpetra { - -// TODO: move that elsewhere -template -XPETRA_DEPRECATED const Epetra_Map &toEpetra(const Map &); - -template -XPETRA_DEPRECATED const Epetra_Map &toEpetra(const RCP > &); - -// template -// const RCP< const Map > toXpetra(const RCP< const Epetra_Map > &); - -template -XPETRA_DEPRECATED const RCP > toXpetra(const Epetra_BlockMap &); - -// stub implementation for EpetraMapT -template -class XPETRA_DEPRECATED EpetraMapT - : public virtual Map { - typedef int LocalOrdinal; - - public: - typedef int local_ordinal_type; - typedef GlobalOrdinal global_ordinal_type; - typedef Node node_type; - typedef typename Map::global_indices_array_device_type global_indices_array_device_type; - - //! @name Constructors and destructor - //@{ - - //! Constructor with Tpetra-defined contiguous uniform distribution. - EpetraMapT(global_size_t numGlobalElements, - GlobalOrdinal indexBase, - const Teuchos::RCP > &comm, - LocalGlobal lg = GloballyDistributed) { - TEUCHOS_TEST_FOR_EXCEPTION(true, Xpetra::Exceptions::RuntimeError, - "Xpetra::EpetraMap only available for GO=int or GO=long long with EpetraNode (Serial or OpenMP depending on configuration)"); - } - - //! Constructor with a user-defined contiguous distribution. - EpetraMapT(global_size_t numGlobalElements, size_t numLocalElements, GlobalOrdinal indexBase, const Teuchos::RCP > &comm) { - TEUCHOS_TEST_FOR_EXCEPTION(true, Xpetra::Exceptions::RuntimeError, - "Xpetra::EpetraMap only available for GO=int or GO=long long with EpetraNode (Serial or OpenMP depending on configuration)"); - } - - //! Constructor with user-defined arbitrary (possibly noncontiguous) distribution. - EpetraMapT(global_size_t numGlobalElements, - const Teuchos::ArrayView &elementList, - GlobalOrdinal indexBase, - const Teuchos::RCP > &comm) { - TEUCHOS_TEST_FOR_EXCEPTION(true, Xpetra::Exceptions::RuntimeError, - "Xpetra::EpetraMap only available for GO=int or GO=long long with EpetraNode (Serial or OpenMP depending on configuration)"); - } - - //@} - - //! @name Attributes - //@{ - - //! The number of elements in this Map. - global_size_t getGlobalNumElements() const { return 0; } - - //! The number of elements belonging to the calling process. - size_t getLocalNumElements() const { return 0; } - - //! The index base for this Map. - GlobalOrdinal getIndexBase() const { return 0; } - - //! The minimum local index. - LocalOrdinal getMinLocalIndex() const { return 0; } - - //! The maximum local index on the calling process. - LocalOrdinal getMaxLocalIndex() const { return 0; } - - //! The minimum global index owned by the calling process. - GlobalOrdinal getMinGlobalIndex() const { return 0; } - - //! The maximum global index owned by the calling process. - GlobalOrdinal getMaxGlobalIndex() const { return 0; } - - //! The minimum global index over all processes in the communicator. - GlobalOrdinal getMinAllGlobalIndex() const { return 0; } - - //! The maximum global index over all processes in the communicator. - GlobalOrdinal getMaxAllGlobalIndex() const { return 0; } - - //! The local index corresponding to the given global index. - LocalOrdinal getLocalElement(GlobalOrdinal /* globalIndex */) const { return 0; } - - //! Return the process ranks and corresponding local indices for the given global indices. - LookupStatus getRemoteIndexList(const Teuchos::ArrayView & /* GIDList */, const Teuchos::ArrayView & /* nodeIDList */, const Teuchos::ArrayView & /* LIDList */) const { return Xpetra::IDNotPresent; } - - //! Return the process ranks for the given global indices. - LookupStatus getRemoteIndexList(const Teuchos::ArrayView & /* GIDList */, const Teuchos::ArrayView & /* nodeIDList */) const { return Xpetra::IDNotPresent; } - - //! Return a view of the global indices owned by this process. - Teuchos::ArrayView getLocalElementList() const { return ArrayView(); } - - //! Return a view of the global indices owned by this process. - global_indices_array_device_type getMyGlobalIndicesDevice() const { return global_indices_array_device_type(); } - - //@} - - //! @name Boolean tests - //@{ - - //! Whether the given local index is valid for this Map on this process. - bool isNodeLocalElement(LocalOrdinal /* localIndex */) const { return false; } - - //! Whether the given global index is valid for this Map on this process. - bool isNodeGlobalElement(GlobalOrdinal /* globalIndex */) const { return false; } - - //! True if this Map is distributed contiguously, else false. - bool isContiguous() const { return false; } - - //! Whether this Map is globally distributed or locally replicated. - bool isDistributed() const { return false; } - - //! True if and only if map is compatible with this Map. - bool isCompatible(const Map & /* map */) const { return false; } - - //! True if and only if map is identical to this Map. - bool isSameAs(const Map & /* map */) const { return false; } - - //@} - - //! @name - //@{ - - //! Get this Map's Comm object. - Teuchos::RCP > getComm() const { return Teuchos::null; } - - //@} - - //! @name - //@{ - - //! Return a simple one-line description of this object. - std::string description() const { return std::string(""); } - - //! Print this object with the given verbosity level to the given Teuchos::FancyOStream. - void describe(Teuchos::FancyOStream & /* out */, const Teuchos::EVerbosityLevel /* verbLevel */ = Teuchos::Describable::verbLevel_default) const {} - - //@} - - //! @name - //@{ - - //! Return a new Map with processes with zero elements removed. - RCP > removeEmptyProcesses() const { return Teuchos::null; } - - //! Replace this Map's communicator with a subset communicator. - RCP > replaceCommWithSubset(const Teuchos::RCP > & /* newComm */) const { return Teuchos::null; } - - //@} - - //! Return the global index for a given local index. Note that this returns -1 if not found on this processor. (This is different than Epetra's behavior!) - GlobalOrdinal getGlobalElement(LocalOrdinal /* localIndex */) const { return -1; } - - //! @name Xpetra specific - //@{ - - //! Destructor. - virtual ~EpetraMapT() {} - - //! EpetraMapT constructor to wrap a Epetra_Map object - EpetraMapT(const Teuchos::RCP &map) - : map_(map) { - TEUCHOS_TEST_FOR_EXCEPTION(true, Xpetra::Exceptions::RuntimeError, - "Xpetra::EpetraMap only available for GO=int or GO=long long with EpetraNode (Serial or OpenMP depending on configuration)"); - } - - //! Get the library used by this object (Epetra or Epetra?) - UnderlyingLib lib() const { return Xpetra::UseEpetra; } - - //! Get the underlying Epetra map - const RCP &getEpetra_MapRCP() const { return Teuchos::rcp_static_cast(map_); } - const Epetra_BlockMap &getEpetra_BlockMap() const { return *map_; } - const Epetra_Map &getEpetra_Map() const { return (Epetra_Map &)*map_; } // Ugly, but the same is done in Epetra_CrsMatrix.h to get the map. - -#ifdef HAVE_XPETRA_TPETRA - using local_map_type = typename Map::local_map_type; - /// \brief Get the local Map for Kokkos kernels. - local_map_type getLocalMap() const { - throw std::runtime_error("Xpetra::EpetraMap::getLocalMap is not implemented in " + std::string(__FILE__) + ":" + std::to_string(__LINE__)); - } -#else -#ifdef __GNUC__ -#warning "Xpetra Kokkos interface for CrsMatrix is enabled (HAVE_XPETRA_KOKKOS_REFACTOR) but Tpetra is disabled. The Kokkos interface needs Tpetra to be enabled, too." -#endif -#endif - - //@} - - protected: - RCP map_; -}; // EpetraMapT class - -// specialization on GO=int and EpetraNode -#ifndef XPETRA_EPETRA_NO_32BIT_GLOBAL_INDICES -template <> -class EpetraMapT - : public virtual Map { - typedef int LocalOrdinal; - typedef int GlobalOrdinal; - typedef EpetraNode Node; - - public: - typedef LocalOrdinal local_ordinal_type; - typedef GlobalOrdinal global_ordinal_type; - typedef Node node_type; - typedef typename Map::global_indices_array_device_type global_indices_array_device_type; - - //! @name Constructors and destructor - //@{ - - //! Constructor with Tpetra-defined contiguous uniform distribution. - EpetraMapT(global_size_t numGlobalElements, - GlobalOrdinal indexBase, - const Teuchos::RCP > &comm, - LocalGlobal lg = GloballyDistributed) { - // This test come from Tpetra (Epetra doesn't check if numGlobalElements,indexBase are equivalent across images). - // In addition, for the test TEST_THROW(M map((myImageID == 0 ? GSTI : 0),0,comm), std::invalid_argument), only one node throw an exception and there is a dead lock. - std::string errPrefix; - errPrefix = Teuchos::typeName(*this) + "::constructor(numGlobal,indexBase,comm,lOrG): "; - - if (lg == GloballyDistributed) { - const int myImageID = comm->getRank(); - - // check that numGlobalElements,indexBase is equivalent across images - global_size_t rootNGE = numGlobalElements; - GlobalOrdinal rootIB = indexBase; - Teuchos::broadcast(*comm, 0, &rootNGE); - Teuchos::broadcast(*comm, 0, &rootIB); - int localChecks[2], globalChecks[2]; - localChecks[0] = -1; // fail or pass - localChecks[1] = 0; // fail reason - if (numGlobalElements != rootNGE) { - localChecks[0] = myImageID; - localChecks[1] = 1; - } else if (indexBase != rootIB) { - localChecks[0] = myImageID; - localChecks[1] = 2; - } - // REDUCE_MAX will give us the image ID of the highest rank proc that DID NOT pass, as well as the reason - // these will be -1 and 0 if all procs passed - Teuchos::reduceAll(*comm, Teuchos::REDUCE_MAX, 2, localChecks, globalChecks); - if (globalChecks[0] != -1) { - if (globalChecks[1] == 1) { - TEUCHOS_TEST_FOR_EXCEPTION(true, std::invalid_argument, - errPrefix << "numGlobal must be the same on all nodes (examine node " << globalChecks[0] << ")."); - } else if (globalChecks[1] == 2) { - TEUCHOS_TEST_FOR_EXCEPTION(true, std::invalid_argument, - errPrefix << "indexBase must be the same on all nodes (examine node " << globalChecks[0] << ")."); - } else { - // logic error on our part - TEUCHOS_TEST_FOR_EXCEPTION(true, std::logic_error, - errPrefix << "logic error. Please contact the Tpetra team."); - } - } - } - - // Note: validity of numGlobalElements checked by Epetra. - - IF_EPETRA_EXCEPTION_THEN_THROW_GLOBAL_INVALID_ARG((map_ = (rcp(new Epetra_BlockMap(static_cast(numGlobalElements), 1, indexBase, *toEpetra(comm)))))); - } - - //! Constructor with a user-defined contiguous distribution. - EpetraMapT(global_size_t numGlobalElements, size_t numLocalElements, GlobalOrdinal indexBase, const Teuchos::RCP > &comm) { - // This test come from Tpetra - using Teuchos::outArg; - - const size_t L0 = Teuchos::OrdinalTraits::zero(); - const size_t L1 = Teuchos::OrdinalTraits::one(); - const global_size_t GST0 = Teuchos::OrdinalTraits::zero(); - const global_size_t GST1 = Teuchos::OrdinalTraits::one(); - const global_size_t GSTI = Teuchos::OrdinalTraits::invalid(); - - std::string errPrefix; - errPrefix = Teuchos::typeName(*this) + "::constructor(numGlobal,numLocal,indexBase,platform): "; - - // get a internodal communicator from the Platform - const int myImageID = comm->getRank(); - - global_size_t global_sum; - { // begin scoping block - // for communicating failures - int localChecks[2], globalChecks[2]; - /* compute the global size - we are computing the number of global elements because exactly ONE of the following is true: - - the user didn't specify it, and we need it - - the user did specify it, but we need to - + validate it against the sum of the local sizes, and - + ensure that it is the same on all nodes - */ - Teuchos::reduceAll(*comm, Teuchos::REDUCE_SUM, - Teuchos::as(numLocalElements), outArg(global_sum)); - /* there are three errors we should be detecting: - - numGlobalElements != invalid() and it is incorrect/invalid - - numLocalElements invalid (<0) - */ - localChecks[0] = -1; - localChecks[1] = 0; - if (numLocalElements < L1 && numLocalElements != L0) { - // invalid - localChecks[0] = myImageID; - localChecks[1] = 1; - } else if (numGlobalElements < GST1 && numGlobalElements != GST0 && numGlobalElements != GSTI) { - // invalid - localChecks[0] = myImageID; - localChecks[1] = 2; - } else if (numGlobalElements != GSTI && numGlobalElements != global_sum) { - // incorrect - localChecks[0] = myImageID; - localChecks[1] = 3; - } - // now check that indexBase is equivalent across images - GlobalOrdinal rootIB = indexBase; - Teuchos::broadcast(*comm, 0, &rootIB); // broadcast one ordinal from node 0 - if (indexBase != rootIB) { - localChecks[0] = myImageID; - localChecks[1] = 4; - } - // REDUCE_MAX will give us the image ID of the highest rank proc that DID NOT pass - // this will be -1 if all procs passed - Teuchos::reduceAll(*comm, Teuchos::REDUCE_MAX, 2, localChecks, globalChecks); - if (globalChecks[0] != -1) { - if (globalChecks[1] == 1) { - TEUCHOS_TEST_FOR_EXCEPTION(true, std::invalid_argument, - errPrefix << "numLocal is not valid on at least one node (possibly node " - << globalChecks[0] << ")."); - } else if (globalChecks[1] == 2) { - TEUCHOS_TEST_FOR_EXCEPTION(true, std::invalid_argument, - errPrefix << "numGlobal is not valid on at least one node (possibly node " - << globalChecks[0] << ")."); - } else if (globalChecks[1] == 3) { - TEUCHOS_TEST_FOR_EXCEPTION(true, std::invalid_argument, - errPrefix << "numGlobal doesn't match sum of numLocal (== " - << global_sum << ") on at least one node (possibly node " - << globalChecks[0] << ")."); - } else if (globalChecks[1] == 4) { - TEUCHOS_TEST_FOR_EXCEPTION(true, std::invalid_argument, - errPrefix << "indexBase is not the same on all nodes (examine node " - << globalChecks[0] << ")."); - } else { - // logic error on my part - TEUCHOS_TEST_FOR_EXCEPTION(true, std::logic_error, - errPrefix << "logic error. Please contact the Tpetra team."); - } - } - } - - // set numGlobalElements - if (numGlobalElements == GSTI) { - numGlobalElements = global_sum; - } - - IF_EPETRA_EXCEPTION_THEN_THROW_GLOBAL_INVALID_ARG((map_ = (rcp(new Epetra_BlockMap(static_cast(numGlobalElements), static_cast(numLocalElements), 1, indexBase, *toEpetra(comm)))))); - } - - //! Constructor with user-defined arbitrary (possibly noncontiguous) distribution. - EpetraMapT(global_size_t numGlobalElements, - const Teuchos::ArrayView &elementList, - GlobalOrdinal indexBase, - const Teuchos::RCP > &comm) { - if (numGlobalElements == Teuchos::OrdinalTraits::invalid()) { - IF_EPETRA_EXCEPTION_THEN_THROW_GLOBAL_INVALID_ARG((map_ = (rcp(new Epetra_BlockMap(-1, static_cast(elementList.size()), elementList.getRawPtr(), 1, indexBase, *toEpetra(comm)))))); - } else { - IF_EPETRA_EXCEPTION_THEN_THROW_GLOBAL_INVALID_ARG((map_ = (rcp(new Epetra_BlockMap(static_cast(numGlobalElements), static_cast(elementList.size()), elementList.getRawPtr(), 1, indexBase, *toEpetra(comm)))))); - } - } - - //@} - - //! @name Attributes - //@{ - - //! The number of elements in this Map. - global_size_t getGlobalNumElements() const { - XPETRA_MONITOR("EpetraMapT::getGlobalNumElements"); - return map_->NumGlobalElements64(); - } - - //! The number of elements belonging to the calling process. - size_t getLocalNumElements() const { - XPETRA_MONITOR("EpetraMapT::getLocalNumElements"); - return map_->NumMyElements(); - } - - //! The index base for this Map. - GlobalOrdinal getIndexBase() const { - XPETRA_MONITOR("EpetraMapT::getIndexBase"); - return (GlobalOrdinal)map_->IndexBase64(); - } - - //! The minimum local index. - LocalOrdinal getMinLocalIndex() const { - XPETRA_MONITOR("EpetraMapT::getMinLocalIndex"); - return map_->MinLID(); - } - - //! The maximum local index on the calling process. - LocalOrdinal getMaxLocalIndex() const { - XPETRA_MONITOR("EpetraMapT::getMaxLocalIndex"); - return map_->MaxLID(); - } - - //! The minimum global index owned by the calling process. - GlobalOrdinal getMinGlobalIndex() const { - XPETRA_MONITOR("EpetraMapT::getMinGlobalIndex"); - return (GlobalOrdinal)map_->MinMyGID64(); - } - - //! The maximum global index owned by the calling process. - GlobalOrdinal getMaxGlobalIndex() const { - XPETRA_MONITOR("EpetraMapT::getMaxGlobalIndex"); - return (GlobalOrdinal)map_->MaxMyGID64(); - } - - //! The minimum global index over all processes in the communicator. - GlobalOrdinal getMinAllGlobalIndex() const { - XPETRA_MONITOR("EpetraMapT::getMinAllGlobalIndex"); - return (GlobalOrdinal)map_->MinAllGID64(); - } - - //! The maximum global index over all processes in the communicator. - GlobalOrdinal getMaxAllGlobalIndex() const { - XPETRA_MONITOR("EpetraMapT::getMaxAllGlobalIndex"); - return (GlobalOrdinal)map_->MaxAllGID64(); - } - - //! The local index corresponding to the given global index. - LocalOrdinal getLocalElement(GlobalOrdinal globalIndex) const { - XPETRA_MONITOR("EpetraMapT::getLocalElement"); - return map_->LID(globalIndex); - } - - //! Return the process ranks and corresponding local indices for the given global indices. - LookupStatus getRemoteIndexList(const Teuchos::ArrayView &GIDList, - const Teuchos::ArrayView &nodeIDList, - const Teuchos::ArrayView &LIDList) const { - XPETRA_MONITOR("EpetraMapT::getRemoteIndexList"); - return toXpetra(map_->RemoteIDList(static_cast(GIDList.size()), GIDList.getRawPtr(), nodeIDList.getRawPtr(), LIDList.getRawPtr())); - } - - //! Return the process ranks for the given global indices. - LookupStatus getRemoteIndexList(const Teuchos::ArrayView &GIDList, - const Teuchos::ArrayView &nodeIDList) const { - XPETRA_MONITOR("EpetraMapT::getRemoteIndexList"); - return toXpetra(map_->RemoteIDList(static_cast(GIDList.size()), GIDList.getRawPtr(), nodeIDList.getRawPtr(), 0)); - } - - //! Return a view of the global indices owned by this process. - Teuchos::ArrayView getLocalElementList() const { - XPETRA_MONITOR("EpetraMapT::getLocalElementList"); - return ArrayView(map_->MyGlobalElements(), map_->NumMyElements()); - } - - //! Return a view of the global indices owned by this process. - global_indices_array_device_type getMyGlobalIndicesDevice() const { - XPETRA_MONITOR("EpetraMapT::getMyGlobalIndicesDevice"); - Teuchos::ArrayView view = getLocalElementList(); - if (view.size() == 0) - return global_indices_array_device_type(); - else - return Kokkos::View(view.data(), view.size()); - } - - //@} - - //! @name Boolean tests - //@{ - - //! Whether the given local index is valid for this Map on this process. - bool isNodeLocalElement(LocalOrdinal localIndex) const { - XPETRA_MONITOR("EpetraMapT::isNodeLocalElement"); - return map_->MyLID(localIndex); - } - - //! Whether the given global index is valid for this Map on this process. - bool isNodeGlobalElement(GlobalOrdinal globalIndex) const { - XPETRA_MONITOR("EpetraMapT::isNodeGlobalElement"); - return map_->MyGID(globalIndex); - } - - //! True if this Map is distributed contiguously, else false. - bool isContiguous() const { - XPETRA_MONITOR("EpetraMapT::isContiguous"); - return map_->LinearMap(); - } - - //! Whether this Map is globally distributed or locally replicated. - bool isDistributed() const { - XPETRA_MONITOR("EpetraMapT::isDistributed"); - return map_->DistributedGlobal(); - } - - //! True if and only if map is compatible with this Map. - bool isCompatible(const Map &map) const { - XPETRA_MONITOR("EpetraMapT::isCompatible"); - return map_->PointSameAs(toEpetra(map)); - } - - //! True if and only if map is identical to this Map. - bool isSameAs(const Map &map) const { - XPETRA_MONITOR("EpetraMapT::isSameAs"); - return map_->SameAs(toEpetra(map)); - } - - //@} - - //! @name - //@{ - - //! Get this Map's Comm object. - Teuchos::RCP > getComm() const { - XPETRA_MONITOR("EpetraMapT::getComm"); - return toXpetra(map_->Comm()); - } - - //@} - - //! @name - //@{ - - //! Return a simple one-line description of this object. - std::string description() const { - XPETRA_MONITOR("EpetraMapT::description"); - - // This implementation come from Tpetra_Map_def.hpp (without modification) - std::ostringstream oss; - oss << Teuchos::Describable::description(); - oss << "{getGlobalNumElements() = " << getGlobalNumElements() - << ", getLocalNumElements() = " << getLocalNumElements() - << ", isContiguous() = " << isContiguous() - << ", isDistributed() = " << isDistributed() - << "}"; - return oss.str(); - } - - //! Print this object with the given verbosity level to the given Teuchos::FancyOStream. - void describe(Teuchos::FancyOStream &out, const Teuchos::EVerbosityLevel verbLevel = Teuchos::Describable::verbLevel_default) const { - XPETRA_MONITOR("EpetraMapT::describe"); - - const Teuchos::RCP > comm_ = getComm(); - - // This implementation come from Tpetra_Map_def.hpp (without modification) - using std::endl; - using std::setw; - using Teuchos::VERB_DEFAULT; - using Teuchos::VERB_EXTREME; - using Teuchos::VERB_HIGH; - using Teuchos::VERB_LOW; - using Teuchos::VERB_MEDIUM; - using Teuchos::VERB_NONE; - - const size_t nME = getLocalNumElements(); - Teuchos::ArrayView myEntries = getLocalElementList(); - int myImageID = comm_->getRank(); - int numImages = comm_->getSize(); - - Teuchos::EVerbosityLevel vl = verbLevel; - if (vl == VERB_DEFAULT) vl = VERB_LOW; - - size_t width = 1; - for (size_t dec = 10; dec < getGlobalNumElements(); dec *= 10) { - ++width; - } - width = ::std::max(width, (size_t)12) + 2; // casting to size_t to avoid ambiguity error when compiling Sacado. - - Teuchos::OSTab tab(out); - - if (vl == VERB_NONE) { - // do nothing - } else if (vl == VERB_LOW) { - out << this->description() << endl; - } else { // MEDIUM, HIGH or EXTREME - for (int imageCtr = 0; imageCtr < numImages; ++imageCtr) { - if (myImageID == imageCtr) { - if (myImageID == 0) { // this is the root node (only output this info once) - out << endl - << "Number of Global Entries = " << getGlobalNumElements() << endl - << "Maximum of all GIDs = " << getMaxAllGlobalIndex() << endl - << "Minimum of all GIDs = " << getMinAllGlobalIndex() << endl - << "Index Base = " << getIndexBase() << endl; - } - out << endl; - if (vl == VERB_HIGH || vl == VERB_EXTREME) { - out << "Number of Local Elements = " << nME << endl - << "Maximum of my GIDs = " << getMaxGlobalIndex() << endl - << "Minimum of my GIDs = " << getMinGlobalIndex() << endl; - out << endl; - } - if (vl == VERB_EXTREME) { - out << std::setw(width) << "Node ID" - << std::setw(width) << "Local Index" - << std::setw(width) << "Global Index" - << endl; - for (size_t i = 0; i < nME; i++) { - out << std::setw(width) << myImageID - << std::setw(width) << i - << std::setw(width) << myEntries[i] - << endl; - } - out << std::flush; - } - } - // Do a few global ops to give I/O a chance to complete - comm_->barrier(); - comm_->barrier(); - comm_->barrier(); - } - } - } - - //@} - - //! @name - //@{ - - //! Return a new Map with processes with zero elements removed. - RCP > removeEmptyProcesses() const { - const Epetra_BlockMap *NewMap = map_->RemoveEmptyProcesses(); - if (!NewMap) { - return Teuchos::null; - } else { - const RCP > NewMapX = toXpetra(*NewMap); - delete NewMap; // NOTE: toXpetra *copys* the epetra map rather than wrapping it, so we have to delete NewMap to avoid a memory leak. - return NewMapX; - } - } - - //! Replace this Map's communicator with a subset communicator. - RCP > replaceCommWithSubset(const Teuchos::RCP > & /* newComm */) const { - throw std::runtime_error("Xpetra::EpetraMapT::replaceCommWithSubset has not yet been implemented in " + std::string(__FILE__) + ":" + std::to_string(__LINE__)); - TEUCHOS_UNREACHABLE_RETURN(Teuchos::null); - } - - //@} - - //! Return the global index for a given local index. Note that this returns -1 if not found on this processor. (This is different than Epetra's behavior!) - GlobalOrdinal getGlobalElement(LocalOrdinal localIndex) const { - XPETRA_MONITOR("EpetraMapT::getGlobalElement"); - - GlobalOrdinal gid = (GlobalOrdinal)map_->GID64(localIndex); - if (gid == map_->IndexBase64() - 1) - return (-1); - else - return (gid); - } - - //! @name Xpetra specific - //@{ - - //! Destructor. - virtual ~EpetraMapT() {} - - //! EpetraMapT constructor to wrap a Epetra_Map object - EpetraMapT(const Teuchos::RCP &map) - : map_(map) { - TEUCHOS_TEST_FOR_EXCEPTION(!map->GlobalIndicesIsType(), std::runtime_error, "Xpetra::EpetraMapT: GlobalOrdinal mismatch."); - } - - //! Get the library used by this object (Epetra or Epetra?) - UnderlyingLib lib() const { return Xpetra::UseEpetra; } - - //! Get the underlying Epetra map - const RCP getEpetra_MapRCP() const { return Teuchos::rcp_static_cast(map_); } - const Epetra_BlockMap &getEpetra_BlockMap() const { return *map_; } - const Epetra_Map &getEpetra_Map() const { return (Epetra_Map &)*map_; } // Ugly, but the same is done in Epetra_CrsMatrix.h to get the map. - - //@} - -#ifdef HAVE_XPETRA_TPETRA - using local_map_type = typename Map::local_map_type; - /// \brief Get the local Map for Kokkos kernels. - local_map_type getLocalMap() const { - throw std::runtime_error("Xpetra::EpetraMap::getLocalMap is not implemented in " + std::string(__FILE__) + ":" + std::to_string(__LINE__)); - } - - private: - mutable local_map_type localMap_; -#else -#ifdef __GNUC__ -#warning "Xpetra Kokkos interface for CrsMatrix is enabled (HAVE_XPETRA_KOKKOS_REFACTOR) but Tpetra is disabled. The Kokkos interface needs Tpetra to be enabled, too." -#endif -#endif - - protected: - RCP map_; -}; // EpetraMapT class -#endif // #ifndef XPETRA_EPETRA_NO_32BIT_GLOBAL_INDICES - -// specialization on GO=long long and EpetraNode -#ifndef XPETRA_EPETRA_NO_64BIT_GLOBAL_INDICES -template <> -class EpetraMapT - : public virtual Map { - typedef int LocalOrdinal; - typedef long long GlobalOrdinal; - typedef EpetraNode Node; - - public: - typedef LocalOrdinal local_ordinal_type; - typedef GlobalOrdinal global_ordinal_type; - typedef Node node_type; - typedef typename Map::global_indices_array_type global_indices_array_type; - - //! @name Constructors and destructor - //@{ - - //! Constructor with Tpetra-defined contiguous uniform distribution. - EpetraMapT(global_size_t numGlobalElements, - GlobalOrdinal indexBase, - const Teuchos::RCP > &comm, - LocalGlobal lg = GloballyDistributed) { - // This test come from Tpetra (Epetra doesn't check if numGlobalElements,indexBase are equivalent across images). - // In addition, for the test TEST_THROW(M map((myImageID == 0 ? GSTI : 0),0,comm), std::invalid_argument), only one node throw an exception and there is a dead lock. - std::string errPrefix; - errPrefix = Teuchos::typeName(*this) + "::constructor(numGlobal,indexBase,comm,lOrG): "; - - if (lg == GloballyDistributed) { - const int myImageID = comm->getRank(); - - // check that numGlobalElements,indexBase is equivalent across images - global_size_t rootNGE = numGlobalElements; - GlobalOrdinal rootIB = indexBase; - Teuchos::broadcast(*comm, 0, &rootNGE); - Teuchos::broadcast(*comm, 0, &rootIB); - int localChecks[2], globalChecks[2]; - localChecks[0] = -1; // fail or pass - localChecks[1] = 0; // fail reason - if (numGlobalElements != rootNGE) { - localChecks[0] = myImageID; - localChecks[1] = 1; - } else if (indexBase != rootIB) { - localChecks[0] = myImageID; - localChecks[1] = 2; - } - // REDUCE_MAX will give us the image ID of the highest rank proc that DID NOT pass, as well as the reason - // these will be -1 and 0 if all procs passed - Teuchos::reduceAll(*comm, Teuchos::REDUCE_MAX, 2, localChecks, globalChecks); - if (globalChecks[0] != -1) { - if (globalChecks[1] == 1) { - TEUCHOS_TEST_FOR_EXCEPTION(true, std::invalid_argument, - errPrefix << "numGlobal must be the same on all nodes (examine node " << globalChecks[0] << ")."); - } else if (globalChecks[1] == 2) { - TEUCHOS_TEST_FOR_EXCEPTION(true, std::invalid_argument, - errPrefix << "indexBase must be the same on all nodes (examine node " << globalChecks[0] << ")."); - } else { - // logic error on our part - TEUCHOS_TEST_FOR_EXCEPTION(true, std::logic_error, - errPrefix << "logic error. Please contact the Tpetra team."); - } - } - } - - // Note: validity of numGlobalElements checked by Epetra. - - IF_EPETRA_EXCEPTION_THEN_THROW_GLOBAL_INVALID_ARG((map_ = (rcp(new Epetra_BlockMap(static_cast(numGlobalElements), 1, indexBase, *toEpetra(comm)))))); - } - - //! Constructor with a user-defined contiguous distribution. - EpetraMapT(global_size_t numGlobalElements, size_t numLocalElements, GlobalOrdinal indexBase, const Teuchos::RCP > &comm) { - // This test come from Tpetra - using Teuchos::outArg; - - const size_t L0 = Teuchos::OrdinalTraits::zero(); - const size_t L1 = Teuchos::OrdinalTraits::one(); - const global_size_t GST0 = Teuchos::OrdinalTraits::zero(); - const global_size_t GST1 = Teuchos::OrdinalTraits::one(); - const global_size_t GSTI = Teuchos::OrdinalTraits::invalid(); - - std::string errPrefix; - errPrefix = Teuchos::typeName(*this) + "::constructor(numGlobal,numLocal,indexBase,platform): "; - - // get a internodal communicator from the Platform - const int myImageID = comm->getRank(); - - global_size_t global_sum; - { // begin scoping block - // for communicating failures - int localChecks[2], globalChecks[2]; - /* compute the global size - we are computing the number of global elements because exactly ONE of the following is true: - - the user didn't specify it, and we need it - - the user did specify it, but we need to - + validate it against the sum of the local sizes, and - + ensure that it is the same on all nodes - */ - Teuchos::reduceAll(*comm, Teuchos::REDUCE_SUM, - Teuchos::as(numLocalElements), outArg(global_sum)); - /* there are three errors we should be detecting: - - numGlobalElements != invalid() and it is incorrect/invalid - - numLocalElements invalid (<0) - */ - localChecks[0] = -1; - localChecks[1] = 0; - if (numLocalElements < L1 && numLocalElements != L0) { - // invalid - localChecks[0] = myImageID; - localChecks[1] = 1; - } else if (numGlobalElements < GST1 && numGlobalElements != GST0 && numGlobalElements != GSTI) { - // invalid - localChecks[0] = myImageID; - localChecks[1] = 2; - } else if (numGlobalElements != GSTI && numGlobalElements != global_sum) { - // incorrect - localChecks[0] = myImageID; - localChecks[1] = 3; - } - // now check that indexBase is equivalent across images - GlobalOrdinal rootIB = indexBase; - Teuchos::broadcast(*comm, 0, &rootIB); // broadcast one ordinal from node 0 - if (indexBase != rootIB) { - localChecks[0] = myImageID; - localChecks[1] = 4; - } - // REDUCE_MAX will give us the image ID of the highest rank proc that DID NOT pass - // this will be -1 if all procs passed - Teuchos::reduceAll(*comm, Teuchos::REDUCE_MAX, 2, localChecks, globalChecks); - if (globalChecks[0] != -1) { - if (globalChecks[1] == 1) { - TEUCHOS_TEST_FOR_EXCEPTION(true, std::invalid_argument, - errPrefix << "numLocal is not valid on at least one node (possibly node " - << globalChecks[0] << ")."); - } else if (globalChecks[1] == 2) { - TEUCHOS_TEST_FOR_EXCEPTION(true, std::invalid_argument, - errPrefix << "numGlobal is not valid on at least one node (possibly node " - << globalChecks[0] << ")."); - } else if (globalChecks[1] == 3) { - TEUCHOS_TEST_FOR_EXCEPTION(true, std::invalid_argument, - errPrefix << "numGlobal doesn't match sum of numLocal (== " - << global_sum << ") on at least one node (possibly node " - << globalChecks[0] << ")."); - } else if (globalChecks[1] == 4) { - TEUCHOS_TEST_FOR_EXCEPTION(true, std::invalid_argument, - errPrefix << "indexBase is not the same on all nodes (examine node " - << globalChecks[0] << ")."); - } else { - // logic error on my part - TEUCHOS_TEST_FOR_EXCEPTION(true, std::logic_error, - errPrefix << "logic error. Please contact the Tpetra team."); - } - } - } - - // set numGlobalElements - if (numGlobalElements == GSTI) { - numGlobalElements = global_sum; - } - - IF_EPETRA_EXCEPTION_THEN_THROW_GLOBAL_INVALID_ARG((map_ = (rcp(new Epetra_BlockMap(static_cast(numGlobalElements), numLocalElements, 1, indexBase, *toEpetra(comm)))))); - } - - //! Constructor with user-defined arbitrary (possibly noncontiguous) distribution. - EpetraMapT(global_size_t numGlobalElements, - const Teuchos::ArrayView &elementList, - GlobalOrdinal indexBase, - const Teuchos::RCP > &comm) { - if (numGlobalElements == Teuchos::OrdinalTraits::invalid()) { - IF_EPETRA_EXCEPTION_THEN_THROW_GLOBAL_INVALID_ARG((map_ = (rcp(new Epetra_BlockMap(-1, elementList.size(), elementList.getRawPtr(), 1, indexBase, *toEpetra(comm)))))); - } else { - IF_EPETRA_EXCEPTION_THEN_THROW_GLOBAL_INVALID_ARG((map_ = (rcp(new Epetra_BlockMap(numGlobalElements, elementList.size(), elementList.getRawPtr(), 1, indexBase, *toEpetra(comm)))))); - } - } - - //@} - - //! @name Attributes - //@{ - - //! The number of elements in this Map. - global_size_t getGlobalNumElements() const { - XPETRA_MONITOR("EpetraMapT::getGlobalNumElements"); - return map_->NumGlobalElements64(); - } - - //! The number of elements belonging to the calling process. - size_t getLocalNumElements() const { - XPETRA_MONITOR("EpetraMapT::getLocalNumElements"); - return map_->NumMyElements(); - } - - //! The index base for this Map. - GlobalOrdinal getIndexBase() const { - XPETRA_MONITOR("EpetraMapT::getIndexBase"); - return (GlobalOrdinal)map_->IndexBase64(); - } - - //! The minimum local index. - LocalOrdinal getMinLocalIndex() const { - XPETRA_MONITOR("EpetraMapT::getMinLocalIndex"); - return map_->MinLID(); - } - - //! The maximum local index on the calling process. - LocalOrdinal getMaxLocalIndex() const { - XPETRA_MONITOR("EpetraMapT::getMaxLocalIndex"); - return map_->MaxLID(); - } - - //! The minimum global index owned by the calling process. - GlobalOrdinal getMinGlobalIndex() const { - XPETRA_MONITOR("EpetraMapT::getMinGlobalIndex"); - return (GlobalOrdinal)map_->MinMyGID64(); - } - - //! The maximum global index owned by the calling process. - GlobalOrdinal getMaxGlobalIndex() const { - XPETRA_MONITOR("EpetraMapT::getMaxGlobalIndex"); - return (GlobalOrdinal)map_->MaxMyGID64(); - } - - //! The minimum global index over all processes in the communicator. - GlobalOrdinal getMinAllGlobalIndex() const { - XPETRA_MONITOR("EpetraMapT::getMinAllGlobalIndex"); - return (GlobalOrdinal)map_->MinAllGID64(); - } - - //! The maximum global index over all processes in the communicator. - GlobalOrdinal getMaxAllGlobalIndex() const { - XPETRA_MONITOR("EpetraMapT::getMaxAllGlobalIndex"); - return (GlobalOrdinal)map_->MaxAllGID64(); - } - - //! The local index corresponding to the given global index. - LocalOrdinal getLocalElement(GlobalOrdinal globalIndex) const { - XPETRA_MONITOR("EpetraMapT::getLocalElement"); - return map_->LID(globalIndex); - } - - //! Return the process ranks and corresponding local indices for the given global indices. - LookupStatus getRemoteIndexList(const Teuchos::ArrayView &GIDList, const Teuchos::ArrayView &nodeIDList, const Teuchos::ArrayView &LIDList) const { - XPETRA_MONITOR("EpetraMapT::getRemoteIndexList"); - return toXpetra(map_->RemoteIDList(GIDList.size(), GIDList.getRawPtr(), nodeIDList.getRawPtr(), LIDList.getRawPtr())); - } - - //! Return the process ranks for the given global indices. - LookupStatus getRemoteIndexList(const Teuchos::ArrayView &GIDList, const Teuchos::ArrayView &nodeIDList) const { - XPETRA_MONITOR("EpetraMapT::getRemoteIndexList"); - return toXpetra(map_->RemoteIDList(GIDList.size(), GIDList.getRawPtr(), nodeIDList.getRawPtr(), 0)); - } - - //! Return a view of the global indices owned by this process. - Teuchos::ArrayView getLocalElementList() const { - XPETRA_MONITOR("EpetraMapT::getLocalElementList"); - return ArrayView(map_->MyGlobalElements64(), map_->NumMyElements()); - } - - //! Return a view of the global indices owned by this process. - global_indices_array_device_type getMyGlobalIndicesDevice() const { - XPETRA_MONITOR("EpetraMapT::getMyGlobalIndicesDevice"); - Teuchos::ArrayView view = getLocalElementList(); - if (view.size() == 0) - return global_indices_array_device_type(); - else - return Kokkos::View(view.data(), view.size()); - } - - //@} - - //! @name Boolean tests - //@{ - - //! Whether the given local index is valid for this Map on this process. - bool isNodeLocalElement(LocalOrdinal localIndex) const { - XPETRA_MONITOR("EpetraMapT::isNodeLocalElement"); - return map_->MyLID(localIndex); - } - - //! Whether the given global index is valid for this Map on this process. - bool isNodeGlobalElement(GlobalOrdinal globalIndex) const { - XPETRA_MONITOR("EpetraMapT::isNodeGlobalElement"); - return map_->MyGID(globalIndex); - } - - //! True if this Map is distributed contiguously, else false. - bool isContiguous() const { - XPETRA_MONITOR("EpetraMapT::isContiguous"); - return map_->LinearMap(); - } - - //! Whether this Map is globally distributed or locally replicated. - bool isDistributed() const { - XPETRA_MONITOR("EpetraMapT::isDistributed"); - return map_->DistributedGlobal(); - } - - //! True if and only if map is compatible with this Map. - bool isCompatible(const Map &map) const { - XPETRA_MONITOR("EpetraMapT::isCompatible"); - return map_->PointSameAs(toEpetra(map)); - } - - //! True if and only if map is identical to this Map. - bool isSameAs(const Map &map) const { - XPETRA_MONITOR("EpetraMapT::isSameAs"); - return map_->SameAs(toEpetra(map)); - } - - //@} - - //! @name - //@{ - - //! Get this Map's Comm object. - Teuchos::RCP > getComm() const { - XPETRA_MONITOR("EpetraMapT::getComm"); - return toXpetra(map_->Comm()); - } - - //@} - - //! @name - //@{ - - //! Return a simple one-line description of this object. - std::string description() const { - XPETRA_MONITOR("EpetraMapT::description"); - - // This implementation come from Tpetra_Map_def.hpp (without modification) - std::ostringstream oss; - oss << Teuchos::Describable::description(); - oss << "{getGlobalNumElements() = " << getGlobalNumElements() - << ", getLocalNumElements() = " << getLocalNumElements() - << ", isContiguous() = " << isContiguous() - << ", isDistributed() = " << isDistributed() - << "}"; - return oss.str(); - } - - //! Print this object with the given verbosity level to the given Teuchos::FancyOStream. - void describe(Teuchos::FancyOStream &out, const Teuchos::EVerbosityLevel verbLevel = Teuchos::Describable::verbLevel_default) const { - XPETRA_MONITOR("EpetraMapT::describe"); - - const Teuchos::RCP > comm_ = getComm(); - - // This implementation come from Tpetra_Map_def.hpp (without modification) - using std::endl; - using std::setw; - using Teuchos::VERB_DEFAULT; - using Teuchos::VERB_EXTREME; - using Teuchos::VERB_HIGH; - using Teuchos::VERB_LOW; - using Teuchos::VERB_MEDIUM; - using Teuchos::VERB_NONE; - - const size_t nME = getLocalNumElements(); - Teuchos::ArrayView myEntries = getLocalElementList(); - int myImageID = comm_->getRank(); - int numImages = comm_->getSize(); - - Teuchos::EVerbosityLevel vl = verbLevel; - if (vl == VERB_DEFAULT) vl = VERB_LOW; - - size_t width = 1; - for (size_t dec = 10; dec < getGlobalNumElements(); dec *= 10) { - ++width; - } - width = ::std::max(width, (size_t)12) + 2; // casting to size_t to avoid ambiguity error when compiling Sacado. - - Teuchos::OSTab tab(out); - - if (vl == VERB_NONE) { - // do nothing - } else if (vl == VERB_LOW) { - out << this->description() << endl; - } else { // MEDIUM, HIGH or EXTREME - for (int imageCtr = 0; imageCtr < numImages; ++imageCtr) { - if (myImageID == imageCtr) { - if (myImageID == 0) { // this is the root node (only output this info once) - out << endl - << "Number of Global Entries = " << getGlobalNumElements() << endl - << "Maximum of all GIDs = " << getMaxAllGlobalIndex() << endl - << "Minimum of all GIDs = " << getMinAllGlobalIndex() << endl - << "Index Base = " << getIndexBase() << endl; - } - out << endl; - if (vl == VERB_HIGH || vl == VERB_EXTREME) { - out << "Number of Local Elements = " << nME << endl - << "Maximum of my GIDs = " << getMaxGlobalIndex() << endl - << "Minimum of my GIDs = " << getMinGlobalIndex() << endl; - out << endl; - } - if (vl == VERB_EXTREME) { - out << std::setw(width) << "Node ID" - << std::setw(width) << "Local Index" - << std::setw(width) << "Global Index" - << endl; - for (size_t i = 0; i < nME; i++) { - out << std::setw(width) << myImageID - << std::setw(width) << i - << std::setw(width) << myEntries[i] - << endl; - } - out << std::flush; - } - } - // Do a few global ops to give I/O a chance to complete - comm_->barrier(); - comm_->barrier(); - comm_->barrier(); - } - } - } - - //@} - - //! @name - //@{ - - //! Return a new Map with processes with zero elements removed. - RCP > removeEmptyProcesses() const { - const Epetra_BlockMap *NewMap = map_->RemoveEmptyProcesses(); - if (!NewMap) { - return Teuchos::null; - } else { - const RCP > NewMapX = toXpetra(*NewMap); - delete NewMap; // NOTE: toXpetra *copys* the epetra map rather than wrapping it, so we have to delete NewMap to avoid a memory leak. - return NewMapX; - } - } - - //! Replace this Map's communicator with a subset communicator. - RCP > replaceCommWithSubset(const Teuchos::RCP > & /* newComm */) const { - throw std::runtime_error("Xpetra::EpetraMapT::replaceCommWithSubset has not yet been implemented in " + std::string(__FILE__) + ":" + std::to_string(__LINE__)); - // return Teuchos::null; // unreachable - } - - //@} - - //! Return the global index for a given local index. Note that this returns -1 if not found on this processor. (This is different than Epetra's behavior!) - GlobalOrdinal getGlobalElement(LocalOrdinal localIndex) const { - XPETRA_MONITOR("EpetraMapT::getGlobalElement"); - - GlobalOrdinal gid = (GlobalOrdinal)map_->GID64(localIndex); - if (gid == map_->IndexBase64() - 1) - return (-1); - else - return (gid); - } - - //! @name Xpetra specific - //@{ - - //! Destructor. - virtual ~EpetraMapT() {} - - //! EpetraMapT constructor to wrap a Epetra_Map object - EpetraMapT(const Teuchos::RCP &map) - : map_(map) { - TEUCHOS_TEST_FOR_EXCEPTION(!map->GlobalIndicesIsType(), std::runtime_error, "Xpetra::EpetraMapT: GlobalOrdinal mismatch."); - } - - //! Get the library used by this object (Epetra or Epetra?) - UnderlyingLib lib() const { return Xpetra::UseEpetra; } - - //! Get the underlying Epetra map - const RCP &getEpetra_MapRCP() const { return Teuchos::rcp_static_cast(map_); } - const Epetra_BlockMap &getEpetra_BlockMap() const { return *map_; } - const Epetra_Map &getEpetra_Map() const { return (Epetra_Map &)*map_; } // Ugly, but the same is done in Epetra_CrsMatrix.h to get the map. - -#ifdef HAVE_XPETRA_TPETRA - using local_map_type = typename Map::local_map_type; - /// \brief Get the local Map for Kokkos kernels. - local_map_type getLocalMap() const { - throw std::runtime_error("Xpetra::EpetraMap::getLocalMap is not implemented in " + std::string(__FILE__) + ":" + std::to_string(__LINE__)); - } - - private: - mutable local_map_type localMap_; -#else -#ifdef __GNUC__ -#warning "Xpetra Kokkos interface for CrsMatrix is enabled (HAVE_XPETRA_KOKKOS_REFACTOR) but Tpetra is disabled. The Kokkos interface needs Tpetra to be enabled, too." -#endif -#endif - - //@} - - protected: - RCP map_; -}; // EpetraMapT class -#endif // #ifndef XPETRA_EPETRA_NO_64BIT_GLOBAL_INDICES - -} // namespace Xpetra - -#endif // XPETRA_EPETRAMAP_HPP diff --git a/packages/xpetra/src/Map/Xpetra_EpetraMapFactory.cpp b/packages/xpetra/src/Map/Xpetra_EpetraMapFactory.cpp deleted file mode 100644 index 99c2259e7661..000000000000 --- a/packages/xpetra/src/Map/Xpetra_EpetraMapFactory.cpp +++ /dev/null @@ -1,665 +0,0 @@ -// @HEADER -// ***************************************************************************** -// Xpetra: A linear algebra interface package -// -// Copyright 2012 NTESS and the Xpetra contributors. -// SPDX-License-Identifier: BSD-3-Clause -// ***************************************************************************** -// @HEADER - -#include "Xpetra_MapFactory.hpp" - -#include "Xpetra_BlockedMap.hpp" -#include "Xpetra_EpetraMap.hpp" -#ifdef HAVE_XPETRA_TPETRA -#include "Xpetra_TpetraMap.hpp" -#endif - -namespace Xpetra { - -#if defined(HAVE_XPETRA_EPETRA) - -#if !defined(XPETRA_EPETRA_NO_32BIT_GLOBAL_INDICES) - -MapFactory:: - MapFactory() { -} - -RCP> -MapFactory:: - Build(UnderlyingLib lib, - global_size_t numGlobalElements, - int indexBase, - const Teuchos::RCP> &comm, - LocalGlobal lg) { - XPETRA_MONITOR("MapFactory::Build"); - -#ifdef HAVE_XPETRA_TPETRA - if (lib == UseTpetra) - return rcp(new Xpetra::TpetraMap(numGlobalElements, indexBase, comm, lg)); -#endif - - if (lib == UseEpetra) - return rcp(new EpetraMapT(numGlobalElements, indexBase, comm, lg)); - - XPETRA_FACTORY_END; -} - -RCP> -MapFactory:: - Build(UnderlyingLib lib, - global_size_t numGlobalElements, - size_t numLocalElements, - int indexBase, - const Teuchos::RCP> &comm) { - XPETRA_MONITOR("MapFactory::Build"); - -#ifdef HAVE_XPETRA_TPETRA - if (lib == UseTpetra) - return rcp(new TpetraMap(numGlobalElements, numLocalElements, indexBase, comm)); -#endif - - if (lib == UseEpetra) - return rcp(new EpetraMapT(numGlobalElements, numLocalElements, indexBase, comm)); - - XPETRA_FACTORY_END; -} - -RCP> -MapFactory:: - Build(UnderlyingLib lib, - global_size_t numGlobalElements, - const Teuchos::ArrayView &elementList, - int indexBase, - const Teuchos::RCP> &comm) { - XPETRA_MONITOR("MapFactory::Build"); -#ifdef HAVE_XPETRA_TPETRA - if (lib == UseTpetra) - return rcp(new TpetraMap(numGlobalElements, elementList, indexBase, comm)); -#endif // HAVE_XPETRA_TPETRA - - if (lib == UseEpetra) - return rcp(new EpetraMapT(numGlobalElements, elementList, indexBase, comm)); - - XPETRA_FACTORY_END; -} - -//! Map constructor transforming degrees of freedom -//! for numDofPerNode this acts like a deep copy -Teuchos::RCP> -MapFactory:: - Build(const Teuchos::RCP> &map, - const int numDofPerNode, const int gidOffset) { - XPETRA_MONITOR("MapFactory::Build"); - - RCP> bmap = Teuchos::rcp_dynamic_cast>(map); - if (!bmap.is_null()) { - TEUCHOS_TEST_FOR_EXCEPTION(numDofPerNode != 1, Xpetra::Exceptions::RuntimeError, - "Xpetra::MapFactory::Build: When provided a BlockedMap numDofPerNode must set to be one. It is set to " << numDofPerNode << "."); - return rcp(new BlockedMap(*bmap)); - } - - LocalOrdinal N = Teuchos::as(map->getLocalNumElements()); - Teuchos::ArrayView oldElements = map->getLocalElementList(); - Teuchos::Array newElements(map->getLocalNumElements() * numDofPerNode); - for (LocalOrdinal i = 0; i < N; i++) { - for (LocalOrdinal j = 0; j < numDofPerNode; j++) { - newElements[i * numDofPerNode + j] = oldElements[i] * numDofPerNode + j + gidOffset; - } - } - -#ifdef HAVE_XPETRA_TPETRA - if (map->lib() == UseTpetra) { - return rcp(new TpetraMap(map->getGlobalNumElements() * numDofPerNode, newElements, map->getIndexBase(), map->getComm())); - } -#endif // HAVE_XPETRA_TPETRA - - if (map->lib() == UseEpetra) { - return rcp(new EpetraMapT(map->getGlobalNumElements() * numDofPerNode, newElements, map->getIndexBase(), map->getComm())); - } - - XPETRA_FACTORY_END; -} - -Teuchos::RCP> -MapFactory:: - createLocalMap(UnderlyingLib lib, - size_t numElements, - const Teuchos::RCP> &comm) { - XPETRA_MONITOR("MapFactory::Build"); - -#ifdef HAVE_XPETRA_TPETRA - if (lib == UseTpetra) -#if ((defined(EPETRA_HAVE_OMP) && (defined(HAVE_TPETRA_INST_OPENMP) && defined(HAVE_TPETRA_INST_INT_INT))) || \ - (!defined(EPETRA_HAVE_OMP) && (defined(HAVE_TPETRA_INST_SERIAL) && defined(HAVE_TPETRA_INST_INT_INT)))) - return rcp(new TpetraMap(Tpetra::createLocalMapWithNode(numElements, comm))); -#else - TEUCHOS_TEST_FOR_EXCEPTION(true, Xpetra::Exceptions::RuntimeError, - "Xpetra::MapFactory::createLocalMap: Cannot create Xpetra::TpetraMap, since Tpetra is not instantiated on EpetraNode (Serial or OpenMP, depending on configuration) and/or GO=int"); -#endif -#endif // HAVE_XPETRA_TPETRA - - if (lib == UseEpetra) { - Teuchos::RCP> map; - map = Teuchos::rcp(new EpetraMapT((Xpetra::global_size_t)numElements, // num elements, global and local - 0, // index base is zero - comm, LocallyReplicated)); - return map.getConst(); - } - - XPETRA_FACTORY_END; -} - -// TODO remove this - -#ifdef HAVE_XPETRA_TPETRA -Teuchos::RCP> -MapFactory:: - Build(UnderlyingLib lib, - global_size_t numGlobalElements, - const Kokkos::View &indexList, - int indexBase, - const Teuchos::RCP> &comm) { - XPETRA_MONITOR("MapFactory::Build"); - if (lib == UseTpetra) - return rcp(new TpetraMap(numGlobalElements, indexList, indexBase, comm)); - if (lib == UseEpetra) { - Teuchos::ArrayView v(indexList.data(), indexList.size()); - return rcp(new EpetraMapT(numGlobalElements, v, indexBase, comm)); - } - XPETRA_FACTORY_END; -} -#endif // HAVE_XPETRA_TPETRA - -Teuchos::RCP> -MapFactory:: - createLocalMapWithNode(UnderlyingLib lib, - size_t numElements, - const Teuchos::RCP> &comm) { - XPETRA_MONITOR("MapFactory::Build"); - -#ifdef HAVE_XPETRA_TPETRA - if (lib == UseTpetra) -#if ((defined(EPETRA_HAVE_OMP) && (defined(HAVE_TPETRA_INST_OPENMP) && defined(HAVE_TPETRA_INST_INT_INT))) || \ - (!defined(EPETRA_HAVE_OMP) && (defined(HAVE_TPETRA_INST_SERIAL) && defined(HAVE_TPETRA_INST_INT_INT)))) - return rcp(new TpetraMap(Tpetra::createLocalMapWithNode(numElements, comm))); -#else - TEUCHOS_TEST_FOR_EXCEPTION(true, Xpetra::Exceptions::RuntimeError, - "Xpetra::MapFactory::createLocalMapWithNode: Cannot create Xpetra::TpetraMap, since Tpetra is not instantiated on EpetraNode (Serial or OpenMP, depending on configuration) and/or GO=int"); -#endif -#endif // HAVE_XPETRA_TPETRA - - if (lib == UseEpetra) { - Teuchos::RCP> map; - map = Teuchos::rcp(new EpetraMapT((Xpetra::global_size_t)numElements, // num elements, global and local - 0, // index base is zero - comm, LocallyReplicated)); - return map.getConst(); - } - - XPETRA_FACTORY_END; -} - -// TODO remove this - -Teuchos::RCP> -MapFactory:: - createUniformContigMapWithNode(UnderlyingLib lib, - global_size_t numElements, - const Teuchos::RCP> &comm) { - XPETRA_MONITOR("MapFactory::Build"); - -#ifdef HAVE_XPETRA_TPETRA - if (lib == UseTpetra) -#if ((defined(EPETRA_HAVE_OMP) && (defined(HAVE_TPETRA_INST_OPENMP) && defined(HAVE_TPETRA_INST_INT_INT))) || \ - (!defined(EPETRA_HAVE_OMP) && (defined(HAVE_TPETRA_INST_SERIAL) && defined(HAVE_TPETRA_INST_INT_INT)))) - return rcp(new TpetraMap(Tpetra::createUniformContigMapWithNode(numElements, comm))); -#else - TEUCHOS_TEST_FOR_EXCEPTION(true, Xpetra::Exceptions::RuntimeError, - "Xpetra::MapFactory::createUniformContigMapWithNode: Cannot create Xpetra::TpetraMap, since Tpetra is not instantiated on EpetraNode (Serial or OpenMP, depending on configuration) and/or GO=int"); -#endif -#endif // HAVE_XPETRA_TPETRA - - if (lib == UseEpetra) { - Teuchos::RCP> map; - map = Teuchos::rcp(new EpetraMapT(numElements, // num elements, global and local - 0, // index base is zero - comm, GloballyDistributed)); - return map.getConst(); - } - - XPETRA_FACTORY_END; -} - -Teuchos::RCP> -MapFactory:: - createUniformContigMap(UnderlyingLib lib, - global_size_t numElements, - const Teuchos::RCP> &comm) { - XPETRA_MONITOR("MapFactory::Build"); - -#ifdef HAVE_XPETRA_TPETRA - if (lib == UseTpetra) -#if ((defined(EPETRA_HAVE_OMP) && (defined(HAVE_TPETRA_INST_OPENMP) && defined(HAVE_TPETRA_INST_INT_INT))) || \ - (!defined(EPETRA_HAVE_OMP) && (defined(HAVE_TPETRA_INST_SERIAL) && defined(HAVE_TPETRA_INST_INT_INT)))) - return rcp(new TpetraMap(Tpetra::createUniformContigMapWithNode(numElements, comm))); -#else - TEUCHOS_TEST_FOR_EXCEPTION(true, Xpetra::Exceptions::RuntimeError, - "Xpetra::MapFactory::createUniformContigMapWithNode: Cannot create Xpetra::TpetraMap, since Tpetra is not instantiated on EpetraNode (Serial or OpenMP, depending on configuration) and/or GO=int"); -#endif -#endif // HAVE_XPETRA_TPETRA - - if (lib == UseEpetra) { - Teuchos::RCP> map; - map = Teuchos::rcp(new EpetraMapT(numElements, // num elements, global and local - 0, // index base is zero - comm, GloballyDistributed)); - return map.getConst(); - } - XPETRA_FACTORY_END; -} - -Teuchos::RCP> -MapFactory:: - createContigMap(UnderlyingLib lib, - global_size_t numElements, - size_t localNumElements, - const Teuchos::RCP> &comm) { - XPETRA_MONITOR("MapFactory::Build"); - -#ifdef HAVE_XPETRA_TPETRA - if (lib == UseTpetra) -#if ((defined(EPETRA_HAVE_OMP) && (defined(HAVE_TPETRA_INST_OPENMP) && defined(HAVE_TPETRA_INST_INT_INT))) || \ - (!defined(EPETRA_HAVE_OMP) && (defined(HAVE_TPETRA_INST_SERIAL) && defined(HAVE_TPETRA_INST_INT_INT)))) - return rcp(new TpetraMap(Tpetra::createContigMapWithNode(numElements, localNumElements, comm))); -#else - TEUCHOS_TEST_FOR_EXCEPTION(true, Xpetra::Exceptions::RuntimeError, - "Xpetra::MapFactory::createContigMap: Cannot create Xpetra::TpetraMap, since Tpetra is not instantiated on EpetraNode (Serial or OpenMP, depending on configuration) and/or GO=int"); -#endif -#endif - - if (lib == UseEpetra) { - return MapFactory::createContigMapWithNode(lib, numElements, localNumElements, comm); - } - - XPETRA_FACTORY_END; -} - -Teuchos::RCP> -MapFactory:: - createContigMapWithNode(UnderlyingLib lib, - global_size_t numElements, - size_t localNumElements, - const Teuchos::RCP> &comm) { - XPETRA_MONITOR("MapFactory::Build"); - -#ifdef HAVE_XPETRA_TPETRA - if (lib == UseTpetra) -#if ((defined(EPETRA_HAVE_OMP) && (defined(HAVE_TPETRA_INST_OPENMP) && defined(HAVE_TPETRA_INST_INT_INT))) || \ - (!defined(EPETRA_HAVE_OMP) && (defined(HAVE_TPETRA_INST_SERIAL) && defined(HAVE_TPETRA_INST_INT_INT)))) - return rcp(new TpetraMap(Tpetra::createContigMapWithNode(numElements, localNumElements, comm))); -#else - TEUCHOS_TEST_FOR_EXCEPTION(true, Xpetra::Exceptions::RuntimeError, - "Xpetra::MapFactory::createContigMapWithNode: Cannot create Xpetra::TpetraMap, since Tpetra is not instantiated on EpetraNode (Serial or OpenMP, depending on configuration) and/or GO=int"); -#endif -#endif - - if (lib == UseEpetra) { - Teuchos::RCP> map; - map = Teuchos::rcp(new EpetraMapT(numElements, localNumElements, - 0, // index base is zero - comm)); - return map.getConst(); - } - XPETRA_FACTORY_END; -} - -Teuchos::RCP> -MapFactory::copyMapWithNewComm(const Teuchos::RCP> &oldmap, - const Teuchos::RCP> &newComm) { - XPETRA_MONITOR("MapFactory::Build"); - using XMF = Xpetra::MapFactory; - global_size_t INVALID = Teuchos::OrdinalTraits::invalid(); - - size_t Nlocal = oldmap->getLocalNumElements(); - global_size_t Nglobal = oldmap->getGlobalNumElements(); - - // Sanity check -- if there's no comm, we can't keep elements on the map (vice versa is OK) - TEUCHOS_TEST_FOR_EXCEPTION(Nlocal && newComm.is_null(), - std::logic_error, "MapFactory::copyMapWithNewComm needs the comm to match the map."); - - // We'll return null if we don't have a Comm on this rank - RCP> newMap; - if (!newComm.is_null()) { - if (oldmap->isContiguous()) { - newMap = XMF::Build(oldmap->lib(), INVALID, Nlocal, oldmap->getIndexBase(), newComm); - } else { - newMap = XMF::Build(oldmap->lib(), Nglobal, oldmap->getLocalElementList(), oldmap->getIndexBase(), newComm); - } - } - - return newMap; - XPETRA_FACTORY_END; -} - -#endif // #if !defined(XPETRA_EPETRA_NO_32BIT_GLOBAL_INDICES) - -// we need the Epetra specialization only if Epetra is enabled -#if !defined(XPETRA_EPETRA_NO_64BIT_GLOBAL_INDICES) - -//! Private constructor. This is a static class. -MapFactory:: - MapFactory() { -} - -RCP> -MapFactory:: - Build(UnderlyingLib lib, - global_size_t numGlobalElements, - int indexBase, - const Teuchos::RCP> &comm, - LocalGlobal lg) { - XPETRA_MONITOR("MapFactory::Build"); - -#ifdef HAVE_XPETRA_TPETRA - if (lib == UseTpetra) - return rcp(new TpetraMap(numGlobalElements, indexBase, comm, lg)); -#endif - - if (lib == UseEpetra) - return rcp(new EpetraMapT(numGlobalElements, indexBase, comm, lg)); - - XPETRA_FACTORY_END; -} - -RCP> -MapFactory:: - Build(UnderlyingLib lib, - global_size_t numGlobalElements, - size_t numLocalElements, - int indexBase, - const Teuchos::RCP> &comm) { - XPETRA_MONITOR("MapFactory::Build"); - -#ifdef HAVE_XPETRA_TPETRA - if (lib == UseTpetra) - return rcp(new TpetraMap(numGlobalElements, numLocalElements, indexBase, comm)); -#endif - - if (lib == UseEpetra) - return rcp(new EpetraMapT(numGlobalElements, numLocalElements, indexBase, comm)); - - XPETRA_FACTORY_END; -} - -RCP> -MapFactory:: - Build(UnderlyingLib lib, - global_size_t numGlobalElements, - const Teuchos::ArrayView &elementList, - int indexBase, - const Teuchos::RCP> &comm) { - XPETRA_MONITOR("MapFactory::Build"); - -#ifdef HAVE_XPETRA_TPETRA - if (lib == UseTpetra) - return rcp(new TpetraMap(numGlobalElements, elementList, indexBase, comm)); -#endif - - if (lib == UseEpetra) - return rcp(new EpetraMapT(numGlobalElements, elementList, indexBase, comm)); - - XPETRA_FACTORY_END; -} - -//! Map constructor transforming degrees of freedom -//! for numDofPerNode this acts like a deep copy -Teuchos::RCP> -MapFactory:: - Build(const Teuchos::RCP> &map, - int numDofPerNode) { - XPETRA_MONITOR("MapFactory::Build"); - - RCP> bmap = Teuchos::rcp_dynamic_cast>(map); - if (!bmap.is_null()) { - TEUCHOS_TEST_FOR_EXCEPTION(numDofPerNode != 1, Xpetra::Exceptions::RuntimeError, - "Xpetra::MapFactory::Build: When provided a BlockedMap numDofPerNode must set to be one. It is set to " << numDofPerNode << "."); - return rcp(new Xpetra::BlockedMap(*bmap)); - } - - LocalOrdinal N = map->getLocalNumElements(); - Teuchos::ArrayView oldElements = map->getLocalElementList(); - Teuchos::Array newElements(map->getLocalNumElements() * numDofPerNode); - for (LocalOrdinal i = 0; i < N; i++) - for (LocalOrdinal j = 0; j < numDofPerNode; j++) - newElements[i * numDofPerNode + j] = oldElements[i] * numDofPerNode + j; - -#ifdef HAVE_XPETRA_TPETRA - if (map->lib() == UseTpetra) - return rcp(new TpetraMap(map->getGlobalNumElements() * numDofPerNode, newElements, map->getIndexBase(), map->getComm())); -#endif - - if (map->lib() == UseEpetra) - return rcp(new EpetraMapT(map->getGlobalNumElements() * numDofPerNode, newElements, map->getIndexBase(), map->getComm())); - - XPETRA_FACTORY_END; -} - -#ifdef HAVE_XPETRA_TPETRA -Teuchos::RCP> -MapFactory:: - Build(UnderlyingLib lib, - global_size_t numGlobalElements, - const Kokkos::View &indexList, - long long indexBase, - const Teuchos::RCP> &comm) { - XPETRA_MONITOR("MapFactory::Build"); - if (lib == UseTpetra) - return rcp(new TpetraMap(numGlobalElements, indexList, indexBase, comm)); - if (lib == UseEpetra) { - Teuchos::ArrayView v(indexList.data(), indexList.size()); - return rcp(new EpetraMapT(numGlobalElements, v, indexBase, comm)); - } - XPETRA_FACTORY_ERROR_IF_EPETRA(lib); - XPETRA_FACTORY_END; -} -#endif // HAVE_XPETRA_TPETRA - -Teuchos::RCP> -MapFactory:: - createLocalMap(UnderlyingLib lib, - size_t numElements, - const Teuchos::RCP> &comm) { - XPETRA_MONITOR("MapFactory::Build"); - -#ifdef HAVE_XPETRA_TPETRA - if (lib == UseTpetra) -#if ((defined(EPETRA_HAVE_OMP) && (defined(HAVE_TPETRA_INST_OPENMP) && defined(HAVE_TPETRA_INST_INT_LONG_LONG))) || \ - (!defined(EPETRA_HAVE_OMP) && (defined(HAVE_TPETRA_INST_SERIAL) && defined(HAVE_TPETRA_INST_INT_LONG_LONG)))) - return rcp(new TpetraMap(Tpetra::createLocalMapWithNode(numElements, comm))); -#else - TEUCHOS_TEST_FOR_EXCEPTION(true, Xpetra::Exceptions::RuntimeError, - "Xpetra::MapFactory::createLocalMap: Cannot create Xpetra::TpetraMap, since Tpetra is not instantiated on EpetraNode (Serial or OpenMP, depending on configuration) and/or GO=long long"); -#endif -#endif - - if (lib == UseEpetra) - return MapFactory::createLocalMapWithNode(lib, numElements, comm); - - XPETRA_FACTORY_END; -} - -Teuchos::RCP> -MapFactory:: - createLocalMapWithNode(UnderlyingLib lib, - size_t numElements, - const Teuchos::RCP> &comm) { - XPETRA_MONITOR("MapFactory::Build"); - -#ifdef HAVE_XPETRA_TPETRA - if (lib == UseTpetra) -#if ((defined(EPETRA_HAVE_OMP) && (defined(HAVE_TPETRA_INST_OPENMP) && defined(HAVE_TPETRA_INST_INT_LONG_LONG))) || \ - (!defined(EPETRA_HAVE_OMP) && (defined(HAVE_TPETRA_INST_SERIAL) && defined(HAVE_TPETRA_INST_INT_LONG_LONG)))) - return rcp(new TpetraMap(Tpetra::createLocalMapWithNode(numElements, comm))); -#else - TEUCHOS_TEST_FOR_EXCEPTION(true, Xpetra::Exceptions::RuntimeError, - "Xpetra::MapFactory::createLocalMapWithNode: Cannot create Xpetra::TpetraMap, since Tpetra is not instantiated on EpetraNode (Serial or OpenMP, depending on configuration) and/or GO=long long"); -#endif -#endif - - if (lib == UseEpetra) { - Teuchos::RCP> map; - map = Teuchos::rcp(new EpetraMapT((Xpetra::global_size_t)numElements, // num elements, global and local - 0, // index base is zero - comm, LocallyReplicated)); - return map.getConst(); - } - XPETRA_FACTORY_END; -} - -Teuchos::RCP> -MapFactory:: - createUniformContigMapWithNode(UnderlyingLib lib, - global_size_t numElements, - const Teuchos::RCP> &comm) { - XPETRA_MONITOR("MapFactory::Build"); - -#ifdef HAVE_XPETRA_TPETRA - if (lib == UseTpetra) -#if ((defined(EPETRA_HAVE_OMP) && (defined(HAVE_TPETRA_INST_OPENMP) && defined(HAVE_TPETRA_INST_INT_LONG_LONG))) || \ - (!defined(EPETRA_HAVE_OMP) && (defined(HAVE_TPETRA_INST_SERIAL) && defined(HAVE_TPETRA_INST_INT_LONG_LONG)))) - return rcp(new TpetraMap(Tpetra::createUniformContigMapWithNode(numElements, comm))); -#else - TEUCHOS_TEST_FOR_EXCEPTION(true, Xpetra::Exceptions::RuntimeError, - "Xpetra::MapFactory::createUniformContigMapWithNode: Cannot create Xpetra::TpetraMap, since Tpetra is not instantiated on EpetraNode (Serial or OpenMP, depending on configuration) and/or GO=long long"); -#endif -#endif - - if (lib == UseEpetra) { - Teuchos::RCP> map; - map = Teuchos::rcp(new EpetraMapT(numElements, // num elements, global and local - 0, // index base is zero - comm, GloballyDistributed)); - return map.getConst(); - } - XPETRA_FACTORY_END; -} - -Teuchos::RCP> -MapFactory:: - createUniformContigMap(UnderlyingLib lib, - global_size_t numElements, - const Teuchos::RCP> &comm) { - XPETRA_MONITOR("MapFactory::Build"); - -#ifdef HAVE_XPETRA_TPETRA - if (lib == UseTpetra) -#if ((defined(EPETRA_HAVE_OMP) && (defined(HAVE_TPETRA_INST_OPENMP) && defined(HAVE_TPETRA_INST_INT_LONG_LONG))) || \ - (!defined(EPETRA_HAVE_OMP) && (defined(HAVE_TPETRA_INST_SERIAL) && defined(HAVE_TPETRA_INST_INT_LONG_LONG)))) - return rcp(new TpetraMap(Tpetra::createUniformContigMapWithNode(numElements, comm))); -#else - TEUCHOS_TEST_FOR_EXCEPTION(true, Xpetra::Exceptions::RuntimeError, - "Xpetra::MapFactory::createUniformContigMap: Cannot create Xpetra::TpetraMap, since Tpetra is not instantiated on EpetraNode (Serial or OpenMP, depending on configuration) and/or GO=long long"); -#endif -#endif - - if (lib == UseEpetra) - return MapFactory::createUniformContigMapWithNode(lib, numElements, comm); - - XPETRA_FACTORY_END; -} - -Teuchos::RCP> -MapFactory::createContigMap(UnderlyingLib lib, - global_size_t numElements, - size_t localNumElements, - const Teuchos::RCP> &comm) { - XPETRA_MONITOR("MapFactory::Build"); - -#ifdef HAVE_XPETRA_TPETRA - if (lib == UseTpetra) -#if ((defined(EPETRA_HAVE_OMP) && (defined(HAVE_TPETRA_INST_OPENMP) && defined(HAVE_TPETRA_INST_INT_LONG_LONG))) || (!defined(EPETRA_HAVE_OMP) && (defined(HAVE_TPETRA_INST_SERIAL) && defined(HAVE_TPETRA_INST_INT_LONG_LONG)))) - return rcp(new TpetraMap( - Tpetra::createContigMapWithNode(numElements, localNumElements, comm))); -#else - TEUCHOS_TEST_FOR_EXCEPTION(true, - Xpetra::Exceptions::RuntimeError, - "Xpetra::MapFactory::createContigMap: Cannot create Xpetra::TpetraMap, since Tpetra is not instantiated on " - "EpetraNode (Serial or OpenMP, depending on configuration) and/or GO=long long"); -#endif -#endif - - if (lib == UseEpetra) - return MapFactory::createContigMapWithNode(lib, numElements, localNumElements, comm); - - XPETRA_FACTORY_END; -} - -Teuchos::RCP> -MapFactory:: - createContigMapWithNode(UnderlyingLib lib, - global_size_t numElements, - size_t localNumElements, - const Teuchos::RCP> &comm) { - XPETRA_MONITOR("MapFactory::Build"); - -#ifdef HAVE_XPETRA_TPETRA - if (lib == UseTpetra) -#if ((defined(EPETRA_HAVE_OMP) && (defined(HAVE_TPETRA_INST_OPENMP) && defined(HAVE_TPETRA_INST_INT_LONG_LONG))) || (!defined(EPETRA_HAVE_OMP) && (defined(HAVE_TPETRA_INST_SERIAL) && defined(HAVE_TPETRA_INST_INT_LONG_LONG)))) - return rcp(new TpetraMap( - Tpetra::createContigMapWithNode(numElements, localNumElements, comm))); -#else - TEUCHOS_TEST_FOR_EXCEPTION(true, - Xpetra::Exceptions::RuntimeError, - "Xpetra::MapFactory::createContigMapWithNode: Cannot create Xpetra::TpetraMap, since Tpetra is not " - "instantiated on EpetraNode (Serial or OpenMP, depending on configuration) and/or GO=long long"); -#endif -#endif // HAVE_XPETRA_TPETRA - - if (lib == UseEpetra) { - Teuchos::RCP> map; - map = Teuchos::rcp(new EpetraMapT(numElements, - localNumElements, - 0, // index base is zero - comm)); - return map.getConst(); - } - - XPETRA_FACTORY_END; -} - -Teuchos::RCP> -MapFactory::copyMapWithNewComm(const Teuchos::RCP> &oldmap, - const Teuchos::RCP> &newComm) { - XPETRA_MONITOR("MapFactory::Build"); - using XMF = Xpetra::MapFactory; - global_size_t INVALID = Teuchos::OrdinalTraits::invalid(); - - size_t Nlocal = oldmap->getLocalNumElements(); - global_size_t Nglobal = oldmap->getGlobalNumElements(); - - // Sanity check -- if there's no comm, we can't keep elements on the map (vice versa is OK) - TEUCHOS_TEST_FOR_EXCEPTION(Nlocal && newComm.is_null(), - std::logic_error, "MapFactory::copyMapWithNewComm needs the comm to match the map."); - - // We'll return null if we don't have a Comm on this rank - RCP> newMap; - if (!newComm.is_null()) { - if (oldmap->isContiguous()) { - newMap = XMF::Build(oldmap->lib(), INVALID, Nlocal, oldmap->getIndexBase(), newComm); - } else { - newMap = XMF::Build(oldmap->lib(), Nglobal, oldmap->getLocalElementList(), oldmap->getIndexBase(), newComm); - } - } - - return newMap; - XPETRA_FACTORY_END; -} - -#endif // #if !defined(XPETRA_EPETRA_NO_64BIT_GLOBAL_INDICES) - -#endif // #if defined(HAVE_XPETRA_EPETRA) - -} // namespace Xpetra - -// EOF diff --git a/packages/xpetra/src/Map/Xpetra_MapFactory_decl.hpp b/packages/xpetra/src/Map/Xpetra_MapFactory_decl.hpp index 64a1015651bc..c842ed8ec055 100644 --- a/packages/xpetra/src/Map/Xpetra_MapFactory_decl.hpp +++ b/packages/xpetra/src/Map/Xpetra_MapFactory_decl.hpp @@ -73,14 +73,12 @@ class MapFactory { const LocalOrdinal numDofPerNode, const GlobalOrdinal gidOffset = Teuchos::ScalarTraits::zero()); -#ifdef HAVE_XPETRA_TPETRA static Teuchos::RCP> Build(UnderlyingLib lib, global_size_t numGlobalElements, const Kokkos::View& indexList, GlobalOrdinal indexBase, const Teuchos::RCP>& comm); -#endif //! Create a locally replicated Map with the default node. static Teuchos::RCP> @@ -135,200 +133,6 @@ class MapFactory { /// X P E T R A E P E T R A S P E C I A L I Z A T I O N ////////////////////////////////////////////////////////////// -#if defined(HAVE_XPETRA_EPETRA) - -#if !defined(XPETRA_EPETRA_NO_32BIT_GLOBAL_INDICES) - -template <> -class MapFactory { - typedef int LocalOrdinal; - typedef int GlobalOrdinal; - typedef EpetraNode Node; - - private: - //! Private constructor. This is a static class. - MapFactory(); - - public: - static RCP> - Build(UnderlyingLib lib, - global_size_t numGlobalElements, - int indexBase, - const Teuchos::RCP>& comm, - LocalGlobal lg = GloballyDistributed); - - static RCP> - Build(UnderlyingLib lib, - global_size_t numGlobalElements, - size_t numLocalElements, - int indexBase, - const Teuchos::RCP>& comm); - - static RCP> - Build(UnderlyingLib lib, - global_size_t numGlobalElements, - const Teuchos::ArrayView& elementList, - int indexBase, - const Teuchos::RCP>& comm); - - /*! - @brief Map constructor transforming degrees of freedom for numDofPerNode - - @param[in] map Existing (node) map - @param[in] numDofPerNode Number of DOFs per node for output map - @param[in] gidOffset GID offset for output map - @return Map - - \note This acts like a deep copy. - */ - static Teuchos::RCP> - Build(const Teuchos::RCP>& map, - const LocalOrdinal numDofPerNode, - const GlobalOrdinal gidOffset = Teuchos::ScalarTraits::zero()); - -#ifdef HAVE_XPETRA_TPETRA - static Teuchos::RCP> - Build(UnderlyingLib lib, - global_size_t numGlobalElements, - const Kokkos::View& indexList, - GlobalOrdinal indexBase, - const Teuchos::RCP>& comm); -#endif - - static Teuchos::RCP> - createLocalMap(UnderlyingLib lib, - size_t numElements, - const Teuchos::RCP>& comm); - - // TODO remove this - - static Teuchos::RCP> - createLocalMapWithNode(UnderlyingLib lib, - size_t numElements, - const Teuchos::RCP>& comm); - - // TODO remove this - - static Teuchos::RCP> - createUniformContigMapWithNode(UnderlyingLib lib, global_size_t numElements, - const Teuchos::RCP>& comm); - - static Teuchos::RCP> - createUniformContigMap(UnderlyingLib lib, - global_size_t numElements, - const Teuchos::RCP>& comm); - - static Teuchos::RCP> - createContigMap(UnderlyingLib lib, - global_size_t numElements, - size_t localNumElements, - const Teuchos::RCP>& comm); - - static Teuchos::RCP> - createContigMapWithNode(UnderlyingLib lib, - global_size_t numElements, - size_t localNumElements, - const Teuchos::RCP>& comm); - - static Teuchos::RCP> - copyMapWithNewComm(const Teuchos::RCP>& oldmap, - const Teuchos::RCP>& newComm); - -}; // class MapFactory specialization - -#endif // #if !defined(XPETRA_EPETRA_NO_32BIT_GLOBAL_INDICES) - -// we need the Epetra specialization only if Epetra is enabled -#if !defined(XPETRA_EPETRA_NO_64BIT_GLOBAL_INDICES) - -template <> -class MapFactory { - typedef int LocalOrdinal; - typedef long long GlobalOrdinal; - typedef EpetraNode Node; - - private: - //! Private constructor. This is a static class. - MapFactory(); - - public: - static RCP> - Build(UnderlyingLib lib, - global_size_t numGlobalElements, - int indexBase, - const Teuchos::RCP>& comm, - LocalGlobal lg = GloballyDistributed); - - static RCP> - Build(UnderlyingLib lib, - global_size_t numGlobalElements, - size_t numLocalElements, - int indexBase, - const Teuchos::RCP>& comm); - - static RCP> - Build(UnderlyingLib lib, - global_size_t numGlobalElements, - const Teuchos::ArrayView& elementList, - int indexBase, - const Teuchos::RCP>& comm); - - //! Map constructor transforming degrees of freedom - //! for numDofPerNode this acts like a deep copy - static Teuchos::RCP> - Build(const Teuchos::RCP>& map, - LocalOrdinal numDofPerNode); - -#ifdef HAVE_XPETRA_TPETRA - static Teuchos::RCP> - Build(UnderlyingLib lib, - global_size_t numGlobalElements, - const Kokkos::View& indexList, - GlobalOrdinal indexBase, - const Teuchos::RCP>& comm); -#endif - - static Teuchos::RCP> - createLocalMap(UnderlyingLib lib, - size_t numElements, - const Teuchos::RCP>& comm); - - static Teuchos::RCP> - createLocalMapWithNode(UnderlyingLib lib, - size_t numElements, - const Teuchos::RCP>& comm); - - static Teuchos::RCP> - createUniformContigMapWithNode(UnderlyingLib lib, global_size_t numElements, - const Teuchos::RCP>& comm); - - static Teuchos::RCP> - createUniformContigMap(UnderlyingLib lib, - global_size_t numElements, - const Teuchos::RCP>& comm); - - static Teuchos::RCP> - createContigMap(UnderlyingLib lib, - global_size_t numElements, - size_t localNumElements, - const Teuchos::RCP>& comm); - - static Teuchos::RCP> - createContigMapWithNode(UnderlyingLib lib, - global_size_t numElements, - size_t localNumElements, - const Teuchos::RCP>& comm); - - static Teuchos::RCP> - copyMapWithNewComm(const Teuchos::RCP>& oldmap, - const Teuchos::RCP>& newComm); - -}; // class MapFactory specialization - -#endif // #if !defined(XPETRA_EPETRA_NO_64BIT_GLOBAL_INDICES) - -#endif // #if defined(HAVE_XPETRA_EPETRA) - } // namespace Xpetra #define XPETRA_MAPFACTORY_SHORT diff --git a/packages/xpetra/src/Map/Xpetra_MapFactory_def.hpp b/packages/xpetra/src/Map/Xpetra_MapFactory_def.hpp index 2e276dac2a14..d401effcb963 100644 --- a/packages/xpetra/src/Map/Xpetra_MapFactory_def.hpp +++ b/packages/xpetra/src/Map/Xpetra_MapFactory_def.hpp @@ -12,12 +12,7 @@ #include "Xpetra_MapFactory_decl.hpp" -#ifdef HAVE_XPETRA_TPETRA #include "Xpetra_TpetraMap.hpp" -#endif -#ifdef HAVE_XPETRA_EPETRA -#include "Xpetra_EpetraMap.hpp" -#endif #include "Xpetra_BlockedMap.hpp" @@ -33,10 +28,8 @@ MapFactory:: LocalGlobal lg) { XPETRA_MONITOR("MapFactory::Build"); -#ifdef HAVE_XPETRA_TPETRA if (lib == UseTpetra) return Teuchos::rcp(new TpetraMap(numGlobalElements, indexBase, comm, lg)); -#endif XPETRA_FACTORY_ERROR_IF_EPETRA(lib); XPETRA_FACTORY_END; @@ -52,10 +45,8 @@ MapFactory:: const Teuchos::RCP>& comm) { XPETRA_MONITOR("MapFactory::Build"); -#ifdef HAVE_XPETRA_TPETRA if (lib == UseTpetra) return rcp(new TpetraMap(numGlobalElements, numLocalElements, indexBase, comm)); -#endif XPETRA_FACTORY_ERROR_IF_EPETRA(lib); XPETRA_FACTORY_END; @@ -71,10 +62,8 @@ MapFactory:: const Teuchos::RCP>& comm) { XPETRA_MONITOR("MapFactory::Build"); -#ifdef HAVE_XPETRA_TPETRA if (lib == UseTpetra) return rcp(new TpetraMap(numGlobalElements, elementList, indexBase, comm)); -#endif XPETRA_FACTORY_ERROR_IF_EPETRA(lib); XPETRA_FACTORY_END; @@ -97,7 +86,6 @@ MapFactory:: return rcp(new Xpetra::BlockedMap(*bmap)); } -#ifdef HAVE_XPETRA_TPETRA LocalOrdinal numLocalElements = nodeMap->getLocalNumElements(); Teuchos::ArrayView oldElements = nodeMap->getLocalElementList(); Teuchos::Array newElements(nodeMap->getLocalNumElements() * numDofPerNode); @@ -109,13 +97,11 @@ MapFactory:: if (nodeMap->lib() == UseTpetra) { return rcp(new TpetraMap(nodeMap->getGlobalNumElements() * numDofPerNode, newElements, nodeMap->getIndexBase(), nodeMap->getComm())); } -#endif XPETRA_FACTORY_ERROR_IF_EPETRA(nodeMap->lib()); XPETRA_FACTORY_END; } -#ifdef HAVE_XPETRA_TPETRA template Teuchos::RCP> MapFactory:: @@ -130,7 +116,6 @@ MapFactory:: XPETRA_FACTORY_ERROR_IF_EPETRA(lib); XPETRA_FACTORY_END; } -#endif // HAVE_XPETRA_TPETRA template Teuchos::RCP> @@ -140,7 +125,6 @@ MapFactory:: const Teuchos::RCP>& comm) { XPETRA_MONITOR("MapFactory::Build"); -#ifdef HAVE_XPETRA_TPETRA if (lib == UseTpetra) { // Pre-ETI code called Tpetra::createLocalMap() but this can result in compile erros // when Trilinos is built with multiple node-types, specifically the GCC 4.8.4 PR @@ -150,7 +134,6 @@ MapFactory:: // return rcp(new Xpetra::TpetraMap(Tpetra::createLocalMapWithNode(numElements, comm))); // (old version) return rcp(new TpetraMap(Tpetra::createLocalMapWithNode(numElements, comm))); } -#endif // HAVE_XPETRA_TPETRA XPETRA_FACTORY_ERROR_IF_EPETRA(lib); XPETRA_FACTORY_END; @@ -164,11 +147,9 @@ MapFactory:: const Teuchos::RCP>& comm) { XPETRA_MONITOR("MapFactory::Build"); -#ifdef HAVE_XPETRA_TPETRA if (lib == UseTpetra) { return rcp(new TpetraMap(Tpetra::createLocalMapWithNode(numElements, comm))); } -#endif // HAVE_XPETRA_TPETRA XPETRA_FACTORY_ERROR_IF_EPETRA(lib); XPETRA_FACTORY_END; @@ -182,11 +163,9 @@ MapFactory:: const Teuchos::RCP>& comm) { XPETRA_MONITOR("MapFactory::Build"); -#ifdef HAVE_XPETRA_TPETRA if (lib == UseTpetra) return rcp(new TpetraMap( Tpetra::createUniformContigMapWithNode(numElements, comm))); -#endif // HAVE_XPETRA_TPETRA XPETRA_FACTORY_ERROR_IF_EPETRA(lib); XPETRA_FACTORY_END; @@ -200,11 +179,9 @@ MapFactory:: const Teuchos::RCP>& comm) { XPETRA_MONITOR("MapFactory::Build"); -#ifdef HAVE_XPETRA_TPETRA if (lib == UseTpetra) return rcp(new Xpetra::TpetraMap( Tpetra::createUniformContigMapWithNode(numElements, comm))); -#endif // HAVE_XPETRA_TPETRA XPETRA_FACTORY_ERROR_IF_EPETRA(lib); XPETRA_FACTORY_END; @@ -219,11 +196,9 @@ MapFactory:: const Teuchos::RCP>& comm) { XPETRA_MONITOR("MapFactory::Build"); -#ifdef HAVE_XPETRA_TPETRA if (lib == UseTpetra) return rcp(new Xpetra::TpetraMap( Tpetra::createContigMapWithNode(numElements, localNumElements, comm))); -#endif // HAVE_XPETRA_TPETRA XPETRA_FACTORY_ERROR_IF_EPETRA(lib); XPETRA_FACTORY_END; @@ -238,12 +213,10 @@ MapFactory:: const Teuchos::RCP>& comm) { XPETRA_MONITOR("MapFactory::Build"); -#ifdef HAVE_XPETRA_TPETRA if (lib == UseTpetra) { return rcp(new TpetraMap( Tpetra::createContigMapWithNode(numElements, localNumElements, comm))); } -#endif // HAVE_XPETRA_TPETRA XPETRA_FACTORY_ERROR_IF_EPETRA(lib); XPETRA_FACTORY_END; diff --git a/packages/xpetra/src/Map/Xpetra_Map_decl.hpp b/packages/xpetra/src/Map/Xpetra_Map_decl.hpp index 6c8ece856c99..4c79e85be055 100644 --- a/packages/xpetra/src/Map/Xpetra_Map_decl.hpp +++ b/packages/xpetra/src/Map/Xpetra_Map_decl.hpp @@ -15,26 +15,13 @@ #include #include -#ifdef HAVE_XPETRA_EPETRA -#include "Epetra_config.h" -#endif - -#ifdef HAVE_XPETRA_TPETRA #include -#endif namespace Xpetra { // TODO move this typedef to another place // Node which is used for Epetra. This can be either the // Serial node or OpenMP node (but not both) -#ifdef HAVE_XPETRA_EPETRA -#ifdef EPETRA_HAVE_OMP -typedef Tpetra::KokkosCompat::KokkosOpenMPWrapperNode EpetraNode; -#else -typedef Tpetra::KokkosCompat::KokkosSerialWrapperNode EpetraNode; -#endif -#endif enum UnderlyingLib { UseEpetra, @@ -183,12 +170,10 @@ class Map // it to return the base map. virtual RCP > getMap() const; -#ifdef HAVE_XPETRA_TPETRA typedef typename Tpetra::Map::local_map_type local_map_type; /// \brief Get the local Map for Kokkos kernels. virtual local_map_type getLocalMap() const = 0; -#endif //@} diff --git a/packages/xpetra/src/Map/Xpetra_TpetraMap_decl.hpp b/packages/xpetra/src/Map/Xpetra_TpetraMap_decl.hpp index 7986e239f0eb..71eb9edc7cf3 100644 --- a/packages/xpetra/src/Map/Xpetra_TpetraMap_decl.hpp +++ b/packages/xpetra/src/Map/Xpetra_TpetraMap_decl.hpp @@ -58,13 +58,11 @@ class TpetraMap GlobalOrdinal indexBase, const Teuchos::RCP > &comm); -#ifdef HAVE_XPETRA_TPETRA //! Constructor with user-defined arbitrary (possibly noncontiguous) distribution passed as a Kokkos::View. TpetraMap(global_size_t numGlobalElements, const Kokkos::View &indexList, GlobalOrdinal indexBase, const Teuchos::RCP > &comm); -#endif //! Destructor ~TpetraMap(); @@ -176,11 +174,9 @@ class TpetraMap //! Get the underlying Tpetra map RCP > getTpetra_Map() const; -#ifdef HAVE_XPETRA_TPETRA using local_map_type = typename Map::local_map_type; /// \brief Get the local Map for Kokkos kernels. local_map_type getLocalMap() const; -#endif //@} diff --git a/packages/xpetra/src/Map/Xpetra_TpetraMap_def.hpp b/packages/xpetra/src/Map/Xpetra_TpetraMap_def.hpp index 3bfbc9ad57bb..238d5ef8f49f 100644 --- a/packages/xpetra/src/Map/Xpetra_TpetraMap_def.hpp +++ b/packages/xpetra/src/Map/Xpetra_TpetraMap_def.hpp @@ -52,8 +52,6 @@ TpetraMap:: indexBase, comm))) {} -#ifdef HAVE_XPETRA_TPETRA - //! Constructor with user-defined arbitrary (possibly noncontiguous) distribution passed as a Kokkos::View. template TpetraMap:: @@ -65,7 +63,6 @@ TpetraMap:: indexList, indexBase, comm))) {} -#endif //! Destructor. template @@ -237,345 +234,10 @@ UnderlyingLib TpetraMap::lib() const { return template RCP > TpetraMap::getTpetra_Map() const { return map_; } -#ifdef HAVE_XPETRA_TPETRA - template typename Map::local_map_type TpetraMap::getLocalMap() const { return map_->getLocalMap(); } -#endif - -#ifdef HAVE_XPETRA_EPETRA - -#if ((defined(EPETRA_HAVE_OMP) && (!defined(HAVE_TPETRA_INST_OPENMP) || !defined(HAVE_TPETRA_INST_INT_INT))) || \ - (!defined(EPETRA_HAVE_OMP) && (!defined(HAVE_TPETRA_INST_SERIAL) || !defined(HAVE_TPETRA_INST_INT_INT)))) - -// specialization for Tpetra Map on EpetraNode and GO=int -template <> -class TpetraMap - : public virtual Map { - public: - typedef int GlobalOrdinal; - typedef int LocalOrdinal; - typedef EpetraNode Node; - - //! @name Constructors and destructor - //@{ - - //! Constructor with Tpetra-defined contiguous uniform distribution. - - TpetraMap(global_size_t numGlobalElements, - GlobalOrdinal indexBase, - const Teuchos::RCP > &comm, - LocalGlobal lg = GloballyDistributed) { - XPETRA_TPETRA_ETI_EXCEPTION(typeid(TpetraMap).name(), typeid(TpetraMap).name(), "int", typeid(EpetraNode).name()); - } - - //! Constructor with a user-defined contiguous distribution. - - TpetraMap(global_size_t numGlobalElements, - size_t numLocalElements, - GlobalOrdinal indexBase, - const Teuchos::RCP > &comm) { - XPETRA_TPETRA_ETI_EXCEPTION(typeid(TpetraMap).name(), typeid(TpetraMap).name(), "int", typeid(EpetraNode).name()); - } - - //! Constructor with user-defined arbitrary (possibly noncontiguous) distribution. - - TpetraMap(global_size_t numGlobalElements, - const Teuchos::ArrayView &elementList, - GlobalOrdinal indexBase, - const Teuchos::RCP > &comm) { - XPETRA_TPETRA_ETI_EXCEPTION(typeid(TpetraMap).name(), typeid(TpetraMap).name(), "int", typeid(EpetraNode).name()); - } - - //! Destructor. - ~TpetraMap() {} - - //@} - - //! @name Attributes - //@{ - - //! The number of elements in this Map. - global_size_t getGlobalNumElements() const { return 0; } - - //! The number of elements belonging to the calling node. - size_t getLocalNumElements() const { return 0; } - - //! The index base for this Map. - GlobalOrdinal getIndexBase() const { return 0; } - - //! The minimum local index. - LocalOrdinal getMinLocalIndex() const { return 0; } - - //! The maximum local index on the calling process. - LocalOrdinal getMaxLocalIndex() const { return 0; } - - //! The minimum global index owned by the calling process. - GlobalOrdinal getMinGlobalIndex() const { return 0; } - - //! The maximum global index owned by the calling process. - GlobalOrdinal getMaxGlobalIndex() const { return 0; } - - //! The minimum global index over all processes in the communicator. - GlobalOrdinal getMinAllGlobalIndex() const { return 0; } - - //! The maximum global index over all processes in the communicator. - GlobalOrdinal getMaxAllGlobalIndex() const { return 0; } - - //! The local index corresponding to the given global index. - LocalOrdinal getLocalElement(GlobalOrdinal globalIndex) const { return 0; } - - //! The global index corresponding to the given local index. - GlobalOrdinal getGlobalElement(LocalOrdinal localIndex) const { return 0; } - - //! Return the process IDs and corresponding local IDs for the given global IDs. - LookupStatus getRemoteIndexList(const Teuchos::ArrayView &GIDList, const Teuchos::ArrayView &nodeIDList, const Teuchos::ArrayView &LIDList) const { return Xpetra::IDNotPresent; } - - //! Return the process IDs for the given global IDs. - LookupStatus getRemoteIndexList(const Teuchos::ArrayView &GIDList, const Teuchos::ArrayView &nodeIDList) const { return Xpetra::IDNotPresent; } - - //! Return a view of the global indices owned by this node. - Teuchos::ArrayView getLocalElementList() const { return Teuchos::ArrayView(); } - - //@} - - //! @name Boolean tests - //@{ - - //! True if the local index is valid for this Map on this node, else false. - bool isNodeLocalElement(LocalOrdinal localIndex) const { return false; } - - //! True if the global index is found in this Map on this node, else false. - bool isNodeGlobalElement(GlobalOrdinal globalIndex) const { return false; } - - //! True if this Map is distributed contiguously, else false. - bool isContiguous() const { return false; } - - //! Whether this Map is globally distributed or locally replicated. - bool isDistributed() const { return false; } - - //! True if and only if map is compatible with this Map. - bool isCompatible(const Map &map) const { return false; } - - //! True if and only if map is identical to this Map. - bool isSameAs(const Map &map) const { return false; } - - //@} - - //! @name - //@{ - - //! Get this Map's Comm object. - Teuchos::RCP > getComm() const { return Teuchos::null; } - - //@} - - //! @name - //@{ - - //! Return a simple one-line description of this object. - std::string description() const { return std::string(""); } - - //! Print this object with the given verbosity level to the given FancyOStream. - void describe(Teuchos::FancyOStream &out, const Teuchos::EVerbosityLevel verbLevel = Teuchos::Describable::verbLevel_default) const {} - - RCP > removeEmptyProcesses() const { return Teuchos::null; } - RCP > replaceCommWithSubset(const Teuchos::RCP > &newComm) const { return Teuchos::null; } - - //@} - - //! @name Xpetra specific - //@{ - - //! TpetraMap constructor to wrap a Tpetra::Map object - TpetraMap(const Teuchos::RCP > &map) { - XPETRA_TPETRA_ETI_EXCEPTION(typeid(TpetraMap).name(), typeid(TpetraMap).name(), "int", typeid(EpetraNode).name()); - } - - //! Get the library used by this object (Tpetra or Epetra?) - UnderlyingLib lib() const { return UseTpetra; } - - //! Get the underlying Tpetra map - RCP > getTpetra_Map() const { return Teuchos::null; } - -#ifdef HAVE_XPETRA_TPETRA - using local_map_type = typename Map::local_map_type; - /// \brief Get the local Map for Kokkos kernels. - local_map_type getLocalMap() const { - return local_map_type(); - } -#endif - - //@} - -}; // TpetraMap class (specialization for GO=int and NO=EpetraNode) -#endif - -#if ((defined(EPETRA_HAVE_OMP) && (!defined(HAVE_TPETRA_INST_OPENMP) || !defined(HAVE_TPETRA_INST_INT_LONG_LONG))) || \ - (!defined(EPETRA_HAVE_OMP) && (!defined(HAVE_TPETRA_INST_SERIAL) || !defined(HAVE_TPETRA_INST_INT_LONG_LONG)))) -// specialization for Tpetra Map on EpetraNode and GO=int -template <> -class TpetraMap - : public virtual Map { - public: - typedef long long GlobalOrdinal; - typedef int LocalOrdinal; - typedef EpetraNode Node; - - //! @name Constructors and destructor - //@{ - - //! Constructor with Tpetra-defined contiguous uniform distribution. - TpetraMap(global_size_t numGlobalElements, - GlobalOrdinal indexBase, - const Teuchos::RCP > &comm, - LocalGlobal lg = GloballyDistributed) { - XPETRA_TPETRA_ETI_EXCEPTION(typeid(TpetraMap).name(), typeid(TpetraMap).name(), "long long", typeid(EpetraNode).name()); - } - - //! Constructor with a user-defined contiguous distribution. - TpetraMap(global_size_t numGlobalElements, - size_t numLocalElements, - GlobalOrdinal indexBase, - const Teuchos::RCP > &comm) { - XPETRA_TPETRA_ETI_EXCEPTION(typeid(TpetraMap).name(), typeid(TpetraMap).name(), "long long", typeid(EpetraNode).name()); - } - - //! Constructor with user-defined arbitrary (possibly noncontiguous) distribution. - TpetraMap(global_size_t numGlobalElements, - const Teuchos::ArrayView &elementList, - GlobalOrdinal indexBase, - const Teuchos::RCP > &comm) { - XPETRA_TPETRA_ETI_EXCEPTION(typeid(TpetraMap).name(), typeid(TpetraMap).name(), "long long", typeid(EpetraNode).name()); - } - - //! Destructor. - ~TpetraMap() {} - - //@} - - //! @name Attributes - //@{ - - //! The number of elements in this Map. - global_size_t getGlobalNumElements() const { return 0; } - - //! The number of elements belonging to the calling node. - size_t getLocalNumElements() const { return 0; } - - //! The index base for this Map. - GlobalOrdinal getIndexBase() const { return 0; } - - //! The minimum local index. - LocalOrdinal getMinLocalIndex() const { return 0; } - - //! The maximum local index on the calling process. - LocalOrdinal getMaxLocalIndex() const { return 0; } - - //! The minimum global index owned by the calling process. - GlobalOrdinal getMinGlobalIndex() const { return 0; } - - //! The maximum global index owned by the calling process. - GlobalOrdinal getMaxGlobalIndex() const { return 0; } - - //! The minimum global index over all processes in the communicator. - GlobalOrdinal getMinAllGlobalIndex() const { return 0; } - - //! The maximum global index over all processes in the communicator. - GlobalOrdinal getMaxAllGlobalIndex() const { return 0; } - - //! The local index corresponding to the given global index. - LocalOrdinal getLocalElement(GlobalOrdinal globalIndex) const { return 0; } - - //! The global index corresponding to the given local index. - GlobalOrdinal getGlobalElement(LocalOrdinal localIndex) const { return 0; } - - //! Return the process IDs and corresponding local IDs for the given global IDs. - LookupStatus getRemoteIndexList(const Teuchos::ArrayView &GIDList, const Teuchos::ArrayView &nodeIDList, const Teuchos::ArrayView &LIDList) const { return Xpetra::IDNotPresent; } - - //! Return the process IDs for the given global IDs. - LookupStatus getRemoteIndexList(const Teuchos::ArrayView &GIDList, const Teuchos::ArrayView &nodeIDList) const { return Xpetra::IDNotPresent; } - - //! Return a view of the global indices owned by this node. - Teuchos::ArrayView getLocalElementList() const { return Teuchos::ArrayView(); } - - //@} - - //! @name Boolean tests - //@{ - - //! True if the local index is valid for this Map on this node, else false. - bool isNodeLocalElement(LocalOrdinal localIndex) const { return false; } - - //! True if the global index is found in this Map on this node, else false. - bool isNodeGlobalElement(GlobalOrdinal globalIndex) const { return false; } - - //! True if this Map is distributed contiguously, else false. - bool isContiguous() const { return false; } - - //! Whether this Map is globally distributed or locally replicated. - bool isDistributed() const { return false; } - - //! True if and only if map is compatible with this Map. - bool isCompatible(const Map &map) const { return false; } - - //! True if and only if map is identical to this Map. - bool isSameAs(const Map &map) const { return false; } - - //@} - - //! @name - //@{ - - //! Get this Map's Comm object. - Teuchos::RCP > getComm() const { return Teuchos::null; } - - //@} - - //! @name - //@{ - - //! Return a simple one-line description of this object. - std::string description() const { return std::string(""); } - - //! Print this object with the given verbosity level to the given FancyOStream. - void describe(Teuchos::FancyOStream &out, const Teuchos::EVerbosityLevel verbLevel = Teuchos::Describable::verbLevel_default) const {} - - RCP > removeEmptyProcesses() const { return Teuchos::null; } - RCP > replaceCommWithSubset(const Teuchos::RCP > &newComm) const { return Teuchos::null; } - - //@} - - //! @name Xpetra specific - //@{ - - //! TpetraMap constructor to wrap a Tpetra::Map object - TpetraMap(const Teuchos::RCP > &map) { - XPETRA_TPETRA_ETI_EXCEPTION(typeid(TpetraMap).name(), typeid(TpetraMap).name(), "long long", typeid(EpetraNode).name()); - } - - //! Get the library used by this object (Tpetra or Epetra?) - UnderlyingLib lib() const { return UseTpetra; } - - //! Get the underlying Tpetra map - RCP > getTpetra_Map() const { return Teuchos::null; } - -#ifdef HAVE_XPETRA_TPETRA - using local_map_type = typename Map::local_map_type; - /// \brief Get the local Map for Kokkos kernels. - local_map_type getLocalMap() const { - // We will never be here, this is a stub class - return local_map_type(); - } -#endif - - //@} -}; // TpetraMap class (specialization for GO=int and NO=EpetraNode) -#endif - -#endif // HAVE_XPETRA_EPETRA } // namespace Xpetra diff --git a/packages/xpetra/src/Matrix/Xpetra_CrsMatrixWrap_decl.hpp b/packages/xpetra/src/Matrix/Xpetra_CrsMatrixWrap_decl.hpp index e92212017b20..86ca44a91195 100644 --- a/packages/xpetra/src/Matrix/Xpetra_CrsMatrixWrap_decl.hpp +++ b/packages/xpetra/src/Matrix/Xpetra_CrsMatrixWrap_decl.hpp @@ -48,14 +48,10 @@ class CrsMatrixWrap : public Matrix { typedef Xpetra::CrsMatrix CrsMatrix; typedef Xpetra::Matrix Matrix; typedef Xpetra::CrsGraph CrsGraph; -#ifdef HAVE_XPETRA_TPETRA typedef Xpetra::TpetraCrsMatrix TpetraCrsMatrix; -#endif typedef Xpetra::CrsMatrixFactory CrsMatrixFactory; typedef Xpetra::MatrixView MatrixView; -#ifdef HAVE_XPETRA_TPETRA typedef typename CrsMatrix::local_matrix_type local_matrix_type; -#endif public: //! @name Constructor/Destructor Methods @@ -78,7 +74,6 @@ class CrsMatrixWrap : public Matrix { //! Constructor specifying fixed number of entries for each row and column map CrsMatrixWrap(const RCP &rowMap, const RCP &colMap, const ArrayRCP &NumEntriesPerRowToAlloc); -#ifdef HAVE_XPETRA_TPETRA //! Constructor specifying fixed number of entries for each row and column map CrsMatrixWrap(const RCP &rowMap, const RCP &colMap, const local_matrix_type &lclMatrix, const Teuchos::RCP ¶ms = null); @@ -86,11 +81,6 @@ class CrsMatrixWrap : public Matrix { CrsMatrixWrap(const local_matrix_type &lclMatrix, const RCP &rowMap, const RCP &colMap, const RCP &domainMap = Teuchos::null, const RCP &rangeMap = Teuchos::null, const Teuchos::RCP ¶ms = null); -#else -#ifdef __GNUC__ -#warning "Xpetra Kokkos interface for CrsMatrix is enabled (HAVE_XPETRA_KOKKOS_REFACTOR) but Tpetra is disabled. The Kokkos interface needs Tpetra to be enabled, too." -#endif -#endif CrsMatrixWrap(RCP matrix); @@ -415,14 +405,8 @@ class CrsMatrixWrap : public Matrix { void setObjectLabel(const std::string &objectLabel); //@} -#ifdef HAVE_XPETRA_TPETRA virtual local_matrix_type getLocalMatrixDevice() const; virtual typename local_matrix_type::HostMirror getLocalMatrixHost() const; -#else -#ifdef __GNUC__ -#warning "Xpetra Kokkos interface for CrsMatrix is enabled (HAVE_XPETRA_KOKKOS_REFACTOR) but Tpetra is disabled. The Kokkos interface needs Tpetra to be enabled, too." -#endif -#endif // JG: Added: diff --git a/packages/xpetra/src/Matrix/Xpetra_CrsMatrixWrap_def.hpp b/packages/xpetra/src/Matrix/Xpetra_CrsMatrixWrap_def.hpp index 0a88ed85d2a1..c6b044a6bcb5 100644 --- a/packages/xpetra/src/Matrix/Xpetra_CrsMatrixWrap_def.hpp +++ b/packages/xpetra/src/Matrix/Xpetra_CrsMatrixWrap_def.hpp @@ -73,7 +73,6 @@ CrsMatrixWrap::CrsMatrixWrap(const RC CreateDefaultView(); } -#ifdef HAVE_XPETRA_TPETRA template CrsMatrixWrap::CrsMatrixWrap(const RCP &rowMap, const RCP &colMap, const local_matrix_type &lclMatrix, const Teuchos::RCP ¶ms) : finalDefaultView_(false) { @@ -95,11 +94,6 @@ CrsMatrixWrap::CrsMatrixWrap(const lo // Default view CreateDefaultView(); } -#else -#ifdef __GNUC__ -#warning "Xpetra Kokkos interface for CrsMatrix is enabled (HAVE_XPETRA_KOKKOS_REFACTOR) but Tpetra is disabled. The Kokkos interface needs Tpetra to be enabled, too." -#endif -#endif template CrsMatrixWrap::CrsMatrixWrap(RCP matrix) @@ -406,7 +400,6 @@ void CrsMatrixWrap::setObjectLabel(co matrixData_->setObjectLabel(objectLabel); } -#ifdef HAVE_XPETRA_TPETRA template typename Xpetra::CrsMatrix::local_matrix_type::HostMirror CrsMatrixWrap::getLocalMatrixHost() const { @@ -417,11 +410,6 @@ typename Xpetra::CrsMatrix::local_mat CrsMatrixWrap::getLocalMatrixDevice() const { return matrixData_->getLocalMatrixDevice(); } -#else -#ifdef __GNUC__ -#warning "Xpetra Kokkos interface for CrsMatrix is enabled (HAVE_XPETRA_KOKKOS_REFACTOR) but Tpetra is disabled. The Kokkos interface needs Tpetra to be enabled, too." -#endif -#endif template bool CrsMatrixWrap::hasCrsGraph() const { return true; } diff --git a/packages/xpetra/src/Matrix/Xpetra_MatrixFactory2_decl.hpp b/packages/xpetra/src/Matrix/Xpetra_MatrixFactory2_decl.hpp index 384046030aea..959676779cc5 100644 --- a/packages/xpetra/src/Matrix/Xpetra_MatrixFactory2_decl.hpp +++ b/packages/xpetra/src/Matrix/Xpetra_MatrixFactory2_decl.hpp @@ -53,21 +53,6 @@ class MatrixFactory2 { RCP oldCrsOp = oldOp->getCrsMatrix(); -#ifdef HAVE_XPETRA_EPETRA -#ifndef XPETRA_EPETRA_NO_32BIT_GLOBAL_INDICES - RCP > oldECrsOp = Teuchos::rcp_dynamic_cast >(oldCrsOp); - if (oldECrsOp != Teuchos::null) { - // Underlying matrix is Epetra - RCP newECrsOp(new EpetraCrsMatrixT(*oldECrsOp)); - RCP newOp(new CrsMatrixWrap(newECrsOp)); - if (setFixedBlockSize) - newOp->SetFixedBlockSize(A->GetFixedBlockSize()); - return newOp; - } -#endif -#endif - -#ifdef HAVE_XPETRA_TPETRA // Underlying matrix is Tpetra RCP oldTCrsOp = Teuchos::rcp_dynamic_cast(oldCrsOp); if (oldTCrsOp != Teuchos::null) { @@ -78,10 +63,6 @@ class MatrixFactory2 { return newOp; } return Teuchos::null; -#else - throw Exceptions::BadCast("Cast from Xpetra::Matrix to Xpetra::EpetraCrsMatrix or Xpetra::TpetraCrsMatrix failed"); - TEUCHOS_UNREACHABLE_RETURN(Teuchos::null); // make compiler happy -#endif } // BuildCopy }; @@ -105,21 +86,6 @@ class MatrixFactory2 { RCP oldCrsOp = oldOp->getCrsMatrix(); -#ifdef HAVE_XPETRA_EPETRA -#ifndef XPETRA_EPETRA_NO_64BIT_GLOBAL_INDICES - RCP > oldECrsOp = Teuchos::rcp_dynamic_cast >(oldCrsOp); - if (oldECrsOp != Teuchos::null) { - // Underlying matrix is Epetra - RCP newECrsOp(new EpetraCrsMatrixT(*oldECrsOp)); - RCP newOp(new CrsMatrixWrap(newECrsOp)); - if (setFixedBlockSize) - newOp->SetFixedBlockSize(A->GetFixedBlockSize()); - return newOp; - } -#endif -#endif - -#ifdef HAVE_XPETRA_TPETRA // Underlying matrix is Tpetra RCP oldTCrsOp = Teuchos::rcp_dynamic_cast(oldCrsOp); if (oldTCrsOp != Teuchos::null) { @@ -129,9 +95,6 @@ class MatrixFactory2 { newOp->SetFixedBlockSize(A->GetFixedBlockSize()); return newOp; } -#else - throw Exceptions::BadCast("Cast from Xpetra::Matrix to Xpetra::EpetraCrsMatrix or Xpetra::TpetraCrsMatrix failed"); -#endif return Teuchos::null; // make compiler happy } diff --git a/packages/xpetra/src/Matrix/Xpetra_MatrixFactory2_def.hpp b/packages/xpetra/src/Matrix/Xpetra_MatrixFactory2_def.hpp index 1e3b15de0342..25bf3491d9b5 100644 --- a/packages/xpetra/src/Matrix/Xpetra_MatrixFactory2_def.hpp +++ b/packages/xpetra/src/Matrix/Xpetra_MatrixFactory2_def.hpp @@ -30,14 +30,6 @@ RCP> MatrixFactory2 oldTCrsOp = Teuchos::rcp_dynamic_cast(oldCrsOp); @@ -53,7 +45,6 @@ RCP> MatrixFactory2 -Epetra_IntMultiVector &toEpetra(MultiVector &x) { - XPETRA_DYNAMIC_CAST(EpetraIntMultiVectorT, x, tX, "toEpetra"); - return *tX.getEpetra_IntMultiVector(); -} - -template -const Epetra_IntMultiVector &toEpetra(const MultiVector &x) { - XPETRA_DYNAMIC_CAST(const EpetraIntMultiVectorT, x, tX, "toEpetra"); - return *tX.getEpetra_IntMultiVector(); -} -// - -#ifndef XPETRA_EPETRA_NO_32BIT_GLOBAL_INDICES -#ifdef HAVE_XPETRA_TPETRA -#include "TpetraCore_config.h" -#if ((defined(EPETRA_HAVE_OMP) && !defined(HAVE_TPETRA_INST_OPENMP)) || \ - (!defined(EPETRA_HAVE_OMP) && !defined(HAVE_TPETRA_INST_SERIAL))) -template class EpetraIntMultiVectorT; -template Epetra_IntMultiVector &toEpetra(MultiVector &); -template const Epetra_IntMultiVector &toEpetra(const MultiVector &); -#endif -#ifdef HAVE_TPETRA_INST_SERIAL -template class EpetraIntMultiVectorT; -template Epetra_IntMultiVector &toEpetra(MultiVector &); -template const Epetra_IntMultiVector &toEpetra(const MultiVector &); -#endif -#ifdef HAVE_TPETRA_INST_PTHREAD -template class EpetraIntMultiVectorT; -template Epetra_IntMultiVector &toEpetra(MultiVector &); -template const Epetra_IntMultiVector &toEpetra(const MultiVector &); -#endif -#ifdef HAVE_TPETRA_INST_OPENMP -template class EpetraIntMultiVectorT; -template Epetra_IntMultiVector &toEpetra(MultiVector &); -template const Epetra_IntMultiVector &toEpetra(const MultiVector &); -#endif -#ifdef HAVE_TPETRA_INST_CUDA -typedef Tpetra::KokkosCompat::KokkosCudaWrapperNode default_node_type; -template class EpetraIntMultiVectorT; -template Epetra_IntMultiVector &toEpetra(MultiVector &); -template const Epetra_IntMultiVector &toEpetra(const MultiVector &); -#endif -#ifdef HAVE_TPETRA_INST_HIP -typedef Tpetra::KokkosCompat::KokkosHIPWrapperNode default_node_type; -template class EpetraIntMultiVectorT; -template Epetra_IntMultiVector &toEpetra(MultiVector &); -template const Epetra_IntMultiVector &toEpetra(const MultiVector &); -#endif -#else -// Tpetra is disabled and Kokkos not available: use dummy node type -typedef Xpetra::EpetraNode default_node_type; -template class EpetraIntMultiVectorT; -template Epetra_IntMultiVector &toEpetra(MultiVector &); -template const Epetra_IntMultiVector &toEpetra(const MultiVector &); -#endif // HAVE_XPETRA_TPETRA -#endif - -#ifndef XPETRA_EPETRA_NO_64BIT_GLOBAL_INDICES -#ifdef HAVE_XPETRA_TPETRA -#include "TpetraCore_config.h" -#if ((defined(EPETRA_HAVE_OMP) && !defined(HAVE_TPETRA_INST_OPENMP)) || \ - (!defined(EPETRA_HAVE_OMP) && !defined(HAVE_TPETRA_INST_SERIAL))) -template class EpetraIntMultiVectorT; -template Epetra_IntMultiVector &toEpetra(MultiVector &); -template const Epetra_IntMultiVector &toEpetra(const MultiVector &); -#endif -#ifdef HAVE_TPETRA_INST_SERIAL -template class EpetraIntMultiVectorT; -template Epetra_IntMultiVector &toEpetra(MultiVector &); -template const Epetra_IntMultiVector &toEpetra(const MultiVector &); -#endif -#ifdef HAVE_TPETRA_INST_PTHREAD -template class EpetraIntMultiVectorT; -template Epetra_IntMultiVector &toEpetra(MultiVector &); -template const Epetra_IntMultiVector &toEpetra(const MultiVector &); -#endif -#ifdef HAVE_TPETRA_INST_OPENMP -template class EpetraIntMultiVectorT; -template Epetra_IntMultiVector &toEpetra(MultiVector &); -template const Epetra_IntMultiVector &toEpetra(const MultiVector &); -#endif -#ifdef HAVE_TPETRA_INST_CUDA -typedef Tpetra::KokkosCompat::KokkosCudaWrapperNode default_node_type; -template class EpetraIntMultiVectorT; -template Epetra_IntMultiVector &toEpetra(MultiVector &); -template const Epetra_IntMultiVector &toEpetra(const MultiVector &); -#endif -#ifdef HAVE_TPETRA_INST_HIP -typedef Tpetra::KokkosCompat::KokkosHIPWrapperNode default_node_type; -template class EpetraIntMultiVectorT; -template Epetra_IntMultiVector &toEpetra(MultiVector &); -template const Epetra_IntMultiVector &toEpetra(const MultiVector &); -#endif -#else -// Tpetra is disabled and Kokkos not available: use dummy node type -typedef Xpetra::EpetraNode default_node_type; -template class EpetraIntMultiVectorT; -template Epetra_IntMultiVector &toEpetra(MultiVector &); -template const Epetra_IntMultiVector &toEpetra(const MultiVector &); -#endif // HAVE_XPETRA_TPETRA -#endif - -} // namespace Xpetra diff --git a/packages/xpetra/src/MultiVector/Xpetra_EpetraIntMultiVector.hpp b/packages/xpetra/src/MultiVector/Xpetra_EpetraIntMultiVector.hpp deleted file mode 100644 index 3b8e995f0709..000000000000 --- a/packages/xpetra/src/MultiVector/Xpetra_EpetraIntMultiVector.hpp +++ /dev/null @@ -1,1188 +0,0 @@ -// @HEADER -// ***************************************************************************** -// Xpetra: A linear algebra interface package -// -// Copyright 2012 NTESS and the Xpetra contributors. -// SPDX-License-Identifier: BSD-3-Clause -// ***************************************************************************** -// @HEADER - -#ifndef XPETRA_EPETRAINTMULTIVECTOR_HPP -#define XPETRA_EPETRAINTMULTIVECTOR_HPP - -#include "Xpetra_EpetraConfigDefs.hpp" - -#include "Xpetra_ConfigDefs.hpp" -#include "Xpetra_MultiVector.hpp" -#include "Xpetra_Exceptions.hpp" - -#include "Xpetra_EpetraMap.hpp" -#include "Xpetra_EpetraMultiVector.hpp" -#include "Epetra_IntMultiVector.h" - -#if defined(XPETRA_ENABLE_DEPRECATED_CODE) -#ifdef __GNUC__ -#if defined(Xpetra_SHOW_DEPRECATED_WARNINGS) -#warning "The header file Trilinos/packages/xpetra/src/MultiVector/Xpetra_EpetraIntMultiVector.hpp is deprecated." -#endif -#endif -#else -#error "The header file Trilinos/packages/xpetra/src/MultiVector/Xpetra_EpetraIntMultiVector.hpp is deprecated." -#endif - -namespace Xpetra { - -// TODO: move that elsewhere -template -XPETRA_DEPRECATED Epetra_IntMultiVector &toEpetra(MultiVector &); - -template -XPETRA_DEPRECATED const Epetra_IntMultiVector &toEpetra(const MultiVector &); -// - -// stub implementation for EpetraIntMultiVectorT -template -class XPETRA_DEPRECATED EpetraIntMultiVectorT - : public MultiVector { - typedef int Scalar; - typedef int LocalOrdinal; - typedef EpetraGlobalOrdinal GlobalOrdinal; - - public: - //! @name Constructor/Destructor Methods - //@{ - - //! Sets all vector entries to zero. - EpetraIntMultiVectorT(const Teuchos::RCP > &map, size_t NumVectors, bool zeroOut = true) { - TEUCHOS_TEST_FOR_EXCEPTION(true, Xpetra::Exceptions::RuntimeError, - "Xpetra::EpetraIntMultiVector only available for GO=int or GO=long long with EpetraNode (Serial or OpenMP depending on configuration)"); - } - - //! MultiVector copy constructor. - EpetraIntMultiVectorT(const MultiVector &source, const Teuchos::DataAccess copyOrView = Teuchos::Copy) { - TEUCHOS_TEST_FOR_EXCEPTION(true, Xpetra::Exceptions::RuntimeError, - "Xpetra::EpetraIntMultiVector only available for GO=int or GO=long long with EpetraNode (Serial or OpenMP depending on configuration)"); - } - - //! Set multi-vector values from array of pointers using Teuchos memory management classes. (copy). - EpetraIntMultiVectorT(const Teuchos::RCP > &map, const Teuchos::ArrayView > &ArrayOfPtrs, size_t NumVectors) { - TEUCHOS_TEST_FOR_EXCEPTION(true, Xpetra::Exceptions::RuntimeError, - "Xpetra::EpetraIntMultiVector only available for GO=int or GO=long long with EpetraNode (Serial or OpenMP depending on configuration)"); - } - - //! Destructor. - ~EpetraIntMultiVectorT(){}; - - //@} - - //! @name Post-construction modification routines - //@{ - - //! Initialize all values in a multi-vector with specified value. - void putScalar(const int &value) {} - - //! Set multi-vector values to random numbers. - void randomize(bool bUseXpetraImplementation = true) { - XPETRA_MONITOR("EpetraIntMultiVectorT::randomize"); - TEUCHOS_TEST_FOR_EXCEPTION(1, Xpetra::Exceptions::NotImplemented, "Xpetra::EpetraIntMultiVectorT::randomize(): Functionnality not available in Epetra"); - } - - //! Set multi-vector values to random numbers. - void randomize(const Scalar &minVal, const Scalar &maxVal, bool bUseXpetraImplementation = true) { - XPETRA_MONITOR("EpetraIntMultiVectorT::randomize"); - TEUCHOS_TEST_FOR_EXCEPTION(1, Xpetra::Exceptions::NotImplemented, "Xpetra::EpetraIntMultiVectorT::randomize(): Functionnality not available in Epetra"); - } - - //! Set seed for Random function. - /** Note: this method does not exist in Tpetra interface. Added for MueLu. */ - void setSeed(unsigned int seed) { - XPETRA_MONITOR("EpetraIntMultiVectorT::setSeed"); - TEUCHOS_TEST_FOR_EXCEPTION(1, Xpetra::Exceptions::NotImplemented, - "Xpetra::EpetraIntMultiVectorT::setSeed(): Functionnality not available in Epetra"); - } - - //@} - - //! @name Data Copy and View get methods - //@{ - - //! Return a Vector which is a const view of column j. - Teuchos::RCP > getVector(size_t j) const { - return Teuchos::null; - } - - //! Return a Vector which is a nonconst view of column j. - Teuchos::RCP > getVectorNonConst(size_t j) { - return Teuchos::null; - } - - //! Const Local vector access function. - //! View of the local values in a particular vector of this multi-vector. - Teuchos::ArrayRCP getData(size_t j) const { - return Teuchos::ArrayRCP(); - } - - //! Local vector access function. - //! View of the local values in a particular vector of this multi-vector. - Teuchos::ArrayRCP getDataNonConst(size_t j) { - return Teuchos::ArrayRCP(); - } - - //@} - - //! @name Mathematical methods - //@{ - //! Computes dot product of each corresponding pair of vectors, dots[i] = this[i].dot(A[i]) - void dot(const MultiVector &A, - const Teuchos::ArrayView &dots) const { - TEUCHOS_TEST_FOR_EXCEPTION(-1, Xpetra::Exceptions::NotImplemented, - "This function is not implemented in Epetra_IntMultiVector"); - } - - //! Puts element-wise absolute values of input Multi-vector in target: A = abs(this) - void abs(const MultiVector &A) {} - - //! Puts element-wise reciprocal values of input Multi-vector in target, this(i,j) = 1/A(i,j). - void reciprocal(const MultiVector &A) { - TEUCHOS_TEST_FOR_EXCEPTION(-1, Xpetra::Exceptions::NotImplemented, - "This function is not implemented in Epetra_IntMultiVector"); - } - - //! Scale the current values of a multi-vector, this = alpha*this. - void scale(const int &alpha) {} - - //! Scale the current values of a multi-vector, this[j] = alpha[j]*this[j]. - void scale(Teuchos::ArrayView alpha) { - XPETRA_MONITOR("EpetraIntMultiVectorT::scale"); - TEUCHOS_TEST_FOR_EXCEPTION(1, Xpetra::Exceptions::NotImplemented, - "Xpetra::EpetraIntMultiVectorT::scale(): Functionnality not available in Epetra"); - } - - //! Update multi-vector values with scaled values of A, this = beta*this + alpha*A. - void update(const int &alpha, const MultiVector &A, const int &beta) { - XPETRA_MONITOR("EpetraIntMultiVectorT::update"); - TEUCHOS_TEST_FOR_EXCEPTION(1, Xpetra::Exceptions::NotImplemented, - "Xpetra::EpetraIntMultiVectorT::update(): Functionnality not available in Epetra"); - } - - //! Update multi-vector with scaled values of A and B, this = gamma*this + alpha*A + beta*B. - void update(const int &alpha, const MultiVector &A, const int &beta, const MultiVector &B, const int &gamma) { - XPETRA_MONITOR("EpetraIntMultiVectorT::update"); - TEUCHOS_TEST_FOR_EXCEPTION(1, Xpetra::Exceptions::NotImplemented, - "Xpetra::EpetraIntMultiVectorT::update(): Functionnality not available in Epetra"); - } - - //! Compute 1-norm of each vector in multi-vector. - void norm1(const Teuchos::ArrayView::magnitudeType> &norms) const { - XPETRA_MONITOR("EpetraIntMultiVectorT::norm1"); - TEUCHOS_TEST_FOR_EXCEPTION(1, Xpetra::Exceptions::NotImplemented, - "Xpetra::EpetraIntMultiVectorT::norm1(): Functionnality not available in Epetra"); - } - - //! Compute 2-norm of each vector in multi-vector. - void norm2(const Teuchos::ArrayView::magnitudeType> &norms) const { - XPETRA_MONITOR("EpetraIntMultiVectorT::norm2"); - TEUCHOS_TEST_FOR_EXCEPTION(1, Xpetra::Exceptions::NotImplemented, - "Xpetra::EpetraIntMultiVectorT::norm2(): Functionnality not available in Epetra"); - } - - //! Compute Inf-norm of each vector in multi-vector. - void normInf(const Teuchos::ArrayView::magnitudeType> &norms) const { - XPETRA_MONITOR("EpetraIntMultiVectorT::normInf"); - TEUCHOS_TEST_FOR_EXCEPTION(1, Xpetra::Exceptions::NotImplemented, - "Xpetra::EpetraIntMultiVectorT::normInf(): Functionnality not available in Epetra"); - } - - //! Compute mean (average) value of each vector in multi-vector. - void meanValue(const Teuchos::ArrayView &means) const { - XPETRA_MONITOR("EpetraIntMultiVectorT::meanValue"); - TEUCHOS_TEST_FOR_EXCEPTION(1, Xpetra::Exceptions::NotImplemented, - "Xpetra::EpetraIntMultiVectorT::meanValue(): Functionnality not available in Epetra"); - } - - //! Compute max value of each vector in multi-vector. - void maxValue(const Teuchos::ArrayView &maxs) const { - XPETRA_MONITOR("EpetraIntMultiVectorT::maxValue"); - TEUCHOS_TEST_FOR_EXCEPTION(1, Xpetra::Exceptions::NotImplemented, - "Xpetra::EpetraIntMultiVectorT::maxValue(): Functionnality not available in Epetra"); - } - - //! Matrix-Matrix multiplication, this = beta*this + alpha*op(A)*op(B). - void multiply(Teuchos::ETransp transA, Teuchos::ETransp transB, const int &alpha, const MultiVector &A, const MultiVector &B, const int &beta) { - XPETRA_MONITOR("EpetraIntMultiVectorT::multiply"); - TEUCHOS_TEST_FOR_EXCEPTION(1, Xpetra::Exceptions::NotImplemented, - "Xpetra::EpetraIntMultiVectorT::multiply(): Functionnality not available in Epetra"); - } - - //! Element-wise multiply of a Vector A with a EpetraMultiVector B. - void elementWiseMultiply(int scalarAB, const Vector &A, const MultiVector &B, int scalarThis) { - XPETRA_MONITOR("EpetraIntMultiVectorT::elementWiseMultiply"); - TEUCHOS_TEST_FOR_EXCEPTION(1, Xpetra::Exceptions::NotImplemented, - "Xpetra_EpetraIntMultiVector: elementWiseMultiply not implemented because Epetra_IntMultiVector does not support this operation"); - } - - //@} - - //! @name Post-construction modification routines - //@{ - - //! Replace value, using global (row) index. - void replaceGlobalValue(GlobalOrdinal globalRow, size_t vectorIndex, const Scalar &value) { - XPETRA_MONITOR("EpetraIntMultiVectorT::replaceGlobalValue"); - TEUCHOS_TEST_FOR_EXCEPTION(1, Xpetra::Exceptions::NotImplemented, "TODO"); - } - - //! Add value to existing value, using global (row) index. - void sumIntoGlobalValue(GlobalOrdinal globalRow, size_t vectorIndex, const Scalar &value) { - XPETRA_MONITOR("EpetraIntMultiVectorT::sumIntoGlobalValue"); - TEUCHOS_TEST_FOR_EXCEPTION(1, Xpetra::Exceptions::NotImplemented, "TODO"); - } - - //! Replace value, using local (row) index. - void replaceLocalValue(LocalOrdinal myRow, size_t vectorIndex, const Scalar &value) { - XPETRA_MONITOR("EpetraIntMultiVectorT::replaceLocalValue"); - TEUCHOS_TEST_FOR_EXCEPTION(1, Xpetra::Exceptions::NotImplemented, "TODO"); - } - - //! Add value to existing value, using local (row) index. - void sumIntoLocalValue(LocalOrdinal myRow, size_t vectorIndex, const Scalar &value) { - XPETRA_MONITOR("EpetraIntMultiVectorT::sumIntoLocalValue"); - TEUCHOS_TEST_FOR_EXCEPTION(1, Xpetra::Exceptions::NotImplemented, "TODO"); - } - - //@} - - //! @name Attribute access functions - //@{ - - //! Returns the number of vectors in the multi-vector. - size_t getNumVectors() const { - XPETRA_MONITOR("EpetraIntMultiVectorT::getNumVectors"); - return 1; - } - - //! Returns the local vector length on the calling processor of vectors in the multi-vector. - size_t getLocalLength() const { return 0; } - - //! Returns the global vector length of vectors in the multi-vector. - global_size_t getGlobalLength() const { return 0; } - - //! Checks to see if the local length, number of vectors and size of Scalar type match - bool isSameSize(const MultiVector &vec) const { return false; } - - //@} - - //! @name Overridden from Teuchos::Describable - //@{ - - //! Return a simple one-line description of this object. - std::string description() const { - return std::string(""); - } - - //! Print the object with some verbosity level to an FancyOStream object. - void describe(Teuchos::FancyOStream &out, const Teuchos::EVerbosityLevel verbLevel = Teuchos::Describable::verbLevel_default) const {} - - //@} - - RCP getEpetra_IntMultiVector() const { return Teuchos::null; } - - const RCP > getComm() const { - TEUCHOS_TEST_FOR_EXCEPTION(1, Xpetra::Exceptions::NotImplemented, "TODO getComm Epetra MultiVector not implemented"); - } - - // Implementing DistObject - Teuchos::RCP > getMap() const { - return Teuchos::null; - } - - void doImport(const DistObject &source, - const Import &importer, CombineMode CM) {} - - void doExport(const DistObject &dest, - const Import &importer, CombineMode CM) {} - - void doImport(const DistObject &source, - const Export &exporter, CombineMode CM) {} - - void doExport(const DistObject &dest, - const Export &exporter, CombineMode CM) {} - - void replaceMap(const RCP > &map) { - // do nothing - } - - protected: - /// \brief Implementation of the assignment operator (operator=); - /// does a deep copy. - virtual void - assign(const MultiVector &rhs) {} - - private: - //! The Epetra_IntMultiVector which this class wraps. - // RCP< Epetra_IntMultiVector > vec_; - -}; // class EpetraIntMultiVectorT - -// specialization on GO=int and Node=Serial -#ifndef XPETRA_EPETRA_NO_32BIT_GLOBAL_INDICES -template <> -class EpetraIntMultiVectorT - : public virtual MultiVector { - typedef int Scalar; - typedef int LocalOrdinal; - typedef int GlobalOrdinal; - typedef EpetraNode Node; - - public: - //! @name Constructor/Destructor Methods - //@{ - - //! Sets all vector entries to zero. - EpetraIntMultiVectorT(const Teuchos::RCP > &map, size_t NumVectors, bool zeroOut = true) { - vec_ = rcp(new Epetra_IntMultiVector(toEpetra(map), NumVectors, zeroOut)); - } - - //! MultiVector copy constructor. - EpetraIntMultiVectorT(const MultiVector &source, const Teuchos::DataAccess copyOrView = Teuchos::Copy) { - if (copyOrView == Teuchos::Copy) - vec_ = rcp(new Epetra_IntMultiVector(toEpetra(source))); - else { - int *indices = new int[getNumVectors()]; - for (size_t i = 0; i < getNumVectors(); i++) - indices[i] = i; - vec_ = Teuchos::rcp(new Epetra_IntMultiVector(View, toEpetra(source), indices, getNumVectors())); - delete[] indices; - } - } - - //! Set multi-vector values from array of pointers using Teuchos memory management classes. (copy). - EpetraIntMultiVectorT(const Teuchos::RCP > & /* map */, const Teuchos::ArrayView > & /* ArrayOfPtrs */, size_t /* NumVectors */) { - TEUCHOS_TEST_FOR_EXCEPTION(true, Xpetra::Exceptions::RuntimeError, - "Xpetra::EpetraIntMultiVector only available for GO=int or GO=long long with EpetraNode (Serial or OpenMP depending on configuration)"); - } - - //! Destructor. - ~EpetraIntMultiVectorT(){}; - - //@} - - //! @name Post-construction modification routines - //@{ - - //! Initialize all values in a multi-vector with specified value. - void putScalar(const int &value) { - int ierr = 0; - ierr = vec_->PutScalar(value); - TEUCHOS_TEST_FOR_EXCEPTION(ierr != 0, Xpetra::Exceptions::RuntimeError, "Epetra_IntMultiVector::PutScalar returned an error.") - } - - //! Set multi-vector values to random numbers. - void randomize(bool /* bUseXpetraImplementation */ = true) { - XPETRA_MONITOR("EpetraIntMultiVectorT::randomize"); - TEUCHOS_TEST_FOR_EXCEPTION(1, Xpetra::Exceptions::NotImplemented, "Xpetra::EpetraIntMultiVectorT::randomize(): Functionnality not available in Epetra"); - } - - //! Set multi-vector values to random numbers. - void randomize(const Scalar &minVal, const Scalar &maxVal, bool bUseXpetraImplementation = true) { - XPETRA_MONITOR("EpetraIntMultiVectorT::randomize"); - TEUCHOS_TEST_FOR_EXCEPTION(1, Xpetra::Exceptions::NotImplemented, "Xpetra::EpetraIntMultiVectorT::randomize(): Functionnality not available in Epetra"); - } - - //! Set seed for Random function. - /** Note: this method does not exist in Tpetra interface. Added for MueLu. */ - void setSeed(unsigned int /* seed */) { - XPETRA_MONITOR("EpetraIntMultiVectorT::setSeed"); - TEUCHOS_TEST_FOR_EXCEPTION(1, Xpetra::Exceptions::NotImplemented, "Xpetra::EpetraIntMultiVectorT::setSeed(): Functionnality not available in Epetra"); - } - - typedef typename Xpetra::MultiVector::dual_view_type dual_view_type; - - typename dual_view_type::t_host_const_um getHostLocalView(Access::ReadOnlyStruct) const override { return getHostLocalView(Access::ReadWrite); } - - typename dual_view_type::t_dev_const_um getDeviceLocalView(Access::ReadOnlyStruct) const override { return getDeviceLocalView(Access::ReadWrite); } - - typename dual_view_type::t_host_um getHostLocalView(Access::OverwriteAllStruct) const override { return getHostLocalView(Access::ReadWrite); } - - typename dual_view_type::t_dev_um getDeviceLocalView(Access::OverwriteAllStruct) const override { return getDeviceLocalView(Access::ReadWrite); } - - typename dual_view_type::t_host_um getHostLocalView(Access::ReadWriteStruct) const override { - typedef Kokkos::View - epetra_view_type; - // access Epetra multivector data - Scalar *data = NULL; - int myLDA; - vec_->ExtractView(&data, &myLDA); - int localLength = vec_->MyLength(); - int numVectors = getNumVectors(); - - // create view - epetra_view_type test = epetra_view_type(data, localLength, numVectors); - typename dual_view_type::t_host_um ret = subview(test, Kokkos::ALL(), Kokkos::ALL()); - - return ret; - } - - typename dual_view_type::t_dev_um getDeviceLocalView(Access::ReadWriteStruct) const override { return getHostLocalView(Access::ReadWrite); } - - //@} - - //! @name Data Copy and View get methods - //@{ - - //! Return a Vector which is a const view of column j. - Teuchos::RCP > getVector(size_t /* j */) const { - TEUCHOS_TEST_FOR_EXCEPTION(1, Xpetra::Exceptions::NotImplemented, "TODO"); - } - - //! Return a Vector which is a nonconst view of column j. - Teuchos::RCP > getVectorNonConst(size_t /* j */) { - TEUCHOS_TEST_FOR_EXCEPTION(1, Xpetra::Exceptions::NotImplemented, "TODO"); - } - - //! Const Local vector access function. - //! View of the local values in a particular vector of this multi-vector. - Teuchos::ArrayRCP getData(size_t j) const { - XPETRA_MONITOR("EpetraIntMultiVectorT::getData"); - - int **arrayOfPointers; - vec_->ExtractView(&arrayOfPointers); - int *data = arrayOfPointers[j]; - int localLength = vec_->MyLength(); - - return ArrayRCP(data, 0, localLength, false); // not ownership - } - - //! Local vector access function. - //! View of the local values in a particular vector of this multi-vector. - Teuchos::ArrayRCP getDataNonConst(size_t j) { - XPETRA_MONITOR("EpetraIntMultiVectorT::getDataNonConst"); - - int **arrayOfPointers; - vec_->ExtractView(&arrayOfPointers); - int *data = arrayOfPointers[j]; - int localLength = vec_->MyLength(); - - return ArrayRCP(data, 0, localLength, false); // not ownership - } - - //@} - - //! @name Mathematical methods - //@{ - //! Computes dot product of each corresponding pair of vectors, dots[i] = this[i].dot(A[i]) - void dot(const MultiVector & /* A */, - const Teuchos::ArrayView & /* dots */) const { - XPETRA_MONITOR("EpetraIntMultiVectorT::dot"); - - // XPETRA_DYNAMIC_CAST(const EpetraMultiVectorT, A, eA, "This Xpetra::EpetraMultiVectorT method only accept Xpetra::EpetraMultiVectorT as input arguments."); - TEUCHOS_TEST_FOR_EXCEPTION(1, Xpetra::Exceptions::NotImplemented, - "This function is not implemented in Epetra_IntMultiVector"); - } - - //! Puts element-wise absolute values of input Multi-vector in target: A = abs(this) - void abs(const MultiVector & /* A */) { - XPETRA_MONITOR("EpetraIntMultiVectorT::abs"); - TEUCHOS_TEST_FOR_EXCEPTION(1, Xpetra::Exceptions::NotImplemented, - "This function is not available in Epetra_IntMultiVector"); - } - - //! Puts element-wise reciprocal values of input Multi-vector in target, this(i,j) = 1/A(i,j). - void reciprocal(const MultiVector & /* A */) { - XPETRA_MONITOR("EpetraIntMultiVectorT::reciprocal"); - - // XPETRA_DYNAMIC_CAST(const EpetraMultiVectorT, A, eA, "This Xpetra::EpetraMultiVectorT method only accept Xpetra::EpetraMultiVectorT as input arguments."); - TEUCHOS_TEST_FOR_EXCEPTION(1, Xpetra::Exceptions::RuntimeError, "The reciprocal of an IntMultiVector is not defined!"); - } - - //! Scale the current values of a multi-vector, this = alpha*this. - void scale(const int & /* alpha */) { - XPETRA_MONITOR("EpetraIntMultiVectorT::scale"); - TEUCHOS_TEST_FOR_EXCEPTION(1, Xpetra::Exceptions::NotImplemented, "TODO"); - } - - //! Scale the current values of a multi-vector, this[j] = alpha[j]*this[j]. - void scale(Teuchos::ArrayView /* alpha */) { - XPETRA_MONITOR("EpetraIntMultiVectorT::scale"); - TEUCHOS_TEST_FOR_EXCEPTION(1, Xpetra::Exceptions::NotImplemented, "TODO"); - } - - //! Update multi-vector values with scaled values of A, this = beta*this + alpha*A. - void update(const int & /* alpha */, const MultiVector & /* A */, const int & /* beta */) { - XPETRA_MONITOR("EpetraIntMultiVectorT::update"); - - // XPETRA_DYNAMIC_CAST(const EpetraMultiVectorT, A, eA, "This Xpetra::EpetraMultiVectorT method only accept Xpetra::EpetraMultiVectorT as input arguments."); - TEUCHOS_TEST_FOR_EXCEPTION(1, Xpetra::Exceptions::NotImplemented, "TODO"); - } - - //! Update multi-vector with scaled values of A and B, this = gamma*this + alpha*A + beta*B. - void update(const int & /* alpha */, const MultiVector & /* A */, const int & /* beta */, const MultiVector & /* B */, const int & /* gamma */) { - XPETRA_MONITOR("EpetraIntMultiVectorT::update"); - - // XPETRA_DYNAMIC_CAST(const EpetraMultiVectorT, A, eA, "This Xpetra::EpetraMultiVectorT method only accept Xpetra::EpetraMultiVectorT as input arguments."); - // XPETRA_DYNAMIC_CAST(const EpetraMultiVectorT, B, eB, "This Xpetra::EpetraMultiVectorT method only accept Xpetra::EpetraMultiVectorT as input arguments."); - TEUCHOS_TEST_FOR_EXCEPTION(1, Xpetra::Exceptions::NotImplemented, "TODO"); - } - - //! Compute 1-norm of each vector in multi-vector. - void norm1(const Teuchos::ArrayView::magnitudeType> & /* norms */) const { - XPETRA_MONITOR("EpetraIntMultiVectorT::norm1"); - TEUCHOS_TEST_FOR_EXCEPTION(1, Xpetra::Exceptions::NotImplemented, "TODO"); - } - - //! Compute 2-norm of each vector in multi-vector. - void norm2(const Teuchos::ArrayView::magnitudeType> & /* norms */) const { - XPETRA_MONITOR("EpetraIntMultiVectorT::norm2"); - TEUCHOS_TEST_FOR_EXCEPTION(1, Xpetra::Exceptions::NotImplemented, "TODO"); - } - - //! Compute Inf-norm of each vector in multi-vector. - void normInf(const Teuchos::ArrayView::magnitudeType> & /* norms */) const { - XPETRA_MONITOR("EpetraIntMultiVectorT::normInf"); - TEUCHOS_TEST_FOR_EXCEPTION(1, Xpetra::Exceptions::NotImplemented, "TODO"); - } - - //! Compute mean (average) value of each vector in multi-vector. - void meanValue(const Teuchos::ArrayView & /* means */) const { - XPETRA_MONITOR("EpetraIntMultiVectorT::meanValue"); - TEUCHOS_TEST_FOR_EXCEPTION(1, Xpetra::Exceptions::NotImplemented, "TODO"); - } - - //! Compute max value of each vector in multi-vector. - void maxValue(const Teuchos::ArrayView & /* maxs */) const { - XPETRA_MONITOR("EpetraIntMultiVectorT::maxValue"); - TEUCHOS_TEST_FOR_EXCEPTION(1, Xpetra::Exceptions::NotImplemented, "TODO"); - } - - //! Matrix-Matrix multiplication, this = beta*this + alpha*op(A)*op(B). - void multiply(Teuchos::ETransp /* transA */, Teuchos::ETransp /* transB */, const int & /* alpha */, const MultiVector & /* A */, const MultiVector & /* B */, const int & /* beta */) { - XPETRA_MONITOR("EpetraIntMultiVectorT::multiply"); - TEUCHOS_TEST_FOR_EXCEPTION(1, Xpetra::Exceptions::NotImplemented, "Not available in Epetra"); - } - - //! Element-wise multiply of a Vector A with a EpetraMultiVector B. - void elementWiseMultiply(int /* scalarAB */, const Vector & /* A */, const MultiVector & /* B */, int /* scalarThis */) { - XPETRA_MONITOR("EpetraIntMultiVectorT::elementWiseMultiply"); - TEUCHOS_TEST_FOR_EXCEPTION(1, Xpetra::Exceptions::NotImplemented, "Xpetra_EpetraIntMultiVector: elementWiseMultiply not implemented because Epetra_IntMultiVector does not support this operation"); - } - - //@} - - //! @name Post-construction modification routines - //@{ - - //! Replace value, using global (row) index. - void replaceGlobalValue(GlobalOrdinal globalRow, size_t vectorIndex, const Scalar &value) { - vec_->ReplaceGlobalValue(globalRow, vectorIndex, value); - } - - //! Add value to existing value, using global (row) index. - void sumIntoGlobalValue(GlobalOrdinal globalRow, size_t vectorIndex, const Scalar &value) { - vec_->SumIntoGlobalValue(globalRow, vectorIndex, value); - } - - //! Replace value, using local (row) index. - void replaceLocalValue(LocalOrdinal myRow, size_t vectorIndex, const Scalar &value) { - vec_->ReplaceMyValue(myRow, vectorIndex, value); - } - - //! Add value to existing value, using local (row) index. - void sumIntoLocalValue(LocalOrdinal myRow, size_t vectorIndex, const Scalar &value) { - vec_->SumIntoMyValue(myRow, vectorIndex, value); - } - - //@} - - //! @name Attribute access functions - //@{ - - //! Returns the number of vectors in the multi-vector. - size_t getNumVectors() const { - return vec_->NumVectors(); - } - - //! Returns the local vector length on the calling processor of vectors in the multi-vector. - size_t getLocalLength() const { - return vec_->MyLength(); - } - - //! Returns the global vector length of vectors in the multi-vector. - global_size_t getGlobalLength() const { return vec_->GlobalLength64(); } - - //! Checks to see if the local length, number of vectors and size of Scalar type match - bool isSameSize(const MultiVector &vec) const { - XPETRA_MONITOR("EpetraIntMultiVectorT::isSameSize"); - auto vv = toEpetra(vec); - return ((getLocalLength() == Teuchos::as(vv.MyLength())) && - (getNumVectors() == Teuchos::as(vv.NumVectors()))); - } - - //@} - - //! @name Overridden from Teuchos::Describable - //@{ - - //! Return a simple one-line description of this object. - std::string description() const { - XPETRA_MONITOR("EpetraIntMultiVectorT::description"); - - // This implementation come from Epetra_Vector_def.hpp (without modification) - std::ostringstream oss; - oss << Teuchos::Describable::description(); - oss << "{length=" << this->getGlobalLength() - << "}"; - return oss.str(); - } - - //! Print the object with some verbosity level to an FancyOStream object. - void describe(Teuchos::FancyOStream &out, const Teuchos::EVerbosityLevel verbLevel = Teuchos::Describable::verbLevel_default) const { - XPETRA_MONITOR("EpetraIntMultiVectorT::describe"); - - // This implementation come from Tpetra_Vector_def.hpp (without modification) // JG: true? - using std::endl; - using std::setw; - using Teuchos::VERB_DEFAULT; - using Teuchos::VERB_EXTREME; - using Teuchos::VERB_HIGH; - using Teuchos::VERB_LOW; - using Teuchos::VERB_MEDIUM; - using Teuchos::VERB_NONE; - - if (verbLevel > Teuchos::VERB_NONE) - vec_->Print(out); - } - - //@} - - RCP getEpetra_IntMultiVector() const { return vec_; } - - const RCP > getComm() const { - TEUCHOS_TEST_FOR_EXCEPTION(1, Xpetra::Exceptions::NotImplemented, "TODO getComm Epetra MultiVector not implemented"); - } - - // Implementing DistObject - Teuchos::RCP > getMap() const { - RCP map = rcp(new Epetra_BlockMap(vec_->Map())); - return rcp(new Xpetra::EpetraMapT(map)); - } - - void doImport(const DistObject &source, - const Import &importer, CombineMode CM) { - XPETRA_MONITOR("EpetraIntMultiVectorT::doImport"); - - XPETRA_DYNAMIC_CAST(const EpetraIntMultiVectorT, source, tSource, "Xpetra::EpetraIntMultiVectorT::doImport only accept Xpetra::EpetraIntMultiVectorT as input arguments."); - XPETRA_DYNAMIC_CAST(const EpetraImportT, importer, tImporter, "Xpetra::EpetraIntMultiVectorT::doImport only accept Xpetra::EpetraImportT as input arguments."); - - const Epetra_IntMultiVector &v = *tSource.getEpetra_IntMultiVector(); - int err = vec_->Import(v, *tImporter.getEpetra_Import(), toEpetra(CM)); - TEUCHOS_TEST_FOR_EXCEPTION(err != 0, std::runtime_error, "Catch error code returned by Epetra."); - } - - void doExport(const DistObject &dest, - const Import &importer, CombineMode CM) { - XPETRA_MONITOR("EpetraIntMultiVectorT::doExport"); - - XPETRA_DYNAMIC_CAST(const EpetraIntMultiVectorT, dest, tDest, "Xpetra::EpetraIntMultiVectorT::doImport only accept Xpetra::EpetraIntMultiVectorT as input arguments."); - XPETRA_DYNAMIC_CAST(const EpetraImportT, importer, tImporter, "Xpetra::EpetraIntMultiVectorT::doImport only accept Xpetra::EpetraImportT as input arguments."); - - const Epetra_IntMultiVector &v = *tDest.getEpetra_IntMultiVector(); - int err = vec_->Import(v, *tImporter.getEpetra_Import(), toEpetra(CM)); - TEUCHOS_TEST_FOR_EXCEPTION(err != 0, std::runtime_error, "Catch error code returned by Epetra."); - } - - void doImport(const DistObject &source, - const Export &exporter, CombineMode CM) { - XPETRA_MONITOR("EpetraIntMultiVectorT::doImport"); - - XPETRA_DYNAMIC_CAST(const EpetraIntMultiVectorT, source, tSource, "Xpetra::EpetraIntMultiVectorT::doImport only accept Xpetra::EpetraIntMultiVectorT as input arguments."); - XPETRA_DYNAMIC_CAST(const EpetraExportT, exporter, tExporter, "Xpetra::EpetraIntMultiVectorT::doImport only accept Xpetra::EpetraImportT as input arguments."); - - const Epetra_IntMultiVector &v = *tSource.getEpetra_IntMultiVector(); - int err = vec_->Import(v, *tExporter.getEpetra_Export(), toEpetra(CM)); - TEUCHOS_TEST_FOR_EXCEPTION(err != 0, std::runtime_error, "Catch error code returned by Epetra."); - } - - void doExport(const DistObject &dest, - const Export &exporter, CombineMode CM) { - XPETRA_MONITOR("EpetraIntMultiVectorT::doExport"); - - XPETRA_DYNAMIC_CAST(const EpetraIntMultiVectorT, dest, tDest, "Xpetra::EpetraIntMultiVectorT::doImport only accept Xpetra::EpetraIntMultiVectorT as input arguments."); - XPETRA_DYNAMIC_CAST(const EpetraExportT, exporter, tExporter, "Xpetra::EpetraIntMultiVectorT::doImport only accept Xpetra::EpetraImportT as input arguments."); - - const Epetra_IntMultiVector &v = *tDest.getEpetra_IntMultiVector(); - int err = vec_->Export(v, *tExporter.getEpetra_Export(), toEpetra(CM)); - TEUCHOS_TEST_FOR_EXCEPTION(err != 0, std::runtime_error, "Catch error code returned by Epetra."); - } - - void replaceMap(const RCP > &map) { - XPETRA_MONITOR("EpetraIntMultiVectorT::replaceMap"); - int err = 0; - if (!map.is_null()) { - err = this->getEpetra_IntMultiVector()->ReplaceMap(toEpetra(map)); - - } else { - // Replace map with a dummy map to avoid potential hangs later - Epetra_SerialComm SComm; - Epetra_Map NewMap((GlobalOrdinal)vec_->MyLength(), (GlobalOrdinal)vec_->Map().IndexBase64(), SComm); - err = this->getEpetra_IntMultiVector()->ReplaceMap(NewMap); - } - TEUCHOS_TEST_FOR_EXCEPTION(err != 0, std::runtime_error, "Catch error code returned by Epetra."); - } - - protected: - /// \brief Implementation of the assignment operator (operator=); - /// does a deep copy. - virtual void - assign(const MultiVector &rhs) { - typedef EpetraIntMultiVectorT this_type; - const this_type *rhsPtr = dynamic_cast(&rhs); - TEUCHOS_TEST_FOR_EXCEPTION( - rhsPtr == NULL, std::invalid_argument, - "Xpetra::MultiVector::operator=: " - "The left-hand side (LHS) of the assignment has a different type than " - "the right-hand side (RHS). The LHS has type Xpetra::EpetraIntMultiVectorT " - "(which means it wraps an Epetra_IntMultiVector), but the RHS has some " - "other type. This probably means that the RHS wraps either an " - "Tpetra::MultiVector, or an Epetra_MultiVector. Xpetra::MultiVector " - "does not currently implement assignment from a Tpetra object to an " - "Epetra object, though this could be added with sufficient interest."); - - RCP rhsImpl = rhsPtr->getEpetra_IntMultiVector(); - RCP lhsImpl = this->getEpetra_IntMultiVector(); - - TEUCHOS_TEST_FOR_EXCEPTION( - rhsImpl.is_null(), std::logic_error, - "Xpetra::MultiVector::operator= " - "(in Xpetra::EpetraIntMultiVectorT::assign): *this (the right-hand side of " - "the assignment) has a null RCP inside. Please " - "report this bug to the Xpetra developers."); - TEUCHOS_TEST_FOR_EXCEPTION( - lhsImpl.is_null(), std::logic_error, - "Xpetra::MultiVector::operator= " - "(in Xpetra::EpetraIntMultiVectorT::assign): The left-hand side of the " - "assignment has a null RCP inside. Please report " - "this bug to the Xpetra developers."); - - // Epetra_IntMultiVector's assignment operator does a deep copy. - *lhsImpl = *rhsImpl; - } - - private: - //! The Epetra_IntMultiVector which this class wraps. - RCP vec_; -}; -#endif - -// specialization on GO=long long and Node=Serial -#ifndef XPETRA_EPETRA_NO_64BIT_GLOBAL_INDICES -template <> -class EpetraIntMultiVectorT - : public virtual MultiVector { - typedef int Scalar; - typedef int LocalOrdinal; - typedef long long GlobalOrdinal; - typedef EpetraNode Node; - - public: - //! @name Constructor/Destructor Methods - //@{ - - //! Sets all vector entries to zero. - EpetraIntMultiVectorT(const Teuchos::RCP > &map, size_t NumVectors, bool zeroOut = true) { - vec_ = rcp(new Epetra_IntMultiVector(toEpetra(map), NumVectors, zeroOut)); - } - - //! MultiVector copy constructor. - EpetraIntMultiVectorT(const MultiVector &source) { - vec_ = rcp(new Epetra_IntMultiVector(toEpetra(source))); - } - - //! Set multi-vector values from array of pointers using Teuchos memory management classes. (copy). - EpetraIntMultiVectorT(const Teuchos::RCP > & /* map */, const Teuchos::ArrayView > & /* ArrayOfPtrs */, size_t /* NumVectors */) { - TEUCHOS_TEST_FOR_EXCEPTION(true, Xpetra::Exceptions::RuntimeError, - "Xpetra::EpetraIntMultiVector only available for GO=int or GO=long long with EpetraNode (Serial or OpenMP depending on configuration)"); - } - - //! Destructor. - ~EpetraIntMultiVectorT(){}; - - //@} - - //! @name Post-construction modification routines - //@{ - - //! Initialize all values in a multi-vector with specified value. - void putScalar(const int &value) { - int ierr = 0; - ierr = vec_->PutScalar(value); - TEUCHOS_TEST_FOR_EXCEPTION(ierr != 0, Xpetra::Exceptions::RuntimeError, "Epetra_IntMultiVector::PutScalar returns a non zero error."); - } - - //! Set multi-vector values to random numbers. - void randomize(bool /* bUseXpetraImplementation */ = true) { - XPETRA_MONITOR("EpetraIntMultiVectorT::randomize"); - TEUCHOS_TEST_FOR_EXCEPTION(1, Xpetra::Exceptions::NotImplemented, "Xpetra::EpetraIntMultiVectorT::randomize(): Functionnality not available in Epetra"); - } - - //! Set multi-vector values to random numbers. - void randomize(const Scalar &minVal, const Scalar &maxVal, bool bUseXpetraImplementation = true) { - XPETRA_MONITOR("EpetraIntMultiVectorT::randomize"); - TEUCHOS_TEST_FOR_EXCEPTION(1, Xpetra::Exceptions::NotImplemented, "Xpetra::EpetraIntMultiVectorT::randomize(): Functionnality not available in Epetra"); - } - - //! Set seed for Random function. - /** Note: this method does not exist in Tpetra interface. Added for MueLu. */ - void setSeed(unsigned int /* seed */) { - XPETRA_MONITOR("EpetraIntMultiVectorT::setSeed"); - TEUCHOS_TEST_FOR_EXCEPTION(1, Xpetra::Exceptions::NotImplemented, "Xpetra::EpetraIntMultiVectorT::setSeed(): Functionnality not available in Epetra"); - } - - //@} - - //! @name Data Copy and View get methods - //@{ - - //! Return a Vector which is a const view of column j. - Teuchos::RCP > getVector(size_t /* j */) const { - TEUCHOS_TEST_FOR_EXCEPTION(1, Xpetra::Exceptions::NotImplemented, "TODO"); - } - - //! Return a Vector which is a nonconst view of column j. - Teuchos::RCP > getVectorNonConst(size_t /* j */) { - TEUCHOS_TEST_FOR_EXCEPTION(1, Xpetra::Exceptions::NotImplemented, "TODO"); - } - - //! Const Local vector access function. - //! View of the local values in a particular vector of this multi-vector. - Teuchos::ArrayRCP getData(size_t j) const { - XPETRA_MONITOR("EpetraIntMultiVectorT::getData"); - - int **arrayOfPointers; - vec_->ExtractView(&arrayOfPointers); - int *data = arrayOfPointers[j]; - int localLength = vec_->MyLength(); - - return ArrayRCP(data, 0, localLength, false); // not ownership - } - - //! Local vector access function. - //! View of the local values in a particular vector of this multi-vector. - Teuchos::ArrayRCP getDataNonConst(size_t j) { - XPETRA_MONITOR("EpetraIntMultiVectorT::getDataNonConst"); - - int **arrayOfPointers; - vec_->ExtractView(&arrayOfPointers); - int *data = arrayOfPointers[j]; - int localLength = vec_->MyLength(); - - return ArrayRCP(data, 0, localLength, false); // not ownership - } - - //@} - - //! @name Mathematical methods - //@{ - //! Computes dot product of each corresponding pair of vectors, dots[i] = this[i].dot(A[i]) - void dot(const MultiVector & /* A */, - const Teuchos::ArrayView & /* dots */) const { - XPETRA_MONITOR("EpetraIntMultiVectorT::dot"); - - // XPETRA_DYNAMIC_CAST(const EpetraMultiVectorT, A, eA, "This Xpetra::EpetraMultiVectorT method only accept Xpetra::EpetraMultiVectorT as input arguments."); - TEUCHOS_TEST_FOR_EXCEPTION(1, Xpetra::Exceptions::NotImplemented, "TODO"); - } - - //! Puts element-wise absolute values of input Multi-vector in target: A = abs(this) - void abs(const MultiVector & /* A */) { - XPETRA_MONITOR("EpetraIntMultiVectorT::abs"); - TEUCHOS_TEST_FOR_EXCEPTION(1, Xpetra::Exceptions::NotImplemented, - "This function is not available in Epetra_IntMultiVector"); - } - - //! Puts element-wise reciprocal values of input Multi-vector in target, this(i,j) = 1/A(i,j). - void reciprocal(const MultiVector & /* A */) { - XPETRA_MONITOR("EpetraIntMultiVectorT::reciprocal"); - TEUCHOS_TEST_FOR_EXCEPTION(1, Xpetra::Exceptions::NotImplemented, - "This function is not implemented in Epetra_IntMultiVector"); - } - - //! Scale the current values of a multi-vector, this = alpha*this. - void scale(const int & /* alpha */) { - XPETRA_MONITOR("EpetraIntMultiVectorT::scale"); - TEUCHOS_TEST_FOR_EXCEPTION(1, Xpetra::Exceptions::NotImplemented, "TODO"); - } - - //! Scale the current values of a multi-vector, this[j] = alpha[j]*this[j]. - void scale(Teuchos::ArrayView /* alpha */) { - XPETRA_MONITOR("EpetraIntMultiVectorT::scale"); - TEUCHOS_TEST_FOR_EXCEPTION(1, Xpetra::Exceptions::NotImplemented, "TODO"); - } - - //! Update multi-vector values with scaled values of A, this = beta*this + alpha*A. - void update(const int & /* alpha */, const MultiVector & /* A */, const int & /* beta */) { - XPETRA_MONITOR("EpetraIntMultiVectorT::update"); - - // XPETRA_DYNAMIC_CAST(const EpetraMultiVectorT, A, eA, "This Xpetra::EpetraMultiVectorT method only accept Xpetra::EpetraMultiVectorT as input arguments."); - TEUCHOS_TEST_FOR_EXCEPTION(1, Xpetra::Exceptions::NotImplemented, "TODO"); - } - - //! Update multi-vector with scaled values of A and B, this = gamma*this + alpha*A + beta*B. - void update(const int & /* alpha */, const MultiVector & /* A */, const int & /* beta */, const MultiVector & /* B */, const int & /* gamma */) { - XPETRA_MONITOR("EpetraIntMultiVectorT::update"); - - // XPETRA_DYNAMIC_CAST(const EpetraMultiVectorT, A, eA, "This Xpetra::EpetraMultiVectorT method only accept Xpetra::EpetraMultiVectorT as input arguments."); - // XPETRA_DYNAMIC_CAST(const EpetraMultiVectorT, B, eB, "This Xpetra::EpetraMultiVectorT method only accept Xpetra::EpetraMultiVectorT as input arguments."); - TEUCHOS_TEST_FOR_EXCEPTION(1, Xpetra::Exceptions::NotImplemented, "TODO"); - } - - //! Compute 1-norm of each vector in multi-vector. - void norm1(const Teuchos::ArrayView::magnitudeType> & /* norms */) const { - XPETRA_MONITOR("EpetraIntMultiVectorT::norm1"); - TEUCHOS_TEST_FOR_EXCEPTION(1, Xpetra::Exceptions::NotImplemented, "TODO"); - } - - //! Compute 2-norm of each vector in multi-vector. - void norm2(const Teuchos::ArrayView::magnitudeType> & /* norms */) const { - XPETRA_MONITOR("EpetraIntMultiVectorT::norm2"); - TEUCHOS_TEST_FOR_EXCEPTION(1, Xpetra::Exceptions::NotImplemented, "TODO"); - } - - //! Compute Inf-norm of each vector in multi-vector. - void normInf(const Teuchos::ArrayView::magnitudeType> & /* norms */) const { - XPETRA_MONITOR("EpetraIntMultiVectorT::normInf"); - TEUCHOS_TEST_FOR_EXCEPTION(1, Xpetra::Exceptions::NotImplemented, "TODO"); - } - - //! Compute mean (average) value of each vector in multi-vector. - void meanValue(const Teuchos::ArrayView & /* means */) const { - XPETRA_MONITOR("EpetraIntMultiVectorT::meanValue"); - TEUCHOS_TEST_FOR_EXCEPTION(1, Xpetra::Exceptions::NotImplemented, "TODO"); - } - - //! Compute max value of each vector in multi-vector. - void maxValue(const Teuchos::ArrayView & /* maxs */) const { - XPETRA_MONITOR("EpetraIntMultiVectorT::maxValue"); - TEUCHOS_TEST_FOR_EXCEPTION(1, Xpetra::Exceptions::NotImplemented, "TODO"); - } - - //! Matrix-Matrix multiplication, this = beta*this + alpha*op(A)*op(B). - void multiply(Teuchos::ETransp /* transA */, Teuchos::ETransp /* transB */, const int & /* alpha */, const MultiVector & /* A */, const MultiVector & /* B */, const int & /* beta */) { - XPETRA_MONITOR("EpetraIntMultiVectorT::multiply"); - TEUCHOS_TEST_FOR_EXCEPTION(1, Xpetra::Exceptions::NotImplemented, "Not available in Epetra"); - } - - //! Element-wise multiply of a Vector A with a EpetraMultiVector B. - void elementWiseMultiply(int /* scalarAB */, const Vector & /* A */, const MultiVector & /* B */, int /* scalarThis */) { - XPETRA_MONITOR("EpetraIntMultiVectorT::elementWiseMultiply"); - TEUCHOS_TEST_FOR_EXCEPTION(1, Xpetra::Exceptions::NotImplemented, "Xpetra_EpetraIntMultiVector: elementWiseMultiply not implemented because Epetra_IntMultiVector does not support this operation"); - } - - //@} - - //! @name Post-construction modification routines - //@{ - - //! Replace value, using global (row) index. - void replaceGlobalValue(GlobalOrdinal globalRow, size_t vectorIndex, const Scalar &value) { - vec_->ReplaceGlobalValue(globalRow, vectorIndex, value); - } - - //! Add value to existing value, using global (row) index. - void sumIntoGlobalValue(GlobalOrdinal globalRow, size_t vectorIndex, const Scalar &value) { - vec_->SumIntoGlobalValue(globalRow, vectorIndex, value); - } - - //! Replace value, using local (row) index. - void replaceLocalValue(LocalOrdinal myRow, size_t vectorIndex, const Scalar &value) { - vec_->ReplaceMyValue(myRow, vectorIndex, value); - } - - //! Add value to existing value, using local (row) index. - void sumIntoLocalValue(LocalOrdinal myRow, size_t vectorIndex, const Scalar &value) { - vec_->SumIntoMyValue(myRow, vectorIndex, value); - } - - //@} - - //! @name Attribute access functions - //@{ - - //! Returns the number of vectors in the multi-vector. - size_t getNumVectors() const { - return vec_->NumVectors(); - } - - //! Returns the local vector length on the calling processor of vectors in the multi-vector. - size_t getLocalLength() const { return vec_->MyLength(); } - - //! Returns the global vector length of vectors in the multi-vector. - global_size_t getGlobalLength() const { return vec_->GlobalLength64(); } - - //! Checks to see if the local length, number of vectors and size of Scalar type match - bool isSameSize(const MultiVector &vec) const { - XPETRA_MONITOR("EpetraIntMultiVectorT::isSameSize"); - auto vv = toEpetra(vec); - return ((getLocalLength() == Teuchos::as(vv.MyLength())) && - (getNumVectors() == Teuchos::as(vv.NumVectors()))); - } - //@} - - //! @name Overridden from Teuchos::Describable - //@{ - - //! Return a simple one-line description of this object. - std::string description() const { - XPETRA_MONITOR("EpetraIntMultiVectorT::description"); - - // This implementation come from Epetra_Vector_def.hpp (without modification) - std::ostringstream oss; - oss << Teuchos::Describable::description(); - oss << "{length=" << this->getGlobalLength() - << "}"; - return oss.str(); - } - - //! Print the object with some verbosity level to an FancyOStream object. - void describe(Teuchos::FancyOStream &out, const Teuchos::EVerbosityLevel verbLevel = Teuchos::Describable::verbLevel_default) const { - XPETRA_MONITOR("EpetraIntMultiVectorT::describe"); - - // This implementation come from Tpetra_Vector_def.hpp (without modification) // JG: true? - using std::endl; - using std::setw; - using Teuchos::VERB_DEFAULT; - using Teuchos::VERB_EXTREME; - using Teuchos::VERB_HIGH; - using Teuchos::VERB_LOW; - using Teuchos::VERB_MEDIUM; - using Teuchos::VERB_NONE; - - if (verbLevel > Teuchos::VERB_NONE) - vec_->Print(out); - } - - //@} - - RCP getEpetra_IntMultiVector() const { return vec_; } - - const RCP > getComm() const { - TEUCHOS_TEST_FOR_EXCEPTION(1, Xpetra::Exceptions::NotImplemented, "TODO getComm Epetra MultiVector not implemented"); - } - - // Implementing DistObject - Teuchos::RCP > getMap() const { - RCP map = rcp(new Epetra_BlockMap(vec_->Map())); - return rcp(new Xpetra::EpetraMapT(map)); - } - - void doImport(const DistObject &source, - const Import &importer, CombineMode CM) { - XPETRA_MONITOR("EpetraIntMultiVectorT::doImport"); - - XPETRA_DYNAMIC_CAST(const EpetraIntMultiVectorT, source, tSource, "Xpetra::EpetraIntMultiVectorT::doImport only accept Xpetra::EpetraIntMultiVectorT as input arguments."); - XPETRA_DYNAMIC_CAST(const EpetraImportT, importer, tImporter, "Xpetra::EpetraIntMultiVectorT::doImport only accept Xpetra::EpetraImportT as input arguments."); - - const Epetra_IntMultiVector &v = *tSource.getEpetra_IntMultiVector(); - int err = vec_->Import(v, *tImporter.getEpetra_Import(), toEpetra(CM)); - TEUCHOS_TEST_FOR_EXCEPTION(err != 0, std::runtime_error, "Catch error code returned by Epetra."); - } - - void doExport(const DistObject &dest, - const Import &importer, CombineMode CM) { - XPETRA_MONITOR("EpetraIntMultiVectorT::doExport"); - - XPETRA_DYNAMIC_CAST(const EpetraIntMultiVectorT, dest, tDest, "Xpetra::EpetraIntMultiVectorT::doImport only accept Xpetra::EpetraIntMultiVectorT as input arguments."); - XPETRA_DYNAMIC_CAST(const EpetraImportT, importer, tImporter, "Xpetra::EpetraIntMultiVectorT::doImport only accept Xpetra::EpetraImportT as input arguments."); - - const Epetra_IntMultiVector &v = *tDest.getEpetra_IntMultiVector(); - int err = vec_->Import(v, *tImporter.getEpetra_Import(), toEpetra(CM)); - TEUCHOS_TEST_FOR_EXCEPTION(err != 0, std::runtime_error, "Catch error code returned by Epetra."); - } - - void doImport(const DistObject &source, - const Export &exporter, CombineMode CM) { - XPETRA_MONITOR("EpetraIntMultiVectorT::doImport"); - - XPETRA_DYNAMIC_CAST(const EpetraIntMultiVectorT, source, tSource, "Xpetra::EpetraIntMultiVectorT::doImport only accept Xpetra::EpetraIntMultiVectorT as input arguments."); - XPETRA_DYNAMIC_CAST(const EpetraExportT, exporter, tExporter, "Xpetra::EpetraIntMultiVectorT::doImport only accept Xpetra::EpetraImportT as input arguments."); - - const Epetra_IntMultiVector &v = *tSource.getEpetra_IntMultiVector(); - int err = vec_->Import(v, *tExporter.getEpetra_Export(), toEpetra(CM)); - TEUCHOS_TEST_FOR_EXCEPTION(err != 0, std::runtime_error, "Catch error code returned by Epetra."); - } - - void doExport(const DistObject &dest, - const Export &exporter, CombineMode CM) { - XPETRA_MONITOR("EpetraIntMultiVectorT::doExport"); - - XPETRA_DYNAMIC_CAST(const EpetraIntMultiVectorT, dest, tDest, "Xpetra::EpetraIntMultiVectorT::doImport only accept Xpetra::EpetraIntMultiVectorT as input arguments."); - XPETRA_DYNAMIC_CAST(const EpetraExportT, exporter, tExporter, "Xpetra::EpetraIntMultiVectorT::doImport only accept Xpetra::EpetraImportT as input arguments."); - - const Epetra_IntMultiVector &v = *tDest.getEpetra_IntMultiVector(); - int err = vec_->Export(v, *tExporter.getEpetra_Export(), toEpetra(CM)); - TEUCHOS_TEST_FOR_EXCEPTION(err != 0, std::runtime_error, "Catch error code returned by Epetra."); - } - - void replaceMap(const RCP > &map) { - XPETRA_MONITOR("EpetraIntMultiVectorT::replaceMap"); - int err = 0; - if (!map.is_null()) { - err = this->getEpetra_IntMultiVector()->ReplaceMap(toEpetra(map)); - - } else { - // Replace map with a dummy map to avoid potential hangs later - Epetra_SerialComm SComm; - Epetra_Map NewMap((GlobalOrdinal)vec_->MyLength(), (GlobalOrdinal)vec_->Map().IndexBase64(), SComm); - err = this->getEpetra_IntMultiVector()->ReplaceMap(NewMap); - } - TEUCHOS_TEST_FOR_EXCEPTION(err != 0, std::runtime_error, "Catch error code returned by Epetra."); - } - - protected: - /// \brief Implementation of the assignment operator (operator=); - /// does a deep copy. - virtual void - assign(const MultiVector &rhs) { - typedef EpetraIntMultiVectorT this_type; - const this_type *rhsPtr = dynamic_cast(&rhs); - TEUCHOS_TEST_FOR_EXCEPTION( - rhsPtr == NULL, std::invalid_argument, - "Xpetra::MultiVector::operator=: " - "The left-hand side (LHS) of the assignment has a different type than " - "the right-hand side (RHS). The LHS has type Xpetra::EpetraIntMultiVectorT " - "(which means it wraps an Epetra_IntMultiVector), but the RHS has some " - "other type. This probably means that the RHS wraps either an " - "Tpetra::MultiVector, or an Epetra_MultiVector. Xpetra::MultiVector " - "does not currently implement assignment from a Tpetra object to an " - "Epetra object, though this could be added with sufficient interest."); - - RCP rhsImpl = rhsPtr->getEpetra_IntMultiVector(); - RCP lhsImpl = this->getEpetra_IntMultiVector(); - - TEUCHOS_TEST_FOR_EXCEPTION( - rhsImpl.is_null(), std::logic_error, - "Xpetra::MultiVector::operator= " - "(in Xpetra::EpetraIntMultiVectorT::assign): *this (the right-hand side of " - "the assignment) has a null RCP inside. Please " - "report this bug to the Xpetra developers."); - TEUCHOS_TEST_FOR_EXCEPTION( - lhsImpl.is_null(), std::logic_error, - "Xpetra::MultiVector::operator= " - "(in Xpetra::EpetraIntMultiVectorT::assign): The left-hand side of the " - "assignment has a null RCP inside. Please report " - "this bug to the Xpetra developers."); - - // Epetra_IntMultiVector's assignment operator does a deep copy. - *lhsImpl = *rhsImpl; - } - - private: - //! The Epetra_IntMultiVector which this class wraps. - RCP vec_; -}; -#endif - -} // namespace Xpetra - -#endif // XPETRA_EPETRAINTMULTIVECTOR_HPP diff --git a/packages/xpetra/src/MultiVector/Xpetra_EpetraMultiVector.cpp b/packages/xpetra/src/MultiVector/Xpetra_EpetraMultiVector.cpp deleted file mode 100644 index 673449366fa0..000000000000 --- a/packages/xpetra/src/MultiVector/Xpetra_EpetraMultiVector.cpp +++ /dev/null @@ -1,172 +0,0 @@ -// @HEADER -// ***************************************************************************** -// Xpetra: A linear algebra interface package -// -// Copyright 2012 NTESS and the Xpetra contributors. -// SPDX-License-Identifier: BSD-3-Clause -// ***************************************************************************** -// @HEADER - -#include "Xpetra_EpetraMultiVector.hpp" - -#include "Xpetra_EpetraImport.hpp" -#include "Xpetra_EpetraExport.hpp" -#include "Xpetra_Exceptions.hpp" - -#include "Xpetra_EpetraVector.hpp" - -#include "Epetra_SerialComm.h" - -namespace Xpetra { - -// specialization for GO=int and NO=EpetraNode -#ifndef XPETRA_EPETRA_NO_32BIT_GLOBAL_INDICES -Teuchos::RCP > EpetraMultiVectorT::getVector(size_t j) const { - XPETRA_MONITOR("EpetraMultiVectorT::getVector"); - return rcp(new Xpetra::EpetraVectorT(vec_, j)); // See constructor EpetraVectorT(const RCP &mv, size_t j) for more info -} - -//! Return a Vector which is a nonconst view of column j. -Teuchos::RCP > EpetraMultiVectorT::getVectorNonConst(size_t j) { - XPETRA_MONITOR("EpetraMultiVectorT::getVector"); - return rcp(new EpetraVectorT(vec_, j)); // See constructor EpetraVectorT(const RCP &mv, size_t j) for more info -} -#endif - -// specialization for GO=long long and NO=EpetraNode -#ifndef XPETRA_EPETRA_NO_64BIT_GLOBAL_INDICES -Teuchos::RCP > EpetraMultiVectorT::getVector(size_t j) const { - XPETRA_MONITOR("EpetraMultiVectorT::getVector"); - return rcp(new Xpetra::EpetraVectorT(vec_, j)); // See constructor EpetraVectorT(const RCP &mv, size_t j) for more info -} - -//! Return a Vector which is a nonconst view of column j. -Teuchos::RCP > EpetraMultiVectorT::getVectorNonConst(size_t j) { - XPETRA_MONITOR("EpetraMultiVectorT::getVector"); - return rcp(new EpetraVectorT(vec_, j)); // See constructor EpetraVectorT(const RCP &mv, size_t j) for more info -} -#endif - -// TODO: move that elsewhere -template -const Epetra_MultiVector &toEpetra(const MultiVector &x) { - XPETRA_DYNAMIC_CAST(const EpetraMultiVectorT, x, tX, "toEpetra"); - return *tX.getEpetra_MultiVector(); -} - -template -Epetra_MultiVector &toEpetra(MultiVector &x) { - XPETRA_DYNAMIC_CAST(EpetraMultiVectorT, x, tX, "toEpetra"); - return *tX.getEpetra_MultiVector(); -} -// - -template -RCP > toXpetra(RCP vec) { - if (!vec.is_null()) - return rcp(new EpetraMultiVectorT(vec)); - - return Teuchos::null; -} - -#ifndef XPETRA_EPETRA_NO_32BIT_GLOBAL_INDICES -#ifdef HAVE_XPETRA_TPETRA -#include "TpetraCore_config.h" -#if ((defined(EPETRA_HAVE_OMP) && !defined(HAVE_TPETRA_INST_OPENMP)) || \ - (!defined(EPETRA_HAVE_OMP) && !defined(HAVE_TPETRA_INST_SERIAL))) -template class EpetraMultiVectorT; -template RCP > toXpetra(RCP); -template Epetra_MultiVector &toEpetra(MultiVector &); -template const Epetra_MultiVector &toEpetra(const MultiVector &); -#endif - -#ifdef HAVE_TPETRA_INST_SERIAL -template class EpetraMultiVectorT; -template RCP > toXpetra(RCP); -template Epetra_MultiVector &toEpetra(MultiVector &); -template const Epetra_MultiVector &toEpetra(const MultiVector &); -#endif -#ifdef HAVE_TPETRA_INST_PTHREAD -template class EpetraMultiVectorT; -template RCP > toXpetra(RCP); -template Epetra_MultiVector &toEpetra(MultiVector &); -template const Epetra_MultiVector &toEpetra(const MultiVector &); -#endif -#ifdef HAVE_TPETRA_INST_OPENMP -template class EpetraMultiVectorT; -template RCP > toXpetra(RCP); -template Epetra_MultiVector &toEpetra(MultiVector &); -template const Epetra_MultiVector &toEpetra(const MultiVector &); -#endif -#ifdef HAVE_TPETRA_INST_CUDA -template class EpetraMultiVectorT; -template RCP > toXpetra(RCP); -template Epetra_MultiVector &toEpetra(MultiVector &); -template const Epetra_MultiVector &toEpetra(const MultiVector &); -#endif -#ifdef HAVE_TPETRA_INST_HIP -template class EpetraMultiVectorT; -template RCP > toXpetra(RCP); -template Epetra_MultiVector &toEpetra(MultiVector &); -template const Epetra_MultiVector &toEpetra(const MultiVector &); -#endif -#else // Tpetra is disabled -typedef Xpetra::EpetraNode default_node_type; -template class EpetraMultiVectorT; -template RCP > toXpetra(RCP); -template Epetra_MultiVector &toEpetra(MultiVector &); -template const Epetra_MultiVector &toEpetra(const MultiVector &); -#endif -#endif - -#ifndef XPETRA_EPETRA_NO_64BIT_GLOBAL_INDICES -#ifdef HAVE_XPETRA_TPETRA -#include "TpetraCore_config.h" -#if ((defined(EPETRA_HAVE_OMP) && !defined(HAVE_TPETRA_INST_OPENMP)) || \ - (!defined(EPETRA_HAVE_OMP) && !defined(HAVE_TPETRA_INST_SERIAL))) -template class EpetraMultiVectorT; -template RCP > toXpetra(RCP); -template Epetra_MultiVector &toEpetra(MultiVector &); -template const Epetra_MultiVector &toEpetra(const MultiVector &); -#endif - -#ifdef HAVE_TPETRA_INST_SERIAL -template class EpetraMultiVectorT; -template RCP > toXpetra(RCP); -template Epetra_MultiVector &toEpetra(MultiVector &); -template const Epetra_MultiVector &toEpetra(const MultiVector &); -#endif -#ifdef HAVE_TPETRA_INST_PTHREAD -template class EpetraMultiVectorT; -template RCP > toXpetra(RCP); -template Epetra_MultiVector &toEpetra(MultiVector &); -template const Epetra_MultiVector &toEpetra(const MultiVector &); -#endif -#ifdef HAVE_TPETRA_INST_OPENMP -template class EpetraMultiVectorT; -template RCP > toXpetra(RCP); -template Epetra_MultiVector &toEpetra(MultiVector &); -template const Epetra_MultiVector &toEpetra(const MultiVector &); -#endif -#ifdef HAVE_TPETRA_INST_CUDA -template class EpetraMultiVectorT; -template RCP > toXpetra(RCP); -template Epetra_MultiVector &toEpetra(MultiVector &); -template const Epetra_MultiVector &toEpetra(const MultiVector &); -#endif -#ifdef HAVE_TPETRA_INST_HIP -template class EpetraMultiVectorT; -template RCP > toXpetra(RCP); -template Epetra_MultiVector &toEpetra(MultiVector &); -template const Epetra_MultiVector &toEpetra(const MultiVector &); -#endif -#else // Tpetra is disabled -typedef Xpetra::EpetraNode default_node_type; -template class EpetraMultiVectorT; -template RCP > toXpetra(RCP); -template Epetra_MultiVector &toEpetra(MultiVector &); -template const Epetra_MultiVector &toEpetra(const MultiVector &); -#endif -#endif - -} // namespace Xpetra diff --git a/packages/xpetra/src/MultiVector/Xpetra_EpetraMultiVector.hpp b/packages/xpetra/src/MultiVector/Xpetra_EpetraMultiVector.hpp deleted file mode 100644 index e0d8ee0aa502..000000000000 --- a/packages/xpetra/src/MultiVector/Xpetra_EpetraMultiVector.hpp +++ /dev/null @@ -1,1189 +0,0 @@ -// @HEADER -// ***************************************************************************** -// Xpetra: A linear algebra interface package -// -// Copyright 2012 NTESS and the Xpetra contributors. -// SPDX-License-Identifier: BSD-3-Clause -// ***************************************************************************** -// @HEADER - -#ifndef XPETRA_EPETRAMULTIVECTOR_HPP -#define XPETRA_EPETRAMULTIVECTOR_HPP - -/* this file is automatically generated - do not edit (see script/epetra.py) */ - -#include -#include - -#include "Xpetra_EpetraConfigDefs.hpp" - -#include "Xpetra_MultiVector.hpp" -#include "Xpetra_Vector.hpp" - -#include "Xpetra_EpetraMap.hpp" -#include "Xpetra_EpetraExport.hpp" -#include "Xpetra_Utils.hpp" -#include "Xpetra_EpetraUtils.hpp" -#include "Xpetra_EpetraImport.hpp" -#include "Xpetra_Exceptions.hpp" -#include "Epetra_SerialComm.h" - -#include -#include - -#if defined(XPETRA_ENABLE_DEPRECATED_CODE) -#ifdef __GNUC__ -#if defined(Xpetra_SHOW_DEPRECATED_WARNINGS) -#warning "The header file Trilinos/packages/xpetra/src/MultiVector/Xpetra_EpetraMultiVector.hpp is deprecated." -#endif -#endif -#else -#error "The header file Trilinos/packages/xpetra/src/MultiVector/Xpetra_EpetraMultiVector.hpp is deprecated." -#endif - -namespace Xpetra { - -// TODO: move that elsewhere -template -XPETRA_DEPRECATED const Epetra_MultiVector &toEpetra(const MultiVector &); -template -XPETRA_DEPRECATED Epetra_MultiVector &toEpetra(MultiVector &); -template -XPETRA_DEPRECATED RCP > toXpetra(RCP vec); - -// we need this forward declaration -#ifndef DOXYGEN_SHOULD_SKIP_THIS -template -class EpetraVectorT; -#endif - -template -class XPETRA_DEPRECATED EpetraMultiVectorT - : public virtual MultiVector { - typedef double Scalar; - typedef int LocalOrdinal; - typedef EpetraGlobalOrdinal GlobalOrdinal; - - public: - //! @name Constructor/Destructor Methods - //@{ - - //! Basic MultiVector constuctor. - EpetraMultiVectorT(const Teuchos::RCP > &map, size_t NumVectors, bool zeroOut = true) { - TEUCHOS_TEST_FOR_EXCEPTION(true, Xpetra::Exceptions::RuntimeError, - "Xpetra::EpetraMultiVector only available for GO=int or GO=long long with EpetraNode (Serial or OpenMP depending on configuration)"); - } - - //! MultiVector copy constructor. - EpetraMultiVectorT(const MultiVector &source, const Teuchos::DataAccess copyOrView = Teuchos::Copy) { - TEUCHOS_TEST_FOR_EXCEPTION(true, Xpetra::Exceptions::RuntimeError, - "Xpetra::EpetraMultiVector only available for GO=int or GO=long long with EpetraNode (Serial or OpenMP depending on configuration)"); - } - - //! Set multi-vector values from array of pointers using Teuchos memory management classes. (copy). - EpetraMultiVectorT(const Teuchos::RCP > &map, const Teuchos::ArrayView > &ArrayOfPtrs, size_t NumVectors) { - TEUCHOS_TEST_FOR_EXCEPTION(true, Xpetra::Exceptions::RuntimeError, - "Xpetra::EpetraMultiVector only available for GO=int or GO=long long with EpetraNode (Serial or OpenMP depending on configuration)"); - } - - //! MultiVector destructor. - virtual ~EpetraMultiVectorT() {} - - //@} - - //! @name Post-construction modification routines - //@{ - - //! Replace value, using global (row) index. - void replaceGlobalValue(GlobalOrdinal globalRow, size_t vectorIndex, const Scalar &value) {} - - //! Add value to existing value, using global (row) index. - void sumIntoGlobalValue(GlobalOrdinal globalRow, size_t vectorIndex, const Scalar &value) {} - - //! Replace value, using local (row) index. - void replaceLocalValue(LocalOrdinal myRow, size_t vectorIndex, const Scalar &value) {} - - //! Add value to existing value, using local (row) index. - void sumIntoLocalValue(LocalOrdinal myRow, size_t vectorIndex, const Scalar &value) {} - - //! Set all values in the multivector with the given value. - void putScalar(const Scalar &value) {} - - //@} - - //! @name Data copy and view methods - //@{ - - //! Return a Vector which is a const view of column j. - Teuchos::RCP > getVector(size_t j) const { - return Teuchos::null; - } - - //! Return a Vector which is a nonconst view of column j. - Teuchos::RCP > getVectorNonConst(size_t j) { - return Teuchos::null; - } - - //! Const view of the local values in a particular vector of this multivector. - Teuchos::ArrayRCP getData(size_t j) const { - return ArrayRCP(); - } - - //! View of the local values in a particular vector of this multivector. - Teuchos::ArrayRCP getDataNonConst(size_t j) { - return ArrayRCP(); - } - - //@} - - //! @name Mathematical methods - //@{ - - //! Compute the dot product of each corresponding pair of vectors (columns) in A and B. - void dot(const MultiVector &A, const Teuchos::ArrayView &dots) const {} - - //! Put element-wise absolute values of input Multi-vector in target: A = abs(this). - void abs(const MultiVector &A) {} - - //! Put element-wise reciprocal values of input Multi-vector in target, this(i,j) = 1/A(i,j). - void reciprocal(const MultiVector &A) {} - - //! Scale in place: this = alpha*this. - void scale(const Scalar &alpha) {} - - //! Scale the current values of a multi-vector, this[j] = alpha[j]*this[j]. - void scale(Teuchos::ArrayView alpha) {} - - //! Update: this = beta*this + alpha*A. - void update(const Scalar &alpha, const MultiVector &A, const Scalar &beta) {} - - //! Update: this = gamma*this + alpha*A + beta*B. - void update(const Scalar &alpha, const MultiVector &A, const Scalar &beta, const MultiVector &B, const Scalar &gamma) {} - - //! Compute 1-norm of each vector in multi-vector. - void norm1(const Teuchos::ArrayView::magnitudeType> &norms) const {} - - //! - void norm2(const Teuchos::ArrayView::magnitudeType> &norms) const {} - - //! Compute Inf-norm of each vector in multi-vector. - void normInf(const Teuchos::ArrayView::magnitudeType> &norms) const {} - - //! Compute mean (average) value of each vector in multi-vector. The outcome of this routine is undefined for non-floating point scalar types (e.g., int). - void meanValue(const Teuchos::ArrayView &means) const {} - - //! Matrix-matrix multiplication: this = beta*this + alpha*op(A)*op(B). - void multiply(Teuchos::ETransp transA, Teuchos::ETransp transB, const Scalar &alpha, const MultiVector &A, const MultiVector &B, const Scalar &beta) {} - - //! Multiply a Vector A elementwise by a MultiVector B. - void elementWiseMultiply(Scalar scalarAB, const Vector &A, const MultiVector &B, Scalar scalarThis) {} - - //@} - - //! @name Attribute access functions - //@{ - - //! Number of columns in the multivector. - size_t getNumVectors() const { return 0; } - - //! Local number of rows on the calling process. - size_t getLocalLength() const { return 0; } - - //! Global number of rows in the multivector. - global_size_t getGlobalLength() const { return 0; } - - // \brief Checks to see if the local length, number of vectors and size of Scalar type match - bool isSameSize(const MultiVector &vec) const { return false; } - - //@} - - //! @name Overridden from Teuchos::Describable - //@{ - - //! A simple one-line description of this object. - std::string description() const { return std::string(""); } - - //! Print the object with the given verbosity level to a FancyOStream. - void describe(Teuchos::FancyOStream &out, const Teuchos::EVerbosityLevel verbLevel = Teuchos::Describable::verbLevel_default) const {} - - //@} - - //! Set multi-vector values to random numbers. - void randomize(bool bUseXpetraImplementation = false) {} - - //! Set multi-vector values to random numbers. - void randomize(const Scalar &minVal, const Scalar &maxVal, bool bUseXpetraImplementation = false) {} - - //! Implements DistObject interface - //{@ - - //! Access function for the Tpetra::Map this DistObject was constructed with. - Teuchos::RCP > getMap() const { return Teuchos::null; } - - //! Import. - void doImport(const DistObject &source, const Import &importer, CombineMode CM) {} - - //! Export. - void doExport(const DistObject &dest, const Import &importer, CombineMode CM) {} - - //! Import (using an Exporter). - void doImport(const DistObject &source, const Export &exporter, CombineMode CM) {} - - //! Export (using an Importer). - void doExport(const DistObject &dest, const Export &exporter, CombineMode CM) {} - - //! Replace the underlying Map in place. - void replaceMap(const Teuchos::RCP > &map) {} - - //@} - - //! @name Xpetra specific - //@{ - - //! EpetraMultiVectorT constructor to wrap a Epetra_MultiVector object - EpetraMultiVectorT(const RCP &vec) { // TODO removed const - TEUCHOS_TEST_FOR_EXCEPTION(true, Xpetra::Exceptions::RuntimeError, - "Xpetra::EpetraMultiVector only available for GO=int or GO=long long with EpetraNode (Serial or OpenMP depending on configuration)"); - } - - //! Get the underlying Epetra multivector - RCP getEpetra_MultiVector() const { return Teuchos::null; } - - //! Set seed for Random function. - void setSeed(unsigned int seed) {} - - //@} - - protected: - /// \brief Implementation of the assignment operator (operator=); - /// does a deep copy. - virtual void - assign(const MultiVector &rhs) {} - -}; // EpetraMultiVectorT class - -// specialization on GO=int and Node=EpetraNode -#ifndef XPETRA_EPETRA_NO_32BIT_GLOBAL_INDICES -template <> -class EpetraMultiVectorT - : public virtual MultiVector { - typedef double Scalar; - typedef int LocalOrdinal; - typedef int GlobalOrdinal; - typedef EpetraNode Node; - - public: - //! @name Constructor/Destructor Methods - //@{ - - //! Basic MultiVector constuctor. - EpetraMultiVectorT(const Teuchos::RCP > &map, size_t NumVectors, bool zeroOut = true) - : vec_(Teuchos::rcp(new Epetra_MultiVector(toEpetra(map), Teuchos::as(NumVectors), zeroOut))) {} - - //! MultiVector copy constructor. - EpetraMultiVectorT(const MultiVector &source, const Teuchos::DataAccess copyOrView = Teuchos::Copy) { - if (copyOrView == Teuchos::Copy) - vec_ = Teuchos::rcp(new Epetra_MultiVector(toEpetra(source))); - else { - int *indices = new int[source.getNumVectors()]; - for (size_t i = 0; i < source.getNumVectors(); i++) - indices[i] = i; - vec_ = Teuchos::rcp(new Epetra_MultiVector(View, toEpetra(source), indices, source.getNumVectors())); - delete[] indices; - } - } - - //! Set multi-vector values from array of pointers using Teuchos memory management classes. (copy). - EpetraMultiVectorT(const Teuchos::RCP > &map, const Teuchos::ArrayView > &ArrayOfPtrs, size_t NumVectors) { - // TODO: input argument 'NumVectors' is not necessary in both Xpetra and Tpetra interface. Should it be removed? - - const std::string tfecfFuncName("MultiVector(ArrayOfPtrs)"); - TEUCHOS_TEST_FOR_EXCEPTION_CLASS_FUNC(NumVectors < 1 || NumVectors != Teuchos::as(ArrayOfPtrs.size()), std::runtime_error, - ": ArrayOfPtrs.size() must be strictly positive and as large as ArrayOfPtrs."); - -#ifdef HAVE_XPETRA_DEBUG - // This cannot be tested by Epetra itself - { - size_t localLength = map->getLocalNumElements(); - for (int j = 0; j < ArrayOfPtrs.size(); j++) { - TEUCHOS_TEST_FOR_EXCEPTION_CLASS_FUNC(Teuchos::as(ArrayOfPtrs[j].size()) != localLength, std::runtime_error, - ": ArrayOfPtrs[" << j << "].size() (== " << ArrayOfPtrs[j].size() << ") is not equal to getLocalLength() (== " << localLength); - } - } -#endif - - // Convert Teuchos::ArrayView< const Teuchos::ArrayView< const Scalar > > to double** - Array arrayOfRawPtrs(ArrayOfPtrs.size()); - for (int i = 0; i < ArrayOfPtrs.size(); i++) { - arrayOfRawPtrs[i] = ArrayOfPtrs[i].getRawPtr(); - } - double **rawArrayOfRawPtrs = const_cast(arrayOfRawPtrs.getRawPtr()); // This const_cast should be fine, because Epetra_DataAccess=Copy. - - vec_ = Teuchos::rcp(new Epetra_MultiVector(Copy, toEpetra(map), rawArrayOfRawPtrs, static_cast(NumVectors))); - } - - //! MultiVector destructor. - virtual ~EpetraMultiVectorT() {} - - //@} - - //! @name Post-construction modification routines - //@{ - - //! Replace value, using global (row) index. - void replaceGlobalValue(GlobalOrdinal globalRow, size_t vectorIndex, const Scalar &value) { - XPETRA_MONITOR("EpetraMultiVectorT::replaceGlobalValue"); - vec_->ReplaceGlobalValue(globalRow, Teuchos::as(vectorIndex), value); - } - - //! Add value to existing value, using global (row) index. - void sumIntoGlobalValue(GlobalOrdinal globalRow, size_t vectorIndex, const Scalar &value) { - XPETRA_MONITOR("EpetraMultiVectorT::sumIntoGlobalValue"); - vec_->SumIntoGlobalValue(globalRow, Teuchos::as(vectorIndex), value); - } - - //! Replace value, using local (row) index. - void replaceLocalValue(LocalOrdinal myRow, size_t vectorIndex, const Scalar &value) { - XPETRA_MONITOR("EpetraMultiVectorT::replaceLocalValue"); - vec_->ReplaceMyValue(myRow, Teuchos::as(vectorIndex), value); - } - - //! Add value to existing value, using local (row) index. - void sumIntoLocalValue(LocalOrdinal myRow, size_t vectorIndex, const Scalar &value) { - XPETRA_MONITOR("EpetraMultiVectorT::sumIntoLocalValue"); - vec_->SumIntoMyValue(myRow, Teuchos::as(vectorIndex), value); - } - - //! Set all values in the multivector with the given value. - void putScalar(const Scalar &value) { - XPETRA_MONITOR("EpetraMultiVectorT::putScalar"); - vec_->PutScalar(value); - } - - //@} - - //! @name Data copy and view methods - //@{ - - //! Return a Vector which is a const view of column j. - Teuchos::RCP > getVector(size_t j) const; - - //! Return a Vector which is a nonconst view of column j. - Teuchos::RCP > getVectorNonConst(size_t j); - - //! Const view of the local values in a particular vector of this multivector. - Teuchos::ArrayRCP getData(size_t j) const { - XPETRA_MONITOR("EpetraMultiVectorT::getData"); - - double **arrayOfPointers; - - vec_->ExtractView(&arrayOfPointers); - - double *data = arrayOfPointers[j]; - int localLength = vec_->MyLength(); - - return ArrayRCP(data, 0, localLength, false); // no ownership - } - - //! View of the local values in a particular vector of this multivector. - Teuchos::ArrayRCP getDataNonConst(size_t j) { - XPETRA_MONITOR("EpetraMultiVectorT::getDataNonConst"); - - double **arrayOfPointers; - - vec_->ExtractView(&arrayOfPointers); - - double *data = arrayOfPointers[j]; - int localLength = vec_->MyLength(); - - return ArrayRCP(data, 0, localLength, false); // no ownership - } - - //@} - - //! @name Mathematical methods - //@{ - - //! Compute the dot product of each corresponding pair of vectors (columns) in A and B. - void dot(const MultiVector &A, const Teuchos::ArrayView &dots) const { - XPETRA_MONITOR("EpetraMultiVectorT::dot"); - - XPETRA_DYNAMIC_CAST(const EpetraMultiVectorT, A, eA, "This Xpetra::EpetraMultiVectorT method only accept Xpetra::EpetraMultiVectorT as input arguments."); - vec_->Dot(*eA.getEpetra_MultiVector(), dots.getRawPtr()); - } - - //! Put element-wise absolute values of input Multi-vector in target: A = abs(this). - void abs(const MultiVector &A) { - XPETRA_MONITOR("EpetraMultiVectorT::abs"); - vec_->Abs(toEpetra(A)); - } - - //! Put element-wise reciprocal values of input Multi-vector in target, this(i,j) = 1/A(i,j). - void reciprocal(const MultiVector &A) { - XPETRA_MONITOR("EpetraMultiVectorT::reciprocal"); - vec_->Reciprocal(toEpetra(A)); - } - - //! Scale in place: this = alpha*this. - void scale(const Scalar &alpha) { - XPETRA_MONITOR("EpetraMultiVectorT::scale"); - vec_->Scale(alpha); - } - - //! Scale the current values of a multi-vector, this[j] = alpha[j]*this[j]. - void scale(Teuchos::ArrayView alpha) { - XPETRA_MONITOR("EpetraMultiVectorT::scale"); - // Epetra, unlike Tpetra, doesn't implement this version of - // scale(). Deal with this by scaling one column at a time. - const size_t numVecs = this->getNumVectors(); - for (size_t j = 0; j < numVecs; ++j) { - Epetra_Vector *v = (*vec_)(j); - v->Scale(alpha[j]); - } - } - - //! Update: this = beta*this + alpha*A. - void update(const Scalar &alpha, const MultiVector &A, const Scalar &beta) { - XPETRA_MONITOR("EpetraMultiVectorT::update"); - vec_->Update(alpha, toEpetra(A), beta); - } - - //! Update: this = gamma*this + alpha*A + beta*B. - void update(const Scalar &alpha, const MultiVector &A, const Scalar &beta, const MultiVector &B, const Scalar &gamma) { - XPETRA_MONITOR("EpetraMultiVectorT::update"); - vec_->Update(alpha, toEpetra(A), beta, toEpetra(B), gamma); - } - - //! Compute 1-norm of each vector in multi-vector. - void norm1(const Teuchos::ArrayView::magnitudeType> &norms) const { - XPETRA_MONITOR("EpetraMultiVectorT::norm1"); - vec_->Norm1(norms.getRawPtr()); - } - - //! - void norm2(const Teuchos::ArrayView::magnitudeType> &norms) const { - XPETRA_MONITOR("EpetraMultiVectorT::norm2"); - vec_->Norm2(norms.getRawPtr()); - } - - //! Compute Inf-norm of each vector in multi-vector. - void normInf(const Teuchos::ArrayView::magnitudeType> &norms) const { - XPETRA_MONITOR("EpetraMultiVectorT::normInf"); - vec_->NormInf(norms.getRawPtr()); - } - - //! Compute mean (average) value of each vector in multi-vector. The outcome of this routine is undefined for non-floating point scalar types (e.g., int). - void meanValue(const Teuchos::ArrayView &means) const { - XPETRA_MONITOR("EpetraMultiVectorT::meanValue"); - vec_->MeanValue(means.getRawPtr()); - } // TODO: modify ArrayView size ?? - - //! Matrix-matrix multiplication: this = beta*this + alpha*op(A)*op(B). - void multiply(Teuchos::ETransp transA, Teuchos::ETransp transB, const Scalar &alpha, const MultiVector &A, const MultiVector &B, const Scalar &beta) { - XPETRA_MONITOR("EpetraMultiVectorT::multiply"); - vec_->Multiply(toEpetra(transA), toEpetra(transB), alpha, toEpetra(A), toEpetra(B), beta); - } - - //! Multiply a Vector A elementwise by a MultiVector B. - void elementWiseMultiply(Scalar scalarAB, const Vector &A, const MultiVector &B, Scalar scalarThis) { - XPETRA_MONITOR("EpetraMultiVectorT::elementWiseMultiply"); - vec_->Multiply(scalarAB, toEpetra(A), toEpetra(B), scalarThis); - } - - //@} - - //! @name Attribute access functions - //@{ - - //! Number of columns in the multivector. - size_t getNumVectors() const { - XPETRA_MONITOR("EpetraMultiVectorT::getNumVectors"); - return vec_->NumVectors(); - } - - //! Local number of rows on the calling process. - size_t getLocalLength() const { - XPETRA_MONITOR("EpetraMultiVectorT::getLocalLength"); - return vec_->MyLength(); - } - - //! Global number of rows in the multivector. - global_size_t getGlobalLength() const { - XPETRA_MONITOR("EpetraMultiVectorT::getGlobalLength"); - return vec_->GlobalLength64(); - } - - //! Checks to see if the local length, number of vectors and size of Scalar type match - bool isSameSize(const MultiVector &vec) const { - XPETRA_MONITOR("EpetraMultiVectorT::isSameSize"); - auto vv = toEpetra(vec); - return ((vec_->MyLength() == vv.MyLength()) && (vec_->NumVectors() == vv.NumVectors())); - } - - //@} - - //! @name Overridden from Teuchos::Describable - //@{ - - //! A simple one-line description of this object. - std::string description() const { - XPETRA_MONITOR("EpetraMultiVectorT::description"); - TEUCHOS_TEST_FOR_EXCEPTION(1, Xpetra::Exceptions::NotImplemented, "TODO"); - TEUCHOS_UNREACHABLE_RETURN("TODO"); - } - - //! Print the object with the given verbosity level to a FancyOStream. - void describe(Teuchos::FancyOStream &out, const Teuchos::EVerbosityLevel /* verbLevel */ = Teuchos::Describable::verbLevel_default) const { - XPETRA_MONITOR("EpetraMultiVectorT::describe"); - vec_->Print(out); - } - - //@} - - //! Set multi-vector values to random numbers. - void randomize(bool bUseXpetraImplementation = false) { - XPETRA_MONITOR("EpetraMultiVectorT::randomize"); - - if (bUseXpetraImplementation) - Xpetra::MultiVector::Xpetra_randomize(); - else - vec_->Random(); - } - - //! Set multi-vector values to random numbers. - void randomize(const Scalar &minVal, const Scalar &maxVal, bool bUseXpetraImplementation = false) { - XPETRA_MONITOR("EpetraMultiVectorT::randomize"); - - if (bUseXpetraImplementation) - Xpetra::MultiVector::Xpetra_randomize(minVal, maxVal); - else { - vec_->Random(); - const size_t numVectors = getNumVectors(); - for (size_t i = 0; i < numVectors; i++) { - Teuchos::ArrayRCP datai = getDataNonConst(i); - - const size_t myLength = getLocalLength(); - for (size_t j = 0; j < myLength; j++) { - datai[j] = 0.5 * (maxVal - minVal) * datai[j] + 0.5 * (maxVal + minVal); - } - } - } - } - - //! Implements DistObject interface - //{@ - - //! Access function for the Tpetra::Map this DistObject was constructed with. - Teuchos::RCP > getMap() const { - XPETRA_MONITOR("EpetraMultiVectorT::getMap"); - return toXpetra(vec_->Map()); - } - - //! Import. - void doImport(const DistObject &source, const Import &importer, CombineMode CM) { - XPETRA_MONITOR("EpetraMultiVectorT::doImport"); - - XPETRA_DYNAMIC_CAST(const EpetraMultiVectorT, source, tSource, "Xpetra::EpetraMultiVectorT::doImport only accept Xpetra::EpetraMultiVectorT as input arguments."); - XPETRA_DYNAMIC_CAST(const EpetraImportT, importer, tImporter, "Xpetra::EpetraMultiVectorT::doImport only accept Xpetra::EpetraImportT as input arguments."); - - RCP v = tSource.getEpetra_MultiVector(); - int err = this->getEpetra_MultiVector()->Import(*v, *tImporter.getEpetra_Import(), toEpetra(CM)); - TEUCHOS_TEST_FOR_EXCEPTION(err != 0, std::runtime_error, "Catch error code returned by Epetra is " << err); - } - - //! Export. - void doExport(const DistObject &dest, const Import &importer, CombineMode CM) { - XPETRA_MONITOR("EpetraMultiVectorT::doExport"); - - XPETRA_DYNAMIC_CAST(const EpetraMultiVectorT, dest, tDest, "Xpetra::EpetraMultiVectorT::doImport only accept Xpetra::EpetraMultiVectorT as input arguments."); - XPETRA_DYNAMIC_CAST(const EpetraImportT, importer, tImporter, "Xpetra::EpetraMultiVectorT::doImport only accept Xpetra::EpetraImportT as input arguments."); - - RCP v = tDest.getEpetra_MultiVector(); - int err = this->getEpetra_MultiVector()->Export(*v, *tImporter.getEpetra_Import(), toEpetra(CM)); - TEUCHOS_TEST_FOR_EXCEPTION(err != 0, std::runtime_error, "Catch error code returned by Epetra."); - } - - //! Import (using an Exporter). - void doImport(const DistObject &source, const Export &exporter, CombineMode CM) { - XPETRA_MONITOR("EpetraMultiVectorT::doImport"); - - XPETRA_DYNAMIC_CAST(const EpetraMultiVectorT, source, tSource, "Xpetra::EpetraMultiVectorT::doImport only accept Xpetra::EpetraMultiVectorT as input arguments."); - XPETRA_DYNAMIC_CAST(const EpetraExportT, exporter, tExporter, "Xpetra::EpetraMultiVectorT::doImport only accept Xpetra::EpetraImportT as input arguments."); - - RCP v = tSource.getEpetra_MultiVector(); - int err = this->getEpetra_MultiVector()->Import(*v, *tExporter.getEpetra_Export(), toEpetra(CM)); - TEUCHOS_TEST_FOR_EXCEPTION(err != 0, std::runtime_error, "Catch error code returned by Epetra."); - } - - //! Export (using an Importer). - void doExport(const DistObject &dest, const Export &exporter, CombineMode CM) { - XPETRA_MONITOR("EpetraMultiVectorT::doExport"); - - XPETRA_DYNAMIC_CAST(const EpetraMultiVectorT, dest, tDest, "Xpetra::EpetraMultiVectorT::doImport only accept Xpetra::EpetraMultiVectorT as input arguments."); - XPETRA_DYNAMIC_CAST(const EpetraExportT, exporter, tExporter, "Xpetra::EpetraMultiVectorT::doImport only accept Xpetra::EpetraImportT as input arguments."); - - RCP v = tDest.getEpetra_MultiVector(); - int err = this->getEpetra_MultiVector()->Export(*v, *tExporter.getEpetra_Export(), toEpetra(CM)); - TEUCHOS_TEST_FOR_EXCEPTION(err != 0, std::runtime_error, "Catch error code returned by Epetra."); - } - - //! Replace the underlying Map in place. - void replaceMap(const Teuchos::RCP > &map) { - XPETRA_MONITOR("EpetraMultiVectorT::replaceMap"); - int err = 0; - if (!map.is_null()) { - err = this->getEpetra_MultiVector()->ReplaceMap(toEpetra(map)); - - } else { - // Replace map with a dummy map to avoid potential hangs later - Epetra_SerialComm SComm; - Epetra_Map NewMap((GlobalOrdinal)vec_->MyLength(), (GlobalOrdinal)vec_->Map().IndexBase64(), SComm); - err = this->getEpetra_MultiVector()->ReplaceMap(NewMap); - } - TEUCHOS_TEST_FOR_EXCEPTION(err != 0, std::runtime_error, "Catch error code returned by Epetra."); - } - - //@} - - //! @name Xpetra specific - //@{ - - //! EpetraMultiVectorT constructor to wrap a Epetra_MultiVector object - EpetraMultiVectorT(const RCP &vec) - : vec_(vec) {} // TODO removed const - - //! Get the underlying Epetra multivector - RCP getEpetra_MultiVector() const { return vec_; } - - //! Set seed for Random function. - void setSeed(unsigned int seed) { - XPETRA_MONITOR("EpetraMultiVectorT::seedrandom"); - - Teuchos::ScalarTraits::seedrandom(seed); - vec_->SetSeed(seed); - } - - typedef typename Xpetra::MultiVector::dual_view_type dual_view_type; - - typename dual_view_type::t_host_const_um getHostLocalView(Access::ReadOnlyStruct) const override { return getHostLocalView(Access::ReadWrite); } - - typename dual_view_type::t_dev_const_um getDeviceLocalView(Access::ReadOnlyStruct) const override { return getDeviceLocalView(Access::ReadWrite); } - - typename dual_view_type::t_host_um getHostLocalView(Access::OverwriteAllStruct) const override { return getHostLocalView(Access::ReadWrite); } - - typename dual_view_type::t_dev_um getDeviceLocalView(Access::OverwriteAllStruct) const override { return getDeviceLocalView(Access::ReadWrite); } - - typename dual_view_type::t_host_um getHostLocalView(Access::ReadWriteStruct) const override { - typedef Kokkos::View - epetra_view_type; - - // access Epetra multivector data - double *data = NULL; - int myLDA; - vec_->ExtractView(&data, &myLDA); - int localLength = vec_->MyLength(); - int numVectors = getNumVectors(); - - // create view - epetra_view_type test = epetra_view_type(data, localLength, numVectors); - typename dual_view_type::t_host_um ret = subview(test, Kokkos::ALL(), Kokkos::ALL()); - - return ret; - } - - typename dual_view_type::t_dev_um getDeviceLocalView(Access::ReadWriteStruct) const override { return getHostLocalView(Access::ReadWrite); } - - //@} - - protected: - /// \brief Implementation of the assignment operator (operator=); - /// does a deep copy. - virtual void - assign(const MultiVector &rhs) { - typedef EpetraMultiVectorT this_type; - const this_type *rhsPtr = dynamic_cast(&rhs); - TEUCHOS_TEST_FOR_EXCEPTION( - rhsPtr == NULL, std::invalid_argument, - "Xpetra::MultiVector::operator=: " - "The left-hand side (LHS) of the assignment has a different type than " - "the right-hand side (RHS). The LHS has type Xpetra::EpetraMultiVectorT " - "(which means it wraps an Epetra_MultiVector), but the RHS has some " - "other type. This probably means that the RHS wraps a Tpetra::Multi" - "Vector. Xpetra::MultiVector does not currently implement assignment " - "from a Tpetra object to an Epetra object, though this could be added " - "with sufficient interest."); - - RCP rhsImpl = rhsPtr->getEpetra_MultiVector(); - RCP lhsImpl = this->getEpetra_MultiVector(); - - TEUCHOS_TEST_FOR_EXCEPTION( - rhsImpl.is_null(), std::logic_error, - "Xpetra::MultiVector::operator= " - "(in Xpetra::EpetraMultiVectorT::assign): *this (the right-hand side of " - "the assignment) has a null RCP inside. Please " - "report this bug to the Xpetra developers."); - TEUCHOS_TEST_FOR_EXCEPTION( - lhsImpl.is_null(), std::logic_error, - "Xpetra::MultiVector::operator= " - "(in Xpetra::EpetraMultiVectorT::assign): The left-hand side of the " - "assignment has a null RCP inside. Please report " - "this bug to the Xpetra developers."); - - // Epetra_MultiVector's assignment operator does a deep copy. - *lhsImpl = *rhsImpl; - } - - private: - //! The Epetra_MultiVector which this class wraps. - RCP vec_; - -}; // EpetraMultiVectorT class (specialization on GO=int, NO=EpetraNode -#endif - -// specialization on GO=long long and EpetraNode -#ifndef XPETRA_EPETRA_NO_64BIT_GLOBAL_INDICES -template <> -class EpetraMultiVectorT - : public virtual MultiVector { - typedef double Scalar; - typedef int LocalOrdinal; - typedef long long GlobalOrdinal; - typedef EpetraNode Node; - - public: - //! @name Constructor/Destructor Methods - //@{ - - //! Basic MultiVector constuctor. - EpetraMultiVectorT(const Teuchos::RCP > &map, size_t NumVectors, bool zeroOut = true) - : vec_(Teuchos::rcp(new Epetra_MultiVector(toEpetra(map), Teuchos::as(NumVectors), zeroOut))) {} - - //! MultiVector copy constructor. - EpetraMultiVectorT(const MultiVector &source) - : vec_(Teuchos::rcp(new Epetra_MultiVector(toEpetra(source)))) {} - - //! Set multi-vector values from array of pointers using Teuchos memory management classes. (copy). - EpetraMultiVectorT(const Teuchos::RCP > &map, const Teuchos::ArrayView > &ArrayOfPtrs, size_t NumVectors) { - // TODO: input argument 'NumVectors' is not necessary in both Xpetra and Tpetra interface. Should it be removed? - - const std::string tfecfFuncName("MultiVector(ArrayOfPtrs)"); - TEUCHOS_TEST_FOR_EXCEPTION_CLASS_FUNC(NumVectors < 1 || NumVectors != Teuchos::as(ArrayOfPtrs.size()), std::runtime_error, - ": ArrayOfPtrs.size() must be strictly positive and as large as ArrayOfPtrs."); - -#ifdef HAVE_XPETRA_DEBUG - // This cannot be tested by Epetra itself - { - size_t localLength = map->getLocalNumElements(); - for (int j = 0; j < ArrayOfPtrs.size(); j++) { - TEUCHOS_TEST_FOR_EXCEPTION_CLASS_FUNC(Teuchos::as(ArrayOfPtrs[j].size()) != localLength, std::runtime_error, - ": ArrayOfPtrs[" << j << "].size() (== " << ArrayOfPtrs[j].size() << ") is not equal to getLocalLength() (== " << localLength); - } - } -#endif - - // Convert Teuchos::ArrayView< const Teuchos::ArrayView< const Scalar > > to double** - Array arrayOfRawPtrs(ArrayOfPtrs.size()); - for (int i = 0; i < ArrayOfPtrs.size(); i++) { - arrayOfRawPtrs[i] = ArrayOfPtrs[i].getRawPtr(); - } - double **rawArrayOfRawPtrs = const_cast(arrayOfRawPtrs.getRawPtr()); // This const_cast should be fine, because Epetra_DataAccess=Copy. - - vec_ = Teuchos::rcp(new Epetra_MultiVector(Copy, toEpetra(map), rawArrayOfRawPtrs, NumVectors)); - } - - //! MultiVector destructor. - virtual ~EpetraMultiVectorT() {} - - //@} - - //! @name Post-construction modification routines - //@{ - - //! Replace value, using global (row) index. - void replaceGlobalValue(GlobalOrdinal globalRow, size_t vectorIndex, const Scalar &value) { - XPETRA_MONITOR("EpetraMultiVectorT::replaceGlobalValue"); - vec_->ReplaceGlobalValue(globalRow, Teuchos::as(vectorIndex), value); - } - - //! Add value to existing value, using global (row) index. - void sumIntoGlobalValue(GlobalOrdinal globalRow, size_t vectorIndex, const Scalar &value) { - XPETRA_MONITOR("EpetraMultiVectorT::sumIntoGlobalValue"); - vec_->SumIntoGlobalValue(globalRow, Teuchos::as(vectorIndex), value); - } - - //! Replace value, using local (row) index. - void replaceLocalValue(LocalOrdinal myRow, size_t vectorIndex, const Scalar &value) { - XPETRA_MONITOR("EpetraMultiVectorT::replaceLocalValue"); - vec_->ReplaceMyValue(myRow, Teuchos::as(vectorIndex), value); - } - - //! Add value to existing value, using local (row) index. - void sumIntoLocalValue(LocalOrdinal myRow, size_t vectorIndex, const Scalar &value) { - XPETRA_MONITOR("EpetraMultiVectorT::sumIntoLocalValue"); - vec_->SumIntoMyValue(myRow, Teuchos::as(vectorIndex), value); - } - - //! Set all values in the multivector with the given value. - void putScalar(const Scalar &value) { - XPETRA_MONITOR("EpetraMultiVectorT::putScalar"); - vec_->PutScalar(value); - } - - //@} - - //! @name Data copy and view methods - //@{ - - //! Return a Vector which is a const view of column j. - Teuchos::RCP > getVector(size_t j) const; - - //! Return a Vector which is a nonconst view of column j. - Teuchos::RCP > getVectorNonConst(size_t j); - - //! Const view of the local values in a particular vector of this multivector. - Teuchos::ArrayRCP getData(size_t j) const { - XPETRA_MONITOR("EpetraMultiVectorT::getData"); - - double **arrayOfPointers; - - vec_->ExtractView(&arrayOfPointers); - - double *data = arrayOfPointers[j]; - int localLength = vec_->MyLength(); - - return ArrayRCP(data, 0, localLength, false); // no ownership - } - - //! View of the local values in a particular vector of this multivector. - Teuchos::ArrayRCP getDataNonConst(size_t j) { - XPETRA_MONITOR("EpetraMultiVectorT::getDataNonConst"); - - double **arrayOfPointers; - - vec_->ExtractView(&arrayOfPointers); - - double *data = arrayOfPointers[j]; - int localLength = vec_->MyLength(); - - return ArrayRCP(data, 0, localLength, false); // no ownership - } - - //@} - - //! @name Mathematical methods - //@{ - - //! Compute the dot product of each corresponding pair of vectors (columns) in A and B. - void dot(const MultiVector &A, const Teuchos::ArrayView &dots) const { - XPETRA_MONITOR("EpetraMultiVectorT::dot"); - - XPETRA_DYNAMIC_CAST(const EpetraMultiVectorT, A, eA, "This Xpetra::EpetraMultiVectorT method only accept Xpetra::EpetraMultiVectorT as input arguments."); - vec_->Dot(*eA.getEpetra_MultiVector(), dots.getRawPtr()); - } - - //! Put element-wise absolute values of input Multi-vector in target: A = abs(this). - void abs(const MultiVector &A) { - XPETRA_MONITOR("EpetraMultiVectorT::abs"); - vec_->Abs(toEpetra(A)); - } - - //! Put element-wise reciprocal values of input Multi-vector in target, this(i,j) = 1/A(i,j). - void reciprocal(const MultiVector &A) { - XPETRA_MONITOR("EpetraMultiVectorT::reciprocal"); - vec_->Reciprocal(toEpetra(A)); - } - - //! Scale in place: this = alpha*this. - void scale(const Scalar &alpha) { - XPETRA_MONITOR("EpetraMultiVectorT::scale"); - vec_->Scale(alpha); - } - - //! Scale the current values of a multi-vector, this[j] = alpha[j]*this[j]. - void scale(Teuchos::ArrayView alpha) { - XPETRA_MONITOR("EpetraMultiVectorT::scale"); - // Epetra, unlike Tpetra, doesn't implement this version of - // scale(). Deal with this by scaling one column at a time. - const size_t numVecs = this->getNumVectors(); - for (size_t j = 0; j < numVecs; ++j) { - Epetra_Vector *v = (*vec_)(j); - v->Scale(alpha[j]); - } - } - - //! Update: this = beta*this + alpha*A. - void update(const Scalar &alpha, const MultiVector &A, const Scalar &beta) { - XPETRA_MONITOR("EpetraMultiVectorT::update"); - vec_->Update(alpha, toEpetra(A), beta); - } - - //! Update: this = gamma*this + alpha*A + beta*B. - void update(const Scalar &alpha, const MultiVector &A, const Scalar &beta, const MultiVector &B, const Scalar &gamma) { - XPETRA_MONITOR("EpetraMultiVectorT::update"); - vec_->Update(alpha, toEpetra(A), beta, toEpetra(B), gamma); - } - - //! Compute 1-norm of each vector in multi-vector. - void norm1(const Teuchos::ArrayView::magnitudeType> &norms) const { - XPETRA_MONITOR("EpetraMultiVectorT::norm1"); - vec_->Norm1(norms.getRawPtr()); - } - - //! - void norm2(const Teuchos::ArrayView::magnitudeType> &norms) const { - XPETRA_MONITOR("EpetraMultiVectorT::norm2"); - vec_->Norm2(norms.getRawPtr()); - } - - //! Compute Inf-norm of each vector in multi-vector. - void normInf(const Teuchos::ArrayView::magnitudeType> &norms) const { - XPETRA_MONITOR("EpetraMultiVectorT::normInf"); - vec_->NormInf(norms.getRawPtr()); - } - - //! Compute mean (average) value of each vector in multi-vector. The outcome of this routine is undefined for non-floating point scalar types (e.g., int). - void meanValue(const Teuchos::ArrayView &means) const { - XPETRA_MONITOR("EpetraMultiVectorT::meanValue"); - vec_->MeanValue(means.getRawPtr()); - } // TODO: modify ArrayView size ?? - - //! Matrix-matrix multiplication: this = beta*this + alpha*op(A)*op(B). - void multiply(Teuchos::ETransp transA, Teuchos::ETransp transB, const Scalar &alpha, const MultiVector &A, const MultiVector &B, const Scalar &beta) { - XPETRA_MONITOR("EpetraMultiVectorT::multiply"); - vec_->Multiply(toEpetra(transA), toEpetra(transB), alpha, toEpetra(A), toEpetra(B), beta); - } - - //! Multiply a Vector A elementwise by a MultiVector B. - void elementWiseMultiply(Scalar scalarAB, const Vector &A, const MultiVector &B, Scalar scalarThis) { - XPETRA_MONITOR("EpetraMultiVectorT::elementWiseMultiply"); - vec_->Multiply(scalarAB, toEpetra(A), toEpetra(B), scalarThis); - } - - //@} - - //! @name Attribute access functions - //@{ - - //! Number of columns in the multivector. - size_t getNumVectors() const { - XPETRA_MONITOR("EpetraMultiVectorT::getNumVectors"); - return vec_->NumVectors(); - } - - //! Local number of rows on the calling process. - size_t getLocalLength() const { - XPETRA_MONITOR("EpetraMultiVectorT::getLocalLength"); - return vec_->MyLength(); - } - - //! Global number of rows in the multivector. - global_size_t getGlobalLength() const { - XPETRA_MONITOR("EpetraMultiVectorT::getGlobalLength"); - return vec_->GlobalLength64(); - } - - //! Checks to see if the local length, number of vectors and size of Scalar type match - bool isSameSize(const MultiVector &vec) const { - XPETRA_MONITOR("EpetraMultiVectorT::isSameSize"); - auto vv = toEpetra(vec); - return ((vec_->MyLength() == vv.MyLength()) && (vec_->NumVectors() == vv.NumVectors())); - } - - //@} - - //! @name Overridden from Teuchos::Describable - //@{ - - //! A simple one-line description of this object. - std::string description() const { - XPETRA_MONITOR("EpetraMultiVectorT::description"); - TEUCHOS_TEST_FOR_EXCEPTION(true, Xpetra::Exceptions::NotImplemented, "TODO"); - // return "TODO"; // unreachable - } - - //! Print the object with the given verbosity level to a FancyOStream. - void describe(Teuchos::FancyOStream &out, const Teuchos::EVerbosityLevel /* verbLevel */ = Teuchos::Describable::verbLevel_default) const { - XPETRA_MONITOR("EpetraMultiVectorT::describe"); - vec_->Print(out); - } - - //@} - - //! Set multi-vector values to random numbers. - void randomize(bool bUseXpetraImplementation = false) { - XPETRA_MONITOR("EpetraMultiVectorT::randomize"); - - if (bUseXpetraImplementation) - Xpetra::MultiVector::Xpetra_randomize(); - else - vec_->Random(); - } - - //! Set multi-vector values to random numbers. - void randomize(const Scalar &minVal, const Scalar &maxVal, bool bUseXpetraImplementation = false) { - XPETRA_MONITOR("EpetraMultiVectorT::randomize"); - - if (bUseXpetraImplementation) - Xpetra::MultiVector::Xpetra_randomize(minVal, maxVal); - else { - vec_->Random(); - const size_t numVectors = getNumVectors(); - for (size_t i = 0; i < numVectors; i++) { - Teuchos::ArrayRCP datai = getDataNonConst(i); - - const size_t myLength = getLocalLength(); - for (size_t j = 0; j < myLength; j++) { - datai[j] = 0.5 * (maxVal - minVal) * datai[j] + 0.5 * (maxVal + minVal); - } - } - } - } - - //! Implements DistObject interface - //{@ - - //! Access function for the Tpetra::Map this DistObject was constructed with. - Teuchos::RCP > getMap() const { - XPETRA_MONITOR("EpetraMultiVectorT::getMap"); - return toXpetra(vec_->Map()); - } - - //! Import. - void doImport(const DistObject &source, const Import &importer, CombineMode CM) { - XPETRA_MONITOR("EpetraMultiVectorT::doImport"); - - XPETRA_DYNAMIC_CAST(const EpetraMultiVectorT, source, tSource, "Xpetra::EpetraMultiVectorT::doImport only accept Xpetra::EpetraMultiVectorT as input arguments."); - XPETRA_DYNAMIC_CAST(const EpetraImportT, importer, tImporter, "Xpetra::EpetraMultiVectorT::doImport only accept Xpetra::EpetraImportT as input arguments."); - - RCP v = tSource.getEpetra_MultiVector(); - int err = this->getEpetra_MultiVector()->Import(*v, *tImporter.getEpetra_Import(), toEpetra(CM)); - TEUCHOS_TEST_FOR_EXCEPTION(err != 0, std::runtime_error, "Catch error code returned by Epetra is " << err); - } - - //! Export. - void doExport(const DistObject &dest, const Import &importer, CombineMode CM) { - XPETRA_MONITOR("EpetraMultiVectorT::doExport"); - - XPETRA_DYNAMIC_CAST(const EpetraMultiVectorT, dest, tDest, "Xpetra::EpetraMultiVectorT::doImport only accept Xpetra::EpetraMultiVectorT as input arguments."); - XPETRA_DYNAMIC_CAST(const EpetraImportT, importer, tImporter, "Xpetra::EpetraMultiVectorT::doImport only accept Xpetra::EpetraImportT as input arguments."); - - RCP v = tDest.getEpetra_MultiVector(); - int err = this->getEpetra_MultiVector()->Export(*v, *tImporter.getEpetra_Import(), toEpetra(CM)); - TEUCHOS_TEST_FOR_EXCEPTION(err != 0, std::runtime_error, "Catch error code returned by Epetra."); - } - - //! Import (using an Exporter). - void doImport(const DistObject &source, const Export &exporter, CombineMode CM) { - XPETRA_MONITOR("EpetraMultiVectorT::doImport"); - - XPETRA_DYNAMIC_CAST(const EpetraMultiVectorT, source, tSource, "Xpetra::EpetraMultiVectorT::doImport only accept Xpetra::EpetraMultiVectorT as input arguments."); - XPETRA_DYNAMIC_CAST(const EpetraExportT, exporter, tExporter, "Xpetra::EpetraMultiVectorT::doImport only accept Xpetra::EpetraImportT as input arguments."); - - RCP v = tSource.getEpetra_MultiVector(); - int err = this->getEpetra_MultiVector()->Import(*v, *tExporter.getEpetra_Export(), toEpetra(CM)); - TEUCHOS_TEST_FOR_EXCEPTION(err != 0, std::runtime_error, "Catch error code returned by Epetra."); - } - - //! Export (using an Importer). - void doExport(const DistObject &dest, const Export &exporter, CombineMode CM) { - XPETRA_MONITOR("EpetraMultiVectorT::doExport"); - - XPETRA_DYNAMIC_CAST(const EpetraMultiVectorT, dest, tDest, "Xpetra::EpetraMultiVectorT::doImport only accept Xpetra::EpetraMultiVectorT as input arguments."); - XPETRA_DYNAMIC_CAST(const EpetraExportT, exporter, tExporter, "Xpetra::EpetraMultiVectorT::doImport only accept Xpetra::EpetraImportT as input arguments."); - - RCP v = tDest.getEpetra_MultiVector(); - int err = this->getEpetra_MultiVector()->Export(*v, *tExporter.getEpetra_Export(), toEpetra(CM)); - TEUCHOS_TEST_FOR_EXCEPTION(err != 0, std::runtime_error, "Catch error code returned by Epetra."); - } - - //! Replace the underlying Map in place. - void replaceMap(const Teuchos::RCP > &map) { - XPETRA_MONITOR("EpetraMultiVectorT::replaceMap"); - int err = 0; - if (!map.is_null()) { - err = this->getEpetra_MultiVector()->ReplaceMap(toEpetra(map)); - - } else { - // Replace map with a dummy map to avoid potential hangs later - Epetra_SerialComm SComm; - Epetra_Map NewMap((GlobalOrdinal)vec_->MyLength(), (GlobalOrdinal)vec_->Map().IndexBase64(), SComm); - err = this->getEpetra_MultiVector()->ReplaceMap(NewMap); - } - TEUCHOS_TEST_FOR_EXCEPTION(err != 0, std::runtime_error, "Catch error code returned by Epetra."); - } - - //@} - - //! @name Xpetra specific - //@{ - - //! EpetraMultiVectorT constructor to wrap a Epetra_MultiVector object - EpetraMultiVectorT(const RCP &vec) - : vec_(vec) {} // TODO removed const - - //! Get the underlying Epetra multivector - RCP getEpetra_MultiVector() const { return vec_; } - - //! Set seed for Random function. - void setSeed(unsigned int seed) { - XPETRA_MONITOR("EpetraMultiVectorT::seedrandom"); - - Teuchos::ScalarTraits::seedrandom(seed); - vec_->SetSeed(seed); - } - - //@} - - protected: - /// \brief Implementation of the assignment operator (operator=); - /// does a deep copy. - virtual void - assign(const MultiVector &rhs) { - typedef EpetraMultiVectorT this_type; - const this_type *rhsPtr = dynamic_cast(&rhs); - TEUCHOS_TEST_FOR_EXCEPTION( - rhsPtr == NULL, std::invalid_argument, - "Xpetra::MultiVector::operator=: " - "The left-hand side (LHS) of the assignment has a different type than " - "the right-hand side (RHS). The LHS has type Xpetra::EpetraMultiVectorT " - "(which means it wraps an Epetra_MultiVector), but the RHS has some " - "other type. This probably means that the RHS wraps a Tpetra::Multi" - "Vector. Xpetra::MultiVector does not currently implement assignment " - "from a Tpetra object to an Epetra object, though this could be added " - "with sufficient interest."); - - RCP rhsImpl = rhsPtr->getEpetra_MultiVector(); - RCP lhsImpl = this->getEpetra_MultiVector(); - - TEUCHOS_TEST_FOR_EXCEPTION( - rhsImpl.is_null(), std::logic_error, - "Xpetra::MultiVector::operator= " - "(in Xpetra::EpetraMultiVectorT::assign): *this (the right-hand side of " - "the assignment) has a null RCP inside. Please " - "report this bug to the Xpetra developers."); - TEUCHOS_TEST_FOR_EXCEPTION( - lhsImpl.is_null(), std::logic_error, - "Xpetra::MultiVector::operator= " - "(in Xpetra::EpetraMultiVectorT::assign): The left-hand side of the " - "assignment has a null RCP inside. Please report " - "this bug to the Xpetra developers."); - - // Epetra_MultiVector's assignment operator does a deep copy. - *lhsImpl = *rhsImpl; - } - - private: - //! The Epetra_MultiVector which this class wraps. - RCP vec_; - -}; // EpetraMultiVectorT class (specialization on GO=long long, NO=EpetraNode -#endif - -} // namespace Xpetra - -#include "Xpetra_EpetraVector.hpp" // to avoid incomplete type instantiated above in out-of-body functions. - -#endif // XPETRA_EPETRAMULTIVECTOR_HPP diff --git a/packages/xpetra/src/MultiVector/Xpetra_EpetraMultiVectorFactory.cpp b/packages/xpetra/src/MultiVector/Xpetra_EpetraMultiVectorFactory.cpp deleted file mode 100644 index 09e31ccbb4ec..000000000000 --- a/packages/xpetra/src/MultiVector/Xpetra_EpetraMultiVectorFactory.cpp +++ /dev/null @@ -1,301 +0,0 @@ -// @HEADER -// ***************************************************************************** -// Xpetra: A linear algebra interface package -// -// Copyright 2012 NTESS and the Xpetra contributors. -// SPDX-License-Identifier: BSD-3-Clause -// ***************************************************************************** -// @HEADER - -#include "Xpetra_MultiVectorFactory_decl.hpp" -#include "Xpetra_BlockedMultiVector.hpp" - -namespace Xpetra { - -// we need the Epetra specialization only if Epetra is enabled -#if defined(HAVE_XPETRA_EPETRA) - -#if !defined(XPETRA_EPETRA_NO_32BIT_GLOBAL_INDICES) - -MultiVectorFactory:: - MultiVectorFactory() { -} - -RCP> -MultiVectorFactory:: - Build(const Teuchos::RCP>& map, size_t NumVectors, bool zeroOut) { - using BlockedMultiVector = Xpetra::BlockedMultiVector - - XPETRA_MONITOR("MultiVectorFactory::Build"); - - RCP> bmap = Teuchos::rcp_dynamic_cast>(map); - - if (!bmap.is_null()) { - return rcp(new BlockedMultiVector(bmap, NumVectors, zeroOut)); - } - -#ifdef HAVE_XPETRA_TPETRA - if (map->lib() == UseTpetra) { - return rcp(new TpetraMultiVector(map, NumVectors, zeroOut)); - } -#endif - - if (map->lib() == UseEpetra) { - return rcp(new EpetraMultiVectorT(map, NumVectors, zeroOut)); - } - - XPETRA_FACTORY_END; -} - -Teuchos::RCP> -MultiVectorFactory:: - Build(const Teuchos::RCP>& map, - const Teuchos::ArrayView>& ArrayOfPtrs, - size_t NumVectors) { - XPETRA_MONITOR("MultiVectorFactory::Build"); - -#ifdef HAVE_XPETRA_TPETRA - if (map->lib() == UseTpetra) { - return rcp(new TpetraMultiVector(map, ArrayOfPtrs, NumVectors)); - } -#endif - - if (map->lib() == UseEpetra) { - return rcp(new EpetraMultiVectorT(map, ArrayOfPtrs, NumVectors)); - } - - XPETRA_FACTORY_END; -} - -Teuchos::RCP> -MultiVectorFactory:: - Build(const Teuchos::RCP>& source, - Teuchos::DataAccess copyOrView) { - XPETRA_MONITOR("MultiVectorFactory::Build"); - -#ifdef HAVE_XPETRA_TPETRA - if (source->getMap()->lib() == UseTpetra) { - return rcp(new TpetraMultiVector(*source, copyOrView)); - } -#endif - - if (source->getMap()->lib() == UseEpetra) { - return rcp(new EpetraMultiVectorT(*source, copyOrView)); - } - - XPETRA_FACTORY_END; -} - -MultiVectorFactory:: - MultiVectorFactory() { -} - -RCP> -MultiVectorFactory:: - Build(const Teuchos::RCP>& map, size_t NumVectors, bool zeroOut) { - XPETRA_MONITOR("MultiVectorFactory::Build"); - - RCP> bmap = Teuchos::rcp_dynamic_cast>(map); - - if (!bmap.is_null()) { - return rcp(new BlockedMultiVector(bmap, NumVectors, zeroOut)); - } - -#ifdef HAVE_XPETRA_TPETRA - if (map->lib() == UseTpetra) { - return rcp(new TpetraMultiVector(map, NumVectors, zeroOut)); - } -#endif - - if (map->lib() == UseEpetra) { - return rcp(new EpetraIntMultiVectorT(map, NumVectors, zeroOut)); - } - - XPETRA_FACTORY_END; -} - -Teuchos::RCP> -MultiVectorFactory:: - Build(const Teuchos::RCP>& map, - const Teuchos::ArrayView>& ArrayOfPtrs, - size_t NumVectors) { - XPETRA_MONITOR("MultiVectorFactory::Build"); - -#ifdef HAVE_XPETRA_TPETRA - if (map->lib() == UseTpetra) { - return rcp(new TpetraMultiVector(map, ArrayOfPtrs, NumVectors)); - } -#endif - - if (map->lib() == UseEpetra) { - return rcp(new EpetraIntMultiVectorT(map, ArrayOfPtrs, NumVectors)); - } - - XPETRA_FACTORY_END; -} - -Teuchos::RCP> -MultiVectorFactory:: - Build(const Teuchos::RCP>& source, - Teuchos::DataAccess copyOrView) { - XPETRA_MONITOR("MultiVectorFactory::Build"); - -#ifdef HAVE_XPETRA_TPETRA - if (source->getMap()->lib() == UseTpetra) { - return rcp(new TpetraMultiVector(*source, copyOrView)); - } -#endif - - if (source->getMap()->lib() == UseEpetra) { - return rcp(new EpetraIntMultiVectorT(*source, copyOrView)); - } - - XPETRA_FACTORY_END; -} - -// we need the Epetra specialization only if Epetra is enabled -#if !defined(XPETRA_EPETRA_NO_64BIT_GLOBAL_INDICES) - -MultiVectorFactory::MultiVectorFactory() {} - -RCP> -MultiVectorFactory:: - Build(const Teuchos::RCP>& map, - size_t NumVectors, - bool zeroOut) { - XPETRA_MONITOR("MultiVectorFactory::Build"); - - RCP> bmap = Teuchos::rcp_dynamic_cast>(map); - - if (!bmap.is_null()) { - return rcp(new BlockedMultiVector(bmap, NumVectors, zeroOut)); - } - -#ifdef HAVE_XPETRA_TPETRA - if (map->lib() == UseTpetra) { - return rcp(new TpetraMultiVector(map, NumVectors, zeroOut)); - } -#endif - - if (map->lib() == UseEpetra) { - return rcp(new EpetraMultiVectorT(map, NumVectors, zeroOut)); - } - - XPETRA_FACTORY_END; -} - -Teuchos::RCP> -MultiVectorFactory:: - Build(const Teuchos::RCP>& map, - const Teuchos::ArrayView>& ArrayOfPtrs, - size_t NumVectors) { - XPETRA_MONITOR("MultiVectorFactory::Build"); - -#ifdef HAVE_XPETRA_TPETRA - if (map->lib() == UseTpetra) { - return rcp(new TpetraMultiVector(map, ArrayOfPtrs, NumVectors)); - } -#endif - - if (map->lib() == UseEpetra) { - return rcp(new EpetraMultiVectorT(map, ArrayOfPtrs, NumVectors)); - } - - XPETRA_FACTORY_END; -} - -Teuchos::RCP> -MultiVectorFactory:: - Build(const Teuchos::RCP>& source, - Teuchos::DataAccess copyOrView) { - XPETRA_MONITOR("MultiVectorFactory::Build"); - -#ifdef HAVE_XPETRA_TPETRA - if (source->getMap()->lib() == UseTpetra) { - return rcp(new TpetraMultiVector(*source, copyOrView)); - } -#endif - - if (source->getMap()->lib() == UseEpetra) { - return rcp(new EpetraMultiVectorT(*source, copyOrView)); - } - - XPETRA_FACTORY_END; -} - -MultiVectorFactory:: - MultiVectorFactory() { -} - -RCP> -MultiVectorFactory:: - Build(const Teuchos::RCP>& map, - size_t NumVectors, - bool zeroOut) { - XPETRA_MONITOR("MultiVectorFactory::Build"); - - RCP> bmap = Teuchos::rcp_dynamic_cast>(map); - - if (!bmap.is_null()) { - return rcp(new BlockedMultiVector(bmap, NumVectors, zeroOut)); - } - -#ifdef HAVE_XPETRA_TPETRA - if (map->lib() == UseTpetra) { - return rcp(new TpetraMultiVector(map, NumVectors, zeroOut)); - } -#endif - - if (map->lib() == UseEpetra) { - return rcp(new EpetraIntMultiVectorT(map, NumVectors, zeroOut)); - } - - XPETRA_FACTORY_END; -} - -Teuchos::RCP> -MultiVectorFactory:: - Build(const Teuchos::RCP>& map, - const Teuchos::ArrayView>& ArrayOfPtrs, - size_t NumVectors) { - XPETRA_MONITOR("MultiVectorFactory::Build"); - -#ifdef HAVE_XPETRA_TPETRA - if (map->lib() == UseTpetra) { - return rcp(new TpetraMultiVector(map, ArrayOfPtrs, NumVectors)); - } -#endif - - if (map->lib() == UseEpetra) { - return rcp(new EpetraIntMultiVectorT(map, ArrayOfPtrs, NumVectors)); - } - - XPETRA_FACTORY_END; -} - -Teuchos::RCP> -MultiVectorFactory:: - Build(const Teuchos::RCP>& source, - Teuchos::DataAccess copyOrView) { - XPETRA_MONITOR("MultiVectorFactory::Build"); - -#ifdef HAVE_XPETRA_TPETRA - if (source->getMap()->lib() == UseTpetra) { - return rcp(new TpetraMultiVector(*source, copyOrView)); - } -#endif - - if (source->getMap()->lib() == UseEpetra) { - return rcp(new EpetraIntMultiVectorT(*source, copyOrView)); - } - - XPETRA_FACTORY_END; -} - -#endif // END !defined(XPETRA_EPETRA_NO_64BIT_GLOBAL_INDICES) - -#endif // END !defined(XPETRA_EPETRA_NO_32BIT_GLOBAL_INDICES) - -#endif // END HAVE_XPETRA_EPETRA - -} // namespace Xpetra diff --git a/packages/xpetra/src/MultiVector/Xpetra_MultiVectorFactory_decl.hpp b/packages/xpetra/src/MultiVector/Xpetra_MultiVectorFactory_decl.hpp index 6d9764d3fd21..aff2cbcd4e48 100644 --- a/packages/xpetra/src/MultiVector/Xpetra_MultiVectorFactory_decl.hpp +++ b/packages/xpetra/src/MultiVector/Xpetra_MultiVectorFactory_decl.hpp @@ -13,14 +13,7 @@ #include "Xpetra_ConfigDefs.hpp" #include "Xpetra_MultiVector_decl.hpp" -#ifdef HAVE_XPETRA_TPETRA #include "Xpetra_TpetraMultiVector.hpp" -#endif - -#ifdef HAVE_XPETRA_EPETRA -#include "Xpetra_EpetraMultiVector.hpp" -#include "Xpetra_EpetraIntMultiVector.hpp" -#endif // #include "Xpetra_BlockedMap.hpp" #include "Xpetra_Exceptions.hpp" @@ -69,129 +62,6 @@ class MultiVectorFactory { }; // we need the Epetra specialization only if Epetra is enabled -#if defined(HAVE_XPETRA_EPETRA) - -#if !defined(XPETRA_EPETRA_NO_32BIT_GLOBAL_INDICES) - -// Specialization for Scalar=double, LO=GO=int and Serial node -// Used both for Epetra and Tpetra -// For any other node definition the general default implementation is used which allows Tpetra only -template <> -class MultiVectorFactory { - typedef double Scalar; - typedef int LocalOrdinal; - typedef int GlobalOrdinal; - typedef EpetraNode Node; - - private: - //! Private constructor. This is a static class. - MultiVectorFactory(); - - public: - static RCP> - Build(const Teuchos::RCP> &map, size_t NumVectors, bool zeroOut = true); - - //! Set multi-vector values from array of pointers using Teuchos memory management classes. (copy). - static Teuchos::RCP> - Build(const Teuchos::RCP> &map, - const Teuchos::ArrayView> &ArrayOfPtrs, - size_t NumVectors); - - static Teuchos::RCP> - Build(const Teuchos::RCP> &source, - Teuchos::DataAccess copyOrView); -}; - -template <> -class MultiVectorFactory { - typedef int Scalar; - typedef int LocalOrdinal; - typedef int GlobalOrdinal; - typedef EpetraNode Node; - - private: - //! Private constructor. This is a static class. - MultiVectorFactory(); - - public: - static RCP> - Build(const Teuchos::RCP> &map, size_t NumVectors, bool zeroOut = true); - - //! Set multi-vector values from array of pointers using Teuchos memory management classes. (copy). - static Teuchos::RCP> - Build(const Teuchos::RCP> &map, - const Teuchos::ArrayView> &ArrayOfPtrs, - size_t NumVectors); - - static Teuchos::RCP> - Build(const Teuchos::RCP> &source, - Teuchos::DataAccess copyOrView); -}; - -// we need the Epetra specialization only if Epetra is enabled -#if !defined(XPETRA_EPETRA_NO_64BIT_GLOBAL_INDICES) - -template <> -class MultiVectorFactory { - typedef double Scalar; - typedef int LocalOrdinal; - typedef long long GlobalOrdinal; - typedef EpetraNode Node; - - private: - //! Private constructor. This is a static class. - MultiVectorFactory(); - - public: - static RCP> - Build(const Teuchos::RCP> &map, - size_t NumVectors, - bool zeroOut = true); - - //! Set multi-vector values from array of pointers using Teuchos memory management classes. (copy). - static Teuchos::RCP> - Build(const Teuchos::RCP> &map, - const Teuchos::ArrayView> &ArrayOfPtrs, - size_t NumVectors); - - static Teuchos::RCP> - Build(const Teuchos::RCP> &source, - Teuchos::DataAccess copyOrView); -}; - -template <> -class MultiVectorFactory { - typedef int Scalar; - typedef int LocalOrdinal; - typedef long long GlobalOrdinal; - typedef EpetraNode Node; - - private: - //! Private constructor. This is a static class. - MultiVectorFactory(); - - public: - static RCP> - Build(const Teuchos::RCP> &map, - size_t NumVectors, - bool zeroOut = true); - - //! Set multi-vector values from array of pointers using Teuchos memory management classes. (copy). - static Teuchos::RCP> - Build(const Teuchos::RCP> &map, - const Teuchos::ArrayView> &ArrayOfPtrs, - size_t NumVectors); - - static Teuchos::RCP> - Build(const Teuchos::RCP> &source, - Teuchos::DataAccess copyOrView); -}; - -#endif // END !defined(XPETRA_EPETRA_NO_64BIT_GLOBAL_INDICES) - -#endif // END !defined(XPETRA_EPETRA_NO_32BIT_GLOBAL_INDICES) - -#endif // END HAVE_XPETRA_EPETRA } // namespace Xpetra diff --git a/packages/xpetra/src/MultiVector/Xpetra_MultiVectorFactory_def.hpp b/packages/xpetra/src/MultiVector/Xpetra_MultiVectorFactory_def.hpp index 7e77a9fa31b8..af3a3c33484b 100644 --- a/packages/xpetra/src/MultiVector/Xpetra_MultiVectorFactory_def.hpp +++ b/packages/xpetra/src/MultiVector/Xpetra_MultiVectorFactory_def.hpp @@ -33,11 +33,9 @@ MultiVectorFactory:: return rcp(new Xpetra::BlockedMultiVector(bmap, NumVectors, zeroOut)); } -#ifdef HAVE_XPETRA_TPETRA if (map->lib() == UseTpetra) { return rcp(new TpetraMultiVector(map, NumVectors, zeroOut)); } -#endif XPETRA_FACTORY_ERROR_IF_EPETRA(map->lib()); XPETRA_FACTORY_END; @@ -51,11 +49,9 @@ MultiVectorFactory:: size_t NumVectors) { XPETRA_MONITOR("MultiVectorFactory::Build"); -#ifdef HAVE_XPETRA_TPETRA if (map->lib() == UseTpetra) { return rcp(new TpetraMultiVector(map, ArrayOfPtrs, NumVectors)); } -#endif XPETRA_FACTORY_ERROR_IF_EPETRA(map->lib()); XPETRA_FACTORY_END; @@ -68,11 +64,9 @@ MultiVectorFactory:: Teuchos::DataAccess copyOrView) { XPETRA_MONITOR("MultiVectorFactory::Build"); -#ifdef HAVE_XPETRA_TPETRA if (source->getMap()->lib() == UseTpetra) { return rcp(new TpetraMultiVector(*source, copyOrView)); } -#endif XPETRA_FACTORY_ERROR_IF_EPETRA(source->getMap()->lib()); XPETRA_FACTORY_END; diff --git a/packages/xpetra/src/MultiVector/Xpetra_TpetraMultiVector_def.hpp b/packages/xpetra/src/MultiVector/Xpetra_TpetraMultiVector_def.hpp index 94c8a2f14dcd..07f269626ac3 100644 --- a/packages/xpetra/src/MultiVector/Xpetra_TpetraMultiVector_def.hpp +++ b/packages/xpetra/src/MultiVector/Xpetra_TpetraMultiVector_def.hpp @@ -608,494 +608,6 @@ void TpetraMultiVector:: Tpetra::deep_copy(*lhsImpl, *rhsImpl); } -#ifdef HAVE_XPETRA_EPETRA - -#if ((defined(EPETRA_HAVE_OMP) && (!defined(HAVE_TPETRA_INST_OPENMP) || !defined(HAVE_TPETRA_INST_INT_INT))) || \ - (!defined(EPETRA_HAVE_OMP) && (!defined(HAVE_TPETRA_INST_SERIAL) || !defined(HAVE_TPETRA_INST_INT_INT)))) - -// specialization for TpetraMultiVector on EpetraNode and GO=int -template -class TpetraMultiVector - : public virtual MultiVector { - typedef int LocalOrdinal; - typedef int GlobalOrdinal; - typedef EpetraNode Node; - - // The following typedef are used by the XPETRA_DYNAMIC_CAST() macro. - typedef TpetraMultiVector TpetraMultiVectorClass; - - public: - //! @name Constructors and destructor - //@{ - - //! Default constructor - TpetraMultiVector() { - XPETRA_TPETRA_ETI_EXCEPTION(typeid(TpetraMultiVector).name(), typeid(TpetraMultiVector).name(), "int", typeid(EpetraNode).name()); - } - - //! Basic constuctor. - TpetraMultiVector(const Teuchos::RCP > &map, size_t NumVectors, bool zeroOut = true) { - XPETRA_TPETRA_ETI_EXCEPTION(typeid(TpetraMultiVector).name(), typeid(TpetraMultiVector).name(), "int", typeid(EpetraNode).name()); - } - - //! Copy constructor (performs a deep copy). - TpetraMultiVector(const MultiVector &source, const Teuchos::DataAccess copyOrView) { - XPETRA_TPETRA_ETI_EXCEPTION(typeid(TpetraMultiVector).name(), typeid(TpetraMultiVector).name(), "int", typeid(EpetraNode).name()); - } - - //! Create multivector by copying two-dimensional array of local data. - TpetraMultiVector(const Teuchos::RCP > &map, const Teuchos::ArrayView &A, size_t LDA, size_t NumVectors) { - XPETRA_TPETRA_ETI_EXCEPTION(typeid(TpetraMultiVector).name(), typeid(TpetraMultiVector).name(), "int", typeid(EpetraNode).name()); - } - - //! Create multivector by copying array of views of local data. - TpetraMultiVector(const Teuchos::RCP > &map, const Teuchos::ArrayView > &ArrayOfPtrs, size_t NumVectors) { - XPETRA_TPETRA_ETI_EXCEPTION(typeid(TpetraMultiVector).name(), typeid(TpetraMultiVector).name(), "int", typeid(EpetraNode).name()); - } - - //! Destructor (virtual for memory safety of derived classes). - virtual ~TpetraMultiVector() {} - - //@} - - //! @name Post-construction modification routines - //@{ - - //! Replace value, using global (row) index. - void replaceGlobalValue(GlobalOrdinal globalRow, size_t vectorIndex, const Scalar &value) {} - - //! Add value to existing value, using global (row) index. - void sumIntoGlobalValue(GlobalOrdinal globalRow, size_t vectorIndex, const Scalar &value) {} - - //! Replace value, using local (row) index. - void replaceLocalValue(LocalOrdinal myRow, size_t vectorIndex, const Scalar &value) {} - - //! Add value to existing value, using local (row) index. - void sumIntoLocalValue(LocalOrdinal myRow, size_t vectorIndex, const Scalar &value) {} - - //! Set all values in the multivector with the given value. - void putScalar(const Scalar &value) {} - - //! Sum values of a locally replicated multivector across all processes. - void reduce() {} - - //@} - - //! @name Data Copy and View get methods - //@{ - - //! Return a Vector which is a const view of column j. - Teuchos::RCP > getVector(size_t j) const { return Teuchos::null; } - - //! Return a Vector which is a nonconst view of column j. - Teuchos::RCP > getVectorNonConst(size_t j) { return Teuchos::null; } - - //! Const view of the local values in a particular vector of this multivector. - Teuchos::ArrayRCP getData(size_t j) const { return Teuchos::ArrayRCP(); } - - //! View of the local values in a particular vector of this multivector. - Teuchos::ArrayRCP getDataNonConst(size_t j) { return Teuchos::ArrayRCP(); } - - //! Fill the given array with a copy of this multivector's local values. - void get1dCopy(Teuchos::ArrayView A, size_t LDA) const {} - - //! Fill the given array with a copy of this multivector's local values. - void get2dCopy(Teuchos::ArrayView > ArrayOfPtrs) const {} - - //! Const persisting (1-D) view of this multivector's local values. - Teuchos::ArrayRCP get1dView() const { return Teuchos::ArrayRCP(); } - - //! Return const persisting pointers to values. - Teuchos::ArrayRCP > get2dView() const { return Teuchos::ArrayRCP >(); } - - //! Nonconst persisting (1-D) view of this multivector's local values. - Teuchos::ArrayRCP get1dViewNonConst() { return Teuchos::ArrayRCP(); } - - //! Return non-const persisting pointers to values. - Teuchos::ArrayRCP > get2dViewNonConst() { return Teuchos::ArrayRCP >(); } - - //@} - - //! @name Mathematical methods - //@{ - - //! Compute dot product of each corresponding pair of vectors, dots[i] = this[i].dot(A[i]). - void dot(const MultiVector &A, const Teuchos::ArrayView &dots) const {} - - //! Put element-wise absolute values of input Multi-vector in target: A = abs(this). - void abs(const MultiVector &A) {} - - //! Put element-wise reciprocal values of input Multi-vector in target, this(i,j) = 1/A(i,j). - void reciprocal(const MultiVector &A) {} - - //! Scale the current values of a multi-vector, this = alpha*this. - void scale(const Scalar &alpha) {} - - //! Scale the current values of a multi-vector, this[j] = alpha[j]*this[j]. - void scale(Teuchos::ArrayView alpha) {} - - //! Replace multi-vector values with scaled values of A, this = alpha*A. - void scale(const Scalar &alpha, const MultiVector &A) {} - - //! Update multi-vector values with scaled values of A, this = beta*this + alpha*A. - void update(const Scalar &alpha, const MultiVector &A, const Scalar &beta) {} - - //! Update multi-vector with scaled values of A and B, this = gamma*this + alpha*A + beta*B. - void update(const Scalar &alpha, const MultiVector &A, const Scalar &beta, const MultiVector &B, const Scalar &gamma) {} - - //! Compute 1-norm of each vector in multi-vector. - void norm1(const Teuchos::ArrayView::magnitudeType> &norms) const {} - - //! - void norm2(const Teuchos::ArrayView::magnitudeType> &norms) const {} - - //! Compute Inf-norm of each vector in multi-vector. - void normInf(const Teuchos::ArrayView::magnitudeType> &norms) const {} - - //! Compute mean (average) value of each vector in multi-vector. The outcome of this routine is undefined for non-floating point scalar types (e.g., int). - void meanValue(const Teuchos::ArrayView &means) const {} - - //! Matrix-matrix multiplication: this = beta*this + alpha*op(A)*op(B). - void multiply(Teuchos::ETransp transA, Teuchos::ETransp transB, const Scalar &alpha, const MultiVector &A, const MultiVector &B, const Scalar &beta) {} - - //@} - - //! @name Attribute access functions - //@{ - - //! Number of columns in the multivector. - size_t getNumVectors() const { return 0; } - - //! Local number of rows on the calling process. - size_t getLocalLength() const { return 0; } - - //! Global number of rows in the multivector. - global_size_t getGlobalLength() const { return 0; } - - // \! Checks to see if the local length, number of vectors and size of Scalar type match - bool isSameSize(const MultiVector &vec) const { return false; } - - //@} - - //! @name Overridden from Teuchos::Describable - //@{ - - //! A simple one-line description of this object. - std::string description() const { return std::string(""); } - - //! Print the object with the given verbosity level to a FancyOStream. - void describe(Teuchos::FancyOStream &out, const Teuchos::EVerbosityLevel verbLevel = Teuchos::Describable::verbLevel_default) const {} - - //@} - - //! Element-wise multiply of a Vector A with a TpetraMultiVector B. - void elementWiseMultiply(Scalar scalarAB, const Vector &A, const MultiVector &B, Scalar scalarThis){}; - - //! Set multi-vector values to random numbers. - void randomize(bool bUseXpetraImplementation = false) {} - - //! Set multi-vector values to random numbers. - void randomize(const Scalar &minVal, const Scalar &maxVal, bool bUseXpetraImplementation = false) {} - - //{@ - // Implements DistObject interface - - Teuchos::RCP > getMap() const { return Teuchos::null; } - - void doImport(const DistObject &source, const Import &importer, CombineMode CM) {} - - void beginImport(const DistObject &source, const Import &importer, CombineMode CM) {} - - void endImport(const DistObject &source, const Import &importer, CombineMode CM) {} - - void doExport(const DistObject &dest, const Import &importer, CombineMode CM) {} - - void beginExport(const DistObject &dest, const Import &importer, CombineMode CM) {} - - void endExport(const DistObject &dest, const Import &importer, CombineMode CM) {} - - void doImport(const DistObject &source, const Export &exporter, CombineMode CM) {} - - void beginImport(const DistObject &source, const Export &exporter, CombineMode CM) {} - - void endImport(const DistObject &source, const Export &exporter, CombineMode CM) {} - - void doExport(const DistObject &dest, const Export &exporter, CombineMode CM) {} - - void beginExport(const DistObject &dest, const Export &exporter, CombineMode CM) {} - - void endExport(const DistObject &dest, const Export &exporter, CombineMode CM) {} - - void replaceMap(const RCP > &map) {} - - //@} - - //! @name Xpetra specific - //@{ - - //! TpetraMultiVector constructor to wrap a Tpetra::MultiVector object - TpetraMultiVector(const Teuchos::RCP > &vec) { - XPETRA_TPETRA_ETI_EXCEPTION(typeid(TpetraMultiVector).name(), typeid(TpetraMultiVector).name(), "int", typeid(EpetraNode).name()); - } - - //! Get the underlying Tpetra multivector - RCP > getTpetra_MultiVector() const { return Teuchos::null; } - - //! Set seed for Random function. - void setSeed(unsigned int seed) {} - - //@} - - protected: - /// \brief Implementation of the assignment operator (operator=); - /// does a deep copy. - virtual void - assign(const MultiVector &rhs) {} -}; // TpetraMultiVector class (specialization GO=int, NO=EpetraNode) -#endif - -#if ((defined(EPETRA_HAVE_OMP) && (!defined(HAVE_TPETRA_INST_OPENMP) || !defined(HAVE_TPETRA_INST_INT_LONG_LONG))) || \ - (!defined(EPETRA_HAVE_OMP) && (!defined(HAVE_TPETRA_INST_SERIAL) || !defined(HAVE_TPETRA_INST_INT_LONG_LONG)))) - -// specialization for TpetraMultiVector on EpetraNode and GO=long long -template -class TpetraMultiVector - : public virtual MultiVector { - typedef int LocalOrdinal; - typedef long long GlobalOrdinal; - typedef EpetraNode Node; - - // The following typedef are used by the XPETRA_DYNAMIC_CAST() macro. - typedef TpetraMultiVector TpetraMultiVectorClass; - - public: - //! @name Constructors and destructor - //@{ - - //! Basic constuctor. - TpetraMultiVector(const Teuchos::RCP > &map, size_t NumVectors, bool zeroOut = true) { - XPETRA_TPETRA_ETI_EXCEPTION(typeid(TpetraMultiVector).name(), typeid(TpetraMultiVector).name(), "long long", typeid(EpetraNode).name()); - } - - //! Copy constructor (performs a deep copy). - TpetraMultiVector(const MultiVector &source, const Teuchos::DataAccess copyOrView) { - XPETRA_TPETRA_ETI_EXCEPTION(typeid(TpetraMultiVector).name(), typeid(TpetraMultiVector).name(), "long long", typeid(EpetraNode).name()); - } - - //! Create multivector by copying two-dimensional array of local data. - TpetraMultiVector(const Teuchos::RCP > &map, const Teuchos::ArrayView &A, size_t LDA, size_t NumVectors) { - XPETRA_TPETRA_ETI_EXCEPTION(typeid(TpetraMultiVector).name(), typeid(TpetraMultiVector).name(), "long long", typeid(EpetraNode).name()); - } - - //! Create multivector by copying array of views of local data. - TpetraMultiVector(const Teuchos::RCP > &map, const Teuchos::ArrayView > &ArrayOfPtrs, size_t NumVectors) { - XPETRA_TPETRA_ETI_EXCEPTION(typeid(TpetraMultiVector).name(), typeid(TpetraMultiVector).name(), "long long", typeid(EpetraNode).name()); - } - - //! Destructor (virtual for memory safety of derived classes). - virtual ~TpetraMultiVector() {} - - //@} - - //! @name Post-construction modification routines - //@{ - - //! Replace value, using global (row) index. - void replaceGlobalValue(GlobalOrdinal globalRow, size_t vectorIndex, const Scalar &value) {} - - //! Add value to existing value, using global (row) index. - void sumIntoGlobalValue(GlobalOrdinal globalRow, size_t vectorIndex, const Scalar &value) {} - - //! Replace value, using local (row) index. - void replaceLocalValue(LocalOrdinal myRow, size_t vectorIndex, const Scalar &value) {} - - //! Add value to existing value, using local (row) index. - void sumIntoLocalValue(LocalOrdinal myRow, size_t vectorIndex, const Scalar &value) {} - - //! Set all values in the multivector with the given value. - void putScalar(const Scalar &value) {} - - //! Sum values of a locally replicated multivector across all processes. - void reduce() {} - - //@} - - //! @name Data Copy and View get methods - //@{ - - //! Return a Vector which is a const view of column j. - Teuchos::RCP > getVector(size_t j) const { return Teuchos::null; } - - //! Return a Vector which is a nonconst view of column j. - Teuchos::RCP > getVectorNonConst(size_t j) { return Teuchos::null; } - - //! Const view of the local values in a particular vector of this multivector. - Teuchos::ArrayRCP getData(size_t j) const { return Teuchos::ArrayRCP(); } - - //! View of the local values in a particular vector of this multivector. - Teuchos::ArrayRCP getDataNonConst(size_t j) { return Teuchos::ArrayRCP(); } - - //! Fill the given array with a copy of this multivector's local values. - void get1dCopy(Teuchos::ArrayView A, size_t LDA) const {} - - //! Fill the given array with a copy of this multivector's local values. - void get2dCopy(Teuchos::ArrayView > ArrayOfPtrs) const {} - - //! Const persisting (1-D) view of this multivector's local values. - Teuchos::ArrayRCP get1dView() const { return Teuchos::ArrayRCP(); } - - //! Return const persisting pointers to values. - Teuchos::ArrayRCP > get2dView() const { return Teuchos::ArrayRCP >(); } - - //! Nonconst persisting (1-D) view of this multivector's local values. - Teuchos::ArrayRCP get1dViewNonConst() { return Teuchos::ArrayRCP(); } - - //! Return non-const persisting pointers to values. - Teuchos::ArrayRCP > get2dViewNonConst() { return Teuchos::ArrayRCP >(); } - - //@} - - //! @name Mathematical methods - //@{ - - //! Compute dot product of each corresponding pair of vectors, dots[i] = this[i].dot(A[i]). - void dot(const MultiVector &A, const Teuchos::ArrayView &dots) const {} - - //! Put element-wise absolute values of input Multi-vector in target: A = abs(this). - void abs(const MultiVector &A) {} - - //! Put element-wise reciprocal values of input Multi-vector in target, this(i,j) = 1/A(i,j). - void reciprocal(const MultiVector &A) {} - - //! Scale the current values of a multi-vector, this = alpha*this. - void scale(const Scalar &alpha) {} - - //! Scale the current values of a multi-vector, this[j] = alpha[j]*this[j]. - void scale(Teuchos::ArrayView alpha) {} - - //! Replace multi-vector values with scaled values of A, this = alpha*A. - void scale(const Scalar &alpha, const MultiVector &A) {} - - //! Update multi-vector values with scaled values of A, this = beta*this + alpha*A. - void update(const Scalar &alpha, const MultiVector &A, const Scalar &beta) {} - - //! Update multi-vector with scaled values of A and B, this = gamma*this + alpha*A + beta*B. - void update(const Scalar &alpha, const MultiVector &A, const Scalar &beta, const MultiVector &B, const Scalar &gamma) {} - - //! Compute 1-norm of each vector in multi-vector. - void norm1(const Teuchos::ArrayView::magnitudeType> &norms) const {} - - //! - void norm2(const Teuchos::ArrayView::magnitudeType> &norms) const {} - - //! Compute Inf-norm of each vector in multi-vector. - void normInf(const Teuchos::ArrayView::magnitudeType> &norms) const {} - - //! Compute mean (average) value of each vector in multi-vector. The outcome of this routine is undefined for non-floating point scalar types (e.g., int). - void meanValue(const Teuchos::ArrayView &means) const {} - - //! Matrix-matrix multiplication: this = beta*this + alpha*op(A)*op(B). - void multiply(Teuchos::ETransp transA, Teuchos::ETransp transB, const Scalar &alpha, const MultiVector &A, const MultiVector &B, const Scalar &beta) {} - - //@} - - //! @name Attribute access functions - //@{ - - //! Number of columns in the multivector. - size_t getNumVectors() const { return 0; } - - //! Local number of rows on the calling process. - size_t getLocalLength() const { return 0; } - - //! Global number of rows in the multivector. - global_size_t getGlobalLength() const { return 0; } - - // \! Checks to see if the local length, number of vectors and size of Scalar type match - bool isSameSize(const MultiVector &vec) const { return false; } - - //@} - - //! @name Overridden from Teuchos::Describable - //@{ - - //! A simple one-line description of this object. - std::string description() const { return std::string(""); } - - //! Print the object with the given verbosity level to a FancyOStream. - void describe(Teuchos::FancyOStream &out, const Teuchos::EVerbosityLevel verbLevel = Teuchos::Describable::verbLevel_default) const {} - - //@} - - //! Element-wise multiply of a Vector A with a TpetraMultiVector B. - void elementWiseMultiply(Scalar scalarAB, const Vector &A, const MultiVector &B, Scalar scalarThis){}; - - //! Set multi-vector values to random numbers. - void randomize(bool bUseXpetraImplementation = false) {} - - //! Set multi-vector values to random numbers. - void randomize(const Scalar &minVal, const Scalar &maxVal, bool bUseXpetraImplementation = false) {} - - //{@ - // Implements DistObject interface - - Teuchos::RCP > getMap() const { return Teuchos::null; } - - void doImport(const DistObject &source, const Import &importer, CombineMode CM) {} - - void beginImport(const DistObject &source, const Import &importer, CombineMode CM) {} - - void endImport(const DistObject &source, const Import &importer, CombineMode CM) {} - - void doExport(const DistObject &dest, const Import &importer, CombineMode CM) {} - - void beginExport(const DistObject &dest, const Import &importer, CombineMode CM) {} - - void endExport(const DistObject &dest, const Import &importer, CombineMode CM) {} - - void doImport(const DistObject &source, const Export &exporter, CombineMode CM) {} - - void beginImport(const DistObject &source, const Export &exporter, CombineMode CM) {} - - void endImport(const DistObject &source, const Export &exporter, CombineMode CM) {} - - void doExport(const DistObject &dest, const Export &exporter, CombineMode CM) {} - - void beginExport(const DistObject &dest, const Export &exporter, CombineMode CM) {} - - void endExport(const DistObject &dest, const Export &exporter, CombineMode CM) {} - - void replaceMap(const RCP > &map) {} - - //@} - - //! @name Xpetra specific - //@{ - - //! TpetraMultiVector constructor to wrap a Tpetra::MultiVector object - TpetraMultiVector(const Teuchos::RCP > &vec) { - XPETRA_TPETRA_ETI_EXCEPTION(typeid(TpetraMultiVector).name(), typeid(TpetraMultiVector).name(), "long long", typeid(EpetraNode).name()); - } - - //! Get the underlying Tpetra multivector - RCP > getTpetra_MultiVector() const { return Teuchos::null; } - - //! Set seed for Random function. - void setSeed(unsigned int seed) {} - - //@} - - protected: - /// \brief Implementation of the assignment operator (operator=); - /// does a deep copy. - virtual void - assign(const MultiVector &rhs) {} -}; // TpetraMultiVector class (specialization GO=int, NO=EpetraNode) - -#endif // TpetraMultiVector class (specialization GO=long long, NO=EpetraNode) - -#endif // HAVE_XPETRA_EPETRA - } // namespace Xpetra // Following header file inculsion is needed for the dynamic_cast to TpetraVector in diff --git a/packages/xpetra/src/Operator/Xpetra_EpetraOperator.hpp b/packages/xpetra/src/Operator/Xpetra_EpetraOperator.hpp deleted file mode 100644 index 411c33cb176f..000000000000 --- a/packages/xpetra/src/Operator/Xpetra_EpetraOperator.hpp +++ /dev/null @@ -1,251 +0,0 @@ -// @HEADER -// ***************************************************************************** -// Xpetra: A linear algebra interface package -// -// Copyright 2012 NTESS and the Xpetra contributors. -// SPDX-License-Identifier: BSD-3-Clause -// ***************************************************************************** -// @HEADER - -#ifndef XPETRA_EPETRAOPERATOR_HPP -#define XPETRA_EPETRAOPERATOR_HPP - -#include "Xpetra_EpetraConfigDefs.hpp" - -#include -#include - -#include "Xpetra_Map.hpp" -#include "Xpetra_EpetraMap.hpp" -#include "Xpetra_MultiVector.hpp" -#include "Xpetra_EpetraMultiVector.hpp" -#include "Xpetra_Operator.hpp" - -#include "Xpetra_Utils.hpp" - -#if defined(XPETRA_ENABLE_DEPRECATED_CODE) -#ifdef __GNUC__ -#if defined(Xpetra_SHOW_DEPRECATED_WARNINGS) -#warning "The header file Trilinos/packages/xpetra/src/Operator/Xpetra_EpetraOperator.hpp is deprecated." -#endif -#endif -#else -#error "The header file Trilinos/packages/xpetra/src/Operator/Xpetra_EpetraOperator.hpp is deprecated." -#endif - -namespace Xpetra { - -template -class XPETRA_DEPRECATED EpetraOperator : public Operator { - typedef double Scalar; - typedef int LocalOrdinal; - typedef EpetraGlobalOrdinal GlobalOrdinal; - - public: - //@{ - - //! The Map associated with the domain of this operator, which must be compatible with X.getMap(). - virtual const Teuchos::RCP > getDomainMap() const { - XPETRA_MONITOR("EpetraOperator::getDomainMap()"); - return toXpetra(op_->OperatorDomainMap()); - } - - //! The Map associated with the range of this operator, which must be compatible with Y.getMap(). - virtual const Teuchos::RCP > getRangeMap() const { - XPETRA_MONITOR("EpetraOperator::getRangeMap()"); - return toXpetra(op_->OperatorRangeMap()); - } - - //! \brief Computes the operator-multivector application. - /*! Loosely, performs \f$Y = \alpha \cdot A^{\textrm{mode}} \cdot X + \beta \cdot Y\f$. However, the details of operation - vary according to the values of \c alpha and \c beta. Specifically - - if beta == 0, apply() must overwrite \c Y, so that any values in \c Y (including NaNs) are ignored. - - if alpha == 0, apply() may short-circuit the operator, so that any values in \c X (including NaNs) are ignored. - */ - virtual void - apply(const MultiVector &X, - MultiVector &Y, - Teuchos::ETransp mode = Teuchos::NO_TRANS, - Scalar alpha = Teuchos::ScalarTraits::one(), - Scalar beta = Teuchos::ScalarTraits::zero()) const { - XPETRA_MONITOR("EpetraOperator::apply"); - - XPETRA_DYNAMIC_CAST(const EpetraMultiVectorT, X, eX, "Xpetra::EpetraOperator->apply(): cannot cast input to Xpetra::EpetraMultiVectorT"); - XPETRA_DYNAMIC_CAST(EpetraMultiVectorT, Y, eY, "Xpetra::EpetraOperator->apply(): cannot cast input to Xpetra::EpetraMultiVectorT"); - - TEUCHOS_TEST_FOR_EXCEPTION((mode != Teuchos::NO_TRANS) && (mode != Teuchos::TRANS), Exceptions::NotImplemented, - "Xpetra::EpetraOperator->apply(): can only accept mode == NO_TRANS or mode == TRANS"); - TEUCHOS_TEST_FOR_EXCEPTION(mode == Teuchos::TRANS && !hasTransposeApply(), Exceptions::RuntimeError, - "Xpetra::EpetraOperator->apply(): cannot apply transpose as underlying Epetra operator does not support it"); - - // Helper vector for string A*X - RCP epY = eY.getEpetra_MultiVector(); - RCP tmp = Teuchos::rcp(new Epetra_MultiVector(*epY)); - tmp->PutScalar(0.0); - - op_->SetUseTranspose(mode == Teuchos::TRANS); - XPETRA_ERR_CHECK(op_->Apply(*eX.getEpetra_MultiVector(), *tmp)); - - // calculate alpha * A * x + beta * y - XPETRA_ERR_CHECK(eY.getEpetra_MultiVector()->Update(alpha, *tmp, beta)); - } - - /// \brief Whether this operator supports applying the transpose or conjugate transpose. - virtual bool hasTransposeApply() const { - // We do not currently use transpose, try setting it - int err = op_->SetUseTranspose(true); - op_->SetUseTranspose(false); - return (err == 0); - } - - //@} - - //! @name Overridden from Teuchos::Describable - //@{ - - //! A simple one-line description of this object. - std::string description() const { - XPETRA_MONITOR("EpetraOperator::description"); - return "Epetra_Operator"; - } - - //! Print the object with the given verbosity level to a FancyOStream. - void describe(Teuchos::FancyOStream &out, const Teuchos::EVerbosityLevel verbLevel = Teuchos::Describable::verbLevel_default) const { - XPETRA_MONITOR("EpetraOperator::describe"); - out << "Epetra_Operator" << std::endl; - } - - //@} - - //! @name Xpetra specific - //@{ - - //! EpetraOperator constructor to wrap a Epetra_Operator object - EpetraOperator(const Teuchos::RCP &op) - : op_(op) {} // TODO removed const - - //! Compute a residual R = B - (*this) * X - void residual(const MultiVector &X, - const MultiVector &B, - MultiVector &R) const { - using STS = Teuchos::ScalarTraits; - R.update(STS::one(), B, STS::zero()); - this->apply(X, R, Teuchos::NO_TRANS, -STS::one(), STS::one()); - } - - //@} - - private: - //! The Tpetra::Operator which this class wraps. - RCP op_; - -}; // EpetraOperator class - -template -class EpetraInverseOperator : public Operator { - typedef double Scalar; - typedef int LocalOrdinal; - typedef EpetraGlobalOrdinal GlobalOrdinal; - - public: - //@{ - - //! The Map associated with the domain of this operator, which must be compatible with X.getMap(). - virtual Teuchos::RCP > getDomainMap() const { - XPETRA_MONITOR("EpetraOperator::getDomainMap()"); - return toXpetra(op_->OperatorDomainMap()); - } - - //! The Map associated with the range of this operator, which must be compatible with Y.getMap(). - virtual Teuchos::RCP > getRangeMap() const { - XPETRA_MONITOR("EpetraOperator::getRangeMap()"); - return toXpetra(op_->OperatorRangeMap()); - } - - //! \brief Computes the operator-multivector application. - /*! Loosely, performs \f$Y = \alpha \cdot A^{\textrm{mode}} \cdot X + \beta \cdot Y\f$. However, the details of operation - vary according to the values of \c alpha and \c beta. Specifically - - if beta == 0, apply() must overwrite \c Y, so that any values in \c Y (including NaNs) are ignored. - - if alpha == 0, apply() may short-circuit the operator, so that any values in \c X (including NaNs) are ignored. - */ - virtual void - apply(const MultiVector &X, - MultiVector &Y, - Teuchos::ETransp mode = Teuchos::NO_TRANS, - Scalar alpha = Teuchos::ScalarTraits::one(), - Scalar beta = Teuchos::ScalarTraits::zero()) const { - XPETRA_MONITOR("EpetraOperator::apply"); - - XPETRA_DYNAMIC_CAST(const EpetraMultiVectorT, X, eX, "Xpetra::EpetraOperator->apply(): cannot cast input to Xpetra::EpetraMultiVectorT"); - XPETRA_DYNAMIC_CAST(EpetraMultiVectorT, Y, eY, "Xpetra::EpetraOperator->apply(): cannot cast input to Xpetra::EpetraMultiVectorT"); - - TEUCHOS_TEST_FOR_EXCEPTION((mode != Teuchos::NO_TRANS) && (mode != Teuchos::TRANS), Exceptions::NotImplemented, - "Xpetra::EpetraOperator->apply(): can only accept mode == NO_TRANS or mode == TRANS"); - TEUCHOS_TEST_FOR_EXCEPTION(mode == Teuchos::TRANS && !hasTransposeApply(), Exceptions::RuntimeError, - "Xpetra::EpetraOperator->apply(): cannot apply transpose as underlying Epetra operator does not support it"); - - // Helper vector for string A*X - RCP epY = eY.getEpetra_MultiVector(); - RCP tmp = Teuchos::rcp(new Epetra_MultiVector(*epY)); - tmp->PutScalar(0.0); - - op_->SetUseTranspose(mode == Teuchos::TRANS); - XPETRA_ERR_CHECK(op_->ApplyInverse(*eX.getEpetra_MultiVector(), *tmp)); - - // calculate alpha * A * x + beta * y - XPETRA_ERR_CHECK(eY.getEpetra_MultiVector()->Update(alpha, *tmp, beta)); - } - - /// \brief Whether this operator supports applying the transpose or conjugate transpose. - virtual bool hasTransposeApply() const { - // We do not currently use transpose, try setting it - int err = op_->SetUseTranspose(true); - op_->SetUseTranspose(false); - return (err == 0); - } - - //@} - - //! @name Overridden from Teuchos::Describable - //@{ - - //! A simple one-line description of this object. - std::string description() const { - XPETRA_MONITOR("EpetraOperator::description"); - return "Epetra_Operator"; - } - - //! Print the object with the given verbosity level to a FancyOStream. - void describe(Teuchos::FancyOStream &out, const Teuchos::EVerbosityLevel verbLevel = Teuchos::Describable::verbLevel_default) const { - XPETRA_MONITOR("EpetraOperator::describe"); - out << "Epetra_Operator" << std::endl; - } - - //@} - - //! @name Xpetra specific - //@{ - - //! EpetraOperator constructor to wrap a Epetra_Operator object - EpetraInverseOperator(const Teuchos::RCP &op) - : op_(op) {} // TODO removed const - - //! Compute a residual R = B - (*this) * X - void residual(const MultiVector &X, - const MultiVector &B, - MultiVector &R) const { - using STS = Teuchos::ScalarTraits; - R.update(STS::one(), B, STS::zero()); - this->apply(X, R, Teuchos::NO_TRANS, -STS::one(), STS::one()); - } - - //@} - - private: - //! The Tpetra::Operator which this class wraps. - RCP op_; -}; - -} // namespace Xpetra - -#endif // XPETRA_EPETRAOPERATOR_HPP diff --git a/packages/xpetra/src/Operator/Xpetra_TpetraOperator.hpp b/packages/xpetra/src/Operator/Xpetra_TpetraOperator.hpp index f279c037d15c..5d8852365438 100644 --- a/packages/xpetra/src/Operator/Xpetra_TpetraOperator.hpp +++ b/packages/xpetra/src/Operator/Xpetra_TpetraOperator.hpp @@ -114,147 +114,6 @@ class TpetraOperator : public Operator -class TpetraOperator - : public Operator { - public: - typedef double Scalar; - typedef int GlobalOrdinal; - typedef int LocalOrdinal; - typedef EpetraNode Node; - - //@{ - - //! The Map associated with the domain of this operator, which must be compatible with X.getMap(). - virtual Teuchos::RCP > getDomainMap() const { - return Teuchos::null; - } - - //! The Map associated with the range of this operator, which must be compatible with Y.getMap(). - virtual Teuchos::RCP > getRangeMap() const { - return Teuchos::null; - } - - //! \brief Computes the operator-multivector application. - /*! Loosely, performs \f$Y = \alpha \cdot A^{\textrm{mode}} \cdot X + \beta \cdot Y\f$. However, the details of operation - vary according to the values of \c alpha and \c beta. Specifically - - if beta == 0, apply() must overwrite \c Y, so that any values in \c Y (including NaNs) are ignored. - - if alpha == 0, apply() may short-circuit the operator, so that any values in \c X (including NaNs) are ignored. - */ - virtual void - apply(const Xpetra::MultiVector &X, - Xpetra::MultiVector &Y, - Teuchos::ETransp mode = Teuchos::NO_TRANS, - Scalar alpha = Teuchos::ScalarTraits::one(), - Scalar beta = Teuchos::ScalarTraits::zero()) const {} - - /// \brief Whether this operator supports applying the transpose or conjugate transpose. - virtual bool hasTransposeApply() const { return false; } - - //@} - - //! @name Overridden from Teuchos::Describable - //@{ - - //! A simple one-line description of this object. - std::string description() const { return std::string(""); } - - //! Print the object with the given verbosity level to a FancyOStream. - void describe(Teuchos::FancyOStream &out, const Teuchos::EVerbosityLevel verbLevel = Teuchos::Describable::verbLevel_default) const {} - - //@} - - //! @name Xpetra specific - //@{ - - //! TpetraOperator constructor to wrap a Tpetra::Operator object - TpetraOperator(const Teuchos::RCP > &op) {} - - //! Gets the operator out - RCP > getOperator() { return Teuchos::null; } - - void residual(const Xpetra::MultiVector &X, - const Xpetra::MultiVector &B, - Xpetra::MultiVector &R) const { - } - - //@} - -}; // TpetraOperator class -#endif - -#if ((!defined(HAVE_TPETRA_INST_SERIAL)) && (!defined(HAVE_TPETRA_INST_INT_LONG_LONG)) && defined(HAVE_XPETRA_EPETRA)) -// specialization for Tpetra Map on EpetraNode and GO=int -template <> -class TpetraOperator - : public Operator { - public: - typedef double Scalar; - typedef long long GlobalOrdinal; - typedef int LocalOrdinal; - typedef EpetraNode Node; - - //@{ - - //! The Map associated with the domain of this operator, which must be compatible with X.getMap(). - virtual Teuchos::RCP > getDomainMap() const { - return Teuchos::null; - } - - //! The Map associated with the range of this operator, which must be compatible with Y.getMap(). - virtual Teuchos::RCP > getRangeMap() const { - return Teuchos::null; - } - - //! \brief Computes the operator-multivector application. - /*! Loosely, performs \f$Y = \alpha \cdot A^{\textrm{mode}} \cdot X + \beta \cdot Y\f$. However, the details of operation - vary according to the values of \c alpha and \c beta. Specifically - - if beta == 0, apply() must overwrite \c Y, so that any values in \c Y (including NaNs) are ignored. - - if alpha == 0, apply() may short-circuit the operator, so that any values in \c X (including NaNs) are ignored. - */ - virtual void - apply(const Xpetra::MultiVector &X, - Xpetra::MultiVector &Y, - Teuchos::ETransp mode = Teuchos::NO_TRANS, - Scalar alpha = Teuchos::ScalarTraits::one(), - Scalar beta = Teuchos::ScalarTraits::zero()) const {} - - /// \brief Whether this operator supports applying the transpose or conjugate transpose. - virtual bool hasTransposeApply() const { return false; } - - //@} - - //! @name Overridden from Teuchos::Describable - //@{ - - //! A simple one-line description of this object. - std::string description() const { return std::string(""); } - - //! Print the object with the given verbosity level to a FancyOStream. - void describe(Teuchos::FancyOStream &out, const Teuchos::EVerbosityLevel verbLevel = Teuchos::Describable::verbLevel_default) const {} - - //@} - - //! @name Xpetra specific - //@{ - - //! TpetraOperator constructor to wrap a Tpetra::Operator object - TpetraOperator(const Teuchos::RCP > &op) {} - - //! Gets the operator out - RCP > getOperator() { return Teuchos::null; } - - void residual(const Xpetra::MultiVector &X, - const Xpetra::MultiVector &B, - Xpetra::MultiVector &R) const { - } - //@} - -}; // TpetraOperator class -#endif - } // namespace Xpetra #define XPETRA_TPETRAOPERATOR_SHORT diff --git a/packages/xpetra/src/StridedMap/Xpetra_StridedMap_decl.hpp b/packages/xpetra/src/StridedMap/Xpetra_StridedMap_decl.hpp index 3632a3b86778..cf17f3e55284 100644 --- a/packages/xpetra/src/StridedMap/Xpetra_StridedMap_decl.hpp +++ b/packages/xpetra/src/StridedMap/Xpetra_StridedMap_decl.hpp @@ -198,19 +198,12 @@ class StridedMap : public virtual Map { RCP> getMap() const; -#ifdef HAVE_XPETRA_TPETRA using local_map_type = typename Xpetra::Map::local_map_type; /// \brief Get the local Map for Kokkos kernels. local_map_type getLocalMap() const { return map_->getLocalMap(); } -#else // HAVE_XPETRA_TPETRA -#ifdef __GNUC__ -#warning \ - "Xpetra Kokkos interface for CrsMatrix is enabled (HAVE_XPETRA_KOKKOS_REFACTOR) but Tpetra is disabled. The Kokkos interface needs Tpetra to be enabled, too." -#endif // __GNUC__ -#endif // HAVE_XPETRA_TPETRA ELSE //@} diff --git a/packages/xpetra/src/Utils/ForwardDeclaration/Xpetra_EpetraCrsGraph_fwd.hpp b/packages/xpetra/src/Utils/ForwardDeclaration/Xpetra_EpetraCrsGraph_fwd.hpp deleted file mode 100644 index cc0e1f40cd67..000000000000 --- a/packages/xpetra/src/Utils/ForwardDeclaration/Xpetra_EpetraCrsGraph_fwd.hpp +++ /dev/null @@ -1,22 +0,0 @@ -// @HEADER -// ***************************************************************************** -// Xpetra: A linear algebra interface package -// -// Copyright 2012 NTESS and the Xpetra contributors. -// SPDX-License-Identifier: BSD-3-Clause -// ***************************************************************************** -// @HEADER - -#ifndef XPETRA_EPETRACRSGRAPH_FWD_HPP -#define XPETRA_EPETRACRSGRAPH_FWD_HPP - -namespace Xpetra { -template -class EpetraCrsGraphT; -} - -#ifndef XPETRA_EPETRACRSGRAPH_SHORT -#define XPETRA_EPETRACRSGRAPH_SHORT -#endif - -#endif // XPETRA_EPETRACRSGRAPH_FWD_HPP diff --git a/packages/xpetra/src/Utils/ForwardDeclaration/Xpetra_EpetraCrsMatrix_fwd.hpp b/packages/xpetra/src/Utils/ForwardDeclaration/Xpetra_EpetraCrsMatrix_fwd.hpp deleted file mode 100644 index 375daa3e5379..000000000000 --- a/packages/xpetra/src/Utils/ForwardDeclaration/Xpetra_EpetraCrsMatrix_fwd.hpp +++ /dev/null @@ -1,24 +0,0 @@ -// @HEADER -// ***************************************************************************** -// Xpetra: A linear algebra interface package -// -// Copyright 2012 NTESS and the Xpetra contributors. -// SPDX-License-Identifier: BSD-3-Clause -// ***************************************************************************** -// @HEADER - -#ifndef XPETRA_EPETRACRSMATRIX_FWD_HPP -#define XPETRA_EPETRACRSMATRIX_FWD_HPP - -#include - -namespace Xpetra { -template -class EpetraCrsMatrixT; -} - -#ifndef XPETRA_EPETRACRSMATRIX_SHORT -#define XPETRA_EPETRACRSMATRIX_SHORT -#endif - -#endif // XPETRA_EPETRACRSMATRIX_FWD_HPP diff --git a/packages/xpetra/src/Utils/ForwardDeclaration/Xpetra_EpetraExport_fwd.hpp b/packages/xpetra/src/Utils/ForwardDeclaration/Xpetra_EpetraExport_fwd.hpp deleted file mode 100644 index 2ac68522f711..000000000000 --- a/packages/xpetra/src/Utils/ForwardDeclaration/Xpetra_EpetraExport_fwd.hpp +++ /dev/null @@ -1,23 +0,0 @@ -// @HEADER -// ***************************************************************************** -// Xpetra: A linear algebra interface package -// -// Copyright 2012 NTESS and the Xpetra contributors. -// SPDX-License-Identifier: BSD-3-Clause -// ***************************************************************************** -// @HEADER - -#ifndef XPETRA_EPETRAEXPORT_FWD_HPP -#define XPETRA_EPETRAEXPORT_FWD_HPP - -namespace Xpetra { -template -class EpetraExportT; -typedef EpetraExportT EpetraExport; -} // namespace Xpetra - -#ifndef XPETRA_EPETRAEXPORT_SHORT -#define XPETRA_EPETRAEXPORT_SHORT -#endif - -#endif // XPETRA_EPETRAEXPORT_FWD_HPP diff --git a/packages/xpetra/src/Utils/ForwardDeclaration/Xpetra_EpetraImport_fwd.hpp b/packages/xpetra/src/Utils/ForwardDeclaration/Xpetra_EpetraImport_fwd.hpp deleted file mode 100644 index 738a0e510ec8..000000000000 --- a/packages/xpetra/src/Utils/ForwardDeclaration/Xpetra_EpetraImport_fwd.hpp +++ /dev/null @@ -1,23 +0,0 @@ -// @HEADER -// ***************************************************************************** -// Xpetra: A linear algebra interface package -// -// Copyright 2012 NTESS and the Xpetra contributors. -// SPDX-License-Identifier: BSD-3-Clause -// ***************************************************************************** -// @HEADER - -#ifndef XPETRA_EPETRAIMPORT_FWD_HPP -#define XPETRA_EPETRAIMPORT_FWD_HPP - -namespace Xpetra { -template -class EpetraImportT; -typedef EpetraImportT EpetraImport; -} // namespace Xpetra - -#ifndef XPETRA_EPETRAIMPORT_SHORT -#define XPETRA_EPETRAIMPORT_SHORT -#endif - -#endif // XPETRA_EPETRAIMPORT_FWD_HPP diff --git a/packages/xpetra/src/Utils/ForwardDeclaration/Xpetra_EpetraIntVector_fwd.hpp b/packages/xpetra/src/Utils/ForwardDeclaration/Xpetra_EpetraIntVector_fwd.hpp deleted file mode 100644 index 8e5781e9f4e1..000000000000 --- a/packages/xpetra/src/Utils/ForwardDeclaration/Xpetra_EpetraIntVector_fwd.hpp +++ /dev/null @@ -1,23 +0,0 @@ -// @HEADER -// ***************************************************************************** -// Xpetra: A linear algebra interface package -// -// Copyright 2012 NTESS and the Xpetra contributors. -// SPDX-License-Identifier: BSD-3-Clause -// ***************************************************************************** -// @HEADER - -#ifndef XPETRA_EPETRAINTVECTOR_FWD_HPP -#define XPETRA_EPETRAINTVECTOR_FWD_HPP - -namespace Xpetra { -template -class EpetraIntVectorT; -typedef EpetraIntVectorT EpetraIntVector; -} // namespace Xpetra - -#ifndef XPETRA_EPETRAINTVECTOR_SHORT -#define XPETRA_EPETRAINTVECTOR_SHORT -#endif - -#endif // XPETRA_EPETRAINTVECTOR_FWD_HPP diff --git a/packages/xpetra/src/Utils/ForwardDeclaration/Xpetra_EpetraMap_fwd.hpp b/packages/xpetra/src/Utils/ForwardDeclaration/Xpetra_EpetraMap_fwd.hpp deleted file mode 100644 index 5fb017acb81c..000000000000 --- a/packages/xpetra/src/Utils/ForwardDeclaration/Xpetra_EpetraMap_fwd.hpp +++ /dev/null @@ -1,23 +0,0 @@ -// @HEADER -// ***************************************************************************** -// Xpetra: A linear algebra interface package -// -// Copyright 2012 NTESS and the Xpetra contributors. -// SPDX-License-Identifier: BSD-3-Clause -// ***************************************************************************** -// @HEADER - -#ifndef XPETRA_EPETRAMAP_FWD_HPP -#define XPETRA_EPETRAMAP_FWD_HPP - -namespace Xpetra { -template -class EpetraMapT; -typedef EpetraMapT EpetraMap; -} // namespace Xpetra - -#ifndef XPETRA_EPETRAMAP_SHORT -#define XPETRA_EPETRAMAP_SHORT -#endif - -#endif // XPETRA_EPETRAMAP_FWD_HPP diff --git a/packages/xpetra/src/Utils/ForwardDeclaration/Xpetra_EpetraMultiVector_fwd.hpp b/packages/xpetra/src/Utils/ForwardDeclaration/Xpetra_EpetraMultiVector_fwd.hpp deleted file mode 100644 index 1772e89f83d6..000000000000 --- a/packages/xpetra/src/Utils/ForwardDeclaration/Xpetra_EpetraMultiVector_fwd.hpp +++ /dev/null @@ -1,23 +0,0 @@ -// @HEADER -// ***************************************************************************** -// Xpetra: A linear algebra interface package -// -// Copyright 2012 NTESS and the Xpetra contributors. -// SPDX-License-Identifier: BSD-3-Clause -// ***************************************************************************** -// @HEADER - -#ifndef XPETRA_EPETRAMULTIVECTOR_FWD_HPP -#define XPETRA_EPETRAMULTIVECTOR_FWD_HPP - -namespace Xpetra { -template -class EpetraMultiVectorT; -typedef EpetraMultiVectorT EpetraMultiVector; -} // namespace Xpetra - -#ifndef XPETRA_EPETRAMULTIVECTOR_SHORT -#define XPETRA_EPETRAMULTIVECTOR_SHORT -#endif - -#endif // XPETRA_EPETRAMULTIVECTOR_FWD_HPP diff --git a/packages/xpetra/src/Utils/ForwardDeclaration/Xpetra_EpetraOperator_fwd.hpp b/packages/xpetra/src/Utils/ForwardDeclaration/Xpetra_EpetraOperator_fwd.hpp deleted file mode 100644 index c6c29809939d..000000000000 --- a/packages/xpetra/src/Utils/ForwardDeclaration/Xpetra_EpetraOperator_fwd.hpp +++ /dev/null @@ -1,27 +0,0 @@ -// @HEADER -// ***************************************************************************** -// Xpetra: A linear algebra interface package -// -// Copyright 2012 NTESS and the Xpetra contributors. -// SPDX-License-Identifier: BSD-3-Clause -// ***************************************************************************** -// @HEADER - -#ifndef XPETRA_EPETRAOPERATOR_FWD_HPP -#define XPETRA_EPETRAOPERATOR_FWD_HPP - -#include - -namespace Xpetra { -template -class EpetraOperatorT; -#ifndef XPETRA_EPETRA_NO_32BIT_GLOBAL_INDICES -typedef EpetraOperatorT EpetraOperator; -#endif -} // namespace Xpetra - -#ifndef XPETRA_EPETRAOPERATOR_SHORT -#define XPETRA_EPETRAOPERATOR_SHORT -#endif - -#endif // XPETRA_EPETRAOPERATOR_FWD_HPP diff --git a/packages/xpetra/src/Utils/ForwardDeclaration/Xpetra_EpetraVector_fwd.hpp b/packages/xpetra/src/Utils/ForwardDeclaration/Xpetra_EpetraVector_fwd.hpp deleted file mode 100644 index 98804d2b41fe..000000000000 --- a/packages/xpetra/src/Utils/ForwardDeclaration/Xpetra_EpetraVector_fwd.hpp +++ /dev/null @@ -1,23 +0,0 @@ -// @HEADER -// ***************************************************************************** -// Xpetra: A linear algebra interface package -// -// Copyright 2012 NTESS and the Xpetra contributors. -// SPDX-License-Identifier: BSD-3-Clause -// ***************************************************************************** -// @HEADER - -#ifndef XPETRA_EPETRAVECTOR_FWD_HPP -#define XPETRA_EPETRAVECTOR_FWD_HPP - -namespace Xpetra { -template -class EpetraVectorT; -typedef EpetraVectorT EpetraVector; -} // namespace Xpetra - -#ifndef XPETRA_EPETRAVECTOR_SHORT -#define XPETRA_EPETRAVECTOR_SHORT -#endif - -#endif // XPETRA_EPETRAVECTOR_FWD_HPP diff --git a/packages/xpetra/src/Utils/Xpetra_CrsMatrixUtils.hpp b/packages/xpetra/src/Utils/Xpetra_CrsMatrixUtils.hpp index 7b046bef2b63..e0b584c0beb4 100644 --- a/packages/xpetra/src/Utils/Xpetra_CrsMatrixUtils.hpp +++ b/packages/xpetra/src/Utils/Xpetra_CrsMatrixUtils.hpp @@ -14,13 +14,7 @@ #include "Xpetra_Exceptions.hpp" #include "Xpetra_Map.hpp" // definition of UnderlyingLib -#ifdef HAVE_XPETRA_EPETRA -#include "Epetra_Util.h" -#endif - -#ifdef HAVE_XPETRA_TPETRA #include "Tpetra_Import_Util2.hpp" -#endif namespace Xpetra { @@ -46,70 +40,8 @@ class CrsMatrixUtils { const Teuchos::ArrayView& CRS_vals, const UnderlyingLib lib) { if (lib == Xpetra::UseEpetra) { -#if defined(HAVE_XPETRA_EPETRA) - throw(Xpetra::Exceptions::RuntimeError("Xpetra::CrsMatrixUtils::sortCrsEntries only available for GO=int or GO=long long with EpetraNode (Serial or OpenMP depending on configuration)")); -#endif // HAVE_XPETRA_EPETRA - } else if (lib == Xpetra::UseTpetra) { -#ifdef HAVE_XPETRA_TPETRA - Tpetra::Import_Util::sortCrsEntries(CRS_rowptr, CRS_colind, CRS_vals); -#endif // HAVE_XPETRA_TPETRA - } - - return; - } - - /// \brief Sort and merge the entries of the (raw CSR) matrix by column index - /// within each row. - static void sortAndMergeCrsEntries(const Teuchos::ArrayView& CRS_rowptr, - const Teuchos::ArrayView& CRS_colind, - const Teuchos::ArrayView& CRS_vals, - const UnderlyingLib lib) { - if (lib == Xpetra::UseEpetra) { -#if defined(HAVE_XPETRA_EPETRA) - throw(Xpetra::Exceptions::RuntimeError("Xpetra::CrsMatrixUtils::sortAndMergeCrsEntries only available for GO=int or GO=long long with EpetraNode (Serial or OpenMP depending on configuration)")); -#endif // HAVE_XPETRA_EPETRA - } else if (lib == Xpetra::UseTpetra) { -#ifdef HAVE_XPETRA_TPETRA - Tpetra::Import_Util::sortAndMergeCrsEntries(CRS_rowptr, CRS_colind, CRS_vals); -#endif // HAVE_XPETRA_TPETRA - } - - return; - } - -}; // end class CrsMatrixUtils - -#ifdef HAVE_XPETRA_EPETRA -// Specialization for double, int, int, EpetraNode -template <> -class CrsMatrixUtils { - typedef double Scalar; - typedef int LocalOrdinal; - typedef int GlobalOrdinal; - typedef EpetraNode Node; -#undef XPETRA_CRSMATRIXUTILS_SHORT - - public: - /// \brief Sort the entries of the (raw CSR) matrix by column index - /// within each row. - static void sortCrsEntries(const Teuchos::ArrayView& CRS_rowptr, - const Teuchos::ArrayView& CRS_colind, - const Teuchos::ArrayView& CRS_vals, - const UnderlyingLib lib) { - if (lib == Xpetra::UseEpetra) { -#if defined(HAVE_XPETRA_EPETRA) - int rv = Epetra_Util::SortCrsEntries(Teuchos::as(CRS_rowptr.size() - 1), - CRS_rowptr.getRawPtr(), - CRS_colind.getRawPtr(), - CRS_vals.getRawPtr()); - if (rv != 0) { - throw Exceptions::RuntimeError("Epetra_Util::SortCrsEntries() return value of " + Teuchos::toString(rv)); - } -#endif // HAVE_XPETRA_EPETRA } else if (lib == Xpetra::UseTpetra) { -#ifdef HAVE_XPETRA_TPETRA Tpetra::Import_Util::sortCrsEntries(CRS_rowptr, CRS_colind, CRS_vals); -#endif // HAVE_XPETRA_TPETRA } return; @@ -122,19 +54,8 @@ class CrsMatrixUtils { const Teuchos::ArrayView& CRS_vals, const UnderlyingLib lib) { if (lib == Xpetra::UseEpetra) { -#if defined(HAVE_XPETRA_EPETRA) - int rv = Epetra_Util::SortAndMergeCrsEntries(Teuchos::as(CRS_rowptr.size() - 1), - CRS_rowptr.getRawPtr(), - CRS_colind.getRawPtr(), - CRS_vals.getRawPtr()); - if (rv != 0) { - throw Exceptions::RuntimeError("Epetra_Util::SortCrsEntries() return value of " + Teuchos::toString(rv)); - } -#endif // HAVE_XPETRA_EPETRA } else if (lib == Xpetra::UseTpetra) { -#ifdef HAVE_XPETRA_TPETRA Tpetra::Import_Util::sortAndMergeCrsEntries(CRS_rowptr, CRS_colind, CRS_vals); -#endif // HAVE_XPETRA_TPETRA } return; @@ -142,69 +63,6 @@ class CrsMatrixUtils { }; // end class CrsMatrixUtils -// Specialization for double, int, long long, EpetraNode -template <> -class CrsMatrixUtils { - typedef double Scalar; - typedef int LocalOrdinal; - typedef long long GlobalOrdinal; - typedef EpetraNode Node; -#undef XPETRA_CRSMATRIXUTILS_SHORT - - public: - /// \brief Sort the entries of the (raw CSR) matrix by column index - /// within each row. - static void sortCrsEntries(const Teuchos::ArrayView& CRS_rowptr, - const Teuchos::ArrayView& CRS_colind, - const Teuchos::ArrayView& CRS_vals, - const UnderlyingLib lib) { - if (lib == Xpetra::UseEpetra) { -#if defined(HAVE_XPETRA_EPETRA) - int rv = Epetra_Util::SortCrsEntries(Teuchos::as(CRS_rowptr.size() - 1), - CRS_rowptr.getRawPtr(), - CRS_colind.getRawPtr(), - CRS_vals.getRawPtr()); - if (rv != 0) { - throw Exceptions::RuntimeError("Epetra_Util::SortCrsEntries() return value of " + Teuchos::toString(rv)); - } -#endif // HAVE_XPETRA_EPETRA - } else if (lib == Xpetra::UseTpetra) { -#ifdef HAVE_XPETRA_TPETRA - Tpetra::Import_Util::sortCrsEntries(CRS_rowptr, CRS_colind, CRS_vals); -#endif // HAVE_XPETRA_TPETRA - } - - return; - } - - /// \brief Sort and merge the entries of the (raw CSR) matrix by column index - /// within each row. - static void sortAndMergeCrsEntries(const Teuchos::ArrayView& CRS_rowptr, - const Teuchos::ArrayView& CRS_colind, - const Teuchos::ArrayView& CRS_vals, - const UnderlyingLib lib) { - if (lib == Xpetra::UseEpetra) { -#if defined(HAVE_XPETRA_EPETRA) - int rv = Epetra_Util::SortAndMergeCrsEntries(Teuchos::as(CRS_rowptr.size() - 1), - CRS_rowptr.getRawPtr(), - CRS_colind.getRawPtr(), - CRS_vals.getRawPtr()); - if (rv != 0) { - throw Exceptions::RuntimeError("Epetra_Util::SortCrsEntries() return value of " + Teuchos::toString(rv)); - } -#endif // HAVE_XPETRA_EPETRA - } else if (lib == Xpetra::UseTpetra) { -#ifdef HAVE_XPETRA_TPETRA - Tpetra::Import_Util::sortAndMergeCrsEntries(CRS_rowptr, CRS_colind, CRS_vals); -#endif // HAVE_XPETRA_TPETRA - } - - return; - } - -}; // end class CrsMatrixUtils -#endif // HAVE_XPETRA_EPETRA for Epetra scpecialization - } // end namespace Xpetra #define XPETRA_CRSMATRIXUTILS_SHORT diff --git a/packages/xpetra/src/Utils/Xpetra_ETI_3arg.hpp b/packages/xpetra/src/Utils/Xpetra_ETI_3arg.hpp index b2968fde52ca..dbe307129039 100644 --- a/packages/xpetra/src/Utils/Xpetra_ETI_3arg.hpp +++ b/packages/xpetra/src/Utils/Xpetra_ETI_3arg.hpp @@ -14,41 +14,15 @@ // We need to define these typedefs as it is not possible to properly expand // macros with colons in them -#if defined(HAVE_XPETRA_TPETRA) #include #include TPETRA_ETI_MANGLING_TYPEDEFS() -#endif -#if defined(HAVE_XPETRA_EPETRA) -#include -#endif - -#if (defined(HAVE_XPETRA_EPETRA) && defined(EPETRA_HAVE_OMP) && (!defined(HAVE_XPETRA_TPETRA) || !defined(HAVE_TPETRA_INST_OPENMP) || !defined(HAVE_TPETRA_INST_INT_INT))) -// Epetra is enabled with OpenMP node, but Tpetra is a) not enabled, or b) is not instantiated on OpenMP, or c) is not instantiated on OpenMP with -typedef Tpetra::KokkosCompat::KokkosOpenMPWrapperNode EpetraNode; -#elif (defined(HAVE_XPETRA_EPETRA) && !defined(EPETRA_HAVE_OMP) && (!defined(HAVE_XPETRA_TPETRA) || !defined(HAVE_TPETRA_INST_SERIAL) || !defined(HAVE_TPETRA_INST_INT_INT))) -// Epetra is enabled with Serial node, but Tpetra is a) not enabled, or b) is not instantiated on Serial, or c) is not instantiated on Serial with -typedef Tpetra::KokkosCompat::KokkosSerialWrapperNode EpetraNode; -#endif // Epetra = on, Tpetra = off -#if defined(HAVE_XPETRA_EPETRA) && !defined(HAVE_XPETRA_TPETRA) -XPETRA_ETI_GROUP(int, int, EpetraNode) -#endif // Epetra = on, Tpetra = on -#if defined(HAVE_XPETRA_EPETRA) && defined(HAVE_XPETRA_TPETRA) -TPETRA_INSTANTIATE_LGN(XPETRA_ETI_GROUP) -#if ((defined(EPETRA_HAVE_OMP) && (!defined(HAVE_TPETRA_INST_OPENMP) || !defined(HAVE_TPETRA_INST_INT_INT))) || \ - (!defined(EPETRA_HAVE_OMP) && (!defined(HAVE_TPETRA_INST_SERIAL) || !defined(HAVE_TPETRA_INST_INT_INT)))) -XPETRA_ETI_GROUP(int, int, EpetraNode) -#endif - -#endif // Epetra = off, Tpetra = on -#if !defined(HAVE_XPETRA_EPETRA) && defined(HAVE_XPETRA_TPETRA) TPETRA_INSTANTIATE_LGN(XPETRA_ETI_GROUP) -#endif #endif // ifndef XPETRA_ETI_3ARGUMENT_HPP diff --git a/packages/xpetra/src/Utils/Xpetra_ETI_4arg.hpp b/packages/xpetra/src/Utils/Xpetra_ETI_4arg.hpp index 15ed4ed589ac..5c8556377200 100644 --- a/packages/xpetra/src/Utils/Xpetra_ETI_4arg.hpp +++ b/packages/xpetra/src/Utils/Xpetra_ETI_4arg.hpp @@ -14,41 +14,15 @@ // We need to define these typedefs as it is not possible to properly expand // macros with colons in them -#if defined(HAVE_XPETRA_TPETRA) #include #include TPETRA_ETI_MANGLING_TYPEDEFS() -#endif -#if defined(HAVE_XPETRA_EPETRA) -#include -#endif - -#if (defined(HAVE_XPETRA_EPETRA) && defined(EPETRA_HAVE_OMP) && (!defined(HAVE_XPETRA_TPETRA) || !defined(HAVE_TPETRA_INST_OPENMP) || !defined(HAVE_TPETRA_INST_INT_INT))) -// Epetra is enabled with OpenMP node, but Tpetra is a) not enabled, or b) is not instantiated on OpenMP, or c) is not instantiated on OpenMP with -typedef Tpetra::KokkosCompat::KokkosOpenMPWrapperNode EpetraNode; -#elif (defined(HAVE_XPETRA_EPETRA) && !defined(EPETRA_HAVE_OMP) && (!defined(HAVE_XPETRA_TPETRA) || !defined(HAVE_TPETRA_INST_SERIAL) || !defined(HAVE_TPETRA_INST_INT_INT))) -// Epetra is enabled with Serial node, but Tpetra is a) not enabled, or b) is not instantiated on Serial, or c) is not instantiated on Serial with -typedef Tpetra::KokkosCompat::KokkosSerialWrapperNode EpetraNode; -#endif // Epetra = on, Tpetra = off -#if defined(HAVE_XPETRA_EPETRA) && !defined(HAVE_XPETRA_TPETRA) -XPETRA_ETI_GROUP(double, int, int, EpetraNode) -#endif // Epetra = on, Tpetra = on -#if defined(HAVE_XPETRA_EPETRA) && defined(HAVE_XPETRA_TPETRA) -TPETRA_INSTANTIATE_SLGN_NO_ORDINAL_SCALAR(XPETRA_ETI_GROUP) -#if ((defined(EPETRA_HAVE_OMP) && (!defined(HAVE_TPETRA_INST_OPENMP) || !defined(HAVE_TPETRA_INST_INT_INT))) || \ - (!defined(EPETRA_HAVE_OMP) && (!defined(HAVE_TPETRA_INST_SERIAL) || !defined(HAVE_TPETRA_INST_INT_INT)))) -XPETRA_ETI_GROUP(double, int, int, EpetraNode) -#endif - -#endif // Epetra = off, Tpetra = on -#if !defined(HAVE_XPETRA_EPETRA) && defined(HAVE_XPETRA_TPETRA) TPETRA_INSTANTIATE_SLGN_NO_ORDINAL_SCALAR(XPETRA_ETI_GROUP) -#endif #endif // ifndef XPETRA_ETI_4ARGUMENT_HPP diff --git a/packages/xpetra/src/Utils/Xpetra_ETI_4arg_mv.hpp b/packages/xpetra/src/Utils/Xpetra_ETI_4arg_mv.hpp index 622fd37acbf7..dbbead13c62c 100644 --- a/packages/xpetra/src/Utils/Xpetra_ETI_4arg_mv.hpp +++ b/packages/xpetra/src/Utils/Xpetra_ETI_4arg_mv.hpp @@ -14,41 +14,15 @@ // We need to define these typedefs as it is not possible to properly expand // macros with colons in them -#if defined(HAVE_XPETRA_TPETRA) #include #include TPETRA_ETI_MANGLING_TYPEDEFS() -#endif -#if defined(HAVE_XPETRA_EPETRA) -#include -#endif - -#if (defined(HAVE_XPETRA_EPETRA) && defined(EPETRA_HAVE_OMP) && (!defined(HAVE_XPETRA_TPETRA) || !defined(HAVE_TPETRA_INST_OPENMP) || !defined(HAVE_TPETRA_INST_INT_INT))) -// Epetra is enabled with OpenMP node, but Tpetra is a) not enabled, or b) is not instantiated on OpenMP, or c) is not instantiated on OpenMP with -typedef Tpetra::KokkosCompat::KokkosOpenMPWrapperNode EpetraNode; -#elif (defined(HAVE_XPETRA_EPETRA) && !defined(EPETRA_HAVE_OMP) && (!defined(HAVE_XPETRA_TPETRA) || !defined(HAVE_TPETRA_INST_SERIAL) || !defined(HAVE_TPETRA_INST_INT_INT))) -// Epetra is enabled with Serial node, but Tpetra is a) not enabled, or b) is not instantiated on Serial, or c) is not instantiated on Serial with -typedef Tpetra::KokkosCompat::KokkosSerialWrapperNode EpetraNode; -#endif // Epetra = on, Tpetra = off -#if defined(HAVE_XPETRA_EPETRA) && !defined(HAVE_XPETRA_TPETRA) -XPETRA_ETI_GROUP(double, int, int, EpetraNode) -#endif // Epetra = on, Tpetra = on -#if defined(HAVE_XPETRA_EPETRA) && defined(HAVE_XPETRA_TPETRA) -TPETRA_INSTANTIATE_MULTIVECTOR(XPETRA_ETI_GROUP) -#if ((defined(EPETRA_HAVE_OMP) && (!defined(HAVE_TPETRA_INST_OPENMP) || !defined(HAVE_TPETRA_INST_INT_INT))) || \ - (!defined(EPETRA_HAVE_OMP) && (!defined(HAVE_TPETRA_INST_SERIAL) || !defined(HAVE_TPETRA_INST_INT_INT)))) -XPETRA_ETI_GROUP(double, int, int, EpetraNode) -#endif - -#endif // Epetra = off, Tpetra = on -#if !defined(HAVE_XPETRA_EPETRA) && defined(HAVE_XPETRA_TPETRA) TPETRA_INSTANTIATE_MULTIVECTOR(XPETRA_ETI_GROUP) -#endif #endif // ifndef XPETRA_ETI_4ARG_MV_HPP diff --git a/packages/xpetra/src/Utils/Xpetra_EpetraExceptions.hpp b/packages/xpetra/src/Utils/Xpetra_EpetraExceptions.hpp deleted file mode 100644 index ecea98cefc31..000000000000 --- a/packages/xpetra/src/Utils/Xpetra_EpetraExceptions.hpp +++ /dev/null @@ -1,40 +0,0 @@ -// @HEADER -// ***************************************************************************** -// Xpetra: A linear algebra interface package -// -// Copyright 2012 NTESS and the Xpetra contributors. -// SPDX-License-Identifier: BSD-3-Clause -// ***************************************************************************** -// @HEADER - -#ifndef XPETRA_EPETRAEXCEPTIONS_HPP -#define XPETRA_EPETRAEXCEPTIONS_HPP - -#include "Xpetra_ConfigDefs.hpp" - -#ifndef HAVE_XPETRA_EPETRA -#error This file should be included only if HAVE_XPETRA_EPETRA is defined. -#endif - -#include "Xpetra_Exceptions.hpp" - -// This macro takes in argument a source code line. -// It catchs exceptions that could be throwed by 'sourceCode' -// If an exception is throw in any node, then all the node throws -// an std::invalid_argument exceptions. -#define IF_EPETRA_EXCEPTION_THEN_THROW_GLOBAL_INVALID_ARG(sourceCode) \ - { \ - int localFailure = 0; /* 0 == success */ \ - try { \ - sourceCode; \ - } catch (int /*epetraErrCode*/) { \ - localFailure = 1; /* 1 == failure */ \ - } \ - \ - { \ - int globalFailure = 0; /* 0 == success */ \ - Teuchos::reduceAll(*comm, Teuchos::REDUCE_SUM, localFailure, Teuchos::outArg(globalFailure)); \ - TEUCHOS_TEST_FOR_EXCEPTION(globalFailure != 0, std::invalid_argument, "Epetra threw exception"); \ - } \ - } -#endif diff --git a/packages/xpetra/src/Utils/Xpetra_EpetraUtils.cpp b/packages/xpetra/src/Utils/Xpetra_EpetraUtils.cpp deleted file mode 100644 index 7527133be840..000000000000 --- a/packages/xpetra/src/Utils/Xpetra_EpetraUtils.cpp +++ /dev/null @@ -1,81 +0,0 @@ -// @HEADER -// ***************************************************************************** -// Xpetra: A linear algebra interface package -// -// Copyright 2012 NTESS and the Xpetra contributors. -// SPDX-License-Identifier: BSD-3-Clause -// ***************************************************************************** -// @HEADER - -#include "Xpetra_ConfigDefs.hpp" - -#ifdef HAVE_XPETRA_EPETRA - -#include "Xpetra_EpetraUtils.hpp" - -// header files for comm objects conversion -#ifdef HAVE_MPI -#include -#include -#include -#endif -#include -#ifdef HAVE_MPI -#include -#endif -#include - -#include "Xpetra_Exceptions.hpp" - -namespace Xpetra { - -using Teuchos::RCP; - -const RCP toEpetra(const RCP >& comm) { -#ifdef HAVE_MPI - const RCP > mpiComm = Teuchos::rcp_dynamic_cast >(comm); - if (mpiComm != Teuchos::null) { - return Teuchos::rcp(new Epetra_MpiComm(*mpiComm->getRawMpiComm())); - } else -#endif - if ((Teuchos::rcp_dynamic_cast >(comm) != Teuchos::null)) - return Teuchos::rcp(new Epetra_SerialComm()); - else - TEUCHOS_TEST_FOR_EXCEPTION(1, Xpetra::Exceptions::BadCast, "Cannot convert a Teuchos::Comm to an Epetra_Comm: The exact type of the Teuchos::Comm object is unknown"); -} - -const RCP > toXpetra(const Epetra_Comm& comm) { -#ifdef HAVE_MPI - try { - const Epetra_MpiComm& mpiComm = dynamic_cast(comm); - // We need to pass some tag to the Teuchos::MpiComm constructor. We - // cannot use Epetra's GetMpiTag() as that increases the tag counter. - const int MAGIC_TAG = 26077; - return Teuchos::rcp(new Teuchos::MpiComm(Teuchos::opaqueWrapper(mpiComm.Comm()), MAGIC_TAG)); - } catch (std::bad_cast& /*b*/) { - } -#endif - try { - const Epetra_SerialComm& serialComm = dynamic_cast(comm); - serialComm.NumProc(); // avoid compilation warning - return Teuchos::rcp(new Teuchos::SerialComm()); - } catch (std::bad_cast& /*b*/) { - TEUCHOS_TEST_FOR_EXCEPTION(1, Xpetra::Exceptions::BadCast, "Cannot convert an Epetra_Comm to a Teuchos::Comm: The exact type of the Epetra_Comm object is unknown"); - } -} - -bool toEpetra(Teuchos::ETransp trans) { - if (trans == Teuchos::NO_TRANS) - return false; - else if (trans == Teuchos::TRANS) - return true; - else { - TEUCHOS_TEST_FOR_EXCEPTION((trans != Teuchos::NO_TRANS) && (trans == Teuchos::TRANS), Xpetra::Exceptions::NotImplemented, "Cannot convert Teuchos::ETransp to a boolean."); - } - - return false; // to skip a compilation warning msg. -} - -} // namespace Xpetra - -#endif diff --git a/packages/xpetra/src/Utils/Xpetra_EpetraUtils.hpp b/packages/xpetra/src/Utils/Xpetra_EpetraUtils.hpp deleted file mode 100644 index e761fcbc798d..000000000000 --- a/packages/xpetra/src/Utils/Xpetra_EpetraUtils.hpp +++ /dev/null @@ -1,44 +0,0 @@ -// @HEADER -// ***************************************************************************** -// Xpetra: A linear algebra interface package -// -// Copyright 2012 NTESS and the Xpetra contributors. -// SPDX-License-Identifier: BSD-3-Clause -// ***************************************************************************** -// @HEADER - -#ifndef XPETRA_COMM_HPP -#define XPETRA_COMM_HPP - -//! Conversion between Epetra and Teuchos objects - -#include "Xpetra_ConfigDefs.hpp" - -#ifdef HAVE_XPETRA_EPETRA - -// header files for comm objects conversion -#include -#include - -// header file for Teuchos::ETransp -#include - -namespace Xpetra { - -using Teuchos::RCP; - -//! Convert a Teuchos_Comm to an Epetra_Comm. -const RCP toEpetra(const RCP >& comm); - -//! Convert an Epetra_Comm.to a Teuchos_Comm. -const RCP > toXpetra(const Epetra_Comm& comm); - -//! Convert a Teuchos::ETransp to an Epetra boolean. -bool toEpetra(Teuchos::ETransp); - -} // namespace Xpetra -#endif // HAVE_XPETRA_EPETRA - -#endif // XPETRA_EPETRACOMM_HPP - -// TODO: remove return RCP for toEpetra? diff --git a/packages/xpetra/src/Utils/Xpetra_Exceptions.hpp b/packages/xpetra/src/Utils/Xpetra_Exceptions.hpp index a3a18d16b6c2..254637f6e671 100644 --- a/packages/xpetra/src/Utils/Xpetra_Exceptions.hpp +++ b/packages/xpetra/src/Utils/Xpetra_Exceptions.hpp @@ -30,13 +30,7 @@ const RCP& newObj = Teuchos::rcp_dynamic_cast(obj); \ TEUCHOS_TEST_FOR_EXCEPTION(newObj == Teuchos::null, Xpetra::Exceptions::BadCast, "Cannot cast '" #obj "' to a " #type ". " #exceptionMsg); -#ifdef HAVE_XPETRA_EPETRA -#define XPETRA_FACTORY_ERROR_IF_EPETRA(lib) \ - if ((lib) == ::Xpetra::UseEpetra) \ - TEUCHOS_TEST_FOR_EXCEPTION(1, ::Xpetra::Exceptions::BadCast, "Epetra can only be used with Scalar=double and LocalOrdinal=GlobalOrdinal=int on a serial node"); -#else #define XPETRA_FACTORY_ERROR_IF_EPETRA(lib) -#endif #define XPETRA_FACTORY_END TEUCHOS_TEST_FOR_EXCEPTION(1, ::Xpetra::Exceptions::BadCast, "Unknown map->lib() type. Did you compile with Epetra and Tpetra support?"); diff --git a/packages/xpetra/src/Utils/Xpetra_Helpers_decl.hpp b/packages/xpetra/src/Utils/Xpetra_Helpers_decl.hpp index 1633f738d413..a3c8aac06ae5 100644 --- a/packages/xpetra/src/Utils/Xpetra_Helpers_decl.hpp +++ b/packages/xpetra/src/Utils/Xpetra_Helpers_decl.hpp @@ -18,17 +18,6 @@ #include "Xpetra_Map.hpp" #include "Xpetra_Matrix.hpp" -#ifdef HAVE_XPETRA_EPETRA -#include -#endif - -#ifdef HAVE_XPETRA_EPETRAEXT -#include -#include -#include -#endif // HAVE_XPETRA_EPETRAEXT - -#ifdef HAVE_XPETRA_TPETRA #include #include #include @@ -39,7 +28,6 @@ #include #include #include -#endif // HAVE_XPETRA_TPETRA namespace Xpetra { @@ -57,17 +45,7 @@ class Helpers { #include "Xpetra_UseShortNames.hpp" public: -#ifdef HAVE_XPETRA_EPETRA - static RCP Op2EpetraCrs(RCP Op); - - static RCP Op2NonConstEpetraCrs(RCP Op); - - static const Epetra_CrsMatrix& Op2EpetraCrs(const Matrix& Op); - - static Epetra_CrsMatrix& Op2NonConstEpetraCrs(const Matrix& Op); -#endif // HAVE_XPETRA_EPETRA -#ifdef HAVE_XPETRA_TPETRA static RCP > Op2TpetraCrs(RCP Op); static RCP > Op2NonConstTpetraCrs(RCP Op); @@ -90,24 +68,13 @@ class Helpers { static bool isTpetraBlockCrs(RCP Op); - static bool isTpetraBlockCrs(const Matrix& Op); -#else // HAVE_XPETRA_TPETRA - static bool isTpetraCrs(const Matrix& Op); - static bool isTpetraBlockCrs(const Matrix& Op); -#endif // HAVE_XPETRA_TPETRA - -#ifdef HAVE_XPETRA_TPETRA using tcrs_matrix_type = Tpetra::CrsMatrix; static Teuchos::RCP tpetraAdd( const tcrs_matrix_type& A, bool transposeA, const typename tcrs_matrix_type::scalar_type alpha, const tcrs_matrix_type& B, bool transposeB, const typename tcrs_matrix_type::scalar_type beta); -#endif -#ifdef HAVE_XPETRA_EPETRAEXT - static void epetraExtMult(const Matrix& A, bool transposeA, const Matrix& B, bool transposeB, Matrix& C, bool fillCompleteResult); -#endif }; } // namespace Xpetra diff --git a/packages/xpetra/src/Utils/Xpetra_Helpers_def.hpp b/packages/xpetra/src/Utils/Xpetra_Helpers_def.hpp index 5ae82730ad00..98a6d3442a9b 100644 --- a/packages/xpetra/src/Utils/Xpetra_Helpers_def.hpp +++ b/packages/xpetra/src/Utils/Xpetra_Helpers_def.hpp @@ -14,73 +14,6 @@ namespace Xpetra { -#ifdef HAVE_XPETRA_EPETRA -template -RCP Helpers::Op2EpetraCrs(RCP Op) { - // Get the underlying Epetra Mtx - RCP crsOp = Teuchos::rcp_dynamic_cast(Op); - TEUCHOS_TEST_FOR_EXCEPTION(crsOp == Teuchos::null, Xpetra::Exceptions::BadCast, - "Cast from Xpetra::Matrix to Xpetra::CrsMatrixWrap failed"); - - RCP tmp_CrsMtx = crsOp->getCrsMatrix(); - const RCP>& tmp_ECrsMtx = Teuchos::rcp_dynamic_cast>(tmp_CrsMtx); - TEUCHOS_TEST_FOR_EXCEPTION(tmp_ECrsMtx == Teuchos::null, Exceptions::BadCast, - "Cast from Xpetra::CrsMatrix to Xpetra::EpetraCrsMatrix failed"); - - return tmp_ECrsMtx->getEpetra_CrsMatrix(); -} - -template -RCP Helpers::Op2NonConstEpetraCrs(RCP Op) { - RCP A; - // Get the underlying Epetra Mtx - RCP crsOp = Teuchos::rcp_dynamic_cast(Op); - TEUCHOS_TEST_FOR_EXCEPTION(crsOp == Teuchos::null, Exceptions::BadCast, - "Cast from Xpetra::Matrix to Xpetra::CrsMatrixWrap failed"); - - RCP tmp_CrsMtx = crsOp->getCrsMatrix(); - const RCP>& tmp_ECrsMtx = Teuchos::rcp_dynamic_cast>(tmp_CrsMtx); - TEUCHOS_TEST_FOR_EXCEPTION(tmp_ECrsMtx == Teuchos::null, Exceptions::BadCast, "Cast from Xpetra::CrsMatrix to Xpetra::EpetraCrsMatrix failed"); - - return tmp_ECrsMtx->getEpetra_CrsMatrixNonConst(); -} - -template -const Epetra_CrsMatrix& Helpers::Op2EpetraCrs(const Matrix& Op) { - // Get the underlying Epetra Mtx - try { - const CrsMatrixWrap& crsOp = dynamic_cast(Op); - RCP tmp_CrsMtx = crsOp.getCrsMatrix(); - const RCP>& tmp_ECrsMtx = Teuchos::rcp_dynamic_cast>(tmp_CrsMtx); - TEUCHOS_TEST_FOR_EXCEPTION(tmp_ECrsMtx == Teuchos::null, Xpetra::Exceptions::BadCast, - "Cast from Xpetra::CrsMatrix to Xpetra::EpetraCrsMatrix failed"); - - return *tmp_ECrsMtx->getEpetra_CrsMatrix(); - - } catch (...) { - throw(Xpetra::Exceptions::BadCast("Cast from Xpetra::Matrix to Xpetra::CrsMatrixWrap failed")); - } -} - -template -Epetra_CrsMatrix& Helpers::Op2NonConstEpetraCrs(const Matrix& Op) { - RCP A; - // Get the underlying Epetra Mtx - try { - const CrsMatrixWrap& crsOp = dynamic_cast(Op); - RCP tmp_CrsMtx = crsOp.getCrsMatrix(); - const RCP>& tmp_ECrsMtx = Teuchos::rcp_dynamic_cast>(tmp_CrsMtx); - TEUCHOS_TEST_FOR_EXCEPTION(tmp_ECrsMtx == Teuchos::null, Xpetra::Exceptions::BadCast, "Cast from Xpetra::CrsMatrix to Xpetra::EpetraCrsMatrix failed"); - - return *Teuchos::rcp_const_cast(tmp_ECrsMtx->getEpetra_CrsMatrix()); - - } catch (...) { - throw(Xpetra::Exceptions::BadCast("Cast from Xpetra::Matrix to Xpetra::CrsMatrixWrap failed")); - } -} -#endif // HAVE_XPETRA_EPETRA - -#ifdef HAVE_XPETRA_TPETRA template RCP> Helpers::Op2TpetraCrs(RCP Op) { // Get the underlying Tpetra Mtx @@ -239,20 +172,7 @@ bool Helpers::isTpetraBlockCrs(const return false; } } -#else // HAVE_XPETRA_TPETRA -template -bool Helpers::isTpetraCrs(const Matrix& Op) { - return false; -} - -template -bool Helpers::isTpetraBlockCrs(const Matrix& Op) { - return false; -} - -#endif // HAVE_XPETRA_TPETRA -#ifdef HAVE_XPETRA_TPETRA template Teuchos::RCP> Helpers::tpetraAdd( const tcrs_matrix_type& A, bool transposeA, const typename tcrs_matrix_type::scalar_type alpha, @@ -309,55 +229,6 @@ Teuchos::RCP> Helpers< return rcp(new CrsWrap(rcp_implicit_cast(rcp(new XTCrsType(C))))); } } -#endif - -#ifdef HAVE_XPETRA_EPETRAEXT -template -void Helpers::epetraExtMult(const Matrix& A, bool transposeA, const Matrix& B, bool transposeB, Matrix& C, bool fillCompleteResult) { - Epetra_CrsMatrix& epA = Op2NonConstEpetraCrs(A); - Epetra_CrsMatrix& epB = Op2NonConstEpetraCrs(B); - Epetra_CrsMatrix& epC = Op2NonConstEpetraCrs(C); - // Want a static profile (possibly fill complete) matrix as the result. - // But, EpetraExt Multiply needs C to be dynamic profile, so compute the product in a temporary DynamicProfile matrix. - const Epetra_Map& Crowmap = epC.RowMap(); - int errCode = 0; - Epetra_CrsMatrix Ctemp(::Copy, Crowmap, 0, false); - if (fillCompleteResult) { - errCode = EpetraExt::MatrixMatrix::Multiply(epA, transposeA, epB, transposeB, Ctemp, true); - if (!errCode) { - epC = Ctemp; - C.fillComplete(); - } - } else { - errCode = EpetraExt::MatrixMatrix::Multiply(epA, transposeA, epB, transposeB, Ctemp, false); - if (!errCode) { - int numLocalRows = Crowmap.NumMyElements(); - long long* globalElementList = nullptr; - Crowmap.MyGlobalElementsPtr(globalElementList); - Teuchos::Array entriesPerRow(numLocalRows, 0); - for (int i = 0; i < numLocalRows; i++) { - entriesPerRow[i] = Ctemp.NumGlobalEntries(globalElementList[i]); - } - // know how many entries to allocate in epC (which must be static profile) - epC = Epetra_CrsMatrix(::Copy, Crowmap, entriesPerRow.data(), true); - for (int i = 0; i < numLocalRows; i++) { - int gid = globalElementList[i]; - int numEntries; - double* values; - int* inds; - Ctemp.ExtractGlobalRowView(gid, numEntries, values, inds); - epC.InsertGlobalValues(gid, numEntries, values, inds); - } - } - } - if (errCode) { - std::ostringstream buf; - buf << errCode; - std::string msg = "EpetraExt::MatrixMatrix::Multiply returned nonzero error code " + buf.str(); - throw(Exceptions::RuntimeError(msg)); - } -} -#endif } // namespace Xpetra diff --git a/packages/xpetra/src/Utils/Xpetra_IO_decl.hpp b/packages/xpetra/src/Utils/Xpetra_IO_decl.hpp index 9be2f1ead59a..cf2a14e7e3d6 100644 --- a/packages/xpetra/src/Utils/Xpetra_IO_decl.hpp +++ b/packages/xpetra/src/Utils/Xpetra_IO_decl.hpp @@ -13,25 +13,6 @@ #include #include "Xpetra_ConfigDefs.hpp" -#ifdef HAVE_XPETRA_EPETRA -#ifdef HAVE_MPI -#include "Epetra_MpiComm.h" -#endif -#endif - -#if defined(HAVE_XPETRA_EPETRA) && defined(HAVE_XPETRA_EPETRAEXT) -#include -#include -#include -#include -#include -#include -#include -#include -#include -#endif - -#ifdef HAVE_XPETRA_TPETRA #include #include #include @@ -40,11 +21,6 @@ #include #include #include "Tpetra_Util.hpp" -#endif - -#ifdef HAVE_XPETRA_EPETRA -#include -#endif #include "Xpetra_Matrix.hpp" #include "Xpetra_MatrixMatrix.hpp" @@ -66,53 +42,6 @@ namespace Xpetra { -#ifdef HAVE_XPETRA_EPETRA -// This non-member templated function exists so that the matrix-matrix multiply will compile if Epetra, Tpetra, and ML are enabled. -template -RCP> -Convert_Epetra_CrsMatrix_ToXpetra_CrsMatrixWrap(RCP& /* epAB */) { - TEUCHOS_TEST_FOR_EXCEPTION(true, Exceptions::RuntimeError, - "Convert_Epetra_CrsMatrix_ToXpetra_CrsMatrixWrap cannot be used with Scalar != double, LocalOrdinal != int, GlobalOrdinal != int"); - TEUCHOS_UNREACHABLE_RETURN(Teuchos::null); -} - -// specialization for the case of ScalarType=double and LocalOrdinal=GlobalOrdinal=int -template <> -inline RCP> Convert_Epetra_CrsMatrix_ToXpetra_CrsMatrixWrap(RCP& epAB) { - typedef double SC; - typedef int LO; - typedef int GO; - typedef Xpetra::EpetraNode NO; - - RCP> tmpC1 = rcp(new Xpetra::EpetraCrsMatrixT(epAB)); - RCP> tmpC2 = Teuchos::rcp_implicit_cast>(tmpC1); - RCP> tmpC3 = rcp(new Xpetra::CrsMatrixWrap(tmpC2)); - - return tmpC3; -} - -template -RCP> -Convert_Epetra_MultiVector_ToXpetra_MultiVector(RCP& epX) { - TEUCHOS_TEST_FOR_EXCEPTION(true, Exceptions::RuntimeError, - "Convert_Epetra_MultiVector_ToXpetra_MultiVector cannot be used with Scalar != double, LocalOrdinal != int, GlobalOrdinal != int"); - TEUCHOS_UNREACHABLE_RETURN(Teuchos::null); -} - -// specialization for the case of ScalarType=double and LocalOrdinal=GlobalOrdinal=int -template <> -inline RCP> Convert_Epetra_MultiVector_ToXpetra_MultiVector(RCP& epX) { - typedef double SC; - typedef int LO; - typedef int GO; - typedef Xpetra::EpetraNode NO; - - RCP> tmp = Xpetra::toXpetra(epX); - return tmp; -} - -#endif - /*! @class IO @brief Xpetra utility class containing IO routines to read/write vectors, matrices etc... @@ -127,26 +56,7 @@ class IO { #include "Xpetra_UseShortNames.hpp" public: -#ifdef HAVE_XPETRA_EPETRA - //! Helper utility to pull out the underlying Epetra objects from an Xpetra object - // @{ - /*static RCP MV2EpetraMV(RCP const vec); - static RCP< Epetra_MultiVector> MV2NonConstEpetraMV(RCP vec); - - static const Epetra_MultiVector& MV2EpetraMV(const MultiVector& vec); - static Epetra_MultiVector& MV2NonConstEpetraMV(MultiVector& vec); - - static RCP Op2EpetraCrs(RCP Op); - static RCP< Epetra_CrsMatrix> Op2NonConstEpetraCrs(RCP Op); - - static const Epetra_CrsMatrix& Op2EpetraCrs(const Matrix& Op); - static Epetra_CrsMatrix& Op2NonConstEpetraCrs(Matrix& Op);*/ - static const Epetra_Map& Map2EpetraMap(const Xpetra::Map& map); - // @} -#endif - -#ifdef HAVE_XPETRA_TPETRA //! Helper utility to pull out the underlying Tpetra objects from an Xpetra object // @{ /*static RCP > MV2TpetraMV(RCP const vec); @@ -166,7 +76,6 @@ class IO { static RCP< Tpetra::RowMatrix > Op2NonConstTpetraRow(RCP Op);*/ static const RCP> Map2TpetraMap(const Xpetra::Map& map); -#endif //! Read/Write methods //@{ @@ -280,848 +189,6 @@ class IO { static std::string toString(const T& what); }; -#ifdef HAVE_XPETRA_EPETRA -/*! - @class IO - @brief Xpetra utility class containing IO routines to read/write vectors, matrices. - - Specialization for LO=GO=int - - TODO: do we need specialization for SC=double and std::complex<>??? - TODO: need specialization for -*/ -template -class IO { - public: - typedef int LocalOrdinal; - typedef int GlobalOrdinal; - typedef EpetraNode Node; - -#ifdef HAVE_XPETRA_EPETRA - //! Helper utility to pull out the underlying Epetra objects from an Xpetra object - // @{ - static const Epetra_Map& Map2EpetraMap(const Xpetra::Map& map) { - RCP> xeMap = Teuchos::rcp_dynamic_cast>(Teuchos::rcpFromRef(map)); - if (xeMap == Teuchos::null) - throw Exceptions::BadCast("IO::Map2EpetraMap : Cast from Xpetra::Map to Xpetra::EpetraMap failed"); - return xeMap->getEpetra_Map(); - } - // @} -#endif - -#ifdef HAVE_XPETRA_TPETRA - //! Helper utility to pull out the underlying Tpetra objects from an Xpetra object - // @{ - static const RCP> Map2TpetraMap(const Xpetra::Map& map) { - const RCP>& tmp_TMap = Teuchos::rcp_dynamic_cast>(rcpFromRef(map)); - if (tmp_TMap == Teuchos::null) - throw Exceptions::BadCast("IO::Map2TpetraMap : Cast from Xpetra::Map to Xpetra::TpetraMap failed"); - return tmp_TMap->getTpetra_Map(); - } -#endif - - //! Read/Write methods - //@{ - /*! @brief Save map to file. */ - static void Write(const std::string& fileName, const Xpetra::Map& M) { - RCP> tmp_Map = rcpFromRef(M); -#if defined(HAVE_XPETRA_EPETRA) && defined(HAVE_XPETRA_EPETRAEXT) - const RCP>& tmp_EMap = Teuchos::rcp_dynamic_cast>(tmp_Map); - if (tmp_EMap != Teuchos::null) { - int rv = EpetraExt::BlockMapToMatrixMarketFile(fileName.c_str(), tmp_EMap->getEpetra_Map()); - if (rv != 0) - throw Exceptions::RuntimeError("EpetraExt::BlockMapToMatrixMarketFile() return value of " + Teuchos::toString(rv)); - return; - } -#endif // HAVE_XPETRA_EPETRA - -#ifdef HAVE_XPETRA_TPETRA -#if ((defined(EPETRA_HAVE_OMP) && (!defined(HAVE_TPETRA_INST_OPENMP) || !defined(HAVE_TPETRA_INST_INT_INT))) || \ - (!defined(EPETRA_HAVE_OMP) && (!defined(HAVE_TPETRA_INST_SERIAL) || !defined(HAVE_TPETRA_INST_INT_INT)))) - // do nothing -#else - const RCP>& tmp_TMap = - Teuchos::rcp_dynamic_cast>(tmp_Map); - if (tmp_TMap != Teuchos::null) { - RCP> TMap = tmp_TMap->getTpetra_Map(); - Tpetra::MatrixMarket::Writer>::writeMapFile(fileName, *TMap); - return; - } -#endif -#endif // HAVE_XPETRA_TPETRA - throw Exceptions::BadCast("Could not cast to EpetraMap or TpetraMap in map writing"); - } - - static void Write(const std::string& fileName, const Xpetra::MultiVector& vec) { - std::string mapfile = "map_" + fileName; - Write(mapfile, *(vec.getMap())); - - RCP> tmp_Vec = Teuchos::rcpFromRef(vec); -#if defined(HAVE_XPETRA_EPETRA) && defined(HAVE_XPETRA_EPETRAEXT) - const RCP>& tmp_EVec = Teuchos::rcp_dynamic_cast>(tmp_Vec); - if (tmp_EVec != Teuchos::null) { - int rv = EpetraExt::MultiVectorToMatrixMarketFile(fileName.c_str(), *(tmp_EVec->getEpetra_MultiVector())); - if (rv != 0) - throw Exceptions::RuntimeError("EpetraExt::RowMatrixToMatrixMarketFile return value of " + Teuchos::toString(rv)); - return; - } -#endif // HAVE_XPETRA_EPETRAEXT - -#ifdef HAVE_XPETRA_TPETRA -#if ((defined(EPETRA_HAVE_OMP) && (!defined(HAVE_TPETRA_INST_OPENMP) || !defined(HAVE_TPETRA_INST_INT_INT))) || \ - (!defined(EPETRA_HAVE_OMP) && (!defined(HAVE_TPETRA_INST_SERIAL) || !defined(HAVE_TPETRA_INST_INT_INT)))) - // do nothin -#else - const RCP>& tmp_TVec = - Teuchos::rcp_dynamic_cast>(tmp_Vec); - if (tmp_TVec != Teuchos::null) { - RCP> TVec = tmp_TVec->getTpetra_MultiVector(); - Tpetra::MatrixMarket::Writer>::writeDenseFile(fileName, TVec); - return; - } -#endif -#endif // HAVE_XPETRA_TPETRA - - throw Exceptions::BadCast("Could not cast to EpetraMultiVector or TpetraMultiVector in multivector writing"); - } - - static void WriteLOMV(const std::string& fileName, const Xpetra::MultiVector& vec) { - std::string mapfile = "map_" + fileName; - Write(mapfile, *(vec.getMap())); - - RCP> tmp_Vec = Teuchos::rcpFromRef(vec); -#ifdef HAVE_XPETRA_TPETRA - const RCP>& tmp_TVec = - Teuchos::rcp_dynamic_cast>(tmp_Vec); - if (tmp_TVec != Teuchos::null) { - RCP> TVec = tmp_TVec->getTpetra_MultiVector(); - Tpetra::MatrixMarket::Writer>::writeDenseFile(fileName, TVec); - return; - } else -#endif // HAVE_XPETRA_TPETRA - { - throw Exceptions::RuntimeError("Xpetra cannot write MV when the underlying library is Epetra."); - } - - throw Exceptions::BadCast("Could not cast to EpetraMultiVector or TpetraMultiVector in multivector writing"); - } - - static void WriteGOMV(const std::string& fileName, const Xpetra::MultiVector& vec) { - std::string mapfile = "map_" + fileName; - Write(mapfile, *(vec.getMap())); - - RCP> tmp_Vec = Teuchos::rcpFromRef(vec); -#ifdef HAVE_XPETRA_TPETRA - const RCP>& tmp_TVec = - Teuchos::rcp_dynamic_cast>(tmp_Vec); - if (tmp_TVec != Teuchos::null) { - RCP> TVec = tmp_TVec->getTpetra_MultiVector(); - Tpetra::MatrixMarket::Writer>::writeDenseFile(fileName, TVec); - return; - } else -#endif // HAVE_XPETRA_TPETRA - { - throw Exceptions::RuntimeError("Xpetra cannot write MV when the underlying library is Epetra."); - } - - throw Exceptions::BadCast("Could not cast to EpetraMultiVector or TpetraMultiVector in multivector writing"); - } - - static void Write(const std::string& fileName, const Xpetra::Matrix& Op, const bool& writeAllMaps = false) { - Write("rowmap_" + fileName, *(Op.getRowMap())); - if (!Op.getDomainMap()->isSameAs(*(Op.getRowMap())) || writeAllMaps) - Write("domainmap_" + fileName, *(Op.getDomainMap())); - if (!Op.getRangeMap()->isSameAs(*(Op.getRowMap())) || writeAllMaps) - Write("rangemap_" + fileName, *(Op.getRangeMap())); - if (!Op.getColMap()->isSameAs(*(Op.getDomainMap())) || writeAllMaps) - Write("colmap_" + fileName, *(Op.getColMap())); - - const Xpetra::CrsMatrixWrap& crsOp = - dynamic_cast&>(Op); - RCP> tmp_CrsMtx = crsOp.getCrsMatrix(); -#if defined(HAVE_XPETRA_EPETRA) && defined(HAVE_XPETRA_EPETRAEXT) - const RCP>& tmp_ECrsMtx = Teuchos::rcp_dynamic_cast>(tmp_CrsMtx); - if (tmp_ECrsMtx != Teuchos::null) { - RCP A = tmp_ECrsMtx->getEpetra_CrsMatrix(); - int rv = EpetraExt::RowMatrixToMatrixMarketFile(fileName.c_str(), *A); - if (rv != 0) - throw Exceptions::RuntimeError("EpetraExt::RowMatrixToMatrixMarketFile return value of " + Teuchos::toString(rv)); - return; - } -#endif // endif HAVE_XPETRA_EPETRA - -#ifdef HAVE_XPETRA_TPETRA -#if ((defined(EPETRA_HAVE_OMP) && (!defined(HAVE_TPETRA_INST_OPENMP) || !defined(HAVE_TPETRA_INST_INT_INT))) || \ - (!defined(EPETRA_HAVE_OMP) && (!defined(HAVE_TPETRA_INST_SERIAL) || !defined(HAVE_TPETRA_INST_INT_INT)))) - // do nothin -#else - const RCP>& tmp_TCrsMtx = - Teuchos::rcp_dynamic_cast>(tmp_CrsMtx); - if (tmp_TCrsMtx != Teuchos::null) { - RCP> A = tmp_TCrsMtx->getTpetra_CrsMatrix(); - Tpetra::MatrixMarket::Writer>::writeSparseFile(fileName, A); - return; - } - const RCP>& tmp_BlockCrs = - Teuchos::rcp_dynamic_cast>(tmp_CrsMtx); - if (tmp_BlockCrs != Teuchos::null) { - std::ofstream outstream(fileName, std::ofstream::out); - Teuchos::FancyOStream ofs(Teuchos::rcpFromRef(outstream)); - tmp_BlockCrs->getTpetra_BlockCrsMatrix()->describe(ofs, Teuchos::VERB_EXTREME); - return; - } - -#endif -#endif // HAVE_XPETRA_TPETRA - - throw Exceptions::BadCast("Could not cast to EpetraCrsMatrix or TpetraCrsMatrix in matrix writing"); - } - - static void Write(const std::string& fileName, const Xpetra::CrsGraph& graph, const bool& writeAllMaps = false) { - Write("rowmap_" + fileName, *(graph.getRowMap())); - if (!graph.getDomainMap()->isSameAs(*(graph.getRowMap())) || writeAllMaps) - Write("domainmap_" + fileName, *(graph.getDomainMap())); - if (!graph.getRangeMap()->isSameAs(*(graph.getRowMap())) || writeAllMaps) - Write("rangemap_" + fileName, *(graph.getRangeMap())); - if (!graph.getColMap()->isSameAs(*(graph.getDomainMap())) || writeAllMaps) - Write("colmap_" + fileName, *(graph.getColMap())); - - RCP> tmp_Graph = rcpFromRef(graph); - -#if defined(HAVE_XPETRA_EPETRA) && defined(HAVE_XPETRA_EPETRAEXT) - const RCP>& tmp_ECrsGraph = Teuchos::rcp_dynamic_cast>(tmp_Graph); - if (tmp_ECrsGraph != Teuchos::null) { - throw Exceptions::BadCast("Writing not implemented for EpetraCrsGraphT"); - } -#endif // endif HAVE_XPETRA_EPETRA - -#ifdef HAVE_XPETRA_TPETRA -#if ((defined(EPETRA_HAVE_OMP) && (!defined(HAVE_TPETRA_INST_OPENMP) || !defined(HAVE_TPETRA_INST_INT_INT))) || \ - (!defined(EPETRA_HAVE_OMP) && (!defined(HAVE_TPETRA_INST_SERIAL) || !defined(HAVE_TPETRA_INST_INT_INT)))) - // do nothin -#else - RCP> tmp_TCrsGraph = - Teuchos::rcp_dynamic_cast>(tmp_Graph); - if (tmp_TCrsGraph != Teuchos::null) { - RCP> G = tmp_TCrsGraph->getTpetra_CrsGraph(); - Tpetra::MatrixMarket::Writer>::writeSparseGraphFile(fileName, G); - return; - } -#endif -#endif // HAVE_XPETRA_TPETRA - - throw Exceptions::BadCast("Could not cast to EpetraCrsMatrix or TpetraCrsMatrix in matrix writing"); - } - - static void WriteLocal(const std::string& fileName, const Xpetra::Matrix& Op) { - const Xpetra::CrsMatrixWrap& crsOp = - dynamic_cast&>(Op); - RCP> tmp_CrsMtx = crsOp.getCrsMatrix(); - - ArrayRCP rowptr_RCP; - ArrayRCP rowptr2_RCP; - ArrayRCP colind_RCP; - ArrayRCP vals_RCP; - tmp_CrsMtx->getAllValues(rowptr_RCP, colind_RCP, vals_RCP); - - ArrayView rowptr = rowptr_RCP(); - ArrayView colind = colind_RCP(); - ArrayView vals = vals_RCP(); - - rowptr2_RCP.resize(rowptr.size()); - ArrayView rowptr2 = rowptr2_RCP(); - for (size_t j = 0; j < Teuchos::as(rowptr.size()); j++) - rowptr2[j] = rowptr[j]; - - Teuchos::MatrixMarket::Raw::Writer writer; - writer.writeFile(fileName + "." + std::to_string(Op.getRowMap()->getComm()->getSize()) + "." + std::to_string(Op.getRowMap()->getComm()->getRank()), - rowptr2, colind, vals, - rowptr.size() - 1, Op.getColMap()->getLocalNumElements()); - } - - static void WriteBlockedCrsMatrix(const std::string& fileName, const Xpetra::BlockedCrsMatrix& Op, const bool& writeAllMaps = false) { - // write all matrices with their maps - for (size_t row = 0; row < Op.Rows(); ++row) { - for (size_t col = 0; col < Op.Cols(); ++col) { - auto m = Op.getMatrix(row, col); - if (m != Teuchos::null) { // skip empty blocks - const bool cond = Teuchos::rcp_dynamic_cast>(m) == Teuchos::null; - TEUCHOS_TEST_FOR_EXCEPTION(cond, - Exceptions::BadCast, - "Sub block matrix (" << row << "," << col << ") is not of type CrsMatrixWrap."); - Write(fileName + toString(row) + toString(col) + ".m", *m, writeAllMaps); - } - } - } - - // write map information of map extractors - auto rangeMapExtractor = Op.getRangeMapExtractor(); - auto domainMapExtractor = Op.getDomainMapExtractor(); - - for (size_t row = 0; row < rangeMapExtractor->NumMaps(); ++row) { - auto map = rangeMapExtractor->getMap(row); - Write("subRangeMap_" + fileName + toString(row) + ".m", *map); - } - Write("fullRangeMap_" + fileName + ".m", *(rangeMapExtractor->getFullMap())); - - for (size_t col = 0; col < domainMapExtractor->NumMaps(); ++col) { - auto map = domainMapExtractor->getMap(col); - Write("subDomainMap_" + fileName + toString(col) + ".m", *map); - } - Write("fullDomainMap_" + fileName + ".m", *(domainMapExtractor->getFullMap())); - } - - static Teuchos::RCP> Read(const std::string& fileName, Xpetra::UnderlyingLib lib, const RCP>& comm, bool binary = false) { - if (!binary) { - // Matrix Market file format (ASCII) - if (lib == Xpetra::UseEpetra) { -#if defined(HAVE_XPETRA_EPETRA) && defined(HAVE_XPETRA_EPETRAEXT) - Epetra_CrsMatrix* eA; - const RCP epcomm = Xpetra::toEpetra(comm); - int rv = EpetraExt::MatrixMarketFileToCrsMatrix(fileName.c_str(), *epcomm, eA); - if (rv != 0) - throw Exceptions::RuntimeError("EpetraExt::MatrixMarketFileToCrsMatrix return value of " + Teuchos::toString(rv)); - - RCP tmpA = rcp(eA); - - RCP> A = - Convert_Epetra_CrsMatrix_ToXpetra_CrsMatrixWrap(tmpA); - return A; -#else - throw Exceptions::RuntimeError("Xpetra has not been compiled with Epetra and EpetraExt support."); -#endif - } else if (lib == Xpetra::UseTpetra) { -#ifdef HAVE_XPETRA_TPETRA -#if ((defined(EPETRA_HAVE_OMP) && (!defined(HAVE_TPETRA_INST_OPENMP) || !defined(HAVE_TPETRA_INST_INT_INT))) || \ - (!defined(EPETRA_HAVE_OMP) && (!defined(HAVE_TPETRA_INST_SERIAL) || !defined(HAVE_TPETRA_INST_INT_INT)))) - throw Exceptions::RuntimeError("Xpetra has not been compiled with Tpetra GO=int enabled."); -#else - typedef Tpetra::CrsMatrix sparse_matrix_type; - - typedef Tpetra::MatrixMarket::Reader reader_type; - - bool callFillComplete = true; - - RCP tA = reader_type::readSparseFile(fileName, comm, callFillComplete); - - if (tA.is_null()) - throw Exceptions::RuntimeError("The Tpetra::CrsMatrix returned from readSparseFile() is null."); - - RCP> tmpA1 = rcp(new Xpetra::TpetraCrsMatrix(tA)); - RCP> tmpA2 = Teuchos::rcp_implicit_cast>(tmpA1); - RCP> A = rcp(new Xpetra::CrsMatrixWrap(tmpA2)); - - return A; -#endif -#else - throw Exceptions::RuntimeError("Xpetra has not been compiled with Tpetra support."); -#endif - } else { - throw Exceptions::RuntimeError("Xpetra:IO: you must specify Xpetra::UseEpetra or Xpetra::UseTpetra."); - } - } else { - // Custom file format (binary) - std::ifstream ifs(fileName.c_str(), std::ios::binary); - TEUCHOS_TEST_FOR_EXCEPTION(!ifs.good(), Exceptions::RuntimeError, "Can not read \"" << fileName << "\""); - int m, n, nnz; - ifs.read(reinterpret_cast(&m), sizeof(m)); - ifs.read(reinterpret_cast(&n), sizeof(n)); - ifs.read(reinterpret_cast(&nnz), sizeof(nnz)); - - int myRank = comm->getRank(); - - GlobalOrdinal indexBase = 0; - RCP> rowMap = Xpetra::MapFactory::Build(lib, m, (myRank == 0 ? m : 0), indexBase, comm), rangeMap = rowMap; - RCP> colMap = Xpetra::MapFactory::Build(lib, n, (myRank == 0 ? n : 0), indexBase, comm), domainMap = colMap; - - RCP> A; - - if (myRank == 0) { - Teuchos::Array inds; - Teuchos::Array vals; - // Scan matrix to determine the exact nnz per row. - Teuchos::ArrayRCP numEntriesPerRow(m); - for (int i = 0; i < m; i++) { - int row, rownnz; - ifs.read(reinterpret_cast(&row), sizeof(row)); - ifs.read(reinterpret_cast(&rownnz), sizeof(rownnz)); - numEntriesPerRow[i] = rownnz; - for (int j = 0; j < rownnz; j++) { - int index; - ifs.read(reinterpret_cast(&index), sizeof(index)); - } - for (int j = 0; j < rownnz; j++) { - double value; - ifs.read(reinterpret_cast(&value), sizeof(value)); - } - } - - A = Xpetra::MatrixFactory::Build(rowMap, colMap, numEntriesPerRow); - - // Now that nnz per row are known, reread and store the matrix. - ifs.seekg(0, ifs.beg); // rewind to beginning of file - int junk; // skip header info - ifs.read(reinterpret_cast(&m), sizeof(junk)); - ifs.read(reinterpret_cast(&n), sizeof(junk)); - ifs.read(reinterpret_cast(&nnz), sizeof(junk)); - for (int i = 0; i < m; i++) { - int row, rownnz; - ifs.read(reinterpret_cast(&row), sizeof(row)); - ifs.read(reinterpret_cast(&rownnz), sizeof(rownnz)); - inds.resize(rownnz); - vals.resize(rownnz); - for (int j = 0; j < rownnz; j++) { - int index; - ifs.read(reinterpret_cast(&index), sizeof(index)); - inds[j] = Teuchos::as(index); - } - for (int j = 0; j < rownnz; j++) { - double value; - ifs.read(reinterpret_cast(&value), sizeof(value)); - vals[j] = Teuchos::as(value); - } - A->insertGlobalValues(row, inds, vals); - } - } // if (myRank == 0) - else { - Teuchos::ArrayRCP numEntriesPerRow(0); - A = Xpetra::MatrixFactory::Build(rowMap, colMap, numEntriesPerRow); - } - - A->fillComplete(domainMap, rangeMap); - - return A; - } - - TEUCHOS_UNREACHABLE_RETURN(Teuchos::null); - } - - static Teuchos::RCP> Read(const std::string& filename, - const RCP> rowMap, - RCP> colMap = Teuchos::null, - const RCP> domainMap = Teuchos::null, - const RCP> rangeMap = Teuchos::null, - const bool callFillComplete = true, - const bool binary = false, - const bool tolerant = false, - const bool debug = false) { - TEUCHOS_TEST_FOR_EXCEPTION(rowMap.is_null(), Exceptions::RuntimeError, "Utils::Read() : rowMap cannot be null"); - - RCP> domain = (domainMap.is_null() ? rowMap : domainMap); - RCP> range = (rangeMap.is_null() ? rowMap : rangeMap); - - const Xpetra::UnderlyingLib lib = rowMap->lib(); - if (binary == false) { - if (lib == Xpetra::UseEpetra) { -#if defined(HAVE_XPETRA_EPETRA) && defined(HAVE_XPETRA_EPETRAEXT) - Epetra_CrsMatrix* eA; - const RCP epcomm = Xpetra::toEpetra(rowMap->getComm()); - const Epetra_Map& epetraRowMap = Xpetra::IO::Map2EpetraMap(*rowMap); - const Epetra_Map& epetraDomainMap = (domainMap.is_null() ? epetraRowMap : Xpetra::IO::Map2EpetraMap(*domainMap)); - const Epetra_Map& epetraRangeMap = (rangeMap.is_null() ? epetraRowMap : Xpetra::IO::Map2EpetraMap(*rangeMap)); - int rv; - if (colMap.is_null()) { - rv = EpetraExt::MatrixMarketFileToCrsMatrix(filename.c_str(), epetraRowMap, epetraRangeMap, epetraDomainMap, eA); - - } else { - const Epetra_Map& epetraColMap = Map2EpetraMap(*colMap); - rv = EpetraExt::MatrixMarketFileToCrsMatrix(filename.c_str(), epetraRowMap, epetraColMap, epetraRangeMap, epetraDomainMap, eA); - } - - if (rv != 0) - throw Exceptions::RuntimeError("EpetraExt::MatrixMarketFileToCrsMatrix return value of " + Teuchos::toString(rv)); - - RCP tmpA = rcp(eA); - RCP> A = - Convert_Epetra_CrsMatrix_ToXpetra_CrsMatrixWrap(tmpA); - - return A; -#else - throw Exceptions::RuntimeError("Xpetra has not been compiled with Epetra and EpetraExt support."); -#endif - } else if (lib == Xpetra::UseTpetra) { -#ifdef HAVE_XPETRA_TPETRA -#if ((defined(EPETRA_HAVE_OMP) && (!defined(HAVE_TPETRA_INST_OPENMP) || !defined(HAVE_TPETRA_INST_INT_INT))) || \ - (!defined(EPETRA_HAVE_OMP) && (!defined(HAVE_TPETRA_INST_SERIAL) || !defined(HAVE_TPETRA_INST_INT_INT)))) - throw Exceptions::RuntimeError("Xpetra has not been compiled with Tpetra GO=int support."); -#else - typedef Tpetra::CrsMatrix sparse_matrix_type; - typedef Tpetra::MatrixMarket::Reader reader_type; - typedef Tpetra::Map map_type; - - const RCP tpetraRowMap = Map2TpetraMap(*rowMap); - RCP tpetraColMap = (colMap.is_null() ? Teuchos::null : Map2TpetraMap(*colMap)); - const RCP tpetraRangeMap = (rangeMap.is_null() ? tpetraRowMap : Map2TpetraMap(*rangeMap)); - const RCP tpetraDomainMap = (domainMap.is_null() ? tpetraRowMap : Map2TpetraMap(*domainMap)); - - RCP tA = reader_type::readSparseFile(filename, tpetraRowMap, tpetraColMap, tpetraDomainMap, tpetraRangeMap, - callFillComplete, tolerant, debug); - if (tA.is_null()) - throw Exceptions::RuntimeError("The Tpetra::CrsMatrix returned from readSparseFile() is null."); - - RCP> tmpA1 = rcp(new Xpetra::TpetraCrsMatrix(tA)); - RCP> tmpA2 = Teuchos::rcp_implicit_cast>(tmpA1); - RCP> A = rcp(new Xpetra::CrsMatrixWrap(tmpA2)); - - return A; -#endif -#else - throw Exceptions::RuntimeError("Xpetra has not been compiled with Tpetra support."); -#endif - } else { - throw Exceptions::RuntimeError("Utils::Read : you must specify Xpetra::UseEpetra or Xpetra::UseTpetra."); - } - } else { - // Read in on rank 0. - auto tempA = Read(filename, lib, rowMap->getComm(), binary); - - auto A = Xpetra::MatrixFactory::Build(rowMap, colMap, 0); - auto importer = Xpetra::ImportFactory::Build(tempA->getRowMap(), rowMap); - A->doImport(*tempA, *importer, Xpetra::INSERT); - if (callFillComplete) - A->fillComplete(domainMap, rangeMap); - - return A; - } - - TEUCHOS_UNREACHABLE_RETURN(Teuchos::null); - } - - static Teuchos::RCP> ReadLocal(const std::string& filename, - const RCP> rowMap, - RCP> colMap, - const RCP> domainMap = Teuchos::null, - const RCP> rangeMap = Teuchos::null, - const bool callFillComplete = true, - const bool binary = false, - const bool tolerant = false, - const bool debug = false) { - TEUCHOS_TEST_FOR_EXCEPTION(rowMap.is_null(), Exceptions::RuntimeError, "Utils::ReadLocal() : rowMap cannot be null"); - TEUCHOS_TEST_FOR_EXCEPTION(colMap.is_null(), Exceptions::RuntimeError, "Utils::ReadLocal() : colMap cannot be null"); - - using matrix_type = Xpetra::Matrix; - using crs_wrap_type = Xpetra::CrsMatrixWrap; - using crs_type = Xpetra::CrsMatrix; - - RCP> domain = (domainMap.is_null() ? rowMap : domainMap); - RCP> range = (rangeMap.is_null() ? rowMap : rangeMap); - - std::string rankFilename = filename + "." + std::to_string(rowMap->getComm()->getSize()) + "." + std::to_string(rowMap->getComm()->getRank()); - RCP A = rcp(new crs_wrap_type(rowMap, colMap, 0)); - - if (binary == false) { - RCP params = rcp(new Teuchos::ParameterList()); - params->set("Parse tolerantly", tolerant); - params->set("Debug mode", debug); - - LocalOrdinal numRows = rowMap->getLocalNumElements(); - LocalOrdinal numCols = colMap->getLocalNumElements(); - - ArrayRCP rowptr2_RCP; - ArrayRCP colind2_RCP; - ArrayRCP vals2_RCP; - - Teuchos::MatrixMarket::Raw::Reader reader; - reader.readFile(rowptr2_RCP, colind2_RCP, vals2_RCP, - numRows, numCols, - rankFilename); - - RCP ACrs = Teuchos::rcp_dynamic_cast(A)->getCrsMatrix(); - - ArrayRCP rowptr_RCP; - ArrayRCP colind_RCP; - ArrayRCP vals_RCP; - ACrs->allocateAllValues(colind2_RCP.size(), rowptr_RCP, colind_RCP, vals_RCP); - - rowptr_RCP.assign(rowptr2_RCP.begin(), rowptr2_RCP.end()); - colind_RCP = colind2_RCP; - vals_RCP = vals2_RCP; - - ACrs->setAllValues(rowptr_RCP, colind_RCP, vals_RCP); - } else { - // Custom file format (binary) - std::ifstream ifs = std::ifstream(rankFilename.c_str(), std::ios::binary); - TEUCHOS_TEST_FOR_EXCEPTION(!ifs.good(), Exceptions::RuntimeError, "Can not read \"" << filename << "\""); - - int m, n, nnz; - ifs.read(reinterpret_cast(&m), sizeof(m)); - ifs.read(reinterpret_cast(&n), sizeof(n)); - ifs.read(reinterpret_cast(&nnz), sizeof(nnz)); - - TEUCHOS_ASSERT_EQUALITY(Teuchos::as(rowMap->getLocalNumElements()), m); - - Teuchos::ArrayRCP rowptrRCP; - Teuchos::ArrayRCP indicesRCP; - Teuchos::ArrayRCP valuesRCP; - - RCP ACrs = Teuchos::rcp_dynamic_cast(A)->getCrsMatrix(); - - ACrs->allocateAllValues(nnz, rowptrRCP, indicesRCP, valuesRCP); - - Teuchos::ArrayView rowptr = rowptrRCP(); - Teuchos::ArrayView indices = indicesRCP(); - Teuchos::ArrayView values = valuesRCP(); - - bool sorted = true; - - // Read in rowptr - for (int i = 0; i < m; i++) { - int row, rownnz; - ifs.read(reinterpret_cast(&row), sizeof(row)); - ifs.read(reinterpret_cast(&rownnz), sizeof(rownnz)); - - rowptr[row + 1] += rownnz; - ifs.seekg(sizeof(int) * rownnz + sizeof(double) * rownnz, ifs.cur); - } - for (int i = 0; i < m; i++) - rowptr[i + 1] += rowptr[i]; - TEUCHOS_ASSERT(Teuchos::as(rowptr[m]) == nnz); - - // reset to where the data starts - ifs.seekg(sizeof(int) * 3, ifs.beg); - - // read in entries - for (int i = 0; i < m; i++) { - int row, rownnz; - ifs.read(reinterpret_cast(&row), sizeof(row)); - ifs.read(reinterpret_cast(&rownnz), sizeof(rownnz)); - size_t ptr = rowptr[row]; - for (int j = 0; j < rownnz; j++) { - int index; - ifs.read(reinterpret_cast(&index), sizeof(index)); - indices[ptr] = Teuchos::as(index); - if (j > 0) - sorted = sorted & (indices[ptr - 1] < indices[ptr]); - ++ptr; - } - ptr = rowptr[row]; - for (int j = 0; j < rownnz; j++) { - double value; - ifs.read(reinterpret_cast(&value), sizeof(value)); - values[ptr] = Teuchos::as(value); - ++ptr; - } - rowptr[row] += rownnz; - } - for (int i = m; i > 0; i--) - rowptr[i] = rowptr[i - 1]; - rowptr[0] = 0; - -#ifdef HAVE_XPETRA_TPETRA - if (!sorted) { - for (LocalOrdinal lclRow = 0; lclRow < m; lclRow++) { - size_t rowBegin = rowptr[lclRow]; - size_t rowEnd = rowptr[lclRow + 1]; - Tpetra::sort2(&indices[rowBegin], &indices[rowEnd], &values[rowBegin]); - } - } -#else - TEUCHOS_ASSERT(sorted); -#endif - - ACrs->setAllValues(rowptrRCP, indicesRCP, valuesRCP); - } - - if (callFillComplete) - A->fillComplete(domainMap, rangeMap); - return A; - } - - static RCP> ReadMultiVector(const std::string& fileName, - const RCP>& map, - const bool binary = false) { - Xpetra::UnderlyingLib lib = map->lib(); - - if (lib == Xpetra::UseEpetra) { - // taw: Oct 9 2015: do we need a specialization for ?? - // TEUCHOS_TEST_FOR_EXCEPTION(true, ::Xpetra::Exceptions::BadCast, "Epetra can only be used with Scalar=double and Ordinal=int"); -#if defined(HAVE_XPETRA_EPETRA) && defined(HAVE_XPETRA_EPETRAEXT) - TEUCHOS_ASSERT(!binary); - Epetra_MultiVector* MV; - int rv = EpetraExt::MatrixMarketFileToMultiVector(fileName.c_str(), toEpetra(map), MV); - if (rv != 0) throw Exceptions::RuntimeError("EpetraExt::MatrixMarketFileToMultiVector failed"); - RCP MVrcp = rcp(MV); - return Convert_Epetra_MultiVector_ToXpetra_MultiVector(MVrcp); -#else - throw Exceptions::RuntimeError("Xpetra has not been compiled with Epetra and EpetraExt support."); -#endif - } else if (lib == Xpetra::UseTpetra) { -#ifdef HAVE_XPETRA_TPETRA -#if ((defined(EPETRA_HAVE_OMP) && (!defined(HAVE_TPETRA_INST_OPENMP) || !defined(HAVE_TPETRA_INST_INT_INT))) || \ - (!defined(EPETRA_HAVE_OMP) && (!defined(HAVE_TPETRA_INST_SERIAL) || !defined(HAVE_TPETRA_INST_INT_INT)))) - throw Exceptions::RuntimeError("Xpetra has not been compiled with Tpetra GO=int support."); -#else - typedef Tpetra::CrsMatrix sparse_matrix_type; - typedef Tpetra::MatrixMarket::Reader reader_type; - typedef Tpetra::Map map_type; - typedef Tpetra::MultiVector multivector_type; - - RCP temp = toTpetra(map); - RCP TMV = reader_type::readDenseFile(fileName, map->getComm(), temp, false, false, binary); - RCP> rmv = Xpetra::toXpetra(TMV); - return rmv; -#endif -#else - throw Exceptions::RuntimeError("Xpetra has not been compiled with Tpetra support."); -#endif - } else { - throw Exceptions::RuntimeError("Utils::Read : you must specify Xpetra::UseEpetra or Xpetra::UseTpetra."); - } - - TEUCHOS_UNREACHABLE_RETURN(Teuchos::null); - } - - static RCP> ReadMultiVectorLO(const std::string& fileName, - const RCP>& map, - const bool binary = false) { - Xpetra::UnderlyingLib lib = map->lib(); - - if (lib == Xpetra::UseTpetra) { -#ifdef HAVE_XPETRA_TPETRA - typedef Tpetra::CrsMatrix sparse_matrix_type; - typedef Tpetra::MatrixMarket::Reader reader_type; - typedef Tpetra::Map map_type; - typedef Tpetra::MultiVector multivector_type; - - RCP temp = toTpetra(map); - RCP TMV = reader_type::readDenseFile(fileName, map->getComm(), temp, false, false, binary); - RCP> rmv = Xpetra::toXpetra(TMV); - return rmv; -#else - throw Exceptions::RuntimeError("Xpetra has not been compiled with Tpetra support."); -#endif - } else { - throw Exceptions::RuntimeError("Utils::ReadMultiVectorLO : only implemented for Tpetra"); - } - - TEUCHOS_UNREACHABLE_RETURN(Teuchos::null); - } - - static RCP> ReadMap(const std::string& fileName, - Xpetra::UnderlyingLib lib, - const RCP>& comm, - const bool binary = false) { - if (lib == Xpetra::UseEpetra) { - // do we need another specialization for ?? - // TEUCHOS_TEST_FOR_EXCEPTION(true, ::Xpetra::Exceptions::BadCast, "Epetra can only be used with Scalar=double and Ordinal=int"); -#if defined(HAVE_XPETRA_EPETRA) && defined(HAVE_XPETRA_EPETRAEXT) - TEUCHOS_ASSERT(!binary); - Epetra_Map* eMap; - int rv = EpetraExt::MatrixMarketFileToMap(fileName.c_str(), *(Xpetra::toEpetra(comm)), eMap); - if (rv != 0) - throw Exceptions::RuntimeError("Error reading map from file " + fileName + " with EpetraExt::MatrixMarketToMap (returned " + Teuchos::toString(rv) + ")"); - - RCP eMap1 = rcp(new Epetra_Map(*eMap)); - return Xpetra::toXpetra(*eMap1); -#else - throw Exceptions::RuntimeError("Xpetra has not been compiled with Epetra and EpetraExt support."); -#endif - } else if (lib == Xpetra::UseTpetra) { -#ifdef HAVE_XPETRA_TPETRA -#if ((defined(EPETRA_HAVE_OMP) && (!defined(HAVE_TPETRA_INST_OPENMP) || !defined(HAVE_TPETRA_INST_INT_INT))) || \ - (!defined(EPETRA_HAVE_OMP) && (!defined(HAVE_TPETRA_INST_SERIAL) || !defined(HAVE_TPETRA_INST_INT_INT)))) - throw Exceptions::RuntimeError("Xpetra has not been compiled with Tpetra GO=int support."); -#else - typedef Tpetra::CrsMatrix sparse_matrix_type; - typedef Tpetra::MatrixMarket::Reader reader_type; - - RCP> tMap = reader_type::readMapFile(fileName, comm, false, false, binary); - if (tMap.is_null()) - throw Exceptions::RuntimeError("The Tpetra::Map returned from readSparseFile() is null."); - - return Xpetra::toXpetra(tMap); -#endif -#else - throw Exceptions::RuntimeError("Xpetra has not been compiled with Tpetra support."); -#endif - } else { - throw Exceptions::RuntimeError("Utils::Read : you must specify Xpetra::UseEpetra or Xpetra::UseTpetra."); - } - - TEUCHOS_UNREACHABLE_RETURN(Teuchos::null); - } - - static RCP> ReadBlockedCrsMatrix(const std::string& fileName, Xpetra::UnderlyingLib lib, const RCP>& comm) { - size_t numBlocks = 2; // TODO user parameter? - - std::vector>> rangeMapVec; - for (size_t row = 0; row < numBlocks; ++row) { - auto map = ReadMap("subRangeMap_" + fileName + toString(row) + ".m", lib, comm); - rangeMapVec.push_back(map); - } - auto fullRangeMap = ReadMap("fullRangeMap_" + fileName + ".m", lib, comm); - - std::vector>> domainMapVec; - for (size_t col = 0; col < numBlocks; ++col) { - auto map = ReadMap("subDomainMap_" + fileName + toString(col) + ".m", lib, comm); - domainMapVec.push_back(map); - } - auto fullDomainMap = ReadMap("fullDomainMap_" + fileName + ".m", lib, comm); - - /*std::vector > testRgMapVec; - for(size_t r = 0; r < numBlocks; ++r) { - RCP map = ReadMap("rangemap_" + fileName + XpIO::toString(r) + "0.m", lib, comm); - testRgMapVec.push_back(map); - } - std::vector > testDoMapVec; - for(size_t c = 0; c < numBlocks; ++c) { - RCP map = ReadMap("domainmap_" + fileName + "0" + XpIO::toString(c) + ".m", lib, comm); - testDoMapVec.push_back(map); - }*/ - - // create map extractors - - // range map extractor - bool bRangeUseThyraStyleNumbering = false; - /* - GlobalOrdinal gMinGids = 0; - for(size_t v = 0; v < testRgMapVec.size(); ++v) { - gMinGids += testRgMapVec[v]->getMinAllGlobalIndex(); - } - if ( gMinGids==0 && testRgMapVec.size() > 1 ) bRangeUseThyraStyleNumbering = true;*/ - RCP> rangeMapExtractor = - rcp(new Xpetra::MapExtractor(fullRangeMap, rangeMapVec, bRangeUseThyraStyleNumbering)); - - // domain map extractor - bool bDomainUseThyraStyleNumbering = false; - /*gMinGids = 0; - for(size_t v = 0; v < testDoMapVec.size(); ++v) { - gMinGids += testDoMapVec[v]->getMinAllGlobalIndex(); - } - if ( gMinGids==0 && testDoMapVec.size() > 1) bDomainUseThyraStyleNumbering = true;*/ - RCP> domainMapExtractor = - rcp(new Xpetra::MapExtractor(fullDomainMap, domainMapVec, bDomainUseThyraStyleNumbering)); - - auto bOp = Teuchos::rcp(new Xpetra::BlockedCrsMatrix(rangeMapExtractor, domainMapExtractor, 33)); - - // Read all matrices with their maps and create the BlockedCrsMatrix - for (size_t row = 0; row < numBlocks; ++row) { - for (size_t col = 0; col < numBlocks; ++col) { - auto rowSubMap = ReadMap("rowmap_" + fileName + toString(row) + toString(col) + ".m", lib, comm); - auto colSubMap = ReadMap("colmap_" + fileName + toString(row) + toString(col) + ".m", lib, comm); - auto domSubMap = ReadMap("domainmap_" + fileName + toString(row) + toString(col) + ".m", lib, comm); - auto ranSubMap = ReadMap("rangemap_" + fileName + toString(row) + toString(col) + ".m", lib, comm); - auto mat = Read(fileName + toString(row) + toString(col) + ".m", rowSubMap, colSubMap, domSubMap, ranSubMap); - bOp->setMatrix(row, col, mat); - } - } - - bOp->fillComplete(); - - return bOp; - } - - //! Little helper function to convert non-string types to strings - template - static std::string toString(const T& what) { - std::ostringstream buf; - buf << what; - return buf.str(); - } -}; - -#endif // HAVE_XPETRA_EPETRA - } // end namespace Xpetra #define XPETRA_IO_SHORT diff --git a/packages/xpetra/src/Utils/Xpetra_IO_def.hpp b/packages/xpetra/src/Utils/Xpetra_IO_def.hpp index 5fae712ea5b2..961f645c106a 100644 --- a/packages/xpetra/src/Utils/Xpetra_IO_def.hpp +++ b/packages/xpetra/src/Utils/Xpetra_IO_def.hpp @@ -11,25 +11,6 @@ #include #include "Xpetra_ConfigDefs.hpp" -#ifdef HAVE_XPETRA_EPETRA -#ifdef HAVE_MPI -#include "Epetra_MpiComm.h" -#endif -#endif - -#if defined(HAVE_XPETRA_EPETRA) && defined(HAVE_XPETRA_EPETRAEXT) -#include -#include -#include -#include -#include -#include -#include -#include -#include -#endif - -#ifdef HAVE_XPETRA_TPETRA #include #include #include @@ -38,11 +19,6 @@ #include #include #include "Tpetra_Util.hpp" -#endif - -#ifdef HAVE_XPETRA_EPETRA -#include -#endif #include "Xpetra_Matrix.hpp" #include "Xpetra_MatrixMatrix.hpp" @@ -62,17 +38,6 @@ namespace Xpetra { -#ifdef HAVE_XPETRA_EPETRA -template -const Epetra_Map& IO::Map2EpetraMap(const Xpetra::Map& map) { - RCP> xeMap = Teuchos::rcp_dynamic_cast>(Teuchos::rcpFromRef(map)); - if (xeMap == Teuchos::null) - throw Exceptions::BadCast("Utils::Map2EpetraMap : Cast from Xpetra::Map to Xpetra::EpetraMap failed"); - return xeMap->getEpetra_Map(); -} -#endif - -#ifdef HAVE_XPETRA_TPETRA template const RCP> IO::Map2TpetraMap(const Xpetra::Map& map) { const RCP>& tmp_TMap = Teuchos::rcp_dynamic_cast>(rcpFromRef(map)); @@ -80,22 +45,11 @@ const RCP> IOgetTpetra_Map(); } -#endif template void IO::Write(const std::string& fileName, const Xpetra::Map& M) { RCP> tmp_Map = rcpFromRef(M); -#if defined(HAVE_XPETRA_EPETRA) && defined(HAVE_XPETRA_EPETRAEXT) - const RCP>& tmp_EMap = Teuchos::rcp_dynamic_cast>(tmp_Map); - if (tmp_EMap != Teuchos::null) { - int rv = EpetraExt::BlockMapToMatrixMarketFile(fileName.c_str(), tmp_EMap->getEpetra_Map()); - if (rv != 0) - throw Exceptions::RuntimeError("EpetraExt::BlockMapToMatrixMarketFile() return value of " + Teuchos::toString(rv)); - return; - } -#endif // HAVE_XPETRA_EPETRAEXT -#ifdef HAVE_XPETRA_TPETRA const RCP>& tmp_TMap = Teuchos::rcp_dynamic_cast>(tmp_Map); if (tmp_TMap != Teuchos::null) { @@ -103,7 +57,6 @@ void IO::Write(const std::string& fil Tpetra::MatrixMarket::Writer>::writeMapFile(fileName, *TMap); return; } -#endif // HAVE_XPETRA_TPETRA throw Exceptions::BadCast("Could not cast to EpetraMap or TpetraMap in map writing"); } @@ -114,17 +67,7 @@ void IO::Write(const std::string& fil Write(mapfile, *(vec.getMap())); RCP> tmp_Vec = Teuchos::rcpFromRef(vec); -#if defined(HAVE_XPETRA_EPETRA) && defined(HAVE_XPETRA_EPETRAEXT) - const RCP>& tmp_EVec = Teuchos::rcp_dynamic_cast>(tmp_Vec); - if (tmp_EVec != Teuchos::null) { - int rv = EpetraExt::MultiVectorToMatrixMarketFile(fileName.c_str(), *(tmp_EVec->getEpetra_MultiVector())); - if (rv != 0) - throw Exceptions::RuntimeError("EpetraExt::RowMatrixToMatrixMarketFile return value of " + Teuchos::toString(rv)); - return; - } -#endif // HAVE_XPETRA_EPETRA -#ifdef HAVE_XPETRA_TPETRA const RCP>& tmp_TVec = Teuchos::rcp_dynamic_cast>(tmp_Vec); if (tmp_TVec != Teuchos::null) { @@ -132,7 +75,6 @@ void IO::Write(const std::string& fil Tpetra::MatrixMarket::Writer>::writeDenseFile(fileName, TVec); return; } -#endif // HAVE_XPETRA_TPETRA throw Exceptions::BadCast("Could not cast to EpetraMultiVector or TpetraMultiVector in multivector writing"); } @@ -143,7 +85,6 @@ void IO::WriteLOMV(const std::string& Write(mapfile, *(vec.getMap())); RCP> tmp_Vec = Teuchos::rcpFromRef(vec); -#ifdef HAVE_XPETRA_TPETRA const RCP>& tmp_TVec = Teuchos::rcp_dynamic_cast>(tmp_Vec); if (tmp_TVec != Teuchos::null) { @@ -151,7 +92,6 @@ void IO::WriteLOMV(const std::string& Tpetra::MatrixMarket::Writer>::writeDenseFile(fileName, TVec); return; } else -#endif // HAVE_XPETRA_TPETRA { throw Exceptions::RuntimeError("Xpetra cannot write MV when the underlying library is Epetra."); } @@ -165,7 +105,6 @@ void IO::WriteGOMV(const std::string& Write(mapfile, *(vec.getMap())); RCP> tmp_Vec = Teuchos::rcpFromRef(vec); -#ifdef HAVE_XPETRA_TPETRA const RCP>& tmp_TVec = Teuchos::rcp_dynamic_cast>(tmp_Vec); if (tmp_TVec != Teuchos::null) { @@ -173,7 +112,6 @@ void IO::WriteGOMV(const std::string& Tpetra::MatrixMarket::Writer>::writeDenseFile(fileName, TVec); return; } else -#endif // HAVE_XPETRA_TPETRA { throw Exceptions::RuntimeError("Xpetra cannot write MV when the underlying library is Epetra."); } @@ -194,18 +132,7 @@ void IO::Write(const std::string& fil const Xpetra::CrsMatrixWrap& crsOp = dynamic_cast&>(Op); RCP> tmp_CrsMtx = crsOp.getCrsMatrix(); -#if defined(HAVE_XPETRA_EPETRA) && defined(HAVE_XPETRA_EPETRAEXT) - const RCP>& tmp_ECrsMtx = Teuchos::rcp_dynamic_cast>(tmp_CrsMtx); - if (tmp_ECrsMtx != Teuchos::null) { - RCP A = tmp_ECrsMtx->getEpetra_CrsMatrix(); - int rv = EpetraExt::RowMatrixToMatrixMarketFile(fileName.c_str(), *A); - if (rv != 0) - throw Exceptions::RuntimeError("EpetraExt::RowMatrixToMatrixMarketFile return value of " + Teuchos::toString(rv)); - return; - } -#endif -#ifdef HAVE_XPETRA_TPETRA const RCP>& tmp_TCrsMtx = Teuchos::rcp_dynamic_cast>(tmp_CrsMtx); if (tmp_TCrsMtx != Teuchos::null) { @@ -222,8 +149,6 @@ void IO::Write(const std::string& fil return; } -#endif // HAVE_XPETRA_TPETRA - throw Exceptions::BadCast("Could not cast to EpetraCrsMatrix or TpetraCrsMatrix in matrix writing"); } @@ -290,23 +215,8 @@ Teuchos::RCP> IO epcomm = Xpetra::toEpetra(comm); - int rv = EpetraExt::MatrixMarketFileToCrsMatrix(fileName.c_str(), *epcomm, eA); - if (rv != 0) - throw Exceptions::RuntimeError("EpetraExt::MatrixMarketFileToCrsMatrix return value of " + Teuchos::toString(rv)); - - RCP tmpA = rcp(eA); - - RCP> A = - Convert_Epetra_CrsMatrix_ToXpetra_CrsMatrixWrap(tmpA); - return A; -#else throw Exceptions::RuntimeError("Xpetra has not been compiled with Epetra and EpetraExt support."); -#endif } else if (lib == Xpetra::UseTpetra) { -#ifdef HAVE_XPETRA_TPETRA typedef Tpetra::CrsMatrix sparse_matrix_type; typedef Tpetra::MatrixMarket::Reader reader_type; @@ -323,9 +233,6 @@ Teuchos::RCP> IO> A = rcp(new Xpetra::CrsMatrixWrap(tmpA2)); return A; -#else - throw Exceptions::RuntimeError("Xpetra has not been compiled with Tpetra support."); -#endif } else { throw Exceptions::RuntimeError("Utils::Read : you must specify Xpetra::UseEpetra or Xpetra::UseTpetra."); } @@ -424,34 +331,8 @@ IO::Read(const std::string& filename, const Xpetra::UnderlyingLib lib = rowMap->lib(); if (binary == false) { if (lib == Xpetra::UseEpetra) { -#if defined(HAVE_XPETRA_EPETRA) && defined(HAVE_XPETRA_EPETRAEXT) - Epetra_CrsMatrix* eA; - const RCP epcomm = Xpetra::toEpetra(rowMap->getComm()); - const Epetra_Map& epetraRowMap = Xpetra::IO::Map2EpetraMap(*rowMap); - const Epetra_Map& epetraDomainMap = (domainMap.is_null() ? epetraRowMap : Xpetra::IO::Map2EpetraMap(*domainMap)); - const Epetra_Map& epetraRangeMap = (rangeMap.is_null() ? epetraRowMap : Xpetra::IO::Map2EpetraMap(*rangeMap)); - int rv; - if (colMap.is_null()) { - rv = EpetraExt::MatrixMarketFileToCrsMatrix(filename.c_str(), epetraRowMap, epetraRangeMap, epetraDomainMap, eA); - - } else { - const Epetra_Map& epetraColMap = Map2EpetraMap(*colMap); - rv = EpetraExt::MatrixMarketFileToCrsMatrix(filename.c_str(), epetraRowMap, epetraColMap, epetraRangeMap, epetraDomainMap, eA); - } - - if (rv != 0) - throw Exceptions::RuntimeError("EpetraExt::MatrixMarketFileToCrsMatrix return value of " + Teuchos::toString(rv)); - - RCP tmpA = rcp(eA); - RCP> A = - Convert_Epetra_CrsMatrix_ToXpetra_CrsMatrixWrap(tmpA); - - return A; -#else throw Exceptions::RuntimeError("Xpetra has not been compiled with Epetra and EpetraExt support."); -#endif } else if (lib == Xpetra::UseTpetra) { -#ifdef HAVE_XPETRA_TPETRA typedef Tpetra::CrsMatrix sparse_matrix_type; typedef Tpetra::MatrixMarket::Reader reader_type; typedef Tpetra::Map map_type; @@ -471,9 +352,6 @@ IO::Read(const std::string& filename, RCP> A = rcp(new Xpetra::CrsMatrixWrap(tmpA2)); return A; -#else - throw Exceptions::RuntimeError("Xpetra has not been compiled with Tpetra support."); -#endif } else { throw Exceptions::RuntimeError("Utils::Read : you must specify Xpetra::UseEpetra or Xpetra::UseTpetra."); } @@ -614,7 +492,6 @@ Teuchos::RCP> IO> IOsetAllValues(rowptrRCP, indicesRCP, valuesRCP); } @@ -644,7 +518,6 @@ RCP> IO sparse_matrix_type; typedef Tpetra::MatrixMarket::Reader reader_type; typedef Tpetra::Map map_type; @@ -654,9 +527,6 @@ RCP> IO TMV = reader_type::readDenseFile(fileName, map->getComm(), temp, false, false, binary); RCP rmv = Xpetra::toXpetra(TMV); return rmv; -#else - throw Exceptions::RuntimeError("Xpetra has not been compiled with Tpetra support."); -#endif } else { throw Exceptions::RuntimeError("Utils::Read : you must specify Xpetra::UseEpetra or Xpetra::UseTpetra."); } @@ -671,7 +541,6 @@ RCP> IOlib(); if (lib == Xpetra::UseTpetra) { -#ifdef HAVE_XPETRA_TPETRA typedef Tpetra::CrsMatrix sparse_matrix_type; typedef Tpetra::MatrixMarket::Reader reader_type; typedef Tpetra::Map map_type; @@ -681,9 +550,6 @@ RCP> IO TMV = reader_type::readDenseFile(fileName, map->getComm(), temp, false, false, binary); RCP> rmv = Xpetra::toXpetra(TMV); return rmv; -#else - throw Exceptions::RuntimeError("Xpetra has not been compiled with Tpetra support."); -#endif } else { throw Exceptions::RuntimeError("Utils::ReadMultiVectorLO : only implemented for Tpetra"); } @@ -699,7 +565,6 @@ RCP> IO sparse_matrix_type; typedef Tpetra::MatrixMarket::Reader reader_type; @@ -708,9 +573,6 @@ RCP> IO -#ifdef HAVE_XPETRA_EPETRA -#include "Epetra_Util.h" -#include "Xpetra_EpetraImport.hpp" -#endif - -#ifdef HAVE_XPETRA_TPETRA #include "Xpetra_TpetraImport.hpp" #include "Tpetra_Import_Util.hpp" -#endif namespace Xpetra { @@ -57,94 +50,8 @@ class ImportUtils { bool use_minus_one_for_local) { UnderlyingLib lib = Importer.getSourceMap()->lib(); if (lib == Xpetra::UseEpetra) { -#if defined(HAVE_XPETRA_EPETRA) - throw(Xpetra::Exceptions::RuntimeError("Xpetra::ImportUtils only available for GO=int or GO=long long with EpetraNode (Serial or OpenMP depending on configuration)")); -#endif // HAVE_XPETRA_EPETRA - } else if (lib == Xpetra::UseTpetra) { -#ifdef HAVE_XPETRA_TPETRA - Tpetra::Import_Util::getPidGidPairs(Xpetra::toTpetra(Importer), gpids, use_minus_one_for_local); -#endif // HAVE_XPETRA_TPETRA - } - } - - //! Like getPidGidPairs, but just gets the PIDs, ordered by the column Map. - void - getPids(const Import& Importer, - Teuchos::Array& pids, - bool use_minus_one_for_local) { - UnderlyingLib lib = Importer.getSourceMap()->lib(); - if (lib == Xpetra::UseEpetra) { -#if defined(HAVE_XPETRA_EPETRA) - throw(Xpetra::Exceptions::RuntimeError("Xpetra::ImportUtils only available for GO=int or GO=long long with EpetraNode (Serial or OpenMP depending on configuration)")); -#endif // HAVE_XPETRA_EPETRA - } else if (lib == Xpetra::UseTpetra) { -#ifdef HAVE_XPETRA_TPETRA - Tpetra::Import_Util::getPids(Xpetra::toTpetra(Importer), pids, use_minus_one_for_local); -#endif // HAVE_XPETRA_TPETRA - } - } - - //! Like getPidGidPairs, but just gets the PIDs, ordered by the column Map. - // Like the above, but without the resize - void - getPids(const Import& Importer, - Teuchos::ArrayView& pids, - bool use_minus_one_for_local) { - UnderlyingLib lib = Importer.getSourceMap()->lib(); - if (lib == Xpetra::UseEpetra) { -#if defined(HAVE_XPETRA_EPETRA) - throw(Xpetra::Exceptions::RuntimeError("Xpetra::ImportUtils only available for GO=int or GO=long long with EpetraNode (Serial or OpenMP depending on configuration)")); -#endif // HAVE_XPETRA_EPETRA - } else if (lib == Xpetra::UseTpetra) { -#ifdef HAVE_XPETRA_TPETRA - Tpetra::Import_Util::getPids(Xpetra::toTpetra(Importer), pids, use_minus_one_for_local); -#endif // HAVE_XPETRA_TPETRA - } - } - - /// \brief Get a list of remote PIDs from an importer in the order - /// corresponding to the remote LIDs. - void - getRemotePIDs(const Import& Importer, - Teuchos::Array& RemotePIDs) { - UnderlyingLib lib = Importer.getSourceMap()->lib(); - if (lib == Xpetra::UseEpetra) { -#if defined(HAVE_XPETRA_EPETRA) - throw(Xpetra::Exceptions::RuntimeError("Xpetra::ImportUtils only available for GO=int or GO=long long with EpetraNode (Serial or OpenMP depending on configuration)")); -#endif // HAVE_XPETRA_EPETRA - } else if (lib == Xpetra::UseTpetra) { -#ifdef HAVE_XPETRA_TPETRA - Tpetra::Import_Util::getRemotePIDs(Xpetra::toTpetra(Importer), RemotePIDs); -#endif // HAVE_XPETRA_TPETRA - } - } - -}; // end class ImportUtils - -#ifdef HAVE_XPETRA_EPETRA -// Specialization for int, int, EpetraNode -template <> -class ImportUtils { - typedef int LocalOrdinal; - typedef int GlobalOrdinal; - typedef EpetraNode Node; -#undef XPETRA_IMPORTUTILS_SHORT - - public: - void - getPidGidPairs(const Import& Importer, - Teuchos::Array >& gpids, - bool use_minus_one_for_local) { - UnderlyingLib lib = Importer.getSourceMap()->lib(); - if (lib == Xpetra::UseEpetra) { - RCP e_Importer = dynamic_cast*>(&Importer)->getEpetra_Import(); - std::vector > gpids_v(gpids.size()); - Epetra_Util::GetPidGidPairs(*e_Importer, gpids_v, use_minus_one_for_local); - std::copy(gpids_v.begin(), gpids_v.end(), gpids.begin()); } else if (lib == Xpetra::UseTpetra) { -#ifdef HAVE_XPETRA_TPETRA Tpetra::Import_Util::getPidGidPairs(Xpetra::toTpetra(Importer), gpids, use_minus_one_for_local); -#endif // HAVE_XPETRA_TPETRA } } @@ -155,14 +62,8 @@ class ImportUtils { bool use_minus_one_for_local) { UnderlyingLib lib = Importer.getSourceMap()->lib(); if (lib == Xpetra::UseEpetra) { - RCP e_Importer = dynamic_cast*>(&Importer)->getEpetra_Import(); - std::vector pids_v(pids.size()); - Epetra_Util::GetPids(*e_Importer, pids_v, use_minus_one_for_local); - std::copy(pids_v.begin(), pids_v.end(), pids.begin()); } else if (lib == Xpetra::UseTpetra) { -#ifdef HAVE_XPETRA_TPETRA Tpetra::Import_Util::getPids(Xpetra::toTpetra(Importer), pids, use_minus_one_for_local); -#endif // HAVE_XPETRA_TPETRA } } @@ -174,13 +75,8 @@ class ImportUtils { bool use_minus_one_for_local) { UnderlyingLib lib = Importer.getSourceMap()->lib(); if (lib == Xpetra::UseEpetra) { - RCP e_Importer = dynamic_cast*>(&Importer)->getEpetra_Import(); - std::vector pids_v(pids.begin(), pids.end()); - Epetra_Util::GetPids(*e_Importer, pids_v, use_minus_one_for_local); } else if (lib == Xpetra::UseTpetra) { -#ifdef HAVE_XPETRA_TPETRA Tpetra::Import_Util::getPids(Xpetra::toTpetra(Importer), pids, use_minus_one_for_local); -#endif // HAVE_XPETRA_TPETRA } } @@ -191,104 +87,13 @@ class ImportUtils { Teuchos::Array& RemotePIDs) { UnderlyingLib lib = Importer.getSourceMap()->lib(); if (lib == Xpetra::UseEpetra) { - RCP e_Importer = dynamic_cast*>(&Importer)->getEpetra_Import(); - std::vector pids_v(RemotePIDs.size()); - Epetra_Util::GetRemotePIDs(*e_Importer, pids_v); - std::copy(pids_v.begin(), pids_v.end(), RemotePIDs.begin()); } else if (lib == Xpetra::UseTpetra) { -#ifdef HAVE_XPETRA_TPETRA Tpetra::Import_Util::getRemotePIDs(Xpetra::toTpetra(Importer), RemotePIDs); -#endif // HAVE_XPETRA_TPETRA } } }; // end class ImportUtils -// Specialization for double, int, long long, EpetraNode -template <> -class ImportUtils { - typedef int LocalOrdinal; - typedef long long GlobalOrdinal; - typedef EpetraNode Node; -#undef XPETRA_IMPORTUTILS_SHORT - - public: - void - getPidGidPairs(const Import& Importer, - Teuchos::Array >& gpids, - bool use_minus_one_for_local) { - UnderlyingLib lib = Importer.getSourceMap()->lib(); - if (lib == Xpetra::UseEpetra) { - RCP e_Importer = dynamic_cast*>(&Importer)->getEpetra_Import(); - std::vector > gpids_v(gpids.size()); - Epetra_Util::GetPidGidPairs(*e_Importer, gpids_v, use_minus_one_for_local); - std::copy(gpids_v.begin(), gpids_v.end(), gpids.begin()); - - } else if (lib == Xpetra::UseTpetra) { -#ifdef HAVE_XPETRA_TPETRA - Tpetra::Import_Util::getPidGidPairs(Xpetra::toTpetra(Importer), gpids, use_minus_one_for_local); -#endif // HAVE_XPETRA_TPETRA - } - } - - //! Like getPidGidPairs, but just gets the PIDs, ordered by the column Map. - void - getPids(const Import& Importer, - Teuchos::Array& pids, - bool use_minus_one_for_local) { - UnderlyingLib lib = Importer.getSourceMap()->lib(); - if (lib == Xpetra::UseEpetra) { - RCP e_Importer = dynamic_cast*>(&Importer)->getEpetra_Import(); - std::vector pids_v(pids.size()); - Epetra_Util::GetPids(*e_Importer, pids_v, use_minus_one_for_local); - std::copy(pids_v.begin(), pids_v.end(), pids.begin()); - } else if (lib == Xpetra::UseTpetra) { -#ifdef HAVE_XPETRA_TPETRA - Tpetra::Import_Util::getPids(Xpetra::toTpetra(Importer), pids, use_minus_one_for_local); -#endif // HAVE_XPETRA_TPETRA - } - } - - //! Like getPidGidPairs, but just gets the PIDs, ordered by the column Map. - // Like the above, but without the resize - void - getPids(const Import& Importer, - Teuchos::ArrayView& pids, - bool use_minus_one_for_local) { - UnderlyingLib lib = Importer.getSourceMap()->lib(); - if (lib == Xpetra::UseEpetra) { - RCP e_Importer = dynamic_cast*>(&Importer)->getEpetra_Import(); - std::vector pids_v(pids.size()); - Epetra_Util::GetPids(*e_Importer, pids_v, use_minus_one_for_local); - std::copy(pids_v.begin(), pids_v.end(), pids.begin()); - } else if (lib == Xpetra::UseTpetra) { -#ifdef HAVE_XPETRA_TPETRA - Tpetra::Import_Util::getPids(Xpetra::toTpetra(Importer), pids, use_minus_one_for_local); -#endif // HAVE_XPETRA_TPETRA - } - } - - /// \brief Get a list of remote PIDs from an importer in the order - /// corresponding to the remote LIDs. - void - getRemotePIDs(const Import& Importer, - Teuchos::Array& RemotePIDs) { - UnderlyingLib lib = Importer.getSourceMap()->lib(); - if (lib == Xpetra::UseEpetra) { - RCP e_Importer = dynamic_cast*>(&Importer)->getEpetra_Import(); - std::vector pids_v(RemotePIDs.size()); - Epetra_Util::GetRemotePIDs(*e_Importer, pids_v); - std::copy(pids_v.begin(), pids_v.end(), RemotePIDs.begin()); - } else if (lib == Xpetra::UseTpetra) { -#ifdef HAVE_XPETRA_TPETRA - Tpetra::Import_Util::getRemotePIDs(Xpetra::toTpetra(Importer), RemotePIDs); -#endif // HAVE_XPETRA_TPETRA - } - } - -}; // end class ImportUtils -#endif // HAVE_XPETRA_EPETRA for Epetra scpecialization - } // end namespace Xpetra #define XPETRA_IMPORTUTILS_SHORT diff --git a/packages/xpetra/src/Utils/Xpetra_IteratorOps.cpp b/packages/xpetra/src/Utils/Xpetra_IteratorOps.cpp index cb04f18d29e2..93ec3ef4e942 100644 --- a/packages/xpetra/src/Utils/Xpetra_IteratorOps.cpp +++ b/packages/xpetra/src/Utils/Xpetra_IteratorOps.cpp @@ -11,170 +11,4 @@ namespace Xpetra { -#if defined(HAVE_XPETRA_EPETRA) && !defined(XPETRA_EPETRA_NO_32BIT_GLOBAL_INDICES) -template <> -void Jacobi(double omega, - const Xpetra::Vector& Dinv, - const Xpetra::Matrix& A, - const Xpetra::Matrix& B, - Xpetra::Matrix& C, - bool call_FillComplete_on_result, - bool doOptimizeStorage, - const std::string& label, - const Teuchos::RCP& params) { - typedef double SC; - typedef int LO; - typedef int GO; - typedef EpetraNode NO; - - TEUCHOS_TEST_FOR_EXCEPTION(C.getRowMap()->isSameAs(*A.getRowMap()) == false, Exceptions::RuntimeError, - "XpetraExt::MatrixMatrix::Jacobi: row map of C is not same as row map of A") - TEUCHOS_TEST_FOR_EXCEPTION(C.getRowMap()->isSameAs(*B.getRowMap()) == false, Exceptions::RuntimeError, - "XpetraExt::MatrixMatrix::Jacobi: row map of C is not same as row map of B"); - TEUCHOS_TEST_FOR_EXCEPTION(!A.isFillComplete(), Exceptions::RuntimeError, "A is not fill-completed"); - TEUCHOS_TEST_FOR_EXCEPTION(!B.isFillComplete(), Exceptions::RuntimeError, "B is not fill-completed"); - - bool haveMultiplyDoFillComplete = call_FillComplete_on_result && doOptimizeStorage; - - if (C.getRowMap()->lib() == Xpetra::UseEpetra) { -#ifndef HAVE_XPETRA_EPETRAEXT - throw(Xpetra::Exceptions::RuntimeError("Xpetra::IteratorOps::Jacobi requires EpetraExt to be compiled.")); -#else - Epetra_CrsMatrix& epA = Xpetra::Helpers::Op2NonConstEpetraCrs(A); - Epetra_CrsMatrix& epB = Xpetra::Helpers::Op2NonConstEpetraCrs(B); - Epetra_CrsMatrix& epC = Xpetra::Helpers::Op2NonConstEpetraCrs(C); - // FIXME - XPETRA_DYNAMIC_CAST(const EpetraVectorT, Dinv, epD, "Xpetra::IteratorOps::Jacobi() only accepts Xpetra::EpetraVector as input argument."); - - int i = EpetraExt::MatrixMatrix::Jacobi(omega, *epD.getEpetra_Vector(), epA, epB, epC, haveMultiplyDoFillComplete); - if (haveMultiplyDoFillComplete) { - // Due to Epetra wrapper intricacies, we need to explicitly call - // fillComplete on Xpetra matrix here. Specifically, EpetraCrsMatrix - // only keeps an internal variable to check whether we are in resumed - // state or not, but never touches the underlying Epetra object. As - // such, we need to explicitly update the state of Xpetra matrix to - // that of Epetra one afterwords - C.fillComplete(); - } - - if (i != 0) { - std::ostringstream buf; - buf << i; - std::string msg = "EpetraExt::MatrixMatrix::Jacobi return value of " + buf.str(); - throw(Exceptions::RuntimeError(msg)); - } -#endif - } else if (C.getRowMap()->lib() == Xpetra::UseTpetra) { -#ifdef HAVE_XPETRA_TPETRA -#if ((defined(EPETRA_HAVE_OMP) && (!defined(HAVE_TPETRA_INST_OPENMP) || !defined(HAVE_TPETRA_INST_INT_INT))) || \ - (!defined(EPETRA_HAVE_OMP) && (!defined(HAVE_TPETRA_INST_SERIAL) || !defined(HAVE_TPETRA_INST_INT_INT)))) - throw(Xpetra::Exceptions::RuntimeError("Xpetra must be compiled with Tpetra GO= enabled.")); -#else - const Tpetra::CrsMatrix& tpA = Xpetra::Helpers::Op2TpetraCrs(A); - const Tpetra::CrsMatrix& tpB = Xpetra::Helpers::Op2TpetraCrs(B); - Tpetra::CrsMatrix& tpC = Xpetra::Helpers::Op2NonConstTpetraCrs(C); - const RCP >& tpD = toTpetra(Dinv); - Tpetra::MatrixMatrix::Jacobi(omega, *tpD, tpA, tpB, tpC, haveMultiplyDoFillComplete, label, params); -#endif -#else - throw(Xpetra::Exceptions::RuntimeError("Xpetra must be compiled with Tpetra.")); -#endif - } - - if (call_FillComplete_on_result && !haveMultiplyDoFillComplete) { - RCP ppp = rcp(new Teuchos::ParameterList()); - ppp->set("Optimize Storage", doOptimizeStorage); - C.fillComplete(B.getDomainMap(), B.getRangeMap(), ppp); - } - - // transfer striding information - Teuchos::RCP > rcpA = Teuchos::rcp_const_cast >(Teuchos::rcpFromRef(A)); - Teuchos::RCP > rcpB = Teuchos::rcp_const_cast >(Teuchos::rcpFromRef(B)); - C.CreateView("stridedMaps", rcpA, false, rcpB, false); // TODO use references instead of RCPs -} -#endif - -#if defined(HAVE_XPETRA_EPETRA) && !defined(XPETRA_EPETRA_NO_64BIT_GLOBAL_INDICES) -template <> -void Jacobi(double omega, - const Xpetra::Vector& Dinv, - const Xpetra::Matrix& A, - const Xpetra::Matrix& B, - Xpetra::Matrix& C, - bool call_FillComplete_on_result, - bool doOptimizeStorage, - const std::string& label, - const Teuchos::RCP& params) { - typedef double SC; - typedef int LO; - typedef long long GO; - typedef EpetraNode NO; - - TEUCHOS_TEST_FOR_EXCEPTION(C.getRowMap()->isSameAs(*A.getRowMap()) == false, Exceptions::RuntimeError, - "XpetraExt::MatrixMatrix::Jacobi: row map of C is not same as row map of A") - TEUCHOS_TEST_FOR_EXCEPTION(C.getRowMap()->isSameAs(*B.getRowMap()) == false, Exceptions::RuntimeError, - "XpetraExt::MatrixMatrix::Jacobi: row map of C is not same as row map of B"); - TEUCHOS_TEST_FOR_EXCEPTION(!A.isFillComplete(), Exceptions::RuntimeError, "A is not fill-completed"); - TEUCHOS_TEST_FOR_EXCEPTION(!B.isFillComplete(), Exceptions::RuntimeError, "B is not fill-completed"); - - bool haveMultiplyDoFillComplete = call_FillComplete_on_result && doOptimizeStorage; - - if (C.getRowMap()->lib() == Xpetra::UseEpetra) { -#ifndef HAVE_XPETRA_EPETRAEXT - throw(Xpetra::Exceptions::RuntimeError("Xpetra::IteratorOps::Jacobi requires EpetraExt to be compiled.")); -#else - Epetra_CrsMatrix& epA = Xpetra::Helpers::Op2NonConstEpetraCrs(A); - Epetra_CrsMatrix& epB = Xpetra::Helpers::Op2NonConstEpetraCrs(B); - Epetra_CrsMatrix& epC = Xpetra::Helpers::Op2NonConstEpetraCrs(C); - // FIXME - XPETRA_DYNAMIC_CAST(const EpetraVectorT, Dinv, epD, "Xpetra::IteratorOps::Jacobi() only accepts Xpetra::EpetraVector as input argument."); - - int i = EpetraExt::MatrixMatrix::Jacobi(omega, *epD.getEpetra_Vector(), epA, epB, epC, haveMultiplyDoFillComplete); - if (haveMultiplyDoFillComplete) { - // Due to Epetra wrapper intricacies, we need to explicitly call - // fillComplete on Xpetra matrix here. Specifically, EpetraCrsMatrix - // only keeps an internal variable to check whether we are in resumed - // state or not, but never touches the underlying Epetra object. As - // such, we need to explicitly update the state of Xpetra matrix to - // that of Epetra one afterwords - C.fillComplete(); - } - - if (i != 0) { - std::ostringstream buf; - buf << i; - std::string msg = "EpetraExt::MatrixMatrix::Jacobi return value of " + buf.str(); - throw(Exceptions::RuntimeError(msg)); - } -#endif - } else if (C.getRowMap()->lib() == Xpetra::UseTpetra) { -#ifdef HAVE_XPETRA_TPETRA -#if ((defined(EPETRA_HAVE_OMP) && (!defined(HAVE_TPETRA_INST_OPENMP) || !defined(HAVE_TPETRA_INST_INT_LONG_LONG))) || \ - (!defined(EPETRA_HAVE_OMP) && (!defined(HAVE_TPETRA_INST_SERIAL) || !defined(HAVE_TPETRA_INST_INT_LONG_LONG)))) - throw(Xpetra::Exceptions::RuntimeError("Xpetra must be compiled with Tpetra GO= enabled.")); -#else - const Tpetra::CrsMatrix& tpA = Xpetra::Helpers::Op2TpetraCrs(A); - const Tpetra::CrsMatrix& tpB = Xpetra::Helpers::Op2TpetraCrs(B); - Tpetra::CrsMatrix& tpC = Xpetra::Helpers::Op2NonConstTpetraCrs(C); - const RCP >& tpD = toTpetra(Dinv); - Tpetra::MatrixMatrix::Jacobi(omega, *tpD, tpA, tpB, tpC, haveMultiplyDoFillComplete, label, params); -#endif -#else - throw(Xpetra::Exceptions::RuntimeError("Xpetra must be compiled with Tpetra.")); -#endif - } - - if (call_FillComplete_on_result && !haveMultiplyDoFillComplete) { - RCP ppp = rcp(new Teuchos::ParameterList()); - ppp->set("Optimize Storage", doOptimizeStorage); - C.fillComplete(B.getDomainMap(), B.getRangeMap(), ppp); - } - - // transfer striding information - Teuchos::RCP > rcpA = Teuchos::rcp_const_cast >(Teuchos::rcpFromRef(A)); - Teuchos::RCP > rcpB = Teuchos::rcp_const_cast >(Teuchos::rcpFromRef(B)); - C.CreateView("stridedMaps", rcpA, false, rcpB, false); // TODO use references instead of RCPs -} -#endif - } // namespace Xpetra diff --git a/packages/xpetra/src/Utils/Xpetra_IteratorOps.hpp b/packages/xpetra/src/Utils/Xpetra_IteratorOps.hpp index 66c7ea0d88e0..818271cb47c0 100644 --- a/packages/xpetra/src/Utils/Xpetra_IteratorOps.hpp +++ b/packages/xpetra/src/Utils/Xpetra_IteratorOps.hpp @@ -53,21 +53,13 @@ void Jacobi( bool haveMultiplyDoFillComplete = call_FillComplete_on_result && doOptimizeStorage; if (C.getRowMap()->lib() == Xpetra::UseEpetra) { -#ifndef HAVE_XPETRA_EPETRAEXT throw(Xpetra::Exceptions::RuntimeError("Xpetra::MatrixMatrix::Jacobi requires EpetraExt to be compiled.")); -#else - throw(Xpetra::Exceptions::RuntimeError("Xpetra::MatrixMatrix::Jacobi requires you to use an Epetra-compatible data type.")); -#endif } else if (C.getRowMap()->lib() == Xpetra::UseTpetra) { -#ifdef HAVE_XPETRA_TPETRA const Tpetra::CrsMatrix& tpA = Xpetra::Helpers::Op2TpetraCrs(A); const Tpetra::CrsMatrix& tpB = Xpetra::Helpers::Op2TpetraCrs(B); Tpetra::CrsMatrix& tpC = Xpetra::Helpers::Op2NonConstTpetraCrs(C); const RCP >& tpD = toTpetra(Dinv); Tpetra::MatrixMatrix::Jacobi(omega, *tpD, tpA, tpB, tpC, haveMultiplyDoFillComplete, label, params); -#else - throw(Xpetra::Exceptions::RuntimeError("Xpetra must be compiled with Tpetra.")); -#endif } if (call_FillComplete_on_result && !haveMultiplyDoFillComplete) { @@ -82,32 +74,6 @@ void Jacobi( C.CreateView("stridedMaps", rcpA, false, rcpB, false); // TODO use references instead of RCPs } // end Jacobi -#if defined(HAVE_XPETRA_EPETRA) && !defined(XPETRA_EPETRA_NO_32BIT_GLOBAL_INDICES) -template <> -void Jacobi(double omega, - const Xpetra::Vector& Dinv, - const Xpetra::Matrix& A, - const Xpetra::Matrix& B, - Xpetra::Matrix& C, - bool call_FillComplete_on_result, - bool doOptimizeStorage, - const std::string& label, - const Teuchos::RCP& params); -#endif - -#if defined(HAVE_XPETRA_EPETRA) && !defined(XPETRA_EPETRA_NO_64BIT_GLOBAL_INDICES) -template <> -void Jacobi(double omega, - const Xpetra::Vector& Dinv, - const Xpetra::Matrix& A, - const Xpetra::Matrix& B, - Xpetra::Matrix& C, - bool call_FillComplete_on_result, - bool doOptimizeStorage, - const std::string& label, - const Teuchos::RCP& params); -#endif - /*! @class IteratorOps @brief Xpetra utility class containing iteration operators. diff --git a/packages/xpetra/src/Utils/Xpetra_MatrixMatrix_decl.hpp b/packages/xpetra/src/Utils/Xpetra_MatrixMatrix_decl.hpp index 723e2a697ec6..e4e47b5eafac 100644 --- a/packages/xpetra/src/Utils/Xpetra_MatrixMatrix_decl.hpp +++ b/packages/xpetra/src/Utils/Xpetra_MatrixMatrix_decl.hpp @@ -23,17 +23,6 @@ #include "Xpetra_Helpers.hpp" -#ifdef HAVE_XPETRA_EPETRA -#include -#endif - -#ifdef HAVE_XPETRA_EPETRAEXT -#include -#include -#include -#endif // HAVE_XPETRA_EPETRAEXT - -#ifdef HAVE_XPETRA_TPETRA #include #include #include @@ -42,7 +31,6 @@ #include #include #include -#endif // HAVE_XPETRA_TPETRA namespace Xpetra { @@ -130,13 +118,6 @@ class MatrixMatrix { bool callFillCompleteOnResult = true, bool doOptimizeStorage = true, const std::string& label = std::string(), const RCP& params = null); -#ifdef HAVE_XPETRA_EPETRAEXT - // Michael Gee's MLMultiply - static RCP MLTwoMatrixMultiply(const Epetra_CrsMatrix& epA, - const Epetra_CrsMatrix& epB, - Teuchos::FancyOStream& fos); -#endif // ifdef HAVE_XPETRA_EPETRAEXT - /*! @brief Helper function to do matrix-matrix multiply "in-place" Returns RCP to non-constant Xpetra::BlockedCrsMatrix. @@ -187,1426 +168,6 @@ class MatrixMatrix { }; // class MatrixMatrix -#ifdef HAVE_XPETRA_EPETRA -// specialization MatrixMatrix for SC=double, LO=GO=int -template <> -class MatrixMatrix { - typedef double Scalar; - typedef int LocalOrdinal; - typedef int GlobalOrdinal; - typedef EpetraNode Node; -#include "Xpetra_UseShortNames.hpp" - - public: - /** Given CrsMatrix objects A, B and C, form the product C = A*B. - In a parallel setting, A and B need not have matching distributions, - but C needs to have the same row-map as A (if transposeA is false). - At this time C=AT*B and C=A*BT are known to not work. However, - C=A*B and C=AT*BT are known to work, Kurtis Nusbaum 03/24/2011 - - @param A Input, must already have had 'FillComplete()' called. - @param transposeA Input, whether to use transpose of matrix A. - @param B Input, must already have had 'FillComplete()' called. - @param transposeB Input, whether to use transpose of matrix B. - @param C Result. On entry to this method, it doesn't matter whether - FillComplete() has already been called on C or not. If it has, - then C's graph must already contain all nonzero locations that - will be produced when forming the product A*B. On exit, - C.FillComplete() will have been called, unless the last argument - to this function is specified to be false. - @param call_FillComplete_on_result Optional argument, defaults to true. - Power users may specify this argument to be false if they *DON'T* - want this function to call C.FillComplete. (It is often useful - to allow this function to call C.FillComplete, in cases where - one or both of the input matrices are rectangular and it is not - trivial to know which maps to use for the domain- and range-maps.) - -*/ - static void Multiply(const Matrix& A, bool transposeA, - const Matrix& B, bool transposeB, - Matrix& C, - bool call_FillComplete_on_result = true, - bool doOptimizeStorage = true, - const std::string& label = std::string(), - const RCP& params = null) { - TEUCHOS_TEST_FOR_EXCEPTION(transposeA == false && C.getRowMap()->isSameAs(*A.getRowMap()) == false, - Xpetra::Exceptions::RuntimeError, "XpetraExt::MatrixMatrix::Multiply: row map of C is not same as row map of A"); - TEUCHOS_TEST_FOR_EXCEPTION(transposeA == true && C.getRowMap()->isSameAs(*A.getDomainMap()) == false, - Xpetra::Exceptions::RuntimeError, "XpetraExt::MatrixMatrix::Multiply: row map of C is not same as domain map of A"); - - TEUCHOS_TEST_FOR_EXCEPTION(!A.isFillComplete(), Xpetra::Exceptions::RuntimeError, "A is not fill-completed"); - TEUCHOS_TEST_FOR_EXCEPTION(!B.isFillComplete(), Xpetra::Exceptions::RuntimeError, "B is not fill-completed"); - - bool haveMultiplyDoFillComplete = call_FillComplete_on_result && doOptimizeStorage; - - using helpers = Xpetra::Helpers; - - if (C.getRowMap()->lib() == Xpetra::UseEpetra) { -#if defined(HAVE_XPETRA_EPETRA) && defined(HAVE_XPETRA_EPETRAEXT) - helpers::epetraExtMult(A, transposeA, B, transposeB, C, haveMultiplyDoFillComplete); -#else - throw(Xpetra::Exceptions::RuntimeError("Xpetra::MatrixMatrix::Multiply requires EpetraExt to be compiled.")); -#endif - } else if (C.getRowMap()->lib() == Xpetra::UseTpetra) { -#ifdef HAVE_XPETRA_TPETRA -#if ((defined(EPETRA_HAVE_OMP) && (!defined(HAVE_TPETRA_INST_OPENMP) || !defined(HAVE_TPETRA_INST_INT_INT))) || \ - (!defined(EPETRA_HAVE_OMP) && (!defined(HAVE_TPETRA_INST_SERIAL) || !defined(HAVE_TPETRA_INST_INT_INT)))) - throw(Xpetra::Exceptions::RuntimeError("Xpetra must be compiled with Tpetra ETI enabled.")); -#else - if (helpers::isTpetraCrs(A) && helpers::isTpetraCrs(B) && helpers::isTpetraCrs(C)) { - // All matrices are Crs - const Tpetra::CrsMatrix& tpA = helpers::Op2TpetraCrs(A); - const Tpetra::CrsMatrix& tpB = helpers::Op2TpetraCrs(B); - Tpetra::CrsMatrix& tpC = helpers::Op2NonConstTpetraCrs(C); - - // 18Feb2013 JJH I'm reenabling the code that allows the matrix matrix multiply to do the fillComplete. - // Previously, Tpetra's matrix matrix multiply did not support fillComplete. - Tpetra::MatrixMatrix::Multiply(tpA, transposeA, tpB, transposeB, tpC, haveMultiplyDoFillComplete, label, params); - } else if (helpers::isTpetraBlockCrs(A) && helpers::isTpetraBlockCrs(B)) { - // All matrices are BlockCrs (except maybe Ac) - // FIXME: For the moment we're just going to clobber the innards of Ac, so no reuse. Once we have a reuse kernel, - // we'll need to think about refactoring BlockCrs so we can do something smarter here. - - if (!A.getRowMap()->getComm()->getRank()) - std::cout << "WARNING: Using inefficient BlockCrs Multiply Placeholder" << std::endl; - - const Tpetra::BlockCrsMatrix& tpA = Xpetra::Helpers::Op2TpetraBlockCrs(A); - const Tpetra::BlockCrsMatrix& tpB = Xpetra::Helpers::Op2TpetraBlockCrs(B); - using CRS = Tpetra::CrsMatrix; - RCP Acrs = Tpetra::convertToCrsMatrix(tpA); - RCP Bcrs = Tpetra::convertToCrsMatrix(tpB); - - // We need the global constants to do the copy back to BlockCrs - RCP new_params; - if (!params.is_null()) { - new_params = rcp(new Teuchos::ParameterList(*params)); - new_params->set("compute global constants", true); - } - - // FIXME: The lines below only works because we're assuming Ac is Point - RCP tempAc = Teuchos::rcp(new CRS(Acrs->getRowMap(), 0)); - Tpetra::MatrixMatrix::Multiply(*Acrs, transposeA, *Bcrs, transposeB, *tempAc, haveMultiplyDoFillComplete, label, new_params); - - // Temporary output matrix - RCP > Ac_t = Tpetra::convertToBlockCrsMatrix(*tempAc, A.GetStorageBlockSize()); - RCP > Ac_x = Teuchos::rcp(new Xpetra::TpetraBlockCrsMatrix(Ac_t)); - RCP > Ac_p = Ac_x; - - // We can now cheat and replace the innards of Ac - RCP > Ac_w = Teuchos::rcp_dynamic_cast >(Teuchos::rcpFromRef(C)); - Ac_w->replaceCrsMatrix(Ac_p); - } else { - // Mix and match - TEUCHOS_TEST_FOR_EXCEPTION(1, Exceptions::RuntimeError, "Mix-and-match Crs/BlockCrs Multiply not currently supported"); - } -#endif -#else - throw(Xpetra::Exceptions::RuntimeError("Xpetra must be compiled with Tpetra.")); -#endif - } - - if (call_FillComplete_on_result && !haveMultiplyDoFillComplete) { - RCP fillParams = rcp(new Teuchos::ParameterList()); - fillParams->set("Optimize Storage", doOptimizeStorage); - C.fillComplete((transposeB) ? B.getRangeMap() : B.getDomainMap(), - (transposeA) ? A.getDomainMap() : A.getRangeMap(), - fillParams); - } - - // transfer striding information - RCP rcpA = Teuchos::rcp_const_cast(Teuchos::rcpFromRef(A)); - RCP rcpB = Teuchos::rcp_const_cast(Teuchos::rcpFromRef(B)); - C.CreateView("stridedMaps", rcpA, transposeA, rcpB, transposeB); // TODO use references instead of RCPs - } // end Multiply - - /** - @brief Helper function to do matrix-matrix multiply - - Given CrsMatrix objects A, B and C, form the product C = A*B. - In a parallel setting, A and B need not have matching distributions, - but C needs to have the same row-map as A (if transposeA is false). - At this time C=AT*B and C=A*BT are known to not work. However, - C=A*B and C=AT*BT are known to work, Kurtis Nusbaum 03/24/2011 - - @param A Input, must already have had 'FillComplete()' called. - @param transposeA Input, whether to use transpose of matrix A. - @param B Input, must already have had 'FillComplete()' called. - @param transposeB Input, whether to use transpose of matrix B. - @param C Result. If Teuchos::null, a new CrsMatrix is created with optimal number of nnz per row. - @param call_FillComplete_on_result Optional argument, defaults to true. - Power users may specify this argument to be false if they *DON'T* - want this function to call C.FillComplete. (It is often useful - to allow this function to call C.FillComplete, in cases where - one or both of the input matrices are rectangular and it is not - trivial to know which maps to use for the domain- and range-maps.) - -*/ - static RCP Multiply(const Matrix& A, bool transposeA, - const Matrix& B, bool transposeB, - RCP C_in, - Teuchos::FancyOStream& fos, - bool doFillComplete = true, - bool doOptimizeStorage = true, - const std::string& label = std::string(), - const RCP& params = null) { - TEUCHOS_TEST_FOR_EXCEPTION(!A.isFillComplete(), Exceptions::RuntimeError, "A is not fill-completed"); - TEUCHOS_TEST_FOR_EXCEPTION(!B.isFillComplete(), Exceptions::RuntimeError, "B is not fill-completed"); - - // Optimization using ML Multiply when available and requested - // This feature is currently not supported. We would have to introduce the HAVE_XPETRA_ML_MMM flag -#if defined(HAVE_XPETRA_EPETRA) && defined(HAVE_XPETRA_EPETRAEXT) && defined(HAVE_XPETRA_ML_MMM) - if (B.getDomainMap()->lib() == Xpetra::UseEpetra && !transposeA && !transposeB) { - RCP epA = Xpetra::Helpers::Op2EpetraCrs(rcpFromRef(A)); - RCP epB = Xpetra::Helpers::Op2EpetraCrs(rcpFromRef(B)); - RCP epC = MLTwoMatrixMultiply(*epA, *epB, fos); - - RCP C = Convert_Epetra_CrsMatrix_ToXpetra_CrsMatrixWrap(epC); - if (doFillComplete) { - RCP fillParams = rcp(new Teuchos::ParameterList()); - fillParams->set("Optimize Storage", doOptimizeStorage); - C->fillComplete(B.getDomainMap(), A.getRangeMap(), fillParams); - } - - // Fill strided maps information - // This is necessary since the ML matrix matrix multiplication routine has no handling for this - // TODO: move this call to MLMultiply... - C->CreateView("stridedMaps", rcpFromRef(A), transposeA, rcpFromRef(B), transposeB); - - return C; - } -#endif // EPETRA + EPETRAEXT + ML - - // Default case: Xpetra Multiply - RCP C = C_in; - - if (C == Teuchos::null) { - double nnzPerRow = Teuchos::as(0); - -#if 0 - if (A.getDomainMap()->lib() == Xpetra::UseTpetra) { - // For now, follow what ML and Epetra do. - GO numRowsA = A.getGlobalNumRows(); - GO numRowsB = B.getGlobalNumRows(); - nnzPerRow = sqrt(Teuchos::as(A.getGlobalNumEntries())/numRowsA) + - sqrt(Teuchos::as(B.getGlobalNumEntries())/numRowsB) - 1; - nnzPerRow *= nnzPerRow; - double totalNnz = nnzPerRow * A.getGlobalNumRows() * 0.75 + 100; - double minNnz = Teuchos::as(1.2 * A.getGlobalNumEntries()); - if (totalNnz < minNnz) - totalNnz = minNnz; - nnzPerRow = totalNnz / A.getGlobalNumRows(); - - fos << "Matrix product nnz per row estimate = " << Teuchos::as(nnzPerRow) << std::endl; - } -#endif - - if (transposeA) - C = MatrixFactory::Build(A.getDomainMap(), Teuchos::as(nnzPerRow)); - else - C = MatrixFactory::Build(A.getRowMap(), Teuchos::as(nnzPerRow)); - - } else { - C->resumeFill(); // why this is not done inside of Tpetra MxM? - fos << "Reuse C pattern" << std::endl; - } - - Multiply(A, transposeA, B, transposeB, *C, doFillComplete, doOptimizeStorage, label, params); // call Multiply routine from above - - return C; - } - - /*! @brief Helper function to do matrix-matrix multiply - - Returns C = AB. - - @param A left matrix - @param transposeA if true, use the transpose of A - @param B right matrix - @param transposeB if true, use the transpose of B - @param callFillCompleteOnResult if true, the resulting matrix should be fillComplete'd - */ - static RCP Multiply(const Matrix& A, bool transposeA, - const Matrix& B, bool transposeB, - Teuchos::FancyOStream& fos, - bool callFillCompleteOnResult = true, - bool doOptimizeStorage = true, - const std::string& label = std::string(), - const RCP& params = null) { - return Multiply(A, transposeA, B, transposeB, Teuchos::null, fos, callFillCompleteOnResult, doOptimizeStorage, label, params); - } - -#if defined(HAVE_XPETRA_EPETRA) && defined(HAVE_XPETRA_EPETRAEXT) - // Michael Gee's MLMultiply - static RCP MLTwoMatrixMultiply(const Epetra_CrsMatrix& epA, - const Epetra_CrsMatrix& epB, - Teuchos::FancyOStream& fos) { -#if defined(HAVE_XPETRA_ML_MMM) // Note: this is currently not supported - ML_Comm* comm; - ML_Comm_Create(&comm); - fos << "****** USING ML's MATRIX MATRIX MULTIPLY ******" << std::endl; -#ifdef HAVE_MPI - // ML_Comm uses MPI_COMM_WORLD, so try to use the same communicator as epA. - const Epetra_MpiComm* Mcomm = dynamic_cast(&(epA.Comm())); - if (Mcomm) - ML_Comm_Set_UsrComm(comm, Mcomm->GetMpiComm()); -#endif - // in order to use ML, there must be no indices missing from the matrix column maps. - EpetraExt::CrsMatrix_SolverMap Atransform; - EpetraExt::CrsMatrix_SolverMap Btransform; - const Epetra_CrsMatrix& A = Atransform(const_cast(epA)); - const Epetra_CrsMatrix& B = Btransform(const_cast(epB)); - - if (!A.Filled()) throw Exceptions::RuntimeError("A has to be FillCompleted"); - if (!B.Filled()) throw Exceptions::RuntimeError("B has to be FillCompleted"); - - // create ML operators from EpetraCrsMatrix - ML_Operator* ml_As = ML_Operator_Create(comm); - ML_Operator* ml_Bs = ML_Operator_Create(comm); - ML_Operator_WrapEpetraCrsMatrix(const_cast(&A), ml_As); // Should we test if the lightweight wrapper is actually used or if WrapEpetraCrsMatrix fall backs to the heavy one? - ML_Operator_WrapEpetraCrsMatrix(const_cast(&B), ml_Bs); - ML_Operator* ml_AtimesB = ML_Operator_Create(comm); - { - Teuchos::TimeMonitor tm(*Teuchos::TimeMonitor::getNewTimer("ML_2matmult kernel")); - ML_2matmult(ml_As, ml_Bs, ml_AtimesB, ML_CSR_MATRIX); // do NOT use ML_EpetraCRS_MATRIX!!! - } - ML_Operator_Destroy(&ml_As); - ML_Operator_Destroy(&ml_Bs); - - // For ml_AtimesB we have to reconstruct the column map in global indexing, - // The following is going down to the salt-mines of ML ... - // note: we use integers, since ML only works for Epetra... - int N_local = ml_AtimesB->invec_leng; - ML_CommInfoOP* getrow_comm = ml_AtimesB->getrow->pre_comm; - if (!getrow_comm) throw(Exceptions::RuntimeError("ML_Operator does not have a CommInfo")); - ML_Comm* comm_AB = ml_AtimesB->comm; // get comm object - if (N_local != B.DomainMap().NumMyElements()) - throw(Exceptions::RuntimeError("Mismatch in local row dimension between ML and Epetra")); - int N_rcvd = 0; - int N_send = 0; - int flag = 0; - for (int i = 0; i < getrow_comm->N_neighbors; i++) { - N_rcvd += (getrow_comm->neighbors)[i].N_rcv; - N_send += (getrow_comm->neighbors)[i].N_send; - if (((getrow_comm->neighbors)[i].N_rcv != 0) && - ((getrow_comm->neighbors)[i].rcv_list != NULL)) flag = 1; - } - // For some unknown reason, ML likes to have stuff one larger than - // neccessary... - std::vector dtemp(N_local + N_rcvd + 1); // "double" vector for comm function - std::vector cmap(N_local + N_rcvd + 1); // vector for gids - for (int i = 0; i < N_local; ++i) { - cmap[i] = B.DomainMap().GID(i); - dtemp[i] = (double)cmap[i]; - } - ML_cheap_exchange_bdry(&dtemp[0], getrow_comm, N_local, N_send, comm_AB); // do communication - if (flag) { // process received data - int count = N_local; - const int neighbors = getrow_comm->N_neighbors; - for (int i = 0; i < neighbors; i++) { - const int nrcv = getrow_comm->neighbors[i].N_rcv; - for (int j = 0; j < nrcv; j++) - cmap[getrow_comm->neighbors[i].rcv_list[j]] = (int)dtemp[count++]; - } - } else { - for (int i = 0; i < N_local + N_rcvd; ++i) - cmap[i] = (int)dtemp[i]; - } - dtemp.clear(); // free double array - - // we can now determine a matching column map for the result - Epetra_Map gcmap(-1, N_local + N_rcvd, &cmap[0], B.ColMap().IndexBase(), A.Comm()); - - int allocated = 0; - int rowlength; - double* val = NULL; - int* bindx = NULL; - - const int myrowlength = A.RowMap().NumMyElements(); - const Epetra_Map& rowmap = A.RowMap(); - - // Determine the maximum bandwith for the result matrix. - // replaces the old, very(!) memory-consuming guess: - // int guessnpr = A.MaxNumEntries()*B.MaxNumEntries(); - int educatedguess = 0; - for (int i = 0; i < myrowlength; ++i) { - // get local row - ML_get_matrix_row(ml_AtimesB, 1, &i, &allocated, &bindx, &val, &rowlength, 0); - if (rowlength > educatedguess) - educatedguess = rowlength; - } - - // allocate our result matrix and fill it - RCP result = rcp(new Epetra_CrsMatrix(::Copy, A.RangeMap(), gcmap, educatedguess, false)); - - std::vector gcid(educatedguess); - for (int i = 0; i < myrowlength; ++i) { - const int grid = rowmap.GID(i); - // get local row - ML_get_matrix_row(ml_AtimesB, 1, &i, &allocated, &bindx, &val, &rowlength, 0); - if (!rowlength) continue; - if ((int)gcid.size() < rowlength) gcid.resize(rowlength); - for (int j = 0; j < rowlength; ++j) { - gcid[j] = gcmap.GID(bindx[j]); - if (gcid[j] < 0) - throw Exceptions::RuntimeError("Error: cannot find gcid!"); - } - int err = result->InsertGlobalValues(grid, rowlength, val, &gcid[0]); - if (err != 0 && err != 1) { - std::ostringstream errStr; - errStr << "Epetra_CrsMatrix::InsertGlobalValues returned err=" << err; - throw Exceptions::RuntimeError(errStr.str()); - } - } - // free memory - if (bindx) ML_free(bindx); - if (val) ML_free(val); - ML_Operator_Destroy(&ml_AtimesB); - ML_Comm_Destroy(&comm); - - return result; -#else // no MUELU_ML - (void)epA; - (void)epB; - (void)fos; - TEUCHOS_TEST_FOR_EXCEPTION(true, Xpetra::Exceptions::RuntimeError, - "No ML multiplication available. This feature is currently not supported by Xpetra."); - TEUCHOS_UNREACHABLE_RETURN(Teuchos::null); -#endif - } -#endif // ifdef HAVE_XPETRA_EPETRAEXT - - /*! @brief Helper function to do matrix-matrix multiply "in-place" - - Returns RCP to non-constant Xpetra::BlockedCrsMatrix. - - @param A left matrix - @param transposeA if true, use the transpose of A - @param B right matrix - @param transposeB if true, use the transpose of B - @param doOptimizeStorage if true, the resulting matrix should be fillComplete'd - */ - static RCP TwoMatrixMultiplyBlock(const BlockedCrsMatrix& A, bool transposeA, - const BlockedCrsMatrix& B, bool transposeB, - Teuchos::FancyOStream& fos, - bool doFillComplete = true, - bool doOptimizeStorage = true) { - TEUCHOS_TEST_FOR_EXCEPTION(transposeA || transposeB, Exceptions::RuntimeError, - "TwoMatrixMultiply for BlockedCrsMatrix not implemented for transposeA==true or transposeB==true"); - - // Preconditions - TEUCHOS_TEST_FOR_EXCEPTION(!A.isFillComplete(), Exceptions::RuntimeError, "A is not fill-completed"); - TEUCHOS_TEST_FOR_EXCEPTION(!B.isFillComplete(), Exceptions::RuntimeError, "B is not fill-completed"); - - RCP rgmapextractor = A.getRangeMapExtractor(); - RCP domapextractor = B.getDomainMapExtractor(); - - RCP C = rcp(new BlockedCrsMatrix(rgmapextractor, domapextractor, 33 /* TODO fix me */)); - - for (size_t i = 0; i < A.Rows(); ++i) { // loop over all block rows of A - for (size_t j = 0; j < B.Cols(); ++j) { // loop over all block columns of B - RCP Cij; - - for (size_t l = 0; l < B.Rows(); ++l) { // loop for calculating entry C_{ij} - RCP crmat1 = A.getMatrix(i, l); - RCP crmat2 = B.getMatrix(l, j); - - if (crmat1.is_null() || crmat2.is_null()) - continue; - - // try unwrapping 1x1 blocked matrix - { - auto unwrap1 = Teuchos::rcp_dynamic_cast(crmat1); - auto unwrap2 = Teuchos::rcp_dynamic_cast(crmat2); - - if (unwrap1.is_null() != unwrap2.is_null()) { - if (unwrap1 != Teuchos::null && unwrap1->Rows() == 1 && unwrap1->Cols() == 1) - crmat1 = unwrap1->getCrsMatrix(); - if (unwrap2 != Teuchos::null && unwrap2->Rows() == 1 && unwrap2->Cols() == 1) - crmat2 = unwrap2->getCrsMatrix(); - } - } - - RCP crop1 = Teuchos::rcp_dynamic_cast(crmat1); - RCP crop2 = Teuchos::rcp_dynamic_cast(crmat2); - TEUCHOS_TEST_FOR_EXCEPTION(crop1.is_null() != crop2.is_null(), Xpetra::Exceptions::RuntimeError, - "A and B must be either both (compatible) BlockedCrsMatrix objects or both CrsMatrixWrap objects."); - - // Forcibly compute the global constants if we don't have them (only works for real CrsMatrices, not nested blocks) - if (!crop1.is_null()) - Teuchos::rcp_const_cast(crmat1->getCrsGraph())->computeGlobalConstants(); - if (!crop2.is_null()) - Teuchos::rcp_const_cast(crmat2->getCrsGraph())->computeGlobalConstants(); - - TEUCHOS_TEST_FOR_EXCEPTION(!crmat1->haveGlobalConstants(), Exceptions::RuntimeError, - "crmat1 does not have global constants"); - TEUCHOS_TEST_FOR_EXCEPTION(!crmat2->haveGlobalConstants(), Exceptions::RuntimeError, - "crmat2 does not have global constants"); - - if (crmat1->getGlobalNumEntries() == 0 || crmat2->getGlobalNumEntries() == 0) - continue; - - // temporary matrix containing result of local block multiplication - RCP temp = Teuchos::null; - - if (crop1 != Teuchos::null && crop2 != Teuchos::null) - temp = Multiply(*crop1, false, *crop2, false, fos); - else { - RCP bop1 = Teuchos::rcp_dynamic_cast(crmat1); - RCP bop2 = Teuchos::rcp_dynamic_cast(crmat2); - TEUCHOS_TEST_FOR_EXCEPTION(bop1.is_null() == true, Xpetra::Exceptions::BadCast, "A is not a BlockedCrsMatrix. (TwoMatrixMultiplyBlock)"); - TEUCHOS_TEST_FOR_EXCEPTION(bop2.is_null() == true, Xpetra::Exceptions::BadCast, "B is not a BlockedCrsMatrix. (TwoMatrixMultiplyBlock)"); - TEUCHOS_TEST_FOR_EXCEPTION(bop1->Cols() != bop2->Rows(), Xpetra::Exceptions::RuntimeError, "A has " << bop1->Cols() << " columns and B has " << bop2->Rows() << " rows. Matrices are not compatible! (TwoMatrixMultiplyBlock)"); - TEUCHOS_TEST_FOR_EXCEPTION(bop1->getDomainMap()->isSameAs(*(bop2->getRangeMap())) == false, Xpetra::Exceptions::RuntimeError, "Domain map of A is not the same as range map of B. Matrices are not compatible! (TwoMatrixMultiplyBlock)"); - - // recursive multiplication call - temp = TwoMatrixMultiplyBlock(*bop1, transposeA, *bop2, transposeB, fos, doFillComplete, doOptimizeStorage); - - RCP btemp = Teuchos::rcp_dynamic_cast(temp); - TEUCHOS_TEST_FOR_EXCEPTION(btemp->Rows() != bop1->Rows(), Xpetra::Exceptions::RuntimeError, "Number of block rows of local blocked operator is " << btemp->Rows() << " but should be " << bop1->Rows() << ". (TwoMatrixMultiplyBlock)"); - TEUCHOS_TEST_FOR_EXCEPTION(btemp->Cols() != bop2->Cols(), Xpetra::Exceptions::RuntimeError, "Number of block cols of local blocked operator is " << btemp->Cols() << " but should be " << bop2->Cols() << ". (TwoMatrixMultiplyBlock)"); - TEUCHOS_TEST_FOR_EXCEPTION(btemp->getRangeMapExtractor()->getFullMap()->isSameAs(*(bop1->getRangeMapExtractor()->getFullMap())) == false, Xpetra::Exceptions::RuntimeError, "Range map of local blocked operator should be same as first operator. (TwoMatrixMultiplyBlock)"); - TEUCHOS_TEST_FOR_EXCEPTION(btemp->getDomainMapExtractor()->getFullMap()->isSameAs(*(bop2->getDomainMapExtractor()->getFullMap())) == false, Xpetra::Exceptions::RuntimeError, "Domain map of local blocked operator should be same as second operator. (TwoMatrixMultiplyBlock)"); - TEUCHOS_TEST_FOR_EXCEPTION(btemp->getRangeMapExtractor()->getThyraMode() != bop1->getRangeMapExtractor()->getThyraMode(), Xpetra::Exceptions::RuntimeError, "Thyra mode of local range map extractor incompatible with range map extractor of A (TwoMatrixMultiplyBlock)"); - TEUCHOS_TEST_FOR_EXCEPTION(btemp->getDomainMapExtractor()->getThyraMode() != bop2->getDomainMapExtractor()->getThyraMode(), Xpetra::Exceptions::RuntimeError, "Thyra mode of local domain map extractor incompatible with domain map extractor of B (TwoMatrixMultiplyBlock)"); - } - - TEUCHOS_TEST_FOR_EXCEPTION(temp->isFillComplete() == false, Xpetra::Exceptions::RuntimeError, "Local block is not filled. (TwoMatrixMultiplyBlock)"); - - RCP addRes = null; - if (Cij.is_null()) - Cij = temp; - else { - MatrixMatrix::TwoMatrixAdd(*temp, false, 1.0, *Cij, false, 1.0, addRes, fos); - Cij = addRes; - } - } - - if (!Cij.is_null()) { - if (Cij->isFillComplete()) - Cij->resumeFill(); - Cij->fillComplete(B.getDomainMap(j), A.getRangeMap(i)); - C->setMatrix(i, j, Cij); - } else { - C->setMatrix(i, j, Teuchos::null); - } - } - } - - if (doFillComplete) - C->fillComplete(); // call default fillComplete for BlockCrsMatrixWrap objects - - return C; - } // TwoMatrixMultiplyBlock - - /*! @brief Helper function to calculate B = alpha*A + beta*B. - - @param A left matrix operand - @param transposeA indicate whether to use transpose of A - @param alpha scalar multiplier for A - @param B right matrix operand - @param beta scalar multiplier for B - - @return sum in B. - - Note that B does not have to be fill-completed. - */ - static void TwoMatrixAdd(const Matrix& A, bool transposeA, SC alpha, Matrix& B, SC beta) { - TEUCHOS_TEST_FOR_EXCEPTION(!(A.getRowMap()->isSameAs(*B.getRowMap())), Exceptions::Incompatible, - "TwoMatrixAdd: matrix row maps are not the same."); - - if (A.getRowMap()->lib() == Xpetra::UseEpetra) { -#if defined(HAVE_XPETRA_EPETRA) && defined(HAVE_XPETRA_EPETRAEXT) - const Epetra_CrsMatrix& epA = Xpetra::Helpers::Op2EpetraCrs(A); - Epetra_CrsMatrix& epB = Xpetra::Helpers::Op2NonConstEpetraCrs(B); - - // FIXME is there a bug if beta=0? - int rv = EpetraExt::MatrixMatrix::Add(epA, transposeA, alpha, epB, beta); - - if (rv != 0) - throw Exceptions::RuntimeError("EpetraExt::MatrixMatrix::Add return value " + Teuchos::toString(rv)); - std::ostringstream buf; -#else - throw Exceptions::RuntimeError("Xpetra must be compiled with EpetraExt."); -#endif - } else if (A.getRowMap()->lib() == Xpetra::UseTpetra) { -#ifdef HAVE_XPETRA_TPETRA -#if ((defined(EPETRA_HAVE_OMP) && (!defined(HAVE_TPETRA_INST_OPENMP) || !defined(HAVE_TPETRA_INST_INT_INT))) || \ - (!defined(EPETRA_HAVE_OMP) && (!defined(HAVE_TPETRA_INST_SERIAL) || !defined(HAVE_TPETRA_INST_INT_INT)))) - throw(Xpetra::Exceptions::RuntimeError("Xpetra must be compiled with Tpetra GO=int enabled.")); -#else - const Tpetra::CrsMatrix& tpA = Xpetra::Helpers::Op2TpetraCrs(A); - Tpetra::CrsMatrix& tpB = Xpetra::Helpers::Op2NonConstTpetraCrs(B); - - Tpetra::MatrixMatrix::Add(tpA, transposeA, alpha, tpB, beta); -#endif -#else - throw Exceptions::RuntimeError("Xpetra must be compiled with Tpetra."); -#endif - } - } // MatrixMatrix::TwoMatrixAdd() - - /*! @brief Helper function to calculate C = alpha*A + beta*B. - - @param A left matrix operand - @param transposeA indicate whether to use transpose of A - @param alpha scalar multiplier for A, defaults to 1.0 - @param B right matrix operand - @param transposeB indicate whether to use transpose of B - @param beta scalar multiplier for B, defaults to 1.0 - @param C resulting sum - @param fos output stream for printing to screen - @param AHasFixedNnzPerRow - - It is up to the caller to ensure that the resulting matrix sum is fillComplete'd. - */ - static void TwoMatrixAdd(const Matrix& A, bool transposeA, const SC& alpha, - const Matrix& B, bool transposeB, const SC& beta, - RCP& C, Teuchos::FancyOStream& fos, bool AHasFixedNnzPerRow = false) { - using helpers = Xpetra::Helpers; - RCP rcpA = Teuchos::rcpFromRef(A); - RCP rcpB = Teuchos::rcpFromRef(B); - RCP rcpBopA = Teuchos::rcp_dynamic_cast(rcpA); - RCP rcpBopB = Teuchos::rcp_dynamic_cast(rcpB); - - if (rcpBopA == Teuchos::null && rcpBopB == Teuchos::null) { - if (!(A.getRowMap()->isSameAs(*(B.getRowMap())))) - throw Exceptions::Incompatible("TwoMatrixAdd: matrix row maps are not the same."); - - auto lib = A.getRowMap()->lib(); - if (lib == Xpetra::UseEpetra) { -#if defined(HAVE_XPETRA_EPETRA) && defined(HAVE_XPETRA_EPETRAEXT) - const Epetra_CrsMatrix& epA = helpers::Op2EpetraCrs(A); - const Epetra_CrsMatrix& epB = helpers::Op2EpetraCrs(B); - if (C.is_null()) { - size_t maxNzInA = 0; - size_t maxNzInB = 0; - size_t numLocalRows = 0; - if (A.isFillComplete() && B.isFillComplete()) { - maxNzInA = A.getLocalMaxNumRowEntries(); - maxNzInB = B.getLocalMaxNumRowEntries(); - numLocalRows = A.getLocalNumRows(); - } - - if (maxNzInA == 1 || maxNzInB == 1 || AHasFixedNnzPerRow) { - // first check if either A or B has at most 1 nonzero per row - // the case of both having at most 1 nz per row is handled by the ``else'' - Teuchos::ArrayRCP exactNnzPerRow(numLocalRows); - - if ((maxNzInA == 1 && maxNzInB > 1) || AHasFixedNnzPerRow) { - for (size_t i = 0; i < numLocalRows; ++i) - exactNnzPerRow[i] = B.getNumEntriesInLocalRow(Teuchos::as(i)) + maxNzInA; - - } else { - for (size_t i = 0; i < numLocalRows; ++i) - exactNnzPerRow[i] = A.getNumEntriesInLocalRow(Teuchos::as(i)) + maxNzInB; - } - - fos << "MatrixMatrix::TwoMatrixAdd : special case detected (one matrix has a fixed nnz per row)" - << ", using static profiling" << std::endl; - C = rcp(new Xpetra::CrsMatrixWrap(A.getRowMap(), exactNnzPerRow)); - - } else { - // general case - LO maxPossibleNNZ = A.getLocalMaxNumRowEntries() + B.getLocalMaxNumRowEntries(); - C = rcp(new Xpetra::CrsMatrixWrap(A.getRowMap(), maxPossibleNNZ)); - } - if (transposeB) - fos << "MatrixMatrix::TwoMatrixAdd : ** WARNING ** estimate could be badly wrong because second summand is transposed" << std::endl; - } - RCP epC = helpers::Op2NonConstEpetraCrs(C); - Epetra_CrsMatrix* ref2epC = &*epC; // to avoid a compiler error... - - // FIXME is there a bug if beta=0? - int rv = EpetraExt::MatrixMatrix::Add(epA, transposeA, alpha, epB, transposeB, beta, ref2epC); - - if (rv != 0) - throw Exceptions::RuntimeError("EpetraExt::MatrixMatrix::Add return value of " + Teuchos::toString(rv)); -#else - throw Exceptions::RuntimeError("MueLu must be compile with EpetraExt."); -#endif - } else if (lib == Xpetra::UseTpetra) { -#ifdef HAVE_XPETRA_TPETRA -#if ((defined(EPETRA_HAVE_OMP) && (!defined(HAVE_TPETRA_INST_OPENMP) || !defined(HAVE_TPETRA_INST_INT_INT))) || \ - (!defined(EPETRA_HAVE_OMP) && (!defined(HAVE_TPETRA_INST_SERIAL) || !defined(HAVE_TPETRA_INST_INT_INT)))) - throw(Xpetra::Exceptions::RuntimeError("Xpetra must be compiled with Tpetra GO=int enabled.")); -#else - using tcrs_matrix_type = Tpetra::CrsMatrix; - const tcrs_matrix_type& tpA = helpers::Op2TpetraCrs(A); - const tcrs_matrix_type& tpB = helpers::Op2TpetraCrs(B); - C = helpers::tpetraAdd(tpA, transposeA, alpha, tpB, transposeB, beta); -#endif -#else - throw Exceptions::RuntimeError("Xpetra must be compile with Tpetra."); -#endif - } - - ///////////////////////// EXPERIMENTAL - if (A.IsView("stridedMaps")) C->CreateView("stridedMaps", rcpFromRef(A)); - if (B.IsView("stridedMaps")) C->CreateView("stridedMaps", rcpFromRef(B)); - ///////////////////////// EXPERIMENTAL - } - // the first matrix is of type CrsMatrixWrap, the second is a blocked operator - else if (rcpBopA == Teuchos::null && rcpBopB != Teuchos::null) { - RCP rgmapextractor = rcpBopB->getRangeMapExtractor(); - RCP domapextractor = rcpBopB->getDomainMapExtractor(); - - C = rcp(new BlockedCrsMatrix(rgmapextractor, domapextractor, 33 /* TODO fix me */)); - RCP bC = Teuchos::rcp_dynamic_cast(C); - - size_t i = 0; - for (size_t j = 0; j < rcpBopB->Cols(); ++j) { // loop over all block columns of B - RCP Cij = Teuchos::null; - if (rcpA != Teuchos::null && - rcpBopB->getMatrix(i, j) != Teuchos::null) { - // recursive call - TwoMatrixAdd(*rcpA, transposeA, alpha, - *(rcpBopB->getMatrix(i, j)), transposeB, beta, - Cij, fos, AHasFixedNnzPerRow); - } else if (rcpA == Teuchos::null && - rcpBopB->getMatrix(i, j) != Teuchos::null) { - Cij = rcpBopB->getMatrix(i, j); - } else if (rcpA != Teuchos::null && - rcpBopB->getMatrix(i, j) == Teuchos::null) { - Cij = Teuchos::rcp_const_cast(rcpA); - } else { - Cij = Teuchos::null; - } - - if (!Cij.is_null()) { - if (Cij->isFillComplete()) - Cij->resumeFill(); - Cij->fillComplete(); - bC->setMatrix(i, j, Cij); - } else { - bC->setMatrix(i, j, Teuchos::null); - } - } // loop over columns j - } - // the second matrix is of type CrsMatrixWrap, the first is a blocked operator - else if (rcpBopA != Teuchos::null && rcpBopB == Teuchos::null) { - RCP rgmapextractor = rcpBopA->getRangeMapExtractor(); - RCP domapextractor = rcpBopA->getDomainMapExtractor(); - - C = rcp(new BlockedCrsMatrix(rgmapextractor, domapextractor, 33 /* TODO fix me */)); - RCP bC = Teuchos::rcp_dynamic_cast(C); - - size_t j = 0; - for (size_t i = 0; i < rcpBopA->Rows(); ++i) { // loop over all block rows of A - RCP Cij = Teuchos::null; - if (rcpBopA->getMatrix(i, j) != Teuchos::null && - rcpB != Teuchos::null) { - // recursive call - TwoMatrixAdd(*(rcpBopA->getMatrix(i, j)), transposeA, alpha, - *rcpB, transposeB, beta, - Cij, fos, AHasFixedNnzPerRow); - } else if (rcpBopA->getMatrix(i, j) == Teuchos::null && - rcpB != Teuchos::null) { - Cij = Teuchos::rcp_const_cast(rcpB); - } else if (rcpBopA->getMatrix(i, j) != Teuchos::null && - rcpB == Teuchos::null) { - Cij = rcpBopA->getMatrix(i, j); - } else { - Cij = Teuchos::null; - } - - if (!Cij.is_null()) { - if (Cij->isFillComplete()) - Cij->resumeFill(); - Cij->fillComplete(); - bC->setMatrix(i, j, Cij); - } else { - bC->setMatrix(i, j, Teuchos::null); - } - } // loop over rows i - } else { - // This is the version for blocked matrices - - // check the compatibility of the blocked operators - TEUCHOS_TEST_FOR_EXCEPTION(rcpBopA.is_null() == true, Xpetra::Exceptions::BadCast, "A is not a BlockedCrsMatrix. (TwoMatrixAdd)"); - TEUCHOS_TEST_FOR_EXCEPTION(rcpBopB.is_null() == true, Xpetra::Exceptions::BadCast, "B is not a BlockedCrsMatrix. (TwoMatrixAdd)"); - TEUCHOS_TEST_FOR_EXCEPTION(rcpBopA->Rows() != rcpBopB->Rows(), Xpetra::Exceptions::RuntimeError, "A has " << rcpBopA->Rows() << " rows and B has " << rcpBopA->Rows() << " rows. Matrices are not compatible! (TwoMatrixAdd)"); - TEUCHOS_TEST_FOR_EXCEPTION(rcpBopA->Rows() != rcpBopB->Rows(), Xpetra::Exceptions::RuntimeError, "A has " << rcpBopA->Cols() << " cols and B has " << rcpBopA->Cols() << " cols. Matrices are not compatible! (TwoMatrixAdd)"); - TEUCHOS_TEST_FOR_EXCEPTION(rcpBopA->getRangeMap()->isSameAs(*(rcpBopB->getRangeMap())) == false, Xpetra::Exceptions::RuntimeError, "Range map of A is not the same as range map of B. Matrices are not compatible! (TwoMatrixAdd)"); - TEUCHOS_TEST_FOR_EXCEPTION(rcpBopA->getDomainMap()->isSameAs(*(rcpBopB->getDomainMap())) == false, Xpetra::Exceptions::RuntimeError, "Domain map of A is not the same as domain map of B. Matrices are not compatible! (TwoMatrixAdd)"); - TEUCHOS_TEST_FOR_EXCEPTION(rcpBopA->getRangeMapExtractor()->getThyraMode() != rcpBopB->getRangeMapExtractor()->getThyraMode(), Xpetra::Exceptions::RuntimeError, "Different Thyra/Xpetra style gids in RangeMapExtractor of A and B. Matrices are not compatible! (TwoMatrixAdd)"); - TEUCHOS_TEST_FOR_EXCEPTION(rcpBopA->getDomainMapExtractor()->getThyraMode() != rcpBopB->getDomainMapExtractor()->getThyraMode(), Xpetra::Exceptions::RuntimeError, "Different Thyra/Xpetra style gids in DomainMapExtractor of A and B. Matrices are not compatible! (TwoMatrixAdd)"); - - RCP rgmapextractor = rcpBopA->getRangeMapExtractor(); - RCP domapextractor = rcpBopB->getDomainMapExtractor(); - - C = rcp(new BlockedCrsMatrix(rgmapextractor, domapextractor, 33 /* TODO fix me */)); - RCP bC = Teuchos::rcp_dynamic_cast(C); - - for (size_t i = 0; i < rcpBopA->Rows(); ++i) { // loop over all block rows of A - for (size_t j = 0; j < rcpBopB->Cols(); ++j) { // loop over all block columns of B - - RCP Cij = Teuchos::null; - if (rcpBopA->getMatrix(i, j) != Teuchos::null && - rcpBopB->getMatrix(i, j) != Teuchos::null) { - // recursive call - - TwoMatrixAdd(*(rcpBopA->getMatrix(i, j)), transposeA, alpha, - *(rcpBopB->getMatrix(i, j)), transposeB, beta, - Cij, fos, AHasFixedNnzPerRow); - } else if (rcpBopA->getMatrix(i, j) == Teuchos::null && - rcpBopB->getMatrix(i, j) != Teuchos::null) { - Cij = rcpBopB->getMatrix(i, j); - } else if (rcpBopA->getMatrix(i, j) != Teuchos::null && - rcpBopB->getMatrix(i, j) == Teuchos::null) { - Cij = rcpBopA->getMatrix(i, j); - } else { - Cij = Teuchos::null; - } - - if (!Cij.is_null()) { - if (Cij->isFillComplete()) - Cij->resumeFill(); - // Cij->fillComplete(rcpBopA->getDomainMap(j), rcpBopA->getRangeMap(i)); - Cij->fillComplete(); - bC->setMatrix(i, j, Cij); - } else { - bC->setMatrix(i, j, Teuchos::null); - } - } // loop over columns j - } // loop over rows i - - } // end blocked recursive algorithm - } // MatrixMatrix::TwoMatrixAdd() -}; // end specialization on SC=double, GO=int and NO=EpetraNode - -// specialization MatrixMatrix for SC=double, GO=long long and NO=EptraNode -template <> -class MatrixMatrix { - typedef double Scalar; - typedef int LocalOrdinal; - typedef long long GlobalOrdinal; - typedef EpetraNode Node; -#include "Xpetra_UseShortNames.hpp" - - public: - /** Given CrsMatrix objects A, B and C, form the product C = A*B. - In a parallel setting, A and B need not have matching distributions, - but C needs to have the same row-map as A (if transposeA is false). - At this time C=AT*B and C=A*BT are known to not work. However, - C=A*B and C=AT*BT are known to work, Kurtis Nusbaum 03/24/2011 - - @param A Input, must already have had 'FillComplete()' called. - @param transposeA Input, whether to use transpose of matrix A. - @param B Input, must already have had 'FillComplete()' called. - @param transposeB Input, whether to use transpose of matrix B. - @param C Result. On entry to this method, it doesn't matter whether - FillComplete() has already been called on C or not. If it has, - then C's graph must already contain all nonzero locations that - will be produced when forming the product A*B. On exit, - C.FillComplete() will have been called, unless the last argument - to this function is specified to be false. - @param call_FillComplete_on_result Optional argument, defaults to true. - Power users may specify this argument to be false if they *DON'T* - want this function to call C.FillComplete. (It is often useful - to allow this function to call C.FillComplete, in cases where - one or both of the input matrices are rectangular and it is not - trivial to know which maps to use for the domain- and range-maps.) - -*/ - static void Multiply(const Matrix& A, bool transposeA, - const Matrix& B, bool transposeB, - Matrix& C, - bool call_FillComplete_on_result = true, - bool doOptimizeStorage = true, - const std::string& label = std::string(), - const RCP& params = null) { - using helpers = Xpetra::Helpers; - TEUCHOS_TEST_FOR_EXCEPTION(transposeA == false && C.getRowMap()->isSameAs(*A.getRowMap()) == false, - Xpetra::Exceptions::RuntimeError, "XpetraExt::MatrixMatrix::Multiply: row map of C is not same as row map of A"); - TEUCHOS_TEST_FOR_EXCEPTION(transposeA == true && C.getRowMap()->isSameAs(*A.getDomainMap()) == false, - Xpetra::Exceptions::RuntimeError, "XpetraExt::MatrixMatrix::Multiply: row map of C is not same as domain map of A"); - - TEUCHOS_TEST_FOR_EXCEPTION(!A.isFillComplete(), Xpetra::Exceptions::RuntimeError, "A is not fill-completed"); - TEUCHOS_TEST_FOR_EXCEPTION(!B.isFillComplete(), Xpetra::Exceptions::RuntimeError, "B is not fill-completed"); - - bool haveMultiplyDoFillComplete = call_FillComplete_on_result && doOptimizeStorage; - - if (C.getRowMap()->lib() == Xpetra::UseEpetra) { -#if defined(HAVE_XPETRA_EPETRA) && defined(HAVE_XPETRA_EPETRAEXT) - helpers::epetraExtMult(A, transposeA, B, transposeB, C, haveMultiplyDoFillComplete); -#else - throw(Xpetra::Exceptions::RuntimeError("Xpetra::MatrixMatrix::Multiply requires EpetraExt to be compiled.")); -#endif - } else if (C.getRowMap()->lib() == Xpetra::UseTpetra) { -#ifdef HAVE_XPETRA_TPETRA -#if ((defined(EPETRA_HAVE_OMP) && (!defined(HAVE_TPETRA_INST_OPENMP) || !defined(HAVE_TPETRA_INST_INT_LONG_LONG))) || \ - (!defined(EPETRA_HAVE_OMP) && (!defined(HAVE_TPETRA_INST_SERIAL) || !defined(HAVE_TPETRA_INST_INT_LONG_LONG)))) - throw(Xpetra::Exceptions::RuntimeError("Xpetra must be compiled with Tpetra ETI enabled.")); -#else - if (helpers::isTpetraCrs(A) && helpers::isTpetraCrs(B) && helpers::isTpetraCrs(C)) { - // All matrices are Crs - const Tpetra::CrsMatrix& tpA = helpers::Op2TpetraCrs(A); - const Tpetra::CrsMatrix& tpB = helpers::Op2TpetraCrs(B); - Tpetra::CrsMatrix& tpC = helpers::Op2NonConstTpetraCrs(C); - - // 18Feb2013 JJH I'm reenabling the code that allows the matrix matrix multiply to do the fillComplete. - // Previously, Tpetra's matrix matrix multiply did not support fillComplete. - Tpetra::MatrixMatrix::Multiply(tpA, transposeA, tpB, transposeB, tpC, haveMultiplyDoFillComplete, label, params); - } else if (helpers::isTpetraBlockCrs(A) && helpers::isTpetraBlockCrs(B)) { - // All matrices are BlockCrs (except maybe Ac) - // FIXME: For the moment we're just going to clobber the innards of Ac, so no reuse. Once we have a reuse kernel, - // we'll need to think about refactoring BlockCrs so we can do something smarter here. - - if (!A.getRowMap()->getComm()->getRank()) - std::cout << "WARNING: Using inefficient BlockCrs Multiply Placeholder" << std::endl; - - const Tpetra::BlockCrsMatrix& tpA = Xpetra::Helpers::Op2TpetraBlockCrs(A); - const Tpetra::BlockCrsMatrix& tpB = Xpetra::Helpers::Op2TpetraBlockCrs(B); - using CRS = Tpetra::CrsMatrix; - RCP Acrs = Tpetra::convertToCrsMatrix(tpA); - RCP Bcrs = Tpetra::convertToCrsMatrix(tpB); - - // We need the global constants to do the copy back to BlockCrs - RCP new_params; - if (!params.is_null()) { - new_params = rcp(new Teuchos::ParameterList(*params)); - new_params->set("compute global constants", true); - } - - // FIXME: The lines below only works because we're assuming Ac is Point - RCP tempAc = Teuchos::rcp(new CRS(Acrs->getRowMap(), 0)); - Tpetra::MatrixMatrix::Multiply(*Acrs, transposeA, *Bcrs, transposeB, *tempAc, haveMultiplyDoFillComplete, label, new_params); - - // Temporary output matrix - RCP > Ac_t = Tpetra::convertToBlockCrsMatrix(*tempAc, A.GetStorageBlockSize()); - RCP > Ac_x = Teuchos::rcp(new Xpetra::TpetraBlockCrsMatrix(Ac_t)); - RCP > Ac_p = Ac_x; - - // We can now cheat and replace the innards of Ac - RCP > Ac_w = Teuchos::rcp_dynamic_cast >(Teuchos::rcpFromRef(C)); - Ac_w->replaceCrsMatrix(Ac_p); - } else { - // Mix and match - TEUCHOS_TEST_FOR_EXCEPTION(1, Exceptions::RuntimeError, "Mix-and-match Crs/BlockCrs Multiply not currently supported"); - } - -#endif -#else - throw(Xpetra::Exceptions::RuntimeError("Xpetra must be compiled with Tpetra.")); -#endif - } - - if (call_FillComplete_on_result && !haveMultiplyDoFillComplete) { - RCP fillParams = rcp(new Teuchos::ParameterList()); - fillParams->set("Optimize Storage", doOptimizeStorage); - C.fillComplete((transposeB) ? B.getRangeMap() : B.getDomainMap(), - (transposeA) ? A.getDomainMap() : A.getRangeMap(), - fillParams); - } - - // transfer striding information - RCP rcpA = Teuchos::rcp_const_cast(Teuchos::rcpFromRef(A)); - RCP rcpB = Teuchos::rcp_const_cast(Teuchos::rcpFromRef(B)); - C.CreateView("stridedMaps", rcpA, transposeA, rcpB, transposeB); // TODO use references instead of RCPs - } // end Multiply - - /** - @brief Helper function to do matrix-matrix multiply - - Given CrsMatrix objects A, B and C, form the product C = A*B. - In a parallel setting, A and B need not have matching distributions, - but C needs to have the same row-map as A (if transposeA is false). - At this time C=AT*B and C=A*BT are known to not work. However, - C=A*B and C=AT*BT are known to work, Kurtis Nusbaum 03/24/2011 - - @param A Input, must already have had 'FillComplete()' called. - @param transposeA Input, whether to use transpose of matrix A. - @param B Input, must already have had 'FillComplete()' called. - @param transposeB Input, whether to use transpose of matrix B. - @param C Result. If Teuchos::null, a new CrsMatrix is created with optimal number of nnz per row. - @param call_FillComplete_on_result Optional argument, defaults to true. - Power users may specify this argument to be false if they *DON'T* - want this function to call C.FillComplete. (It is often useful - to allow this function to call C.FillComplete, in cases where - one or both of the input matrices are rectangular and it is not - trivial to know which maps to use for the domain- and range-maps.) - -*/ - static RCP Multiply(const Matrix& A, bool transposeA, - const Matrix& B, bool transposeB, - RCP C_in, - Teuchos::FancyOStream& fos, - bool doFillComplete = true, - bool doOptimizeStorage = true, - const std::string& label = std::string(), - const RCP& params = null) { - TEUCHOS_TEST_FOR_EXCEPTION(!A.isFillComplete(), Exceptions::RuntimeError, "A is not fill-completed"); - TEUCHOS_TEST_FOR_EXCEPTION(!B.isFillComplete(), Exceptions::RuntimeError, "B is not fill-completed"); - - // Default case: Xpetra Multiply - RCP C = C_in; - - if (C == Teuchos::null) { - double nnzPerRow = Teuchos::as(0); - -#if 0 - if (A.getDomainMap()->lib() == Xpetra::UseTpetra) { - // For now, follow what ML and Epetra do. - GO numRowsA = A.getGlobalNumRows(); - GO numRowsB = B.getGlobalNumRows(); - nnzPerRow = sqrt(Teuchos::as(A.getGlobalNumEntries())/numRowsA) + - sqrt(Teuchos::as(B.getGlobalNumEntries())/numRowsB) - 1; - nnzPerRow *= nnzPerRow; - double totalNnz = nnzPerRow * A.getGlobalNumRows() * 0.75 + 100; - double minNnz = Teuchos::as(1.2 * A.getGlobalNumEntries()); - if (totalNnz < minNnz) - totalNnz = minNnz; - nnzPerRow = totalNnz / A.getGlobalNumRows(); - - fos << "Matrix product nnz per row estimate = " << Teuchos::as(nnzPerRow) << std::endl; - } -#endif - if (transposeA) - C = MatrixFactory::Build(A.getDomainMap(), Teuchos::as(nnzPerRow)); - else - C = MatrixFactory::Build(A.getRowMap(), Teuchos::as(nnzPerRow)); - - } else { - C->resumeFill(); // why this is not done inside of Tpetra MxM? - fos << "Reuse C pattern" << std::endl; - } - - Multiply(A, transposeA, B, transposeB, *C, doFillComplete, doOptimizeStorage, label, params); // call Multiply routine from above - - return C; - } - - /*! @brief Helper function to do matrix-matrix multiply - - Returns C = AB. - - @param A left matrix - @param transposeA if true, use the transpose of A - @param B right matrix - @param transposeB if true, use the transpose of B - @param callFillCompleteOnResult if true, the resulting matrix should be fillComplete'd - */ - static RCP Multiply(const Matrix& A, bool transposeA, - const Matrix& B, bool transposeB, - Teuchos::FancyOStream& fos, - bool callFillCompleteOnResult = true, - bool doOptimizeStorage = true, - const std::string& label = std::string(), - const RCP& params = null) { - return Multiply(A, transposeA, B, transposeB, Teuchos::null, fos, callFillCompleteOnResult, doOptimizeStorage, label, params); - } - -#if defined(HAVE_XPETRA_EPETRA) && defined(HAVE_XPETRA_EPETRAEXT) - // Michael Gee's MLMultiply - static RCP MLTwoMatrixMultiply(const Epetra_CrsMatrix& /* epA */, - const Epetra_CrsMatrix& /* epB */, - Teuchos::FancyOStream& /* fos */) { - TEUCHOS_TEST_FOR_EXCEPTION(true, Xpetra::Exceptions::RuntimeError, - "No ML multiplication available. This feature is currently not supported by Xpetra."); - TEUCHOS_UNREACHABLE_RETURN(Teuchos::null); - } -#endif // ifdef HAVE_XPETRA_EPETRAEXT - - /*! @brief Helper function to do matrix-matrix multiply "in-place" - - Returns RCP to non-constant Xpetra::BlockedCrsMatrix. - - @param A left matrix - @param transposeA if true, use the transpose of A - @param B right matrix - @param transposeB if true, use the transpose of B - @param doOptimizeStorage if true, the resulting matrix should be fillComplete'd - */ - static RCP TwoMatrixMultiplyBlock(const BlockedCrsMatrix& A, bool transposeA, - const BlockedCrsMatrix& B, bool transposeB, - Teuchos::FancyOStream& fos, - bool doFillComplete = true, - bool doOptimizeStorage = true) { - TEUCHOS_TEST_FOR_EXCEPTION(transposeA || transposeB, Exceptions::RuntimeError, - "TwoMatrixMultiply for BlockedCrsMatrix not implemented for transposeA==true or transposeB==true"); - - // Preconditions - TEUCHOS_TEST_FOR_EXCEPTION(!A.isFillComplete(), Exceptions::RuntimeError, "A is not fill-completed"); - TEUCHOS_TEST_FOR_EXCEPTION(!B.isFillComplete(), Exceptions::RuntimeError, "B is not fill-completed"); - - RCP rgmapextractor = A.getRangeMapExtractor(); - RCP domapextractor = B.getDomainMapExtractor(); - - RCP C = rcp(new BlockedCrsMatrix(rgmapextractor, domapextractor, 33 /* TODO fix me */)); - - for (size_t i = 0; i < A.Rows(); ++i) { // loop over all block rows of A - for (size_t j = 0; j < B.Cols(); ++j) { // loop over all block columns of B - RCP Cij; - - for (size_t l = 0; l < B.Rows(); ++l) { // loop for calculating entry C_{ij} - RCP crmat1 = A.getMatrix(i, l); - RCP crmat2 = B.getMatrix(l, j); - - if (crmat1.is_null() || crmat2.is_null()) - continue; - - // try unwrapping 1x1 blocked matrix - { - auto unwrap1 = Teuchos::rcp_dynamic_cast(crmat1); - auto unwrap2 = Teuchos::rcp_dynamic_cast(crmat2); - - if (unwrap1.is_null() != unwrap2.is_null()) { - if (unwrap1 != Teuchos::null && unwrap1->Rows() == 1 && unwrap1->Cols() == 1) - crmat1 = unwrap1->getCrsMatrix(); - if (unwrap2 != Teuchos::null && unwrap2->Rows() == 1 && unwrap2->Cols() == 1) - crmat2 = unwrap2->getCrsMatrix(); - } - } - - RCP crop1 = Teuchos::rcp_dynamic_cast(crmat1); - RCP crop2 = Teuchos::rcp_dynamic_cast(crmat2); - TEUCHOS_TEST_FOR_EXCEPTION(crop1.is_null() != crop2.is_null(), Xpetra::Exceptions::RuntimeError, - "A and B must be either both (compatible) BlockedCrsMatrix objects or both CrsMatrixWrap objects."); - - // Forcibly compute the global constants if we don't have them (only works for real CrsMatrices, not nested blocks) - if (!crop1.is_null()) - Teuchos::rcp_const_cast(crmat1->getCrsGraph())->computeGlobalConstants(); - if (!crop2.is_null()) - Teuchos::rcp_const_cast(crmat2->getCrsGraph())->computeGlobalConstants(); - - TEUCHOS_TEST_FOR_EXCEPTION(!crmat1->haveGlobalConstants(), Exceptions::RuntimeError, - "crmat1 does not have global constants"); - TEUCHOS_TEST_FOR_EXCEPTION(!crmat2->haveGlobalConstants(), Exceptions::RuntimeError, - "crmat2 does not have global constants"); - - if (crmat1->getGlobalNumEntries() == 0 || crmat2->getGlobalNumEntries() == 0) - continue; - - // temporary matrix containing result of local block multiplication - RCP temp = Teuchos::null; - - if (crop1 != Teuchos::null && crop2 != Teuchos::null) - temp = Multiply(*crop1, false, *crop2, false, fos); - else { - RCP bop1 = Teuchos::rcp_dynamic_cast(crmat1); - RCP bop2 = Teuchos::rcp_dynamic_cast(crmat2); - TEUCHOS_TEST_FOR_EXCEPTION(bop1.is_null() == true, Xpetra::Exceptions::BadCast, "A is not a BlockedCrsMatrix. (TwoMatrixMultiplyBlock)"); - TEUCHOS_TEST_FOR_EXCEPTION(bop2.is_null() == true, Xpetra::Exceptions::BadCast, "B is not a BlockedCrsMatrix. (TwoMatrixMultiplyBlock)"); - TEUCHOS_TEST_FOR_EXCEPTION(bop1->Cols() != bop2->Rows(), Xpetra::Exceptions::RuntimeError, "A has " << bop1->Cols() << " columns and B has " << bop2->Rows() << " rows. Matrices are not compatible! (TwoMatrixMultiplyBlock)"); - TEUCHOS_TEST_FOR_EXCEPTION(bop1->getDomainMap()->isSameAs(*(bop2->getRangeMap())) == false, Xpetra::Exceptions::RuntimeError, "Domain map of A is not the same as range map of B. Matrices are not compatible! (TwoMatrixMultiplyBlock)"); - - // recursive multiplication call - temp = TwoMatrixMultiplyBlock(*bop1, transposeA, *bop2, transposeB, fos, doFillComplete, doOptimizeStorage); - - RCP btemp = Teuchos::rcp_dynamic_cast(temp); - TEUCHOS_TEST_FOR_EXCEPTION(btemp->Rows() != bop1->Rows(), Xpetra::Exceptions::RuntimeError, "Number of block rows of local blocked operator is " << btemp->Rows() << " but should be " << bop1->Rows() << ". (TwoMatrixMultiplyBlock)"); - TEUCHOS_TEST_FOR_EXCEPTION(btemp->Cols() != bop2->Cols(), Xpetra::Exceptions::RuntimeError, "Number of block cols of local blocked operator is " << btemp->Cols() << " but should be " << bop2->Cols() << ". (TwoMatrixMultiplyBlock)"); - TEUCHOS_TEST_FOR_EXCEPTION(btemp->getRangeMapExtractor()->getFullMap()->isSameAs(*(bop1->getRangeMapExtractor()->getFullMap())) == false, Xpetra::Exceptions::RuntimeError, "Range map of local blocked operator should be same as first operator. (TwoMatrixMultiplyBlock)"); - TEUCHOS_TEST_FOR_EXCEPTION(btemp->getDomainMapExtractor()->getFullMap()->isSameAs(*(bop2->getDomainMapExtractor()->getFullMap())) == false, Xpetra::Exceptions::RuntimeError, "Domain map of local blocked operator should be same as second operator. (TwoMatrixMultiplyBlock)"); - TEUCHOS_TEST_FOR_EXCEPTION(btemp->getRangeMapExtractor()->getThyraMode() != bop1->getRangeMapExtractor()->getThyraMode(), Xpetra::Exceptions::RuntimeError, "Thyra mode of local range map extractor incompatible with range map extractor of A (TwoMatrixMultiplyBlock)"); - TEUCHOS_TEST_FOR_EXCEPTION(btemp->getDomainMapExtractor()->getThyraMode() != bop2->getDomainMapExtractor()->getThyraMode(), Xpetra::Exceptions::RuntimeError, "Thyra mode of local domain map extractor incompatible with domain map extractor of B (TwoMatrixMultiplyBlock)"); - } - - TEUCHOS_TEST_FOR_EXCEPTION(temp->isFillComplete() == false, Xpetra::Exceptions::RuntimeError, "Local block is not filled. (TwoMatrixMultiplyBlock)"); - - RCP addRes = null; - if (Cij.is_null()) - Cij = temp; - else { - MatrixMatrix::TwoMatrixAdd(*temp, false, 1.0, *Cij, false, 1.0, addRes, fos); - Cij = addRes; - } - } - - if (!Cij.is_null()) { - if (Cij->isFillComplete()) - Cij->resumeFill(); - Cij->fillComplete(B.getDomainMap(j), A.getRangeMap(i)); - C->setMatrix(i, j, Cij); - } else { - C->setMatrix(i, j, Teuchos::null); - } - } - } - - if (doFillComplete) - C->fillComplete(); // call default fillComplete for BlockCrsMatrixWrap objects - - return C; - } // TwoMatrixMultiplyBlock - - /*! @brief Helper function to calculate B = alpha*A + beta*B. - - @param A left matrix operand - @param transposeA indicate whether to use transpose of A - @param alpha scalar multiplier for A - @param B right matrix operand - @param beta scalar multiplier for B - - @return sum in B. - - Note that B does not have to be fill-completed. - */ - static void TwoMatrixAdd(const Matrix& A, bool transposeA, SC alpha, Matrix& B, SC beta) { - TEUCHOS_TEST_FOR_EXCEPTION(!(A.getRowMap()->isSameAs(*(B.getRowMap()))), Exceptions::Incompatible, - "TwoMatrixAdd: matrix row maps are not the same."); - - if (A.getRowMap()->lib() == Xpetra::UseEpetra) { -#if defined(HAVE_XPETRA_EPETRA) && defined(HAVE_XPETRA_EPETRAEXT) - const Epetra_CrsMatrix& epA = Xpetra::Helpers::Op2EpetraCrs(A); - Epetra_CrsMatrix& epB = Xpetra::Helpers::Op2NonConstEpetraCrs(B); - - // FIXME is there a bug if beta=0? - int rv = EpetraExt::MatrixMatrix::Add(epA, transposeA, alpha, epB, beta); - - if (rv != 0) - throw Exceptions::RuntimeError("EpetraExt::MatrixMatrix::Add return value " + Teuchos::toString(rv)); - std::ostringstream buf; -#else - throw Exceptions::RuntimeError("Xpetra must be compiled with EpetraExt."); -#endif - } else if (A.getRowMap()->lib() == Xpetra::UseTpetra) { -#ifdef HAVE_XPETRA_TPETRA -#if ((defined(EPETRA_HAVE_OMP) && (!defined(HAVE_TPETRA_INST_OPENMP) || !defined(HAVE_TPETRA_INST_INT_LONG_LONG))) || \ - (!defined(EPETRA_HAVE_OMP) && (!defined(HAVE_TPETRA_INST_SERIAL) || !defined(HAVE_TPETRA_INST_INT_LONG_LONG)))) - throw(Xpetra::Exceptions::RuntimeError("Xpetra must be compiled with Tpetra GO=long long enabled.")); -#else - const Tpetra::CrsMatrix& tpA = Xpetra::Helpers::Op2TpetraCrs(A); - Tpetra::CrsMatrix& tpB = Xpetra::Helpers::Op2NonConstTpetraCrs(B); - - Tpetra::MatrixMatrix::Add(tpA, transposeA, alpha, tpB, beta); -#endif -#else - throw Exceptions::RuntimeError("Xpetra must be compiled with Tpetra."); -#endif - } - } // MatrixMatrix::TwoMatrixAdd() - - /*! @brief Helper function to calculate C = alpha*A + beta*B. - - @param A left matrix operand - @param transposeA indicate whether to use transpose of A - @param alpha scalar multiplier for A, defaults to 1.0 - @param B right matrix operand - @param transposeB indicate whether to use transpose of B - @param beta scalar multiplier for B, defaults to 1.0 - @param C resulting sum - @param fos output stream for printing to screen - @param AHasFixedNnzPerRow - - It is up to the caller to ensure that the resulting matrix sum is fillComplete'd. - */ - static void TwoMatrixAdd(const Matrix& A, bool transposeA, const SC& alpha, - const Matrix& B, bool transposeB, const SC& beta, - RCP& C, Teuchos::FancyOStream& fos, bool AHasFixedNnzPerRow = false) { - RCP rcpA = Teuchos::rcpFromRef(A); - RCP rcpB = Teuchos::rcpFromRef(B); - RCP rcpBopA = Teuchos::rcp_dynamic_cast(rcpA); - RCP rcpBopB = Teuchos::rcp_dynamic_cast(rcpB); - - if (rcpBopA == Teuchos::null && rcpBopB == Teuchos::null) { - TEUCHOS_TEST_FOR_EXCEPTION(!(A.getRowMap()->isSameAs(*(B.getRowMap()))), Exceptions::Incompatible, - "TwoMatrixAdd: matrix row maps are not the same."); - auto lib = A.getRowMap()->lib(); - if (lib == Xpetra::UseEpetra) { -#if defined(HAVE_XPETRA_EPETRA) && defined(HAVE_XPETRA_EPETRAEXT) - const Epetra_CrsMatrix& epA = Xpetra::Helpers::Op2EpetraCrs(A); - const Epetra_CrsMatrix& epB = Xpetra::Helpers::Op2EpetraCrs(B); - if (C.is_null()) { - size_t maxNzInA = 0; - size_t maxNzInB = 0; - size_t numLocalRows = 0; - if (A.isFillComplete() && B.isFillComplete()) { - maxNzInA = A.getLocalMaxNumRowEntries(); - maxNzInB = B.getLocalMaxNumRowEntries(); - numLocalRows = A.getLocalNumRows(); - } - - if (maxNzInA == 1 || maxNzInB == 1 || AHasFixedNnzPerRow) { - // first check if either A or B has at most 1 nonzero per row - // the case of both having at most 1 nz per row is handled by the ``else'' - Teuchos::ArrayRCP exactNnzPerRow(numLocalRows); - - if ((maxNzInA == 1 && maxNzInB > 1) || AHasFixedNnzPerRow) { - for (size_t i = 0; i < numLocalRows; ++i) - exactNnzPerRow[i] = B.getNumEntriesInLocalRow(Teuchos::as(i)) + maxNzInA; - - } else { - for (size_t i = 0; i < numLocalRows; ++i) - exactNnzPerRow[i] = A.getNumEntriesInLocalRow(Teuchos::as(i)) + maxNzInB; - } - - fos << "MatrixMatrix::TwoMatrixAdd : special case detected (one matrix has a fixed nnz per row)" - << ", using static profiling" << std::endl; - C = rcp(new Xpetra::CrsMatrixWrap(A.getRowMap(), exactNnzPerRow)); - - } else { - // general case - LO maxPossibleNNZ = A.getLocalMaxNumRowEntries() + B.getLocalMaxNumRowEntries(); - C = rcp(new Xpetra::CrsMatrixWrap(A.getRowMap(), maxPossibleNNZ)); - } - if (transposeB) - fos << "MatrixMatrix::TwoMatrixAdd : ** WARNING ** estimate could be badly wrong because second summand is transposed" << std::endl; - } - RCP epC = Xpetra::Helpers::Op2NonConstEpetraCrs(C); - Epetra_CrsMatrix* ref2epC = &*epC; // to avoid a compiler error... - - // FIXME is there a bug if beta=0? - int rv = EpetraExt::MatrixMatrix::Add(epA, transposeA, alpha, epB, transposeB, beta, ref2epC); - - if (rv != 0) - throw Exceptions::RuntimeError("EpetraExt::MatrixMatrix::Add return value of " + Teuchos::toString(rv)); -#else - throw Exceptions::RuntimeError("MueLu must be compile with EpetraExt."); -#endif - } else if (lib == Xpetra::UseTpetra) { -#ifdef HAVE_XPETRA_TPETRA -#if ((defined(EPETRA_HAVE_OMP) && (!defined(HAVE_TPETRA_INST_OPENMP) || !defined(HAVE_TPETRA_INST_INT_LONG_LONG))) || \ - (!defined(EPETRA_HAVE_OMP) && (!defined(HAVE_TPETRA_INST_SERIAL) || !defined(HAVE_TPETRA_INST_INT_LONG_LONG)))) - throw(Xpetra::Exceptions::RuntimeError("Xpetra must be compiled with Tpetra GO=long long enabled.")); -#else - using helpers = Xpetra::Helpers; - using tcrs_matrix_type = Tpetra::CrsMatrix; - const tcrs_matrix_type& tpA = Xpetra::Helpers::Op2TpetraCrs(A); - const tcrs_matrix_type& tpB = Xpetra::Helpers::Op2TpetraCrs(B); - C = helpers::tpetraAdd(tpA, transposeA, alpha, tpB, transposeB, beta); -#endif -#else - throw Exceptions::RuntimeError("Xpetra must be compile with Tpetra."); -#endif - } - - ///////////////////////// EXPERIMENTAL - if (A.IsView("stridedMaps")) C->CreateView("stridedMaps", rcpFromRef(A)); - if (B.IsView("stridedMaps")) C->CreateView("stridedMaps", rcpFromRef(B)); - ///////////////////////// EXPERIMENTAL - } - // the first matrix is of type CrsMatrixWrap, the second is a blocked operator - else if (rcpBopA == Teuchos::null && rcpBopB != Teuchos::null) { - RCP rgmapextractor = rcpBopB->getRangeMapExtractor(); - RCP domapextractor = rcpBopB->getDomainMapExtractor(); - - C = rcp(new BlockedCrsMatrix(rgmapextractor, domapextractor, 33 /* TODO fix me */)); - RCP bC = Teuchos::rcp_dynamic_cast(C); - - size_t i = 0; - for (size_t j = 0; j < rcpBopB->Cols(); ++j) { // loop over all block columns of B - RCP Cij = Teuchos::null; - if (rcpA != Teuchos::null && - rcpBopB->getMatrix(i, j) != Teuchos::null) { - // recursive call - TwoMatrixAdd(*rcpA, transposeA, alpha, - *(rcpBopB->getMatrix(i, j)), transposeB, beta, - Cij, fos, AHasFixedNnzPerRow); - } else if (rcpA == Teuchos::null && - rcpBopB->getMatrix(i, j) != Teuchos::null) { - Cij = rcpBopB->getMatrix(i, j); - } else if (rcpA != Teuchos::null && - rcpBopB->getMatrix(i, j) == Teuchos::null) { - Cij = Teuchos::rcp_const_cast(rcpA); - } else { - Cij = Teuchos::null; - } - - if (!Cij.is_null()) { - if (Cij->isFillComplete()) - Cij->resumeFill(); - Cij->fillComplete(); - bC->setMatrix(i, j, Cij); - } else { - bC->setMatrix(i, j, Teuchos::null); - } - } // loop over columns j - } - // the second matrix is of type CrsMatrixWrap, the first is a blocked operator - else if (rcpBopA != Teuchos::null && rcpBopB == Teuchos::null) { - RCP rgmapextractor = rcpBopA->getRangeMapExtractor(); - RCP domapextractor = rcpBopA->getDomainMapExtractor(); - - C = rcp(new BlockedCrsMatrix(rgmapextractor, domapextractor, 33 /* TODO fix me */)); - RCP bC = Teuchos::rcp_dynamic_cast(C); - - size_t j = 0; - for (size_t i = 0; i < rcpBopA->Rows(); ++i) { // loop over all block rows of A - RCP Cij = Teuchos::null; - if (rcpBopA->getMatrix(i, j) != Teuchos::null && - rcpB != Teuchos::null) { - // recursive call - TwoMatrixAdd(*(rcpBopA->getMatrix(i, j)), transposeA, alpha, - *rcpB, transposeB, beta, - Cij, fos, AHasFixedNnzPerRow); - } else if (rcpBopA->getMatrix(i, j) == Teuchos::null && - rcpB != Teuchos::null) { - Cij = Teuchos::rcp_const_cast(rcpB); - } else if (rcpBopA->getMatrix(i, j) != Teuchos::null && - rcpB == Teuchos::null) { - Cij = rcpBopA->getMatrix(i, j); - } else { - Cij = Teuchos::null; - } - - if (!Cij.is_null()) { - if (Cij->isFillComplete()) - Cij->resumeFill(); - Cij->fillComplete(); - bC->setMatrix(i, j, Cij); - } else { - bC->setMatrix(i, j, Teuchos::null); - } - } // loop over rows i - } else { - // This is the version for blocked matrices - - // check the compatibility of the blocked operators - TEUCHOS_TEST_FOR_EXCEPTION(rcpBopA.is_null() == true, Xpetra::Exceptions::BadCast, "A is not a BlockedCrsMatrix. (TwoMatrixAdd)"); - TEUCHOS_TEST_FOR_EXCEPTION(rcpBopB.is_null() == true, Xpetra::Exceptions::BadCast, "B is not a BlockedCrsMatrix. (TwoMatrixAdd)"); - TEUCHOS_TEST_FOR_EXCEPTION(rcpBopA->Rows() != rcpBopB->Rows(), Xpetra::Exceptions::RuntimeError, "A has " << rcpBopA->Rows() << " rows and B has " << rcpBopA->Rows() << " rows. Matrices are not compatible! (TwoMatrixAdd)"); - TEUCHOS_TEST_FOR_EXCEPTION(rcpBopA->Rows() != rcpBopB->Rows(), Xpetra::Exceptions::RuntimeError, "A has " << rcpBopA->Cols() << " cols and B has " << rcpBopA->Cols() << " cols. Matrices are not compatible! (TwoMatrixAdd)"); - TEUCHOS_TEST_FOR_EXCEPTION(rcpBopA->getRangeMap()->isSameAs(*(rcpBopB->getRangeMap())) == false, Xpetra::Exceptions::RuntimeError, "Range map of A is not the same as range map of B. Matrices are not compatible! (TwoMatrixAdd)"); - TEUCHOS_TEST_FOR_EXCEPTION(rcpBopA->getDomainMap()->isSameAs(*(rcpBopB->getDomainMap())) == false, Xpetra::Exceptions::RuntimeError, "Domain map of A is not the same as domain map of B. Matrices are not compatible! (TwoMatrixAdd)"); - TEUCHOS_TEST_FOR_EXCEPTION(rcpBopA->getRangeMapExtractor()->getThyraMode() != rcpBopB->getRangeMapExtractor()->getThyraMode(), Xpetra::Exceptions::RuntimeError, "Different Thyra/Xpetra style gids in RangeMapExtractor of A and B. Matrices are not compatible! (TwoMatrixAdd)"); - TEUCHOS_TEST_FOR_EXCEPTION(rcpBopA->getDomainMapExtractor()->getThyraMode() != rcpBopB->getDomainMapExtractor()->getThyraMode(), Xpetra::Exceptions::RuntimeError, "Different Thyra/Xpetra style gids in DomainMapExtractor of A and B. Matrices are not compatible! (TwoMatrixAdd)"); - - RCP rgmapextractor = rcpBopA->getRangeMapExtractor(); - RCP domapextractor = rcpBopB->getDomainMapExtractor(); - - C = rcp(new BlockedCrsMatrix(rgmapextractor, domapextractor, 33 /* TODO fix me */)); - RCP bC = Teuchos::rcp_dynamic_cast(C); - - for (size_t i = 0; i < rcpBopA->Rows(); ++i) { // loop over all block rows of A - for (size_t j = 0; j < rcpBopB->Cols(); ++j) { // loop over all block columns of B - - RCP Cij = Teuchos::null; - if (rcpBopA->getMatrix(i, j) != Teuchos::null && - rcpBopB->getMatrix(i, j) != Teuchos::null) { - // recursive call - - TwoMatrixAdd(*(rcpBopA->getMatrix(i, j)), transposeA, alpha, - *(rcpBopB->getMatrix(i, j)), transposeB, beta, - Cij, fos, AHasFixedNnzPerRow); - } else if (rcpBopA->getMatrix(i, j) == Teuchos::null && - rcpBopB->getMatrix(i, j) != Teuchos::null) { - Cij = rcpBopB->getMatrix(i, j); - } else if (rcpBopA->getMatrix(i, j) != Teuchos::null && - rcpBopB->getMatrix(i, j) == Teuchos::null) { - Cij = rcpBopA->getMatrix(i, j); - } else { - Cij = Teuchos::null; - } - - if (!Cij.is_null()) { - if (Cij->isFillComplete()) - Cij->resumeFill(); - // Cij->fillComplete(rcpBopA->getDomainMap(j), rcpBopA->getRangeMap(i)); - Cij->fillComplete(); - bC->setMatrix(i, j, Cij); - } else { - bC->setMatrix(i, j, Teuchos::null); - } - } // loop over columns j - } // loop over rows i - - } // end blocked recursive algorithm - } // MatrixMatrix::TwoMatrixAdd() -}; // end specialization on GO=long long and NO=EpetraNode - -#endif // HAVE_XPETRA_EPETRA - } // end namespace Xpetra #define XPETRA_MATRIXMATRIX_SHORT diff --git a/packages/xpetra/src/Utils/Xpetra_MatrixMatrix_def.hpp b/packages/xpetra/src/Utils/Xpetra_MatrixMatrix_def.hpp index b5187aa8deed..7a05e7fa96b0 100644 --- a/packages/xpetra/src/Utils/Xpetra_MatrixMatrix_def.hpp +++ b/packages/xpetra/src/Utils/Xpetra_MatrixMatrix_def.hpp @@ -21,17 +21,6 @@ #include "Xpetra_StridedMapFactory.hpp" #include "Xpetra_StridedMap.hpp" -#ifdef HAVE_XPETRA_EPETRA -#include -#endif - -#ifdef HAVE_XPETRA_EPETRAEXT -#include -#include -#include -#endif // HAVE_XPETRA_EPETRAEXT - -#ifdef HAVE_XPETRA_TPETRA #include #include #include @@ -40,7 +29,6 @@ #include #include #include -#endif // HAVE_XPETRA_TPETRA #include "Xpetra_MatrixMatrix_decl.hpp" @@ -65,14 +53,9 @@ void MatrixMatrix::Multiply(const Mat bool haveMultiplyDoFillComplete = call_FillComplete_on_result && doOptimizeStorage; if (C.getRowMap()->lib() == Xpetra::UseEpetra) { -#if defined(HAVE_XPETRA_EPETRA) && defined(HAVE_XPETRA_EPETRAEXT) - throw(Xpetra::Exceptions::RuntimeError("Xpetra::MatrixMatrix::Multiply only available for GO=int or GO=long long with EpetraNode (Serial or OpenMP depending on configuration)")); -#else throw(Xpetra::Exceptions::RuntimeError("Xpetra::MatrixMatrix::Multiply requires EpetraExt to be compiled.")); -#endif } else if (C.getRowMap()->lib() == Xpetra::UseTpetra) { -#ifdef HAVE_XPETRA_TPETRA using helpers = Xpetra::Helpers; if (helpers::isTpetraCrs(A) && helpers::isTpetraCrs(B) && helpers::isTpetraCrs(C)) { // All matrices are Crs @@ -119,9 +102,6 @@ void MatrixMatrix::Multiply(const Mat // Mix and match TEUCHOS_TEST_FOR_EXCEPTION(1, Exceptions::RuntimeError, "Mix-and-match Crs/BlockCrs Multiply not currently supported"); } -#else - throw(Xpetra::Exceptions::RuntimeError("Xpetra must be compiled with Tpetra.")); -#endif } if (call_FillComplete_on_result && !haveMultiplyDoFillComplete) { @@ -193,16 +173,6 @@ RCP> MatrixMatrix -RCP MatrixMatrix::MLTwoMatrixMultiply(const Epetra_CrsMatrix& epA, - const Epetra_CrsMatrix& epB, - Teuchos::FancyOStream& fos) { - throw(Xpetra::Exceptions::RuntimeError("MLTwoMatrixMultiply only available for GO=int or GO=long long with EpetraNode (Serial or OpenMP depending on configuration)")); - TEUCHOS_UNREACHABLE_RETURN(Teuchos::null); -} -#endif // ifdef HAVE_XPETRA_EPETRAEXT - template RCP> MatrixMatrix::TwoMatrixMultiplyBlock(const BlockedCrsMatrix& A, bool transposeA, const BlockedCrsMatrix& B, bool transposeB, @@ -325,14 +295,10 @@ void MatrixMatrix::TwoMatrixAdd(const if (A.getRowMap()->lib() == Xpetra::UseEpetra) { throw Exceptions::RuntimeError("TwoMatrixAdd for Epetra matrices needs for Scalar, LocalOrdinal and GlobalOrdinal."); } else if (A.getRowMap()->lib() == Xpetra::UseTpetra) { -#ifdef HAVE_XPETRA_TPETRA const Tpetra::CrsMatrix& tpA = Xpetra::Helpers::Op2TpetraCrs(A); Tpetra::CrsMatrix& tpB = Xpetra::Helpers::Op2NonConstTpetraCrs(B); Tpetra::MatrixMatrix::Add(tpA, transposeA, alpha, tpB, beta); -#else - throw Exceptions::RuntimeError("Xpetra must be compiled with Tpetra."); -#endif } } // MatrixMatrix::TwoMatrixAdd() @@ -357,15 +323,11 @@ void MatrixMatrix::TwoMatrixAdd(const if (lib == Xpetra::UseEpetra) { throw Exceptions::RuntimeError("MatrixMatrix::Add for Epetra only available with Scalar = double, LO = GO = int."); } else if (lib == Xpetra::UseTpetra) { -#ifdef HAVE_XPETRA_TPETRA using tcrs_matrix_type = Tpetra::CrsMatrix; using helpers = Xpetra::Helpers; const tcrs_matrix_type& tpA = helpers::Op2TpetraCrs(A); const tcrs_matrix_type& tpB = helpers::Op2TpetraCrs(B); C = helpers::tpetraAdd(tpA, transposeA, alpha, tpB, transposeB, beta); -#else - throw Exceptions::RuntimeError("Xpetra must be compiled with Tpetra."); -#endif } ///////////////////////// EXPERIMENTAL if (A.IsView("stridedMaps")) C->CreateView("stridedMaps", rcpFromRef(A)); diff --git a/packages/xpetra/src/Utils/Xpetra_MatrixUtils_decl.hpp b/packages/xpetra/src/Utils/Xpetra_MatrixUtils_decl.hpp index 0a03ca36a827..beaeab980d1c 100644 --- a/packages/xpetra/src/Utils/Xpetra_MatrixUtils_decl.hpp +++ b/packages/xpetra/src/Utils/Xpetra_MatrixUtils_decl.hpp @@ -24,12 +24,10 @@ #include "Xpetra_MatrixMatrix.hpp" #include "Xpetra_Helpers.hpp" -#ifdef HAVE_XPETRA_TPETRA #include "Xpetra_TpetraMultiVector.hpp" #include #include #include -#endif namespace Xpetra { diff --git a/packages/xpetra/src/Utils/Xpetra_MatrixUtils_def.hpp b/packages/xpetra/src/Utils/Xpetra_MatrixUtils_def.hpp index 6038b1e8950c..70076b406391 100644 --- a/packages/xpetra/src/Utils/Xpetra_MatrixUtils_def.hpp +++ b/packages/xpetra/src/Utils/Xpetra_MatrixUtils_def.hpp @@ -23,12 +23,10 @@ #include "Xpetra_BlockedCrsMatrix.hpp" #include "Xpetra_MatrixMatrix.hpp" -#ifdef HAVE_XPETRA_TPETRA #include "Xpetra_TpetraMultiVector.hpp" #include #include #include -#endif #include "Xpetra_MatrixUtils_decl.hpp" @@ -381,7 +379,6 @@ void MatrixUtils::CheckRepairMainDiag GlobalOrdinal gZeroDiags; bool usedEfficientPath = false; -#ifdef HAVE_MUELU_TPETRA RCP crsWrapAc = rcp_dynamic_cast(Ac); RCP tpCrsAc; if (!crsWrapAc.is_null()) @@ -478,7 +475,6 @@ void MatrixUtils::CheckRepairMainDiag usedEfficientPath = true; } } -#endif if (!usedEfficientPath) { RCP rowMap = Ac->getRowMap(); @@ -631,15 +627,10 @@ void MatrixUtils::extractBlockDiagona const UnderlyingLib lib = A.getRowMap()->lib(); if (lib == Xpetra::UseEpetra) { -#if defined(HAVE_XPETRA_EPETRA) - throw(Xpetra::Exceptions::RuntimeError("Xpetra::MatrixUtils::extractBlockDiagonal not available for Epetra.")); -#endif // HAVE_XPETRA_EPETRA } else if (lib == Xpetra::UseTpetra) { -#ifdef HAVE_XPETRA_TPETRA const Tpetra::CrsMatrix& At = Xpetra::Helpers::Op2TpetraCrs(A); Tpetra::MultiVector& Dt = Xpetra::toTpetra(diagonal); Tpetra::Details::extractBlockDiagonal(At, Dt); -#endif // HAVE_XPETRA_TPETRA } } @@ -650,15 +641,10 @@ void MatrixUtils::inverseScaleBlockDi const UnderlyingLib lib = blockDiagonal.getMap()->lib(); if (lib == Xpetra::UseEpetra) { -#if defined(HAVE_XPETRA_EPETRA) - throw(Xpetra::Exceptions::RuntimeError("Xpetra::MatrixUtils::inverseScaleBlockDiagonal not available for Epetra.")); -#endif // HAVE_XPETRA_EPETRA } else if (lib == Xpetra::UseTpetra) { -#ifdef HAVE_XPETRA_TPETRA Tpetra::MultiVector& Dt = Xpetra::toTpetra(blockDiagonal); Tpetra::MultiVector& St = Xpetra::toTpetra(toBeScaled); Tpetra::Details::inverseScaleBlockDiagonal(Dt, doTranspose, St); -#endif // HAVE_XPETRA_TPETRA } } diff --git a/packages/xpetra/src/Utils/Xpetra_Parameters.hpp b/packages/xpetra/src/Utils/Xpetra_Parameters.hpp index a31f668398e0..20c0fa881a4d 100644 --- a/packages/xpetra/src/Utils/Xpetra_Parameters.hpp +++ b/packages/xpetra/src/Utils/Xpetra_Parameters.hpp @@ -46,30 +46,16 @@ class Parameters documentation << "linear algebra library ("; // Default is Tpetra if available. If not, default is Epetra -#if defined(HAVE_XPETRA_EPETRA) - documentation << "Epetra"; - lib_ = Xpetra::UseEpetra; // set default (if Tpetra support is missing) - optionValues[nOptions] = Xpetra::UseEpetra; - // optionValues[nOptions] = "epetra"; //TODO: do not break compatibility right now - optionNames[nOptions] = "Epetra"; - nOptions++; -#endif -#if defined(HAVE_XPETRA_TPETRA) -#if defined(HAVE_XPETRA_EPETRA) - documentation << ", "; -#endif documentation << "Tpetra"; lib_ = Xpetra::UseTpetra; // set default optionValues[nOptions] = Xpetra::UseTpetra; // optionsValues[nOptions] = "tpetra"; //TODO: do not break compatibility right now optionNames[nOptions] = "Tpetra"; nOptions++; -#endif documentation << ")"; clp.setOption("linAlgebra", &lib_, nOptions, optionValues, optionNames, documentation.str().c_str()); -#if defined(HAVE_XPETRA_TPETRA) int nInstOptions = 0; // Gives the number of possible option values to select const int maxInstOptions = 5; // No more than 5 instantiations are supported right now Xpetra::Instantiation instOptionValues[maxInstOptions]; // Array that gives the numeric values for each option. @@ -112,7 +98,6 @@ class Parameters instDocumentation << "choice of instantiation"; clp.setOption("instantiation", &inst_, nInstOptions, instOptionValues, instOptionNames, instDocumentation.str().c_str()); -#endif } void check() const { diff --git a/packages/xpetra/src/Utils/Xpetra_ThyraUtils_decl.hpp b/packages/xpetra/src/Utils/Xpetra_ThyraUtils_decl.hpp index 373656d2bceb..64597f98ce75 100644 --- a/packages/xpetra/src/Utils/Xpetra_ThyraUtils_decl.hpp +++ b/packages/xpetra/src/Utils/Xpetra_ThyraUtils_decl.hpp @@ -15,14 +15,7 @@ #include -#ifdef HAVE_XPETRA_TPETRA #include "Tpetra_ConfigDefs.hpp" -#endif - -#ifdef HAVE_XPETRA_EPETRA -#include "Epetra_config.h" -#include "Epetra_CombineMode.h" -#endif #include "Xpetra_Map.hpp" #include "Xpetra_BlockedMap.hpp" @@ -49,7 +42,6 @@ #include #include -#ifdef HAVE_XPETRA_TPETRA #include #include #include @@ -60,18 +52,6 @@ #include #include #include -#endif -#ifdef HAVE_XPETRA_EPETRA -#include -#include -#include -#include -#include -#include -#include -#include -#include -#endif namespace Xpetra { @@ -150,1582 +130,6 @@ class ThyraUtils { // full specialization for Epetra support // Note, that Thyra only has support for Epetra (not for Epetra64) -#ifdef HAVE_XPETRA_EPETRA - -#ifndef XPETRA_EPETRA_NO_32BIT_GLOBAL_INDICES -template <> -class ThyraUtils { - public: - typedef double Scalar; - typedef int LocalOrdinal; - typedef int GlobalOrdinal; - typedef EpetraNode Node; - - private: -#undef XPETRA_THYRAUTILS_SHORT -#include "Xpetra_UseShortNames.hpp" - - public: - static Teuchos::RCP> - toXpetra(const Teuchos::RCP>& vectorSpace, const Teuchos::RCP>& comm, std::vector& stridingInfo, LocalOrdinal stridedBlockId = -1, GlobalOrdinal offset = 0) { - Teuchos::RCP> map = ThyraUtils::toXpetra(vectorSpace, comm); - - if (stridedBlockId == -1) { - TEUCHOS_TEST_FOR_EXCEPT(map->getLocalNumElements() % stridingInfo.size() != 0); - } else { - TEUCHOS_TEST_FOR_EXCEPT(map->getLocalNumElements() % stridingInfo[stridedBlockId] != 0); - } - - Teuchos::RCP> ret = Xpetra::StridedMapFactory::Build(map, stridingInfo, stridedBlockId, offset); - return ret; - } - - static Teuchos::RCP> - toXpetra(const Teuchos::RCP>& vectorSpace, const Teuchos::RCP>& comm) { - using Teuchos::as; - using Teuchos::RCP; - using Teuchos::rcp_dynamic_cast; - typedef Thyra::VectorSpaceBase ThyVecSpaceBase; - typedef Thyra::ProductVectorSpaceBase ThyProdVecSpaceBase; - typedef Xpetra::ThyraUtils ThyUtils; - - RCP resultMap = Teuchos::null; - - RCP prodVectorSpace = rcp_dynamic_cast(vectorSpace); - if (prodVectorSpace != Teuchos::null) { - // SPECIAL CASE: product Vector space - // collect all submaps to store them in a hierarchical BlockedMap object - TEUCHOS_TEST_FOR_EXCEPTION(prodVectorSpace->numBlocks() == 0, std::logic_error, "Found a product vector space with zero blocks."); - std::vector> mapsThyra(prodVectorSpace->numBlocks(), Teuchos::null); - std::vector> mapsXpetra(prodVectorSpace->numBlocks(), Teuchos::null); - for (int b = 0; b < prodVectorSpace->numBlocks(); ++b) { - RCP bv = prodVectorSpace->getBlock(b); - // can be of type Map or BlockedMap (containing Thyra GIDs) - mapsThyra[b] = ThyUtils::toXpetra(bv, comm); // recursive call - } - - // get offsets for submap GIDs - // we need that for the full map (Xpetra GIDs) - std::vector gidOffsets(prodVectorSpace->numBlocks(), 0); - for (int i = 1; i < prodVectorSpace->numBlocks(); ++i) { - gidOffsets[i] = mapsThyra[i - 1]->getMaxAllGlobalIndex() + gidOffsets[i - 1] + 1; - } - - for (int b = 0; b < prodVectorSpace->numBlocks(); ++b) { - RCP bv = prodVectorSpace->getBlock(b); - // map can be of type Map or BlockedMap (containing Xpetra style GIDs) - mapsXpetra[b] = MapUtils::transformThyra2XpetraGIDs(*mapsThyra[b], gidOffsets[b]); - } - - resultMap = Teuchos::rcp(new Xpetra::BlockedMap(mapsXpetra, mapsThyra)); - } else { - // STANDARD CASE: no product map - // Epetra/Tpetra specific code to access the underlying map data - - // check whether we have a Tpetra based Thyra operator - bool bIsTpetra = false; -#ifdef HAVE_XPETRA_TPETRA -#if ((defined(EPETRA_HAVE_OMP) && defined(HAVE_TPETRA_INST_OPENMP) && defined(HAVE_TPETRA_INST_INT_INT) && defined(HAVE_TPETRA_INST_DOUBLE)) || \ - (!defined(EPETRA_HAVE_OMP) && defined(HAVE_TPETRA_INST_SERIAL) && defined(HAVE_TPETRA_INST_INT_INT) && defined(HAVE_TPETRA_INST_DOUBLE))) - Teuchos::RCP> tpetra_vsc = Teuchos::rcp_dynamic_cast>(vectorSpace); - bIsTpetra = Teuchos::is_null(tpetra_vsc) ? false : true; -#endif -#endif - - // check whether we have an Epetra based Thyra operator - bool bIsEpetra = !bIsTpetra; // note: this is a little bit fragile! - -#ifdef HAVE_XPETRA_TPETRA - if (bIsTpetra) { -#if ((defined(EPETRA_HAVE_OMP) && defined(HAVE_TPETRA_INST_OPENMP) && defined(HAVE_TPETRA_INST_INT_INT) && defined(HAVE_TPETRA_INST_DOUBLE)) || \ - (!defined(EPETRA_HAVE_OMP) && defined(HAVE_TPETRA_INST_SERIAL) && defined(HAVE_TPETRA_INST_INT_INT) && defined(HAVE_TPETRA_INST_DOUBLE))) - typedef Thyra::VectorBase ThyVecBase; - typedef Tpetra::Map TpMap; - typedef Tpetra::Vector TpVector; - typedef Thyra::TpetraOperatorVectorExtraction TOE; - RCP rgVec = Thyra::createMember(vectorSpace, std::string("label")); - TEUCHOS_TEST_FOR_EXCEPT(Teuchos::is_null(rgVec)); - RCP rgTpetraVec = TOE::getTpetraVector(rgVec); - TEUCHOS_TEST_FOR_EXCEPT(Teuchos::is_null(rgTpetraVec)); - RCP rgTpetraMap = rgTpetraVec->getMap(); - TEUCHOS_TEST_FOR_EXCEPT(Teuchos::is_null(rgTpetraMap)); - - resultMap = Xpetra::toXpetraNonConst(rgTpetraMap); -#else - throw Xpetra::Exceptions::RuntimeError("Problem AAA. Add TPETRA_INST_INT_INT:BOOL=ON in your configuration."); -#endif - } -#endif - -#ifdef HAVE_XPETRA_EPETRA - if (bIsEpetra) { - // RCP epMap = Teuchos::null; - RCP - epetra_map = Teuchos::get_extra_data>(vectorSpace, "epetra_map"); - if (!Teuchos::is_null(epetra_map)) { - resultMap = Teuchos::rcp(new Xpetra::EpetraMapT(epetra_map)); - TEUCHOS_TEST_FOR_EXCEPT(Teuchos::is_null(resultMap)); - } else { - TEUCHOS_TEST_FOR_EXCEPTION(true, std::logic_error, "No Epetra_Map data found in Thyra::VectorSpace."); - } - } -#endif - } // end standard case (no product map) - TEUCHOS_TEST_FOR_EXCEPT(Teuchos::is_null(resultMap)); - return resultMap; - } - - // const version - static Teuchos::RCP> - toXpetra(Teuchos::RCP> v, const Teuchos::RCP>& comm) { - using Teuchos::as; - using Teuchos::RCP; - using Teuchos::rcp_dynamic_cast; - - using ThyProdMultVecBase = Thyra::ProductMultiVectorBase; - using ThyMultVecBase = Thyra::MultiVectorBase; - using ThyUtils = Xpetra::ThyraUtils; - - // return value - RCP xpMultVec = Teuchos::null; - - // check whether v is a product multi vector - Teuchos::RCP thyProdVec = rcp_dynamic_cast(v); - if (thyProdVec != Teuchos::null) { - // SPECIAL CASE: create a nested BlockedMultiVector - // generate nested BlockedMap (containing Thyra and Xpetra GIDs) - RCP fullMap = ThyUtils::toXpetra(v->range(), comm); - TEUCHOS_TEST_FOR_EXCEPT(Teuchos::is_null(Teuchos::rcp_dynamic_cast(fullMap))); - - // create new Xpetra::BlockedMultiVector - xpMultVec = MultiVectorFactory::Build(fullMap, as(thyProdVec->domain()->dim())); - - RCP xpBlockedMultVec = Teuchos::rcp_dynamic_cast(xpMultVec, true); - - // loop over all blocks, transform Thyra MultiVectors to Xpetra MultiVectors recursively - for (int b = 0; b < thyProdVec->productSpace()->numBlocks(); ++b) { - RCP thyBlockMV = thyProdVec->getMultiVectorBlock(b); - // xpBlockMV can be of type MultiVector or BlockedMultiVector - RCP xpBlockMV = ThyUtils::toXpetra(thyBlockMV, comm); // recursive call - xpBlockedMultVec->setMultiVector(b, xpBlockMV, true /* Thyra mode */); - } - - TEUCHOS_TEST_FOR_EXCEPT(Teuchos::is_null(xpMultVec)); - return xpMultVec; - } else { - // STANDARD CASE: no product vector - // Epetra/Tpetra specific code to access the underlying map data - bool bIsTpetra = false; -#ifdef HAVE_XPETRA_TPETRA -#if ((defined(EPETRA_HAVE_OMP) && defined(HAVE_TPETRA_INST_OPENMP) && defined(HAVE_TPETRA_INST_INT_INT) && defined(HAVE_TPETRA_INST_DOUBLE)) || \ - (!defined(EPETRA_HAVE_OMP) && defined(HAVE_TPETRA_INST_SERIAL) && defined(HAVE_TPETRA_INST_INT_INT) && defined(HAVE_TPETRA_INST_DOUBLE))) - - // typedef Tpetra::Map TpMap; - // typedef Tpetra::Vector TpVector; - typedef Thyra::SpmdMultiVectorBase ThySpmdMultVecBase; - typedef Thyra::TpetraOperatorVectorExtraction ConverterT; - typedef Tpetra::MultiVector TpMultVec; - typedef Xpetra::TpetraMultiVector XpTpMultVec; - typedef Thyra::TpetraMultiVector ThyTpMultVec; - - RCP thyraSpmdMultiVector = rcp_dynamic_cast(v); - RCP thyraTpetraMultiVector = rcp_dynamic_cast(thyraSpmdMultiVector); - if (thyraTpetraMultiVector != Teuchos::null) { - bIsTpetra = true; - const RCP tpMultVec = ConverterT::getConstTpetraMultiVector(v); - TEUCHOS_TEST_FOR_EXCEPT(Teuchos::is_null(tpMultVec)); - RCP tpNonConstMultVec = Teuchos::rcp_const_cast(tpMultVec); - TEUCHOS_TEST_FOR_EXCEPT(Teuchos::is_null(tpNonConstMultVec)); - xpMultVec = rcp(new XpTpMultVec(tpNonConstMultVec)); - } -#endif -#endif - -#ifdef HAVE_XPETRA_EPETRA - if (bIsTpetra == false) { - // no product vector - Teuchos::RCP map = ThyUtils::toXpetra(v->range(), comm); - TEUCHOS_TEST_FOR_EXCEPT(Teuchos::is_null(map)); - RCP> xeMap = rcp_dynamic_cast>(map, true); - RCP eMap = xeMap->getEpetra_MapRCP(); - TEUCHOS_TEST_FOR_EXCEPT(Teuchos::is_null(eMap)); - Teuchos::RCP epMultVec = Thyra::get_Epetra_MultiVector(*eMap, v); - TEUCHOS_TEST_FOR_EXCEPT(Teuchos::is_null(epMultVec)); - RCP epNonConstMultVec = Teuchos::rcp_const_cast(epMultVec); - TEUCHOS_TEST_FOR_EXCEPT(Teuchos::is_null(epNonConstMultVec)); - xpMultVec = Teuchos::rcp(new Xpetra::EpetraMultiVectorT(epNonConstMultVec)); - } -#endif - TEUCHOS_TEST_FOR_EXCEPT(Teuchos::is_null(xpMultVec)); - return xpMultVec; - } // end standard case - } - - // non-const version - static Teuchos::RCP> - toXpetra(Teuchos::RCP> v, const Teuchos::RCP>& comm) { - Teuchos::RCP> cv = - Teuchos::rcp_const_cast>(v); - Teuchos::RCP> r = - toXpetra(cv, comm); - return Teuchos::rcp_const_cast>(r); - } - - static bool isTpetra(const Teuchos::RCP>& op) { - // check whether we have a Tpetra based Thyra operator - bool bIsTpetra = false; -#ifdef HAVE_XPETRA_TPETRA -#if ((defined(EPETRA_HAVE_OMP) && defined(HAVE_TPETRA_INST_OPENMP) && defined(HAVE_TPETRA_INST_INT_INT) && defined(HAVE_TPETRA_INST_DOUBLE)) || \ - (!defined(EPETRA_HAVE_OMP) && defined(HAVE_TPETRA_INST_SERIAL) && defined(HAVE_TPETRA_INST_INT_INT) && defined(HAVE_TPETRA_INST_DOUBLE))) - - Teuchos::RCP> tpetra_op = Teuchos::rcp_dynamic_cast>(op); - bIsTpetra = Teuchos::is_null(tpetra_op) ? false : true; - - // for debugging purposes: find out why dynamic cast failed - if (!bIsTpetra && -#ifdef HAVE_XPETRA_EPETRA - Teuchos::rcp_dynamic_cast(op) == Teuchos::null && -#endif - Teuchos::rcp_dynamic_cast>(op) == Teuchos::null) { - // If op is not blocked and not an Epetra object, it should be in fact an Tpetra object - typedef Thyra::TpetraLinearOp TpetraLinearOp_t; - if (Teuchos::rcp_dynamic_cast(op) == Teuchos::null) { - std::cout << "ATTENTION: The dynamic cast to the TpetraLinearOp failed even though it should be a TpetraLinearOp." << std::endl; - std::cout << " If you are using Panzer or Stratimikos you might check that the template parameters are " << std::endl; - std::cout << " properly set!" << std::endl; - std::cout << Teuchos::rcp_dynamic_cast(op, true) << std::endl; - } - } -#endif -#endif - -#if 0 - // Check whether it is a blocked operator. - // If yes, grab the (0,0) block and check the underlying linear algebra - // Note: we expect that the (0,0) block exists! - if(bIsTpetra == false) { - Teuchos::RCP > ThyBlockedOp = - Teuchos::rcp_dynamic_cast >(op); - if(ThyBlockedOp != Teuchos::null) { - TEUCHOS_TEST_FOR_EXCEPT(ThyBlockedOp->blockExists(0,0)==false); - Teuchos::RCP > b00 = - ThyBlockedOp->getBlock(0,0); - TEUCHOS_TEST_FOR_EXCEPT(Teuchos::is_null(b00)); - bIsTpetra = isTpetra(b00); - } - } -#endif - - return bIsTpetra; - } - - static bool isEpetra(const Teuchos::RCP>& op) { - // check whether we have an Epetra based Thyra operator - bool bIsEpetra = false; - -#ifdef HAVE_XPETRA_EPETRA - Teuchos::RCP epetra_op = Teuchos::rcp_dynamic_cast(op, false); - bIsEpetra = Teuchos::is_null(epetra_op) ? false : true; -#endif - -#if 0 - // Check whether it is a blocked operator. - // If yes, grab the (0,0) block and check the underlying linear algebra - // Note: we expect that the (0,0) block exists! - if(bIsEpetra == false) { - Teuchos::RCP > ThyBlockedOp = - Teuchos::rcp_dynamic_cast >(op,false); - if(ThyBlockedOp != Teuchos::null) { - TEUCHOS_TEST_FOR_EXCEPT(ThyBlockedOp->blockExists(0,0)==false); - Teuchos::RCP > b00 = - ThyBlockedOp->getBlock(0,0); - TEUCHOS_TEST_FOR_EXCEPT(Teuchos::is_null(b00)); - bIsEpetra = isEpetra(b00); - } - } -#endif - - return bIsEpetra; - } - - static bool isBlockedOperator(const Teuchos::RCP>& op) { - // Check whether it is a blocked operator. - Teuchos::RCP> ThyBlockedOp = - Teuchos::rcp_dynamic_cast>(op); - if (ThyBlockedOp != Teuchos::null) { - return true; - } - return false; - } - - static Teuchos::RCP> - toXpetra(const Teuchos::RCP>& op) { -#ifdef HAVE_XPETRA_TPETRA - if (isTpetra(op)) { -#if ((defined(EPETRA_HAVE_OMP) && defined(HAVE_TPETRA_INST_OPENMP) && defined(HAVE_TPETRA_INST_INT_INT) && defined(HAVE_TPETRA_INST_DOUBLE)) || \ - (!defined(EPETRA_HAVE_OMP) && defined(HAVE_TPETRA_INST_SERIAL) && defined(HAVE_TPETRA_INST_INT_INT) && defined(HAVE_TPETRA_INST_DOUBLE))) - - typedef Thyra::TpetraOperatorVectorExtraction TOE; - Teuchos::RCP> TpetraOp = TOE::getConstTpetraOperator(op); - // we should also add support for the const versions! - // getConstTpetraOperator(const RCP > &op); - TEUCHOS_TEST_FOR_EXCEPT(Teuchos::is_null(TpetraOp)); - Teuchos::RCP> TpetraRowMat = Teuchos::rcp_dynamic_cast>(TpetraOp); - TEUCHOS_TEST_FOR_EXCEPT(Teuchos::is_null(TpetraRowMat)); - Teuchos::RCP> TpetraCrsMat = Teuchos::rcp_dynamic_cast>(TpetraRowMat, true); - Teuchos::RCP> TpetraNcnstCrsMat = Teuchos::rcp_const_cast>(TpetraCrsMat); - TEUCHOS_TEST_FOR_EXCEPT(Teuchos::is_null(TpetraNcnstCrsMat)); - - Teuchos::RCP> xTpetraCrsMat = - Teuchos::rcp(new Xpetra::TpetraCrsMatrix(TpetraNcnstCrsMat)); - TEUCHOS_TEST_FOR_EXCEPT(Teuchos::is_null(xTpetraCrsMat)); - Teuchos::RCP> ret = - Teuchos::rcp_dynamic_cast>(xTpetraCrsMat); - Teuchos::RCP> xpCrsMat = - Teuchos::rcp_dynamic_cast>(xTpetraCrsMat, true); - Teuchos::RCP> xpCrsWrap = - Teuchos::rcp(new Xpetra::CrsMatrixWrap(xpCrsMat)); - Teuchos::RCP> xpMat = - Teuchos::rcp_dynamic_cast>(xpCrsWrap, true); - return xpMat; -#else - throw Xpetra::Exceptions::RuntimeError("Problem BBB. Add TPETRA_INST_INT_INT:BOOL=ON in your configuration."); -#endif - } -#endif - -#ifdef HAVE_XPETRA_EPETRA - if (isEpetra(op)) { - Teuchos::RCP epetra_op = Thyra::get_Epetra_Operator(*op); - TEUCHOS_TEST_FOR_EXCEPT(Teuchos::is_null(epetra_op)); - Teuchos::RCP epetra_rowmat = Teuchos::rcp_dynamic_cast(epetra_op, true); - Teuchos::RCP epetra_crsmat = Teuchos::rcp_dynamic_cast(epetra_rowmat, true); - Teuchos::RCP epetra_ncnstcrsmat = Teuchos::rcp_const_cast(epetra_crsmat); - TEUCHOS_TEST_FOR_EXCEPT(Teuchos::is_null(epetra_ncnstcrsmat)); - - Teuchos::RCP> xEpetraCrsMat = - Teuchos::rcp(new Xpetra::EpetraCrsMatrixT(epetra_ncnstcrsmat)); - TEUCHOS_TEST_FOR_EXCEPT(Teuchos::is_null(xEpetraCrsMat)); - - Teuchos::RCP> xpCrsMat = - Teuchos::rcp_dynamic_cast>(xEpetraCrsMat, true); - Teuchos::RCP> xpCrsWrap = - Teuchos::rcp(new Xpetra::CrsMatrixWrap(xpCrsMat)); - Teuchos::RCP> xpMat = - Teuchos::rcp_dynamic_cast>(xpCrsWrap, true); - return xpMat; - } -#endif - return Teuchos::null; - } - - static Teuchos::RCP> - toXpetra(const Teuchos::RCP>& op) { -#ifdef HAVE_XPETRA_TPETRA - if (isTpetra(op)) { -#if ((defined(EPETRA_HAVE_OMP) && defined(HAVE_TPETRA_INST_OPENMP) && defined(HAVE_TPETRA_INST_INT_INT) && defined(HAVE_TPETRA_INST_DOUBLE)) || \ - (!defined(EPETRA_HAVE_OMP) && defined(HAVE_TPETRA_INST_SERIAL) && defined(HAVE_TPETRA_INST_INT_INT) && defined(HAVE_TPETRA_INST_DOUBLE))) - - typedef Thyra::TpetraOperatorVectorExtraction TOE; - Teuchos::RCP> TpetraOp = TOE::getTpetraOperator(op); - TEUCHOS_TEST_FOR_EXCEPT(Teuchos::is_null(TpetraOp)); - Teuchos::RCP> TpetraRowMat = Teuchos::rcp_dynamic_cast>(TpetraOp, true); - Teuchos::RCP> TpetraCrsMat = Teuchos::rcp_dynamic_cast>(TpetraRowMat, true); - - Teuchos::RCP> xTpetraCrsMat = - Teuchos::rcp(new Xpetra::TpetraCrsMatrix(TpetraCrsMat)); - TEUCHOS_TEST_FOR_EXCEPT(Teuchos::is_null(xTpetraCrsMat)); - Teuchos::RCP> xpCrsMat = - Teuchos::rcp_dynamic_cast>(xTpetraCrsMat, true); - Teuchos::RCP> xpCrsWrap = - Teuchos::rcp(new Xpetra::CrsMatrixWrap(xpCrsMat)); - Teuchos::RCP> xpMat = - Teuchos::rcp_dynamic_cast>(xpCrsWrap, true); - return xpMat; -#else - throw Xpetra::Exceptions::RuntimeError("Problem CCC. Add TPETRA_INST_INT_INT:BOOL=ON in your configuration."); -#endif - } -#endif - -#ifdef HAVE_XPETRA_EPETRA - if (isEpetra(op)) { - Teuchos::RCP epetra_op = Thyra::get_Epetra_Operator(*op); - TEUCHOS_TEST_FOR_EXCEPT(Teuchos::is_null(epetra_op)); - Teuchos::RCP epetra_rowmat = Teuchos::rcp_dynamic_cast(epetra_op, true); - Teuchos::RCP epetra_crsmat = Teuchos::rcp_dynamic_cast(epetra_rowmat, true); - - Teuchos::RCP> xEpetraCrsMat = - Teuchos::rcp(new Xpetra::EpetraCrsMatrixT(epetra_crsmat)); - TEUCHOS_TEST_FOR_EXCEPT(Teuchos::is_null(xEpetraCrsMat)); - Teuchos::RCP> xpCrsMat = - Teuchos::rcp_dynamic_cast>(xEpetraCrsMat, true); - Teuchos::RCP> xpCrsWrap = - Teuchos::rcp(new Xpetra::CrsMatrixWrap(xpCrsMat)); - Teuchos::RCP> xpMat = - Teuchos::rcp_dynamic_cast>(xpCrsWrap, true); - return xpMat; - } -#endif - return Teuchos::null; - } - - static Teuchos::RCP> - toXpetraOperator(const Teuchos::RCP>& op) { - return toXpetraOperator(Teuchos::rcp_const_cast>(op)); - - // #ifdef HAVE_XPETRA_TPETRA - // if(isTpetra(op)) { - // typedef Thyra::TpetraOperatorVectorExtraction TOE; - // Teuchos::RCP > TpetraOp = TOE::getConstTpetraOperator(op); - - // Teuchos::RCP > nonConstTpetraOp = - // Teuchos::rcp_const_cast >(TpetraOp); - - // Teuchos::RCP > xTpetraOp = - // Teuchos::rcp(new Xpetra::TpetraOperator(nonConstTpetraOp)); - // TEUCHOS_TEST_FOR_EXCEPT(Teuchos::is_null(xTpetraOp)); - - // Teuchos::RCP > xpOp = - // Teuchos::rcp_dynamic_cast >(xTpetraOp, true); - // return xpOp; - // } - // #endif - - // #ifdef HAVE_XPETRA_EPETRA - // if(isEpetra(op)) { - // TEUCHOS_TEST_FOR_EXCEPTION(true, Xpetra::Exceptions::RuntimeError, "Epetra needs SC=double, LO=int, and GO=int or GO=long long"); - // } - // #endif - // return Teuchos::null; - } - - static Teuchos::RCP> - toXpetraOperator(const Teuchos::RCP>& op) { -#ifdef HAVE_XPETRA_TPETRA - if (isTpetra(op)) { - typedef Thyra::TpetraOperatorVectorExtraction TOE; - Teuchos::RCP> TpetraOp = TOE::getTpetraOperator(op); - - Teuchos::RCP> xTpetraOp = - Teuchos::rcp(new Xpetra::TpetraOperator(TpetraOp)); - TEUCHOS_TEST_FOR_EXCEPT(Teuchos::is_null(xTpetraOp)); - - Teuchos::RCP> xpOp = - Teuchos::rcp_dynamic_cast>(xTpetraOp, true); - return xpOp; - } -#endif - -#ifdef HAVE_XPETRA_EPETRA - if (isEpetra(op)) { - TEUCHOS_TEST_FOR_EXCEPTION(true, Xpetra::Exceptions::RuntimeError, "Epetra needs SC=double, LO=int, and GO=int or GO=long long"); - } -#endif - return Teuchos::null; - } - - static Teuchos::RCP> - toXpetra(const Teuchos::RCP>& op) { - using Teuchos::rcp_const_cast; - using Teuchos::rcp_dynamic_cast; - - RCP> diag = op->getDiag(); - - RCP> xpDiag; -#ifdef HAVE_XPETRA_TPETRA - using thyTpV = Thyra::TpetraVector; - using tV = Tpetra::Vector; - if (!rcp_dynamic_cast(diag).is_null()) { - RCP tDiag = Thyra::TpetraOperatorVectorExtraction::getConstTpetraVector(diag); - if (!tDiag.is_null()) - xpDiag = Xpetra::toXpetra(tDiag); - } -#endif -#ifdef HAVE_XPETRA_EPETRA - using ThyVSBase = Thyra::SpmdVectorSpaceBase; - if (xpDiag.is_null()) { - RCP comm = Thyra::get_Epetra_Comm(*rcp_dynamic_cast(op->range())->getComm()); - RCP map = Thyra::get_Epetra_Map(*(op->range()), comm); - if (!map.is_null()) { - RCP eDiag = Thyra::get_Epetra_Vector(*map, diag); - RCP nceDiag = rcp_const_cast(eDiag); - RCP> xpEpDiag = rcp(new Xpetra::EpetraVectorT(nceDiag)); - xpDiag = rcp_dynamic_cast>(xpEpDiag, true); - } - } -#endif - TEUCHOS_ASSERT(!xpDiag.is_null()); - RCP> M = Xpetra::MatrixFactory::Build(xpDiag); - return M; - } - - static Teuchos::RCP> - toXpetra(const Teuchos::RCP>& op) { - return toXpetra(Teuchos::rcp_const_cast>(op)); - } - - static Teuchos::RCP> - toThyra(Teuchos::RCP> map) { - Teuchos::RCP> thyraMap = Teuchos::null; - - // check whether map is of type BlockedMap - RCP bmap = Teuchos::rcp_dynamic_cast(map); - if (bmap.is_null() == false) { - Teuchos::Array>> vecSpaces(bmap->getNumMaps()); - for (size_t i = 0; i < bmap->getNumMaps(); i++) { - // we need Thyra GIDs for all the submaps - Teuchos::RCP> vs = - Xpetra::ThyraUtils::toThyra(bmap->getMap(i, true)); - vecSpaces[i] = vs; - } - - thyraMap = Thyra::productVectorSpace(vecSpaces()); - return thyraMap; - } - - // standard case -#ifdef HAVE_XPETRA_TPETRA - if (map->lib() == Xpetra::UseTpetra) { -#if ((defined(EPETRA_HAVE_OMP) && defined(HAVE_TPETRA_INST_OPENMP) && defined(HAVE_TPETRA_INST_INT_INT) && defined(HAVE_TPETRA_INST_DOUBLE)) || \ - (!defined(EPETRA_HAVE_OMP) && defined(HAVE_TPETRA_INST_SERIAL) && defined(HAVE_TPETRA_INST_INT_INT) && defined(HAVE_TPETRA_INST_DOUBLE))) - Teuchos::RCP> tpetraMap = Teuchos::rcp_dynamic_cast>(map); - if (tpetraMap == Teuchos::null) - throw Exceptions::BadCast("Xpetra::ThyraUtils::toThyra: Cast from Xpetra::Map to Xpetra::TpetraMap failed"); - RCP> tpMap = tpetraMap->getTpetra_Map(); - RCP> thyraTpetraMap = Thyra::tpetraVectorSpace(tpMap); - thyraMap = thyraTpetraMap; -#else - throw Xpetra::Exceptions::RuntimeError("Problem DDD. Add TPETRA_INST_INT_INT:BOOL=ON in your configuration."); -#endif - } -#endif - -#ifdef HAVE_XPETRA_EPETRA - if (map->lib() == Xpetra::UseEpetra) { - Teuchos::RCP> epetraMap = Teuchos::rcp_dynamic_cast>(map); - if (epetraMap == Teuchos::null) - throw Exceptions::BadCast("Xpetra::ThyraUtils::toThyra: Cast from Xpetra::Map to Xpetra::EpetraMap failed"); - RCP> thyraEpetraMap = Thyra::create_VectorSpace(epetraMap->getEpetra_MapRCP()); - thyraMap = thyraEpetraMap; - } -#endif - - return thyraMap; - } - - static Teuchos::RCP> - toThyraMultiVector(Teuchos::RCP> vec) { - // create Thyra MultiVector -#ifdef HAVE_XPETRA_TPETRA - if (vec->getMap()->lib() == Xpetra::UseTpetra) { - auto thyTpMap = Thyra::tpetraVectorSpace(Teuchos::rcp_dynamic_cast(vec->getMap())->getTpetra_Map()); - RCP> tpMV = Teuchos::rcp_dynamic_cast(vec)->getTpetra_MultiVector(); - auto thyDomMap = Thyra::tpetraVectorSpace(Tpetra::createLocalMapWithNode(vec->getNumVectors(), vec->getMap()->getComm())); - auto thyMV = rcp(new Thyra::TpetraMultiVector()); - thyMV->initialize(thyTpMap, thyDomMap, tpMV); - return thyMV; - } -#endif - -#ifdef HAVE_XPETRA_EPETRA - if (vec->getMap()->lib() == Xpetra::UseEpetra) { - auto thyEpMap = Thyra::create_VectorSpace(Teuchos::rcp_dynamic_cast>(vec->getMap())->getEpetra_MapRCP()); - auto epMV = Teuchos::rcp_dynamic_cast>(vec)->getEpetra_MultiVector(); - auto thyMV = Thyra::create_MultiVector(epMV, thyEpMap); - return thyMV; - } -#endif - - TEUCHOS_TEST_FOR_EXCEPTION(true, Xpetra::Exceptions::RuntimeError, "MultiVector cannot be converted to Thyra."); - } - - static Teuchos::RCP> - toThyraVector(Teuchos::RCP> vec) { - // create Thyra Vector -#ifdef HAVE_XPETRA_TPETRA - if (vec->getMap()->lib() == Xpetra::UseTpetra) { - auto thyTpMap = Thyra::tpetraVectorSpace(Teuchos::rcp_dynamic_cast(vec->getMap())->getTpetra_Map()); - RCP> tpVec = Teuchos::rcp_dynamic_cast(vec)->getTpetra_Vector(); - auto thyVec = rcp(new Thyra::TpetraVector()); - thyVec->initialize(thyTpMap, tpVec); - return thyVec; - } -#endif - -#ifdef HAVE_XPETRA_EPETRA - if (vec->getMap()->lib() == Xpetra::UseEpetra) { - auto thyEpMap = Thyra::create_VectorSpace(Teuchos::rcp_dynamic_cast>(vec->getMap())->getEpetra_MapRCP()); - auto epVec = rcp(Teuchos::rcp_dynamic_cast>(vec)->getEpetra_Vector(), false); - auto thyVec = Thyra::create_Vector(epVec, thyEpMap); - return thyVec; - } -#endif - - TEUCHOS_TEST_FOR_EXCEPTION(true, Xpetra::Exceptions::RuntimeError, "Vector cannot be converted to Thyra."); - } - - static void updateThyra(Teuchos::RCP> source, Teuchos::RCP> mapExtractor, const Teuchos::RCP>& target) { - using Teuchos::as; - using Teuchos::RCP; - using Teuchos::rcp_dynamic_cast; - typedef Thyra::VectorSpaceBase ThyVecSpaceBase; - typedef Thyra::SpmdVectorSpaceBase ThySpmdVecSpaceBase; - typedef Thyra::MultiVectorBase ThyMultVecBase; - // typedef Thyra::SpmdMultiVectorBase ThySpmdMultVecBase; - // typedef Thyra::ProductVectorSpaceBase ThyProdVecSpaceBase; - typedef Thyra::ProductMultiVectorBase ThyProdMultVecBase; - - // copy data from tY_inout to Y_inout - RCP prodTarget = rcp_dynamic_cast(target); - if (prodTarget != Teuchos::null) { - RCP bSourceVec = rcp_dynamic_cast(source); - if (bSourceVec.is_null() == true) { - // SPECIAL CASE: target vector is product vector: - // update Thyra product multi vector with data from a merged Xpetra multi vector - - TEUCHOS_TEST_FOR_EXCEPTION(mapExtractor == Teuchos::null, std::logic_error, "Found a Thyra product vector, but user did not provide an Xpetra::MapExtractor."); - TEUCHOS_TEST_FOR_EXCEPTION(prodTarget->productSpace()->numBlocks() != as(mapExtractor->NumMaps()), std::logic_error, "Inconsistent numbers of sub maps in Thyra::ProductVectorSpace and Xpetra::MapExtractor."); - - for (int bbb = 0; bbb < prodTarget->productSpace()->numBlocks(); ++bbb) { - // access Xpetra data - RCP xpSubBlock = mapExtractor->ExtractVector(source, bbb, false); // use Xpetra ordering (doesn't really matter) - - // access Thyra data - Teuchos::RCP thySubBlock = prodTarget->getNonconstMultiVectorBlock(bbb); - RCP vs = thySubBlock->range(); - RCP mpi_vs = rcp_dynamic_cast(vs); - const LocalOrdinal localOffset = (mpi_vs != Teuchos::null ? mpi_vs->localOffset() : 0); - const LocalOrdinal localSubDim = (mpi_vs != Teuchos::null ? mpi_vs->localSubDim() : vs->dim()); - RCP> thyData = - Teuchos::rcp(new Thyra::DetachedMultiVectorView(*thySubBlock, Teuchos::Range1D(localOffset, localOffset + localSubDim - 1))); - - // loop over all vectors in multivector - for (size_t j = 0; j < xpSubBlock->getNumVectors(); ++j) { - Teuchos::ArrayRCP xpData = xpSubBlock->getData(j); // access const data from Xpetra object - - // loop over all local rows - for (LocalOrdinal i = 0; i < localSubDim; ++i) { - (*thyData)(i, j) = xpData[i]; - } - } - } - } else { - // source vector is a blocked multivector - // TODO test me - TEUCHOS_TEST_FOR_EXCEPTION(prodTarget->productSpace()->numBlocks() != as(bSourceVec->getBlockedMap()->getNumMaps()), std::logic_error, "Inconsistent numbers of sub maps in Thyra::ProductVectorSpace and Xpetra::BlockedMultiVector."); - - for (int bbb = 0; bbb < prodTarget->productSpace()->numBlocks(); ++bbb) { - // access Thyra data - RCP xpSubBlock = bSourceVec->getMultiVector(bbb, true); // use Thyra ordering - - Teuchos::RCP thyXpSubBlock = toThyraMultiVector(xpSubBlock); - - // access Thyra data - Teuchos::RCP thySubBlock = prodTarget->getNonconstMultiVectorBlock(bbb); - Thyra::assign(thySubBlock.ptr(), *thyXpSubBlock); - } - } - } else { - // STANDARD case: - // update Thyra::MultiVector with data from an Xpetra::MultiVector - - // access Thyra data - RCP mpi_vs = rcp_dynamic_cast(target->range()); - TEUCHOS_TEST_FOR_EXCEPTION(mpi_vs == Teuchos::null, std::logic_error, "Failed to cast Thyra::VectorSpaceBase to Thyra::SpmdVectorSpaceBase."); - const LocalOrdinal localOffset = (mpi_vs != Teuchos::null ? mpi_vs->localOffset() : 0); - const LocalOrdinal localSubDim = (mpi_vs != Teuchos::null ? mpi_vs->localSubDim() : target->range()->dim()); - RCP> thyData = - Teuchos::rcp(new Thyra::DetachedMultiVectorView(*target, Teuchos::Range1D(localOffset, localOffset + localSubDim - 1))); - - // loop over all vectors in multivector - for (size_t j = 0; j < source->getNumVectors(); ++j) { - Teuchos::ArrayRCP xpData = source->getData(j); // access const data from Xpetra object - // loop over all local rows - for (LocalOrdinal i = 0; i < localSubDim; ++i) { - (*thyData)(i, j) = xpData[i]; - } - } - } - } - - static Teuchos::RCP> - toThyra(const Teuchos::RCP>& mat) { - // create a Thyra operator from Xpetra::CrsMatrix - Teuchos::RCP> thyraOp = Teuchos::null; - -#ifdef HAVE_XPETRA_TPETRA - Teuchos::RCP> tpetraMat = Teuchos::rcp_dynamic_cast>(mat); - if (tpetraMat != Teuchos::null) { -#if ((defined(EPETRA_HAVE_OMP) && defined(HAVE_TPETRA_INST_OPENMP) && defined(HAVE_TPETRA_INST_INT_INT) && defined(HAVE_TPETRA_INST_DOUBLE)) || \ - (!defined(EPETRA_HAVE_OMP) && defined(HAVE_TPETRA_INST_SERIAL) && defined(HAVE_TPETRA_INST_INT_INT) && defined(HAVE_TPETRA_INST_DOUBLE))) - - Teuchos::RCP> xTpCrsMat = Teuchos::rcp_dynamic_cast>(mat, true); - Teuchos::RCP> tpCrsMat = xTpCrsMat->getTpetra_CrsMatrix(); - TEUCHOS_TEST_FOR_EXCEPT(Teuchos::is_null(tpCrsMat)); - - Teuchos::RCP> tpRowMat = Teuchos::rcp_dynamic_cast>(tpCrsMat, true); - Teuchos::RCP> tpOperator = Teuchos::rcp_dynamic_cast>(tpRowMat, true); - - thyraOp = Thyra::createConstLinearOp(tpOperator); - TEUCHOS_TEST_FOR_EXCEPT(Teuchos::is_null(thyraOp)); -#else - throw Xpetra::Exceptions::RuntimeError("Add TPETRA_INST_INT_INT:BOOL=ON in your configuration."); -#endif - } -#endif - -#ifdef HAVE_XPETRA_EPETRA - Teuchos::RCP> epetraMat = Teuchos::rcp_dynamic_cast>(mat); - if (epetraMat != Teuchos::null) { - Teuchos::RCP> xEpCrsMat = Teuchos::rcp_dynamic_cast>(mat); - TEUCHOS_TEST_FOR_EXCEPT(Teuchos::is_null(xEpCrsMat)); - Teuchos::RCP epCrsMat = xEpCrsMat->getEpetra_CrsMatrix(); - TEUCHOS_TEST_FOR_EXCEPT(Teuchos::is_null(epCrsMat)); - - Teuchos::RCP thyraEpOp = Thyra::epetraLinearOp(epCrsMat, "op"); - TEUCHOS_TEST_FOR_EXCEPT(Teuchos::is_null(thyraEpOp)); - thyraOp = thyraEpOp; - } -#endif - return thyraOp; - } - - static Teuchos::RCP> - toThyra(const Teuchos::RCP>& mat) { - // create a Thyra operator from Xpetra::CrsMatrix - Teuchos::RCP> thyraOp = Teuchos::null; - -#ifdef HAVE_XPETRA_TPETRA - Teuchos::RCP> tpetraMat = Teuchos::rcp_dynamic_cast>(mat); - if (tpetraMat != Teuchos::null) { -#if ((defined(EPETRA_HAVE_OMP) && defined(HAVE_TPETRA_INST_OPENMP) && defined(HAVE_TPETRA_INST_INT_INT) && defined(HAVE_TPETRA_INST_DOUBLE)) || \ - (!defined(EPETRA_HAVE_OMP) && defined(HAVE_TPETRA_INST_SERIAL) && defined(HAVE_TPETRA_INST_INT_INT) && defined(HAVE_TPETRA_INST_DOUBLE))) - - Teuchos::RCP> xTpCrsMat = Teuchos::rcp_dynamic_cast>(mat, true); - Teuchos::RCP> tpCrsMat = xTpCrsMat->getTpetra_CrsMatrixNonConst(); - TEUCHOS_TEST_FOR_EXCEPT(Teuchos::is_null(tpCrsMat)); - - Teuchos::RCP> tpRowMat = Teuchos::rcp_dynamic_cast>(tpCrsMat, true); - Teuchos::RCP> tpOperator = Teuchos::rcp_dynamic_cast>(tpRowMat, true); - - thyraOp = Thyra::createLinearOp(tpOperator); - TEUCHOS_TEST_FOR_EXCEPT(Teuchos::is_null(thyraOp)); -#else - throw Xpetra::Exceptions::RuntimeError("Add TPETRA_INST_INT_INT:BOOL=ON in your configuration."); -#endif - } -#endif - -#ifdef HAVE_XPETRA_EPETRA - Teuchos::RCP> epetraMat = Teuchos::rcp_dynamic_cast>(mat); - if (epetraMat != Teuchos::null) { - Teuchos::RCP> xEpCrsMat = Teuchos::rcp_dynamic_cast>(mat, true); - Teuchos::RCP epCrsMat = xEpCrsMat->getEpetra_CrsMatrixNonConst(); - TEUCHOS_TEST_FOR_EXCEPT(Teuchos::is_null(epCrsMat)); - - Teuchos::RCP thyraEpOp = Thyra::nonconstEpetraLinearOp(epCrsMat, "op"); - TEUCHOS_TEST_FOR_EXCEPT(Teuchos::is_null(thyraEpOp)); - thyraOp = thyraEpOp; - } -#endif - return thyraOp; - } - - static Teuchos::RCP> - toThyra(const Teuchos::RCP>& mat); - -}; // specialization on SC=double, LO=GO=int and NO=EpetraNode -#endif // #ifndef XPETRA_EPETRA_NO_32BIT_GLOBAL_INDICES - -#ifndef XPETRA_EPETRA_NO_64BIT_GLOBAL_INDICES -template <> -class ThyraUtils { - public: - typedef double Scalar; - typedef int LocalOrdinal; - typedef long long GlobalOrdinal; - typedef EpetraNode Node; - - private: -#undef XPETRA_THYRAUTILS_SHORT -#include "Xpetra_UseShortNames.hpp" - - public: - static Teuchos::RCP> - toXpetra(const Teuchos::RCP>& vectorSpace, const Teuchos::RCP>& comm, std::vector& stridingInfo, LocalOrdinal stridedBlockId = -1, GlobalOrdinal offset = 0) { - Teuchos::RCP> map = ThyraUtils::toXpetra(vectorSpace, comm); - - if (stridedBlockId == -1) { - TEUCHOS_TEST_FOR_EXCEPT(map->getLocalNumElements() % stridingInfo.size() != 0); - } else { - TEUCHOS_TEST_FOR_EXCEPT(map->getLocalNumElements() % stridingInfo[stridedBlockId] != 0); - } - - Teuchos::RCP> ret = Xpetra::StridedMapFactory::Build(map, stridingInfo, stridedBlockId, offset); - return ret; - } - - static Teuchos::RCP> - toXpetra(const Teuchos::RCP>& vectorSpace, const Teuchos::RCP>& comm) { - using Teuchos::as; - using Teuchos::RCP; - using Teuchos::rcp_dynamic_cast; - typedef Thyra::VectorSpaceBase ThyVecSpaceBase; - typedef Thyra::ProductVectorSpaceBase ThyProdVecSpaceBase; - typedef Xpetra::ThyraUtils ThyUtils; - - RCP prodVectorSpace = rcp_dynamic_cast(vectorSpace); - if (prodVectorSpace != Teuchos::null) { - // SPECIAL CASE: product Vector space - // collect all submaps to store them in a hierarchical BlockedMap object - TEUCHOS_TEST_FOR_EXCEPTION(prodVectorSpace->numBlocks() == 0, std::logic_error, "Found a product vector space with zero blocks."); - std::vector> mapsThyra(prodVectorSpace->numBlocks(), Teuchos::null); - std::vector> mapsXpetra(prodVectorSpace->numBlocks(), Teuchos::null); - for (int b = 0; b < prodVectorSpace->numBlocks(); ++b) { - RCP bv = prodVectorSpace->getBlock(b); - // can be of type Map or BlockedMap (containing Thyra GIDs) - mapsThyra[b] = ThyUtils::toXpetra(bv, comm); // recursive call - } - - // get offsets for submap GIDs - // we need that for the full map (Xpetra GIDs) - std::vector gidOffsets(prodVectorSpace->numBlocks(), 0); - for (int i = 1; i < prodVectorSpace->numBlocks(); ++i) { - gidOffsets[i] = mapsThyra[i - 1]->getMaxAllGlobalIndex() + gidOffsets[i - 1] + 1; - } - - for (int b = 0; b < prodVectorSpace->numBlocks(); ++b) { - RCP bv = prodVectorSpace->getBlock(b); - // map can be of type Map or BlockedMap (containing Xpetra style GIDs) - mapsXpetra[b] = MapUtils::transformThyra2XpetraGIDs(*mapsThyra[b], gidOffsets[b]); - } - - Teuchos::RCP resultMap = Teuchos::rcp(new Xpetra::BlockedMap(mapsXpetra, mapsThyra)); - TEUCHOS_TEST_FOR_EXCEPT(Teuchos::is_null(resultMap)); - return resultMap; - } else { - // STANDARD CASE: no product map - // Epetra/Tpetra specific code to access the underlying map data - - // check whether we have a Tpetra based Thyra operator - bool bIsTpetra = false; -#ifdef HAVE_XPETRA_TPETRA -#if ((defined(EPETRA_HAVE_OMP) && defined(HAVE_TPETRA_INST_OPENMP) && defined(HAVE_TPETRA_INST_INT_LONG_LONG) && defined(HAVE_TPETRA_INST_DOUBLE)) || \ - (!defined(EPETRA_HAVE_OMP) && defined(HAVE_TPETRA_INST_SERIAL) && defined(HAVE_TPETRA_INST_INT_LONG_LONG) && defined(HAVE_TPETRA_INST_DOUBLE))) - Teuchos::RCP> tpetra_vsc = Teuchos::rcp_dynamic_cast>(vectorSpace); - bIsTpetra = Teuchos::is_null(tpetra_vsc) ? false : true; -#endif -#endif - - // check whether we have an Epetra based Thyra operator - bool bIsEpetra = !bIsTpetra; // note: this is a little bit fragile! - -#ifdef HAVE_XPETRA_TPETRA - if (bIsTpetra) { -#if ((defined(EPETRA_HAVE_OMP) && defined(HAVE_TPETRA_INST_OPENMP) && defined(HAVE_TPETRA_INST_INT_LONG_LONG) && defined(HAVE_TPETRA_INST_DOUBLE)) || \ - (!defined(EPETRA_HAVE_OMP) && defined(HAVE_TPETRA_INST_SERIAL) && defined(HAVE_TPETRA_INST_INT_LONG_LONG) && defined(HAVE_TPETRA_INST_DOUBLE))) - typedef Thyra::VectorBase ThyVecBase; - typedef Tpetra::Map TpMap; - typedef Tpetra::Vector TpVector; - typedef Thyra::TpetraOperatorVectorExtraction TOE; - RCP rgVec = Thyra::createMember(vectorSpace, std::string("label")); - TEUCHOS_TEST_FOR_EXCEPT(Teuchos::is_null(rgVec)); - RCP rgTpetraVec = TOE::getTpetraVector(rgVec); - TEUCHOS_TEST_FOR_EXCEPT(Teuchos::is_null(rgTpetraVec)); - RCP rgTpetraMap = rgTpetraVec->getMap(); - TEUCHOS_TEST_FOR_EXCEPT(Teuchos::is_null(rgTpetraMap)); - - RCP rgXpetraMap = Xpetra::toXpetraNonConst(rgTpetraMap); - TEUCHOS_TEST_FOR_EXCEPT(Teuchos::is_null(rgXpetraMap)); - return rgXpetraMap; -#else - throw Xpetra::Exceptions::RuntimeError("Add TPETRA_INST_INT_LONG_LONG:BOOL=ON in your configuration."); -#endif - } -#endif - -#ifdef HAVE_XPETRA_EPETRA - if (bIsEpetra) { - // RCP epMap = Teuchos::null; - RCP - epetra_map = Teuchos::get_extra_data>(vectorSpace, "epetra_map"); - if (!Teuchos::is_null(epetra_map)) { - Teuchos::RCP rgXpetraMap = Teuchos::rcp(new Xpetra::EpetraMapT(epetra_map)); - TEUCHOS_TEST_FOR_EXCEPT(Teuchos::is_null(rgXpetraMap)); - return rgXpetraMap; - } else { - TEUCHOS_TEST_FOR_EXCEPTION(true, std::logic_error, "No Epetra_Map data found in Thyra::VectorSpace."); - } - } -#endif - } // end standard case (no product map) - TEUCHOS_TEST_FOR_EXCEPTION(true, std::logic_error, "Cannot transform Thyra::VectorSpace to Xpetra::Map."); - // return Teuchos::null; // unreachable - } - - // const version - static Teuchos::RCP> - toXpetra(Teuchos::RCP> v, const Teuchos::RCP>& comm) { - using Teuchos::as; - using Teuchos::RCP; - using Teuchos::rcp_dynamic_cast; - typedef Thyra::ProductMultiVectorBase ThyProdMultVecBase; - typedef Thyra::MultiVectorBase ThyMultVecBase; - typedef Xpetra::ThyraUtils ThyUtils; - - // return value - RCP xpMultVec = Teuchos::null; - - // check whether v is a product multi vector - Teuchos::RCP thyProdVec = rcp_dynamic_cast(v); - if (thyProdVec != Teuchos::null) { - // SPECIAL CASE: create a nested BlockedMultiVector - // generate nested BlockedMap (containing Thyra and Xpetra GIDs) - RCP fullMap = ThyUtils::toXpetra(v->range(), comm); - TEUCHOS_TEST_FOR_EXCEPT(Teuchos::is_null(Teuchos::rcp_dynamic_cast(fullMap))); - - // create new Xpetra::BlockedMultiVector - xpMultVec = MultiVectorFactory::Build(fullMap, as(thyProdVec->domain()->dim())); - - RCP xpBlockedMultVec = Teuchos::rcp_dynamic_cast(xpMultVec); - TEUCHOS_TEST_FOR_EXCEPT(Teuchos::is_null(xpBlockedMultVec)); - - // loop over all blocks, transform Thyra MultiVectors to Xpetra MultiVectors recursively - for (int b = 0; b < thyProdVec->productSpace()->numBlocks(); ++b) { - RCP thyBlockMV = thyProdVec->getMultiVectorBlock(b); - // xpBlockMV can be of type MultiVector or BlockedMultiVector - RCP xpBlockMV = ThyUtils::toXpetra(thyBlockMV, comm); // recursive call - xpBlockedMultVec->setMultiVector(b, xpBlockMV, true /* Thyra mode */); - } - - TEUCHOS_TEST_FOR_EXCEPT(Teuchos::is_null(xpMultVec)); - return xpMultVec; - } else { - // STANDARD CASE: no product vector - // Epetra/Tpetra specific code to access the underlying map data - bool bIsTpetra = false; -#ifdef HAVE_XPETRA_TPETRA -#if ((defined(EPETRA_HAVE_OMP) && defined(HAVE_TPETRA_INST_OPENMP) && defined(HAVE_TPETRA_INST_INT_LONG_LONG) && defined(HAVE_TPETRA_INST_DOUBLE)) || \ - (!defined(EPETRA_HAVE_OMP) && defined(HAVE_TPETRA_INST_SERIAL) && defined(HAVE_TPETRA_INST_INT_LONG_LONG) && defined(HAVE_TPETRA_INST_DOUBLE))) - - // typedef Tpetra::Map TpMap; - // typedef Tpetra::Vector TpVector; - typedef Thyra::SpmdMultiVectorBase ThySpmdMultVecBase; - typedef Thyra::TpetraOperatorVectorExtraction ConverterT; - typedef Tpetra::MultiVector TpMultVec; - typedef Xpetra::TpetraMultiVector XpTpMultVec; - typedef Thyra::TpetraMultiVector ThyTpMultVec; - - RCP thyraSpmdMultiVector = rcp_dynamic_cast(v); - RCP thyraTpetraMultiVector = rcp_dynamic_cast(thyraSpmdMultiVector); - if (thyraTpetraMultiVector != Teuchos::null) { - bIsTpetra = true; - const RCP tpMultVec = ConverterT::getConstTpetraMultiVector(v); - TEUCHOS_TEST_FOR_EXCEPT(Teuchos::is_null(tpMultVec)); - RCP tpNonConstMultVec = Teuchos::rcp_const_cast(tpMultVec); - TEUCHOS_TEST_FOR_EXCEPT(Teuchos::is_null(tpNonConstMultVec)); - xpMultVec = rcp(new XpTpMultVec(tpNonConstMultVec)); - TEUCHOS_TEST_FOR_EXCEPT(Teuchos::is_null(xpMultVec)); - return xpMultVec; - } -#endif -#endif - -#ifdef HAVE_XPETRA_EPETRA - if (bIsTpetra == false) { - // no product vector - Teuchos::RCP map = ThyUtils::toXpetra(v->range(), comm); - TEUCHOS_TEST_FOR_EXCEPT(Teuchos::is_null(map)); - RCP> xeMap = rcp_dynamic_cast>(map, true); - RCP eMap = xeMap->getEpetra_MapRCP(); - TEUCHOS_TEST_FOR_EXCEPT(Teuchos::is_null(eMap)); - Teuchos::RCP epMultVec = Thyra::get_Epetra_MultiVector(*eMap, v); - TEUCHOS_TEST_FOR_EXCEPT(Teuchos::is_null(epMultVec)); - RCP epNonConstMultVec = Teuchos::rcp_const_cast(epMultVec); - TEUCHOS_TEST_FOR_EXCEPT(Teuchos::is_null(epNonConstMultVec)); - xpMultVec = Teuchos::rcp(new Xpetra::EpetraMultiVectorT(epNonConstMultVec)); - TEUCHOS_TEST_FOR_EXCEPT(Teuchos::is_null(xpMultVec)); - return xpMultVec; - } -#endif - } // end standard case - TEUCHOS_TEST_FOR_EXCEPTION(true, std::logic_error, "Cannot transform Thyra::MultiVector to Xpetra::MultiVector."); - // return Teuchos::null; // unreachable - } - - // non-const version - static Teuchos::RCP> - toXpetra(Teuchos::RCP> v, const Teuchos::RCP>& comm) { - Teuchos::RCP> cv = - Teuchos::rcp_const_cast>(v); - Teuchos::RCP> r = - toXpetra(cv, comm); - return Teuchos::rcp_const_cast>(r); - } - - static bool isTpetra(const Teuchos::RCP>& op) { - // check whether we have a Tpetra based Thyra operator - bool bIsTpetra = false; -#ifdef HAVE_XPETRA_TPETRA -#if ((defined(EPETRA_HAVE_OMP) && defined(HAVE_TPETRA_INST_OPENMP) && defined(HAVE_TPETRA_INST_INT_LONG_LONG) && defined(HAVE_TPETRA_INST_DOUBLE)) || \ - (!defined(EPETRA_HAVE_OMP) && defined(HAVE_TPETRA_INST_SERIAL) && defined(HAVE_TPETRA_INST_INT_LONG_LONG) && defined(HAVE_TPETRA_INST_DOUBLE))) - - Teuchos::RCP> tpetra_op = Teuchos::rcp_dynamic_cast>(op); - bIsTpetra = Teuchos::is_null(tpetra_op) ? false : true; - - // for debugging purposes: find out why dynamic cast failed - if (!bIsTpetra && -#ifdef HAVE_XPETRA_EPETRA - Teuchos::rcp_dynamic_cast(op) == Teuchos::null && -#endif - Teuchos::rcp_dynamic_cast>(op) == Teuchos::null) { - // If op is not blocked and not an Epetra object, it should be in fact an Tpetra object - typedef Thyra::TpetraLinearOp TpetraLinearOp_t; - if (Teuchos::rcp_dynamic_cast(op) == Teuchos::null) { - std::cout << "ATTENTION: The dynamic cast to the TpetraLinearOp failed even though it should be a TpetraLinearOp." << std::endl; - std::cout << " If you are using Panzer or Stratimikos you might check that the template parameters are " << std::endl; - std::cout << " properly set!" << std::endl; - std::cout << Teuchos::rcp_dynamic_cast(op, true) << std::endl; - } - } -#endif -#endif - -#if 0 - // Check whether it is a blocked operator. - // If yes, grab the (0,0) block and check the underlying linear algebra - // Note: we expect that the (0,0) block exists! - if(bIsTpetra == false) { - Teuchos::RCP > ThyBlockedOp = - Teuchos::rcp_dynamic_cast >(op); - if(ThyBlockedOp != Teuchos::null) { - TEUCHOS_TEST_FOR_EXCEPT(ThyBlockedOp->blockExists(0,0)==false); - Teuchos::RCP > b00 = - ThyBlockedOp->getBlock(0,0); - TEUCHOS_TEST_FOR_EXCEPT(Teuchos::is_null(b00)); - bIsTpetra = isTpetra(b00); - } - } -#endif - - return bIsTpetra; - } - - static bool isEpetra(const Teuchos::RCP>& op) { - // check whether we have an Epetra based Thyra operator - bool bIsEpetra = false; - -#ifdef HAVE_XPETRA_EPETRA - Teuchos::RCP epetra_op = Teuchos::rcp_dynamic_cast(op, false); - bIsEpetra = Teuchos::is_null(epetra_op) ? false : true; -#endif - -#if 0 - // Check whether it is a blocked operator. - // If yes, grab the (0,0) block and check the underlying linear algebra - // Note: we expect that the (0,0) block exists! - if(bIsEpetra == false) { - Teuchos::RCP > ThyBlockedOp = - Teuchos::rcp_dynamic_cast >(op,false); - if(ThyBlockedOp != Teuchos::null) { - TEUCHOS_TEST_FOR_EXCEPT(ThyBlockedOp->blockExists(0,0)==false); - Teuchos::RCP > b00 = - ThyBlockedOp->getBlock(0,0); - TEUCHOS_TEST_FOR_EXCEPT(Teuchos::is_null(b00)); - bIsEpetra = isEpetra(b00); - } - } -#endif - - return bIsEpetra; - } - - static bool isBlockedOperator(const Teuchos::RCP>& op) { - // Check whether it is a blocked operator. - Teuchos::RCP> ThyBlockedOp = - Teuchos::rcp_dynamic_cast>(op); - if (ThyBlockedOp != Teuchos::null) { - return true; - } - return false; - } - - static Teuchos::RCP> - toXpetra(const Teuchos::RCP>& op) { -#ifdef HAVE_XPETRA_TPETRA - if (isTpetra(op)) { -#if ((defined(EPETRA_HAVE_OMP) && defined(HAVE_TPETRA_INST_OPENMP) && defined(HAVE_TPETRA_INST_INT_LONG_LONG) && defined(HAVE_TPETRA_INST_DOUBLE)) || \ - (!defined(EPETRA_HAVE_OMP) && defined(HAVE_TPETRA_INST_SERIAL) && defined(HAVE_TPETRA_INST_INT_LONG_LONG) && defined(HAVE_TPETRA_INST_DOUBLE))) - - typedef Thyra::TpetraOperatorVectorExtraction TOE; - Teuchos::RCP> TpetraOp = TOE::getConstTpetraOperator(op); - // we should also add support for the const versions! - // getConstTpetraOperator(const RCP > &op); - TEUCHOS_TEST_FOR_EXCEPT(Teuchos::is_null(TpetraOp)); - Teuchos::RCP> TpetraRowMat = Teuchos::rcp_dynamic_cast>(TpetraOp, true); - Teuchos::RCP> TpetraCrsMat = Teuchos::rcp_dynamic_cast>(TpetraRowMat, true); - Teuchos::RCP> TpetraNcnstCrsMat = Teuchos::rcp_const_cast>(TpetraCrsMat); - TEUCHOS_TEST_FOR_EXCEPT(Teuchos::is_null(TpetraNcnstCrsMat)); - - Teuchos::RCP> xTpetraCrsMat = - Teuchos::rcp(new Xpetra::TpetraCrsMatrix(TpetraNcnstCrsMat)); - TEUCHOS_TEST_FOR_EXCEPT(Teuchos::is_null(xTpetraCrsMat)); - - Teuchos::RCP> xpCrsMat = - Teuchos::rcp_dynamic_cast>(xTpetraCrsMat, true); - Teuchos::RCP> xpCrsWrap = - Teuchos::rcp(new Xpetra::CrsMatrixWrap(xpCrsMat)); - Teuchos::RCP> xpMat = - Teuchos::rcp_dynamic_cast>(xpCrsWrap, true); - return xpMat; -#else - throw Xpetra::Exceptions::RuntimeError("Add TPETRA_INST_INT_LONG_LONG:BOOL=ON in your configuration."); -#endif - } -#endif - -#ifdef HAVE_XPETRA_EPETRA - if (isEpetra(op)) { - Teuchos::RCP epetra_op = Thyra::get_Epetra_Operator(*op); - TEUCHOS_TEST_FOR_EXCEPT(Teuchos::is_null(epetra_op)); - Teuchos::RCP epetra_rowmat = Teuchos::rcp_dynamic_cast(epetra_op, true); - Teuchos::RCP epetra_crsmat = Teuchos::rcp_dynamic_cast(epetra_rowmat, true); - Teuchos::RCP epetra_ncnstcrsmat = Teuchos::rcp_const_cast(epetra_crsmat); - TEUCHOS_TEST_FOR_EXCEPT(Teuchos::is_null(epetra_ncnstcrsmat)); - - Teuchos::RCP> xEpetraCrsMat = - Teuchos::rcp(new Xpetra::EpetraCrsMatrixT(epetra_ncnstcrsmat)); - TEUCHOS_TEST_FOR_EXCEPT(Teuchos::is_null(xEpetraCrsMat)); - - Teuchos::RCP> xpCrsMat = - Teuchos::rcp_dynamic_cast>(xEpetraCrsMat, true); - Teuchos::RCP> xpCrsWrap = - Teuchos::rcp(new Xpetra::CrsMatrixWrap(xpCrsMat)); - Teuchos::RCP> xpMat = - Teuchos::rcp_dynamic_cast>(xpCrsWrap, true); - return xpMat; - } -#endif - return Teuchos::null; - } - - static Teuchos::RCP> - toXpetra(const Teuchos::RCP>& op) { -#ifdef HAVE_XPETRA_TPETRA - if (isTpetra(op)) { -#if ((defined(EPETRA_HAVE_OMP) && defined(HAVE_TPETRA_INST_OPENMP) && defined(HAVE_TPETRA_INST_INT_LONG_LONG) && defined(HAVE_TPETRA_INST_DOUBLE)) || \ - (!defined(EPETRA_HAVE_OMP) && defined(HAVE_TPETRA_INST_SERIAL) && defined(HAVE_TPETRA_INST_INT_LONG_LONG) && defined(HAVE_TPETRA_INST_DOUBLE))) - - typedef Thyra::TpetraOperatorVectorExtraction TOE; - Teuchos::RCP> TpetraOp = TOE::getTpetraOperator(op); - TEUCHOS_TEST_FOR_EXCEPT(Teuchos::is_null(TpetraOp)); - Teuchos::RCP> TpetraRowMat = Teuchos::rcp_dynamic_cast>(TpetraOp, true); - Teuchos::RCP> TpetraCrsMat = Teuchos::rcp_dynamic_cast>(TpetraRowMat, true); - - Teuchos::RCP> xTpetraCrsMat = - Teuchos::rcp(new Xpetra::TpetraCrsMatrix(TpetraCrsMat)); - TEUCHOS_TEST_FOR_EXCEPT(Teuchos::is_null(xTpetraCrsMat)); - - Teuchos::RCP> xpCrsMat = - Teuchos::rcp_dynamic_cast>(xTpetraCrsMat, true); - Teuchos::RCP> xpCrsWrap = - Teuchos::rcp(new Xpetra::CrsMatrixWrap(xpCrsMat)); - Teuchos::RCP> xpMat = - Teuchos::rcp_dynamic_cast>(xpCrsWrap, true); - return xpMat; -#else - throw Xpetra::Exceptions::RuntimeError("Add TPETRA_INST_INT_LONG_LONG:BOOL=ON in your configuration."); -#endif - } -#endif - -#ifdef HAVE_XPETRA_EPETRA - if (isEpetra(op)) { - Teuchos::RCP epetra_op = Thyra::get_Epetra_Operator(*op); - TEUCHOS_TEST_FOR_EXCEPT(Teuchos::is_null(epetra_op)); - Teuchos::RCP epetra_rowmat = Teuchos::rcp_dynamic_cast(epetra_op, true); - Teuchos::RCP epetra_crsmat = Teuchos::rcp_dynamic_cast(epetra_rowmat, true); - - Teuchos::RCP> xEpetraCrsMat = - Teuchos::rcp(new Xpetra::EpetraCrsMatrixT(epetra_crsmat)); - TEUCHOS_TEST_FOR_EXCEPT(Teuchos::is_null(xEpetraCrsMat)); - - Teuchos::RCP> xpCrsMat = - Teuchos::rcp_dynamic_cast>(xEpetraCrsMat, true); - Teuchos::RCP> xpCrsWrap = - Teuchos::rcp(new Xpetra::CrsMatrixWrap(xpCrsMat)); - Teuchos::RCP> xpMat = - Teuchos::rcp_dynamic_cast>(xpCrsWrap, true); - return xpMat; - } -#endif - return Teuchos::null; - } - - static Teuchos::RCP> - toXpetraOperator(const Teuchos::RCP>& op) { -#ifdef HAVE_XPETRA_TPETRA - if (isTpetra(op)) { - typedef Thyra::TpetraOperatorVectorExtraction TOE; - Teuchos::RCP> TpetraOp = TOE::getConstTpetraOperator(op); - - Teuchos::RCP> xTpetraOp = - Teuchos::rcp(new Xpetra::TpetraOperator(TpetraOp)); - TEUCHOS_TEST_FOR_EXCEPT(Teuchos::is_null(xTpetraOp)); - - Teuchos::RCP> xpOp = - Teuchos::rcp_dynamic_cast>(xTpetraOp, true); - return xpOp; - } -#endif - -#ifdef HAVE_XPETRA_EPETRA - if (isEpetra(op)) { - TEUCHOS_TEST_FOR_EXCEPTION(true, Xpetra::Exceptions::RuntimeError, "Epetra needs SC=double, LO=int, and GO=int or GO=long long"); - } -#endif - return Teuchos::null; - } - - static Teuchos::RCP> - toXpetraOperator(const Teuchos::RCP>& op) { -#ifdef HAVE_XPETRA_TPETRA - if (isTpetra(op)) { - typedef Thyra::TpetraOperatorVectorExtraction TOE; - Teuchos::RCP> TpetraOp = TOE::getTpetraOperator(op); - - Teuchos::RCP> xTpetraOp = - Teuchos::rcp(new Xpetra::TpetraOperator(TpetraOp)); - TEUCHOS_TEST_FOR_EXCEPT(Teuchos::is_null(xTpetraOp)); - - Teuchos::RCP> xpOp = - Teuchos::rcp_dynamic_cast>(xTpetraOp, true); - return xpOp; - } -#endif - -#ifdef HAVE_XPETRA_EPETRA - if (isEpetra(op)) { - TEUCHOS_TEST_FOR_EXCEPTION(true, Xpetra::Exceptions::RuntimeError, "Epetra needs SC=double, LO=int, and GO=int or GO=long long"); - } -#endif - return Teuchos::null; - } - - static Teuchos::RCP> - toXpetra(const Teuchos::RCP>& op) { - using Teuchos::rcp_const_cast; - using Teuchos::rcp_dynamic_cast; - using ThyVSBase = Thyra::SpmdVectorSpaceBase; - using thyTpV = Thyra::TpetraVector; - using tV = Tpetra::Vector; - - RCP> diag = op->getDiag(); - - RCP> xpDiag; -#ifdef HAVE_XPETRA_TPETRA - if (!rcp_dynamic_cast(diag).is_null()) { - RCP tDiag = Thyra::TpetraOperatorVectorExtraction::getConstTpetraVector(diag); - if (!tDiag.is_null()) - xpDiag = Xpetra::toXpetra(tDiag); - } -#endif -#ifdef HAVE_XPETRA_EPETRA - if (xpDiag.is_null()) { - RCP comm = Thyra::get_Epetra_Comm(*rcp_dynamic_cast(op->range())->getComm()); - RCP map = Thyra::get_Epetra_Map(*(op->range()), comm); - if (!map.is_null()) { - RCP eDiag = Thyra::get_Epetra_Vector(*map, diag); - RCP nceDiag = rcp_const_cast(eDiag); - RCP> xpEpDiag = rcp(new Xpetra::EpetraVectorT(nceDiag)); - xpDiag = rcp_dynamic_cast>(xpEpDiag, true); - } - } -#endif - TEUCHOS_ASSERT(!xpDiag.is_null()); - RCP> M = Xpetra::MatrixFactory::Build(xpDiag); - return M; - } - - static Teuchos::RCP> - toXpetra(const Teuchos::RCP>& op) { - return toXpetra(Teuchos::rcp_const_cast>(op)); - } - - static Teuchos::RCP> - toThyra(Teuchos::RCP> map) { - Teuchos::RCP> thyraMap = Teuchos::null; - - // check whether map is of type BlockedMap - RCP bmap = Teuchos::rcp_dynamic_cast(map); - if (bmap.is_null() == false) { - Teuchos::Array>> vecSpaces(bmap->getNumMaps()); - for (size_t i = 0; i < bmap->getNumMaps(); i++) { - // we need Thyra GIDs for all the submaps - Teuchos::RCP> vs = - Xpetra::ThyraUtils::toThyra(bmap->getMap(i, true)); - vecSpaces[i] = vs; - } - - thyraMap = Thyra::productVectorSpace(vecSpaces()); - return thyraMap; - } - - // standard case -#ifdef HAVE_XPETRA_TPETRA - if (map->lib() == Xpetra::UseTpetra) { -#if ((defined(EPETRA_HAVE_OMP) && defined(HAVE_TPETRA_INST_OPENMP) && defined(HAVE_TPETRA_INST_INT_LONG_LONG) && defined(HAVE_TPETRA_INST_DOUBLE)) || \ - (!defined(EPETRA_HAVE_OMP) && defined(HAVE_TPETRA_INST_SERIAL) && defined(HAVE_TPETRA_INST_INT_LONG_LONG) && defined(HAVE_TPETRA_INST_DOUBLE))) - Teuchos::RCP> tpetraMap = Teuchos::rcp_dynamic_cast>(map); - if (tpetraMap == Teuchos::null) - throw Exceptions::BadCast("Xpetra::ThyraUtils::toThyra: Cast from Xpetra::Map to Xpetra::TpetraMap failed"); - RCP> tpMap = tpetraMap->getTpetra_Map(); - RCP> thyraTpetraMap = Thyra::tpetraVectorSpace(tpMap); - thyraMap = thyraTpetraMap; -#else - throw Xpetra::Exceptions::RuntimeError("Problem DDD. Add TPETRA_INST_INT_LONG_LONG:BOOL=ON in your configuration."); -#endif - } -#endif - -#ifdef HAVE_XPETRA_EPETRA - if (map->lib() == Xpetra::UseEpetra) { - Teuchos::RCP> epetraMap = Teuchos::rcp_dynamic_cast>(map); - if (epetraMap == Teuchos::null) - throw Exceptions::BadCast("Xpetra::ThyraUtils::toThyra: Cast from Xpetra::Map to Xpetra::EpetraMap failed"); - RCP> thyraEpetraMap = Thyra::create_VectorSpace(epetraMap->getEpetra_MapRCP()); - thyraMap = thyraEpetraMap; - } -#endif - - return thyraMap; - } - - static Teuchos::RCP> - toThyraMultiVector(Teuchos::RCP> vec) { - // create Thyra MultiVector -#ifdef HAVE_XPETRA_TPETRA - if (vec->getMap()->lib() == Xpetra::UseTpetra) { - auto thyTpMap = Thyra::tpetraVectorSpace(Teuchos::rcp_dynamic_cast(vec->getMap())->getTpetra_Map()); - RCP> tpMV = Teuchos::rcp_dynamic_cast(vec)->getTpetra_MultiVector(); - auto thyDomMap = Thyra::tpetraVectorSpace(Tpetra::createLocalMapWithNode(vec->getNumVectors(), vec->getMap()->getComm())); - auto thyMV = rcp(new Thyra::TpetraMultiVector()); - thyMV->initialize(thyTpMap, thyDomMap, tpMV); - return thyMV; - } -#endif - -#ifdef HAVE_XPETRA_EPETRA - if (vec->getMap()->lib() == Xpetra::UseEpetra) { - auto thyEpMap = Thyra::create_VectorSpace(Teuchos::rcp_dynamic_cast>(vec->getMap())->getEpetra_MapRCP()); - auto epMV = Teuchos::rcp_dynamic_cast>(vec)->getEpetra_MultiVector(); - auto thyMV = Thyra::create_MultiVector(epMV, thyEpMap); - return thyMV; - } -#endif - - TEUCHOS_TEST_FOR_EXCEPTION(true, Xpetra::Exceptions::RuntimeError, "MultiVector cannot be converted to Thyra."); - } - - static Teuchos::RCP> - toThyraVector(Teuchos::RCP> vec) { - // create Thyra Vector -#ifdef HAVE_XPETRA_TPETRA - if (vec->getMap()->lib() == Xpetra::UseTpetra) { - auto thyTpMap = Thyra::tpetraVectorSpace(Teuchos::rcp_dynamic_cast(vec->getMap())->getTpetra_Map()); - RCP> tpVec = Teuchos::rcp_dynamic_cast(vec)->getTpetra_Vector(); - auto thyVec = rcp(new Thyra::TpetraVector()); - thyVec->initialize(thyTpMap, tpVec); - return thyVec; - } -#endif - -#ifdef HAVE_XPETRA_EPETRA - if (vec->getMap()->lib() == Xpetra::UseEpetra) { - auto thyEpMap = Thyra::create_VectorSpace(Teuchos::rcp_dynamic_cast>(vec->getMap())->getEpetra_MapRCP()); - auto epVec = rcp(Teuchos::rcp_dynamic_cast>(vec)->getEpetra_Vector(), false); - auto thyVec = Thyra::create_Vector(epVec, thyEpMap); - return thyVec; - } -#endif - - TEUCHOS_TEST_FOR_EXCEPTION(true, Xpetra::Exceptions::RuntimeError, "Vector cannot be converted to Thyra."); - } - - static void updateThyra(Teuchos::RCP> source, Teuchos::RCP> mapExtractor, const Teuchos::RCP>& target) { - using Teuchos::as; - using Teuchos::RCP; - using Teuchos::rcp_dynamic_cast; - typedef Thyra::VectorSpaceBase ThyVecSpaceBase; - typedef Thyra::SpmdVectorSpaceBase ThySpmdVecSpaceBase; - typedef Thyra::MultiVectorBase ThyMultVecBase; - // typedef Thyra::SpmdMultiVectorBase ThySpmdMultVecBase; - // typedef Thyra::ProductVectorSpaceBase ThyProdVecSpaceBase; - typedef Thyra::ProductMultiVectorBase ThyProdMultVecBase; - - // copy data from tY_inout to Y_inout - RCP prodTarget = rcp_dynamic_cast(target); - if (prodTarget != Teuchos::null) { - RCP bSourceVec = rcp_dynamic_cast(source); - if (bSourceVec.is_null() == true) { - // SPECIAL CASE: target vector is product vector: - // update Thyra product multi vector with data from a merged Xpetra multi vector - - TEUCHOS_TEST_FOR_EXCEPTION(mapExtractor == Teuchos::null, std::logic_error, "Found a Thyra product vector, but user did not provide an Xpetra::MapExtractor."); - TEUCHOS_TEST_FOR_EXCEPTION(prodTarget->productSpace()->numBlocks() != as(mapExtractor->NumMaps()), std::logic_error, "Inconsistent numbers of sub maps in Thyra::ProductVectorSpace and Xpetra::MapExtractor."); - - for (int bbb = 0; bbb < prodTarget->productSpace()->numBlocks(); ++bbb) { - // access Xpetra data - RCP xpSubBlock = mapExtractor->ExtractVector(source, bbb, false); // use Xpetra ordering (doesn't really matter) - - // access Thyra data - Teuchos::RCP thySubBlock = prodTarget->getNonconstMultiVectorBlock(bbb); - RCP vs = thySubBlock->range(); - RCP mpi_vs = rcp_dynamic_cast(vs); - const LocalOrdinal localOffset = (mpi_vs != Teuchos::null ? mpi_vs->localOffset() : 0); - const LocalOrdinal localSubDim = (mpi_vs != Teuchos::null ? mpi_vs->localSubDim() : vs->dim()); - RCP> thyData = - Teuchos::rcp(new Thyra::DetachedMultiVectorView(*thySubBlock, Teuchos::Range1D(localOffset, localOffset + localSubDim - 1))); - - // loop over all vectors in multivector - for (size_t j = 0; j < xpSubBlock->getNumVectors(); ++j) { - Teuchos::ArrayRCP xpData = xpSubBlock->getData(j); // access const data from Xpetra object - - // loop over all local rows - for (LocalOrdinal i = 0; i < localSubDim; ++i) { - (*thyData)(i, j) = xpData[i]; - } - } - } - } else { - // source vector is a blocked multivector - // TODO test me - TEUCHOS_TEST_FOR_EXCEPTION(prodTarget->productSpace()->numBlocks() != as(bSourceVec->getBlockedMap()->getNumMaps()), std::logic_error, "Inconsistent numbers of sub maps in Thyra::ProductVectorSpace and Xpetra::BlockedMultiVector."); - - for (int bbb = 0; bbb < prodTarget->productSpace()->numBlocks(); ++bbb) { - // access Thyra data - RCP xpSubBlock = bSourceVec->getMultiVector(bbb, true); // use Thyra ordering - - Teuchos::RCP thyXpSubBlock = toThyraMultiVector(xpSubBlock); - - // access Thyra data - Teuchos::RCP thySubBlock = prodTarget->getNonconstMultiVectorBlock(bbb); - Thyra::assign(thySubBlock.ptr(), *thyXpSubBlock); - } - } - } else { - // STANDARD case: - // update Thyra::MultiVector with data from an Xpetra::MultiVector - - // access Thyra data - RCP mpi_vs = rcp_dynamic_cast(target->range()); - TEUCHOS_TEST_FOR_EXCEPTION(mpi_vs == Teuchos::null, std::logic_error, "Failed to cast Thyra::VectorSpaceBase to Thyra::SpmdVectorSpaceBase."); - const LocalOrdinal localOffset = (mpi_vs != Teuchos::null ? mpi_vs->localOffset() : 0); - const LocalOrdinal localSubDim = (mpi_vs != Teuchos::null ? mpi_vs->localSubDim() : target->range()->dim()); - RCP> thyData = - Teuchos::rcp(new Thyra::DetachedMultiVectorView(*target, Teuchos::Range1D(localOffset, localOffset + localSubDim - 1))); - - // loop over all vectors in multivector - for (size_t j = 0; j < source->getNumVectors(); ++j) { - Teuchos::ArrayRCP xpData = source->getData(j); // access const data from Xpetra object - // loop over all local rows - for (LocalOrdinal i = 0; i < localSubDim; ++i) { - (*thyData)(i, j) = xpData[i]; - } - } - } - } - - static Teuchos::RCP> - toThyra(const Teuchos::RCP>& mat) { - // create a Thyra operator from Xpetra::CrsMatrix - Teuchos::RCP> thyraOp = Teuchos::null; - -#ifdef HAVE_XPETRA_TPETRA - Teuchos::RCP> tpetraMat = Teuchos::rcp_dynamic_cast>(mat); - if (tpetraMat != Teuchos::null) { -#if ((defined(EPETRA_HAVE_OMP) && defined(HAVE_TPETRA_INST_OPENMP) && defined(HAVE_TPETRA_INST_INT_LONG_LONG) && defined(HAVE_TPETRA_INST_DOUBLE)) || \ - (!defined(EPETRA_HAVE_OMP) && defined(HAVE_TPETRA_INST_SERIAL) && defined(HAVE_TPETRA_INST_INT_LONG_LONG) && defined(HAVE_TPETRA_INST_DOUBLE))) - - Teuchos::RCP> xTpCrsMat = Teuchos::rcp_dynamic_cast>(mat, true); - Teuchos::RCP> tpCrsMat = xTpCrsMat->getTpetra_CrsMatrix(); - TEUCHOS_TEST_FOR_EXCEPT(Teuchos::is_null(tpCrsMat)); - - Teuchos::RCP> tpRowMat = Teuchos::rcp_dynamic_cast>(tpCrsMat, true); - Teuchos::RCP> tpOperator = Teuchos::rcp_dynamic_cast>(tpRowMat, true); - - thyraOp = Thyra::createConstLinearOp(tpOperator); - TEUCHOS_TEST_FOR_EXCEPT(Teuchos::is_null(thyraOp)); -#else - throw Xpetra::Exceptions::RuntimeError("Add TPETRA_INST_INT_LONG_LONG:BOOL=ON in your configuration."); -#endif - } -#endif - -#ifdef HAVE_XPETRA_EPETRA - Teuchos::RCP> epetraMat = Teuchos::rcp_dynamic_cast>(mat); - if (epetraMat != Teuchos::null) { - Teuchos::RCP> xEpCrsMat = Teuchos::rcp_dynamic_cast>(mat, true); - Teuchos::RCP epCrsMat = xEpCrsMat->getEpetra_CrsMatrix(); - TEUCHOS_TEST_FOR_EXCEPT(Teuchos::is_null(epCrsMat)); - - Teuchos::RCP thyraEpOp = Thyra::epetraLinearOp(epCrsMat, "op"); - TEUCHOS_TEST_FOR_EXCEPT(Teuchos::is_null(thyraEpOp)); - thyraOp = thyraEpOp; - } -#endif - return thyraOp; - } - - static Teuchos::RCP> - toThyra(const Teuchos::RCP>& mat) { - // create a Thyra operator from Xpetra::CrsMatrix - Teuchos::RCP> thyraOp = Teuchos::null; - -#ifdef HAVE_XPETRA_TPETRA - Teuchos::RCP> tpetraMat = Teuchos::rcp_dynamic_cast>(mat); - if (tpetraMat != Teuchos::null) { -#if ((defined(EPETRA_HAVE_OMP) && defined(HAVE_TPETRA_INST_OPENMP) && defined(HAVE_TPETRA_INST_INT_LONG_LONG) && defined(HAVE_TPETRA_INST_DOUBLE)) || \ - (!defined(EPETRA_HAVE_OMP) && defined(HAVE_TPETRA_INST_SERIAL) && defined(HAVE_TPETRA_INST_INT_LONG_LONG) && defined(HAVE_TPETRA_INST_DOUBLE))) - - Teuchos::RCP> xTpCrsMat = Teuchos::rcp_dynamic_cast>(mat, true); - Teuchos::RCP> tpCrsMat = xTpCrsMat->getTpetra_CrsMatrixNonConst(); - TEUCHOS_TEST_FOR_EXCEPT(Teuchos::is_null(tpCrsMat)); - - Teuchos::RCP> tpRowMat = Teuchos::rcp_dynamic_cast>(tpCrsMat, true); - Teuchos::RCP> tpOperator = Teuchos::rcp_dynamic_cast>(tpRowMat, true); - - thyraOp = Thyra::createLinearOp(tpOperator); - TEUCHOS_TEST_FOR_EXCEPT(Teuchos::is_null(thyraOp)); -#else - throw Xpetra::Exceptions::RuntimeError("Add TPETRA_INST_INT_LONG_LONG:BOOL=ON in your configuration."); -#endif - } -#endif - -#ifdef HAVE_XPETRA_EPETRA - Teuchos::RCP> epetraMat = Teuchos::rcp_dynamic_cast>(mat); - if (epetraMat != Teuchos::null) { - Teuchos::RCP> xEpCrsMat = Teuchos::rcp_dynamic_cast>(mat, true); - Teuchos::RCP epCrsMat = xEpCrsMat->getEpetra_CrsMatrixNonConst(); - TEUCHOS_TEST_FOR_EXCEPT(Teuchos::is_null(epCrsMat)); - - Teuchos::RCP thyraEpOp = Thyra::nonconstEpetraLinearOp(epCrsMat, "op"); - TEUCHOS_TEST_FOR_EXCEPT(Teuchos::is_null(thyraEpOp)); - thyraOp = thyraEpOp; - } -#endif - return thyraOp; - } - - static Teuchos::RCP> - toThyra(const Teuchos::RCP>& mat); - -}; // specialization on SC=double, LO=GO=int and NO=EpetraNode -#endif // XPETRA_EPETRA_NO_64BIT_GLOBAL_INDICES - -#endif // HAVE_XPETRA_EPETRA } // end namespace Xpetra diff --git a/packages/xpetra/src/Utils/Xpetra_ThyraUtils_def.hpp b/packages/xpetra/src/Utils/Xpetra_ThyraUtils_def.hpp index 33964d77c3e3..2da433d4dc07 100644 --- a/packages/xpetra/src/Utils/Xpetra_ThyraUtils_def.hpp +++ b/packages/xpetra/src/Utils/Xpetra_ThyraUtils_def.hpp @@ -74,7 +74,6 @@ Xpetra::ThyraUtils:: resultMap = Teuchos::rcp(new Xpetra::BlockedMap(mapsXpetra, mapsThyra)); } else { -#ifdef HAVE_XPETRA_TPETRA // STANDARD CASE: no product map // check whether we have a Tpetra based Thyra operator Teuchos::RCP> tpetra_vsc = Teuchos::rcp_dynamic_cast>(vectorSpace); @@ -91,9 +90,6 @@ Xpetra::ThyraUtils:: RCP rgTpetraMap = rgTpetraVec->getMap(); TEUCHOS_TEST_FOR_EXCEPT(Teuchos::is_null(rgTpetraMap)); resultMap = Xpetra::toXpetraNonConst(rgTpetraMap); -#else - TEUCHOS_TEST_FOR_EXCEPTION(true, std::logic_error, "Cannot transform Thyra::VectorSpace to Xpetra::Map. This is the general implementation for Tpetra only, but Tpetra is disabled."); -#endif } // end standard case (no product map) TEUCHOS_TEST_FOR_EXCEPT(Teuchos::is_null(resultMap)); return resultMap; @@ -136,7 +132,6 @@ Xpetra::ThyraUtils:: } } else { // STANDARD CASE: no product vector -#ifdef HAVE_XPETRA_TPETRA typedef Thyra::TpetraOperatorVectorExtraction ConverterT; typedef Tpetra::MultiVector TpMultVec; typedef Xpetra::TpetraMultiVector XpTpMultVec; @@ -151,9 +146,6 @@ Xpetra::ThyraUtils:: RCP tpNonConstMultVec = Teuchos::rcp_const_cast(tpMultVec); TEUCHOS_TEST_FOR_EXCEPT(Teuchos::is_null(tpNonConstMultVec)); xpMultVec = rcp(new XpTpMultVec(tpNonConstMultVec)); -#else - TEUCHOS_TEST_FOR_EXCEPTION(true, std::logic_error, "Cannot transform Thyra::MultiVector to Xpetra::MultiVector. This is the general implementation for Tpetra only, but Teptra is disabled."); -#endif } // end standard case TEUCHOS_TEST_FOR_EXCEPT(Teuchos::is_null(xpMultVec)); return xpMultVec; @@ -177,15 +169,11 @@ bool Xpetra::ThyraUtils:: // check whether we have a Tpetra based Thyra operator bool bIsTpetra = false; -#ifdef HAVE_XPETRA_TPETRA Teuchos::RCP> tpetra_op = Teuchos::rcp_dynamic_cast>(op); bIsTpetra = Teuchos::is_null(tpetra_op) ? false : true; // for debugging purposes: find out why dynamic cast failed if (!bIsTpetra && -#ifdef HAVE_XPETRA_EPETRA - Teuchos::rcp_dynamic_cast(op) == Teuchos::null && -#endif Teuchos::rcp_dynamic_cast>(op) == Teuchos::null) { // If op is not blocked and not an Epetra object, it should be in fact an Tpetra object typedef Thyra::TpetraLinearOp TpetraLinearOp_t; @@ -196,7 +184,6 @@ bool Xpetra::ThyraUtils:: std::cout << Teuchos::rcp_dynamic_cast(op, true) << std::endl; } } -#endif #if 0 // Check whether it is a blocked operator. @@ -240,7 +227,6 @@ template Teuchos::RCP> Xpetra::ThyraUtils:: toXpetra(const Teuchos::RCP>& op) { -#ifdef HAVE_XPETRA_TPETRA if (isTpetra(op)) { typedef Thyra::TpetraOperatorVectorExtraction TOE; Teuchos::RCP> TpetraOp = TOE::getConstTpetraOperator(op); @@ -264,13 +250,7 @@ Xpetra::ThyraUtils:: Teuchos::rcp_dynamic_cast>(xpCrsWrap, true); return xpMat; } -#endif -#ifdef HAVE_XPETRA_EPETRA - if (isEpetra(op)) { - TEUCHOS_TEST_FOR_EXCEPTION(true, Xpetra::Exceptions::RuntimeError, "Epetra needs SC=double, LO=int, and GO=int or GO=long long"); - } -#endif return Teuchos::null; } @@ -283,7 +263,6 @@ Xpetra::ThyraUtils:: using Teuchos::rcp_const_cast; using Teuchos::rcp_dynamic_cast; -#ifdef HAVE_XPETRA_TPETRA if (isTpetra(op)) { typedef Thyra::TpetraOperatorVectorExtraction TOE; typedef Tpetra::Operator TpetraOperator_t; @@ -306,13 +285,7 @@ Xpetra::ThyraUtils:: rcp_dynamic_cast>(xpCrsWrap, true); return xpMat; } -#endif -#ifdef HAVE_XPETRA_EPETRA - if (isEpetra(op)) { - TEUCHOS_TEST_FOR_EXCEPTION(true, Xpetra::Exceptions::RuntimeError, "Epetra needs SC=double, LO=int, and GO=int or GO=long long"); - } -#endif return Teuchos::null; } @@ -320,7 +293,6 @@ template Teuchos::RCP> Xpetra::ThyraUtils:: toXpetraOperator(const Teuchos::RCP>& op) { -#ifdef HAVE_XPETRA_TPETRA if (isTpetra(op)) { typedef Thyra::TpetraOperatorVectorExtraction TOE; Teuchos::RCP> TpetraOp = TOE::getConstTpetraOperator(op); @@ -335,13 +307,7 @@ Xpetra::ThyraUtils:: Teuchos::rcp_dynamic_cast>(xTpetraOp, true); return xpOp; } -#endif -#ifdef HAVE_XPETRA_EPETRA - if (isEpetra(op)) { - TEUCHOS_TEST_FOR_EXCEPTION(true, Xpetra::Exceptions::RuntimeError, "Epetra needs SC=double, LO=int, and GO=int or GO=long long"); - } -#endif return Teuchos::null; } @@ -349,7 +315,6 @@ template Teuchos::RCP> Xpetra::ThyraUtils:: toXpetraOperator(const Teuchos::RCP>& op) { -#ifdef HAVE_XPETRA_TPETRA if (isTpetra(op)) { typedef Thyra::TpetraOperatorVectorExtraction TOE; Teuchos::RCP> TpetraOp = TOE::getTpetraOperator(op); @@ -362,13 +327,7 @@ Xpetra::ThyraUtils:: Teuchos::rcp_dynamic_cast>(xTpetraOp, true); return xpOp; } -#endif -#ifdef HAVE_XPETRA_EPETRA - if (isEpetra(op)) { - TEUCHOS_TEST_FOR_EXCEPTION(true, Xpetra::Exceptions::RuntimeError, "Epetra needs SC=double, LO=int, and GO=int or GO=long long"); - } -#endif return Teuchos::null; } @@ -382,7 +341,6 @@ Xpetra::ThyraUtils:: RCP> diag = op->getDiag(); RCP> xpDiag; -#ifdef HAVE_XPETRA_TPETRA using thyTpV = Thyra::TpetraVector; using tV = Tpetra::Vector; if (!rcp_dynamic_cast(diag).is_null()) { @@ -390,7 +348,6 @@ Xpetra::ThyraUtils:: if (!tDiag.is_null()) xpDiag = Xpetra::toXpetra(tDiag); } -#endif TEUCHOS_ASSERT(!xpDiag.is_null()); RCP> M = Xpetra::MatrixFactory::Build(xpDiag); return M; @@ -425,7 +382,6 @@ Xpetra::ThyraUtils:: } // standard case -#ifdef HAVE_XPETRA_TPETRA if (map->lib() == Xpetra::UseTpetra) { Teuchos::RCP> tpetraMap = Teuchos::rcp_dynamic_cast>(map); if (tpetraMap == Teuchos::null) @@ -433,13 +389,6 @@ Xpetra::ThyraUtils:: RCP> thyraTpetraMap = Thyra::tpetraVectorSpace(tpetraMap->getTpetra_Map()); thyraMap = thyraTpetraMap; } -#endif - -#ifdef HAVE_XPETRA_EPETRA - if (map->lib() == Xpetra::UseEpetra) { - TEUCHOS_TEST_FOR_EXCEPTION(true, Xpetra::Exceptions::RuntimeError, "Epetra needs SC=double, LO=int, and GO=int or GO=long long"); - } -#endif return thyraMap; } @@ -449,7 +398,6 @@ Teuchos::RCP> Xpetra::ThyraUtils:: toThyraMultiVector(Teuchos::RCP> vec) { // create Thyra MultiVector -#ifdef HAVE_XPETRA_TPETRA if (vec->getMap()->lib() == Xpetra::UseTpetra) { auto thyTpMap = Thyra::tpetraVectorSpace(Teuchos::rcp_dynamic_cast(vec->getMap())->getTpetra_Map()); RCP> tpMV = Teuchos::rcp_dynamic_cast(vec)->getTpetra_MultiVector(); @@ -458,13 +406,6 @@ Xpetra::ThyraUtils:: thyMV->initialize(thyTpMap, thyDomMap, tpMV); return thyMV; } -#endif - -#ifdef HAVE_XPETRA_EPETRA - if (vec->getMap()->lib() == Xpetra::UseEpetra) { - TEUCHOS_TEST_FOR_EXCEPTION(true, Xpetra::Exceptions::RuntimeError, "Epetra needs SC=double, LO=int, and GO=int or GO=long long"); - } -#endif TEUCHOS_TEST_FOR_EXCEPTION(true, Xpetra::Exceptions::RuntimeError, "MultiVector cannot be converted to Thyra."); } @@ -474,7 +415,6 @@ Teuchos::RCP> Xpetra::ThyraUtils:: toThyraVector(Teuchos::RCP> vec) { // create Thyra Vector -#ifdef HAVE_XPETRA_TPETRA if (vec->getMap()->lib() == Xpetra::UseTpetra) { auto thyTpMap = Thyra::tpetraVectorSpace(Teuchos::rcp_dynamic_cast(vec->getMap())->getTpetra_Map()); RCP> tpVec = Teuchos::rcp_dynamic_cast(vec)->getTpetra_Vector(); @@ -482,13 +422,6 @@ Xpetra::ThyraUtils:: thyVec->initialize(thyTpMap, tpVec); return thyVec; } -#endif - -#ifdef HAVE_XPETRA_EPETRA - if (vec->getMap()->lib() == Xpetra::UseEpetra) { - TEUCHOS_TEST_FOR_EXCEPTION(true, Xpetra::Exceptions::RuntimeError, "Epetra needs SC=double, LO=int, and GO=int or GO=long long"); - } -#endif TEUCHOS_TEST_FOR_EXCEPTION(true, Xpetra::Exceptions::RuntimeError, "Vector cannot be converted to Thyra."); } @@ -588,7 +521,6 @@ Xpetra::ThyraUtils:: // bool bIsTpetra = false; -#ifdef HAVE_XPETRA_TPETRA Teuchos::RCP> tpetraMat = Teuchos::rcp_dynamic_cast>(mat); if (tpetraMat != Teuchos::null) { // bIsTpetra = true; @@ -602,17 +534,9 @@ Xpetra::ThyraUtils:: thyraOp = Thyra::createConstLinearOp(tpOperator); TEUCHOS_TEST_FOR_EXCEPT(Teuchos::is_null(thyraOp)); } else { -#ifdef HAVE_XPETRA_EPETRA - TEUCHOS_TEST_FOR_EXCEPTION(true, Xpetra::Exceptions::RuntimeError, "Cast to Tpetra::CrsMatrix failed. Assume matrix should be Epetra then. Epetra needs SC=double, LO=int, and GO=int or GO=long long"); -#else TEUCHOS_TEST_FOR_EXCEPTION(true, Xpetra::Exceptions::RuntimeError, "Cast to Tpetra::CrsMatrix failed. Assume matrix should be Epetra then. No Epetra available"); -#endif } return thyraOp; -#else - TEUCHOS_TEST_FOR_EXCEPTION(true, Xpetra::Exceptions::RuntimeError, "Epetra needs SC=double, LO=int, and GO=int or GO=long long"); - TEUCHOS_UNREACHABLE_RETURN(Teuchos::null); -#endif } template @@ -624,7 +548,6 @@ Xpetra::ThyraUtils:: // bool bIsTpetra = false; -#ifdef HAVE_XPETRA_TPETRA Teuchos::RCP> tpetraMat = Teuchos::rcp_dynamic_cast>(mat); if (tpetraMat != Teuchos::null) { // bIsTpetra = true; @@ -639,17 +562,9 @@ Xpetra::ThyraUtils:: TEUCHOS_TEST_FOR_EXCEPT(Teuchos::is_null(thyraOp)); } else { // cast to TpetraCrsMatrix failed -#ifdef HAVE_XPETRA_EPETRA - TEUCHOS_TEST_FOR_EXCEPTION(true, Xpetra::Exceptions::RuntimeError, "Cast to TpetraCrsMatrix failed. Assuming matrix supposed to be Epetra. Epetra needs SC=double, LO=int, and GO=int or GO=long long"); -#else TEUCHOS_TEST_FOR_EXCEPTION(true, Xpetra::Exceptions::RuntimeError, "Cast to TpetraCrsMatrix failed. Guess, matrix should be Epetra then, but no Epetra available."); -#endif } return thyraOp; -#else - TEUCHOS_TEST_FOR_EXCEPTION(true, Xpetra::Exceptions::RuntimeError, "Epetra needs SC=double, LO=int, and GO=int or GO=long long"); - TEUCHOS_UNREACHABLE_RETURN(Teuchos::null); -#endif } template @@ -663,7 +578,6 @@ Xpetra::ThyraUtils:: Teuchos::RCP> Ablock_wrap = Teuchos::rcp_dynamic_cast>(Ablock); TEUCHOS_TEST_FOR_EXCEPT(Ablock_wrap.is_null() == true); -#ifdef HAVE_XPETRA_TPETRA Teuchos::RCP> tpetraMat = Teuchos::rcp_dynamic_cast>(Ablock_wrap->getCrsMatrix()); if (tpetraMat != Teuchos::null) { // create new Thyra blocked operator @@ -709,177 +623,14 @@ Xpetra::ThyraUtils:: return blockMat; } else { // tpetraMat == Teuchos::null -#ifdef HAVE_XPETRA_EPETRA - TEUCHOS_TEST_FOR_EXCEPTION(true, Xpetra::Exceptions::RuntimeError, "Cast to TpetraCrsMatrix failed. Assuming matrix supposed to be Epetra. Epetra needs SC=double, LO=int, and GO=int or GO=long long"); -#else TEUCHOS_TEST_FOR_EXCEPTION(true, Xpetra::Exceptions::RuntimeError, "Cast to TpetraCrsMatrix failed. Guess, matrix should be Epetra then, but no Epetra available."); -#endif TEUCHOS_UNREACHABLE_RETURN(Teuchos::null); } -#endif // endif HAVE_XPETRA_TPETRA // 4-Aug-2017 JJH Added 2nd condition to avoid "warning: dynamic initialization in unreachable code" // If HAVE_XPETRA_TPETRA is defined, then this method will always return or throw in the if-then-else above. -#if defined(HAVE_XPETRA_EPETRA) && !defined(HAVE_XPETRA_TPETRA) - TEUCHOS_TEST_FOR_EXCEPTION(true, Xpetra::Exceptions::RuntimeError, "Epetra needs SC=double, LO=int, and GO=int or GO=long long"); - TEUCHOS_UNREACHABLE_RETURN(Teuchos::null); -#endif // endif HAVE_XPETRA_EPETRA } -#ifdef HAVE_XPETRA_EPETRA - -#ifndef XPETRA_EPETRA_NO_32BIT_GLOBAL_INDICES -// implementation of "toThyra" for full specialization on SC=double, LO=GO=int and NO=EpetraNode -// We need the specialization in the cpp file due to a circle dependency in the .hpp files for BlockedCrsMatrix -Teuchos::RCP> -ThyraUtils::toThyra(const Teuchos::RCP>& mat) { - int nRows = mat->Rows(); - int nCols = mat->Cols(); - - Teuchos::RCP> Ablock = mat->getInnermostCrsMatrix(); - Teuchos::RCP> Ablock_wrap = Teuchos::rcp_dynamic_cast>(Ablock); - TEUCHOS_TEST_FOR_EXCEPT(Ablock_wrap.is_null() == true); - - bool bTpetra = false; - bool bEpetra = false; -#ifdef HAVE_XPETRA_TPETRA - // Note: Epetra is enabled -#if ((defined(EPETRA_HAVE_OMP) && defined(HAVE_TPETRA_INST_OPENMP) && defined(HAVE_TPETRA_INST_INT_INT) && defined(HAVE_TPETRA_INST_DOUBLE)) || \ - (!defined(EPETRA_HAVE_OMP) && defined(HAVE_TPETRA_INST_SERIAL) && defined(HAVE_TPETRA_INST_INT_INT) && defined(HAVE_TPETRA_INST_DOUBLE))) - Teuchos::RCP> tpetraMat = Teuchos::rcp_dynamic_cast>(Ablock_wrap->getCrsMatrix()); - if (tpetraMat != Teuchos::null) bTpetra = true; -#else - bTpetra = false; -#endif -#endif - -#ifdef HAVE_XPETRA_EPETRA - Teuchos::RCP> epetraMat = Teuchos::rcp_dynamic_cast>(Ablock_wrap->getCrsMatrix()); - if (epetraMat != Teuchos::null) bEpetra = true; -#endif - - TEUCHOS_TEST_FOR_EXCEPT(bTpetra == bEpetra); // we only allow Epetra OR Tpetra - - // create new Thyra blocked operator - Teuchos::RCP> blockMat = - Thyra::defaultBlockedLinearOp(); - - blockMat->beginBlockFill(nRows, nCols); - - for (int r = 0; r < nRows; ++r) { - for (int c = 0; c < nCols; ++c) { - Teuchos::RCP xpmat = mat->getMatrix(r, c); - - if (xpmat == Teuchos::null) continue; // shortcut for empty blocks - - Teuchos::RCP> thBlock = Teuchos::null; - - // check whether the subblock is again a blocked operator - Teuchos::RCP xpblock = Teuchos::rcp_dynamic_cast(xpmat); - if (xpblock != Teuchos::null) { - if (xpblock->Rows() == 1 && xpblock->Cols() == 1) { - // If it is a single block operator, unwrap it - Teuchos::RCP xpwrap = Teuchos::rcp_dynamic_cast(xpblock->getCrsMatrix()); - TEUCHOS_TEST_FOR_EXCEPT(xpwrap.is_null() == true); - thBlock = Xpetra::ThyraUtils::toThyra(xpwrap->getCrsMatrix()); - } else { - // recursive call for general blocked operators - thBlock = Xpetra::ThyraUtils::toThyra(xpblock); - } - } else { - // check whether it is a CRSMatrix object - Teuchos::RCP xpwrap = Teuchos::rcp_dynamic_cast(xpmat); - TEUCHOS_TEST_FOR_EXCEPT(xpwrap.is_null() == true); - thBlock = Xpetra::ThyraUtils::toThyra(xpwrap->getCrsMatrix()); - } - - blockMat->setBlock(r, c, thBlock); - } - } - - blockMat->endBlockFill(); - - return blockMat; -} -#endif // #ifndef XPETRA_EPETRA_NO_32BIT_GLOBAL_INDICES - -#ifndef XPETRA_EPETRA_NO_64BIT_GLOBAL_INDICES -// implementation of "toThyra" for full specialization on SC=double, LO=int, GO=long long and NO=EpetraNode -// We need the specialization in the cpp file due to a circle dependency in the .hpp files for BlockedCrsMatrix -Teuchos::RCP> -ThyraUtils::toThyra(const Teuchos::RCP>& mat) { - int nRows = mat->Rows(); - int nCols = mat->Cols(); - - Teuchos::RCP> Ablock = mat->getInnermostCrsMatrix(); - Teuchos::RCP> Ablock_wrap = Teuchos::rcp_dynamic_cast>(Ablock); - TEUCHOS_TEST_FOR_EXCEPT(Ablock_wrap.is_null() == true); - - bool bTpetra = false; - bool bEpetra = false; -#ifdef HAVE_XPETRA_TPETRA - // Note: Epetra is enabled -#if ((defined(EPETRA_HAVE_OMP) && defined(HAVE_TPETRA_INST_OPENMP) && defined(HAVE_TPETRA_INST_INT_LONG_LONG) && defined(HAVE_TPETRA_INST_DOUBLE)) || \ - (!defined(EPETRA_HAVE_OMP) && defined(HAVE_TPETRA_INST_SERIAL) && defined(HAVE_TPETRA_INST_INT_LONG_LONG) && defined(HAVE_TPETRA_INST_DOUBLE))) - Teuchos::RCP> tpetraMat = Teuchos::rcp_dynamic_cast>(Ablock_wrap->getCrsMatrix()); - if (tpetraMat != Teuchos::null) bTpetra = true; -#else - bTpetra = false; -#endif -#endif - -#ifdef HAVE_XPETRA_EPETRA - Teuchos::RCP> epetraMat = Teuchos::rcp_dynamic_cast>(Ablock_wrap->getCrsMatrix()); - if (epetraMat != Teuchos::null) bEpetra = true; -#endif - - TEUCHOS_TEST_FOR_EXCEPT(bTpetra == bEpetra); // we only allow Epetra OR Tpetra - - // create new Thyra blocked operator - Teuchos::RCP> blockMat = - Thyra::defaultBlockedLinearOp(); - - blockMat->beginBlockFill(nRows, nCols); - - for (int r = 0; r < nRows; ++r) { - for (int c = 0; c < nCols; ++c) { - Teuchos::RCP xpmat = mat->getMatrix(r, c); - - if (xpmat == Teuchos::null) continue; // shortcut for empty blocks - - Teuchos::RCP> thBlock = Teuchos::null; - - // check whether the subblock is again a blocked operator - Teuchos::RCP xpblock = Teuchos::rcp_dynamic_cast(xpmat); - if (xpblock != Teuchos::null) { - if (xpblock->Rows() == 1 && xpblock->Cols() == 1) { - // If it is a single block operator, unwrap it - Teuchos::RCP xpwrap = Teuchos::rcp_dynamic_cast(xpblock->getCrsMatrix()); - TEUCHOS_TEST_FOR_EXCEPT(xpwrap.is_null() == true); - thBlock = Xpetra::ThyraUtils::toThyra(xpwrap->getCrsMatrix()); - } else { - // recursive call for general blocked operators - thBlock = Xpetra::ThyraUtils::toThyra(xpblock); - } - } else { - // check whether it is a CRSMatrix object - Teuchos::RCP xpwrap = Teuchos::rcp_dynamic_cast(xpmat); - TEUCHOS_TEST_FOR_EXCEPT(xpwrap.is_null() == true); - thBlock = Xpetra::ThyraUtils::toThyra(xpwrap->getCrsMatrix()); - } - - blockMat->setBlock(r, c, thBlock); - } - } - - blockMat->endBlockFill(); - - return blockMat; -} -#endif // #ifndef XPETRA_EPETRA_NO_64BIT_GLOBAL_INDICES - -#endif - } // namespace Xpetra #endif diff --git a/packages/xpetra/src/Utils/Xpetra_TripleMatrixMultiply_decl.hpp b/packages/xpetra/src/Utils/Xpetra_TripleMatrixMultiply_decl.hpp index e1465be3baee..c011770f723d 100644 --- a/packages/xpetra/src/Utils/Xpetra_TripleMatrixMultiply_decl.hpp +++ b/packages/xpetra/src/Utils/Xpetra_TripleMatrixMultiply_decl.hpp @@ -22,14 +22,12 @@ #include "Xpetra_StridedMap.hpp" #include "Xpetra_IO.hpp" -#ifdef HAVE_XPETRA_TPETRA #include #include #include #include // #include // #include -#endif // HAVE_XPETRA_TPETRA namespace Xpetra { @@ -77,258 +75,6 @@ class TripleMatrixMultiply { }; // class TripleMatrixMultiply -#ifdef HAVE_XPETRA_EPETRA -// specialization TripleMatrixMultiply for SC=double, LO=GO=int -template <> -class TripleMatrixMultiply { - typedef double Scalar; - typedef int LocalOrdinal; - typedef int GlobalOrdinal; - typedef EpetraNode Node; -#include "Xpetra_UseShortNames.hpp" - - public: - static void MultiplyRAP(const Matrix& R, bool transposeR, - const Matrix& A, bool transposeA, - const Matrix& P, bool transposeP, - Matrix& Ac, - bool call_FillComplete_on_result = true, - bool doOptimizeStorage = true, - const std::string& label = std::string(), - const RCP& params = null) { - TEUCHOS_TEST_FOR_EXCEPTION(transposeR == false && Ac.getRowMap()->isSameAs(*R.getRowMap()) == false, - Exceptions::RuntimeError, "XpetraExt::TripleMatrixMultiply::MultiplyRAP: row map of Ac is not same as row map of R"); - TEUCHOS_TEST_FOR_EXCEPTION(transposeR == true && Ac.getRowMap()->isSameAs(*R.getDomainMap()) == false, - Exceptions::RuntimeError, "XpetraExt::TripleMatrixMultiply::MultiplyRAP: row map of Ac is not same as domain map of R"); - - TEUCHOS_TEST_FOR_EXCEPTION(!R.isFillComplete(), Exceptions::RuntimeError, "R is not fill-completed"); - TEUCHOS_TEST_FOR_EXCEPTION(!A.isFillComplete(), Exceptions::RuntimeError, "A is not fill-completed"); - TEUCHOS_TEST_FOR_EXCEPTION(!P.isFillComplete(), Exceptions::RuntimeError, "P is not fill-completed"); - - bool haveMultiplyDoFillComplete = call_FillComplete_on_result && doOptimizeStorage; - - if (Ac.getRowMap()->lib() == Xpetra::UseEpetra) { - throw(Xpetra::Exceptions::RuntimeError("Xpetra::TripleMatrixMultiply::MultiplyRAP is only implemented for Tpetra")); - } else if (Ac.getRowMap()->lib() == Xpetra::UseTpetra) { -#ifdef HAVE_XPETRA_TPETRA -#if ((defined(EPETRA_HAVE_OMP) && (!defined(HAVE_TPETRA_INST_OPENMP) || !defined(HAVE_TPETRA_INST_INT_INT))) || \ - (!defined(EPETRA_HAVE_OMP) && (!defined(HAVE_TPETRA_INST_SERIAL) || !defined(HAVE_TPETRA_INST_INT_INT)))) - throw(Xpetra::Exceptions::RuntimeError("Xpetra must be compiled with Tpetra ETI enabled.")); -#else - using helpers = Xpetra::Helpers; - if (helpers::isTpetraCrs(R) && helpers::isTpetraCrs(A) && helpers::isTpetraCrs(P) && helpers::isTpetraCrs(Ac)) { - // All matrices are Crs - const Tpetra::CrsMatrix& tpR = Xpetra::Helpers::Op2TpetraCrs(R); - const Tpetra::CrsMatrix& tpA = Xpetra::Helpers::Op2TpetraCrs(A); - const Tpetra::CrsMatrix& tpP = Xpetra::Helpers::Op2TpetraCrs(P); - Tpetra::CrsMatrix& tpAc = Xpetra::Helpers::Op2NonConstTpetraCrs(Ac); - - // 18Feb2013 JJH I'm reenabling the code that allows the matrix matrix multiply to do the fillComplete. - // Previously, Tpetra's matrix matrix multiply did not support fillComplete. - Tpetra::TripleMatrixMultiply::MultiplyRAP(tpR, transposeR, tpA, transposeA, tpP, transposeP, tpAc, haveMultiplyDoFillComplete, label, params); - } else if (helpers::isTpetraBlockCrs(R) && helpers::isTpetraBlockCrs(A) && helpers::isTpetraBlockCrs(P)) { - // All matrices are BlockCrs (except maybe Ac) - // FIXME: For the moment we're just going to clobber the innards of AC, so no reuse. Once we have a reuse kernel, - // we'll need to think about refactoring BlockCrs so we can do something smarter here. - if (!A.getRowMap()->getComm()->getRank()) - std::cout << "WARNING: Using inefficient BlockCrs Multiply Placeholder" << std::endl; - - const Tpetra::BlockCrsMatrix& tpR = Xpetra::Helpers::Op2TpetraBlockCrs(R); - const Tpetra::BlockCrsMatrix& tpA = Xpetra::Helpers::Op2TpetraBlockCrs(A); - const Tpetra::BlockCrsMatrix& tpP = Xpetra::Helpers::Op2TpetraBlockCrs(P); - // Tpetra::BlockCrsMatrix & tpAc = Xpetra::Helpers::Op2NonConstTpetraBlockCrs(Ac); - - using CRS = Tpetra::CrsMatrix; - RCP Rcrs = Tpetra::convertToCrsMatrix(tpR); - RCP Acrs = Tpetra::convertToCrsMatrix(tpA); - RCP Pcrs = Tpetra::convertToCrsMatrix(tpP); - // RCP Accrs = Tpetra::convertToCrsMatrix(tpAc); - - // FIXME: The lines below only works because we're assuming Ac is Point - RCP Accrs = Teuchos::rcp(new CRS(Rcrs->getRowMap(), 0)); - const bool do_fill_complete = true; - Tpetra::TripleMatrixMultiply::MultiplyRAP(*Rcrs, transposeR, *Acrs, transposeA, *Pcrs, transposeP, *Accrs, do_fill_complete, label, params); - - // Temporary output matrix - RCP > Ac_t = Tpetra::convertToBlockCrsMatrix(*Accrs, A.GetStorageBlockSize()); - RCP > Ac_x = Teuchos::rcp(new Xpetra::TpetraBlockCrsMatrix(Ac_t)); - RCP > Ac_p = Ac_x; - - // We can now cheat and replace the innards of Ac - RCP > Ac_w = Teuchos::rcp_dynamic_cast >(Teuchos::rcpFromRef(Ac)); - Ac_w->replaceCrsMatrix(Ac_p); - - } else { - // Mix and match (not supported) - TEUCHOS_TEST_FOR_EXCEPTION(1, Exceptions::RuntimeError, "Mix-and-match Crs/BlockCrs Multiply not currently supported"); - } -#endif -#else - throw(Xpetra::Exceptions::RuntimeError("Xpetra must be compiled with Tpetra.")); -#endif - if (call_FillComplete_on_result && !haveMultiplyDoFillComplete) { - RCP fillParams = rcp(new Teuchos::ParameterList()); - fillParams->set("Optimize Storage", doOptimizeStorage); - Ac.fillComplete((transposeP) ? P.getRangeMap() : P.getDomainMap(), - (transposeR) ? R.getDomainMap() : R.getRangeMap(), - fillParams); - } - - // transfer striding information - RCP domainMap = Teuchos::null; - RCP rangeMap = Teuchos::null; - - const std::string stridedViewLabel("stridedMaps"); - const size_t blkSize = 1; - std::vector stridingInfo(1, blkSize); - LocalOrdinal stridedBlockId = -1; - - if (R.IsView(stridedViewLabel)) { - rangeMap = transposeR ? R.getColMap(stridedViewLabel) : R.getRowMap(stridedViewLabel); - } else { - rangeMap = transposeR ? R.getDomainMap() : R.getRangeMap(); - rangeMap = StridedMapFactory::Build(rangeMap, stridingInfo, stridedBlockId); - } - - if (P.IsView(stridedViewLabel)) { - domainMap = transposeP ? P.getRowMap(stridedViewLabel) : P.getColMap(stridedViewLabel); - } else { - domainMap = transposeP ? P.getRangeMap() : P.getDomainMap(); - domainMap = StridedMapFactory::Build(domainMap, stridingInfo, stridedBlockId); - } - Ac.CreateView(stridedViewLabel, rangeMap, domainMap); - } - - } // end Multiply - -}; // end specialization on SC=double, GO=int and NO=EpetraNode - -// specialization TripleMatrixMultiply for SC=double, GO=long long and NO=EpetraNode -template <> -class TripleMatrixMultiply { - typedef double Scalar; - typedef int LocalOrdinal; - typedef long long GlobalOrdinal; - typedef EpetraNode Node; -#include "Xpetra_UseShortNames.hpp" - - public: - static void MultiplyRAP(const Matrix& R, bool transposeR, - const Matrix& A, bool transposeA, - const Matrix& P, bool transposeP, - Matrix& Ac, - bool call_FillComplete_on_result = true, - bool doOptimizeStorage = true, - const std::string& label = std::string(), - const RCP& params = null) { - TEUCHOS_TEST_FOR_EXCEPTION(transposeR == false && Ac.getRowMap()->isSameAs(*R.getRowMap()) == false, - Exceptions::RuntimeError, "XpetraExt::TripleMatrixMultiply::MultiplyRAP: row map of Ac is not same as row map of R"); - TEUCHOS_TEST_FOR_EXCEPTION(transposeR == true && Ac.getRowMap()->isSameAs(*R.getDomainMap()) == false, - Exceptions::RuntimeError, "XpetraExt::TripleMatrixMultiply::MultiplyRAP: row map of Ac is not same as domain map of R"); - - TEUCHOS_TEST_FOR_EXCEPTION(!R.isFillComplete(), Exceptions::RuntimeError, "R is not fill-completed"); - TEUCHOS_TEST_FOR_EXCEPTION(!A.isFillComplete(), Exceptions::RuntimeError, "A is not fill-completed"); - TEUCHOS_TEST_FOR_EXCEPTION(!P.isFillComplete(), Exceptions::RuntimeError, "P is not fill-completed"); - - bool haveMultiplyDoFillComplete = call_FillComplete_on_result && doOptimizeStorage; - - if (Ac.getRowMap()->lib() == Xpetra::UseEpetra) { - throw(Xpetra::Exceptions::RuntimeError("Xpetra::TripleMatrixMultiply::MultiplyRAP is only implemented for Tpetra")); - } else if (Ac.getRowMap()->lib() == Xpetra::UseTpetra) { -#ifdef HAVE_XPETRA_TPETRA -#if ((defined(EPETRA_HAVE_OMP) && (!defined(HAVE_TPETRA_INST_OPENMP) || !defined(HAVE_TPETRA_INST_INT_LONG_LONG))) || \ - (!defined(EPETRA_HAVE_OMP) && (!defined(HAVE_TPETRA_INST_SERIAL) || !defined(HAVE_TPETRA_INST_INT_LONG_LONG)))) - throw(Xpetra::Exceptions::RuntimeError("Xpetra must be compiled with Tpetra ETI enabled.")); -#else - using helpers = Xpetra::Helpers; - if (helpers::isTpetraCrs(R) && helpers::isTpetraCrs(A) && helpers::isTpetraCrs(P)) { - // All matrices are Crs - const Tpetra::CrsMatrix& tpR = Xpetra::Helpers::Op2TpetraCrs(R); - const Tpetra::CrsMatrix& tpA = Xpetra::Helpers::Op2TpetraCrs(A); - const Tpetra::CrsMatrix& tpP = Xpetra::Helpers::Op2TpetraCrs(P); - Tpetra::CrsMatrix& tpAc = Xpetra::Helpers::Op2NonConstTpetraCrs(Ac); - - // 18Feb2013 JJH I'm reenabling the code that allows the matrix matrix multiply to do the fillComplete. - // Previously, Tpetra's matrix matrix multiply did not support fillComplete. - Tpetra::TripleMatrixMultiply::MultiplyRAP(tpR, transposeR, tpA, transposeA, tpP, transposeP, tpAc, haveMultiplyDoFillComplete, label, params); - } else if (helpers::isTpetraBlockCrs(R) && helpers::isTpetraBlockCrs(A) && helpers::isTpetraBlockCrs(P)) { - // All matrices are BlockCrs (except maybe Ac) - // FIXME: For the moment we're just going to clobber the innards of AC, so no reuse. Once we have a reuse kernel, - // we'll need to think about refactoring BlockCrs so we can do something smarter here. - if (!A.getRowMap()->getComm()->getRank()) - std::cout << "WARNING: Using inefficient BlockCrs Multiply Placeholder" << std::endl; - - const Tpetra::BlockCrsMatrix& tpR = Xpetra::Helpers::Op2TpetraBlockCrs(R); - const Tpetra::BlockCrsMatrix& tpA = Xpetra::Helpers::Op2TpetraBlockCrs(A); - const Tpetra::BlockCrsMatrix& tpP = Xpetra::Helpers::Op2TpetraBlockCrs(P); - // Tpetra::BlockCrsMatrix & tpAc = Xpetra::Helpers::Op2NonConstTpetraBlockCrs(Ac); - - using CRS = Tpetra::CrsMatrix; - RCP Rcrs = Tpetra::convertToCrsMatrix(tpR); - RCP Acrs = Tpetra::convertToCrsMatrix(tpA); - RCP Pcrs = Tpetra::convertToCrsMatrix(tpP); - // RCP Accrs = Tpetra::convertToCrsMatrix(tpAc); - - // FIXME: The lines below only works because we're assuming Ac is Point - RCP Accrs = Teuchos::rcp(new CRS(Rcrs->getRowMap(), 0)); - const bool do_fill_complete = true; - Tpetra::TripleMatrixMultiply::MultiplyRAP(*Rcrs, transposeR, *Acrs, transposeA, *Pcrs, transposeP, *Accrs, do_fill_complete, label, params); - - // Temporary output matrix - RCP > Ac_t = Tpetra::convertToBlockCrsMatrix(*Accrs, A.GetStorageBlockSize()); - RCP > Ac_x = Teuchos::rcp(new Xpetra::TpetraBlockCrsMatrix(Ac_t)); - RCP > Ac_p = Ac_x; - - // We can now cheat and replace the innards of Ac - RCP > Ac_w = Teuchos::rcp_dynamic_cast >(Teuchos::rcpFromRef(Ac)); - Ac_w->replaceCrsMatrix(Ac_p); - } else { - // Mix and match - TEUCHOS_TEST_FOR_EXCEPTION(1, Exceptions::RuntimeError, "Mix-and-match Crs/BlockCrs Multiply not currently supported"); - } - -#endif -#else - throw(Xpetra::Exceptions::RuntimeError("Xpetra must be compiled with Tpetra.")); -#endif - if (call_FillComplete_on_result && !haveMultiplyDoFillComplete) { - RCP fillParams = rcp(new Teuchos::ParameterList()); - fillParams->set("Optimize Storage", doOptimizeStorage); - Ac.fillComplete((transposeP) ? P.getRangeMap() : P.getDomainMap(), - (transposeR) ? R.getDomainMap() : R.getRangeMap(), - fillParams); - } - - // transfer striding information - RCP domainMap = Teuchos::null; - RCP rangeMap = Teuchos::null; - - const std::string stridedViewLabel("stridedMaps"); - const size_t blkSize = 1; - std::vector stridingInfo(1, blkSize); - LocalOrdinal stridedBlockId = -1; - - if (R.IsView(stridedViewLabel)) { - rangeMap = transposeR ? R.getColMap(stridedViewLabel) : R.getRowMap(stridedViewLabel); - } else { - rangeMap = transposeR ? R.getDomainMap() : R.getRangeMap(); - rangeMap = StridedMapFactory::Build(rangeMap, stridingInfo, stridedBlockId); - } - - if (P.IsView(stridedViewLabel)) { - domainMap = transposeP ? P.getRowMap(stridedViewLabel) : P.getColMap(stridedViewLabel); - } else { - domainMap = transposeP ? P.getRangeMap() : P.getDomainMap(); - domainMap = StridedMapFactory::Build(domainMap, stridingInfo, stridedBlockId); - } - Ac.CreateView(stridedViewLabel, rangeMap, domainMap); - } - - } // end Multiply - -}; // end specialization on GO=long long and NO=EpetraNode -#endif - } // end namespace Xpetra #define XPETRA_TRIPLEMATRIXMULTIPLY_SHORT diff --git a/packages/xpetra/src/Utils/Xpetra_TripleMatrixMultiply_def.hpp b/packages/xpetra/src/Utils/Xpetra_TripleMatrixMultiply_def.hpp index 9c55e58892a4..f668c011f793 100644 --- a/packages/xpetra/src/Utils/Xpetra_TripleMatrixMultiply_def.hpp +++ b/packages/xpetra/src/Utils/Xpetra_TripleMatrixMultiply_def.hpp @@ -37,7 +37,6 @@ void TripleMatrixMultiply::MultiplyRA if (Ac.getRowMap()->lib() == Xpetra::UseEpetra) { throw(Xpetra::Exceptions::RuntimeError("Xpetra::TripleMatrixMultiply::MultiplyRAP is only implemented for Tpetra")); } else if (Ac.getRowMap()->lib() == Xpetra::UseTpetra) { -#ifdef HAVE_XPETRA_TPETRA using helpers = Xpetra::Helpers; if (helpers::isTpetraCrs(R) && helpers::isTpetraCrs(A) && helpers::isTpetraCrs(P)) { // All matrices are Crs @@ -85,9 +84,6 @@ void TripleMatrixMultiply::MultiplyRA // Mix and match TEUCHOS_TEST_FOR_EXCEPTION(1, Exceptions::RuntimeError, "Mix-and-match Crs/BlockCrs Multiply not currently supported"); } -#else - throw(Xpetra::Exceptions::RuntimeError("Xpetra must be compiled with Tpetra.")); -#endif } if (call_FillComplete_on_result && !haveMultiplyDoFillComplete) { diff --git a/packages/xpetra/src/Utils/Xpetra_Utils.cpp b/packages/xpetra/src/Utils/Xpetra_Utils.cpp index a45fffc91b52..9c9acbd554be 100644 --- a/packages/xpetra/src/Utils/Xpetra_Utils.cpp +++ b/packages/xpetra/src/Utils/Xpetra_Utils.cpp @@ -22,8 +22,6 @@ std::string toString(Xpetra::UnderlyingLib lib) { } } -#ifdef HAVE_XPETRA_TPETRA - Xpetra::LookupStatus toXpetra(Tpetra::LookupStatus ls) { if (ls == Tpetra::AllIDsPresent) return Xpetra::AllIDsPresent; @@ -64,46 +62,4 @@ Tpetra::LocalGlobal toTpetra(LocalGlobal lg) { TEUCHOS_TEST_FOR_EXCEPTION(1, Xpetra::Exceptions::RuntimeError, "Unknown LocalGlobal"); } -#endif // HAVE_XPETRA_TPETRA - -#ifdef HAVE_XPETRA_EPETRA - -Xpetra::LookupStatus toXpetra(int ls) { - // This function is used only to convert the return value of Epetra_BlockMap::RemoteIDList() and Epetra_DirectoryBase::GetDirectoryEntries(). - // In the current implementation of Epetra (01/2012), these functions returns 0 (= success) or 1 (= a GID is not present on any processor). - - if (ls == 0) - return Xpetra::AllIDsPresent; - else if (ls == 1) - return Xpetra::IDNotPresent; - - TEUCHOS_TEST_FOR_EXCEPTION(1, Xpetra::Exceptions::RuntimeError, "Epetra returned the following error code: " << ls << ". Xpetra do not know how to interpret this error code."); -} - -bool toEpetra(Xpetra::OptimizeOption os) { - if (os == Xpetra::DoOptimizeStorage) - return true; - if (os == Xpetra::DoNotOptimizeStorage) - return false; - - TEUCHOS_TEST_FOR_EXCEPTION(1, Xpetra::Exceptions::RuntimeError, "Unknown OptimizeOption"); -} - -Epetra_CombineMode toEpetra(Xpetra::CombineMode cm) { - // Note: all the CombineMode are not supported. - // According to Chris B., the behavior in Tpetra is the same as Epetra but I prefer to limit my tests for now. - // See also the discussion of March 22 on the Tpetra developers mailing list. - - if (cm == Xpetra::ADD) - return Add; - if (cm == Xpetra::INSERT) - return Insert; - if (cm == Xpetra::ABSMAX) - return AbsMax; - - TEUCHOS_TEST_FOR_EXCEPTION(1, Xpetra::Exceptions::RuntimeError, "Cannot convert Xpetra::CombineMode to Epetra_CombineMode: unsupported CombineMode."); -} - -#endif // HAVE_XPETRA_EPETRA - } // namespace Xpetra diff --git a/packages/xpetra/src/Utils/Xpetra_Utils.hpp b/packages/xpetra/src/Utils/Xpetra_Utils.hpp index 614202608e64..3973d9428623 100644 --- a/packages/xpetra/src/Utils/Xpetra_Utils.hpp +++ b/packages/xpetra/src/Utils/Xpetra_Utils.hpp @@ -12,13 +12,7 @@ #include "Xpetra_ConfigDefs.hpp" -#ifdef HAVE_XPETRA_TPETRA #include "Tpetra_ConfigDefs.hpp" -#endif - -#ifdef HAVE_XPETRA_EPETRA -#include "Epetra_CombineMode.h" -#endif #include "Xpetra_Map.hpp" // definition of UnderlyingLib @@ -27,8 +21,6 @@ namespace Xpetra { //! Convert a Xpetra::UnderlyingLib to a std::string std::string toString(UnderlyingLib lib); -#ifdef HAVE_XPETRA_TPETRA - //! Convert a Tpetra::LookupStatus to a Xpetra::LookupStatus. Xpetra::LookupStatus toXpetra(Tpetra::LookupStatus); @@ -41,21 +33,6 @@ Tpetra::CombineMode toTpetra(Xpetra::CombineMode CM); //! Convert a Xpetra::LocalGlobal to a Tpetra::LocalGlobal. Tpetra::LocalGlobal toTpetra(LocalGlobal lg); -#endif // HAVE_XPETRA_TPETRA - -#ifdef HAVE_XPETRA_EPETRA - -//! Convert a Epetra return value to a Xpetra::LookupStatus. -Xpetra::LookupStatus toXpetra(int); - -//! Convert a Xpetra::OptimizeOption to an Epetra OptimizeDataStorage boolean -bool toEpetra(Xpetra::OptimizeOption); - -//! Convert a Xpetra::CombineMode to an Epetra_CombineMode. -Epetra_CombineMode toEpetra(Xpetra::CombineMode CM); - -#endif // HAVE_XPETRA_EPETRA - } // namespace Xpetra #endif // XPETRA_LOOKUPSTATUS_HPP diff --git a/packages/xpetra/src/Vector/Xpetra_EpetraIntVector.cpp b/packages/xpetra/src/Vector/Xpetra_EpetraIntVector.cpp deleted file mode 100644 index 6982caa21d95..000000000000 --- a/packages/xpetra/src/Vector/Xpetra_EpetraIntVector.cpp +++ /dev/null @@ -1,120 +0,0 @@ -// @HEADER -// ***************************************************************************** -// Xpetra: A linear algebra interface package -// -// Copyright 2012 NTESS and the Xpetra contributors. -// SPDX-License-Identifier: BSD-3-Clause -// ***************************************************************************** -// @HEADER - -#include "Xpetra_EpetraIntVector.hpp" -#include "Xpetra_EpetraImport.hpp" -#include "Xpetra_EpetraExport.hpp" - -namespace Xpetra { - -// TODO: move that elsewhere -template -Epetra_IntVector &toEpetra(Vector &x) { - XPETRA_DYNAMIC_CAST(EpetraIntVectorT, x, tX, "toEpetra"); - return *tX.getEpetra_IntVector(); -} - -template -const Epetra_IntVector &toEpetra(const Vector &x) { - XPETRA_DYNAMIC_CAST(const EpetraIntVectorT, x, tX, "toEpetra"); - return *tX.getEpetra_IntVector(); -} -// - -#ifndef XPETRA_EPETRA_NO_32BIT_GLOBAL_INDICES -#ifdef HAVE_XPETRA_TPETRA -#include "TpetraCore_config.h" -#if ((defined(EPETRA_HAVE_OMP) && !defined(HAVE_TPETRA_INST_OPENMP)) || \ - (!defined(EPETRA_HAVE_OMP) && !defined(HAVE_TPETRA_INST_SERIAL))) -template class EpetraIntVectorT; -template Epetra_IntVector &toEpetra(Vector &); -template const Epetra_IntVector &toEpetra(const Vector &); -#endif -#ifdef HAVE_TPETRA_INST_SERIAL -template class EpetraIntVectorT; -template Epetra_IntVector &toEpetra(Vector &); -template const Epetra_IntVector &toEpetra(const Vector &); -#endif -#ifdef HAVE_TPETRA_INST_PTHREAD -template class EpetraIntVectorT; -template Epetra_IntVector &toEpetra(Vector &); -template const Epetra_IntVector &toEpetra(const Vector &); -#endif -#ifdef HAVE_TPETRA_INST_OPENMP -template class EpetraIntVectorT; -template Epetra_IntVector &toEpetra(Vector &); -template const Epetra_IntVector &toEpetra(const Vector &); -#endif -#ifdef HAVE_TPETRA_INST_CUDA -typedef Tpetra::KokkosCompat::KokkosCudaWrapperNode default_node_type; -template class EpetraIntVectorT; -template Epetra_IntVector &toEpetra(Vector &); -template const Epetra_IntVector &toEpetra(const Vector &); -#endif -#ifdef HAVE_TPETRA_INST_HIP -typedef Tpetra::KokkosCompat::KokkosHIPWrapperNode default_node_type; -template class EpetraIntVectorT; -template Epetra_IntVector &toEpetra(Vector &); -template const Epetra_IntVector &toEpetra(const Vector &); -#endif -#else -// Tpetra is disabled and Kokkos not available: use dummy node type -typedef Xpetra::EpetraNode default_node_type; -template class EpetraIntVectorT; -template Epetra_IntVector &toEpetra(Vector &); -template const Epetra_IntVector &toEpetra(const Vector &); -#endif // HAVE_XPETRA_TPETRA -#endif - -#ifndef XPETRA_EPETRA_NO_64BIT_GLOBAL_INDICES -#ifdef HAVE_XPETRA_TPETRA -#include "TpetraCore_config.h" -#if ((defined(EPETRA_HAVE_OMP) && !defined(HAVE_TPETRA_INST_OPENMP)) || \ - (!defined(EPETRA_HAVE_OMP) && !defined(HAVE_TPETRA_INST_SERIAL))) -template class EpetraIntVectorT; -template Epetra_IntVector &toEpetra(Vector &); -template const Epetra_IntVector &toEpetra(const Vector &); -#endif -#ifdef HAVE_TPETRA_INST_SERIAL -template class EpetraIntVectorT; -template Epetra_IntVector &toEpetra(Vector &); -template const Epetra_IntVector &toEpetra(const Vector &); -#endif -#ifdef HAVE_TPETRA_INST_PTHREAD -template class EpetraIntVectorT; -template Epetra_IntVector &toEpetra(Vector &); -template const Epetra_IntVector &toEpetra(const Vector &); -#endif -#ifdef HAVE_TPETRA_INST_OPENMP -template class EpetraIntVectorT; -template Epetra_IntVector &toEpetra(Vector &); -template const Epetra_IntVector &toEpetra(const Vector &); -#endif -#ifdef HAVE_TPETRA_INST_CUDA -typedef Tpetra::KokkosCompat::KokkosCudaWrapperNode default_node_type; -template class EpetraIntVectorT; -template Epetra_IntVector &toEpetra(Vector &); -template const Epetra_IntVector &toEpetra(const Vector &); -#endif -#ifdef HAVE_TPETRA_INST_HIP -typedef Tpetra::KokkosCompat::KokkosHIPWrapperNode default_node_type; -template class EpetraIntVectorT; -template Epetra_IntVector &toEpetra(Vector &); -template const Epetra_IntVector &toEpetra(const Vector &); -#endif -#else -// Tpetra is disabled and Kokkos not available: use dummy node type -typedef Xpetra::EpetraNode default_node_type; -template class EpetraIntVectorT; -template Epetra_IntVector &toEpetra(Vector &); -template const Epetra_IntVector &toEpetra(const Vector &); -#endif // HAVE_XPETRA_TPETRA -#endif - -} // namespace Xpetra diff --git a/packages/xpetra/src/Vector/Xpetra_EpetraIntVector.hpp b/packages/xpetra/src/Vector/Xpetra_EpetraIntVector.hpp deleted file mode 100644 index d3c4a77b0f88..000000000000 --- a/packages/xpetra/src/Vector/Xpetra_EpetraIntVector.hpp +++ /dev/null @@ -1,1302 +0,0 @@ -// @HEADER -// ***************************************************************************** -// Xpetra: A linear algebra interface package -// -// Copyright 2012 NTESS and the Xpetra contributors. -// SPDX-License-Identifier: BSD-3-Clause -// ***************************************************************************** -// @HEADER - -#ifndef XPETRA_EPETRAINTVECTOR_HPP -#define XPETRA_EPETRAINTVECTOR_HPP - -#include "Xpetra_EpetraConfigDefs.hpp" - -#include "Xpetra_ConfigDefs.hpp" -#include "Xpetra_MultiVector.hpp" -#include "Xpetra_Vector.hpp" -#include "Xpetra_Exceptions.hpp" - -#include "Xpetra_EpetraMap.hpp" -#include "Xpetra_EpetraMultiVector.hpp" -#include "Epetra_IntVector.h" - -#if defined(XPETRA_ENABLE_DEPRECATED_CODE) -#ifdef __GNUC__ -#if defined(Xpetra_SHOW_DEPRECATED_WARNINGS) -#warning "The header file Trilinos/packages/xpetra/src/Vector/Xpetra_EpetraIntVector.hpp is deprecated." -#endif -#endif -#else -#error "The header file Trilinos/packages/xpetra/src/Vector/Xpetra_EpetraIntVector.hpp is deprecated." -#endif - -namespace Xpetra { - -// TODO: move that elsewhere -template -XPETRA_DEPRECATED Epetra_IntVector &toEpetra(Vector &); - -template -const XPETRA_DEPRECATED Epetra_IntVector &toEpetra(const Vector &); -// - -// stub implementation for EpetraIntVectorT -template -class XPETRA_DEPRECATED EpetraIntVectorT - : public Vector { - typedef int Scalar; - typedef int LocalOrdinal; - typedef EpetraGlobalOrdinal GlobalOrdinal; - - public: - //! @name Constructor/Destructor Methods - //@{ - - //! Sets all vector entries to zero. - explicit EpetraIntVectorT(const Teuchos::RCP > &map, bool zeroOut = true) {} - - //! Destructor. - ~EpetraIntVectorT(){}; - - //@} - - //! @name Mathematical methods - //@{ - - //! TODO missing comment - int dot(const Vector &a) const { - XPETRA_MONITOR("EpetraIntVectorT::dot"); - TEUCHOS_TEST_FOR_EXCEPTION(-1, Xpetra::Exceptions::NotImplemented, "TODO"); - TEUCHOS_UNREACHABLE_RETURN(-1); - } - - //! Return 1-norm of this Vector. - Teuchos::ScalarTraits::magnitudeType norm1() const { - XPETRA_MONITOR("EpetraIntVectorT::norm1"); - TEUCHOS_TEST_FOR_EXCEPTION(1, Xpetra::Exceptions::NotImplemented, "TODO"); - TEUCHOS_UNREACHABLE_RETURN(-1); - } - - //! Compute 2-norm of this Vector. - Teuchos::ScalarTraits::magnitudeType norm2() const { - XPETRA_MONITOR("EpetraIntVectorT::norm2"); - TEUCHOS_TEST_FOR_EXCEPTION(1, Xpetra::Exceptions::NotImplemented, "TODO"); - TEUCHOS_UNREACHABLE_RETURN(-1); - } - - //! Compute Inf-norm of this Vector. - Teuchos::ScalarTraits::magnitudeType normInf() const { - XPETRA_MONITOR("EpetraIntVectorT::normInf"); - TEUCHOS_TEST_FOR_EXCEPTION(1, Xpetra::Exceptions::NotImplemented, "TODO"); - TEUCHOS_UNREACHABLE_RETURN(-1); - } - - //! Compute mean (average) value of this Vector. - int meanValue() const { - XPETRA_MONITOR("EpetraIntVectorT::meanValue"); - TEUCHOS_TEST_FOR_EXCEPTION(1, Xpetra::Exceptions::NotImplemented, "TODO"); - TEUCHOS_UNREACHABLE_RETURN(-1); - } - - //! Compute max value of this Vector. - int maxValue() const { - XPETRA_MONITOR("EpetraIntVectorT::maxValue"); - TEUCHOS_TEST_FOR_EXCEPTION(1, Xpetra::Exceptions::NotImplemented, "TODO"); - TEUCHOS_UNREACHABLE_RETURN(-1); - } - - //@} - - //! @name Post-construction modification routines - //@{ - - //! Replace current value at the specified location with specified value. - void replaceGlobalValue(GlobalOrdinal globalRow, const Scalar &value) { - XPETRA_MONITOR("EpetraIntVectorT::replaceGlobalValue"); - TEUCHOS_TEST_FOR_EXCEPTION(1, Xpetra::Exceptions::NotImplemented, "TODO"); - } - - //! Adds specified value to existing value at the specified location. - void sumIntoGlobalValue(GlobalOrdinal globalRow, const Scalar &value) { - XPETRA_MONITOR("EpetraIntVectorT::sumIntoGlobalValue"); - TEUCHOS_TEST_FOR_EXCEPTION(1, Xpetra::Exceptions::NotImplemented, "TODO"); - } - - //! Replace current value at the specified location with specified values. - void replaceLocalValue(LocalOrdinal myRow, const Scalar &value) { - XPETRA_MONITOR("EpetraIntVectorT::replaceLocalValue"); - TEUCHOS_TEST_FOR_EXCEPTION(1, Xpetra::Exceptions::NotImplemented, "TODO"); - } - - //! Adds specified value to existing value at the specified location. - void sumIntoLocalValue(LocalOrdinal myRow, const Scalar &value) { - XPETRA_MONITOR("EpetraIntVectorT::sumIntoLocalValue"); - TEUCHOS_TEST_FOR_EXCEPTION(1, Xpetra::Exceptions::NotImplemented, "TODO"); - } - - //! Initialize all values in a multi-vector with specified value. - void putScalar(const int &value) {} - - //! Set multi-vector values to random numbers. - void randomize(bool bUseXpetraImplementation = true) { - XPETRA_MONITOR("EpetraIntVectorT::randomize"); - TEUCHOS_TEST_FOR_EXCEPTION(1, Xpetra::Exceptions::NotImplemented, "Xpetra::EpetraIntVectorT::randomize(): Functionnality not available in Epetra"); - } - - //! Set multi-vector values to random numbers. - void randomize(const Scalar & /*minVal*/, const Scalar & /*maxVal*/, bool bUseXpetraImplementation = true) { - XPETRA_MONITOR("EpetraIntVectorT::randomize"); - TEUCHOS_TEST_FOR_EXCEPTION(1, Xpetra::Exceptions::NotImplemented, "Xpetra::EpetraIntVectorT::randomize(): Functionnality not available in Epetra"); - } - - //! Set seed for Random function. - /** Note: this method does not exist in Tpetra interface. Added for MueLu. */ - void setSeed(unsigned int seed) { - XPETRA_MONITOR("EpetraIntVectorT::setSeed"); - TEUCHOS_TEST_FOR_EXCEPTION(1, Xpetra::Exceptions::NotImplemented, "Xpetra::EpetraIntVectorT::setSeed(): Functionnality not available in Epetra"); - } - - //@} - - //! @name Data Copy and View get methods - //@{ - - //! Return a Vector which is a const view of column j. - Teuchos::RCP > getVector(size_t j) const { - TEUCHOS_TEST_FOR_EXCEPTION(1, Xpetra::Exceptions::NotImplemented, "TODO"); - } - - //! Return a Vector which is a nonconst view of column j. - Teuchos::RCP > getVectorNonConst(size_t j) { - TEUCHOS_TEST_FOR_EXCEPTION(1, Xpetra::Exceptions::NotImplemented, "TODO"); - } - - //! Const Local vector access function. - //! View of the local values in a particular vector of this multi-vector. - Teuchos::ArrayRCP getData(size_t j) const { return Teuchos::ArrayRCP(); } - - //! Local vector access function. - //! View of the local values in a particular vector of this multi-vector. - Teuchos::ArrayRCP getDataNonConst(size_t j) { return Teuchos::ArrayRCP(); } - - //@} - - //! @name Mathematical methods - //@{ - //! Computes dot product of each corresponding pair of vectors, dots[i] = this[i].dot(A[i]) - void dot(const MultiVector &A, const Teuchos::ArrayView &dots) const {} - - //! Puts element-wise absolute values of input Multi-vector in target: A = abs(this) - void abs(const MultiVector &A) {} - - //! Puts element-wise reciprocal values of input Multi-vector in target, this(i,j) = 1/A(i,j). - void reciprocal(const MultiVector &A) {} - - //! Scale the current values of a multi-vector, this = alpha*this. - void scale(const int &alpha) {} - - //! Scale the current values of a multi-vector, this[j] = alpha[j]*this[j]. - void scale(Teuchos::ArrayView alpha) { - XPETRA_MONITOR("EpetraIntVectorT::scale"); - TEUCHOS_TEST_FOR_EXCEPTION(1, Xpetra::Exceptions::NotImplemented, "TODO"); - } - - //! Update multi-vector values with scaled values of A, this = beta*this + alpha*A. - void update(const int &alpha, const MultiVector &A, const int &beta) { - XPETRA_MONITOR("EpetraIntVectorT::update"); - - // XPETRA_DYNAMIC_CAST(const EpetraMultiVectorT, A, eA, "This Xpetra::EpetraMultiVectorT method only accept Xpetra::EpetraMultiVectorT as input arguments."); - TEUCHOS_TEST_FOR_EXCEPTION(1, Xpetra::Exceptions::NotImplemented, "TODO"); - } - - //! Update multi-vector with scaled values of A and B, this = gamma*this + alpha*A + beta*B. - void update(const int &alpha, const MultiVector &A, const int &beta, const MultiVector &B, const int &gamma) { - XPETRA_MONITOR("EpetraIntVectorT::update"); - - // XPETRA_DYNAMIC_CAST(const EpetraMultiVectorT, A, eA, "This Xpetra::EpetraMultiVectorT method only accept Xpetra::EpetraMultiVectorT as input arguments."); - // XPETRA_DYNAMIC_CAST(const EpetraMultiVectorT, B, eB, "This Xpetra::EpetraMultiVectorT method only accept Xpetra::EpetraMultiVectorT as input arguments."); - TEUCHOS_TEST_FOR_EXCEPTION(1, Xpetra::Exceptions::NotImplemented, "TODO"); - } - - //! Compute 1-norm of each vector in multi-vector. - void norm1(const Teuchos::ArrayView::magnitudeType> &norms) const { - XPETRA_MONITOR("EpetraIntVectorT::norm1"); - TEUCHOS_TEST_FOR_EXCEPTION(1, Xpetra::Exceptions::NotImplemented, "TODO"); - } - - //! Compute 2-norm of each vector in multi-vector. - void norm2(const Teuchos::ArrayView::magnitudeType> &norms) const { - XPETRA_MONITOR("EpetraIntVectorT::norm2"); - TEUCHOS_TEST_FOR_EXCEPTION(1, Xpetra::Exceptions::NotImplemented, "TODO"); - } - - //! Compute Inf-norm of each vector in multi-vector. - void normInf(const Teuchos::ArrayView::magnitudeType> &norms) const { - XPETRA_MONITOR("EpetraIntVectorT::normInf"); - TEUCHOS_TEST_FOR_EXCEPTION(1, Xpetra::Exceptions::NotImplemented, "TODO"); - } - - //! Compute mean (average) value of each vector in multi-vector. - void meanValue(const Teuchos::ArrayView &means) const { - XPETRA_MONITOR("EpetraIntVectorT::meanValue"); - TEUCHOS_TEST_FOR_EXCEPTION(1, Xpetra::Exceptions::NotImplemented, "TODO"); - } - - //! Compute max value of each vector in multi-vector. - void maxValue(const Teuchos::ArrayView &maxs) const { - XPETRA_MONITOR("EpetraIntVectorT::maxValue"); - TEUCHOS_TEST_FOR_EXCEPTION(1, Xpetra::Exceptions::NotImplemented, "TODO"); - } - - //! Matrix-Matrix multiplication, this = beta*this + alpha*op(A)*op(B). - void multiply(Teuchos::ETransp transA, Teuchos::ETransp transB, const int &alpha, const MultiVector &A, const MultiVector &B, const int &beta) { - XPETRA_MONITOR("EpetraIntVectorT::multiply"); - TEUCHOS_TEST_FOR_EXCEPTION(1, Xpetra::Exceptions::NotImplemented, "Not available in Epetra"); - } - - //! Element-wise multiply of a Vector A with a EpetraMultiVector B. - void elementWiseMultiply(int scalarAB, const Vector &A, const MultiVector &B, int scalarThis) { - XPETRA_MONITOR("EpetraIntVectorT::elementWiseMultiply"); - TEUCHOS_TEST_FOR_EXCEPTION(1, Xpetra::Exceptions::NotImplemented, "Xpetra_EpetraIntVector: elementWiseMultiply not implemented because Epetra_IntVector does not support this operation"); - } - - //@} - - //! @name Post-construction modification routines - //@{ - - //! Replace value, using global (row) index. - void replaceGlobalValue(GlobalOrdinal globalRow, size_t vectorIndex, const Scalar &value) { - XPETRA_MONITOR("EpetraIntVectorT::replaceGlobalValue"); - TEUCHOS_TEST_FOR_EXCEPTION(1, Xpetra::Exceptions::NotImplemented, "TODO"); - } - - //! Add value to existing value, using global (row) index. - void sumIntoGlobalValue(GlobalOrdinal globalRow, size_t vectorIndex, const Scalar &value) { - XPETRA_MONITOR("EpetraIntVectorT::sumIntoGlobalValue"); - TEUCHOS_TEST_FOR_EXCEPTION(1, Xpetra::Exceptions::NotImplemented, "TODO"); - } - - //! Replace value, using local (row) index. - void replaceLocalValue(LocalOrdinal myRow, size_t vectorIndex, const Scalar &value) { - XPETRA_MONITOR("EpetraIntVectorT::replaceLocalValue"); - TEUCHOS_TEST_FOR_EXCEPTION(1, Xpetra::Exceptions::NotImplemented, "TODO"); - } - - //! Add value to existing value, using local (row) index. - void sumIntoLocalValue(LocalOrdinal myRow, size_t vectorIndex, const Scalar &value) { - XPETRA_MONITOR("EpetraIntVectorT::sumIntoLocalValue"); - TEUCHOS_TEST_FOR_EXCEPTION(1, Xpetra::Exceptions::NotImplemented, "TODO"); - } - - //@} - - //! @name Attribute access functions - //@{ - - //! Returns the number of vectors in the multi-vector. - size_t getNumVectors() const { - XPETRA_MONITOR("EpetraIntVectorT::getNumVectors"); - return 1; - } - - //! Returns the local vector length on the calling processor of vectors in the multi-vector. - size_t getLocalLength() const { return 0; } - - //! Returns the global vector length of vectors in the multi-vector. - global_size_t getGlobalLength() const { return 0; } - - //! Checks to see if the local length, number of vectors and size of Scalar type match - bool isSameSize(const MultiVector &vec) const { return false; } - - //@} - - //! @name Overridden from Teuchos::Describable - //@{ - - //! Return a simple one-line description of this object. - std::string description() const { - return std::string(""); - } - - //! Print the object with some verbosity level to an FancyOStream object. - void describe(Teuchos::FancyOStream &out, const Teuchos::EVerbosityLevel verbLevel = Teuchos::Describable::verbLevel_default) const {} - - //@} - - RCP getEpetra_IntVector() const { return Teuchos::null; } - - const RCP > getComm() const { - TEUCHOS_TEST_FOR_EXCEPTION(1, Xpetra::Exceptions::NotImplemented, "TODO getComm Epetra MultiVector not implemented"); - } - - // Implementing DistObject - Teuchos::RCP > getMap() const { - return Teuchos::null; - } - - void doImport(const DistObject &source, - const Import &importer, CombineMode CM) {} - - void doExport(const DistObject &dest, - const Import &importer, CombineMode CM) {} - - void doImport(const DistObject &source, - const Export &exporter, CombineMode CM) {} - - void doExport(const DistObject &dest, - const Export &exporter, CombineMode CM) {} - - void replaceMap(const RCP > &map) { - // do nothing - } - - protected: - /// \brief Implementation of the assignment operator (operator=); - /// does a deep copy. - virtual void - assign(const MultiVector &rhs) {} - - private: - //! The Epetra_IntVector which this class wraps. - // RCP< Epetra_IntVector > vec_; - -}; // class EpetraIntVectorT - -// specialization on GO=int and Node=Serial -#ifndef XPETRA_EPETRA_NO_32BIT_GLOBAL_INDICES -template <> -class EpetraIntVectorT - : public virtual Vector { - typedef int Scalar; - typedef int LocalOrdinal; - typedef int GlobalOrdinal; - typedef EpetraNode Node; - - public: - //! @name Constructor/Destructor Methods - //@{ - - //! Sets all vector entries to zero. - explicit EpetraIntVectorT(const Teuchos::RCP > &map, bool zeroOut = true) { - vec_ = rcp(new Epetra_IntVector(toEpetra(map), zeroOut)); - } - - //! Destructor. - ~EpetraIntVectorT(){}; - - //@} - - //! @name Mathematical methods - //@{ - - //! TODO missing comment - int dot(const Vector & /* a */) const { - XPETRA_MONITOR("EpetraIntVectorT::dot"); - TEUCHOS_TEST_FOR_EXCEPTION(-1, Xpetra::Exceptions::NotImplemented, "TODO"); - TEUCHOS_UNREACHABLE_RETURN(-1); - } - - //! Return 1-norm of this Vector. - Teuchos::ScalarTraits::magnitudeType norm1() const { - XPETRA_MONITOR("EpetraIntVectorT::norm1"); - TEUCHOS_TEST_FOR_EXCEPTION(1, Xpetra::Exceptions::NotImplemented, "TODO"); - TEUCHOS_UNREACHABLE_RETURN(-1); - } - - //! Compute 2-norm of this Vector. - Teuchos::ScalarTraits::magnitudeType norm2() const { - XPETRA_MONITOR("EpetraIntVectorT::norm2"); - TEUCHOS_TEST_FOR_EXCEPTION(1, Xpetra::Exceptions::NotImplemented, "TODO"); - TEUCHOS_UNREACHABLE_RETURN(-1); - } - - //! Compute Inf-norm of this Vector. - Teuchos::ScalarTraits::magnitudeType normInf() const { - XPETRA_MONITOR("EpetraIntVectorT::normInf"); - TEUCHOS_TEST_FOR_EXCEPTION(1, Xpetra::Exceptions::NotImplemented, "TODO"); - TEUCHOS_UNREACHABLE_RETURN(-1); - } - - //! Compute mean (average) value of this Vector. - int meanValue() const { - XPETRA_MONITOR("EpetraIntVectorT::meanValue"); - TEUCHOS_TEST_FOR_EXCEPTION(1, Xpetra::Exceptions::NotImplemented, "TODO"); - TEUCHOS_UNREACHABLE_RETURN(-1); - } - - //! Compute max value of this Vector. - int maxValue() const { - XPETRA_MONITOR("EpetraIntVectorT::maxValue"); - return vec_->MaxValue(); - } - - //@} - - //! @name Post-construction modification routines - //@{ - - //! Replace current value at the specified location with specified value. - void replaceGlobalValue(GlobalOrdinal /* globalRow */, const Scalar & /* value */) { - XPETRA_MONITOR("EpetraIntVectorT::replaceGlobalValue"); - TEUCHOS_TEST_FOR_EXCEPTION(1, Xpetra::Exceptions::NotImplemented, "TODO"); - } - - //! Adds specified value to existing value at the specified location. - void sumIntoGlobalValue(GlobalOrdinal /* globalRow */, const Scalar & /* value */) { - XPETRA_MONITOR("EpetraIntVectorT::sumIntoGlobalValue"); - TEUCHOS_TEST_FOR_EXCEPTION(1, Xpetra::Exceptions::NotImplemented, "TODO"); - } - - //! Replace current value at the specified location with specified values. - void replaceLocalValue(LocalOrdinal myRow, const Scalar &value) { - XPETRA_MONITOR("EpetraIntVectorT::replaceLocalValue"); - (*vec_)[myRow] = value; - } - - //! Adds specified value to existing value at the specified location. - void sumIntoLocalValue(LocalOrdinal myRow, const Scalar &value) { - XPETRA_MONITOR("EpetraIntVectorT::sumIntoLocalValue"); - (*vec_)[myRow] += value; - } - - //! Initialize all values in a multi-vector with specified value. - void putScalar(const int &value) { vec_->PutValue(value); } - - //! Set multi-vector values to random numbers. - void randomize(bool /* bUseXpetraImplementation */ = true) { - XPETRA_MONITOR("EpetraIntVectorT::randomize"); - TEUCHOS_TEST_FOR_EXCEPTION(1, Xpetra::Exceptions::NotImplemented, "Xpetra::EpetraIntVectorT::randomize(): Functionnality not available in Epetra"); - } - - //! Set multi-vector values to random numbers. - void randomize(const Scalar & /*minVal*/, const Scalar & /*maxVal*/, bool /* bUseXpetraImplementation */ = true) { - XPETRA_MONITOR("EpetraIntVectorT::randomize"); - TEUCHOS_TEST_FOR_EXCEPTION(1, Xpetra::Exceptions::NotImplemented, "Xpetra::EpetraIntVectorT::randomize(): Functionnality not available in Epetra"); - } - - //! Set seed for Random function. - /** Note: this method does not exist in Tpetra interface. Added for MueLu. */ - void setSeed(unsigned int /* seed */) { - XPETRA_MONITOR("EpetraIntVectorT::setSeed"); - TEUCHOS_TEST_FOR_EXCEPTION(1, Xpetra::Exceptions::NotImplemented, "Xpetra::EpetraIntVectorT::setSeed(): Functionnality not available in Epetra"); - } - - typedef typename Xpetra::Vector::dual_view_type dual_view_type; - - typename dual_view_type::t_host_const_um getHostLocalView(Access::ReadOnlyStruct) const override { return getHostLocalView(Access::ReadWrite); } - - typename dual_view_type::t_dev_const_um getDeviceLocalView(Access::ReadOnlyStruct) const override { return getDeviceLocalView(Access::ReadWrite); } - - typename dual_view_type::t_host_um getHostLocalView(Access::OverwriteAllStruct) const override { return getHostLocalView(Access::ReadWrite); } - - typename dual_view_type::t_dev_um getDeviceLocalView(Access::OverwriteAllStruct) const override { return getDeviceLocalView(Access::ReadWrite); } - - typename dual_view_type::t_host_um getHostLocalView(Access::ReadWriteStruct) const override { - typedef Kokkos::View - epetra_view_type; - // access Epetra vector data - Scalar *data = NULL; - vec_->ExtractView(&data); - int localLength = vec_->MyLength(); - - // create view - epetra_view_type test = epetra_view_type(data, localLength, 1); - typename dual_view_type::t_host_um ret = subview(test, Kokkos::ALL(), Kokkos::ALL()); - return ret; - } - - typename dual_view_type::t_dev_um getDeviceLocalView(Access::ReadWriteStruct) const override { return getHostLocalView(Access::ReadWrite); } - - //@} - - //! @name Data Copy and View get methods - //@{ - - //! Return a Vector which is a const view of column j. - Teuchos::RCP > getVector(size_t /* j */) const { - TEUCHOS_TEST_FOR_EXCEPTION(1, Xpetra::Exceptions::NotImplemented, "TODO"); - } - - //! Return a Vector which is a nonconst view of column j. - Teuchos::RCP > getVectorNonConst(size_t /* j */) { - TEUCHOS_TEST_FOR_EXCEPTION(1, Xpetra::Exceptions::NotImplemented, "TODO"); - } - - //! Const Local vector access function. - //! View of the local values in a particular vector of this multi-vector. - Teuchos::ArrayRCP getData(size_t /* j */) const { - XPETRA_MONITOR("EpetraIntVectorT::getData"); - - int *data = vec_->Values(); - int localLength = vec_->MyLength(); - - return ArrayRCP(data, 0, localLength, false); // not ownership - } - - //! Local vector access function. - //! View of the local values in a particular vector of this multi-vector. - Teuchos::ArrayRCP getDataNonConst(size_t /* j */) { - XPETRA_MONITOR("EpetraIntVectorT::getDataNonConst"); - - int *data = vec_->Values(); - int localLength = vec_->MyLength(); - - return ArrayRCP(data, 0, localLength, false); // not ownership - } - - //@} - - //! @name Mathematical methods - //@{ - //! Computes dot product of each corresponding pair of vectors, dots[i] = this[i].dot(A[i]) - void dot(const MultiVector & /* A */, const Teuchos::ArrayView & /* dots */) const { - XPETRA_MONITOR("EpetraIntVectorT::dot"); - - // XPETRA_DYNAMIC_CAST(const EpetraMultiVectorT, A, eA, "This Xpetra::EpetraMultiVectorT method only accept Xpetra::EpetraMultiVectorT as input arguments."); - TEUCHOS_TEST_FOR_EXCEPTION(1, Xpetra::Exceptions::NotImplemented, "TODO"); - } - - //! Puts element-wise absolute values of input Multi-vector in target: A = abs(this) - void abs(const MultiVector & /* A */) { - XPETRA_MONITOR("EpetraIntVectorT::abs"); - - // XPETRA_DYNAMIC_CAST(const EpetraMultiVectorT, A, eA, "This Xpetra::EpetraMultiVectorT method only accept Xpetra::EpetraMultiVectorT as input arguments."); - TEUCHOS_TEST_FOR_EXCEPTION(1, Xpetra::Exceptions::NotImplemented, "TODO"); - } - - //! Puts element-wise reciprocal values of input Multi-vector in target, this(i,j) = 1/A(i,j). - void reciprocal(const MultiVector & /* A */) { - XPETRA_MONITOR("EpetraIntVectorT::reciprocal"); - - // XPETRA_DYNAMIC_CAST(const EpetraMultiVectorT, A, eA, "This Xpetra::EpetraMultiVectorT method only accept Xpetra::EpetraMultiVectorT as input arguments."); - TEUCHOS_TEST_FOR_EXCEPTION(1, Xpetra::Exceptions::NotImplemented, "TODO"); - } - - //! Scale the current values of a multi-vector, this = alpha*this. - void scale(const int & /* alpha */) { - XPETRA_MONITOR("EpetraIntVectorT::scale"); - TEUCHOS_TEST_FOR_EXCEPTION(1, Xpetra::Exceptions::NotImplemented, "TODO"); - } - - //! Scale the current values of a multi-vector, this[j] = alpha[j]*this[j]. - void scale(Teuchos::ArrayView /* alpha */) { - XPETRA_MONITOR("EpetraIntVectorT::scale"); - TEUCHOS_TEST_FOR_EXCEPTION(1, Xpetra::Exceptions::NotImplemented, "TODO"); - } - - //! Update multi-vector values with scaled values of A, this = beta*this + alpha*A. - void update(const int & /* alpha */, const MultiVector & /* A */, const int & /* beta */) { - XPETRA_MONITOR("EpetraIntVectorT::update"); - - // XPETRA_DYNAMIC_CAST(const EpetraMultiVectorT, A, eA, "This Xpetra::EpetraMultiVectorT method only accept Xpetra::EpetraMultiVectorT as input arguments."); - TEUCHOS_TEST_FOR_EXCEPTION(1, Xpetra::Exceptions::NotImplemented, "TODO"); - } - - //! Update multi-vector with scaled values of A and B, this = gamma*this + alpha*A + beta*B. - void update(const int & /* alpha */, const MultiVector & /* A */, const int & /* beta */, const MultiVector & /* B */, const int & /* gamma */) { - XPETRA_MONITOR("EpetraIntVectorT::update"); - - // XPETRA_DYNAMIC_CAST(const EpetraMultiVectorT, A, eA, "This Xpetra::EpetraMultiVectorT method only accept Xpetra::EpetraMultiVectorT as input arguments."); - // XPETRA_DYNAMIC_CAST(const EpetraMultiVectorT, B, eB, "This Xpetra::EpetraMultiVectorT method only accept Xpetra::EpetraMultiVectorT as input arguments."); - TEUCHOS_TEST_FOR_EXCEPTION(1, Xpetra::Exceptions::NotImplemented, "TODO"); - } - - //! Compute 1-norm of each vector in multi-vector. - void norm1(const Teuchos::ArrayView::magnitudeType> & /* norms */) const { - XPETRA_MONITOR("EpetraIntVectorT::norm1"); - TEUCHOS_TEST_FOR_EXCEPTION(1, Xpetra::Exceptions::NotImplemented, "TODO"); - } - - //! Compute 2-norm of each vector in multi-vector. - void norm2(const Teuchos::ArrayView::magnitudeType> & /* norms */) const { - XPETRA_MONITOR("EpetraIntVectorT::norm2"); - TEUCHOS_TEST_FOR_EXCEPTION(1, Xpetra::Exceptions::NotImplemented, "TODO"); - } - - //! Compute Inf-norm of each vector in multi-vector. - void normInf(const Teuchos::ArrayView::magnitudeType> & /* norms */) const { - XPETRA_MONITOR("EpetraIntVectorT::normInf"); - TEUCHOS_TEST_FOR_EXCEPTION(1, Xpetra::Exceptions::NotImplemented, "TODO"); - } - - //! Compute mean (average) value of each vector in multi-vector. - void meanValue(const Teuchos::ArrayView & /* means */) const { - XPETRA_MONITOR("EpetraIntVectorT::meanValue"); - TEUCHOS_TEST_FOR_EXCEPTION(1, Xpetra::Exceptions::NotImplemented, "TODO"); - } - - //! Compute max value of each vector in multi-vector. - void maxValue(const Teuchos::ArrayView & /* maxs */) const { - XPETRA_MONITOR("EpetraIntVectorT::maxValue"); - TEUCHOS_TEST_FOR_EXCEPTION(1, Xpetra::Exceptions::NotImplemented, "TODO"); - } - - //! Matrix-Matrix multiplication, this = beta*this + alpha*op(A)*op(B). - void multiply(Teuchos::ETransp /* transA */, Teuchos::ETransp /* transB */, const int & /* alpha */, const MultiVector & /* A */, const MultiVector & /* B */, const int & /* beta */) { - XPETRA_MONITOR("EpetraIntVectorT::multiply"); - TEUCHOS_TEST_FOR_EXCEPTION(1, Xpetra::Exceptions::NotImplemented, "Not available in Epetra"); - } - - //! Element-wise multiply of a Vector A with a EpetraMultiVector B. - void elementWiseMultiply(int /* scalarAB */, const Vector & /* A */, const MultiVector & /* B */, int /* scalarThis */) { - XPETRA_MONITOR("EpetraIntVectorT::elementWiseMultiply"); - TEUCHOS_TEST_FOR_EXCEPTION(1, Xpetra::Exceptions::NotImplemented, "Xpetra_EpetraIntVector: elementWiseMultiply not implemented because Epetra_IntVector does not support this operation"); - } - - //@} - - //! @name Post-construction modification routines - //@{ - - //! Replace value, using global (row) index. - void replaceGlobalValue(GlobalOrdinal /* globalRow */, size_t /* vectorIndex */, const Scalar & /* value */) { - XPETRA_MONITOR("EpetraIntVectorT::replaceGlobalValue"); - TEUCHOS_TEST_FOR_EXCEPTION(1, Xpetra::Exceptions::NotImplemented, "TODO"); - } - - //! Add value to existing value, using global (row) index. - void sumIntoGlobalValue(GlobalOrdinal /* globalRow */, size_t /* vectorIndex */, const Scalar & /* value */) { - XPETRA_MONITOR("EpetraIntVectorT::sumIntoGlobalValue"); - TEUCHOS_TEST_FOR_EXCEPTION(1, Xpetra::Exceptions::NotImplemented, "TODO"); - } - - //! Replace value, using local (row) index. - void replaceLocalValue(LocalOrdinal /* myRow */, size_t /* vectorIndex */, const Scalar & /* value */) { - XPETRA_MONITOR("EpetraIntVectorT::replaceLocalValue"); - TEUCHOS_TEST_FOR_EXCEPTION(1, Xpetra::Exceptions::NotImplemented, "TODO"); - } - - //! Add value to existing value, using local (row) index. - void sumIntoLocalValue(LocalOrdinal /* myRow */, size_t /* vectorIndex */, const Scalar & /* value */) { - XPETRA_MONITOR("EpetraIntVectorT::sumIntoLocalValue"); - TEUCHOS_TEST_FOR_EXCEPTION(1, Xpetra::Exceptions::NotImplemented, "TODO"); - } - - //@} - - //! @name Attribute access functions - //@{ - - //! Returns the number of vectors in the multi-vector. - size_t getNumVectors() const { - XPETRA_MONITOR("EpetraIntVectorT::getNumVectors"); - return 1; - } - - //! Returns the local vector length on the calling processor of vectors in the multi-vector. - size_t getLocalLength() const { return vec_->MyLength(); } - - //! Returns the global vector length of vectors in the multi-vector. - global_size_t getGlobalLength() const { return vec_->GlobalLength64(); } - - //! Checks to see if the local length, number of vectors and size of Scalar type match - bool isSameSize(const MultiVector &vec) const { - XPETRA_MONITOR("EpetraIntVectorT::isSameSize"); - const Vector *asvec = dynamic_cast *>(&vec); - if (!asvec) return false; - auto vv = toEpetra(*asvec); - return ((vec_->MyLength() == vv.MyLength()) && (getNumVectors() == vec.getNumVectors())); - } - - //@} - - //! @name Overridden from Teuchos::Describable - //@{ - - //! Return a simple one-line description of this object. - std::string description() const { - XPETRA_MONITOR("EpetraIntVectorT::description"); - - // This implementation come from Epetra_Vector_def.hpp (without modification) - std::ostringstream oss; - oss << Teuchos::Describable::description(); - oss << "{length=" << this->getGlobalLength() - << "}"; - return oss.str(); - } - - //! Print the object with some verbosity level to an FancyOStream object. - void describe(Teuchos::FancyOStream &out, const Teuchos::EVerbosityLevel verbLevel = Teuchos::Describable::verbLevel_default) const { - XPETRA_MONITOR("EpetraIntVectorT::describe"); - - // This implementation come from Tpetra_Vector_def.hpp (without modification) // JG: true? - using std::endl; - using std::setw; - using Teuchos::VERB_DEFAULT; - using Teuchos::VERB_EXTREME; - using Teuchos::VERB_HIGH; - using Teuchos::VERB_LOW; - using Teuchos::VERB_MEDIUM; - using Teuchos::VERB_NONE; - - if (verbLevel > Teuchos::VERB_NONE) - vec_->Print(out); - } - - //@} - - RCP getEpetra_IntVector() const { return vec_; } - - const RCP > getComm() const { - TEUCHOS_TEST_FOR_EXCEPTION(1, Xpetra::Exceptions::NotImplemented, "TODO getComm Epetra MultiVector not implemented"); - } - - // Implementing DistObject - Teuchos::RCP > getMap() const { - RCP map = rcp(new Epetra_BlockMap(vec_->Map())); - return rcp(new Xpetra::EpetraMapT(map)); - } - - void doImport(const DistObject &source, - const Import &importer, CombineMode CM) { - XPETRA_MONITOR("EpetraIntVectorT::doImport"); - - XPETRA_DYNAMIC_CAST(const EpetraIntVectorT, source, tSource, "Xpetra::EpetraIntVectorT::doImport only accept Xpetra::EpetraIntVectorT as input arguments."); - XPETRA_DYNAMIC_CAST(const EpetraImportT, importer, tImporter, "Xpetra::EpetraIntVectorT::doImport only accept Xpetra::EpetraImportT as input arguments."); - - const Epetra_IntVector &v = *tSource.getEpetra_IntVector(); - int err = vec_->Import(v, *tImporter.getEpetra_Import(), toEpetra(CM)); - TEUCHOS_TEST_FOR_EXCEPTION(err != 0, std::runtime_error, "Catch error code returned by Epetra."); - } - - void doExport(const DistObject &dest, - const Import &importer, CombineMode CM) { - XPETRA_MONITOR("EpetraIntVectorT::doExport"); - - XPETRA_DYNAMIC_CAST(const EpetraIntVectorT, dest, tDest, "Xpetra::EpetraIntVectorT::doImport only accept Xpetra::EpetraIntVectorT as input arguments."); - XPETRA_DYNAMIC_CAST(const EpetraImportT, importer, tImporter, "Xpetra::EpetraIntVectorT::doImport only accept Xpetra::EpetraImportT as input arguments."); - - const Epetra_IntVector &v = *tDest.getEpetra_IntVector(); - int err = vec_->Import(v, *tImporter.getEpetra_Import(), toEpetra(CM)); - TEUCHOS_TEST_FOR_EXCEPTION(err != 0, std::runtime_error, "Catch error code returned by Epetra."); - } - - void doImport(const DistObject &source, - const Export &exporter, CombineMode CM) { - XPETRA_MONITOR("EpetraIntVectorT::doImport"); - - XPETRA_DYNAMIC_CAST(const EpetraIntVectorT, source, tSource, "Xpetra::EpetraIntVectorT::doImport only accept Xpetra::EpetraIntVectorT as input arguments."); - XPETRA_DYNAMIC_CAST(const EpetraExportT, exporter, tExporter, "Xpetra::EpetraIntVectorT::doImport only accept Xpetra::EpetraImportT as input arguments."); - - const Epetra_IntVector &v = *tSource.getEpetra_IntVector(); - int err = vec_->Import(v, *tExporter.getEpetra_Export(), toEpetra(CM)); - TEUCHOS_TEST_FOR_EXCEPTION(err != 0, std::runtime_error, "Catch error code returned by Epetra."); - } - - void doExport(const DistObject &dest, - const Export &exporter, CombineMode CM) { - XPETRA_MONITOR("EpetraIntVectorT::doExport"); - - XPETRA_DYNAMIC_CAST(const EpetraIntVectorT, dest, tDest, "Xpetra::EpetraIntVectorT::doImport only accept Xpetra::EpetraIntVectorT as input arguments."); - XPETRA_DYNAMIC_CAST(const EpetraExportT, exporter, tExporter, "Xpetra::EpetraIntVectorT::doImport only accept Xpetra::EpetraImportT as input arguments."); - - const Epetra_IntVector &v = *tDest.getEpetra_IntVector(); - int err = vec_->Export(v, *tExporter.getEpetra_Export(), toEpetra(CM)); - TEUCHOS_TEST_FOR_EXCEPTION(err != 0, std::runtime_error, "Catch error code returned by Epetra."); - } - - void replaceMap(const RCP > & /* map */) { - // do nothing - } - - protected: - /// \brief Implementation of the assignment operator (operator=); - /// does a deep copy. - virtual void - assign(const MultiVector &rhs) { - typedef EpetraIntVectorT this_type; - const this_type *rhsPtr = dynamic_cast(&rhs); - TEUCHOS_TEST_FOR_EXCEPTION( - rhsPtr == NULL, std::invalid_argument, - "Xpetra::MultiVector::operator=: " - "The left-hand side (LHS) of the assignment has a different type than " - "the right-hand side (RHS). The LHS has type Xpetra::EpetraIntVectorT " - "(which means it wraps an Epetra_IntVector), but the RHS has some " - "other type. This probably means that the RHS wraps either an " - "Tpetra::MultiVector, or an Epetra_MultiVector. Xpetra::MultiVector " - "does not currently implement assignment from a Tpetra object to an " - "Epetra object, though this could be added with sufficient interest."); - - RCP rhsImpl = rhsPtr->getEpetra_IntVector(); - RCP lhsImpl = this->getEpetra_IntVector(); - - TEUCHOS_TEST_FOR_EXCEPTION( - rhsImpl.is_null(), std::logic_error, - "Xpetra::MultiVector::operator= " - "(in Xpetra::EpetraIntVectorT::assign): *this (the right-hand side of " - "the assignment) has a null RCP inside. Please " - "report this bug to the Xpetra developers."); - TEUCHOS_TEST_FOR_EXCEPTION( - lhsImpl.is_null(), std::logic_error, - "Xpetra::MultiVector::operator= " - "(in Xpetra::EpetraIntVectorT::assign): The left-hand side of the " - "assignment has a null RCP inside. Please report " - "this bug to the Xpetra developers."); - - // Epetra_IntVector's assignment operator does a deep copy. - *lhsImpl = *rhsImpl; - } - - private: - //! The Epetra_IntVector which this class wraps. - RCP vec_; -}; -#endif - -// specialization on GO=long long and Node=Serial -#ifndef XPETRA_EPETRA_NO_64BIT_GLOBAL_INDICES -template <> -class EpetraIntVectorT - : public virtual Vector { - typedef int Scalar; - typedef int LocalOrdinal; - typedef long long GlobalOrdinal; - typedef EpetraNode Node; - - public: - //! @name Constructor/Destructor Methods - //@{ - - //! Sets all vector entries to zero. - explicit EpetraIntVectorT(const Teuchos::RCP > &map, bool zeroOut = true) { - vec_ = rcp(new Epetra_IntVector(toEpetra(map), zeroOut)); - } - - //! Destructor. - ~EpetraIntVectorT(){}; - - //@} - - //! @name Mathematical methods - //@{ - - //! TODO missing comment - int dot(const Vector & /* a */) const { - XPETRA_MONITOR("EpetraIntVectorT::dot"); - TEUCHOS_TEST_FOR_EXCEPTION(true, Xpetra::Exceptions::NotImplemented, "TODO"); /* return -1; */ - } - - //! Return 1-norm of this Vector. - Teuchos::ScalarTraits::magnitudeType norm1() const { - XPETRA_MONITOR("EpetraIntVectorT::norm1"); - TEUCHOS_TEST_FOR_EXCEPTION(true, Xpetra::Exceptions::NotImplemented, "TODO"); /* return -1; */ - } - - //! Compute 2-norm of this Vector. - Teuchos::ScalarTraits::magnitudeType norm2() const { - XPETRA_MONITOR("EpetraIntVectorT::norm2"); - TEUCHOS_TEST_FOR_EXCEPTION(true, Xpetra::Exceptions::NotImplemented, "TODO"); /* return -1; */ - } - - //! Compute Inf-norm of this Vector. - Teuchos::ScalarTraits::magnitudeType normInf() const { - XPETRA_MONITOR("EpetraIntVectorT::normInf"); - TEUCHOS_TEST_FOR_EXCEPTION(true, Xpetra::Exceptions::NotImplemented, "TODO"); /* return -1; */ - } - - //! Compute mean (average) value of this Vector. - int meanValue() const { - XPETRA_MONITOR("EpetraIntVectorT::meanValue"); - TEUCHOS_TEST_FOR_EXCEPTION(true, Xpetra::Exceptions::NotImplemented, "TODO"); /* return -1; */ - } - - //! Compute max value of this Vector. - int maxValue() const { - XPETRA_MONITOR("EpetraIntVectorT::maxValue"); - return Teuchos::as(vec_->MaxValue()); - } - - //@} - - //! @name Post-construction modification routines - //@{ - - //! Replace current value at the specified location with specified value. - void replaceGlobalValue(GlobalOrdinal /* globalRow */, const Scalar & /* value */) { - XPETRA_MONITOR("EpetraIntVectorT::replaceGlobalValue"); - TEUCHOS_TEST_FOR_EXCEPTION(1, Xpetra::Exceptions::NotImplemented, "TODO"); - } - - //! Adds specified value to existing value at the specified location. - void sumIntoGlobalValue(GlobalOrdinal /* globalRow */, const Scalar & /* value */) { - XPETRA_MONITOR("EpetraIntVectorT::sumIntoGlobalValue"); - TEUCHOS_TEST_FOR_EXCEPTION(1, Xpetra::Exceptions::NotImplemented, "TODO"); - } - - //! Replace current value at the specified location with specified values. - void replaceLocalValue(LocalOrdinal myRow, const Scalar &value) { - XPETRA_MONITOR("EpetraIntVectorT::replaceLocalValue"); - (*vec_)[myRow] = value; - } - - //! Adds specified value to existing value at the specified location. - void sumIntoLocalValue(LocalOrdinal myRow, const Scalar &value) { - XPETRA_MONITOR("EpetraIntVectorT::sumIntoLocalValue"); - (*vec_)[myRow] += value; - } - - //! Initialize all values in a multi-vector with specified value. - void putScalar(const int &value) { vec_->PutValue(value); } - - //! Set multi-vector values to random numbers. - void randomize(bool /* bUseXpetraImplementation */ = true) { - XPETRA_MONITOR("EpetraIntVectorT::randomize"); - TEUCHOS_TEST_FOR_EXCEPTION(1, Xpetra::Exceptions::NotImplemented, "Xpetra::EpetraIntVectorT::randomize(): Functionnality not available in Epetra"); - } - - //! Set multi-vector values to random numbers. - void randomize(const Scalar & /*minVal*/, const Scalar & /*maxVal*/, bool /* bUseXpetraImplementation */ = true) { - XPETRA_MONITOR("EpetraIntVectorT::randomize"); - TEUCHOS_TEST_FOR_EXCEPTION(1, Xpetra::Exceptions::NotImplemented, "Xpetra::EpetraIntVectorT::randomize(): Functionnality not available in Epetra"); - } - - //! Set seed for Random function. - /** Note: this method does not exist in Tpetra interface. Added for MueLu. */ - void setSeed(unsigned int /* seed */) { - XPETRA_MONITOR("EpetraIntVectorT::setSeed"); - TEUCHOS_TEST_FOR_EXCEPTION(1, Xpetra::Exceptions::NotImplemented, "Xpetra::EpetraIntVectorT::setSeed(): Functionnality not available in Epetra"); - } - - //@} - - //! @name Data Copy and View get methods - //@{ - - //! Return a Vector which is a const view of column j. - Teuchos::RCP > getVector(size_t /* j */) const { - TEUCHOS_TEST_FOR_EXCEPTION(1, Xpetra::Exceptions::NotImplemented, "TODO"); - } - - //! Return a Vector which is a nonconst view of column j. - Teuchos::RCP > getVectorNonConst(size_t /* j */) { - TEUCHOS_TEST_FOR_EXCEPTION(1, Xpetra::Exceptions::NotImplemented, "TODO"); - } - - //! Const Local vector access function. - //! View of the local values in a particular vector of this multi-vector. - Teuchos::ArrayRCP getData(size_t /* j */) const { - XPETRA_MONITOR("EpetraIntVectorT::getData"); - - int *data = vec_->Values(); - int localLength = vec_->MyLength(); - - return ArrayRCP(data, 0, localLength, false); // not ownership - } - - //! Local vector access function. - //! View of the local values in a particular vector of this multi-vector. - Teuchos::ArrayRCP getDataNonConst(size_t /* j */) { - XPETRA_MONITOR("EpetraIntVectorT::getDataNonConst"); - - int *data = vec_->Values(); - int localLength = vec_->MyLength(); - - return ArrayRCP(data, 0, localLength, false); // not ownership - } - - //@} - - //! @name Mathematical methods - //@{ - //! Computes dot product of each corresponding pair of vectors, dots[i] = this[i].dot(A[i]) - void dot(const MultiVector & /* A */, const Teuchos::ArrayView & /* dots */) const { - XPETRA_MONITOR("EpetraIntVectorT::dot"); - - // XPETRA_DYNAMIC_CAST(const EpetraMultiVectorT, A, eA, "This Xpetra::EpetraMultiVectorT method only accept Xpetra::EpetraMultiVectorT as input arguments."); - TEUCHOS_TEST_FOR_EXCEPTION(1, Xpetra::Exceptions::NotImplemented, "TODO"); - } - - //! Puts element-wise absolute values of input Multi-vector in target: A = abs(this) - void abs(const MultiVector & /* A */) { - XPETRA_MONITOR("EpetraIntVectorT::abs"); - - // XPETRA_DYNAMIC_CAST(const EpetraMultiVectorT, A, eA, "This Xpetra::EpetraMultiVectorT method only accept Xpetra::EpetraMultiVectorT as input arguments."); - TEUCHOS_TEST_FOR_EXCEPTION(1, Xpetra::Exceptions::NotImplemented, "TODO"); - } - - //! Puts element-wise reciprocal values of input Multi-vector in target, this(i,j) = 1/A(i,j). - void reciprocal(const MultiVector & /* A */) { - XPETRA_MONITOR("EpetraIntVectorT::reciprocal"); - - // XPETRA_DYNAMIC_CAST(const EpetraMultiVectorT, A, eA, "This Xpetra::EpetraMultiVectorT method only accept Xpetra::EpetraMultiVectorT as input arguments."); - TEUCHOS_TEST_FOR_EXCEPTION(1, Xpetra::Exceptions::NotImplemented, "TODO"); - } - - //! Scale the current values of a multi-vector, this = alpha*this. - void scale(const int & /* alpha */) { - XPETRA_MONITOR("EpetraIntVectorT::scale"); - TEUCHOS_TEST_FOR_EXCEPTION(1, Xpetra::Exceptions::NotImplemented, "TODO"); - } - - //! Scale the current values of a multi-vector, this[j] = alpha[j]*this[j]. - void scale(Teuchos::ArrayView /* alpha */) { - XPETRA_MONITOR("EpetraIntVectorT::scale"); - TEUCHOS_TEST_FOR_EXCEPTION(1, Xpetra::Exceptions::NotImplemented, "TODO"); - } - - //! Update multi-vector values with scaled values of A, this = beta*this + alpha*A. - void update(const int & /* alpha */, const MultiVector & /* A */, const int & /* beta */) { - XPETRA_MONITOR("EpetraIntVectorT::update"); - - // XPETRA_DYNAMIC_CAST(const EpetraMultiVectorT, A, eA, "This Xpetra::EpetraMultiVectorT method only accept Xpetra::EpetraMultiVectorT as input arguments."); - TEUCHOS_TEST_FOR_EXCEPTION(1, Xpetra::Exceptions::NotImplemented, "TODO"); - } - - //! Update multi-vector with scaled values of A and B, this = gamma*this + alpha*A + beta*B. - void update(const int & /* alpha */, const MultiVector & /* A */, const int & /* beta */, const MultiVector & /* B */, const int & /* gamma */) { - XPETRA_MONITOR("EpetraIntVectorT::update"); - - // XPETRA_DYNAMIC_CAST(const EpetraMultiVectorT, A, eA, "This Xpetra::EpetraMultiVectorT method only accept Xpetra::EpetraMultiVectorT as input arguments."); - // XPETRA_DYNAMIC_CAST(const EpetraMultiVectorT, B, eB, "This Xpetra::EpetraMultiVectorT method only accept Xpetra::EpetraMultiVectorT as input arguments."); - TEUCHOS_TEST_FOR_EXCEPTION(1, Xpetra::Exceptions::NotImplemented, "TODO"); - } - - //! Compute 1-norm of each vector in multi-vector. - void norm1(const Teuchos::ArrayView::magnitudeType> & /* norms */) const { - XPETRA_MONITOR("EpetraIntVectorT::norm1"); - TEUCHOS_TEST_FOR_EXCEPTION(1, Xpetra::Exceptions::NotImplemented, "TODO"); - } - - //! Compute 2-norm of each vector in multi-vector. - void norm2(const Teuchos::ArrayView::magnitudeType> & /* norms */) const { - XPETRA_MONITOR("EpetraIntVectorT::norm2"); - TEUCHOS_TEST_FOR_EXCEPTION(1, Xpetra::Exceptions::NotImplemented, "TODO"); - } - - //! Compute Inf-norm of each vector in multi-vector. - void normInf(const Teuchos::ArrayView::magnitudeType> & /* norms */) const { - XPETRA_MONITOR("EpetraIntVectorT::normInf"); - TEUCHOS_TEST_FOR_EXCEPTION(1, Xpetra::Exceptions::NotImplemented, "TODO"); - } - - //! Compute mean (average) value of each vector in multi-vector. - void meanValue(const Teuchos::ArrayView & /* means */) const { - XPETRA_MONITOR("EpetraIntVectorT::meanValue"); - TEUCHOS_TEST_FOR_EXCEPTION(1, Xpetra::Exceptions::NotImplemented, "TODO"); - } - - //! Compute max value of each vector in multi-vector. - void maxValue(const Teuchos::ArrayView & /* maxs */) const { - XPETRA_MONITOR("EpetraIntVectorT::maxValue"); - TEUCHOS_TEST_FOR_EXCEPTION(1, Xpetra::Exceptions::NotImplemented, "TODO"); - } - - //! Matrix-Matrix multiplication, this = beta*this + alpha*op(A)*op(B). - void multiply(Teuchos::ETransp /* transA */, Teuchos::ETransp /* transB */, const int & /* alpha */, const MultiVector & /* A */, const MultiVector & /* B */, const int & /* beta */) { - XPETRA_MONITOR("EpetraIntVectorT::multiply"); - TEUCHOS_TEST_FOR_EXCEPTION(1, Xpetra::Exceptions::NotImplemented, "Not available in Epetra"); - } - - //! Element-wise multiply of a Vector A with a EpetraMultiVector B. - void elementWiseMultiply(int /* scalarAB */, const Vector & /* A */, const MultiVector & /* B */, int /* scalarThis */) { - XPETRA_MONITOR("EpetraIntVectorT::elementWiseMultiply"); - TEUCHOS_TEST_FOR_EXCEPTION(1, Xpetra::Exceptions::NotImplemented, "Xpetra_EpetraIntVector: elementWiseMultiply not implemented because Epetra_IntVector does not support this operation"); - } - - //@} - - //! @name Post-construction modification routines - //@{ - - //! Replace value, using global (row) index. - void replaceGlobalValue(GlobalOrdinal /* globalRow */, size_t /* vectorIndex */, const Scalar & /* value */) { - XPETRA_MONITOR("EpetraIntVectorT::replaceGlobalValue"); - TEUCHOS_TEST_FOR_EXCEPTION(1, Xpetra::Exceptions::NotImplemented, "TODO"); - } - - //! Add value to existing value, using global (row) index. - void sumIntoGlobalValue(GlobalOrdinal /* globalRow */, size_t /* vectorIndex */, const Scalar & /* value */) { - XPETRA_MONITOR("EpetraIntVectorT::sumIntoGlobalValue"); - TEUCHOS_TEST_FOR_EXCEPTION(1, Xpetra::Exceptions::NotImplemented, "TODO"); - } - - //! Replace value, using local (row) index. - void replaceLocalValue(LocalOrdinal /* myRow */, size_t /* vectorIndex */, const Scalar & /* value */) { - XPETRA_MONITOR("EpetraIntVectorT::replaceLocalValue"); - TEUCHOS_TEST_FOR_EXCEPTION(1, Xpetra::Exceptions::NotImplemented, "TODO"); - } - - //! Add value to existing value, using local (row) index. - void sumIntoLocalValue(LocalOrdinal /* myRow */, size_t /* vectorIndex */, const Scalar & /* value */) { - XPETRA_MONITOR("EpetraIntVectorT::sumIntoLocalValue"); - TEUCHOS_TEST_FOR_EXCEPTION(1, Xpetra::Exceptions::NotImplemented, "TODO"); - } - - //@} - - //! @name Attribute access functions - //@{ - - //! Returns the number of vectors in the multi-vector. - size_t getNumVectors() const { - XPETRA_MONITOR("EpetraIntVectorT::getNumVectors"); - return 1; - } - - //! Returns the local vector length on the calling processor of vectors in the multi-vector. - size_t getLocalLength() const { return vec_->MyLength(); } - - //! Returns the global vector length of vectors in the multi-vector. - global_size_t getGlobalLength() const { return vec_->GlobalLength64(); } - - //! Checks to see if the local length, number of vectors and size of Scalar type match - bool isSameSize(const MultiVector &vec) const { - XPETRA_MONITOR("EpetraIntVectorT::isSameSize"); - const Vector *asvec = dynamic_cast *>(&vec); - if (!asvec) return false; - auto vv = toEpetra(*asvec); - return ((vec_->MyLength() == vv.MyLength()) && (getNumVectors() == vec.getNumVectors())); - } - //@} - - //! @name Overridden from Teuchos::Describable - //@{ - - //! Return a simple one-line description of this object. - std::string description() const { - XPETRA_MONITOR("EpetraIntVectorT::description"); - - // This implementation come from Epetra_Vector_def.hpp (without modification) - std::ostringstream oss; - oss << Teuchos::Describable::description(); - oss << "{length=" << this->getGlobalLength() - << "}"; - return oss.str(); - } - - //! Print the object with some verbosity level to an FancyOStream object. - void describe(Teuchos::FancyOStream &out, const Teuchos::EVerbosityLevel verbLevel = Teuchos::Describable::verbLevel_default) const { - XPETRA_MONITOR("EpetraIntVectorT::describe"); - - // This implementation come from Tpetra_Vector_def.hpp (without modification) // JG: true? - using std::endl; - using std::setw; - using Teuchos::VERB_DEFAULT; - using Teuchos::VERB_EXTREME; - using Teuchos::VERB_HIGH; - using Teuchos::VERB_LOW; - using Teuchos::VERB_MEDIUM; - using Teuchos::VERB_NONE; - - if (verbLevel > Teuchos::VERB_NONE) - vec_->Print(out); - } - - //@} - - RCP getEpetra_IntVector() const { return vec_; } - - const RCP > getComm() const { - TEUCHOS_TEST_FOR_EXCEPTION(1, Xpetra::Exceptions::NotImplemented, "TODO getComm Epetra MultiVector not implemented"); - } - - // Implementing DistObject - Teuchos::RCP > getMap() const { - RCP map = rcp(new Epetra_BlockMap(vec_->Map())); - return rcp(new Xpetra::EpetraMapT(map)); - } - - void doImport(const DistObject &source, - const Import &importer, CombineMode CM) { - XPETRA_MONITOR("EpetraIntVectorT::doImport"); - - XPETRA_DYNAMIC_CAST(const EpetraIntVectorT, source, tSource, "Xpetra::EpetraIntVectorT::doImport only accept Xpetra::EpetraIntVectorT as input arguments."); - XPETRA_DYNAMIC_CAST(const EpetraImportT, importer, tImporter, "Xpetra::EpetraIntVectorT::doImport only accept Xpetra::EpetraImportT as input arguments."); - - const Epetra_IntVector &v = *tSource.getEpetra_IntVector(); - int err = vec_->Import(v, *tImporter.getEpetra_Import(), toEpetra(CM)); - TEUCHOS_TEST_FOR_EXCEPTION(err != 0, std::runtime_error, "Catch error code returned by Epetra."); - } - - void doExport(const DistObject &dest, - const Import &importer, CombineMode CM) { - XPETRA_MONITOR("EpetraIntVectorT::doExport"); - - XPETRA_DYNAMIC_CAST(const EpetraIntVectorT, dest, tDest, "Xpetra::EpetraIntVectorT::doImport only accept Xpetra::EpetraIntVectorT as input arguments."); - XPETRA_DYNAMIC_CAST(const EpetraImportT, importer, tImporter, "Xpetra::EpetraIntVectorT::doImport only accept Xpetra::EpetraImportT as input arguments."); - - const Epetra_IntVector &v = *tDest.getEpetra_IntVector(); - int err = vec_->Import(v, *tImporter.getEpetra_Import(), toEpetra(CM)); - TEUCHOS_TEST_FOR_EXCEPTION(err != 0, std::runtime_error, "Catch error code returned by Epetra."); - } - - void doImport(const DistObject &source, - const Export &exporter, CombineMode CM) { - XPETRA_MONITOR("EpetraIntVectorT::doImport"); - - XPETRA_DYNAMIC_CAST(const EpetraIntVectorT, source, tSource, "Xpetra::EpetraIntVectorT::doImport only accept Xpetra::EpetraIntVectorT as input arguments."); - XPETRA_DYNAMIC_CAST(const EpetraExportT, exporter, tExporter, "Xpetra::EpetraIntVectorT::doImport only accept Xpetra::EpetraImportT as input arguments."); - - const Epetra_IntVector &v = *tSource.getEpetra_IntVector(); - int err = vec_->Import(v, *tExporter.getEpetra_Export(), toEpetra(CM)); - TEUCHOS_TEST_FOR_EXCEPTION(err != 0, std::runtime_error, "Catch error code returned by Epetra."); - } - - void doExport(const DistObject &dest, - const Export &exporter, CombineMode CM) { - XPETRA_MONITOR("EpetraIntVectorT::doExport"); - - XPETRA_DYNAMIC_CAST(const EpetraIntVectorT, dest, tDest, "Xpetra::EpetraIntVectorT::doImport only accept Xpetra::EpetraIntVectorT as input arguments."); - XPETRA_DYNAMIC_CAST(const EpetraExportT, exporter, tExporter, "Xpetra::EpetraIntVectorT::doImport only accept Xpetra::EpetraImportT as input arguments."); - - const Epetra_IntVector &v = *tDest.getEpetra_IntVector(); - int err = vec_->Export(v, *tExporter.getEpetra_Export(), toEpetra(CM)); - TEUCHOS_TEST_FOR_EXCEPTION(err != 0, std::runtime_error, "Catch error code returned by Epetra."); - } - - void replaceMap(const RCP > & /* map */) { - // do nothing - } - - protected: - /// \brief Implementation of the assignment operator (operator=); - /// does a deep copy. - virtual void - assign(const MultiVector &rhs) { - typedef EpetraIntVectorT this_type; - const this_type *rhsPtr = dynamic_cast(&rhs); - TEUCHOS_TEST_FOR_EXCEPTION( - rhsPtr == NULL, std::invalid_argument, - "Xpetra::MultiVector::operator=: " - "The left-hand side (LHS) of the assignment has a different type than " - "the right-hand side (RHS). The LHS has type Xpetra::EpetraIntVectorT " - "(which means it wraps an Epetra_IntVector), but the RHS has some " - "other type. This probably means that the RHS wraps either an " - "Tpetra::MultiVector, or an Epetra_MultiVector. Xpetra::MultiVector " - "does not currently implement assignment from a Tpetra object to an " - "Epetra object, though this could be added with sufficient interest."); - - RCP rhsImpl = rhsPtr->getEpetra_IntVector(); - RCP lhsImpl = this->getEpetra_IntVector(); - - TEUCHOS_TEST_FOR_EXCEPTION( - rhsImpl.is_null(), std::logic_error, - "Xpetra::MultiVector::operator= " - "(in Xpetra::EpetraIntVectorT::assign): *this (the right-hand side of " - "the assignment) has a null RCP inside. Please " - "report this bug to the Xpetra developers."); - TEUCHOS_TEST_FOR_EXCEPTION( - lhsImpl.is_null(), std::logic_error, - "Xpetra::MultiVector::operator= " - "(in Xpetra::EpetraIntVectorT::assign): The left-hand side of the " - "assignment has a null RCP inside. Please report " - "this bug to the Xpetra developers."); - - // Epetra_IntVector's assignment operator does a deep copy. - *lhsImpl = *rhsImpl; - } - - private: - //! The Epetra_IntVector which this class wraps. - RCP vec_; -}; -#endif - -} // namespace Xpetra - -#endif // XPETRA_EPETRAINTVECTOR_HPP diff --git a/packages/xpetra/src/Vector/Xpetra_EpetraVector.cpp b/packages/xpetra/src/Vector/Xpetra_EpetraVector.cpp deleted file mode 100644 index 8decc5e0f0e1..000000000000 --- a/packages/xpetra/src/Vector/Xpetra_EpetraVector.cpp +++ /dev/null @@ -1,122 +0,0 @@ -// @HEADER -// ***************************************************************************** -// Xpetra: A linear algebra interface package -// -// Copyright 2012 NTESS and the Xpetra contributors. -// SPDX-License-Identifier: BSD-3-Clause -// ***************************************************************************** -// @HEADER - -#include "Xpetra_EpetraVector.hpp" - -// TODO: replace double -> Scalar etc. - -namespace Xpetra { - -// TODO: move that elsewhere -template -Epetra_Vector &toEpetra(Vector &x) { - XPETRA_DYNAMIC_CAST(EpetraVectorT, x, tX, "toEpetra"); - return *tX.getEpetra_Vector(); -} - -template -const Epetra_Vector &toEpetra(const Vector &x) { - XPETRA_DYNAMIC_CAST(const EpetraVectorT, x, tX, "toEpetra"); - return *tX.getEpetra_Vector(); -} -// - -#ifndef XPETRA_EPETRA_NO_32BIT_GLOBAL_INDICES -#ifdef HAVE_XPETRA_TPETRA -#include "TpetraCore_config.h" -#if ((defined(EPETRA_HAVE_OMP) && !defined(HAVE_TPETRA_INST_OPENMP)) || \ - (!defined(EPETRA_HAVE_OMP) && !defined(HAVE_TPETRA_INST_SERIAL))) -template class EpetraVectorT; -template Epetra_Vector &toEpetra(Vector &); -template const Epetra_Vector &toEpetra(const Vector &); -#endif - -#ifdef HAVE_TPETRA_INST_SERIAL -template class EpetraVectorT; -template Epetra_Vector &toEpetra(Vector &); -template const Epetra_Vector &toEpetra(const Vector &); -#endif -#ifdef HAVE_TPETRA_INST_PTHREAD -template class EpetraVectorT; -template Epetra_Vector &toEpetra(Vector &); -template const Epetra_Vector &toEpetra(const Vector &); -#endif -#ifdef HAVE_TPETRA_INST_OPENMP -template class EpetraVectorT; -template Epetra_Vector &toEpetra(Vector &); -template const Epetra_Vector &toEpetra(const Vector &); -#endif -#ifdef HAVE_TPETRA_INST_CUDA -typedef Tpetra::KokkosCompat::KokkosCudaWrapperNode default_node_type; -template class EpetraVectorT; -template Epetra_Vector &toEpetra(Vector &); -template const Epetra_Vector &toEpetra(const Vector &); -#endif -#ifdef HAVE_TPETRA_INST_HIP -typedef Tpetra::KokkosCompat::KokkosHIPWrapperNode default_node_type; -template class EpetraVectorT; -template Epetra_Vector &toEpetra(Vector &); -template const Epetra_Vector &toEpetra(const Vector &); -#endif -#else -// Tpetra is disabled and Kokkos not available: use dummy node type -typedef Xpetra::EpetraNode default_node_type; -template class EpetraVectorT; -template Epetra_Vector &toEpetra(Vector &); -template const Epetra_Vector &toEpetra(const Vector &); -#endif // HAVE_XPETRA_TPETRA -#endif - -#ifndef XPETRA_EPETRA_NO_64BIT_GLOBAL_INDICES -#ifdef HAVE_XPETRA_TPETRA -#include "TpetraCore_config.h" -#if ((defined(EPETRA_HAVE_OMP) && !defined(HAVE_TPETRA_INST_OPENMP)) || \ - (!defined(EPETRA_HAVE_OMP) && !defined(HAVE_TPETRA_INST_SERIAL))) -template class EpetraVectorT; -template Epetra_Vector &toEpetra(Vector &); -template const Epetra_Vector &toEpetra(const Vector &); -#endif - -#ifdef HAVE_TPETRA_INST_SERIAL -template class EpetraVectorT; -template Epetra_Vector &toEpetra(Vector &); -template const Epetra_Vector &toEpetra(const Vector &); -#endif -#ifdef HAVE_TPETRA_INST_PTHREAD -template class EpetraVectorT; -template Epetra_Vector &toEpetra(Vector &); -template const Epetra_Vector &toEpetra(const Vector &); -#endif -#ifdef HAVE_TPETRA_INST_OPENMP -template class EpetraVectorT; -template Epetra_Vector &toEpetra(Vector &); -template const Epetra_Vector &toEpetra(const Vector &); -#endif -#ifdef HAVE_TPETRA_INST_CUDA -typedef Tpetra::KokkosCompat::KokkosCudaWrapperNode default_node_type; -template class EpetraVectorT; -template Epetra_Vector &toEpetra(Vector &); -template const Epetra_Vector &toEpetra(const Vector &); -#endif -#ifdef HAVE_TPETRA_INST_HIP -typedef Tpetra::KokkosCompat::KokkosHIPWrapperNode default_node_type; -template class EpetraVectorT; -template Epetra_Vector &toEpetra(Vector &); -template const Epetra_Vector &toEpetra(const Vector &); -#endif -#else -// Tpetra is disabled and Kokkos not available: use dummy node type -typedef Xpetra::EpetraNode default_node_type; -template class EpetraVectorT; -template Epetra_Vector &toEpetra(Vector &); -template const Epetra_Vector &toEpetra(const Vector &); -#endif // HAVE_XPETRA_TPETRA -#endif - -} // namespace Xpetra diff --git a/packages/xpetra/src/Vector/Xpetra_EpetraVector.hpp b/packages/xpetra/src/Vector/Xpetra_EpetraVector.hpp deleted file mode 100644 index 4ce93d1198a6..000000000000 --- a/packages/xpetra/src/Vector/Xpetra_EpetraVector.hpp +++ /dev/null @@ -1,531 +0,0 @@ -// @HEADER -// ***************************************************************************** -// Xpetra: A linear algebra interface package -// -// Copyright 2012 NTESS and the Xpetra contributors. -// SPDX-License-Identifier: BSD-3-Clause -// ***************************************************************************** -// @HEADER - -#ifndef XPETRA_EPETRAVECTOR_HPP -#define XPETRA_EPETRAVECTOR_HPP - -/* this file is automatically generated - do not edit (see script/epetra.py) */ - -#include "Xpetra_EpetraConfigDefs.hpp" - -#include "Xpetra_Vector.hpp" -#include "Xpetra_EpetraMultiVector.hpp" -#include "Xpetra_EpetraMap.hpp" //TMP -#include "Xpetra_Utils.hpp" -#include "Xpetra_EpetraImport.hpp" -#include "Xpetra_EpetraExport.hpp" -#include "Xpetra_Exceptions.hpp" - -#include - -#if defined(XPETRA_ENABLE_DEPRECATED_CODE) -#ifdef __GNUC__ -#if defined(Xpetra_SHOW_DEPRECATED_WARNINGS) -#warning "The header file Trilinos/packages/xpetra/src/Vector/Xpetra_EpetraVector.hpp is deprecated." -#endif -#endif -#else -#error "The header file Trilinos/packages/xpetra/src/Vector/Xpetra_EpetraVector.hpp is deprecated." -#endif - -namespace Xpetra { - -// TODO: move that elsewhere -template -XPETRA_DEPRECATED Epetra_Vector &toEpetra(Vector &); - -template -XPETRA_DEPRECATED const Epetra_Vector &toEpetra(const Vector &); -// - -template -class XPETRA_DEPRECATED EpetraVectorT - : public virtual Vector, - public EpetraMultiVectorT { - typedef double Scalar; - typedef int LocalOrdinal; - typedef EpetraGlobalOrdinal GlobalOrdinal; - - public: - //! Compute 1-norm of each vector in multi-vector. - void norm1(const Teuchos::ArrayView::magnitudeType> &norms) const {} - - //! - void norm2(const Teuchos::ArrayView::magnitudeType> &norms) const {} - - //! Compute Inf-norm of each vector in multi-vector. - void normInf(const Teuchos::ArrayView::magnitudeType> &norms) const {} - - //! Compute mean (average) value of each vector in multi-vector. The outcome of this routine is undefined for non-floating point scalar types (e.g., int). - void meanValue(const Teuchos::ArrayView &means) const {} - - //! Replace value, using global (row) index. - void replaceGlobalValue(GlobalOrdinal globalRow, size_t vectorIndex, const Scalar &value) {} - - //! Add value to existing value, using global (row) index. - void sumIntoGlobalValue(GlobalOrdinal globalRow, size_t vectorIndex, const Scalar &value) {} - - //! Replace value, using local (row) index. - void replaceLocalValue(LocalOrdinal myRow, size_t vectorIndex, const Scalar &value) {} - - //! Add value to existing value, using local (row) index. - void sumIntoLocalValue(LocalOrdinal myRow, size_t vectorIndex, const Scalar &value) {} - - //! Compute the dot product of each corresponding pair of vectors (columns) in A and B. - void dot(const MultiVector &A, const Teuchos::ArrayView &dots) const {} - - //! @name Constructor/Destructor Methods - //@{ - - //! Sets all vector entries to zero. - explicit EpetraVectorT(const RCP > &map, bool zeroOut = true) - : EpetraMultiVectorT(map, 1, zeroOut){}; - - // Commenting out since no definition provided in cpp. - //! Vector copy constructor. - // EpetraVectorT(const Vector< Scalar, LocalOrdinal, GlobalOrdinal, Node > &source); - - //! Destructor. - virtual ~EpetraVectorT() {} - - //@} - - //! @name Post-construction modification routines - //@{ - - //! Replace current value at the specified location with specified value. - void replaceGlobalValue(GlobalOrdinal globalRow, const Scalar &value){}; - - //! Adds specified value to existing value at the specified location. - void sumIntoGlobalValue(GlobalOrdinal globalRow, const Scalar &value){}; - - //! Replace current value at the specified location with specified values. - void replaceLocalValue(LocalOrdinal myRow, const Scalar &value){}; - - //! Adds specified value to existing value at the specified location. - void sumIntoLocalValue(LocalOrdinal myRow, const Scalar &value){}; - - //@} - - //! @name Mathematical methods - //@{ - - //! Computes dot product of this Vector against input Vector x. - Scalar dot(const Vector &a) const { return Teuchos::ScalarTraits::zero(); }; - - //! Return 1-norm of this Vector. - Teuchos::ScalarTraits::magnitudeType norm1() const { return Teuchos::ScalarTraits::magnitude(Teuchos::ScalarTraits::zero()); }; - - //! Compute 2-norm of this Vector. - Teuchos::ScalarTraits::magnitudeType norm2() const { return Teuchos::ScalarTraits::magnitude(Teuchos::ScalarTraits::zero()); }; - - //! Compute Inf-norm of this Vector. - Teuchos::ScalarTraits::magnitudeType normInf() const { return Teuchos::ScalarTraits::magnitude(Teuchos::ScalarTraits::zero()); }; - - //! Compute Weighted 2-norm (RMS Norm) of this Vector. - // Teuchos::ScalarTraits< Scalar >::magnitudeType normWeighted(const Vector< Scalar, LocalOrdinal, GlobalOrdinal, Node > &weights) const; - - //! Compute mean (average) value of this Vector. - Scalar meanValue() const { return Teuchos::ScalarTraits::zero(); }; - - //@} - - //! @name Overridden from Teuchos::Describable - //@{ - - //! Return a simple one-line description of this object. - std::string description() const { return std::string(""); } - - //! Print the object with some verbosity level to an FancyOStream object. - void describe(Teuchos::FancyOStream &out, const Teuchos::EVerbosityLevel verbLevel = Teuchos::Describable::verbLevel_default) const {}; - - //@} - - //! @name Xpetra specific - //@{ - - //! EpetraMultiVectorT constructor to wrap a Epetra_Vector object - EpetraVectorT(const Teuchos::RCP &vec) - : EpetraMultiVectorT(vec) { // TODO: removed const of Epetra::Vector - TEUCHOS_TEST_FOR_EXCEPTION(true, Xpetra::Exceptions::RuntimeError, - "Xpetra::EpetraVector only available for GO=int or GO=long long with EpetraNode (Serial or OpenMP depending on configuration)"); - } - - //! Get the underlying Epetra vector - Epetra_Vector *getEpetra_Vector() const { return NULL; /*return (*this->EpetraMultiVectorT::getEpetra_MultiVector())(0);*/ } - // RCP getEpetra_Vector() const { return this->EpetraMultiVectorT::getEpetra_MultiVector()->getVectorNonConst(0); } - - //! This constructor creates a Vector which is a view of column j of the MultiVector 'mv'. - //! It implements the logic of MultiVector::getVector/getVectorNonConst() for Epetra MultiVector. - //! The newly created Xpetra::EpetraVectorT will remain valid after the disappearance of the references to 'mv' in user code. - EpetraVectorT(const RCP &mv, size_t j) - : EpetraMultiVectorT(mv){}; - - //@} - - private: - // This private member is only used by the constructor EpetraVectorT(const RCP > &mv, size_t j). The actual private member holding the Epetra vector (vec_) is in the base class (Xpetra:EpetraMultiVectorT) - // TODO remove this... - const RCP internalRefToBaseMV_; - -}; // EpetraVectorT class - -// specialization on GO=int and Node=Serial -#ifndef XPETRA_EPETRA_NO_32BIT_GLOBAL_INDICES -template <> -class EpetraVectorT - : public virtual Vector, public EpetraMultiVectorT { - typedef double Scalar; - typedef int LocalOrdinal; - typedef int GlobalOrdinal; - typedef EpetraNode Node; - - public: - using EpetraMultiVectorT::dot; // overloading, not hiding - using EpetraMultiVectorT::norm1; // overloading, not hiding - using EpetraMultiVectorT::norm2; // overloading, not hiding - using EpetraMultiVectorT::normInf; // overloading, not hiding - using EpetraMultiVectorT::meanValue; // overloading, not hiding - using EpetraMultiVectorT::replaceGlobalValue; // overloading, not hiding - using EpetraMultiVectorT::sumIntoGlobalValue; // overloading, not hiding - using EpetraMultiVectorT::replaceLocalValue; // overloading, not hiding - using EpetraMultiVectorT::sumIntoLocalValue; // overloading, not hiding - - //! @name Constructor/Destructor Methods - //@{ - - //! Sets all vector entries to zero. - explicit EpetraVectorT(const Teuchos::RCP > &map, bool zeroOut = true) - : EpetraMultiVectorT(map, 1, zeroOut) {} - - // Commenting out since no definition provided in cpp. - //! Vector copy constructor. - // EpetraVectorT(const Vector< Scalar, LocalOrdinal, GlobalOrdinal, Node > &source); - - //! Destructor. - virtual ~EpetraVectorT() {} - - //@} - - //! @name Post-construction modification routines - //@{ - - //! Replace current value at the specified location with specified value. - void replaceGlobalValue(GlobalOrdinal globalRow, const Scalar &value) { - XPETRA_MONITOR("EpetraVectorT::replaceGlobalValue"); - this->EpetraMultiVectorT::getEpetra_MultiVector()->ReplaceGlobalValue(globalRow, 0, value); - } - - //! Adds specified value to existing value at the specified location. - void sumIntoGlobalValue(GlobalOrdinal globalRow, const Scalar &value) { - XPETRA_MONITOR("EpetraVectorT::sumIntoGlobalValue"); - this->EpetraMultiVectorT::getEpetra_MultiVector()->SumIntoGlobalValue(globalRow, 0, value); - } - - //! Replace current value at the specified location with specified values. - void replaceLocalValue(LocalOrdinal myRow, const Scalar &value) { - XPETRA_MONITOR("EpetraVectorT::replaceLocalValue"); - this->EpetraMultiVectorT::getEpetra_MultiVector()->ReplaceMyValue(myRow, 0, value); - } - - //! Adds specified value to existing value at the specified location. - void sumIntoLocalValue(LocalOrdinal myRow, const Scalar &value) { - XPETRA_MONITOR("EpetraVectorT::sumIntoLocalValue"); - this->EpetraMultiVectorT::getEpetra_MultiVector()->SumIntoMyValue(myRow, 0, value); - } - - //@} - - //! @name Mathematical methods - //@{ - - //! Computes dot product of this Vector against input Vector x. - Scalar dot(const Vector &a) const { - XPETRA_MONITOR("EpetraVectorT::dot"); - - XPETRA_DYNAMIC_CAST(const EpetraVectorT, a, tA, "This Xpetra::EpetraVectorT method only accept Xpetra::EpetraVectorT as input arguments."); - // return getEpetra_Vector()->Dot(*tA.getEpetra_Vector()); - - // other way: use the MultiVector Dot instead of VectorDot: - double r; - this->EpetraMultiVectorT::getEpetra_MultiVector()->Epetra_MultiVector::Dot(*tA.getEpetra_MultiVector(), &r); - return r; - } - - //! Return 1-norm of this Vector. - Teuchos::ScalarTraits::magnitudeType norm1() const { - XPETRA_MONITOR("EpetraVectorT::norm1"); - Scalar r; - this->EpetraMultiVectorT::getEpetra_MultiVector()->Norm1(&r); - return r; - } - - //! Compute 2-norm of this Vector. - Teuchos::ScalarTraits::magnitudeType norm2() const { - XPETRA_MONITOR("EpetraVectorT::norm2"); - Scalar r; - this->EpetraMultiVectorT::getEpetra_MultiVector()->Norm2(&r); - return r; - } - - //! Compute Inf-norm of this Vector. - Teuchos::ScalarTraits::magnitudeType normInf() const { - XPETRA_MONITOR("EpetraVectorT::normInf"); - Scalar r; - this->EpetraMultiVectorT::getEpetra_MultiVector()->NormInf(&r); - return r; - } - - //! Compute Weighted 2-norm (RMS Norm) of this Vector. - // Teuchos::ScalarTraits< Scalar >::magnitudeType normWeighted(const Vector< Scalar, LocalOrdinal, GlobalOrdinal, Node > &weights) const; - - //! Compute mean (average) value of this Vector. - Scalar meanValue() const { - XPETRA_MONITOR("EpetraVectorT::meanValue"); - Scalar r; - this->EpetraMultiVectorT::getEpetra_MultiVector()->MeanValue(&r); - return r; - } - - //@} - - //! @name Overridden from Teuchos::Describable - //@{ - - //! Return a simple one-line description of this object. - std::string description() const { - XPETRA_MONITOR("EpetraVectorT::description"); - // This implementation come from Epetra_Vector_def.hpp (without modification) - std::ostringstream oss; - oss << Teuchos::Describable::description(); - oss << "{length=" << this->getGlobalLength() - << "}"; - return oss.str(); - } - - //! Print the object with some verbosity level to an FancyOStream object. - void describe(Teuchos::FancyOStream &out, const Teuchos::EVerbosityLevel verbLevel = Teuchos::Describable::verbLevel_default) const { - XPETRA_MONITOR("EpetraVectorT::describe"); - - if (verbLevel > Teuchos::VERB_NONE) { - getEpetra_Vector()->Print(out); - } - } - //@} - - //! @name Xpetra specific - //@{ - - //! EpetraMultiVectorT constructor to wrap a Epetra_Vector object - EpetraVectorT(const Teuchos::RCP &vec) - : EpetraMultiVectorT(vec) {} // TODO: removed const of Epetra::Vector - - //! Get the underlying Epetra vector - Epetra_Vector *getEpetra_Vector() const { return (*this->EpetraMultiVectorT::getEpetra_MultiVector())(0); } - // RCP getEpetra_Vector() const { return this->EpetraMultiVectorT::getEpetra_MultiVector()->getVectorNonConst(0); } - - //! This constructor creates a Vector which is a view of column j of the MultiVector 'mv'. - //! It implements the logic of MultiVector::getVector/getVectorNonConst() for Epetra MultiVector. - //! The newly created Xpetra::EpetraVectorT will remain valid after the disappearance of the references to 'mv' in user code. - EpetraVectorT(const RCP &mv, size_t j) - : EpetraMultiVectorT(rcp((*mv)(j), false)) - , // view of the vector number j. false == I do not own the data. - internalRefToBaseMV_(mv) // keep an internal reference to the initial MultiVector to avoid desallocation of the view. - { - // The view of the internal data of 'mv' is only valid until the destruction of 'mv'. - // The new vector hold an internal reference to 'mv' in order to keep the view valid after disappearance of 'mv' references in user code. - // This implements the logic of subArray rcp (as required by the Tpetra interface). - } - - //@} - - private: - // This private member is only used by the constructor EpetraVectorT(const RCP > &mv, size_t j). The actual private member holding the Epetra vector (vec_) is in the base class (Xpetra:EpetraMultiVectorT) - const RCP internalRefToBaseMV_; -}; -#endif - -// specialization on GO=long long and Node=Serial -#ifndef XPETRA_EPETRA_NO_64BIT_GLOBAL_INDICES -template <> -class EpetraVectorT - : public virtual Vector, public EpetraMultiVectorT { - typedef double Scalar; - typedef int LocalOrdinal; - typedef long long GlobalOrdinal; - typedef EpetraNode Node; - - public: - using EpetraMultiVectorT::dot; // overloading, not hiding - using EpetraMultiVectorT::norm1; // overloading, not hiding - using EpetraMultiVectorT::norm2; // overloading, not hiding - using EpetraMultiVectorT::normInf; // overloading, not hiding - using EpetraMultiVectorT::meanValue; // overloading, not hiding - using EpetraMultiVectorT::replaceGlobalValue; // overloading, not hiding - using EpetraMultiVectorT::sumIntoGlobalValue; // overloading, not hiding - using EpetraMultiVectorT::replaceLocalValue; // overloading, not hiding - using EpetraMultiVectorT::sumIntoLocalValue; // overloading, not hiding - - //! @name Constructor/Destructor Methods - //@{ - - //! Sets all vector entries to zero. - explicit EpetraVectorT(const Teuchos::RCP > &map, bool zeroOut = true) - : EpetraMultiVectorT(map, 1, zeroOut) {} - - // Commenting out since no definition provided in cpp. - //! Vector copy constructor. - // EpetraVectorT(const Vector< Scalar, LocalOrdinal, GlobalOrdinal, Node > &source); - - //! Destructor. - virtual ~EpetraVectorT() {} - - //@} - - //! @name Post-construction modification routines - //@{ - - //! Replace current value at the specified location with specified value. - void replaceGlobalValue(GlobalOrdinal globalRow, const Scalar &value) { - XPETRA_MONITOR("EpetraVectorT::replaceGlobalValue"); - this->EpetraMultiVectorT::getEpetra_MultiVector()->ReplaceGlobalValue(globalRow, 0, value); - } - - //! Adds specified value to existing value at the specified location. - void sumIntoGlobalValue(GlobalOrdinal globalRow, const Scalar &value) { - XPETRA_MONITOR("EpetraVectorT::sumIntoGlobalValue"); - this->EpetraMultiVectorT::getEpetra_MultiVector()->SumIntoGlobalValue(globalRow, 0, value); - } - - //! Replace current value at the specified location with specified values. - void replaceLocalValue(LocalOrdinal myRow, const Scalar &value) { - XPETRA_MONITOR("EpetraVectorT::replaceLocalValue"); - this->EpetraMultiVectorT::getEpetra_MultiVector()->ReplaceMyValue(myRow, 0, value); - } - - //! Adds specified value to existing value at the specified location. - void sumIntoLocalValue(LocalOrdinal myRow, const Scalar &value) { - XPETRA_MONITOR("EpetraVectorT::sumIntoLocalValue"); - this->EpetraMultiVectorT::getEpetra_MultiVector()->SumIntoMyValue(myRow, 0, value); - } - - //@} - - //! @name Mathematical methods - //@{ - - //! Computes dot product of this Vector against input Vector x. - Scalar dot(const Vector &a) const { - XPETRA_MONITOR("EpetraVectorT::dot"); - - XPETRA_DYNAMIC_CAST(const EpetraVectorT, a, tA, "This Xpetra::EpetraVectorT method only accept Xpetra::EpetraVectorT as input arguments."); - // return getEpetra_Vector()->Dot(*tA.getEpetra_Vector()); - - // other way: use the MultiVector Dot instead of VectorDot: - double r; - this->EpetraMultiVectorT::getEpetra_MultiVector()->Epetra_MultiVector::Dot(*tA.getEpetra_MultiVector(), &r); - return r; - } - - //! Return 1-norm of this Vector. - Teuchos::ScalarTraits::magnitudeType norm1() const { - XPETRA_MONITOR("EpetraVectorT::norm1"); - Scalar r; - this->EpetraMultiVectorT::getEpetra_MultiVector()->Norm1(&r); - return r; - } - - //! Compute 2-norm of this Vector. - Teuchos::ScalarTraits::magnitudeType norm2() const { - XPETRA_MONITOR("EpetraVectorT::norm2"); - Scalar r; - this->EpetraMultiVectorT::getEpetra_MultiVector()->Norm2(&r); - return r; - } - - //! Compute Inf-norm of this Vector. - Teuchos::ScalarTraits::magnitudeType normInf() const { - XPETRA_MONITOR("EpetraVectorT::normInf"); - Scalar r; - this->EpetraMultiVectorT::getEpetra_MultiVector()->NormInf(&r); - return r; - } - - //! Compute Weighted 2-norm (RMS Norm) of this Vector. - // Teuchos::ScalarTraits< Scalar >::magnitudeType normWeighted(const Vector< Scalar, LocalOrdinal, GlobalOrdinal, Node > &weights) const; - - //! Compute mean (average) value of this Vector. - Scalar meanValue() const { - XPETRA_MONITOR("EpetraVectorT::meanValue"); - Scalar r; - this->EpetraMultiVectorT::getEpetra_MultiVector()->MeanValue(&r); - return r; - } - - //@} - - //! @name Overridden from Teuchos::Describable - //@{ - - //! Return a simple one-line description of this object. - std::string description() const { - XPETRA_MONITOR("EpetraVectorT::description"); - // This implementation come from Epetra_Vector_def.hpp (without modification) - std::ostringstream oss; - oss << Teuchos::Describable::description(); - oss << "{length=" << this->getGlobalLength() - << "}"; - return oss.str(); - } - - //! Print the object with some verbosity level to an FancyOStream object. - void describe(Teuchos::FancyOStream &out, const Teuchos::EVerbosityLevel verbLevel = Teuchos::Describable::verbLevel_default) const { - XPETRA_MONITOR("EpetraVectorT::describe"); - - if (verbLevel > Teuchos::VERB_NONE) { - getEpetra_Vector()->Print(out); - } - } - //@} - - //! @name Xpetra specific - //@{ - - //! EpetraMultiVectorT constructor to wrap a Epetra_Vector object - EpetraVectorT(const Teuchos::RCP &vec) - : EpetraMultiVectorT(vec) {} // TODO: removed const of Epetra::Vector - - //! Get the underlying Epetra vector - Epetra_Vector *getEpetra_Vector() const { return (*this->EpetraMultiVectorT::getEpetra_MultiVector())(0); } - // RCP getEpetra_Vector() const { return this->EpetraMultiVectorT::getEpetra_MultiVector()->getVectorNonConst(0); } - - //! This constructor creates a Vector which is a view of column j of the MultiVector 'mv'. - //! It implements the logic of MultiVector::getVector/getVectorNonConst() for Epetra MultiVector. - //! The newly created Xpetra::EpetraVectorT will remain valid after the disappearance of the references to 'mv' in user code. - EpetraVectorT(const RCP &mv, size_t j) - : EpetraMultiVectorT(rcp((*mv)(j), false)) - , // view of the vector number j. false == I do not own the data. - internalRefToBaseMV_(mv) // keep an internal reference to the initial MultiVector to avoid desallocation of the view. - { - // The view of the internal data of 'mv' is only valid until the destruction of 'mv'. - // The new vector hold an internal reference to 'mv' in order to keep the view valid after disappearance of 'mv' references in user code. - // This implements the logic of subArray rcp (as required by the Tpetra interface). - } - - //@} - - private: - // This private member is only used by the constructor EpetraVectorT(const RCP > &mv, size_t j). The actual private member holding the Epetra vector (vec_) is in the base class (Xpetra:EpetraMultiVectorT) - const RCP internalRefToBaseMV_; -}; -#endif - -} // namespace Xpetra - -#endif // XPETRA_EPETRAVECTOR_HPP diff --git a/packages/xpetra/src/Vector/Xpetra_EpetraVectorFactory.cpp b/packages/xpetra/src/Vector/Xpetra_EpetraVectorFactory.cpp deleted file mode 100644 index 4483425b2b0e..000000000000 --- a/packages/xpetra/src/Vector/Xpetra_EpetraVectorFactory.cpp +++ /dev/null @@ -1,136 +0,0 @@ -// @HEADER -// ***************************************************************************** -// Xpetra: A linear algebra interface package -// -// Copyright 2012 NTESS and the Xpetra contributors. -// SPDX-License-Identifier: BSD-3-Clause -// ***************************************************************************** -// @HEADER - -#include "Xpetra_VectorFactory.hpp" -#include "Xpetra_Vector.hpp" -#include "Xpetra_BlockedVector.hpp" - -namespace Xpetra { - -#if defined(HAVE_XPETRA_EPETRA) - -// we need the Epetra specialization only if Epetra is enabled -#if !defined(XPETRA_EPETRA_NO_32BIT_GLOBAL_INDICES) - -RCP> -VectorFactory:: - Build(const Teuchos::RCP>& map, bool zeroOut) { - XPETRA_MONITOR("VectorFactory::Build"); - - RCP> - bmap = Teuchos::rcp_dynamic_cast>(map); - - if (!bmap.is_null()) { - return rcp(new Xpetra::BlockedVector(bmap, zeroOut)); - } - -#ifdef HAVE_XPETRA_TPETRA - if (map->lib() == UseTpetra) { - return rcp(new TpetraVector(map, zeroOut)); - } -#endif // HAVE_XPETRA_TPETRA - - if (map->lib() == UseEpetra) { - return rcp(new EpetraVectorT(map, zeroOut)); - } - - XPETRA_FACTORY_END; -} - -#endif // #if !defined(XPETRA_EPETRA_NO_32BIT_GLOBAL_INDICES) - -#if !defined(XPETRA_EPETRA_NO_64BIT_GLOBAL_INDICES) - -RCP> -VectorFactory:: - Build(const Teuchos::RCP>& map, bool zeroOut) { - XPETRA_MONITOR("VectorFactory::Build"); - - RCP> bmap = - Teuchos::rcp_dynamic_cast>(map); - if (!bmap.is_null()) { - return rcp(new Xpetra::BlockedVector(bmap, zeroOut)); - } - -#ifdef HAVE_XPETRA_TPETRA - if (map->lib() == UseTpetra) { - return rcp(new TpetraVector(map, zeroOut)); - } -#endif - - if (map->lib() == UseEpetra) { - return rcp(new EpetraVectorT(map, zeroOut)); - } - - XPETRA_FACTORY_END; -} - -#endif // #if !defined(XPETRA_EPETRA_NO_64BIT_GLOBAL_INDICES) - -// we need the Epetra specialization only if Epetra is enabled -#if !defined(XPETRA_EPETRA_NO_32BIT_GLOBAL_INDICES) - -RCP> -VectorFactory:: - Build(const Teuchos::RCP>& map, bool zeroOut) { - XPETRA_MONITOR("VectorFactory::Build"); - - RCP> bmap = - Teuchos::rcp_dynamic_cast>(map); - if (!bmap.is_null()) { - return rcp(new Xpetra::BlockedVector(bmap, zeroOut)); - } - -#ifdef HAVE_XPETRA_TPETRA - if (map->lib() == UseTpetra) { - return rcp(new TpetraVector(map, zeroOut)); - } -#endif // HAVE_XPETRA_TPETRA - - if (map->lib() == UseEpetra) { - return rcp(new EpetraIntVectorT(map, zeroOut)); - } - - XPETRA_FACTORY_END; -} - -#endif // #if !defined(XPETRA_EPETRA_NO_32BIT_GLOBAL_INDICES) - -#if !defined(XPETRA_EPETRA_NO_64BIT_GLOBAL_INDICES) - -RCP> -VectorFactory:: - Build(const Teuchos::RCP>& map, bool zeroOut) { - XPETRA_MONITOR("VectorFactory::Build"); - - RCP> bmap = - Teuchos::rcp_dynamic_cast>(map); - - if (!bmap.is_null()) { - return rcp(new Xpetra::BlockedVector(bmap, zeroOut)); - } - -#ifdef HAVE_XPETRA_TPETRA - if (map->lib() == UseTpetra) { - return rcp(new TpetraVector(map, zeroOut)); - } -#endif // HAVE_XPETRA_TPETRA - - if (map->lib() == UseEpetra) { - return rcp(new EpetraIntVectorT(map, zeroOut)); - } - - XPETRA_FACTORY_END; -} - -#endif // #if !defined(XPETRA_EPETRA_NO_64BIT_GLOBAL_INDICES) - -#endif // #if defined(HAVE_XPETRA_EPETRA) - -} // namespace Xpetra diff --git a/packages/xpetra/src/Vector/Xpetra_TpetraVector_def.hpp b/packages/xpetra/src/Vector/Xpetra_TpetraVector_def.hpp index b97c4df627c6..bc1f8986d754 100644 --- a/packages/xpetra/src/Vector/Xpetra_TpetraVector_def.hpp +++ b/packages/xpetra/src/Vector/Xpetra_TpetraVector_def.hpp @@ -128,267 +128,6 @@ TpetraVector:: return this->TpetraMultiVector::getTpetra_MultiVector()->getVectorNonConst(0); } -#ifdef HAVE_XPETRA_EPETRA - -#if ((defined(EPETRA_HAVE_OMP) && (!defined(HAVE_TPETRA_INST_OPENMP) || !defined(HAVE_TPETRA_INST_INT_INT))) || (!defined(EPETRA_HAVE_OMP) && (!defined(HAVE_TPETRA_INST_SERIAL) || !defined(HAVE_TPETRA_INST_INT_INT)))) - -// specialization of TpetraVector for GO=int and NO=SerialNode -template -class TpetraVector - : public virtual Vector, public TpetraMultiVector { - typedef int LocalOrdinal; - typedef int GlobalOrdinal; - typedef EpetraNode Node; - -#undef XPETRA_TPETRAMULTIVECTOR_SHORT -#undef XPETRA_TPETRAVECTOR_SHORT -#include "Xpetra_UseShortNames.hpp" -#define XPETRA_TPETRAMULTIVECTOR_SHORT -#define XPETRA_TPETRAVECTOR_SHORT - - public: - using TpetraMultiVector::dot; // overloading, not hiding - using TpetraMultiVector::norm1; // overloading, not hiding - using TpetraMultiVector::norm2; // overloading, not hiding - using TpetraMultiVector::normInf; // overloading, not hiding - using TpetraMultiVector::meanValue; // overloading, not hiding - using TpetraMultiVector::replaceGlobalValue; // overloading, not hiding - using TpetraMultiVector::sumIntoGlobalValue; // overloading, not hiding - using TpetraMultiVector::replaceLocalValue; // overloading, not hiding - using TpetraMultiVector::sumIntoLocalValue; // overloading, not hiding - - //! @name Constructor/Destructor Methods - //@{ - - //! Sets all vector entries to zero. - TpetraVector(const Teuchos::RCP& map, bool zeroOut = true) - : TpetraMultiVector(map, 1, zeroOut) { - XPETRA_TPETRA_ETI_EXCEPTION(typeid(TpetraVector).name(), - typeid(TpetraVector).name(), - "int", - typeid(EpetraNode).name()); - } - - //! Set multi-vector values from an array using Teuchos memory management classes. (copy) - TpetraVector(const Teuchos::RCP& map, const Teuchos::ArrayView& A) - : TpetraMultiVector(map, A, map->getLocalNumElements(), 1) { - XPETRA_TPETRA_ETI_EXCEPTION(typeid(TpetraVector).name(), - typeid(TpetraVector).name(), - "int", - typeid(EpetraNode).name()); - } - - virtual ~TpetraVector() {} - - void replaceGlobalValue(GlobalOrdinal globalRow, const Scalar& value) {} - - //! Adds specified value to existing value at the specified location. - void sumIntoGlobalValue(GlobalOrdinal globalRow, const Scalar& value) {} - - //! Replace current value at the specified location with specified values. - void replaceLocalValue(LocalOrdinal myRow, const Scalar& value) {} - - //! Adds specified value to existing value at the specified location. - void sumIntoLocalValue(LocalOrdinal myRow, const Scalar& value) {} - - //@} - - //! @name Mathematical methods - //@{ - - //! Return 1-norm of this Vector. - typename Teuchos::ScalarTraits::magnitudeType norm1() const { - return Teuchos::ScalarTraits::magnitude(Teuchos::ScalarTraits::zero()); - } - - //! Compute 2-norm of this Vector. - typename Teuchos::ScalarTraits::magnitudeType norm2() const { - return Teuchos::ScalarTraits::magnitude(Teuchos::ScalarTraits::zero()); - } - - //! Compute Inf-norm of this Vector. - typename Teuchos::ScalarTraits::magnitudeType normInf() const { - return Teuchos::ScalarTraits::magnitude(Teuchos::ScalarTraits::zero()); - } - - //! Compute mean (average) value of this Vector. - Scalar meanValue() const { return Teuchos::ScalarTraits::zero(); } - - //@} - - //! @name Overridden from Teuchos::Describable - //@{ - - //! Return a simple one-line description of this object. - std::string description() const { return std::string(""); } - - //! Print the object with some verbosity level to an FancyOStream object. - void describe(Teuchos::FancyOStream& out, const Teuchos::EVerbosityLevel verbLevel = Teuchos::Describable::verbLevel_default) const {} - - //@} - - //! Computes dot product of this Vector against input Vector x. - Scalar dot(const Vector& a) const { return Teuchos::ScalarTraits::zero(); } - - //! @name Xpetra specific - //@{ - - //! TpetraMultiVector constructor to wrap a Tpetra::MultiVector object - TpetraVector(const Teuchos::RCP>& vec) - : TpetraMultiVector(vec) { - XPETRA_TPETRA_ETI_EXCEPTION(typeid(TpetraVector).name(), - typeid(TpetraVector).name(), - "int", - typeid(EpetraNode).name()); - } - - //! Get the underlying Tpetra multivector - RCP> - getTpetra_Vector() const { - return Teuchos::null; - } - - //@} - -}; // TpetraVector class (specialization on GO=int, NO=EpetraNode) - -#endif // #if((defined(EPETRA_HAVE_OMP) && (!defined(HAVE_TPETRA_INST_OPENMP) || !defined(HAVE_TPETRA_INST_INT_INT))) - // || (!defined(EPETRA_HAVE_OMP) && (!defined(HAVE_TPETRA_INST_SERIAL) || !defined(HAVE_TPETRA_INST_INT_INT)))) - -#if ((defined(EPETRA_HAVE_OMP) && (!defined(HAVE_TPETRA_INST_OPENMP) || !defined(HAVE_TPETRA_INST_INT_LONG_LONG))) || (!defined(EPETRA_HAVE_OMP) && (!defined(HAVE_TPETRA_INST_SERIAL) || !defined(HAVE_TPETRA_INST_INT_LONG_LONG)))) - -// specialization of TpetraVector for GO=int and NO=SerialNode -template -class TpetraVector - : public virtual Vector, public TpetraMultiVector { - typedef int LocalOrdinal; - typedef long long GlobalOrdinal; - typedef EpetraNode Node; - -#undef XPETRA_TPETRAMULTIVECTOR_SHORT -#undef XPETRA_TPETRAVECTOR_SHORT -#include "Xpetra_UseShortNames.hpp" -#define XPETRA_TPETRAMULTIVECTOR_SHORT -#define XPETRA_TPETRAVECTOR_SHORT - - public: - using TpetraMultiVector::dot; // overloading, not hiding - using TpetraMultiVector::norm1; // overloading, not hiding - using TpetraMultiVector::norm2; // overloading, not hiding - using TpetraMultiVector::normInf; // overloading, not hiding - using TpetraMultiVector::meanValue; // overloading, not hiding - using TpetraMultiVector::replaceGlobalValue; // overloading, not hiding - using TpetraMultiVector::sumIntoGlobalValue; // overloading, not hiding - using TpetraMultiVector::replaceLocalValue; // overloading, not hiding - using TpetraMultiVector::sumIntoLocalValue; // overloading, not hiding - - //! @name Constructor/Destructor Methods - //@{ - - //! Sets all vector entries to zero. - TpetraVector(const Teuchos::RCP& map, bool zeroOut = true) - : TpetraMultiVector(map, 1, zeroOut) { - XPETRA_TPETRA_ETI_EXCEPTION(typeid(TpetraVector).name(), - typeid(TpetraVector).name(), - "long long", - typeid(EpetraNode).name()); - } - - //! Set multi-vector values from an array using Teuchos memory management classes. (copy) - TpetraVector(const Teuchos::RCP& map, const Teuchos::ArrayView& A) - : TpetraMultiVector(map, A, map->getLocalNumElements(), 1) { - XPETRA_TPETRA_ETI_EXCEPTION(typeid(TpetraVector).name(), - typeid(TpetraVector).name(), - "long long", - typeid(EpetraNode).name()); - } - - //! Destructor. - virtual ~TpetraVector() {} - - //@} - - //! @name Post-construction modification routines - //@{ - - //! Replace current value at the specified location with specified value. - void replaceGlobalValue(GlobalOrdinal globalRow, const Scalar& value) {} - - //! Adds specified value to existing value at the specified location. - void sumIntoGlobalValue(GlobalOrdinal globalRow, const Scalar& value) {} - - //! Replace current value at the specified location with specified values. - void replaceLocalValue(LocalOrdinal myRow, const Scalar& value) {} - - //! Adds specified value to existing value at the specified location. - void sumIntoLocalValue(LocalOrdinal myRow, const Scalar& value) {} - - //@} - - //! @name Mathematical methods - //@{ - - //! Return 1-norm of this Vector. - typename Teuchos::ScalarTraits::magnitudeType norm1() const { - return Teuchos::ScalarTraits::magnitude(Teuchos::ScalarTraits::zero()); - } - - //! Compute 2-norm of this Vector. - typename Teuchos::ScalarTraits::magnitudeType norm2() const { - return Teuchos::ScalarTraits::magnitude(Teuchos::ScalarTraits::zero()); - } - - //! Compute Inf-norm of this Vector. - typename Teuchos::ScalarTraits::magnitudeType normInf() const { - return Teuchos::ScalarTraits::magnitude(Teuchos::ScalarTraits::zero()); - } - - //! Compute mean (average) value of this Vector. - Scalar meanValue() const { return Teuchos::ScalarTraits::zero(); } - - //@} - - //! @name Overridden from Teuchos::Describable - //@{ - - //! Return a simple one-line description of this object. - std::string description() const { return std::string(""); } - - //! Print the object with some verbosity level to an FancyOStream object. - void describe(Teuchos::FancyOStream& out, const Teuchos::EVerbosityLevel verbLevel = Teuchos::Describable::verbLevel_default) const {} - - //@} - - //! Computes dot product of this Vector against input Vector x. - Scalar dot(const Vector& a) const { return Teuchos::ScalarTraits::zero(); } - - //! Compute Weighted 2-norm (RMS Norm) of this Vector. - - //! @name Xpetra specific - //@{ - - //! TpetraMultiVector constructor to wrap a Tpetra::MultiVector object - TpetraVector(const Teuchos::RCP>& vec) { - XPETRA_TPETRA_ETI_EXCEPTION(typeid(TpetraVector).name(), - typeid(TpetraVector).name(), - "long long", - typeid(EpetraNode).name()); - } - - //! Get the underlying Tpetra multivector - RCP> - getTpetra_Vector() const { - return Teuchos::null; - } - - //@} - -}; // TpetraVector class (specialization on GO=long long, NO=EpetraNode) - -#endif // #if((defined(EPETRA_HAVE_OMP) && (!defined(HAVE_TPETRA_INST_OPENMP) || !defined(HAVE_TPETRA_INST_INT_LONG_LONG))) - // || (!defined(EPETRA_HAVE_OMP) && (!defined(HAVE_TPETRA_INST_SERIAL) || !defined(HAVE_TPETRA_INST_INT_LONG_LONG)))) - -#endif // HAVE_XPETRA_EPETRA } // namespace Xpetra #endif diff --git a/packages/xpetra/src/Vector/Xpetra_VectorFactory_decl.hpp b/packages/xpetra/src/Vector/Xpetra_VectorFactory_decl.hpp index a8c394451d0a..4c188e891610 100644 --- a/packages/xpetra/src/Vector/Xpetra_VectorFactory_decl.hpp +++ b/packages/xpetra/src/Vector/Xpetra_VectorFactory_decl.hpp @@ -13,13 +13,7 @@ #include "Xpetra_ConfigDefs.hpp" #include "Xpetra_Vector.hpp" -#ifdef HAVE_XPETRA_TPETRA #include "Xpetra_TpetraVector_decl.hpp" -#endif -#ifdef HAVE_XPETRA_EPETRA -#include "Xpetra_EpetraVector.hpp" -#include "Xpetra_EpetraIntVector.hpp" -#endif #include "Xpetra_BlockedMap_decl.hpp" #include "Xpetra_BlockedVector_decl.hpp" @@ -52,11 +46,9 @@ class VectorFactory { return rcp(new Xpetra::BlockedVector(bmap, zeroOut)); } -#ifdef HAVE_XPETRA_TPETRA if (map->lib() == UseTpetra) { return rcp(new TpetraVector(map, zeroOut)); } -#endif XPETRA_FACTORY_ERROR_IF_EPETRA(map->lib()); XPETRA_FACTORY_END; @@ -67,119 +59,6 @@ class VectorFactory { #define XPETRA_VECTORFACTORY_SHORT -#if defined(HAVE_XPETRA_EPETRA) - -// we need the Epetra specialization only if Epetra is enabled -#if !defined(XPETRA_EPETRA_NO_32BIT_GLOBAL_INDICES) - -// Specialization for Scalar=double, LO=GO=int and EpetraNode node -// Used both for Epetra and Tpetra -// For any other node definition the general default implementation is used which allows Tpetra only -template <> -class VectorFactory { - typedef double Scalar; - typedef int LocalOrdinal; - typedef int GlobalOrdinal; - typedef EpetraNode Node; - -#undef XPETRA_VECTORFACTORY_SHORT -#include "Xpetra_UseShortNames.hpp" - - private: - //! Private constructor. This is a static class. - VectorFactory() = default; - - public: - static RCP> - Build(const Teuchos::RCP>& map, - bool zeroOut = true); -}; -#endif // #if !defined(XPETRA_EPETRA_NO_32BIT_GLOBAL_INDICES) - -// Specialization for Scalar=double, LO=int, GO=long long and EpetraNode -// Used both for Epetra and Tpetra -// For any other node definition the general default implementation is used which allows Tpetra only -#if !defined(XPETRA_EPETRA_NO_64BIT_GLOBAL_INDICES) - -template <> -class VectorFactory { - typedef double Scalar; - typedef int LocalOrdinal; - typedef long long GlobalOrdinal; - typedef EpetraNode Node; - -#undef XPETRA_VECTORFACTORY_SHORT -#include "Xpetra_UseShortNames.hpp" - - private: - //! Private constructor. This is a static class. - VectorFactory() = default; - - public: - static RCP> - Build(const Teuchos::RCP>& map, - bool zeroOut = true); -}; -#endif // #if !defined(XPETRA_EPETRA_NO_64BIT_GLOBAL_INDICES) -#define XPETRA_VECTORFACTORY_SHORT - -// we need the Epetra specialization only if Epetra is enabled -#if !defined(XPETRA_EPETRA_NO_32BIT_GLOBAL_INDICES) - -// Specialization for Scalar=int, LO=GO=int and EpetraNode -// Used both for Epetra and Tpetra -// For any other node definition the general default implementation is used which allows Tpetra only -template <> -class VectorFactory { - typedef int Scalar; - typedef int LocalOrdinal; - typedef int GlobalOrdinal; - typedef EpetraNode Node; - -#undef XPETRA_VECTORFACTORY_SHORT -#include "Xpetra_UseShortNames.hpp" - - private: - //! Private constructor. This is a static class. - VectorFactory() = default; - - public: - static RCP> - Build(const Teuchos::RCP>& map, - bool zeroOut = true); -}; -#endif // #if !defined(XPETRA_EPETRA_NO_32BIT_GLOBAL_INDICES) - -// we need the Epetra specialization only if Epetra is enabled -#if !defined(XPETRA_EPETRA_NO_64BIT_GLOBAL_INDICES) - -// Specialization for Scalar=int, LO=int, GO=long long and Serial node -// Used both for Epetra and Tpetra -// For any other node definition the general default implementation is used which allows Tpetra only - -template <> -class VectorFactory { - typedef int Scalar; - typedef int LocalOrdinal; - typedef long long GlobalOrdinal; - typedef EpetraNode Node; - -#undef XPETRA_VECTORFACTORY_SHORT -#include "Xpetra_UseShortNames.hpp" - - private: - //! Private constructor. This is a static class. - VectorFactory() = default; - - public: - static RCP> - Build(const Teuchos::RCP>& map, - bool zeroOut = true); -}; -#endif // !defined(XPETRA_EPETRA_NO_64BIT_GLOBAL_INDICES) - -#endif // #if defined(HAVE_XPETRA_EPETRA) - } // namespace Xpetra #define XPETRA_VECTORFACTORY_SHORT diff --git a/packages/xpetra/test/BlockedCrsMatrix/BlockedCrsMatrix_UnitTests.cpp b/packages/xpetra/test/BlockedCrsMatrix/BlockedCrsMatrix_UnitTests.cpp deleted file mode 100644 index 42e6a0dcd79d..000000000000 --- a/packages/xpetra/test/BlockedCrsMatrix/BlockedCrsMatrix_UnitTests.cpp +++ /dev/null @@ -1,3058 +0,0 @@ -// @HEADER -// ***************************************************************************** -// Xpetra: A linear algebra interface package -// -// Copyright 2012 NTESS and the Xpetra contributors. -// SPDX-License-Identifier: BSD-3-Clause -// ***************************************************************************** -// @HEADER - -#include -#include -#include -#include -#include -#include -#include - -#ifdef HAVE_MPI -#include "Epetra_MpiComm.h" -#include "mpi.h" -#endif -#include "Epetra_SerialComm.h" - -#include - -#ifdef HAVE_XPETRA_EPETRAEXT -// EpetraExt -#include "EpetraExt_CrsMatrixIn.h" -#include "EpetraExt_VectorIn.h" -#include "EpetraExt_VectorOut.h" -#include "EpetraExt_MatrixMatrix.h" -#include "EpetraExt_RowMatrixOut.h" -#endif - -// Epetra routines to split matrix and maps -#include "BlockedMatrixTestHelpers.hpp" - -#include - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -namespace XpetraBlockMatrixTests { - -bool testMpi = true; -double errorTolSlack = 1e+1; - -Teuchos::RCP> getDefaultComm() { - if (testMpi) { - return Xpetra::DefaultPlatform::getDefaultPlatform().getComm(); - } - return rcp(new Teuchos::SerialComm()); -} - -///////////////////////////////////////////////////// - -TEUCHOS_STATIC_SETUP() { - Teuchos::CommandLineProcessor& clp = Teuchos::UnitTestRepository::getCLP(); - clp.addOutputSetupOptions(true); - clp.setOption( - "test-mpi", "test-serial", &testMpi, - "Test MPI (if available) or force test of serial. In a serial build," - " this option is ignored and a serial comm is always used."); - clp.setOption( - "error-tol-slack", &errorTolSlack, - "Slack off of machine epsilon used to check test results"); -} - -// -// UNIT TESTS -// - -TEUCHOS_UNIT_TEST_TEMPLATE_6_DECL(BlockedCrsMatrix, SplitMatrix, M, MA, Scalar, LO, GO, Node) { - typedef Xpetra::Map MapClass; - typedef Xpetra::MapFactory MapFactoryClass; - typedef Xpetra::Vector VectorClass; - typedef Xpetra::VectorFactory VectorFactoryClass; - typedef Xpetra::MapExtractor MapExtractorClass; - typedef Xpetra::MapExtractorFactory MapExtractorFactoryClass; - typedef Teuchos::ScalarTraits STS; - - // get a comm and node - Teuchos::RCP> comm = getDefaultComm(); - - M testMap(1, 0, comm); - Xpetra::UnderlyingLib lib = testMap.lib(); - - // generate problem - GO nEle = 63; - const Teuchos::RCP map = MapFactoryClass::Build(lib, nEle, 0, comm); - - LO NumMyElements = map->getLocalNumElements(); - GO NumGlobalElements = map->getGlobalNumElements(); - Teuchos::ArrayView MyGlobalElements = map->getLocalElementList(); - - Teuchos::RCP> A = - Xpetra::CrsMatrixFactory::Build(map, 3); - TEUCHOS_TEST_FOR_EXCEPTION(A->isFillComplete() == true || A->isFillActive() == false, std::runtime_error, ""); - - for (LO i = 0; i < NumMyElements; i++) { - if (MyGlobalElements[i] == 0) { - A->insertGlobalValues(MyGlobalElements[i], - Teuchos::tuple(MyGlobalElements[i], MyGlobalElements[i] + 1), - Teuchos::tuple(Teuchos::as(i) * STS::one(), -1.0)); - } else if (MyGlobalElements[i] == NumGlobalElements - 1) { - A->insertGlobalValues(MyGlobalElements[i], - Teuchos::tuple(MyGlobalElements[i] - 1, MyGlobalElements[i]), - Teuchos::tuple(-1.0, Teuchos::as(i) * STS::one())); - } else { - A->insertGlobalValues(MyGlobalElements[i], - Teuchos::tuple(MyGlobalElements[i] - 1, MyGlobalElements[i], MyGlobalElements[i] + 1), - Teuchos::tuple(-1.0, Teuchos::as(i) * STS::one(), -1.0)); - } - } - - A->fillComplete(); - TEUCHOS_TEST_FOR_EXCEPTION(A->isFillComplete() == false || A->isFillActive() == true, std::runtime_error, ""); - - Teuchos::RCP> mat = - Teuchos::rcp(new Xpetra::CrsMatrixWrap(A)); - - Teuchos::Array gids1; - Teuchos::Array gids2; - for (LO i = 0; i < NumMyElements; i++) { - if (i % 3 < 2) - gids1.push_back(map->getGlobalElement(i)); - else - gids2.push_back(map->getGlobalElement(i)); - } - - const Teuchos::RCP map1 = MapFactoryClass::Build(lib, - Teuchos::OrdinalTraits::invalid(), - gids1.view(0, gids1.size()), - 0, - comm); - const Teuchos::RCP map2 = MapFactoryClass::Build(lib, - Teuchos::OrdinalTraits::invalid(), - gids2.view(0, gids2.size()), - 0, - comm); - - std::vector> xmaps; - xmaps.push_back(map1); - xmaps.push_back(map2); - - Teuchos::RCP rowMapExtractormap_extractor = MapExtractorFactoryClass::Build(map, xmaps); - - Teuchos::RCP> bOp = - Xpetra::MatrixUtils::SplitMatrix(*mat, rowMapExtractormap_extractor, rowMapExtractormap_extractor); - - // build gloabl vector with one entries - Teuchos::RCP ones = VectorFactoryClass::Build(map, true); - Teuchos::RCP exp = VectorFactoryClass::Build(map, true); - Teuchos::RCP res = VectorFactoryClass::Build(map, true); - Teuchos::RCP rnd = VectorFactoryClass::Build(map, true); - ones->putScalar(STS::one()); - rnd->randomize(); - - using magnitudeType = typename Teuchos::ScalarTraits::magnitudeType; - magnitudeType tol1 = Teuchos::ScalarTraits::eps(); - magnitudeType tol2 = 500 * tol1; - - A->apply(*ones, *exp); - bOp->apply(*ones, *res); - res->update(-STS::one(), *exp, STS::one()); - TEUCHOS_TEST_COMPARE(res->norm2(), <, tol1, out, success); - TEUCHOS_TEST_COMPARE(res->normInf(), <, tol1, out, success); - - A->apply(*rnd, *exp); - bOp->apply(*rnd, *res); - res->update(-STS::one(), *exp, STS::one()); - TEUCHOS_TEST_COMPARE(res->norm2(), <, tol2, out, success); - TEUCHOS_TEST_COMPARE(res->normInf(), <, tol2, out, success); -} - -TEUCHOS_UNIT_TEST_TEMPLATE_6_DECL(BlockedCrsMatrix, CreateBlockedDiagonalOp, M, MA, Scalar, LO, GO, Node) { - typedef Xpetra::BlockedCrsMatrix BlockedCrsMatrixClass; - - // get a comm and node - Teuchos::RCP> comm = getDefaultComm(); - - int noBlocks = 4; - Teuchos::RCP bop = XpetraBlockMatrixTests::CreateBlockDiagonalExampleMatrix(noBlocks, *comm); - - GO goNumRows = Teuchos::as(Teuchos::ScalarTraits::pow(2, noBlocks - 2)) * 10 * comm->getSize(); - - TEST_EQUALITY(bop->Rows(), 4); - TEST_EQUALITY(bop->Cols(), 4); - TEST_EQUALITY(bop->getRangeMap()->getGlobalNumElements(), Teuchos::as(goNumRows)); - TEST_EQUALITY(bop->getDomainMap()->getGlobalNumElements(), Teuchos::as(goNumRows)); - TEST_EQUALITY(bop->getMatrix(0, 0)->getRowMap()->getMinGlobalIndex(), comm->getRank() * 40); - TEST_EQUALITY(bop->getMatrix(0, 0)->getRowMap()->getMaxGlobalIndex(), comm->getRank() * 40 + 4); - TEST_EQUALITY(bop->getMatrix(1, 1)->getRowMap()->getMinGlobalIndex(), comm->getRank() * 40 + 5); - TEST_EQUALITY(bop->getMatrix(1, 1)->getRowMap()->getMaxGlobalIndex(), comm->getRank() * 40 + 9); - TEST_EQUALITY(bop->getMatrix(2, 2)->getRowMap()->getMinGlobalIndex(), comm->getRank() * 40 + 10); - TEST_EQUALITY(bop->getMatrix(2, 2)->getRowMap()->getMaxGlobalIndex(), comm->getRank() * 40 + 19); - TEST_EQUALITY(bop->getMatrix(3, 3)->getRowMap()->getMinGlobalIndex(), comm->getRank() * 40 + 20); - TEST_EQUALITY(bop->getMatrix(3, 3)->getRowMap()->getMaxGlobalIndex(), comm->getRank() * 40 + 39); - TEST_EQUALITY(bop->getMatrix(0, 0)->getRowMap()->getGlobalNumElements(), Teuchos::as(comm->getSize() * 5)); - TEST_EQUALITY(bop->getMatrix(1, 1)->getRowMap()->getGlobalNumElements(), Teuchos::as(comm->getSize() * 5)); - TEST_EQUALITY(bop->getMatrix(2, 2)->getRowMap()->getGlobalNumElements(), Teuchos::as(comm->getSize() * 10)); - TEST_EQUALITY(bop->getMatrix(3, 3)->getRowMap()->getGlobalNumElements(), Teuchos::as(comm->getSize() * 20)); - TEST_EQUALITY(bop->getMatrix(0, 0)->getRowMap()->getLocalNumElements(), 5); - TEST_EQUALITY(bop->getMatrix(1, 1)->getRowMap()->getLocalNumElements(), 5); - TEST_EQUALITY(bop->getMatrix(2, 2)->getRowMap()->getLocalNumElements(), 10); - TEST_EQUALITY(bop->getMatrix(3, 3)->getRowMap()->getLocalNumElements(), 20); - TEST_EQUALITY(bop->getMatrix(0, 0)->getColMap()->getMinGlobalIndex(), comm->getRank() * 40); - TEST_EQUALITY(bop->getMatrix(0, 0)->getColMap()->getMaxGlobalIndex(), comm->getRank() * 40 + 4); - TEST_EQUALITY(bop->getMatrix(1, 1)->getColMap()->getMinGlobalIndex(), comm->getRank() * 40 + 5); - TEST_EQUALITY(bop->getMatrix(1, 1)->getColMap()->getMaxGlobalIndex(), comm->getRank() * 40 + 9); - TEST_EQUALITY(bop->getMatrix(2, 2)->getColMap()->getMinGlobalIndex(), comm->getRank() * 40 + 10); - TEST_EQUALITY(bop->getMatrix(2, 2)->getColMap()->getMaxGlobalIndex(), comm->getRank() * 40 + 19); - TEST_EQUALITY(bop->getMatrix(3, 3)->getColMap()->getMinGlobalIndex(), comm->getRank() * 40 + 20); - TEST_EQUALITY(bop->getMatrix(3, 3)->getColMap()->getMaxGlobalIndex(), comm->getRank() * 40 + 39); - TEST_EQUALITY(bop->getMatrix(0, 0)->getColMap()->getGlobalNumElements(), Teuchos::as(comm->getSize() * 5)); - TEST_EQUALITY(bop->getMatrix(1, 1)->getColMap()->getGlobalNumElements(), Teuchos::as(comm->getSize() * 5)); - TEST_EQUALITY(bop->getMatrix(2, 2)->getColMap()->getGlobalNumElements(), Teuchos::as(comm->getSize() * 10)); - TEST_EQUALITY(bop->getMatrix(3, 3)->getColMap()->getGlobalNumElements(), Teuchos::as(comm->getSize() * 20)); - TEST_EQUALITY(bop->getMatrix(0, 0)->getColMap()->getLocalNumElements(), 5); - TEST_EQUALITY(bop->getMatrix(1, 1)->getColMap()->getLocalNumElements(), 5); - TEST_EQUALITY(bop->getMatrix(2, 2)->getColMap()->getLocalNumElements(), 10); - TEST_EQUALITY(bop->getMatrix(3, 3)->getColMap()->getLocalNumElements(), 20); - - TEST_EQUALITY(bop->getMatrix(0, 1)->getRowMap()->getMinGlobalIndex(), comm->getRank() * 40); - TEST_EQUALITY(bop->getMatrix(0, 1)->getRowMap()->getMaxGlobalIndex(), comm->getRank() * 40 + 4); - TEST_EQUALITY(bop->getMatrix(0, 2)->getRowMap()->getMinGlobalIndex(), comm->getRank() * 40); - TEST_EQUALITY(bop->getMatrix(0, 2)->getRowMap()->getMaxGlobalIndex(), comm->getRank() * 40 + 4); - TEST_EQUALITY(bop->getMatrix(0, 3)->getRowMap()->getMinGlobalIndex(), comm->getRank() * 40); - TEST_EQUALITY(bop->getMatrix(0, 3)->getRowMap()->getMaxGlobalIndex(), comm->getRank() * 40 + 4); - TEST_EQUALITY(bop->getMatrix(1, 0)->getColMap()->getMinGlobalIndex(), std::numeric_limits::max()); // TODO - TEST_EQUALITY(bop->getMatrix(1, 0)->getDomainMap()->getMaxGlobalIndex(), comm->getRank() * 40 + 4); - // TEST_EQUALITY(bop->getMatrix(1,0)->getColMap()->getMaxGlobalIndex(),comm->getRank() * 40); - TEST_EQUALITY(bop->getMatrix(2, 0)->getColMap()->getMinGlobalIndex(), std::numeric_limits::max()); // TODO - TEST_EQUALITY(bop->getMatrix(2, 0)->getDomainMap()->getMaxGlobalIndex(), comm->getRank() * 40 + 4); - // TEST_EQUALITY(bop->getMatrix(2,0)->getColMap()->getMaxGlobalIndex(),comm->getRank() * 40); - TEST_EQUALITY(bop->getMatrix(3, 0)->getColMap()->getMinGlobalIndex(), std::numeric_limits::max()); // TODO - TEST_EQUALITY(bop->getMatrix(3, 0)->getDomainMap()->getMaxGlobalIndex(), comm->getRank() * 40 + 4); - // TEST_EQUALITY(bop->getMatrix(3,0)->getColMap()->getMaxGlobalIndex(),comm->getRank() * 40); - - TEST_EQUALITY(bop->getMatrix(2, 1)->getRowMap()->getMinGlobalIndex(), comm->getRank() * 40 + 10); - TEST_EQUALITY(bop->getMatrix(2, 1)->getRowMap()->getMaxGlobalIndex(), comm->getRank() * 40 + 19); - TEST_EQUALITY(bop->getMatrix(2, 2)->getRowMap()->getMinGlobalIndex(), comm->getRank() * 40 + 10); - TEST_EQUALITY(bop->getMatrix(2, 2)->getRowMap()->getMaxGlobalIndex(), comm->getRank() * 40 + 19); - TEST_EQUALITY(bop->getMatrix(2, 3)->getRowMap()->getMinGlobalIndex(), comm->getRank() * 40 + 10); - TEST_EQUALITY(bop->getMatrix(2, 3)->getRowMap()->getMaxGlobalIndex(), comm->getRank() * 40 + 19); - - TEST_EQUALITY(bop->getMatrix(0, 0)->isFillComplete(), true); - TEST_EQUALITY(bop->getMatrix(2, 2)->isFillComplete(), true); - TEST_EQUALITY(bop->getMatrix(2, 3)->isFillComplete(), true); - TEST_EQUALITY(bop->getMatrix(1, 0)->isFillComplete(), true); - TEST_EQUALITY(bop->getMatrix(3, 1)->isFillComplete(), true); - - TEST_EQUALITY(bop->getRangeMapExtractor()->getThyraMode(), false); - TEST_EQUALITY(bop->getDomainMapExtractor()->getThyraMode(), false); - -#ifdef HAVE_XPETRA_DEBUG - TEST_THROW(bop->getRangeMap(0, true), Xpetra::Exceptions::RuntimeError); -#endif - - TEST_EQUALITY(bop->getRangeMapExtractor()->getMap(2)->getMinAllGlobalIndex(), 10); - TEST_EQUALITY(bop->getRangeMapExtractor()->getMap(2)->getMaxAllGlobalIndex(), (comm->getSize() - 1) * 40 + 19); - - TEST_EQUALITY(bop->getRangeMapExtractor()->getMap(3, false)->getMinGlobalIndex(), comm->getRank() * 40 + 20); - TEST_EQUALITY(bop->getRangeMapExtractor()->getMap(3, false)->getMaxGlobalIndex(), comm->getRank() * 40 + 39); - TEST_EQUALITY(bop->getRangeMapExtractor()->getMap(3, false)->getMinAllGlobalIndex(), 20); - TEST_EQUALITY(bop->getRangeMapExtractor()->getMap(3, false)->getMaxAllGlobalIndex(), comm->getSize() * 40 - 1); -} - -TEUCHOS_UNIT_TEST_TEMPLATE_6_DECL(BlockedCrsMatrix, CreateBlockedDiagonalOpThyra, M, MA, Scalar, LO, GO, Node) { - typedef Xpetra::BlockedCrsMatrix BlockedCrsMatrixClass; - - // get a comm and node - Teuchos::RCP> comm = getDefaultComm(); - - int noBlocks = 4; - Teuchos::RCP bop = XpetraBlockMatrixTests::CreateBlockDiagonalExampleMatrixThyra(noBlocks, *comm); - - GO goNumRows = Teuchos::as(Teuchos::ScalarTraits::pow(2, noBlocks - 2)) * 10 * comm->getSize(); - - TEST_EQUALITY(bop->Rows(), 4); - TEST_EQUALITY(bop->Cols(), 4); - TEST_EQUALITY(bop->getRangeMap()->getGlobalNumElements(), Teuchos::as(goNumRows)); - TEST_EQUALITY(bop->getDomainMap()->getGlobalNumElements(), Teuchos::as(goNumRows)); - // Thyra GIDs - TEST_EQUALITY(bop->getMatrix(0, 0)->getRowMap()->getMinGlobalIndex(), comm->getRank() * 5); - TEST_EQUALITY(bop->getMatrix(0, 0)->getRowMap()->getMaxGlobalIndex(), comm->getRank() * 5 + 4); - TEST_EQUALITY(bop->getMatrix(1, 1)->getRowMap()->getMinGlobalIndex(), comm->getRank() * 5); - TEST_EQUALITY(bop->getMatrix(1, 1)->getRowMap()->getMaxGlobalIndex(), comm->getRank() * 5 + 4); - TEST_EQUALITY(bop->getMatrix(2, 2)->getRowMap()->getMinGlobalIndex(), comm->getRank() * 10); - TEST_EQUALITY(bop->getMatrix(2, 2)->getRowMap()->getMaxGlobalIndex(), comm->getRank() * 10 + 9); - TEST_EQUALITY(bop->getMatrix(3, 3)->getRowMap()->getMinGlobalIndex(), comm->getRank() * 20); - TEST_EQUALITY(bop->getMatrix(3, 3)->getRowMap()->getMaxGlobalIndex(), comm->getRank() * 20 + 19); - TEST_EQUALITY(bop->getMatrix(0, 0)->getRowMap()->getGlobalNumElements(), Teuchos::as(comm->getSize() * 5)); - TEST_EQUALITY(bop->getMatrix(1, 1)->getRowMap()->getGlobalNumElements(), Teuchos::as(comm->getSize() * 5)); - TEST_EQUALITY(bop->getMatrix(2, 2)->getRowMap()->getGlobalNumElements(), Teuchos::as(comm->getSize() * 10)); - TEST_EQUALITY(bop->getMatrix(3, 3)->getRowMap()->getGlobalNumElements(), Teuchos::as(comm->getSize() * 20)); - TEST_EQUALITY(bop->getMatrix(0, 0)->getRowMap()->getLocalNumElements(), 5); - TEST_EQUALITY(bop->getMatrix(1, 1)->getRowMap()->getLocalNumElements(), 5); - TEST_EQUALITY(bop->getMatrix(2, 2)->getRowMap()->getLocalNumElements(), 10); - TEST_EQUALITY(bop->getMatrix(3, 3)->getRowMap()->getLocalNumElements(), 20); - TEST_EQUALITY(bop->getMatrix(0, 0)->getColMap()->getMinGlobalIndex(), comm->getRank() * 5); - TEST_EQUALITY(bop->getMatrix(0, 0)->getColMap()->getMaxGlobalIndex(), comm->getRank() * 5 + 4); - TEST_EQUALITY(bop->getMatrix(1, 1)->getColMap()->getMinGlobalIndex(), comm->getRank() * 5); - TEST_EQUALITY(bop->getMatrix(1, 1)->getColMap()->getMaxGlobalIndex(), comm->getRank() * 5 + 4); - TEST_EQUALITY(bop->getMatrix(2, 2)->getColMap()->getMinGlobalIndex(), comm->getRank() * 10); - TEST_EQUALITY(bop->getMatrix(2, 2)->getColMap()->getMaxGlobalIndex(), comm->getRank() * 10 + 9); - TEST_EQUALITY(bop->getMatrix(3, 3)->getColMap()->getMinGlobalIndex(), comm->getRank() * 20); - TEST_EQUALITY(bop->getMatrix(3, 3)->getColMap()->getMaxGlobalIndex(), comm->getRank() * 20 + 19); - TEST_EQUALITY(bop->getMatrix(0, 0)->getColMap()->getGlobalNumElements(), Teuchos::as(comm->getSize() * 5)); - TEST_EQUALITY(bop->getMatrix(1, 1)->getColMap()->getGlobalNumElements(), Teuchos::as(comm->getSize() * 5)); - TEST_EQUALITY(bop->getMatrix(2, 2)->getColMap()->getGlobalNumElements(), Teuchos::as(comm->getSize() * 10)); - TEST_EQUALITY(bop->getMatrix(3, 3)->getColMap()->getGlobalNumElements(), Teuchos::as(comm->getSize() * 20)); - TEST_EQUALITY(bop->getMatrix(0, 0)->getColMap()->getLocalNumElements(), 5); - TEST_EQUALITY(bop->getMatrix(1, 1)->getColMap()->getLocalNumElements(), 5); - TEST_EQUALITY(bop->getMatrix(2, 2)->getColMap()->getLocalNumElements(), 10); - TEST_EQUALITY(bop->getMatrix(3, 3)->getColMap()->getLocalNumElements(), 20); - - TEST_EQUALITY(bop->getMatrix(0, 1)->getRowMap()->getMinGlobalIndex(), comm->getRank() * 5); - TEST_EQUALITY(bop->getMatrix(0, 1)->getRowMap()->getMaxGlobalIndex(), comm->getRank() * 5 + 4); - TEST_EQUALITY(bop->getMatrix(0, 2)->getRowMap()->getMinGlobalIndex(), comm->getRank() * 5); - TEST_EQUALITY(bop->getMatrix(0, 2)->getRowMap()->getMaxGlobalIndex(), comm->getRank() * 5 + 4); - TEST_EQUALITY(bop->getMatrix(0, 3)->getRowMap()->getMinGlobalIndex(), comm->getRank() * 5); - TEST_EQUALITY(bop->getMatrix(0, 3)->getRowMap()->getMaxGlobalIndex(), comm->getRank() * 5 + 4); - TEST_EQUALITY(bop->getMatrix(1, 0)->getColMap()->getMinGlobalIndex(), std::numeric_limits::max()); // TODO - TEST_EQUALITY(bop->getMatrix(1, 0)->getDomainMap()->getMaxGlobalIndex(), comm->getRank() * 5 + 4); - // TEST_EQUALITY(bop->getMatrix(1,0)->getColMap()->getMaxGlobalIndex(),comm->getRank() * 5); - TEST_EQUALITY(bop->getMatrix(2, 0)->getColMap()->getMinGlobalIndex(), std::numeric_limits::max()); // TODO - TEST_EQUALITY(bop->getMatrix(2, 0)->getDomainMap()->getMaxGlobalIndex(), comm->getRank() * 5 + 4); - // TEST_EQUALITY(bop->getMatrix(2,0)->getColMap()->getMaxGlobalIndex(),comm->getRank() * 5); - TEST_EQUALITY(bop->getMatrix(3, 0)->getColMap()->getMinGlobalIndex(), std::numeric_limits::max()); // TODO - TEST_EQUALITY(bop->getMatrix(3, 0)->getDomainMap()->getMaxGlobalIndex(), comm->getRank() * 5 + 4); - // TEST_EQUALITY(bop->getMatrix(3,0)->getColMap()->getMaxGlobalIndex(),comm->getRank() * 5); - - TEST_EQUALITY(bop->getMatrix(2, 1)->getRowMap()->getMinGlobalIndex(), comm->getRank() * 10); - TEST_EQUALITY(bop->getMatrix(2, 1)->getRowMap()->getMaxGlobalIndex(), comm->getRank() * 10 + 9); - TEST_EQUALITY(bop->getMatrix(2, 2)->getRowMap()->getMinGlobalIndex(), comm->getRank() * 10); - TEST_EQUALITY(bop->getMatrix(2, 2)->getRowMap()->getMaxGlobalIndex(), comm->getRank() * 10 + 9); - TEST_EQUALITY(bop->getMatrix(2, 3)->getRowMap()->getMinGlobalIndex(), comm->getRank() * 10); - TEST_EQUALITY(bop->getMatrix(2, 3)->getRowMap()->getMaxGlobalIndex(), comm->getRank() * 10 + 9); - - TEST_EQUALITY(bop->getMatrix(0, 0)->isFillComplete(), true); - TEST_EQUALITY(bop->getMatrix(2, 2)->isFillComplete(), true); - TEST_EQUALITY(bop->getMatrix(2, 3)->isFillComplete(), true); - TEST_EQUALITY(bop->getMatrix(1, 0)->isFillComplete(), true); - TEST_EQUALITY(bop->getMatrix(3, 1)->isFillComplete(), true); - - // check Xpetra replacement maps - TEST_EQUALITY(bop->getRangeMap(0, false)->getMinGlobalIndex(), comm->getRank() * 5 + 0); - TEST_EQUALITY(bop->getRangeMap(0, false)->getMaxGlobalIndex(), comm->getRank() * 5 + 4); - TEST_EQUALITY(bop->getRangeMap(1, false)->getMinGlobalIndex(), comm->getSize() * 5 + comm->getRank() * 5); - TEST_EQUALITY(bop->getRangeMap(1, false)->getMaxGlobalIndex(), comm->getSize() * 5 + comm->getRank() * 5 + 4); - TEST_EQUALITY(bop->getRangeMap(2, false)->getMinGlobalIndex(), comm->getSize() * 10 + comm->getRank() * 10); - TEST_EQUALITY(bop->getRangeMap(2, false)->getMaxGlobalIndex(), comm->getSize() * 10 + comm->getRank() * 10 + 9); - TEST_EQUALITY(bop->getRangeMap(3, false)->getMinGlobalIndex(), comm->getSize() * 20 + comm->getRank() * 20); - TEST_EQUALITY(bop->getRangeMap(3, false)->getMaxGlobalIndex(), comm->getSize() * 20 + comm->getRank() * 20 + 19); - - // check Thyra maps - TEST_EQUALITY(bop->getRangeMap(0)->getMinGlobalIndex(), comm->getRank() * 5 + 0); - TEST_EQUALITY(bop->getRangeMap(0)->getMaxGlobalIndex(), comm->getRank() * 5 + 4); - TEST_EQUALITY(bop->getRangeMap(1)->getMinGlobalIndex(), comm->getRank() * 5 + 0); - TEST_EQUALITY(bop->getRangeMap(1)->getMaxGlobalIndex(), comm->getRank() * 5 + 4); - TEST_EQUALITY(bop->getRangeMap(2)->getMinGlobalIndex(), comm->getRank() * 10 + 0); - TEST_EQUALITY(bop->getRangeMap(2)->getMaxGlobalIndex(), comm->getRank() * 10 + 9); - TEST_EQUALITY(bop->getRangeMap(3)->getMinGlobalIndex(), comm->getRank() * 20 + 0); - TEST_EQUALITY(bop->getRangeMap(3)->getMaxGlobalIndex(), comm->getRank() * 20 + 19); - - TEST_EQUALITY(bop->getRangeMap(0)->getMinAllGlobalIndex(), 0); - TEST_EQUALITY(bop->getRangeMap(0)->getMaxAllGlobalIndex(), comm->getSize() * 5 - 1); - TEST_EQUALITY(bop->getRangeMap(1)->getMinAllGlobalIndex(), 0); - TEST_EQUALITY(bop->getRangeMap(1)->getMaxAllGlobalIndex(), comm->getSize() * 5 - 1); - TEST_EQUALITY(bop->getRangeMap(2)->getMinAllGlobalIndex(), 0); - TEST_EQUALITY(bop->getRangeMap(2)->getMaxAllGlobalIndex(), comm->getSize() * 10 - 1); - TEST_EQUALITY(bop->getRangeMap(3)->getMinAllGlobalIndex(), 0); - TEST_EQUALITY(bop->getRangeMap(3)->getMaxAllGlobalIndex(), comm->getSize() * 20 - 1); - - TEST_EQUALITY(bop->getRangeMapExtractor()->getThyraMode(), true); - TEST_EQUALITY(bop->getDomainMapExtractor()->getThyraMode(), true); - - // check Xpetra replacement submaps - TEST_EQUALITY(bop->getRangeMapExtractor()->getMap(3, false)->getMinGlobalIndex(), comm->getSize() * 20 + comm->getRank() * 20); - TEST_EQUALITY(bop->getRangeMapExtractor()->getMap(3, false)->getMaxGlobalIndex(), comm->getSize() * 20 + comm->getRank() * 20 + 19); - TEST_EQUALITY(bop->getRangeMapExtractor()->getMap(3, false)->getMinAllGlobalIndex(), comm->getSize() * 20); - TEST_EQUALITY(bop->getRangeMapExtractor()->getMap(3, false)->getMaxAllGlobalIndex(), comm->getSize() * 40 - 1); -} - -TEUCHOS_UNIT_TEST_TEMPLATE_6_DECL(BlockedCrsMatrix, ReorderBlockOperator, M, MA, Scalar, LO, GO, Node) { - typedef Xpetra::BlockedCrsMatrix BlockedCrsMatrixClass; - - // get a comm and node - Teuchos::RCP> comm = getDefaultComm(); - - int noBlocks = 8; - Teuchos::RCP bop = XpetraBlockMatrixTests::CreateBlockDiagonalExampleMatrix(noBlocks, *comm); - - Teuchos::RCP brm = Xpetra::blockedReorderFromString("[ [ 0 [ [1 2] 3] ] 4 [ 5 6 7] ]"); - - Teuchos::RCP> brop = - Teuchos::rcp_dynamic_cast>(buildReorderedBlockedCrsMatrix(brm, bop)); - - GO goNumRows = Teuchos::as(Teuchos::ScalarTraits::pow(2, noBlocks - 2)) * 10 * comm->getSize(); - - TEST_EQUALITY(brop->Rows(), 3); - TEST_EQUALITY(brop->Cols(), 3); - TEST_EQUALITY(brop->getRangeMap()->getGlobalNumElements(), Teuchos::as(goNumRows)); - TEST_EQUALITY(brop->getDomainMap()->getGlobalNumElements(), Teuchos::as(goNumRows)); - - // block 00 - Teuchos::RCP> brop00 = - Teuchos::rcp_dynamic_cast>(brop->getMatrix(0, 0)); - - GO goNumRows00 = Teuchos::as(Teuchos::ScalarTraits::pow(2, 2)) * 10 * comm->getSize(); - - TEST_EQUALITY(brop00->Rows(), 2); - TEST_EQUALITY(brop00->Cols(), 2); - TEST_EQUALITY(brop00->getRangeMap()->getGlobalNumElements(), Teuchos::as(goNumRows00)); - TEST_EQUALITY(brop00->getDomainMap()->getGlobalNumElements(), Teuchos::as(goNumRows00)); - - // block 11 - Teuchos::RCP> brop11 = brop->getMatrix(1, 1); - - GO goNumRows11 = Teuchos::as(40 * comm->getSize()); - TEST_EQUALITY(brop11->getRangeMap()->getGlobalNumElements(), Teuchos::as(goNumRows11)); - TEST_EQUALITY(brop11->getDomainMap()->getGlobalNumElements(), Teuchos::as(goNumRows11)); - TEST_EQUALITY(brop11->getRangeMap()->getMinGlobalIndex(), comm->getRank() * 640 + 40); - TEST_EQUALITY(brop11->getRangeMap()->getMaxGlobalIndex(), comm->getRank() * 640 + 79); - - Teuchos::RCP> brop11test = - Teuchos::rcp_dynamic_cast>(brop11); - TEST_INEQUALITY(brop11test, Teuchos::null); - - TEST_EQUALITY(brop11test->Rows(), 1); - TEST_EQUALITY(brop11test->Cols(), 1); - TEST_EQUALITY(brop11test->getRangeMap()->getGlobalNumElements(), Teuchos::as(goNumRows11)); - TEST_EQUALITY(brop11test->getDomainMap()->getGlobalNumElements(), Teuchos::as(goNumRows11)); - TEST_EQUALITY(brop11test->getRangeMap()->getMinGlobalIndex(), comm->getRank() * 640 + 40); - TEST_EQUALITY(brop11test->getRangeMap()->getMaxGlobalIndex(), comm->getRank() * 640 + 79); - - // block 22 - Teuchos::RCP> brop22 = - Teuchos::rcp_dynamic_cast>(brop->getMatrix(2, 2)); - - GO goNumRows22 = Teuchos::as(560 * comm->getSize()); - - TEST_EQUALITY(brop22->Rows(), 3); - TEST_EQUALITY(brop22->Cols(), 3); - TEST_EQUALITY(brop22->getRangeMap()->getGlobalNumElements(), Teuchos::as(goNumRows22)); - TEST_EQUALITY(brop22->getDomainMap()->getGlobalNumElements(), Teuchos::as(goNumRows22)); - TEST_EQUALITY(brop22->getRangeMap()->getMinGlobalIndex(), comm->getRank() * 640 + 80); - TEST_EQUALITY(brop22->getRangeMap()->getMaxGlobalIndex(), comm->getRank() * 640 + 639); - TEST_EQUALITY(brop22->getMatrix(0, 0)->getRangeMap()->getMinGlobalIndex(), comm->getRank() * 640 + 80); - TEST_EQUALITY(brop22->getMatrix(0, 0)->getRangeMap()->getMaxGlobalIndex(), comm->getRank() * 640 + 159); - TEST_EQUALITY(brop22->getMatrix(1, 1)->getRangeMap()->getMinGlobalIndex(), comm->getRank() * 640 + 160); - TEST_EQUALITY(brop22->getMatrix(1, 1)->getRangeMap()->getMaxGlobalIndex(), comm->getRank() * 640 + 319); - TEST_EQUALITY(brop22->getMatrix(2, 2)->getRangeMap()->getMinGlobalIndex(), comm->getRank() * 640 + 320); - TEST_EQUALITY(brop22->getMatrix(2, 2)->getRangeMap()->getMaxGlobalIndex(), comm->getRank() * 640 + 639); - - // block 00_11 - Teuchos::RCP> brop00_11 = - Teuchos::rcp_dynamic_cast>(brop00->getMatrix(1, 1)); - - GO goNumRows00_11 = Teuchos::as(35 * comm->getSize()); - - TEST_EQUALITY(brop00_11->Rows(), 2); - TEST_EQUALITY(brop00_11->Cols(), 2); - TEST_EQUALITY(brop00_11->getRangeMap()->getGlobalNumElements(), Teuchos::as(goNumRows00_11)); - TEST_EQUALITY(brop00_11->getDomainMap()->getGlobalNumElements(), Teuchos::as(goNumRows00_11)); - TEST_EQUALITY(brop00_11->getRangeMap()->getMinGlobalIndex(), comm->getRank() * 640 + 5); - TEST_EQUALITY(brop00_11->getRangeMap()->getMaxGlobalIndex(), comm->getRank() * 640 + 39); - TEST_EQUALITY(brop00_11->getMatrix(0, 0)->getRangeMap()->getGlobalNumElements(), Teuchos::as(15 * comm->getSize())); - TEST_EQUALITY(brop00_11->getMatrix(0, 0)->getDomainMap()->getGlobalNumElements(), Teuchos::as(15 * comm->getSize())); - TEST_EQUALITY(brop00_11->getMatrix(0, 0)->getRangeMap()->getMinGlobalIndex(), comm->getRank() * 640 + 5); - TEST_EQUALITY(brop00_11->getMatrix(0, 0)->getRangeMap()->getMaxGlobalIndex(), comm->getRank() * 640 + 19); - TEST_EQUALITY(brop00_11->getMatrix(1, 1)->getRangeMap()->getGlobalNumElements(), Teuchos::as(20 * comm->getSize())); - TEST_EQUALITY(brop00_11->getMatrix(1, 1)->getDomainMap()->getGlobalNumElements(), Teuchos::as(20 * comm->getSize())); - TEST_EQUALITY(brop00_11->getMatrix(1, 1)->getRangeMap()->getMinGlobalIndex(), comm->getRank() * 640 + 20); - TEST_EQUALITY(brop00_11->getMatrix(1, 1)->getRangeMap()->getMaxGlobalIndex(), comm->getRank() * 640 + 39); - - // block 01 - Teuchos::RCP> brop01 = - Teuchos::rcp_dynamic_cast>(brop->getMatrix(0, 1)); - - TEST_EQUALITY(brop01->Rows(), 2); - TEST_EQUALITY(brop01->Cols(), 1); - TEST_EQUALITY(brop01->getRangeMap()->getGlobalNumElements(), Teuchos::as(comm->getSize() * 40)); - TEST_EQUALITY(brop01->getDomainMap()->getGlobalNumElements(), Teuchos::as(comm->getSize() * 40)); - TEST_EQUALITY(brop01->getRangeMap()->getMinGlobalIndex(), comm->getRank() * 640 + 0); - TEST_EQUALITY(brop01->getRangeMap()->getMaxGlobalIndex(), comm->getRank() * 640 + 39); - TEST_EQUALITY(brop01->getDomainMap()->getMinGlobalIndex(), comm->getRank() * 640 + 40); - TEST_EQUALITY(brop01->getDomainMap()->getMaxGlobalIndex(), comm->getRank() * 640 + 79); -} - -TEUCHOS_UNIT_TEST_TEMPLATE_6_DECL(BlockedCrsMatrix, ReorderBlockOperator2, M, MA, Scalar, LO, GO, Node) { - typedef Xpetra::BlockedCrsMatrix BlockedCrsMatrixClass; - - // get a comm and node - Teuchos::RCP> comm = getDefaultComm(); - - int noBlocks = 8; - Teuchos::RCP bop = XpetraBlockMatrixTests::CreateBlockDiagonalExampleMatrix(noBlocks, *comm); - - Teuchos::RCP brm = Xpetra::blockedReorderFromString("[ 4 3 1 7 ]"); - - Teuchos::RCP> brop = - Teuchos::rcp_dynamic_cast>(buildReorderedBlockedCrsMatrix(brm, bop)); - - TEST_EQUALITY(brop->Rows(), 4); - TEST_EQUALITY(brop->Cols(), 4); - TEST_EQUALITY(brop->getRangeMap()->getGlobalNumElements(), Teuchos::as(comm->getSize() * 385)); - TEST_EQUALITY(brop->getDomainMap()->getGlobalNumElements(), Teuchos::as(comm->getSize() * 385)); - - // block 00 - Teuchos::RCP> brop00 = brop->getMatrix(0, 0); - - TEST_EQUALITY(brop00->getRangeMap()->getGlobalNumElements(), Teuchos::as(comm->getSize() * 40)); - TEST_EQUALITY(brop00->getDomainMap()->getGlobalNumElements(), Teuchos::as(comm->getSize() * 40)); - TEST_EQUALITY(brop00->getRangeMap()->getMinGlobalIndex(), comm->getRank() * 640 + 40); - TEST_EQUALITY(brop00->getRangeMap()->getMaxGlobalIndex(), comm->getRank() * 640 + 79); - - // block 11 - Teuchos::RCP> brop11 = brop->getMatrix(1, 1); - - TEST_EQUALITY(brop11->getRangeMap()->getGlobalNumElements(), Teuchos::as(comm->getSize() * 20)); - TEST_EQUALITY(brop11->getDomainMap()->getGlobalNumElements(), Teuchos::as(comm->getSize() * 20)); - TEST_EQUALITY(brop11->getRangeMap()->getMinGlobalIndex(), comm->getRank() * 640 + 20); - TEST_EQUALITY(brop11->getRangeMap()->getMaxGlobalIndex(), comm->getRank() * 640 + 39); - - Teuchos::RCP> brop11test = - Teuchos::rcp_dynamic_cast>(brop11); - - TEST_EQUALITY(brop11test->Rows(), 1); - TEST_EQUALITY(brop11test->Cols(), 1); - TEST_EQUALITY(brop11test->getRangeMap()->getGlobalNumElements(), Teuchos::as(comm->getSize() * 20)); - TEST_EQUALITY(brop11test->getDomainMap()->getGlobalNumElements(), Teuchos::as(comm->getSize() * 20)); - TEST_EQUALITY(brop11test->getRangeMap()->getMinGlobalIndex(), comm->getRank() * 640 + 20); - TEST_EQUALITY(brop11test->getRangeMap()->getMaxGlobalIndex(), comm->getRank() * 640 + 39); - - // block 22 - Teuchos::RCP> brop22 = brop->getMatrix(2, 2); - - TEST_EQUALITY(brop22->getRangeMap()->getGlobalNumElements(), Teuchos::as(comm->getSize() * 5)); - TEST_EQUALITY(brop22->getDomainMap()->getGlobalNumElements(), Teuchos::as(comm->getSize() * 5)); - TEST_EQUALITY(brop22->getRangeMap()->getMinGlobalIndex(), comm->getRank() * 640 + 5); - TEST_EQUALITY(brop22->getRangeMap()->getMaxGlobalIndex(), comm->getRank() * 640 + 9); - - Teuchos::RCP> brop22test = - Teuchos::rcp_dynamic_cast>(brop22); - - TEST_EQUALITY(brop22test->Rows(), 1); - TEST_EQUALITY(brop22test->Cols(), 1); - TEST_EQUALITY(brop22test->getRangeMap()->getGlobalNumElements(), Teuchos::as(comm->getSize() * 5)); - TEST_EQUALITY(brop22test->getDomainMap()->getGlobalNumElements(), Teuchos::as(comm->getSize() * 5)); - TEST_EQUALITY(brop22test->getRangeMap()->getMinGlobalIndex(), comm->getRank() * 640 + 5); - TEST_EQUALITY(brop22test->getRangeMap()->getMaxGlobalIndex(), comm->getRank() * 640 + 9); - - // block 33 - Teuchos::RCP> brop33 = brop->getMatrix(3, 3); - - TEST_EQUALITY(brop33->getRangeMap()->getGlobalNumElements(), Teuchos::as(comm->getSize() * 320)); - TEST_EQUALITY(brop33->getDomainMap()->getGlobalNumElements(), Teuchos::as(comm->getSize() * 320)); - TEST_EQUALITY(brop33->getRangeMap()->getMinGlobalIndex(), comm->getRank() * 640 + 320); - TEST_EQUALITY(brop33->getRangeMap()->getMaxGlobalIndex(), comm->getRank() * 640 + 639); - - Teuchos::RCP> brop33test = - Teuchos::rcp_dynamic_cast>(brop33); - - TEST_EQUALITY(brop33test->Rows(), 1); - TEST_EQUALITY(brop33test->Cols(), 1); - TEST_EQUALITY(brop33test->getRangeMap()->getGlobalNumElements(), Teuchos::as(comm->getSize() * 320)); - TEST_EQUALITY(brop33test->getDomainMap()->getGlobalNumElements(), Teuchos::as(comm->getSize() * 320)); - TEST_EQUALITY(brop33test->getRangeMap()->getMinGlobalIndex(), comm->getRank() * 640 + 320); - TEST_EQUALITY(brop33test->getRangeMap()->getMaxGlobalIndex(), comm->getRank() * 640 + 639); -} - -TEUCHOS_UNIT_TEST_TEMPLATE_6_DECL(BlockedCrsMatrix, ReorderBlockOperatorThyra, M, MA, Scalar, LO, GO, Node) { - typedef Xpetra::Matrix Matrix; - typedef Xpetra::BlockedCrsMatrix BlockedCrsMatrixClass; - typedef Xpetra::ReorderedBlockedCrsMatrix ReorderedBlockedCrsMatrix; - - // get a comm and node - Teuchos::RCP> comm = getDefaultComm(); - - int noBlocks = 8; - Teuchos::RCP bop = XpetraBlockMatrixTests::CreateBlockDiagonalExampleMatrixThyra(noBlocks, *comm); - - Teuchos::RCP brm = Xpetra::blockedReorderFromString("[ [ 0 [ [1 2] 3] ] 4 [ 5 6 7] ]"); - - Teuchos::RCP brop = - Teuchos::rcp_dynamic_cast(buildReorderedBlockedCrsMatrix(brm, bop)); - - GO goNumRows = Teuchos::as(Teuchos::ScalarTraits::pow(2, noBlocks - 2)) * 10 * comm->getSize(); - - TEST_EQUALITY(brop->Rows(), 3); - TEST_EQUALITY(brop->Cols(), 3); - TEST_EQUALITY(brop->getRangeMap()->getGlobalNumElements(), Teuchos::as(goNumRows)); - TEST_EQUALITY(brop->getDomainMap()->getGlobalNumElements(), Teuchos::as(goNumRows)); - - TEST_EQUALITY(brop->getRangeMapExtractor()->getThyraMode(), true); - TEST_EQUALITY(brop->getDomainMapExtractor()->getThyraMode(), true); - - // block 00 - Teuchos::RCP brop00 = - Teuchos::rcp_dynamic_cast(brop->getMatrix(0, 0)); - - GO goNumRows00 = Teuchos::as(Teuchos::ScalarTraits::pow(2, 2)) * 10 * comm->getSize(); - - TEST_EQUALITY(brop00->Rows(), 2); - TEST_EQUALITY(brop00->Cols(), 2); - TEST_EQUALITY(brop00->getRangeMapExtractor()->getThyraMode(), true); - TEST_EQUALITY(brop00->getDomainMapExtractor()->getThyraMode(), true); - TEST_EQUALITY(brop00->getRangeMap()->getGlobalNumElements(), Teuchos::as(goNumRows00)); - TEST_EQUALITY(brop00->getDomainMap()->getGlobalNumElements(), Teuchos::as(goNumRows00)); - TEST_EQUALITY(brop00->getRangeMap()->getMinGlobalIndex(), comm->getRank() * 5 + 0); - TEST_EQUALITY(brop00->getRangeMap()->getMaxGlobalIndex(), comm->getSize() * 20 + comm->getRank() * 20 + 19); - TEST_EQUALITY(brop00->getRangeMap()->getMinAllGlobalIndex(), 0); - TEST_EQUALITY(brop00->getRangeMap()->getMaxAllGlobalIndex(), comm->getSize() * 40 - 1); - // Thyra maps (since it is a blocked matrix, they should be unique!) - TEST_EQUALITY(brop00->getRangeMap(0, true)->getMinAllGlobalIndex(), 0); - TEST_EQUALITY(brop00->getRangeMap(0, true)->getMaxAllGlobalIndex(), comm->getSize() * 5 - 1); - TEST_EQUALITY(brop00->getRangeMap(1, true)->getGlobalNumElements(), Teuchos::as(comm->getSize() * 35)); - TEST_EQUALITY(brop00->getRangeMap(1, true)->getMinAllGlobalIndex(), 0); - TEST_EQUALITY(brop00->getRangeMap(1, true)->getMaxAllGlobalIndex(), comm->getSize() * 35 - 1); - // Xpetra maps - TEST_EQUALITY(brop00->getRangeMap(0, false)->getMinAllGlobalIndex(), 0); - TEST_EQUALITY(brop00->getRangeMap(0, false)->getMaxAllGlobalIndex(), comm->getSize() * 5 - 1); - TEST_EQUALITY(brop00->getRangeMap(1, false)->getGlobalNumElements(), Teuchos::as(comm->getSize() * 35)); - TEST_EQUALITY(brop00->getRangeMap(1, false)->getMinAllGlobalIndex(), comm->getSize() * 5); - TEST_EQUALITY(brop00->getRangeMap(1, false)->getMaxAllGlobalIndex(), comm->getSize() * 5 + comm->getSize() * 35 - 1); - - // subblock 11 of block 00 - Teuchos::RCP sbrop11 = - Teuchos::rcp_dynamic_cast(brop00->getMatrix(1, 1)); - - TEST_EQUALITY(sbrop11->Rows(), 2); - TEST_EQUALITY(sbrop11->Cols(), 2); - TEST_EQUALITY(sbrop11->getRangeMapExtractor()->getThyraMode(), true); - TEST_EQUALITY(sbrop11->getDomainMapExtractor()->getThyraMode(), true); - TEST_EQUALITY(sbrop11->getRangeMap()->getGlobalNumElements(), Teuchos::as(35 * comm->getSize())); - TEST_EQUALITY(sbrop11->getDomainMap()->getGlobalNumElements(), Teuchos::as(35 * comm->getSize())); - TEST_EQUALITY(sbrop11->getRangeMap()->getMaxGlobalIndex(), comm->getSize() * 20 + comm->getRank() * 20 + 19); - // Thyra maps (since it is a blocked matrix, they should be unique!) - TEST_EQUALITY(sbrop11->getRangeMap(0, true)->getMinAllGlobalIndex(), 0); - TEST_EQUALITY(sbrop11->getRangeMap(0, true)->getMaxAllGlobalIndex(), comm->getSize() * 5 + comm->getSize() * 10 - 1); - TEST_EQUALITY(sbrop11->getRangeMap(1, true)->getGlobalNumElements(), Teuchos::as(comm->getSize() * 20)); - TEST_EQUALITY(sbrop11->getRangeMap(1, true)->getMinAllGlobalIndex(), 0); - TEST_EQUALITY(sbrop11->getRangeMap(1, true)->getMaxAllGlobalIndex(), comm->getSize() * 20 - 1); - // Xpetra maps - TEST_EQUALITY(sbrop11->getRangeMap(0, false)->getMinAllGlobalIndex(), comm->getSize() * 5); - TEST_EQUALITY(sbrop11->getRangeMap(0, false)->getMaxAllGlobalIndex(), comm->getSize() * 20 - 1); - TEST_EQUALITY(sbrop11->getRangeMap(1, false)->getGlobalNumElements(), Teuchos::as(comm->getSize() * 20)); - TEST_EQUALITY(sbrop11->getRangeMap(1, false)->getMinAllGlobalIndex(), comm->getSize() * 20); - TEST_EQUALITY(sbrop11->getRangeMap(1, false)->getMaxAllGlobalIndex(), comm->getSize() * 40 - 1); - - // block 11 - Teuchos::RCP> brop11 = brop->getMatrix(1, 1); - - // Thyra GIDs for the matrix - GO goNumRows11 = Teuchos::as(40 * comm->getSize()); - TEST_EQUALITY(brop11->getRangeMap()->getGlobalNumElements(), Teuchos::as(goNumRows11)); - TEST_EQUALITY(brop11->getDomainMap()->getGlobalNumElements(), Teuchos::as(goNumRows11)); - TEST_EQUALITY(brop11->getRangeMap()->getMinGlobalIndex(), comm->getSize() * 40 + comm->getRank() * 40 + 0); - TEST_EQUALITY(brop11->getRangeMap()->getMaxGlobalIndex(), comm->getSize() * 40 + comm->getRank() * 40 + 39); - TEST_EQUALITY(brop11->getRangeMap()->getMinAllGlobalIndex(), comm->getSize() * 40 + 0); - TEST_EQUALITY(brop11->getRangeMap()->getMaxAllGlobalIndex(), comm->getSize() * 40 + comm->getSize() * 40 - 1); - // Xpetra GIDs - TEST_EQUALITY(brop->getRangeMap(1, false)->getMinAllGlobalIndex(), comm->getSize() * 40); - TEST_EQUALITY(brop->getRangeMap(1, false)->getMaxAllGlobalIndex(), 2 * comm->getSize() * 40 - 1); - - Teuchos::RCP brop11test = - Teuchos::rcp_dynamic_cast(brop11); - - TEST_EQUALITY(brop11test->Rows(), 1); - TEST_EQUALITY(brop11test->Cols(), 1); - TEST_EQUALITY(brop11test->getRangeMap()->getMinGlobalIndex(), comm->getSize() * 40 + comm->getRank() * 40); - TEST_EQUALITY(brop11test->getRangeMap()->getMaxGlobalIndex(), comm->getSize() * 40 + comm->getRank() * 40 + 39); - TEST_EQUALITY(brop11test->getMatrix(0, 0)->getRangeMap()->getMinGlobalIndex(), comm->getRank() * 40 + 0); - TEST_EQUALITY(brop11test->getMatrix(0, 0)->getRangeMap()->getMaxGlobalIndex(), comm->getRank() * 40 + 39); - TEST_EQUALITY(brop11test->getMatrix(0, 0)->getRangeMap()->getMinAllGlobalIndex(), 0); - TEST_EQUALITY(brop11test->getMatrix(0, 0)->getRangeMap()->getMaxAllGlobalIndex(), comm->getSize() * 40 - 1); - - Teuchos::RCP crsmat11 = Teuchos::rcp_const_cast(brop11test)->getInnermostCrsMatrix(); - TEST_EQUALITY(crsmat11.is_null(), false); - Teuchos::ArrayView inds; - Teuchos::ArrayView vals; - crsmat11->getLocalRowView(0, inds, vals); - TEST_EQUALITY(inds.size(), 1); - TEST_EQUALITY(vals.size(), 1); - TEST_EQUALITY(inds[0], 0); - TEST_EQUALITY(vals[0], Teuchos::as(5.0) * Teuchos::ScalarTraits::one()); - - // block 22 - Teuchos::RCP brop22 = - Teuchos::rcp_dynamic_cast(brop->getMatrix(2, 2)); - - GO goNumRows22 = Teuchos::as(560 * comm->getSize()); - - TEST_EQUALITY(brop22->Rows(), 3); - TEST_EQUALITY(brop22->Cols(), 3); - TEST_EQUALITY(brop22->getRangeMap()->getGlobalNumElements(), Teuchos::as(goNumRows22)); - TEST_EQUALITY(brop22->getDomainMap()->getGlobalNumElements(), Teuchos::as(goNumRows22)); - // Xpetra replacement GIDs - TEST_EQUALITY(brop22->getRangeMap()->getMinAllGlobalIndex(), comm->getSize() * 80); - TEST_EQUALITY(brop22->getRangeMap()->getMaxAllGlobalIndex(), comm->getSize() * 80 + comm->getSize() * 560 - 1); - TEST_EQUALITY(brop22->getRangeMap()->getMinGlobalIndex(), comm->getRank() * 80 + comm->getSize() * 80); - TEST_EQUALITY(brop22->getRangeMap()->getMaxGlobalIndex(), comm->getSize() * 80 + comm->getSize() * 240 + comm->getRank() * 320 + 319); - // Xpetra GIDs - TEST_EQUALITY(brop22->getRangeMap(0, false)->getMinGlobalIndex(), comm->getSize() * 80 + comm->getRank() * 80); - TEST_EQUALITY(brop22->getRangeMap(0, false)->getMaxGlobalIndex(), comm->getSize() * 80 + comm->getRank() * 80 + 79); - TEST_EQUALITY(brop22->getRangeMap(1, false)->getMinGlobalIndex(), comm->getSize() * 160 + comm->getRank() * 160); - TEST_EQUALITY(brop22->getRangeMap(1, false)->getMaxGlobalIndex(), comm->getSize() * 160 + comm->getRank() * 160 + 159); - TEST_EQUALITY(brop22->getRangeMap(2, false)->getMinGlobalIndex(), comm->getSize() * 320 + comm->getRank() * 320); - TEST_EQUALITY(brop22->getRangeMap(2, false)->getMaxGlobalIndex(), comm->getSize() * 320 + comm->getRank() * 320 + 319); - - // block 00_11 - /*Teuchos::RCP > brop00_11 = - Teuchos::rcp_dynamic_cast >(brop00->getMatrix(1,1)); - - GO goNumRows00_11 = Teuchos::as(35 * comm->getSize()); - - TEST_EQUALITY(brop00_11->Rows(),2); - TEST_EQUALITY(brop00_11->Cols(),2); - TEST_EQUALITY(brop00_11->getRangeMap()->getGlobalNumElements(),goNumRows00_11); - TEST_EQUALITY(brop00_11->getDomainMap()->getGlobalNumElements(),goNumRows00_11); - TEST_EQUALITY(brop00_11->getRangeMap()->getMinGlobalIndex(),comm->getRank() * 640 + 5); - TEST_EQUALITY(brop00_11->getRangeMap()->getMaxGlobalIndex(),comm->getRank() * 640 + 39); - TEST_EQUALITY(brop00_11->getMatrix(0,0)->getRangeMap()->getGlobalNumElements(),15 * comm->getSize()); - TEST_EQUALITY(brop00_11->getMatrix(0,0)->getDomainMap()->getGlobalNumElements(),15 * comm->getSize()); - TEST_EQUALITY(brop00_11->getMatrix(0,0)->getRangeMap()->getMinGlobalIndex(),comm->getRank() * 640 + 5); - TEST_EQUALITY(brop00_11->getMatrix(0,0)->getRangeMap()->getMaxGlobalIndex(),comm->getRank() * 640 + 19); - TEST_EQUALITY(brop00_11->getMatrix(1,1)->getRangeMap()->getGlobalNumElements(),20 * comm->getSize()); - TEST_EQUALITY(brop00_11->getMatrix(1,1)->getDomainMap()->getGlobalNumElements(),20 * comm->getSize()); - TEST_EQUALITY(brop00_11->getMatrix(1,1)->getRangeMap()->getMinGlobalIndex(),comm->getRank() * 640 + 20); - TEST_EQUALITY(brop00_11->getMatrix(1,1)->getRangeMap()->getMaxGlobalIndex(),comm->getRank() * 640 + 39); -*/ - // block 01 - Teuchos::RCP brop01 = - Teuchos::rcp_dynamic_cast(brop->getMatrix(0, 1)); - - // Xpetra like maps - TEST_EQUALITY(brop01->Rows(), 2); - TEST_EQUALITY(brop01->Cols(), 1); - TEST_EQUALITY(brop01->getRangeMap()->getGlobalNumElements(), Teuchos::as(comm->getSize() * 40)); - TEST_EQUALITY(brop01->getDomainMap()->getGlobalNumElements(), Teuchos::as(comm->getSize() * 40)); - TEST_EQUALITY(brop01->getRangeMap()->getMinGlobalIndex(), comm->getRank() * 5 + 0); - TEST_EQUALITY(brop01->getRangeMap()->getMaxGlobalIndex(), comm->getSize() * 5 + comm->getSize() * 15 + comm->getRank() * 20 + 19); - TEST_EQUALITY(brop01->getDomainMap()->getMinGlobalIndex(), comm->getSize() * 40 + comm->getRank() * 40); - TEST_EQUALITY(brop01->getDomainMap()->getMaxGlobalIndex(), comm->getSize() * 40 + comm->getRank() * 40 + 39); -} - -TEUCHOS_UNIT_TEST_TEMPLATE_6_DECL(BlockedCrsMatrix, ReorderBlockOperator2Thyra, M, MA, Scalar, LO, GO, Node) { - typedef Xpetra::BlockedCrsMatrix BlockedCrsMatrixClass; - - // get a comm and node - Teuchos::RCP> comm = getDefaultComm(); - - int noBlocks = 8; - Teuchos::RCP bop = XpetraBlockMatrixTests::CreateBlockDiagonalExampleMatrixThyra(noBlocks, *comm); - - Teuchos::RCP brm = Xpetra::blockedReorderFromString("[ 4 3 1 7 ]"); - - Teuchos::RCP> brop = - Teuchos::rcp_dynamic_cast>(buildReorderedBlockedCrsMatrix(brm, bop)); - - TEST_EQUALITY(brop->Rows(), 4); - TEST_EQUALITY(brop->Cols(), 4); - TEST_EQUALITY(brop->getRangeMap()->getGlobalNumElements(), Teuchos::as(comm->getSize() * 385)); - TEST_EQUALITY(brop->getDomainMap()->getGlobalNumElements(), Teuchos::as(comm->getSize() * 385)); - - // block 00 - Teuchos::RCP> brop00 = brop->getMatrix(0, 0); - - TEST_EQUALITY(brop00->getRangeMap()->getGlobalNumElements(), Teuchos::as(comm->getSize() * 40)); - TEST_EQUALITY(brop00->getDomainMap()->getGlobalNumElements(), Teuchos::as(comm->getSize() * 40)); - // Thyra GIDs - TEST_EQUALITY(brop00->getRangeMap()->getMinGlobalIndex(), comm->getSize() * 40 + comm->getRank() * 40); - TEST_EQUALITY(brop00->getRangeMap()->getMaxGlobalIndex(), comm->getSize() * 40 + comm->getRank() * 40 + 39); - TEST_EQUALITY(brop00->getRangeMap()->getMinAllGlobalIndex(), comm->getSize() * 40); - TEST_EQUALITY(brop00->getRangeMap()->getMaxAllGlobalIndex(), comm->getSize() * 40 + comm->getSize() * 40 - 1); - // Xpetra GIDs - TEST_EQUALITY(brop->getDomainMap(0, false)->getMinGlobalIndex(), comm->getSize() * 40 + comm->getRank() * 40); - TEST_EQUALITY(brop->getDomainMap(0, false)->getMaxGlobalIndex(), comm->getSize() * 40 + comm->getRank() * 40 + 39); - - // block 11 - Teuchos::RCP> brop11 = brop->getMatrix(1, 1); - - TEST_EQUALITY(brop11->getRangeMap()->getGlobalNumElements(), Teuchos::as(comm->getSize() * 20)); - TEST_EQUALITY(brop11->getDomainMap()->getGlobalNumElements(), Teuchos::as(comm->getSize() * 20)); - // Thyra GIDs (+ Xpetra shift) - TEST_EQUALITY(brop11->getRangeMap()->getMinGlobalIndex(), comm->getSize() * 20 + comm->getRank() * 20); - TEST_EQUALITY(brop11->getRangeMap()->getMaxGlobalIndex(), comm->getSize() * 20 + comm->getRank() * 20 + 19); - TEST_EQUALITY(brop11->getRangeMap()->getMinAllGlobalIndex(), comm->getSize() * 20 + 0); - TEST_EQUALITY(brop11->getRangeMap()->getMaxAllGlobalIndex(), comm->getSize() * 20 + comm->getSize() * 20 - 1); - - // Xpetra GIDs - TEST_EQUALITY(brop->getDomainMap(1, false)->getMinGlobalIndex(), comm->getSize() * 20 + comm->getRank() * 20); - TEST_EQUALITY(brop->getDomainMap(1, false)->getMaxGlobalIndex(), comm->getSize() * 20 + comm->getRank() * 20 + 19); - - Teuchos::RCP> brop11test = - Teuchos::rcp_dynamic_cast>(brop11); - - TEST_EQUALITY(brop11test->Rows(), 1); - TEST_EQUALITY(brop11test->Cols(), 1); - // Thyra GIDs - TEST_EQUALITY(brop11test->getMatrix(0, 0)->getRangeMap()->getMinGlobalIndex(), comm->getRank() * 20); - TEST_EQUALITY(brop11test->getMatrix(0, 0)->getRangeMap()->getMaxGlobalIndex(), comm->getRank() * 20 + 19); - TEST_EQUALITY(brop11test->getMatrix(0, 0)->getRangeMap()->getMinAllGlobalIndex(), 0); - TEST_EQUALITY(brop11test->getMatrix(0, 0)->getRangeMap()->getMaxAllGlobalIndex(), comm->getSize() * 20 - 1); - - // block 22 - Teuchos::RCP> brop22 = brop->getMatrix(2, 2); - - TEST_EQUALITY(brop22->getRangeMap()->getGlobalNumElements(), Teuchos::as(comm->getSize() * 5)); - TEST_EQUALITY(brop22->getDomainMap()->getGlobalNumElements(), Teuchos::as(comm->getSize() * 5)); - TEST_EQUALITY(brop22->getRangeMap()->getMinGlobalIndex(), comm->getSize() * 5 + comm->getRank() * 5); - TEST_EQUALITY(brop22->getRangeMap()->getMaxGlobalIndex(), comm->getSize() * 5 + comm->getRank() * 5 + 4); - TEST_EQUALITY(brop22->getRangeMap()->getMinAllGlobalIndex(), comm->getSize() * 5 + 0); - TEST_EQUALITY(brop22->getRangeMap()->getMaxAllGlobalIndex(), comm->getSize() * 5 + comm->getSize() * 5 - 1); - // Xpetra GIDs - TEST_EQUALITY(brop->getDomainMap(2, false)->getMinGlobalIndex(), comm->getSize() * 5 + comm->getRank() * 5); - TEST_EQUALITY(brop->getDomainMap(2, false)->getMaxGlobalIndex(), comm->getSize() * 5 + comm->getRank() * 5 + 4); - - Teuchos::RCP> brop22test = - Teuchos::rcp_dynamic_cast>(brop22); - TEST_EQUALITY(brop22test->Rows(), 1); - TEST_EQUALITY(brop22test->Cols(), 1); - - // Thyra GIDs - TEST_EQUALITY(brop22test->getMatrix(0, 0)->getRangeMap()->getMinGlobalIndex(), comm->getRank() * 5); - TEST_EQUALITY(brop22test->getMatrix(0, 0)->getRangeMap()->getMaxGlobalIndex(), comm->getRank() * 5 + 4); - TEST_EQUALITY(brop22test->getMatrix(0, 0)->getRangeMap()->getMinAllGlobalIndex(), 0); - TEST_EQUALITY(brop22test->getMatrix(0, 0)->getRangeMap()->getMaxAllGlobalIndex(), comm->getSize() * 5 - 1); - - // block 33 - Teuchos::RCP> brop33 = brop->getMatrix(3, 3); - - TEST_EQUALITY(brop33->getRangeMap()->getGlobalNumElements(), Teuchos::as(comm->getSize() * 320)); - TEST_EQUALITY(brop33->getDomainMap()->getGlobalNumElements(), Teuchos::as(comm->getSize() * 320)); - TEST_EQUALITY(brop33->getRangeMap()->getMinGlobalIndex(), comm->getSize() * 320 + comm->getRank() * 320); - TEST_EQUALITY(brop33->getRangeMap()->getMaxGlobalIndex(), comm->getSize() * 320 + comm->getRank() * 320 + 319); - TEST_EQUALITY(brop33->getRangeMap()->getMinAllGlobalIndex(), comm->getSize() * 320 + 0); - TEST_EQUALITY(brop33->getRangeMap()->getMaxAllGlobalIndex(), comm->getSize() * 320 + comm->getSize() * 320 - 1); - // Xpetra GIDs - TEST_EQUALITY(brop->getDomainMap(3, false)->getMinGlobalIndex(), comm->getSize() * 320 + comm->getRank() * 320); - TEST_EQUALITY(brop->getDomainMap(3, false)->getMaxGlobalIndex(), comm->getSize() * 320 + comm->getRank() * 320 + 319); - - Teuchos::RCP> brop33test = - Teuchos::rcp_dynamic_cast>(brop33); - TEST_EQUALITY(brop33test->Rows(), 1); - TEST_EQUALITY(brop33test->Cols(), 1); -} - -TEUCHOS_UNIT_TEST_TEMPLATE_6_DECL(BlockedCrsMatrix, ReorderBlockOperatorApply, M, MA, Scalar, LO, GO, Node) { - typedef Xpetra::Map Map; - typedef Xpetra::BlockedMap BlockedMap; - typedef Xpetra::Vector VectorClass; - typedef Xpetra::MultiVector MultiVectorClass; - typedef Xpetra::BlockedMultiVector BlockedMultiVectorClass; - typedef Xpetra::VectorFactory VectorFactoryClass; - typedef Xpetra::MultiVectorFactory MultiVectorFactoryClass; - typedef Xpetra::BlockedCrsMatrix BlockedCrsMatrixClass; - typedef Teuchos::ScalarTraits STS; - - // get a comm and node - Teuchos::RCP> comm = getDefaultComm(); - - int noBlocks = 8; - Teuchos::RCP bop = XpetraBlockMatrixTests::CreateBlockDiagonalExampleMatrix(noBlocks, *comm); - - Teuchos::RCP brm = Xpetra::blockedReorderFromString("[ 0 [ 1 [ 2 3 4 ] 5 ] [6 7] ]"); - - Teuchos::RCP> brop = - Teuchos::rcp_dynamic_cast>(buildReorderedBlockedCrsMatrix(brm, bop)); - - TEST_EQUALITY(brop->Rows(), 3); - TEST_EQUALITY(brop->Cols(), 3); - TEST_EQUALITY(brop->getRangeMapExtractor()->getThyraMode(), false); - TEST_EQUALITY(brop->getDomainMapExtractor()->getThyraMode(), false); - - // build gloabl vector with one entries - // The MultiVector objects "ones" and "exp" are BlockedMultiVectors with 8 sub blocks - // compatible to bop - Teuchos::RCP ones = MultiVectorFactoryClass::Build(bop->getRangeMap(), 1, true); - Teuchos::RCP exp = MultiVectorFactoryClass::Build(bop->getRangeMap(), 1, true); - ones->putScalar(STS::one()); - bop->apply(*ones, *exp); - - // reorganize "ones" and "res" to be BlockedMultiVectors with 3 sub blocks (nested) - // compatible to brop - // They use and work with the same 8 sub vectors from "ones" and "exp" - Teuchos::RCP cones = Teuchos::rcp_const_cast(ones); - Teuchos::RCP brones = - Xpetra::buildReorderedBlockedMultiVector(brm, Teuchos::rcp_dynamic_cast(cones)); - Teuchos::RCP res = MultiVectorFactoryClass::Build(bop->getRangeMap(), 1, true); - Teuchos::RCP cres = Teuchos::rcp_const_cast(res); - Teuchos::RCP brcres = - Xpetra::buildReorderedBlockedMultiVector(brm, Teuchos::rcp_dynamic_cast(cres)); - Teuchos::RCP brres = Teuchos::rcp_const_cast(brcres); - - brop->apply(*brones, *brres); - - Teuchos::Array nn(res->getNumVectors()); - TEST_NOTHROW(res->norm1(nn)); - TEUCHOS_TEST_COMPARE(nn[0], >, 1e3, out, success); - - // res contains exactly the same data as brres, the only difference is - // that res is a MultiVector with 8 sub blocks and brres a MultiVector with - // 3 nested sub blocks (compatible to brop) - res->update(-STS::one(), *exp, STS::one()); - - nn[0] = STS::magnitude(STS::one()); - TEST_NOTHROW(res->norm1(nn)); - TEST_EQUALITY(nn[0], STS::zero()); - TEST_NOTHROW(res->norm2(nn)); - TEST_EQUALITY(nn[0], STS::zero()); - TEST_NOTHROW(res->normInf(nn)); - TEST_EQUALITY(nn[0], STS::zero()); - - // compatibility with plain maps - Teuchos::RCP map = bop->getRangeMap(); - Teuchos::RCP bmap = Teuchos::rcp_dynamic_cast(map); - Teuchos::RCP rgMap = bmap->getFullMap(); - - Teuchos::RCP vrnd = VectorFactoryClass::Build(rgMap, true); - Teuchos::RCP vexp = VectorFactoryClass::Build(rgMap, true); - Teuchos::RCP vres = VectorFactoryClass::Build(rgMap, true); - vrnd->randomize(); - - // apply with plain blocked operators works with plain vectors - TEST_NOTHROW(bop->apply(*vrnd, *vexp)); - - // nested blocked operators do not work with plain vectors - TEST_NOTHROW(brop->apply(*vrnd, *vres)); - - vres->update(-STS::one(), *vexp, STS::one()); - TEUCHOS_TEST_COMPARE(vres->norm2(), <, 5e-14, out, success); - TEUCHOS_TEST_COMPARE(vres->normInf(), <, 5e-14, out, success); -} - -TEUCHOS_UNIT_TEST_TEMPLATE_6_DECL(BlockedCrsMatrix, ReorderBlockOperatorApply2, M, MA, Scalar, LO, GO, Node) { - typedef Xpetra::Vector VectorClass; - typedef Xpetra::VectorFactory VectorFactoryClass; - typedef Xpetra::BlockedCrsMatrix BlockedCrsMatrixClass; - typedef Teuchos::ScalarTraits STS; - - // get a comm and node - Teuchos::RCP> comm = getDefaultComm(); - - int noBlocks = 8; - Teuchos::RCP bop = XpetraBlockMatrixTests::CreateBlockDiagonalExampleMatrix(noBlocks, *comm); - - Teuchos::RCP brm = Xpetra::blockedReorderFromString("[ 6 3 2 ]"); - - Teuchos::RCP> brop = - Teuchos::rcp_dynamic_cast>(buildReorderedBlockedCrsMatrix(brm, bop)); - - TEST_EQUALITY(brop->Rows(), 3); - TEST_EQUALITY(brop->Cols(), 3); - TEST_EQUALITY(brop->getRangeMapExtractor()->getThyraMode(), false); - TEST_EQUALITY(brop->getDomainMapExtractor()->getThyraMode(), false); - - // build gloabl vector with one entries - Teuchos::RCP ones = VectorFactoryClass::Build(brop->getFullRangeMap(), true); - Teuchos::RCP res = VectorFactoryClass::Build(brop->getFullRangeMap(), true); - ones->putScalar(STS::one()); - - brop->apply(*ones, *res); - - TEST_EQUALITY(res->norm1(), STS::magnitude(Teuchos::as(comm->getSize()) * Teuchos::as(1230))); - - // build gloabl vector with one entries (blocked version) - Teuchos::RCP bones = VectorFactoryClass::Build(brop->getDomainMap(), true); - Teuchos::RCP bres = VectorFactoryClass::Build(brop->getRangeMap(), true); - bones->putScalar(STS::one()); - - brop->apply(*bones, *bres); - - TEST_EQUALITY(bres->norm1(), STS::magnitude(Teuchos::as(comm->getSize()) * Teuchos::as(1230))); -} - -TEUCHOS_UNIT_TEST_TEMPLATE_6_DECL(BlockedCrsMatrix, ReorderBlockOperatorApplyThyra, M, MA, Scalar, LO, GO, Node) { - typedef Xpetra::Vector VectorClass; - typedef Xpetra::MultiVector MultiVectorClass; - typedef Xpetra::BlockedMultiVector BlockedMultiVectorClass; - typedef Xpetra::VectorFactory VectorFactoryClass; - typedef Xpetra::MultiVectorFactory MultiVectorFactoryClass; - typedef Xpetra::BlockedCrsMatrix BlockedCrsMatrixClass; - typedef Teuchos::ScalarTraits STS; - - // get a comm and node - Teuchos::RCP> comm = getDefaultComm(); - - int noBlocks = 8; - Teuchos::RCP bop = XpetraBlockMatrixTests::CreateBlockDiagonalExampleMatrixThyra(noBlocks, *comm); - - Teuchos::RCP brm = Xpetra::blockedReorderFromString("[ 0 [ 1 [ 2 3 4 ] 5 ] [6 7] ]"); - - Teuchos::RCP> brop = - Teuchos::rcp_dynamic_cast>(buildReorderedBlockedCrsMatrix(brm, bop)); - - TEST_EQUALITY(brop->Rows(), 3); - TEST_EQUALITY(brop->Cols(), 3); - TEST_EQUALITY(brop->getRangeMapExtractor()->getThyraMode(), true); - TEST_EQUALITY(brop->getDomainMapExtractor()->getThyraMode(), true); - - // build gloabl vector with one entries - // The MultiVector objects "ones" and "exp" are BlockedMultiVectors with 8 sub blocks - // compatible to bop - Teuchos::RCP ones = MultiVectorFactoryClass::Build(bop->getRangeMap(), 1, true); - Teuchos::RCP exp = MultiVectorFactoryClass::Build(bop->getRangeMap(), 1, true); - ones->putScalar(STS::one()); - bop->apply(*ones, *exp); - - // calculate 1-norm of result vector - Teuchos::Array nn(exp->getNumVectors()); - TEST_NOTHROW(exp->norm1(nn)); - TEST_EQUALITY(nn[0], comm->getSize() * 4485 * STS::magnitude(STS::one())); - - // overwrite result vector values - exp->putScalar(STS::magnitude(STS::zero())); - - // reorganize "ones" and "res" to be BlockedMultiVectors with 3 sub blocks (nested) - // compatible to brop - // They use and work with the same 8 sub vectors from "ones" and "exp" - Teuchos::RCP cones = Teuchos::rcp_const_cast(ones); - Teuchos::RCP brones = - Xpetra::buildReorderedBlockedMultiVector(brm, Teuchos::rcp_dynamic_cast(cones)); - Teuchos::RCP res = MultiVectorFactoryClass::Build(bop->getRangeMap(), 1, true); - Teuchos::RCP cres = Teuchos::rcp_const_cast(res); - Teuchos::RCP brcres = - Xpetra::buildReorderedBlockedMultiVector(brm, Teuchos::rcp_dynamic_cast(cres)); - Teuchos::RCP brres = Teuchos::rcp_const_cast(brcres); - - brop->apply(*brones, *brres); - - Teuchos::Array nn2(brres->getNumVectors()); - TEST_NOTHROW(brres->norm1(nn2)); - TEST_EQUALITY(nn2[0], comm->getSize() * 4485 * STS::magnitude(STS::one())); - TEST_NOTHROW(res->norm1(nn2)); - TEST_EQUALITY(nn2[0], comm->getSize() * 4485 * STS::magnitude(STS::one())); - - Teuchos::RCP vones = VectorFactoryClass::Build(bop->getFullRangeMap(), true); - Teuchos::RCP vres = VectorFactoryClass::Build(bop->getFullRangeMap(), true); - vones->putScalar(STS::one()); - bop->apply(*vones, *vres); - - TEST_NOTHROW(vres->norm1(nn2)); - TEST_EQUALITY(nn2[0], comm->getSize() * 4485 * STS::magnitude(STS::one())); - - // not supported, yet. doImport for BlockedMultiVectors missing - // fix this by checking the input vectors in the apply routine and switch to - // ReorderedBlockedMultiVectors. Does this fix the problem? Do it in a two stage fashion. - TEST_NOTHROW(brop->apply(*vones, *vres)); - TEST_NOTHROW(vres->norm1(nn2)); - TEST_EQUALITY(nn2[0], comm->getSize() * 4485 * STS::magnitude(STS::one())); - - Teuchos::RCP vrnd2 = VectorFactoryClass::Build(bop->getFullRangeMap(), true); - Teuchos::RCP vexp2 = VectorFactoryClass::Build(bop->getFullRangeMap(), true); - Teuchos::RCP vres2 = VectorFactoryClass::Build(bop->getFullRangeMap(), true); - vrnd2->randomize(); - - // apply with plain blocked operators works with plain vectors - TEST_NOTHROW(bop->apply(*vrnd2, *vexp2)); - - // nested blocked operators do not work with plain vectors - TEST_NOTHROW(brop->apply(*vrnd2, *vres2)); - - vres2->update(-STS::one(), *vexp2, STS::one()); - TEUCHOS_TEST_COMPARE(vres2->norm2(), <, 5e-14, out, success); - TEUCHOS_TEST_COMPARE(vres2->normInf(), <, 5e-14, out, success); - - // build gloabl vector with one entries (blocked version) - Teuchos::RCP bones = VectorFactoryClass::Build(brop->getDomainMap(), true); - Teuchos::RCP bres = VectorFactoryClass::Build(brop->getRangeMap(), true); - bones->putScalar(STS::one()); - - brop->apply(*bones, *bres); - - TEST_EQUALITY(bres->norm1(), STS::magnitude(Teuchos::as(comm->getSize()) * Teuchos::as(4485))); -} - -TEUCHOS_UNIT_TEST_TEMPLATE_6_DECL(BlockedCrsMatrix, ReorderBlockOperatorApplyThyraSmall, M, MA, Scalar, LO, GO, Node) { - typedef Xpetra::Vector VectorClass; - typedef Xpetra::MultiVector MultiVectorClass; - typedef Xpetra::BlockedMultiVector BlockedMultiVectorClass; - typedef Xpetra::VectorFactory VectorFactoryClass; - typedef Xpetra::MultiVectorFactory MultiVectorFactoryClass; - typedef Xpetra::BlockedCrsMatrix BlockedCrsMatrixClass; - typedef Teuchos::ScalarTraits STS; - - // get a comm and node - Teuchos::RCP> comm = getDefaultComm(); - - int noBlocks = 3; - Teuchos::RCP bop = XpetraBlockMatrixTests::CreateBlockDiagonalExampleMatrixThyra(noBlocks, *comm); - - Teuchos::RCP brm = Xpetra::blockedReorderFromString("[ 0 [ 1 2 ] ]"); - - Teuchos::RCP> brop = - Teuchos::rcp_dynamic_cast>(buildReorderedBlockedCrsMatrix(brm, bop)); - - TEST_EQUALITY(brop->Rows(), 2); - TEST_EQUALITY(brop->Cols(), 2); - TEST_EQUALITY(brop->getRangeMapExtractor()->getThyraMode(), true); - TEST_EQUALITY(brop->getDomainMapExtractor()->getThyraMode(), true); - - // build gloabl vector with one entries - // The MultiVector objects "ones" and "exp" are BlockedMultiVectors with 8 sub blocks - // compatible to bop - Teuchos::RCP ones = MultiVectorFactoryClass::Build(bop->getRangeMap(), 1, true); - Teuchos::RCP exp = MultiVectorFactoryClass::Build(bop->getRangeMap(), 1, true); - ones->putScalar(STS::one()); - bop->apply(*ones, *exp); - - // calculate 1-norm of result vector - Teuchos::Array nn(exp->getNumVectors()); - TEST_NOTHROW(exp->norm1(nn)); - TEST_EQUALITY(nn[0], comm->getSize() * 45 * STS::magnitude(STS::one())); - - // overwrite result vector values - exp->putScalar(STS::magnitude(STS::zero())); - - // exp->describe(out,Teuchos::VERB_EXTREME); - - // reorganize "ones" and "res" to be BlockedMultiVectors with 2 sub blocks (nested) - // compatible to brop - Teuchos::RCP cones = Teuchos::rcp_const_cast(ones); - Teuchos::RCP brones = - Xpetra::buildReorderedBlockedMultiVector(brm, Teuchos::rcp_dynamic_cast(cones)); - Teuchos::RCP res = MultiVectorFactoryClass::Build(bop->getRangeMap(), 1, true); - Teuchos::RCP cres = Teuchos::rcp_const_cast(res); - Teuchos::RCP brcres = - Xpetra::buildReorderedBlockedMultiVector(brm, Teuchos::rcp_dynamic_cast(cres)); - Teuchos::RCP brres = Teuchos::rcp_const_cast(brcres); - - // Note: the result is both contained in res and brres. - // brres uses the same underlying vectors! - brop->apply(*brones, *brres); - - Teuchos::Array nn2(brres->getNumVectors()); - TEST_NOTHROW(brres->norm1(nn2)); - TEST_EQUALITY(nn2[0], comm->getSize() * 45 * STS::magnitude(STS::one())); - TEST_NOTHROW(res->norm1(nn2)); - TEST_EQUALITY(nn2[0], comm->getSize() * 45 * STS::magnitude(STS::one())); - - Teuchos::RCP vones = VectorFactoryClass::Build(bop->getFullRangeMap(), true); - Teuchos::RCP vres = VectorFactoryClass::Build(bop->getFullRangeMap(), true); - vones->putScalar(STS::one()); - bop->apply(*vones, *vres); - - TEST_NOTHROW(vres->norm1(nn2)); - TEST_EQUALITY(nn2[0], comm->getSize() * 45 * STS::magnitude(STS::one())); - - // not supported, yet. doImport for BlockedMultiVectors missing - // fix this by checking the input vectors in the apply routine and switch to - // ReorderedBlockedMultiVectors. Does this fix the problem? Do it in a two stage fashion. - TEST_NOTHROW(brop->apply(*vones, *vres)); - - TEST_NOTHROW(vres->norm1(nn2)); - TEST_EQUALITY(nn2[0], comm->getSize() * 45 * STS::magnitude(STS::one())); -} - -TEUCHOS_UNIT_TEST_TEMPLATE_6_DECL(BlockedCrsMatrix, ReorderBlockOperatorApply2Thyra, M, MA, Scalar, LO, GO, Node) { - typedef Xpetra::Vector VectorClass; - typedef Xpetra::VectorFactory VectorFactoryClass; - typedef Xpetra::BlockedCrsMatrix BlockedCrsMatrixClass; - typedef Teuchos::ScalarTraits STS; - - // get a comm and node - Teuchos::RCP> comm = getDefaultComm(); - - int noBlocks = 8; - Teuchos::RCP bop = XpetraBlockMatrixTests::CreateBlockDiagonalExampleMatrixThyra(noBlocks, *comm); - - Teuchos::RCP brm = Xpetra::blockedReorderFromString("[ 6 3 2 ]"); - - Teuchos::RCP> brop = - Teuchos::rcp_dynamic_cast>(buildReorderedBlockedCrsMatrix(brm, bop)); - - TEST_EQUALITY(brop->Rows(), 3); - TEST_EQUALITY(brop->Cols(), 3); - TEST_EQUALITY(brop->getRangeMapExtractor()->getThyraMode(), true); - TEST_EQUALITY(brop->getDomainMapExtractor()->getThyraMode(), true); - - // build gloabl vector with one entries - Teuchos::RCP ones = VectorFactoryClass::Build(brop->getFullRangeMap(), true); - Teuchos::RCP res = VectorFactoryClass::Build(brop->getFullRangeMap(), true); - ones->putScalar(STS::one()); - - brop->apply(*ones, *res); - - TEST_EQUALITY(res->norm1(), STS::magnitude(Teuchos::as(comm->getSize()) * Teuchos::as(1230))); - - // build gloabl vector with one entries (blocked version) - Teuchos::RCP bones = VectorFactoryClass::Build(brop->getDomainMap(), true); - Teuchos::RCP bres = VectorFactoryClass::Build(brop->getRangeMap(), true); - bones->putScalar(STS::one()); - - brop->apply(*bones, *bres); - - TEST_EQUALITY(bres->norm1(), STS::magnitude(Teuchos::as(comm->getSize()) * Teuchos::as(1230))); -} - -TEUCHOS_UNIT_TEST_TEMPLATE_6_DECL(BlockedCrsMatrix, ReadWriteBlockedMatrix, M, MA, Scalar, LO, GO, Node) { - // TODO: it seems that the Tpetra matrix reader is only working for standard maps?? - - typedef Xpetra::Map MapClass; - typedef Xpetra::MapFactory MapFactoryClass; - typedef Xpetra::Vector VectorClass; - typedef Xpetra::VectorFactory VectorFactoryClass; - typedef Xpetra::MapExtractor MapExtractorClass; - typedef Xpetra::MapExtractorFactory MapExtractorFactoryClass; - typedef Teuchos::ScalarTraits STS; - - // get a comm and node - Teuchos::RCP> comm = getDefaultComm(); - - M testMap(1, 0, comm); - Xpetra::UnderlyingLib lib = testMap.lib(); - - // generate problem - GO nEle = 63; - const Teuchos::RCP map = MapFactoryClass::Build(lib, nEle, 0, comm); - - LO NumMyElements = map->getLocalNumElements(); - GO NumGlobalElements = map->getGlobalNumElements(); - Teuchos::ArrayView MyGlobalElements = map->getLocalElementList(); - - Teuchos::RCP> A = - Xpetra::CrsMatrixFactory::Build(map, 3); - TEUCHOS_TEST_FOR_EXCEPTION(A->isFillComplete() == true || A->isFillActive() == false, std::runtime_error, ""); - - for (LO i = 0; i < NumMyElements; i++) { - if (MyGlobalElements[i] == 0) { - A->insertGlobalValues(MyGlobalElements[i], - Teuchos::tuple(MyGlobalElements[i], MyGlobalElements[i] + 1), - Teuchos::tuple(Teuchos::as(i) * STS::one(), -1.0)); - } else if (MyGlobalElements[i] == NumGlobalElements - 1) { - A->insertGlobalValues(MyGlobalElements[i], - Teuchos::tuple(MyGlobalElements[i] - 1, MyGlobalElements[i]), - Teuchos::tuple(-1.0, Teuchos::as(i) * STS::one())); - } else { - A->insertGlobalValues(MyGlobalElements[i], - Teuchos::tuple(MyGlobalElements[i] - 1, MyGlobalElements[i], MyGlobalElements[i] + 1), - Teuchos::tuple(-1.0, Teuchos::as(i) * STS::one(), -1.0)); - } - } - - A->fillComplete(); - TEUCHOS_TEST_FOR_EXCEPTION(A->isFillComplete() == false || A->isFillActive() == true, std::runtime_error, ""); - - Teuchos::RCP> mat = - Teuchos::rcp(new Xpetra::CrsMatrixWrap(A)); - - Teuchos::Array gids1; - Teuchos::Array gids2; - for (LO i = 0; i < NumMyElements; i++) { - if (i % 3 < 2) - gids1.push_back(map->getGlobalElement(i)); - else - gids2.push_back(map->getGlobalElement(i)); - } - - const Teuchos::RCP map1 = MapFactoryClass::Build(lib, - Teuchos::OrdinalTraits::invalid(), - gids1.view(0, gids1.size()), - 0, - comm); - const Teuchos::RCP map2 = MapFactoryClass::Build(lib, - Teuchos::OrdinalTraits::invalid(), - gids2.view(0, gids2.size()), - 0, - comm); - - std::vector> xmaps; - xmaps.push_back(map1); - xmaps.push_back(map2); - - Teuchos::RCP rowMapExtractormap_extractor = MapExtractorFactoryClass::Build(map, xmaps); - - Teuchos::RCP> bMat = - Xpetra::MatrixUtils::SplitMatrix(*mat, rowMapExtractormap_extractor, rowMapExtractormap_extractor); - - // Write matrices out, read fine A back in, and check that the read was ok - // by using a matvec with a random vector. - // JJH: 22-Feb-2016 Append scalar type to file name. The theory is that for dashboard - // tests with multiple Scalar instantiations of this test, a test with Scalar type - // A could try to read in the results of the test with Scalar type B, simply because - // the test with type B overwrote A's output matrix file. A better solution would be - // to write to a file stream, but this would involve writing new interfaces to Epetra's - // file I/O capabilities. - std::string tname = "BLOCKEDMATRIX"; - tname = tname + typeid(Scalar).name(); - tname = tname + typeid(LO).name(); - tname = tname + typeid(GO).name(); -#ifdef HAVE_MUELU_KOKKOS - std::string nn = Tpetra::KokkosCompat::KokkosDeviceWrapperNode::name(); - nn.erase(std::remove(nn.begin(), nn.end(), '/'), nn.end()); - tname = tname + nn; -#endif - tname = "_" + tname; - - const bool writeAllMaps = true; - Xpetra::IO::WriteBlockedCrsMatrix(tname, *bMat, writeAllMaps); - Teuchos::RCP> bMat2 = Xpetra::IO::ReadBlockedCrsMatrix(tname, lib, comm); - - TEST_EQUALITY(bMat->getMatrix(0, 0)->getGlobalNumEntries(), bMat2->getMatrix(0, 0)->getGlobalNumEntries()); - TEST_EQUALITY(bMat->getMatrix(0, 1)->getGlobalNumEntries(), bMat2->getMatrix(0, 1)->getGlobalNumEntries()); - TEST_EQUALITY(bMat->getMatrix(1, 0)->getGlobalNumEntries(), bMat2->getMatrix(1, 0)->getGlobalNumEntries()); - TEST_EQUALITY(bMat->getMatrix(1, 1)->getGlobalNumEntries(), bMat2->getMatrix(1, 1)->getGlobalNumEntries()); - - TEST_EQUALITY(bMat->getMatrix(0, 0)->getLocalNumEntries(), bMat2->getMatrix(0, 0)->getLocalNumEntries()); - TEST_EQUALITY(bMat->getMatrix(0, 1)->getLocalNumEntries(), bMat2->getMatrix(0, 1)->getLocalNumEntries()); - TEST_EQUALITY(bMat->getMatrix(1, 0)->getLocalNumEntries(), bMat2->getMatrix(1, 0)->getLocalNumEntries()); - TEST_EQUALITY(bMat->getMatrix(1, 1)->getLocalNumEntries(), bMat2->getMatrix(1, 1)->getLocalNumEntries()); - - TEST_EQUALITY(bMat->getMatrix(0, 0)->getFrobeniusNorm(), bMat2->getMatrix(0, 0)->getFrobeniusNorm()); - TEST_EQUALITY(bMat->getMatrix(0, 1)->getFrobeniusNorm(), bMat2->getMatrix(0, 1)->getFrobeniusNorm()); - TEST_EQUALITY(bMat->getMatrix(1, 0)->getFrobeniusNorm(), bMat2->getMatrix(1, 0)->getFrobeniusNorm()); - TEST_EQUALITY(bMat->getMatrix(1, 1)->getFrobeniusNorm(), bMat2->getMatrix(1, 1)->getFrobeniusNorm()); - - TEST_EQUALITY(bMat->getRangeMapExtractor()->getMap(0)->isSameAs(*(bMat2->getRangeMapExtractor()->getMap(0))), true); - TEST_EQUALITY(bMat->getDomainMapExtractor()->getMap(0)->isSameAs(*(bMat2->getDomainMapExtractor()->getMap(0))), true); - - TEST_EQUALITY(bMat->getRangeMapExtractor()->getFullMap()->isSameAs(*(bMat2->getRangeMapExtractor()->getFullMap())), true); - TEST_EQUALITY(bMat->getDomainMapExtractor()->getFullMap()->isSameAs(*(bMat2->getDomainMapExtractor()->getFullMap())), true); - - // these tests are false with Tpetra? TODO check me: why only in Tpetra? - // bMat2 is always in Xpetra mode so far. This is, since the Read routine and Write routine for the MapExtractor do not really - // consider the Thyra mode so far. - // TEST_EQUALITY(bMat->getRangeMapExtractor()->getMap(1)->isSameAs(*(bMat2->getRangeMapExtractor()->getMap(1))),true); - // TEST_EQUALITY(bMat->getDomainMapExtractor()->getMap(1)->isSameAs(*(bMat2->getDomainMapExtractor()->getMap(1))),true); - - TEST_EQUALITY(bMat->getMatrix(0, 0)->getRowMap()->isSameAs(*(bMat2->getMatrix(0, 0)->getRowMap())), true); - TEST_EQUALITY(bMat->getMatrix(0, 1)->getRowMap()->isSameAs(*(bMat2->getMatrix(0, 1)->getRowMap())), true); - TEST_EQUALITY(bMat->getMatrix(1, 0)->getRowMap()->isSameAs(*(bMat2->getMatrix(1, 0)->getRowMap())), true); - TEST_EQUALITY(bMat->getMatrix(1, 1)->getRowMap()->isSameAs(*(bMat2->getMatrix(1, 1)->getRowMap())), true); - - TEST_EQUALITY(bMat->getMatrix(0, 0)->getColMap()->isSameAs(*(bMat2->getMatrix(0, 0)->getColMap())), true); - TEST_EQUALITY(bMat->getMatrix(0, 1)->getColMap()->isSameAs(*(bMat2->getMatrix(0, 1)->getColMap())), true); - // the following test fails with Teptra. Why? - // TEST_EQUALITY(bMat->getMatrix(1,0)->getColMap()->isSameAs(*(bMat2->getMatrix(1,0)->getColMap())),true); - TEST_EQUALITY(bMat->getMatrix(1, 1)->getColMap()->isSameAs(*(bMat2->getMatrix(1, 1)->getColMap())), true); - - // build gloabl vector with one entries - Teuchos::RCP ones_A = VectorFactoryClass::Build(bMat->getRangeMap(), true); - Teuchos::RCP exp = VectorFactoryClass::Build(bMat->getRangeMap(), true); - Teuchos::RCP ones_bOp = VectorFactoryClass::Build(bMat2->getRangeMap(), true); - Teuchos::RCP res = VectorFactoryClass::Build(bMat2->getRangeMap(), true); - ones_A->putScalar(STS::one()); - ones_bOp->putScalar(STS::one()); - - bMat->apply(*ones_A, *exp); - bMat2->apply(*ones_bOp, *res); - - TEST_EQUALITY(res->norm2(), exp->norm2()); - TEST_EQUALITY(res->normInf(), exp->normInf()); - TEST_EQUALITY(bMat->getRangeMapExtractor()->getThyraMode(), false); - TEST_EQUALITY(bMat->getDomainMapExtractor()->getThyraMode(), false); - TEST_EQUALITY(bMat->getRangeMap(0)->getMinAllGlobalIndex(), 0); - TEST_INEQUALITY(bMat->getRangeMap(1)->getMinAllGlobalIndex(), 0); - TEST_EQUALITY(bMat->getDomainMap(0)->getMinAllGlobalIndex(), 0); - TEST_INEQUALITY(bMat->getDomainMap(1)->getMinAllGlobalIndex(), 0); - TEST_EQUALITY(bMat2->getRangeMapExtractor()->getThyraMode(), false); // thyra mode is not correctly transferred!! - TEST_EQUALITY(bMat2->getDomainMapExtractor()->getThyraMode(), false); - TEST_EQUALITY(bMat2->getRangeMap(0)->getMinAllGlobalIndex(), 0); - TEST_INEQUALITY(bMat2->getRangeMap(1)->getMinAllGlobalIndex(), 0); - TEST_EQUALITY(bMat2->getDomainMap(0)->getMinAllGlobalIndex(), 0); - TEST_INEQUALITY(bMat2->getDomainMap(1)->getMinAllGlobalIndex(), 0); -} - -/// simple test routine for the apply function of BlockedCrsMatrix -TEUCHOS_UNIT_TEST_TEMPLATE_6_DECL(BlockedCrsMatrix, Apply, M, MA, Scalar, LO, GO, Node) { - typedef Xpetra::Map MapClass; - typedef Xpetra::StridedMap StridedMapClass; - typedef Xpetra::MapFactory MapFactoryClass; - typedef Xpetra::StridedMapFactory StridedMapFactoryClass; - typedef Xpetra::Vector VectorClass; - typedef Xpetra::VectorFactory VectorFactoryClass; - typedef Xpetra::MapExtractor MapExtractorClass; - typedef Xpetra::MapExtractorFactory MapExtractorFactoryClass; - typedef Xpetra::Matrix MatrixClass; - typedef Teuchos::ScalarTraits STS; - - // get a comm and node - Teuchos::RCP> comm = getDefaultComm(); - - M testMap(1, 0, comm); - Xpetra::UnderlyingLib lib = testMap.lib(); - - const Teuchos::RCP pointmap = MapFactoryClass::Build(lib, 12, 0, comm); - - // generate local maps for loading matrices - Teuchos::Array velgidvec; // global strided maps - Teuchos::Array pregidvec; - Teuchos::Array fullgidvec; // full global map - for (LO i = 0; i < Teuchos::as(pointmap->getLocalNumElements()); i++) { - // loop over all local ids in pointmap - - // get corresponding global id - GO gid = pointmap->getGlobalElement(i); - - // store global strided gids - velgidvec.push_back(3 * gid); - velgidvec.push_back(3 * gid + 1); - pregidvec.push_back(3 * gid + 2); - - // gid for full map - fullgidvec.push_back(3 * gid); - fullgidvec.push_back(3 * gid + 1); - fullgidvec.push_back(3 * gid + 2); - } - - std::vector stridingInfo; - stridingInfo.push_back(2); - stridingInfo.push_back(1); - - const Teuchos::RCP velmap = StridedMapFactoryClass::Build(lib, - Teuchos::OrdinalTraits::invalid(), - velgidvec(), - 0, - stridingInfo, - comm, 0); - const Teuchos::RCP premap = StridedMapFactoryClass::Build(lib, - Teuchos::OrdinalTraits::invalid(), - pregidvec(), - 0, - stridingInfo, - comm, 1); - const Teuchos::RCP fullmap = StridedMapFactoryClass::Build(lib, - Teuchos::OrdinalTraits::invalid(), - fullgidvec(), - 0, - stridingInfo, - comm, -1); - - std::string tname = typeid(Scalar).name(); - if (tname.find("complex") != std::string::npos) { - std::cout << "Skip test for scalar=" << tname << std::endl; - return; - } - - Teuchos::RCP A = Xpetra::IO::Read("A.mat", fullmap->getMap()); - - std::vector> xmaps; - xmaps.push_back(velmap); - xmaps.push_back(premap); - - Teuchos::RCP rowMapExtractormap_extractor = MapExtractorFactoryClass::Build(fullmap, xmaps); - - Teuchos::RCP> bOp = - Xpetra::MatrixUtils::SplitMatrix(*A, rowMapExtractormap_extractor, rowMapExtractormap_extractor); - - // build gloabl vector with one entries - Teuchos::RCP ones = VectorFactoryClass::Build(fullmap, true); - Teuchos::RCP exp = VectorFactoryClass::Build(fullmap, true); - Teuchos::RCP res = VectorFactoryClass::Build(fullmap, true); - Teuchos::RCP rnd = VectorFactoryClass::Build(fullmap, true); - ones->putScalar(STS::one()); - rnd->randomize(); - - using magnitudeType = typename Teuchos::ScalarTraits::magnitudeType; - magnitudeType tol1 = Teuchos::ScalarTraits::eps(); - magnitudeType tol2 = 500 * tol1; - - A->apply(*ones, *exp); - bOp->apply(*ones, *res); - res->update(-STS::one(), *exp, STS::one()); - TEUCHOS_TEST_COMPARE(res->norm2(), <, tol1, out, success); - TEUCHOS_TEST_COMPARE(res->normInf(), <, tol1, out, success); - - A->apply(*rnd, *exp); - bOp->apply(*rnd, *res); - res->update(-STS::one(), *exp, STS::one()); - TEUCHOS_TEST_COMPARE(res->norm2(), <, tol2, out, success); - TEUCHOS_TEST_COMPARE(res->normInf(), <, tol2, out, success); -} - -TEUCHOS_UNIT_TEST_TEMPLATE_6_DECL(BlockedCrsMatrix, getLocalDiagCopy, M, MA, Scalar, LO, GO, Node) { - typedef Xpetra::Map MapClass; - typedef Xpetra::BlockedMap BlockedMapClass; - typedef Xpetra::BlockedCrsMatrix BlockedCrsMatrixClass; - typedef Xpetra::Vector VectorClass; - typedef Xpetra::MultiVector MultiVectorClass; - typedef Xpetra::BlockedVector BlockedVectorClass; - typedef Xpetra::BlockedMultiVector BlockedMultiVectorClass; - typedef Xpetra::VectorFactory VectorFactoryClass; - - // get a comm and node - Teuchos::RCP> comm = getDefaultComm(); - - int noBlocks = 5; - Teuchos::RCP bop = XpetraBlockMatrixTests::CreateBlockDiagonalExampleMatrix(noBlocks, *comm); - TEST_EQUALITY(bop->Rows(), Teuchos::as(noBlocks)); - TEST_EQUALITY(bop->Cols(), Teuchos::as(noBlocks)); - - Teuchos::RCP vorig = VectorFactoryClass::Build(bop->getRangeMap(), true); - - bop->getLocalDiagCopy(*vorig); - - Teuchos::RCP bvorig = Teuchos::rcp_dynamic_cast(vorig); - TEST_EQUALITY(bvorig.is_null(), false); - TEST_EQUALITY(bvorig->getBlockedMap()->getNumMaps(), Teuchos::as(noBlocks)); - - Teuchos::RCP mvorig = bvorig->Merge(); - TEST_EQUALITY(mvorig->getMap()->getMaxAllGlobalIndex(), bvorig->getMap()->getMaxAllGlobalIndex()); - TEST_EQUALITY(mvorig->getNumVectors(), 1); - - Teuchos::ArrayRCP vdataorig = mvorig->getData(0); - bool bCheck = true; - for (int i = 0; i < 5; i++) - if (vdataorig[i] != Teuchos::as(1.0)) bCheck = false; - for (int i = 5; i < 10; i++) - if (vdataorig[i] != Teuchos::as(2.0)) bCheck = false; - for (int i = 10; i < 20; i++) - if (vdataorig[i] != Teuchos::as(3.0)) bCheck = false; - for (int i = 20; i < 40; i++) - if (vdataorig[i] != Teuchos::as(4.0)) bCheck = false; - for (int i = 40; i < 80; i++) - if (vdataorig[i] != Teuchos::as(5.0)) bCheck = false; - TEST_EQUALITY(bCheck, true); - - // reordered blocked operator (Xpetra style) - Teuchos::RCP brm = Xpetra::blockedReorderFromString("[ 4 [3 2] 1 0]"); - - Teuchos::RCP> brop = - Teuchos::rcp_dynamic_cast>(buildReorderedBlockedCrsMatrix(brm, bop)); - - GO goNumRows = Teuchos::as(Teuchos::ScalarTraits::pow(2, noBlocks - 2)) * 10 * comm->getSize(); - - TEST_EQUALITY(brop->Rows(), 4); - TEST_EQUALITY(brop->Cols(), 4); - TEST_EQUALITY(brop->getRangeMap()->getGlobalNumElements(), Teuchos::as(goNumRows)); - TEST_EQUALITY(brop->getDomainMap()->getGlobalNumElements(), Teuchos::as(goNumRows)); - - Teuchos::RCP map = brop->getRangeMap(); - Teuchos::RCP bmap = Teuchos::rcp_dynamic_cast(map); - TEST_EQUALITY(bmap.is_null(), false); - TEST_EQUALITY(bmap->getNumMaps(), 4); - Teuchos::RCP v = VectorFactoryClass::Build(brop->getRangeMap(), true); - Teuchos::RCP bv = Teuchos::rcp_dynamic_cast(v); - TEST_EQUALITY(bv.is_null(), false); - - brop->getLocalDiagCopy(*v); - - mvorig = bv->Merge(); - TEST_EQUALITY(mvorig->getMap()->getMaxAllGlobalIndex(), v->getMap()->getMaxAllGlobalIndex()); - TEST_EQUALITY(mvorig->getNumVectors(), 1); - - Teuchos::ArrayRCP vdata = mvorig->getData(0); - bCheck = true; - for (int i = 0; i < 40; i++) - if (vdata[i] != Teuchos::as(5.0)) bCheck = false; - for (int i = 40; i < 60; i++) - if (vdata[i] != Teuchos::as(4.0)) bCheck = false; - for (int i = 60; i < 70; i++) - if (vdata[i] != Teuchos::as(3.0)) bCheck = false; - for (int i = 70; i < 75; i++) - if (vdata[i] != Teuchos::as(2.0)) bCheck = false; - for (int i = 75; i < 80; i++) - if (vdata[i] != Teuchos::as(1.0)) bCheck = false; - TEST_EQUALITY(bCheck, true); - - // Thyra style (reordered) operator - Teuchos::RCP btop = XpetraBlockMatrixTests::CreateBlockDiagonalExampleMatrixThyra(noBlocks, *comm); - - Teuchos::RCP> brtop = - Teuchos::rcp_dynamic_cast>(buildReorderedBlockedCrsMatrix(brm, btop)); - - TEST_EQUALITY(brtop->Rows(), 4); - TEST_EQUALITY(brtop->Cols(), 4); - TEST_EQUALITY(brtop->getRangeMap()->getGlobalNumElements(), Teuchos::as(goNumRows)); - TEST_EQUALITY(brtop->getDomainMap()->getGlobalNumElements(), Teuchos::as(goNumRows)); - - Teuchos::RCP v2 = VectorFactoryClass::Build(brtop->getRangeMap(), true); - - brtop->getLocalDiagCopy(*v2); - - Teuchos::RCP bv2 = Teuchos::rcp_dynamic_cast(v2); - TEST_EQUALITY(bv2.is_null(), false); - - bCheck = true; - int expectedResult = 5; - for (int k = 0; k < 4; k++) { - Teuchos::RCP subvec = bv2->getMultiVector(k); - TEST_EQUALITY(subvec.is_null(), false); - TEST_EQUALITY(subvec->getNumVectors(), 1); - TEST_EQUALITY(Teuchos::rcp_dynamic_cast(subvec) != Teuchos::null, true); - Teuchos::RCP bsubvec = Teuchos::rcp_dynamic_cast(subvec); - if (bsubvec == Teuchos::null) { - Teuchos::ArrayRCP vdata2 = subvec->getData(0); - for (size_t l = 0; l < Teuchos::as(vdata2.size()); l++) { - if (vdata2[l] != Teuchos::as(expectedResult)) bCheck = false; - } - expectedResult--; - } else { - for (size_t m = 0; m < bsubvec->getBlockedMap()->getNumMaps(); m++) { - Teuchos::RCP ssubvec = bsubvec->getMultiVector(m); - TEST_EQUALITY(ssubvec->getNumVectors(), 1); - TEST_EQUALITY(Teuchos::rcp_dynamic_cast(ssubvec) == Teuchos::null, true); - Teuchos::ArrayRCP vdata3 = ssubvec->getData(0); - for (size_t l2 = 0; l2 < Teuchos::as(vdata3.size()); l2++) { - if (vdata3[l2] != Teuchos::as(expectedResult)) bCheck = false; - } - expectedResult--; - } - } - } - TEST_EQUALITY(bCheck, true); - - mvorig = bv2->Merge(); - Teuchos::ArrayRCP vdata2 = mvorig->getData(0); - bCheck = true; - for (int i = 0; i < 40; i++) - if (vdata2[i] != Teuchos::as(5.0)) bCheck = false; - for (int i = 40; i < 60; i++) - if (vdata2[i] != Teuchos::as(4.0)) bCheck = false; - for (int i = 60; i < 70; i++) - if (vdata2[i] != Teuchos::as(3.0)) bCheck = false; - for (int i = 70; i < 75; i++) - if (vdata2[i] != Teuchos::as(2.0)) bCheck = false; - for (int i = 75; i < 80; i++) - if (vdata2[i] != Teuchos::as(1.0)) bCheck = false; - TEST_EQUALITY(bCheck, true); -} - -TEUCHOS_UNIT_TEST_TEMPLATE_6_DECL(BlockedCrsMatrix, leftScale, M, MA, Scalar, LO, GO, Node) { - typedef Xpetra::BlockedCrsMatrix BlockedCrsMatrixClass; - typedef Xpetra::Vector VectorClass; - typedef Xpetra::VectorFactory VectorFactoryClass; - - // get a comm and node - Teuchos::RCP> comm = getDefaultComm(); - - int noBlocks = 3; - Teuchos::RCP bop = XpetraBlockMatrixTests::CreateBlockDiagonalExampleMatrix(noBlocks, *comm); - TEST_EQUALITY(bop->Rows(), Teuchos::as(noBlocks)); - TEST_EQUALITY(bop->Cols(), Teuchos::as(noBlocks)); - - Teuchos::RCP fancy = Teuchos::fancyOStream(Teuchos::rcpFromRef(std::cout)); - - Teuchos::RCP v1 = VectorFactoryClass::Build(bop->getRangeMap(), true); - bop->getLocalDiagCopy(*v1); - - Teuchos::RCP bop_nonconst = Teuchos::rcp_const_cast(bop); - - Teuchos::RCP s = VectorFactoryClass::Build(bop_nonconst->getRangeMap(), true); - s->putScalar(Teuchos::ScalarTraits::one() * Teuchos::as(2.0)); - - bop_nonconst->leftScale(*s); - - Teuchos::RCP v2 = VectorFactoryClass::Build(bop_nonconst->getRangeMap(), true); - bop_nonconst->getLocalDiagCopy(*v2); - - TEST_EQUALITY(v1->norm1() * Teuchos::as(2.0), v2->norm1()); - TEST_EQUALITY(v1->norm2() * Teuchos::as(2.0), v2->norm2()); - TEST_EQUALITY(v1->normInf() * Teuchos::as(2.0), v2->normInf()); - v1->update(Teuchos::as(-0.5), *v2, Teuchos::ScalarTraits::one()); - TEST_EQUALITY(v1->norm1(), Teuchos::ScalarTraits::magnitude(Teuchos::ScalarTraits::zero())); - - // reordered Xpetra operator - bop = XpetraBlockMatrixTests::CreateBlockDiagonalExampleMatrix(8, *comm); - Teuchos::RCP brm = Xpetra::blockedReorderFromString("[ 0 [ 1 [ 2 3 4 ] 5 ] [6 7] ]"); - - Teuchos::RCP> brop = - Teuchos::rcp_dynamic_cast>(buildReorderedBlockedCrsMatrix(brm, bop)); - Teuchos::RCP> brop_nonconst = - Teuchos::rcp_const_cast>(brop); - - TEST_EQUALITY(brop->Rows(), 3); - TEST_EQUALITY(brop->Cols(), 3); - TEST_EQUALITY(brop->getRangeMapExtractor()->getThyraMode(), false); - TEST_EQUALITY(brop->getDomainMapExtractor()->getThyraMode(), false); - - s = VectorFactoryClass::Build(brop->getRangeMap(), true); - s->putScalar(Teuchos::ScalarTraits::one() * Teuchos::as(2.0)); - - v1 = VectorFactoryClass::Build(brop_nonconst->getRangeMap(), true); - brop_nonconst->getLocalDiagCopy(*v1); - - brop_nonconst->leftScale(*s); - - v2 = VectorFactoryClass::Build(brop_nonconst->getRangeMap(), true); - brop_nonconst->getLocalDiagCopy(*v2); - - TEST_EQUALITY(v1->norm1() * Teuchos::as(2.0), v2->norm1()); - TEST_EQUALITY(v1->norm2() * Teuchos::as(2.0), v2->norm2()); - TEST_EQUALITY(v1->normInf() * Teuchos::as(2.0), v2->normInf()); - v1->update(Teuchos::as(-0.5), *v2, Teuchos::ScalarTraits::one()); - TEST_EQUALITY(v1->norm1(), Teuchos::ScalarTraits::magnitude(Teuchos::ScalarTraits::zero())); - - // reordered Thyra operator - bop = XpetraBlockMatrixTests::CreateBlockDiagonalExampleMatrixThyra(8, *comm); - - brop = Teuchos::rcp_dynamic_cast>(buildReorderedBlockedCrsMatrix(brm, bop)); - brop_nonconst = Teuchos::rcp_const_cast>(brop); - - TEST_EQUALITY(brop->Rows(), 3); - TEST_EQUALITY(brop->Cols(), 3); - TEST_EQUALITY(brop->getRangeMapExtractor()->getThyraMode(), true); - TEST_EQUALITY(brop->getDomainMapExtractor()->getThyraMode(), true); - - s = VectorFactoryClass::Build(brop->getRangeMap(), true); - s->putScalar(Teuchos::ScalarTraits::one() * Teuchos::as(2.0)); - - v1 = VectorFactoryClass::Build(brop_nonconst->getRangeMap(), true); - brop_nonconst->getLocalDiagCopy(*v1); - - brop_nonconst->leftScale(*s); - - v2 = VectorFactoryClass::Build(brop_nonconst->getRangeMap(), true); - brop_nonconst->getLocalDiagCopy(*v2); - - TEST_EQUALITY(v1->norm1() * Teuchos::as(2.0), v2->norm1()); - TEST_EQUALITY(v1->norm2() * Teuchos::as(2.0), v2->norm2()); - TEST_EQUALITY(v1->normInf() * Teuchos::as(2.0), v2->normInf()); - v1->update(Teuchos::as(-0.5), *v2, Teuchos::ScalarTraits::one()); - TEST_EQUALITY(v1->norm1(), Teuchos::ScalarTraits::magnitude(Teuchos::ScalarTraits::zero())); -} - -TEUCHOS_UNIT_TEST_TEMPLATE_6_DECL(BlockedCrsMatrix, rightScale, M, MA, Scalar, LO, GO, Node) { - typedef Xpetra::BlockedCrsMatrix BlockedCrsMatrixClass; - typedef Xpetra::Vector VectorClass; - typedef Xpetra::VectorFactory VectorFactoryClass; - - // get a comm and node - Teuchos::RCP> comm = getDefaultComm(); - - int noBlocks = 3; - Teuchos::RCP bop = XpetraBlockMatrixTests::CreateBlockDiagonalExampleMatrix(noBlocks, *comm); - TEST_EQUALITY(bop->Rows(), Teuchos::as(noBlocks)); - TEST_EQUALITY(bop->Cols(), Teuchos::as(noBlocks)); - - Teuchos::RCP v1 = VectorFactoryClass::Build(bop->getRangeMap(), true); - bop->getLocalDiagCopy(*v1); - - Teuchos::RCP bop_nonconst = Teuchos::rcp_const_cast(bop); - - Teuchos::RCP s = VectorFactoryClass::Build(bop_nonconst->getDomainMap(), true); - s->putScalar(Teuchos::ScalarTraits::one() * Teuchos::as(2.0)); - - bop_nonconst->rightScale(*s); - - Teuchos::RCP v2 = VectorFactoryClass::Build(bop_nonconst->getRangeMap(), true); - bop_nonconst->getLocalDiagCopy(*v2); - - /*Teuchos::ArrayRCP< const Scalar > v1d = v1->getData(0); - Teuchos::ArrayRCP< const Scalar > v2d = v2->getData(0); - bool bCheck = true; - for(int i=0; i<20; i++) if(v1d[i] * Teuchos::as(2.0) != v2d[i]) bCheck = false; - TEST_EQUALITY(bCheck, true);*/ - TEST_EQUALITY(v1->norm1() * Teuchos::as(2.0), v2->norm1()); - TEST_EQUALITY(v1->norm2() * Teuchos::as(2.0), v2->norm2()); - TEST_EQUALITY(v1->normInf() * Teuchos::as(2.0), v2->normInf()); - v1->update(Teuchos::as(-0.5), *v2, Teuchos::ScalarTraits::one()); - TEST_EQUALITY(v1->norm1(), Teuchos::ScalarTraits::magnitude(Teuchos::ScalarTraits::zero())); - - // reordered Xpetra operator - bop = XpetraBlockMatrixTests::CreateBlockDiagonalExampleMatrix(8, *comm); - Teuchos::RCP brm = Xpetra::blockedReorderFromString("[ 0 [ 1 [ 2 3 4 ] 5 ] [6 7] ]"); - - Teuchos::RCP> brop = - Teuchos::rcp_dynamic_cast>(buildReorderedBlockedCrsMatrix(brm, bop)); - Teuchos::RCP> brop_nonconst = - Teuchos::rcp_const_cast>(brop); - - TEST_EQUALITY(brop->Rows(), 3); - TEST_EQUALITY(brop->Cols(), 3); - TEST_EQUALITY(brop->getRangeMapExtractor()->getThyraMode(), false); - TEST_EQUALITY(brop->getDomainMapExtractor()->getThyraMode(), false); - - s = VectorFactoryClass::Build(brop->getDomainMap(), true); - s->putScalar(Teuchos::ScalarTraits::one() * Teuchos::as(2.0)); - - v1 = VectorFactoryClass::Build(brop_nonconst->getRangeMap(), true); - brop_nonconst->getLocalDiagCopy(*v1); - - brop_nonconst->rightScale(*s); - - v2 = VectorFactoryClass::Build(brop_nonconst->getRangeMap(), true); - brop_nonconst->getLocalDiagCopy(*v2); - - /*v1d = v1->getData(0); - v2d = v2->getData(0); - bCheck = true; - for(int i=0; i<640; i++) if(v1d[i] * Teuchos::as(2.0) != v2d[i]) bCheck = false; - TEST_EQUALITY(bCheck, true);*/ - TEST_EQUALITY(v1->norm1() * Teuchos::as(2.0), v2->norm1()); - TEST_EQUALITY(v1->norm2() * Teuchos::as(2.0), v2->norm2()); - TEST_EQUALITY(v1->normInf() * Teuchos::as(2.0), v2->normInf()); - v1->update(Teuchos::as(-0.5), *v2, Teuchos::ScalarTraits::one()); - TEST_EQUALITY(v1->norm1(), Teuchos::ScalarTraits::magnitude(Teuchos::ScalarTraits::zero())); - - // reordered Thyra operator - bop = XpetraBlockMatrixTests::CreateBlockDiagonalExampleMatrixThyra(8, *comm); - - brop = Teuchos::rcp_dynamic_cast>(buildReorderedBlockedCrsMatrix(brm, bop)); - brop_nonconst = Teuchos::rcp_const_cast>(brop); - - TEST_EQUALITY(brop->Rows(), 3); - TEST_EQUALITY(brop->Cols(), 3); - TEST_EQUALITY(brop->getRangeMapExtractor()->getThyraMode(), true); - TEST_EQUALITY(brop->getDomainMapExtractor()->getThyraMode(), true); - - s = VectorFactoryClass::Build(brop->getDomainMap(), true); - s->putScalar(Teuchos::ScalarTraits::one() * Teuchos::as(2.0)); - - v1 = VectorFactoryClass::Build(brop_nonconst->getRangeMap(), true); - brop_nonconst->getLocalDiagCopy(*v1); - - brop_nonconst->rightScale(*s); - - v2 = VectorFactoryClass::Build(brop_nonconst->getRangeMap(), true); - brop_nonconst->getLocalDiagCopy(*v2); - - /*v1d = v1->getData(0); - v2d = v2->getData(0); - bCheck = true; - for(int i=0; i<640; i++) if(v1d[i] * Teuchos::as(2.0) != v2d[i]) bCheck = false; - TEST_EQUALITY(bCheck, true);*/ - TEST_EQUALITY(v1->norm1() * Teuchos::as(2.0), v2->norm1()); - TEST_EQUALITY(v1->norm2() * Teuchos::as(2.0), v2->norm2()); - TEST_EQUALITY(v1->normInf() * Teuchos::as(2.0), v2->normInf()); - v1->update(Teuchos::as(-0.5), *v2, Teuchos::ScalarTraits::one()); - TEST_EQUALITY(v1->norm1(), Teuchos::ScalarTraits::magnitude(Teuchos::ScalarTraits::zero())); -} - -TEUCHOS_UNIT_TEST_TEMPLATE_6_DECL(BlockedCrsMatrix, deepCopy, M, MA, Scalar, LO, GO, Node) { - typedef Xpetra::BlockedCrsMatrix BlockedCrsMatrixClass; - typedef Xpetra::Vector VectorClass; - typedef Xpetra::VectorFactory VectorFactoryClass; - typedef Xpetra::Matrix MatrixClass; - typedef Xpetra::MatrixFactory MatrixFactoryClass; - - // get a comm and node - Teuchos::RCP> comm = getDefaultComm(); - - int noBlocks = 5; - Teuchos::RCP bop = XpetraBlockMatrixTests::CreateBlockDiagonalExampleMatrix(noBlocks, *comm); - TEST_EQUALITY(bop->Rows(), Teuchos::as(noBlocks)); - TEST_EQUALITY(bop->Cols(), Teuchos::as(noBlocks)); - - Teuchos::RCP A2 = MatrixFactoryClass::BuildCopy(bop); - Teuchos::RCP bop2 = Teuchos::rcp_dynamic_cast(A2); - TEST_EQUALITY(bop2->Rows(), Teuchos::as(noBlocks)); - TEST_EQUALITY(bop2->Cols(), Teuchos::as(noBlocks)); - - TEST_EQUALITY(bop2->getRangeMapExtractor()->NumMaps(), bop->getRangeMapExtractor()->NumMaps()); - TEST_EQUALITY(bop2->getDomainMapExtractor()->NumMaps(), bop->getDomainMapExtractor()->NumMaps()); - TEST_EQUALITY(bop2->getGlobalMaxNumRowEntries(), bop->getGlobalMaxNumRowEntries()); - TEST_EQUALITY(bop2->getGlobalNumEntries(), bop->getGlobalNumEntries()); - TEST_EQUALITY(bop2->getGlobalNumRows(), bop->getGlobalNumRows()); - TEST_EQUALITY(bop2->getGlobalNumCols(), bop->getGlobalNumCols()); - - Teuchos::RCP v1 = VectorFactoryClass::Build(bop->getRangeMap(), true); - Teuchos::RCP v2 = VectorFactoryClass::Build(bop2->getRangeMap(), true); - bop->getLocalDiagCopy(*v1); - bop2->getLocalDiagCopy(*v2); - - using magnitudeType = typename Teuchos::ScalarTraits::magnitudeType; - magnitudeType tol = Teuchos::ScalarTraits::eps(); - - v1->update(-Teuchos::ScalarTraits::one(), *v2, Teuchos::ScalarTraits::one()); - TEUCHOS_TEST_COMPARE(v1->norm2(), <, tol, out, success); - TEUCHOS_TEST_COMPARE(v1->normInf(), <, tol, out, success); - - v1 = Teuchos::null; - v2 = Teuchos::null; - - bop = Teuchos::null; - - TEST_EQUALITY(bop2->getRangeMapExtractor()->NumMaps(), Teuchos::as(noBlocks)); - TEST_EQUALITY(bop2->getDomainMapExtractor()->NumMaps(), Teuchos::as(noBlocks)); - TEST_EQUALITY(bop2->getRangeMapExtractor()->getThyraMode(), false); - TEST_EQUALITY(bop2->getDomainMapExtractor()->getThyraMode(), false); - TEST_EQUALITY(bop2->getGlobalMaxNumRowEntries(), 1); - TEST_EQUALITY(bop2->getGlobalNumRows(), Teuchos::as(comm->getSize() * 80)); - TEST_EQUALITY(bop2->getGlobalNumCols(), Teuchos::as(comm->getSize() * 80)); - TEST_EQUALITY(bop2->getMatrix(0, 0) != Teuchos::null, true); - TEST_EQUALITY(bop2->getMatrix(0, 0)->getRangeMap()->getGlobalNumElements(), Teuchos::as(comm->getSize() * 5)); - - // Thyra blocked operator - Teuchos::RCP bop3 = XpetraBlockMatrixTests::CreateBlockDiagonalExampleMatrixThyra(noBlocks, *comm); - TEST_EQUALITY(bop3->Rows(), Teuchos::as(noBlocks)); - TEST_EQUALITY(bop3->Cols(), Teuchos::as(noBlocks)); - - Teuchos::RCP A4 = MatrixFactoryClass::BuildCopy(bop3); - Teuchos::RCP bop4 = Teuchos::rcp_dynamic_cast(A4); - TEST_EQUALITY(bop4->Rows(), Teuchos::as(noBlocks)); - TEST_EQUALITY(bop4->Cols(), Teuchos::as(noBlocks)); - - bop3 = Teuchos::null; - - TEST_EQUALITY(bop4->getRangeMapExtractor()->NumMaps(), Teuchos::as(noBlocks)); - TEST_EQUALITY(bop4->getDomainMapExtractor()->NumMaps(), Teuchos::as(noBlocks)); - TEST_EQUALITY(bop4->getRangeMapExtractor()->getThyraMode(), true); - TEST_EQUALITY(bop4->getDomainMapExtractor()->getThyraMode(), true); - TEST_EQUALITY(bop4->getGlobalMaxNumRowEntries(), 1); - TEST_EQUALITY(bop4->getGlobalNumRows(), Teuchos::as(comm->getSize() * 80)); - TEST_EQUALITY(bop4->getGlobalNumCols(), Teuchos::as(comm->getSize() * 80)); - TEST_EQUALITY(bop4->getMatrix(0, 0) != Teuchos::null, true); - TEST_EQUALITY(bop4->getMatrix(0, 0)->getRangeMap()->getGlobalNumElements(), Teuchos::as(comm->getSize() * 5)); - - // Nested Xpetra blocked operator - bop = XpetraBlockMatrixTests::CreateBlockDiagonalExampleMatrix(noBlocks, *comm); - Teuchos::RCP brm = Xpetra::blockedReorderFromString("[ 1 [ [ 2 4 0 ] 3] ]"); - - Teuchos::RCP> brop = - Teuchos::rcp_dynamic_cast>(buildReorderedBlockedCrsMatrix(brm, bop)); - - TEST_EQUALITY(brop->Rows(), 2); - TEST_EQUALITY(brop->Cols(), 2); - - Teuchos::RCP A = MatrixFactoryClass::BuildCopy(brop); - Teuchos::RCP brop2 = Teuchos::rcp_dynamic_cast(A); - brop = Teuchos::null; - TEST_EQUALITY(brop2->Rows(), 2); - TEST_EQUALITY(brop2->Cols(), 2); - Teuchos::RCP brop200 = Teuchos::rcp_dynamic_cast(brop2->getMatrix(0, 0)); - Teuchos::RCP brop211 = Teuchos::rcp_dynamic_cast(brop2->getMatrix(1, 1)); - Teuchos::RCP brop21100 = Teuchos::rcp_dynamic_cast(brop211->getMatrix(0, 0)); - TEST_EQUALITY(brop200->Rows(), 1); - TEST_EQUALITY(brop200->Cols(), 1); - TEST_EQUALITY(brop211->Rows(), 2); - TEST_EQUALITY(brop211->Cols(), 2); - TEST_EQUALITY(brop21100->Rows(), 3); - TEST_EQUALITY(brop21100->Cols(), 3); - TEST_EQUALITY(brop21100->getMatrix(0, 0)->getRangeMap()->getGlobalNumElements(), Teuchos::as(comm->getSize() * 10)); - TEST_EQUALITY(brop21100->getMatrix(1, 1)->getRangeMap()->getGlobalNumElements(), Teuchos::as(comm->getSize() * 40)); - TEST_EQUALITY(brop2->getRangeMapExtractor()->getThyraMode(), false); - TEST_EQUALITY(brop2->getDomainMapExtractor()->getThyraMode(), false); - TEST_EQUALITY(brop200->getRangeMapExtractor()->getThyraMode(), false); - TEST_EQUALITY(brop200->getDomainMapExtractor()->getThyraMode(), false); - TEST_EQUALITY(brop211->getRangeMapExtractor()->getThyraMode(), false); - TEST_EQUALITY(brop211->getDomainMapExtractor()->getThyraMode(), false); - TEST_EQUALITY(brop21100->getRangeMapExtractor()->getThyraMode(), false); - TEST_EQUALITY(brop21100->getDomainMapExtractor()->getThyraMode(), false); - - // Nested Thyra blocked operator - bop = XpetraBlockMatrixTests::CreateBlockDiagonalExampleMatrixThyra(noBlocks, *comm); - - brop = Teuchos::rcp_dynamic_cast>(buildReorderedBlockedCrsMatrix(brm, bop)); - - TEST_EQUALITY(brop->Rows(), 2); - TEST_EQUALITY(brop->Cols(), 2); - - A = MatrixFactoryClass::BuildCopy(brop); - brop2 = Teuchos::rcp_dynamic_cast(A); - brop = Teuchos::null; - TEST_EQUALITY(brop2->Rows(), 2); - TEST_EQUALITY(brop2->Cols(), 2); - brop200 = Teuchos::rcp_dynamic_cast(brop2->getMatrix(0, 0)); - brop211 = Teuchos::rcp_dynamic_cast(brop2->getMatrix(1, 1)); - brop21100 = Teuchos::rcp_dynamic_cast(brop211->getMatrix(0, 0)); - TEST_EQUALITY(brop200->Rows(), 1); - TEST_EQUALITY(brop200->Cols(), 1); - TEST_EQUALITY(brop211->Rows(), 2); - TEST_EQUALITY(brop211->Cols(), 2); - TEST_EQUALITY(brop21100->Rows(), 3); - TEST_EQUALITY(brop21100->Cols(), 3); - TEST_EQUALITY(brop21100->getMatrix(0, 0)->getRangeMap()->getGlobalNumElements(), Teuchos::as(comm->getSize() * 10)); - TEST_EQUALITY(brop21100->getMatrix(1, 1)->getRangeMap()->getGlobalNumElements(), Teuchos::as(comm->getSize() * 40)); - TEST_EQUALITY(brop2->getRangeMapExtractor()->getThyraMode(), true); - TEST_EQUALITY(brop2->getDomainMapExtractor()->getThyraMode(), true); - TEST_EQUALITY(brop200->getRangeMapExtractor()->getThyraMode(), true); - TEST_EQUALITY(brop200->getDomainMapExtractor()->getThyraMode(), true); - TEST_EQUALITY(brop211->getRangeMapExtractor()->getThyraMode(), true); - TEST_EQUALITY(brop211->getDomainMapExtractor()->getThyraMode(), true); - TEST_EQUALITY(brop21100->getRangeMapExtractor()->getThyraMode(), true); - TEST_EQUALITY(brop21100->getDomainMapExtractor()->getThyraMode(), true); -} - -TEUCHOS_UNIT_TEST_TEMPLATE_6_DECL(BlockedCrsMatrix, transformThyra2XpetraGIDs, M, MA, Scalar, LO, GO, Node) { - typedef Xpetra::Map MapClass; - typedef Xpetra::MapUtils MapUtilsClass; - typedef Xpetra::MapFactory MapFactoryClass; - - // get a comm and node - Teuchos::RCP> comm = getDefaultComm(); - - M testMap(1, 0, comm); - Xpetra::UnderlyingLib lib = testMap.lib(); - - Teuchos::Array ovltGIDs; - Teuchos::Array novltGIDs; - Teuchos::Array novlxGIDs; - - for (int i = 0; i < 10; i++) { - novltGIDs.append(comm->getRank() * 10 + Teuchos::as(i)); - novlxGIDs.append(comm->getRank() * 40 + Teuchos::as(i) * 10 + 111); - ovltGIDs.append(comm->getRank() * 10 + Teuchos::as(i)); - } - if (comm->getRank() > 0) ovltGIDs.append(comm->getRank() * 10 - 1); - if (comm->getRank() < comm->getSize() - 1) ovltGIDs.append(comm->getRank() * 10 + 10); - - Teuchos::RCP ovltMap = MapFactoryClass::Build(lib, Teuchos::OrdinalTraits::invalid(), ovltGIDs(), 0, comm); - Teuchos::RCP novltMap = MapFactoryClass::Build(lib, Teuchos::OrdinalTraits::invalid(), novltGIDs(), 0, comm); - Teuchos::RCP novlxMap = MapFactoryClass::Build(lib, Teuchos::OrdinalTraits::invalid(), novlxGIDs(), 0, comm); - - Teuchos::RCP xmap = MapUtilsClass::transformThyra2XpetraGIDs( - *ovltMap, - *novltMap, - *novlxMap); - - TEST_EQUALITY(xmap->getLocalNumElements(), ovltMap->getLocalNumElements()); - TEST_EQUALITY(xmap->getGlobalNumElements(), ovltMap->getGlobalNumElements()); - for (int i = 0; i < 10; i++) { - GO gid = xmap->getGlobalElement(i); - TEST_EQUALITY(gid, comm->getRank() * 40 + Teuchos::as(i) * 10 + 111); - } - if (comm->getRank() > 0 && comm->getRank() < comm->getSize() - 2) - TEST_EQUALITY(xmap->getGlobalElement(10), (comm->getRank() - 1) * 40 + Teuchos::as(9) * 10 + 111); - ; - if (comm->getRank() > 1 && comm->getRank() < comm->getSize() - 2) - TEST_EQUALITY(xmap->getGlobalElement(11), (comm->getRank() + 1) * 40 + Teuchos::as(0) * 10 + 111); - - TEST_EQUALITY(xmap->getMinAllGlobalIndex(), novlxMap->getMinAllGlobalIndex()); - TEST_EQUALITY(xmap->getMaxAllGlobalIndex(), novlxMap->getMaxAllGlobalIndex()); -} - -TEUCHOS_UNIT_TEST_TEMPLATE_6_DECL(BlockedCrsMatrix, Merge, M, MA, Scalar, LO, GO, Node) { - typedef Xpetra::BlockedCrsMatrix BlockedCrsMatrixClass; - typedef Xpetra::Vector VectorClass; - typedef Xpetra::VectorFactory VectorFactoryClass; - typedef Xpetra::Matrix MatrixClass; - - // get a comm and node - Teuchos::RCP> comm = getDefaultComm(); - - int noBlocks = 5; - Teuchos::RCP bop = XpetraBlockMatrixTests::CreateBlockDiagonalExampleMatrix(noBlocks, *comm); - TEST_EQUALITY(bop->Rows(), Teuchos::as(noBlocks)); - TEST_EQUALITY(bop->Cols(), Teuchos::as(noBlocks)); - - Teuchos::RCP A2 = bop->Merge(); - - Teuchos::RCP bop2 = Teuchos::rcp_dynamic_cast(A2); - TEST_EQUALITY(bop2, Teuchos::null); - - Teuchos::RCP v1 = VectorFactoryClass::Build(bop->getRangeMap(), true); - Teuchos::RCP v2 = VectorFactoryClass::Build(A2->getRangeMap(), true); - bop->getLocalDiagCopy(*v1); - A2->getLocalDiagCopy(*v2); - - using magnitudeType = typename Teuchos::ScalarTraits::magnitudeType; - magnitudeType tol = Teuchos::ScalarTraits::eps(); - - v1->update(-Teuchos::ScalarTraits::one(), *v2, Teuchos::ScalarTraits::one()); - TEUCHOS_TEST_COMPARE(v1->norm2(), <, tol, out, success); - TEUCHOS_TEST_COMPARE(v1->normInf(), <, tol, out, success); - - TEST_EQUALITY(bop->getLocalNumEntries(), A2->getLocalNumEntries()); - TEST_EQUALITY(bop->getGlobalNumEntries(), A2->getGlobalNumEntries()); - TEST_EQUALITY(bop->getFrobeniusNorm(), A2->getFrobeniusNorm()); - - // Thyra blocked operator - Teuchos::RCP bop3 = XpetraBlockMatrixTests::CreateBlockDiagonalExampleMatrixThyra(noBlocks, *comm); - TEST_EQUALITY(bop3->Rows(), Teuchos::as(noBlocks)); - TEST_EQUALITY(bop3->Cols(), Teuchos::as(noBlocks)); - - Teuchos::RCP A4 = bop3->Merge(); - Teuchos::RCP bop4 = Teuchos::rcp_dynamic_cast(A4); - TEST_EQUALITY(bop4, Teuchos::null); - - v1 = VectorFactoryClass::Build(bop3->getRangeMap(), true); - v2 = VectorFactoryClass::Build(A4->getRangeMap(), true); - bop3->getLocalDiagCopy(*v1); - A4->getLocalDiagCopy(*v2); - - v1->update(-Teuchos::ScalarTraits::one(), *v2, Teuchos::ScalarTraits::one()); - TEUCHOS_TEST_COMPARE(v1->norm2(), <, tol, out, success); - TEUCHOS_TEST_COMPARE(v1->normInf(), <, tol, out, success); - - TEST_EQUALITY(bop3->getLocalNumEntries(), A4->getLocalNumEntries()); - TEST_EQUALITY(bop3->getGlobalNumEntries(), A4->getGlobalNumEntries()); - TEST_EQUALITY(bop3->getFrobeniusNorm(), A4->getFrobeniusNorm()); - - // Nested Xpetra blocked operator - bop = XpetraBlockMatrixTests::CreateBlockDiagonalExampleMatrix(noBlocks, *comm); - Teuchos::RCP brm = Xpetra::blockedReorderFromString("[ 1 [ [ 2 4 0 ] 3] ]"); - - Teuchos::RCP> brop = - Teuchos::rcp_dynamic_cast>(buildReorderedBlockedCrsMatrix(brm, bop)); - - TEST_EQUALITY(brop->Rows(), 2); - TEST_EQUALITY(brop->Cols(), 2); - - Teuchos::RCP A = brop->Merge(); - Teuchos::RCP brop2 = Teuchos::rcp_dynamic_cast(A); - TEST_EQUALITY(brop2, Teuchos::null); - - v1 = VectorFactoryClass::Build(brop->getRangeMap(), true); - v2 = VectorFactoryClass::Build(A->getRangeMap(), true); - brop->getLocalDiagCopy(*v1); - A->getLocalDiagCopy(*v2); - - // note that v1 and v2 have a different map here! - // TEST_EQUALITY(v1->norm2(), v2->norm2()); - TEST_EQUALITY(v1->normInf(), v2->normInf()); - TEST_EQUALITY(v1->getMap()->isSameAs(*(v2->getMap())), false); - TEST_EQUALITY(brop->getFullRangeMap()->isSameAs(*(A->getRangeMap())), true); - - TEST_EQUALITY(bop->getLocalNumEntries(), A->getLocalNumEntries()); - TEST_EQUALITY(bop->getGlobalNumEntries(), A->getGlobalNumEntries()); - TEST_EQUALITY(bop->getFrobeniusNorm(), A->getFrobeniusNorm()); - - // Nested Thyra blocked operator - bop = XpetraBlockMatrixTests::CreateBlockDiagonalExampleMatrixThyra(noBlocks, *comm); - - brop = Teuchos::rcp_dynamic_cast>(buildReorderedBlockedCrsMatrix(brm, bop)); - - TEST_EQUALITY(brop->Rows(), 2); - TEST_EQUALITY(brop->Cols(), 2); - - A = brop->Merge(); - brop2 = Teuchos::rcp_dynamic_cast(A); - TEST_EQUALITY(brop2, Teuchos::null); - - v1 = VectorFactoryClass::Build(brop->getRangeMap(), true); - v2 = VectorFactoryClass::Build(A->getRangeMap(), true); - brop->getLocalDiagCopy(*v1); - A->getLocalDiagCopy(*v2); - - // note that v1 and v2 have the same map in thyra mode! - // TEST_EQUALITY(v1->norm2(), v2->norm2()); - TEST_EQUALITY(v1->normInf(), v2->normInf()); - TEST_EQUALITY(v1->getMap()->isSameAs(*(v2->getMap())), false); - TEST_EQUALITY(brop->getFullRangeMap()->isSameAs(*(A->getRangeMap())), true); - - TEST_EQUALITY(brop->getLocalNumEntries(), A->getLocalNumEntries()); - TEST_EQUALITY(brop->getGlobalNumEntries(), A->getGlobalNumEntries()); - TEUCHOS_TEST_COMPARE(Teuchos::ScalarTraits::magnitude(brop->getFrobeniusNorm() - A->getFrobeniusNorm()), <, 1e3 * tol, out, success); -} - -TEUCHOS_UNIT_TEST_TEMPLATE_6_DECL(BlockedCrsMatrix, MatrixMatrixAdd, M, MA, Scalar, LO, GO, Node) { - typedef Xpetra::Matrix MatrixClass; - typedef Xpetra::BlockedCrsMatrix BlockedCrsMatrixClass; - typedef Teuchos::ScalarTraits STS; - - // get a comm and node - Teuchos::RCP> comm = getDefaultComm(); - - int noBlocks = 3; - Teuchos::RCP bop = XpetraBlockMatrixTests::CreateBlockDiagonalExampleMatrix(noBlocks, *comm); - TEST_EQUALITY(bop->Rows(), Teuchos::as(noBlocks)); - TEST_EQUALITY(bop->Cols(), Teuchos::as(noBlocks)); - - Teuchos::RCP bop2 = XpetraBlockMatrixTests::CreateBlockDiagonalExampleMatrix(noBlocks, *comm); - TEST_EQUALITY(bop2->Rows(), Teuchos::as(noBlocks)); - TEST_EQUALITY(bop2->Cols(), Teuchos::as(noBlocks)); - - // matrix-matrix multiplication of blocked operators - // Teuchos::RCP > bOpbOp = Xpetra::MatrixMatrix::TwoMatrixMultiplyBlock(*bop,false,*bop2,false,out); - Teuchos::RCP bOpOp = Teuchos::null; - - Xpetra::MatrixMatrix::TwoMatrixAdd(*bop, false, STS::one(), *bop2, false, STS::one() * Teuchos::as(3.0), bOpOp, out); - - TEST_EQUALITY(bOpOp != Teuchos::null, true); - Teuchos::RCP bOpOp2 = Teuchos::rcp_dynamic_cast(bOpOp); - TEST_EQUALITY(bOpOp2 != Teuchos::null, true); - - TEST_EQUALITY(bOpOp2->Rows(), Teuchos::as(noBlocks)); - TEST_EQUALITY(bOpOp2->Cols(), Teuchos::as(noBlocks)); - TEST_EQUALITY(bOpOp2->getRangeMapExtractor(), bop->getRangeMapExtractor()); - TEST_EQUALITY(bOpOp2->getDomainMapExtractor(), bop2->getDomainMapExtractor()); - TEST_EQUALITY(bOpOp2->getRangeMapExtractor()->getFullMap()->isSameAs(*(bop->getRangeMapExtractor()->getFullMap())), true); - TEST_EQUALITY(bOpOp2->getDomainMapExtractor()->getFullMap()->isSameAs(*(bop->getDomainMapExtractor()->getFullMap())), true); - TEST_EQUALITY(bOpOp2->getMatrix(0, 1)->getRangeMap()->isSameAs(*(bop->getMatrix(0, 1)->getRangeMap())), true); - // TEST_EQUALITY(bOpOp2->getMatrix(0,1)->getDomainMap()->isSameAs(*(bop->getMatrix(0,1)->getDomainMap())),true); - TEST_EQUALITY(bOpOp2->getMatrix(1, 0)->getRangeMap()->isSameAs(*(bop->getMatrix(1, 0)->getRangeMap())), true); - // TEST_EQUALITY(bOpOp2->getMatrix(1,0)->getDomainMap()->isSameAs(*(bop->getMatrix(1,0)->getDomainMap())),true); - - bOpOp2->fillComplete(); - - TEST_EQUALITY(bOpOp2->getFrobeniusNorm(), 4.0 * bop->getFrobeniusNorm()); - TEST_EQUALITY(bOpOp2->getMatrix(0, 1)->getFrobeniusNorm(), STS::magnitude(STS::zero())); - TEST_EQUALITY(bOpOp2->getMatrix(1, 0)->getFrobeniusNorm(), STS::magnitude(STS::zero())); - TEST_EQUALITY(bOpOp2->getMatrix(1, 1)->getFrobeniusNorm(), 4.0 * bop->getMatrix(1, 1)->getFrobeniusNorm()); - TEST_EQUALITY(bOpOp2->getMatrix(0, 0)->getFrobeniusNorm(), 4.0 * bop->getMatrix(0, 0)->getFrobeniusNorm()); - - // Nested addition test (Xpetra) - Teuchos::RCP brm = Xpetra::blockedReorderFromString("[ 0 [1 2] ]"); - bop = XpetraBlockMatrixTests::CreateBlockDiagonalExampleMatrix(noBlocks, *comm); - bop2 = XpetraBlockMatrixTests::CreateBlockDiagonalExampleMatrix(noBlocks, *comm); - - Teuchos::RCP> brop = - Teuchos::rcp_dynamic_cast>(buildReorderedBlockedCrsMatrix(brm, bop)); - Teuchos::RCP> brop2 = - Teuchos::rcp_dynamic_cast>(buildReorderedBlockedCrsMatrix(brm, bop2)); - - TEST_EQUALITY(brop->Rows(), 2); - TEST_EQUALITY(brop->Cols(), 2); - TEST_EQUALITY(brop->getRangeMapExtractor()->getThyraMode(), false); - TEST_EQUALITY(brop->getDomainMapExtractor()->getThyraMode(), false); - TEST_EQUALITY(brop2->Rows(), 2); - TEST_EQUALITY(brop2->Cols(), 2); - TEST_EQUALITY(brop2->getRangeMapExtractor()->getThyraMode(), false); - TEST_EQUALITY(brop2->getDomainMapExtractor()->getThyraMode(), false); - - bOpOp = Teuchos::null; - - Xpetra::MatrixMatrix::TwoMatrixAdd(*brop, false, STS::one(), *brop2, false, STS::one() * Teuchos::as(3.0), bOpOp, out); - - TEST_EQUALITY(bOpOp != Teuchos::null, true); - bOpOp2 = Teuchos::rcp_dynamic_cast(bOpOp); - TEST_EQUALITY(bOpOp2 != Teuchos::null, true); - - TEST_EQUALITY(bOpOp2->Rows(), 2); - TEST_EQUALITY(bOpOp2->Cols(), 2); - TEST_EQUALITY(bOpOp2->getRangeMapExtractor(), brop->getRangeMapExtractor()); - TEST_EQUALITY(bOpOp2->getDomainMapExtractor(), brop2->getDomainMapExtractor()); - TEST_EQUALITY(bOpOp2->getRangeMapExtractor()->getFullMap()->isSameAs(*(brop->getRangeMapExtractor()->getFullMap())), true); - TEST_EQUALITY(bOpOp2->getDomainMapExtractor()->getFullMap()->isSameAs(*(brop->getDomainMapExtractor()->getFullMap())), true); - TEST_EQUALITY(bOpOp2->getMatrix(0, 1)->getRangeMap()->isSameAs(*(brop->getMatrix(0, 1)->getRangeMap())), true); - TEST_EQUALITY(bOpOp2->getMatrix(0, 1)->getDomainMap()->isSameAs(*(brop->getMatrix(0, 1)->getDomainMap())), true); - TEST_EQUALITY(bOpOp2->getMatrix(1, 0)->getRangeMap()->isSameAs(*(brop->getMatrix(1, 0)->getRangeMap())), true); - TEST_EQUALITY(bOpOp2->getMatrix(1, 0)->getDomainMap()->isSameAs(*(brop->getMatrix(1, 0)->getDomainMap())), true); - - bOpOp2->fillComplete(); - - TEST_EQUALITY(bOpOp2->getFrobeniusNorm(), 4.0 * brop->getFrobeniusNorm()); - TEST_EQUALITY(bOpOp2->getMatrix(0, 1)->getFrobeniusNorm(), STS::magnitude(STS::zero())); - TEST_EQUALITY(bOpOp2->getMatrix(1, 0)->getFrobeniusNorm(), STS::magnitude(STS::zero())); - TEST_EQUALITY(bOpOp2->getMatrix(1, 1)->getFrobeniusNorm(), 4.0 * brop2->getMatrix(1, 1)->getFrobeniusNorm()); - TEST_EQUALITY(bOpOp2->getMatrix(0, 0)->getFrobeniusNorm(), 4.0 * brop2->getMatrix(0, 0)->getFrobeniusNorm()); - - // Nested addition test (Thyra) - bop = XpetraBlockMatrixTests::CreateBlockDiagonalExampleMatrixThyra(noBlocks, *comm); - bop2 = XpetraBlockMatrixTests::CreateBlockDiagonalExampleMatrixThyra(noBlocks, *comm); - - brop = Teuchos::rcp_dynamic_cast>(buildReorderedBlockedCrsMatrix(brm, bop)); - brop2 = Teuchos::rcp_dynamic_cast>(buildReorderedBlockedCrsMatrix(brm, bop2)); - - TEST_EQUALITY(brop->Rows(), 2); - TEST_EQUALITY(brop->Cols(), 2); - TEST_EQUALITY(brop->getRangeMapExtractor()->getThyraMode(), true); - TEST_EQUALITY(brop->getDomainMapExtractor()->getThyraMode(), true); - TEST_EQUALITY(brop2->Rows(), 2); - TEST_EQUALITY(brop2->Cols(), 2); - TEST_EQUALITY(brop2->getRangeMapExtractor()->getThyraMode(), true); - TEST_EQUALITY(brop2->getDomainMapExtractor()->getThyraMode(), true); - - bOpOp = Teuchos::null; - - Xpetra::MatrixMatrix::TwoMatrixAdd(*brop, false, STS::one(), *brop2, false, STS::one() * Teuchos::as(3.0), bOpOp, out); - - TEST_EQUALITY(bOpOp != Teuchos::null, true); - bOpOp2 = Teuchos::rcp_dynamic_cast(bOpOp); - TEST_EQUALITY(bOpOp2 != Teuchos::null, true); - - TEST_EQUALITY(bOpOp2->Rows(), 2); - TEST_EQUALITY(bOpOp2->Cols(), 2); - TEST_EQUALITY(bOpOp2->getRangeMapExtractor(), brop->getRangeMapExtractor()); - TEST_EQUALITY(bOpOp2->getDomainMapExtractor(), brop2->getDomainMapExtractor()); - TEST_EQUALITY(bOpOp2->getRangeMapExtractor()->getFullMap()->isSameAs(*(brop->getRangeMapExtractor()->getFullMap())), true); - TEST_EQUALITY(bOpOp2->getDomainMapExtractor()->getFullMap()->isSameAs(*(brop->getDomainMapExtractor()->getFullMap())), true); - TEST_EQUALITY(bOpOp2->getMatrix(0, 1)->getRangeMap()->isSameAs(*(brop->getMatrix(0, 1)->getRangeMap())), true); - TEST_EQUALITY(bOpOp2->getMatrix(0, 1)->getDomainMap()->isSameAs(*(brop->getMatrix(0, 1)->getDomainMap())), true); - TEST_EQUALITY(bOpOp2->getMatrix(1, 0)->getRangeMap()->isSameAs(*(brop->getMatrix(1, 0)->getRangeMap())), true); - TEST_EQUALITY(bOpOp2->getMatrix(1, 0)->getDomainMap()->isSameAs(*(brop->getMatrix(1, 0)->getDomainMap())), true); - - bOpOp2->fillComplete(); - - TEST_EQUALITY(bOpOp2->getFrobeniusNorm(), 4.0 * brop->getFrobeniusNorm()); - TEST_EQUALITY(bOpOp2->getMatrix(0, 1)->getFrobeniusNorm(), STS::magnitude(STS::zero())); - TEST_EQUALITY(bOpOp2->getMatrix(1, 0)->getFrobeniusNorm(), STS::magnitude(STS::zero())); - TEST_EQUALITY(bOpOp2->getMatrix(1, 1)->getFrobeniusNorm(), 4.0 * brop2->getMatrix(1, 1)->getFrobeniusNorm()); - TEST_EQUALITY(bOpOp2->getMatrix(0, 0)->getFrobeniusNorm(), 4.0 * brop2->getMatrix(0, 0)->getFrobeniusNorm()); -} - -TEUCHOS_UNIT_TEST_TEMPLATE_6_DECL(BlockedCrsMatrix, MatrixMatrixMultDiag, M, MA, Scalar, LO, GO, Node) { - typedef Xpetra::Matrix MatrixClass; - typedef Xpetra::BlockedCrsMatrix BlockedCrsMatrixClass; - typedef Xpetra::Vector VectorClass; - typedef Xpetra::VectorFactory VectorFactoryClass; - // typedef Teuchos::ScalarTraits STS; - - // get a comm and node - Teuchos::RCP> comm = getDefaultComm(); - - int noBlocks = 3; - Teuchos::RCP bop = XpetraBlockMatrixTests::CreateBlockDiagonalExampleMatrix(noBlocks, *comm); - TEST_EQUALITY(bop->Rows(), Teuchos::as(noBlocks)); - TEST_EQUALITY(bop->Cols(), Teuchos::as(noBlocks)); - - Teuchos::RCP bop2 = XpetraBlockMatrixTests::CreateBlockDiagonalExampleMatrix(noBlocks, *comm); - TEST_EQUALITY(bop2->Rows(), Teuchos::as(noBlocks)); - TEST_EQUALITY(bop2->Cols(), Teuchos::as(noBlocks)); - - // matrix-matrix multiplication of blocked operators - Teuchos::RCP bOpOp = Xpetra::MatrixMatrix::TwoMatrixMultiplyBlock(*bop, false, *bop2, false, out); - - TEST_EQUALITY(bOpOp != Teuchos::null, true); - Teuchos::RCP bOpOp2 = Teuchos::rcp_dynamic_cast(bOpOp); - TEST_EQUALITY(bOpOp2 != Teuchos::null, true); - - TEST_EQUALITY(bOpOp2->Rows(), Teuchos::as(noBlocks)); - TEST_EQUALITY(bOpOp2->Cols(), Teuchos::as(noBlocks)); - TEST_EQUALITY(bOpOp2->getRangeMapExtractor(), bop->getRangeMapExtractor()); - TEST_EQUALITY(bOpOp2->getDomainMapExtractor(), bop2->getDomainMapExtractor()); - TEST_EQUALITY(bOpOp2->getRangeMapExtractor()->getFullMap()->isSameAs(*(bop->getRangeMapExtractor()->getFullMap())), true); - TEST_EQUALITY(bOpOp2->getDomainMapExtractor()->getFullMap()->isSameAs(*(bop2->getDomainMapExtractor()->getFullMap())), true); - TEST_EQUALITY(bOpOp2->getRangeMapExtractor()->getMap(1)->isSameAs(*(bop->getRangeMapExtractor()->getMap(1))), true); - TEST_EQUALITY(bOpOp2->getDomainMapExtractor()->getMap(1)->isSameAs(*(bop->getDomainMapExtractor()->getMap(1))), true); - TEST_EQUALITY(bOpOp2->getMatrix(0, 1), Teuchos::null); - TEST_EQUALITY(bOpOp2->getMatrix(1, 0), Teuchos::null); - TEST_EQUALITY(bOpOp2->getMatrix(0, 2), Teuchos::null); - TEST_EQUALITY(bOpOp2->getMatrix(2, 0), Teuchos::null); - TEST_EQUALITY(bOpOp2->getMatrix(2, 1), Teuchos::null); - TEST_EQUALITY(bOpOp2->getMatrix(1, 2), Teuchos::null); - - bOpOp2->fillComplete(); - - using magnitudeType = typename Teuchos::ScalarTraits::magnitudeType; - magnitudeType tol = 1e6 * Teuchos::ScalarTraits::eps(); - - TEST_EQUALITY(bOpOp2->getMatrix(0, 0)->getFrobeniusNorm(), bop->getMatrix(0, 0)->getFrobeniusNorm()); - TEST_EQUALITY(bOpOp2->getMatrix(1, 1)->getFrobeniusNorm(), 2.0 * bop->getMatrix(1, 1)->getFrobeniusNorm()); - TEST_COMPARE(bOpOp2->getMatrix(2, 2)->getFrobeniusNorm() - 3.0 * bop->getMatrix(2, 2)->getFrobeniusNorm(), <, tol); - - Teuchos::RCP v = VectorFactoryClass::Build(bOpOp2->getMatrix(2, 2)->getRangeMap(), true); - bOpOp2->getMatrix(2, 2)->getLocalDiagCopy(*v); - - Teuchos::ArrayRCP vdata = v->getData(0); - bool bCheck = true; - for (int i = 0; i < 10; i++) - if (vdata[i] != Teuchos::as(9.0)) bCheck = false; - TEST_EQUALITY(bCheck, true); - - // Nested addition test (Xpetra) - bop = XpetraBlockMatrixTests::CreateBlockDiagonalExampleMatrix(noBlocks, *comm); - bop2 = XpetraBlockMatrixTests::CreateBlockDiagonalExampleMatrix(noBlocks, *comm); - - Teuchos::RCP brm = Xpetra::blockedReorderFromString("[ 0 [1 2] ]"); - Teuchos::RCP> brop = - Teuchos::rcp_dynamic_cast>(buildReorderedBlockedCrsMatrix(brm, bop)); - Teuchos::RCP> brop2 = - Teuchos::rcp_dynamic_cast>(buildReorderedBlockedCrsMatrix(brm, bop2)); - - TEST_EQUALITY(brop->Rows(), 2); - TEST_EQUALITY(brop->Cols(), 2); - TEST_EQUALITY(brop->getRangeMapExtractor()->getThyraMode(), false); - TEST_EQUALITY(brop->getDomainMapExtractor()->getThyraMode(), false); - TEST_EQUALITY(brop2->Rows(), 2); - TEST_EQUALITY(brop2->Cols(), 2); - TEST_EQUALITY(brop2->getRangeMapExtractor()->getThyraMode(), false); - TEST_EQUALITY(brop2->getDomainMapExtractor()->getThyraMode(), false); - - // matrix-matrix multiplication of blocked operators - bOpOp = Xpetra::MatrixMatrix::TwoMatrixMultiplyBlock(*brop, false, *brop2, false, out); - - TEST_EQUALITY(bOpOp != Teuchos::null, true); - bOpOp2 = Teuchos::rcp_dynamic_cast(bOpOp); - TEST_EQUALITY(bOpOp2 != Teuchos::null, true); - - TEST_EQUALITY(bOpOp2->Rows(), 2); - TEST_EQUALITY(bOpOp2->Cols(), 2); - TEST_EQUALITY(bOpOp2->getRangeMapExtractor(), brop->getRangeMapExtractor()); - TEST_EQUALITY(bOpOp2->getDomainMapExtractor(), brop2->getDomainMapExtractor()); - TEST_EQUALITY(bOpOp2->getRangeMapExtractor()->getFullMap()->isSameAs(*(brop->getRangeMapExtractor()->getFullMap())), true); - TEST_EQUALITY(bOpOp2->getDomainMapExtractor()->getFullMap()->isSameAs(*(brop2->getDomainMapExtractor()->getFullMap())), true); - TEST_EQUALITY(bOpOp2->getRangeMapExtractor()->getMap(1)->isSameAs(*(brop->getRangeMapExtractor()->getMap(1))), true); - TEST_EQUALITY(bOpOp2->getDomainMapExtractor()->getMap(1)->isSameAs(*(brop->getDomainMapExtractor()->getMap(1))), true); - TEST_EQUALITY(bOpOp2->getMatrix(0, 1), Teuchos::null); - TEST_EQUALITY(bOpOp2->getMatrix(1, 0), Teuchos::null); - - Teuchos::RCP bOpOp21 = Teuchos::rcp_dynamic_cast(bOpOp2->getMatrix(1, 1)); - TEST_EQUALITY(bOpOp21->Rows(), 2); - TEST_EQUALITY(bOpOp21->Cols(), 2); - TEST_EQUALITY(bOpOp21->getMatrix(0, 1), Teuchos::null); - TEST_EQUALITY(bOpOp21->getMatrix(1, 0), Teuchos::null); - - TEST_EQUALITY(bOpOp2->getMatrix(0, 0)->getFrobeniusNorm(), bop->getMatrix(0, 0)->getFrobeniusNorm()); - TEST_EQUALITY(bOpOp21->getMatrix(0, 0)->getFrobeniusNorm(), 2.0 * bop->getMatrix(1, 1)->getFrobeniusNorm()); - TEST_COMPARE(bOpOp21->getMatrix(1, 1)->getFrobeniusNorm() - 3.0 * bop->getMatrix(2, 2)->getFrobeniusNorm(), <, tol); - - v = VectorFactoryClass::Build(bOpOp21->getMatrix(1, 1)->getRangeMap(), true); - bOpOp21->getMatrix(1, 1)->getLocalDiagCopy(*v); - - vdata = v->getData(0); - bCheck = true; - for (int i = 0; i < 10; i++) - if (vdata[i] != Teuchos::as(9.0)) bCheck = false; - TEST_EQUALITY(bCheck, true); - - // Nested addition test (Thyra) - bop = XpetraBlockMatrixTests::CreateBlockDiagonalExampleMatrixThyra(noBlocks, *comm); - bop2 = XpetraBlockMatrixTests::CreateBlockDiagonalExampleMatrixThyra(noBlocks, *comm); - - brop = Teuchos::rcp_dynamic_cast>(buildReorderedBlockedCrsMatrix(brm, bop)); - brop2 = Teuchos::rcp_dynamic_cast>(buildReorderedBlockedCrsMatrix(brm, bop2)); - - TEST_EQUALITY(brop->Rows(), 2); - TEST_EQUALITY(brop->Cols(), 2); - TEST_EQUALITY(brop->getRangeMapExtractor()->getThyraMode(), true); - TEST_EQUALITY(brop->getDomainMapExtractor()->getThyraMode(), true); - TEST_EQUALITY(brop2->Rows(), 2); - TEST_EQUALITY(brop2->Cols(), 2); - TEST_EQUALITY(brop2->getRangeMapExtractor()->getThyraMode(), true); - TEST_EQUALITY(brop2->getDomainMapExtractor()->getThyraMode(), true); - - // matrix-matrix multiplication of blocked operators - bOpOp = Xpetra::MatrixMatrix::TwoMatrixMultiplyBlock(*brop, false, *brop2, false, out); - - TEST_EQUALITY(bOpOp != Teuchos::null, true); - bOpOp2 = Teuchos::rcp_dynamic_cast(bOpOp); - TEST_EQUALITY(bOpOp2 != Teuchos::null, true); - - TEST_EQUALITY(bOpOp2->Rows(), 2); - TEST_EQUALITY(bOpOp2->Cols(), 2); - TEST_EQUALITY(bOpOp2->getRangeMapExtractor(), brop->getRangeMapExtractor()); - TEST_EQUALITY(bOpOp2->getDomainMapExtractor(), brop2->getDomainMapExtractor()); - TEST_EQUALITY(bOpOp2->getRangeMapExtractor()->getFullMap()->isSameAs(*(brop->getRangeMapExtractor()->getFullMap())), true); - TEST_EQUALITY(bOpOp2->getDomainMapExtractor()->getFullMap()->isSameAs(*(brop2->getDomainMapExtractor()->getFullMap())), true); - TEST_EQUALITY(bOpOp2->getRangeMapExtractor()->getMap(1)->isSameAs(*(brop->getRangeMapExtractor()->getMap(1))), true); - TEST_EQUALITY(bOpOp2->getDomainMapExtractor()->getMap(1)->isSameAs(*(brop->getDomainMapExtractor()->getMap(1))), true); - TEST_EQUALITY(bOpOp2->getMatrix(0, 1), Teuchos::null); - TEST_EQUALITY(bOpOp2->getMatrix(1, 0), Teuchos::null); - - bOpOp21 = Teuchos::rcp_dynamic_cast(bOpOp2->getMatrix(1, 1)); - TEST_EQUALITY(bOpOp21->Rows(), 2); - TEST_EQUALITY(bOpOp21->Cols(), 2); - TEST_EQUALITY(bOpOp21->getMatrix(0, 1), Teuchos::null); - TEST_EQUALITY(bOpOp21->getMatrix(1, 0), Teuchos::null); - - TEST_EQUALITY(bOpOp2->getMatrix(0, 0)->getFrobeniusNorm(), bop->getMatrix(0, 0)->getFrobeniusNorm()); - TEST_EQUALITY(bOpOp21->getMatrix(0, 0)->getFrobeniusNorm(), 2.0 * bop->getMatrix(1, 1)->getFrobeniusNorm()); - TEST_COMPARE(bOpOp21->getMatrix(1, 1)->getFrobeniusNorm() - 3.0 * bop->getMatrix(2, 2)->getFrobeniusNorm(), <, tol); - - v = VectorFactoryClass::Build(bOpOp21->getMatrix(1, 1)->getRangeMap(), true); - bOpOp21->getMatrix(1, 1)->getLocalDiagCopy(*v); - - vdata = v->getData(0); - bCheck = true; - for (int i = 0; i < 10; i++) - if (vdata[i] != Teuchos::as(9.0)) bCheck = false; - TEST_EQUALITY(bCheck, true); -} - -/// simple test routine for the apply function of BlockedCrsMatrix -TEUCHOS_UNIT_TEST_TEMPLATE_6_DECL(BlockedCrsMatrix, MatrixMatrixMult, M, MA, Scalar, LO, GO, Node) { - typedef Xpetra::Map MapClass; - typedef Xpetra::StridedMap StridedMapClass; - typedef Xpetra::MapFactory MapFactoryClass; - typedef Xpetra::StridedMapFactory StridedMapFactoryClass; - typedef Xpetra::Vector VectorClass; - typedef Xpetra::VectorFactory VectorFactoryClass; - typedef Xpetra::MapExtractor MapExtractorClass; - typedef Xpetra::MapExtractorFactory MapExtractorFactoryClass; - typedef Xpetra::Matrix MatrixClass; - typedef Teuchos::ScalarTraits STS; - - // get a comm and node - Teuchos::RCP> comm = getDefaultComm(); - - M testMap(1, 0, comm); - Xpetra::UnderlyingLib lib = testMap.lib(); - - const Teuchos::RCP pointmap = MapFactoryClass::Build(lib, 12, 0, comm); - - // generate local maps for loading matrices - Teuchos::Array velgidvec; // global strided maps - Teuchos::Array pregidvec; - Teuchos::Array fullgidvec; // full global map - for (LO i = 0; i < Teuchos::as(pointmap->getLocalNumElements()); i++) { - // loop over all local ids in pointmap - - // get corresponding global id - GO gid = pointmap->getGlobalElement(i); - - // store global strided gids - velgidvec.push_back(3 * gid); - velgidvec.push_back(3 * gid + 1); - pregidvec.push_back(3 * gid + 2); - - // gid for full map - fullgidvec.push_back(3 * gid); - fullgidvec.push_back(3 * gid + 1); - fullgidvec.push_back(3 * gid + 2); - } - - std::vector stridingInfo; - stridingInfo.push_back(2); - stridingInfo.push_back(1); - - const Teuchos::RCP velmap = StridedMapFactoryClass::Build(lib, - Teuchos::OrdinalTraits::invalid(), - velgidvec(), - 0, - stridingInfo, - comm, 0); - const Teuchos::RCP premap = StridedMapFactoryClass::Build(lib, - Teuchos::OrdinalTraits::invalid(), - pregidvec(), - 0, - stridingInfo, - comm, 1); - const Teuchos::RCP fullmap = StridedMapFactoryClass::Build(lib, - Teuchos::OrdinalTraits::invalid(), - fullgidvec(), - 0, - stridingInfo, - comm, -1); - - std::string tname = typeid(Scalar).name(); - if (tname.find("complex") != std::string::npos) { - std::cout << "Skip test for scalar=" << tname << std::endl; - return; - } - - Teuchos::RCP A = Xpetra::IO::Read("A.mat", fullmap->getMap()); - - std::vector> xmaps; - xmaps.push_back(velmap); - xmaps.push_back(premap); - - Teuchos::RCP rowMapExtractormap_extractor = MapExtractorFactoryClass::Build(fullmap, xmaps); - - Teuchos::RCP> bOp = - Xpetra::MatrixUtils::SplitMatrix(*A, rowMapExtractormap_extractor, rowMapExtractormap_extractor); - - Teuchos::RCP A2 = Xpetra::IO::Read("A.mat", fullmap->getMap()); - - std::vector> xmaps2; - xmaps2.push_back(velmap); - xmaps2.push_back(premap); - - Teuchos::RCP map_extractor2 = MapExtractorFactoryClass::Build(fullmap, xmaps2); - - Teuchos::RCP> bOp2 = - Xpetra::MatrixUtils::SplitMatrix(*A2, map_extractor2, map_extractor2); - - // matrix-matrix multiplication of standard matrices - Teuchos::RCP> fuAfuA_2 = Xpetra::MatrixMatrix::Multiply(*A, false, *A2, false, out); - fuAfuA_2->describe(out); - - // matrix-matrix multiplication of blocked operators - Teuchos::RCP> bOpbOp_2 = Xpetra::MatrixMatrix::TwoMatrixMultiplyBlock(*bOp, false, *bOp2, false, out); - - // build gloabl vector with one entries - Teuchos::RCP ones = VectorFactoryClass::Build(fullmap, true); - Teuchos::RCP exp = VectorFactoryClass::Build(fullmap, true); - Teuchos::RCP res = VectorFactoryClass::Build(fullmap, true); - Teuchos::RCP rnd = VectorFactoryClass::Build(fullmap, true); - ones->putScalar(STS::one()); - rnd->randomize(); - - using magnitudeType = typename Teuchos::ScalarTraits::magnitudeType; - magnitudeType tol1 = Teuchos::ScalarTraits::eps(); - magnitudeType tol2 = 500 * tol1; - - fuAfuA_2->apply(*ones, *exp); - bOpbOp_2->apply(*ones, *res); - res->update(-STS::one(), *exp, STS::one()); - TEUCHOS_TEST_COMPARE(res->norm2(), <, tol1, out, success); - TEUCHOS_TEST_COMPARE(res->normInf(), <, tol1, out, success); - - A->apply(*rnd, *exp); - bOp->apply(*rnd, *res); - res->update(-STS::one(), *exp, STS::one()); - - TEUCHOS_TEST_COMPARE(res->norm2(), <, tol2, out, success); - TEUCHOS_TEST_COMPARE(res->normInf(), <, tol2, out, success); - - TEUCHOS_TEST_EQUALITY(fuAfuA_2->getGlobalNumEntries(), 312, out, success); - TEUCHOS_TEST_EQUALITY(bOpbOp_2->getGlobalNumEntries(), 312, out, success); - - Teuchos::RCP rgMap0 = bOpbOp_2->getRangeMap(0); - Teuchos::RCP strRgMap0 = Teuchos::rcp_dynamic_cast(rgMap0); - TEUCHOS_TEST_EQUALITY(strRgMap0 == Teuchos::null, false, out, success); - std::vector strInfoData = strRgMap0->getStridingData(); - TEUCHOS_TEST_EQUALITY(strInfoData[0], 2, out, success); - TEUCHOS_TEST_EQUALITY(strInfoData[1], 1, out, success); - TEUCHOS_TEST_EQUALITY(strRgMap0->getFixedBlockSize(), 3, out, success); - TEUCHOS_TEST_EQUALITY(strRgMap0->getStridedBlockId(), 0, out, success); - - /* TODO think about this - Teuchos::RCP rgMap = bOpbOp_2->getRangeMap(); - Teuchos::RCP strRgMap = Teuchos::rcp_dynamic_cast(rgMap); - TEUCHOS_TEST_EQUALITY(strRgMap==Teuchos::null, false, out, success ); - strInfoData = strRgMap->getStridingData(); - TEUCHOS_TEST_EQUALITY(strInfoData[0], 2, out, success ); - TEUCHOS_TEST_EQUALITY(strInfoData[1], 1, out, success ); - TEUCHOS_TEST_EQUALITY(strRgMap->getFixedBlockSize(), 3, out, success ); - TEUCHOS_TEST_EQUALITY(strRgMap->getStridedBlockId(), -1, out, success );*/ - - Teuchos::RCP doMap0 = bOpbOp_2->getDomainMap(0); - Teuchos::RCP strDoMap0 = Teuchos::rcp_dynamic_cast(doMap0); - TEUCHOS_TEST_EQUALITY(strDoMap0 == Teuchos::null, false, out, success); - strInfoData = strDoMap0->getStridingData(); - TEUCHOS_TEST_EQUALITY(strInfoData[0], 2, out, success); - TEUCHOS_TEST_EQUALITY(strInfoData[1], 1, out, success); - TEUCHOS_TEST_EQUALITY(strDoMap0->getFixedBlockSize(), 3, out, success); - TEUCHOS_TEST_EQUALITY(strDoMap0->getStridedBlockId(), 0, out, success); - - /* TODO think about this - Teuchos::RCP doMap = bOpbOp_2->getDomainMap(); - Teuchos::RCP strDoMap = Teuchos::rcp_dynamic_cast(doMap); - TEUCHOS_TEST_EQUALITY(strDoMap==Teuchos::null, false, out, success ); - strInfoData = strDoMap->getStridingData(); - TEUCHOS_TEST_EQUALITY(strInfoData[0], 2, out, success ); - TEUCHOS_TEST_EQUALITY(strInfoData[1], 1, out, success ); - TEUCHOS_TEST_EQUALITY(strDoMap->getFixedBlockSize(), 3, out, success ); - TEUCHOS_TEST_EQUALITY(strDoMap->getStridedBlockId(), -1, out, success ); - */ -} - -TEUCHOS_UNIT_TEST_TEMPLATE_6_DECL(BlockedCrsMatrix, BlockedOperatorApply, M, MA, Scalar, LO, GO, Node) { - typedef Xpetra::Map Map; - typedef Xpetra::BlockedMap BlockedMap; - typedef Xpetra::MapExtractor MapExtractor; - typedef Xpetra::MultiVector MultiVector; - typedef Xpetra::BlockedMultiVector BlockedMultiVector; - typedef Xpetra::MultiVectorFactory MultiVectorFactory; - typedef Xpetra::BlockedCrsMatrix BlockedCrsMatrix; - typedef Teuchos::ScalarTraits STS; - - // get a comm and node - Teuchos::RCP> comm = getDefaultComm(); - - int noBlocks = 3; - Teuchos::RCP bop = XpetraBlockMatrixTests::CreateBlockDiagonalExampleMatrix(noBlocks, *comm); - - TEST_EQUALITY(bop->Rows(), 3); - TEST_EQUALITY(bop->Cols(), 3); - TEST_EQUALITY(bop->getRangeMapExtractor()->getThyraMode(), false); - TEST_EQUALITY(bop->getDomainMapExtractor()->getThyraMode(), false); - - // build gloabl vector with one entries (build monolithic maps) - Teuchos::RCP rgMap = bop->getRangeMap(); - Teuchos::RCP rgBMap = Teuchos::rcp_dynamic_cast(rgMap); - Teuchos::RCP ones = MultiVectorFactory::Build(rgBMap->getFullMap(), 1, true); - Teuchos::RCP res1 = MultiVectorFactory::Build(rgBMap->getFullMap(), 1, true); - ones->putScalar(STS::one()); - res1->putScalar(STS::zero()); - - Teuchos::RCP meRange = bop->getRangeMapExtractor(); - Teuchos::RCP meDomain = bop->getDomainMapExtractor(); - - // create BlockedMultiVectors - Teuchos::RCP bones = - Teuchos::rcp(new BlockedMultiVector(meDomain, ones)); - Teuchos::RCP res2 = - Teuchos::rcp(new BlockedMultiVector(meRange, res1)); - Teuchos::RCP res3 = - Teuchos::rcp(new BlockedMultiVector(meRange, res1)); - - // input blocked, output standard - TEST_NOTHROW(bop->apply(*bones, *res1)); - // input blocked, output blocked - TEST_NOTHROW(bop->apply(*bones, *res2)); - // input standard, output blocked - TEST_NOTHROW(bop->apply(*ones, *res3)); - - for (size_t r = 0; r < meRange->NumMaps(); r++) { - Teuchos::RCP part2 = meRange->ExtractVector(res2, r); - Teuchos::RCP part3 = meRange->ExtractVector(res3, r); - - Teuchos::ArrayRCP partd2 = part2->getData(0); - Teuchos::ArrayRCP partd3 = part3->getData(0); - for (LO l = 0; l < Teuchos::as(part2->getLocalLength()); l++) { - TEST_EQUALITY(partd2[l], Teuchos::as(r + 1) * STS::one()); - TEST_EQUALITY(partd3[l], Teuchos::as(r + 1) * STS::one()); - } - } - - Teuchos::RCP merged_res2 = res2->Merge(); - Teuchos::ArrayRCP resd1 = res1->getData(0); - Teuchos::ArrayRCP resd2 = merged_res2->getData(0); - - for (LO l = 0; l < Teuchos::as(res1->getLocalLength()); l++) { - TEST_EQUALITY(resd1[l], resd2[l]); - } -} - -TEUCHOS_UNIT_TEST_TEMPLATE_6_DECL(BlockedCrsMatrix, ConstructFromBlockedMap, M, MA, Scalar, LO, GO, Node) { - using Teuchos::Array; - using Teuchos::ArrayView; - using Teuchos::RCP; - using Teuchos::rcp; - - using BlockedCrsMatrix = Xpetra::BlockedCrsMatrix; - using BlockedMap = Xpetra::BlockedMap; - using Map = Xpetra::Map; - using MapFactory = Xpetra::MapFactory; - using MapUtils = Xpetra::MapUtils; - - RCP> comm = getDefaultComm(); - - M testMap(1, 0, comm); - Xpetra::UnderlyingLib lib = testMap.lib(); - - const GO gNumElementsPerBlock = 29; - Array gidsOne; - - RCP map1 = MapFactory::Build(lib, gNumElementsPerBlock, Teuchos::ScalarTraits::zero(), comm); - - TEST_ASSERT(!map1.is_null()); - TEST_EQUALITY_CONST(map1->getGlobalNumElements(), gNumElementsPerBlock); - - ArrayView myGIDs1 = map1->getLocalElementList(); - Array myGIDs2; - for (const auto& gid1 : myGIDs1) - myGIDs2.push_back(gid1 + gNumElementsPerBlock); - RCP map2 = MapFactory::Build(lib, gNumElementsPerBlock, myGIDs2, Teuchos::ScalarTraits::zero(), comm); - - TEST_ASSERT(!map2.is_null()); - TEST_EQUALITY_CONST(map2->getGlobalNumElements(), gNumElementsPerBlock); - - std::vector> maps; - maps.push_back(map1); - maps.push_back(map2); - RCP fullMap = MapUtils::concatenateMaps(maps); - RCP blockedMap = rcp(new BlockedMap(fullMap, maps)); - - TEST_ASSERT(!blockedMap.is_null()); - TEST_EQUALITY(blockedMap->getNumMaps(), 2); - - RCP blockMatrix = rcp(new BlockedCrsMatrix(blockedMap, blockedMap, 1)); - TEST_ASSERT(!blockMatrix.is_null()); -} - -TEUCHOS_UNIT_TEST_TEMPLATE_6_DECL(BlockedCrsMatrix, ConstructFromMapExtractor, M, MA, Scalar, LO, GO, Node) { - using Teuchos::Array; - using Teuchos::ArrayView; - using Teuchos::RCP; - using Teuchos::rcp; - - using BlockedCrsMatrix = Xpetra::BlockedCrsMatrix; - using Map = Xpetra::Map; - using MapExtractor = Xpetra::MapExtractor; - using MapExtractorFactory = Xpetra::MapExtractorFactory; - using MapFactory = Xpetra::MapFactory; - using MapUtils = Xpetra::MapUtils; - - RCP> comm = getDefaultComm(); - - M testMap(1, 0, comm); - Xpetra::UnderlyingLib lib = testMap.lib(); - - const GO gNumElementsPerBlock = 29; - Array gidsOne; - - RCP map1 = MapFactory::Build(lib, gNumElementsPerBlock, Teuchos::ScalarTraits::zero(), comm); - - TEST_ASSERT(!map1.is_null()); - TEST_EQUALITY_CONST(map1->getGlobalNumElements(), gNumElementsPerBlock); - - ArrayView myGIDs1 = map1->getLocalElementList(); - Array myGIDs2; - for (const auto& gid1 : myGIDs1) - myGIDs2.push_back(gid1 + gNumElementsPerBlock); - RCP map2 = MapFactory::Build(lib, gNumElementsPerBlock, myGIDs2, Teuchos::ScalarTraits::zero(), comm); - - TEST_ASSERT(!map2.is_null()); - TEST_EQUALITY_CONST(map2->getGlobalNumElements(), gNumElementsPerBlock); - - std::vector> maps; - maps.push_back(map1); - maps.push_back(map2); - RCP fullMap = MapUtils::concatenateMaps(maps); - RCP mapExtractor = MapExtractorFactory::Build(fullMap, maps); - - TEST_ASSERT(!mapExtractor.is_null()); - - RCP blockMatrix = rcp(new BlockedCrsMatrix(mapExtractor, mapExtractor, 1)); - TEST_ASSERT(!blockMatrix.is_null()); -} - -TEUCHOS_UNIT_TEST_TEMPLATE_6_DECL(BlockedCrsMatrix, ConstructFromBlockedVector, M, MA, Scalar, LO, GO, Node) { - using Teuchos::Array; - using Teuchos::ArrayView; - using Teuchos::RCP; - using Teuchos::rcp; - - using BlockedCrsMatrix = Xpetra::BlockedCrsMatrix; - using BlockedMap = Xpetra::BlockedMap; - using Map = Xpetra::Map; - using MapFactory = Xpetra::MapFactory; - using MapUtils = Xpetra::MapUtils; - - using STS = Teuchos::ScalarTraits; - typedef typename STS::magnitudeType MT; - - RCP> comm = getDefaultComm(); - - M testMap(1, 0, comm); - Xpetra::UnderlyingLib lib = testMap.lib(); - - const GO gNumElementsPerBlock = 29; - Array gidsOne; - - RCP map1 = MapFactory::Build(lib, gNumElementsPerBlock, Teuchos::ScalarTraits::zero(), comm); - - TEST_ASSERT(!map1.is_null()); - TEST_EQUALITY_CONST(map1->getGlobalNumElements(), gNumElementsPerBlock); - - ArrayView myGIDs1 = map1->getLocalElementList(); - Array myGIDs2; - for (const auto& gid1 : myGIDs1) - myGIDs2.push_back(gid1 + gNumElementsPerBlock); - RCP map2 = MapFactory::Build(lib, gNumElementsPerBlock, myGIDs2, Teuchos::ScalarTraits::zero(), comm); - - TEST_ASSERT(!map2.is_null()); - TEST_EQUALITY_CONST(map2->getGlobalNumElements(), gNumElementsPerBlock); - - std::vector> maps; - maps.push_back(map1); - maps.push_back(map2); - RCP fullMap = MapUtils::concatenateMaps(maps); - RCP blockedMap = rcp(new BlockedMap(fullMap, maps)); - - TEST_ASSERT(!blockedMap.is_null()); - TEST_EQUALITY(blockedMap->getNumMaps(), 2); - - const RCP> vec = Xpetra::VectorFactory::Build(blockedMap); - vec->randomize(); - - RCP> blockVec = - Teuchos::rcp_dynamic_cast>(vec); - TEST_ASSERT(!blockVec.is_null()); - - RCP> matrix = Xpetra::MatrixFactory::Build(vec.getConst()); - TEST_ASSERT(!matrix.is_null()); - - RCP> blockMatrix = - Teuchos::rcp_dynamic_cast>(matrix); - TEST_ASSERT(!blockMatrix.is_null()); - - const RCP> diagonal = Xpetra::VectorFactory::Build(blockedMap); - blockMatrix->getLocalDiagCopy(*diagonal); - TEST_ASSERT(!diagonal.is_null()); - - RCP> blockDiagonal = - Teuchos::rcp_dynamic_cast>(diagonal); - TEST_ASSERT(!blockDiagonal.is_null()); - - const MT tol = 1e-12; - - TEST_EQUALITY(gNumElementsPerBlock, blockMatrix->getMatrix(0, 0)->getGlobalNumEntries()); - TEST_FLOATING_EQUALITY(blockVec->getMultiVector(0)->getVector(0)->norm2(), blockDiagonal->getMultiVector(0)->getVector(0)->norm2(), tol); - TEST_FLOATING_EQUALITY(blockVec->getMultiVector(1)->getVector(0)->norm2(), blockDiagonal->getMultiVector(1)->getVector(0)->norm2(), tol); - TEST_EQUALITY(gNumElementsPerBlock, blockMatrix->getMatrix(1, 1)->getGlobalNumEntries()); - TEST_FLOATING_EQUALITY(blockVec->getMultiVector(0)->getVector(0)->norm2(), blockMatrix->getMatrix(0, 0)->getFrobeniusNorm(), tol); - TEST_FLOATING_EQUALITY(blockVec->getMultiVector(1)->getVector(0)->norm2(), blockMatrix->getMatrix(1, 1)->getFrobeniusNorm(), tol); - TEST_FLOATING_EQUALITY(blockVec->norm2(), blockDiagonal->norm2(), tol); - TEST_FLOATING_EQUALITY(blockVec->norm2(), blockMatrix->getFrobeniusNorm(), tol); -} - -// simple test for matrix-matrix multiplication for a 2x2 blocked matrix with a 2x1 blocked matrix -TEUCHOS_UNIT_TEST_TEMPLATE_6_DECL(BlockedCrsMatrix, EpetraMatrixMatrixMult2x1, M, MA, Scalar, LO, GO, Node) { -#ifdef HAVE_XPETRA_EPETRAEXT - using Teuchos::RCP; - using Teuchos::rcp; - - using BlockedCrsMatrix = Xpetra::BlockedCrsMatrix; - using CrsMatrix = Xpetra::CrsMatrix; - using CrsMatrixWrap = Xpetra::CrsMatrixWrap; - using MapExtractor = Xpetra::MapExtractor; - using MapExtractorFactory = Xpetra::MapExtractorFactory; - using Matrix = Xpetra::Matrix; - using Vector = Xpetra::Vector; - using VectorFactory = Xpetra::VectorFactory; - - RCP> comm = getDefaultComm(); - - // build maps - RCP rowMap1 = rcp(new Epetra_Map(24, 0, *Xpetra::toEpetra(comm))); - RCP rowMap2 = rcp(new Epetra_Map(12, 24, *Xpetra::toEpetra(comm))); - RCP domainMap1 = rcp(new Epetra_Map(8, 0, *Xpetra::toEpetra(comm))); - RCP domainMap2 = rcp(new Epetra_Map(4, 8, *Xpetra::toEpetra(comm))); - - std::vector> rowMaps; - rowMaps.push_back(rowMap1); - rowMaps.push_back(rowMap2); - std::vector> domainMaps; - domainMaps.push_back(domainMap1); - domainMaps.push_back(domainMap2); - - RCP fullRowMap = MergeMaps(rowMaps); - RCP fullDomainMap = MergeMaps(domainMaps); - - // read in matrices in matrix market format - Epetra_CrsMatrix* ptrA = 0; - Epetra_CrsMatrix* ptrP = 0; - EpetraExt::MatrixMarketFileToCrsMatrix("A.mat", *fullRowMap, *fullRowMap, *fullRowMap, ptrA); - EpetraExt::MatrixMarketFileToCrsMatrix("P.mat", *fullRowMap, *fullRowMap, *fullDomainMap, ptrP); - RCP epA = rcp(ptrA); - RCP epP = rcp(ptrP); - - // Transform Epetra stuff to Xpetra - - RCP> xFullRowMap = rcp(new Xpetra::EpetraMapT(fullRowMap)); - RCP> xFullDomainMap = rcp(new Xpetra::EpetraMapT(fullDomainMap)); - RCP> xRowMap1 = rcp(new Xpetra::EpetraMapT(rowMap1)); - RCP> xRowMap2 = rcp(new Xpetra::EpetraMapT(rowMap2)); - RCP> xDomainMap1 = rcp(new Xpetra::EpetraMapT(domainMap1)); - RCP> xDomainMap2 = rcp(new Xpetra::EpetraMapT(domainMap2)); - - // build map extractor objects - std::vector>> xRowMaps; - xRowMaps.push_back(xRowMap1); - xRowMaps.push_back(xRowMap2); - RCP rowMapExtractor = MapExtractorFactory::Build(xFullRowMap, xRowMaps); - - std::vector>> xDomainMaps; - xDomainMaps.push_back(xFullDomainMap); - RCP domainMapExtractor = MapExtractorFactory::Build(xFullDomainMap, xDomainMaps); - - // build blocked operators - - // build 2x2 blocked operator - RCP xCrsA = rcp(new Xpetra::EpetraCrsMatrixT(epA)); - RCP xA = rcp(new CrsMatrixWrap(xCrsA)); - Teuchos::RCP bA = - Xpetra::MatrixUtils::SplitMatrix(*xA, rowMapExtractor, rowMapExtractor); - - TEUCHOS_TEST_EQUALITY(bA->Rows(), 2, out, success); - TEUCHOS_TEST_EQUALITY(bA->Cols(), 2, out, success); - - // build 2x1 blocked operator - RCP xCrsP = rcp(new Xpetra::EpetraCrsMatrixT(epP)); - RCP xP = rcp(new CrsMatrixWrap(xCrsP)); - Teuchos::RCP bP = - Xpetra::MatrixUtils::SplitMatrix(*xP, rowMapExtractor, domainMapExtractor); - - TEUCHOS_TEST_EQUALITY(bP->Rows(), 2, out, success); - TEUCHOS_TEST_EQUALITY(bP->Cols(), 1, out, success); - - RCP bAbP = Xpetra::MatrixMatrix::TwoMatrixMultiplyBlock(*bA, false, *bP, false, out); - - TEUCHOS_TEST_EQUALITY(bAbP->Rows(), 2, out, success); - TEUCHOS_TEST_EQUALITY(bAbP->Cols(), 1, out, success); - - RCP xAP = Xpetra::MatrixMatrix::Multiply(*xA, false, *xP, false, out); - - // Test if blocked and merged MatVec deliver the same result - RCP oneVectorBlocked = VectorFactory::Build(bAbP->getDomainMap(), true); - RCP resVectorBlocked = VectorFactory::Build(bAbP->getRangeMap(), true); - oneVectorBlocked->putScalar(Teuchos::ScalarTraits::one()); - bAbP->apply(*oneVectorBlocked, *resVectorBlocked); - TEUCHOS_TEST_COMPARE(resVectorBlocked->norm2(), >, 1.0e-16, out, success); - - RCP oneVector = VectorFactory::Build(xAP->getDomainMap(), true); - RCP resVector = VectorFactory::Build(xAP->getRangeMap(), true); - oneVector->putScalar(Teuchos::ScalarTraits::one()); - xAP->apply(*oneVector, *resVector); - TEUCHOS_TEST_COMPARE(resVector->norm2(), >, 1.0e-16, out, success); - - resVectorBlocked->update(1.0, *resVector, -1.0); - TEUCHOS_TEST_COMPARE(resVectorBlocked->normInf(), <, 1.0e-16, out, success); -#endif -} - -// -// INSTANTIATIONS -// -#ifdef HAVE_XPETRA_TPETRA - -#define XPETRA_TPETRA_TYPES(S, LO, GO, N) \ - typedef typename Xpetra::TpetraMap M##LO##GO##N; \ - typedef typename Xpetra::TpetraCrsMatrix MA##S##LO##GO##N; - -#endif - -#ifdef HAVE_XPETRA_EPETRA - -#define XPETRA_EPETRA_TYPES(S, LO, GO, N) \ - typedef typename Xpetra::EpetraMapT M##LO##GO##N; \ - typedef typename Xpetra::EpetraCrsMatrixT MA##S##LO##GO##N; - -#endif - -#define XP_MATRIX_INSTANT(S, LO, GO, N) \ - TEUCHOS_UNIT_TEST_TEMPLATE_6_INSTANT(BlockedCrsMatrix, SplitMatrix, M##LO##GO##N, MA##S##LO##GO##N, S, LO, GO, N) \ - TEUCHOS_UNIT_TEST_TEMPLATE_6_INSTANT(BlockedCrsMatrix, ReorderBlockOperator, M##LO##GO##N, MA##S##LO##GO##N, S, LO, GO, N) \ - TEUCHOS_UNIT_TEST_TEMPLATE_6_INSTANT(BlockedCrsMatrix, ReorderBlockOperator2, M##LO##GO##N, MA##S##LO##GO##N, S, LO, GO, N) \ - TEUCHOS_UNIT_TEST_TEMPLATE_6_INSTANT(BlockedCrsMatrix, ReorderBlockOperatorThyra, M##LO##GO##N, MA##S##LO##GO##N, S, LO, GO, N) \ - TEUCHOS_UNIT_TEST_TEMPLATE_6_INSTANT(BlockedCrsMatrix, ReorderBlockOperator2Thyra, M##LO##GO##N, MA##S##LO##GO##N, S, LO, GO, N) \ - TEUCHOS_UNIT_TEST_TEMPLATE_6_INSTANT(BlockedCrsMatrix, ReorderBlockOperatorApply, M##LO##GO##N, MA##S##LO##GO##N, S, LO, GO, N) \ - TEUCHOS_UNIT_TEST_TEMPLATE_6_INSTANT(BlockedCrsMatrix, ReorderBlockOperatorApply2, M##LO##GO##N, MA##S##LO##GO##N, S, LO, GO, N) \ - TEUCHOS_UNIT_TEST_TEMPLATE_6_INSTANT(BlockedCrsMatrix, ReorderBlockOperatorApplyThyra, M##LO##GO##N, MA##S##LO##GO##N, S, LO, GO, N) \ - TEUCHOS_UNIT_TEST_TEMPLATE_6_INSTANT(BlockedCrsMatrix, ReorderBlockOperatorApplyThyraSmall, M##LO##GO##N, MA##S##LO##GO##N, S, LO, GO, N) \ - TEUCHOS_UNIT_TEST_TEMPLATE_6_INSTANT(BlockedCrsMatrix, ReorderBlockOperatorApply2Thyra, M##LO##GO##N, MA##S##LO##GO##N, S, LO, GO, N) \ - TEUCHOS_UNIT_TEST_TEMPLATE_6_INSTANT(BlockedCrsMatrix, Apply, M##LO##GO##N, MA##S##LO##GO##N, S, LO, GO, N) \ - TEUCHOS_UNIT_TEST_TEMPLATE_6_INSTANT(BlockedCrsMatrix, getLocalDiagCopy, M##LO##GO##N, MA##S##LO##GO##N, S, LO, GO, N) \ - TEUCHOS_UNIT_TEST_TEMPLATE_6_INSTANT(BlockedCrsMatrix, leftScale, M##LO##GO##N, MA##S##LO##GO##N, S, LO, GO, N) \ - TEUCHOS_UNIT_TEST_TEMPLATE_6_INSTANT(BlockedCrsMatrix, rightScale, M##LO##GO##N, MA##S##LO##GO##N, S, LO, GO, N) \ - TEUCHOS_UNIT_TEST_TEMPLATE_6_INSTANT(BlockedCrsMatrix, deepCopy, M##LO##GO##N, MA##S##LO##GO##N, S, LO, GO, N) \ - TEUCHOS_UNIT_TEST_TEMPLATE_6_INSTANT(BlockedCrsMatrix, transformThyra2XpetraGIDs, M##LO##GO##N, MA##S##LO##GO##N, S, LO, GO, N) \ - TEUCHOS_UNIT_TEST_TEMPLATE_6_INSTANT(BlockedCrsMatrix, Merge, M##LO##GO##N, MA##S##LO##GO##N, S, LO, GO, N) \ - TEUCHOS_UNIT_TEST_TEMPLATE_6_INSTANT(BlockedCrsMatrix, MatrixMatrixAdd, M##LO##GO##N, MA##S##LO##GO##N, S, LO, GO, N) \ - TEUCHOS_UNIT_TEST_TEMPLATE_6_INSTANT(BlockedCrsMatrix, MatrixMatrixMultDiag, M##LO##GO##N, MA##S##LO##GO##N, S, LO, GO, N) \ - TEUCHOS_UNIT_TEST_TEMPLATE_6_INSTANT(BlockedCrsMatrix, MatrixMatrixMult, M##LO##GO##N, MA##S##LO##GO##N, S, LO, GO, N) \ - TEUCHOS_UNIT_TEST_TEMPLATE_6_INSTANT(BlockedCrsMatrix, BlockedOperatorApply, M##LO##GO##N, MA##S##LO##GO##N, S, LO, GO, N) \ - TEUCHOS_UNIT_TEST_TEMPLATE_6_INSTANT(BlockedCrsMatrix, ConstructFromBlockedMap, M##LO##GO##N, MA##S##LO##GO##N, S, LO, GO, N) \ - TEUCHOS_UNIT_TEST_TEMPLATE_6_INSTANT(BlockedCrsMatrix, ConstructFromMapExtractor, M##LO##GO##N, MA##S##LO##GO##N, S, LO, GO, N) \ - TEUCHOS_UNIT_TEST_TEMPLATE_6_INSTANT(BlockedCrsMatrix, ConstructFromBlockedVector, M##LO##GO##N, MA##S##LO##GO##N, S, LO, GO, N) - -// List of tests which run only with Tpetra -#define XP_TPETRA_MATRIX_INSTANT(S, LO, GO, N) \ - TEUCHOS_UNIT_TEST_TEMPLATE_6_INSTANT(BlockedCrsMatrix, CreateBlockedDiagonalOp, M##LO##GO##N, MA##S##LO##GO##N, S, LO, GO, N) \ - TEUCHOS_UNIT_TEST_TEMPLATE_6_INSTANT(BlockedCrsMatrix, CreateBlockedDiagonalOpThyra, M##LO##GO##N, MA##S##LO##GO##N, S, LO, GO, N) - -// List of tests which run only with Epetra -#define XP_EPETRA_MATRIX_INSTANT(S, LO, GO, N) \ - TEUCHOS_UNIT_TEST_TEMPLATE_6_INSTANT(BlockedCrsMatrix, ReadWriteBlockedMatrix, M##LO##GO##N, MA##S##LO##GO##N, S, LO, GO, N) \ - TEUCHOS_UNIT_TEST_TEMPLATE_6_INSTANT(BlockedCrsMatrix, EpetraMatrixMatrixMult2x1, M##LO##GO##N, MA##S##LO##GO##N, S, LO, GO, N) - -#if defined(HAVE_XPETRA_TPETRA) - -#include -#include - -TPETRA_ETI_MANGLING_TYPEDEFS() -TPETRA_INSTANTIATE_SLGN_NO_ORDINAL_SCALAR(XPETRA_TPETRA_TYPES) -TPETRA_INSTANTIATE_SLGN_NO_ORDINAL_SCALAR(XP_TPETRA_MATRIX_INSTANT) -TPETRA_INSTANTIATE_SLGN_NO_ORDINAL_SCALAR(XP_MATRIX_INSTANT) - -#endif - -#if defined(HAVE_XPETRA_EPETRA) - -#include "Xpetra_Map.hpp" // defines EpetraNode -typedef Xpetra::EpetraNode EpetraNode; -#ifndef XPETRA_EPETRA_NO_32BIT_GLOBAL_INDICES -XPETRA_EPETRA_TYPES(double, int, int, EpetraNode) -XP_EPETRA_MATRIX_INSTANT(double, int, int, EpetraNode) -XP_MATRIX_INSTANT(double, int, int, EpetraNode) -#endif -// EpetraExt routines are not working with 64 bit -/*#ifndef XPETRA_EPETRA_NO_64BIT_GLOBAL_INDICES -typedef long long LongLong; -XPETRA_EPETRA_TYPES(double,int,LongLong,EpetraNode) -XP_EPETRA_MATRIX_INSTANT(double,int,LongLong,EpetraNode) -#endif*/ - -#endif - -} // namespace XpetraBlockMatrixTests diff --git a/packages/xpetra/test/BlockedCrsMatrix/BlockedMatrixTestHelpers.hpp b/packages/xpetra/test/BlockedCrsMatrix/BlockedMatrixTestHelpers.hpp deleted file mode 100644 index faeb5a31ccd3..000000000000 --- a/packages/xpetra/test/BlockedCrsMatrix/BlockedMatrixTestHelpers.hpp +++ /dev/null @@ -1,246 +0,0 @@ -// @HEADER -// ***************************************************************************** -// Xpetra: A linear algebra interface package -// -// Copyright 2012 NTESS and the Xpetra contributors. -// SPDX-License-Identifier: BSD-3-Clause -// ***************************************************************************** -// @HEADER - -#include -#include -#include - -#include -#include -#include -#include -#include -#include -#include - -namespace XpetraBlockMatrixTests { - -////////////////////////////////////////////////////////////////////////// -// EPETRA helper functions -Teuchos::RCP SplitMap(const Epetra_Map& Amap, const Epetra_Map& Agiven) { - const Epetra_Comm& Comm = Amap.Comm(); - const Epetra_Map& Ag = Agiven; - - int count = 0; - std::vector myaugids(Amap.NumMyElements()); - for (int i = 0; i < Amap.NumMyElements(); ++i) { - const int gid = Amap.GID(i); - if (Ag.MyGID(gid)) continue; - myaugids[count] = gid; - ++count; - } - myaugids.resize(count); - int gcount; - Comm.SumAll(&count, &gcount, 1); - Teuchos::RCP Aunknown = Teuchos::rcp(new Epetra_Map(gcount, count, &myaugids[0], 0, Comm)); - - return Aunknown; -} - -// Xpetra version of SplitMap -template -Teuchos::RCP > SplitMap(const Xpetra::Map& Amap, const Xpetra::Map& Agiven) { - Teuchos::RCP > comm = Amap.getComm(); - - GlobalOrdinal count = 0; - Teuchos::Array myaugids(Amap.getLocalNumElements()); - for (size_t i = 0; i < Amap.getLocalNumElements(); ++i) { - const GlobalOrdinal gid = Amap.getGlobalElement(i); - if (Agiven.isNodeGlobalElement(gid)) continue; - myaugids[Teuchos::as(count)] = gid; - ++count; - } - myaugids.resize(count); - GlobalOrdinal gcount; - Teuchos::reduceAll(*comm, Teuchos::REDUCE_SUM, 1, &count, &gcount); - return Teuchos::rcp(new MapType(gcount, myaugids(), 0, comm)); -} - -Teuchos::RCP CreateMap(const std::set& gids, const Epetra_Comm& comm) { - std::vector mapvec; - mapvec.reserve(gids.size()); - mapvec.assign(gids.begin(), gids.end()); - Teuchos::RCP map = - Teuchos::rcp(new Epetra_Map(-1, - mapvec.size(), - &mapvec[0], - 0, - comm)); - mapvec.clear(); - return map; -} - -// Xpetra version of CreateMap -template -Teuchos::RCP > CreateMap(const std::set& gids, const Teuchos::Comm& comm) { - Teuchos::Array mapvec; - mapvec.reserve(gids.size()); - mapvec.assign(gids.begin(), gids.end()); - GlobalOrdinal count = Teuchos::as(mapvec.size()); - GlobalOrdinal gcount; - Teuchos::reduceAll(comm, Teuchos::REDUCE_SUM, count, Teuchos::outArg(gcount)); - - Teuchos::RCP > map = - Teuchos::rcp(new MapType(gcount, - mapvec(), - 0, - Teuchos::rcpFromRef(comm))); - mapvec.clear(); - return map; -} - -template -Teuchos::RCP > CreateBlockDiagonalExampleMatrix(int noBlocks, const Teuchos::Comm& comm) { - typedef Xpetra::Map Map; - typedef Xpetra::CrsMatrix CrsMatrix; - typedef Xpetra::CrsMatrixFactory CrsMatrixFactory; - typedef Xpetra::MapExtractor MapExtractor; - typedef Xpetra::BlockedCrsMatrix BlockedCrsMatrix; - typedef Xpetra::CrsMatrixWrap CrsMatrixWrap; - - GlobalOrdinal nOverallDOFGidsPerProc = Teuchos::as(Teuchos::ScalarTraits::pow(2, noBlocks - 2)) * 10; - - GlobalOrdinal procOffset = comm.getRank() * nOverallDOFGidsPerProc; - - std::set myDOFGids; - for (GlobalOrdinal i = 0; i < nOverallDOFGidsPerProc; i++) - myDOFGids.insert(i + procOffset); - - Teuchos::RCP fullmap = CreateMap(myDOFGids, comm); - - std::vector > maps(noBlocks, Teuchos::null); - GlobalOrdinal nPartGIDs = nOverallDOFGidsPerProc; - Teuchos::RCP remainingpartmap = fullmap; - for (int it = 0; it < noBlocks; it++) { - if (it == noBlocks - 1) { - maps[0] = remainingpartmap; - break; - } - // collect first half of GIDs - nPartGIDs = nPartGIDs / 2; - std::set myHalfGIDs; - for (GlobalOrdinal j = 0; j < nPartGIDs; j++) - myHalfGIDs.insert(j + procOffset); - - Teuchos::RCP halfmap = CreateMap(myHalfGIDs, comm); - - Teuchos::RCP secondmap = SplitMap(*remainingpartmap, *halfmap); - remainingpartmap = halfmap; - - maps[noBlocks - 1 - it] = secondmap; - } - - // create diagonal blocks - std::vector > blocks(noBlocks, Teuchos::null); - for (int it = 0; it < noBlocks; it++) { - // std::cout << it << " " << maps[it]->getMinAllGlobalIndex() << " - " << maps[it]->getMaxAllGlobalIndex() << std::endl; - blocks[it] = CrsMatrixFactory::Build(maps[it], 1); - - LocalOrdinal NumMyElements = maps[it]->getLocalNumElements(); - Teuchos::ArrayView MyGlobalElements = maps[it]->getLocalElementList(); - - for (LocalOrdinal i = 0; i < NumMyElements; i++) - blocks[it]->insertGlobalValues(MyGlobalElements[i], - Teuchos::tuple(MyGlobalElements[i]), - Teuchos::tuple(it + 1)); - blocks[it]->fillComplete(); - } - - // create map extractor - Teuchos::RCP rgMapExtractor = Teuchos::rcp(new MapExtractor(fullmap, maps, false)); - Teuchos::RCP doMapExtractor = Teuchos::rcp(new MapExtractor(fullmap, maps, false)); - - // build blocked operator - Teuchos::RCP bop = Teuchos::rcp(new BlockedCrsMatrix(rgMapExtractor, doMapExtractor, 1)); - - for (int it = 0; it < noBlocks; it++) { - Teuchos::RCP csrwrap = - Teuchos::rcp(new CrsMatrixWrap(blocks[it])); - bop->setMatrix(Teuchos::as(it), Teuchos::as(it), csrwrap); - } - bop->fillComplete(); - return bop; -} - -template -Teuchos::RCP > CreateBlockDiagonalExampleMatrixThyra(int noBlocks, const Teuchos::Comm& comm) { - typedef Xpetra::Map Map; - typedef Xpetra::MapFactory MapFactory; - typedef Xpetra::CrsMatrix CrsMatrix; - typedef Xpetra::CrsMatrixFactory CrsMatrixFactory; - typedef Xpetra::MapExtractor MapExtractor; - typedef Xpetra::BlockedCrsMatrix BlockedCrsMatrix; - typedef Xpetra::CrsMatrixWrap CrsMatrixWrap; - - std::vector > maps(noBlocks, Teuchos::null); - - MapType tm(1, 0, Teuchos::rcpFromRef(comm)); - Xpetra::UnderlyingLib lib = tm.lib(); - - maps[0] = MapFactory::Build(lib, comm.getSize() * 5, 5, 0, Teuchos::rcpFromRef(comm)); - for (int it = 1; it < noBlocks; it++) { - GlobalOrdinal localDofs = Teuchos::as(Teuchos::ScalarTraits::pow(2, it - 1) * 5); - maps[it] = MapFactory::Build(lib, comm.getSize() * localDofs, localDofs, 0, Teuchos::rcpFromRef(comm)); - } - - // create diagonal blocks - std::vector > blocks(noBlocks, Teuchos::null); - for (int it = 0; it < noBlocks; it++) { - // std::cout << it << " " << maps[it]->getMinAllGlobalIndex() << " - " << maps[it]->getMaxAllGlobalIndex() << std::endl; - blocks[it] = CrsMatrixFactory::Build(maps[it], 1); - - LocalOrdinal NumMyElements = maps[it]->getLocalNumElements(); - Teuchos::ArrayView MyGlobalElements = maps[it]->getLocalElementList(); - - for (LocalOrdinal i = 0; i < NumMyElements; i++) - blocks[it]->insertGlobalValues(MyGlobalElements[i], - Teuchos::tuple(MyGlobalElements[i]), - Teuchos::tuple(it + 1)); - blocks[it]->fillComplete(); - } - - // create map extractor - // To generate the Thyra style map extractor we do not need a full map but only the - // information about the Map details (i.e. lib and indexBase). We can extract this - // information from maps[0] - Teuchos::RCP rgMapExtractor = - Teuchos::rcp(new MapExtractor(maps[0], maps, true)); - Teuchos::RCP doMapExtractor = - Teuchos::rcp(new MapExtractor(maps[0], maps, true)); - // build blocked operator - Teuchos::RCP bop = Teuchos::rcp(new BlockedCrsMatrix(rgMapExtractor, doMapExtractor, 1)); - - for (int it = 0; it < noBlocks; it++) { - Teuchos::RCP csrwrap = Teuchos::rcp(new CrsMatrixWrap(blocks[it])); - bop->setMatrix(Teuchos::as(it), Teuchos::as(it), csrwrap); - } - bop->fillComplete(); - return bop; -} - -Teuchos::RCP MergeMaps(const std::vector >& maps) { - if (maps.size() == 0) - std::cout << "no maps to merge" << std::endl; - for (unsigned i = 0; i < maps.size(); ++i) { - if (maps[i] == Teuchos::null) - std::cout << "can not merge extractor with null maps" << std::endl; - if (maps[i]->UniqueGIDs() == false) - std::cout << "map " << i << " not unique" << std::endl; - } - std::set mapentries; - for (unsigned i = 0; i < maps.size(); ++i) { - const Epetra_Map& map = *maps[i]; - std::copy(map.MyGlobalElements(), - map.MyGlobalElements() + map.NumMyElements(), - std::inserter(mapentries, mapentries.begin())); - } - return CreateMap(mapentries, maps[0]->Comm()); -} - -} // end namespace XpetraBlockMatrixTests diff --git a/packages/xpetra/test/BlockedCrsMatrix/ThyraBlockedOperator_UnitTests.cpp b/packages/xpetra/test/BlockedCrsMatrix/ThyraBlockedOperator_UnitTests.cpp deleted file mode 100644 index 946adcc601f8..000000000000 --- a/packages/xpetra/test/BlockedCrsMatrix/ThyraBlockedOperator_UnitTests.cpp +++ /dev/null @@ -1,1065 +0,0 @@ -// @HEADER -// ***************************************************************************** -// Xpetra: A linear algebra interface package -// -// Copyright 2012 NTESS and the Xpetra contributors. -// SPDX-License-Identifier: BSD-3-Clause -// ***************************************************************************** -// @HEADER - -#include -#include -#include -#include -#include -#include -#include -#include - -#ifdef HAVE_MPI -#include "Epetra_MpiComm.h" -#include "mpi.h" -#endif -#include "Epetra_SerialComm.h" - -#include - -#ifdef HAVE_XPETRA_EPETRAEXT -// EpetraExt -#include "EpetraExt_CrsMatrixIn.h" -#include "EpetraExt_VectorIn.h" -#include "EpetraExt_VectorOut.h" -#include "EpetraExt_MatrixMatrix.h" -#include "EpetraExt_RowMatrixOut.h" -#endif - -#include "BlockedMatrixTestHelpers.hpp" // handling of Epetra block matrices (SplitMap etc...) - -#include - -#include -#include -#include -#include -#include -#include -#include -#include - -#ifdef HAVE_XPETRA_THYRA -#include -#include "Thyra_DefaultSpmdVectorSpace.hpp" -#include "Thyra_DefaultProductVectorSpace.hpp" -#include "Thyra_DefaultProductMultiVector.hpp" -#include "Thyra_DefaultBlockedLinearOp.hpp" -#include "Thyra_MultiVectorStdOps.hpp" -#endif -#include - -namespace XpetraBlockMatrixTests { - -using Xpetra::DefaultPlatform; - -using Xpetra::viewLabel_t; - -bool testMpi = true; - -Teuchos::RCP> getDefaultComm() { - if (testMpi) { - return DefaultPlatform::getDefaultPlatform().getComm(); - } - return rcp(new Teuchos::SerialComm()); -} - -///////////////////////////////////////////////////// - -TEUCHOS_STATIC_SETUP() { - Teuchos::CommandLineProcessor &clp = Teuchos::UnitTestRepository::getCLP(); - clp.addOutputSetupOptions(true); - clp.setOption( - "test-mpi", "test-serial", &testMpi, - "Test MPI (if available) or force test of serial. In a serial build," - " this option is ignored and a serial comm is always used."); -} - -// -// UNIT TESTS -// - -TEUCHOS_UNIT_TEST_TEMPLATE_6_DECL(ThyraBlockedOperator, ThyraVectorSpace2XpetraMap_Tpetra, M, MA, Scalar, LO, GO, Node) { -#ifdef HAVE_XPETRA_THYRA - Teuchos::RCP> comm = Teuchos::DefaultComm::getComm(); - - // TPetra version -#ifdef HAVE_XPETRA_TPETRA - { - Teuchos::RCP> map = Xpetra::MapFactory::Build(Xpetra::UseTpetra, 1000, 0, comm); - TEST_EQUALITY(Teuchos::is_null(map), false); - Teuchos::RCP> tMap = Xpetra::toTpetra(map); - TEST_EQUALITY(Teuchos::is_null(tMap), false); - - // transform to Thyra... - Teuchos::RCP> thyraVectorSpace = Thyra::createVectorSpace(tMap); - TEST_EQUALITY(Teuchos::is_null(thyraVectorSpace), false); - - // transform back to Xpetra... - Teuchos::RCP> xMap = Xpetra::ThyraUtils::toXpetra(thyraVectorSpace, comm); - - TEST_EQUALITY(Teuchos::is_null(xMap), false); - - TEST_EQUALITY(xMap->isCompatible(*map), true); - TEST_EQUALITY(xMap->isSameAs(*map), true); - } -#endif -#endif -} - -TEUCHOS_UNIT_TEST_TEMPLATE_6_DECL(ThyraBlockedOperator, ThyraVectorSpace2XpetraMap_Epetra, M, MA, Scalar, LO, GO, Node) { -#ifdef HAVE_XPETRA_THYRA - Teuchos::RCP> comm = Teuchos::DefaultComm::getComm(); - - // Epetra version -#ifdef HAVE_XPETRA_EPETRA - { - Teuchos::RCP> map = Xpetra::MapFactory::Build(Xpetra::UseEpetra, 1000, 0, comm); - TEST_EQUALITY(Teuchos::is_null(map), false); - const Epetra_Map ret = Xpetra::toEpetra(map); - Teuchos::RCP eMap = Teuchos::rcp(&ret, false); - TEST_EQUALITY(Teuchos::is_null(eMap), false); - - // transform to Thyra... - Teuchos::RCP> thyraVectorSpace = Thyra::create_VectorSpace(eMap); - TEST_EQUALITY(Teuchos::is_null(thyraVectorSpace), false); - - // transform back to Xpetra... - Teuchos::RCP> xMap = Xpetra::ThyraUtils::toXpetra(thyraVectorSpace, comm); - - TEST_EQUALITY(Teuchos::is_null(xMap), false); - - TEST_EQUALITY(xMap->isCompatible(*map), true); - TEST_EQUALITY(xMap->isSameAs(*map), true); - } -#endif -#endif -} - -TEUCHOS_UNIT_TEST_TEMPLATE_6_DECL(ThyraBlockedOperator, ThyraShrinkMaps, M, MA, Scalar, LO, GO, Node) { -#ifdef HAVE_XPETRA_THYRA - Teuchos::RCP> comm = Teuchos::DefaultComm::getComm(); - - M testMap(1, 0, comm); - Xpetra::UnderlyingLib lib = testMap.lib(); - - typedef Xpetra::Map MapClass; - typedef Xpetra::MapFactory MapFactoryClass; - typedef Xpetra::MapUtils MapUtilsClass; - - // generate non-overlapping map - Teuchos::Array myGIDs; - for (int i = 0; i < 10; i++) { - myGIDs.push_back(comm->getRank() * 100 + i * 3); - } - const Teuchos::RCP map = MapFactoryClass::Build(lib, Teuchos::OrdinalTraits::invalid(), myGIDs(), 0, comm); - - const Teuchos::RCP thMap = MapUtilsClass::shrinkMapGIDs(*map, *map); - - TEST_EQUALITY(thMap->getGlobalNumElements(), Teuchos::as(comm->getSize() * 10)); - TEST_EQUALITY(thMap->getLocalNumElements(), 10); - TEST_EQUALITY(thMap->getMinLocalIndex(), 0); - TEST_EQUALITY(thMap->getMaxLocalIndex(), 9); - TEST_EQUALITY(thMap->getMinGlobalIndex(), comm->getRank() * 10); - TEST_EQUALITY(thMap->getMaxGlobalIndex(), comm->getRank() * 10 + 9); - TEST_EQUALITY(thMap->getMinAllGlobalIndex(), 0); - TEST_EQUALITY(thMap->getMaxAllGlobalIndex(), comm->getSize() * 10 - 1); - // TEST_EQUALITY(thMap->isContiguous(), true); - - // generate overlapping map - Teuchos::Array myovlGIDs; - if (comm->getRank() > 0) { - myovlGIDs.push_back((comm->getRank() - 1) * 100 + 21); - myovlGIDs.push_back((comm->getRank() - 1) * 100 + 24); - myovlGIDs.push_back((comm->getRank() - 1) * 100 + 27); - } - for (int i = 0; i < 10; i++) { - myovlGIDs.push_back(comm->getRank() * 100 + i * 3); - } - - const Teuchos::RCP map2 = MapFactoryClass::Build(lib, Teuchos::OrdinalTraits::invalid(), myovlGIDs(), 0, comm); - - const Teuchos::RCP thMap2 = MapUtilsClass::shrinkMapGIDs(*map2, *map); - - TEST_EQUALITY(thMap2->getMinGlobalIndex(), std::max(0, comm->getRank() * 10 - 3)); - TEST_EQUALITY(thMap2->getMaxGlobalIndex(), comm->getRank() * 10 + 9); - TEST_EQUALITY(thMap2->getLocalNumElements(), (comm->getRank() > 0) ? 13 : 10); - TEST_EQUALITY(thMap2->getMinAllGlobalIndex(), 0); - TEST_EQUALITY(thMap2->getMaxAllGlobalIndex(), comm->getSize() * 10 - 1); - TEST_EQUALITY(thMap2->getGlobalNumElements(), Teuchos::as(comm->getSize() * 13 - 3)); -#endif -} - -TEUCHOS_UNIT_TEST_TEMPLATE_6_DECL(ThyraBlockedOperator, ThyraOperator2XpetraCrsMat, M, MA, Scalar, LO, GO, Node) { -#ifdef HAVE_XPETRA_THYRA - Teuchos::RCP> comm = Teuchos::DefaultComm::getComm(); - - M testMap(1, 0, comm); - Xpetra::UnderlyingLib lib = testMap.lib(); - - typedef Xpetra::MapFactory MapFactoryClass; - - // generate the matrix - LO nEle = 63; - const Teuchos::RCP> map = MapFactoryClass::Build(lib, nEle, 0, comm); - - Teuchos::RCP> matrix = - Xpetra::CrsMatrixFactory::Build(map, 10); - - LO NumMyElements = map->getLocalNumElements(); - Teuchos::ArrayView MyGlobalElements = map->getLocalElementList(); - - for (LO i = 0; i < NumMyElements; ++i) { - matrix->insertGlobalValues(MyGlobalElements[i], - Teuchos::tuple(MyGlobalElements[i]), - Teuchos::tuple(1.0)); - } - - matrix->fillComplete(); - - // create a Thyra operator from Xpetra::CrsMatrix - Teuchos::RCP> thyraOp = - Xpetra::ThyraUtils::toThyra(matrix); - - // transform Thyra operator 2 Xpetra::CrsMatrix - Teuchos::RCP> xMat = - Xpetra::ThyraUtils::toXpetra(thyraOp); - Teuchos::RCP> xCrsMat = - Teuchos::rcp_dynamic_cast>(xMat)->getCrsMatrix(); - TEUCHOS_TEST_FOR_EXCEPT(Teuchos::is_null(xCrsMat)); - - TEST_EQUALITY(xCrsMat->getFrobeniusNorm(), matrix->getFrobeniusNorm()); - TEST_EQUALITY(xCrsMat->getGlobalNumRows(), matrix->getGlobalNumRows()); - TEST_EQUALITY(xCrsMat->getGlobalNumCols(), matrix->getGlobalNumCols()); - TEST_EQUALITY(xCrsMat->getLocalNumRows(), matrix->getLocalNumRows()); - TEST_EQUALITY(xCrsMat->getGlobalNumEntries(), matrix->getGlobalNumEntries()); - TEST_EQUALITY(xCrsMat->getLocalNumEntries(), matrix->getLocalNumEntries()); - -#endif -} - -TEUCHOS_UNIT_TEST_TEMPLATE_6_DECL(ThyraBlockedOperator, ThyraBlockedOperator2XpetraBlockedCrsMat, M, MA, Scalar, LO, GO, Node) { -#ifdef HAVE_XPETRA_THYRA - typedef Xpetra::Map MapClass; - typedef Xpetra::StridedMap StridedMapClass; - typedef Xpetra::MapFactory MapFactoryClass; - typedef Xpetra::StridedMapFactory StridedMapFactoryClass; - typedef Xpetra::MapExtractor MapExtractorClass; - typedef Xpetra::MapExtractorFactory MapExtractorFactoryClass; - typedef Xpetra::Matrix MatrixClass; - - // get a comm and node - Teuchos::RCP> comm = getDefaultComm(); - - M testMap(1, 0, comm); - Xpetra::UnderlyingLib lib = testMap.lib(); - - const Teuchos::RCP pointmap = MapFactoryClass::Build(lib, 12, 0, comm); - - // generate local maps for loading matrices - Teuchos::Array velgidvec; // global strided maps - Teuchos::Array pregidvec; - Teuchos::Array fullgidvec; // full global map - for (LO i = 0; i < Teuchos::as(pointmap->getLocalNumElements()); i++) { - // loop over all local ids in pointmap - - // get corresponding global id - GO gid = pointmap->getGlobalElement(i); - - // store global strided gids - velgidvec.push_back(3 * gid); - velgidvec.push_back(3 * gid + 1); - pregidvec.push_back(3 * gid + 2); - - // gid for full map - fullgidvec.push_back(3 * gid); - fullgidvec.push_back(3 * gid + 1); - fullgidvec.push_back(3 * gid + 2); - } - - std::vector stridingInfo; - stridingInfo.push_back(2); - stridingInfo.push_back(1); - - const Teuchos::RCP velmap = StridedMapFactoryClass::Build(lib, - Teuchos::OrdinalTraits::invalid(), - velgidvec(), - 0, - stridingInfo, - comm, 0); - const Teuchos::RCP premap = StridedMapFactoryClass::Build(lib, - Teuchos::OrdinalTraits::invalid(), - pregidvec(), - 0, - stridingInfo, - comm, 1); - const Teuchos::RCP fullmap = StridedMapFactoryClass::Build(lib, - Teuchos::OrdinalTraits::invalid(), - fullgidvec(), - 0, - stridingInfo, - comm, -1); - - std::string tname = typeid(Scalar).name(); - if (tname.find("complex") != std::string::npos) { - std::cout << "Skip test for scalar=" << tname << std::endl; - return; - } - - Teuchos::RCP A = Xpetra::IO::Read("A.mat", fullmap->getMap()); - - std::vector> xmaps; - xmaps.push_back(velmap); - xmaps.push_back(premap); - - Teuchos::RCP map_extractor = MapExtractorFactoryClass::Build(fullmap, xmaps); - - Teuchos::RCP> bOp = - Xpetra::MatrixUtils::SplitMatrix(*A, map_extractor, map_extractor); - - bOp->fillComplete(); - TEUCHOS_TEST_FOR_EXCEPT(Teuchos::is_null(bOp)); - - // create Thyra operator - Teuchos::RCP> thOp = - Xpetra::ThyraUtils::toThyra(bOp); - TEUCHOS_TEST_FOR_EXCEPT(Teuchos::is_null(thOp)); - - Teuchos::RCP> thbOp = - Teuchos::rcp_dynamic_cast>(thOp); - TEUCHOS_TEST_FOR_EXCEPT(Teuchos::is_null(thbOp)); - - Teuchos::RCP> productRange = thbOp->productRange(); - Teuchos::RCP> productDomain = thbOp->productDomain(); - - TEST_EQUALITY(productRange->numBlocks(), 2); - TEST_EQUALITY(productDomain->numBlocks(), 2); - TEST_EQUALITY(Teuchos::as(productRange->dim()), fullmap->getGlobalNumElements()); - TEST_EQUALITY(Teuchos::as(productDomain->dim()), fullmap->getGlobalNumElements()); - TEST_EQUALITY(Teuchos::as(productRange->getBlock(0)->dim()), velmap->getGlobalNumElements()); - TEST_EQUALITY(Teuchos::as(productDomain->getBlock(0)->dim()), velmap->getGlobalNumElements()); - TEST_EQUALITY(Teuchos::as(productRange->getBlock(1)->dim()), premap->getGlobalNumElements()); - TEST_EQUALITY(Teuchos::as(productDomain->getBlock(1)->dim()), premap->getGlobalNumElements()); -#endif // end HAVE_XPETRA_THYRA -} - -TEUCHOS_UNIT_TEST_TEMPLATE_6_DECL(ThyraBlockedOperator, XpetraBlockedCrsMatConstructor, M, MA, Scalar, LO, GO, Node) { -#ifdef HAVE_XPETRA_THYRA - - typedef Xpetra::Map MapClass; - typedef Xpetra::StridedMap StridedMapClass; - typedef Xpetra::MapFactory MapFactoryClass; - typedef Xpetra::StridedMapFactory StridedMapFactoryClass; - typedef Xpetra::MapExtractor MapExtractorClass; - typedef Xpetra::MapExtractorFactory MapExtractorFactoryClass; - typedef Xpetra::Matrix MatrixClass; - - // get a comm and node - Teuchos::RCP> comm = getDefaultComm(); - - M testMap(1, 0, comm); - Xpetra::UnderlyingLib lib = testMap.lib(); - - const Teuchos::RCP pointmap = MapFactoryClass::Build(lib, 12, 0, comm); - - // generate local maps for loading matrices - Teuchos::Array velgidvec; // global strided maps - Teuchos::Array pregidvec; - Teuchos::Array fullgidvec; // full global map - for (LO i = 0; i < Teuchos::as(pointmap->getLocalNumElements()); i++) { - // loop over all local ids in pointmap - - // get corresponding global id - GO gid = pointmap->getGlobalElement(i); - - // store global strided gids - velgidvec.push_back(3 * gid); - velgidvec.push_back(3 * gid + 1); - pregidvec.push_back(3 * gid + 2); - - // gid for full map - fullgidvec.push_back(3 * gid); - fullgidvec.push_back(3 * gid + 1); - fullgidvec.push_back(3 * gid + 2); - } - - std::vector stridingInfo; - stridingInfo.push_back(2); - stridingInfo.push_back(1); - - const Teuchos::RCP velmap = StridedMapFactoryClass::Build(lib, - Teuchos::OrdinalTraits::invalid(), - velgidvec(), - 0, - stridingInfo, - comm, 0); - const Teuchos::RCP premap = StridedMapFactoryClass::Build(lib, - Teuchos::OrdinalTraits::invalid(), - pregidvec(), - 0, - stridingInfo, - comm, 1); - const Teuchos::RCP fullmap = StridedMapFactoryClass::Build(lib, - Teuchos::OrdinalTraits::invalid(), - fullgidvec(), - 0, - stridingInfo, - comm, -1); - - std::string tname = typeid(Scalar).name(); - if (tname.find("complex") != std::string::npos) { - std::cout << "Skip test for scalar=" << tname << std::endl; - return; - } - - Teuchos::RCP A = Xpetra::IO::Read("A.mat", fullmap->getMap()); - - std::vector> xmaps; - xmaps.push_back(velmap); - xmaps.push_back(premap); - - Teuchos::RCP map_extractor = MapExtractorFactoryClass::Build(fullmap, xmaps); - - Teuchos::RCP> bOp = - Xpetra::MatrixUtils::SplitMatrix(*A, map_extractor, map_extractor); - - bOp->fillComplete(); - TEUCHOS_TEST_FOR_EXCEPT(Teuchos::is_null(bOp)); - TEST_EQUALITY(bOp->getRangeMapExtractor()->getThyraMode(), false); - TEST_EQUALITY(bOp->getDomainMapExtractor()->getThyraMode(), false); - - // create Thyra operator - Teuchos::RCP> thOp = - Xpetra::ThyraUtils::toThyra(bOp); - TEUCHOS_TEST_FOR_EXCEPT(Teuchos::is_null(thOp)); - - Teuchos::RCP> thbOp = - Teuchos::rcp_dynamic_cast>(thOp); - TEUCHOS_TEST_FOR_EXCEPT(Teuchos::is_null(thbOp)); - - Teuchos::RCP> productRange = thbOp->productRange(); - Teuchos::RCP> productDomain = thbOp->productDomain(); - - TEST_EQUALITY(productRange->numBlocks(), 2); - TEST_EQUALITY(productDomain->numBlocks(), 2); - TEST_EQUALITY(Teuchos::as(productRange->dim()), fullmap->getGlobalNumElements()); - TEST_EQUALITY(Teuchos::as(productDomain->dim()), fullmap->getGlobalNumElements()); - TEST_EQUALITY(Teuchos::as(productRange->getBlock(0)->dim()), velmap->getGlobalNumElements()); - TEST_EQUALITY(Teuchos::as(productDomain->getBlock(0)->dim()), velmap->getGlobalNumElements()); - TEST_EQUALITY(Teuchos::as(productRange->getBlock(1)->dim()), premap->getGlobalNumElements()); - TEST_EQUALITY(Teuchos::as(productDomain->getBlock(1)->dim()), premap->getGlobalNumElements()); - - // construct a Xpetra::BlockedCrsMatrix object - Teuchos::RCP> bOp2 = - Teuchos::rcp(new Xpetra::BlockedCrsMatrix(thbOp, comm)); - - TEUCHOS_TEST_FOR_EXCEPT(Teuchos::is_null(bOp2)); - TEST_EQUALITY(bOp2->getGlobalNumRows(), bOp->getGlobalNumRows()); - TEST_EQUALITY(bOp2->getGlobalNumCols(), bOp->getGlobalNumCols()); - TEST_EQUALITY(bOp2->getLocalNumRows(), bOp->getLocalNumRows()); - TEST_EQUALITY(bOp2->getGlobalNumEntries(), bOp->getGlobalNumEntries()); - TEST_EQUALITY(bOp2->getLocalNumEntries(), bOp->getLocalNumEntries()); - TEST_EQUALITY(bOp2->isFillComplete(), bOp->isFillComplete()); - TEST_EQUALITY(bOp2->getRangeMapExtractor()->getThyraMode(), false); - TEST_EQUALITY(bOp2->getDomainMapExtractor()->getThyraMode(), false); - TEST_EQUALITY(bOp2->getDomainMap()->isCompatible(*bOp->getDomainMap()), true); - TEST_EQUALITY(bOp2->getRangeMap()->isCompatible(*bOp->getRangeMap()), true); - TEST_EQUALITY(bOp2->getDomainMap(0)->isCompatible(*bOp->getDomainMap(0)), true); - TEST_EQUALITY(bOp2->getRangeMap(0)->isCompatible(*bOp->getRangeMap(0)), true); - TEST_EQUALITY(bOp2->getDomainMap(1)->isCompatible(*bOp->getDomainMap(1)), true); - TEST_EQUALITY(bOp2->getRangeMap(1)->isCompatible(*bOp->getRangeMap(1)), true); - TEST_EQUALITY(bOp2->getDomainMap()->isSameAs(*bOp->getDomainMap()), true); - TEST_EQUALITY(bOp2->getRangeMap()->isSameAs(*bOp->getRangeMap()), true); - TEST_EQUALITY(bOp2->getDomainMap(0)->isSameAs(*bOp->getDomainMap(0)), true); - TEST_EQUALITY(bOp2->getRangeMap(0)->isSameAs(*bOp->getRangeMap(0)), true); - TEST_EQUALITY(bOp2->getDomainMap(1)->isSameAs(*bOp->getDomainMap(1)), true); - TEST_EQUALITY(bOp2->getRangeMap(1)->isSameAs(*bOp->getRangeMap(1)), true); - -#endif // end HAVE_XPETRA_THYRA -} - -TEUCHOS_UNIT_TEST_TEMPLATE_6_DECL(ThyraBlockedOperator, SplitMatrixForThyra, M, MA, Scalar, LO, GO, Node) { - typedef Xpetra::Map MapClass; - typedef Xpetra::MapFactory MapFactoryClass; - typedef Xpetra::Vector VectorClass; - typedef Xpetra::VectorFactory VectorFactoryClass; - typedef Xpetra::MapExtractor MapExtractorClass; - typedef Xpetra::MapExtractorFactory MapExtractorFactoryClass; - typedef Teuchos::ScalarTraits STS; - - // get a comm and node - Teuchos::RCP> comm = getDefaultComm(); - - M testMap(1, 0, comm); - Xpetra::UnderlyingLib lib = testMap.lib(); - - // generate problem - GO nEle = 63; - const Teuchos::RCP map = MapFactoryClass::Build(lib, nEle, 0, comm); - - LO NumMyElements = map->getLocalNumElements(); - GO NumGlobalElements = map->getGlobalNumElements(); - Teuchos::ArrayView MyGlobalElements = map->getLocalElementList(); - - Teuchos::RCP> A = - Xpetra::CrsMatrixFactory::Build(map, 3); - TEUCHOS_TEST_FOR_EXCEPTION(A->isFillComplete() == true || A->isFillActive() == false, std::runtime_error, ""); - - for (LO i = 0; i < NumMyElements; i++) { - if (MyGlobalElements[i] == 0) { - A->insertGlobalValues(MyGlobalElements[i], - Teuchos::tuple(MyGlobalElements[i], MyGlobalElements[i] + 1), - Teuchos::tuple(Teuchos::as(i) * STS::one(), -1.0)); - } else if (MyGlobalElements[i] == NumGlobalElements - 1) { - A->insertGlobalValues(MyGlobalElements[i], - Teuchos::tuple(MyGlobalElements[i] - 1, MyGlobalElements[i]), - Teuchos::tuple(-1.0, Teuchos::as(i) * STS::one())); - } else { - A->insertGlobalValues(MyGlobalElements[i], - Teuchos::tuple(MyGlobalElements[i] - 1, MyGlobalElements[i], MyGlobalElements[i] + 1), - Teuchos::tuple(-1.0, Teuchos::as(i) * STS::one(), -1.0)); - } - } - - A->fillComplete(); - TEUCHOS_TEST_FOR_EXCEPTION(A->isFillComplete() == false || A->isFillActive() == true, std::runtime_error, ""); - - Teuchos::RCP> mat = - Teuchos::rcp(new Xpetra::CrsMatrixWrap(A)); - - Teuchos::Array gids1; - Teuchos::Array gids2; - for (LO i = 0; i < NumMyElements; i++) { - if (i % 3 < 2) - gids1.push_back(map->getGlobalElement(i)); - else - gids2.push_back(map->getGlobalElement(i)); - } - - const Teuchos::RCP map1 = MapFactoryClass::Build(lib, - Teuchos::OrdinalTraits::invalid(), - gids1.view(0, gids1.size()), - 0, - comm); - const Teuchos::RCP map2 = MapFactoryClass::Build(lib, - Teuchos::OrdinalTraits::invalid(), - gids2.view(0, gids2.size()), - 0, - comm); - - std::vector> xmaps; - xmaps.push_back(map1); - xmaps.push_back(map2); - - Teuchos::RCP map_extractor = MapExtractorFactoryClass::Build(map, xmaps); - - Teuchos::RCP> bOp = - Xpetra::MatrixUtils::SplitMatrix(*mat, map_extractor, map_extractor, Teuchos::null, true); - - // build gloabl vector with one entries - Teuchos::RCP ones_A = VectorFactoryClass::Build(map, true); - Teuchos::RCP exp = VectorFactoryClass::Build(map, true); - Teuchos::RCP ones_bOp = VectorFactoryClass::Build(bOp->getRangeMap(), true); - Teuchos::RCP res = VectorFactoryClass::Build(bOp->getRangeMap(), true); - ones_A->putScalar(STS::one()); - ones_bOp->putScalar(STS::one()); - - A->apply(*ones_A, *exp); - bOp->apply(*ones_bOp, *res); - - TEST_EQUALITY(res->norm1(), exp->norm1()); - TEST_EQUALITY(res->normInf(), exp->normInf()); - TEST_EQUALITY(bOp->getRangeMapExtractor()->getThyraMode(), true); - TEST_EQUALITY(bOp->getDomainMapExtractor()->getThyraMode(), true); - TEST_EQUALITY(bOp->getRangeMap(0)->getMinAllGlobalIndex(), 0); - TEST_EQUALITY(bOp->getRangeMap(1)->getMinAllGlobalIndex(), 0); - TEST_EQUALITY(bOp->getDomainMap(0)->getMinAllGlobalIndex(), 0); - TEST_EQUALITY(bOp->getDomainMap(1)->getMinAllGlobalIndex(), 0); -} - -TEUCHOS_UNIT_TEST_TEMPLATE_6_DECL(ThyraBlockedOperator, NestedBlockOperator2ThyraBlockedCrsMat, M, MA, Scalar, LO, GO, Node) { - typedef Xpetra::Map MapClass; - typedef Xpetra::Vector VectorClass; - typedef Xpetra::VectorFactory VectorFactoryClass; - typedef Xpetra::BlockedCrsMatrix BlockedCrsMatrixClass; - typedef Teuchos::ScalarTraits STS; - - // get a comm and node - Teuchos::RCP> comm = getDefaultComm(); - - int noBlocks = 8; - Teuchos::RCP bop = XpetraBlockMatrixTests::CreateBlockDiagonalExampleMatrixThyra(noBlocks, *comm); - - Teuchos::RCP brm = Xpetra::blockedReorderFromString("[ 6 [3 2] ]"); - - Teuchos::RCP brop = - Teuchos::rcp_dynamic_cast(buildReorderedBlockedCrsMatrix(brm, bop)); - - Teuchos::RCP fullmap = brop->getRowMap(); - - TEST_EQUALITY(brop->Rows(), 2); - TEST_EQUALITY(brop->Cols(), 2); - TEST_EQUALITY(brop->getRangeMapExtractor()->getThyraMode(), true); - TEST_EQUALITY(brop->getDomainMapExtractor()->getThyraMode(), true); - - Teuchos::RCP ones_A = VectorFactoryClass::Build(fullmap, true); - ones_A->putScalar(STS::one()); - - Teuchos::RCP exp = VectorFactoryClass::Build(fullmap, true); - exp->putScalar(STS::zero()); - -#ifdef HAVE_XPETRA_THYRA - // create Thyra operator - Teuchos::RCP> thOp = - Xpetra::ThyraUtils::toThyra(Teuchos::rcp_const_cast(brop)); - TEUCHOS_TEST_FOR_EXCEPT(Teuchos::is_null(thOp)); - - Teuchos::RCP> thbOp = - Teuchos::rcp_dynamic_cast>(thOp); - TEUCHOS_TEST_FOR_EXCEPT(Teuchos::is_null(thbOp)); - - Teuchos::RCP> productRange = thbOp->productRange(); - Teuchos::RCP> productDomain = thbOp->productDomain(); - - TEST_EQUALITY(productRange->numBlocks(), 2); - TEST_EQUALITY(productDomain->numBlocks(), 2); - TEST_EQUALITY(Teuchos::as(productRange->dim()), fullmap->getGlobalNumElements()); - TEST_EQUALITY(Teuchos::as(productDomain->dim()), fullmap->getGlobalNumElements()); - TEST_EQUALITY(Teuchos::as(productRange->getBlock(0)->dim()), Teuchos::as(comm->getSize() * 160)); - TEST_EQUALITY(Teuchos::as(productDomain->getBlock(0)->dim()), Teuchos::as(comm->getSize() * 160)); - TEST_EQUALITY(Teuchos::as(productRange->getBlock(1)->dim()), Teuchos::as(comm->getSize() * 30)); - TEST_EQUALITY(Teuchos::as(productDomain->getBlock(1)->dim()), Teuchos::as(comm->getSize() * 30)); - - Teuchos::RCP> thbOp11 = - Teuchos::rcp_dynamic_cast>(thbOp->getBlock(1, 1)); - TEUCHOS_TEST_FOR_EXCEPT(Teuchos::is_null(thbOp11)); - - Teuchos::RCP> productRange11 = thbOp11->productRange(); - Teuchos::RCP> productDomain11 = thbOp11->productDomain(); - TEST_EQUALITY(productRange11->numBlocks(), 2); - TEST_EQUALITY(productDomain11->numBlocks(), 2); - TEST_EQUALITY(Teuchos::as(productRange11->dim()), Teuchos::as(comm->getSize() * 30)); - TEST_EQUALITY(Teuchos::as(productDomain11->dim()), Teuchos::as(comm->getSize() * 30)); - TEST_EQUALITY(Teuchos::as(productRange11->getBlock(0)->dim()), Teuchos::as(comm->getSize() * 20)); - TEST_EQUALITY(Teuchos::as(productDomain11->getBlock(0)->dim()), Teuchos::as(comm->getSize() * 20)); - TEST_EQUALITY(Teuchos::as(productRange11->getBlock(1)->dim()), Teuchos::as(comm->getSize() * 10)); - TEST_EQUALITY(Teuchos::as(productDomain11->getBlock(1)->dim()), Teuchos::as(comm->getSize() * 10)); - -#if 0 - // create Thyra product vector space - Teuchos::RCP > vs1 = - Xpetra::ThyraUtils::toThyra(brop->getRangeMapExtractor()->getMap(0,true)); - Teuchos::RCP > vs2 = - Xpetra::ThyraUtils::toThyra(brop->getRangeMapExtractor()->getMap(1,true)); - Teuchos::RCP > vs3 = - Xpetra::ThyraUtils::toThyra(brop->getRangeMapExtractor()->getMap(2,true)); - - Teuchos::Array > > vecSpacesInner(2); - Teuchos::Array > > vecSpacesOuter(2); - - vecSpacesInner[0] = vs2; - vecSpacesInner[1] = vs3; - - Teuchos::RCP > psInner = - Thyra::productVectorSpace(vecSpacesInner()); - - vecSpacesOuter[0] = vs1; - vecSpacesOuter[1] = psInner; - - Teuchos::RCP > ps = - Thyra::productVectorSpace(vecSpacesOuter()); - - Teuchos::RCP > X = Thyra::createMembers(ps,1); - - Thyra::assign(X.ptr(), Teuchos::as(0.0)); - - Xpetra::ThyraUtils::updateThyra(ones_A, brop->getDomainMapExtractor(), Teuchos::rcp_dynamic_cast >(X)); - - Teuchos::RCP > B = Thyra::createMembers(ps,1); - Thyra::assign(B.ptr(), Teuchos::as(0.0)); - - thbOp->apply( Thyra::NOTRANS, *X, B.ptr(), STS::one(), STS::zero()); - - Teuchos::RCP > xres = - Xpetra::ThyraUtils::toXpetra(B, comm); - - Teuchos::ArrayRCP xdata = xres->getData(0); - bool bCheck = true; - for(int i=0; igetLocalLength(); i++) { - if (i>=0 && i< 160) { if(xdata[i] != (Scalar) 7.0){ std::cout << i << " " << xdata[i] << std::endl; bCheck = false; }} - if (i>=160 && i< 180) { if(xdata[i] != (Scalar) 4.0){std::cout << i << " " << xdata[i] << std::endl; bCheck = false; }} - if (i>=180 && i< 190) { if(xdata[i] != (Scalar) 3.0){std::cout << i << " " << xdata[i] << std::endl; bCheck = false; }} - } - TEST_EQUALITY(bCheck, true); - - brop->apply(*ones_A, *exp); - exp->update(-STS::one(),*xres,STS::one()); - TEST_EQUALITY(exp->norm1(), STS::zero()); -#endif // not working (no nested Thyra operators!) -#endif // HAVE_XPETRA_THYRA -} - -TEUCHOS_UNIT_TEST_TEMPLATE_6_DECL(ThyraBlockedOperator, ReorderBlockOperator2ThyraBlockedCrsMat, M, MA, Scalar, LO, GO, Node) { - typedef Xpetra::Map MapClass; - typedef Xpetra::Vector VectorClass; - typedef Xpetra::VectorFactory VectorFactoryClass; - typedef Xpetra::BlockedCrsMatrix BlockedCrsMatrixClass; - typedef Teuchos::ScalarTraits STS; - - // get a comm and node - Teuchos::RCP> comm = getDefaultComm(); - - int noBlocks = 8; - Teuchos::RCP bop = XpetraBlockMatrixTests::CreateBlockDiagonalExampleMatrixThyra(noBlocks, *comm); - - Teuchos::RCP brm = Xpetra::blockedReorderFromString("[ 6 3 2]"); - - Teuchos::RCP brop = - Teuchos::rcp_dynamic_cast(buildReorderedBlockedCrsMatrix(brm, bop)); - - Teuchos::RCP fullmap = brop->getRowMap(); - - TEST_EQUALITY(brop->Rows(), 3); - TEST_EQUALITY(brop->Cols(), 3); - TEST_EQUALITY(brop->getRangeMapExtractor()->getThyraMode(), true); - TEST_EQUALITY(brop->getDomainMapExtractor()->getThyraMode(), true); - - Teuchos::RCP ones_A = VectorFactoryClass::Build(fullmap, true); - ones_A->putScalar(STS::one()); - - Teuchos::RCP exp = VectorFactoryClass::Build(fullmap, true); - exp->putScalar(STS::zero()); - -#ifdef HAVE_XPETRA_THYRA - // create Thyra operator - Teuchos::RCP> thOp = - Xpetra::ThyraUtils::toThyra(Teuchos::rcp_const_cast(brop)); - TEUCHOS_TEST_FOR_EXCEPT(Teuchos::is_null(thOp)); - - Teuchos::RCP> thbOp = - Teuchos::rcp_dynamic_cast>(thOp); - TEUCHOS_TEST_FOR_EXCEPT(Teuchos::is_null(thbOp)); - - Teuchos::RCP> productRange = thbOp->productRange(); - Teuchos::RCP> productDomain = thbOp->productDomain(); - - TEST_EQUALITY(productRange->numBlocks(), 3); - TEST_EQUALITY(productDomain->numBlocks(), 3); - TEST_EQUALITY(Teuchos::as(productRange->dim()), fullmap->getGlobalNumElements()); - TEST_EQUALITY(Teuchos::as(productDomain->dim()), fullmap->getGlobalNumElements()); - TEST_EQUALITY(Teuchos::as(productRange->getBlock(0)->dim()), Teuchos::as(comm->getSize() * 160)); - TEST_EQUALITY(Teuchos::as(productDomain->getBlock(0)->dim()), Teuchos::as(comm->getSize() * 160)); - TEST_EQUALITY(Teuchos::as(productRange->getBlock(1)->dim()), Teuchos::as(comm->getSize() * 20)); - TEST_EQUALITY(Teuchos::as(productDomain->getBlock(1)->dim()), Teuchos::as(comm->getSize() * 20)); - TEST_EQUALITY(Teuchos::as(productRange->getBlock(2)->dim()), Teuchos::as(comm->getSize() * 10)); - TEST_EQUALITY(Teuchos::as(productDomain->getBlock(2)->dim()), Teuchos::as(comm->getSize() * 10)); - - // create Thyra product vector space - Teuchos::RCP> vs1 = - Xpetra::ThyraUtils::toThyra(brop->getRangeMapExtractor()->getMap(0, true)); - Teuchos::RCP> vs2 = - Xpetra::ThyraUtils::toThyra(brop->getRangeMapExtractor()->getMap(1, true)); - Teuchos::RCP> vs3 = - Xpetra::ThyraUtils::toThyra(brop->getRangeMapExtractor()->getMap(2, true)); - - Teuchos::Array>> vecSpaces(3); - vecSpaces[0] = vs1; - vecSpaces[1] = vs2; - vecSpaces[2] = vs3; - - Teuchos::RCP> ps = - Thyra::productVectorSpace(vecSpaces()); - - Teuchos::RCP> X = Thyra::createMembers(ps, 1); - - Thyra::assign(X.ptr(), Teuchos::as(0.0)); - - Xpetra::ThyraUtils::updateThyra(ones_A, brop->getDomainMapExtractor(), Teuchos::rcp_dynamic_cast>(X)); - - Teuchos::RCP> B = Thyra::createMembers(ps, 1); - Thyra::assign(B.ptr(), Teuchos::as(0.0)); - - thbOp->apply(Thyra::NOTRANS, *X, B.ptr(), STS::one(), STS::zero()); - - Teuchos::RCP> xres = - Xpetra::ThyraUtils::toXpetra(B, comm); - - Teuchos::RCP> xresb = - Teuchos::rcp_dynamic_cast>(xres); - TEST_EQUALITY(xresb.is_null(), false); - - Teuchos::RCP> xresmerged = xresb->Merge(); - - Teuchos::ArrayRCP xdata = xresmerged->getData(0); - bool bCheck = true; - for (int i = 0; i < Teuchos::as(xresmerged->getLocalLength()); i++) { - if (i >= 0 && i < 160) { - if (xdata[i] != (Scalar)7.0) { - std::cout << i << " " << xdata[i] << std::endl; - bCheck = false; - } - } - if (i >= 160 && i < 180) { - if (xdata[i] != (Scalar)4.0) { - std::cout << i << " " << xdata[i] << std::endl; - bCheck = false; - } - } - if (i >= 180 && i < 190) { - if (xdata[i] != (Scalar)3.0) { - std::cout << i << " " << xdata[i] << std::endl; - bCheck = false; - } - } - } - TEST_EQUALITY(bCheck, true); - - brop->apply(*ones_A, *exp); - exp->update(-STS::one(), *xresmerged, STS::one()); - TEST_EQUALITY(exp->norm1(), STS::zero()); -#endif // HAVE_XPETRA_THYRA -} - -TEUCHOS_UNIT_TEST_TEMPLATE_6_DECL(ThyraBlockedOperator, ReadWriteMatrixMatrixMarket, M, MA, Scalar, LO, GO, Node) { -#ifdef HAVE_XPETRA_THYRA - typedef Xpetra::Map MapClass; - typedef Xpetra::MapFactory MapFactoryClass; - typedef Xpetra::Vector VectorClass; - typedef Xpetra::VectorFactory VectorFactoryClass; - typedef Xpetra::MapExtractor MapExtractorClass; - typedef Xpetra::MapExtractorFactory MapExtractorFactoryClass; - typedef Teuchos::ScalarTraits STS; - - // get a comm and node - Teuchos::RCP> comm = getDefaultComm(); - - M testMap(1, 0, comm); - Xpetra::UnderlyingLib lib = testMap.lib(); - - // generate problem - GO nEle = 63; - const Teuchos::RCP map = MapFactoryClass::Build(lib, nEle, 0, comm); - - LO NumMyElements = map->getLocalNumElements(); - GO NumGlobalElements = map->getGlobalNumElements(); - Teuchos::ArrayView MyGlobalElements = map->getLocalElementList(); - - Teuchos::RCP> A = - Xpetra::CrsMatrixFactory::Build(map, 3); - TEUCHOS_TEST_FOR_EXCEPTION(A->isFillComplete() == true || A->isFillActive() == false, std::runtime_error, ""); - - for (LO i = 0; i < NumMyElements; i++) { - if (MyGlobalElements[i] == 0) { - A->insertGlobalValues(MyGlobalElements[i], - Teuchos::tuple(MyGlobalElements[i], MyGlobalElements[i] + 1), - Teuchos::tuple(Teuchos::as(i) * STS::one(), -1.0)); - } else if (MyGlobalElements[i] == NumGlobalElements - 1) { - A->insertGlobalValues(MyGlobalElements[i], - Teuchos::tuple(MyGlobalElements[i] - 1, MyGlobalElements[i]), - Teuchos::tuple(-1.0, Teuchos::as(i) * STS::one())); - } else { - A->insertGlobalValues(MyGlobalElements[i], - Teuchos::tuple(MyGlobalElements[i] - 1, MyGlobalElements[i], MyGlobalElements[i] + 1), - Teuchos::tuple(-1.0, Teuchos::as(i) * STS::one(), -1.0)); - } - } - - A->fillComplete(); - TEUCHOS_TEST_FOR_EXCEPTION(A->isFillComplete() == false || A->isFillActive() == true, std::runtime_error, ""); - - Teuchos::RCP> mat = - Teuchos::rcp(new Xpetra::CrsMatrixWrap(A)); - - Teuchos::Array gids1; - Teuchos::Array gids2; - for (LO i = 0; i < NumMyElements; i++) { - if (i % 3 < 2) - gids1.push_back(map->getGlobalElement(i)); - else - gids2.push_back(map->getGlobalElement(i)); - } - - const Teuchos::RCP map1 = MapFactoryClass::Build(lib, - Teuchos::OrdinalTraits::invalid(), - gids1.view(0, gids1.size()), - 0, - comm); - const Teuchos::RCP map2 = MapFactoryClass::Build(lib, - Teuchos::OrdinalTraits::invalid(), - gids2.view(0, gids2.size()), - 0, - comm); - - std::vector> xmaps; - xmaps.push_back(map1); - xmaps.push_back(map2); - - Teuchos::RCP map_extractor = MapExtractorFactoryClass::Build(map, xmaps); - - Teuchos::RCP> bMat = - Xpetra::MatrixUtils::SplitMatrix(*mat, map_extractor, map_extractor, Teuchos::null, true); - - // Write matrices out, read fine A back in, and check that the read was ok - // by using a matvec with a random vector. - // JJH: 22-Feb-2016 Append scalar type to file name. The theory is that for dashboard - // tests with multiple Scalar instantiations of this test, a test with Scalar type - // A could try to read in the results of the test with Scalar type B, simply because - // the test with type B overwrote A's output matrix file. A better solution would be - // to write to a file stream, but this would involve writing new interfaces to Epetra's - // file I/O capabilities. - std::string tname = "MATRIX"; - tname = tname + typeid(Scalar).name(); - tname = tname + typeid(LO).name(); - tname = tname + typeid(GO).name(); -#ifdef HAVE_MUELU_KOKKOS - std::string nn = Tpetra::KokkosCompat::KokkosDeviceWrapperNode::name(); - nn.erase(std::remove(nn.begin(), nn.end(), '/'), nn.end()); - tname = tname + nn; -#endif - tname = "_" + tname; - - const bool alwaysWriteMaps = true; - Xpetra::IO::WriteBlockedCrsMatrix(tname, *bMat, alwaysWriteMaps); - Teuchos::RCP> bMat2 = Xpetra::IO::ReadBlockedCrsMatrix(tname, lib, comm); - - TEST_EQUALITY(bMat->getMatrix(0, 0)->getGlobalNumEntries(), bMat2->getMatrix(0, 0)->getGlobalNumEntries()); - TEST_EQUALITY(bMat->getMatrix(0, 1)->getGlobalNumEntries(), bMat2->getMatrix(0, 1)->getGlobalNumEntries()); - TEST_EQUALITY(bMat->getMatrix(1, 0)->getGlobalNumEntries(), bMat2->getMatrix(1, 0)->getGlobalNumEntries()); - TEST_EQUALITY(bMat->getMatrix(1, 1)->getGlobalNumEntries(), bMat2->getMatrix(1, 1)->getGlobalNumEntries()); - - TEST_EQUALITY(bMat->getMatrix(0, 0)->getLocalNumEntries(), bMat2->getMatrix(0, 0)->getLocalNumEntries()); - TEST_EQUALITY(bMat->getMatrix(0, 1)->getLocalNumEntries(), bMat2->getMatrix(0, 1)->getLocalNumEntries()); - TEST_EQUALITY(bMat->getMatrix(1, 0)->getLocalNumEntries(), bMat2->getMatrix(1, 0)->getLocalNumEntries()); - TEST_EQUALITY(bMat->getMatrix(1, 1)->getLocalNumEntries(), bMat2->getMatrix(1, 1)->getLocalNumEntries()); - - TEST_EQUALITY(bMat->getMatrix(0, 0)->getFrobeniusNorm(), bMat2->getMatrix(0, 0)->getFrobeniusNorm()); - TEST_EQUALITY(bMat->getMatrix(0, 1)->getFrobeniusNorm(), bMat2->getMatrix(0, 1)->getFrobeniusNorm()); - TEST_EQUALITY(bMat->getMatrix(1, 0)->getFrobeniusNorm(), bMat2->getMatrix(1, 0)->getFrobeniusNorm()); - TEST_EQUALITY(bMat->getMatrix(1, 1)->getFrobeniusNorm(), bMat2->getMatrix(1, 1)->getFrobeniusNorm()); - - TEST_EQUALITY(bMat->getRangeMapExtractor()->getMap(0)->isSameAs(*(bMat2->getRangeMapExtractor()->getMap(0))), true); - TEST_EQUALITY(bMat->getDomainMapExtractor()->getMap(0)->isSameAs(*(bMat2->getDomainMapExtractor()->getMap(0))), true); - - TEST_EQUALITY(bMat->getRangeMapExtractor()->getFullMap()->isSameAs(*(bMat2->getRangeMapExtractor()->getFullMap())), true); - TEST_EQUALITY(bMat->getDomainMapExtractor()->getFullMap()->isSameAs(*(bMat2->getDomainMapExtractor()->getFullMap())), true); - - // these tests are false with Tpetra? TODO check me: why only in Tpetra? - // bMat2 is always in Xpetra mode so far. This is, since the Read routine and Write routine for the MapExtractor do not really - // consider the Thyra mode so far. - // TEST_EQUALITY(bMat->getRangeMapExtractor()->getMap(1)->isSameAs(*(bMat2->getRangeMapExtractor()->getMap(1))),true); - // TEST_EQUALITY(bMat->getDomainMapExtractor()->getMap(1)->isSameAs(*(bMat2->getDomainMapExtractor()->getMap(1))),true); - - TEST_EQUALITY(bMat->getMatrix(0, 0)->getRowMap()->isSameAs(*(bMat2->getMatrix(0, 0)->getRowMap())), true); - TEST_EQUALITY(bMat->getMatrix(0, 1)->getRowMap()->isSameAs(*(bMat2->getMatrix(0, 1)->getRowMap())), true); - TEST_EQUALITY(bMat->getMatrix(1, 0)->getRowMap()->isSameAs(*(bMat2->getMatrix(1, 0)->getRowMap())), true); - TEST_EQUALITY(bMat->getMatrix(1, 1)->getRowMap()->isSameAs(*(bMat2->getMatrix(1, 1)->getRowMap())), true); - - TEST_EQUALITY(bMat->getMatrix(0, 0)->getColMap()->isSameAs(*(bMat2->getMatrix(0, 0)->getColMap())), true); - TEST_EQUALITY(bMat->getMatrix(0, 1)->getColMap()->isSameAs(*(bMat2->getMatrix(0, 1)->getColMap())), true); - // the following test fails with Teptra. Why? - // TEST_EQUALITY(bMat->getMatrix(1,0)->getColMap()->isSameAs(*(bMat2->getMatrix(1,0)->getColMap())),true); - TEST_EQUALITY(bMat->getMatrix(1, 1)->getColMap()->isSameAs(*(bMat2->getMatrix(1, 1)->getColMap())), true); - - // build gloabl vector with one entries - Teuchos::RCP ones_A = VectorFactoryClass::Build(bMat->getRangeMap(), true); - Teuchos::RCP exp = VectorFactoryClass::Build(bMat->getRangeMap(), true); - Teuchos::RCP ones_bOp = VectorFactoryClass::Build(bMat2->getRangeMap(), true); - Teuchos::RCP res = VectorFactoryClass::Build(bMat2->getRangeMap(), true); - ones_A->putScalar(STS::one()); - ones_bOp->putScalar(STS::one()); - - bMat->apply(*ones_A, *exp); - bMat2->apply(*ones_bOp, *res); - - TEST_EQUALITY(res->norm2(), exp->norm2()); - TEST_EQUALITY(res->normInf(), exp->normInf()); - TEST_EQUALITY(bMat->getRangeMapExtractor()->getThyraMode(), true); - TEST_EQUALITY(bMat->getDomainMapExtractor()->getThyraMode(), true); - TEST_EQUALITY(bMat->getRangeMap(0)->getMinAllGlobalIndex(), 0); - TEST_EQUALITY(bMat->getRangeMap(1)->getMinAllGlobalIndex(), 0); - TEST_EQUALITY(bMat->getDomainMap(0)->getMinAllGlobalIndex(), 0); - TEST_EQUALITY(bMat->getDomainMap(1)->getMinAllGlobalIndex(), 0); - TEST_EQUALITY(bMat2->getRangeMapExtractor()->getThyraMode(), false); // thyra mode is not correctly transferred!! - TEST_EQUALITY(bMat2->getDomainMapExtractor()->getThyraMode(), false); - TEST_EQUALITY(bMat2->getRangeMap(0)->getMinAllGlobalIndex(), 0); - TEST_INEQUALITY(bMat2->getRangeMap(1)->getMinAllGlobalIndex(), 0); - TEST_EQUALITY(bMat2->getDomainMap(0)->getMinAllGlobalIndex(), 0); - TEST_INEQUALITY(bMat2->getDomainMap(1)->getMinAllGlobalIndex(), 0); -#endif -} -// -// INSTANTIATIONS -// -#ifdef HAVE_XPETRA_TPETRA - -#define XPETRA_TPETRA_TYPES(S, LO, GO, N) \ - typedef typename Xpetra::TpetraMap M##LO##GO##N; \ - typedef typename Xpetra::TpetraCrsMatrix MA##S##LO##GO##N; - -#endif - -#ifdef HAVE_XPETRA_EPETRA - -#define XPETRA_EPETRA_TYPES(S, LO, GO, N) \ - typedef typename Xpetra::EpetraMapT M##LO##GO##N; \ - typedef typename Xpetra::EpetraCrsMatrixT MA##S##LO##GO##N; - -#endif - -// List of tests which run both with Epetra and Tpetra -#define XP_MATRIX_INSTANT(S, LO, GO, N) \ - TEUCHOS_UNIT_TEST_TEMPLATE_6_INSTANT(ThyraBlockedOperator, ThyraOperator2XpetraCrsMat, M##LO##GO##N, MA##S##LO##GO##N, S, LO, GO, N) \ - TEUCHOS_UNIT_TEST_TEMPLATE_6_INSTANT(ThyraBlockedOperator, ThyraShrinkMaps, M##LO##GO##N, MA##S##LO##GO##N, S, LO, GO, N) \ - TEUCHOS_UNIT_TEST_TEMPLATE_6_INSTANT(ThyraBlockedOperator, SplitMatrixForThyra, M##LO##GO##N, MA##S##LO##GO##N, S, LO, GO, N) \ - TEUCHOS_UNIT_TEST_TEMPLATE_6_INSTANT(ThyraBlockedOperator, ReadWriteMatrixMatrixMarket, M##LO##GO##N, MA##S##LO##GO##N, S, LO, GO, N) \ - TEUCHOS_UNIT_TEST_TEMPLATE_6_INSTANT(ThyraBlockedOperator, XpetraBlockedCrsMatConstructor, M##LO##GO##N, MA##S##LO##GO##N, S, LO, GO, N) \ - TEUCHOS_UNIT_TEST_TEMPLATE_6_INSTANT(ThyraBlockedOperator, ThyraBlockedOperator2XpetraBlockedCrsMat, M##LO##GO##N, MA##S##LO##GO##N, S, LO, GO, N) \ - TEUCHOS_UNIT_TEST_TEMPLATE_6_INSTANT(ThyraBlockedOperator, NestedBlockOperator2ThyraBlockedCrsMat, M##LO##GO##N, MA##S##LO##GO##N, S, LO, GO, N) \ - TEUCHOS_UNIT_TEST_TEMPLATE_6_INSTANT(ThyraBlockedOperator, ReorderBlockOperator2ThyraBlockedCrsMat, M##LO##GO##N, MA##S##LO##GO##N, S, LO, GO, N) - -// List of tests which run only with Tpetra -#define XP_TPETRA_MATRIX_INSTANT(S, LO, GO, N) \ - TEUCHOS_UNIT_TEST_TEMPLATE_6_INSTANT(ThyraBlockedOperator, ThyraVectorSpace2XpetraMap_Tpetra, M##LO##GO##N, MA##S##LO##GO##N, S, LO, GO, N) - -// List of tests which run only with Epetra -#define XP_EPETRA_MATRIX_INSTANT(S, LO, GO, N) \ - TEUCHOS_UNIT_TEST_TEMPLATE_6_INSTANT(ThyraBlockedOperator, ThyraVectorSpace2XpetraMap_Epetra, M##LO##GO##N, MA##S##LO##GO##N, S, LO, GO, N) - -#if defined(HAVE_XPETRA_TPETRA) - -#include -#include - -TPETRA_ETI_MANGLING_TYPEDEFS() -TPETRA_INSTANTIATE_SLGN_NO_ORDINAL_SCALAR(XPETRA_TPETRA_TYPES) -TPETRA_INSTANTIATE_SLGN_NO_ORDINAL_SCALAR(XP_MATRIX_INSTANT) -TPETRA_INSTANTIATE_SLGN_NO_ORDINAL_SCALAR(XP_TPETRA_MATRIX_INSTANT) - -#endif - -#if defined(HAVE_XPETRA_EPETRA) - -#include "Xpetra_Map.hpp" // defines EpetraNode -typedef Xpetra::EpetraNode EpetraNode; -#ifndef XPETRA_EPETRA_NO_32BIT_GLOBAL_INDICES -XPETRA_EPETRA_TYPES(double, int, int, EpetraNode) -XP_MATRIX_INSTANT(double, int, int, EpetraNode) -XP_EPETRA_MATRIX_INSTANT(double, int, int, EpetraNode) -#endif -// EpetraExt routines are not working with 64 bit -/*#ifndef XPETRA_EPETRA_NO_64BIT_GLOBAL_INDICES -typedef long long LongLong; -XPETRA_EPETRA_TYPES(double,int,LongLong,EpetraNode) -XP_EPETRA_MATRIX_INSTANT(double,int,LongLong,EpetraNode) -#endif*/ - -#endif - -} // namespace XpetraBlockMatrixTests diff --git a/packages/xpetra/test/BlockedMultiVector/BlockedMultiVector_UnitTests.cpp b/packages/xpetra/test/BlockedMultiVector/BlockedMultiVector_UnitTests.cpp index f89174f8d8e4..e0cde4ba7042 100644 --- a/packages/xpetra/test/BlockedMultiVector/BlockedMultiVector_UnitTests.cpp +++ b/packages/xpetra/test/BlockedMultiVector/BlockedMultiVector_UnitTests.cpp @@ -1370,22 +1370,11 @@ TEUCHOS_UNIT_TEST_TEMPLATE_6_DECL(BlockedMultiVector, BlockedVectorDeepCopy, M, // // INSTANTIATIONS // -#ifdef HAVE_XPETRA_TPETRA #define XPETRA_TPETRA_TYPES(S, LO, GO, N) \ typedef typename Xpetra::TpetraMap M##LO##GO##N; \ typedef typename Xpetra::TpetraMultiVector MV##S##LO##GO##N; -#endif - -#ifdef HAVE_XPETRA_EPETRA - -#define XPETRA_EPETRA_TYPES(S, LO, GO, N) \ - typedef typename Xpetra::EpetraMapT M##LO##GO##N; \ - typedef typename Xpetra::EpetraMultiVectorT MV##S##LO##GO##N; - -#endif - #define XP_BLOCKEDMULTIVECTOR_INSTANT(S, LO, GO, N) \ TEUCHOS_UNIT_TEST_TEMPLATE_6_INSTANT(BlockedMultiVector, Constructor, M##LO##GO##N, MV##S##LO##GO##N, S, LO, GO, N) \ TEUCHOS_UNIT_TEST_TEMPLATE_6_INSTANT(BlockedMultiVector, Constructor2, M##LO##GO##N, MV##S##LO##GO##N, S, LO, GO, N) \ @@ -1416,8 +1405,6 @@ TEUCHOS_UNIT_TEST_TEMPLATE_6_DECL(BlockedMultiVector, BlockedVectorDeepCopy, M, // List of tests which run only with Epetra #define XP_EPETRA_BLOCKEDMULTIVECTOR_INSTANT(S, LO, GO, N) -#if defined(HAVE_XPETRA_TPETRA) - #include #include @@ -1426,25 +1413,4 @@ TPETRA_INSTANTIATE_SLGN_NO_ORDINAL_SCALAR(XPETRA_TPETRA_TYPES) TPETRA_INSTANTIATE_SLGN_NO_ORDINAL_SCALAR(XP_TPETRA_BLOCKEDMULTIVECTOR_INSTANT) TPETRA_INSTANTIATE_SLGN_NO_ORDINAL_SCALAR(XP_BLOCKEDMULTIVECTOR_INSTANT) -#endif - -#if defined(HAVE_XPETRA_EPETRA) - -#include "Xpetra_Map.hpp" // defines EpetraNode -typedef Xpetra::EpetraNode EpetraNode; -#ifndef XPETRA_EPETRA_NO_32BIT_GLOBAL_INDICES -XPETRA_EPETRA_TYPES(double, int, int, EpetraNode) -XP_EPETRA_BLOCKEDMULTIVECTOR_INSTANT(double, int, int, EpetraNode) -XP_BLOCKEDMULTIVECTOR_INSTANT(double, int, int, EpetraNode) -#endif -// EpetraExt routines are not working with 64 bit -#ifndef XPETRA_EPETRA_NO_64BIT_GLOBAL_INDICES -typedef long long LongLong; -XPETRA_EPETRA_TYPES(double, int, LongLong, EpetraNode) -XP_EPETRA_BLOCKEDMULTIVECTOR_INSTANT(double, int, LongLong, EpetraNode) -XP_EPETRA_BLOCKEDMULTIVECTOR_INSTANT(double, int, LongLong, EpetraNode) -#endif - -#endif - } // namespace XpetraBlockMatrixTests diff --git a/packages/xpetra/test/BlockedMultiVector/ThyraBlockedMultiVector_UnitTests.cpp b/packages/xpetra/test/BlockedMultiVector/ThyraBlockedMultiVector_UnitTests.cpp index 8fa0ecf38a79..2047240c56bd 100644 --- a/packages/xpetra/test/BlockedMultiVector/ThyraBlockedMultiVector_UnitTests.cpp +++ b/packages/xpetra/test/BlockedMultiVector/ThyraBlockedMultiVector_UnitTests.cpp @@ -675,22 +675,11 @@ TEUCHOS_UNIT_TEST_TEMPLATE_6_DECL(ThyraBlockedMultiVector, BlockedVectorDeepCopy // // INSTANTIATIONS // -#ifdef HAVE_XPETRA_TPETRA #define XPETRA_TPETRA_TYPES(S, LO, GO, N) \ typedef typename Xpetra::TpetraMap M##LO##GO##N; \ typedef typename Xpetra::TpetraMultiVector MV##S##LO##GO##N; -#endif - -#ifdef HAVE_XPETRA_EPETRA - -#define XPETRA_EPETRA_TYPES(S, LO, GO, N) \ - typedef typename Xpetra::EpetraMapT M##LO##GO##N; \ - typedef typename Xpetra::EpetraMultiVectorT MV##S##LO##GO##N; - -#endif - #define XP_BLOCKEDMULTIVECTOR_INSTANT(S, LO, GO, N) \ TEUCHOS_UNIT_TEST_TEMPLATE_6_INSTANT(ThyraBlockedMultiVector, Constructor, M##LO##GO##N, MV##S##LO##GO##N, S, LO, GO, N) \ TEUCHOS_UNIT_TEST_TEMPLATE_6_INSTANT(ThyraBlockedMultiVector, ConstructorNested, M##LO##GO##N, MV##S##LO##GO##N, S, LO, GO, N) \ @@ -708,8 +697,6 @@ TEUCHOS_UNIT_TEST_TEMPLATE_6_DECL(ThyraBlockedMultiVector, BlockedVectorDeepCopy // List of tests which run only with Epetra #define XP_EPETRA_BLOCKEDMULTIVECTOR_INSTANT(S, LO, GO, N) -#if defined(HAVE_XPETRA_TPETRA) - #include #include @@ -718,25 +705,4 @@ TPETRA_INSTANTIATE_SLGN_NO_ORDINAL_SCALAR(XPETRA_TPETRA_TYPES) TPETRA_INSTANTIATE_SLGN_NO_ORDINAL_SCALAR(XP_TPETRA_BLOCKEDMULTIVECTOR_INSTANT) TPETRA_INSTANTIATE_SLGN_NO_ORDINAL_SCALAR(XP_BLOCKEDMULTIVECTOR_INSTANT) -#endif - -#if defined(HAVE_XPETRA_EPETRA) - -#include "Xpetra_Map.hpp" // defines EpetraNode -typedef Xpetra::EpetraNode EpetraNode; -#ifndef XPETRA_EPETRA_NO_32BIT_GLOBAL_INDICES -XPETRA_EPETRA_TYPES(double, int, int, EpetraNode) -XP_EPETRA_BLOCKEDMULTIVECTOR_INSTANT(double, int, int, EpetraNode) -XP_BLOCKEDMULTIVECTOR_INSTANT(double, int, int, EpetraNode) -#endif -// EpetraExt routines are not working with 64 bit -#ifndef XPETRA_EPETRA_NO_64BIT_GLOBAL_INDICES -typedef long long LongLong; -XPETRA_EPETRA_TYPES(double, int, LongLong, EpetraNode) -XP_EPETRA_BLOCKEDMULTIVECTOR_INSTANT(double, int, LongLong, EpetraNode) -XP_EPETRA_BLOCKEDMULTIVECTOR_INSTANT(double, int, LongLong, EpetraNode) -#endif - -#endif - } // namespace XpetraBlockMatrixTests diff --git a/packages/xpetra/test/CrsMatrix/CrsMatrixUtils_UnitTests.cpp b/packages/xpetra/test/CrsMatrix/CrsMatrixUtils_UnitTests.cpp index 9da397ed0b4a..ef15aa9dbcbe 100644 --- a/packages/xpetra/test/CrsMatrix/CrsMatrixUtils_UnitTests.cpp +++ b/packages/xpetra/test/CrsMatrix/CrsMatrixUtils_UnitTests.cpp @@ -207,28 +207,10 @@ TEUCHOS_UNIT_TEST_TEMPLATE_4_DECL(CrsMatrixUtils, sortAndMergeCrsEntriesEpetra, TEUCHOS_UNIT_TEST_TEMPLATE_4_INSTANT(CrsMatrixUtils, sortCrsEntriesEpetra, SC, LO, GO, NO) \ TEUCHOS_UNIT_TEST_TEMPLATE_4_INSTANT(CrsMatrixUtils, sortAndMergeCrsEntriesEpetra, SC, LO, GO, NO) -#if defined(HAVE_XPETRA_TPETRA) - #include #include TPETRA_ETI_MANGLING_TYPEDEFS() TPETRA_INSTANTIATE_SLGN_NO_ORDINAL_SCALAR(UNIT_TEST_GROUP_ORDINAL_TPETRAONLY) -#endif - -#if defined(HAVE_XPETRA_EPETRA) - -#include "Xpetra_Map.hpp" // defines EpetraNode -typedef Xpetra::EpetraNode EpetraNode; -#ifndef XPETRA_EPETRA_NO_32BIT_GLOBAL_INDICES -UNIT_TEST_GROUP_ORDINAL_EPETRAONLY(double, int, int, EpetraNode) -#endif -#ifndef XPETRA_EPETRA_NO_64BIT_GLOBAL_INDICES -typedef long long LongLong; -UNIT_TEST_GROUP_ORDINAL_EPETRAONLY(double, int, LongLong, EpetraNode) -#endif - -#endif - } // End of namespace diff --git a/packages/xpetra/test/CrsMatrix/CrsMatrix_UnitTests.cpp b/packages/xpetra/test/CrsMatrix/CrsMatrix_UnitTests.cpp index 50085bd01915..ebd835eae3ac 100644 --- a/packages/xpetra/test/CrsMatrix/CrsMatrix_UnitTests.cpp +++ b/packages/xpetra/test/CrsMatrix/CrsMatrix_UnitTests.cpp @@ -284,9 +284,7 @@ TEUCHOS_UNIT_TEST_TEMPLATE_5_DECL(CrsMatrix, leftScale, M, Scalar, LO, GO, Node) A->leftScale(*s); -#ifdef HAVE_XPETRA_TPETRA Kokkos::fence(); -#endif for (size_t i = 0; i < static_cast(NumMyElements); i++) { if (MyGlobalElements[i] == 0) { @@ -376,9 +374,7 @@ TEUCHOS_UNIT_TEST_TEMPLATE_5_DECL(CrsMatrix, rightScale, M, Scalar, LO, GO, Node A->rightScale(*s); -#ifdef HAVE_XPETRA_TPETRA Kokkos::fence(); -#endif for (size_t i = 0; i < static_cast(NumMyElements); i++) { if (MyGlobalElements[i] == 0) { @@ -484,108 +480,13 @@ TEUCHOS_UNIT_TEST_TEMPLATE_5_DECL(CrsMatrix, replaceDiagonal, M, Scalar, LO, GO, } TEUCHOS_UNIT_TEST_TEMPLATE_4_DECL(CrsMatrix, Constructor_Epetra, Scalar, LO, GO, Node) { -#ifdef HAVE_XPETRA_EPETRA - - // get a comm and node - RCP > comm = getDefaultComm(); - - { - typedef Xpetra::EpetraMapT mm; - TEST_NOTHROW(mm(10, 0, comm)); - typedef Xpetra::EpetraCrsMatrixT mx; - TEST_NOTHROW(mx(Teuchos::rcp(new mm(10, 0, comm)), 0)); - } - -#if defined(HAVE_XPETRA_TPETRA) && defined(HAVE_TPETRA_INST_PTHREAD) - { - typedef Xpetra::EpetraMapT mm; - TEST_THROW(mm(10, 0, comm), Xpetra::Exceptions::RuntimeError); - typedef Xpetra::EpetraCrsMatrixT mx; - TEST_THROW(mx(Teuchos::null, 0), Xpetra::Exceptions::RuntimeError); - } -#endif -#if defined(HAVE_XPETRA_TPETRA) && defined(HAVE_TPETRA_INST_CUDA) - { - typedef Xpetra::EpetraMapT mm; - TEST_THROW(mm(10, 0, comm), Xpetra::Exceptions::RuntimeError); - typedef Xpetra::EpetraCrsMatrixT mx; - TEST_THROW(mx(Teuchos::null, 0), Xpetra::Exceptions::RuntimeError); - } -#endif -#if defined(HAVE_XPETRA_TPETRA) && defined(HAVE_TPETRA_INST_HIP) - { - typedef Xpetra::EpetraMapT mm; - TEST_THROW(mm(10, 0, comm), Xpetra::Exceptions::RuntimeError); - typedef Xpetra::EpetraCrsMatrixT mx; - TEST_THROW(mx(Teuchos::null, 0), Xpetra::Exceptions::RuntimeError); - } -#endif - -#endif } TEUCHOS_UNIT_TEST_TEMPLATE_4_DECL(CrsMatrix, Epetra_ReplaceLocalValues, Scalar, LO, GO, Node) { -#ifdef HAVE_XPETRA_EPETRA - - typedef Xpetra::Map MapClass; - typedef Xpetra::MapFactory MapFactoryClass; - - // get a comm and node - RCP > comm = getDefaultComm(); - - Xpetra::UnderlyingLib lib = Xpetra::UseEpetra; - - // generate problem - LO nEle = 63; - const RCP map = MapFactoryClass::Build(lib, nEle, 0, comm); - - RCP > matrix = - Xpetra::CrsMatrixFactory::Build(map, 10); - - LO NumMyElements = map->getLocalNumElements(); - Teuchos::ArrayView MyGlobalElements = map->getLocalElementList(); - - for (LO i = 0; i < NumMyElements; ++i) { - matrix->insertGlobalValues(MyGlobalElements[i], - Teuchos::tuple(MyGlobalElements[i]), - Teuchos::tuple(1.0)); - } - - matrix->fillComplete(); - matrix->resumeFill(); - - Teuchos::Array indout(1, 0); - Teuchos::Array valout(1, 5.0); - matrix->replaceLocalValues(0, indout.view(0, indout.size()), valout.view(0, valout.size())); - matrix->fillComplete(); - - RCP > vec = - Xpetra::VectorFactory::Build(map); - - vec->putScalar(1.0); - - RCP > vec_sol = - Xpetra::VectorFactory::Build(matrix->getRangeMap()); - - vec_sol->putScalar(0.0); - - matrix->apply(*vec, *vec_sol, Teuchos::NO_TRANS, 1.0, 0.0); - - RCP > vectest = - Xpetra::VectorFactory::Build(map); - vectest->putScalar(1.0); - Teuchos::ArrayRCP vectestData = vectest->getDataNonConst(0); - vectestData[0] = 5.0; - - vec_sol->update(-1.0, *vectest, 1.0); - - TEUCHOS_TEST_COMPARE(vec_sol->norm2(), <, 1e-16, out, success); -#endif } // just a copy of the Epetra_ReplaceLocalValues test for Tpetra TEUCHOS_UNIT_TEST_TEMPLATE_4_DECL(CrsMatrix, Tpetra_ReplaceLocalValues, Scalar, LO, GO, Node) { -#ifdef HAVE_XPETRA_TPETRA using std::endl; using Teuchos::outArg; using Teuchos::REDUCE_MIN; @@ -812,11 +713,9 @@ TEUCHOS_UNIT_TEST_TEMPLATE_4_DECL(CrsMatrix, Tpetra_ReplaceLocalValues, Scalar, reduceAll(*comm, REDUCE_MIN, lclSuccess, outArg(gblSuccess)); success = success && (gblSuccess == 1); TEST_EQUALITY_CONST(gblSuccess, 1); -#endif } TEUCHOS_UNIT_TEST_TEMPLATE_4_DECL(CrsMatrix, TpetraDeepCopy, Scalar, LO, GO, Node) { -#ifdef HAVE_XPETRA_TPETRA typedef Xpetra::Map MapClass; typedef Xpetra::MapFactory MapFactoryClass; typedef Teuchos::ScalarTraits STS; @@ -1162,59 +1061,9 @@ TEUCHOS_UNIT_TEST_TEMPLATE_4_DECL(CrsMatrix, TpetraDeepCopy, Scalar, LO, GO, Nod s += Teuchos::ScalarTraits::magnitude(rdata[i] - rdatacopy[i]); } TEUCHOS_TEST_COMPARE(s, <, 1e-16, out, success); -#endif } TEUCHOS_UNIT_TEST_TEMPLATE_4_DECL(CrsMatrix, EpetraDeepCopy, Scalar, LO, GO, Node) { -#ifdef HAVE_XPETRA_EPETRA - - typedef Xpetra::Map MapClass; - typedef Xpetra::MapFactory MapFactoryClass; - - // get a comm and node - RCP > comm = getDefaultComm(); - - Xpetra::UnderlyingLib lib = Xpetra::UseEpetra; - - // generate problem - LO nEle = 63; - const RCP map = MapFactoryClass::Build(lib, nEle, 0, comm); - - RCP > A = - Xpetra::CrsMatrixFactory::Build(map, 10); - - LO NumMyElements = map->getLocalNumElements(); - Teuchos::ArrayView MyGlobalElements = map->getLocalElementList(); - - for (LO i = 0; i < NumMyElements; ++i) { - A->insertGlobalValues(MyGlobalElements[i], - Teuchos::tuple(MyGlobalElements[i]), - Teuchos::tuple(1.0)); - } - - A->fillComplete(); - - RCP > v = Xpetra::VectorFactory::Build(map); - v->setSeed(8675309); - v->randomize(true); - - RCP > r = Xpetra::VectorFactory::Build(A->getRangeMap()); - RCP > rcopy = Xpetra::VectorFactory::Build(A->getRangeMap()); - - A->apply(*v, *r, Teuchos::NO_TRANS, 1.0, 0.0); - - RCP > Acopy(new Xpetra::EpetraCrsMatrixT(*(Teuchos::rcp_static_cast >(A)))); - A = Teuchos::null; - - Acopy->apply(*v, *rcopy, Teuchos::NO_TRANS, 1.0, 0.0); - - Teuchos::ArrayRCP rdata = r->getDataNonConst(0), rdatacopy = rcopy->getDataNonConst(0); - Scalar s = Teuchos::ScalarTraits::zero(); - for (LO i = 0; i < NumMyElements; i++) { - s += Teuchos::ScalarTraits::magnitude(rdata[i] - rdatacopy[i]); - } - TEUCHOS_TEST_COMPARE(s, <, 1e-16, out, success); -#endif } TEUCHOS_UNIT_TEST_TEMPLATE_5_DECL(CrsMatrix, GetLocalMatrix, M, Scalar, LO, GO, Node) { @@ -1331,7 +1180,6 @@ TEUCHOS_UNIT_TEST_TEMPLATE_5_DECL(CrsMatrix, GetLocalMatrix, M, Scalar, LO, GO, } TEUCHOS_UNIT_TEST_TEMPLATE_5_DECL(CrsMatrix, ConstructMatrixKokkos, M, Scalar, LO, GO, Node) { -#ifdef HAVE_XPETRA_TPETRA // Note: get Kokkos interface for Epetra is only available if Tpetra is also enabled! std::cout << "Run ConstructMatrixKokkos test" << std::endl; // Kokkos::initialize(); typedef Xpetra::Map MapClass; @@ -1539,11 +1387,9 @@ TEUCHOS_UNIT_TEST_TEMPLATE_5_DECL(CrsMatrix, ConstructMatrixKokkos, M, Scalar, L } } // Kokkos::finalize(); -#endif } TEUCHOS_UNIT_TEST_TEMPLATE_4_DECL(CrsMatrix, TpetraGraphAndValuesConstructor, Scalar, LO, GO, Node) { -#ifdef HAVE_XPETRA_TPETRA typedef Xpetra::Map MapClass; typedef Xpetra::MapFactory MapFactoryClass; typedef Teuchos::ScalarTraits STS; @@ -1674,27 +1520,15 @@ TEUCHOS_UNIT_TEST_TEMPLATE_4_DECL(CrsMatrix, TpetraGraphAndValuesConstructor, Sc TEST_EQUALITY(norms[0], STM::zero()); } -#endif } // // INSTANTIATIONS // -#ifdef HAVE_XPETRA_TPETRA - #define XPETRA_TPETRA_TYPES(SC, LO, GO, Node) \ typedef typename Xpetra::TpetraMap M##LO##GO##Node; -#endif - -#ifdef HAVE_XPETRA_EPETRA - -#define XPETRA_EPETRA_TYPES(SC, LO, GO, Node) \ - typedef typename Xpetra::EpetraMapT M##LO##GO##Node; - -#endif - // for common tests (Epetra and Tpetra...) #define UNIT_TEST_GROUP_ORDINAL(SC, LO, GO, Node) \ TEUCHOS_UNIT_TEST_TEMPLATE_5_INSTANT(CrsMatrix, Constructor_Vector, M##LO##GO##Node, SC, LO, GO, Node) \ @@ -1718,8 +1552,6 @@ TEUCHOS_UNIT_TEST_TEMPLATE_4_DECL(CrsMatrix, TpetraGraphAndValuesConstructor, Sc TEUCHOS_UNIT_TEST_TEMPLATE_5_INSTANT(CrsMatrix, GetLocalMatrix, M##LO##GO##Node, SC, LO, GO, Node) \ TEUCHOS_UNIT_TEST_TEMPLATE_5_INSTANT(CrsMatrix, ConstructMatrixKokkos, M##LO##GO##Node, SC, LO, GO, Node) -#if defined(HAVE_XPETRA_TPETRA) - #include #include @@ -1729,22 +1561,4 @@ TPETRA_INSTANTIATE_SLGN_NO_ORDINAL_SCALAR(UNIT_TEST_GROUP_ORDINAL) TPETRA_INSTANTIATE_SLGN_NO_ORDINAL_SCALAR(UNIT_TEST_GROUP_ORDINAL_TPETRAONLY) TPETRA_INSTANTIATE_SLGN_NO_ORDINAL_SCALAR(UNIT_TEST_GROUP_ORDINAL_KOKKOS) -#endif - -#if defined(HAVE_XPETRA_EPETRA) -#include "Xpetra_Map.hpp" // defines EpetraNode -typedef Xpetra::EpetraNode EpetraNode; -#ifndef XPETRA_EPETRA_NO_32BIT_GLOBAL_INDICES -XPETRA_EPETRA_TYPES(double, int, int, EpetraNode) -UNIT_TEST_GROUP_ORDINAL_EPETRAONLY(double, int, int, EpetraNode) -UNIT_TEST_GROUP_ORDINAL_KOKKOS(double, int, int, EpetraNode) -#endif -#ifndef XPETRA_EPETRA_NO_64BIT_GLOBAL_INDICES -typedef long long LongLong; -XPETRA_EPETRA_TYPES(double, int, LongLong, EpetraNode) -UNIT_TEST_GROUP_ORDINAL_EPETRAONLY(double, int, LongLong, EpetraNode) -UNIT_TEST_GROUP_ORDINAL_KOKKOS(double, int, LongLong, EpetraNode) -#endif -#endif - } // namespace diff --git a/packages/xpetra/test/IO/IO_UnitTests.cpp b/packages/xpetra/test/IO/IO_UnitTests.cpp index ba592fb62187..ca80cab51243 100644 --- a/packages/xpetra/test/IO/IO_UnitTests.cpp +++ b/packages/xpetra/test/IO/IO_UnitTests.cpp @@ -87,29 +87,16 @@ TEUCHOS_UNIT_TEST_TEMPLATE_6_DECL(IO, BinaryMissingRows, M, MA, Scalar, LO, GO, // // INSTANTIATIONS // -#ifdef HAVE_XPETRA_TPETRA #define XPETRA_TPETRA_TYPES(S, LO, GO, N) \ typedef typename Xpetra::TpetraMap M##LO##GO##N; \ typedef typename Xpetra::TpetraCrsMatrix MA##S##LO##GO##N; -#endif - -#ifdef HAVE_XPETRA_EPETRA - -#define XPETRA_EPETRA_TYPES(S, LO, GO, N) \ - typedef typename Xpetra::EpetraMapT M##LO##GO##N; \ - typedef typename Xpetra::EpetraCrsMatrixT MA##S##LO##GO##N; - -#endif - // list of all tests which run both with Epetra and Tpetra #define XP_IO_INSTANT(S, LO, GO, N) \ TEUCHOS_UNIT_TEST_TEMPLATE_6_INSTANT(IO, MMMissingRows, M##LO##GO##N, MA##S##LO##GO##N, S, LO, GO, N) \ TEUCHOS_UNIT_TEST_TEMPLATE_6_INSTANT(IO, BinaryMissingRows, M##LO##GO##N, MA##S##LO##GO##N, S, LO, GO, N) -#if defined(HAVE_XPETRA_TPETRA) - #include #include @@ -117,22 +104,4 @@ TPETRA_ETI_MANGLING_TYPEDEFS() TPETRA_INSTANTIATE_SLGN_NO_ORDINAL_SCALAR(XPETRA_TPETRA_TYPES) TPETRA_INSTANTIATE_SLGN_NO_ORDINAL_SCALAR(XP_IO_INSTANT) -#endif - -#if defined(HAVE_XPETRA_EPETRA) - -#include "Xpetra_Map.hpp" // defines EpetraNode -typedef Xpetra::EpetraNode EpetraNode; -#ifndef XPETRA_EPETRA_NO_32BIT_GLOBAL_INDICES -XPETRA_EPETRA_TYPES(double, int, int, EpetraNode) -XP_IO_INSTANT(double, int, int, EpetraNode) -#endif -#ifndef XPETRA_EPETRA_NO_64BIT_GLOBAL_INDICES -typedef long long LongLong; -XPETRA_EPETRA_TYPES(double, int, LongLong, EpetraNode) -XP_IO_INSTANT(double, int, LongLong, EpetraNode) -#endif - -#endif - } // namespace diff --git a/packages/xpetra/test/Map/MapFactory_UnitTests.cpp b/packages/xpetra/test/Map/MapFactory_UnitTests.cpp index dfe2d26d4bcf..0a2a81b96d51 100644 --- a/packages/xpetra/test/Map/MapFactory_UnitTests.cpp +++ b/packages/xpetra/test/Map/MapFactory_UnitTests.cpp @@ -20,14 +20,8 @@ #include "Xpetra_Map.hpp" #include "Xpetra_MapFactory.hpp" -#ifdef HAVE_XPETRA_TPETRA #include "Xpetra_TpetraMap.hpp" #include "Tpetra_Details_Behavior.hpp" -#endif - -#ifdef HAVE_XPETRA_EPETRA -#include "Xpetra_EpetraMap.hpp" -#endif namespace { @@ -209,20 +203,10 @@ TEUCHOS_UNIT_TEST_TEMPLATE_4_DECL(MapFactory, TransformNumDofsPerNodeWithOffset, // // INSTANTIATIONS // -#ifdef HAVE_XPETRA_TPETRA #define XPETRA_TPETRA_TYPES(LO, GO, N) \ typedef typename Xpetra::TpetraMap M##LO##GO##N; -#endif - -#ifdef HAVE_XPETRA_EPETRA - -#define XPETRA_EPETRA_TYPES(LO, GO, N) \ - typedef typename Xpetra::EpetraMapT M##LO##GO##N; - -#endif - // List of tests (which run both on Epetra and Tpetra) #define XP_MAP_INSTANT(LO, GO, N) \ TEUCHOS_UNIT_TEST_TEMPLATE_4_INSTANT(MapFactory, ContigUniformMapFact, M##LO##GO##N, LO, GO, N) \ @@ -231,8 +215,6 @@ TEUCHOS_UNIT_TEST_TEMPLATE_4_DECL(MapFactory, TransformNumDofsPerNodeWithOffset, TEUCHOS_UNIT_TEST_TEMPLATE_4_INSTANT(MapFactory, TransformNumDofsPerNode, M##LO##GO##N, LO, GO, N) \ TEUCHOS_UNIT_TEST_TEMPLATE_4_INSTANT(MapFactory, TransformNumDofsPerNodeWithOffset, M##LO##GO##N, LO, GO, N) -#if defined(HAVE_XPETRA_TPETRA) - #include #include @@ -241,21 +223,4 @@ TPETRA_ETI_MANGLING_TYPEDEFS() TPETRA_INSTANTIATE_LGN(XPETRA_TPETRA_TYPES) TPETRA_INSTANTIATE_LGN(XP_MAP_INSTANT) -#endif - -#if defined(HAVE_XPETRA_EPETRA) - -#include "Xpetra_Map.hpp" // defines EpetraNode -typedef Xpetra::EpetraNode EpetraNode; -#ifndef XPETRA_EPETRA_NO_32BIT_GLOBAL_INDICES -XPETRA_EPETRA_TYPES(int, int, EpetraNode) -XP_MAP_INSTANT(int, int, EpetraNode) -#endif -#ifndef XPETRA_EPETRA_NO_64BIT_GLOBAL_INDICES -typedef long long LongLong; -XPETRA_EPETRA_TYPES(int, LongLong, EpetraNode) -XP_MAP_INSTANT(int, LongLong, EpetraNode) -#endif -#endif - } // namespace diff --git a/packages/xpetra/test/Map/Map_UnitTests.cpp b/packages/xpetra/test/Map/Map_UnitTests.cpp index f173894825b4..706bc87cf948 100644 --- a/packages/xpetra/test/Map/Map_UnitTests.cpp +++ b/packages/xpetra/test/Map/Map_UnitTests.cpp @@ -17,14 +17,8 @@ #include "Xpetra_ConfigDefs.hpp" #include "Xpetra_DefaultPlatform.hpp" -#ifdef HAVE_XPETRA_TPETRA #include "Xpetra_TpetraMap.hpp" #include "Tpetra_Details_Behavior.hpp" -#endif - -#ifdef HAVE_XPETRA_EPETRA -#include "Xpetra_EpetraMap.hpp" -#endif // FINISH: add testing of operator==, operator!=, operator=, copy construct // put these into test_same_as and test_is_compatible @@ -32,11 +26,7 @@ namespace { bool mapDebugChecksEnabled() { -#ifdef HAVE_XPETRA_TPETRA return Tpetra::Details::Behavior::debug("Map"); -#else - return false; -#endif // HAVE_XPETRA_TPETRA } bool testMpi = true; @@ -106,7 +96,6 @@ TEUCHOS_UNIT_TEST_TEMPLATE_4_DECL(Map, validConstructor2, M, LO, GO, N) { } TEUCHOS_UNIT_TEST_TEMPLATE_4_DECL(Map, validConstructor3, M, LO, GO, N) { -#ifdef HAVE_XPETRA_TPETRA // create Kokkos templates typedef typename N::device_type device_type; typedef typename device_type::execution_space execution_space; @@ -305,7 +294,6 @@ TEUCHOS_UNIT_TEST_TEMPLATE_4_DECL(Map, validConstructor3, M, LO, GO, N) { reduceAll(*comm, Teuchos::REDUCE_SUM, success ? 0 : 1, Teuchos::outArg(globalSuccess_int)); TEST_EQUALITY_CONST(globalSuccess_int, 0); } -#endif } // This test exercises Tpetra's debug-mode checks. @@ -505,7 +493,6 @@ TEUCHOS_UNIT_TEST_TEMPLATE_4_DECL(Map, compatabilityTests, M, LO, GO, N) { } TEUCHOS_UNIT_TEST_TEMPLATE_4_DECL(Map, localMap, M, LO, GO, N) { -#ifdef HAVE_XPETRA_TPETRA // Note: get Kokkos interface for Epetra is only available if Tpetra is also enabled! typedef typename N::device_type device_type; typedef typename device_type::execution_space execution_space; typedef Kokkos::RangePolicy range_type; @@ -601,7 +588,6 @@ TEUCHOS_UNIT_TEST_TEMPLATE_4_DECL(Map, localMap, M, LO, GO, N) { TEST_EQUALITY(globalElement, elementList[i]); } } -#endif } //// @@ -690,20 +676,10 @@ TEUCHOS_UNIT_TEST_TEMPLATE_4_DECL(Map, ContigUniformMap, M, LO, GO, N) { // // INSTANTIATIONS // -#ifdef HAVE_XPETRA_TPETRA #define XPETRA_TPETRA_TYPES(LO, GO, N) \ typedef typename Xpetra::TpetraMap M##LO##GO##N; -#endif - -#ifdef HAVE_XPETRA_EPETRA - -#define XPETRA_EPETRA_TYPES(LO, GO, N) \ - typedef typename Xpetra::EpetraMapT M##LO##GO##N; - -#endif - // List of tests (which run both on Epetra and Tpetra) #define XP_MAP_INSTANT(LO, GO, N) \ TEUCHOS_UNIT_TEST_TEMPLATE_4_INSTANT(Map, invalidConstructor1, M##LO##GO##N, LO, GO, N) \ @@ -719,8 +695,6 @@ TEUCHOS_UNIT_TEST_TEMPLATE_4_DECL(Map, ContigUniformMap, M, LO, GO, N) { #define XPT_MAP_INSTANT(LO, GO, N) \ TEUCHOS_UNIT_TEST_TEMPLATE_4_INSTANT(Map, validConstructor3, M##LO##GO##N, LO, GO, N) -#if defined(HAVE_XPETRA_TPETRA) - #include #include @@ -730,21 +704,4 @@ TPETRA_INSTANTIATE_LGN(XPETRA_TPETRA_TYPES) TPETRA_INSTANTIATE_LGN(XP_MAP_INSTANT) TPETRA_INSTANTIATE_LGN(XPT_MAP_INSTANT) -#endif - -#if defined(HAVE_XPETRA_EPETRA) - -#include "Xpetra_Map.hpp" // defines EpetraNode -typedef Xpetra::EpetraNode EpetraNode; -#ifndef XPETRA_EPETRA_NO_32BIT_GLOBAL_INDICES -XPETRA_EPETRA_TYPES(int, int, EpetraNode) -XP_MAP_INSTANT(int, int, EpetraNode) -#endif -#ifndef XPETRA_EPETRA_NO_64BIT_GLOBAL_INDICES -typedef long long LongLong; -XPETRA_EPETRA_TYPES(int, LongLong, EpetraNode) -XP_MAP_INSTANT(int, LongLong, EpetraNode) -#endif -#endif - } // namespace diff --git a/packages/xpetra/test/Map/Map_UnitTests2.cpp b/packages/xpetra/test/Map/Map_UnitTests2.cpp index 7894b35f7e28..562a1bae8789 100644 --- a/packages/xpetra/test/Map/Map_UnitTests2.cpp +++ b/packages/xpetra/test/Map/Map_UnitTests2.cpp @@ -12,12 +12,7 @@ #include "Xpetra_DefaultPlatform.hpp" -#ifdef HAVE_XPETRA_TPETRA #include "Xpetra_TpetraMap.hpp" -#endif -#ifdef HAVE_XPETRA_EPETRA -#include "Xpetra_EpetraMap.hpp" -#endif // This file regroups tests that are specific to Xpetra. @@ -91,26 +86,14 @@ TEUCHOS_UNIT_TEST_TEMPLATE_4_DECL(Map, getRemoteIndexList, M, LO, GO, N) { // // INSTANTIATIONS // -#ifdef HAVE_XPETRA_TPETRA #define XPETRA_TPETRA_TYPES(LO, GO, N) \ typedef typename Xpetra::TpetraMap M##LO##GO##N; -#endif - -#ifdef HAVE_XPETRA_EPETRA - -#define XPETRA_EPETRA_TYPES(LO, GO, N) \ - typedef typename Xpetra::EpetraMapT M##LO##GO##N; - -#endif - // List of tests (which run both on Epetra and Tpetra) #define XP_MAP_INSTANT(LO, GO, N) \ TEUCHOS_UNIT_TEST_TEMPLATE_4_INSTANT(Map, getRemoteIndexList, M##LO##GO##N, LO, GO, N) -#if defined(HAVE_XPETRA_TPETRA) - #include #include @@ -119,21 +102,4 @@ TPETRA_ETI_MANGLING_TYPEDEFS() TPETRA_INSTANTIATE_LGN(XPETRA_TPETRA_TYPES) TPETRA_INSTANTIATE_LGN(XP_MAP_INSTANT) -#endif - -#if defined(HAVE_XPETRA_EPETRA) - -#include "Xpetra_Map.hpp" // defines EpetraNode -typedef Xpetra::EpetraNode EpetraNode; -#ifndef XPETRA_EPETRA_NO_32BIT_GLOBAL_INDICES -XPETRA_EPETRA_TYPES(int, int, EpetraNode) -XP_MAP_INSTANT(int, int, EpetraNode) -#endif -#ifndef XPETRA_EPETRA_NO_64BIT_GLOBAL_INDICES -typedef long long LongLong; -XPETRA_EPETRA_TYPES(int, LongLong, EpetraNode) -XP_MAP_INSTANT(int, LongLong, EpetraNode) -#endif -#endif - } // namespace diff --git a/packages/xpetra/test/Map/StridedMapFactory_UnitTests.cpp b/packages/xpetra/test/Map/StridedMapFactory_UnitTests.cpp index e248824c61bb..de0a712d4ec1 100644 --- a/packages/xpetra/test/Map/StridedMapFactory_UnitTests.cpp +++ b/packages/xpetra/test/Map/StridedMapFactory_UnitTests.cpp @@ -14,13 +14,7 @@ #include "Xpetra_ConfigDefs.hpp" #include "Xpetra_DefaultPlatform.hpp" -#ifdef HAVE_XPETRA_TPETRA #include "Xpetra_TpetraMap.hpp" -#endif - -#ifdef HAVE_XPETRA_EPETRA -#include "Xpetra_EpetraMap.hpp" -#endif #include "Xpetra_StridedMapFactory.hpp" #include "Xpetra_StridedMap.hpp" @@ -171,27 +165,15 @@ TEUCHOS_UNIT_TEST_TEMPLATE_4_DECL(StridedMapFactory, CreateStridedMap2, M, LO, G // // INSTANTIATIONS // -#ifdef HAVE_XPETRA_TPETRA #define XPETRA_TPETRA_TYPES(LO, GO, N) \ typedef typename Xpetra::TpetraMap M##LO##GO##N; -#endif - -#ifdef HAVE_XPETRA_EPETRA - -#define XPETRA_EPETRA_TYPES(LO, GO, N) \ - typedef typename Xpetra::EpetraMapT M##LO##GO##N; - -#endif - // List of tests (which run both on Epetra and Tpetra) #define XP_MAP_INSTANT(LO, GO, N) \ TEUCHOS_UNIT_TEST_TEMPLATE_4_INSTANT(StridedMapFactory, CreateStridedMap1, M##LO##GO##N, LO, GO, N) \ TEUCHOS_UNIT_TEST_TEMPLATE_4_INSTANT(StridedMapFactory, CreateStridedMap2, M##LO##GO##N, LO, GO, N) -#if defined(HAVE_XPETRA_TPETRA) - #include #include @@ -200,21 +182,4 @@ TPETRA_ETI_MANGLING_TYPEDEFS() TPETRA_INSTANTIATE_LGN(XPETRA_TPETRA_TYPES) TPETRA_INSTANTIATE_LGN(XP_MAP_INSTANT) -#endif - -#if defined(HAVE_XPETRA_EPETRA) - -#include "Xpetra_Map.hpp" // defines EpetraNode -typedef Xpetra::EpetraNode EpetraNode; -#ifndef XPETRA_EPETRA_NO_32BIT_GLOBAL_INDICES -XPETRA_EPETRA_TYPES(int, int, EpetraNode) -XP_MAP_INSTANT(int, int, EpetraNode) -#endif -#ifndef XPETRA_EPETRA_NO_64BIT_GLOBAL_INDICES -typedef long long LongLong; -XPETRA_EPETRA_TYPES(int, LongLong, EpetraNode) -XP_MAP_INSTANT(int, LongLong, EpetraNode) -#endif -#endif - } // end namespace diff --git a/packages/xpetra/test/Map/StridedMap_UnitTests.cpp b/packages/xpetra/test/Map/StridedMap_UnitTests.cpp index 6258d424d6c0..ff0717047c1d 100644 --- a/packages/xpetra/test/Map/StridedMap_UnitTests.cpp +++ b/packages/xpetra/test/Map/StridedMap_UnitTests.cpp @@ -16,13 +16,7 @@ #include "Xpetra_DefaultPlatform.hpp" #include "Xpetra_StridedMap.hpp" -#ifdef HAVE_XPETRA_TPETRA #include "Xpetra_TpetraMap.hpp" -#endif - -#ifdef HAVE_XPETRA_EPETRA -#include "Xpetra_EpetraMap.hpp" -#endif namespace { @@ -437,20 +431,10 @@ TEUCHOS_UNIT_TEST_TEMPLATE_4_DECL(StridedMap, StridedPartConstructorOffsetPlusIn // // INSTANTIATIONS // -#ifdef HAVE_XPETRA_TPETRA #define XPETRA_TPETRA_TYPES(LO, GO, N) \ typedef typename Xpetra::TpetraMap M##LO##GO##N; -#endif - -#ifdef HAVE_XPETRA_EPETRA - -#define XPETRA_EPETRA_TYPES(LO, GO, N) \ - typedef typename Xpetra::EpetraMapT M##LO##GO##N; - -#endif - // List of tests (which run both on Epetra and Tpetra) #define XP_MAP_INSTANT(LO, GO, N) \ TEUCHOS_UNIT_TEST_TEMPLATE_4_INSTANT(StridedMap, Constructor1, M##LO##GO##N, LO, GO, N) \ @@ -462,8 +446,6 @@ TEUCHOS_UNIT_TEST_TEMPLATE_4_DECL(StridedMap, StridedPartConstructorOffsetPlusIn TEUCHOS_UNIT_TEST_TEMPLATE_4_INSTANT(StridedMap, StridedPartConstructorWithOffset, M##LO##GO##N, LO, GO, N) \ TEUCHOS_UNIT_TEST_TEMPLATE_4_INSTANT(StridedMap, StridedPartConstructorOffsetPlusIndexBase, M##LO##GO##N, LO, GO, N) -#if defined(HAVE_XPETRA_TPETRA) - #include #include @@ -472,21 +454,4 @@ TPETRA_ETI_MANGLING_TYPEDEFS() TPETRA_INSTANTIATE_LGN(XPETRA_TPETRA_TYPES) TPETRA_INSTANTIATE_LGN(XP_MAP_INSTANT) -#endif - -#if defined(HAVE_XPETRA_EPETRA) - -#include "Xpetra_Map.hpp" // defines EpetraNode -typedef Xpetra::EpetraNode EpetraNode; -#ifndef XPETRA_EPETRA_NO_32BIT_GLOBAL_INDICES -XPETRA_EPETRA_TYPES(int, int, EpetraNode) -XP_MAP_INSTANT(int, int, EpetraNode) -#endif -#ifndef XPETRA_EPETRA_NO_64BIT_GLOBAL_INDICES -typedef long long LongLong; -XPETRA_EPETRA_TYPES(int, LongLong, EpetraNode) -XP_MAP_INSTANT(int, LongLong, EpetraNode) -#endif -#endif - } // namespace diff --git a/packages/xpetra/test/MapExtractor/MapExtractorFactory_UnitTests.cpp b/packages/xpetra/test/MapExtractor/MapExtractorFactory_UnitTests.cpp index 4ce9f25a1f31..17954cf5aeb3 100644 --- a/packages/xpetra/test/MapExtractor/MapExtractorFactory_UnitTests.cpp +++ b/packages/xpetra/test/MapExtractor/MapExtractorFactory_UnitTests.cpp @@ -22,14 +22,8 @@ #include // #include -#ifdef HAVE_XPETRA_TPETRA #include #include -#endif - -#ifdef HAVE_XPETRA_EPETRA -#include -#endif namespace XpetraMapExtractorFactoryTests { @@ -168,28 +162,15 @@ TEUCHOS_UNIT_TEST_TEMPLATE_6_DECL(MapExtractorFactory, ConstructFromBlockedMap, // // INSTANTIATIONS // -#ifdef HAVE_XPETRA_TPETRA #define XPETRA_TPETRA_TYPES(S, LO, GO, N) \ typedef typename Xpetra::TpetraMap M##LO##GO##N; \ typedef typename Xpetra::TpetraCrsMatrix MA##S##LO##GO##N; -#endif - -#ifdef HAVE_XPETRA_EPETRA - -#define XPETRA_EPETRA_TYPES(S, LO, GO, N) \ - typedef typename Xpetra::EpetraMapT M##LO##GO##N; \ - typedef typename Xpetra::EpetraCrsMatrixT MA##S##LO##GO##N; - -#endif - #define XP_MAPEXTRACTORACTORY_INSTANT(S, LO, GO, N) \ TEUCHOS_UNIT_TEST_TEMPLATE_6_INSTANT(MapExtractorFactory, ConstructFromFullAndPartialMaps, M##LO##GO##N, MA##S##LO##GO##N, S, LO, GO, N) \ TEUCHOS_UNIT_TEST_TEMPLATE_6_INSTANT(MapExtractorFactory, ConstructFromBlockedMap, M##LO##GO##N, MA##S##LO##GO##N, S, LO, GO, N) -#if defined(HAVE_XPETRA_TPETRA) - #include #include @@ -197,22 +178,4 @@ TPETRA_ETI_MANGLING_TYPEDEFS() TPETRA_INSTANTIATE_SLGN_NO_ORDINAL_SCALAR(XPETRA_TPETRA_TYPES) TPETRA_INSTANTIATE_SLGN_NO_ORDINAL_SCALAR(XP_MAPEXTRACTORACTORY_INSTANT) -#endif - -#if defined(HAVE_XPETRA_EPETRA) - -#include "Xpetra_Map.hpp" // defines EpetraNode -typedef Xpetra::EpetraNode EpetraNode; -#ifndef XPETRA_EPETRA_NO_32BIT_GLOBAL_INDICES -XPETRA_EPETRA_TYPES(double, int, int, EpetraNode) -XP_MAPEXTRACTORACTORY_INSTANT(double, int, int, EpetraNode) -#endif -#ifndef XPETRA_EPETRA_NO_64BIT_GLOBAL_INDICES -typedef long long LongLong; -XPETRA_EPETRA_TYPES(double, int, LongLong, EpetraNode) -XP_MAPEXTRACTORACTORY_INSTANT(double, int, LongLong, EpetraNode) -#endif - -#endif - } // namespace XpetraMapExtractorFactoryTests diff --git a/packages/xpetra/test/Matrix/Matrix_UnitTests.cpp b/packages/xpetra/test/Matrix/Matrix_UnitTests.cpp index 42eabaaae53e..d2fb54749caf 100644 --- a/packages/xpetra/test/Matrix/Matrix_UnitTests.cpp +++ b/packages/xpetra/test/Matrix/Matrix_UnitTests.cpp @@ -20,12 +20,7 @@ #include "Xpetra_MatrixFactory2.hpp" #include "Xpetra_MultiVectorFactory.hpp" #include "Xpetra_CrsMatrixWrap.hpp" -#ifdef HAVE_XPETRA_TPETRA #include "Xpetra_TpetraCrsMatrix.hpp" -#endif -#ifdef HAVE_XPETRA_EPETRA -#include "Xpetra_EpetraCrsMatrix.hpp" -#endif namespace { using Xpetra::viewLabel_t; @@ -57,7 +52,6 @@ Teuchos::RCP > getDefaultComm() { //// TEUCHOS_UNIT_TEST_TEMPLATE_6_DECL(Matrix, ViewSwitching, M, MA, Scalar, LO, GO, Node) { -#ifdef HAVE_XPETRA_TPETRA typedef Xpetra::CrsMatrixWrap CrsMatrixWrap; Teuchos::RCP > comm = getDefaultComm(); @@ -103,7 +97,6 @@ TEUCHOS_UNIT_TEST_TEMPLATE_6_DECL(Matrix, ViewSwitching, M, MA, Scalar, LO, GO, op.fillComplete(); } -#endif } //// @@ -112,7 +105,6 @@ TEUCHOS_UNIT_TEST_TEMPLATE_6_DECL(Matrix, StridedMaps_Tpetra, M, MA, Scalar, LO, const size_t numLocal = 10; const size_t INVALID = Teuchos::OrdinalTraits::invalid(); // TODO: global_size_t instead of size_t -#ifdef HAVE_XPETRA_TPETRA typedef Xpetra::CrsMatrixWrap CrsMatrixWrap; Teuchos::RCP > map = Xpetra::MapFactory::createContigMapWithNode(Xpetra::UseTpetra, INVALID, numLocal, comm); @@ -132,36 +124,10 @@ TEUCHOS_UNIT_TEST_TEMPLATE_6_DECL(Matrix, StridedMaps_Tpetra, M, MA, Scalar, LO, int blkSize = op.GetFixedBlockSize(); TEST_EQUALITY_CONST(blkSize, 2); } -#endif } //// TEUCHOS_UNIT_TEST_TEMPLATE_6_DECL(Matrix, StridedMaps_Epetra, M, MA, Scalar, LO, GO, Node) { -#ifdef HAVE_XPETRA_EPETRA - Teuchos::RCP > comm = getDefaultComm(); - const size_t numLocal = 10; - const size_t INVALID = Teuchos::OrdinalTraits::invalid(); - - typedef Xpetra::CrsMatrixWrap EpCrsMatrix; - - Teuchos::RCP > epmap = Xpetra::MapFactory::createContigMap(Xpetra::UseEpetra, INVALID, numLocal, comm); - { - Xpetra::EpetraCrsMatrixT t = Xpetra::EpetraCrsMatrixT(epmap, numLocal); - - // Test of constructor - EpCrsMatrix op(epmap, 1); - op.fillComplete(); - - TEST_EQUALITY_CONST(op.GetCurrentViewLabel(), op.GetDefaultViewLabel()); - TEST_EQUALITY_CONST(op.GetCurrentViewLabel(), op.SwitchToView(op.GetCurrentViewLabel())); - - op.SetFixedBlockSize(2); - TEST_EQUALITY(op.IsView("stridedMaps"), true); - TEST_EQUALITY(op.IsView("StridedMaps"), false); - int blkSize = op.GetFixedBlockSize(); - TEST_EQUALITY_CONST(blkSize, 2); - } -#endif } //// @@ -170,7 +136,6 @@ TEUCHOS_UNIT_TEST_TEMPLATE_6_DECL(Matrix, BuildCopy_StridedMaps_Tpetra, M, MA, S const size_t numLocal = 10; const size_t INVALID = Teuchos::OrdinalTraits::invalid(); // TODO: global_size_t instead of size_t -#ifdef HAVE_XPETRA_TPETRA typedef Xpetra::CrsMatrixWrap CrsMatrixWrap; Teuchos::RCP > map = Xpetra::MapFactory::createContigMapWithNode(Xpetra::UseTpetra, INVALID, numLocal, comm); @@ -186,7 +151,6 @@ TEUCHOS_UNIT_TEST_TEMPLATE_6_DECL(Matrix, BuildCopy_StridedMaps_Tpetra, M, MA, S int blkSize = t->GetFixedBlockSize(); TEST_EQUALITY_CONST(blkSize, 2); } -#endif } TEUCHOS_UNIT_TEST_TEMPLATE_6_DECL(Matrix, BlockDiagonalUtils_Tpetra, M, MA, Scalar, LO, GO, Node) { @@ -199,7 +163,6 @@ TEUCHOS_UNIT_TEST_TEMPLATE_6_DECL(Matrix, BlockDiagonalUtils_Tpetra, M, MA, Scal using Teuchos::rcp_const_cast; Scalar SC_one = Teuchos::ScalarTraits::one(); -#ifdef HAVE_XPETRA_TPETRA using MV = Xpetra::MultiVector; typedef Xpetra::CrsMatrixWrap CrsMatrixWrap; RCP > map = @@ -234,28 +197,16 @@ TEUCHOS_UNIT_TEST_TEMPLATE_6_DECL(Matrix, BlockDiagonalUtils_Tpetra, M, MA, Scal Xpetra::MatrixUtils::inverseScaleBlockDiagonal(*diag5c, false, *toScale5); } -#endif } // // INSTANTIATIONS // -#ifdef HAVE_XPETRA_TPETRA #define XPETRA_TPETRA_TYPES(S, LO, GO, N) \ typedef typename Xpetra::TpetraMap M##LO##GO##N; \ typedef typename Xpetra::TpetraCrsMatrix MA##S##LO##GO##N; -#endif - -#ifdef HAVE_XPETRA_EPETRA - -#define XPETRA_EPETRA_TYPES(S, LO, GO, N) \ - typedef typename Xpetra::EpetraMapT M##LO##GO##N; \ - typedef typename Xpetra::EpetraCrsMatrixT MA##S##LO##GO##N; - -#endif - // List of tests which run only with Tpetra #define XP_TPETRA_MATRIX_INSTANT(S, LO, GO, N) \ TEUCHOS_UNIT_TEST_TEMPLATE_6_INSTANT(Matrix, StridedMaps_Tpetra, M##LO##GO##N, MA##S##LO##GO##N, S, LO, GO, N) \ @@ -273,8 +224,6 @@ TEUCHOS_UNIT_TEST_TEMPLATE_6_DECL(Matrix, BlockDiagonalUtils_Tpetra, M, MA, Scal // list of all tests which run both with Epetra and Tpetra //#define XP_MATRIX_INSTANT(S,LO,GO,N) -#if defined(HAVE_XPETRA_TPETRA) - #include #include @@ -287,24 +236,4 @@ TPETRA_INSTANTIATE_SLGN_NO_ORDINAL_SCALAR(XP_TPETRA_MATRIX_INSTANT) TPETRA_INSTANTIATE_SLGN_NO_ORDINAL_SCALAR(XP_TPETRA_MATRIX_INSTANT_NO_COMPLEX) #endif -#endif - -#if defined(HAVE_XPETRA_EPETRA) - -#include "Xpetra_Map.hpp" // defines EpetraNode -typedef Xpetra::EpetraNode EpetraNode; -#ifndef XPETRA_EPETRA_NO_32BIT_GLOBAL_INDICES -XPETRA_EPETRA_TYPES(double, int, int, EpetraNode) -// XP_MATRIX_INSTANT(double,int,int,EpetraNode) -XP_EPETRA_MATRIX_INSTANT(double, int, int, EpetraNode) -#endif -#ifndef XPETRA_EPETRA_NO_64BIT_GLOBAL_INDICES -typedef long long LongLong; -XPETRA_EPETRA_TYPES(double, int, LongLong, EpetraNode) -// XP_MATRIX_INSTANT(double,int,LongLong,EpetraNode) -XP_EPETRA_MATRIX_INSTANT(double, int, LongLong, EpetraNode) -#endif - -#endif - } // namespace diff --git a/packages/xpetra/test/MatrixMatrix/MatrixMatrix_UnitTests.cpp b/packages/xpetra/test/MatrixMatrix/MatrixMatrix_UnitTests.cpp index 493cb07e1be7..95d1191d3ec4 100644 --- a/packages/xpetra/test/MatrixMatrix/MatrixMatrix_UnitTests.cpp +++ b/packages/xpetra/test/MatrixMatrix/MatrixMatrix_UnitTests.cpp @@ -16,15 +16,6 @@ #include -#ifdef HAVE_XPETRA_EPETRAEXT -// EpetraExt -#include "EpetraExt_CrsMatrixIn.h" -#include "EpetraExt_VectorIn.h" -#include "EpetraExt_VectorOut.h" -#include "EpetraExt_MatrixMatrix.h" -#include "EpetraExt_RowMatrixOut.h" -#endif - #include #include @@ -32,16 +23,11 @@ #include #include #include -#ifdef HAVE_XPETRA_TPETRA #include #include #include #include #include -#endif -#ifdef HAVE_XPETRA_EPETRA -#include -#endif #include #include #include @@ -82,14 +68,12 @@ using Xpetra::viewLabel_t; bool testMpi = true; double errorTolSlack = 1e+1; -#if (defined(HAVE_XPETRA_EPETRA) && defined(HAVE_XPETRA_EPETRAEXT)) || (defined(HAVE_XPETRA_TPETRA)) RCP > getDefaultComm() { if (testMpi) { return DefaultPlatform::getDefaultPlatform().getComm(); } return rcp(new Teuchos::SerialComm()); } -#endif ///////////////////////////////////////////////////// @@ -111,220 +95,9 @@ TEUCHOS_STATIC_SETUP() { /// unit test for matrix-matrix multiplication (both for Epetra and Tpetra) TEUCHOS_UNIT_TEST_TEMPLATE_6_DECL(MatrixMatrix, Multiply_Epetra, M, MA, Scalar, LO, GO, Node) { -#if defined(HAVE_XPETRA_EPETRA) && defined(HAVE_XPETRA_EPETRAEXT) - typedef Xpetra::Map MapClass; - typedef Xpetra::MapFactory MapFactoryClass; - typedef Xpetra::CrsMatrix CrsMatrixClass; - typedef Xpetra::Matrix MatrixClass; - typedef Xpetra::CrsMatrixWrap CrsMatrixWrapClass; - - // Teuchos::RCP fos = Teuchos::getFancyOStream(Teuchos::rcpFromRef(std::cout)); - // yAB->describe(*fos, Teuchos::VERB_EXTREME); - - { // Epetra test - // get a comm and node - RCP > comm = getDefaultComm(); - - Xpetra::UnderlyingLib lib = Xpetra::UseEpetra; - - // generate problem - LO nEle = 6; - const RCP map = MapFactoryClass::Build(lib, nEle, 0, comm); - // TODO get rid of this... - //#ifndef XPETRA_TEST_USE_LONGLONG_GO - const RCP > XepMap = Teuchos::rcp_dynamic_cast >(map); - /////////////////////////////////////// transform Xpetra::Map objects to Epetra - // this is needed for AztecOO - const Teuchos::RCP epMap = Teuchos::rcpFromRef(XepMap->getEpetra_Map()); - /////////////////////////////////////// import problem matrix and RHS from files (-> Epetra) - - // read in problem - Epetra_CrsMatrix *ptrA = 0; - Epetra_CrsMatrix *ptrB = 0; - Epetra_CrsMatrix *ptrAB = 0; - Epetra_CrsMatrix *ptrAtB = 0; - Epetra_CrsMatrix *ptrABt = 0; - Epetra_CrsMatrix *ptrAtBt = 0; - EpetraExt::MatrixMarketFileToCrsMatrix("A.mat", *epMap, *epMap, *epMap, ptrA); - EpetraExt::MatrixMarketFileToCrsMatrix("B.mat", *epMap, *epMap, *epMap, ptrB); - EpetraExt::MatrixMarketFileToCrsMatrix("AB.mat", *epMap, *epMap, *epMap, ptrAB); - EpetraExt::MatrixMarketFileToCrsMatrix("AtB.mat", *epMap, *epMap, *epMap, ptrAtB); - EpetraExt::MatrixMarketFileToCrsMatrix("ABt.mat", *epMap, *epMap, *epMap, ptrABt); - EpetraExt::MatrixMarketFileToCrsMatrix("AtBt.mat", *epMap, *epMap, *epMap, ptrAtBt); - TEUCHOS_TEST_FOR_EXCEPTION(ptrA == NULL || ptrB == NULL || ptrAB == NULL || ptrAtB == NULL || ptrABt == NULL || ptrAtBt == NULL, std::logic_error, "Could not open one or more matrix files"); - RCP epA = Teuchos::rcp(ptrA); - RCP epB = Teuchos::rcp(ptrB); - RCP epAB = Teuchos::rcp(ptrAB); - RCP epAtB = Teuchos::rcp(ptrAtB); - RCP epABt = Teuchos::rcp(ptrABt); - RCP epAtBt = Teuchos::rcp(ptrAtBt); - - /////////////////////////////////////// transform Epetra objects to Xpetra (needed for MueLu) - - // build Xpetra objects from Epetra_CrsMatrix objects - Teuchos::RCP xAmat = Teuchos::rcp(new MA(epA)); - Teuchos::RCP xBmat = Teuchos::rcp(new MA(epB)); - Teuchos::RCP xABmat = Teuchos::rcp(new MA(epAB)); - Teuchos::RCP xAtBmat = Teuchos::rcp(new MA(epAtB)); - Teuchos::RCP xABtmat = Teuchos::rcp(new MA(epABt)); - Teuchos::RCP xAtBtmat = Teuchos::rcp(new MA(epAtBt)); - - Teuchos::RCP xA = Teuchos::rcp(new CrsMatrixWrapClass(xAmat)); - Teuchos::RCP xB = Teuchos::rcp(new CrsMatrixWrapClass(xBmat)); - Teuchos::RCP xAB = Teuchos::rcp(new CrsMatrixWrapClass(xABmat)); - Teuchos::RCP xAtB = Teuchos::rcp(new CrsMatrixWrapClass(xAtBmat)); - Teuchos::RCP xABt = Teuchos::rcp(new CrsMatrixWrapClass(xABtmat)); - Teuchos::RCP xAtBt = Teuchos::rcp(new CrsMatrixWrapClass(xAtBtmat)); - - Teuchos::RCP yAB = Teuchos::rcp(new CrsMatrixWrapClass(map, 6)); - - // Teuchos::RCP fos = Teuchos::getFancyOStream(Teuchos::rcpFromRef(std::cout)); - // yAB->describe(*fos,Teuchos::VERB_EXTREME); - - // Xpetra::MatrixMatrix::Multiply ( - Xpetra::MatrixMatrix::Multiply( - *xA, - false, - *xB, - false, - *yAB); - // Xpetra::MatrixMatrix::Add(*xAB,false,1.0,*yAB,-1.0); - TEUCHOS_TEST_EQUALITY(yAB->getFrobeniusNorm(), xAB->getFrobeniusNorm(), out, success); - - Xpetra::MatrixMatrix::Multiply( - *xA, - true, - *xB, - false, - *yAB); - // Xpetra::MatrixMatrix::Add(*xAtB,false,1.0,*yAB,-1.0); - TEUCHOS_TEST_EQUALITY(yAB->getFrobeniusNorm(), xAtB->getFrobeniusNorm(), out, success); - - Xpetra::MatrixMatrix::Multiply( - *xA, - false, - *xB, - true, - *yAB); - // Xpetra::MatrixMatrix::Add (*xABt,false,1.0,*yAB,-1.0); - TEUCHOS_TEST_EQUALITY(yAB->getFrobeniusNorm(), xABt->getFrobeniusNorm(), out, success); - - Xpetra::MatrixMatrix::Multiply( - *xA, - true, - *xB, - true, - *yAB); - // Xpetra::MatrixMatrix::Add (*xAtBt,false,1.0,*yAB,-1.0); - TEUCHOS_TEST_EQUALITY(yAB->getFrobeniusNorm(), xAtBt->getFrobeniusNorm(), out, success); - } // end Epetra test -#endif } TEUCHOS_UNIT_TEST_TEMPLATE_6_DECL(MatrixMatrix, Multiply_Epetra64, M, MA, Scalar, LO, GO, Node) { -#if defined(HAVE_XPETRA_EPETRA) && defined(HAVE_XPETRA_EPETRAEXT) - typedef Xpetra::Map MapClass; - typedef Xpetra::MapFactory MapFactoryClass; - typedef Xpetra::CrsMatrix CrsMatrixClass; - typedef Xpetra::Matrix MatrixClass; - typedef Xpetra::CrsMatrixWrap CrsMatrixWrapClass; - - // Teuchos::RCP fos = Teuchos::getFancyOStream(Teuchos::rcpFromRef(std::cout)); - // yAB->describe(*fos, Teuchos::VERB_EXTREME); - - { // Epetra test - // get a comm and node - RCP > comm = getDefaultComm(); - - Xpetra::UnderlyingLib lib = Xpetra::UseEpetra; - - // generate problem - LO nEle = 6; - const RCP map = MapFactoryClass::Build(lib, nEle, 0, comm); - const RCP > XepMap = Teuchos::rcp_dynamic_cast >(map); - /////////////////////////////////////// transform Xpetra::Map objects to Epetra - // this is needed for AztecOO - const Teuchos::RCP epMap = Teuchos::rcpFromRef(XepMap->getEpetra_Map()); - /////////////////////////////////////// import problem matrix and RHS from files (-> Epetra) - - // read in problem - Epetra_CrsMatrix *ptrA = 0; - Epetra_CrsMatrix *ptrB = 0; - Epetra_CrsMatrix *ptrAB = 0; - Epetra_CrsMatrix *ptrAtB = 0; - Epetra_CrsMatrix *ptrABt = 0; - Epetra_CrsMatrix *ptrAtBt = 0; - EpetraExt::MatrixMarketFileToCrsMatrix64("A.mat", *epMap, *epMap, *epMap, ptrA); - EpetraExt::MatrixMarketFileToCrsMatrix64("B.mat", *epMap, *epMap, *epMap, ptrB); - EpetraExt::MatrixMarketFileToCrsMatrix64("AB.mat", *epMap, *epMap, *epMap, ptrAB); - EpetraExt::MatrixMarketFileToCrsMatrix64("AtB.mat", *epMap, *epMap, *epMap, ptrAtB); - EpetraExt::MatrixMarketFileToCrsMatrix64("ABt.mat", *epMap, *epMap, *epMap, ptrABt); - EpetraExt::MatrixMarketFileToCrsMatrix64("AtBt.mat", *epMap, *epMap, *epMap, ptrAtBt); - TEUCHOS_TEST_FOR_EXCEPTION(ptrA == NULL || ptrB == NULL || ptrAB == NULL || ptrAtB == NULL || ptrABt == NULL || ptrAtBt == NULL, std::logic_error, "Could not open one or more matrix files"); - RCP epA = Teuchos::rcp(ptrA); - RCP epB = Teuchos::rcp(ptrB); - RCP epAB = Teuchos::rcp(ptrAB); - RCP epAtB = Teuchos::rcp(ptrAtB); - RCP epABt = Teuchos::rcp(ptrABt); - RCP epAtBt = Teuchos::rcp(ptrAtBt); - - /////////////////////////////////////// transform Epetra objects to Xpetra (needed for MueLu) - - // build Xpetra objects from Epetra_CrsMatrix objects - Teuchos::RCP xAmat = Teuchos::rcp(new MA(epA)); - Teuchos::RCP xBmat = Teuchos::rcp(new MA(epB)); - Teuchos::RCP xABmat = Teuchos::rcp(new MA(epAB)); - Teuchos::RCP xAtBmat = Teuchos::rcp(new MA(epAtB)); - Teuchos::RCP xABtmat = Teuchos::rcp(new MA(epABt)); - Teuchos::RCP xAtBtmat = Teuchos::rcp(new MA(epAtBt)); - - Teuchos::RCP xA = Teuchos::rcp(new CrsMatrixWrapClass(xAmat)); - Teuchos::RCP xB = Teuchos::rcp(new CrsMatrixWrapClass(xBmat)); - Teuchos::RCP xAB = Teuchos::rcp(new CrsMatrixWrapClass(xABmat)); - Teuchos::RCP xAtB = Teuchos::rcp(new CrsMatrixWrapClass(xAtBmat)); - Teuchos::RCP xABt = Teuchos::rcp(new CrsMatrixWrapClass(xABtmat)); - Teuchos::RCP xAtBt = Teuchos::rcp(new CrsMatrixWrapClass(xAtBtmat)); - - Teuchos::RCP yAB = Teuchos::rcp(new CrsMatrixWrapClass(map, 6)); - - // Xpetra::MatrixMatrix::Multiply ( - Xpetra::MatrixMatrix::Multiply( - *xA, - false, - *xB, - false, - *yAB); - // Xpetra::MatrixMatrix::Add(*xAB,false,1.0,*yAB,-1.0); - TEUCHOS_TEST_EQUALITY(yAB->getFrobeniusNorm(), xAB->getFrobeniusNorm(), out, success); - - Xpetra::MatrixMatrix::Multiply( - *xA, - true, - *xB, - false, - *yAB); - // Xpetra::MatrixMatrix::Add(*xAtB,false,1.0,*yAB,-1.0); - TEUCHOS_TEST_EQUALITY(yAB->getFrobeniusNorm(), xAtB->getFrobeniusNorm(), out, success); - - Xpetra::MatrixMatrix::Multiply( - *xA, - false, - *xB, - true, - *yAB); - // Xpetra::MatrixMatrix::Add (*xABt,false,1.0,*yAB,-1.0); - TEUCHOS_TEST_EQUALITY(yAB->getFrobeniusNorm(), xABt->getFrobeniusNorm(), out, success); - - Xpetra::MatrixMatrix::Multiply( - *xA, - true, - *xB, - true, - *yAB); - // Xpetra::MatrixMatrix::Add (*xAtBt,false,1.0,*yAB,-1.0); - TEUCHOS_TEST_EQUALITY(yAB->getFrobeniusNorm(), xAtBt->getFrobeniusNorm(), out, success); - } // end Epetra test -#endif } TEUCHOS_UNIT_TEST_TEMPLATE_6_DECL(MatrixMatrix, Multiply_Tpetra, M, MA, Scalar, LO, GO, Node) { @@ -332,7 +105,6 @@ TEUCHOS_UNIT_TEST_TEMPLATE_6_DECL(MatrixMatrix, Multiply_Tpetra, M, MA, Scalar, // The matrix reader does not work with complex scalars. Skip all tests then. return; #endif -#ifdef HAVE_XPETRA_TPETRA typedef Xpetra::Map MapClass; typedef Xpetra::MapFactory MapFactoryClass; typedef Xpetra::CrsMatrix CrsMatrixClass; @@ -418,7 +190,6 @@ TEUCHOS_UNIT_TEST_TEMPLATE_6_DECL(MatrixMatrix, Multiply_Tpetra, M, MA, Scalar, TEUCHOS_TEST_EQUALITY(xAtBt->getFrobeniusNorm(), yAtBt->getFrobeniusNorm(), out, success); TEUCHOS_TEST_EQUALITY(xAtBt->getLocalNumEntries(), yAtBt->getLocalNumEntries(), out, success); } // end Tpetra test -#endif } TEUCHOS_UNIT_TEST_TEMPLATE_6_DECL(MatrixMatrix, BlockCrs, M, MB, Scalar, LO, GO, Node) { @@ -426,7 +197,6 @@ TEUCHOS_UNIT_TEST_TEMPLATE_6_DECL(MatrixMatrix, BlockCrs, M, MB, Scalar, LO, GO, // The matrix reader does not work with complex scalars. Skip all tests then. return; #endif -#ifdef HAVE_XPETRA_TPETRA typedef Tpetra::BlockCrsMatrix BCM; typedef Tpetra::CrsGraph graph_type; typedef Tpetra::Map map_type; @@ -463,29 +233,17 @@ TEUCHOS_UNIT_TEST_TEMPLATE_6_DECL(MatrixMatrix, BlockCrs, M, MB, Scalar, LO, GO, TEUCHOS_TEST_EQUALITY(helpers::isTpetraBlockCrs(mat), true, out, success); TEUCHOS_TEST_EQUALITY(helpers::isTpetraCrs(mat), false, out, success); -#endif } // // INSTANTIATIONS // -#ifdef HAVE_XPETRA_TPETRA #define XPETRA_TPETRA_TYPES(S, LO, GO, N) \ typedef typename Xpetra::TpetraMap M##LO##GO##N; \ typedef typename Xpetra::TpetraCrsMatrix MA##S##LO##GO##N; \ typedef typename Xpetra::TpetraBlockCrsMatrix MB##S##LO##GO##N; -#endif - -#ifdef HAVE_XPETRA_EPETRA - -#define XPETRA_EPETRA_TYPES(S, LO, GO, N) \ - typedef typename Xpetra::EpetraMapT M##LO##GO##N; \ - typedef typename Xpetra::EpetraCrsMatrixT MA##S##LO##GO##N; - -#endif - // List of tests which run only with Tpetra #define XP_TPETRA_MATRIX_INSTANT(S, LO, GO, N) \ TEUCHOS_UNIT_TEST_TEMPLATE_6_INSTANT(MatrixMatrix, Multiply_Tpetra, M##LO##GO##N, MA##S##LO##GO##N, S, LO, GO, N) \ @@ -499,8 +257,6 @@ TEUCHOS_UNIT_TEST_TEMPLATE_6_DECL(MatrixMatrix, BlockCrs, M, MB, Scalar, LO, GO, #define XP_EPETRA64_MATRIX_INSTANT(S, LO, GO, N) \ TEUCHOS_UNIT_TEST_TEMPLATE_6_INSTANT(MatrixMatrix, Multiply_Epetra64, M##LO##GO##N, MA##S##LO##GO##N, S, LO, GO, N) -#if defined(HAVE_XPETRA_TPETRA) - #include #include @@ -508,22 +264,4 @@ TPETRA_ETI_MANGLING_TYPEDEFS() TPETRA_INSTANTIATE_SLGN_NO_ORDINAL_SCALAR(XPETRA_TPETRA_TYPES) TPETRA_INSTANTIATE_SLGN_NO_ORDINAL_SCALAR(XP_TPETRA_MATRIX_INSTANT) -#endif - -#if defined(HAVE_XPETRA_EPETRA) - -#include "Xpetra_Map.hpp" // defines EpetraNode -typedef Xpetra::EpetraNode EpetraNode; -#ifndef XPETRA_EPETRA_NO_32BIT_GLOBAL_INDICES -XPETRA_EPETRA_TYPES(double, int, int, EpetraNode) -XP_EPETRA_MATRIX_INSTANT(double, int, int, EpetraNode) -#endif -#ifndef XPETRA_EPETRA_NO_64BIT_GLOBAL_INDICES -typedef long long LongLong; -XPETRA_EPETRA_TYPES(double, int, LongLong, EpetraNode) -XP_EPETRA64_MATRIX_INSTANT(double, int, LongLong, EpetraNode) -#endif - -#endif - } // end namespace diff --git a/packages/xpetra/test/MatrixUtils/MatrixUtils_UnitTests.cpp b/packages/xpetra/test/MatrixUtils/MatrixUtils_UnitTests.cpp index 851a609a260e..b7bbe4165b4d 100644 --- a/packages/xpetra/test/MatrixUtils/MatrixUtils_UnitTests.cpp +++ b/packages/xpetra/test/MatrixUtils/MatrixUtils_UnitTests.cpp @@ -17,12 +17,7 @@ #include "Xpetra_MapFactory.hpp" #include "Xpetra_MatrixUtils.hpp" -#ifdef HAVE_XPETRA_TPETRA #include "Xpetra_TpetraCrsMatrix.hpp" -#endif -#ifdef HAVE_XPETRA_EPETRA -#include "Xpetra_EpetraCrsMatrix.hpp" -#endif namespace { using Xpetra::viewLabel_t; @@ -111,28 +106,15 @@ TEUCHOS_UNIT_TEST_TEMPLATE_6_DECL(MatrixUtils, SwitchMatrixToStridedMaps, M, MA, // // INSTANTIATIONS // -#ifdef HAVE_XPETRA_TPETRA #define XPETRA_TPETRA_TYPES(S, LO, GO, N) \ typedef typename Xpetra::TpetraMap M##LO##GO##N; \ typedef typename Xpetra::TpetraCrsMatrix MA##S##LO##GO##N; -#endif - -#ifdef HAVE_XPETRA_EPETRA - -#define XPETRA_EPETRA_TYPES(S, LO, GO, N) \ - typedef typename Xpetra::EpetraMapT M##LO##GO##N; \ - typedef typename Xpetra::EpetraCrsMatrixT MA##S##LO##GO##N; - -#endif - // list of all tests which run both with Epetra and Tpetra #define XP_MATRIX_INSTANT(S, LO, GO, N) \ TEUCHOS_UNIT_TEST_TEMPLATE_6_INSTANT(MatrixUtils, SwitchMatrixToStridedMaps, M##LO##GO##N, MA##S##LO##GO##N, S, LO, GO, N) -#if defined(HAVE_XPETRA_TPETRA) - #include #include @@ -140,22 +122,4 @@ TPETRA_ETI_MANGLING_TYPEDEFS() TPETRA_INSTANTIATE_SLGN_NO_ORDINAL_SCALAR(XPETRA_TPETRA_TYPES) TPETRA_INSTANTIATE_SLGN_NO_ORDINAL_SCALAR(XP_MATRIX_INSTANT) -#endif - -#if defined(HAVE_XPETRA_EPETRA) - -#include "Xpetra_Map.hpp" // defines EpetraNode -typedef Xpetra::EpetraNode EpetraNode; -#ifndef XPETRA_EPETRA_NO_32BIT_GLOBAL_INDICES -XPETRA_EPETRA_TYPES(double, int, int, EpetraNode) -XP_MATRIX_INSTANT(double, int, int, EpetraNode) -#endif -#ifndef XPETRA_EPETRA_NO_64BIT_GLOBAL_INDICES -typedef long long LongLong; -XPETRA_EPETRA_TYPES(double, int, LongLong, EpetraNode) -XP_MATRIX_INSTANT(double, int, LongLong, EpetraNode) -#endif - -#endif - } // namespace diff --git a/packages/xpetra/test/MultiVector/MultiVector_UnitTests.cpp b/packages/xpetra/test/MultiVector/MultiVector_UnitTests.cpp index fe414b164166..7736fd3f7a82 100644 --- a/packages/xpetra/test/MultiVector/MultiVector_UnitTests.cpp +++ b/packages/xpetra/test/MultiVector/MultiVector_UnitTests.cpp @@ -18,18 +18,11 @@ #include #include -#ifdef HAVE_XPETRA_TPETRA #include "Tpetra_Core.hpp" #include "Tpetra_Map.hpp" #include "Xpetra_TpetraMultiVector.hpp" #include "Xpetra_TpetraVector.hpp" #include "Tpetra_Details_Behavior.hpp" -#endif -#ifdef HAVE_XPETRA_EPETRA -#include "Xpetra_EpetraMap.hpp" -#include "Xpetra_EpetraMultiVector.hpp" -#include "Xpetra_EpetraVector.hpp" -#endif // HAVE_XPETRA_EPETRA #include "Xpetra_MapFactory.hpp" #include "Xpetra_MultiVectorFactory.hpp" // taw: include MultiVectorFactory before VectorFactory (for BlockedMultiVector definition) @@ -97,10 +90,8 @@ using Xpetra::GloballyDistributed; // using Tpetra::createContigMapWithNode; // using Tpetra::createLocalMapWithNode; -#ifdef HAVE_XPETRA_TPETRA using Xpetra::useTpetra::createContigMapWithNode; using Xpetra::useTpetra::createLocalMapWithNode; -#endif bool testMpi = true; double errorTolSlack = 1.0e+2; @@ -419,28 +410,6 @@ TEUCHOS_UNIT_TEST_TEMPLATE_7_DECL(MultiVector, AssignmentDeepCopies, M, MV, V, S //// TEUCHOS_UNIT_TEST_TEMPLATE_7_DECL(MultiVector, NonMemberConstructorsEpetra, M, MV, V, Scalar, LocalOrdinal, GlobalOrdinal, Node) { -#ifdef HAVE_XPETRA_EPETRA - // typedef typename ScalarTraits::magnitudeType Magnitude; - const global_size_t INVALID = OrdinalTraits::invalid(); - RCP > comm = getDefaultComm(); - EXTRACT_LIB(comm, M) // returns mylib - - // create a Map - const size_t numLocal = 13; - const size_t numVecs = 7; - RCP > map = - Xpetra::UnitTestHelpers::createContigMapWithNode(mylib, INVALID, numLocal, comm); - // Xpetra::MapFactory::Build(Xpetra::UseEpetra, INVALID, numLocal, 0, comm); - if (mylib == Xpetra::UseEpetra) { - RCP > emap = Teuchos::rcp_dynamic_cast >(map); - RCP mvec = Teuchos::rcp(new Epetra_MultiVector(emap->getEpetra_Map(), numVecs)); - RCP vec = Teuchos::rcp(new Epetra_Vector(emap->getEpetra_Map())); - RCP xmv = Teuchos::rcp_dynamic_cast(Xpetra::toXpetra(mvec)); - // RCP xv = Teuchos::rcp_dynamic_cast(Xpetra::toXpetra(vec)); // there is no toXpetra for Vectors! - TEST_EQUALITY(xmv->getNumVectors(), numVecs); - // TEST_EQUALITY_CONST(xv->getNumVectors(), 1); - } -#endif } //// @@ -456,7 +425,6 @@ TEUCHOS_UNIT_TEST_TEMPLATE_7_DECL(MultiVector, NonMemberConstructorsTpetra, M, M RCP > map = Xpetra::UnitTestHelpers::createContigMapWithNode(mylib, INVALID, numLocal, comm); -#ifdef HAVE_XPETRA_TPETRA if (mylib == Xpetra::UseTpetra) { RCP > tmap = Teuchos::rcp_dynamic_cast >(map); RCP > mvec = Tpetra::createMultiVector(tmap->getTpetra_Map(), numVecs); @@ -468,7 +436,6 @@ TEUCHOS_UNIT_TEST_TEMPLATE_7_DECL(MultiVector, NonMemberConstructorsTpetra, M, M TEST_EQUALITY(xmv->getNumVectors(), numVecs); TEST_EQUALITY_CONST(xv->getNumVectors(), 1); } -#endif } //// @@ -490,9 +457,6 @@ TEUCHOS_UNIT_TEST_TEMPLATE_7_DECL(MultiVector, basic, M, MV, V, Scalar, LocalOrd TEST_EQUALITY(mvec.getGlobalLength(), numRanks * numLocal); // Norms are not computed by Epetra_IntMultiVector so far -#ifdef HAVE_XPETRA_EPETRA - if (!std::is_same_v) -#endif { if (!(std::is_same_v || std::is_same_v)) { out << "Running the norm tests!" << std::endl; @@ -553,7 +517,6 @@ TEUCHOS_UNIT_TEST_TEMPLATE_7_DECL(MultiVector, BadConstNumVecs, M, MV, V, Scalar //// TEUCHOS_UNIT_TEST_TEMPLATE_7_DECL(MultiVector, BadConstLDA, M, MV, V, Scalar, LocalOrdinal, GlobalOrdinal, Node) { -#ifdef HAVE_XPETRA_TPETRA // numlocal > LDA // ergo, the arrayview doesn't contain enough data to specify the entries // also, if bounds checking is enabled, check that bad bounds are caught @@ -579,12 +542,10 @@ TEUCHOS_UNIT_TEST_TEMPLATE_7_DECL(MultiVector, BadConstLDA, M, MV, V, Scalar, Lo #endif // LDA < numLocal throws an exception anytime TEST_THROW(MV mvec(map, values(0, 4), 1, numVecs), std::runtime_error); -#endif } //// TEUCHOS_UNIT_TEST_TEMPLATE_7_DECL(MultiVector, NonContigView, M, MV, V, Scalar, LocalOrdinal, GlobalOrdinal, Node) { -#ifdef HAVE_XPETRA_TPETRA if (ScalarTraits::isOrdinal) return; typedef typename ScalarTraits::magnitudeType Mag; @@ -775,12 +736,10 @@ TEUCHOS_UNIT_TEST_TEMPLATE_7_DECL(MultiVector, NonContigView, M, MV, V, Scalar, TEST_FLOATING_EQUALITY(nrmOrigC[exView2[j]], nrmOrigC_aft[exView2[j]], tol); } } -#endif } //// TEUCHOS_UNIT_TEST_TEMPLATE_7_DECL(MultiVector, Describable, M, MV, V, Scalar, LocalOrdinal, GlobalOrdinal, Node) { -#ifdef HAVE_XPETRA_TPETRA const LocalOrdinal INVALID = OrdinalTraits::invalid(); RCP > comm = getDefaultComm(); const int myImageID = comm->getRank(); @@ -829,12 +788,10 @@ TEUCHOS_UNIT_TEST_TEMPLATE_7_DECL(MultiVector, Describable, M, MV, V, Scalar, Lo mvecA.describe(out, VERB_EXTREME); comm->barrier(); comm->barrier(); -#endif } //// TEUCHOS_UNIT_TEST_TEMPLATE_6_DECL(MultiVector, BadMultiply, MV, V, Scalar, LocalOrdinal, GlobalOrdinal, Node) { -#ifdef HAVE_XPETRA_TPETRA const global_size_t INVALID = OrdinalTraits::invalid(); RCP > comm = getDefaultComm(); #ifdef XPETRA_NOT_IMPLEMENTED @@ -904,12 +861,10 @@ TEUCHOS_UNIT_TEST_TEMPLATE_6_DECL(MultiVector, BadMultiply, MV, V, Scalar, Local TEST_THROW(mv3nx2.multiply(NO_TRANS, NO_TRANS, S1, mv3nx2, mv2x3, S0), std::runtime_error); // (3n x 2) x (2 x 3) doesn't fit 3nx2 #endif } -#endif } //// TEUCHOS_UNIT_TEST_TEMPLATE_6_DECL(MultiVector, Multiply, MV, V, Scalar, LocalOrdinal, GlobalOrdinal, Node) { -#ifdef HAVE_XPETRA_TPETRA using Teuchos::View; // typedef typename ScalarTraits::magnitudeType Mag; @@ -1065,12 +1020,10 @@ TEUCHOS_UNIT_TEST_TEMPLATE_6_DECL(MultiVector, Multiply, MV, V, Scalar, LocalOrd TEST_COMPARE_FLOATING_ARRAYS(tmpView, check3, M0); } #endif -#endif // HAVE_XPETRA_TPETRA } //// TEUCHOS_UNIT_TEST_TEMPLATE_7_DECL(MultiVector, ElementWiseMultiply, M, MV, V, Scalar, LocalOrdinal, GlobalOrdinal, Node) { -#ifdef HAVE_XPETRA_TPETRA using Teuchos::View; typedef typename ScalarTraits::magnitudeType Mag; @@ -1101,7 +1054,6 @@ TEUCHOS_UNIT_TEST_TEMPLATE_7_DECL(MultiVector, ElementWiseMultiply, M, MV, V, Sc tmpView = C.get1dView(); TEST_COMPARE_FLOATING_ARRAYS(tmpView(0, 6), check2, M0); } -#endif // HAVE_XPETRA_TPETRA } //// @@ -1153,7 +1105,6 @@ TEUCHOS_UNIT_TEST_TEMPLATE_7_DECL(MultiVector, BadConstAA, M, MV, V, Scalar, Loc mv21(map2,1), mv22(map2,2); Array dots(2); -#ifdef HAVE_XPETRA_TPETRA if(mylib==Xpetra::UseTpetra) { // incompatible maps TEST_THROW(mv12.dot(mv21,dots()),std::runtime_error); @@ -1164,12 +1115,10 @@ TEUCHOS_UNIT_TEST_TEMPLATE_7_DECL(MultiVector, BadConstAA, M, MV, V, Scalar, Loc TEST_THROW(mv22.dot(mv22,dots(0,1)),std::runtime_error); #endif } -#endif } { V v1(map1), v2(map2); -#ifdef HAVE_XPETRA_TPETRA if (mylib == Xpetra::UseTpetra) { // incompatible maps TEST_THROW(v1.dot(v2),std::runtime_error); @@ -1179,7 +1128,6 @@ TEUCHOS_UNIT_TEST_TEMPLATE_7_DECL(MultiVector, BadConstAA, M, MV, V, Scalar, Loc #ifdef TEUCHOS_DEBUG TEST_THROW(v1.dot(v2,dots()),std::runtime_error); TEST_THROW(v2.dot(v1,dots()),std::runtime_error); -#endif #endif } } @@ -1188,7 +1136,6 @@ TEUCHOS_UNIT_TEST_TEMPLATE_7_DECL(MultiVector, BadConstAA, M, MV, V, Scalar, Loc //// TEUCHOS_UNIT_TEST_TEMPLATE_6_DECL(MultiVector, OrthoDot, MV, V, Scalar, LocalOrdinal, GlobalOrdinal, Node) { -#ifdef HAVE_XPETRA_TPETRA typedef typename ScalarTraits::magnitudeType Mag; const global_size_t INVALID = OrdinalTraits::invalid(); @@ -1254,12 +1201,10 @@ TEUCHOS_UNIT_TEST_TEMPLATE_6_DECL(MultiVector, OrthoDot, MV, V, Scalar, LocalOrd std::fill(ans.begin(), ans.end(), as(2 * numImages)); TEST_COMPARE_FLOATING_ARRAYS(norms1, ans, M0); TEST_COMPARE_FLOATING_ARRAYS(norms2, ans, M0); -#endif } //// TEUCHOS_UNIT_TEST_TEMPLATE_6_DECL(MultiVector, CopyView, MV, V, Scalar, LocalOrdinal, GlobalOrdinal, Node) { -#ifdef HAVE_XPETRA_TPETRA typedef typename ScalarTraits::magnitudeType Mag; const global_size_t INVALID = OrdinalTraits::invalid(); @@ -1477,12 +1422,10 @@ TEUCHOS_UNIT_TEST_TEMPLATE_6_DECL(MultiVector, CopyView, MV, V, Scalar, LocalOrd TEST_COMPARE_FLOATING_ARRAYS(norms, zeros, M0); } } -#endif } //// TEUCHOS_UNIT_TEST_TEMPLATE_6_DECL(MultiVector, OffsetView, MV, V, Scalar, LocalOrdinal, GlobalOrdinal, Node) { -#ifdef HAVE_XPETRA_TPETRA // typedef typename ScalarTraits::magnitudeType Mag; const global_size_t INVALID = OrdinalTraits::invalid(); @@ -1637,12 +1580,10 @@ TEUCHOS_UNIT_TEST_TEMPLATE_6_DECL(MultiVector, OffsetView, MV, V, Scalar, LocalO } } #endif -#endif } //// TEUCHOS_UNIT_TEST_TEMPLATE_6_DECL(MultiVector, ZeroScaleUpdate, MV, V, Scalar, LocalOrdinal, GlobalOrdinal, Node) { -#ifdef HAVE_XPETRA_TPETRA typedef typename ScalarTraits::magnitudeType Mag; const global_size_t INVALID = OrdinalTraits::invalid(); @@ -1720,14 +1661,12 @@ TEUCHOS_UNIT_TEST_TEMPLATE_6_DECL(MultiVector, ZeroScaleUpdate, MV, V, Scalar, L C.norm2(norms); //TODO:FAILED TEST_COMPARE_FLOATING_ARRAYS(norms,zeros,M0); }*/ -#endif // HAVE_XPETRA_TPETRA } //// #if 0 // TAW fix me TEUCHOS_UNIT_TEST_TEMPLATE_6_DECL( MultiVector, ScaleAndAssign, MV, V, Scalar, LocalOrdinal, GlobalOrdinal, Node ) { -#ifdef HAVE_XPETRA_TPETRA using std::endl; typedef Teuchos::ScalarTraits STS; typedef typename STS::magnitudeType Mag; @@ -1908,13 +1847,11 @@ TEUCHOS_UNIT_TEST_TEMPLATE_6_DECL(MultiVector, ZeroScaleUpdate, MV, V, Scalar, L A.norm2 (Anrms_aft ()); TEST_COMPARE_FLOATING_ARRAYS( Anrms (), Anrms_aft (), tol); } -#endif // HAVE_XPETRA_TPETRA } #endif // fix me! //// TEUCHOS_UNIT_TEST_TEMPLATE_6_DECL(Vector, ZeroScaleUpdate, MV, V, Scalar, LocalOrdinal, GlobalOrdinal, Node) { -#ifdef HAVE_XPETRA_TPETRA typedef typename ScalarTraits::magnitudeType Mag; const global_size_t INVALID = OrdinalTraits::invalid(); const Mag M0 = ScalarTraits::zero(); @@ -1994,12 +1931,10 @@ TEUCHOS_UNIT_TEST_TEMPLATE_6_DECL(Vector, ZeroScaleUpdate, MV, V, Scalar, LocalO // TODO FAILED: TEST_EQUALITY(norm,M0); // TODO FAILED: TEST_EQUALITY(norm,norms[0]); } -#endif // HAVE_XPETRA_TPETRA } //// TEUCHOS_UNIT_TEST_TEMPLATE_6_DECL(MultiVector, CopyConst, MV, V, Scalar, LocalOrdinal, GlobalOrdinal, Node) { -#ifdef HAVE_XPETRA_TPETRA typedef typename ScalarTraits::magnitudeType Mag; const global_size_t INVALID = OrdinalTraits::invalid(); @@ -2066,12 +2001,10 @@ TEUCHOS_UNIT_TEST_TEMPLATE_6_DECL(MultiVector, CopyConst, MV, V, Scalar, LocalOr // TEST_COMPARE_FLOATING_ARRAYS(ncopy1,ones,M0); // TEST_COMPARE_FLOATING_ARRAYS(ncopy2,twos,M0); } -#endif // HAVE_XPETRA_TPETRA } //// TEUCHOS_UNIT_TEST_TEMPLATE_6_DECL(Vector, CopyConst, MV, V, Scalar, LocalOrdinal, GlobalOrdinal, Node) { -#ifdef HAVE_XPETRA_TPETRA typedef typename ScalarTraits::magnitudeType Magnitude; const global_size_t INVALID = OrdinalTraits::invalid(); RCP > comm = getDefaultComm(); @@ -2102,12 +2035,10 @@ TEUCHOS_UNIT_TEST_TEMPLATE_6_DECL(Vector, CopyConst, MV, V, Scalar, LocalOrdinal // TODO FAILED: TEST_EQUALITY(norig, as(0)); // TODO FAILED: TEST_EQUALITY(ncopy1,as(1)); // TODO FAILED: TEST_EQUALITY(ncopy2,as(2)); -#endif } //// TEUCHOS_UNIT_TEST_TEMPLATE_6_DECL(Vector, Indexing, MV, V, Scalar, LocalOrdinal, GlobalOrdinal, Node) { -#ifdef HAVE_XPETRA_TPETRA typedef ScalarTraits SCT; typedef typename SCT::magnitudeType Magnitude; const global_size_t INVALID = OrdinalTraits::invalid(); @@ -2135,12 +2066,10 @@ TEUCHOS_UNIT_TEST_TEMPLATE_6_DECL(Vector, Indexing, MV, V, Scalar, LocalOrdinal, v1.update(-1.0, v2, 1.0); err = v1.norm2(); TEST_EQUALITY_CONST(err, SCT::zero()); -#endif } //// TEUCHOS_UNIT_TEST_TEMPLATE_6_DECL(MultiVector, SingleVecNormalize, MV, V, Scalar, LocalOrdinal, GlobalOrdinal, Node) { -#ifdef HAVE_XPETRA_TPETRA // this documents a usage case in Anasazi::SVQBOrthoManager, which was failing // error turned out to be a neglected return in both implementations of update(), // after passing the buck to scale() in the case of alpha==0 or beta==0 or gamma=0 @@ -2190,12 +2119,10 @@ TEUCHOS_UNIT_TEST_TEMPLATE_6_DECL(MultiVector, SingleVecNormalize, MV, V, Scalar mv.norm2(norms()); // should be all one now Array ones(numVectors, M1); // TODO FAILED: TEST_COMPARE_FLOATING_ARRAYS(norms,ones,ScalarTraits::eps()*as(10.)); -#endif } //// TEUCHOS_UNIT_TEST_TEMPLATE_6_DECL(MultiVector, CountDot, MV, V, Scalar, LocalOrdinal, GlobalOrdinal, Node) { -#ifdef HAVE_XPETRA_TPETRA typedef typename ScalarTraits::magnitudeType Magnitude; const global_size_t INVALID = OrdinalTraits::invalid(); @@ -2229,12 +2156,10 @@ TEUCHOS_UNIT_TEST_TEMPLATE_6_DECL(MultiVector, CountDot, MV, V, Scalar, LocalOrd // check the answers TEST_COMPARE_FLOATING_ARRAYS(dots1, dots2, M0); TEST_COMPARE_FLOATING_ARRAYS(dots1, answer, M0); -#endif } //// TEUCHOS_UNIT_TEST_TEMPLATE_6_DECL(MultiVector, CountDotNonTrivLDA, MV, V, Scalar, LocalOrdinal, GlobalOrdinal, Node) { -#ifdef HAVE_XPETRA_TPETRA // same as CountDot, but the A,LDA has a non-trivial LDA (i.e., LDA != myLen) typedef typename ScalarTraits::magnitudeType Magnitude; @@ -2277,12 +2202,10 @@ TEUCHOS_UNIT_TEST_TEMPLATE_6_DECL(MultiVector, CountDotNonTrivLDA, MV, V, Scalar // check the answers TEST_COMPARE_FLOATING_ARRAYS(dots1, dots2, M0); TEST_COMPARE_FLOATING_ARRAYS(dots1, answer, M0); -#endif // HAVE_XPETRA_TPETRA } //// TEUCHOS_UNIT_TEST_TEMPLATE_6_DECL(MultiVector, CountNorm1, MV, V, Scalar, LocalOrdinal, GlobalOrdinal, Node) { -#ifdef HAVE_XPETRA_TPETRA typedef typename ScalarTraits::magnitudeType MT; const global_size_t INVALID = OrdinalTraits::invalid(); @@ -2327,12 +2250,10 @@ TEUCHOS_UNIT_TEST_TEMPLATE_6_DECL(MultiVector, CountNorm1, MV, V, Scalar, LocalO // TODO FAILED: TEST_EQUALITY( mvec.getVector(j)->meanValue(), answer[j] ); } } -#endif } //// TEUCHOS_UNIT_TEST_TEMPLATE_6_DECL(MultiVector, CountNormInf, MV, V, Scalar, LocalOrdinal, GlobalOrdinal, Node) { -#ifdef HAVE_XPETRA_TPETRA typedef typename ScalarTraits::magnitudeType MT; const global_size_t INVALID = OrdinalTraits::invalid(); @@ -2362,12 +2283,10 @@ TEUCHOS_UNIT_TEST_TEMPLATE_6_DECL(MultiVector, CountNormInf, MV, V, Scalar, Loca mvec.normInf(norms()); // check the answers TEST_COMPARE_FLOATING_ARRAYS(norms, answer, M0); -#endif } //// TEUCHOS_UNIT_TEST_TEMPLATE_6_DECL(MultiVector, Norm2, MV, V, Scalar, LocalOrdinal, GlobalOrdinal, Node) { -#ifdef HAVE_XPETRA_TPETRA typedef typename ScalarTraits::magnitudeType MT; const global_size_t INVALID = OrdinalTraits::invalid(); const MT M0 = ScalarTraits::zero(); @@ -2393,12 +2312,10 @@ TEUCHOS_UNIT_TEST_TEMPLATE_6_DECL(MultiVector, Norm2, MV, V, Scalar, LocalOrdina TEST_ARRAY_ELE_EQUALITY(normsZero, i, M0); } success &= local_success; -#endif } //// TODO this code should be generalized TEUCHOS_UNIT_TEST_TEMPLATE_6_DECL(MultiVector, BadCombinations, MV, V, Scalar, LocalOrdinal, GlobalOrdinal, Node) { -#ifdef HAVE_XPETRA_TPETRA typedef typename ScalarTraits::magnitudeType Mag; const global_size_t INVALID = OrdinalTraits::invalid(); RCP > comm = getDefaultComm(); @@ -2444,49 +2361,13 @@ TEUCHOS_UNIT_TEST_TEMPLATE_6_DECL(MultiVector, BadCombinations, MV, V, Scalar, L TEST_THROW(m1n2.reciprocal(m1n1), std::runtime_error); // reciprocal TEST_THROW(m1n2.reciprocal(m2n2), std::runtime_error); } -#endif } TEUCHOS_UNIT_TEST_TEMPLATE_7_DECL(MultiVector, Constructor_Epetra, M, MV, V, Scalar, LocalOrdinal, GlobalOrdinal, Node) { -#ifdef HAVE_XPETRA_EPETRA - RCP > comm = getDefaultComm(); - - { - TEST_NOTHROW(M(10, 0, comm)); - TEST_NOTHROW(MV(Teuchos::rcp(new M(10, 0, comm)), 3)); - } - -#if defined(HAVE_XPETRA_TPETRA) && defined(HAVE_TPETRA_INST_PTHREAD) - { - typedef Xpetra::EpetraMapT mm; - TEST_THROW(mm(10, 0, comm), Xpetra::Exceptions::RuntimeError); - typedef Xpetra::EpetraMultiVectorT mx; - TEST_THROW(mx(Teuchos::null, 3), Xpetra::Exceptions::RuntimeError); - } -#endif -#if defined(HAVE_XPETRA_TPETRA) && defined(HAVE_TPETRA_INST_CUDA) - { - typedef Xpetra::EpetraMapT mm; - TEST_THROW(mm(10, 0, comm), Xpetra::Exceptions::RuntimeError); - typedef Xpetra::EpetraMultiVectorT mx; - TEST_THROW(mx(Teuchos::null, 3), Xpetra::Exceptions::RuntimeError); - } -#endif -#if defined(HAVE_XPETRA_TPETRA) && defined(HAVE_TPETRA_INST_HIP) - { - typedef Xpetra::EpetraMapT mm; - TEST_THROW(mm(10, 0, comm), Xpetra::Exceptions::RuntimeError); - typedef Xpetra::EpetraMultiVectorT mx; - TEST_THROW(mx(Teuchos::null, 3), Xpetra::Exceptions::RuntimeError); - } -#endif - -#endif } //// TEUCHOS_UNIT_TEST_TEMPLATE_7_DECL(MultiVector, Typedefs, M, MV, V, Scalar, LocalOrdinal, GlobalOrdinal, Node) { -#ifdef HAVE_XPETRA_TPETRA typedef typename MV::scalar_type scalar_type; typedef typename MV::local_ordinal_type local_ordinal_type; typedef typename MV::global_ordinal_type global_ordinal_type; @@ -2495,34 +2376,17 @@ TEUCHOS_UNIT_TEST_TEMPLATE_7_DECL(MultiVector, Typedefs, M, MV, V, Scalar, Local TEST_EQUALITY_CONST((std::is_same_v) == true, true); TEST_EQUALITY_CONST((std::is_same_v) == true, true); TEST_EQUALITY_CONST((std::is_same_v) == true, true); -#endif } // // INSTANTIATIONS // -#ifdef HAVE_XPETRA_TPETRA #define XPETRA_TPETRA_TYPES(S, LO, GO, N) \ typedef typename Xpetra::TpetraMap M##LO##GO##N; \ typedef typename Xpetra::TpetraMultiVector MV##S##LO##GO##N; \ typedef typename Xpetra::TpetraVector V##S##LO##GO##N; -#endif - -#ifdef HAVE_XPETRA_EPETRA - -#define XPETRA_EPETRA_NO_ORDINAL_SCALAR_TYPES(S, LO, GO, N) \ - typedef typename Xpetra::EpetraMapT M##LO##GO##N; \ - typedef typename Xpetra::EpetraMultiVectorT MV##S##LO##GO##N; \ - typedef typename Xpetra::EpetraVectorT V##S##LO##GO##N; - -#define XPETRA_EPETRA_ORDINAL_SCALAR_TYPES(S, LO, GO, N) \ - typedef typename Xpetra::EpetraIntMultiVectorT MV##S##LO##GO##N; \ - typedef typename Xpetra::EpetraIntVectorT V##S##LO##GO##N; - -#endif - // List of tests which run only with Tpetra #define XP_TPETRA_MULTIVECTOR_INSTANT(S, LO, GO, N) \ TEUCHOS_UNIT_TEST_TEMPLATE_7_INSTANT(MultiVector, BadConstLDA, M##LO##GO##N, MV##S##LO##GO##N, V##S##LO##GO##N, S, LO, GO, N) \ @@ -2566,7 +2430,6 @@ TEUCHOS_UNIT_TEST_TEMPLATE_7_DECL(MultiVector, Typedefs, M, MV, V, Scalar, Local TEUCHOS_UNIT_TEST_TEMPLATE_7_INSTANT(MultiVector, Typedefs, M##LO##GO##N, MV##S##LO##GO##N, V##S##LO##GO##N, S, LO, GO, N) // can we relax the INT INT? -#if defined(HAVE_XPETRA_TPETRA) #include #include @@ -2579,27 +2442,4 @@ TPETRA_INSTANTIATE_SLGN(XP_MULTIVECTOR_INSTANT) TPETRA_INSTANTIATE_SLGN_NO_ORDINAL_SCALAR(XP_MULTIVECTOR_NO_ORDINAL_INSTANT) TPETRA_INSTANTIATE_SLGN_NO_ORDINAL_SCALAR(XP_TPETRA_MULTIVECTOR_INSTANT) -#endif - -#if defined(HAVE_XPETRA_EPETRA) - -#include "Xpetra_Map.hpp" // defines EpetraNode -typedef Xpetra::EpetraNode EpetraNode; -#ifndef XPETRA_EPETRA_NO_32BIT_GLOBAL_INDICES -XPETRA_EPETRA_NO_ORDINAL_SCALAR_TYPES(double, int, int, EpetraNode) -XPETRA_EPETRA_ORDINAL_SCALAR_TYPES(int, int, int, EpetraNode) -XP_MULTIVECTOR_NO_ORDINAL_INSTANT(double, int, int, EpetraNode) -XP_MULTIVECTOR_INSTANT(int, int, int, EpetraNode) -XP_EPETRA_MULTIVECTOR_INSTANT(double, int, int, EpetraNode) -#endif -#ifndef XPETRA_EPETRA_NO_64BIT_GLOBAL_INDICES -typedef long long LongLong; -XPETRA_EPETRA_NO_ORDINAL_SCALAR_TYPES(double, int, LongLong, EpetraNode) -XPETRA_EPETRA_ORDINAL_SCALAR_TYPES(int, int, LongLong, EpetraNode) -XP_MULTIVECTOR_INSTANT(int, int, LongLong, EpetraNode) -XP_MULTIVECTOR_NO_ORDINAL_INSTANT(double, int, LongLong, EpetraNode) -XP_EPETRA_MULTIVECTOR_INSTANT(double, int, LongLong, EpetraNode) -#endif -#endif - } // namespace diff --git a/packages/xpetra/test/MultiVector/MultiVector_UnitTestsThyraSpecific.cpp b/packages/xpetra/test/MultiVector/MultiVector_UnitTestsThyraSpecific.cpp index 9bc328da9ae5..2aa75b1c6619 100644 --- a/packages/xpetra/test/MultiVector/MultiVector_UnitTestsThyraSpecific.cpp +++ b/packages/xpetra/test/MultiVector/MultiVector_UnitTestsThyraSpecific.cpp @@ -24,15 +24,8 @@ #include "Xpetra_ThyraUtils.hpp" -#ifdef HAVE_XPETRA_TPETRA #include "Xpetra_TpetraMultiVector.hpp" #include "Xpetra_TpetraVector.hpp" -#endif - -#ifdef HAVE_XPETRA_EPETRA -#include "Xpetra_EpetraMultiVector.hpp" -#include "Xpetra_EpetraVector.hpp" -#endif #include "Thyra_DetachedMultiVectorView.hpp" #include "Thyra_DefaultProductVectorSpace.hpp" @@ -304,51 +297,22 @@ TEUCHOS_UNIT_TEST_TEMPLATE_7_DECL(MultiVector, CreateProductMV, M, MV, V, Scalar // // INSTANTIATIONS // -#ifdef HAVE_XPETRA_TPETRA #define XPETRA_TPETRA_TYPES(S, LO, GO, N) \ typedef typename Xpetra::TpetraMap M##LO##GO##N; \ typedef typename Xpetra::TpetraMultiVector MV##S##LO##GO##N; \ typedef typename Xpetra::TpetraVector V##S##LO##GO##N; -#endif - -#ifdef HAVE_XPETRA_EPETRA - -#define XPETRA_EPETRA_TYPES(S, LO, GO, N) \ - typedef typename Xpetra::EpetraMapT M##LO##GO##N; \ - typedef typename Xpetra::EpetraMultiVectorT MV##S##LO##GO##N; \ - typedef typename Xpetra::EpetraVectorT V##S##LO##GO##N; - -#endif - // list of all tests which run both with Epetra and Tpetra #define XP_THYRAMULTIVECTOR_INSTANT(S, LO, GO, N) \ TEUCHOS_UNIT_TEST_TEMPLATE_7_INSTANT(Map, Create, M##LO##GO##N, MV##S##LO##GO##N, V##S##LO##GO##N, S, LO, GO, N) \ TEUCHOS_UNIT_TEST_TEMPLATE_7_INSTANT(MultiVector, Create, M##LO##GO##N, MV##S##LO##GO##N, V##S##LO##GO##N, S, LO, GO, N) \ TEUCHOS_UNIT_TEST_TEMPLATE_7_INSTANT(MultiVector, CreateProductMV, M##LO##GO##N, MV##S##LO##GO##N, V##S##LO##GO##N, S, LO, GO, N) -#if defined(HAVE_XPETRA_TPETRA) #include #include TPETRA_ETI_MANGLING_TYPEDEFS() TPETRA_INSTANTIATE_SLGN_NO_ORDINAL_SCALAR(XPETRA_TPETRA_TYPES) TPETRA_INSTANTIATE_SLGN_NO_ORDINAL_SCALAR(XP_THYRAMULTIVECTOR_INSTANT) -#endif - -#ifdef HAVE_XPETRA_EPETRA -typedef Xpetra::EpetraNode EpetraNode; - -#ifndef XPETRA_EPETRA_NO_32BIT_GLOBAL_INDICES -XPETRA_EPETRA_TYPES(double, int, int, EpetraNode) -XP_THYRAMULTIVECTOR_INSTANT(double, int, int, EpetraNode) -#endif - -#ifndef XPETRA_EPETRA_NO_64BIT_GLOBAL_INDICES -// Thyra has support for Epetra only but not for Epetra64 -// EEE(double,int,LongLong,Xpetra::EpetraNode) -// XP_THYRAMULTIVECTOR_INSTANT(double,int,LongLong,Xpetra::EpetraNode) -#endif -#endif // HAVE_TPETRA_SERIAL } // namespace diff --git a/packages/xpetra/test/MultiVector/MultiVector_UnitTestsXpetraSpecific.cpp b/packages/xpetra/test/MultiVector/MultiVector_UnitTestsXpetraSpecific.cpp index fa783ec7ce55..d30df9c2a250 100644 --- a/packages/xpetra/test/MultiVector/MultiVector_UnitTestsXpetraSpecific.cpp +++ b/packages/xpetra/test/MultiVector/MultiVector_UnitTestsXpetraSpecific.cpp @@ -21,15 +21,8 @@ #include "Xpetra_MultiVectorFactory.hpp" #include "Xpetra_MapExtractor.hpp" -#ifdef HAVE_XPETRA_TPETRA #include "Xpetra_TpetraMultiVector.hpp" #include "Xpetra_TpetraVector.hpp" -#endif - -#ifdef HAVE_XPETRA_EPETRA -#include "Xpetra_EpetraMultiVector.hpp" -#include "Xpetra_EpetraVector.hpp" -#endif namespace { @@ -160,31 +153,17 @@ TEUCHOS_UNIT_TEST_TEMPLATE_7_DECL(MultiVector, XpetraSpecific_GetHostLocalView, // // INSTANTIATIONS // -#ifdef HAVE_XPETRA_TPETRA #define XPETRA_TPETRA_TYPES(S, LO, GO, N) \ typedef typename Xpetra::TpetraMap M##LO##GO##N; \ typedef typename Xpetra::TpetraMultiVector MV##S##LO##GO##N; \ typedef typename Xpetra::TpetraVector V##S##LO##GO##N; -#endif - -#ifdef HAVE_XPETRA_EPETRA - -#define XPETRA_EPETRA_TYPES(S, LO, GO, N) \ - typedef typename Xpetra::EpetraMapT M##LO##GO##N; \ - typedef typename Xpetra::EpetraMultiVectorT MV##S##LO##GO##N; \ - typedef typename Xpetra::EpetraVectorT V##S##LO##GO##N; - -#endif - // List of tests which run only with Tpetra #define XP_MULTIVECTOR_INSTANT(S, LO, GO, N) \ TEUCHOS_UNIT_TEST_TEMPLATE_7_INSTANT(MultiVector, XpetraSpecific_GetHostLocalView, M##LO##GO##N, MV##S##LO##GO##N, V##S##LO##GO##N, S, LO, GO, N) \ TEUCHOS_UNIT_TEST_TEMPLATE_7_INSTANT(MultiVector, XpetraSpecific_GetVector, M##LO##GO##N, MV##S##LO##GO##N, V##S##LO##GO##N, S, LO, GO, N) -#if defined(HAVE_XPETRA_TPETRA) - #include #include @@ -193,21 +172,4 @@ TPETRA_ETI_MANGLING_TYPEDEFS() TPETRA_INSTANTIATE_SLGN_NO_ORDINAL_SCALAR(XPETRA_TPETRA_TYPES) TPETRA_INSTANTIATE_SLGN_NO_ORDINAL_SCALAR(XP_MULTIVECTOR_INSTANT) -#endif - -#if defined(HAVE_XPETRA_EPETRA) - -#include "Xpetra_Map.hpp" // defines EpetraNode -typedef Xpetra::EpetraNode EpetraNode; -#ifndef XPETRA_EPETRA_NO_32BIT_GLOBAL_INDICES -XPETRA_EPETRA_TYPES(double, int, int, EpetraNode) -XP_MULTIVECTOR_INSTANT(double, int, int, EpetraNode) -#endif -#ifndef XPETRA_EPETRA_NO_64BIT_GLOBAL_INDICES -typedef long long LongLong; -XPETRA_EPETRA_TYPES(double, int, LongLong, EpetraNode) -XP_MULTIVECTOR_INSTANT(double, int, LongLong, EpetraNode) -#endif -#endif - } // namespace

            Cpyt)yiAQ`_8< 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 diff --git a/packages/muelu/doc/Tutorial/tex/pics/tut1_3.png b/packages/muelu/doc/Tutorial/tex/pics/tut1_3.png deleted file mode 100644 index ed231d51025b71dd42b2254fb184cad80684d672..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 68092 zcmdqIbzGBg|2I545S5S+0VSnNKpJ%d(%m854CzKiN(4l@yJNuUROuGjXc!%%Bt{SJ zgYR`+cmD4C_5A&uFO)IHcAiIkKJPk%73C%I?>@c@fk5!zNkNq%kZULiAQaQ(=Q&vh)vC+7IME+rB6)~U@t2CHCWuQy;nu! zTZm6o!!*!x7UBuJ7BBLfScFb<4z$PNiTtqp6bB=T6LKE~+d1zUk1^eEc^>(g75>VB zySGOeTDR=(9OOU_TH&-=pL@Zme}S@PPd-z$_5^d}`nj4Xa=oDX z_>khSPHCBIdRcWd!($CJg@!f7ZR{(Z`h#_UJW>XRnf%xTNJGRuF}z%jNV69CU}l9@ ztZZRY(C9B+-A(Z!@A6K51(bP7zF~Laz+z>AKt)QVvEK5kn%or2Qeh>B^TaZGbF$hR z-J}+HlCdB<&FPs!GkK<>X)!@&4E6-dY_Y>)Bx+8Qd28fzaz9TjHEK$2nlJ7BbZP1iEIjq@3sx+Dm0&N)q~ME``hy1W_Ph`k9Bp= zle_*j%vKlkZ6VDU=cm4B3nH|c+8)$zRC2Ax#sw)^yip3Y6-obQEBZI*#=QQrntV$!fp4XzmZD#UmAhsgTeEuYm9pI{ zYSZtuj?=|e;^oy?9?atA@+#@!DahU2*nkRDr$KS^dK6nhI~Vp%u6tr_t^4W0<^>k+ z8%inUvd|uCGuIOM0PTB$`}pxAm54`gvJgKbV_*)Ay!N`X?#ZJ^yl#Kr8yKMP5HU>EyDDrq8PwSS>h8Acj$-2D<7>tpB$n%{Jc{Ko zxQ~yI#bPOi-Rzy5Dy&X}rPyO(Q#Bv{q`f*nKS%qV7IPl!9ZcS;$UOcRr-Sl@5ccR9J zC+2P#S3|DOo8glNOil^K%TU5M0Z2FcD)<4-22&R31}pm_hfoC5N{z2g9A6 zo$|?omj8@xL7@ix?OWX8!RGaYx$Wi)DoXFw&WOwhRKiCCzBK;~?%5=)d2e{WV}wtrd-M-(U=SRr7SDcyef%CyXkZQqbuL%zXEe2RXak^xVCmoT@oIgCp)gq%EA^ zUjKSdrc5Ttmgy$Y43F-;n`0KQrdpqTFPHp8^~8$l;Y!HUtM{+(8}g z?&kJT$-%)vQ*-R%{7_7Af9JgoD<1yIrcT^-B>)0QNPD~ylV zvb0>A{pFXDalSr3pOO9bmETQy@X>!~(@5B~^TOyRHw;^5z6OmgE-kf@o6o3vq`s8T zE_e}2218V)F3H5Q7wes357FCY6%|OrA_KJbX|IF+B(&B2)0(SKWq9IAPn_fX=*nj7 z$e&`J>e~8xA|+|*?mQ*h@uNCwb~(SC84f)kb;!qOsP^2=25B9Zc(q*$hT86oC*FjQ zx9o9|7X4-)lLQyx5?B3RWb&!OF19x|Y;<&V4o;7bj-1y==ouImS5}B3%F4L5pOKT3 z(@HcHds%#s?(R0o7)TXEBg_YOmwLvduO(oHhLACAIt6BC=4DW1fm&fv5#x#TD;Z&- zm8UcjQmV?z8E*{Sp>N-c_?}M<3}{rE%>DM)E*Pt@+yixl4>n_CYm0;X;tCC##Zg}r zQiMM^JFCGvpBAJ1|Gkst-n~1<6mo!_+9uyrc?(g1I-C$iWbICjK*RTROc$IxbUfA7 zV|J;-b}2S_M`r9T6QUfE?F00XKLLh8di3wdf?w`A%zffUJd2E!Mp&m@sHx;TSUbyg z3N+M_tKMI+eZ#B$J62AmW&d4?K(hq?`LGL84R%gR>0PP;*WWnABVmo>G4Bt+r)V|$ zU}$Iv*S}&TV6JcuE?YvvZgeh2&UQIxwrPW(-y3c1$DTMLHa5BN$LsoU>?nRxl```|OP=y-ipdpx= z7V9@k|9gzYRnqJ1MrTP`)ikb;wxbmLGZv%|A&+00^A7En1eDlOvGo-4PRZsO@E2;f z7Vi~*!=??LIEkozz}3GAJh=Ml=hRe#8p~*t_vsT+ud)6T@>68FX%ARR*k8ByKy?*$ z#vq9pH+KR*OkZ1DdwryMr7tnpRYy&y&Bxf*cDmBK zn%8=y^Z_p_J3k+D^{NMG*HsxAXPecMy>VPBp4!=htK~!IxYOnSe^!=ot{ZFzWg-Pz4LO87UgyUmG4sI#%=C zM40ty*E+O;TKMI4B$!--Ca-ulxZm864p@8QDyp8OZEBG!o4TaFYBzFY64X`qdL|Qg zA0EA!e_p<>%{Ihtx?jLZTh?)SC~ebkTiR zKJvfzE_#;#D1lUij8kCycl2ZS`-VpoMdm%uXwlMVaAB?_X3+~mNSbtif4}c(VnsuP z*WcM+puLLv6hJFwx2sEw?eKhVDL5c ztn1Q4|#}l^!f8x>@03 z7)nr9q?UJ$(^O*^xwUrv^3?t>hZ`-IvL3(0D>@p2;LZf-2)#sio=^@!n3G5A|*QpY4dRlY+0Q+jV6%(?&eBJZu7ZpYclY zo2veJrsqd6!8SeirEoGLLn<5j3BP1EvZO{K|_+&T$5Nmb5ADmn@{^F-f*09))N#(cpQ{&%JmEvZdeRxW77yL%XMcz64F z{K$4^@^|9!^NG$K$&T5OUk?m~H-?J_GO9xE4bfsbkE-556or{p+;6tUH*v{b4K zRYfI5MWw&P3#m6#sguCdWhf{%bpzV^Fj6hS`NhI&?>bMgMMIC9-(i@Btc2`GJ#joG zyo2#3REto`iuTyFlNk2BJM=D;w&x7|T79F}2{S8c5`5N@`T~}Q7XQk&- zJ15VWh`)V4dI~-eY9dEN!Ngq`&{Pa#rhj4V``G>1JQWrA3-M*ho~QaUR%6^ z(tjmnfy@w4*GBov3gzpN(~ufcY0dzW;TKm0lOaOl_PLJtS_7-T3E&vtH3qq`6Md&}U?Q&SIt=uYUwvnpTdf zh_0Z|5W3-t^c(+OHD9Goc;7h7Upll3P z32_44krCY6HI13s$#sWPv7PB*Z@^o1IS(O6RKSDQ4^ox8$WQ-ck*)`Ai3R<$b;=nc zoP!4&6b|O}1O2ZWMn|~L)bX@iezTHy*(&iU`l0yLBuiGyB0eT5AC_CNU9UW?Rhh#v zlf)pwAYklp|K=0nk(IH%!2!8%vIT0!)7GqTlgp(e$5|yT1^oYMd zGp~U^ugfRBtbqwh7<~=1X43CJyQVBtRvJj3agZ^!j2G%OV;P|)b~ZD=3R+euMLF)U zbx}nZd(=1jY$8RtkpfZPc?|@JX9gEHA#N?RdmL9F1wS7~DkYV1xi5H*&d_EIO#04D z71i#J7Y(t}C~xHz7i7E3&~&r+Ez9Y!a>#co9C6R}xbv@!Cyx6L&V^`O2sJOncZ4jp zwe8Mdn4ZJ?nQuTKB+F5tL%@Cgq3 z{KW5a{h?FNb1vt6A7dl{fi&!Jf(yzEkQrdt^Ku!S>D50r#DeX8k88WGaouLC=<%A( z)>+A9{XH%a>w#d1Xo zw^FEPjA}HWli;^ZfLn8Ei)nCBW9( zLTVan6z0X&u-5RiT`xIz=|%edxA|Zr%GPijj`Mr>9?NUOn)=N2|uh z#-d_k9(%qc*}paIODUS9e{1tS#nXq-b;6v2?l+Kx+wrmz&`injl8y;Al!nZ`&b~gj zr%%(2JHm>!E6dBvm7f!jkB{%{?1-Ho8CzKuaLbOn*6OCDrlv+jd;m-V5Z#rfC6r3b z6-e4EqTQH;gvSCxi9$k&;Z&PWf8S5E25T%j%QwEx*rz=K#=(9qDlqzCW^9Isxz z0;-L$%Ldtsma(xhpoid~rcNz0?y#GvSUWr3b4F=GAQmr}`GV5Ddx=YdsgL>fzyGV`KCB^=m6D4B(Q)cl|Rn z7fKCVB*LBu7`K1x?d=^K(=@&0)S;oF^n~vKdA@m%jPw1^k2mm002k10^r)n&2Sbhj zod9O}>eX9a-I)e=ez7you%H=FxN|b!T}axMI1$f-{$wEzy}GEB6n$l7Wp(uf@RmSX zq<(4tG3fQ1Hv&5jwZi=ThwY&hXs^9KK=H0${gou(_~rF^H8~ivuK84779gUK5>(o< z8Ojw`Up?$H(JEef5Djgn&28*Ey|`!zRdirdoarH#D~S z`#%B#p-tOYAq}|bXnh3K1O}_Jh&WswlrPrNiHhanhb>D$>8OP@^ZjiMPWA;5#*+LR z8X=jIJUMcw#=pO)_rx5Jjm1GFa|hyfB(>sSA4;P}+wG-QNrzh7@YklsJvPQtEZ=@12ymd{re8JXMoFegi)U24$)XU zM)=v8SC!gC3%hR3?8?e$qo=DMKbZZ;mCVcN?WT1J=(~3}60Umemx?$u|LN|A9s}48 zL3J(dui4Vj*5A?JLc9(O%lQ6qh08c8N8w^&5=QM%UaUX8mKi=#jt+sg8@ImVwLItzi$S8Vfh1SJs+fk zA|oO`QhuqanSwP9`WB>5r-=A^S;wD6tFWs!&V9xBt`Syh>wYH9q>lzTtV%dSP47k3#yL&ALvE6jK zHCARkzAYywckSxcGaL@^*;63$pZk35)wHz2p5 zFg7;!T*m941BkH|o`-h0iLOH1$ttMo(g6clrHmPTwi9HfRuG7rBj-0&?A2mT)(x;q zS_0UYmW;_I1bv%gbKV#k-!fGrm?h~VA*3_j8Ry`y{queG3-Ry?a7rbSe@z6w!U+4X~-l1#z_qx!zG z9ihExGp?+v#8p+qTA{_GVwzrC`@zSDvqfsMqHHnCNV2O(#>UEOam%jO*;*qYf`s^b zeNEi@per_KzI{YOnjuncy}g4?r%E=SI~$BNVepsfnoJnFsorJtN0-TE>C6)G*tc+V ztBH(^RD5nTn9;T|jxgmO|8(uv#^xs0IykH{F+LuQqZ~t|?NrSm8g0Nzl9-SnC?J4c z8#W&=H!Zl+*VpH|G4?F7OY~^=nyafT4-b#0=P3cL#FLly;tY{M3wU=JF)07^VUd2L zHbZ1zJddQOFFj$fEW;$iJUqSNCgdakSBLrRbLS&_j&#MeweLqq>C4OQ2}30YXn(`3 zTlcTqcR!%sYLmAY7{3p`Q`A~L8rbePpM>GZ%ZX;%v|MK1A}5?9C07hPXZ zPf%N{l_%=tT=|~N(h4)F%{(L@OTM|YfFqN5Om*%duvYVd{T^+jljV0Hsw)Y)aeg$+ z0wv|SjMH|#hfi-aMLwp#+5PzBq&!kjenLU?_zThTP6u_5NjZ~B4p}KZrZSvL1YFHq zC{(p}jP~VAO@>JSz(B|Dzz5XqkzFJl`bCnSZgMHYTHrNr-!fes{6QL|D?X3x0_)Qx zuiy$~w(qC!g{gZj4Q=MpSXswH2XFuyRh7~|>}@|{*&-(G;T7r8H=i!2_g87MRJlul z|77(iQ+UwqmP4n+%^M$Roe7?7K%qd%{Lmf#r0Z$MM~IO8@j?eZG%8uI;Jj3ehezab zT0NllAwe_l9dcUSA80P-iRLM?`w~@xEWi>sedm07|EIL9EFI0QTU*U9v5h6Z=f~zW zyI5>7YQhtXc?(riQUZG0L^%HK+fOrSCBy8yISiU);p*Rzx{8VqJ>5lVXy(_3b0_>z zq~(BNe$T-*JG&m(RK=K&%XESg?$8aJ>ZGT6@IYq90ZXW$z@?TN9{z}+t>Xbbjmwof z@u!MD1MFCJHDwycj30z=mjWGV2!jj8p63J@84cmxWd`-mc2eEp(C$-cXxHC4wnc{k zL{?(9sPx8dPtWF=oSZsubHj1hNFy^dKASO4UteDh4UIBQ8=JF}P*!Y6--faomeAaM zMZ0(!g^CWEUsx!V?UVq$Jy^eSLTlr&Amlfe5A@tx#}&ds;FdYpW)DqGB?STT$V#6V z;KO%TbzGZ~j1%nATH1Gm^U~5jtLQ5#%0rE~s$JwFY*H{r+jn{SmbHZ6Kp7aOn0P&l zrPJT5QkP$t!di<&0JdFSt?)g|#0qWKc%N9Fjg_&RnMvfzo9^7_KtESgT-qtJL#O9k z0)+{v&B;kgZmGQ7^G&b6hJ?7w6zGyDw@k3HvIgaqmX>xW*<^Y2Xcg>v;_iWsb$)hy z_0xM$1qIoe3^^9XeDyOalOSMGsSF=i9}Hys?qvK1ZGwhid0Blz=2J2y35ml>1SW#; zj&BzG-Mh?RUVnoA_7~%bhS7%1WY9 zJ1+I%Ls?nbPR)mfeG7%?fP3VGR8;H_Zy#)oJN})0MH%kk>dM$ueIEiz3oe{qPkTT` zOb`L*I7~LET0F;*CheB!*`jEQgIBloQt%&+tF6&QwD)McZV?By0rju8P!|&yrtxPW zrB7at&B3`cjx!zg^HZOU%%h~u+tEi7T>(KqA`J{^ZJv4u-Ym2pErIT%Gz@Sj>u@bC zt!@;Got?d5hl+|SiO|I%J|ZHWiZ!+;xD$y~#pPp0QW6rRp};XLDwhO$DiHd;mpuCL zsYR0-iycARu2X0V&NFECfjZ$%oc;LkT(;_oWZzT)P!S9br_fV#b5z~ts2(+ce|N&c zU?K%%B*L0U(7D`6%P;dkS%4wcQy_*jWVD6gJEEg!#zGDobeJo!MUsNrY(*x)e z0FT(n$d(xhNIImc*6(fGPHx4Th8v3FmczyHOQ-T4iHj>S$uZ z&-Y^*pe@an&!4|uoCU7nPZ{|3(PV^D;3g^~Zy&Ls&D=wpLaq zmQ4G52(6kwrzhAn?N#>X$?Cme3*1RR6_t@3Ub)r=`*S`%2B_2Q$M*0ipv?`d*ccfh zb3&JL3$jEn$*UBAxBvf6G+ghlJh zl`B9q2R-lwAD@ep6M(*E%|1A385!T>B~t9HPPHAu;5Tv}U0vPlUKcN&;keddqHt<4 z7e_}O0KuD^o3nw@QC1cjDhEcZ`2@oP3}&BWdJYcQSg9f4AC8WWM8Ncp=$xJwp`$Zt z3BdQjCk&I(sSVQpa5+QN*_@tkwJ>2HKtxF)Kr zzlKuU7%Exf?&ON#PWfZIJXpk1R8;74IVPypM?JSI&w*m1ZKdJ7)cw@gx4xYF?cTE3 z@`|IcErRX%WW7FwMC~zsZIaSOlp^J6Ns56C_LJ9`kUh0WWj8~huBgq~M z*FpqLV|2)Sb40w3>@6(vtV&;}Yl2Y(mM@CM3RQqQ!LAE*VGEOkz%YtloHXwsLr#m~x zps54k)eC6F@m_fdX=<^a=iwnbHUAce{@F@PAjj|D!i^2BfI+Mbn8P(cF!J#Q@;e$C z`MjSUk7f}9{6lv5Ceup4sVm0GVUT8fu0^M&MzeFNx6#wzyx*jZMFi9CiWYgnouP#g z7IgZqS{nhxe)E&l$>f(iQ19L1{Xt1zQ8z_mlI6KICU(}Mqs{7E7LA!&2mktx*KbyZ zUTD61_m0}4)u+UE5o!W1~kw+ckbMJ zKxM*VTnLgLgN&(OyZu7j71pC+uG3PLR+nZOcpm^2LC-}MsIf#yMa9Oto*vj@WwrtF zbzJGk$H(6Ub_XyYi0{4yia)S-w9F&l*XrtPYR09cPyr(Y_|&EA_JA^^y*kB?o&)NQ zdrGCInS}2=@RYg`)F+7a*sZ!NJNv{B$o@1`sQ&VirUy?#8r(TA?4CcNe4EIBdgnSZ zQDlkf&gH8iFRUt?&MBPIb=8#Bb2O`1%X}z6i-$leZ;dun+^tOt4j-TvIdOGqetr4u z|Lge3ApY}Qq4pvmq(r2%azpAPV=Cuh<4x2Z$vYnMh9Ps5OTrV+;^$xzXygd8bjb^!&O64qDXye{A(Yz7nheufSB?7_iv8oGj0Ka+M*&>0fFN}coQ=-GiER| zu&{8QLRScEdfa?(^Kj_5>&ER3x}OON=UE>r%F0T3zqkjnQW6)35F`sYGH`GxXvIZF zIv#9jEg@i5|6E7m(Anwk(n@?h{j+Brqh5huUW)nXIvnrv%+PLb_Nl|SqT-I!KYWn# z@%ekacMZrCq}b9Jwzn)AE@unjX;V{Nj~*HC?Y8SSQ|(#lg7%Yuf7WSRvM23eY zqoVzDa>K`J5%ma!d*8`zh%SKs^cgiZFXfN>68VGk^y*!@e}K$Sw@Ep0>&VC(&p!Yd z&|o($7%y7|a!T68l>dMbOI-EqUrz*naM@~uvPYDz_>jzkn%q6r(Cz*nwo<^S0iLlq)I6xeECRIF)>rPgPYp-GnSGL}FqTVq%HMdyPm}p*wdzgnh+W zTAl2UHbh1qBlC*`?>p~fMUFSL;yrkxCac~r5JS|gM~Xf;I`Z)G0m9e>5-75=y&$Qi zb}cC>Dd;&HTd3nKn4X|KurIrRfMh`xAVc7qKrATa>sKQ@M){=GrKRZP6p=NG~! z?>`ySB|rAPSOJ&svAY;~jvL^!X5irxFtPSTqA&I{-h%ejsWxyn?K+*AIec~|9}ErD zsS-Zu7aC0wVR8Jxb+MXR6|l(%Y9ly7ASUGGP=k}M zIXXB5bxurZYwd#M6|Ctvz%XuSp~KVDlSnD>K4q3NQw!(%D4c_txd1f*Otcxzd$gu- z`ouW0rNwUoZk)4YWugPA;e1?N%HA=R??3UkNL9nO+uv~m#L*&^nd!+S^EKoRnM6T@ ztiI{BFv|57Cf`Fn{(y*?I$mgxQi1I?i}@H111d5y3m6OrPRr7A9OOnStw+H+$;*2V zPQ+AGR`#1LgK=yWtA4{vK|znfjJHq|07fFajEsz4TB5xV^}rIco#Yb|st2&E)1=&W z#yz*+3T%0|NPD<103u5yC zj9pjnCP+daIjockG#vGJ#}vY(w&?@j0)-j@2i8@UmzSN?mVj@NX)l|`dO zSmQaFq~zeA^sw#b?MioqfpquZMo%0YTP*@JHRT|GXL~voqR0liAQU9x(pbCt`sitd zgoNbjPIn>;Ca*GQ=UyHNw26tTv5vAI5&-5rGKi<%hS?cKPQ%=lXS{| z%8XG`MbZXC$Eu23Cv}Eu5m+6Vz{$ykY{FtfvYw!?sOvRuNFM#S?oZCYg1o%FgID`0x01=i z!oomyfguA7Ji%ZTlZqKs4^HV`0ZhUMEXuaacMFoHV+DAw^ZB5mJ=o?s=A<&G!fB*h_ z@-ha_JOLsaAJ677zjSRIRT!;RRA^;n(o<9W0Nfpg-^!PmX*?Y{!Roz!lib)yPeRiE zI{oLM67gdUDE8h#tG)3yElyVXf0KtI)QBhG*P#B<>iP6;5)U9`6PvWK*!k^5~iW~tTMlGc|0K| zt^g<-Y!Fn1H$b?vOJ}E>)jB|xRnaccY&_|IAeNPrLlU3x*xfz&^bjWMUS8;vueKtB z(QyCduXOcey9^dnbW%CVTxl^#^YrOc9-ck0wN7}Siin7Sl<%`=&v<#UAeDL7|M%eF z2S6NwmX^e2ECKkcjZKkH{Q6t`4kF0okl4NL2cmx&GLH9Pc9SltY)ouwy3Hw`IFBuU z^i*N>$Q96etU(;=>Ze&?^W1A$jWq;XO41JioNdufjd^(%XGc50V+gfA$A`#$AvkTO z60r$h{rRcF!xmVUFCH0{xdG$A-`_u1A(hW<7nC)^2vDkj@mzx-r+U`Wpn^bEi}4;d zdh+Yk`~jgPGZ&Yffz((~GdI@Zk?eXNIR-+6gaK7B7>Hff@|c&a_1waDcEOUDgv1@VZ^*jJx9$RtduDb}=Agu`*q4&mJ!q#XA#gDo!TCS+G6ykKN9cOafpsIIn7 z`-w;bm+b^K5krM`Rc}XoJDs4Qcl$T7?rvg~?Z>dF#{b&n2_%}z4#C!ZD86~$W~L+= zR6@|)>z!F(+cU`N`U~afHSjx>9V#73D9UW+f%=ojRPwU6&ucCO#w1C>wC<>0SAi< zfXy&A6H+lRKrg|MwlfXK(JUIkj0D`7-?W=pMy4l(lmkeUmjPdfP;ybP8Y#N3VPWh{ zOiI2$)Nn!ODf#&L03m}o_%fFZxsfLz8_Hry;um~T zECeu3$~W>oPs{w*A~oGRNG|hAiFdJk`b&>J`u{#Yt3>{HI#Gx0?<%5){CvvF#>Q_q zHP+z12MiG)RhIdyv_a&YEiF5 z!z{Efx@B~<{rB&&wl-nmDMZ@SIK!-KxA<0y1^Hb5q6+;2?|q1p`a%=&Ayu@`$jC!O zgx%}p5XK%G&c;E#z73OvdY?{csD6v?>9~1wqHwg{OpcL-B{Eyado0j;)TOG5PpdrZ zT8k8zP@NpCMN)fN-(cv%L|?Z!h^ zR#paulwQ#!LFWR0|2B}{HQ^oylOqs6PDYu?1#ZuXmpwQ?-QE+ew?Z+4$3P@LK01=3 zBLt$IjEoG}zu&)q$EV;^jo1C3O)RhxV%Wgqu|zkCBo2>^Tyn|(Zmf-#Ej__E5x$b9 z#LZ0zj7B|yJK%$kT+!I?(t5ITp-8_``1Wtkp=-CUzFZ1?aA?G+fC*gXu9lLgYUdnk z@-`SSI>jQ)$<`V@TU1-d#2!@vLMGrf!s;3jAt8A&y>z}YT%0F*sofw^o>w0Q=F*#-p#eeW^>eY{~nLQ=BFgqwmQ5#zk^$mKJ| zqerGNn1N|291aI&V9ke2A7`Z&G6jf*uD(3{(Ool8ntuL7oE~I@9KlFk529i=eY z_aEF|M}J9@jK|hL>r`dgck|myKg;-ZjdI_*JN?ZXlrCD3MJ7v`)U;OFzLbcdSSPks z;H)#^9?jj`r3-RRMs3OSMzucpDu?6d)o_CW>@Fd?jyKEMx@UdVF_!h+Y^c{+&6l8Z zgba$B&)Uo^@4$kP;FlhKt-B*I;mGGTm&%$i&ZB~~tE*l z1_=s8YwYLN{P7fkibN@-jon6jbrWm&`U=Gt4WzwVVb^uTseDV;oN9>g>2h9>U?*^Q zTNT)R>GT{2G64Yrg1&!WJ!$zaE}ov=4|Q5q%x>%cH;Ii38uNGDI1xDTT;etgLzpAn zd$20{C2_*X-PrY4eF^a-kGdG;>Xh~SeHl&P1t$ebOA|*^cLz(+&AY>Xm5%Xbd=;^t znThuKqoYYSkhCW1Q4tv)9u0_5aMyakrIDr(y`WW`RQK(N&x&6Cgd1D2jw=jwl~T@d z@WrSgJwLxoNVFIE<8Cco=TboDv_O zPrvu^$~6!umw^JPa}JUi0s{&0@nEa>qS0s+N{y9-f}+`nHpDU4tP**8S+iSs>Xo0z z=~VC9O?QU`NzGJraj^Cpcm25kCLl@UX6at;=c`-E6E|)wLFq{L2F41Uu$Vn0l14)V z4@mGV8YzbxmMil{=c5L1lW>A#r!(I|Z#2A9U2!i+5uU4UZesZH<1V=DdZ#jZY33SN zxS|S~r%af~mpwBJ?LJxp z_N-2I&f;QJU+Ok0Gq5-_(_&Q-ka-TY?N~L3bNjb-4*mBb*YbSV{yA(XD&7H_*V*}p zxP9wx#uNn zTvQ}WM`&ngmtEgBJ}zsRem)%15;(jvaQH)7uSD0qpIubI>t!;LilQQDyL5!1r1EY| zhj(8@9ik6Sw(nxGmGS%ojx7NJM@(-qD^fHBgb^5G`^|}dpfd}(-c>JYaNN>87|u1_ zK!EOJYMP$FZB4C!bFj)qyTe11)S6;4GN{1)J3pkp*iK3}G}0#vfjDGLCLG?E^{xc) z@4b}{R9Y7#fXicl72vCf5%u+_c}kfWhvX0T_MDcDM}2knz<|Od?d|IuABcoa*Hwai zT7A7I@Mrh-_CN-xKbV@^L<;0A#Gj6VIM^@0TPPxMtK0u>swTHmP*8NVwjxVa{ykDV zq+;d=?H+&Af`A}V>)KvQ-vBGuQ00Wu5vqOYpsEkv9V_dU_Ex{yHA2U zPW>|9+Abm&8Z?eY-xN2+0IT?aS52}ts$W2m9Fme9;Qj}qK@gS;vH*88@@nCVTG{LV zG==>h8R6sP)J8hB$-@aFS`=;-W*&s+1#!@kk~42F~%*F_3v`Xd5*y2V10lz%y`R7tac z?H?>5o^0qGBnxU;!nfwz%)_Z;D=dwV2YlOVeSM^~33=9I+ zR#Uf&eqCT7-w0^Yw;%v+-BR1m85LuHx3s*a83f#whL#rGM8-iFJl186zqGte7?Hy! zrwO!M!n^(;$C&Ap%G)x-Vri+h23ww;eSe^`%5OW7we%Yi9DJuy+oo9hwBN5>qoNhL z0BQ~`*5Mpr)jy^^UI9SyK8VrOir3V>>+MyfUW}`oco5rB^WQ z$JS@RWH6NOAS5OGZK9%Vs-g>acBKCH?QXG-!M2{`Qnw?`L^V9OxjEV2AH+A!{B8;) z2|mhe+78{aqRpjR!5wUR(P%d}Ap!&ATq9g<8)CL*ysdF3?4V1{%n;(?8K*1Gu0Fqu z?|i<~Aqs6hcGLJ+M@meL1Yxp<24R;wk|ri5K0ZxwI80Gd&evzA&N(E=tT%3Me*SlT zf)*ViDDFjBS&P8Cn^3Wxu5$)zdZP!{!Nr9S;gNP=%vFv5|m+G|UO23{*dU zXN+pC?m5^ch*SaiJ7r};0yf>6Ka-P_Ajdf|Q3v=O&~`RQLhG+tR{k?*3)tP%iWoeY zkgMp?irB?$ub=rpzHZ^kia~#pdoqufc_j=+IiLCMKUsiB6hd*hsMAsBz0G4z`}cbW zzMB`AQ^y8Rx&3XlF2j1?G32$J0RB<>4=6Ij|2fwV8wEuqNZ4(lFM`;TUUWHc>t7@# zmEWh7H!+L(J5q>yCIes`VdBL)e4Aan6?fLtd;xUjCFtTd%oVf_`Rt{ouR9Cy(#b%_ z$7wxom=uI|rfTt?JaoHp^kfoNZyo;P$ogH6Saw#{=Vx!&vvNo*1@2O$ix&fpZo1qw z1gLkQ0Y|flpB!#C1M3Gg2O!8TNh&#rdMTa0Q3nd`2;2Z>rf#|L6cq>jxc)e<1rYB8 zlx1Qvf62qq!{g)!y-Ya*QTWXS+*>HZ!V(hH(AWrWh3>aZ0j(amoxm#1n4y&SnK55? z1(;{Y!yQ-exDsgq;@u#`0k(NmEDPZL;Z%>_O6E4=4q(H%j*Mt%h3zB`07uC%6A(RC zSLM{w$_9_G-%MFb_99aHmsK3en5tTP+;Y69FdmwUK**@^i>Nwp>AK{~GXgv*|Bi{3 zO^x_b*TVcRpH0nZ^%o9$eTz$AzZ|Gv(*K=jM^QPbs}UeR}Uy z;){@43LDxPh$E z)RZpYTw4e!DVw&_+7P`+c^T$|Fo+NT`ekGUu~76l++zDD^rnl(zXHkgtvn~-1PZ61 zoe;R&>yPH#$z_&RyyeR}NX&!7`PLrnp9lZ1|MECMf_y`Na3CeRw&qM#nMNb@eJbJY z4C_itXB8Qd$6`&WThwmO8y2RPOeQijv;9}aTYv~l^6=pw(2~@PwL#E;iTEp!_l}N^ zsD014czG+EbZ$ZZsNPnieqn7U=+n>xBIzg%>lsy$Df#*pqlGSpe9U40FLgngLU8ZI z<7X=$G~*bT(Kio&-O`6v7`8MrBTo)Cqp?^8*vmbUB-_h*u?-y+c z0IBaz^fDSSr{%?{P-=8{f4^!Emv)JoV~PMk|Odl6iS+8 zz>5?C)bu5}S+9L~2!*ollOM?C-jf_hY1w7n}#{T@fvTo~CADtSoqay-(ba?7^*>2|FW&f=>(R zPxLl4s9rkeoEGbFNHQ_xxQ0_zO)L~{)U%5ifo4p~`uBXZ`V+7u**U0BR|kWD`*iKv zCW_WsSQ3Z_>LnXT9n`OCYmJ$i+n1L@Ykfpk6Jd4sGlBW)CY2sp3(wUGT|TzcgOpkj zlt#&$|2ib?U0%gSu=vA9JH3?$V*C0Pt0NPY?~-z(IxNNuzw8m8aP|(3wtw`V76>L-Y z#Kmpj6J)+POQAH2`2OT4laqZu(0{LgmiGUTpmzFQ1y16D>|fSxJlX1?c9gUPTGp-m zSv&0-B3WiH+L%ng&|nulSUOJM{3DH z#IFs4t_QxBmzHq2ZD06y6_|MPZkdlMDMtRU6Ox2w1zeSyHFc)f(bgkQ<>lO3b;v;P z8W&r0u)^qN1UbL$gVRMx`M<97_T*PkD9g`}2n>A5T}}bS8$3TfJ+>$TdP0zZhw*&d zKi&2`I+@VaBm)uSz(7xsH3re!*`Lb|av+D~g~iMQ6@i{GUCLxCR{;S6Mf= zGm~v><=)a5b8wWYVjNDK(ySWmQZw;LZ-Ogm4fgr;=>RB8!1`)$&ysvF>5tb4H+Z1j zm+xufJP-kBk>@5R9z9DzG28d_;ca!eKB!g8z40n&+ba+YX;t$(9pQ(@WNRQ_icB3+ z%~)ePNdG?*#03#RrJ1J__NpOmkIfqs)>~8WodYvgc zIxZC4%3xj}bu}bg`*iI}!zRdf^K2^xB>NVI5B>7Ha*tN8syC2d-xKY;J$QDke~%Wo zH;~@V*2_DHd-8}h5G2%b+_i$!w1u8wPUQ5{)*1ufj`?5MZ}i22NbbRbFkTn%+GcBd z;K3Gq%O>2bdjE~Ow~ngv`~H3T7>Fo>lpy7%8|en!fHWxGC?yS&(jp}wAT2H3ARt{9 zEiE7|v0>BQbta$h`JHoP+;hjc_pkE|hXXgle)f9SnrqIv=6tL@{IVu?XYK7M?sGwSbi25KERDJO9I&q?`a={>`;S*2HH$p`tCFG?qEN29)v z_dpKibvP%_-ZLY+WN_;u|8s-S%=5VKdL5a554}e;rki&nD5uOppV2F3)qAd<6R;k6 zoIF;_``fj>@ZXLr-CVZUi*ipFKWH>J>>)>&M7Wq5MDyafVt8rENP9nn!WH4Q(1 zo@QlzpKIgZm@eHN8x&P(cFgjMaVpg(iu01V%Kv|;0R}S6!LjWfj7O^9xGyvqFWu@= zogs^T>w^gKg{hvr8~bx+gxF8^ARtGDeJp}_KVazXTL)?t{mrjah?mx^55(x{MKpJV z(eTd8{K+@Q@fFtyLkqP&zQFUW)HKi6zkKRf>i$Pa zC?xO>5e~)iHuHItS3b9yo~D7-$p5%qice)E0``9)uDX8Z8yth;QV6L*-#3Oi@^FzF zoXyj1`LujhT@Gyr-NDE!|GW}w>u=4;N#mf2#By}(Vu}BV_w2>YN{8a(#{o|nKgfiu zu~g{Ue(X*5{7<=XW6J7#)ykC0AiEfU>+#qBS&68{`0>$%v9Uzvczg?$Vn;%vJx1o` zNJ(nzagEtEHt4lEF0Ll`^0J{o18nr!sgh!XL+rcP2j-<*ucA{KL_GcL7A75q_E5C*Li54Ti@z! zUK(Qaa$MM)2srxt?bdAl_{N~}_{eA8nVE@YC_oHGLtSnsm}++g$cnUR7235d%fq>yl2(F=CY~Q<;#<2sVclk@~ui%8sMc)-3nH8U@i_d!2~%*m&@n z@~3~W@7#e?WWKwX$r$?RAy+_$B|eqh$R_o}cSsJe9T{X*6YI1fsrx}(0Ug=zNd zmEnPz9}%ll`u$yFtlAFFQw>F{t2yC!ENpCYWz^USDW9P|36SAbr8jXzYaC2x!pPVt zCp2C5!UKaWPr`(9N_K4QL+@SY zXhKIyCPn4yT{VBUP^hnaS}C81c6M1&a?StEkkV92E3q+0FR$k?GmlkUGf{9a)F89s zY;Mu7&o2`W_67k9Us$^Gc52`DJ|ZzrJ>fFwcB;Rf(*ugeNBtf?M#9 zu-pm!%6{bSJyc}!V&ol~E3UqRiCa}xZZybLw_dc`5&zFWqyYhJ<-2b%47|OO96K?b zuL*W-x|a2ie>ft=_HC}wFDx(L2M7}-rI<-O9#r}v+kfY)p40&$@a&fEd4Qjvn`OaC zj$-w30bfMnZ?yZQTSrbBAOeJ(-m=XuGM{_FR@W?Dfi!b|@;#+!4cS7#ev zcrL{9+ve8bmaq`;RQ}FxlSSA1efyK{y13UG7MGQELujI-StXg_Kp)L%lSp>P#U%UnIbLL5#)07FvwCw= zr0?P!6(4nc-1A!v*TcgRXCpn25asb*%{IfZwN+?-UcuZVp~-FM;hmtp@3*E*O`~;n za_lAqeoyGVy7H@w?Go%Ugi_u9rH}Dx5Q@E_*Yp5$OttylhB$ivnKV@`!s$FvW zPo(lQR}2qmP|#P8)#AHO$0Ykyn@P+uN5gc9*|D$GN#9jEHzh2joFLd}VjE#!sek}H^E0cEoK4}LeWoJ;R zXkp>#t}cdBLn<~rE#@|>=|r97t=DmJN;!Ekf1i^%3tqc1{!~p)wuAOaa;+3GCfVt- z8LR18s#oiA9qu>ij(R^@C*68J zdUn5jeojYM%b9Q+*Ycv2M+K7QQk}^em<{|^+xoqO%k zaWS-i%1vulZ&f5Ep;kwy2E+y|$B$#N&{!oTTk|BMAHDQuO+1fMVbsu-_|UHT&3X)`OD%Ex2kx`; za}h_!oHQypTVM>4v#>~5U+RcOS=e;5v!_ZvW4buo=-adxi|>NNch5E6i-m^+ZZLx$!a;gFk8_D3o_W3n1~GO)LM(5$OmCNSC?k=y;E zKY}&-CV?I!v+06D?`TCM6Eg~aJSMcy_*C~qZuyIFqTl2MD;ZhtGqp|_`&-!MeEctu z54DO7DEfzZC4L-M?-%FSI&pB=T3O*wCVG3rjhj8fu=^2cp09Q>&8U=2BJqsr#+~=% zyq*11Q_0I>(pHQrWDAl+2;OD|su^ySF^&aC}1Kw423r z^y$g?BvsWqS4yWFYxPd7-t9+jYkq!%kyH-RlrlVPP^t7 zrYt*HQt21PURIXuXW|z()khQSUE7u?O~4Wo#!{294?T)-lugnhBBqC*cy~9vJOE#YAqC}W$NPyHRW~Rk#yj4-IqJWj3zx335>F;v{ zRjrX!`gae_l7`1v!4a-;*$QdvPq2=*JI0#x{k1GiORN5cUADZ|K5_HE>2y0|=>1*yvFJ#LXtSl|Q z%)nKP%sZ`J6uId(uPH_<@Ie}@*8cIUMtKwsYwy$IrH#^j-n|`E{PjXj>8$Ld?Chh- zCblNeT2B6ICh=xEn#_VcwC_dYdnfj_3GJrWubw-U|1GX&S0#M$a9u3jVzH;3a=P%b zQuyre<<3qQBvyp$#r+IJE6bejt=09Mo|Hl|?p9ewr$6=84yUhQ@+EyU<8BRi9;>hB z;v4qGb6D5&ay^(lq5aYvh<2}hCgzCtq7vxS$rV)zv;cQ3f`DjlT7{|7#pZ5w$4CC& zkq4%It~cbeV@~CdeNZp+@sWv1^+Z$S6BANck)jnTc*tqzHX}|gR?O&*=Uk+>F(bP* zav6*n>%DX*#wQ<0Y7jW@#cYIlUuR5$-sjpC4+S2S?a^kVyEd1Ozv*&uH$TInBNsoi>fcdSZuJzGK zJ2DcJv9Y#Rn7iUU-cT-%wf6qqSLoWso=6YXG7I-)d7Y~Ma0*lZ52W1JZeu2JN<5I~ zcA}7q1h4l49vKJ6dXty>$-esW(bii(n+&jXA<1H1%@@W0d71?*Bx!gm zT7NQDD51vISi$)sX` zv!ML$zWLV%`EFZ;WfbX*DH+k+d2#-!tv1V)>}*fd#x(m6@Kv(oJsTT~A%H@8q_rA% z4yy^I?(L=2)+*|;TXjTzDq)A*Vl^&#&E%wFUkBxfH&r#_15f40?+Nu%ohwYt7s%WZ}Q%eVQWNrt$>#pao!VjD~8q3s_$iu;yU zwmo0UjieRVGG?g0og+OI1^2Xwm2oP!Rvyk(fSRnv6nFMG@<0 zz5d;&2UdZt>1$RaiC73jFW#TM5eyyJ z?+-zA3achRpR!Ox>hMr2A%XMk%xz^vTKp(0Y0Ax@S!}DY^m|nF^{Y2@9BWzml4fSV z%PJA~6>fKk6HCL+*u|H@NR1y$fE2qBiNT}BSO2(hQ?b=taV=soU$xTz!^_ky0k`t1 z{QSbQvX%J`VeXgiQ8yTT2=q%3bp|$QmXFQiy}#Zs%^6oZm`Yj}Nb4queSwVk{%WwgV7{7LEJkeoFqz}xafty%e&0!?T)w73$MIHM z67#gt2O;ww$rpwDHnarf*3k)qsa;;rZT&iD=ap~AMkY!x5pF9e5nE5XUjzq#X$dX$ z-q+4^_{=A*k~^TPD#~X^nX}0@D}K?TTTYwT_ST6_RJ{2pm_aEf=1Yf)lW6=GyUa4< zlyGuVuZ@klPL@`4pBNr;N0g#aWe(pL@znA`hnepzyCJ@}?%g>(-9h+&xMv{HY%$1o zbYKY^CRbF+;$oVi;TNqOQE>mfBY zncFFLDf^d%&96@A+-zdv0xuI95#+Iim5~D<^v)^|9`ZjjblcZfMz*KF6)w7+n#}pJDlat&E71#)pr_DBs@4@SPv%guyi#C4o zq6+?C2dgmcwUWiV?~uPn6PPPPpih~8f#b!>y873#*NvY3&gM>qQ5lK4I?S?$ok`d0 zjh+TVyEnhk|F3g37$n%S$p7&DZc-}-%caj>IMceuD6)@J)C+5WC=x6e%|A1n?Jnlj zWvEk7OQ^U$Xe8Sg6}ojVDVLvL*{+Gi=ap<9{;iyVKoNK)jmpP+=4-%$f@5sW_0fhEQ(m7o zsAa2a+q?5D|9vFsO6CYRDXyM~%`a=E2;sA(zsf(3W<>ZR+7<$Keuz_?E-k&vh41}F zbr|nttYwH(Z68JUOS5Xn1x|2=<|5HS7?Z~iFXUg?$??}nqZIz-aryv{)BD2Xtb1?RdS&(I zXi|{PowAz zXbB80Zx@60PYxAlHI7Tm+T z1$CM3t}W}DhFwJjr9aecIAQan7%I|g`yseDarnyHyqX#y>g_D ze(9Psm9CN}th(Vze4M~ALIB7}T5251QHI~$4pqDr*(%^p4O7w_nRy1Z(><2YBV4ZE z+=%hh^e_FSlGoxJ$~$k-U6r#KZ>6fdb|9l~QY66|i)@@d!A?1>yI4`frgOp*^WSNv zisk+n1$q(8L)daOts=)vH*mrc40)Mg=6^Azqe<=3G1t4^;!(%FGi7>p=av5lziM3O z8&pMNGFYTD0!V0!>O*%O0}=>jaml{Clt4z?qeiyidE0;OVj=M$k43Hn+(f z+qSTTX__$k4*U9lXjl+IJs0Bqa4!$>gHy>E3o(*Zx}x@?QI^TVUFujM_f?fy)t!Yq zndH*h@wuw=Gxv|Y)p|@WXXY8hfR=a2`BE-A&18qrR9q5s^9ow=zksY_Sr5D3wk_b4 zQEV&z;n(M`%OkY({_5!*X{Nw!$TBVE8#)#}md!NqdhzvWPM`&j8n$V7l?Hows;&xu zrIMgB=8GB!y|k^@IhJxnu}IO4y@o({%Vy~@NhSM)N7+xgMPK&pr$Wnta*as3su=xd zUUJ9fTc0Rr1)KXIE~jj8`;=rNezteYs{VICi&5~+02axo+N{gs-<>uH@L-5<^N2A8Ybtf$GUt8Fb)NCy>i@fA0o2}WNI=6+hc zfy$QeKNx+=PO|luLYC$C%e|ZScB;y4L|a4YX2Yua)=U1_d=>hWG#=qh2@%vrag{FS zFAYC-i;=0$Mp;`~YkCjer7Cudc#BTpU1GfPmL7R!dTa+DS-Y-r=HiK!3QH`Ksc5Kp z`ji0qj;_n$L-(hH8;u-F#3LfwG(Po>-h02rxU@egG{;Q7J9-##8Hk&0p2~yeed=Fe zUV2!vS%0sm`4N_z_@NiWEr!wIc;kQ$pPzGxx<$?)ug^o!Hx}sjkD**(E9hTJ@)--H_eyao;fvzVcLC?Ecwj(JsBFeIsBj@LX)x^{71* z=bmBXVZrxtb#`utzx%$*J7PohQLTTz^>N^1U>uXTUVeU>>@353o{Cu70``a$m1%A9 z)Ar5mkvId3hJmrkv9U?_+O2Kj(G9E!tfacc-zb{6ck*L$11tk+Vkb`DgZ*7(>w{hX zU-r!Zt-t--sP95LJFCyfNjAGOCFMFB+YP&E16?(>!T$7Z8)Ah8-K#fp>grE+Ui*Le z9v4>(3MY$;t}@x~YHz{!su=W|7Aup?Xb3Jd4l2p++LyT+U|m_1yHC3OOu0-_g^oC_ zuyopfXMw8Pu8_55a$vjr%^TU0l2pAC(rE30VVBvS6dZoL)Pmxn%2Y3h7{YCy)>_)k znb!p(m1?#Fd#ArMQMlL)qEUamK#j=d36Z z5!J%{ZxqH!pZ4Zm%hBl`N4?pV&3 zT-W2`R3|4~umi@8jIiEK=0`uCtcbwX|j->RG7b-Yro~Y`)0R zt>$Sn*RK2iH0+-?yDz^ab2DkXqV3EUj7|4&?KYtEvZArEcWB7VP>uFhsH6QSVS+;2 z2`x>vnCXGtC-tR^>R{mP zY`mvuTu@+6vKX8E1-(de%X3dnt=EmU+MK$`Rw2QDp9n`6GdyH|=g|{+`KU*mQr=Ch zblMLXtu3~EK4)?mDqHc5k900eQKe~~ot`hOdvEuoY+&E=n7AJMUI@KnY|1;{wy34p z9W3nnUbEA9BPfqinVr9)$=g6f18(3sS<*&k2KCV?RYpdth_f8x5dLqP>v{uvt?~4D zZ+3WCEdL?Ko7qFxcr|xjRx$gNeIOR}3i+fyZXauxaa=h2>^nT%``Vq)**Q$u+tbk0 z)X~+|(eT#aqN6Nw<{|`Vcp^xHw@s&Z@BY0IqO@Szn&Y& zz8=p(fLu5{Z0F-7eeeA2nVG@@Sv-3qU}R%kpOi@s&_~Ym@D{T%hlslWmOL>Npf^{< zX;al4OHMnR@E9qnbaL&*!0N5_y}`KHB?n;0IB>*x?O_v6r$;a2ECRTZ3d!xxCE zD&`6zb+w;=#=Ba%CfV46#>PV_lhrdm)z+Ul7-tqu8gA~dcYBlec8Q5uW6nuu2lL~S z!GywHn~(m+$ES*UJ8xq(*>l^(%&Sq0x}&HRs7@xvnj4?rhDQc(EOS1GoRC;*-N3@>>LQp0 z)JQ1-vg!6M8h?AOqTZm}2!GZ_m*TQQdBN0FM~9laV;Mypgh@kaXs5Ll3Z;N4;X)*b zk457Dj+yyOKK_}9)Thcy%6emKR?Im!j?&@vb*Huc>uQPYcz8%}cBcHedfj|E)+s#| z>hXf-nr?3OlH0BvrBezrS255yif4An_P7BRWIL^{_ zog8#@dnqaTl$84m3(H3DHS1pNHKh`>5+fwfZN=-jk1Ko^#6@l^j3##e=V@-5dV6bo zoY;Guy#GKb|~fpS%!L)AvH}+aP5c5}E$KTwX5tX*3#NM(g`Yg;mUP z!*))3L`GVgU%u;VwOzG~s})wLv;7}BLJh@)frMl|UeiwY^rx>k7O#_znyhPjdXr#6TQ={&c{ z7xZyPtK8AlWXT%5N1Wc+xUHL5UyrM)>ETezTzv)O<0IU&jZhpM{}1+JhH=OUS`?Ea zDuxboS@`8Aed?q9nmpJz|t@+ue4E!tPmyIb>0+2eJM zwoW2vf^A&fr4f8jw)km;U)McO$5u5O>2B*-VO>}bTbcid$OBt(42*}IRSVs8Ha7lv zN0B#Q-nxa9iPb71*BhNu!g^Kyxv!qjDkNm;zJPs6=|=p~5wo~qm`>e4OZv)iYd;1Y z0_#tt{V<>TdnPBbjL-i-;UjHDp77sJ_{7Ugt}MFy+WQJ(9@fd!ZLD|mJ2w%+ot@`u zjxS%lZ)_w=N*VmE#zahjbVy2kYhxWaKAxsV#KFvwwz4AZ_7&p}K!_f?CwqQ3uJ9@@ zGV}1rJvxc@sCY`rxBGQXaPMpb3|k>JHHp8cq1vvLx3{cr5<`5wz{5>Csx;onNS~=% zM+sZSC&>2MuV1O`rcPIn_jGM+*5l$ruUuU`J}!v}KQF9`OP!??57JH2^{&(#QyFo$ zeIGvcOk*GR4;ZYJ+9LvXcEg~6T3sFXJGVVgmep~t=SvzsVUA^|aSExkY9AfbaoAuG zz`z(>NxzsJm{i1yG`!gp(oOIGrSO;{O=-T&qg~Yxd?T3j%1*Cj?VTqL)w9W;{~oB! zTF;a@k5(9QXI^w`tUX#Q)Wq#L%af}{R(@)8RH;&`QBxO zNjc=hMra6Hy-_pI&{>l2D9PKcrcUTjEB(}{w&}%*xuT+kre;)95?!eJ^r%}=&XW`O zkj^g6<@&?mI+0++xo}31nf&ikr0B@VNOH%7fd(HxOQ;f)wT0W!_v_M*JG8#fQ=tQz zMRR^`u&c|k&ffRDKCjZ*KqD@*)-9y|M9*+KyH#)c>4oQb=9?G zj?eUMjewEXMpI;>98D4LYXP(s6 zPCzf;-fU>j`;7u~mf0u8 zno~88u}BM@iej4A`uK6g(-&GbB>F2;)8U9_9`}2C-;W4fG_)kJct0?d@OKv9*v@cdw8OaKrTc5osQ6qF{`fXC+=`0mr!m&F zCt8YOF&VI2bjwDWH>3$;+4y~=TX^?qt+Sc_mMt%qa+vb=`mv6 zNiOzh9d06s98_1(ys2tpn$~Z!=@62WG%J;~*?E;xQVN*HsRfbT#__g{$3xN7Ss9II z_20kW>q%qqZ=fP)6?fY*vtmI=&Lq(6)-~YzXzJ1#SHmGtzMG_4hS^WGouixn9}aHd zQ2TqPrd`Z+Cn;dg`91cFF-GgMar_?X8m6;GFW2?;J#RG$*Qh`%K2cY%mmFY^Jbf{i zAl~X&eJk%=uypqqHp(v7DPF&}x`0|`j{NrJqs5Uk6m;L&x#mSm`pJnjUG=xVgmw2X zECh3W%QcLLzLdw)cRj@r^G05ctN{kH4`hbkU^nWt?A@@d?Ei5*J9{VJsj9jGPX5Tv)7ja@G7&U0VCf?{T{{0)hQvS!h)9O!YOTctCNnKb{@CrvBIND!%Q%+oe20 z*)kT#s#ya+w3phE>RwOX+eaVVBhX*5(AteE>U>Ekx^ng<5oL<5U0{y54V7r-%RVrP z1;4dq%dslOd;G4*Ye=RxiHnc_K8Jq|_OXTrMkJ5;JstU78;MfpNt9XQfJf=Uo`}Bg ziKb0)Wqhg5EiI+sg$Rcu(qL! zQkM)1TNk*aeu4Edb7)9%sJm&mS3o+Jc*jkV$)Ti_10jhj7vKH-CHHu$dEcox_eKAK z`o-j+>iL&fGxn)_yR`mUg|&gVtE(COlilA_=EA`(amzV>(l`66&mW?$gy zD%tHYfg$OAuy@KOo`$!r@d!ioiPYU~6*IFSwPQH;fB^1^pwL)i!YeISaY{Scryu%V zJFpZc60zH&y&2~Yo;@o)KI%xlx(&fqT^=K{{dm?0M>}6w{6x@w^Q7?9b2P>eymkm( zZX&wo1HZNj3v*)$s_Tw#{pF&kP+7_!)4@c{{f-D1S3;+`@+3=Hg@)8+4G_8>z+UVv zl1duA)HYWf8UntpP}TsL4(zSL>u({HIRE#1#-^2A)YL;iG8L({Grw@%M9k}`5+LRa z5fZ1bMKm^^d~=2Y)wi*p(A2hgX?uS1?k==dkQ1}Osgt2za&f}wRA;A^+=2Um5ji;) zf`Kx8TK=C;R0ChIos%TDI|FVl$ra)>M8y)B*icwnoxqQ8FWn=%Z_xO<|0%Do^IWTP ze}Csv4pZZSyJ7EcNC@oM7?gI2No1ng!oENZUa`+~+_>iOKlogMBk zp|u$J4;4>D#4psvo3Ck(Xx#{Ep3lK%6n~hk1Q9sp#%e?57q#XBOWBi5lZK0MrHNYA zsi|}Sii$cq!xDaeNZ$`Ex3||eH94Zz4`Nk*TS2S7kMP;-@t%~gFUQegy9zBKF9Ub9 z!HUke11Txa{e9UhkE0%aa)?k93pX&$0wYor&#osRY^(PrMIXc_%6~>x@r_!dvB5yL z3Jb?qRh|WG*)_yduyJ818@%nYEG!&EC0M>YR>=|;Ry;Wg zf8xo=raO9wDFp{iYQ{UNW8w-L1Y3Es4-7U|n6mRqZ((C0Zr!*OLwEk_#N{uv{R#6Q zs7Oc{Yib6mxmQ#=OT2nDpDrQqIVC_Jk*Eg zqZt;V_Q%+Exu@5AW&N+~W8d#WBoM(E5)tAd&qZH9OmV2bU~|L)ufj4^IMp8aGWS#nwPhP{>0I_;bErOxT?xxkdP2@l0j8C z-$ZaZsa&R=AQ%IxxN3%mcI83|NuW)1c}0+L&i18CuxJ#0V(c`@ zmPmUPe;C(pi#OP?%7cXW&N=9BzPDE4`gjN9)W8kq?Y1$P>TF+eG6c04K z(9lcK6TsQQ-v9@LaIH-KM)$l&Yp3zd<)isTm$M4UsZ!8it@`rC^Kd2za9}AZ(0d;M zt;)}Ib;scrfKjKYkqd}10FMDlv>50Ncw8^OUyCL>!%7fxwrr+gTkkyqh9^cu-O1U; z$B!h)OUM$CDolexu^J#u(Kftg&}od16cG_oFyy&>=Qo@aX+HQQBr;gFAZCjE30;cx ziiw1TgeC*-cad0}+}t$&Fg(n5DkQ0ypxgymEcvRrF*K$Gp>S_N z`2%?NuemM2NPxmBUFgWeBdr(FtJ!I3h7Jx6GBWRqi*10^q@gjq(47QD_tO3 zaWL~nU*G&gen%R_2tY3T0Rtn0WB%GT%f_*Vvs&o`}(zO zth!b2yHK45P;@-*-unU%J0O&p&8T97QWW%8py?UV8vM{a5K(CaQzwp1w{>pIgh`Jb z0y4O&;|bUg0k?jD}0-g>!h0cHT$TR&Z2?0TcQA-Gj=rUa+tKz-v;NYpBzR0Ps zaCUaazPsDW;Kbj>M1`RaKPG zD+ml3;5S6Z#yamUtD{6fHCEHW;C!c79Ml)|sUv|y12nuP{U7jAccA-%Ix-JnxovYm z^X^UHZUfvRG+qOa|2J=Syn%ag+nhc~1HdeYAA%1>ey6Rw8)U1$!SvO@(jW;QSp^RJ zc$E#TIyun!0R*|S@-#?2!EXjJEK&*zo8RZI+S;Q4OLYe13kZ|}3=N1@KnMfAqx6#} z^b8D8qaB-9m#exHkHdDL{{Rmp=HtIT2QI}s$qbMuV_?XgpPvUQ?Vcol4w$J01#)6j zpZ_hx_%wQUUL6o{y_SCzm_l^@{rxa8&ph!-sBt{H_F6&cwNH8(I; zppb!V2Vt2h_~+r~Oak{y>}zkQ<|i^W4ZYOQO})I%pl@AQM@Q@!oeAjhx(gfHn>TM- z^PRvTf~tFtDl-dkSrzieOkpTrfga*xE_FNJFd$yT z5=#^H&_JX#5%7qL>Lboz*33__x|ohv+i40$=!s)XZ2Nxz{>EJ-s1NM6hn;r=Z4+8y zDi54hd$e67icjUiD*TAc#yJ*_03-8E{w59%o&PBy->{c1$IB-6<)8no&eiinS83@R z@m;+9{P#jzAf+43nnHOGpw|2@>gdtyw=sY8^Z-|J{b&&o{6~w~DoX$?o&SN3#asGj zH+s!*bb34bJ1U=?aD+^h!GKa!KIq2`Ixpz#L$OB`*t{T9Oac}$H`4_OnQ4f z5k?CmadN|lpNGf3Ru7gu=tm!6!PY{}A82V!CPtod-o2@eGnMS@T};FL-)E8 zN@9!P#0J$|N0RL4_oI!yZ~p z2Hy4M@Lqd(NJ~l{9v_DT^%=^|0Z;MJ<@)XV4S*_vWCsfi%XpcwH0;-^ zssv|5Z(EG^9G=wk{WRi?@2dRrMGdVrI6bj@&ULw2KgTs* zGqNUI-v`srf-o7#lHHD`>+I|lAP;}Bh&Oofk-1l&b1TzlY<&FIty>@w(gb4#G$WtA zAx-}efOyU%E@*3#r^U~Bg(+`xdHe?iTOo&e8E5CpqOO(o^^$cqO!C-fuMxR@+7r+x72NQC3DO?%lu& zTW2&LXr35-eT$|{vK|h4Uy`{RC^cPdzRLMpbU!8a*BlC!&Hl#QK5CnKdY6lpx!=nP zY)-1x1c7_WMV4$d;Q&lU1*}>Jl-x$><(v17pPe57pp=W7+f8H&=pP#!8=&g5zOivJ z<+1Uqb^;E1;$vcVWzWz{*n>HW(P8h`r<W9 zmAKNFTld(Ztq4R@%zlx;Cc~GsHaAxRoS4Ucn534{JX(Nv3FT;FB*eac#TQIoXiG-g zy`55@vrv-bo@b`+tHP53UcelK9aueFYjJUr07(q7g#F(~F#6!QAS41||6^rlmeWt& zy}3Ud%28KWx9{-w5W1p4Pf<^A0uY~i`uf_eafO9eIy#9@8CRE=JKNjQimml zz=HM`_cPU=YUbs=Ua*(AUx({kD z6hHv+_4O^kUPUA~4Z=vUipcTtw?V_M9iI-r1HeNd0kDzxi<^dq=HbJqjD!QYqUt@W zCtl#kUDEG>Q3?tdaG5RoSdB1)m7lVF_*r0c^gELfGK|K=FP4B{e_*Q+nAXknE_xWu+HGF@%$}E zF)x*EfX>TC!%h$E)>MRqSq_m+;E901CD4@bkaGP5Cn-OliJ#vUh6P;GvOJr!5yCvc;AL9S#>wP%l;``7LFR(#H zM3TL&1rR1skV;=DCnM7igm+Aw`zFT5gZ=&Bp#kuF2*m7RI;o0T!*r%EA-R0pH|d{I zhDEy7C8f)epoizU013tQgMZlL$w)4*k5N%?OZd>acFhGdq15pI^L8Iy)YsJs2@9Wq zQx8npGjO96HG@I}Qa;4*<#NGa<6r30km;CgP2yW4!()yWY1 zkIp1yC&D;^KmRGzX6t;g}P@$vjdKi_@& z^uYOS14wR28JM3X!l=c?YU@!h$_NJe83#z9Twd@g)X_mVuf08(^00$@DklUs5X4at zpd+Xs0h+hZK}}JQU2}hXt$I2RcYkm141}T%J>ig__VO};`2i}iQN3~}G8uc3BL)#R zCe~m?6FH4B&%n=f1E~{;G@A}*Z=F84+~8U_pYAr}k_$Y9MmDHssH>?V2dH#GK|xz} z!_h)gu2Krfw7~)uq2v$|@$5+!1f2tJvtNIpUxtDP4-2rEUC$rFlL0;lc*5YZJ2-5^ zRtyd}JY;=!^;igH;j{n!`xmBa!R3T`haS4{UdoPtEiwi1UX|^n4iKbpipvi7A7JjT96Dv=hDPYs{OfscLl z#+}u%%EG$3vHpHeh|4%Rw_vww@9F}GSU5z=u!_$Y($PL3>oGn!$PL1Fyq8z3K_ChU z8(=xt*4H(T;*yh-VV8(HuWxEPhv?)sCN$R^0f(jB;5ia`C8=8sd>UBOOEKUrz*+z} zCRV_A*=Ty3Kc9WqwFXnHW6@i70kwEzn+FFB{+{43fL(Ti4t^_;O?dp+SB5q!A{iu) zl9I+@69#%XD{<)3PcX&c(8W4RnFGc97BMS0`dNnXWv7qqNBGYb6+6CHZ)lY0$>usa zIjxRYD>KJJKw-B%-%)N*xgW`66W*}@#eznE=l2kJ=q4uy>gtt1BL_oXQ&R(oDrgz? z`R{8XDQNawJ|yE(w+cj876IV`$q#V7!LE2f_%~9ldyj}Hdz%g7B2^hE6vs#WY-y2- z!@qxD4(kZ0sYKKVYvT;#?%>*nhu`si^hn(9T^A}uG6OaX2LW>AyUNN+aNa^&uzN8E zp6KgSAZY*f(A6EYo-)$N|Af_mMqAeG=)L91L*$XcX4q=O(exfMMr10g|ALGU%&?2 z+uNJV7}C24{;>!k-yn+xN*a?FXVVuQ2O8k?LqO)#X~9YEV({0-X#e}DWAKC(G14w$LcgY+Gm`01DYbTv9 zgn{w{(9_$PeyIl;2lIAg5Yj3o3%szfV8X+?cEz{4+Er50zqE7%)=W}jA_%745GpDz z?go-f+Z-<+pJiID8uQR+pp>Mv7>VxvRux^y^vdEiAAQ1g8&e{^9^^HKx`Y_xA>ks6 zwS-1LeEi?<&S`FXJ0?iS*#RWdknaE)e9wc)HvVp6B_EzNqogHCZEjF+ zN^&yKh%dXm0T?92JZMkQGyc2FB?TFsdVr=}ujqjuJd8&V{yNlxpFTL~2-HAWt~CC6 zx(W5t;Ah3l(7t*FeUjad&d#P~S|ueV;Nc;4vstkO2xRjLc zG|E*|viJ;M{vz+94kDkAH@y)0V&CqqaVt7G~J0bQ2l#UH?(7V? zbD7lvRASaa6F;at($Y3;wUQYa7+CWq{g{E!j{d*V_U3Upu3z83&E8}V2^o?h%1i@k zphzN`Ge@RGG8B~tL#9Gf8PcG6APLD>rjR6br7e{jRt#Pi@fjVp3{D*&NJ`;@C#|AM$F>S*&4hzZgOD5ws zv^z&Nx5}w6B^f|M>BohA!{)C2EOnX&DnaFwRfkK7u|luC1y8 zr_P<5KglJMl@wUbzE<$din*Rm}4`K4{vLmoK+I*#F1X$KSty=jJ36eC4Onhgqyg52nS}bn{dw%3Lz4@9V|Q zUg2csGyya=Gy8YUYnlWERZF+QlPAS{_wEfE>mDK{C3P88jAX{~gMrOoCC`Q>CTXjl zyQjT)(fm}Sb++U7>h;T(<&Zi6FVcUr!AbqV14}C_c{#ZmiO?tl9G#Bt;HwA5x( zb{rHkw=RbtZDP2^u5!O-@k^JwPDC-#sp_6U4=I-(V!rw#>t{V&g?T{%*zq#()3hHsL$wLLz`TufVh{J--QQoaBcNY-yl7Gn=k{IB+gCT%q*KBQrioj42t{UvZ&SLc-0crLYy`Gs4sR=xCm%g zrTgm11M^&(%HcI476*M?`-8u{GE(R~WQp*-{Yn}d&afXwx&3Tv8XVV`!-k}YDH$NL zN~`3AZ|UHCB6sZ^;1wCSNBINe`clriog~~5TwCr?-Ek&qX=-k@H*eaLY22G(D%^|S!GTSARP$~ppFGhnFxfwB zMRv3~kj7t@5lsMcMS1HtZyrqBAW2CjZi%Nx>&=T77kH{3)XZmk-_r4tEpO7&#!Z-z z&OvqS6qSRt(~sYRGR}mPv~hg{0RV%^skn43C`f>&?NtNEA51Hv_UBp@pkfmIRb$OV zx9isxs7U)NJE`-Io;-ehX-T|5I63;zeBL!YBH~F(id;={!ROBpm}b zbH(LvMel8rk1w}j1AUs3snvG=!Rls>J-dfxi{k5hJ87OAe`xOgE5Fa(AEj_%yyQ{K zc&qL@bGxpJQm>DeOi&DW*I410@O8nYY_r%M)?PVQUk@yd-PQd3i3n~R&8n!24l zbf|N>M&Ch$&IJTa@Y1oevI3MNTlQ1j%s3a88-u-z-dSzlOp8&+md0AP>C2ak2v+-M zi4Pn0JwIQj?@=<7VC!?_&-5R*RZ$x`vY;^48+@OqFv4rBf`YM}rld!LbJMPA)2`9R zmAoN4D{Ii;!5RD#h#*EdQ7r4mF44QR^3Lf;`7l{R$`0m)R4R2HzmfWi!%O~4VI@7d zVnbhBa#r^}TKFFVH3vN~x=#S#dY?XEa|Y1-YJ>Sn+54qo+^jMYqJx zKgW2jElM*%mt29*JQrY%tFKx)PdX5Klds?&u{*C#oiy3WEGYSoFU7dRhGRIj% zbMi#J{~%W<*}h=Ndt|^V*QmZnEf$f0X=y!T{|RN2?j}piBOV^prcCM6PEg_Iy>equ z+@(v*iM)Q}23YOsxM!^oyHA35x=g@{iLp9qr#y8k)eps9pIV4ZF5~yZg@CSotM!Zd z#1%Ig{B}&d@8H2Sl+VrYHh*MHUYBm&x;?8{S=ti1%#JGh@KiNb)g!mV8~Nr7KAN@N zf@bbsB&VjVe5P3)zc!y}j2jPN>GI|EL77Z?ur>x1tBO^*pmM8!@+SSY^}d~hN=)ko z=wWc4u+=jzsy8K5`zA6}R1=}4PJF45XJn{C|9|wf@d4JkG=cXnQzmL@M$F-YaIWqibgjNjqJAYnp;X)E{MH|=M zwzgx#qb>(ntXb0sN(&C)#_ydv6(zaqJrB$IymIAA-O?C2k*a3aJ$;Gfu9g!SWD6n! zBSrql%rY_-E>Q&eHMJy^sNQFhgW~zBsvTBiZvhlII5YsFu{DAJ$H~h}Tq`x*-Ecvm zxAzvG^{cBN7k9Vn`<;q6me(t&Ibnq!iO-okH-!z!I`;M3en4W_FuDg3toJZ58d@5T zEyh7NGSgRk!RE_%?wn8GaP8f*~se^cQaAHO*Uxrw$+fiH#_@Il=)LOxp#L8!=%qk4n7EdV#PixAlar`uF{U= zy}w-lHY=---Qtm-s~dFXIKmgo8rk_YoGd9TyGpF5{`WLfZLzamtHb46KF{#ZNeF2=wlBG-U zHI`jmF|nTC$>c2k=hOV{gaL;3H&m@%4<9;o=x{jr47)>9v zEWux+o<~yh?Aej01^4Q5HiN)r#{S7V(R>C&8M*M>!_|`+YszS-ByvGQRe%=b%)XbE z`H^}uS&I--Vyki{t-nV~%zBtrDB;GYCMK^xVA%VsSIiZvYG?*_3)oC2;(frX-4AN= z=vPnXr)rG@g!wzo+gmMm?6_(yUt3w($0G%qgRKgVJCzY57(uG;(mZ|i=(!2oVhmc} zF1LC2?pMCNwV-+xG!K~-Z^`xB_n-!yIWef4h)C{$2Z9yj{AhT_j+ z2}cJ95~S!}VW#pc%GZ9(+UhrTy{@gT!hr|+FGl+6?j|BL)i%Z7@63GTK-c+4Jw46I zISdyK7;pw^fAxK-O_zgqlG@k5o+k~AIxn!VxcDr!{qv@rUnuM0;UT{CUf4gi01Nc= zOeS!&cO~rV9$sMWPn8BoEZUs)^tI9Tm^~U#rFk%)W=#80U3@s5F_ohvJr3;OPuiVY zwBz`(W8XjCTfSn&r5o{4M}gTmikNy!`*$+6#DoOj)29Q~otN3w&Wa_I2a_4ip*UQ8 z^1x%H733Ynf50ud3Fa$}jjs~~y>tpoOE;}q^BQ%qxw$!m$i2LR-(QB=1A_Uz;{%8$ z;)A8aGPW@sByhw4JgfHBWdYe~0Y4%RiCAX7A z46k18K)ANz%D|4*W9s2+cTOJ?Z7lDrE3M(8>eBpkE?NomB!A%$S)ewxpYR&9Vht2p zo0c-EX;y4Vtd6WV{UG#f9V&!>>)`&XEj9rpkhokXcXsMI(DpqP4-{FEfg{>~SNpg9 z)gMx!a!KbVui2lNSbuELG$NA%_zIsL+kf!5Six(mdj6LzX+Z#!55OYHTHH(dgIa+vs49;5qmb{ad3{|C0aiNzJ1nMSt;85!;{LU? z)%S;p)($N%FRvZoraw09wI%Z;lJ?YJwrI?~vpX|0bCZH!Vq#)zU9TMgSK|9$tMg+W z8rM!=eIhV$nC3GkV%7{m0y#}4?81dvcA0`G<^KKq16JAR^Qn#9oxTJmC%dj*eF0?% zmCXG4sYsQ`dyE$_0Fw!f;22~d^1h_4vP_@axN+PUuQPyGWBVQj5`#zt^>uM+WkLb4 zU!+zz^-=Si1(S%iE#)?@U(3tG`ow7jFvGtWehjSusL28LbmkKvQ;d ztKGLhh3SO3$*#$*Cz7q&t{duV6wE(lWf3l0EHnZ6#3YgSTtL>X8KSSTJ2$nDCb!*0 z8F4`Bw6V*WSgWHWR+~eJhK5f|+f1Ekc6o)tizmg^8V!a0n2F-x4s02` z=QM-2G57A!q2!_csE8SQgwScOwlqPE_4ZBv(VvpOpeivjfrT5r8|E6HLHX3&X=Q7CFHU3$(* zyt_wAPLlJTbLW;aZ-l+{wXE#e@#7oQ{pKd*0xCcz_fI=^?AVK!FHh@$N-O?S1f}~a zvf@bknX#E;8WS2?0RONNpq*LBB=RIU-6!3>0>#tbw>VVg$;b&4%E@0IJa_JpuDRQ9nzPVzn zl~tKAzyp90P@1A0EUhJ@t+}_%D7fV47sv*f%g);5;JXE-AC#LZ&!iwS!+B2*(`tV!sUt6U2-cM@n{SDXPe_Hs= zEiKGbDqvJIOx#zwBkWR;QdxRuzCtI58`)NkS zizLbtKJQ&CXuJ%&DUQ-^9i=lAl#RRd{e5D_pMTzrjATWr8AcmhFDjc7R3-geRH7(Z zG~0gSrhk55=Q>xSCN~rK@Dr*rmNUYlEOT)xqIMPCB0Fz1fCeS~Pa9c#8Oga@ueTby zxl{Y)*U@TRz#=pG;LuPlxw(m5UX6{ucrkQ?7wKbGc6Pn*@tiYGp6)jN2S;QK`sYXA z`YC=iPhiMOH_BIHptrE@#{H z@)PUUZO684!x88;gEbd8D7b5<&Jg15K&4KeZ4BxfUbbOYuVAJ_Xg=d;GFCP?3Ra?9 z3LB^^#{nT8^5_1z*x2<`&#joa+cGrE-PbqEwI$otE3eC?w%Rz?p{MMlW{(ebUGaSH z_7jJ83P<5&|IS-oC#|@7vL=4Ia)Wcc&+NL=FNKBA)?J1BX9taqSiWS*_$60n$$A@H ztCWbod~9~CQxzOWnh_+9w%AgD)YTS)!*=I6pGjRu+B{6v{)c&6;{fkeC+gxZ=HnGD z=Ee0MJ+yD9Co`m8wy%tBjybI-jvses1+84Mg3P1D_BNR)gU6PPcOiN2Dg&O-*gYg7 z;tO0Ir(lI^+Z_Z}0uyqM&Eg6p`EJWD0JgH55;is!?V5+dDgj&9udfBP5vG?#M$Vh^ zlHBO+TT@rpHU>%k`TqT2DJf!rdXV&xA$M)^)LTsEZABKyL2hYnt!7&yE>rmF!2yJZ z5c(oBzXv}l%*14D?$w@#C$}6nRDHGoNSF2vbm(1XWgZEEbFC2v2U?3V#S@67kXYs65r z%t@QCZ_T~UQ7OzfflxR#hNX~H!*L18ecSFU6Gp>#<`c8wCHE8@SEgW4I$PAIR?mC- zydUj{$o>1BH9ibsMRr&n)gI@?yho2u?>7g;bP;il^ zvD{c1R6^Mzk+>$sJSfK(M$M^C5q`2m$$6@4W^9oZ2n7A9Q&UyTZKRIZQEZ z+sf+dJM9VK>nndu*;BVg^BMF7;o(cr4qID>Q+M2VAKrr{prO&mdm)7}dQtG{)8vgW zhwxij(2^cmA3wT~7_v)2DN~$Ni*2n8Wo6bul94ua+_(3^Y8cs3va+l0+8dNV)(6R> z+9)a_=?^#DM1_yyeb=rVr|0R+0BdRkje^zY&T_m7Dhp%d8gEyEJ*xN#}@4UZufw%vuQ^>q8owfdOb2}&V zuHCy6Kn~$Q{M&U+g?9;g9YO#8?c)xy+3MwC4RFZF|ZkwQV zm0vAq6tM+i4Z7X?FN}2%kL55xEjV8~N#n!4Jz!l``Hv3ko-;u2I4VUI6ho^!D z^R`QEZ(H0zYU_gjtkCl*^sZ}Fs;~`o_h>-QfF^Xl6fH0Rl2e)zZEOVS#rJpDifQU= zRc*tk<#BIOTE5-e!XH_$)touMAFn&?F3RfDI&r*IIb5z3q{H= z%040C{+4BYsGrlCw3bgp*^yCY z#*L9jj~<;h9GzwTj~{4?;fi0~SV*4n?3s>AK%kcw^Q%&U(aFfXbR?vtVkBh#Ds@X> zxgxmc_<#6NGvI_IdG}vtfb?&b^dRXI#0?Z%I^l+VNFaj-(_xRbxfcA^hsP?{KCzrC=Yf_ z_opf&hog)qC15R4uMQY6fU-E(swcPchm(CyE4k^4c#F9^cVcrG^ksOIVi)#;Vw(;% z1hr&zHUX81tO`=r#BB~F_wowF81pKP_&O>1CL5bPy4xT>G;CV#J+)KEj(=|1MYXYT zVGmzsJA;4x#x{|bmQE3jBEM2W5SwTpUJ76sE+Kx&kbwiEb~epaRyJF;VeQ&brwRn$ z=#Na&ZPu+rP*qE^S!NCGyJ=Ij)5YZE0W|~kBc*tN}q~sKob$)3#ip7AM%KHDT{l4@@-+CX!}N1PXdQx5;U^p zB<53xQS<_EJwxORfau2 zbn?q2;zLaC9U#V>W{SzOVt>H+zIK&kMvqQSG{nmwBMf=0da~Obt?FVynwwKf265-UH#C`=d)u^CpO2jtUPyDE@HW)c*Yj^*F?>ICCbO zT6@Nj6Q3_whx<#NPA#YulZlxo#%}O61nJcg3s#Bgf7sM0&ZNu1&5P{Jjl12&=Hv$14P!xAH&Wyy|{JH?U6`rHOU*#QQMAQY<^#qmF#}vVo^c&6xf^ z522K%UciLkK>kGpr#CG^6xF8iXgT#rkn zg;|L{epFxWMjAwQyx{cs?K^f*VbY_8D^h9wh7B-6J^wr)7=3=+ZH#Tv>-prQr@U!M zg^4}|E^=+qxJ$eGs0CoH;J1UM1!98-MT(6*ZdLcX)HYzA3@>%<9YlVtsE5h2m2Tpw z6X!-|niQ|^HB10rWA0nTi^*W>v8t|5J~7i|WY*MZDLEw{HUbfK#*jsuH-Ftb8yO2Im>RQX9c@lV#pf`;=cZEwYvkHpxlII|o#z0a3hNsV zx+9}A)Wy)?ooYOEy}CVX(yD%yxp|z{CW_HHE1Rhq-NaM!N05HIiL-OlyI1^QknOVY z(|ZKq^XJaS*tR=yN#(!oNh+Gwr%UF{Rr>n+Mn;c{tC4bi$ac?F88~f251Bbh&k|Pv zi@jX`rMQ?G$Y>7@jHVTl1NrV)b!V3~)G>v$cigzC#(d4Sp=dyg1ZR-uvkZ;4OIn){ z#PY5{sSKrL7iH;ep9e48ao;Bjq-2+t+gm&7M4gKh?P$+iTo;9gw4HYpc^J#Dyys{~ zm=DU}RN?wuX^)wV0=UU`+-XO@jQ@{O*ExuPPaHXNB|bhlvy@6mFd9Hl?s0U42DZEC z^|z>NAf#$Sa4=AAE9QjSsw%0OyT%7BQl2*LJP7NFp))1YRJVP)PquzgQwATzycY8=UQIjrE3Wlg^A^8nSCQd7N*r zUnrNf_JXGK;#GWPrgUDoZ~<}Nj$126juc!^l7Mz({-&!z7LARKmn>nFL?%0f?WVh6 zfiMUDw&Mj;bdwZFsPE*(#Rm4!=7T_(gKor_T=Y5pZlb*WvSgQgI-`VS{mPY+^77cY zxJl#3zj*d+;KB~z8LW7?0OY>pF;sfQ&JdL*JMX{1WkY_R9mdWnCrRhbansDl@^yCM z213&I?eT`$j4X6JbLPyf;b#>#p^O=HT$_Knc=__n^z?g3@217yZ?~o%vsy7x84QwQ z$T4?;rshNO6Q06e+MBN||HM_JOH}+=Kh^W?+Ktv1+OL0lZ%n~q6X@$}!aWd)YJTKv zkr$Yo=aFiXB5`sX7S$%TymhIfO?ZVq9rlY)5frFzOC3Xw{(qXQp>t<^d>SWo~ z+z2#tlP6muO`ABel@)ZTE!rk-9Fn38{n9PVtGZMP5y)i>%64gSFa{h4MEmLL>v;g;GyN`3+AqT&y6ChEn7J3 zbjvHC(!u*vwvYr@+^Y}Vw{JEYUEb=~uU{dY&ZOCG-|m3z;;7GCQES>N4*B8#`}i&c8DsNADIcb^EE7Nl!GIy zjtdE~*kd6h>fk1>*+W~UgU~zP&TiYbs7senS2gQAotjfrSoq5FI<7whn|t@}ZBkf< zq}pPbvT|bAezJlJKfbd41wtS2)+kbEj4Ue%yFG;IE&hNEbQd-v$UI!3WR5os1!8vd#qitR|wGOHZcWd)5yB2TA1%g8{? z2k(@%SsbuU*3HM)cT;PhVEvox(k2W76una?2})Uv?w%RV zz*vJQEsmZz0pJ|pYkjwa55b?`l-icXQscATZ{50ObrPc{GJnB~6e(yuXKjPEKm}yE zYU$jm=f*25*JqiTufO&VUUs3lj46(<*ceev3q zP~-pr%peF~FSe9_`?gTbV8!0KeDti!6@P(IzmCxs){)i%y(VPen?&8)IbWoKSCD80 zxwbBKolRxkM^hqOG*}<=B?aT05tIq}+ol7?Ku*Mi6?g3lA9rRW_~Si%9-tybFOm_6 z^4~ko=JsP!&>5w&{j=MR_3-D|J3&W5i@B}D&t*%N;OJz_DyCcC9}Di z*~TqfR5!mJAG7i-K4pv#nXgB1<2W+}@PfPCqel#&i& z{x(Y2va&K1EVACv1z*7vzJ6U$BsXD#0Ii_=hC35UYOY*aRhRf>-u(9k$V?24j6f@y zsjH(ki-^99ndOxr((c%0WX7xy$XT~ z+Ggf@@6-PuY7%a;rv+o~TsQ?#QXyG0)`jgw@@iufw`6>;9z8_2T3T=eg0N%pn>O$m zgqe0+-MuR^vso6U>8vSLWW^13$CN)^-JTID?kP$;pxTlMfGy z7SB@ocO~*Q(bagc*S{)}`U@f8YGcFo4_q-BU=#dBz_0A?Pj4FGt6N=Fg+qTMCgn3{ z#`x+gHW)vYF1?ZmHP}xR%QPrW({m#eldQ~4fC0#dt}@i*BfK~p4yCT^tI1ceHjz1- znDqBGXU&&aE?l_KSU32k7sZX~KX!Ph7s)=l;hYp6Cr;GW)HH)h)=K=YIMpqE!?<48 zz6X{4u&`27j|mt9`~BDYlNT5Ni~eMP`0GIRjXsXC(~m6e!V$tzIWjp>-Is@O*3Zw% zPE}FHOD8Ju3;Y+FKw~}uIe%6bSytN9+koZp_=pa%x}jT4KRe~XqR7lrTfTy@E~ffU zNQh=@!0h&qW2`pPxSL&P#kh8)_LY=jk0Yv<0-H%|f_%911@H`F!L3+}ux>ifZvpL(;pAjrZz6S695E6nj! zl1Vm_YGBnnx7&6u{WQryp|nW9J{J~(A%7t~`~H2A_45}mj(K=s$0RPEK26C84P9JR zGT)Ezmh&WQvWE)LVg5TP?QfcIySxahI8I)1K!Jr4t`iFOz zKWDaaZ7s5$nIOy!&RbyfaH_bpG}=iW|592y-?+1DKkE~xZanpd5^xT-h+pD%5@y7D zb9*3g>+I6nOK~1j*ZHoq^$&~%Ka87xdG(L~UO-LCBmfmp1vzIgK~~Umm9CIg{HSHOz63llT%znqZRUbl4XP+)v*79n zqNBe=HCz&nP;xuT|K`v{=s-LKUbJx|)Lt>HnJ3lLjV*wVR;?F*tbeIA2}v)X+YC z9u!xjzu*Eu-W+%D22??=d$_hasGtMtUVP<1IN-e;j$uzUOOU$W!V$=sisK7;b!cWO ztnzrti>J@|`+vyEDXXYR#x%cY&mJu;EzBIn)%YXrE_)qXH}xH$4|;*SSX(igEgmk; zd&5e~Ir6{>x$u9hr%=MYc(HJ-1lEkhl)pu7QGGs6x>sY!`GBOBYySMM2_ZK=d+$D? zBpfuQV8iYDZLP>m=(~^Th%uHCjd13D)o;H$!Bw`+%C&!LWDOx9M4JLl=XhK=-Fb)v zZjJyhEyE4C>uhbW&l>*cwT+&t2J*g0Q}zJk-}ZIjaKH;=oqHQ1%&fA{1S*z`rm==E z-jQAZo8Uk+5xn(I=2B2tTiY6PXlwyKlCsc6z^z%q3$5I)=lG5laKFZ~aSiV|39r#5Nebsk7G|)z?cW%zgseMsQ&zW#xZ;7M?WiR$z@6V->-=kh+c! z3%A%(lew6iq;==mN^^?FF+gkol>`9tZYKeZbGwblk%En@d-wBTCGqjwN#DT^2@xh{ zy+yhJPwak8Ev-K~{&wI&R9xI*od1g#BM|DJAbWJhUvnc*R(E`*@8XgKw^g2yEqEY! z!0ZMrp~+XSAVn~+vsTxeGiQ#yg9DaB%xDP9Ut6NLyg_R5;ll@r8o9SCKR!!xX;G>D z%nh+gYLIOxC|uyqvcFg`NLo5iB$607&=RqJZthA$!yRQJx$v&he%V40?4Uhh;u(5g zY(o=`(&pKxF{6a9mSo)j8njoIVvff$a%lT^9<%bh+}3jk37G=`0g$|rQ6@R(gz@8@ zoShK|e0=}@V&e-29&-sbTRH&!g9o$a41URP61Qgw|MH`FUtQu`r7eF>w)v<^=D@Dw zVUja*pQT-XuCbK&KW`MzlKpo#L064ckFD7SKNni_c{7s6O6gb_-Hehks&%gFg!nYzIILV6Brd1QWYHNqS zJbfAlgP_B8=8PHWDdPLL@88cu|lYG_ZC0NtW)+#X{=z_ zpn$n9G&Pm<{qyZx_(d)?|0z^g1VA8*E1@tLJeyZsJ(xArKEqf`N7 z=-#bc;qi(-XHK8i7R#@+|HtFI|H?k6jl*S;7;O5$_$4)K|B6GY>JhVchL54`_pd{d z2@;@z7a;q<3P^3xtg!pFwV!ZMBpf#y*V5yQ>4z}u+ys@Wej=S=$3jCxbw=@Qcq&8; z4t5e93Yw3z`U|+I{S%~y_^6JG8yXl01qurG+}E$;5mWIul6B){ZtMQ!INB?2Xl53< zv+KXej`ve1QRHa`zv2-nDb)#Pd%v+w_?PJ^x(IjjVp2ai?u=p_0&)o}=1pFtMqTkQ ziOb64g7L%{<+z(Tv>Zh6z=6$56H|bOva)JXfqa&J!U(6<(e2ggZC^4!FsFH;uYb9|0E(V?N>A#06s#VP3-^X*CrGf_syGA zfq{!cU!!|1DJ?zPPPM9T41Ad!cBmV`!AJ<~q@-2yzI4$o#)lDlI|!iZ&;;3NV@J*c z#DoxO6*&nDFcou$n6Z>7s_TX7o4sgMwV`Bx)UE?Iiu-T@-GqelJVhRhMrH4xKTE9?>{rf zl!8i<4Ahq&a&sG;lH%fQK#X7$YKD$Eu5D!X3}Dr?_>F?{=XnBzwp!$<(t3WGmm{iD z-5F7@JBlp77#x%uuoVrB*&%|GrkIfW?G_XyQ7etztYV*=r4R0lbSJ?6&1m5Cv$lHoVa?a<^XzVKm1 zjpUl3D7(4e%FCOc>n~ZNdC#@x65%JSnaV!AQEmEO?|p#Jl`IXSxV3ah|vuGfqV;MYKP#vl*rRj6qR7D6)dDJ=w>(Pa>5SF6znaSQ?j6KP2>=HU zgaZe(@O~i~du4WCYsv1R?G^ctF_niS&d0`<15Ojee5N{6q2{@^-OI^H+mqDgn&Z)} zi|?Ts)r8_hOuW!oe$?>cdmY7(S%kDJgWJ`>JFyVrXwf}-+axw9?{^M&q3aT9WXX`? zy>=AaEqF6|K#^zjY04xZ+&B~$i%hKU->z>PcX;c(q#z>=w+zj87)h;1|2%X>ynl5C zg&JCtAakxLExqMX{RJuY4x!q zLs|-hh)aP|4cHnh46p}D|G>hBBe}JZmL2!4roRrWT|tU)A4?GiV#Lo=&PlbeAodz3 zE6wq?Q9DhU0t|wWfF>Kq%KY{=M&0SvUK9&^;{WZ^^iHPJM~TK}ef^Vx`}K2b0d&wQ zV`9waDE9aFciB;<7*pKY?v?FyeHB;zi&g#ew>-R7ax3{%t@F5n>8-*!-ZDirnIQ+^ zs|xhjSz20>+R(7CsK}SF`EFwn$z-pL%iAyh(cxA4wH<9vrk{V`Tl{Bc-EMQ`P}k-H zX_N`9uEt(-hjs8sp^2DFk*^tD0t*WYKoXhwtP$0D#_Gdr$97CV|HJ9NZ;uWgmJPbl z_MXfoB_*745a!Ol;|Mp~|9HI5?o#sQx4jR3PRrB!$6GCNy%rQCEi($9fx=?R=Y|6) zFBty%ba3m+c13lGmTOC%wzf8O+8DPUk3RKlIj3a3Y}>XgSfGhHgfzfi8tWjcR6S5u zk)kViptS8|Zv|XX7LZ&X9^DT=5;$_Ypz#y^clw<@dt}ZCY(*2#Pz6Dg!ejbYiEFYJ z6M>+Jc;s-h-tWi~koXxJ`yc?Q{-PJKna+tdXOf#!-n~1QVxg#@AjqRBhvIJ680k5< z({~Eo1bGS|;ga#DXrq4hEuuf-x~WSwym|zx4utw4eB-rm*Nr3cL{Ye_;-gx4bEj1@ zF{A5uDn+Xv-S6xMgM6CMxXqx-2Oy ztF~*0jF8rxJe-)6Ctxj)W;7VSCY*`Ma3HCi`N0rCtdFlOlP6Sj*kA|(HYee7g^3D2 zYS;EAK z-}eV`P1=^P35ZX^LIUypTIsffJ?xdb${=n@q6v`D5^Favp&5KKCk4$IO=DgLX~bFE zDIBYY0c30O@pY|dB5<&}Xc2PAEZ~M+wz%ihrjk%ksJTKpY5^q0T)Kb!C&aqf%y7%v z-3o>ECpVT1DLtTWrEqok;MmLJdfyi~-p=TBKkAKn(|h_r9h+0E?49b9LB6yi$!Tfg z4$e{td29^2x^N4mC@)zv$kmYFEg28j2C*`#?8~B_4Lui)m&7vYj6jk6_oQw(ST~hS z6+IRN-wVMGHlP@+<>JL@N=kuHoTzm0E@IFrYFqsGNuPYV@hXqjF>bWt0;2|SK+)k3 zx5>$YD3iW1lygHD`T}16y#sOzPo>Y_+9;z{rB=!4Hfo&rArKN3aUP=hPY+aUg4adR z-Md@2Wwgzr%Tt22>*iq_SzPRX{jq|+yhzPeK`QOw+8NOy3Kb0x3yxGEP-ozs0-h+fb)-1pgd!+V8q#ux{nD!`+_H6d*!%u(k~bC& z>689lW?8OAt?@{`?@Bozixuy>TJ1S#xx@TTnR;(L59;spP~ZS*fB*K4HUm4tdv4~??B;)%4wHoOMQKH>Z!{!9 zx;()7y1FRj@FP)0R<(JfidZPde*Pcew3m*p2OWLTv5g%Tj(rBq|Ka1ukJHi?B+_u2 zj#wu?zvmwOS2O0ufjN0Fgs@e<6$m5(v_p}dz0RbmcborKGo7}L-h7ZZXzS@`LWQsS z3=$CNlDLP!Jou4Q=kx+HK(@j!PbG&-a9?x#{DT<638H|vscE9-n9LjB{eDzeUrR{1 z$B9iv0w)#ySTGJZI)-l-vp(u~(2{ADS{uQw)J9sd+|P+Iu9`hS_#2 zQ$8FME+WWFmkQ->(-$&GubW*2r?^QTpxowVT>?Ibsp$8AA3<6wE8l6bLUNhJCd1u& zVh1%fpOM=Y9j{2Tx3?F!GkOG%b+R)X;JzDyB{jPA=7^t=ZSWeJ=61_?j^2iCzjf!&vWx} zy?lIhMj1~cmu+v4gsT;VrmT$JZufJjzvj@xNheOd9Qfb0MNU5^%DAPj>lLxCXO>7b zHk>UuwtQvcxUjZs^MeohKOfvvw7krm?Q&fH!mNwa+3T1eSi+cYMtY}ODoADhX=3$$ zlS`J|o3QVG7wT3S8!N0{R94(EYsSU{x6~E?{ShxjN*(`{tNni59Pg%6>fft7OwJKR zrbWi~KN?6_$Q~Ijx7tFtVZu>DW^;^D*!*0@+2x#W&iDOW zvR5kmwGAyT9ago_f28xPdB?TuwuYAX4@q^NFJ14@VW71rF**9dm`Cp#VtbQhAW8xZ z&#j7T>vX7E5=iEK#@k;a`Fy9V|6A>J{djC!XqdZps9ek8DYR$|SIy7Qr(EC=L_sZ_ z0-HC7o=^%{ByCbK!0wJF@w4%QwLr^b&g9@~|5%4H6NalUTWPmL%cLG~og*3qLOLXK zK+Jatq3HOJ*|pI!J=tfwdk<e?Md$uu*BBu;DV2lo7R+_B#>BGgN^9XuvxT@V&A`DLKm zdF@aGvx8-ypR25}(>l_)COsu({e6E??fi5dqcBGW+sU8uyn2}(Ib>Eeu(_Yv|Hlv)*@~l%mcA zi>R@aC!Z9rB49_kxZU23`^!bFV92ZX8j|85^VaWH5nfgr*JY#LY3O<+_0gnr)+Ha! zmc=96MjJ0mP~J>BQCOe<(mg6=mPqQyma+rA%$^;2rSuY+#p%VJG3a0 zy+HFGq?DYf7guKcmz_qa&tj_m(ZeX>GtDz<>+AEbtU16^M@8?QT3FpcDnS-u^g`&U z^FNHPmktX?*AkTqdGh2tcZ3d)h^uM75t7LWV5PxITkP=`Av#NT2@vl)Y?wM2Dz1L0 z0}gledzjm1%WZUUm?5(c3J`_&n#lt>@-ibA=iSJ0rsC)KG3LVoQkuKo}RU(<(0(5HlXo)ckePOZNbVHSO#(sts44+7a+I%aD5XF z@1X&Uig(K+t&JoTQZztAUj9e@?3cg*^UORfx`I@M5a`@onlv;=z4MLKHe zo0!Hw#S;EqD)%^Rq!>tMw>9Vb{L;2yKDSY>an%cMfjOoudUQ%$Q$rd;`5S&&(%~g> z3H{}`0I6u>+Z@+0=h2;KDa<@CRaSiV;?_519E)4zi%Q#Kzg)j}iVqGn7M&gAsS;^v zpVf0}RnnjD-Z_(+yQf{QP1qe?Y;K4*f)=~s%XPRJeab!Wele>Wt1)j`uGUz;4;qK> zYO8#(?tIMX;_c1$2Q6JlcN%}+yV0krc>#>Z)V>*aMcBX7Dab$C7aWI-t*srm3z-dO z0n|oBU>Yv6seTo2=Dovo{%b-05{s?7``b8kkVq(OGB3wHdr$(QwVF0{s>C(!`QH!- zrFTng!1U?uW8PXd0NKpCsr)Q?3K*x4i|kfw>s&gDxc46i5(U5ke!?%K)(E{_XZqIy zH+O%3*^QuI_cXQLZ)`^qhw0nT&yQ%!-!Gn&k(S&W|>`2Hdc=RDJj7mTXwYxPY z|F+sVEj6{YtSlsOznpg}**sFZL`qL^T(4g3Dkom$uddFXb%&J|{AjR7E%?(({d_u^ zFDKbTv}Z3~um>8ukC2g>U0MD=z>Og-`OCvGQznLUL}eW4i{;~Os|b(dUBy?t*Wd9`)B|&tGT^dcq@DJ*9><} zSpA@*<};iSf|3QzAJ#y&pa3eWJDnB3iYjxB2QE1(!!l%qG%<=*o!tJz#rHGo5>Zyk z%&GMvajZ}7Dg%i3XprP+Op4+U3n~w}W((igq49@pb1F#2Q}8gAH-5Sf?SQ`GNp=mr zfzbU>eQ400gmxn%yiiTat;aF&cT`5SYD{Q`uc5@@_s_e0qB8-?Zu*qk?%qweWPcUA z81Qh#MGmbr#yfQI;H{fCw@vq_4hlfDhJ5U>R3A+^0>tI|WBn(u>4+??U7xsU{(Mx5 zrq4H7SfHZ=|E4DoovC=R5FI&jhhSp;{dP)LK4cyK(gOUAxUK9`9#s`>8rpZoYkDS} zJ!@b2d2T{zh+;-`!;CjS?5&b^>y=&3s*N`BZ=8Of+cfzC3VmhkoWiePxgmQ>-;7Qf z0&5G}f#C(|n`5_-xTWibzICXW*RL1!Zv8U_rxKnysq)?)i5UH8OvdmPgTT-Kq*_9E zMONk3PHQrfi&U)!f=99{QC;(IyUN8IJO%R4tM9%gxo2I`b`u}wDYQf|&@ip(H%7+o zUzmmNyMMqH4a<9ao-&=0@Fu&G-iMyQ^lGYe$4X!t^Ia4Y}uETL3in0SEho9n=ew9zz@ zhA?E&N) zU@Z(faPX%XhZG|dYv+UXKlaLO9$Q*!pH%&Frn?Qz951i9^#(3y?bBXhQw~itDf`nm zpeRapJq*uwO4=c%uR=z2RNKz5hDwoD1z6$E#_2*&iOJV{NaP_=jPA7s0X_0xsV66o z7|Y*tZF5<*>LZ5%(@w&#f2TRvKPa!D5WiB9>2n;+U1b2owA39GAo}GFx--K<&$_j} zSJAE*g*Y#vsp=37mlYp>e)qs3DpLq{qgyI!X1G-3b0Y-}-Nu=LF;O=rok{bJ{8a+K zG4?$FWk&y6*AogFfw#+7dRgTvMtTY-T?ehNo7xgl9fE(h!EFi+MUg@fs-}S1)1)|! z!=JQjOI~Z+`#YIeA}%-g{xrsI^sGO9^k#{VmEYgdV&A8ZYp4AY7824w@$K#Fx*lmk zG1lcFYY%U-6UFFQ2MQ7F3c$Mk(&4+$$5FOzr0sl>q*G#-0JSVd&fmb zlh7@4aJV&V_*i-Qvi$Pq6DK~tHk@$v{0aHj8P8t7_7Z)Ermx_YOrt$>-Uuy*As;H!Y zD9xOc41PYV!b;jT8G?18EbdrA7Aqee74_#YyFLihNBRc=j&G8C7O7uw3R>;pj+i+v zA{6sW&CNA7y%|Nh#dr=@5LelRVV-ABo_tlbvhc*K8Mjs6EpFyLA8}N<0=$_f7VW1( zx2-&1>EhQK3;d=Bu^v1s`;1pv8^zB7;s)S)#28D|Kkr-fV35e9&n)QHDGpE83<7MujAs%qE=}W^q`3;W=Hk48-~(@kom3o zsMesyjnUZ|#lX6t_RrJOdJk23TwD!W8SQj#VZ_7n>&nIxQRJLj^q0hkEmthE`#7&A zV@ykEW=4Q|&srgf)P&SEtrO|4>$c!is;amXYwhrAz@rCpn?yKnn_czh=@-Y`}7-qMV=*VE>e?oM-3E4?>pWfl#*TQz`tw%5D zCf+bNNe;a|ERFC%Z7NAiQ+ljXPWoyrwwBWrdv|AdT+VF$PCl8_;qID&E+o>vF_G=TYB&b%_&$QWG`Dk-la2k z)ZMlb{bS%miPX`d{4hg$4yP62jogxZ+hk3zt^uNwjmFECsbI0DIyDH@R-;u#M1=MT zue0aQQ8i3hc6}_#)7uRU;Xz4<+z~^t2}-F~uPz9^hD!zx8G^?7GwR8udW{?BAFqBl z8ZQNl4f27?AD~m|yxO{F!V$t}GJ?{@I{;0r_4ou*T+CY_iw;@w?`YgH!? zZm?3AHo}cX$f>PezjCFLI2y_QyyAl?7J*854Wb32EZQmq;Iz^v6rm zAuAtwzKp`Igb(B(LifL2dYX4UEdvP&6{g>PSh$VbtwNM3ME0Jjli9yy{Fh35K};Js zjBa>T@;6bFq9i1*dG|VVld~)1B6a`{z%#_Z+rojYrgo1ro&86h*#=-zl_d~p+%G;o zh9oYUE%iOR6@dqdyqnwa@ATF?@M_Uy@7ZxdoOdYjc32rl33JHW2Q3}vga#7ZzFiQ? zL?7)^7Op*Qq^1snS`t`JWu6MxxrH03cEP>{Ab`%o4Sq;GREI4FSS@=bzH|~7Ma{RY?~`6VzpW(qdBB^Z+W8ub^lD^T2D2)@7NmZEH5z!grlyA9 zuivlJHa#gaL>V#{reLxz@N~)ka=%eyLK8~l$o0`c<>!+b-ly; z4JHY%d-q4q(>y|u+es1|2A7Jw-f^j-@84H3m^5JEo=%PN2c9PaY;gcSfJqDzp ziXq`j5L#`F@X|jBm`4f@Z>c)W23yM2=iL_Xin-hUa&yg?fWohzMghE z&f@B;302*sa=jNWYoXB~;1xHMyGQlO9H>99Z_30GjL4OHR5UJa>&o3%9|t#=TVHY& zWE&l%veaAQd*W~0=+(2Qo{rARID{Drnn$3hBD6{^k6cofVnPe7YarA77`q0a%0{!Z zwWTAXZPD}odR^MJldt-fS1%?)ipkKEw2`BS4iKzpp{xf;`tn6vCGbqh1PXU-^FRY0 zo}M5xNn|yYF4u=j2=8RpfSd|f^IJPcWAeb>O2v3}Io*0ksjIsP5w2QAA$a*Ub$TPv zssjrnM+MX41j#t9?{EDnyg~=Z6r(0{8eFt79)*=elvpTRO>6;abEX}rOxW$)%NF$6 zr6csD>WD-c>k(X$_2G6A!z;y=2eUaOxT;3ec6E%P@vmE{UxN~sRx16331OJE|4i+7 zy8V}Bh%t!Sm)gIdCeW0^um!uRTVH^03)9YKi&3W1%ET_?e0anyJSl<7f*7&Gg-afl zLZqW4fY3pbZfvU4=F!>WEA@E~j}$Do5Q3}WSpdjjW- z=o_&I&QOejLlwuGhwQlJ3w$J_b!gl4A-xV~I_S0EBSlp^kKMG8$Gt?Ggz=KJrtg$`a@}Bq1*TskC$k zL!*c{h$Kx+Qi`jE!ELOj+O37cdzd7@(z;6rzrK=^bjwC0y5fx~G zl4UtrU42#XV|oyL{1}*4Bs9(-T~#|S%mMl|dT(WY_i-vJx9QFUEG4uwSg^nYUnf~V zcT>>Fqb`nlePPz{n?P9PS{2N#S-Fxv#?;S9zw>}?QR>ruOPHo`FR*=$-QA0kELv{F zq*Iu^%D#S0J42lo78zOb?poyT-U@_Ub|z{S^Ly`^+S=iM_xbbQ|F$<`3wN5+vT8Kq zyismfmR$O%_KN@SDuawzw?avXgFiH_f?Nf=7b!i#(TsGnN)ah`_NApp%a)-&?%Pl$ zgs^i{Q((;=KMrFDvIuE!hDf~1PQ~H7e$n!)nl#a%KNu&e(s^eVB%m5iwPViEvZGti zo<-ZHQ-Bl9SXs2LNPYhN_KqU=9qT!yY4$<+Pw4m3!QgxyaIdI~WNG2V1@j`Rizk&n zrDT>GG^n(=cq8G31s8p%ls72~Z%!E~2AWlrhx*%>_tO?49o&~r>&`p!>~Wu-Wo{%Av+!^PsN^H`**oOs2K!Lm&`iJzd@M0^=mc>w zRDF@);mj@J4nt2wy*{yT-vbQP>Z|YXWtT>Tg{=VBVkMCJqafo{eO`NJ!t&Gj%b4S2 zYWifuHKN&oi7RkO<17_1p&;7p&X$r74JXgI_=CdGb{HZy)<>{z4QB0%&q8 z4bcRb)pgo|T5Q~C#u~QDilJ{t%n$NcGzexhmKSj1VWbIZ<>;lyD+7GM>8Yi!Rwl~s zh?L&QZijm#Gsl;+$QRaq2m{bYcyXWce_kBo3RxVt^xBhW&&E!gwD|ODn{$erPs6i8 zd~kR>Ca!OPo^OmY%<1>oPg4+fj~k@Cb%=qV(^RLQ+uGFz{c}RJ%SCt8w*UAv`(T$Y zS%|g8WJt@rds@wmRNX&*;zU_DqUbZ-|I^udM@4z3dz=JCEK#Z*%^(3{LlKm!aYV48 zj2P^ohL%x56r%wtiLk3dQKYCSAWa|!S&ae<5lj>Xkzg4M20~Ck1Q9`sL*36i$=!4A zJ@=eFXZa^N2|6?H{L1rupKmdVu88;G|Gk~sPs0;PukZ4tsIa6P=V$hJv5hoQ`5AFCETM1E@h|# z)P(Gm(Cl;#`O>?MuRJvt??XGS!4P?VS@)e$`hWDp+ zOJ)17pgBvN@qNn6rY(jOSMHQ)o<%fa(gfsZ7-cwWovHBI74QZK#|U#-{^iV>+G8h7 z&=l8tsC86U_jl$D^b`)@1i|@DN7`HzBUEC}JHG1?9{rwwRuV=P6{Qs&xk^>U`hm{K z+8w6sB=t?VI{YncoDr@W>RavfG?wmL-Qa*w6r*#-CPk^{d1owj+F$IDO1BxG7Fz!o zhSwT!i1Sx)Z{MRk61)Yfw(x37@kZbEwBVg8wLgY8S@_u5NqAkcFcL@ZHF!iWQeq|4 zMK#?*B}Q$-C8kE(nAl!ZKQM-?-L5}2;Qq#jmn$dtnJHk07|M&BXU7g5a`5i3jiyuN zs#g`kwN+M8c$8J8n)SylONFy961F`>2(UYi_*7Y9y@xQdPqZSxPHi_B{raJ%8}K-m zq*u(_w<|-t6++(qu#GqFfuVH!VA}YNnlV+OY50R_kd`Lu=-8`P6a@HZWla%!*|)|H zmjJ-)m}p!3AqBmXnTc%*sx~2x%uKLo+3w^N^Mm`=ts;>tL0Al? zxq4|5I9S+`lpqh+h<9VR-%6PclLNw9k6ezE{+!deJ?){jpk&N=qTg3(s_wz-EYah} zz(XJdCN_kOu%g{QKBq~|Mi^xwT|l3?_SPM~5!x8kP7HSj?3>L;3Ex9ik;D2t#!b-k zu`ez=J;zSoKTo8GGyJo^*%mlVjV4+KcB)y8GfO6bXle4Vn(Ib*VzVaL=(V=a zHZ^4v*S(W7rM}bD_2m*QMVY3t0?a1kVjUA+{I9s*POKL3IEKu;Z($@_LY71hY2fgqX{ux|wuyvmBFP~M*_w+>qMubl^ zH^z6AN zP71ddxGBhYaNM9|t538X7bLh?x0F$^cma7(p$JkzBNaX_%wt>})u-5k^Q5aQ`;O_? zR#v*cr?$Mci&K!>&S1r<<3J7)iOApo-noSUKUK#*YKgPht-$2?&JIB#DmI7c3PZ}=g`@Sj^#pf@*YlQ z2(|;4Pymknd-AOQK=g8aA>I03cMxc(3jPq>ZV1GqIZjP&aKZ7<%I;ZLwVY#W0>3qOY=fdD7OM^&F#;SZ zcZnWJ>RG?sW+WvHYuK+^!-fhW(loW`fKUwtjJp;Ysj2-n-QY{p)-O!%&E^TK90akE zbQF|I$Xk6HCSrM9AAY`1zC6)^J9wGu`hRTsKx9LBG&NVqaZcO1`#S>z$qd4wBF&jM zjbnIxrSY0$-+c3dD5do0c}hCCZ6Z>XSepqK< zZyaoR^UU{o9@2Ij!{eD+!?*|)9Vr>^hFb7fu8q=l>i1cnm=fudOk6=e5x+O|<)|@$-he;S%%*BP8BPNU0B_zaw|5=)ujU7M! z@slUj*ZfanIc>3bS%1uoNA-B=#7tjL*VaKDiJg!@A!qK$Xo=oZFg@G8{h@ic&8xr@$v1@(7|~g#iI< zxwMY0$ovXF4T?d^_SYpoUnW)9nPjPTkE2T8$ReP;L&r3W; zO4%^HyxS*}6h9nAB_$=&d8IYGm=9)L=gOEPc(66rDZU$yGkjhb0wM~I8zMzk<~Vo6<{b0XlD{h0o%*e?Pw0K{T%XP^X^s z7Sij7jGTCi_yG1jyiwd8nN5x%N)@*fkZ?)z=rT7OJEBz}d}`uSrmc0~>|EHg z+%`yeaKkkn@hIJ^L%nQTNT4lW%4sV6bV)KWg{#Y8O0|qv9>A4S*Y?-#!pf_5tPHZ7 z8ok<)*gQJoxC3oycmQdk5raMP`{Q*|tu2}KbHc5nARx1ZSzSKLS~%bw=)e7QkAX`?dv5o%bUOmk^Q7lqy$=n4J@<8{PYEGag}l#nBntT!Z< z(P*h|{cehu0cp_DM2 z$7J)!@Tgy>Z}D-FH0J;oj-e;`tHp;fmp_@1`uGBno|9ov@B7&z8$FFr3sX8nMX`4e z6|mEpSkuWA-M-CLSDm+4@NJ*E{Xxl+k2qHtWWde9+_bqim-`J!Ryuj{PV1H_b<Ax$;W*_t+*BQ>6hi!KA2jXi}JA?z^ z-ms$9E>75?B3_C+5Z>S^GDg75EV_3|BFJ|gn~MvhK6+ttQj(*vK>FkL>*;E$Oc<*rrWWJ& zJ~_AWAj)bCf&E*b7lk+CLBchIikY*gjQOh~5%BMRVYgq9@0-5KI5p>9%arc5OLC0; z(64%V%{*DE1J*{02Uk07R2KscW*qIaOlJrq$KY%$(|#D(lPr8a8642*L`10bN38wY zd134nF0|cX@FqAah0RJBN4Er`&3U`Qy!-!|!!Fdo8PUJcx7l4!Q(e7An5Y6mpGMo| z;cYrMOuO;?By;zj<=>y{X+Y~FT)N!B8bzUK$1GxWz-uFH# z2L=D&8Aay@%gU?cdXqLgJO8@vQk2JruA`iN8e#@P`*_QYc`9_4u>i0BCiAk@0t9a~ zPM##k4QXZ8&4+H@8bVqe@V$Z7Ft)++v@&R8*r@p$2N3H%CnA#8=v^UE#FrKEz{$s*@Ov$ z$8(FDU$ihFRufZ7>*jmtYaDj%O1+}7sXAYX=B>rk2unN%^DL7&a~$1c8|N(D^ad z!U#1>&D7W;pxZ>g-ShVw21bXSgemoB`Tb`HnC9;S7nGl=j^ebYvE9nW$OPva5tHMG zG}Nk`I=}Cu*9X%4qU{#=HaKuO9v3Yt0BemlO^nTZZO`6w{}Bc($g8FIcd;UC z>f*YbK_C8%N0xz0(yh=Z=G_4{1H)c9*$|w>a6YfCCVn_Aez|{BW={9~+yb}-oh1ed$OHFXK0BE3Cc<1m6Q*L`$cesT14maR zmOT?DTzK`CA*wn&JVtE5DAMiGPy(Z;t?k_PPBO#&3R+5VC=mD3RfWuO`5YcURsa&b zS^6TbOaI`{;N)o0eBJLKz!{$Mj_!3o#n{G;6ZWTZ2FFy*vNfGT`aXBiTwpN n^5w$+45uUgZ+`x8>m0}(6}o7Jx?8*O=a(*CX>(D$<=cM&=&_fX diff --git a/packages/muelu/doc/Tutorial/tex/pics/tut1_4.png b/packages/muelu/doc/Tutorial/tex/pics/tut1_4.png deleted file mode 100644 index 7f27ca957625761fcb5f284521965a812763d574..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 83439 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%0Av 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 a+1X=`(Z2EaL*u$YhB-4$4bu&rcKtuim{v0Y diff --git a/packages/muelu/doc/Tutorial/tex/pics/tut1_5.png b/packages/muelu/doc/Tutorial/tex/pics/tut1_5.png deleted file mode 100644 index 961763bf5aac173314fff0d01f471a2206d1ec8f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 62076 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%0A;&J(wfvZ;C$L*^Ym?d~N4yEw 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 diff --git a/packages/muelu/doc/Tutorial/tex/pics/tut1_6.png b/packages/muelu/doc/Tutorial/tex/pics/tut1_6.png deleted file mode 100644 index c37e73059618e54f42c595d4779cc15cedcd45dd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 80148 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�U*+v4R1uFyc}oB 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

      34Yb1s; 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%0DsbDTb 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≧si2T+qARyxN z(i{v(R#x6)WhNl7?Nq6b7$~;-%#Mf%N3%TZTu|iF9rl1eq zpe4_t|N1apfrcpLWIJ7nLA?~7^yO}lJ0T_ms%|jj88!M`KH^;wJBoGzUY?F<;KhR( zls}$xRwPy4`R(!w1QDD492`Rj!o?6Vo|9xRL-0hH9~7^upUlJg6Aj_nyde6LLp({xC=YHsw=|7E%=H&LE$^?rRA_$4g?h7Y{07TVh6 z(mO=nWWOu{U6BT73*`V0xH#a91c`|dQX%%qsRZTxZ+_$yp48Gs6@c}K*1<>KDE){& zrctd}x92=}M@DA-4zy0l{S|F4si#9L%+pJ8Nl3P*Dfyq|M?vkM231y;DCPVZrYCz} zAut1s)4Tj`wdcAcg)~oJ^$#a=%H~^I-v|^G0CvQp_d869%qG7oYhZA)Gl73kwb=Xm z%F2rT=@J|978>)8ZWV^ylK!Og>Bc#VzJsq^ZHnp^?R^1syc& zlVc^QWMsv~i&E*u@5Tgk?e3?KA7AWrhCucvmgx8x8idm|ii*&Ogpi99{l&50>wREm zoWm{hXv4s0VI`B+#C`|D%sv>1U~sX|w9q-;JR_?zOA>HZA3(^?;5Pj50UsCl@?o69 z|5BuS5z)~ExVV)yHJRz@iHc^2m*?P8_q_9Se_;!9{dRUH9J`Yixi3qejeO7XIc+6L zOUs&V5Jsh-qFLmU|e?kduK8I7m6Od%W3 zI19tRk8+fb2>S>spC`Nq6Q$l107nZ;`OPPB)ij91#+D&lxYSu>Mxv}dHpXHSQQgKC z`ya_AApvHC(&cKU_q;rMK(gd;q|~B&dW%?r&SGW~%;(KSthV9^X>yG}0ogVir@tQp zV)d@OB`L1U3zD)v%*it!sM#leJufq~CFTJT=Ip;;^ZFHTTcd#O?WX>WJexbMen z7njSfShj|<<@lO1iMpGwEU{b;-wU+%PX6{|VPYn^#k~ojrH4^^T`{cegcdv-4)m4S ze;#cNYYe`51LAnqdQ$@FI9hEm$0$E-Z`19kIO=!XN3*g5@=HK~x<4c+$k`~aM!W7q z5kh};Cb2(NLb9p#>uWEFyiiN&j-o7-%XYj)P9ov6 zR!eC&Nk?vA2zjBXs_qU*`pfRG${#u%`P%(M=;;CDcPtwWC9bbe&tN_;B0Az32eGDk z3YB3RSqM8rMT13`WoUq|&hCMZ&O{m5VmQojODFi9SqR6pN=9S`=(JiNUpe^bF$-WU2BT{&H0~%8F24!omt9@=B%b zjLN=vKA0ijAi%-Fs7YJT2CSH0l>AP#)FT6$wc7kME(*Bam}CP#?_Qm^zdWQ#{x?q% z6>Gmm@$^d)KTO3wbaUCh?MGoD6dBe~ZZ$2O`}b-vqb$Jnx=>U)E*z{!X^8un#xnoQ z((+ra4`mMxDKaw`Ha0ePMl%In6~as;V5I@%LJr6!!C_*^HuES4lvu zQSUt7Vz&s6B}(Ki(eu(Ai;Tn~Eg0*`7sYD#clh_}jqkrdchyTDZTaTVzdnx4&PXa&Claq9W5!5*tTC{JV~} zvgpnXAQ7V%;yF_Xfd={fd7e5I>E*w>V8A)Kjc)hSbHxNdIg2i!yiz%yJKmmV`1nPf zJ+rT`ud=doZ7?(W{DN6B-~OMV?=#`s7p0}GW`i3)8=FFE|KjqpKo!2cw)VB@#Onss zK*_hK+r0RU|6+}rJFL7=M8wz};HQ?S)&%5N1})w5&*z8od{8X}-;<@Pn%|!vSvSz% z@BYK@LP$n-L@uE%JKR_4%!%TamD`g{^UNFYb=1c@1X|;HjO3$vqqz^f2%al`{*pTh z6wJYLCUSCB4IEsN+4@^gE|ZRH%TM8m2sxz|)589W!g-&S-dv(4>kowCMFx7q5K!ge5QFYd^i{RU~D>ZNYU-oBZuDU z*x=B(C46T}Z{XP{I4{dFe3TsTO?jh#SJU?0z*0D0{$zQ63+KlTWeD(1#2F>Y7Y@P| z&xvPw`59~@I{$_slRNx<*pry5#)k4Rtu!Lpotnb)`U)>`tCo+C4~hm;)9pPO#qaLD zKRfTx(2a})oP0dTR2{rE0tiwEAtVqR>)&$;%m{lSx&vOfgds&n#-WGrZTA@F57!1u zjCzCp{C-tbaI&$Ll$YDt+uxwtL!b}NAA+wVqN0|Um#Zr)4GayHBqJ{WrsVjWj*ivF zUb?_IHR=Ti2LMiLcKi_+_ZHx&KXjdwa}Q1a{_B7Mzd*&>gJwVU3nkrc&7<;&L-t6- z*|kC7kkoLRn->c^zx2j@Ov^&etAU7uikZ@%#rxZ+=f_|>mzFxvJptzc1kx%tKR<8p zAH({3?=eMoG~-o}|Qx&H9;#2h4xt-a0ri<@-P* z>`*apVS5sqiFS4|@g)X+P92l!0gYj2f9^tpdss=;K!7fSHZ+Ex&(aDu6}Yl+n`sk2 zKQ`P{g{CH(*k0ja`a9dk|H}eo;t+SFOD?XY4u*!32gKmx{p>GtWV7G?9+_^;EBR$* zTc$G#mWm1483N2&{`pMG%2J8+D<+tveYpg4bNkOD4el6!$iNrZDZgK*o%B{w8F+GI zlCsixOhHgE4N#DadDdtpbm!_~VG&Ah2fbTYBgjSI?Nm`wv9US$-!B8GTlnV}7nvCu zq!&&54|8+4+><=-e0|t5N}!@b%t=k>$K0^kMP%ixRR-Uz?`lmzQ~y@WeMt@=Ri z-ji7d(#=6%Qhu1b8g@d1_3-nZyDbGfi|v~eR6R}?cAt65j74v&U;e`-Vc5&PncDoD zn{bS;vU$^@rt~ILMk?lqKq?8Rr41!V)IZ%rCv6w`&yBNg@!#$xDJrTKA()ybBm(g2 z*H_mYfzVJPH%a~Nw>d%7IB*z9L0)J@!_8~oh)ko1=UAF}xd*)R(8Qo{obhpR!UhD) zFHDpNeSb7jzSN8s_54jHPU(*6=;~A~{Ovy-xE{k156nZk(G!Ai!@Oq7rH%a!KNLH# z78IDQbX(NF&Rno?Uzp+l&?A!BG=lH-n$-?{{JTX|kM&nmPl%d|G7DS8qZWR+88HJoXmWCLp>0$*kqxLA#)^ z?+aHRfYk0U<*5Vf@Z#8N$v>;~t)ywF3q50+biBITY9JBRinK|4dWvzFEH5~I{(ZX_dg z5h*|eueG?;Y{so{kdAEkP+dscvZwF;-@zgHL-7=nTg zPa5gf3WtmNgSqOCm48hNr4vR8!LXLKgv? zmuAx8)W&5)g&~PgKr^8Zly->aS$v?P+DlvcEP+NGl(qG&7lD%#V#j;$VR*+NDQOt> zOjusCD}t`ni&QICK2XEP?<63a!_frR>9QJ zc=rxo7{=V)@h~ii!{Rl?_w)1r@X4{t^1P%Z)!w51ROlKB?45wFVvmZ@wP4PvgM9q8 zdTl(rU;!Evj0~+PoR5+jEPe}AZE_@r-Wq{4IsLoX91Pq8T<0T+OTUWfi zS{spmy^)gz^dWGh9i%GIl-bYqB!cS%G$Ao5Y_+BY*Vm1WKXd#Y5Bf}CVx1aF#D@D| zeWuPY2+zWK`!R&`c0wvRV`KNxNcp~1R8SlNnv0W@k*U2SXM_9Z;FsH#le@dSkrTt-F)7KE5d>_%6!e$FRg1NOWF1DhDa|EOr|iU|oOe*)oI zah)hL-8*b<{rc_ROJ5Nay4*IHeCZj1iVj%p6WF-T->?im3{?JdYBJtbMS1X!&wAw{ zidWnNmpuw6{*@lcii0*cOaAnHeo>^(2{yL+ea^d2o$Azm_eYrc_*5H`E>6^{BRI@} zp}nry8l3)7p$u2_4Km0Fq#8c^sg>M&*g6?s@7ixXbXnZ78qG{PGR zZvLf;Lm9EL`cXQ!o?f#FC~++<;o?4e^ve1LuRSbfm80$_T!SZ@Ci>uLc(Kg?0pSq+y9k)BC@iw z+B!Q2P0C_pV+oQscdkN!{E?>#90VW}5vOMrfO0Oe0H3WgT@tcdoSb1{w2Zhcno3HN zl4|R0Dx;!!c$-u0d1^z2%-(bwv8p>$+t#kdZbKQEj-b7p3km~hozz3Ew z1P4ER1~*1tdu;sHa6I9inf0Kh!AyWNv$0)X!tISUCxHd-Zo`vO@f>LA<8Yw8t6dGW z^8y_h`oEs+?oKa_$e}+!N)^Mbny7b*WPJ}s*;{2W;MMNO!2hQr1X1e}k z1%%@7kGi^s>|z}qE34XH5QmTg)jf!KZoV<)O_@0GZ7k3vkVc1xmA?JE#w?|QxNpNQ zF#$e43JOZ=-@iNgbci|xWsndx z%F~ERf;!ViQS@38zWc{!5V~|cAbcUR>MTAf0YP60w7(&#{aMaA8zWecH8GfTjbw?c z{R155kn`Ye5E4pBM<2FP1;3dQsbw{#%%@>0B37(KM7P0kF*gCoor6qMke(jUC|!i) z#k6>-@5nEPRgBC0i``Dlv9XOO;McDnLG2;z+iX>TAj5QbO}h@}HSK=DlP#>XL<~Za zl>GWoDLiz0mWC}H!ctSJq^oZU3ZQn+CTZ;jzMX}?Xb-6=g$qWhW~I+^=TAPZ3E4ELiyQ0R24aM0BHhP$c~@b9|O>`eB3pEh(BTM%6S{q|T~ zG=Nud3XLuL#(ebrv6;3bavjL%H8qD+sg%CwWPs;BEgg+A_2b}Jz1Fhp`ezfhZm0(g zDg>Fx3U=?#!Rs0PPcg4+?1a9wPim;XP#INqb6dwhfg(nAj%jmYJyco}dBI{G{KV>W znlLJ)A!oFw``iW?=GT?LEk7c~?+jr`eR{rIx}f!2FdWJX!Y;hdIkmq?Pnd~p?cbl6 zcqozqN<{8>TTA~v5q}&GOygY-}`}a}i#^jl7t#?T4oCi~U^!r_>xcc$3GH##*pDX~N zW8FUz%8$#-yAs+Pyq@1Q;8KT6VE^fEYvU@Mz|IPQ>3j*o?owwo+lv>Ud8T(ZW`>Y4 z$*{>n@|pJbtiy>;Pv3ib4Sz~-KG{9M;gB25z~yH=%2zqmR8+gcNhL5p?0oI4hyynEA1(e3c#}qS&V_OG1dM3#h^6x zItmDCO((X8$G-6Sf&k%H7LTh7waQ2CH|n|{2C2zY!s2r|p1bVuySM-duFko=?U5@8 zy{jA*#NQ~p1MM{|&OZc`o15LDU?zXEB4kXJf-;sHr!MKG>7x5YHQsG2uhK1%K?T6y zJS6rzVX+dHMUB@x6E7PZA)ZPpY?U=IQmWnC8uXa|tqJ}1HoPKp83r>M1P(4;YHQ)? z%%PugL^U!J4g4P4VY}!2{$ROVUS8hH%8FMhj>A?S^|w1dLcRS?Qt8K|i)v2WpWkxm z{R1SV@lsSSj`i3_C=vxf#Z3G-IkyFZSBL*CgC3$G*$QBsiXki;IP$}Ro72^&62UP@z^P@Fo2)U;9hVryLnfd1o|QX-S49m zm(Vdo#8FeLy>p?T5~}aV%QZW=I{*{+K|b1m{hzU$W`j(PUGratoEcaTj}zrbjg9g6 z_Y0DR-7A1-v7X+X#Y>U@HDrWE3=Iw4-0J&{^EPHKH$Wl@W{Ji-`B6)qc*1`p8Q|sn zegKH*YjpH2@V>1Grc<4$r z)6+{oDg?ax>v0#vAdzpPpL6ksCo&N)R9HX`RrlXx9!S>|6ntLyhUH@COsW`s5oKYi zGlkPAD7bGOeypvFS)NhbM$+QS3LfXeuysbd8>!SnhME*Se>?>c<6 z>Vp9R^CEKMAkQTw&A=L7HMJD!t3g>2XiLL+6&CXEJv-jsF2s#4?5vomWn2GvDCeJ+ z;GA6#T5V0dltAKyS<K@?Qfgap-6ajR0O(^RoRK>t?vWcfEI>yd@3g6)QdyKt)B7)u=cPj~k> zuQdr8_@7~E<}1fXM%oHf`6&=UD#!@&Uz0B;ghrg5ok!sZxC37sQB0}t#k#tIy~eNc zhjpu8n2AzTSy@uP#*{#m^5Ph6)Zn(NPeD;su5ADEWcy97l8P+|zLraFMF7r!DrPgJ z!L5XXxqQ$|Bv6b0d~kmWg67(+&L>*LocJ4xW)qMjfC%%}q_;PVY1H|XXBJc-0KnR%Yfx->;HEH3`&{~iY$NIbmH8=?(v=>9#!xdujqm8|&qCP^WRuFFe$=D~@H z=a~_aX#C<{9-t1s9`eBehGxl!PqRI<*VOoxQq(<(l(+KEmX!UYjayDy2DQEGbrphj zb{CWpqL?82spSZ#5lncln3%R4jyyH~d#*6PP$eall-OvUEDPd0p8&=f93Bf^@gz;Y zV4sza%knTAc*bL|jH?|&iba_9sF)=dGL@o1EQFTU6aq=(C1-nL9Ub>D6lM=kZZp3G zdI00r{c<@Ph7G~S&aOHqc~x3A$DX8?mN$A#jEMmO0k1Olt?N%cUwe654u{kCQRCc2 z^;gSFi-&`VJQj8MF4>R9I+N(A7)OMG@{-X6mzikgWjM%(wn2@<8(gaOY$> zBm}f&wY8Z{#%%XAgs}gZ&D5T8(zjGpXTe+v13{9H8x_^Jdb^v9*6rL68KdaepNY7C zx}w1bXVyK5@FBR5QugS^8!as}cUJG;E78D5rzc0Ffn>6;zU&6MU)lNxw8+8BYS*%? zWM`tx!8w=c*DY|nG43T8L$)U2ZIYc0sbJNZ>XC@7-#KO`x^0i{qs%V=Gm~8c-z|}S{(4RD(|&=S8k+DpR-?>{^7(UcenaxY(?2n`eW?@F z%?uyqnqtUle1TlvDV&OR1C0yzk3#BkQt|cnA-5u8ce^W_9hTPvpZZ;Qu1O!o$x9|%#nMt zg3XyjtNP!fcNI62`uF(THh*0blLl0E6g&hki}3vdyW>IN(1`SNU+=va)ZiPgc7*{{ zKq3|W{O4e{R%A!VH;^TbE{Q=AX6@a56g_(`7cR+Y>v<$4rO(@WQGdha%56=p#Q*c@ z$;g2CIQseNSvH=~mxGm$L-#Z^F0TL#eumW9xi;uqpw%LG+(!3-M)p!GMh8fx7wl0hU0C%AFZW3cTa~?-qa{$@(aDqt~GmyMHyn!@gkL|Q)C#2#U*bz1bx5iZ>sKX$yZf*&OG(;QLT75n1O~e4%)SL?8jVR;)wrH zju!YtD)CBZRAxk8o$F0tIRegV8b@%&3Jf z4f@rPYy~~tr-U}qQH{fR!NC-N<+Q7j1jzRH0kdd6H~Q!0pIamQ$w|YEoq4hxf_*B& zb0(&joSZ6ha;JxbvY4cNs*)vo)5pkg^?Bb#=yHU&x%ndviI*4t)n{8Q9Ll7r?d^FZ zjFFKP9l^`}fHu_8Lf_zrjZJf#f!cMu{bFN9hzu$q*4-2Bw%`8Uc5iKsf{f1wg^v`U z8KT^xfnWU5ySnxC?-(xGsncgDOlc~A@UVGh-blNUZu#IBGiWn|X zqZF9eDMP2Gre!8@$)2f0UaCS!N!8P*$RfSoU_QMN)_O8GSLv)$WWyvt%EV-BE^7Uv zw2aj(PWNj=IX)sH3rDLjnUD%W$p^pQ%bhXAj~{7izXevs$NzGx`*(QH9H*?{Ip|-? zl?&-09@*8^H8@z}&6^(pKbo4`v#GY6oLr%H9YpZm&eveeAxA(!Kt+}Q+6yHediP9Y zb^MMn7-3Yq!^E_@-q?7@W(B;Wd@kR-kphXSv_G5=tLz@(orybgmzHTr#%xbF6=->y z<9+>ldhHyF{lgEZrB`;*B)Do{e@?^u@be#YI$>c(b#K8N+@9ZGdI`AkDvKT|WPIuM zO`(7)7@67V@SkaL8;Q%bijlp3gA5gyI_Lf&?_Epqn-?e2Ghn=L{XIt5+RDO)Bbc|_ zMf7?&DvuF*(`V3rgh%Vilgb*P4!c~H>Ha$IrxX$M`U@5WQbBwd1@kv9y`;bwFV?*e zn!uP?SX_;a%=?mutuQb$PE}YWkICQ`pcSO2Q*{r^BiN53EUz!JzkHd@-!(f4yh^s7AWl||BNWJgu5*H|8Q^Hor~edajDmxP~PPC4#$az_>qkU z9zQioRaVzaLO}3kNMUhb(~=|N<9`qJD7NN(kVY!l+7=4`roeo|Sk-vxE!2wK-TyR{ zYcUq)f+qTVn5T!w>BkNN=EhD8QPIA^rtjqW>2EdpY%p4-r7P_*50+m`ViXi?eZHaY zJ(;vm))cVlwHNm%toeyVO!I+9J*2Px$~BEi7K{L?enE8vww4>U3&92%;!!9Y5C z^i;75x1ww`_e+luL6rBagQ&AE5b6KZ{K-w={(TW*dBl77ac7gJhrGMv$(bH-b9;aF zKg`c7w2&VEijtQ8=dV~_x`-_1%*^~oJrh$58|wLa3=5*VdJJo-EuWS=A_D^w(vM$Q zDh2msbnapPP2_dhM@n{o=!hcg2T~dIsAEE`wq-UfFceZn2?$Nct(!@9NAbCeDA; zp>c4e4-G9V4>yo_daB5jV0{Bh-vU>PE;mCEOl21@f+ZX#Dkl2O19o=ZfoGLfXefIx zUy4hK++4%B<#3IK9ape&et_!qTu2h*?c3A8g3azZjY5GWsE&?+t=Wdi~?OSH5XZFC> z7O0dx4@-I*>SHHt=9ll>Nk~pqL`unrp&iQ7lZ6#GyPR4uVUYaVu zdi6?8Z5)Or4VU|!YMN)fKM}Sg{(FhAv#;Kx+_yF{1p)g~=U%_q_h`Uq)SuoFyqV(B z4h(FLVV(CHTI$rZU@j)rRPsT*tE)%OMb_Se{OcF=x5UWwE>G=(AKydwEO-vJAY$U( zG`7|_~RfF z4&0T6H8hHh0J9AW4Xdpx8(L=HvX_^aNDUCX*xmE^`SXW@k|Q@Czurebpt{l|!?zm= zr+@RoOr4yvXm1k51Ce$~9_Qn{_;`&5x2xu0k{wvOTVBFy{3#91$>xfH+vV8AL>y}? zA?#k=7|Um5X}|DNf2rc(mX?<0Y5Z1OkU+O);Bx`b)1ta?$gsB_7-_MA9`V%AE{3EoKf+PGAaaW?vu^hP4Y# znybr8Z`0ob`n-r}$d;%`EGjfBo0~41W31J&ZSjgaA+zpc4Q_p-zW(TZ{J*TJWRjY7 z++WMerg6SVD*uI>J18yb<$+jS{D=$_2j~9dZ>J7Zl^$*4TwLD*^$|-;bvtmgvLHfZ zYFVEUTcExd8|bQBmKc zzJ_Ay>lfJ<>J}%xV2nqjL(3|G@<7xhZdUH!71V_OB;rmwIf3Nlwa=tZJQddGR zSwKJ_I%%tKpf!p~JkG*=r#HOYxq^Cr9q{lfS2X_wFMlV>&zMX$OH!>VSH4^UT5o>KWh!C<^;cq%ZFm(}uVMC8w( z9?c?st*t7yi)~n_sKDULyu5UgAideDm?b8>{nPB9v`g#qr}pz&SWQh0{0iZZudmq0 zNyB?Wh?g99D$C0``1mxXrGtW5D71uZO33sq_7D(As3k;RE9x3^Iddc=z{AD>)k7Zv zR~GYxQ!lm`KMH4gqUvl=q3qnBN=|tf85xcw#SzZu?1x8tgR-7COVy^*aY%38h)euw z60Xg-_q*XHD2e}PA*Pbj=@~h*?Czde$iJPC>#JXmZ1eMA2TVu|4Wr0nk&*JQ=1~SL zV`v=5gT_|hn=9tPAU#8$Op?#-oz*U9#Sl8Q_s06~4Ay!3`aC>3T0<}yuzksqQb}k! z^5rjlhEN_hU!DQ@eQ21RlR#aaLYkHv3ybCD8_mZ8H;>QHSEotp>rek*UsoPZ<<|D4 zqYOz(se~hnGLv}i;`9hpgrOvgNnZ6@>l{nUBi z>wT~5`@ZKN*JbZ#KhIk09)7=j-S@pV>}OX`PI03=MP8deFYl=EzO!dhs&wV##xTXk zMt}dW#N4Y|kBH_+8PNLDZS4$VIv#El)fpqElRZ>+c0}U&i)4HDyqzB=K_X1KZ~q*` zFg@Mq&M6N$y3nH_Um6;M($ar8p3(RRE$*RVayxH5O2wkz(UFUmM7Flx&5;`$l?|p* zGR*Ri9#2-EJtM1gG%<;V7qWrsv6ttwINrNU06DK;F!;cASyxJm;|#V^LXX6d+_(WG zWnqCp+}u!T+Eu!f+3f0nRMynY zuWr12`O-4`ll4zRh;%?(TU!EwP>aLZNQA~Rrn}3!(Kg3wVJg65lh0LnX;Stw`Q%g; z4JY!uqodJY_nZ(5CskP)v5#3?{A-gp!9`-e^y0;@e?KCKpF7u2e7wDBSa#A@e)q;^ zV?M8198OqvobrB7|3DI%vVGDjF?$XjLL%QCvTN7+Cj+J3v#gKhS<9AqK;JdBn&y`* z9TBL+ac$zZv7`kIdtpT1BqYf0;G|Dg0hg7$gQ$-Jus(iVy1f~1H2W!Ora>lv=C-?g z!b_4vhs@1O+vpKw6PCAWCt+lq?4u!BTwGbyM$l68`oJKmjm9XV# zeY~i6ZYadNwQny?{|pT)>&6;qPR@<@&e&5@n{92maOD8Co1v<+b74qG$RB?&{X;Tr zEi5RgsUyO|7{nbo7>zIVvI+_56dnu?_O_>pi=(C8X?^gRHi}QSXh8G65EL~P?F9Zz z85jx)jSU>PEVDJsSlsKizKqJD>R{hz2Lpo=5`EABDm4&?e{3!j+pv4fC!G96D|4-- z)yK~d^0BhA;&-cV7Wn=BFSDLo^UOj*LSkZtM4~x?`{ViqP7@OMi8@LgLt%c!BV*8f zv6E4b(vJJ~?149${G6Imovb>$1U&HcnOwZ|NxkS@KwtxM931Br_9`jO&Xz`Udml`G zw5PJ#yQU&haf(hTw4@@!6qf4iP5tFlRlZ+cm6epnzb43QB&!rU&yR$k(Ga$7e~FD^ za+bjCHJ8YkIsrjl)6?to>d7g!I0hQW;`ma%2-lpbSei5zG!u}LGBv4KnlU?m+b4*Y5*F_%2R@gCy<_Hg6*X3zyYHCCX z)Gl8JqEDb|(%=1ShtGqc2X*%o150t>l?;e8=03gd6z($fQlg!n~7gk8=t2nSwN z$Sso0GufM)YZ90pc|=R+exFBSfaki->D&2z%Se@HriPgD$B!||3P zds(J%%sL-e{YRtk$b4;R_hS~&)|UNbK&V6*^bALq^L#s61+YG3l>C_f_Qf0av<%ZT zXFk{XRaNp`zfO4CpmFtTLUM94k6T;$QIqu4R20B+2?`3HK3(0`mah=P~kz2Sw!Reazf?<)#$}ELoqEM+g2`3(Y{>HAZ82;q6G}n>O$AG}Ab?)B>;JbeZ zMW1FbqM}w-S8cir=8z6!U|^uAsCX;wBa8y8bq_&^pMP#N-qW-pKEqkV($W%>UBD;p zvcM7FFk0T;(cz5k^ri)ZJcpM>wCb(a*4EI_(DzO=!H*x4laoIU3mcN=0U;nZvf2(^ zH!*pglk*)*St+e8D{K5YieLFT4_TIZ<4NiG66bkSLLyx$qYbiXJSFt!h0lqI7~-%f zJ+b;PUy6YS(Dj3uI2LvHAKZW5zrI9XXujCU@6_ce!V9UB`P zY}(q|PCue%Fs+YGdG+e#O)=!H~P#v&o%TI#i{LAtu7<*%17 zy%;oOMSm;*{CTpY=C5^GIoAH*)3pw&HEHSTbQve|x$Tcjy8(VJak`a7Mn+-|Iy*a? z+*Qnf=~n$VGJ*{%k#pzR*w_M3h<$gaaV^Vg3z@Y_2aC7Zv@Ds?eA$ zur^tPS$p0Yt?7+^r2`1>m< z?i^A}v2R~u69r|zlaj);x5rTBr&tJ>*?RbsC$%|u>YAFHU%!4`vbAP4eo=wL>-}@s zsQVLtbEAe~V`WY`lB+SP(;PQ{r+4jjP<3+4<>IpM#InLn#KgqFDg^}8ZErMee;pPC zzvj87p+V1U&|TuW4Q1MQLi8yQc|u9h^zcB1AIw>K?Kso{q0HaHT7!dwZ``;6lR9d%st)RNn^!eA|MS_i zgFX8&N3S<+w8!QB_H!G4kd%=zR8*{OZng&>$?OwM>k(i#P6~t2N%8uSu5eqR+ZT46 zt*z7j{AvcP0;u=xBMSdYR~mQz*=9TTBWWloe!F)sH8s`$$&-|{G-Y*l&!LAVwRN%N z2_znO)|aNJC@316nr;-{ONxtQ>>jq^;)GBxfZ%G+BY-udS^Cm%OuTTU%ZA_4BhbH~%WA#>TGvy#MXs+yfw# zZt@jGD0$oUVTpxIssmeETIzeU5x4F8;J$wEjhK|%$}H3#MjFD1xep2q{9GrTZadLt z=vnNtXlZ2hYtP|CiD*gZdy0xrii?XM{soeZ|M{(kuO44v#-7`B7< zSMq`wg2UJ~bjreoT1cQi$e+JIWxmnEU}QdKS(uMc=Pz^G;@*R_zuGnb>BFB>Fgvb( zzr)MRtFPZPJd8>NQv!3Z{7id*iiJhW^XJdAvmrCzvy3YQ1Oy5~%x>R?(aGsi7jv3M z`NAetfw&m?IDvLnZ#m!Zv6LQ}rk)IzBN{zbgSP)&$EXAP=G;hV}MOhAj_mI)W=O7(T|pWC++-@RLGN>YZ;>)Hxq zV>Lo|ApqTY;D^BaBxq8i{X4yp+g4T+ zT6?6Ny@<&kj5L<;$1)dfOlODpRMyCMzR&uA`%aws({R@Sc38c2@mdG9neIq9=k{AvjcWxq&9VWIO>=es`l<(`7y zhF-mXy|}PIEM&#VhAy`Y4`Up?y}igVzOJb`8MQvz0RwYXW9Pwb&%r&89Qpf=dVB<@ zc63ZkbM7S$FGYokBlm+aIC#ecYFdWx9ltfFN}@G%*wsW*yU z-o?Z)NE!N&MmYpe>$I(4EX{A!?TusO<9U%RaZ@ZWKOZ9J`7O%M($eLdI=jA%S6XT+ zYMl0;5Y4(>`wWeG20I=eA$RUFpAPYu#Bv;TMEA*w`H6xUa&vVX+1V26hry zrn>U&@7*gZDuQ+#;nFD`nwy-Q#C}9BCXiD*qoZS>3E>$j~83cT_6_s`18LdI+KQ#bA1qWBq6 z(E`jmoFE*?LdyY4qo#L7?DvBph;S9xa0l@F znKuh_V5;nJMD{guGCmglDjp~@DhW~R4T;^fJ} ziOiA_;iItODwnleY+oFruLk;YlaA-Pnor&j;|i^V`S;vf9R=t)mnO^MMKNaD87any zpgTrfZgcZrn3`~dWcN%)mxFoT3Qwq6iIV zvq{U;e?Kxfh*ujO8*|1qpr#=_JX~Z&ki0Gyy$ETTr9ayY4OZ6xH+pu}#9u1SoWW>n zf*I@ZTXl7u+}zL$YYU63+S)RA`@O=$Tjp&8AvJzJKB8h`pk!5*l`XBUNpIdX3tq%b zg+69GRrha@?pU*Nxgk=Ff<0~T{u3*`)5GIlXNZWoA=4Q%pdQ7SkeGNIe8aP=;U*F2 z^x+=rgG=!&iL6(%S;r!I42n3ozWtS(`~L1gd2Wap+?Lm_-6|?7)4jzL-@ZkJhbLxa zY{5ZG{kSqdC8eZ{;q7l8Wj}T5osEtZwwyA$gq_{N*x+*v-dVPSGxFRlcnQCkmbRWR za!C(B4MYEr2|G+jR~>jP7cPk;;0X8N{A!Gd-E??-9@GpVHYWY2MVmlOjGbM9wO{*b zbTk3A$cGMv0aiu5c%kTFLJmBo8pX%L$ywLl9<`OcBcCu*{img*ih&*VbanZw)#Aj3 zTo#CMCTiQYRi9!r42mu9+^O=-PD`_boEi>TVUS%tJ;gmE(KEM6;w7C0*w}`brn;ao zw;1J5Nj3)XNB+ybYr?9pJv4q}+8m^Zk36(=ji zqc6~xDE=X^iiV|$$l+?Ez$s`V03zhm^NhQq87WK8*Zld5U?1v9V6U@QETk7iS zhK79^+phX09`0=!`m(aJAgeIzpftr78d%e zA}$)d0*C_Oob1v0)w#Jj2(Vim11k$l*~gDW*zyIZ3*z*uvSHIo&+=L^R}gtP-4D;7 zX8Tbfy3Bw!iQ+9f2h?9BtHyu? zjE{{SJA61PGjlsyq&k<~1tF2MoSe;lbYsMl{gg&>1TttWT>ACv5g;5mIFR5`G2XVX zKQJ&5IRapA_r59V>FE)ucjO>Z@Ex~30u0uABf~`EpGirJ`+u2zA!s(z5bp^jTv>TR zJO-TPkR0I^^aSYyJb?f(5K12f#;&d|a0#bOk`Lg5nwpv}E-nrZe`RL!A{YkMW9jkA z`uv1y2#{(2@pF%C(c65GWAr`vKKv4%WhIO;eS!>TW0lz4J1gWWKydutJOoASA z*4+jC!orRqrm%ScAr1{N=W-t>p20E0$tf$>Wo7YI>$thOfjYzgGi)nj2EiQ=h@Hf- zYkYz5r|~^Z-TY|aFgwuSkC>t__{Q1Kr|3$3o{C(0_L}v9WG^t%K5FV?CQvURN+3^< zG?`Z5n*e`*A8G+;jg_5UgQ^yMOG(P1Ny8JRNl8gaGX@;JiE3|bO7&GskjP=CoIMqr zm>c{047Id`&z++yUGDSjYicS#oa=ZrGK&-ycX4;cqEtZK_(_OCo&dHanXI=b~5hISSxmPnjGLELKD6X4?Aoc z265UCmWy(7Dr;$JVb8Xu#bJTih+t%6OH25(XCTvmh~Kw_8!$5J_dm=DRJ)bO5%6@G zG)_VG^4^uDE;}$XT(?Y2x}>;>00`4)+5O{UVq(Jj^h`ThTUv^{uR)G85nuE6_J;5w z2Df~=qOoxf1x22&Mzkyr#}Bgj6lF}bW!i!9mwA)9E=?YjaGX?D{dh=Dyxwa%8sWz-@JfW5fp5? zL_Jp27~q*ctSJ8W*uevG2D|cI7Abd0+K+tx`0+B26P6tWXzbR(AHO~UtAH(gX}6WT zKSBeGlVw+YirCE$9bp+3GLTIq3i&+MzF<}Ab3krqY4K<0kv>0Ojb*q;mVtwuC3B&Z z<%ZXVOg5h#RVQcZAyJjx`HQ9a_gy<0{m)(heCy|@J8FAiM~eUb(?5UX|NnGHM&v+x zckcbq*ZO(y|Mlt5m;U+bf4$s)4C$Xw?aH@zYboVh&yM@Ck>FCisCFSk&dB?J0OU!B A4FCWD diff --git a/packages/muelu/doc/Tutorial/tex/pics/5sweeps_2level_10jac09.png b/packages/muelu/doc/Tutorial/tex/pics/5sweeps_2level_10jac09.png deleted file mode 100644 index 40b380fbd7d257c99112eea280f396d1b479d253..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 79041 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