Epetra Package Browser (Single Doxygen Collection) Development
Loading...
Searching...
No Matches
Epetra_BlockMapData.cpp
Go to the documentation of this file.
1
2//@HEADER
3// ************************************************************************
4//
5// Epetra: Linear Algebra Services Package
6// Copyright 2011 Sandia Corporation
7//
8// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation,
9// the U.S. Government retains certain rights in this software.
10//
11// Redistribution and use in source and binary forms, with or without
12// modification, are permitted provided that the following conditions are
13// met:
14//
15// 1. Redistributions of source code must retain the above copyright
16// notice, this list of conditions and the following disclaimer.
17//
18// 2. Redistributions in binary form must reproduce the above copyright
19// notice, this list of conditions and the following disclaimer in the
20// documentation and/or other materials provided with the distribution.
21//
22// 3. Neither the name of the Corporation nor the names of the
23// contributors may be used to endorse or promote products derived from
24// this software without specific prior written permission.
25//
26// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY
27// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
28// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
29// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE
30// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
31// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
32// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
33// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
34// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
35// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
36// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
37//
38// Questions? Contact Michael A. Heroux (maherou@sandia.gov)
39//
40// ************************************************************************
41//@HEADER
42
43#include "Epetra_ConfigDefs.h"
44#include "Epetra_BlockMapData.h"
45#include "Epetra_HashTable.h"
46#include "Epetra_Comm.h"
47#include "Epetra_Directory.h"
48//#include "Epetra_ConfigDefs.h" //DATA_DEBUG
49// Use the new LID hash table approach by default
50#define EPETRA_BLOCKMAP_NEW_LID
51
52//=============================================================================
53Epetra_BlockMapData::Epetra_BlockMapData(long long NumGlobalElements, int ElementSize, long long IndexBase, const Epetra_Comm & Comm, bool IsLongLong)
54 : Comm_(Comm.Clone()),
55 Directory_(0),
56 LID_(0),
57#ifndef EPETRA_NO_32BIT_GLOBAL_INDICES
58 MyGlobalElements_int_(0),
59#endif
60#ifndef EPETRA_NO_64BIT_GLOBAL_INDICES
61 MyGlobalElements_LL_(0),
62#endif
63 FirstPointInElementList_(0),
64 ElementSizeList_(0),
65 PointToElementList_(0),
66 NumGlobalElements_(NumGlobalElements),
67 NumMyElements_(0),
68 IndexBase_(IndexBase),
69 ElementSize_(ElementSize),
70 MinMyElementSize_(0),
71 MaxMyElementSize_(0),
72 MinElementSize_(0),
73 MaxElementSize_(0),
74 MinAllGID_(0),
75 MaxAllGID_(0),
76 MinMyGID_(0),
77 MaxMyGID_(-1),
78 MinLID_(0),
79 MaxLID_(0),
80 NumGlobalPoints_(0),
81 NumMyPoints_(0),
82 ConstantElementSize_(false),
83 LinearMap_(false),
84 DistributedGlobal_(false),
85 OneToOneIsDetermined_(false),
86 OneToOne_(false),
87 GlobalIndicesInt_(!IsLongLong),
88 GlobalIndicesLongLong_(IsLongLong),
89 LastContiguousGID_(0),
90 LastContiguousGIDLoc_(0),
91 LIDHash_(0)
92{
93 //cout << "--BMD created, addr: " << this << std::endl; //DATA_DEBUG
94}
95
96//=============================================================================
98{
99 if(LIDHash_ != 0) {
100 delete LIDHash_;
101 LIDHash_ = 0;
102 }
103
104 if (Directory_ != 0) {
105 delete Directory_;
106 Directory_ = 0;
107 }
108
109 if(Comm_ != 0) {
110 delete Comm_;
111 Comm_ = 0;
112 }
113 //cout << "--BMD destroyed, addr: " << this << std::endl; //DATA_DEBUG
114}
Epetra_HashTable< int > * LIDHash_
Epetra_Directory * Directory_
Epetra_BlockMapData(long long NumGlobalElements, int ElementSize, long long IndexBase, const Epetra_Comm &Comm, bool IsLongLong)
Epetra_BlockMapData Default Constructor.
~Epetra_BlockMapData()
Epetra_BlockMapData Destructor.
const Epetra_Comm * Comm_
Epetra_Comm: The Epetra Communication Abstract Base Class.
Definition Epetra_Comm.h:73