From 6e1fc61c211412009270a11568f07ce084a2114b Mon Sep 17 00:00:00 2001 From: Matthias Maier Date: Tue, 25 Aug 2015 15:56:27 -0500 Subject: [PATCH] PackagedOperation: Also test for complex number support --- tests/lac/packaged_operation_01a.cc | 86 +++++++++++++++++++ ...ackaged_operation_01a.with_cxx11=on.output | 51 +++++++++++ 2 files changed, 137 insertions(+) create mode 100644 tests/lac/packaged_operation_01a.cc create mode 100644 tests/lac/packaged_operation_01a.with_cxx11=on.output diff --git a/tests/lac/packaged_operation_01a.cc b/tests/lac/packaged_operation_01a.cc new file mode 100644 index 0000000000..e5f54c44a2 --- /dev/null +++ b/tests/lac/packaged_operation_01a.cc @@ -0,0 +1,86 @@ +// --------------------------------------------------------------------- +// +// Copyright (C) 2015 by the deal.II authors +// +// This file is part of the deal.II library. +// +// The deal.II library is free software; you can use it, redistribute +// it, and/or modify it under the terms of the GNU Lesser General +// Public License as published by the Free Software Foundation; either +// version 2.1 of the License, or (at your option) any later version. +// The full text of the license can be found in the file LICENSE at +// the top level of the deal.II distribution. +// +// --------------------------------------------------------------------- + +// Complex version of packaged_operation_01.cc, test PackagedOperation for +// dealii::Vector> +// dealii::SparseMatrix> + +#include "../tests.h" + +#include + +#include +#include + +using namespace dealii; + + +void test_applies(std::string description, + const PackagedOperation>> &expr) +{ + // test apply + Vector> tmp = expr; + deallog << description << ": " << tmp << std::endl; + + // test apply_add + for (auto &i : tmp) + i = 100.; + expr.apply_add(tmp); + deallog << "100. * 1_n + " << description << ": " << tmp << std::endl; +} + + +int main() +{ + initlog(); + deallog << std::setprecision(10); + + static const int dim = 2; + + // Tests: + + Vector> u(25); + for (unsigned int i = 0; i < u.size(); ++i) { + u[i] = (double)(i+1); + } + + deallog << "u: " << u << std::endl; + + // creation via operator+, operator-, operator* + + test_applies("u + u", u + u); + test_applies("u - u", u - u); + test_applies("3. * u", 3. * u); + test_applies("u * 3.", u * 3.); + + // creation via mixed operator+, operator- + + auto expr = 2. * u; + + test_applies("2. * u + u", expr + u); + test_applies("2. * u - u", expr - u); + + test_applies("u + 2. * u", u + expr); + test_applies("u - 2. * u", u - expr); + + // operator+, operator-, operator* + + PackagedOperation>> expr2 = u; + + test_applies("2. * u + u", expr + expr2); + test_applies("2. * u - u", expr - expr2); + test_applies("3. * u", 3. * expr2); + test_applies("u * 3.", expr2 * 3.); +} diff --git a/tests/lac/packaged_operation_01a.with_cxx11=on.output b/tests/lac/packaged_operation_01a.with_cxx11=on.output new file mode 100644 index 0000000000..7cffe8078c --- /dev/null +++ b/tests/lac/packaged_operation_01a.with_cxx11=on.output @@ -0,0 +1,51 @@ + +DEAL::u: (1.000000000,0.000000000) (2.000000000,0.000000000) (3.000000000,0.000000000) (4.000000000,0.000000000) (5.000000000,0.000000000) (6.000000000,0.000000000) (7.000000000,0.000000000) (8.000000000,0.000000000) (9.000000000,0.000000000) (10.00000000,0.000000000) (11.00000000,0.000000000) (12.00000000,0.000000000) (13.00000000,0.000000000) (14.00000000,0.000000000) (15.00000000,0.000000000) (16.00000000,0.000000000) (17.00000000,0.000000000) (18.00000000,0.000000000) (19.00000000,0.000000000) (20.00000000,0.000000000) (21.00000000,0.000000000) (22.00000000,0.000000000) (23.00000000,0.000000000) (24.00000000,0.000000000) (25.00000000,0.000000000) +DEAL:: +DEAL::u + u: (2.000000000,0.000000000) (4.000000000,0.000000000) (6.000000000,0.000000000) (8.000000000,0.000000000) (10.00000000,0.000000000) (12.00000000,0.000000000) (14.00000000,0.000000000) (16.00000000,0.000000000) (18.00000000,0.000000000) (20.00000000,0.000000000) (22.00000000,0.000000000) (24.00000000,0.000000000) (26.00000000,0.000000000) (28.00000000,0.000000000) (30.00000000,0.000000000) (32.00000000,0.000000000) (34.00000000,0.000000000) (36.00000000,0.000000000) (38.00000000,0.000000000) (40.00000000,0.000000000) (42.00000000,0.000000000) (44.00000000,0.000000000) (46.00000000,0.000000000) (48.00000000,0.000000000) (50.00000000,0.000000000) +DEAL:: +DEAL::100. * 1_n + u + u: (102.0000000,0.000000000) (104.0000000,0.000000000) (106.0000000,0.000000000) (108.0000000,0.000000000) (110.0000000,0.000000000) (112.0000000,0.000000000) (114.0000000,0.000000000) (116.0000000,0.000000000) (118.0000000,0.000000000) (120.0000000,0.000000000) (122.0000000,0.000000000) (124.0000000,0.000000000) (126.0000000,0.000000000) (128.0000000,0.000000000) (130.0000000,0.000000000) (132.0000000,0.000000000) (134.0000000,0.000000000) (136.0000000,0.000000000) (138.0000000,0.000000000) (140.0000000,0.000000000) (142.0000000,0.000000000) (144.0000000,0.000000000) (146.0000000,0.000000000) (148.0000000,0.000000000) (150.0000000,0.000000000) +DEAL:: +DEAL::u - u: (0.000000000,0.000000000) (0.000000000,0.000000000) (0.000000000,0.000000000) (0.000000000,0.000000000) (0.000000000,0.000000000) (0.000000000,0.000000000) (0.000000000,0.000000000) (0.000000000,0.000000000) (0.000000000,0.000000000) (0.000000000,0.000000000) (0.000000000,0.000000000) (0.000000000,0.000000000) (0.000000000,0.000000000) (0.000000000,0.000000000) (0.000000000,0.000000000) (0.000000000,0.000000000) (0.000000000,0.000000000) (0.000000000,0.000000000) (0.000000000,0.000000000) (0.000000000,0.000000000) (0.000000000,0.000000000) (0.000000000,0.000000000) (0.000000000,0.000000000) (0.000000000,0.000000000) (0.000000000,0.000000000) +DEAL:: +DEAL::100. * 1_n + u - u: (100.0000000,0.000000000) (100.0000000,0.000000000) (100.0000000,0.000000000) (100.0000000,0.000000000) (100.0000000,0.000000000) (100.0000000,0.000000000) (100.0000000,0.000000000) (100.0000000,0.000000000) (100.0000000,0.000000000) (100.0000000,0.000000000) (100.0000000,0.000000000) (100.0000000,0.000000000) (100.0000000,0.000000000) (100.0000000,0.000000000) (100.0000000,0.000000000) (100.0000000,0.000000000) (100.0000000,0.000000000) (100.0000000,0.000000000) (100.0000000,0.000000000) (100.0000000,0.000000000) (100.0000000,0.000000000) (100.0000000,0.000000000) (100.0000000,0.000000000) (100.0000000,0.000000000) (100.0000000,0.000000000) +DEAL:: +DEAL::3. * u: (3.000000000,0.000000000) (6.000000000,0.000000000) (9.000000000,0.000000000) (12.00000000,0.000000000) (15.00000000,0.000000000) (18.00000000,0.000000000) (21.00000000,0.000000000) (24.00000000,0.000000000) (27.00000000,0.000000000) (30.00000000,0.000000000) (33.00000000,0.000000000) (36.00000000,0.000000000) (39.00000000,0.000000000) (42.00000000,0.000000000) (45.00000000,0.000000000) (48.00000000,0.000000000) (51.00000000,0.000000000) (54.00000000,0.000000000) (57.00000000,0.000000000) (60.00000000,0.000000000) (63.00000000,0.000000000) (66.00000000,0.000000000) (69.00000000,0.000000000) (72.00000000,0.000000000) (75.00000000,0.000000000) +DEAL:: +DEAL::100. * 1_n + 3. * u: (103.0000000,0.000000000) (106.0000000,0.000000000) (109.0000000,0.000000000) (112.0000000,0.000000000) (115.0000000,0.000000000) (118.0000000,0.000000000) (121.0000000,0.000000000) (124.0000000,0.000000000) (127.0000000,0.000000000) (130.0000000,0.000000000) (133.0000000,0.000000000) (136.0000000,0.000000000) (139.0000000,0.000000000) (142.0000000,0.000000000) (145.0000000,0.000000000) (148.0000000,0.000000000) (151.0000000,0.000000000) (154.0000000,0.000000000) (157.0000000,0.000000000) (160.0000000,0.000000000) (163.0000000,0.000000000) (166.0000000,0.000000000) (169.0000000,0.000000000) (172.0000000,0.000000000) (175.0000000,0.000000000) +DEAL:: +DEAL::u * 3.: (3.000000000,0.000000000) (6.000000000,0.000000000) (9.000000000,0.000000000) (12.00000000,0.000000000) (15.00000000,0.000000000) (18.00000000,0.000000000) (21.00000000,0.000000000) (24.00000000,0.000000000) (27.00000000,0.000000000) (30.00000000,0.000000000) (33.00000000,0.000000000) (36.00000000,0.000000000) (39.00000000,0.000000000) (42.00000000,0.000000000) (45.00000000,0.000000000) (48.00000000,0.000000000) (51.00000000,0.000000000) (54.00000000,0.000000000) (57.00000000,0.000000000) (60.00000000,0.000000000) (63.00000000,0.000000000) (66.00000000,0.000000000) (69.00000000,0.000000000) (72.00000000,0.000000000) (75.00000000,0.000000000) +DEAL:: +DEAL::100. * 1_n + u * 3.: (103.0000000,0.000000000) (106.0000000,0.000000000) (109.0000000,0.000000000) (112.0000000,0.000000000) (115.0000000,0.000000000) (118.0000000,0.000000000) (121.0000000,0.000000000) (124.0000000,0.000000000) (127.0000000,0.000000000) (130.0000000,0.000000000) (133.0000000,0.000000000) (136.0000000,0.000000000) (139.0000000,0.000000000) (142.0000000,0.000000000) (145.0000000,0.000000000) (148.0000000,0.000000000) (151.0000000,0.000000000) (154.0000000,0.000000000) (157.0000000,0.000000000) (160.0000000,0.000000000) (163.0000000,0.000000000) (166.0000000,0.000000000) (169.0000000,0.000000000) (172.0000000,0.000000000) (175.0000000,0.000000000) +DEAL:: +DEAL::2. * u + u: (3.000000000,0.000000000) (6.000000000,0.000000000) (9.000000000,0.000000000) (12.00000000,0.000000000) (15.00000000,0.000000000) (18.00000000,0.000000000) (21.00000000,0.000000000) (24.00000000,0.000000000) (27.00000000,0.000000000) (30.00000000,0.000000000) (33.00000000,0.000000000) (36.00000000,0.000000000) (39.00000000,0.000000000) (42.00000000,0.000000000) (45.00000000,0.000000000) (48.00000000,0.000000000) (51.00000000,0.000000000) (54.00000000,0.000000000) (57.00000000,0.000000000) (60.00000000,0.000000000) (63.00000000,0.000000000) (66.00000000,0.000000000) (69.00000000,0.000000000) (72.00000000,0.000000000) (75.00000000,0.000000000) +DEAL:: +DEAL::100. * 1_n + 2. * u + u: (103.0000000,0.000000000) (106.0000000,0.000000000) (109.0000000,0.000000000) (112.0000000,0.000000000) (115.0000000,0.000000000) (118.0000000,0.000000000) (121.0000000,0.000000000) (124.0000000,0.000000000) (127.0000000,0.000000000) (130.0000000,0.000000000) (133.0000000,0.000000000) (136.0000000,0.000000000) (139.0000000,0.000000000) (142.0000000,0.000000000) (145.0000000,0.000000000) (148.0000000,0.000000000) (151.0000000,0.000000000) (154.0000000,0.000000000) (157.0000000,0.000000000) (160.0000000,0.000000000) (163.0000000,0.000000000) (166.0000000,0.000000000) (169.0000000,0.000000000) (172.0000000,0.000000000) (175.0000000,0.000000000) +DEAL:: +DEAL::2. * u - u: (1.000000000,0.000000000) (2.000000000,0.000000000) (3.000000000,0.000000000) (4.000000000,0.000000000) (5.000000000,0.000000000) (6.000000000,0.000000000) (7.000000000,0.000000000) (8.000000000,0.000000000) (9.000000000,0.000000000) (10.00000000,0.000000000) (11.00000000,0.000000000) (12.00000000,0.000000000) (13.00000000,0.000000000) (14.00000000,0.000000000) (15.00000000,0.000000000) (16.00000000,0.000000000) (17.00000000,0.000000000) (18.00000000,0.000000000) (19.00000000,0.000000000) (20.00000000,0.000000000) (21.00000000,0.000000000) (22.00000000,0.000000000) (23.00000000,0.000000000) (24.00000000,0.000000000) (25.00000000,0.000000000) +DEAL:: +DEAL::100. * 1_n + 2. * u - u: (101.0000000,0.000000000) (102.0000000,0.000000000) (103.0000000,0.000000000) (104.0000000,0.000000000) (105.0000000,0.000000000) (106.0000000,0.000000000) (107.0000000,0.000000000) (108.0000000,0.000000000) (109.0000000,0.000000000) (110.0000000,0.000000000) (111.0000000,0.000000000) (112.0000000,0.000000000) (113.0000000,0.000000000) (114.0000000,0.000000000) (115.0000000,0.000000000) (116.0000000,0.000000000) (117.0000000,0.000000000) (118.0000000,0.000000000) (119.0000000,0.000000000) (120.0000000,0.000000000) (121.0000000,0.000000000) (122.0000000,0.000000000) (123.0000000,0.000000000) (124.0000000,0.000000000) (125.0000000,0.000000000) +DEAL:: +DEAL::u + 2. * u: (3.000000000,0.000000000) (6.000000000,0.000000000) (9.000000000,0.000000000) (12.00000000,0.000000000) (15.00000000,0.000000000) (18.00000000,0.000000000) (21.00000000,0.000000000) (24.00000000,0.000000000) (27.00000000,0.000000000) (30.00000000,0.000000000) (33.00000000,0.000000000) (36.00000000,0.000000000) (39.00000000,0.000000000) (42.00000000,0.000000000) (45.00000000,0.000000000) (48.00000000,0.000000000) (51.00000000,0.000000000) (54.00000000,0.000000000) (57.00000000,0.000000000) (60.00000000,0.000000000) (63.00000000,0.000000000) (66.00000000,0.000000000) (69.00000000,0.000000000) (72.00000000,0.000000000) (75.00000000,0.000000000) +DEAL:: +DEAL::100. * 1_n + u + 2. * u: (103.0000000,0.000000000) (106.0000000,0.000000000) (109.0000000,0.000000000) (112.0000000,0.000000000) (115.0000000,0.000000000) (118.0000000,0.000000000) (121.0000000,0.000000000) (124.0000000,0.000000000) (127.0000000,0.000000000) (130.0000000,0.000000000) (133.0000000,0.000000000) (136.0000000,0.000000000) (139.0000000,0.000000000) (142.0000000,0.000000000) (145.0000000,0.000000000) (148.0000000,0.000000000) (151.0000000,0.000000000) (154.0000000,0.000000000) (157.0000000,0.000000000) (160.0000000,0.000000000) (163.0000000,0.000000000) (166.0000000,0.000000000) (169.0000000,0.000000000) (172.0000000,0.000000000) (175.0000000,0.000000000) +DEAL:: +DEAL::u - 2. * u: (-1.000000000,0.000000000) (-2.000000000,0.000000000) (-3.000000000,0.000000000) (-4.000000000,0.000000000) (-5.000000000,0.000000000) (-6.000000000,0.000000000) (-7.000000000,0.000000000) (-8.000000000,0.000000000) (-9.000000000,0.000000000) (-10.00000000,0.000000000) (-11.00000000,0.000000000) (-12.00000000,0.000000000) (-13.00000000,0.000000000) (-14.00000000,0.000000000) (-15.00000000,0.000000000) (-16.00000000,0.000000000) (-17.00000000,0.000000000) (-18.00000000,0.000000000) (-19.00000000,0.000000000) (-20.00000000,0.000000000) (-21.00000000,0.000000000) (-22.00000000,0.000000000) (-23.00000000,0.000000000) (-24.00000000,0.000000000) (-25.00000000,0.000000000) +DEAL:: +DEAL::100. * 1_n + u - 2. * u: (99.00000000,0.000000000) (98.00000000,0.000000000) (97.00000000,0.000000000) (96.00000000,0.000000000) (95.00000000,0.000000000) (94.00000000,0.000000000) (93.00000000,0.000000000) (92.00000000,0.000000000) (91.00000000,0.000000000) (90.00000000,0.000000000) (89.00000000,0.000000000) (88.00000000,0.000000000) (87.00000000,0.000000000) (86.00000000,0.000000000) (85.00000000,0.000000000) (84.00000000,0.000000000) (83.00000000,0.000000000) (82.00000000,0.000000000) (81.00000000,0.000000000) (80.00000000,0.000000000) (79.00000000,0.000000000) (78.00000000,0.000000000) (77.00000000,0.000000000) (76.00000000,0.000000000) (75.00000000,0.000000000) +DEAL:: +DEAL::2. * u + u: (3.000000000,0.000000000) (6.000000000,0.000000000) (9.000000000,0.000000000) (12.00000000,0.000000000) (15.00000000,0.000000000) (18.00000000,0.000000000) (21.00000000,0.000000000) (24.00000000,0.000000000) (27.00000000,0.000000000) (30.00000000,0.000000000) (33.00000000,0.000000000) (36.00000000,0.000000000) (39.00000000,0.000000000) (42.00000000,0.000000000) (45.00000000,0.000000000) (48.00000000,0.000000000) (51.00000000,0.000000000) (54.00000000,0.000000000) (57.00000000,0.000000000) (60.00000000,0.000000000) (63.00000000,0.000000000) (66.00000000,0.000000000) (69.00000000,0.000000000) (72.00000000,0.000000000) (75.00000000,0.000000000) +DEAL:: +DEAL::100. * 1_n + 2. * u + u: (103.0000000,0.000000000) (106.0000000,0.000000000) (109.0000000,0.000000000) (112.0000000,0.000000000) (115.0000000,0.000000000) (118.0000000,0.000000000) (121.0000000,0.000000000) (124.0000000,0.000000000) (127.0000000,0.000000000) (130.0000000,0.000000000) (133.0000000,0.000000000) (136.0000000,0.000000000) (139.0000000,0.000000000) (142.0000000,0.000000000) (145.0000000,0.000000000) (148.0000000,0.000000000) (151.0000000,0.000000000) (154.0000000,0.000000000) (157.0000000,0.000000000) (160.0000000,0.000000000) (163.0000000,0.000000000) (166.0000000,0.000000000) (169.0000000,0.000000000) (172.0000000,0.000000000) (175.0000000,0.000000000) +DEAL:: +DEAL::2. * u - u: (1.000000000,0.000000000) (2.000000000,0.000000000) (3.000000000,0.000000000) (4.000000000,0.000000000) (5.000000000,0.000000000) (6.000000000,0.000000000) (7.000000000,0.000000000) (8.000000000,0.000000000) (9.000000000,0.000000000) (10.00000000,0.000000000) (11.00000000,0.000000000) (12.00000000,0.000000000) (13.00000000,0.000000000) (14.00000000,0.000000000) (15.00000000,0.000000000) (16.00000000,0.000000000) (17.00000000,0.000000000) (18.00000000,0.000000000) (19.00000000,0.000000000) (20.00000000,0.000000000) (21.00000000,0.000000000) (22.00000000,0.000000000) (23.00000000,0.000000000) (24.00000000,0.000000000) (25.00000000,0.000000000) +DEAL:: +DEAL::100. * 1_n + 2. * u - u: (101.0000000,0.000000000) (102.0000000,0.000000000) (103.0000000,0.000000000) (104.0000000,0.000000000) (105.0000000,0.000000000) (106.0000000,0.000000000) (107.0000000,0.000000000) (108.0000000,0.000000000) (109.0000000,0.000000000) (110.0000000,0.000000000) (111.0000000,0.000000000) (112.0000000,0.000000000) (113.0000000,0.000000000) (114.0000000,0.000000000) (115.0000000,0.000000000) (116.0000000,0.000000000) (117.0000000,0.000000000) (118.0000000,0.000000000) (119.0000000,0.000000000) (120.0000000,0.000000000) (121.0000000,0.000000000) (122.0000000,0.000000000) (123.0000000,0.000000000) (124.0000000,0.000000000) (125.0000000,0.000000000) +DEAL:: +DEAL::3. * u: (3.000000000,0.000000000) (6.000000000,0.000000000) (9.000000000,0.000000000) (12.00000000,0.000000000) (15.00000000,0.000000000) (18.00000000,0.000000000) (21.00000000,0.000000000) (24.00000000,0.000000000) (27.00000000,0.000000000) (30.00000000,0.000000000) (33.00000000,0.000000000) (36.00000000,0.000000000) (39.00000000,0.000000000) (42.00000000,0.000000000) (45.00000000,0.000000000) (48.00000000,0.000000000) (51.00000000,0.000000000) (54.00000000,0.000000000) (57.00000000,0.000000000) (60.00000000,0.000000000) (63.00000000,0.000000000) (66.00000000,0.000000000) (69.00000000,0.000000000) (72.00000000,0.000000000) (75.00000000,0.000000000) +DEAL:: +DEAL::100. * 1_n + 3. * u: (103.0000000,0.000000000) (106.0000000,0.000000000) (109.0000000,0.000000000) (112.0000000,0.000000000) (115.0000000,0.000000000) (118.0000000,0.000000000) (121.0000000,0.000000000) (124.0000000,0.000000000) (127.0000000,0.000000000) (130.0000000,0.000000000) (133.0000000,0.000000000) (136.0000000,0.000000000) (139.0000000,0.000000000) (142.0000000,0.000000000) (145.0000000,0.000000000) (148.0000000,0.000000000) (151.0000000,0.000000000) (154.0000000,0.000000000) (157.0000000,0.000000000) (160.0000000,0.000000000) (163.0000000,0.000000000) (166.0000000,0.000000000) (169.0000000,0.000000000) (172.0000000,0.000000000) (175.0000000,0.000000000) +DEAL:: +DEAL::u * 3.: (3.000000000,0.000000000) (6.000000000,0.000000000) (9.000000000,0.000000000) (12.00000000,0.000000000) (15.00000000,0.000000000) (18.00000000,0.000000000) (21.00000000,0.000000000) (24.00000000,0.000000000) (27.00000000,0.000000000) (30.00000000,0.000000000) (33.00000000,0.000000000) (36.00000000,0.000000000) (39.00000000,0.000000000) (42.00000000,0.000000000) (45.00000000,0.000000000) (48.00000000,0.000000000) (51.00000000,0.000000000) (54.00000000,0.000000000) (57.00000000,0.000000000) (60.00000000,0.000000000) (63.00000000,0.000000000) (66.00000000,0.000000000) (69.00000000,0.000000000) (72.00000000,0.000000000) (75.00000000,0.000000000) +DEAL:: +DEAL::100. * 1_n + u * 3.: (103.0000000,0.000000000) (106.0000000,0.000000000) (109.0000000,0.000000000) (112.0000000,0.000000000) (115.0000000,0.000000000) (118.0000000,0.000000000) (121.0000000,0.000000000) (124.0000000,0.000000000) (127.0000000,0.000000000) (130.0000000,0.000000000) (133.0000000,0.000000000) (136.0000000,0.000000000) (139.0000000,0.000000000) (142.0000000,0.000000000) (145.0000000,0.000000000) (148.0000000,0.000000000) (151.0000000,0.000000000) (154.0000000,0.000000000) (157.0000000,0.000000000) (160.0000000,0.000000000) (163.0000000,0.000000000) (166.0000000,0.000000000) (169.0000000,0.000000000) (172.0000000,0.000000000) (175.0000000,0.000000000) +DEAL:: -- 2.39.5