Go to the documentation of this file.
46 Preconditioner :: initializeFrom(ir);
53 if (
dynamic_cast< const SymCompCol *
>(&A) ) {
55 }
else if (
dynamic_cast< const CompCol *
>(&A) ) {
64CompCol_ICPreconditioner :: initialize(
const CompCol &A)
72 for (
int k = 0; k <
dim [ 1 ]; k++ ) {
85 for (
int k = 0; k <
dim [ 1 ]; k++ ) {
89 int i =
pntr[k + 1]++;
96 for (
int i = 0; i <
dim [ 1 ]; i++ ) {
123CompCol_ICPreconditioner :: ICFactor()
125 int n =
pntr.giveSize() - 1;
127 for (
int k = 0; k < n - 1; k++ ) {
129 double z =
val[d] = sqrt(
val[d] );
131 for (
int i = d + 1; i <
pntr[k + 1]; i++ ) {
135 for (
int i = d + 1; i <
pntr[k + 1]; i++ ) {
140 for (
int j =
pntr[h]; j <
pntr[h + 1]; j++ ) {
141 for ( ; g <
pntr[k + 1] &&
indx[g + 1] <=
indx[j]; g++ ) {
163 for (
int i = 0; i < M; i++ ) {
165 work[i] = temp = ( dest[i] + work[i] ) /
val[
pntr[i] ];
166 for (
int t =
pntr[i] + 1; t <
pntr[i + 1]; t++ ) {
167 work[
indx[t] ] -=
val[t] * temp;
173 for (
int i = M - 1; i >= 0; i-- ) {
174 for (
int t =
pntr[i] + 1; t <
pntr[i + 1]; t++ ) {
175 dest[i] -=
val[t] * dest(
indx[t] );
178 dest[i] = ( work[i] + dest[i] ) /
val[
pntr[i] ];
199 int i = l - 1, j = r;
203 while ( ( src[++i] < v ) ) {
207 while ( ( v < src[--j] ) ) {
217 std::swap(src[i], src[j]);
218 std::swap(
val[i],
val[j]);
221 std::swap(src[i], src[r]);
222 std::swap(
val[i],
val[r]);
void qsortRow(IntArray &, FloatArray &, int l, int r)
int qsortRowPartition(IntArray &, FloatArray &, int l, int r)
void ICSolve(FloatArray &dest) const
void initialize(const CompCol &A)
const int & row_ind(int i) const
const int & col_ptr(int i) const
const double & values(int i) const
Index giveSize() const
Returns the size of receiver.
void zero()
Zeroes all coefficients of receiver.
Preconditioner(const SparseMtrx &a, InputRecord &attributes)
int giveNumberOfRows() const
Returns number of rows of receiver.
int giveNumberOfColumns() const
Returns number of columns of receiver.
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