Select Git revision
CommandLine.h
Forked from
gmsh / gmsh
Source project has a limited visibility.
GmshMatrix.h 8.13 KiB
#ifndef _GMSH_MATRIX_H_
#define _GMSH_MATRIX_H_
// Copyright (C) 1997-2008 C. Geuzaine, J.-F. Remacle
//
// This program is free software; you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation; either version 2 of the License, or
// (at your option) any later version.
//
// This program 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 General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 // USA.
//
// Please report all bugs and problems to <gmsh@geuz.org>.
#include <assert.h>
template <class SCALAR>
class Gmsh_Vector
{
private:
int r;
public:
inline int size() const { return r; }
SCALAR *data;
~Gmsh_Vector() { delete [] data; }
Gmsh_Vector(int R) : r(R)
{
data = new SCALAR[r];
scale(0);
}
Gmsh_Vector(const Gmsh_Vector<SCALAR> &other) : r(other.r)
{
data = new double[r];
for (int i = 0; i < r; ++i) data[i] = other.data[i];
}
inline SCALAR operator () (int i) const
{
return data[i];
}
inline SCALAR & operator () (int i)
{
return data[i];
}
inline double norm()
{
double n = 0.;
for(int i = 0; i < r; ++i) n += data[i] * data[i];
return sqrt(n);
}
inline void scale(const SCALAR s)
{
for (int i = 0; i < r; ++i) data[i] *= s;
}
};
template <class SCALAR>
class Gmsh_Matrix
{
private:
int r, c;
public:
inline int size1() const { return r; }
inline int size2() const { return c; }