/usr/include/MAdLib/MeshDataBaseParallelInterface.h is in libmadlib-dev 1.3.0-2.1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 | // -*- C++ -*-
// -------------------------------------------------------------------
// MAdLib - Copyright (C) 2008-2009 Universite catholique de Louvain
//
// See the Copyright.txt and License.txt files for license information.
// You should have received a copy of these files along with MAdLib.
// If not, see <http://www.madlib.be/license/>
//
// Please report all bugs and problems to <contrib@madlib.be>
//
// Authors: J.-F. Remacle, C. Dobrzynski, K. Hillewaert, G. Compere
// -------------------------------------------------------------------
#ifndef H_MESHDATABASEPARALLELINTEFACE
#define H_MESHDATABASEPARALLELINTEFACE
#include "MeshDataBaseInterface.h"
#include "MeshDataBaseComm.h"
#include "MeshDataBaseCommPeriodic.h"
#include <vector>
namespace MAd {
class MDB_DataExchanger;
class MDB_DataExchangerPeriodic;
// -------------------------------------------------------------------
#ifdef PARALLEL
void M_writeParallel(pMesh, const char*, int version=2);
#endif
// -------------------------------------------------------------------
/*! \brief Return true if on a parallel or periodic interface \ingroup internal */
bool EN_isInterface(pEntity pv);
/*! \brief Return true if on a parallel or periodic interface \ingroup parallel */
bool V_isInterface(pVertex pv);
/*! \brief Return true if pv is a (periodic) copy of vertex with tag id \ingroup parallel */
bool V_corresponds(pVertex pv,int id);
/*! \brief Return size of the list and list is an array containing
proc numbers where pv exist except calling proc \ingroup parallel */
int V_listInterface(pVertex pv, std::vector<int>* list);
/*! \brief Return true if edge is //possibly// on a parallel or periodic interface \ingroup internal */
bool E_isPotentialInterface(pMesh, pEdge);
/*! \brief Return true if on a parallel or periodic interface \ingroup parallel */
bool E_isInterface(pEdge);
/*! \brief Return true if the edge corresponds either directly or periodically \ingroup parallel */
bool E_corresponds(pEdge,int,int);
/*! \brief Return true if on a parallel interface, distProc is
(one of) the proc sharing the edge and distVt is a list
of the pointers to the vertices on the distProc mesh \ingroup parallel */
bool E_isInterface(pMesh, pEdge, int * distProc,
std::vector<pVertex>* distVt);
/*! \brief Return true if face is potentially on a parallel interface \ingroup internal */
bool F_isPotentialInterface(pMesh, pFace);
/*! \brief Return true if face is on a parallel interface \ingroup parallel */
bool F_isInterface(pFace);
/*! \brief Return true if on a parallel interface, distProc is the
proc sharing the face and distVt is a list of the pointers
to the vertices on the distant mesh \ingroup parallel */
bool F_isInterface(pMesh, pFace, int * distProc,
std::vector<pVertex>* distVt);
/*! \brief Return true if on a parallel interface (always false) \ingroup parallel */
bool R_isInterface(pRegion pr);
// -------------------------------------------------------------------
/*! \brief Fill the attached pointer containing the distant proc
numbers and the distant node pointers \ingroup parallel */
void V_createInfoInterface(pMesh mesh, pMeshDataId tagVertex);
/*! \brief Fill the attached pointer containing the distant proc
numbers and the distant edge pointers \ingroup parallel */
void E_createInfoInterface(pMesh mesh, pMeshDataId tagEdge);
/*! \brief Fill the attached pointer containing the distant proc
numbers and the distant face pointers \ingroup parallel */
void F_createInfoInterface(pMesh mesh, pMeshDataId tagFace);
// void UpdateIDGlobal(pMesh mesh, int IdGlobal);
// -------------------------------------------------------------------
#ifdef PARALLEL
// interface elt migration
void Balance(pMesh mesh,MDB_DataExchanger &de);
void Balance2(pMesh mesh,MDB_DataExchanger &de);
void BalanceRandom(pMesh mesh,MDB_DataExchanger &de);
int BalanceManifold(pMesh mesh,MDB_DataExchanger &de);
#ifdef _HAVE_PARMETIS_
// load balancing with metis
void BalanceMetis(pMesh mesh,MDB_DataExchanger &de);
void BalanceMetis2(pMesh mesh,MDB_DataExchanger &de);
#endif
// migration of elt tagged tagElt
void loadBalancing(pMesh mesh,pMeshDataId tagElt, MDB_DataExchanger &de);
void loadBalancing2(pMesh mesh,pMeshDataId tagElt, MDB_DataExchanger &de);
#endif
//Move periodic interfaces
void BalancePeriodic(pMesh mesh,int dim,MDB_DataExchanger &de,
MDB_DataExchangerPeriodic &deperiodic,std::vector<std::vector<int> >& transfo);
// -------------------------------------------------------------------
//migration of periodic elt
void PeriodicInterfaceMigration(MAd::pMesh mesh,MAd::pMeshDataId tagElt,MAd::pMeshDataId tagMove,
MAd::pMeshDataId tagTransfo, MDB_DataExchanger &de,
MDB_DataExchangerPeriodic &deperiodic);
void GroupPeriodicTetra(MAd::pMesh mesh, MDB_DataExchanger &de,
MDB_DataExchangerPeriodic &deperiodic);
// -------------------------------------------------------------------
}
#endif
|