twoPhaseEulerFoam:frictionalStressModel/Schaeffer: Correct mut on processor boundaries
[OpenFOAM-1.7.x.git] / src / dynamicMesh / fvMeshDistribute / CompactListList_devI.H
blob477b634e97283e2e34f5de206855ac87fd0e04bf
1 /*---------------------------------------------------------------------------*\
2   =========                 |
3   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
4    \\    /   O peration     |
5     \\  /    A nd           | Copyright (C) 1991-2010 OpenCFD Ltd.
6      \\/     M anipulation  |
7 -------------------------------------------------------------------------------
8 License
9     This file is part of OpenFOAM.
11     OpenFOAM is free software: you can redistribute it and/or modify it
12     under the terms of the GNU General Public License as published by
13     the Free Software Foundation, either version 3 of the License, or
14     (at your option) any later version.
16     OpenFOAM 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
19     for more details.
21     You should have received a copy of the GNU General Public License
22     along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
24 \*---------------------------------------------------------------------------*/
26 #include "ListOps.H"
27 #include "SubList.H"
29 // * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
31 template<class T, class Container>
32 inline Foam::CompactListList_dev<T, Container>::CompactListList_dev()
34     size_(0)
38 template<class T, class Container>
39 inline Foam::CompactListList_dev<T, Container>::CompactListList_dev
41     const label nRows,
42     const label nData
45     size_(nRows),
46     offsets_(nRows+1, 0),
47     m_(nData)
51 template<class T, class Container>
52 inline Foam::CompactListList_dev<T, Container>::CompactListList_dev
54     const label nRows,
55     const label nData,
56     const T& t
59     size_(nRows),
60     offsets_(nRows+1, 0),
61     m_(nData, t)
65 template<class T, class Container>
66 inline Foam::autoPtr<Foam::CompactListList_dev<T, Container> >
67 Foam::CompactListList_dev<T, Container>::clone() const
69     return autoPtr<CompactListList_dev<T, Container> >
70     (
71         new CompactListList_dev<T, Container>(*this)
72     );
76 // * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
78 template<class T, class Container>
79 inline const Foam::CompactListList_dev<T, Container>&
80 Foam::CompactListList_dev<T, Container>::null()
82     return *reinterpret_cast< CompactListList_dev<T, Container>* >(0);
86 template<class T, class Container>
87 inline Foam::label Foam::CompactListList_dev<T, Container>::size() const
89     return size_;
93 template<class T, class Container>
94 inline bool Foam::CompactListList_dev<T, Container>::empty() const
96     return !size_;
100 template<class T, class Container>
101 inline const Foam::List<Foam::label>&
102 Foam::CompactListList_dev<T, Container>::offsets() const
104     return offsets_;
108 template<class T, class Container>
109 inline Foam::List<Foam::label>& Foam::CompactListList_dev<T, Container>::offsets()
111     return offsets_;
115 template<class T, class Container>
116 inline const Foam::List<T>& Foam::CompactListList_dev<T, Container>::m()
117 const
119     return m_;
123 template<class T, class Container>
124 inline Foam::List<T>& Foam::CompactListList_dev<T, Container>::m()
126     return m_;
130 template<class T, class Container>
131 inline Foam::label Foam::CompactListList_dev<T, Container>::index
133     const label i,
134     const label j
135 ) const
137     return offsets_[i] + j;
141 template<class T, class Container>
142 inline Foam::label Foam::CompactListList_dev<T, Container>::whichRow(const label i)
143 const
145     if (i < 0 || i >= m_.size())
146     {
147         FatalErrorIn
148         (
149             "CompactListList_dev<T, Container>::whichRow(const label) const"
150         )   << "Index " << i << " outside 0.." << m_.size()
151             << abort(FatalError);
152     }
154     return findLower(offsets_, i+1);
158 template<class T, class Container>
159 inline Foam::label Foam::CompactListList_dev<T, Container>::whichColumn
161     const label row,
162     const label i
163 ) const
165     return i - index(row, 0);
169 template<class T, class Container>
170 inline Foam::Xfer<Foam::CompactListList_dev<T, Container> >
171 Foam::CompactListList_dev<T, Container>::xfer()
173     return xferMove(*this);
177 template<class T, class Container>
178 inline void Foam::CompactListList_dev<T, Container>::resize(const label nRows)
180     this->setSize(nRows);
184 template<class T, class Container>
185 inline void Foam::CompactListList_dev<T, Container>::resize
187     const label nRows,
188     const label nData
191     this->setSize(nRows, nData);
195 template<class T, class Container>
196 inline void Foam::CompactListList_dev<T, Container>::resize
198     const label nRows,
199     const label nData,
200     const T& t
203     this->setSize(nRows, nData, t);
207 template<class T, class Container>
208 inline void Foam::CompactListList_dev<T, Container>::resize
210     const UList<label>& rowSizes
213     this->setSize(rowSizes);
217 // * * * * * * * * * * * * * * * Member Operators  * * * * * * * * * * * * * //
219 template<class T, class Container>
220 inline Foam::UList<T> Foam::CompactListList_dev<T, Container>::operator[]
222     const label i
225     label start = offsets_[i];
226     return UList<T>((m_.size() ? &m_[start] : NULL), offsets_[i+1] - start);
230 template<class T, class Container>
231 inline const Foam::UList<T>
232 Foam::CompactListList_dev<T, Container>::operator[]
234     const label i
235 ) const
237     label start = offsets_[i];
238     return UList<T>
239     (
240         (m_.size() ? const_cast<T*>(&m_[start]) : NULL),
241         offsets_[i+1] - start
242     );
246 template<class T, class Container>
247 inline T& Foam::CompactListList_dev<T, Container>::operator()
249     const label i,
250     const label j
253     return m_[index(i, j)];
257 template<class T, class Container>
258 inline const T& Foam::CompactListList_dev<T, Container>::operator()
260     const label i,
261     const label j
262 ) const
264     return m_[index(i, j)];
268 template<class T, class Container>
269 inline void Foam::CompactListList_dev<T, Container>::operator=(const T& t)
271     m_ = t;
275 // ************************************************************************* //