Loading...
Searching...
No Matches
CoordinateMatrix.h
// Copyright (C) 2011 Garth N. Wells
//
// This file is part of DOLFIN.
//
// DOLFIN is free software: you can 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 3 of the License, or
// (at your option) any later version.
//
// DOLFIN is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU Lesser General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public License
// along with DOLFIN. If not, see <http://www.gnu.org/licenses/>.
//
// First added: 2011-10-16
// Last changed:
#ifndef __DOLFIN_COORDINATE_MATRIX_H
#define __DOLFIN_COORDINATE_MATRIX_H
#include <string>
#include <vector>
#include <dolfin/common/types.h>
#include <dolfin/common/MPI.h>
namespace dolfin
{
// Forward declarations
class GenericMatrix;
class CoordinateMatrix
{
public:
CoordinateMatrix(const GenericMatrix& A, bool symmetric, bool base_one);
virtual ~CoordinateMatrix() {}
std::size_t size(std::size_t dim) const
{ return _size[dim]; }
const std::vector<std::size_t>& rows() const
{ return _rows; }
const std::vector<std::size_t>& columns() const
{ return _cols; }
const std::vector<double>& values() const
{ return _vals; }
double norm(std::string norm_type) const;
MPI_Comm mpi_comm() const
{ return _mpi_comm.comm(); }
bool base_one() const
{ return _base_one; }
private:
// MPI communicator
dolfin::MPI::Comm _mpi_comm;
// Row and column indices
std::vector<std::size_t> _rows;
std::vector<std::size_t> _cols;
// Storage of values
std::vector<double> _vals;
// Global size
std::size_t _size[2];
// Symmetric storage
const bool _symmetric;
// Array base (C/Fortran)
const bool _base_one;
};
}
#endif
dolfin::CoordinateMatrix::norm
double norm(std::string norm_type) const
Return norm of matrix.
Definition CoordinateMatrix.cpp:89
dolfin::CoordinateMatrix::values
const std::vector< double > & values() const
Get values.
Definition CoordinateMatrix.h:62
dolfin::CoordinateMatrix::columns
const std::vector< std::size_t > & columns() const
Get column indices.
Definition CoordinateMatrix.h:58
dolfin::CoordinateMatrix::~CoordinateMatrix
virtual ~CoordinateMatrix()
Destructor.
Definition CoordinateMatrix.h:45
dolfin::CoordinateMatrix::mpi_comm
MPI_Comm mpi_comm() const
Get MPI_Comm.
Definition CoordinateMatrix.h:69
dolfin::CoordinateMatrix::base_one
bool base_one() const
Whether indices start from 0 (C-style) or 1 (FORTRAN-style).
Definition CoordinateMatrix.h:73
dolfin::CoordinateMatrix::CoordinateMatrix
CoordinateMatrix(const GenericMatrix &A, bool symmetric, bool base_one)
Constructor.
Definition CoordinateMatrix.cpp:30
dolfin::CoordinateMatrix::rows
const std::vector< std::size_t > & rows() const
Get row indices.
Definition CoordinateMatrix.h:54
dolfin::CoordinateMatrix::size
std::size_t size(std::size_t dim) const
Definition CoordinateMatrix.h:50
dolfin::GenericMatrix
This class defines a common interface for matrices.
Definition GenericMatrix.h:47
dolfin::MPI::Comm
Definition MPI.h:77
dolfin
Definition adapt.h:30