1 /*---------------------------------------------------------------------------*\
3 \\ / F ield | cfMesh: A library for mesh generation
5 \\ / A nd | Author: Franjo Juretic (franjo.juretic@c-fields.com)
6 \\/ M anipulation | Copyright (C) Creative Fields, Ltd.
7 -------------------------------------------------------------------------------
9 This file is part of cfMesh.
11 cfMesh is free software; you can redistribute it and/or modify it
12 under the terms of the GNU General Public License as published by the
13 Free Software Foundation; either version 3 of the License, or (at your
14 option) any later version.
16 cfMesh is distributed in the hope that it will be useful, but WITHOUT
17 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
18 FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
21 You should have received a copy of the GNU General Public License
22 along with cfMesh. If not, see <http://www.gnu.org/licenses/>.
24 \*---------------------------------------------------------------------------*/
28 #include "labelList.H"
30 // * * * * * * * * * * * * * * * IOstream Operators * * * * * * * * * * * * //
32 Foam::Ostream& Foam::operator<<
35 const Foam::VRWGraph& DL
38 os << DL.size() << nl << token::BEGIN_LIST;
40 for(register label i=0;i<DL.size();++i)
42 os << nl << DL.sizeOfRow(i) << token::BEGIN_LIST;
43 for(label j=0;j<DL.sizeOfRow(i);++j)
45 if( j > 0 ) os << token::SPACE;
50 os << token::END_LIST;
53 os << nl << token::END_LIST;
58 template<class T, Foam::label width>
59 Foam::Istream& Foam::operator>>
62 Foam::VRWGraph<T, width>& DL
69 for(IndexType i=0;i<size;++i)
79 void Foam::VRWGraph::optimizeMemoryUsage()
81 labelLongList newPosForNode(data_.size());
82 label pos(0), nElements;
83 nElements = data_.size();
84 for(label elI=0;elI<nElements;++elI)
85 if( data_[elI] != FREEENTRY )
87 newPosForNode[elI] = pos++;
91 newPosForNode[elI] = -1;
95 for(label elI=0;elI<nElements;++elI)
96 if( (newPosForNode[elI] != -1) && (newPosForNode[elI] < elI) )
97 data_[newPosForNode[elI]] = data_[elI];
102 nElements = rows_.size();
103 for(label rowI=0;rowI<nElements;++rowI)
104 if( rows_[rowI].start() != INVALIDROW )
105 rows_[rowI].start() = newPosForNode[rows_[rowI].start()];
108 // ************************************************************************* //