From 0759d51a28641dd0f031423f3a14ebd7f7642412 Mon Sep 17 00:00:00 2001 From: young Date: Fri, 18 Oct 2013 11:21:06 +0000 Subject: [PATCH] Two simple petsc-complex vector tests. git-svn-id: https://svn.dealii.org/branches/branch_petscscalar_complex@31299 0785d39b-7218-0410-832d-ea1e28bc413d --- tests/petsc_scalar_complex/11.cc | 104 +++++++++++++++++ tests/petsc_scalar_complex/11/cmp/generic | 5 + tests/petsc_scalar_complex/12.cc | 136 ++++++++++++++++++++++ tests/petsc_scalar_complex/12/cmp/generic | 5 + 4 files changed, 250 insertions(+) create mode 100644 tests/petsc_scalar_complex/11.cc create mode 100644 tests/petsc_scalar_complex/11/cmp/generic create mode 100644 tests/petsc_scalar_complex/12.cc create mode 100644 tests/petsc_scalar_complex/12/cmp/generic diff --git a/tests/petsc_scalar_complex/11.cc b/tests/petsc_scalar_complex/11.cc new file mode 100644 index 0000000000..297f55b2e5 --- /dev/null +++ b/tests/petsc_scalar_complex/11.cc @@ -0,0 +1,104 @@ +// --------------------------------------------------------------------- +// $Id: +// +// Copyright (C) 2013 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. +// +// --------------------------------------------------------------------- + + + +// check PETScWrappers::Vector::size() + +#include "../tests.h" +#include +#include +#include + + +void test_real (PETScWrappers::Vector &v) +{ + deallog << "Real test" << std::endl; + + // set only certain elements of the vector + for (unsigned int k=0; k (k,.5*k); + + v.compress (VectorOperation::add); + + Assert (v.size() == 100, ExcInternalError()); + + deallog << "OK" << std::endl; +} + + + +int main (int argc,char **argv) +{ + std::ofstream logfile("11/output"); + deallog.attach(logfile); + deallog.depth_console(0); + deallog.threshold_double(1.e-10); + + try + { + Utilities::MPI::MPI_InitFinalize mpi_initialization(argc, argv, 1); + { + PETScWrappers::Vector v; + + v.reinit (100); + test_real (v); + + v.reinit (100); + test_complex (v); + } + + } + catch (std::exception &exc) + { + std::cerr << std::endl << std::endl + << "----------------------------------------------------" + << std::endl; + std::cerr << "Exception on processing: " << std::endl + << exc.what() << std::endl + << "Aborting!" << std::endl + << "----------------------------------------------------" + << std::endl; + + return 1; + } + catch (...) + { + std::cerr << std::endl << std::endl + << "----------------------------------------------------" + << std::endl; + std::cerr << "Unknown exception!" << std::endl + << "Aborting!" << std::endl + << "----------------------------------------------------" + << std::endl; + return 1; + }; +} diff --git a/tests/petsc_scalar_complex/11/cmp/generic b/tests/petsc_scalar_complex/11/cmp/generic new file mode 100644 index 0000000000..d2ebc39535 --- /dev/null +++ b/tests/petsc_scalar_complex/11/cmp/generic @@ -0,0 +1,5 @@ + +DEAL::Real test +DEAL::OK +DEAL::Complex test +DEAL::OK diff --git a/tests/petsc_scalar_complex/12.cc b/tests/petsc_scalar_complex/12.cc new file mode 100644 index 0000000000..bac771e974 --- /dev/null +++ b/tests/petsc_scalar_complex/12.cc @@ -0,0 +1,136 @@ +// --------------------------------------------------------------------- +// $Id: +// +// Copyright (C) 2013 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. +// +// --------------------------------------------------------------------- + + + +// check PETScWrappers::Vector::operator() in set-mode + +#include "../tests.h" +#include +#include +#include +#include + + +void test_real (PETScWrappers::Vector &v) +{ + deallog << "Real test" << std::endl; + + // set only certain elements of the vector. have a bit pattern of + // where we actually wrote elements to + std::vector pattern (v.size(), false); + for (unsigned int k=0; k pattern (v.size(), false); + for (unsigned int k=0; k (0.,k); + pattern[k] = true; + } + + v.compress (VectorOperation::add); + + // check that they are ok, and this time all of them + for (unsigned int k=0; k