OOFEM 3.0
Loading...
Searching...
No Matches
symcompcol.h
Go to the documentation of this file.
1/*
2 *
3 * ##### ##### ###### ###### ### ###
4 * ## ## ## ## ## ## ## ### ##
5 * ## ## ## ## #### #### ## # ##
6 * ## ## ## ## ## ## ## ##
7 * ## ## ## ## ## ## ## ##
8 * ##### ##### ## ###### ## ##
9 *
10 *
11 * OOFEM : Object Oriented Finite Element Code
12 *
13 * Copyright (C) 1993 - 2025 Borek Patzak
14 *
15 *
16 *
17 * Czech Technical University, Faculty of Civil Engineering,
18 * Department of Structural Mechanics, 166 29 Prague, Czech Republic
19 *
20 * This library is free software; you can redistribute it and/or
21 * modify it under the terms of the GNU Lesser General Public
22 * License as published by the Free Software Foundation; either
23 * version 2.1 of the License, or (at your option) any later version.
24 *
25 * This program is distributed in the hope that it will be useful,
26 * but WITHOUT ANY WARRANTY; without even the implied warranty of
27 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
28 * Lesser General Public License for more details.
29 *
30 * You should have received a copy of the GNU Lesser General Public
31 * License along with this library; if not, write to the Free Software
32 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
33 */
34
35// Inspired by SPARSELib++
36/*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
37/* ******** *** SparseLib++ */
38/* ******* ** *** *** *** v. 1.5c */
39/* ***** *** ******** ******** */
40/* ***** *** ******** ******** R. Pozo */
41/* ** ******* *** ** *** *** K. Remington */
42/* ******** ******** A. Lumsdaine */
43/*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
44/* */
45/* */
46/* SparseLib++ : Sparse Matrix Library */
47/* */
48/* National Institute of Standards and Technology */
49/* University of Notre Dame */
50/* Authors: R. Pozo, K. Remington, A. Lumsdaine */
51/* */
52/* NOTICE */
53/* */
54/* Permission to use, copy, modify, and distribute this software and */
55/* its documentation for any purpose and without fee is hereby granted */
56/* provided that the above notice appear in all copies and supporting */
57/* documentation. */
58/* */
59/* Neither the Institutions (National Institute of Standards and Technology, */
60/* University of Notre Dame) nor the Authors make any representations about */
61/* the suitability of this software for any purpose. This software is */
62/* provided ``as is'' without expressed or implied warranty. */
63/* */
64/*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
65
66/*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
67/* Compressed column sparse matrix (O-based, Fortran) */
68/*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
69
70
71#ifndef symcompcol_h
72#define symcompcol_h
73
74#include "compcol.h"
75
76namespace oofem {
82{
83public:
90 SymCompCol(int n=0);
92 SymCompCol(const SymCompCol & S);
94 virtual ~SymCompCol() { }
95
96 std::unique_ptr<SparseMtrx> clone() const override;
97 void times(const FloatArray &x, FloatArray &answer) const override;
98 void timesT(const FloatArray &x, FloatArray &answer) const override { this->times(x, answer); }
99 void times(double x) override;
100 int buildInternalStructure(EngngModel *, int, const UnknownNumberingScheme &) override;
101 int assemble(const IntArray &loc, const FloatMatrix &mat) override;
102 int assemble(const IntArray &rloc, const IntArray &cloc, const FloatMatrix &mat) override;
103 bool canBeFactorized() const override { return false; }
104 void zero() override;
105 double &at(int i, int j) override;
106 double at(int i, int j) const override;
107 const char* giveClassName() const override { return "SymCompCol"; }
108 SparseMtrxType giveType() const override { return SMT_SymCompCol; }
109 bool isAsymmetric() const override { return false; }
110
111protected:
112
113 /***********************************/
114 /* General access function (slow) */
115 /***********************************/
117 double operator() (int i, int j) const;
119 double &operator() (int i, int j);
120};
121} // end namespace oofem
122#endif // symcompcol_h
CompCol(int n=0)
Definition compcol.C:88
bool canBeFactorized() const override
Determines, whether receiver can be factorized.
Definition symcompcol.h:103
void times(const FloatArray &x, FloatArray &answer) const override
Definition symcompcol.C:201
virtual ~SymCompCol()
Destructor.
Definition symcompcol.h:94
bool isAsymmetric() const override
Returns true if asymmetric.
Definition symcompcol.h:109
void timesT(const FloatArray &x, FloatArray &answer) const override
Definition symcompcol.h:98
const char * giveClassName() const override
Definition symcompcol.h:107
SparseMtrxType giveType() const override
Sparse matrix type identification.
Definition symcompcol.h:108
SymCompCol(int n=0)
Definition symcompcol.C:84
#define S(p)
Definition mdm.C:469
FloatArrayF< N > assemble(const FloatArrayF< M > &x, int const (&c)[M])
Assemble components into zero matrix.
FloatMatrixF< N, M > zero()
Constructs a zero matrix (this is the default behavior when constructing a matrix,...
@ SMT_SymCompCol
Symmetric compressed column.
#define OOFEM_EXPORT
Definition oofemcfg.h:7

This page is part of the OOFEM-3.0 documentation. Copyright Copyright (C) 1994-2025 Borek Patzak Bořek Patzák
Project e-mail: oofem@fsv.cvut.cz
Generated at for OOFEM by doxygen 1.15.0 written by Dimitri van Heesch, © 1997-2011